helium_8.0-r15308
authorwbernard
Thu, 04 Mar 2010 15:10:37 +0200
changeset 217 0f5e3a7fb6af
parent 181 59bb7c4d6172
child 307 22ecbfc20eb4
child 584 56dd7656a965
child 587 85df38eb4012
helium_8.0-r15308
buildframework/helium/build-jar.ant.xml
buildframework/helium/build.xml
buildframework/helium/config/antlint_config.xml
buildframework/helium/config/diamonds_config.xml.ftl
buildframework/helium/config/epydoc.conf
buildframework/helium/config/helium.basic.tools.config
buildframework/helium/config/helium_data_model.xml
buildframework/helium/config/helium_distribution_test.cfg.xml
buildframework/helium/config/ivy/ivy.xml
buildframework/helium/config/ivy/modules/ctc-6.3.ivy.xml
buildframework/helium/config/metadata_filter_config_default.ant.xml
buildframework/helium/config/metadata_regex.csv
buildframework/helium/config/signaling_config_default.ant.xml
buildframework/helium/config/version.txt
buildframework/helium/doc/src/.templates/sidebar.html
buildframework/helium/doc/src/api/allmacros-frame.html.ftl
buildframework/helium/doc/src/api/allproperties-frame.html.ftl
buildframework/helium/doc/src/api/api.ftllib
buildframework/helium/doc/src/api/deprecated-list.html.ftl
buildframework/helium/doc/src/api/index-1.html.ftl
buildframework/helium/doc/src/api/macro.html.ftl
buildframework/helium/doc/src/api/overview-frame.html.ftl
buildframework/helium/doc/src/api/overview-summary.html.ftl
buildframework/helium/doc/src/api/package-frame.html.ftl
buildframework/helium/doc/src/api/package.html.ftl
buildframework/helium/doc/src/api/project.html.ftl
buildframework/helium/doc/src/api/properties-table.html.ftl
buildframework/helium/doc/src/api/property.html.ftl
buildframework/helium/doc/src/api/propertygroup.html.ftl
buildframework/helium/doc/src/api/propertygroups-frame.html.ftl
buildframework/helium/doc/src/api/target-dependencies.dot.ftl
buildframework/helium/doc/src/api/target.html.ftl
buildframework/helium/doc/src/api_changes.rst.ftl
buildframework/helium/doc/src/default.css
buildframework/helium/doc/src/developer_guide.rst
buildframework/helium/doc/src/feature_list.rst
buildframework/helium/doc/src/helium_overview.xml
buildframework/helium/doc/src/index.rst.ftl
buildframework/helium/doc/src/manual/antlogging.rst
buildframework/helium/doc/src/manual/configuring.rst
buildframework/helium/doc/src/manual/configuringdiamonds.rst
buildframework/helium/doc/src/manual/debugging.rst
buildframework/helium/doc/src/manual/product_example.rst
buildframework/helium/doc/src/manual/running.rst
buildframework/helium/doc/src/manual/sbs.rst
buildframework/helium/doc/src/manual/signaling.rst
buildframework/helium/doc/src/manual/stages.rst.ftl
buildframework/helium/doc/src/mc_tools_design.vsd
buildframework/helium/doc/src/tutorials/configuration/HowtoCreateANewSignal.rst
buildframework/helium/doc/src/tutorials/configuration/SimplestConfiguration.rst
buildframework/helium/doc/src/tutorials/configuration/UseHlmTasksInConfiguration.rst
buildframework/helium/doc/src/tutorials/imaker/buildinfo_creation.rst
buildframework/helium/doc/src/tutorials/qt_build.rst
buildframework/helium/doc/src/tutorials/rom_image.rst
buildframework/helium/doc/src/tutorials/variant.rst
buildframework/helium/doc/src/user-graph.dot.ftl
buildframework/helium/external/antlibs/derby.jar
buildframework/helium/external/antlibs/eclipselink-2.0.0.jar
buildframework/helium/external/antlibs/persistence-2.0.0.jar
buildframework/helium/external/antlibs/xmltask-v1.15.1.jar
buildframework/helium/external/antlibs/xmltask-v1.16.jar
buildframework/helium/external/helium-antlib/antlibs/ant-antunit-1.1.jar
buildframework/helium/external/helium-antlib/antlibs/ant-contrib-1.0b2.jar
buildframework/helium/external/helium-antlib/antlibs/emma.jar
buildframework/helium/external/helium-antlib/antlibs/emma_ant.jar
buildframework/helium/external/helium-antlib/antlibs/fmpp-0.9.13.jar
buildframework/helium/external/helium-antlib/antlibs/junit-4.5.jar
buildframework/helium/external/helium-antlib/antlibs/velocity-dep-1.3.1.jar
buildframework/helium/external/helium-antlib/antlibs/xmlunit-1.2.jar
buildframework/helium/external/helium-antlib/bin/helium-antdata.jar
buildframework/helium/external/helium-antlib/bin/helium-antlint.jar
buildframework/helium/external/helium-antlib/bin/helium-antunit.jar
buildframework/helium/external/helium-antlib/bin/helium-checktools.jar
buildframework/helium/external/helium-antlib/bin/helium-core.jar
buildframework/helium/external/helium-antlib/bin/helium-diamonds.jar
buildframework/helium/external/helium-antlib/bin/helium-internaldata.jar
buildframework/helium/external/helium-antlib/bin/helium-jpa.jar
buildframework/helium/external/helium-antlib/bin/helium-logging.jar
buildframework/helium/external/helium-antlib/bin/helium-metadata.jar
buildframework/helium/external/helium-antlib/bin/helium-quality.jar
buildframework/helium/external/helium-antlib/bin/helium-sbs.jar
buildframework/helium/external/helium-antlib/bin/helium-signaling.jar
buildframework/helium/external/helium-antlib/bld.bat
buildframework/helium/external/helium-antlib/bld.sh
buildframework/helium/external/helium-antlib/build.xml
buildframework/helium/external/helium-antlib/builder/antlibs/ant-antunit-1.1.jar
buildframework/helium/external/helium-antlib/builder/antlibs/ant-contrib-1.0b2.jar
buildframework/helium/external/helium-antlib/builder/antlibs/bsf-2.4.0.jar
buildframework/helium/external/helium-antlib/builder/antlibs/checkstyle-all-5.0.jar
buildframework/helium/external/helium-antlib/builder/antlibs/commons-logging-1.1.1.jar
buildframework/helium/external/helium-antlib/builder/antlibs/emma.jar
buildframework/helium/external/helium-antlib/builder/antlibs/emma_ant.jar
buildframework/helium/external/helium-antlib/builder/antlibs/fmpp-0.9.13.jar
buildframework/helium/external/helium-antlib/builder/antlibs/ivy-2.1.0.jar
buildframework/helium/external/helium-antlib/builder/antlibs/junit-4.5.jar
buildframework/helium/external/helium-antlib/builder/antlibs/jython-2.5.jar
buildframework/helium/external/helium-antlib/builder/antlibs/velocity-dep-1.3.1.jar
buildframework/helium/external/helium-antlib/builder/antlibs/xmlunit-1.2.jar
buildframework/helium/external/helium-antlib/builder/bld
buildframework/helium/external/helium-antlib/builder/bld.bat
buildframework/helium/external/helium-antlib/builder/build.xml
buildframework/helium/external/helium-antlib/builder/helium.basic.tools.config
buildframework/helium/external/helium-antlib/builder/java/common.ant.xml
buildframework/helium/external/helium-antlib/builder/java/config/java_checkstyle_config.xml
buildframework/helium/external/helium-antlib/builder/java/macros.ant.xml
buildframework/helium/external/helium-antlib/builder/java/test-macros.ant.xml
buildframework/helium/external/helium-antlib/builder/python/lib/coverage-2.85-py2.5.egg
buildframework/helium/external/helium-antlib/builder/python/lib/coverage.py
buildframework/helium/external/helium-antlib/builder/python/lib/jython-2.5-py2.5.egg
buildframework/helium/external/helium-antlib/builder/python/lib/nose-0.11.1-py2.6.egg
buildframework/helium/external/helium-antlib/builder/python/lib/nosetests-script.py
buildframework/helium/external/helium-antlib/builder/python/lib/pkg_resources.py
buildframework/helium/external/helium-antlib/builder/python/lib/setuptools-0.6c11-py2.5.egg
buildframework/helium/external/helium-antlib/builder/python/macros.ant.xml
buildframework/helium/external/helium-antlib/builder/python/test-macros.ant.xml
buildframework/helium/external/helium-antlib/builder/settings/ivysettings.xml
buildframework/helium/external/helium-antlib/core/bld.bat
buildframework/helium/external/helium-antlib/core/build.xml
buildframework/helium/external/helium-antlib/core/lib/jakarta-oro-2.0.8.jar
buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/AbstractTemplateInputSource.java
buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/EmailDataSender.java
buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/HlmAntLibException.java
buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/LogSource.java
buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/PPHash.java
buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/PPInputSource.java
buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/PropertiesSource.java
buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/TemplateInputSource.java
buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/TemplateProcessor.java
buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/TemplateProcessorException.java
buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/XMLTemplateSource.java
buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/ant/HeliumExecutor.java
buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/ant/HlmDefinition.java
buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/ant/HlmExceptionHandler.java
buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/ant/VariableIFImpl.java
buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/ant/VariableInterface.java
buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/ant/antlib.xml
buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/ant/conditions/XMLLogCondition.java
buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/ant/helium.antlib.xml
buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/ant/taskdefs/AntCall.java
buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/ant/taskdefs/GetValueFromVariableSet.java
buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/ant/taskdefs/SerializePathTask.java
buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/ant/taskdefs/ValidateUserLogin.java
buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/ant/taskdefs/XMLLogCount.java
buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/ant/types/ConditionType.java
buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/ant/types/FallbackReference.java
buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/ant/types/HlmDefList.java
buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/ant/types/HlmFinalTargetDef.java
buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/ant/types/HlmImportDef.java
buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/ant/types/HlmListenerDef.java
buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/ant/types/HlmPostDefImpl.java
buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/ant/types/HlmPreDefImpl.java
buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/ant/types/ReferenceType.java
buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/ant/types/Variable.java
buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/ant/types/VariableSet.java
buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/plexus/AntStreamConsumer.java
buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/plexus/CommandBase.java
buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/plexus/FileStreamConsumer.java
buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/plexus/StreamMultiplexer.java
buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/plexus/StreamRecorder.java
buildframework/helium/external/helium-antlib/core/src/log4j.xml
buildframework/helium/external/helium-antlib/core/tests/bld.sh
buildframework/helium/external/helium-antlib/core/tests/build.bat
buildframework/helium/external/helium-antlib/core/tests/build.xml
buildframework/helium/external/helium-antlib/core/tests/core/executor/build.xml
buildframework/helium/external/helium-antlib/core/tests/core/executor/test_executor.ant.xml
buildframework/helium/external/helium-antlib/core/tests/core/serializepath/data/folder1/test.txt
buildframework/helium/external/helium-antlib/core/tests/core/serializepath/data/folder2/test.txt
buildframework/helium/external/helium-antlib/core/tests/core/serializepath/test_serializepath.ant.xml
buildframework/helium/external/helium-antlib/core/tests/core/variableset/build.xml
buildframework/helium/external/helium-antlib/core/tests/core/variableset/test_variableset.ant.xml
buildframework/helium/external/helium-antlib/core/tests/core/xmllogcondition/data/helium_minibuild_ido_compile.log.xml
buildframework/helium/external/helium-antlib/core/tests/core/xmllogcondition/test_countseverity.ant.xml
buildframework/helium/external/helium-antlib/core/tests/core/xmllogcondition/test_hasseverity.ant.xml
buildframework/helium/external/helium-antlib/core/tests/src/com/nokia/helium/core/plexus/tests/TestAntStreamConsumer.java
buildframework/helium/external/helium-antlib/core/tests/src/com/nokia/helium/core/plexus/tests/TestCommandBase.java
buildframework/helium/external/helium-antlib/core/tests/src/com/nokia/helium/core/plexus/tests/TestFileStreamConsumer.java
buildframework/helium/external/helium-antlib/core/tests/src/com/nokia/helium/core/plexus/tests/TestStreamMultiplexer.java
buildframework/helium/external/helium-antlib/core/tests/src/com/nokia/helium/core/plexus/tests/TestStreamRecorder.java
buildframework/helium/external/helium-antlib/deps/amara/4Suite_XML/1.0.2/4Suite-XML-1.0.2.tar.gz
buildframework/helium/external/helium-antlib/deps/amara/4Suite_XML/1.0.2/4Suite_XML-1.0.2.py2.6-win32.egg
buildframework/helium/external/helium-antlib/deps/amara/4Suite_XML/1.0.2/ivy.xml
buildframework/helium/external/helium-antlib/deps/amara/amara/1.2.0.1/amara-1.2.0.1.egg
buildframework/helium/external/helium-antlib/deps/amara/amara/1.2.0.1/ivy.xml
buildframework/helium/external/helium-antlib/deps/bsh/bsh/2.1b0/bsh-2.1b0.jar
buildframework/helium/external/helium-antlib/deps/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar
buildframework/helium/external/helium-antlib/deps/dom4j/dom4j/1.6.1/ivy.xml
buildframework/helium/external/helium-antlib/deps/eclipselink/eclipselink/2.0.0/eclipselink-2.0.0.jar
buildframework/helium/external/helium-antlib/deps/info.bliki/bliki/3.0.7/bliki-3.0.7.jar
buildframework/helium/external/helium-antlib/deps/info.bliki/bliki/3.0.7/ivy.xml
buildframework/helium/external/helium-antlib/deps/javax.jms/jms/1.1/jms-1.1.jar
buildframework/helium/external/helium-antlib/deps/javax.mail/mail/1.4.1/mail-1.4.1.jar
buildframework/helium/external/helium-antlib/deps/javax.persistence/persistence/2.0.0/persistence-2.0.0.jar
buildframework/helium/external/helium-antlib/deps/jaxen/jaxen/1.1.1/jaxen-1.1.1.jar
buildframework/helium/external/helium-antlib/deps/jinja/Jinja2/2.2.1/Jinja2-2.2.1.egg
buildframework/helium/external/helium-antlib/deps/jinja/Jinja2/2.2.1/ivy.xml
buildframework/helium/external/helium-antlib/deps/log4j/log4j/1.2.9/ivy.xml
buildframework/helium/external/helium-antlib/deps/log4j/log4j/1.2.9/log4j-1.2.9.jar
buildframework/helium/external/helium-antlib/deps/lxml/lxml/2.2.1/ivy.xml
buildframework/helium/external/helium-antlib/deps/lxml/lxml/2.2.1/lxml-1.3.6.tgz
buildframework/helium/external/helium-antlib/deps/lxml/lxml/2.2.1/lxml-2.2.1.py2.6-win32.egg
buildframework/helium/external/helium-antlib/deps/mocker/mocker/0.10.1/ivy.xml
buildframework/helium/external/helium-antlib/deps/mocker/mocker/0.10.1/mocker-0.10.1.egg
buildframework/helium/external/helium-antlib/deps/net.sourceforge.fmpp/fmpp/0.9.13/fmpp-0.9.13.jar
buildframework/helium/external/helium-antlib/deps/org.apache.ant/ant-antunit/1.1/ant-antunit-1.1.jar
buildframework/helium/external/helium-antlib/deps/org.apache.ant/ivy/2.1.0/ivy-2.1.0.jar
buildframework/helium/external/helium-antlib/deps/org.apache.commons/commons-codec/1.3/commons-codec-1.3.jar
buildframework/helium/external/helium-antlib/deps/org.apache.commons/commons-collections/3.2/commons-collections-3.2.jar
buildframework/helium/external/helium-antlib/deps/org.apache.commons/commons-configuration/1.5/commons-configuration-1.5.jar
buildframework/helium/external/helium-antlib/deps/org.apache.commons/commons-httpclient/3.1/commons-httpclient-3.1.jar
buildframework/helium/external/helium-antlib/deps/org.apache.commons/commons-io/1.4/commons-io-1.4.jar
buildframework/helium/external/helium-antlib/deps/org.apache.commons/commons-lang/2.4/commons-lang-2.4.jar
buildframework/helium/external/helium-antlib/deps/org.apache.commons/commons-logging/1.1.1/commons-logging-1.1.1.jar
buildframework/helium/external/helium-antlib/deps/org.apache.derby/derby/10.5/derby-10.5.jar
buildframework/helium/external/helium-antlib/deps/org.apache.maven/maven-scm-api/1.1/maven-scm-api-1.1.jar
buildframework/helium/external/helium-antlib/deps/org.apache.maven/maven-scm-provider-hg/1.1/maven-scm-provider-hg-1.1.jar
buildframework/helium/external/helium-antlib/deps/org.apache.maven/maven-scm-provider-svn-commons/1.1/maven-scm-provider-svn-commons-1.1.jar
buildframework/helium/external/helium-antlib/deps/org.apache.maven/maven-scm-provider-synergy/1.1/maven-scm-provider-synergy-1.1.jar
buildframework/helium/external/helium-antlib/deps/org.apache.xml/serializer/1.0/serializer-1.0.jar
buildframework/helium/external/helium-antlib/deps/org.apache.xml/xalan/1.0/xalan-1.0.jar
buildframework/helium/external/helium-antlib/deps/org.codehaus.plexus/plexus-utils/1.5.6/plexus-utils-1.5.6.jar
buildframework/helium/external/helium-antlib/deps/org.freemarker/freemarker/2.3.13/freemarker-2.3.13.jar
buildframework/helium/external/helium-antlib/deps/org.sqlite/sqlitejdbc/v053/sqlitejdbc-v053.jar
buildframework/helium/external/helium-antlib/deps/path/path/2.2/ivy.xml
buildframework/helium/external/helium-antlib/deps/path/path/2.2/path-2.2.egg
buildframework/helium/external/helium-antlib/deps/threadpool/threadpool/1.2.3/ivy.xml
buildframework/helium/external/helium-antlib/deps/threadpool/threadpool/1.2.3/threadpool-1.2.3.py
buildframework/helium/external/helium-antlib/diamonds/bld.bat
buildframework/helium/external/helium-antlib/diamonds/build.xml
buildframework/helium/external/helium-antlib/diamonds/lib/commons-codec-1.3.jar
buildframework/helium/external/helium-antlib/diamonds/lib/commons-configuration-1.5.jar
buildframework/helium/external/helium-antlib/diamonds/lib/commons-httpclient-3.1.jar
buildframework/helium/external/helium-antlib/diamonds/lib/commons-lang-2.4.jar
buildframework/helium/external/helium-antlib/diamonds/lib/commons-logging-1.1.1.jar
buildframework/helium/external/helium-antlib/diamonds/src/com/nokia/helium/diamonds/DiamondsClient.java
buildframework/helium/external/helium-antlib/diamonds/src/com/nokia/helium/diamonds/DiamondsConfig.java
buildframework/helium/external/helium-antlib/diamonds/src/com/nokia/helium/diamonds/DiamondsException.java
buildframework/helium/external/helium-antlib/diamonds/src/com/nokia/helium/diamonds/DiamondsExceptionStatusUpdate.java
buildframework/helium/external/helium-antlib/diamonds/src/com/nokia/helium/diamonds/DiamondsListener.java
buildframework/helium/external/helium-antlib/diamonds/src/com/nokia/helium/diamonds/DiamondsListenerImpl.java
buildframework/helium/external/helium-antlib/diamonds/src/com/nokia/helium/diamonds/DiamondsPostBuildStatusUpdate.java
buildframework/helium/external/helium-antlib/diamonds/src/com/nokia/helium/diamonds/DiamondsProperties.java
buildframework/helium/external/helium-antlib/diamonds/src/com/nokia/helium/diamonds/Stage.java
buildframework/helium/external/helium-antlib/diamonds/src/com/nokia/helium/diamonds/StageDiamondsListener.java
buildframework/helium/external/helium-antlib/diamonds/src/com/nokia/helium/diamonds/Target.java
buildframework/helium/external/helium-antlib/diamonds/src/com/nokia/helium/diamonds/TargetDiamondsListener.java
buildframework/helium/external/helium-antlib/diamonds/src/com/nokia/helium/diamonds/XMLMerger.java
buildframework/helium/external/helium-antlib/diamonds/src/com/nokia/helium/diamonds/ant/HeliumListener.java
buildframework/helium/external/helium-antlib/diamonds/src/com/nokia/helium/diamonds/helium.antlib.xml
buildframework/helium/external/helium-antlib/diamonds/tests/bld.sh
buildframework/helium/external/helium-antlib/diamonds/tests/build.bat
buildframework/helium/external/helium-antlib/diamonds/tests/build.xml
buildframework/helium/external/helium-antlib/diamonds/tests/config/diamonds_config.xml.ftl
buildframework/helium/external/helium-antlib/diamonds/tests/data/compile.log.xml
buildframework/helium/external/helium-antlib/diamonds/tests/data/create-bom-log.xml
buildframework/helium/external/helium-antlib/diamonds/tests/data/problemIndex.xml
buildframework/helium/external/helium-antlib/diamonds/tests/src/com/nokia/helium/diamonds/tests/TestXMLMerger.java
buildframework/helium/external/helium-antlib/diamonds/tests/templates/apimetrics.xml.ftl
buildframework/helium/external/helium-antlib/diamonds/tests/templates/build.xml.ftl
buildframework/helium/external/helium-antlib/diamonds/tests/templates/codescanner.xml.ftl
buildframework/helium/external/helium-antlib/diamonds/tests/templates/diamonds_finish.xml.ftl
buildframework/helium/external/helium-antlib/diamonds/tests/templates/diamonds_signal.xml.ftl
buildframework/helium/external/helium-antlib/diamonds/tests/templates/diamonds_stage.xml.ftl
buildframework/helium/external/helium-antlib/diamonds/tests/templates/diamonds_start.xml.ftl
buildframework/helium/external/helium-antlib/diamonds/tests/templates/diamonds_status.xml.ftl
buildframework/helium/external/helium-antlib/diamonds/tests/templates/faults.ftl
buildframework/helium/external/helium-antlib/diamonds/tests/templates/footer.ftl
buildframework/helium/external/helium-antlib/diamonds/tests/templates/header.ftl
buildframework/helium/external/helium-antlib/diamonds/tests/templates/locations.ftl
buildframework/helium/external/helium-antlib/diamonds/tests/templates/macro.ftl
buildframework/helium/external/helium-antlib/diamonds/tests/templates/tool.xml.ftl
buildframework/helium/external/helium-antlib/diamonds/tests/templates/validate-policy-log.xml.ftl
buildframework/helium/external/helium-antlib/diamonds/tests/test_diamonds.ant.xml
buildframework/helium/external/helium-antlib/doc/src/build.rst
buildframework/helium/external/helium-antlib/doc/src/index.rst
buildframework/helium/external/helium-antlib/imaker/bld.bat
buildframework/helium/external/helium-antlib/imaker/build.xml
buildframework/helium/external/helium-antlib/imaker/demo/build.bat
buildframework/helium/external/helium-antlib/imaker/demo/build.xml
buildframework/helium/external/helium-antlib/imaker/src/com/nokia/helium/imaker/HelpConfigStreamConsumer.java
buildframework/helium/external/helium-antlib/imaker/src/com/nokia/helium/imaker/HelpTargetListStreamConsumer.java
buildframework/helium/external/helium-antlib/imaker/src/com/nokia/helium/imaker/IMaker.java
buildframework/helium/external/helium-antlib/imaker/src/com/nokia/helium/imaker/IMakerException.java
buildframework/helium/external/helium-antlib/imaker/src/com/nokia/helium/imaker/PrintVarSteamConsumer.java
buildframework/helium/external/helium-antlib/imaker/src/com/nokia/helium/imaker/ant/Command.java
buildframework/helium/external/helium-antlib/imaker/src/com/nokia/helium/imaker/ant/Engine.java
buildframework/helium/external/helium-antlib/imaker/src/com/nokia/helium/imaker/ant/IMakerCommandSet.java
buildframework/helium/external/helium-antlib/imaker/src/com/nokia/helium/imaker/ant/antlib.xml
buildframework/helium/external/helium-antlib/imaker/src/com/nokia/helium/imaker/ant/engines/Emake.java
buildframework/helium/external/helium-antlib/imaker/src/com/nokia/helium/imaker/ant/engines/EmakeEngine.java
buildframework/helium/external/helium-antlib/imaker/src/com/nokia/helium/imaker/ant/engines/JavaEngine.java
buildframework/helium/external/helium-antlib/imaker/src/com/nokia/helium/imaker/ant/engines/build_imaker_roms_signing.mk.ftl
buildframework/helium/external/helium-antlib/imaker/src/com/nokia/helium/imaker/ant/taskdefs/IMakerTask.java
buildframework/helium/external/helium-antlib/imaker/src/com/nokia/helium/imaker/ant/types/Configuration.java
buildframework/helium/external/helium-antlib/imaker/src/com/nokia/helium/imaker/ant/types/ConfigurationSet.java
buildframework/helium/external/helium-antlib/imaker/src/com/nokia/helium/imaker/ant/types/MakefileSelector.java
buildframework/helium/external/helium-antlib/imaker/src/com/nokia/helium/imaker/ant/types/Product.java
buildframework/helium/external/helium-antlib/imaker/src/com/nokia/helium/imaker/ant/types/Variable.java
buildframework/helium/external/helium-antlib/imaker/src/com/nokia/helium/imaker/ant/types/VariableGroup.java
buildframework/helium/external/helium-antlib/imaker/src/com/nokia/helium/imaker/ant/types/VariableSet.java
buildframework/helium/external/helium-antlib/imaker/src/com/nokia/helium/imaker/utils/ParallelExecutor.java
buildframework/helium/external/helium-antlib/imaker/tests/antunit/test_emakeengine.ant.xml
buildframework/helium/external/helium-antlib/imaker/tests/antunit/test_imaker.ant.xml
buildframework/helium/external/helium-antlib/imaker/tests/antunit/test_imaker_invalid.ant.xml
buildframework/helium/external/helium-antlib/imaker/tests/antunit/test_javaengine.ant.xml
buildframework/helium/external/helium-antlib/imaker/tests/bld.sh
buildframework/helium/external/helium-antlib/imaker/tests/build.bat
buildframework/helium/external/helium-antlib/imaker/tests/build.xml
buildframework/helium/external/helium-antlib/imaker/tests/emake_data/cust.mk.ftl
buildframework/helium/external/helium-antlib/imaker/tests/emake_data/invalid.mk.ftl
buildframework/helium/external/helium-antlib/imaker/tests/epocroot/imaker
buildframework/helium/external/helium-antlib/imaker/tests/epocroot/imaker.bat
buildframework/helium/external/helium-antlib/imaker/tests/epocroot/imaker_mock.py
buildframework/helium/external/helium-antlib/imaker/tests/epocroot_invalid/imaker
buildframework/helium/external/helium-antlib/imaker/tests/epocroot_invalid/imaker.bat
buildframework/helium/external/helium-antlib/imaker/tests/epocroot_invalid/imaker_mock.py
buildframework/helium/external/helium-antlib/imaker/tests/epocroot_task/emake
buildframework/helium/external/helium-antlib/imaker/tests/epocroot_task/emake.cmd
buildframework/helium/external/helium-antlib/imaker/tests/epocroot_task/imaker
buildframework/helium/external/helium-antlib/imaker/tests/epocroot_task/imaker.bat
buildframework/helium/external/helium-antlib/imaker/tests/epocroot_task/imaker_mock.py
buildframework/helium/external/helium-antlib/imaker/tests/parallelexecutor_data/linux.txt
buildframework/helium/external/helium-antlib/imaker/tests/parallelexecutor_data/windows.txt
buildframework/helium/external/helium-antlib/imaker/tests/src/com/nokia/helium/imaker/tests/TestHelpConfigStreamConsumer.java
buildframework/helium/external/helium-antlib/imaker/tests/src/com/nokia/helium/imaker/tests/TestIMaker.java
buildframework/helium/external/helium-antlib/imaker/tests/src/com/nokia/helium/imaker/tests/TestParallelExecutor.java
buildframework/helium/external/helium-antlib/imaker/tests/src/com/nokia/helium/imaker/tests/TestPrintVarStreamConsumer.java
buildframework/helium/external/helium-antlib/java/antdata/build.xml
buildframework/helium/external/helium-antlib/java/antdata/db.ant.xml
buildframework/helium/external/helium-antlib/java/antdata/ivy.xml
buildframework/helium/external/helium-antlib/java/antdata/src/com/nokia/helium/ant/data/AntComment.java
buildframework/helium/external/helium-antlib/java/antdata/src/com/nokia/helium/ant/data/AntFile.java
buildframework/helium/external/helium-antlib/java/antdata/src/com/nokia/helium/ant/data/AntObjectMeta.java
buildframework/helium/external/helium-antlib/java/antdata/src/com/nokia/helium/ant/data/AntlibMeta.java
buildframework/helium/external/helium-antlib/java/antdata/src/com/nokia/helium/ant/data/CommentMeta.java
buildframework/helium/external/helium-antlib/java/antdata/src/com/nokia/helium/ant/data/Database.java
buildframework/helium/external/helium-antlib/java/antdata/src/com/nokia/helium/ant/data/MacroMeta.java
buildframework/helium/external/helium-antlib/java/antdata/src/com/nokia/helium/ant/data/PackageMeta.java
buildframework/helium/external/helium-antlib/java/antdata/src/com/nokia/helium/ant/data/ProjectMeta.java
buildframework/helium/external/helium-antlib/java/antdata/src/com/nokia/helium/ant/data/PropertyCommentMeta.java
buildframework/helium/external/helium-antlib/java/antdata/src/com/nokia/helium/ant/data/PropertyMeta.java
buildframework/helium/external/helium-antlib/java/antdata/src/com/nokia/helium/ant/data/RootAntObjectMeta.java
buildframework/helium/external/helium-antlib/java/antdata/src/com/nokia/helium/ant/data/TargetMeta.java
buildframework/helium/external/helium-antlib/java/antdata/src/com/nokia/helium/ant/data/TaskContainerMeta.java
buildframework/helium/external/helium-antlib/java/antdata/src/com/nokia/helium/ant/data/TypeMeta.java
buildframework/helium/external/helium-antlib/java/antdata/src/com/nokia/helium/ant/data/antlib.xml
buildframework/helium/external/helium-antlib/java/antdata/src/com/nokia/helium/ant/data/database.xml.ftl
buildframework/helium/external/helium-antlib/java/antdata/src/com/nokia/helium/ant/data/taskdefs/AntConfigLintTask.java
buildframework/helium/external/helium-antlib/java/antdata/src/com/nokia/helium/ant/data/taskdefs/DatabaseTask.java
buildframework/helium/external/helium-antlib/java/antdata/src/com/nokia/helium/ant/data/types/AntLintCheck.java
buildframework/helium/external/helium-antlib/java/antdata/src/com/nokia/helium/ant/data/types/LintIssue.java
buildframework/helium/external/helium-antlib/java/antdata/src/com/nokia/helium/ant/data/types/PropertyNameCheck.java
buildframework/helium/external/helium-antlib/java/antdata/src/com/nokia/helium/ant/data/types/WrongTypePropertyCheck.java
buildframework/helium/external/helium-antlib/java/antdata/src/com/nokia/helium/freemarker/WikiMethod.java
buildframework/helium/external/helium-antlib/java/antdata/tests/antunit/test_antdata.ant.xml
buildframework/helium/external/helium-antlib/java/antdata/tests/bld.sh
buildframework/helium/external/helium-antlib/java/antdata/tests/build.bat
buildframework/helium/external/helium-antlib/java/antdata/tests/build.xml
buildframework/helium/external/helium-antlib/java/antdata/tests/data/external_project.ant.xml
buildframework/helium/external/helium-antlib/java/antdata/tests/data/test_lib.antlib.xml
buildframework/helium/external/helium-antlib/java/antdata/tests/data/test_project.ant.xml
buildframework/helium/external/helium-antlib/java/antdata/tests/src/com/nokia/helium/ant/data/tests/TestMeta.java
buildframework/helium/external/helium-antlib/java/antlint/bld.bat
buildframework/helium/external/helium-antlib/java/antlint/build.xml
buildframework/helium/external/helium-antlib/java/antlint/ivy.xml
buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/AntFile.java
buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/AntLintHandler.java
buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/AntProjectVisitor.java
buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/ant/antlib.xml
buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/ant/helium.antlib.xml
buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/ant/taskdefs/AntLintTask.java
buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/ant/types/Checker.java
buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/checks/AbstractCheck.java
buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/checks/AbstractScriptCheck.java
buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/checks/Check.java
buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/checks/CheckAntCall.java
buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/checks/CheckDescription.java
buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/checks/CheckDuplicateNames.java
buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/checks/CheckFileName.java
buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/checks/CheckIndentation.java
buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/checks/CheckJepJythonScript.java
buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/checks/CheckPresetDefMacroDefName.java
buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/checks/CheckProjectName.java
buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/checks/CheckPropertiesInDataModel.java
buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/checks/CheckPropertyName.java
buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/checks/CheckPythonTasks.java
buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/checks/CheckRunTarget.java
buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/checks/CheckScriptCondition.java
buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/checks/CheckScriptDef.java
buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/checks/CheckScriptDefNameAttributes.java
buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/checks/CheckScriptDefStyle.java
buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/checks/CheckScriptSize.java
buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/checks/CheckTabCharacter.java
buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/checks/CheckTargetName.java
buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/checks/CheckUseOfEqualsTask.java
buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/checks/CheckUseOfIfInTargets.java
buildframework/helium/external/helium-antlib/java/antlint/tests/antunit/test_antlint.ant.xml
buildframework/helium/external/helium-antlib/java/antlint/tests/bld.sh
buildframework/helium/external/helium-antlib/java/antlint/tests/build.bat
buildframework/helium/external/helium-antlib/java/antlint/tests/build.xml
buildframework/helium/external/helium-antlib/java/antlint/tests/data/build.xml
buildframework/helium/external/helium-antlib/java/antlint/tests/data/datamodel.out
buildframework/helium/external/helium-antlib/java/antlint/tests/data/invalid.build.xml
buildframework/helium/external/helium-antlib/java/antlint/tests/data/sample.ant.xml
buildframework/helium/external/helium-antlib/java/antlint/tests/data/sample.antlib.xml
buildframework/helium/external/helium-antlib/java/antunit/bld.bat
buildframework/helium/external/helium-antlib/java/antunit/build.xml
buildframework/helium/external/helium-antlib/java/antunit/ivy.xml
buildframework/helium/external/helium-antlib/java/antunit/src/com/nokia/helium/antunit/ant/antlib.xml
buildframework/helium/external/helium-antlib/java/antunit/src/com/nokia/helium/antunit/ant/types/CustomListener.java
buildframework/helium/external/helium-antlib/java/antunit/tests/antunit/test_antunit.ant.xml
buildframework/helium/external/helium-antlib/java/antunit/tests/bld.sh
buildframework/helium/external/helium-antlib/java/antunit/tests/build.bat
buildframework/helium/external/helium-antlib/java/antunit/tests/build.xml
buildframework/helium/external/helium-antlib/java/antunit/tests/data_antunit/antunit_unittest.ant.xml
buildframework/helium/external/helium-antlib/java/checktools/bld.bat
buildframework/helium/external/helium-antlib/java/checktools/build.xml
buildframework/helium/external/helium-antlib/java/checktools/demo
buildframework/helium/external/helium-antlib/java/checktools/demo.bat
buildframework/helium/external/helium-antlib/java/checktools/ivy.xml
buildframework/helium/external/helium-antlib/java/checktools/src/com/nokia/helium/checktools/CheckEngine.java
buildframework/helium/external/helium-antlib/java/checktools/src/com/nokia/helium/checktools/CheckToolException.java
buildframework/helium/external/helium-antlib/java/checktools/src/com/nokia/helium/checktools/HeliumToolsCheckerMain.java
buildframework/helium/external/helium-antlib/java/checktools/src/com/nokia/helium/checktools/OSResolver.java
buildframework/helium/external/helium-antlib/java/checktools/src/com/nokia/helium/checktools/ToolChecker.java
buildframework/helium/external/helium-antlib/java/checktools/tests/bld.sh
buildframework/helium/external/helium-antlib/java/checktools/tests/build.bat
buildframework/helium/external/helium-antlib/java/checktools/tests/build.xml
buildframework/helium/external/helium-antlib/java/checktools/tests/config/helium.basic.tools.config
buildframework/helium/external/helium-antlib/java/checktools/tests/src/com/nokia/helium/checktools/tests/TestCheckEngine.java
buildframework/helium/external/helium-antlib/java/checktools/tests/src/com/nokia/helium/checktools/tests/TestOSResolver.java
buildframework/helium/external/helium-antlib/java/core/bld.bat
buildframework/helium/external/helium-antlib/java/core/build.xml
buildframework/helium/external/helium-antlib/java/core/ivy.xml
buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/AbstractTemplateInputSource.java
buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/EmailDataSender.java
buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/HlmAntLibException.java
buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/LogSource.java
buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/PPHash.java
buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/PPInputSource.java
buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/PropertiesSource.java
buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/TemplateInputSource.java
buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/TemplateProcessor.java
buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/TemplateProcessorException.java
buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/XMLTemplateSource.java
buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/ant/HeliumExecutor.java
buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/ant/HlmDefinition.java
buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/ant/HlmExceptionHandler.java
buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/ant/VariableIFImpl.java
buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/ant/VariableInterface.java
buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/ant/antlib.xml
buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/ant/conditions/XMLLogCondition.java
buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/ant/filters/PrettyPrintXmlFilter.java
buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/ant/helium.antlib.xml
buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/ant/listener/TargetTimesLogGeneratorListener.java
buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/ant/taskdefs/AntCall.java
buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/ant/taskdefs/GetValueFromVariableSet.java
buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/ant/taskdefs/LDAP.java
buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/ant/taskdefs/PythonTask.java
buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/ant/taskdefs/RetryTask.java
buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/ant/taskdefs/SerializePathTask.java
buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/ant/taskdefs/ValidateUserLogin.java
buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/ant/taskdefs/XMLLogCount.java
buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/ant/types/ConditionType.java
buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/ant/types/FallbackReference.java
buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/ant/types/HlmDefList.java
buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/ant/types/HlmFinalTargetDef.java
buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/ant/types/HlmImportDef.java
buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/ant/types/HlmListenerDef.java
buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/ant/types/HlmPostDefImpl.java
buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/ant/types/HlmPreDefImpl.java
buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/ant/types/ReferenceType.java
buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/ant/types/Variable.java
buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/ant/types/VariableSet.java
buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/plexus/AntStreamConsumer.java
buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/plexus/CommandBase.java
buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/plexus/FileStreamConsumer.java
buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/plexus/StreamMultiplexer.java
buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/plexus/StreamRecorder.java
buildframework/helium/external/helium-antlib/java/core/src/log4j.xml
buildframework/helium/external/helium-antlib/java/core/tests/bld.sh
buildframework/helium/external/helium-antlib/java/core/tests/build.bat
buildframework/helium/external/helium-antlib/java/core/tests/build.xml
buildframework/helium/external/helium-antlib/java/core/tests/core/executor/build.xml
buildframework/helium/external/helium-antlib/java/core/tests/core/executor/test_executor.ant.xml
buildframework/helium/external/helium-antlib/java/core/tests/core/ldap/test_ldap.ant.xml
buildframework/helium/external/helium-antlib/java/core/tests/core/pythontask/data/test_sample.py
buildframework/helium/external/helium-antlib/java/core/tests/core/pythontask/test_pythontask.ant.xml
buildframework/helium/external/helium-antlib/java/core/tests/core/retrytask/test_retrytask.ant.xml
buildframework/helium/external/helium-antlib/java/core/tests/core/serializepath/data/folder1/test.txt
buildframework/helium/external/helium-antlib/java/core/tests/core/serializepath/data/folder2/test.txt
buildframework/helium/external/helium-antlib/java/core/tests/core/serializepath/test_serializepath.ant.xml
buildframework/helium/external/helium-antlib/java/core/tests/core/test_core.ant.xml
buildframework/helium/external/helium-antlib/java/core/tests/core/variableset/build.xml
buildframework/helium/external/helium-antlib/java/core/tests/core/variableset/test_variableset.ant.xml
buildframework/helium/external/helium-antlib/java/core/tests/core/xmllogcondition/data/helium_minibuild_ido_compile.log.xml
buildframework/helium/external/helium-antlib/java/core/tests/core/xmllogcondition/test_countseverity.ant.xml
buildframework/helium/external/helium-antlib/java/core/tests/core/xmllogcondition/test_hasseverity.ant.xml
buildframework/helium/external/helium-antlib/java/core/tests/data/config_test.cfg.xml
buildframework/helium/external/helium-antlib/java/core/tests/echo.sh
buildframework/helium/external/helium-antlib/java/core/tests/src/com/nokia/helium/core/ant/tests/TestTargetTimesLogGenerator.java
buildframework/helium/external/helium-antlib/java/core/tests/src/com/nokia/helium/core/plexus/tests/TestAntStreamConsumer.java
buildframework/helium/external/helium-antlib/java/core/tests/src/com/nokia/helium/core/plexus/tests/TestCommandBase.java
buildframework/helium/external/helium-antlib/java/core/tests/src/com/nokia/helium/core/plexus/tests/TestFileStreamConsumer.java
buildframework/helium/external/helium-antlib/java/core/tests/src/com/nokia/helium/core/plexus/tests/TestStreamMultiplexer.java
buildframework/helium/external/helium-antlib/java/core/tests/src/com/nokia/helium/core/plexus/tests/TestStreamRecorder.java
buildframework/helium/external/helium-antlib/java/diamonds/build.xml
buildframework/helium/external/helium-antlib/java/diamonds/diamonds.rst
buildframework/helium/external/helium-antlib/java/diamonds/ivy.xml
buildframework/helium/external/helium-antlib/java/diamonds/src/com/nokia/helium/diamonds/DiamondsClient.java
buildframework/helium/external/helium-antlib/java/diamonds/src/com/nokia/helium/diamonds/DiamondsConfig.java
buildframework/helium/external/helium-antlib/java/diamonds/src/com/nokia/helium/diamonds/DiamondsException.java
buildframework/helium/external/helium-antlib/java/diamonds/src/com/nokia/helium/diamonds/DiamondsExceptionStatusUpdate.java
buildframework/helium/external/helium-antlib/java/diamonds/src/com/nokia/helium/diamonds/DiamondsListener.java
buildframework/helium/external/helium-antlib/java/diamonds/src/com/nokia/helium/diamonds/DiamondsListenerImpl.java
buildframework/helium/external/helium-antlib/java/diamonds/src/com/nokia/helium/diamonds/DiamondsPostBuildStatusUpdate.java
buildframework/helium/external/helium-antlib/java/diamonds/src/com/nokia/helium/diamonds/DiamondsProperties.java
buildframework/helium/external/helium-antlib/java/diamonds/src/com/nokia/helium/diamonds/Stage.java
buildframework/helium/external/helium-antlib/java/diamonds/src/com/nokia/helium/diamonds/StageDiamondsListener.java
buildframework/helium/external/helium-antlib/java/diamonds/src/com/nokia/helium/diamonds/Target.java
buildframework/helium/external/helium-antlib/java/diamonds/src/com/nokia/helium/diamonds/TargetDiamondsListener.java
buildframework/helium/external/helium-antlib/java/diamonds/src/com/nokia/helium/diamonds/XMLMerger.java
buildframework/helium/external/helium-antlib/java/diamonds/src/com/nokia/helium/diamonds/ant/HeliumListener.java
buildframework/helium/external/helium-antlib/java/diamonds/src/com/nokia/helium/diamonds/helium.antlib.xml
buildframework/helium/external/helium-antlib/java/diamonds/tests/bld.sh
buildframework/helium/external/helium-antlib/java/diamonds/tests/build.bat
buildframework/helium/external/helium-antlib/java/diamonds/tests/build.xml
buildframework/helium/external/helium-antlib/java/diamonds/tests/config/diamonds_config.xml.ftl
buildframework/helium/external/helium-antlib/java/diamonds/tests/data/compile.log.xml
buildframework/helium/external/helium-antlib/java/diamonds/tests/data/create-bom-log.xml
buildframework/helium/external/helium-antlib/java/diamonds/tests/data/problemIndex.xml
buildframework/helium/external/helium-antlib/java/diamonds/tests/src/com/nokia/helium/diamonds/tests/TestXMLMerger.java
buildframework/helium/external/helium-antlib/java/diamonds/tests/templates/apimetrics.xml.ftl
buildframework/helium/external/helium-antlib/java/diamonds/tests/templates/build.xml.ftl
buildframework/helium/external/helium-antlib/java/diamonds/tests/templates/codescanner.xml.ftl
buildframework/helium/external/helium-antlib/java/diamonds/tests/templates/diamonds_finish.xml.ftl
buildframework/helium/external/helium-antlib/java/diamonds/tests/templates/diamonds_signal.xml.ftl
buildframework/helium/external/helium-antlib/java/diamonds/tests/templates/diamonds_stage.xml.ftl
buildframework/helium/external/helium-antlib/java/diamonds/tests/templates/diamonds_start.xml.ftl
buildframework/helium/external/helium-antlib/java/diamonds/tests/templates/diamonds_status.xml.ftl
buildframework/helium/external/helium-antlib/java/diamonds/tests/templates/faults.ftl
buildframework/helium/external/helium-antlib/java/diamonds/tests/templates/footer.ftl
buildframework/helium/external/helium-antlib/java/diamonds/tests/templates/header.ftl
buildframework/helium/external/helium-antlib/java/diamonds/tests/templates/locations.ftl
buildframework/helium/external/helium-antlib/java/diamonds/tests/templates/macro.ftl
buildframework/helium/external/helium-antlib/java/diamonds/tests/templates/tool.xml.ftl
buildframework/helium/external/helium-antlib/java/diamonds/tests/templates/validate-policy-log.xml.ftl
buildframework/helium/external/helium-antlib/java/diamonds/tests/test_diamonds.ant.xml
buildframework/helium/external/helium-antlib/java/imaker/build.xml
buildframework/helium/external/helium-antlib/java/imaker/demo/build.bat
buildframework/helium/external/helium-antlib/java/imaker/demo/build.xml
buildframework/helium/external/helium-antlib/java/imaker/imaker.rst
buildframework/helium/external/helium-antlib/java/imaker/ivy.xml
buildframework/helium/external/helium-antlib/java/imaker/src/com/nokia/helium/imaker/HelpConfigStreamConsumer.java
buildframework/helium/external/helium-antlib/java/imaker/src/com/nokia/helium/imaker/HelpTargetListStreamConsumer.java
buildframework/helium/external/helium-antlib/java/imaker/src/com/nokia/helium/imaker/IMaker.java
buildframework/helium/external/helium-antlib/java/imaker/src/com/nokia/helium/imaker/IMakerException.java
buildframework/helium/external/helium-antlib/java/imaker/src/com/nokia/helium/imaker/PrintVarSteamConsumer.java
buildframework/helium/external/helium-antlib/java/imaker/src/com/nokia/helium/imaker/ant/Command.java
buildframework/helium/external/helium-antlib/java/imaker/src/com/nokia/helium/imaker/ant/Engine.java
buildframework/helium/external/helium-antlib/java/imaker/src/com/nokia/helium/imaker/ant/IMakerCommandSet.java
buildframework/helium/external/helium-antlib/java/imaker/src/com/nokia/helium/imaker/ant/antlib.xml
buildframework/helium/external/helium-antlib/java/imaker/src/com/nokia/helium/imaker/ant/engines/Emake.java
buildframework/helium/external/helium-antlib/java/imaker/src/com/nokia/helium/imaker/ant/engines/EmakeEngine.java
buildframework/helium/external/helium-antlib/java/imaker/src/com/nokia/helium/imaker/ant/engines/JavaEngine.java
buildframework/helium/external/helium-antlib/java/imaker/src/com/nokia/helium/imaker/ant/engines/build_imaker_roms_signing.mk.ftl
buildframework/helium/external/helium-antlib/java/imaker/src/com/nokia/helium/imaker/ant/taskdefs/IMakerTask.java
buildframework/helium/external/helium-antlib/java/imaker/src/com/nokia/helium/imaker/ant/types/Configuration.java
buildframework/helium/external/helium-antlib/java/imaker/src/com/nokia/helium/imaker/ant/types/ConfigurationSet.java
buildframework/helium/external/helium-antlib/java/imaker/src/com/nokia/helium/imaker/ant/types/MakefileSelector.java
buildframework/helium/external/helium-antlib/java/imaker/src/com/nokia/helium/imaker/ant/types/Product.java
buildframework/helium/external/helium-antlib/java/imaker/src/com/nokia/helium/imaker/ant/types/Variable.java
buildframework/helium/external/helium-antlib/java/imaker/src/com/nokia/helium/imaker/ant/types/VariableGroup.java
buildframework/helium/external/helium-antlib/java/imaker/src/com/nokia/helium/imaker/ant/types/VariableSet.java
buildframework/helium/external/helium-antlib/java/imaker/src/com/nokia/helium/imaker/utils/ParallelExecutor.java
buildframework/helium/external/helium-antlib/java/imaker/tests/antunit/test_emakeengine.ant.xml
buildframework/helium/external/helium-antlib/java/imaker/tests/antunit/test_imaker.ant.xml
buildframework/helium/external/helium-antlib/java/imaker/tests/antunit/test_imaker_invalid.ant.xml
buildframework/helium/external/helium-antlib/java/imaker/tests/antunit/test_javaengine.ant.xml
buildframework/helium/external/helium-antlib/java/imaker/tests/bld.sh
buildframework/helium/external/helium-antlib/java/imaker/tests/build.bat
buildframework/helium/external/helium-antlib/java/imaker/tests/build.xml
buildframework/helium/external/helium-antlib/java/imaker/tests/emake_data/cust.mk.ftl
buildframework/helium/external/helium-antlib/java/imaker/tests/emake_data/invalid.mk.ftl
buildframework/helium/external/helium-antlib/java/imaker/tests/epocroot/imaker
buildframework/helium/external/helium-antlib/java/imaker/tests/epocroot/imaker.bat
buildframework/helium/external/helium-antlib/java/imaker/tests/epocroot/imaker_mock.py
buildframework/helium/external/helium-antlib/java/imaker/tests/epocroot_invalid/imaker
buildframework/helium/external/helium-antlib/java/imaker/tests/epocroot_invalid/imaker.bat
buildframework/helium/external/helium-antlib/java/imaker/tests/epocroot_invalid/imaker_mock.py
buildframework/helium/external/helium-antlib/java/imaker/tests/epocroot_task/emake
buildframework/helium/external/helium-antlib/java/imaker/tests/epocroot_task/emake.cmd
buildframework/helium/external/helium-antlib/java/imaker/tests/epocroot_task/imaker
buildframework/helium/external/helium-antlib/java/imaker/tests/epocroot_task/imaker.bat
buildframework/helium/external/helium-antlib/java/imaker/tests/epocroot_task/imaker_mock.py
buildframework/helium/external/helium-antlib/java/imaker/tests/parallelexecutor_data/linux.txt
buildframework/helium/external/helium-antlib/java/imaker/tests/parallelexecutor_data/windows.txt
buildframework/helium/external/helium-antlib/java/imaker/tests/src/com/nokia/helium/imaker/tests/TestHelpConfigStreamConsumer.java
buildframework/helium/external/helium-antlib/java/imaker/tests/src/com/nokia/helium/imaker/tests/TestIMaker.java
buildframework/helium/external/helium-antlib/java/imaker/tests/src/com/nokia/helium/imaker/tests/TestParallelExecutor.java
buildframework/helium/external/helium-antlib/java/imaker/tests/src/com/nokia/helium/imaker/tests/TestPrintVarStreamConsumer.java
buildframework/helium/external/helium-antlib/java/internaldata/bin/com/nokia/helium/internaldata/ant/antlib.xml
buildframework/helium/external/helium-antlib/java/internaldata/bin/com/nokia/helium/internaldata/ant/helium.antlib.xml
buildframework/helium/external/helium-antlib/java/internaldata/build.xml
buildframework/helium/external/helium-antlib/java/internaldata/ivy.xml
buildframework/helium/external/helium-antlib/java/internaldata/src/com/nokia/helium/internaldata/ant/antlib.xml
buildframework/helium/external/helium-antlib/java/internaldata/src/com/nokia/helium/internaldata/ant/helium.antlib.xml
buildframework/helium/external/helium-antlib/java/internaldata/src/com/nokia/helium/internaldata/ant/listener/AssertNode.java
buildframework/helium/external/helium-antlib/java/internaldata/src/com/nokia/helium/internaldata/ant/listener/BuildNode.java
buildframework/helium/external/helium-antlib/java/internaldata/src/com/nokia/helium/internaldata/ant/listener/DataNode.java
buildframework/helium/external/helium-antlib/java/internaldata/src/com/nokia/helium/internaldata/ant/listener/EmailDataSender.java
buildframework/helium/external/helium-antlib/java/internaldata/src/com/nokia/helium/internaldata/ant/listener/EndLessStack.java
buildframework/helium/external/helium-antlib/java/internaldata/src/com/nokia/helium/internaldata/ant/listener/Listener.java
buildframework/helium/external/helium-antlib/java/internaldata/src/com/nokia/helium/internaldata/ant/listener/TargetNode.java
buildframework/helium/external/helium-antlib/java/internaldata/src/com/nokia/helium/internaldata/ant/listener/TreeDumper.java
buildframework/helium/external/helium-antlib/java/internaldata/src/com/nokia/helium/internaldata/ant/listener/XMLRenderer.java
buildframework/helium/external/helium-antlib/java/internaldata/src/com/nokia/helium/internaldata/ant/taskdefs/HlmAssertMessage.java
buildframework/helium/external/helium-antlib/java/internaldata/tests/bld.sh
buildframework/helium/external/helium-antlib/java/internaldata/tests/build.bat
buildframework/helium/external/helium-antlib/java/internaldata/tests/build.xml
buildframework/helium/external/helium-antlib/java/internaldata/tests/src/com/nokia/helium/internaldata/tests/TestEmailDataSender.java
buildframework/helium/external/helium-antlib/java/internaldata/tests/src/com/nokia/helium/internaldata/tests/TestListener.java
buildframework/helium/external/helium-antlib/java/internaldata/tests/test_HlmAssertMessage.ant.xml
buildframework/helium/external/helium-antlib/java/jpa/bld.bat
buildframework/helium/external/helium-antlib/java/jpa/build.xml
buildframework/helium/external/helium-antlib/java/jpa/ivy.xml
buildframework/helium/external/helium-antlib/java/jpa/src/META-INF/persistence.xml
buildframework/helium/external/helium-antlib/java/jpa/src/com/nokia/helium/jpa/ORMCommitCount.java
buildframework/helium/external/helium-antlib/java/jpa/src/com/nokia/helium/jpa/ORMEntityManager.java
buildframework/helium/external/helium-antlib/java/jpa/src/com/nokia/helium/jpa/ORMReader.java
buildframework/helium/external/helium-antlib/java/jpa/src/com/nokia/helium/jpa/ORMUtil.java
buildframework/helium/external/helium-antlib/java/jpa/src/com/nokia/helium/jpa/entity/Version.java
buildframework/helium/external/helium-antlib/java/jpa/src/com/nokia/helium/jpa/entity/metadata/Component.java
buildframework/helium/external/helium-antlib/java/jpa/src/com/nokia/helium/jpa/entity/metadata/ComponentTime.java
buildframework/helium/external/helium-antlib/java/jpa/src/com/nokia/helium/jpa/entity/metadata/LogFile.java
buildframework/helium/external/helium-antlib/java/jpa/src/com/nokia/helium/jpa/entity/metadata/Metadata.java
buildframework/helium/external/helium-antlib/java/jpa/src/com/nokia/helium/jpa/entity/metadata/MetadataEntry.java
buildframework/helium/external/helium-antlib/java/jpa/src/com/nokia/helium/jpa/entity/metadata/MetadataUtil.java
buildframework/helium/external/helium-antlib/java/jpa/src/com/nokia/helium/jpa/entity/metadata/Priority.java
buildframework/helium/external/helium-antlib/java/jpa/src/com/nokia/helium/jpa/entity/metadata/WhatLogEntry.java
buildframework/helium/external/helium-antlib/java/jpa/src/log4j.xml
buildframework/helium/external/helium-antlib/java/logging/bld.bat
buildframework/helium/external/helium-antlib/java/logging/build.xml
buildframework/helium/external/helium-antlib/java/logging/ivy.xml
buildframework/helium/external/helium-antlib/java/logging/logging.rst
buildframework/helium/external/helium-antlib/java/logging/src/com/nokia/helium/logger/ant/antlib.xml
buildframework/helium/external/helium-antlib/java/logging/src/com/nokia/helium/logger/ant/helium.antlib.xml
buildframework/helium/external/helium-antlib/java/logging/src/com/nokia/helium/logger/ant/listener/AntLoggingHandler.java
buildframework/helium/external/helium-antlib/java/logging/src/com/nokia/helium/logger/ant/listener/BuildEventHandler.java
buildframework/helium/external/helium-antlib/java/logging/src/com/nokia/helium/logger/ant/listener/BuildStatusReport.java
buildframework/helium/external/helium-antlib/java/logging/src/com/nokia/helium/logger/ant/listener/Handler.java
buildframework/helium/external/helium-antlib/java/logging/src/com/nokia/helium/logger/ant/listener/MessageEventHandler.java
buildframework/helium/external/helium-antlib/java/logging/src/com/nokia/helium/logger/ant/listener/RecorderEntry.java
buildframework/helium/external/helium-antlib/java/logging/src/com/nokia/helium/logger/ant/listener/StageSummaryHandler.java
buildframework/helium/external/helium-antlib/java/logging/src/com/nokia/helium/logger/ant/listener/StatusAndLogListener.java
buildframework/helium/external/helium-antlib/java/logging/src/com/nokia/helium/logger/ant/listener/SubBuildEventHandler.java
buildframework/helium/external/helium-antlib/java/logging/src/com/nokia/helium/logger/ant/listener/TargetEventHandler.java
buildframework/helium/external/helium-antlib/java/logging/src/com/nokia/helium/logger/ant/listener/TaskEventHandler.java
buildframework/helium/external/helium-antlib/java/logging/src/com/nokia/helium/logger/ant/taskdefs/LogRecorder.java
buildframework/helium/external/helium-antlib/java/logging/src/com/nokia/helium/logger/ant/taskdefs/LogReplace.java
buildframework/helium/external/helium-antlib/java/logging/src/com/nokia/helium/logger/ant/taskdefs/TriggerLogger.java
buildframework/helium/external/helium-antlib/java/logging/src/com/nokia/helium/logger/ant/types/RecordFilter.java
buildframework/helium/external/helium-antlib/java/logging/src/com/nokia/helium/logger/ant/types/RecordFilterSet.java
buildframework/helium/external/helium-antlib/java/logging/src/com/nokia/helium/logger/ant/types/Stage.java
buildframework/helium/external/helium-antlib/java/logging/src/com/nokia/helium/logger/ant/types/StageLogging.java
buildframework/helium/external/helium-antlib/java/logging/src/com/nokia/helium/logger/ant/types/StageSummary.java
buildframework/helium/external/helium-antlib/java/logging/src/templates/build_stages_summary.txt.ftl
buildframework/helium/external/helium-antlib/java/logging/tests/antunit/run-scenario.ant.xml
buildframework/helium/external/helium-antlib/java/logging/tests/antunit/test_recorder.ant.xml
buildframework/helium/external/helium-antlib/java/logging/tests/antunit/test_stageslogging.ant.xml
buildframework/helium/external/helium-antlib/java/logging/tests/bld.sh
buildframework/helium/external/helium-antlib/java/logging/tests/build.bat
buildframework/helium/external/helium-antlib/java/logging/tests/build.xml
buildframework/helium/external/helium-antlib/java/logging/tests/build_stages_summary.txt.ftl
buildframework/helium/external/helium-antlib/java/logging/tests/prep-ccm-get-input.ant.xml
buildframework/helium/external/helium-antlib/java/logging/tests/scenarii/bld.sh
buildframework/helium/external/helium-antlib/java/logging/tests/scenarii/build.bat
buildframework/helium/external/helium-antlib/java/logging/tests/scenarii/build_failure/build.xml
buildframework/helium/external/helium-antlib/java/logging/tests/scenarii/logger/build.xml
buildframework/helium/external/helium-antlib/java/logging/tests/scenarii/override_scenario/build.xml
buildframework/helium/external/helium-antlib/java/logging/tests/scenarii/valid_build/build.xml
buildframework/helium/external/helium-antlib/java/logging/tests/scenarii/valid_build/build_stages_summary.txt.ftl
buildframework/helium/external/helium-antlib/java/logging/tests/scenarii/valid_build/prep-ccm-get-input.ant.xml
buildframework/helium/external/helium-antlib/java/logging/tests/scenarii/valid_build/stages_config.ant.xml
buildframework/helium/external/helium-antlib/java/logging/tests/stages_config.ant.xml
buildframework/helium/external/helium-antlib/java/metadata/bld.bat
buildframework/helium/external/helium-antlib/java/metadata/build.xml
buildframework/helium/external/helium-antlib/java/metadata/ivy.xml
buildframework/helium/external/helium-antlib/java/metadata/metadata.rst
buildframework/helium/external/helium-antlib/java/metadata/src/com/nokia/helium/metadata/MetaDataInput.java
buildframework/helium/external/helium-antlib/java/metadata/src/com/nokia/helium/metadata/ORMFMPPLoader.java
buildframework/helium/external/helium-antlib/java/metadata/src/com/nokia/helium/metadata/SQLFMPPLoader.java
buildframework/helium/external/helium-antlib/java/metadata/src/com/nokia/helium/metadata/ant/antlib.xml
buildframework/helium/external/helium-antlib/java/metadata/src/com/nokia/helium/metadata/ant/conditions/MetaDataLogCondition.java
buildframework/helium/external/helium-antlib/java/metadata/src/com/nokia/helium/metadata/ant/taskdefs/MetaDataDelete.java
buildframework/helium/external/helium-antlib/java/metadata/src/com/nokia/helium/metadata/ant/taskdefs/MetaDataLogCount.java
buildframework/helium/external/helium-antlib/java/metadata/src/com/nokia/helium/metadata/ant/taskdefs/MetaDataRecord.java
buildframework/helium/external/helium-antlib/java/metadata/src/com/nokia/helium/metadata/ant/types/AbldLogMetaDataInput.java
buildframework/helium/external/helium-antlib/java/metadata/src/com/nokia/helium/metadata/ant/types/AntLogMetaDataInput.java
buildframework/helium/external/helium-antlib/java/metadata/src/com/nokia/helium/metadata/ant/types/LogMetaDataInput.java
buildframework/helium/external/helium-antlib/java/metadata/src/com/nokia/helium/metadata/ant/types/MetaDataFilter.java
buildframework/helium/external/helium-antlib/java/metadata/src/com/nokia/helium/metadata/ant/types/MetaDataFilterSet.java
buildframework/helium/external/helium-antlib/java/metadata/src/com/nokia/helium/metadata/ant/types/MetadataSource.java
buildframework/helium/external/helium-antlib/java/metadata/src/com/nokia/helium/metadata/ant/types/PolicyLogMetaDataInput.java
buildframework/helium/external/helium-antlib/java/metadata/src/com/nokia/helium/metadata/ant/types/SBSLogMetaDataInput.java
buildframework/helium/external/helium-antlib/java/metadata/src/com/nokia/helium/metadata/ant/types/TextLogMetaDataInput.java
buildframework/helium/external/helium-antlib/java/metadata/src/com/nokia/helium/metadata/ant/types/XMLLogMetaDataInput.java
buildframework/helium/external/helium-antlib/java/metadata/src/com/nokia/helium/metadata/db/MetaDataDb.java
buildframework/helium/external/helium-antlib/java/metadata/src/com/nokia/helium/metadata/db/ORMMetadataDB.java
buildframework/helium/external/helium-antlib/java/metadata/src/templates/build_status.xml.ftl
buildframework/helium/external/helium-antlib/java/metadata/src/templates/cc_summary.html.ftl
buildframework/helium/external/helium-antlib/java/metadata/src/templates/cc_summary_metadata.html.ftl
buildframework/helium/external/helium-antlib/java/metadata/src/templates/diamonds_faults.ftl
buildframework/helium/external/helium-antlib/java/metadata/src/templates/diamonds_macro.ftl
buildframework/helium/external/helium-antlib/java/metadata/src/templates/email_new.html.ftl
buildframework/helium/external/helium-antlib/java/metadata/src/templates/general_category.txt.ftl
buildframework/helium/external/helium-antlib/java/metadata/src/templates/macro/expand3.js
buildframework/helium/external/helium-antlib/java/metadata/src/templates/macro/log3.css
buildframework/helium/external/helium-antlib/java/metadata/src/templates/macro/logger.ftl
buildframework/helium/external/helium-antlib/java/metadata/src/templates/readdata.xml.ftl
buildframework/helium/external/helium-antlib/java/metadata/src/templates/scan2.html.ftl
buildframework/helium/external/helium-antlib/java/metadata/src/templates/summary.html.ftl
buildframework/helium/external/helium-antlib/java/metadata/tests/bld.sh
buildframework/helium/external/helium-antlib/java/metadata/tests/build.bat
buildframework/helium/external/helium-antlib/java/metadata/tests/build.xml
buildframework/helium/external/helium-antlib/java/metadata/tests/data/IDO_lcdo_tb92-ci_MCL.92.64_ant_build.log
buildframework/helium/external/helium-antlib/java/metadata/tests/data/all_regex_type.log
buildframework/helium/external/helium-antlib/java/metadata/tests/data/build_whatlog.log
buildframework/helium/external/helium-antlib/java/metadata/tests/data/build_whatlog.whatlog.log
buildframework/helium/external/helium-antlib/java/metadata/tests/data/categorization.log
buildframework/helium/external/helium-antlib/java/metadata/tests/data/categorization_clean.log
buildframework/helium/external/helium-antlib/java/metadata/tests/data/categorization_failed_empty_recipe.log
buildframework/helium/external/helium-antlib/java/metadata/tests/data/categorization_failed_error_in_recipe.log
buildframework/helium/external/helium-antlib/java/metadata/tests/data/common.csv
buildframework/helium/external/helium-antlib/java/metadata/tests/data/dp.log
buildframework/helium/external/helium-antlib/java/metadata/tests/data/ido_abs_mcl_devlon70_robot_MCL.70.500_fixslashes_raptor.log
buildframework/helium/external/helium-antlib/java/metadata/tests/data/ido_abs_mcl_devlon70_robot_MCL.70.500_info.log
buildframework/helium/external/helium-antlib/java/metadata/tests/data/ido_abs_tb92-nightly_5.2.58_validate_policy.log
buildframework/helium/external/helium-antlib/java/metadata/tests/data/log-with-same-root-name.log
buildframework/helium/external/helium-antlib/java/metadata/tests/data/log-with-same-root-name.log.log
buildframework/helium/external/helium-antlib/java/metadata/tests/data/metadata_regex.csv
buildframework/helium/external/helium-antlib/java/metadata/tests/data/metadata_regex_compile.csv
buildframework/helium/external/helium-antlib/java/metadata/tests/data/noerror.log
buildframework/helium/external/helium-antlib/java/metadata/tests/data/parser_error.log
buildframework/helium/external/helium-antlib/java/metadata/tests/data/receipe_lengthy_warn.log
buildframework/helium/external/helium-antlib/java/metadata/tests/data/sample_abld.log
buildframework/helium/external/helium-antlib/java/metadata/tests/data/very_long_warning.log
buildframework/helium/external/helium-antlib/java/metadata/tests/data/whatlog_result.ini.ftl
buildframework/helium/external/helium-antlib/java/metadata/tests/functionality/func_add_test.ant.xml
buildframework/helium/external/helium-antlib/java/metadata/tests/functionality/test_regex.ant.xml
buildframework/helium/external/helium-antlib/java/metadata/tests/output.txt
buildframework/helium/external/helium-antlib/java/metadata/tests/output/all_ido_logs.db
buildframework/helium/external/helium-antlib/java/metadata/tests/output1.txt
buildframework/helium/external/helium-antlib/java/metadata/tests/test_metadata.ant.xml
buildframework/helium/external/helium-antlib/java/metadata/tests/test_validity.ant.xml
buildframework/helium/external/helium-antlib/java/quality/bld.bat
buildframework/helium/external/helium-antlib/java/quality/build.xml
buildframework/helium/external/helium-antlib/java/quality/coverity.rst
buildframework/helium/external/helium-antlib/java/quality/demo/build.bat
buildframework/helium/external/helium-antlib/java/quality/demo/build.xml
buildframework/helium/external/helium-antlib/java/quality/demo/codescanner_config.xml
buildframework/helium/external/helium-antlib/java/quality/ivy.xml
buildframework/helium/external/helium-antlib/java/quality/src/com/nokia/helium/quality/ant/antlib.xml
buildframework/helium/external/helium-antlib/java/quality/src/com/nokia/helium/quality/ant/helium.antlib.xml
buildframework/helium/external/helium-antlib/java/quality/src/com/nokia/helium/quality/ant/taskdefs/CodeScanner.java
buildframework/helium/external/helium-antlib/java/quality/src/com/nokia/helium/quality/ant/taskdefs/Coverity.java
buildframework/helium/external/helium-antlib/java/quality/tests/bld.sh
buildframework/helium/external/helium-antlib/java/quality/tests/build.bat
buildframework/helium/external/helium-antlib/java/quality/tests/build.xml
buildframework/helium/external/helium-antlib/java/quality/tests/codescanner_config.xml
buildframework/helium/external/helium-antlib/java/quality/tests/data/src/exclude.txt
buildframework/helium/external/helium-antlib/java/quality/tests/data/src/helloworld.cpp
buildframework/helium/external/helium-antlib/java/quality/tests/data/src2/exclude.txt
buildframework/helium/external/helium-antlib/java/quality/tests/data/src2/helloworld.cpp
buildframework/helium/external/helium-antlib/java/quality/tests/test_codescanner.ant.xml
buildframework/helium/external/helium-antlib/java/quality/tests/test_coverity.ant.xml
buildframework/helium/external/helium-antlib/java/sbs/bld.bat
buildframework/helium/external/helium-antlib/java/sbs/build.xml
buildframework/helium/external/helium-antlib/java/sbs/ivy.xml
buildframework/helium/external/helium-antlib/java/sbs/sbs.rst
buildframework/helium/external/helium-antlib/java/sbs/sbscoverity.rst
buildframework/helium/external/helium-antlib/java/sbs/sbsctc.rst
buildframework/helium/external/helium-antlib/java/sbs/src/com/nokia/helium/sbs/SAXSysdefParser.java
buildframework/helium/external/helium-antlib/java/sbs/src/com/nokia/helium/sbs/SBSCommandBase.java
buildframework/helium/external/helium-antlib/java/sbs/src/com/nokia/helium/sbs/SBSException.java
buildframework/helium/external/helium-antlib/java/sbs/src/com/nokia/helium/sbs/ant/SBSBuildList.java
buildframework/helium/external/helium-antlib/java/sbs/src/com/nokia/helium/sbs/ant/antlib.xml
buildframework/helium/external/helium-antlib/java/sbs/src/com/nokia/helium/sbs/ant/taskdefs/CTCTask.java
buildframework/helium/external/helium-antlib/java/sbs/src/com/nokia/helium/sbs/ant/taskdefs/GetSBSInputs.java
buildframework/helium/external/helium-antlib/java/sbs/src/com/nokia/helium/sbs/ant/taskdefs/SBSCoverity.java
buildframework/helium/external/helium-antlib/java/sbs/src/com/nokia/helium/sbs/ant/taskdefs/SBSTask.java
buildframework/helium/external/helium-antlib/java/sbs/src/com/nokia/helium/sbs/ant/types/SBSBuild.java
buildframework/helium/external/helium-antlib/java/sbs/src/com/nokia/helium/sbs/ant/types/SBSInput.java
buildframework/helium/external/helium-antlib/java/sbs/src/com/nokia/helium/sbs/ant/types/SBSMakeOptions.java
buildframework/helium/external/helium-antlib/java/sbs/src/com/nokia/helium/sbs/plexus/CoverityErrorStreamConsumer.java
buildframework/helium/external/helium-antlib/java/sbs/src/com/nokia/helium/sbs/plexus/SBSErrorStreamConsumer.java
buildframework/helium/external/helium-antlib/java/sbs/tests/bld.sh
buildframework/helium/external/helium-antlib/java/sbs/tests/build.bat
buildframework/helium/external/helium-antlib/java/sbs/tests/build.xml
buildframework/helium/external/helium-antlib/java/sbs/tests/sbs_default_config.ant.xml
buildframework/helium/external/helium-antlib/java/sbs/tests/test.sysdef.xml
buildframework/helium/external/helium-antlib/java/sbs/tests/test_sbs_coverity.ant.xml
buildframework/helium/external/helium-antlib/java/sbs/tests/test_sbs_input.ant.xml
buildframework/helium/external/helium-antlib/java/scm/build.xml
buildframework/helium/external/helium-antlib/java/scm/demo/build.bat
buildframework/helium/external/helium-antlib/java/scm/demo/build.xml
buildframework/helium/external/helium-antlib/java/scm/demo/hg_test1.zip
buildframework/helium/external/helium-antlib/java/scm/demo/hg_test2.zip
buildframework/helium/external/helium-antlib/java/scm/demo/hg_test3.zip
buildframework/helium/external/helium-antlib/java/scm/ivy.xml
buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/helium/scm/ant/antlib.xml
buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/helium/scm/ant/helium.antlib.xml
buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/helium/scm/ant/taskdefs/AddAction.java
buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/helium/scm/ant/taskdefs/BaseDirectoryScmAction.java
buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/helium/scm/ant/taskdefs/BranchAction.java
buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/helium/scm/ant/taskdefs/ChangelogAction.java
buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/helium/scm/ant/taskdefs/CheckinAction.java
buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/helium/scm/ant/taskdefs/CheckoutAction.java
buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/helium/scm/ant/taskdefs/DiffAction.java
buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/helium/scm/ant/taskdefs/ExportAction.java
buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/helium/scm/ant/taskdefs/InfoAction.java
buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/helium/scm/ant/taskdefs/InitAction.java
buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/helium/scm/ant/taskdefs/PullAction.java
buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/helium/scm/ant/taskdefs/RemoveAction.java
buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/helium/scm/ant/taskdefs/ScmAction.java
buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/helium/scm/ant/taskdefs/ScmTask.java
buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/helium/scm/ant/taskdefs/StatusAction.java
buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/helium/scm/ant/taskdefs/TagAction.java
buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/helium/scm/ant/taskdefs/TagsAction.java
buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/helium/scm/ant/taskdefs/UpdateAction.java
buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/helium/scm/ant/types/LatestTag.java
buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/helium/scm/ant/types/Revision.java
buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/helium/scm/ant/types/Tag.java
buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/helium/scm/ant/types/TagSet.java
buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/maven/scm/command/info/AbstractInfoCommand.java
buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/maven/scm/command/info/InfoScmResult.java
buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/maven/scm/command/init/InitScmResult.java
buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/maven/scm/command/pull/AbstractPullCommand.java
buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/maven/scm/command/pull/PullScmResult.java
buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/maven/scm/command/tags/AbstractTagsCommand.java
buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/maven/scm/command/tags/TagsScmResult.java
buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/maven/scm/manager/BasicExtendedScmManager.java
buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/maven/scm/manager/ExtendedScmManager.java
buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/maven/scm/provider/ScmProviderExt.java
buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/maven/scm/provider/hg/HgScmProviderExt.java
buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/maven/scm/provider/hg/VersionChangeSet.java
buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/maven/scm/provider/hg/command/branch/HgBranchCommand.java
buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/maven/scm/provider/hg/command/checkout/HgCheckOutCommand.java
buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/maven/scm/provider/hg/command/export/HgExportCommand.java
buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/maven/scm/provider/hg/command/info/HgInfoCommand.java
buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/maven/scm/provider/hg/command/info/HgInfoConsumer.java
buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/maven/scm/provider/hg/command/init/HgInitCommand.java
buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/maven/scm/provider/hg/command/log/HgChangeLogCommand.java
buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/maven/scm/provider/hg/command/log/HgChangeLogConsumer.java
buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/maven/scm/provider/hg/command/pull/HgPullCommand.java
buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/maven/scm/provider/hg/command/remove/HgRemoveCommand.java
buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/maven/scm/provider/hg/command/tag/HgTagCommand.java
buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/maven/scm/provider/hg/command/tags/HgTagsCommand.java
buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/maven/scm/provider/hg/command/tags/HgTagsConsumer.java
buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/maven/scm/provider/hg/command/update/HgUpdateCommand.java
buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/maven/scm/provider/hg/repository/HgScmProviderRepository.java
buildframework/helium/external/helium-antlib/java/scm/tests/abstract_unittest_scmtask.ant.xml
buildframework/helium/external/helium-antlib/java/scm/tests/bld.sh
buildframework/helium/external/helium-antlib/java/scm/tests/build.bat
buildframework/helium/external/helium-antlib/java/scm/tests/build.xml
buildframework/helium/external/helium-antlib/java/scm/tests/data/hg_test1.zip
buildframework/helium/external/helium-antlib/java/scm/tests/data/hg_test2.zip
buildframework/helium/external/helium-antlib/java/scm/tests/data/hg_test3.zip
buildframework/helium/external/helium-antlib/java/scm/tests/data/svn_test1.zip
buildframework/helium/external/helium-antlib/java/scm/tests/test_hg_scmtask.ant.xml
buildframework/helium/external/helium-antlib/java/signaling/build.xml
buildframework/helium/external/helium-antlib/java/signaling/demo/build.bat
buildframework/helium/external/helium-antlib/java/signaling/demo/build.xml
buildframework/helium/external/helium-antlib/java/signaling/ivy.xml
buildframework/helium/external/helium-antlib/java/signaling/signaling.rst
buildframework/helium/external/helium-antlib/java/signaling/signalingCreateANewSignal.rst
buildframework/helium/external/helium-antlib/java/signaling/src/com/nokia/helium/signal/Notifier.java
buildframework/helium/external/helium-antlib/java/signaling/src/com/nokia/helium/signal/SignalExceptionMessage.java
buildframework/helium/external/helium-antlib/java/signaling/src/com/nokia/helium/signal/SignalNeverFailMessage.java
buildframework/helium/external/helium-antlib/java/signaling/src/com/nokia/helium/signal/SignalStatus.java
buildframework/helium/external/helium-antlib/java/signaling/src/com/nokia/helium/signal/SignalStatusList.java
buildframework/helium/external/helium-antlib/java/signaling/src/com/nokia/helium/signal/ant/SignalList.java
buildframework/helium/external/helium-antlib/java/signaling/src/com/nokia/helium/signal/ant/SignalListener.java
buildframework/helium/external/helium-antlib/java/signaling/src/com/nokia/helium/signal/ant/antlib.xml
buildframework/helium/external/helium-antlib/java/signaling/src/com/nokia/helium/signal/ant/conditions/DeferredFailureCondition.java
buildframework/helium/external/helium-antlib/java/signaling/src/com/nokia/helium/signal/ant/helium.antlib.xml
buildframework/helium/external/helium-antlib/java/signaling/src/com/nokia/helium/signal/ant/taskdefs/ClearDeferredFailures.java
buildframework/helium/external/helium-antlib/java/signaling/src/com/nokia/helium/signal/ant/taskdefs/Signal.java
buildframework/helium/external/helium-antlib/java/signaling/src/com/nokia/helium/signal/ant/types/EMAILNotifier.java
buildframework/helium/external/helium-antlib/java/signaling/src/com/nokia/helium/signal/ant/types/ExecuteTaskNotifier.java
buildframework/helium/external/helium-antlib/java/signaling/src/com/nokia/helium/signal/ant/types/FailBuildEnum.java
buildframework/helium/external/helium-antlib/java/signaling/src/com/nokia/helium/signal/ant/types/InfoNotifier.java
buildframework/helium/external/helium-antlib/java/signaling/src/com/nokia/helium/signal/ant/types/NotifierInput.java
buildframework/helium/external/helium-antlib/java/signaling/src/com/nokia/helium/signal/ant/types/SMSNotifier.java
buildframework/helium/external/helium-antlib/java/signaling/src/com/nokia/helium/signal/ant/types/SignalExceptionHandler.java
buildframework/helium/external/helium-antlib/java/signaling/src/com/nokia/helium/signal/ant/types/SignalInput.java
buildframework/helium/external/helium-antlib/java/signaling/src/com/nokia/helium/signal/ant/types/SignalListenerConfig.java
buildframework/helium/external/helium-antlib/java/signaling/src/com/nokia/helium/signal/ant/types/SignalNotifierInput.java
buildframework/helium/external/helium-antlib/java/signaling/src/com/nokia/helium/signal/ant/types/SignalNotifierList.java
buildframework/helium/external/helium-antlib/java/signaling/src/com/nokia/helium/signal/ant/types/SignalStatusDef.java
buildframework/helium/external/helium-antlib/java/signaling/src/com/nokia/helium/signal/ant/types/TargetCondition.java
buildframework/helium/external/helium-antlib/java/signaling/src/com/nokia/helium/signal/ant/types/XmlSource.java
buildframework/helium/external/helium-antlib/java/signaling/src/templates/email.html.ftl
buildframework/helium/external/helium-antlib/java/signaling/src/templates/email_default.html.ftl
buildframework/helium/external/helium-antlib/java/signaling/src/templates/email_subject.txt.ftl
buildframework/helium/external/helium-antlib/java/signaling/tests/bld.sh
buildframework/helium/external/helium-antlib/java/signaling/tests/build.bat
buildframework/helium/external/helium-antlib/java/signaling/tests/build.xml
buildframework/helium/external/helium-antlib/java/signaling/tests/src/com/nokia/helium/signaling/tests/TestEmailSender.java
buildframework/helium/external/helium-antlib/java/signaling/tests/test_signal/data/test.log_status.html
buildframework/helium/external/helium-antlib/java/signaling/tests/test_signal/email.html.ftl
buildframework/helium/external/helium-antlib/java/signaling/tests/test_signal/example.html.ftl
buildframework/helium/external/helium-antlib/java/signaling/tests/test_signal/signaling_test.ant.xml
buildframework/helium/external/helium-antlib/java/signaling/tests/test_signal/test_hasdeferredfailure.ant.xml
buildframework/helium/external/helium-antlib/java/signaling/tests/test_signal/test_signaling_config.ant.xml
buildframework/helium/external/helium-antlib/java/signaling/tests/test_signal/test_signaltask.ant.xml
buildframework/helium/external/helium-antlib/java/sysdef/build.xml
buildframework/helium/external/helium-antlib/java/sysdef/demo/build.bat
buildframework/helium/external/helium-antlib/java/sysdef/demo/build.xml
buildframework/helium/external/helium-antlib/java/sysdef/demo/data/layer1/package1/package_definition.xml
buildframework/helium/external/helium-antlib/java/sysdef/demo/data/layer1/package2/package_definition.xml
buildframework/helium/external/helium-antlib/java/sysdef/demo/data/layer2/package3/package_definition.xml
buildframework/helium/external/helium-antlib/java/sysdef/demo/data/layer2/package4/package_definition.xml
buildframework/helium/external/helium-antlib/java/sysdef/demo/data/layer3/package5/package_definition.xml
buildframework/helium/external/helium-antlib/java/sysdef/demo/data/root/system_definition_layer1.xml
buildframework/helium/external/helium-antlib/java/sysdef/demo/data/root/system_definition_layer2.xml
buildframework/helium/external/helium-antlib/java/sysdef/demo/data/root/system_definition_layer3.xml
buildframework/helium/external/helium-antlib/java/sysdef/demo/data/root/system_model.xml
buildframework/helium/external/helium-antlib/java/sysdef/demo/data/sf/os/buildtools/bldsystemtools/buildsystemtools/filter-module.xsl
buildframework/helium/external/helium-antlib/java/sysdef/demo/data/sf/os/buildtools/bldsystemtools/buildsystemtools/filtersysdef.xsl
buildframework/helium/external/helium-antlib/java/sysdef/demo/data/sf/os/buildtools/bldsystemtools/buildsystemtools/joinsysdef-module.xsl
buildframework/helium/external/helium-antlib/java/sysdef/demo/data/sf/os/buildtools/bldsystemtools/buildsystemtools/joinsysdef.xsl
buildframework/helium/external/helium-antlib/java/sysdef/demo/data/sf/os/buildtools/bldsystemtools/buildsystemtools/mergesysdef-module.xsl
buildframework/helium/external/helium-antlib/java/sysdef/demo/data/sf/os/buildtools/bldsystemtools/buildsystemtools/mergesysdef.xsl
buildframework/helium/external/helium-antlib/java/sysdef/demo/data/sf/os/buildtools/bldsystemtools/buildsystemtools/sysdefdowngrade.xsl
buildframework/helium/external/helium-antlib/java/sysdef/ivy.xml
buildframework/helium/external/helium-antlib/java/sysdef/src/com/nokia/helium/sysdef/ant/antlib.xml
buildframework/helium/external/helium-antlib/java/sysdef/src/com/nokia/helium/sysdef/ant/helium.antlib.xml
buildframework/helium/external/helium-antlib/java/sysdef/src/com/nokia/helium/sysdef/ant/taskdefs/AbstractSydefTask.java
buildframework/helium/external/helium-antlib/java/sysdef/src/com/nokia/helium/sysdef/ant/taskdefs/DowngradeTask.java
buildframework/helium/external/helium-antlib/java/sysdef/src/com/nokia/helium/sysdef/ant/taskdefs/JoinTask.java
buildframework/helium/external/helium-antlib/java/sysdef/src/com/nokia/helium/sysdef/ant/taskdefs/MergeTask.java
buildframework/helium/external/helium-antlib/java/sysdef/tests/antunit/test_downgrade_sysdef.ant.xml
buildframework/helium/external/helium-antlib/java/sysdef/tests/antunit/test_join_sysdef.ant.xml
buildframework/helium/external/helium-antlib/java/sysdef/tests/antunit/test_merge_sysdef.ant.xml
buildframework/helium/external/helium-antlib/java/sysdef/tests/bld.sh
buildframework/helium/external/helium-antlib/java/sysdef/tests/build.bat
buildframework/helium/external/helium-antlib/java/sysdef/tests/build.xml
buildframework/helium/external/helium-antlib/lib/commons-io-1.4.jar
buildframework/helium/external/helium-antlib/lib/dom4j-1.6.1.jar
buildframework/helium/external/helium-antlib/lib/freemarker-2.3.13.jar
buildframework/helium/external/helium-antlib/lib/jaxen-1.1.1.jar
buildframework/helium/external/helium-antlib/lib/log4j-1.2.9.jar
buildframework/helium/external/helium-antlib/lib/mail-1.4.1.jar
buildframework/helium/external/helium-antlib/lib/plexus-utils-1.5.6.jar
buildframework/helium/external/helium-antlib/logging/bld.bat
buildframework/helium/external/helium-antlib/logging/build.xml
buildframework/helium/external/helium-antlib/logging/src/com/nokia/helium/logger/ant/antlib.xml
buildframework/helium/external/helium-antlib/logging/src/com/nokia/helium/logger/ant/helium.antlib.xml
buildframework/helium/external/helium-antlib/logging/src/com/nokia/helium/logger/ant/listener/AntLogRecorderEntry.java
buildframework/helium/external/helium-antlib/logging/src/com/nokia/helium/logger/ant/listener/AntLoggingHandler.java
buildframework/helium/external/helium-antlib/logging/src/com/nokia/helium/logger/ant/listener/BuildEventHandler.java
buildframework/helium/external/helium-antlib/logging/src/com/nokia/helium/logger/ant/listener/BuildStatusReport.java
buildframework/helium/external/helium-antlib/logging/src/com/nokia/helium/logger/ant/listener/Handler.java
buildframework/helium/external/helium-antlib/logging/src/com/nokia/helium/logger/ant/listener/StageSummaryHandler.java
buildframework/helium/external/helium-antlib/logging/src/com/nokia/helium/logger/ant/listener/StatusAndLogListener.java
buildframework/helium/external/helium-antlib/logging/src/com/nokia/helium/logger/ant/listener/SubBuildEventHandler.java
buildframework/helium/external/helium-antlib/logging/src/com/nokia/helium/logger/ant/listener/TargetEventHandler.java
buildframework/helium/external/helium-antlib/logging/src/com/nokia/helium/logger/ant/listener/TaskEventHandler.java
buildframework/helium/external/helium-antlib/logging/src/com/nokia/helium/logger/ant/taskdefs/LogRecorder.java
buildframework/helium/external/helium-antlib/logging/src/com/nokia/helium/logger/ant/taskdefs/LogReplace.java
buildframework/helium/external/helium-antlib/logging/src/com/nokia/helium/logger/ant/types/RecordFilter.java
buildframework/helium/external/helium-antlib/logging/src/com/nokia/helium/logger/ant/types/RecordFilterSet.java
buildframework/helium/external/helium-antlib/logging/src/com/nokia/helium/logger/ant/types/Stage.java
buildframework/helium/external/helium-antlib/logging/src/com/nokia/helium/logger/ant/types/StageLogging.java
buildframework/helium/external/helium-antlib/logging/src/com/nokia/helium/logger/ant/types/StageSummary.java
buildframework/helium/external/helium-antlib/logging/src/templates/build_stages_summary.txt.ftl
buildframework/helium/external/helium-antlib/logging/tests/antunit/test_stageslogging.ant.xml
buildframework/helium/external/helium-antlib/logging/tests/bld.sh
buildframework/helium/external/helium-antlib/logging/tests/build.bat
buildframework/helium/external/helium-antlib/logging/tests/build.xml
buildframework/helium/external/helium-antlib/logging/tests/build_stages_summary.txt.ftl
buildframework/helium/external/helium-antlib/logging/tests/prep-ccm-get-input.ant.xml
buildframework/helium/external/helium-antlib/logging/tests/stages_config.ant.xml
buildframework/helium/external/helium-antlib/macros.ant.xml
buildframework/helium/external/helium-antlib/metadata/bld.bat
buildframework/helium/external/helium-antlib/metadata/build.xml
buildframework/helium/external/helium-antlib/metadata/lib/ant-contrib-1.0b2.jar
buildframework/helium/external/helium-antlib/metadata/lib/bsf-2.4.0.jar
buildframework/helium/external/helium-antlib/metadata/lib/bsh-2.1b0-1.0.jar
buildframework/helium/external/helium-antlib/metadata/lib/dom4j-1.6.1.jar
buildframework/helium/external/helium-antlib/metadata/lib/jakarta-oro-2.0.8.jar
buildframework/helium/external/helium-antlib/metadata/lib/sqlitejdbc-v053.jar
buildframework/helium/external/helium-antlib/metadata/src/build.xml
buildframework/helium/external/helium-antlib/metadata/src/com/nokia/helium/metadata/MetaDataInput.java
buildframework/helium/external/helium-antlib/metadata/src/com/nokia/helium/metadata/SQLFMPPLoader.java
buildframework/helium/external/helium-antlib/metadata/src/com/nokia/helium/metadata/ant/antlib.xml
buildframework/helium/external/helium-antlib/metadata/src/com/nokia/helium/metadata/ant/conditions/MetaDataLogCondition.java
buildframework/helium/external/helium-antlib/metadata/src/com/nokia/helium/metadata/ant/taskdefs/MetaDataDelete.java
buildframework/helium/external/helium-antlib/metadata/src/com/nokia/helium/metadata/ant/taskdefs/MetaDataLogCount.java
buildframework/helium/external/helium-antlib/metadata/src/com/nokia/helium/metadata/ant/taskdefs/MetaDataRecord.java
buildframework/helium/external/helium-antlib/metadata/src/com/nokia/helium/metadata/ant/types/AbldLogMetaDataInput.java
buildframework/helium/external/helium-antlib/metadata/src/com/nokia/helium/metadata/ant/types/AntLogMetaDataInput.java
buildframework/helium/external/helium-antlib/metadata/src/com/nokia/helium/metadata/ant/types/LogMetaDataInput.java
buildframework/helium/external/helium-antlib/metadata/src/com/nokia/helium/metadata/ant/types/MetaDataFilter.java
buildframework/helium/external/helium-antlib/metadata/src/com/nokia/helium/metadata/ant/types/MetaDataFilterSet.java
buildframework/helium/external/helium-antlib/metadata/src/com/nokia/helium/metadata/ant/types/MetadataSource.java
buildframework/helium/external/helium-antlib/metadata/src/com/nokia/helium/metadata/ant/types/PolicyLogMetaDataInput.java
buildframework/helium/external/helium-antlib/metadata/src/com/nokia/helium/metadata/ant/types/SBSLogMetaDataInput.java
buildframework/helium/external/helium-antlib/metadata/src/com/nokia/helium/metadata/ant/types/TextLogMetaDataInput.java
buildframework/helium/external/helium-antlib/metadata/src/com/nokia/helium/metadata/ant/types/XMLLogMetaDataInput.java
buildframework/helium/external/helium-antlib/metadata/src/com/nokia/helium/metadata/db/MetadataDb.java
buildframework/helium/external/helium-antlib/metadata/src/log4j.xml
buildframework/helium/external/helium-antlib/metadata/src/templates/build_status.xml.ftl
buildframework/helium/external/helium-antlib/metadata/src/templates/cc_summary.html.ftl
buildframework/helium/external/helium-antlib/metadata/src/templates/cc_summary_metadata.html.ftl
buildframework/helium/external/helium-antlib/metadata/src/templates/diamonds_faults.ftl
buildframework/helium/external/helium-antlib/metadata/src/templates/diamonds_macro.ftl
buildframework/helium/external/helium-antlib/metadata/src/templates/email_new.html.ftl
buildframework/helium/external/helium-antlib/metadata/src/templates/general_category.txt.ftl
buildframework/helium/external/helium-antlib/metadata/src/templates/macro/expand3.js
buildframework/helium/external/helium-antlib/metadata/src/templates/macro/log3.css
buildframework/helium/external/helium-antlib/metadata/src/templates/macro/logger.ftl
buildframework/helium/external/helium-antlib/metadata/src/templates/readdata.xml.ftl
buildframework/helium/external/helium-antlib/metadata/src/templates/summary.html.ftl
buildframework/helium/external/helium-antlib/metadata/tests/bld.sh
buildframework/helium/external/helium-antlib/metadata/tests/build.bat
buildframework/helium/external/helium-antlib/metadata/tests/build.xml
buildframework/helium/external/helium-antlib/metadata/tests/data/IDO_lcdo_tb92-ci_MCL.92.64_ant_build.log
buildframework/helium/external/helium-antlib/metadata/tests/data/all_regex_type.log
buildframework/helium/external/helium-antlib/metadata/tests/data/categorization.log
buildframework/helium/external/helium-antlib/metadata/tests/data/categorization_clean.log
buildframework/helium/external/helium-antlib/metadata/tests/data/common.csv
buildframework/helium/external/helium-antlib/metadata/tests/data/dp.log
buildframework/helium/external/helium-antlib/metadata/tests/data/ido_abs_mcl_devlon70_robot_MCL.70.500_fixslashes_raptor.log
buildframework/helium/external/helium-antlib/metadata/tests/data/ido_abs_mcl_devlon70_robot_MCL.70.500_info.log
buildframework/helium/external/helium-antlib/metadata/tests/data/ido_abs_tb92-nightly_5.2.58_validate_policy.log
buildframework/helium/external/helium-antlib/metadata/tests/data/noerror.log
buildframework/helium/external/helium-antlib/metadata/tests/data/parser_error.log
buildframework/helium/external/helium-antlib/metadata/tests/data/receipe_lengthy_warn.log
buildframework/helium/external/helium-antlib/metadata/tests/data/sample_abld.log
buildframework/helium/external/helium-antlib/metadata/tests/functionality/func_add_test.ant.xml
buildframework/helium/external/helium-antlib/metadata/tests/functionality/test_regex.ant.xml
buildframework/helium/external/helium-antlib/metadata/tests/output.txt
buildframework/helium/external/helium-antlib/metadata/tests/output/all_ido_logs.db
buildframework/helium/external/helium-antlib/metadata/tests/output1.txt
buildframework/helium/external/helium-antlib/metadata/tests/test_metadata.ant.xml
buildframework/helium/external/helium-antlib/metadata/tests/test_validity.ant.xml
buildframework/helium/external/helium-antlib/python/pythoncore/build.xml
buildframework/helium/external/helium-antlib/python/pythoncore/ivy.xml
buildframework/helium/external/helium-antlib/python/pythoncore/lib/CreateZipInput.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/amara.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/ant.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/archive/__init__$py.class
buildframework/helium/external/helium-antlib/python/pythoncore/lib/archive/__init__.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/archive/builders$py.class
buildframework/helium/external/helium-antlib/python/pythoncore/lib/archive/builders.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/archive/mappers$py.class
buildframework/helium/external/helium-antlib/python/pythoncore/lib/archive/mappers.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/archive/scanners$py.class
buildframework/helium/external/helium-antlib/python/pythoncore/lib/archive/scanners.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/archive/selectors$py.class
buildframework/helium/external/helium-antlib/python/pythoncore/lib/archive/selectors.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/archive/tools$py.class
buildframework/helium/external/helium-antlib/python/pythoncore/lib/archive/tools.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/ats3/__init__.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/ats3/aste.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/ats3/aste_template.xml
buildframework/helium/external/helium-antlib/python/pythoncore/lib/ats3/ats4_template.xml
buildframework/helium/external/helium-antlib/python/pythoncore/lib/ats3/ats_template.xml
buildframework/helium/external/helium-antlib/python/pythoncore/lib/ats3/atsconfigparser.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/ats3/dropgenerator.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/ats3/matti/MattiDrops.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/ats3/matti/__init__.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/ats3/matti/template/matti_demo.xml
buildframework/helium/external/helium-antlib/python/pythoncore/lib/ats3/parsers.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/ats3/templates/ats4_macros.xml
buildframework/helium/external/helium-antlib/python/pythoncore/lib/ats3/testconfigurator.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/atsant.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/bomtofile.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/build/__init__.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/build/ec/__init__.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/build/ec/history.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/build/io.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/build/model.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/buildmanagement.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/buildtools$py.class
buildframework/helium/external/helium-antlib/python/pythoncore/lib/buildtools.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/ccm/__init__.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/ccm/extra.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/ccmutil.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/comments.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/compilation.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/configuration$py.class
buildframework/helium/external/helium-antlib/python/pythoncore/lib/configuration.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/configuration_model.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/ctc.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/dataurl.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/delta_zip.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/dependancygraph.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/docs.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/escapeddict.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/fileutils$py.class
buildframework/helium/external/helium-antlib/python/pythoncore/lib/fileutils.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/freedisk.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/getVariantConfiguration.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/helium/__init__.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/helium/documentation.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/helium/logger.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/helium/output/__init__.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/helium/output/widgets.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/helium/outputer.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/heliumlogging.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/iadinfo.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/icf2txt.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/ido.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/idoprep.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/imaker/__init__.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/imaker/api.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/integration/__init__.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/integration/ant.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/integration/quality.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/log2xml.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/nokia/__init__.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/nokia/get_gscm_info.pl
buildframework/helium/external/helium-antlib/python/pythoncore/lib/nokia/gscm.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/nokia/nokiaccm.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/packageiad.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pathaddition/__init__$py.class
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pathaddition/__init__.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pathaddition/match$py.class
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pathaddition/match.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pathaddition/relative$py.class
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pathaddition/relative.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/preparation.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncorecpythontests/__init__.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncorecpythontests/test_archive.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncorecpythontests/test_ats3.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncorecpythontests/test_ats3_aste.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncorecpythontests/test_ats4.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncorecpythontests/test_ats4_aste.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncorecpythontests/test_atsant.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncorecpythontests/test_atsconfigparser.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncorecpythontests/test_atsconfiguration.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncorecpythontests/test_buildmodel.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncorecpythontests/test_ccm.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncorecpythontests/test_comments.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncorecpythontests/test_configuration_model.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncorecpythontests/test_documentation.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncorecpythontests/test_fileutils.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncorecpythontests/test_logger.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncorecpythontests/test_matti.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncorecpythontests/test_packageiad.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncorecpythontests/test_parsers.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncorecpythontests/test_sis.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncorecpythontests/test_timeout_launcher.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/__init__.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_amara.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_ant.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_bomtofile.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_build_io.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_buildtools.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_ccm_4pn.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_ccm_object.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_ccm_results.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_ccmutil.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_compilation.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_configuration.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_ctc.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_deltazip.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_dependancygraph.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_docs.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_escapeddict.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_freedisk.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_gscm.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_ido.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_idoprep.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_integration_ant.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_log2xml.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_misc.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_path_match.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_pathaddition_relative.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_policy_validator.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_preparation.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_relnotes_variants.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_searchnextdrive.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_session_provider.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_symbian_log.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_symbian_raptor.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_symrec.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_sysdef.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_sysdef_io.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_threadpool.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_unittestadditions.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/relnotes/__init__.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/relnotes/variants.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/rom.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/rtfutils.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/searchnextdrive.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/sis.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/symbian/__init__.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/symbian/log.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/symbian/raptor.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/symrec$py.class
buildframework/helium/external/helium-antlib/python/pythoncore/lib/symrec.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/sysdef/__init__.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/sysdef/api.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/sysdef/io.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/timeout_launcher.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/unittestadditions.py
buildframework/helium/external/helium-antlib/python/pythoncore/lib/xmlhelper.py
buildframework/helium/external/helium-antlib/python/pythoncore/setup.py
buildframework/helium/external/helium-antlib/python/pythoncore/tests.ant.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/PythonTest.py
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/XX_rnd_rofs2_langpack_01_info.txt
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/ant_config_test.txt
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/ant_config_test.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/archive_test_input.cfg.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/bom/bom_validate_101_bom.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/bom/bom_validate_101_bom_delta.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/bom/bom_validate_102_bom.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/bom/bom_validate_102_bom_delta.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/bom/bom_validate_103_bom.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/bom/bom_validate_103_bom_delta.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/bom/bom_validate_104_bom_delta.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/bom/build_model_bom.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/build/io/abld_what.log
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/build/io/test_rofs.log
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/build/io/test_rom.log
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/build/metadata/abld_what_db_test.log
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/comments_test.bat
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/comments_test.cpp
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/comments_test.h
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/comments_test.hrh
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/comments_test.iby
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/comments_test.inf
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/comments_test.java
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/comments_test.mk
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/comments_test.mmp
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/comments_test.pl
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/comments_test.py
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/comments_test.txt
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/comments_test.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/comments_test1.cmd
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/comments_test2.cmd
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/compile/logs/test_build.log
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/compile/logs/test_build_compile.log
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/compile/logs/test_build_compile_linux.log
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/compile/logs/test_rom.log
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/compile/sysdefs/build.sysdef.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/compile/sysdefs/canonical_system_definition.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/compile/sysdefs/layers.sysdef.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/config_test.cfg.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/data_model_test.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/data_model_validation_group_test.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/data_model_validation_property_test.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/data_model_validation_test.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/distribution.policy.extended_for_sf.id_status.csv
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/distribution.policy.id_status.csv
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/docs/database_test.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/docs/helium/tools/test_docs_invalid.ant.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/docs/helium/tools/test_docs_valid.ant.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/docs/sample_new_db.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/docs/sample_old_db.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/example_corernd.iconfig.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/flash_config/rom_image_config_test.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/help_delivery/Data/xhtml/01/subdir/03/test.txt
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/help_delivery/Data/xhtml/01/subdir/sample.txt
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/help_delivery/Data/xhtml/02/subdir/sample.txt
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/help_delivery/Data/xhtml/03_2G/sample.txt
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/help_delivery/Data/xhtml/03_3G/sample.txt
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/help_delivery/Data/xhtml/theme/subdir/sample.txt
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/ido/ido_project/ido_project/classicui/layers.sysdef.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/ido/ido_project/ido_project/myapp/layers.sysdef.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/ido/ido_project/ido_project/xmlui/layers.sysdef.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/iqrf/imaker_5250.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/ivy.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/log2xml_failure.log
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/log2xml_test.log
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/logo.png
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/logs/test_log.log
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/matti/test.rb
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/packageiad/epoc32/tools/makesis.exe
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/packageiad/epoc32/tools/signsis.exe
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/packageiad/layers.sysdef.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/packageiad/sis/testPackage/depends.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/packageiad/sis/testPackage/sisinfo.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/packageiad/sis/testPackage/testPackage.sis
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/pythonTest2.py
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/scanlog/all_regex_type.log
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/scanlog/all_regex_type.log_sbs_info.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/GRACE/service/product/release_1/release_metadata.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/GRACE/service/product/release_1/test1.zip
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/GRACE/service/product/release_1/test2.zip
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/GRACE/service/product/release_1_001/release_metadata.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/GRACE/service/product/release_1_001/release_metadata_1.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/GRACE/service/product/release_1_001/sp1.zip
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/GRACE/service/product/release_1_001/specialInstructions.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/GRACE/service/product/release_1_002/release_metadata.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/GRACE/service/product/release_1_002/sp2.zip
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/GRACE/service/product/release_1_002/specialInstructions.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/GRACE/service/product/release_2/release_metadata.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/GRACE/service/product/release_2/test1.zip
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/GRACE/service/product/release_3/release_metadata.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/GRACE/service/product/release_3/test1.zip
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/GRACE/service/product/release_4/TICKLER
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/GRACE/service/product/release_4/release_metadata.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/GRACE/service/product/release_4/test1.zip
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/GRACE/service/product/release_5/HYDRASTATUS.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/GRACE/service/product/release_5/release_metadata.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/GRACE/service/product/release_5/test1.zip
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/GRACE/service/product/release_6/HYDRASTATUS.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/GRACE/service/product/release_6/release_metadata.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/GRACE/service/product/release_6/test1.zip
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/GRACE/service/product/release_7/release_metadata.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/GRACE/service/product/release_7/test1.zip
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/GRACE/service/product/release_7/test2.zip
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/generated_release_metadata.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/merge/main_metadata_1.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/merge/main_metadata_2.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/merge/main_metadata_3.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/override/one/release_metadata.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/override/several/release_metadata.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/override/several/release_metadata_1.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/override/several/release_metadata_2.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/revision_release_metadata.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/sysdef2make/SDF.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/test_ccmwaid.inf
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/test_database.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/test_delivery.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/test_prep.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/zip_archive_test.cfg.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/zip_checkDrive_test.cfg.xml
buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/zip_checkDrive_test.cfg.xml.parsed
buildframework/helium/external/helium-antlib/quality/bld.bat
buildframework/helium/external/helium-antlib/quality/build.xml
buildframework/helium/external/helium-antlib/quality/demo/build.bat
buildframework/helium/external/helium-antlib/quality/demo/build.xml
buildframework/helium/external/helium-antlib/quality/demo/codescanner_config.xml
buildframework/helium/external/helium-antlib/quality/src/com/nokia/helium/quality/ant/antlib.xml
buildframework/helium/external/helium-antlib/quality/src/com/nokia/helium/quality/ant/helium.antlib.xml
buildframework/helium/external/helium-antlib/quality/src/com/nokia/helium/quality/ant/taskdefs/CodeScanner.java
buildframework/helium/external/helium-antlib/quality/tests/bld.sh
buildframework/helium/external/helium-antlib/quality/tests/build.bat
buildframework/helium/external/helium-antlib/quality/tests/build.xml
buildframework/helium/external/helium-antlib/quality/tests/codescanner_config.xml
buildframework/helium/external/helium-antlib/quality/tests/data/src/exclude.txt
buildframework/helium/external/helium-antlib/quality/tests/data/src/helloworld.cpp
buildframework/helium/external/helium-antlib/quality/tests/data/src2/exclude.txt
buildframework/helium/external/helium-antlib/quality/tests/data/src2/helloworld.cpp
buildframework/helium/external/helium-antlib/quality/tests/test_codescanner.ant.xml
buildframework/helium/external/helium-antlib/sbs/bld.bat
buildframework/helium/external/helium-antlib/sbs/build.xml
buildframework/helium/external/helium-antlib/sbs/src/com/nokia/helium/sbs/SAXSysdefParser.java
buildframework/helium/external/helium-antlib/sbs/src/com/nokia/helium/sbs/SBSCommandBase.java
buildframework/helium/external/helium-antlib/sbs/src/com/nokia/helium/sbs/SBSException.java
buildframework/helium/external/helium-antlib/sbs/src/com/nokia/helium/sbs/ant/SBSBuildList.java
buildframework/helium/external/helium-antlib/sbs/src/com/nokia/helium/sbs/ant/antlib.xml
buildframework/helium/external/helium-antlib/sbs/src/com/nokia/helium/sbs/ant/taskdefs/GetSBSInputs.java
buildframework/helium/external/helium-antlib/sbs/src/com/nokia/helium/sbs/ant/taskdefs/SBSTask.java
buildframework/helium/external/helium-antlib/sbs/src/com/nokia/helium/sbs/ant/types/SBSBuild.java
buildframework/helium/external/helium-antlib/sbs/src/com/nokia/helium/sbs/ant/types/SBSInput.java
buildframework/helium/external/helium-antlib/sbs/src/com/nokia/helium/sbs/ant/types/SBSMakeOptions.java
buildframework/helium/external/helium-antlib/sbs/tests/bld.sh
buildframework/helium/external/helium-antlib/sbs/tests/build.bat
buildframework/helium/external/helium-antlib/sbs/tests/build.xml
buildframework/helium/external/helium-antlib/sbs/tests/sbs_default_config.ant.xml
buildframework/helium/external/helium-antlib/sbs/tests/test.sysdef.xml
buildframework/helium/external/helium-antlib/sbs/tests/test_sbs_input.ant.xml
buildframework/helium/external/helium-antlib/scm/bld.bat
buildframework/helium/external/helium-antlib/scm/build.xml
buildframework/helium/external/helium-antlib/scm/demo/build.bat
buildframework/helium/external/helium-antlib/scm/demo/build.xml
buildframework/helium/external/helium-antlib/scm/demo/hg_test1.zip
buildframework/helium/external/helium-antlib/scm/demo/hg_test2.zip
buildframework/helium/external/helium-antlib/scm/demo/hg_test3.zip
buildframework/helium/external/helium-antlib/scm/lib/maven-scm-api-1.1.jar
buildframework/helium/external/helium-antlib/scm/lib/maven-scm-provider-hg-1.1.jar
buildframework/helium/external/helium-antlib/scm/lib/maven-scm-provider-svn-commons-1.1.jar
buildframework/helium/external/helium-antlib/scm/lib/maven-scm-provider-synergy-1.1.jar
buildframework/helium/external/helium-antlib/scm/lib/plexus-utils-1.5.6.jar
buildframework/helium/external/helium-antlib/scm/src/com/nokia/helium/scm/ant/antlib.xml
buildframework/helium/external/helium-antlib/scm/src/com/nokia/helium/scm/ant/helium.antlib.xml
buildframework/helium/external/helium-antlib/scm/src/com/nokia/helium/scm/ant/taskdefs/AddAction.java
buildframework/helium/external/helium-antlib/scm/src/com/nokia/helium/scm/ant/taskdefs/BaseDirectoryScmAction.java
buildframework/helium/external/helium-antlib/scm/src/com/nokia/helium/scm/ant/taskdefs/BranchAction.java
buildframework/helium/external/helium-antlib/scm/src/com/nokia/helium/scm/ant/taskdefs/ChangelogAction.java
buildframework/helium/external/helium-antlib/scm/src/com/nokia/helium/scm/ant/taskdefs/CheckinAction.java
buildframework/helium/external/helium-antlib/scm/src/com/nokia/helium/scm/ant/taskdefs/CheckoutAction.java
buildframework/helium/external/helium-antlib/scm/src/com/nokia/helium/scm/ant/taskdefs/DiffAction.java
buildframework/helium/external/helium-antlib/scm/src/com/nokia/helium/scm/ant/taskdefs/ExportAction.java
buildframework/helium/external/helium-antlib/scm/src/com/nokia/helium/scm/ant/taskdefs/InfoAction.java
buildframework/helium/external/helium-antlib/scm/src/com/nokia/helium/scm/ant/taskdefs/InitAction.java
buildframework/helium/external/helium-antlib/scm/src/com/nokia/helium/scm/ant/taskdefs/PullAction.java
buildframework/helium/external/helium-antlib/scm/src/com/nokia/helium/scm/ant/taskdefs/RemoveAction.java
buildframework/helium/external/helium-antlib/scm/src/com/nokia/helium/scm/ant/taskdefs/ScmAction.java
buildframework/helium/external/helium-antlib/scm/src/com/nokia/helium/scm/ant/taskdefs/ScmTask.java
buildframework/helium/external/helium-antlib/scm/src/com/nokia/helium/scm/ant/taskdefs/StatusAction.java
buildframework/helium/external/helium-antlib/scm/src/com/nokia/helium/scm/ant/taskdefs/TagAction.java
buildframework/helium/external/helium-antlib/scm/src/com/nokia/helium/scm/ant/taskdefs/TagsAction.java
buildframework/helium/external/helium-antlib/scm/src/com/nokia/helium/scm/ant/taskdefs/UpdateAction.java
buildframework/helium/external/helium-antlib/scm/src/com/nokia/helium/scm/ant/types/LatestTag.java
buildframework/helium/external/helium-antlib/scm/src/com/nokia/helium/scm/ant/types/Revision.java
buildframework/helium/external/helium-antlib/scm/src/com/nokia/helium/scm/ant/types/Tag.java
buildframework/helium/external/helium-antlib/scm/src/com/nokia/helium/scm/ant/types/TagSet.java
buildframework/helium/external/helium-antlib/scm/src/com/nokia/maven/scm/command/info/AbstractInfoCommand.java
buildframework/helium/external/helium-antlib/scm/src/com/nokia/maven/scm/command/info/InfoScmResult.java
buildframework/helium/external/helium-antlib/scm/src/com/nokia/maven/scm/command/init/InitScmResult.java
buildframework/helium/external/helium-antlib/scm/src/com/nokia/maven/scm/command/pull/AbstractPullCommand.java
buildframework/helium/external/helium-antlib/scm/src/com/nokia/maven/scm/command/pull/PullScmResult.java
buildframework/helium/external/helium-antlib/scm/src/com/nokia/maven/scm/command/tags/AbstractTagsCommand.java
buildframework/helium/external/helium-antlib/scm/src/com/nokia/maven/scm/command/tags/TagsScmResult.java
buildframework/helium/external/helium-antlib/scm/src/com/nokia/maven/scm/manager/BasicExtendedScmManager.java
buildframework/helium/external/helium-antlib/scm/src/com/nokia/maven/scm/manager/ExtendedScmManager.java
buildframework/helium/external/helium-antlib/scm/src/com/nokia/maven/scm/provider/ScmProviderExt.java
buildframework/helium/external/helium-antlib/scm/src/com/nokia/maven/scm/provider/hg/HgScmProviderExt.java
buildframework/helium/external/helium-antlib/scm/src/com/nokia/maven/scm/provider/hg/VersionChangeSet.java
buildframework/helium/external/helium-antlib/scm/src/com/nokia/maven/scm/provider/hg/command/branch/HgBranchCommand.java
buildframework/helium/external/helium-antlib/scm/src/com/nokia/maven/scm/provider/hg/command/checkout/HgCheckOutCommand.java
buildframework/helium/external/helium-antlib/scm/src/com/nokia/maven/scm/provider/hg/command/export/HgExportCommand.java
buildframework/helium/external/helium-antlib/scm/src/com/nokia/maven/scm/provider/hg/command/info/HgInfoCommand.java
buildframework/helium/external/helium-antlib/scm/src/com/nokia/maven/scm/provider/hg/command/info/HgInfoConsumer.java
buildframework/helium/external/helium-antlib/scm/src/com/nokia/maven/scm/provider/hg/command/init/HgInitCommand.java
buildframework/helium/external/helium-antlib/scm/src/com/nokia/maven/scm/provider/hg/command/log/HgChangeLogCommand.java
buildframework/helium/external/helium-antlib/scm/src/com/nokia/maven/scm/provider/hg/command/log/HgChangeLogConsumer.java
buildframework/helium/external/helium-antlib/scm/src/com/nokia/maven/scm/provider/hg/command/pull/HgPullCommand.java
buildframework/helium/external/helium-antlib/scm/src/com/nokia/maven/scm/provider/hg/command/remove/HgRemoveCommand.java
buildframework/helium/external/helium-antlib/scm/src/com/nokia/maven/scm/provider/hg/command/tag/HgTagCommand.java
buildframework/helium/external/helium-antlib/scm/src/com/nokia/maven/scm/provider/hg/command/tags/HgTagsCommand.java
buildframework/helium/external/helium-antlib/scm/src/com/nokia/maven/scm/provider/hg/command/tags/HgTagsConsumer.java
buildframework/helium/external/helium-antlib/scm/src/com/nokia/maven/scm/provider/hg/command/update/HgUpdateCommand.java
buildframework/helium/external/helium-antlib/scm/src/com/nokia/maven/scm/provider/hg/repository/HgScmProviderRepository.java
buildframework/helium/external/helium-antlib/scm/tests/abstract_unittest_scmtask.ant.xml
buildframework/helium/external/helium-antlib/scm/tests/bld.sh
buildframework/helium/external/helium-antlib/scm/tests/build.bat
buildframework/helium/external/helium-antlib/scm/tests/build.xml
buildframework/helium/external/helium-antlib/scm/tests/data/hg_test1.zip
buildframework/helium/external/helium-antlib/scm/tests/data/hg_test2.zip
buildframework/helium/external/helium-antlib/scm/tests/data/hg_test3.zip
buildframework/helium/external/helium-antlib/scm/tests/data/svn_test1.zip
buildframework/helium/external/helium-antlib/scm/tests/test_hg_scmtask.ant.xml
buildframework/helium/external/helium-antlib/settings/ivysettings.xml
buildframework/helium/external/helium-antlib/signaling/bld.bat
buildframework/helium/external/helium-antlib/signaling/build.xml
buildframework/helium/external/helium-antlib/signaling/demo/build.bat
buildframework/helium/external/helium-antlib/signaling/demo/build.xml
buildframework/helium/external/helium-antlib/signaling/src/com/nokia/helium/signal/Notifier.java
buildframework/helium/external/helium-antlib/signaling/src/com/nokia/helium/signal/SignalExceptionMessage.java
buildframework/helium/external/helium-antlib/signaling/src/com/nokia/helium/signal/SignalNeverFailMessage.java
buildframework/helium/external/helium-antlib/signaling/src/com/nokia/helium/signal/SignalStatus.java
buildframework/helium/external/helium-antlib/signaling/src/com/nokia/helium/signal/SignalStatusList.java
buildframework/helium/external/helium-antlib/signaling/src/com/nokia/helium/signal/ant/SignalList.java
buildframework/helium/external/helium-antlib/signaling/src/com/nokia/helium/signal/ant/SignalListener.java
buildframework/helium/external/helium-antlib/signaling/src/com/nokia/helium/signal/ant/antlib.xml
buildframework/helium/external/helium-antlib/signaling/src/com/nokia/helium/signal/ant/conditions/DeferredFailureCondition.java
buildframework/helium/external/helium-antlib/signaling/src/com/nokia/helium/signal/ant/helium.antlib.xml
buildframework/helium/external/helium-antlib/signaling/src/com/nokia/helium/signal/ant/taskdefs/ClearDeferredFailures.java
buildframework/helium/external/helium-antlib/signaling/src/com/nokia/helium/signal/ant/taskdefs/Signal.java
buildframework/helium/external/helium-antlib/signaling/src/com/nokia/helium/signal/ant/types/EMAILNotifier.java
buildframework/helium/external/helium-antlib/signaling/src/com/nokia/helium/signal/ant/types/ExecuteTaskNotifier.java
buildframework/helium/external/helium-antlib/signaling/src/com/nokia/helium/signal/ant/types/FailBuildEnum.java
buildframework/helium/external/helium-antlib/signaling/src/com/nokia/helium/signal/ant/types/LogSourceList.java
buildframework/helium/external/helium-antlib/signaling/src/com/nokia/helium/signal/ant/types/NotifierInput.java
buildframework/helium/external/helium-antlib/signaling/src/com/nokia/helium/signal/ant/types/SMSNotifier.java
buildframework/helium/external/helium-antlib/signaling/src/com/nokia/helium/signal/ant/types/SignalConfig.java
buildframework/helium/external/helium-antlib/signaling/src/com/nokia/helium/signal/ant/types/SignalExceptionHandler.java
buildframework/helium/external/helium-antlib/signaling/src/com/nokia/helium/signal/ant/types/SignalInput.java
buildframework/helium/external/helium-antlib/signaling/src/com/nokia/helium/signal/ant/types/SignalListenerConfig.java
buildframework/helium/external/helium-antlib/signaling/src/com/nokia/helium/signal/ant/types/SignalNotifierInput.java
buildframework/helium/external/helium-antlib/signaling/src/com/nokia/helium/signal/ant/types/SignalNotifierList.java
buildframework/helium/external/helium-antlib/signaling/src/com/nokia/helium/signal/ant/types/SignalStatusDef.java
buildframework/helium/external/helium-antlib/signaling/src/com/nokia/helium/signal/ant/types/TargetCondition.java
buildframework/helium/external/helium-antlib/signaling/src/com/nokia/helium/signal/ant/types/XmlSource.java
buildframework/helium/external/helium-antlib/signaling/src/templates/email.html.ftl
buildframework/helium/external/helium-antlib/signaling/src/templates/email_default.html.ftl
buildframework/helium/external/helium-antlib/signaling/src/templates/email_subject.txt.ftl
buildframework/helium/external/helium-antlib/signaling/tests/bld.sh
buildframework/helium/external/helium-antlib/signaling/tests/build.bat
buildframework/helium/external/helium-antlib/signaling/tests/build.xml
buildframework/helium/external/helium-antlib/signaling/tests/src/com/nokia/helium/signaling/tests/TestEmailSender.java
buildframework/helium/external/helium-antlib/signaling/tests/test_signal/data/test.log_status.html
buildframework/helium/external/helium-antlib/signaling/tests/test_signal/email.html.ftl
buildframework/helium/external/helium-antlib/signaling/tests/test_signal/example.html.ftl
buildframework/helium/external/helium-antlib/signaling/tests/test_signal/signaling_test.ant.xml
buildframework/helium/external/helium-antlib/signaling/tests/test_signal/test_hasdeferredfailure.ant.xml
buildframework/helium/external/helium-antlib/signaling/tests/test_signal/test_signaling_config.ant.xml
buildframework/helium/external/helium-antlib/signaling/tests/test_signal/test_signaltask.ant.xml
buildframework/helium/external/helium-antlib/sysdef/bld.bat
buildframework/helium/external/helium-antlib/sysdef/build.xml
buildframework/helium/external/helium-antlib/sysdef/demo/build.bat
buildframework/helium/external/helium-antlib/sysdef/demo/build.xml
buildframework/helium/external/helium-antlib/sysdef/demo/data/layer1/package1/package_definition.xml
buildframework/helium/external/helium-antlib/sysdef/demo/data/layer1/package2/package_definition.xml
buildframework/helium/external/helium-antlib/sysdef/demo/data/layer2/package3/package_definition.xml
buildframework/helium/external/helium-antlib/sysdef/demo/data/layer2/package4/package_definition.xml
buildframework/helium/external/helium-antlib/sysdef/demo/data/layer3/package5/package_definition.xml
buildframework/helium/external/helium-antlib/sysdef/demo/data/root/system_definition_layer1.xml
buildframework/helium/external/helium-antlib/sysdef/demo/data/root/system_definition_layer2.xml
buildframework/helium/external/helium-antlib/sysdef/demo/data/root/system_definition_layer3.xml
buildframework/helium/external/helium-antlib/sysdef/demo/data/root/system_model.xml
buildframework/helium/external/helium-antlib/sysdef/demo/data/sf/os/buildtools/bldsystemtools/buildsystemtools/filter-module.xsl
buildframework/helium/external/helium-antlib/sysdef/demo/data/sf/os/buildtools/bldsystemtools/buildsystemtools/filtersysdef.xsl
buildframework/helium/external/helium-antlib/sysdef/demo/data/sf/os/buildtools/bldsystemtools/buildsystemtools/joinsysdef-module.xsl
buildframework/helium/external/helium-antlib/sysdef/demo/data/sf/os/buildtools/bldsystemtools/buildsystemtools/joinsysdef.xsl
buildframework/helium/external/helium-antlib/sysdef/demo/data/sf/os/buildtools/bldsystemtools/buildsystemtools/mergesysdef-module.xsl
buildframework/helium/external/helium-antlib/sysdef/demo/data/sf/os/buildtools/bldsystemtools/buildsystemtools/mergesysdef.xsl
buildframework/helium/external/helium-antlib/sysdef/demo/data/sf/os/buildtools/bldsystemtools/buildsystemtools/sysdefdowngrade.xsl
buildframework/helium/external/helium-antlib/sysdef/lib/serializer.jar
buildframework/helium/external/helium-antlib/sysdef/lib/xalan.jar
buildframework/helium/external/helium-antlib/sysdef/src/com/nokia/helium/sysdef/ant/antlib.xml
buildframework/helium/external/helium-antlib/sysdef/src/com/nokia/helium/sysdef/ant/helium.antlib.xml
buildframework/helium/external/helium-antlib/sysdef/src/com/nokia/helium/sysdef/ant/taskdefs/AbstractSydefTask.java
buildframework/helium/external/helium-antlib/sysdef/src/com/nokia/helium/sysdef/ant/taskdefs/DowngradeTask.java
buildframework/helium/external/helium-antlib/sysdef/src/com/nokia/helium/sysdef/ant/taskdefs/JoinTask.java
buildframework/helium/external/helium-antlib/sysdef/src/com/nokia/helium/sysdef/ant/taskdefs/MergeTask.java
buildframework/helium/external/helium-antlib/sysdef/tests/antunit/test_downgrade_sysdef.ant.xml
buildframework/helium/external/helium-antlib/sysdef/tests/antunit/test_join_sysdef.ant.xml
buildframework/helium/external/helium-antlib/sysdef/tests/antunit/test_merge_sysdef.ant.xml
buildframework/helium/external/helium-antlib/sysdef/tests/bld.sh
buildframework/helium/external/helium-antlib/sysdef/tests/build.bat
buildframework/helium/external/helium-antlib/sysdef/tests/build.xml
buildframework/helium/external/helium-antlib/test-macros.ant.xml
buildframework/helium/external/jep_1.6_2.5/README
buildframework/helium/external/jep_1.6_2.5/console.py
buildframework/helium/external/jep_1.6_2.5/jep.dll
buildframework/helium/external/jep_1.6_2.5/jep.jar
buildframework/helium/external/jep_1.6_2.5/libjep.so
buildframework/helium/external/jep_1.6_2.5/msvcr71.dll
buildframework/helium/external/jep_1.6_2.5/msvcrt.dll
buildframework/helium/external/python/lib/2.5/site.py
buildframework/helium/external/python/lib/2.6/site.py
buildframework/helium/external/python/lib/common/pkg_resources.py
buildframework/helium/external/python/lib/common/site.py
buildframework/helium/external/python/lib/linux/site.py
buildframework/helium/helium.ant.xml
buildframework/helium/helium_preinclude.ant.xml
buildframework/helium/hlm
buildframework/helium/hlm-jar.bat
buildframework/helium/hlm.bat
buildframework/helium/precompile_py.bat
buildframework/helium/tests/data/PythonTest.py
buildframework/helium/tests/data/bom/bom_validate_101_bom.xml
buildframework/helium/tests/data/bom/bom_validate_101_bom_delta.xml
buildframework/helium/tests/data/bom/bom_validate_102_bom.xml
buildframework/helium/tests/data/bom/bom_validate_102_bom_delta.xml
buildframework/helium/tests/data/bom/bom_validate_103_bom.xml
buildframework/helium/tests/data/bom/bom_validate_103_bom_delta.xml
buildframework/helium/tests/data/bom/bom_validate_104_bom_delta.xml
buildframework/helium/tests/data/bom/build_model_bom.xml
buildframework/helium/tests/data/bsf/ARM11.bsf
buildframework/helium/tests/data/bsf/ARM11_arm.bsf
buildframework/helium/tests/data/bsf/ARM926_arm.bsf
buildframework/helium/tests/data/bsf/ARM9E.bsf
buildframework/helium/tests/data/bsf/armv6.bsf
buildframework/helium/tests/data/bsf/armv6_abiv1.bsf
buildframework/helium/tests/data/bsf/config.bsf
buildframework/helium/tests/data/bsf/product.bsf
buildframework/helium/tests/data/bsf/variant.bsf
buildframework/helium/tests/data/build/io/abld_what.log
buildframework/helium/tests/data/build/io/test_rofs.log
buildframework/helium/tests/data/build/io/test_rom.log
buildframework/helium/tests/data/build/metadata/abld_what_db_test.log
buildframework/helium/tests/data/comments_test.bat
buildframework/helium/tests/data/comments_test.cpp
buildframework/helium/tests/data/comments_test.h
buildframework/helium/tests/data/comments_test.hrh
buildframework/helium/tests/data/comments_test.iby
buildframework/helium/tests/data/comments_test.inf
buildframework/helium/tests/data/comments_test.java
buildframework/helium/tests/data/comments_test.mk
buildframework/helium/tests/data/comments_test.mmp
buildframework/helium/tests/data/comments_test.pl
buildframework/helium/tests/data/comments_test.py
buildframework/helium/tests/data/comments_test.txt
buildframework/helium/tests/data/comments_test.xml
buildframework/helium/tests/data/comments_test1.cmd
buildframework/helium/tests/data/comments_test2.cmd
buildframework/helium/tests/data/data_model_test.xml
buildframework/helium/tests/data/data_model_validation_group_test.xml
buildframework/helium/tests/data/data_model_validation_property_test.xml
buildframework/helium/tests/data/example_corernd.iconfig.xml
buildframework/helium/tests/data/flash_config/rom_image_config_test.xml
buildframework/helium/tests/data/help_delivery/Data/xhtml/01/subdir/03/test.txt
buildframework/helium/tests/data/help_delivery/Data/xhtml/01/subdir/sample.txt
buildframework/helium/tests/data/help_delivery/Data/xhtml/02/subdir/sample.txt
buildframework/helium/tests/data/help_delivery/Data/xhtml/03_2G/sample.txt
buildframework/helium/tests/data/help_delivery/Data/xhtml/03_3G/sample.txt
buildframework/helium/tests/data/help_delivery/Data/xhtml/theme/subdir/sample.txt
buildframework/helium/tests/data/ido/ido_project/ido_project/classicui/layers.sysdef.xml
buildframework/helium/tests/data/ido/ido_project/ido_project/myapp/layers.sysdef.xml
buildframework/helium/tests/data/ido/ido_project/ido_project/xmlui/layers.sysdef.xml
buildframework/helium/tests/data/iqrf/imaker_5250.xml
buildframework/helium/tests/data/log2xml_failure.log
buildframework/helium/tests/data/log2xml_test.log
buildframework/helium/tests/data/minibuild_ido_sbs_0.0.1_metadata_db.zip
buildframework/helium/tests/data/packageiad/epoc32/tools/makesis.exe
buildframework/helium/tests/data/packageiad/epoc32/tools/signsis.exe
buildframework/helium/tests/data/packageiad/layers.sysdef.xml
buildframework/helium/tests/data/packageiad/sis/testPackage/depends.xml
buildframework/helium/tests/data/packageiad/sis/testPackage/sisinfo.xml
buildframework/helium/tests/data/packageiad/sis/testPackage/testPackage.sis
buildframework/helium/tests/data/pythonTest2.py
buildframework/helium/tests/data/symrec/GRACE/service/product/release_1_001/release_metadata.xml
buildframework/helium/tests/data/symrec/GRACE/service/product/release_1_001/release_metadata_1.xml
buildframework/helium/tests/data/symrec/GRACE/service/product/release_1_001/sp1.zip
buildframework/helium/tests/data/symrec/GRACE/service/product/release_1_001/specialInstructions.xml
buildframework/helium/tests/data/symrec/GRACE/service/product/release_1_002/release_metadata.xml
buildframework/helium/tests/data/symrec/GRACE/service/product/release_1_002/sp2.zip
buildframework/helium/tests/data/symrec/GRACE/service/product/release_1_002/specialInstructions.xml
buildframework/helium/tests/data/symrec/GRACE/service/product/release_2/release_metadata.xml
buildframework/helium/tests/data/symrec/GRACE/service/product/release_2/test1.zip
buildframework/helium/tests/data/symrec/GRACE/service/product/release_3/release_metadata.xml
buildframework/helium/tests/data/symrec/GRACE/service/product/release_3/test1.zip
buildframework/helium/tests/data/symrec/GRACE/service/product/release_4/TICKLER
buildframework/helium/tests/data/symrec/GRACE/service/product/release_4/release_metadata.xml
buildframework/helium/tests/data/symrec/GRACE/service/product/release_4/test1.zip
buildframework/helium/tests/data/symrec/GRACE/service/product/release_5/HYDRASTATUS.xml
buildframework/helium/tests/data/symrec/GRACE/service/product/release_5/release_metadata.xml
buildframework/helium/tests/data/symrec/GRACE/service/product/release_5/test1.zip
buildframework/helium/tests/data/symrec/GRACE/service/product/release_6/HYDRASTATUS.xml
buildframework/helium/tests/data/symrec/GRACE/service/product/release_6/release_metadata.xml
buildframework/helium/tests/data/symrec/GRACE/service/product/release_6/test1.zip
buildframework/helium/tests/data/symrec/generated_release_metadata.xml
buildframework/helium/tests/data/symrec/merge/main_metadata_1.xml
buildframework/helium/tests/data/symrec/merge/main_metadata_2.xml
buildframework/helium/tests/data/symrec/merge/main_metadata_3.xml
buildframework/helium/tests/data/symrec/override/one/release_metadata.xml
buildframework/helium/tests/data/symrec/override/several/release_metadata.xml
buildframework/helium/tests/data/symrec/override/several/release_metadata_1.xml
buildframework/helium/tests/data/symrec/override/several/release_metadata_2.xml
buildframework/helium/tests/data/symrec/revision_release_metadata.xml
buildframework/helium/tests/data/sysdef2make/SDF.xml
buildframework/helium/tests/data/test_ccmwaid.inf
buildframework/helium/tests/data/test_delivery.xml
buildframework/helium/tests/data/test_prep.xml
buildframework/helium/tests/data/validate_overlay/delivery.xml.parsed
buildframework/helium/tests/data/validate_overlay/new_delivery/delivery.xml.parsed
buildframework/helium/tests/data/validate_overlay/new_delivery/prep.xml.parsed
buildframework/helium/tests/data/validate_overlay/prep.xml.parsed
buildframework/helium/tests/data/zip_archive_test.cfg.xml
buildframework/helium/tests/data/zip_checkDrive_test.cfg.xml
buildframework/helium/tests/data/zip_checkDrive_test.cfg.xml.parsed
buildframework/helium/tests/minibuilds/ats/build.xml
buildframework/helium/tests/minibuilds/ats/matti/build.xml
buildframework/helium/tests/minibuilds/compile/build.sbsinput.ant.xml
buildframework/helium/tests/minibuilds/compile/build.xml
buildframework/helium/tests/minibuilds/compile/distribution.policy.extended_for_sf.id_status.csv
buildframework/helium/tests/minibuilds/ido-sbs-coverity/build.sbsinput.ant.xml
buildframework/helium/tests/minibuilds/ido-sbs-coverity/build.xml
buildframework/helium/tests/minibuilds/ido-sbs-coverity/common.sbsinput.ant.xml
buildframework/helium/tests/minibuilds/ido-sbs-coverity/hlm.bat
buildframework/helium/tests/minibuilds/ido-sbs/build.sbsinput.ant.xml
buildframework/helium/tests/minibuilds/ido/build.xml
buildframework/helium/tests/minibuilds/imaker/build.xml
buildframework/helium/tests/minibuilds/imaker/config/image_conf_buildinfo.mk.ftl
buildframework/helium/tests/minibuilds/qt/build.xml
buildframework/helium/tools/common/bin/get_gscm_info.pl
buildframework/helium/tools/common/common.ant.xml
buildframework/helium/tools/common/common.antlib.xml
buildframework/helium/tools/common/docs.ant.xml
buildframework/helium/tools/common/helium_docs.ant.xml
buildframework/helium/tools/common/java/lib/nokia_ant.jar
buildframework/helium/tools/common/java/src/com/nokia/ant/Database.java
buildframework/helium/tools/common/java/src/com/nokia/ant/HeliumLogger.java
buildframework/helium/tools/common/java/src/com/nokia/ant/antlib.xml
buildframework/helium/tools/common/java/src/com/nokia/ant/filters/PrettyPrintXmlFilter.java
buildframework/helium/tools/common/java/src/com/nokia/ant/listener/internaldata/AssertNode.java
buildframework/helium/tools/common/java/src/com/nokia/ant/listener/internaldata/BuildNode.java
buildframework/helium/tools/common/java/src/com/nokia/ant/listener/internaldata/DataNode.java
buildframework/helium/tools/common/java/src/com/nokia/ant/listener/internaldata/EmailDataSender.java
buildframework/helium/tools/common/java/src/com/nokia/ant/listener/internaldata/EndLessStack.java
buildframework/helium/tools/common/java/src/com/nokia/ant/listener/internaldata/Listener.java
buildframework/helium/tools/common/java/src/com/nokia/ant/listener/internaldata/TargetNode.java
buildframework/helium/tools/common/java/src/com/nokia/ant/listener/internaldata/TreeDumper.java
buildframework/helium/tools/common/java/src/com/nokia/ant/listener/internaldata/XMLRenderer.java
buildframework/helium/tools/common/java/src/com/nokia/ant/taskdefs/AbstractScmBaseTask.java
buildframework/helium/tools/common/java/src/com/nokia/ant/taskdefs/AntLintTask.java
buildframework/helium/tools/common/java/src/com/nokia/ant/taskdefs/DatabaseTask.java
buildframework/helium/tools/common/java/src/com/nokia/ant/taskdefs/GetValueFromVariableSet.java
buildframework/helium/tools/common/java/src/com/nokia/ant/taskdefs/HlmAssertMessage.java
buildframework/helium/tools/common/java/src/com/nokia/ant/taskdefs/LDAP.java
buildframework/helium/tools/common/java/src/com/nokia/ant/taskdefs/LogRecorderTask.java
buildframework/helium/tools/common/java/src/com/nokia/ant/taskdefs/PythonTask.java
buildframework/helium/tools/common/java/src/com/nokia/ant/taskdefs/RBTTask.java
buildframework/helium/tools/common/java/src/com/nokia/ant/taskdefs/RetryTask.java
buildframework/helium/tools/common/java/src/com/nokia/ant/types/LogFilter.java
buildframework/helium/tools/common/java/src/com/nokia/ant/types/LogFilterSet.java
buildframework/helium/tools/common/java/src/com/nokia/ant/types/SBSMakeOptions.java
buildframework/helium/tools/common/java/src/com/nokia/ant/types/Variable.java
buildframework/helium/tools/common/java/src/com/nokia/ant/types/VariableSet.java
buildframework/helium/tools/common/java/src/com/nokia/ant/types/ccm/Session.java
buildframework/helium/tools/common/java/src/com/nokia/ant/types/ccm/SessionSet.java
buildframework/helium/tools/common/java/src/com/nokia/ant/types/ccm/Task.java
buildframework/helium/tools/common/java/src/com/nokia/tools/ToolsProcessException.java
buildframework/helium/tools/common/java/src/com/nokia/tools/cmt/CMTTool.java
buildframework/helium/tools/common/java/src/com/nokia/tools/configuration/CONFIGURATIONTool.java
buildframework/helium/tools/common/libs.ant.xml
buildframework/helium/tools/common/logging.ant.xml
buildframework/helium/tools/common/packages/ISIS/Assertion.pm
buildframework/helium/tools/common/packages/ISIS/Build.pm
buildframework/helium/tools/common/packages/ISIS/BuildStat/Statistics.pm
buildframework/helium/tools/common/packages/ISIS/Cellmo.pm
buildframework/helium/tools/common/packages/ISIS/CppManip.pm
buildframework/helium/tools/common/packages/ISIS/ECloud.pm
buildframework/helium/tools/common/packages/ISIS/EmbeddedScanLog.pm
buildframework/helium/tools/common/packages/ISIS/EmbeddedXMLLog.pm
buildframework/helium/tools/common/packages/ISIS/ErrorDefs.pm
buildframework/helium/tools/common/packages/ISIS/FileManip.pm
buildframework/helium/tools/common/packages/ISIS/GenBuildTools.pm
buildframework/helium/tools/common/packages/ISIS/GenXML2.pm
buildframework/helium/tools/common/packages/ISIS/HtmlManip.pm
buildframework/helium/tools/common/packages/ISIS/HttpServer.pm
buildframework/helium/tools/common/packages/ISIS/IBUSAL.pm
buildframework/helium/tools/common/packages/ISIS/Logger2.pm
buildframework/helium/tools/common/packages/ISIS/Logger3.pm
buildframework/helium/tools/common/packages/ISIS/Mailer.pm
buildframework/helium/tools/common/packages/ISIS/Makefile.pm
buildframework/helium/tools/common/packages/ISIS/NAB.pm
buildframework/helium/tools/common/packages/ISIS/OUT/Box1.pm
buildframework/helium/tools/common/packages/ISIS/OUT/Debug.pm
buildframework/helium/tools/common/packages/ISIS/OUT/Image.pm
buildframework/helium/tools/common/packages/ISIS/OUT/Log/Document.pm
buildframework/helium/tools/common/packages/ISIS/OUT/Log/Footer.pm
buildframework/helium/tools/common/packages/ISIS/OUT/Log/Header.pm
buildframework/helium/tools/common/packages/ISIS/OUT/Log/LogoHeader.pm
buildframework/helium/tools/common/packages/ISIS/OUT/Log/MainContent.pm
buildframework/helium/tools/common/packages/ISIS/OUT/Log/Summary.pm
buildframework/helium/tools/common/packages/ISIS/OUT/Log/SummaryContent.pm
buildframework/helium/tools/common/packages/ISIS/OUT/Node.pm
buildframework/helium/tools/common/packages/ISIS/OUT/Outputer.pm
buildframework/helium/tools/common/packages/ISIS/OUT/RawText.pm
buildframework/helium/tools/common/packages/ISIS/OUT/Separator.pm
buildframework/helium/tools/common/packages/ISIS/OUT/Table2D.pm
buildframework/helium/tools/common/packages/ISIS/OUT/Text.pm
buildframework/helium/tools/common/packages/ISIS/OUT/Title1.pm
buildframework/helium/tools/common/packages/ISIS/OutputParser.pm
buildframework/helium/tools/common/packages/ISIS/Registry.pm
buildframework/helium/tools/common/packages/ISIS/ScanLog.pm
buildframework/helium/tools/common/packages/ISIS/ScanLogTBS.pm
buildframework/helium/tools/common/packages/ISIS/XmlManip.pm
buildframework/helium/tools/common/packages/ISIS/genxml2.pl
buildframework/helium/tools/common/packages/ISIS/xml2mak.pl
buildframework/helium/tools/common/python/lib/CreateZipInput.py
buildframework/helium/tools/common/python/lib/ant.py
buildframework/helium/tools/common/python/lib/archive/__init__.py
buildframework/helium/tools/common/python/lib/archive/builders.py
buildframework/helium/tools/common/python/lib/archive/mappers.py
buildframework/helium/tools/common/python/lib/archive/scanners.py
buildframework/helium/tools/common/python/lib/archive/selectors.py
buildframework/helium/tools/common/python/lib/archive/tools.py
buildframework/helium/tools/common/python/lib/ats3/__init__.py
buildframework/helium/tools/common/python/lib/ats3/aste.py
buildframework/helium/tools/common/python/lib/ats3/aste_template.xml
buildframework/helium/tools/common/python/lib/ats3/ats4_template.xml
buildframework/helium/tools/common/python/lib/ats3/ats_template.xml
buildframework/helium/tools/common/python/lib/ats3/atsconfigparser.py
buildframework/helium/tools/common/python/lib/ats3/dropgenerator.py
buildframework/helium/tools/common/python/lib/ats3/matti/MattiDrops.py
buildframework/helium/tools/common/python/lib/ats3/matti/__init__.py
buildframework/helium/tools/common/python/lib/ats3/matti/template/matti_demo.xml
buildframework/helium/tools/common/python/lib/ats3/parsers.py
buildframework/helium/tools/common/python/lib/ats3/templates/ats4_macros.xml
buildframework/helium/tools/common/python/lib/ats3/testconfigurator.py
buildframework/helium/tools/common/python/lib/atsant.py
buildframework/helium/tools/common/python/lib/bomtofile.py
buildframework/helium/tools/common/python/lib/bsf.py
buildframework/helium/tools/common/python/lib/build/__init__.py
buildframework/helium/tools/common/python/lib/build/ec/__init__.py
buildframework/helium/tools/common/python/lib/build/ec/history.py
buildframework/helium/tools/common/python/lib/build/io.py
buildframework/helium/tools/common/python/lib/build/model.py
buildframework/helium/tools/common/python/lib/buildmanagement.py
buildframework/helium/tools/common/python/lib/buildtools.py
buildframework/helium/tools/common/python/lib/ccm/__init__.py
buildframework/helium/tools/common/python/lib/ccm/extra.py
buildframework/helium/tools/common/python/lib/ccmutil.py
buildframework/helium/tools/common/python/lib/comments.py
buildframework/helium/tools/common/python/lib/compilation.py
buildframework/helium/tools/common/python/lib/configuration.py
buildframework/helium/tools/common/python/lib/configuration_model.py
buildframework/helium/tools/common/python/lib/cpythontest/__init__.py
buildframework/helium/tools/common/python/lib/cpythontest/test_archive.py
buildframework/helium/tools/common/python/lib/cpythontest/test_ats3.py
buildframework/helium/tools/common/python/lib/cpythontest/test_ats3_aste.py
buildframework/helium/tools/common/python/lib/cpythontest/test_ats4.py
buildframework/helium/tools/common/python/lib/cpythontest/test_ats4_aste.py
buildframework/helium/tools/common/python/lib/cpythontest/test_atsant.py
buildframework/helium/tools/common/python/lib/cpythontest/test_atsconfigparser.py
buildframework/helium/tools/common/python/lib/cpythontest/test_atsconfiguration.py
buildframework/helium/tools/common/python/lib/cpythontest/test_buildmodel.py
buildframework/helium/tools/common/python/lib/cpythontest/test_ccm.py
buildframework/helium/tools/common/python/lib/cpythontest/test_comments.py
buildframework/helium/tools/common/python/lib/cpythontest/test_configuration_model.py
buildframework/helium/tools/common/python/lib/cpythontest/test_dependancygraph.py
buildframework/helium/tools/common/python/lib/cpythontest/test_fileutils.py
buildframework/helium/tools/common/python/lib/cpythontest/test_iqrf.py
buildframework/helium/tools/common/python/lib/cpythontest/test_logger.py
buildframework/helium/tools/common/python/lib/cpythontest/test_matti.py
buildframework/helium/tools/common/python/lib/cpythontest/test_packageiad.py
buildframework/helium/tools/common/python/lib/cpythontest/test_parsers.py
buildframework/helium/tools/common/python/lib/cpythontest/test_policy_validator.py
buildframework/helium/tools/common/python/lib/cpythontest/test_relnotes.py
buildframework/helium/tools/common/python/lib/cpythontest/test_sis.py
buildframework/helium/tools/common/python/lib/cpythontest/test_timeout_launcher.py
buildframework/helium/tools/common/python/lib/cpythontest/test_vbaconf.py
buildframework/helium/tools/common/python/lib/ctc.py
buildframework/helium/tools/common/python/lib/dataurl.py
buildframework/helium/tools/common/python/lib/delta_zip.py
buildframework/helium/tools/common/python/lib/dependancygraph.py
buildframework/helium/tools/common/python/lib/docs.py
buildframework/helium/tools/common/python/lib/escapeddict.py
buildframework/helium/tools/common/python/lib/fileutils.py
buildframework/helium/tools/common/python/lib/flash_config.py
buildframework/helium/tools/common/python/lib/helium/__init__.py
buildframework/helium/tools/common/python/lib/helium/documentation.py
buildframework/helium/tools/common/python/lib/helium/logger.py
buildframework/helium/tools/common/python/lib/helium/output/__init__.py
buildframework/helium/tools/common/python/lib/helium/output/widgets.py
buildframework/helium/tools/common/python/lib/helium/outputer.py
buildframework/helium/tools/common/python/lib/heliumlogging.py
buildframework/helium/tools/common/python/lib/ido.py
buildframework/helium/tools/common/python/lib/idoprep.py
buildframework/helium/tools/common/python/lib/imaker/__init__.py
buildframework/helium/tools/common/python/lib/imaker/ant.py
buildframework/helium/tools/common/python/lib/imaker/api.py
buildframework/helium/tools/common/python/lib/imaker/ecore.py
buildframework/helium/tools/common/python/lib/imaker/iqrf.py
buildframework/helium/tools/common/python/lib/integration/__init__.py
buildframework/helium/tools/common/python/lib/integration/ant.py
buildframework/helium/tools/common/python/lib/integration/quality.py
buildframework/helium/tools/common/python/lib/localisation.py
buildframework/helium/tools/common/python/lib/log2xml.py
buildframework/helium/tools/common/python/lib/minidomamara.py
buildframework/helium/tools/common/python/lib/nokia/__init__.py
buildframework/helium/tools/common/python/lib/nokia/gscm.py
buildframework/helium/tools/common/python/lib/nokia/nokiaccm.py
buildframework/helium/tools/common/python/lib/pathaddition/__init__.py
buildframework/helium/tools/common/python/lib/pathaddition/match.py
buildframework/helium/tools/common/python/lib/pathaddition/relative.py
buildframework/helium/tools/common/python/lib/preparation.py
buildframework/helium/tools/common/python/lib/rom.py
buildframework/helium/tools/common/python/lib/rtfutils.py
buildframework/helium/tools/common/python/lib/sis.py
buildframework/helium/tools/common/python/lib/symbian/__init__.py
buildframework/helium/tools/common/python/lib/symbian/log.py
buildframework/helium/tools/common/python/lib/symrec.py
buildframework/helium/tools/common/python/lib/sysdef/__init__.py
buildframework/helium/tools/common/python/lib/sysdef/api.py
buildframework/helium/tools/common/python/lib/sysdef/io.py
buildframework/helium/tools/common/python/lib/test/__init__.py
buildframework/helium/tools/common/python/lib/test/test_ant.py
buildframework/helium/tools/common/python/lib/test/test_bsf.py
buildframework/helium/tools/common/python/lib/test/test_build_io.py
buildframework/helium/tools/common/python/lib/test/test_buildtools.py
buildframework/helium/tools/common/python/lib/test/test_ccm_4pn.py
buildframework/helium/tools/common/python/lib/test/test_ccm_object.py
buildframework/helium/tools/common/python/lib/test/test_ccm_results.py
buildframework/helium/tools/common/python/lib/test/test_configuration.py
buildframework/helium/tools/common/python/lib/test/test_ctc.py
buildframework/helium/tools/common/python/lib/test/test_deltazip.py
buildframework/helium/tools/common/python/lib/test/test_escapeddict.py
buildframework/helium/tools/common/python/lib/test/test_filter_heliumlog.py
buildframework/helium/tools/common/python/lib/test/test_filter_metadatalog.py
buildframework/helium/tools/common/python/lib/test/test_flash_config.py
buildframework/helium/tools/common/python/lib/test/test_freedisk.py
buildframework/helium/tools/common/python/lib/test/test_gscm.py
buildframework/helium/tools/common/python/lib/test/test_help32.py
buildframework/helium/tools/common/python/lib/test/test_ido.py
buildframework/helium/tools/common/python/lib/test/test_log2xml.py
buildframework/helium/tools/common/python/lib/test/test_misc.py
buildframework/helium/tools/common/python/lib/test/test_path_match.py
buildframework/helium/tools/common/python/lib/test/test_pathaddition_relative.py
buildframework/helium/tools/common/python/lib/test/test_rom.py
buildframework/helium/tools/common/python/lib/test/test_sbs.py
buildframework/helium/tools/common/python/lib/test/test_searchnextdrive.py
buildframework/helium/tools/common/python/lib/test/test_session_provider.py
buildframework/helium/tools/common/python/lib/test/test_symbian_log.py
buildframework/helium/tools/common/python/lib/test/test_symrec.py
buildframework/helium/tools/common/python/lib/test/test_sysdef.py
buildframework/helium/tools/common/python/lib/test/test_threadpool.py
buildframework/helium/tools/common/python/lib/test/test_unittestadditions.py
buildframework/helium/tools/common/python/lib/unittestadditions.py
buildframework/helium/tools/common/python/lib/validateoverlay.py
buildframework/helium/tools/common/python/lib/vbaconf/__init__.py
buildframework/helium/tools/common/python/lib/vbaconf/new_delivery.py
buildframework/helium/tools/common/python/lib/version.py
buildframework/helium/tools/common/python/lib/virtualbuildarea.py
buildframework/helium/tools/common/python/lib/xmlhelper.py
buildframework/helium/tools/common/python/scripts/filter_heliumlog.py
buildframework/helium/tools/common/python/scripts/filter_metadatalog.py
buildframework/helium/tools/common/python/scripts/sbslogscanner.py
buildframework/helium/tools/common/python/scripts/sbsscanlog.py
buildframework/helium/tools/common/python/scripts/sbsscanlogmetadata.py
buildframework/helium/tools/common/python/scripts/scripttests/__init__.py
buildframework/helium/tools/common/python/scripts/scripttests/test_filter_metadatalog.py
buildframework/helium/tools/common/python/scripts/scripttests/test_sbs.py
buildframework/helium/tools/common/python/scripts/searchnextdrive.py
buildframework/helium/tools/common/python/scripts/test_scanlog.ant.xml
buildframework/helium/tools/common/python/scripts/timeout_launcher.py
buildframework/helium/tools/common/schema/ant.xsd
buildframework/helium/tools/common/schema/helium_ant.xsd
buildframework/helium/tools/common/templates/coveragerecord.html.ftl
buildframework/helium/tools/common/templates/coveragerecord.txt.ftl
buildframework/helium/tools/common/templates/coverity/coverity.summary.html.ftl
buildframework/helium/tools/common/templates/coverity/coverity.summary.xml.ftl
buildframework/helium/tools/common/templates/diamonds/coverity.xml.ftl
buildframework/helium/tools/common/templates/diamonds/diamonds_locations.ftl
buildframework/helium/tools/common/templates/diamonds/diamonds_macro.ftl
buildframework/helium/tools/common/templates/diamonds/faults_metadata_orm.ftl
buildframework/helium/tools/common/templates/ido/ido-ant-copy.xml.ftl
buildframework/helium/tools/common/templates/ido/ido-robot-zip.ant.xml.ftl
buildframework/helium/tools/common/templates/imaker/build_imaker_roms.ant.xml.ftl
buildframework/helium/tools/common/templates/imaker/build_imaker_roms.mk.ftl
buildframework/helium/tools/common/templates/imaker/build_imaker_roms_signing.mk.ftl
buildframework/helium/tools/common/templates/log/bt_email.html.ftl
buildframework/helium/tools/common/templates/log/bt_email_subject.txt.ftl
buildframework/helium/tools/common/templates/log/bt_sms_content.txt.ftl
buildframework/helium/tools/common/templates/log/build_status.xml.ftl
buildframework/helium/tools/common/templates/log/build_status_orm.xml.ftl
buildframework/helium/tools/common/templates/log/cc_summary_metadata_orm.html.ftl
buildframework/helium/tools/common/templates/log/email.html.ftl
buildframework/helium/tools/common/templates/log/email_status.html.ftl
buildframework/helium/tools/common/templates/log/email_status_orm.html.ftl
buildframework/helium/tools/common/templates/log/scan2.html.ftl
buildframework/helium/tools/common/templates/log/scan2_orm.html.ftl
buildframework/helium/tools/common/templates/log/scan2_text.html.ftl
buildframework/helium/tools/common/templates/log/scan2_text_orm.html.ftl
buildframework/helium/tools/common/templates/log/summary_metadata_orm.html.ftl
buildframework/helium/tools/common/test/test_common.ant.xml
buildframework/helium/tools/common/test/test_getvariablevalue.ant.xml
buildframework/helium/tools/common/test/test_logging.ant.xml
buildframework/helium/tools/common/test/test_scanlog.ant.xml
buildframework/helium/tools/common/testing.ant.xml
buildframework/helium/tools/compile/ImageCreation.pl
buildframework/helium/tools/compile/cmaker.ant.xml
buildframework/helium/tools/compile/compile.ant.xml
buildframework/helium/tools/compile/compile.antlib.xml
buildframework/helium/tools/compile/coverity.ant.xml
buildframework/helium/tools/compile/ebs/ebs.ant.xml
buildframework/helium/tools/compile/ec/ec.ant.xml
buildframework/helium/tools/compile/ec/ec_functions.mk
buildframework/helium/tools/compile/ec/sysdef2make.pl
buildframework/helium/tools/compile/qt/qt.ant.xml
buildframework/helium/tools/compile/qt/templates/run-qmake.mk.ftl
buildframework/helium/tools/compile/sbs/sbs.ant.xml
buildframework/helium/tools/compile/scanbuildlog.pl
buildframework/helium/tools/compile/sis.ant.xml
buildframework/helium/tools/iad/iad.ant.xml
buildframework/helium/tools/iad/iadinfo.py
buildframework/helium/tools/iad/packageiad.py
buildframework/helium/tools/integration/integration.ant.xml
buildframework/helium/tools/integration/patching.ant.xml
buildframework/helium/tools/integration/validate_overlay/generate_vo_conf_ccmgetinput-new.py
buildframework/helium/tools/integration/validate_overlay/generate_vo_conf_ccmgetinput.py
buildframework/helium/tools/integration/validate_overlay/validate_overlay.ant.xml
buildframework/helium/tools/localisation/create_language_pack.py
buildframework/helium/tools/localisation/create_variant_cenrep.py
buildframework/helium/tools/localisation/createlocales.py
buildframework/helium/tools/localisation/deprecated.txt
buildframework/helium/tools/localisation/get_product_path.py
buildframework/helium/tools/localisation/get_product_platform.py
buildframework/helium/tools/localisation/get_variant_dirs.py
buildframework/helium/tools/localisation/getalllanguages.py
buildframework/helium/tools/localisation/getallvariantion.py
buildframework/helium/tools/localisation/helps/generate_iby_32.mk
buildframework/helium/tools/localisation/helps/generate_iby_32.py
buildframework/helium/tools/localisation/helps/template/bld.inf
buildframework/helium/tools/localisation/helps/template/generate_iby.mk
buildframework/helium/tools/localisation/helps/template/readme.txt
buildframework/helium/tools/localisation/localisation-32.ant.xml
buildframework/helium/tools/localisation/localisation-50.ant.xml
buildframework/helium/tools/localisation/localisation.ant.xml
buildframework/helium/tools/localisation/localiser/ECLocaliser.pm
buildframework/helium/tools/localisation/localiser/isis_EClocaliser.pl
buildframework/helium/tools/localisation/templates/rom/mc_variant_imaker.oby
buildframework/helium/tools/logging/logging.ant.xml
buildframework/helium/tools/logging/test/test_logging.ant.xml
buildframework/helium/tools/metadata/metadata.ant.xml
buildframework/helium/tools/preparation/bom/bom.ant.xml
buildframework/helium/tools/preparation/ci.ant.xml
buildframework/helium/tools/preparation/freedisk.py
buildframework/helium/tools/preparation/ido-prep.ant.xml
buildframework/helium/tools/preparation/ivy/dependencies.ant.xml
buildframework/helium/tools/preparation/overlayLog_to_html.xslt
buildframework/helium/tools/preparation/overlays.ant.xml
buildframework/helium/tools/preparation/password.ant.xml
buildframework/helium/tools/preparation/prep_build_area.pl
buildframework/helium/tools/preparation/preparation.ant.xml
buildframework/helium/tools/preparation/synergy/buildmanagement.ant.xml
buildframework/helium/tools/preparation/synergy/ccmgetinput.ant.xml
buildframework/helium/tools/preparation/test/test_bom.ant.xml
buildframework/helium/tools/preparation/test/test_preparation.ant.xml
buildframework/helium/tools/preparation/test/test_synergy.ant.xml
buildframework/helium/tools/publish/get_loc_files.pl
buildframework/helium/tools/publish/internal-api/internal-api.ant.xml
buildframework/helium/tools/publish/nwiki.ant.xml
buildframework/helium/tools/publish/publish.ant.xml
buildframework/helium/tools/publish/subcon.ant.xml
buildframework/helium/tools/publish/synergy.ant.xml
buildframework/helium/tools/publish/test/test2_publishing_to_diamonds.ant.xml
buildframework/helium/tools/quality/conflict-checker.ant.xml
buildframework/helium/tools/quality/file-comparison/file-comparison.ant.xml
buildframework/helium/tools/quality/internal-exports.ant.xml
buildframework/helium/tools/quality/mmp-to-target.ant.xml
buildframework/helium/tools/quality/quality.ant.xml
buildframework/helium/tools/quality/validate-policy.ant.xml
buildframework/helium/tools/release/release.ant.xml
buildframework/helium/tools/relnotes/getVariantConfiguration.py
buildframework/helium/tools/relnotes/icf2txt.py
buildframework/helium/tools/relnotes/readHTML.py
buildframework/helium/tools/relnotes/relnotes.ant.xml
buildframework/helium/tools/relnotes/templates/errors.csv.ftl
buildframework/helium/tools/rombuild/example/rom_image_config.xml
buildframework/helium/tools/rombuild/features/helium_auto_traces.mk
buildframework/helium/tools/rombuild/features/helium_config_builder.mk
buildframework/helium/tools/rombuild/features/helium_features.mk
buildframework/helium/tools/rombuild/features/helium_fwid.mk
buildframework/helium/tools/rombuild/features/helium_localisation.mk
buildframework/helium/tools/rombuild/features/helium_sw_string.mk
buildframework/helium/tools/rombuild/features/helium_uda.mk
buildframework/helium/tools/rombuild/features/unittest/test_helium_features.mk
buildframework/helium/tools/rombuild/features/unittest/test_helpers.mk
buildframework/helium/tools/rombuild/generic_templates/core.mk
buildframework/helium/tools/rombuild/generic_templates/customer.mk
buildframework/helium/tools/rombuild/generic_templates/eraseuda.mk
buildframework/helium/tools/rombuild/generic_templates/flash.mk
buildframework/helium/tools/rombuild/generic_templates/flash_config.mk
buildframework/helium/tools/rombuild/generic_templates/languagepack.mk
buildframework/helium/tools/rombuild/generic_templates/main.mk
buildframework/helium/tools/rombuild/generic_templates/makeupct_core.mk
buildframework/helium/tools/rombuild/generic_templates/template.config.xml
buildframework/helium/tools/rombuild/generic_templates/uda.mk
buildframework/helium/tools/rombuild/generic_templates/vt_uda.mk
buildframework/helium/tools/rombuild/imaker.ant.xml
buildframework/helium/tools/rombuild/rombuild.ant.xml
buildframework/helium/tools/rombuild/trace_images/mytraces_general.txt
buildframework/helium/tools/rombuild/trace_images/mytraces_phone.txt
buildframework/helium/tools/rombuild/trace_images/trace_image_creator.pl
buildframework/helium/tools/rombuild/trace_images/tracebuild.ant.xml
buildframework/helium/tools/startup/antserver/antserver.ant.xml
buildframework/helium/tools/startup/antserver/remote.ant.xml
buildframework/helium/tools/startup/bootstrap/bootstrap.ant.xml
buildframework/helium/tools/testing/ats/ats.ant.xml
buildframework/helium/tools/testing/eunit/eunit.ant.xml
buildframework/helium/tools/testing/mobilecrash/mobilecrash.ant.xml
buildframework/helium/tools/testing/testing.ant.xml
buildframework/helium/tools/uda/uda.ant.xml
--- a/buildframework/helium/build-jar.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/build-jar.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -25,11 +25,25 @@
     Called by hlm-jar.bat to build helium java code
     </description>
 
+    <!-- @property env
+    Load all environment variables. -->
     <property environment="env" />
 
+    <!-- @type string
+    @scope private
+    -->
     <property name="build.temp.dir" location="${env.TEMP}/helium/java" />
+    <!-- @type string
+    @scope private
+    -->
     <property name="src.dir" location="${helium.dir}/tools/common/java/src" />
+    <!-- @type string
+    @scope private
+    -->
     <property name="ext.java.lib.dir" location="${helium.dir}/external/antlibs" />
+    <!-- @type string
+    @scope private
+    -->
     <property name="helium.java.lib.dir" location="${helium.dir}/tools/common/java/lib" />
 
 
--- a/buildframework/helium/build.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/build.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -29,11 +29,58 @@
     <property name="build.drive" location="${env.TEMP}/helium/temp_drive"/>
     <mkdir dir="${build.drive}/"/> 
     
+    <!-- @property helium.version
+    @type string
+    @scope private -->
     <property file="${helium.dir}/config/version.txt"/>
     <property name="release.label" value="${helium.version}"/>
+
+    <!-- Override docs targets to do more for Helium. -->
+    <target name="apidocs" depends="python-apidocs,java-apidocs,antdoclet,internal.docs.apidocs"/>
+    <!-- Generate rst files for docs -->
+    <target name="prep-textdocs" depends="overview-to-html,tools-rst-table,dependency-diagram,
+        dependency-logs,release-diff,helium-user-graph,helium-prep-textdocs,internal.docs.prep-textdocs"/>
+    <!-- generate all the user documentation for helium -->
+    <target name="docs" depends="clean-doc-dir,database,apidocs,textdocs,add-policies-to-docs"/>
     
     <import file="helium.ant.xml"/>
     <import file="tools/startup/antserver/antserver.ant.xml"/>
          
+    
+    
+    
+    <target name="must-property-comments">
+        <!--<xslt in="${data.model.file}" out="${data.model.parsed}" style="${data.model.xsl}"/>-->
+        <for param="ant.file">
+            <fileset dir="${helium.dir}" includes="helium.ant.xml">
+            </fileset>
+            <sequential>     
+                <script language="jython">
+import re
+import java.io
+import org.dom4j
+import org.dom4j.io
+
+model = org.dom4j.io.SAXReader().read(java.io.File(project.getProperty("helium.dir") + '/build/datamodel.out'))
+
+user_props = model.selectNodes('//property[editStatus="must"]')
+indent = '    '
+out = open('required_properties.txt', 'w')
+for prop in user_props:
+#    print prop
+    property_comment = indent + "&lt;!--* @property " + prop.elementTextTrim('name') + "\n"
+    property_comment += indent + prop.elementTextTrim('description') + "\n"
+    property_comment += indent + "@type " + prop.elementTextTrim('type') + "\n"
+    property_comment += indent + "@editable required\n"
+    property_comment += indent + "@scope public\n"
+    property_comment += indent + "--&gt;\n\n"
+    print property_comment
+    out.write(property_comment)
+
+out.close()
+                </script>
+            </sequential>
+        </for>                               
+    </target>
 </project>
 
--- a/buildframework/helium/config/antlint_config.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : antlint_config.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:
-
-============================================================================
--->
-<antlint>
-    <checks name="TabCharacter"/>
-    <checks name="PropertyName">([a-z0-9[\\d\\_\\.\\@\\{\\}\\$]]*)</checks>
-    <checks name="TargetName">([a-z0-9[\\d\\-]]*)</checks>
-    <checks name="Indentation"/>
-    <checks name="PresetDefMacroDefName">([a-z0-9][a-zA-Z0-9]*)</checks>
-    <checks name="ProjectName">([a-z0-9[\\d\\.\\_\\-]]*)</checks>
-    <checks name="Description"/>
-    <checks name="FileName">^build.xml$|ant.xml$|antlib.xml$</checks>
-    <checks name="RunTarget"/>
-    <checks name="AntCall"/>
-</antlint>
\ No newline at end of file
--- a/buildframework/helium/config/diamonds_config.xml.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/config/diamonds_config.xml.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -59,7 +59,10 @@
             and sends it.-->
             
         <target name="create-bom"/>
-
+        
+        <target name="post-coverity" template-file="coverity.xml.ftl"
+            logfile="${ant['diamonds.coverity.report.file']}"/>
+        
         <target name="rndsdk-create-api-descr-xml" template-file="apimetrics.xml.ftl"
             logfile="${ant['build.drive']}/output/apidescr/apidescr.xml"/>
             
--- a/buildframework/helium/config/epydoc.conf	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/config/epydoc.conf	Thu Mar 04 15:10:37 2010 +0200
@@ -2,7 +2,7 @@
 
 output: html
 
-target: doc/api/python/
+target: api/python/
 
 docformat: restructuredtext
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/config/helium.basic.tools.config	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,33 @@
+#
+# 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: 
+#
+
+###############################################
+#   *** HELIUM BASIC TOOLS CONFIGURATION ***  #
+###############################################
+
+## Note: For multiple version support use comma separated values
+## Eg: java.version=1.5,1.6
+
+## Supported java versions 
+java.version=1.6
+
+
+## Supported ant versions
+ant.version=1.7.0
+
+
+## Supported Python version
+python.version=2.5,2.6
--- a/buildframework/helium/config/helium_data_model.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/config/helium_data_model.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -242,7 +242,7 @@
         <name>eunit.test.package</name>
         <editStatus>recommended</editStatus>
         <type>string</type>
-        <description>The EUnit package name to be unzipped on the environment, for executing EUnit tests."</description>
+        <description>The EUnit package name to be unzipped on the environment, for executing EUnit tests.</description>
     </property>
     <property>
         <name>eunitexerunner.flags</name>
@@ -389,18 +389,6 @@
         <description>This is the email template path where it updates the build status based on metadata database contents. The default file could (email_status.html.ftl under tools\common\template\log)be used as the base and any additional info could be added</description>
     </property>
     <property>
-        <name>build.logging.key.stages</name>
-        <editStatus>discouraged</editStatus>
-        <type>string</type>
-        <description> Defines which stages are considered as key stages and logged.</description>
-    </property>
-    <property>
-        <name>build.logging.start.stage</name>
-        <editStatus>discouraged</editStatus>
-        <type>string</type>
-        <description>Defines at which point logging is started.</description>
-    </property>
-    <property>
         <name>build.name</name>
         <editStatus>must</editStatus>
         <type>string</type>
@@ -576,12 +564,6 @@
         <description>Version of S60(require cmaker.pp.version to be set) configuration to be exported</description>
     </property>
     <property>
-        <name>common.overlay.dir</name>
-        <editStatus>must</editStatus>
-        <type>string</type>
-        <description>Location of the common overlay.</description>
-    </property>
-    <property>
         <name>current.env.config</name>
         <editStatus>never</editStatus>
         <type>string</type>
@@ -618,12 +600,6 @@
         <description>configuration for the japanese variant.</description>
     </property>
     <property>
-        <name>customer.makefile.target</name>
-        <editStatus>never</editStatus>
-        <type>string</type>
-        <description>Default makefile target for running customer iMaker ROM building.</description>
-    </property>
-    <property>
         <name>data.model.file</name>
         <editStatus>never</editStatus>
         <type>string</type>
@@ -792,6 +768,12 @@
         <description>Ensures the cleanup-all target is called when the build finishes.</description>
     </property>
     <property>
+        <name>sbs.inputs.list</name>
+        <editStatus>allowed</editStatus>
+        <type>string</type>
+        <description>list of , separated input list, and each entry from list is arguments for sbs call.</description>
+    </property>
+    <property>
         <name>skip.sbs.parser.exception</name>
         <editStatus>allowed</editStatus>
         <type>string</type>
@@ -871,12 +853,6 @@
         <description>this along with week.number used to find proper history file based on releases.</description>
     </property>
     <property>
-        <name>ec.scripts.dir</name>
-        <editStatus>discouraged</editStatus>
-        <type>string</type>
-        <description>ec scripts location</description>
-    </property>
-    <property>
         <name>ec.sysdef2make</name>
         <editStatus>never</editStatus>
         <type>string</type>
@@ -889,12 +865,6 @@
         <description>Extra command line parameters for the sysdef2make call.</description>
     </property>
     <property>
-        <name>ec.tools.dir</name>
-        <editStatus>discouraged</editStatus>
-        <type>string</type>
-        <description>Location of EC-tools. Passed to environment variable EC_TOOLS_DIR, when calling ecbuild_electric.cmd to execute Electric Cloud build.</description>
-    </property>
-    <property>
         <name>email.ldap.server</name>
         <editStatus>allowed</editStatus>
         <type>string</type>
@@ -1027,18 +997,6 @@
         <description>If defined it skips the buildtools emake patching.</description>
     </property>
     <property>
-        <name>ee_roms.log.file</name>
-        <editStatus>never</editStatus>
-        <type>string</type>
-        <description>ee log file location</description>
-    </property>
-    <property>
-        <name>ee.makefile.target</name>
-        <editStatus>allowed</editStatus>
-        <type>string</type>
-        <description>Defines make target that is run when creating engineer english images.</description>
-    </property>
-    <property>
         <name>epocroot</name>
         <editStatus>discouraged</editStatus>
         <type>string</type>
@@ -1187,72 +1145,6 @@
         <description>The tools dependencies Ivy settings configuration file.</description>
     </property>
     <property>
-        <name>loc.output.dir</name>
-        <editStatus>never</editStatus>
-        <type>string</type>
-        <description>The directory that will contain the zipped .loc files zip package.</description>
-    </property>
-    <property>
-        <name>loc.output.filename</name>
-        <editStatus>never</editStatus>
-        <type>string</type>
-        <description>The filename of the zip-loc-files target output zip file.</description>
-    </property>
-    <property>
-        <name>loc.temp.dir</name>
-        <editStatus>never</editStatus>
-        <type>string</type>
-        <description>The location of temporary directory used during zip-loc-files.</description>
-    </property>
-    <property>
-        <name>localisation.files.china</name>
-        <editStatus>recommended</editStatus>
-        <type>string</type>
-        <description>Localisation files for the China region.</description>
-    </property>
-    <property>
-        <name>localisation.files.japan</name>
-        <editStatus>recommended</editStatus>
-        <type>string</type>
-        <description>Localisation files for the Japan region.</description>
-    </property>
-    <property>
-        <name>localisation.files.western</name>
-        <editStatus>recommended</editStatus>
-        <type>string</type>
-        <description>Localisation files for the western region.</description>
-    </property>
-    <property>
-        <name>localisation.makefile.target</name>
-        <editStatus>allowed</editStatus>
-        <type>string</type>
-        <description>Makefile target that is executed when creating localised rom images (target localisation-roms).</description>
-    </property>
-    <property>
-        <name>localisation.s60locfiles.dir</name>
-        <editStatus>never</editStatus>
-        <type>string</type>
-        <description>Location of Series 60 localisation input files. Internal property that does not normally needs to be set.</description>
-    </property>
-    <property>
-        <name>localisation.tool</name>
-        <editStatus>never</editStatus>
-        <type>string</type>
-        <description>This key defines which tool should be used to localise the build area (localisation-mcss-localiser or localisation-s60-localiser).</description>
-    </property>
-    <property>
-        <name>localisation.buildfile</name>
-        <editStatus>never</editStatus>
-        <type>string</type>
-        <description>begining of the localisation buildfile name</description>
-    </property>
-    <property>
-        <name>isis_mktarget.list</name>
-        <editStatus>never</editStatus>
-        <type>string</type>
-        <description>Comma separated list of file names(main, what, check file names)</description>
-    </property>
-    <property>
         <name>log.build.build_id</name>
         <editStatus>never</editStatus>
         <type>string</type>
@@ -1331,12 +1223,6 @@
         <description>how many parallel threads can run</description>
     </property>
     <property>
-        <name>overlays.log.file</name>
-        <editStatus>never</editStatus>
-        <type>string</type>
-        <description>The path to the overlays output log file.</description>
-    </property>
-    <property>
         <name>parse_abld_what.tool</name>
         <editStatus>allowed</editStatus>
         <type>string</type>
@@ -1494,14 +1380,8 @@
         <description>Defines the name of the release note template used.</description>
     </property>
     <property>
-        <name>rombuild.using.var</name>
+        <name>rombuild.buildinfo.template</name>
         <editStatus>allowed</editStatus>
-        <type>boolean</type>
-        <description>Define this property if you build is using Symbian Binary Variation.</description>
-    </property>
-    <property>
-        <name>rombuild.buildinfo.template</name>
-        <editStatus>never</editStatus>
         <type>string</type>
         <description>FMPP template to generate a buildinfo makefile.</description>
     </property>
@@ -1512,18 +1392,6 @@
         <description>Location of the output file.</description>
     </property>
     <property>
-        <name>rombuild.makefile.name</name>
-        <editStatus>allowed</editStatus>
-        <type>string</type>
-        <description>The filename of the output makefile generated by Helium for iMaker.</description>
-    </property>
-    <property>
-        <name>roms.spec.name</name>
-        <editStatus>never</editStatus>
-        <type>string</type>
-        <description>Used to select spec-section in rom image configuration for building. Used only for makefpsx.</description>
-    </property>
-    <property>
         <name>s60.delta.config.prefix</name>
         <editStatus>allowed</editStatus>
         <type>string</type>
@@ -1554,12 +1422,6 @@
         <description>The path to the subcon ROMs log.</description>
     </property>
     <property>
-        <name>subcon.makefile.target</name>
-        <editStatus>never</editStatus>
-        <type>string</type>
-        <description>The name of the makefile target for making subcon ROMs.</description>
-    </property>
-    <property>
         <name>subcon.zips.dir</name>
         <editStatus>never</editStatus>
         <type>string</type>
@@ -1578,24 +1440,6 @@
         <description>Directory to store temporary files generated during the process.</description>
     </property>
     <property>
-        <name>trace.log.file</name>
-        <editStatus>never</editStatus>
-        <type>string</type>
-        <description>The path to the trace ROMs log.</description>
-    </property>
-    <property>
-        <name>trace.makefile.target</name>
-        <editStatus>never</editStatus>
-        <type>string</type>
-        <description>The name of the makefile target for making trace ROMs.</description>
-    </property>
-    <property>
-        <name>uda.makefile.target</name>
-        <editStatus>never</editStatus>
-        <type>string</type>
-        <description>The name of the makefile target for making UDA images.</description>
-    </property>
-    <property>
         <name>zip.ee.log.file</name>
         <editStatus>never</editStatus>
         <type>string</type>
@@ -1662,12 +1506,6 @@
         <description>The amount of free space needed on the build machine in Mbs.</description>
     </property>
     <property>
-        <name>localisation.language.file</name>
-        <editStatus>never</editStatus>
-        <type>string</type>
-        <description>Defined where to find languages.xml.</description>
-    </property>
-    <property>
         <name>network.free.space</name>
         <editStatus>allowed</editStatus>
         <type>string</type>
@@ -1884,30 +1722,6 @@
         <description>Java source files location for helium library</description>
     </property>
     <property>
-        <name>subcon.build.drive</name>
-        <editStatus>never</editStatus>
-        <type>string</type>
-        <description>Build drive for subcon build</description>
-    </property>
-    <property>
-        <name>subcon.prep.config.file</name>
-        <editStatus>must</editStatus>
-        <type>string</type>
-        <description> Subcon prep configuration file location </description>
-    </property>
-    <property>
-        <name>subcon.rombuild.config.file</name>
-        <editStatus>never</editStatus>
-        <type>string</type>
-        <description>A ROM configuration file for verifying subcon ROMS.</description>
-    </property>
-    <property>
-        <name>rombuild.config.file</name>
-        <editStatus>must</editStatus>
-        <type>string</type>
-        <description>This key defines where this parsed file will be located.</description>
-    </property>
-    <property>
         <name>rombuild.config.file.parsed</name>
         <editStatus>never</editStatus>
         <type>string</type>
@@ -1950,24 +1764,6 @@
         <description>Unix password</description>
     </property>
     <property>
-        <name>image_creation.copyto</name>
-        <editStatus>never</editStatus>
-        <type>string</type>
-        <description>Path for copying the image files default is output/images</description>
-    </property>
-    <property>
-        <name>image_creation.drive</name>
-        <editStatus>never</editStatus>
-        <type>string</type>
-        <description>Drive (environment) to use for creating images</description>
-    </property>
-    <property>
-        <name>variant.image.targetpath</name>
-        <editStatus>never</editStatus>
-        <type>string</type>
-        <description>Path for copying the variant image files default is under output/variant_images</description>
-    </property>
-    <property>
         <name>zips.ee.spec.name</name>
         <editStatus>allowed</editStatus>
         <type>string</type>
@@ -2452,12 +2248,6 @@
         <description>Location of ido variant</description>
     </property>
     <property>
-        <name>overlay.files.path</name>
-        <editStatus>never</editStatus>
-        <type>string</type>
-        <description>List of overlay files to scan overlay structure and create a report</description>
-    </property>
-    <property>
         <name>project.spec.name</name>
         <editStatus>allowed</editStatus>
         <type>string</type>
@@ -2499,6 +2289,69 @@
         <type>string</type>
         <description>Temp release notes</description>
     </property>
+    <property>
+        <name>target.times.log.file</name>
+        <editStatus>allowed</editStatus>
+        <type>string</type>
+        <description>The location and name of the target times log file. Default value is: ${build.log.dir}/${build.id}_targetTimesLog.csv</description>
+    </property>
+    
+    
+    <property>
+        <name>coverity.analyze.dir</name>
+        <editStatus>never</editStatus>
+        <type>string</type>
+        <description>coverity analyze directory location</description>
+    </property>
+    <property>
+        <name>coverity.config.dir</name>
+        <editStatus>never</editStatus>
+        <type>string</type>
+        <description>coverity config directory location</description>
+    </property>
+    <property>
+        <name>coverity.inter.dir</name>
+        <editStatus>never</editStatus>
+        <type>string</type>
+        <description>coverity intermidiate directory location</description>
+    </property>
+    <property>
+        <name>coverity.link.dir</name>
+        <editStatus>never</editStatus>
+        <type>string</type>
+        <description>coverity link directory location</description>
+    </property>
+    <property>
+        <name>coverity.log.dir</name>
+        <editStatus>never</editStatus>
+        <type>string</type>
+        <description>coverity log directory location</description>
+    </property>
+    <property>
+        <name>coverity.no.thread</name>
+        <editStatus>never</editStatus>
+        <type>string</type>
+        <description>Number of parallel coverity emit threads can run.</description>
+    </property>
+    <property>
+        <name>coverity.output.dir</name>
+        <editStatus>never</editStatus>
+        <type>string</type>
+        <description>coverity output directory location</description>
+    </property>
+    <property>
+        <name>coverity.report.dir</name>
+        <editStatus>never</editStatus>
+        <type>string</type>
+        <description>coverity report directory location</description>
+    </property>
+    <property>
+        <name>coverity.report.file</name>
+        <editStatus>never</editStatus>
+        <type>string</type>
+        <description>coverity report file name</description>
+    </property>
+    
     
     <group>
         <name>Environment</name>
@@ -2522,7 +2375,6 @@
         <propertyRef usage="optional">ado.quality.dirs.path</propertyRef>
         <propertyRef usage="optional">s60.getenv.path</propertyRef>
         <propertyRef usage="optional">ido.variant</propertyRef>
-        <propertyRef usage="optional">overlay.files.path</propertyRef>
     </group>
     <group>
         <name>localFreeSpace</name>
@@ -2557,23 +2409,7 @@
     <group>
         <name>rombuild</name>
         <description>Creating ROM images.</description>
-        <propertyRef usage="optional">rombuild.config.file</propertyRef>
         <propertyRef usage="optional">rombuild.config.file.parsed</propertyRef>
-        <propertyRef usage="required">roms.spec.name</propertyRef>
-        <propertyRef usage="optional">rombuild.using.var</propertyRef>
-    </group>
-    <!--<group>
-        <name>uda</name>
-        <description>Creating UDA images.</description>
-        <propertyRef usage="required">uda.config</propertyRef>
-        <propertyRef usage="required">uda.config.name</propertyRef>
-    </group>-->
-    <group>
-        <name>subcon</name>
-        <description>Creating a subcon build area and testing the creation of subcon images.</description>
-        <propertyRef usage="optional">subcon.build.drive</propertyRef>
-        <propertyRef usage="optional">subcon.prep.config.file</propertyRef>
-        <propertyRef usage="optional">subcon.rombuild.config.file</propertyRef>
     </group>
     <group>
         <name>archive</name>
@@ -2662,13 +2498,12 @@
         <propertyRef usage="optional">ec.makefile.file</propertyRef>
         <propertyRef usage="optional">ec.maxagents</propertyRef>
         <propertyRef usage="optional">ec.history.option</propertyRef>
-        <propertyRef usage="optional">ec.scripts.dir</propertyRef>
         <propertyRef usage="optional">ec.sysdef2make</propertyRef>
         <propertyRef usage="optional">ec.sysdef2make.cmdline</propertyRef>
-        <propertyRef usage="optional">ec.tools.dir</propertyRef>
         <propertyRef usage="optional">ec.build.class</propertyRef>
         <propertyRef usage="optional">schema.new</propertyRef>
         <propertyRef usage="optional">sbs.implicit.tools.build</propertyRef>
+        <propertyRef usage="optional">sbs.inputs.list</propertyRef>
         <propertyRef usage="optional">sbs.tools.config</propertyRef>
         <propertyRef usage="optional">ec.mem.limit</propertyRef>
         <propertyRef usage="optional">skip.compile-ec-patch</propertyRef>
@@ -2726,22 +2561,6 @@
         <propertyRef usage="optional">diamonds.log.file</propertyRef>
     </group>
     <group>
-        <name>Localisation</name>
-        <description/>
-        <propertyRef usage="optional">loc.output.dir</propertyRef>
-        <propertyRef usage="optional">loc.output.filename</propertyRef>
-        <propertyRef usage="optional">loc.temp.dir</propertyRef>
-        <propertyRef usage="optional">localisation.files.china</propertyRef>
-        <propertyRef usage="optional">localisation.files.japan</propertyRef>
-        <propertyRef usage="optional">localisation.files.western</propertyRef>
-        <propertyRef usage="optional">localisation.makefile.target</propertyRef>
-        <propertyRef usage="optional">localisation.s60locfiles.dir</propertyRef>
-        <propertyRef usage="optional">localisation.tool</propertyRef>
-        <propertyRef usage="optional">localisation.buildfile</propertyRef>
-        <propertyRef usage="optional">isis_mktarget.list</propertyRef>
-        <propertyRef usage="optional">localisation.language.file</propertyRef>
-    </group>
-    <group>
         <name>ATS</name>
         <description/>
         <propertyRef usage="optional">ats.ctc.host</propertyRef>
@@ -2832,8 +2651,6 @@
         <propertyRef usage="optional">build.signal.status.dir</propertyRef>
         <propertyRef usage="optional">build.status.email.template</propertyRef>
         <propertyRef usage="optional">build.log</propertyRef>
-        <propertyRef usage="optional">build.logging.key.stages</propertyRef>
-        <propertyRef usage="optional">build.logging.start.stage</propertyRef>
         <propertyRef usage="optional">build.name</propertyRef>
         <propertyRef usage="optional">build.output.dir</propertyRef>
         <propertyRef usage="optional">build.property.cache.file</propertyRef>
@@ -2851,7 +2668,6 @@
         <propertyRef usage="optional">codescanner.config</propertyRef>
         <propertyRef usage="optional">codescanner.format</propertyRef>
         <propertyRef usage="optional">codescanner.log.unique</propertyRef>
-        <propertyRef usage="optional">common.overlay.dir</propertyRef>
         <propertyRef usage="optional">compile.signal.input</propertyRef>
         <propertyRef usage="optional">compile.symbianos</propertyRef>
         <propertyRef usage="optional">compile.sysdef.dtd.stub</propertyRef>
@@ -2863,7 +2679,6 @@
         <propertyRef usage="optional">ctool.region.china</propertyRef>
         <propertyRef usage="optional">ctool.western.conf</propertyRef>
         <propertyRef usage="optional">current.env.config</propertyRef>
-        <propertyRef usage="optional">customer.makefile.target</propertyRef>
         <propertyRef usage="optional">data.model.file</propertyRef>
         <propertyRef usage="optional">data.model.parsed</propertyRef>
         <propertyRef usage="optional">database.file</propertyRef>
@@ -2874,8 +2689,6 @@
         <propertyRef usage="optional">documentation.path</propertyRef>
         <propertyRef usage="optional">documentation.url.root</propertyRef>
         <propertyRef usage="optional">ec.mode</propertyRef>
-        <propertyRef usage="optional">ee.makefile.target</propertyRef>
-        <propertyRef usage="optional">ee_roms.log.file</propertyRef>
         <propertyRef usage="optional">epocroot</propertyRef>
         <propertyRef usage="optional">error.email.to.list</propertyRef>
         <propertyRef usage="optional">eunit.prepare.zip</propertyRef>
@@ -2907,8 +2720,6 @@
         <propertyRef usage="optional">ido.keep.old</propertyRef>
         <propertyRef usage="optional">ido.romtree</propertyRef>
         <propertyRef usage="optional">ido.template.robot.ready</propertyRef>
-        <propertyRef usage="optional">image_creation.copyto</propertyRef>
-        <propertyRef usage="optional">image_creation.drive</propertyRef>
         <propertyRef usage="optional">imaker.command</propertyRef>
         <propertyRef usage="optional">imaker.fmpp.ant</propertyRef>
         <propertyRef usage="optional">imaker.fmpp.makefile</propertyRef>
@@ -2931,7 +2742,6 @@
         <propertyRef usage="optional">notes.release.dir</propertyRef>
         <propertyRef usage="optional">notes.server</propertyRef>
         <propertyRef usage="optional">number.of.threads</propertyRef>
-        <propertyRef usage="optional">overlays.log.file</propertyRef>
         <propertyRef usage="optional">parse_abld_what.tool</propertyRef>
         <propertyRef usage="optional">prep.build.dir</propertyRef>
         <propertyRef usage="optional">prep.delivery.modificationset</propertyRef>
@@ -2948,7 +2758,6 @@
         <propertyRef usage="optional">remote.builds.config.file</propertyRef>
         <propertyRef usage="optional">required.ant.version</propertyRef>
         <propertyRef usage="optional">robot.email.to</propertyRef>
-        <propertyRef usage="optional">rombuild.makefile.name</propertyRef>
         <propertyRef usage="optional">s60.delta.config.prefix</propertyRef>
         <propertyRef usage="optional">s60.getenv.trigger.location</propertyRef>
         <propertyRef usage="optional">sbs.config</propertyRef>
@@ -2961,19 +2770,15 @@
         <propertyRef usage="optional">src.dir</propertyRef>
         <propertyRef usage="optional">src</propertyRef>
         <propertyRef usage="optional">subcon.log.file</propertyRef>
-        <propertyRef usage="optional">subcon.makefile.target</propertyRef>
         <propertyRef usage="optional">subcon.zips.dir</propertyRef>
         <propertyRef usage="optional">sysdef.clean.configurations.list</propertyRef>
         <propertyRef usage="optional">team</propertyRef>
         <propertyRef usage="optional">teamlevel.ci.system</propertyRef>
         <propertyRef usage="optional">teamlevel.folder.number</propertyRef>
         <propertyRef usage="optional">temp.build.dir</propertyRef>
-        <propertyRef usage="optional">trace.log.file</propertyRef>
-        <propertyRef usage="optional">trace.makefile.target</propertyRef>
         <propertyRef usage="optional">tracing.csv.file</propertyRef>
         <propertyRef usage="optional">tsrc.data.dir</propertyRef>
         <propertyRef usage="optional">tsrc.path.list</propertyRef>
-        <propertyRef usage="optional">uda.makefile.target</propertyRef>
         <propertyRef usage="optional">unix.password.available</propertyRef>
         <propertyRef usage="optional">unix.password</propertyRef>
         <propertyRef usage="optional">unix.username.available</propertyRef>
@@ -2981,7 +2786,6 @@
         <propertyRef usage="optional">unsubst.after.build</propertyRef>
         <propertyRef usage="optional">validate.policy.log.xml</propertyRef>
         <propertyRef usage="optional">validate.properties.at.startup</propertyRef>
-        <propertyRef usage="optional">variant.image.targetpath</propertyRef>
         <propertyRef usage="optional">week.number</propertyRef>
         <propertyRef usage="optional">zip.ee.log.file</propertyRef>
         <propertyRef usage="optional">zip.localised.log.file</propertyRef>
@@ -3005,6 +2809,7 @@
         <propertyRef usage="optional">exceptions.target</propertyRef>
         <propertyRef usage="optional">ant.loglevel</propertyRef>
         <propertyRef usage="optional">project.spec.name</propertyRef>
+        <propertyRef usage="optional">target.times.log.file</propertyRef>
     </group>
     <group>
         <name>Documentation</name>
@@ -3030,4 +2835,17 @@
         <propertyRef usage="optional">bom.log</propertyRef>
         <propertyRef usage="required">build.number</propertyRef>
     </group>
+    <group>
+        <name>coverity</name>
+        <description>Coverity Prevent code coverage tool Properties</description>
+        <propertyRef usage="optional">coverity.analyze.dir</propertyRef>
+        <propertyRef usage="optional">coverity.config.dir</propertyRef>
+        <propertyRef usage="optional">coverity.inter.dir</propertyRef>
+        <propertyRef usage="optional">coverity.link.dir</propertyRef>
+        <propertyRef usage="optional">coverity.log.dir</propertyRef>
+        <propertyRef usage="optional">coverity.no.thread</propertyRef>
+        <propertyRef usage="optional">coverity.output.dir</propertyRef>
+        <propertyRef usage="optional">coverity.report.dir</propertyRef>
+        <propertyRef usage="optional">coverity.report.file</propertyRef>
+    </group>
 </heliumDataModel>
--- a/buildframework/helium/config/helium_distribution_test.cfg.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/config/helium_distribution_test.cfg.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -23,7 +23,6 @@
 <build>
     <config name="helium_subcon">
         <set name="root.dir" value="${helium.dir}/.."/>
-        <set name="max.files.per.archive" value="65000"/>
         <set name="archive.tool" value="7za"/>
         <set name="archives.dir" value="${helium.subcon.build.location}"/>
         <set name="temp.build.dir" value="${env.TEMP}"/>
--- a/buildframework/helium/config/ivy/ivy.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/config/ivy/ivy.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -63,6 +63,7 @@
         <dependency org="SWEPT" name="codescanner" rev="[2.0,2.1]" conf="ido->default"/>
         <dependency org="SWEPT" name="java13" rev="1.3.1" conf="ido->default"/>
         <dependency org="SWEPT" name="sbs" rev="2.4" conf="ido->default"/>
+        <dependency org="SWEPT" name="ctc" rev="6.3" conf="ido->default"/>
         
         <!-- These dependencies are not in Ibiblio Maven2 so they need to be referenced explicitly by url -->
         <dependency org="python" name="eggs_subcon" rev="1.0" conf="subcon"/>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/config/ivy/modules/ctc-6.3.ivy.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : ccm-6.5.ivy.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:
+
+============================================================================
+-->
+<ivy-module version="1.3">
+    <info organisation="SWEPT"
+          module="ctc"
+          revision="6.3"/>
+    <publications>
+        <artifact name="ctc" type="exe" versionArgs="-h" versionExp=".*6\.[3-9].*"/> 
+    </publications>
+</ivy-module>
+
--- a/buildframework/helium/config/metadata_filter_config_default.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/config/metadata_filter_config_default.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -64,6 +64,7 @@
     <hlm:metadatafilterset id="filterset.genxml.merge">
         <metadatafilter priority="error" regex="^ERROR:.*" description="" />
         <metadatafilter priority="error" regex=".*Context:.*" description="" />
+        <metadatafilter priority="error" regex=".*Can't open perl script.*" description="" />
     </hlm:metadatafilterset>
 
     <hlm:metadatafilterset id="filterset.buildarea.prep">
@@ -75,30 +76,14 @@
     </hlm:metadatafilterset>
 
     <hlm:metadatafilterset id="filterset.imaker">
-        <metadatafilterset refid="filterset.common" />
-    </hlm:metadatafilterset>
-
-    <hlm:metadatafilterset id="filterset.ee.roms">
+        <metadatafilter priority="error" regex="^\s*Total duration:\s+\d+:\d+\s+Status:\s+FAILED" description="" />
+        <metadatafilter priority="error" regex="^.+- DOESN'T EXIST" description="" />
         <metadatafilterset refid="filterset.common" />
     </hlm:metadatafilterset>
 
-
     <hlm:metadatafilterset id="filterset.temprecord">
         <metadatafilterset refid="filterset.common" />
     </hlm:metadatafilterset>
-
-
-    <hlm:metadatafilterset id="filterset.subcon.roms">
-        <metadatafilterset refid="filterset.common" />
-    </hlm:metadatafilterset>
-
-    <hlm:metadatafilterset id="filterset.trace.roms">
-        <metadatafilterset refid="filterset.common" />
-    </hlm:metadatafilterset>
-
-    <hlm:metadatafilterset id="filterset.uda.roms">
-        <metadatafilterset refid="filterset.common" />
-    </hlm:metadatafilterset>
     
     <hlm:metadatafilterset id="filterset.dp">
         <metadatafilterset refid="filterset.common" />
--- a/buildframework/helium/config/metadata_regex.csv	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/config/metadata_regex.csv	Thu Mar 04 15:10:37 2010 +0200
@@ -1,55 +1,66 @@
 priority,regex,description
 CRITICAL,.*Error:.*mingw_make\.exe.*,
-ERROR,.*\): Missing file:.*, 
-ERROR,^(?:(?:\s*\d+\)\s*)|(?:\s*\*\*\*\s*))ERROR:.*,
-ERROR,.*Error:\s+.*,
+ERROR,.*\: cannot create regular file.*,
+ERROR,.*\): Missing file:.*,
+ERROR,(?:(?:\s*\d+\)\s*)|(?:\s*\*\*\*\s*))ERROR:.*,
 ERROR,.*is not recognized as an internal or external command.*,
-ERROR,^MISSING:.*,
+ERROR,MISSING:.*,
 ERROR,.*FLEXlm error:.*,
-ERROR,.*(ABLD|BLDMAKE) ERROR:.*,
+ERROR,.*(ABLD|BLDMAKE)\s*ERROR:.*,
 ERROR,.*FATAL ERROR\(S\):.*,
 ERROR,.*fatal error C1001: INTERNAL COMPILER ERROR.*,
 ERROR,.*fatal error U1077.*,
-ERROR,.*warning U4010,
-ERROR,^make(?:\[\d+\])?\: \*\*\*.*,
-ERROR,^make(?:\[\d+\])?:\s+.*\s+not\s+remade.*,
-ERROR,error: ((Internal fault):)$,
-ERROR,.*No such file or directory$,
+ERROR,^fatal error.*,
+ERROR,.*warning U4010.*,
+ERROR,make(?:\.exe)?\s*(?:\[\d+\])\s*?\:\s*\*\*\*.*,
+ERROR,make(?:\.exe)(?:\[\d+\])?\:.*\s+not\s+remade.*,
+ERROR,make(?:\.exe)\s*:\s*\*\*\*.*\s*[Nn]o rule.*,
+ERROR,"\""(?:.*)\"" , line (\d+): (Error: +(.\d+.*?):.*)",
+ERROR,error: ((Internal fault):.*)$,
+ERROR,.*Exception: STATUS_ACCESS_VIOLATION.*,
+ERROR,.*target .* given more than once in the same rule.*,
+ERROR,ERROR:.*,
+ERROR,Error:.*,
+ERROR,ERROR\t.*,
+ERROR,^.*\s*elf2e32\s*:\s*Error\s*:\s*,
+ERROR,.*[Nn]o such file or directory\s*.*,
 ERROR,Exception: [A-Z0-9_]+.*,
 ERROR,.*target .* given more than once in the same rule.*,
-ERROR,^ERROR:.*,
-ERROR,^ERROR EC\d+:.*,
+ERROR,ERROR EC\d+:.*,
 ERROR,Errors caused tool to abort..*,
-ERROR,.*no rule to make.*,
-ERROR,^ERROR\t.*,
+ERROR,ERROR\t.*,
 ERROR,.*Traceback \(most recent call last\).*,
-ERROR,^Application encountered an unexpected error\.\s*Stopping\.\s*,
-ERROR,^Unable to write dump file .+,
-ERROR,^Unable to connect to CM: .*,
-ERROR,^.*: Incorrect slash in .*,
-ERROR,^.*: Incorrect case for epoc32 tree in .*,
-ERROR,^.*: Incorrect case versus exclusion list in .*,
+ERROR,Application encountered an unexpected error\.\s*Stopping\.\s*,
+ERROR,Unable to write dump file .+,
+ERROR,Unable to connect to CM: .*,
+ERROR,.*: Incorrect slash in .*,
+ERROR,.*: Incorrect case for epoc32 tree in .*,
+ERROR,.*: Incorrect case versus exclusion list in .*,
 ERROR,The system cannot find the path specified.*,
 CRITICAL,.*[Ww]arning:?\s+(#111-D|#1166-D|#117-D|#128-D|#1293-D|#1441-D|#170-D|#174-D|#175-D|#185-D|#186-D|#223-D|#231-D|#257-D|#284-D|#368-D|#414-D|#430-D|#47-D|#514-D|#546-D|#68-D|#69-D|#830-D|#940-D|#836-D|A1495E|L6318W|C2874W|C4127|C4355|C4530|C4702|C4786|LNK4049).*,
-WARNING,^(\d+\))?\s.*WARNING:.*,
-WARNING,^MAKEDEF WARNING:.*,
-WARNING,.*\\\\(?)\(\d+\)\s:\sWarning:\s\(\d+\),
-WARNING,^(BLDMAKE |MAKEDEF )?WARNING:.*,
+WARNING,.*\\\\(?)\(\d+\)\s:\sWarning:\s\(\d+\).*,
+WARNING,(\d+\))?\s.*WARNING:.*,
+WARNING,(BLDMAKE |MAKEDEF )?WARNING:.*,
 WARNING,.*\(\d+\) : warning C.*,
 WARNING,.*\d+: warning:.*,
 WARNING,.*Usage Warning:.*,
 WARNING,.*mwld.exe:.*,
-WARNING,^Command line warning.*,
+WARNING,Command line warning.*,
 WARNING,.*ERROR: bad relocation:.*,
-WARNING,^(\d+) warning.*,
+WARNING,(\d+) warning.*,
 WARNING,.*EventType:\s+Error\s+Source:\s+SweepNT.*,
-WARNING,^WARN\t.*,
+WARNING,WARN\t.*,
 WARNING,.*LINK : warning.*,
+WARNING,.*\s*elf2e32\s*:\s*Warning\s*:\s*,
+WARNING,Warning:.*,
+REMARK,"\"".*\""\, line \d+: Warning: +(.\d+.*?):.*",
 REMARK,.*Command line warning D4025 : .*,
-REMARK,^REMARK: .*,
-REMARK,^EventType:\s+Error\s+Source:\s+GNU\s+Make.*,
-REMARK,".*:\d+: warning: cannot find matching deallocation function""r""((:\d+)*: note: ).*",
-INFO,^INFO:.*,
-ERROR,"\""(.*)\"" , line (\d+): (Error: +(.\d+.*?):.*)$",
-WARNING,"line \d+: Warning:', r':\s+warning\s+\w+:.*",
-WARNING,"\""(.*)\""\, line (\d+): (Warning: +(?!A1495E)(.\d+.*?):.*)$",
\ No newline at end of file
+REMARK,REMARK: .*,
+REMARK,EventType:\s+Error\s+Source:\s+GNU\s+Make.*,
+REMARK,".*:\d+: warning: cannot find matching deallocation function.*",
+REMARK,(:\d+)*: note: .*,
+INFO,INFO:.*,
+WARNING,"line \d+: Warning:'\, r':\s+warning\s+\w+:.*",
+WARNING,"\""(.*)\""\, line (\d+): (Warning: +(?!A1495E)(.\d+.*?):.*)",
+WARNING,Warning\s*:\s*.*,
+ERROR,.*Error\s*:\s*.*,
\ No newline at end of file
--- a/buildframework/helium/config/signaling_config_default.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/config/signaling_config_default.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -106,6 +106,10 @@
     <hlm:signalInput id="raptorErrorSignalInput" failbuild="now">
         <hlm:notifierListRef refid="defaultFailNotifier" />
     </hlm:signalInput>
+    
+    <hlm:signalInput id="coveritySignalInput" failbuild="now">
+        <hlm:notifierListRef refid="defaultFailNotifier" />
+    </hlm:signalInput>
 
     <hlm:signalInput id="eeRomsSignalInput" failbuild="never">
         <hlm:notifierListRef refid="defaultAlwaysNotifier" />
@@ -157,10 +161,6 @@
         <hlm:notifierListRef refid="fotaSignalInput" />
     </hlm:signalInput>
 
-    <hlm:signalInput id="btSmokeTestNotifySignalInput" failbuild="never">
-        <hlm:notifierListRef refid="defaultFailNotifier" />
-    </hlm:signalInput>
-
     <hlm:signalInput id="archivePolicyErrorSignalInput" failbuild="never">
         <hlm:notifierListRef refid="defaultFailNotifier" />
     </hlm:signalInput>
@@ -200,7 +200,7 @@
 
     <hlm:signalListenerConfig id="preparationSignal" target="prep-fail" message="Errors during preparation">
         <targetCondition>
-            <hlm:hasSeverity severity="error" file="${build.signal.status.dir}/${build.id}_ant_build.log.status.xml" />
+            <hlm:hasSeverity severity="error" file="${build.signal.status.dir}/${build.id}_main.ant*.status.xml" />
         </targetCondition>
         <signalNotifierInput>
             <signalInput refid="preparationSignalInput" />
@@ -212,19 +212,6 @@
         </signalNotifierInput>
     </hlm:signalListenerConfig>
 
-    <hlm:signalListenerConfig id="eeRomsSignal" target="ee-roms" message="Errors happened during ee rom image">
-        <targetCondition>
-            <hlm:hasSeverity severity="error" file="${build.signal.status.dir}/${build.id}_ee_roms.log.status.xml" />
-        </targetCondition>
-        <signalNotifierInput>
-            <signalInput refid="eeRomsSignalInput" />
-            <notifierInput>
-                <fileset dir="${build.log.dir}" >
-                    <include name="**/${build.id}_ee_roms*" />
-                </fileset>
-            </notifierInput>
-        </signalNotifierInput>
-    </hlm:signalListenerConfig>
 
     <hlm:signalListenerConfig id="subconRomsSignal" target="subcon-roms" message="Errors happened during subcon rom image">
         <hlm:targetCondition>
@@ -341,12 +328,6 @@
         </signalNotifierInput>
     </hlm:signalListenerConfig>
 
-    <hlm:signalListenerConfig id="btSmokeTestNotifySignal" target="blacktusk-signal" message="Blacktusk signal">
-        <signalNotifierInput>
-            <signalInput refid="btSmokeTestNotifySignalInput" />
-        </signalNotifierInput>
-    </hlm:signalListenerConfig>
-
     <hlm:signalInput id="archiveErrorSignalInput" failbuild="defer">
         <hlm:notifierListRef refid="defaultFailNotifier" />
     </hlm:signalInput>
--- a/buildframework/helium/config/version.txt	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/config/version.txt	Thu Mar 04 15:10:37 2010 +0200
@@ -1,4 +1,4 @@
 #Helium version - DO NOT EDIT
 #Fri Dec 18 15:07:03 EET 2009
-last.major.helium.version=6.0
-helium.version=7.0
+last.major.helium.version=7.0
+helium.version=8.0
--- a/buildframework/helium/doc/src/.templates/sidebar.html	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/doc/src/.templates/sidebar.html	Thu Mar 04 15:10:37 2010 +0200
@@ -1,7 +1,12 @@
+<h3>Docs for other versions</h3>
+<ul>
+  <li><a href="7.0">Helium 7.0</a></li>
+  <li><a href="6.0">Helium 6.0</a></li>
+</ul>
 
-   <h3>API Search</h3>
-   <form class="search" action="api/search.html" method="get">
-       <input type="text" name="q" size="18" /> <input type="submit" value="Go" />
-       <input type="hidden" name="check_keywords" value="yes" />
-       <input type="hidden" name="area" value="default" />
-   </form>
\ No newline at end of file
+<h3>API Search</h3>
+<form class="search" action="api/search.html" method="get">
+ <input type="text" name="q" size="18" /> <input type="submit" value="Go" />
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+</form>
\ No newline at end of file
--- a/buildframework/helium/doc/src/api/allmacros-frame.html.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/doc/src/api/allmacros-frame.html.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -38,7 +38,7 @@
 <table border="0" width="100%" summary="">
     <tr>
         <td style="white-space: nowrap">
-        <#assign macrolist=doc.antDatabase.project.macro.name?sort>
+        <#assign macrolist=doc['antDatabase/*/macro'].name?sort>
         <#list macrolist as macrovar>
             <font class="frameitemfont">
                 <a href="macro-${macrovar}.html" title="${macrovar}" target="classframe">${macrovar}</a>
--- a/buildframework/helium/doc/src/api/allproperties-frame.html.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/doc/src/api/allproperties-frame.html.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -37,7 +37,7 @@
     <table border="0" width="100%" summary="">
     <tr>
     <td style="white-space: nowrap">
-    <#assign propertylist=data.heliumDataModel.property.name?sort>
+    <#assign propertylist=doc.antDatabase.project.property.name?sort>
     <#list propertylist as propertyvar>
     <font class="frameitemfont">
     <a href="property-${propertyvar}.html" title="${propertyvar}" target="classframe">${propertyvar}</a>
--- a/buildframework/helium/doc/src/api/api.ftllib	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/doc/src/api/api.ftllib	Thu Mar 04 15:10:37 2010 +0200
@@ -155,6 +155,8 @@
 <#-- Macros for recursively handling random HTML elements inside documentation elements. -->
 <#macro tt> <tt><#recurse></tt> </#macro>
 
+<#macro div><#recurse></#macro>
+
 <#macro p><p><#recurse></p></#macro>
 
 <#macro ul><ul><#recurse></ul></#macro>
--- a/buildframework/helium/doc/src/api/deprecated-list.html.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/doc/src/api/deprecated-list.html.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -29,27 +29,26 @@
     </font>
     <br/>
 
+    <#assign targetInfo = {}>
+    <#list doc.antDatabase.project.target as target>
+        <#assign targetInfo = targetInfo + {target.name: target.deprecated}>
+    </#list>
     <table border="0" width="100%" summary="">
-    <tr>
-    <td style="white-space: nowrap">
-    <#assign targetlist=doc.antDatabase.project.target.name?sort>
-    <#list targetlist as targetvar>
-    
-      <#list doc.antDatabase.project.target as targetref>
-        <#if targetvar == targetref.name>
-          <#if targetref.deprecated?size &gt; 0>
-          <font class="frameitemfont">
-              <a href="target-${targetvar}.html" title="${targetvar}" target="classframe">${targetvar}</a>
-              <br/>${targetref.deprecated}
-          </font>
-          <br/>
-          </#if>
+        <#list targetInfo?keys?sort as name>
+        <#if targetInfo[name]?length &gt; 0>
+        <tr>
+            <td style="white-space: nowrap">
+            <font class="frameitemfont">
+                <a href="target-${name}.html" title="${name}" target="classframe">${name}</a>
+                <br/>
+            </font>
+            </td>
+            <td style="white-space: nowrap">
+            <#recurse targetInfo[name]>
+            </td>
+        </tr>
         </#if>
-      </#list>
-    
-    </#list>
-    </td>
-    </tr>
+        </#list>
     </table>
 
     <br/>
@@ -58,25 +57,26 @@
     </font>
     <br/>
 
+    <#assign propertyInfo = {}>
+    <#list doc.antDatabase.project.property as property>
+        <#assign propertyInfo = propertyInfo + {property.name: property.deprecated}>
+    </#list>
     <table border="0" width="100%" summary="">
-    <tr>
-    <td style="white-space: nowrap">
-    <#assign propertylist=data.heliumDataModel.property.name?sort>
-    <#list propertylist as propertyvar>
-      <#list data.heliumDataModel.property as propertyref>
-      <#if propertyvar == propertyref.name>
-        <#if propertyref.deprecated?size &gt; 0>
-        <font class="frameitemfont">
-        <a href="property-${propertyvar}.html" title="${propertyvar}" target="classframe">${propertyvar}</a>
-        <br/>${propertyref.deprecated}
-        </font>
-        <br/>
+        <#list propertyInfo?keys?sort as name>
+        <#if propertyInfo[name]?length &gt; 0>
+        <tr>
+            <td style="white-space: nowrap">
+            <font class="frameitemfont">
+                <a href="property-${name}.html" title="${name}" property="classframe">${name}</a>
+                <br/>
+            </font>
+            </td>
+            <td style="white-space: nowrap">
+            <#recurse propertyInfo[name]>
+            </td>
+        </tr>
         </#if>
-      </#if>
-      </#list>
-    </#list>
-    </td>
-    </tr>
+        </#list>
     </table>
 
 
--- a/buildframework/helium/doc/src/api/index-1.html.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/doc/src/api/index-1.html.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -28,7 +28,7 @@
     <h1>Index</h1>
     <dl>
         <#assign indexlist = {}>
-        <#list data.heliumDataModel.property.name as propertyName>
+        <#list doc.antDatabase.project.property.name as propertyName>
             <#assign indexlist = indexlist + {propertyName: "property"}>
         </#list>
         <#list doc.antDatabase.project.target.name as targetName>
--- a/buildframework/helium/doc/src/api/macro.html.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/doc/src/api/macro.html.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -20,7 +20,7 @@
 ============================================================================
 -->
 <#include "api.ftllib"/>
-<#list doc.antDatabase.project.macro as macro>
+<#list doc['antDatabase/*/macro'] as macro>
 <@pp.changeOutputFile name="macro-${macro.name}.html" />
 
 <@helium_api_header title="Macro ${macro.name}"/>
@@ -29,12 +29,17 @@
 
 <h2>Macro ${macro.name}</h2>
 
+<b>Scope: </b>${macro.scope}<br/>
+
+<p><b>Description</b></p>
+<p>${macro.description}</p>
+
 <p><b>Location</b></p>
 <p><@helium_api_location_path location="${macro.location}"/></p>
 
 <hr/>
 
-<h3>Description</h3>
+<h3>Documentation</h3>
 <p>
 <#recurse macro.documentation>
 </p>
@@ -43,6 +48,11 @@
 <p>Example: <pre>${macro.usage}</pre></p>
 
 <hr/>
+
+<h3>Source code</h3>
+<pre>
+    ${macro.source?html}
+</pre>
    
 <@helium_api_html_footer/>
 
--- a/buildframework/helium/doc/src/api/overview-frame.html.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/doc/src/api/overview-frame.html.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -50,21 +50,22 @@
     </font>
     <p/>
     
-    <font size="+1" class="frameheadingfont">Projects</font>
+    <p>
+    <font class="frameheadingfont"><b>Packages</b></font>
+    <br/>
+    <#assign packagelist=doc.antDatabase.package.name?sort>
+    <#list packagelist as package>
+        <font class="frameitemfont"><a href="package-frame-${package}.html" target="packageframe">${package}</a></font>
+        <br/>
+    </#list>
+    </p>
+    
+    <font class="frameheadingfont"><b>Projects</b></font>
     <br/>
     <#assign projectlist=doc.antDatabase.project.name?sort>
     <#list projectlist as project>
-    <font class="frameitemfont"><a href="project-frame-${project}.html" target="packageframe">${project}</a></font>
-    <br/>
-    </#list>
-    
-    <p/>
-    <font size="+1" class="frameheadingfont">Property groups</font>
-    <br/>
-    <#assign grouplist=data.heliumDataModel.group.name?sort>
-    <#list grouplist as group>
-    <font class="frameitemfont"><a href="propertygroups-frame-${group}.html" target="packageframe">${group}</a></font>
-    <br/>
+        <font class="frameitemfont"><a href="project-frame-${project}.html" target="packageframe">${project}</a></font>
+        <br/>
     </#list>
     
     
@@ -75,4 +76,6 @@
     <p/>
     &#160;
 </body>
-</html>
\ No newline at end of file
+</html>
+
+
--- a/buildframework/helium/doc/src/api/overview-summary.html.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/doc/src/api/overview-summary.html.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -33,11 +33,43 @@
     </p>
     
     <ul>
+        <li><a href="#packages">Packages</a></li>
         <li><a href="#projects">Projects</a></li>
-        <li><a href="#propertygroups">Property groups</a></li>
     </ul>
     
-    <h2><a name="projects">Projects</a></h2>
+    <h2><a name="packages">Packages</a></h2>
+    <p>
+    Helium Ant project files are grouped into packages of related functionality.
+    </p>
+    <table class="docutils">
+        <tr>
+            <th class="head">Package</th>
+            <th class="head">Projects</th>
+            <th class="head">Description</th>
+        </tr>
+        <#assign packageInfo = {}>
+        <#list doc.antDatabase.package as package>
+            <#assign packageInfo = packageInfo + {package.name: package}>
+        </#list>
+        <#list packageInfo?keys?sort as name>
+            <tr>
+                <td valign="top"><a href="package-${name}.html" target="classframe">${name}</a></td>
+                <td>
+                    <#assign projectInfo = {}>
+                    <#list packageInfo[name].projectRef as projectRef>
+                        <#assign projectInfo = projectInfo + {projectRef.name: doc["antDatabase/project[name='${projectRef.name}']"].summary}>
+                    </#list>
+                    <#list projectInfo?keys?sort as name>
+                        <a href="project-${name}.html" project="classframe">${name}</a><br/>
+                    </#list>
+                </td>
+                <td><#recurse packageInfo[name].summary></td>
+            </tr>
+        </#list>
+    </table>
+    <br/>
+    
+    <#--<h2><a name="projects">Projects</a></h2>
     <p>
     Helium is configured into a set of Ant project files that group related functionality.
     </p>
@@ -48,7 +80,7 @@
         </tr>
         <#assign projectInfo = {}>
         <#list doc.antDatabase.project as project>
-            <#assign projectInfo = projectInfo + {project.name: project.documentation}>
+            <#assign projectInfo = projectInfo + {project.name: project}>
         </#list>
         <#list projectInfo?keys?sort as name>
             <tr>
@@ -57,23 +89,8 @@
             </tr>
         </#list>
     </table>
-    <br/>
-    
-    <h2><a name="propertygroups">Property groups</a></h2>
-    <p>
-    Property groups define a set of properties that relate to a specific feature or functionality in Helium.
-    </p>
-    <table class="docutils">
-        <tr>
-            <th class="head">Property group name</th>
-            <th class="head">Description</th>
-        </tr>
-        <#list data.heliumDataModel.group as group>
-            <tr>
-                <td><a href="propertygroup-${group.name}.html" target="classframe">${group.name}</a></td>
-                <td>${group.description}</td>
-            </tr>
-        </#list>
-    </table>    
+    <br/>-->
 
-<@helium_api_html_footer/>
\ No newline at end of file
+<@helium_api_html_footer/>
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/doc/src/api/package-frame.html.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,54 @@
+<#--
+============================================================================ 
+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:
+
+============================================================================
+-->
+<#list doc.antDatabase.package as package>
+<@pp.changeOutputFile name="package-frame-${package.name}.html" />
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE HTML PUBLIC "-//w3c//dtd xhtml 1.0 strict//en"
+      "http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<#include "api.ftllib"/>
+
+<@helium_api_head_section title="package (Helium API)"/>
+
+<body>
+    <table border="0" width="100%" summary="">
+    <tr>
+        <td style="white-space: nowrap">
+            <font size="+1" class="frameheadingfont">Projects</font>&#160;
+            <font class="frameitemfont">
+            <br/>
+    
+            <#assign projectlist=package.projectRef.name?sort>
+            <#list projectlist as project>
+            <a href="project-${project}.html" title="" target="classframe">${project}</a>
+            <br/>
+            </#list>
+            </font>
+        </td>
+    </tr>
+    </table>
+</body>
+
+</html>
+
+</#list>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/doc/src/api/package.html.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,62 @@
+<#--
+============================================================================ 
+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:
+
+============================================================================
+-->
+<#include "api.ftllib"/>
+
+<#list doc.antDatabase.package as package>
+<@pp.changeOutputFile name="package-${package.name}.html" />
+
+<@helium_api_header title="package ${package.name}"/>
+
+
+<h2>package ${package.name}</h2>
+
+
+<h3>Documentation</h3>
+<p>
+${package.documentation}
+</p>
+
+
+<h3>Projects</h3>
+<table class="docutils">
+    <tr>
+        <th class="head">Project name</th>
+        <th class="head">Description</th>
+    </tr>
+    <#assign projectInfo = {}>
+    <#list package.projectRef as projectRef>
+        <#assign projectInfo = projectInfo + {projectRef.name: doc["antDatabase/project[name='${projectRef.name}']"].summary}>
+    </#list>
+    <#list projectInfo?keys?sort as name>
+        <tr>
+            <td><a href="project-${name}.html" project="classframe">${name}</a></td>
+            <td><#recurse projectInfo[name]></td>
+        </tr>
+    </#list>
+</table>
+
+
+<@helium_api_html_footer/>
+
+</#list>
+
+
--- a/buildframework/helium/doc/src/api/project.html.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/doc/src/api/project.html.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -36,7 +36,7 @@
 </#if>
 <h3>Description</h3>
 <p>
-<#recurse project.documentation>
+${project.description}
 </p>
 <p/>
 <hr/>
@@ -45,22 +45,24 @@
 <h3>Targets</h3>
 <table class="docutils">
     <tr>
-        <th class="head">Target name</th><th class="head">Description</th>
+        <th class="head">Target name</th>
+        <th class="head">Description</th>
     </tr>
     <#assign targetInfo = {}>
     <#list project.target as target>
-        <#assign targetInfo = targetInfo + {target.name: target.documentation}>
+        <#assign targetInfo = targetInfo + {target.name: target.summary}>
     </#list>
     <#list targetInfo?keys?sort as name>
         <tr>
-            <td><a href="target-${name}.html" target="classframe">${name}</a></td><td><#recurse targetInfo[name]></td>
+            <td><a href="target-${name}.html" target="classframe">${name}</a></td>
+            <td><#recurse targetInfo[name]></td>
         </tr>
     </#list>
 </table>
 
 <h3>Properties</h3>
 
-<#assign propertymodel=data.heliumDataModel.property>
+<#assign propertymodel=doc.antDatabase.project.property>
 <#assign propertylist=project.property>
 <#list propertymodel as propertyInModel>
 <#list propertylist as propertyvar>
@@ -73,8 +75,8 @@
 </#list>
 </#list>
 
-<h3>File Includes</h3>
-<#assign filelist=project.fileDependency>
+<h3>Project dependencies</h3>
+<#assign filelist = project.projectDependency>
 <#list filelist as filelistvar>
 <font class="frameitemfont">
 ${filelistvar}
@@ -82,7 +84,7 @@
 <br/>
 </#list>
 
-<h3>Python Modules</h3>
+<#--<h3>Python Modules</h3>
 <#assign pymodulelist=project.pythonDependency>
 <#list pymodulelist.module as pymodulevar>
   <#if pymodulevar?size &gt; 0>        
@@ -91,7 +93,7 @@
     </font>  
   </#if>
 <br/>
-</#list>
+</#list>-->
         
 
 
--- a/buildframework/helium/doc/src/api/properties-table.html.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/doc/src/api/properties-table.html.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -25,32 +25,36 @@
 
 <script type="text/javascript" src="properties-table.js"></script>
 
+    <#assign propertyInfo = {}>
+    <#list doc.antDatabase.project.property as property>
+        <#assign propertyInfo = propertyInfo + {property.name: property}>
+    </#list>
+        
     <center>
-    <h1>
-    Properties table(Sortable)
+    <h1>Properties table(Sortable)
     </h1>
+    
     <table class="sortable" border="1" cellpadding="5" ID="tableSort">
-    <tr>
-    <th onmouseover="this.style.cursor = 'pointer';"><font color="blue"><u>Property</u></font></th>
-    <th onmouseover="this.style.cursor = 'pointer';"><font color="blue"><u>Description</u></font></th>
-    <th onmouseover="this.style.cursor = 'pointer';"><font color="blue"><u>Edit Status</u></font></th>
-    <th onmouseover="this.style.cursor = 'pointer';"><font color="blue"><u>Type</u></font></th>
-    </tr>
-    <#assign propertySort=data.heliumDataModel.property.name?sort>
-    <#assign propertyTable=data.heliumDataModel.property>
-    <#list propertySort as propertyName>
-    <#list propertyTable as property>
-    <#if propertyName == property.name>
-    <tr>
-    <td><a href="property-${property.name}.html" title="${property.name}" target="classframe">${property.name}</a></td>
-    <td>${property.description}</td>
-    <td>${property.editStatus}</td>
-    <td>${property.type}</td>
-    </tr>
-    </#if>
-    </#list>
-    </#list>
+        <tr>
+            <th onmouseover="this.style.cursor = 'pointer';"><font color="blue"><u>Property</u></font></th>
+            <th onmouseover="this.style.cursor = 'pointer';"><font color="blue"><u>Description</u></font></th>
+            <th onmouseover="this.style.cursor = 'pointer';"><font color="blue"><u>Scope</u></font></th>
+            <th onmouseover="this.style.cursor = 'pointer';"><font color="blue"><u>Editable</u></font></th>
+            <th onmouseover="this.style.cursor = 'pointer';"><font color="blue"><u>Type</u></font></th>
+        </tr>
+        <#list propertyInfo?keys?sort as name>
+        <tr>
+            <td><a href="property-${name}.html" title="${name}" target="classframe">${name}</a></td>
+            <td>${propertyInfo[name].summary}</td>
+            <td>${propertyInfo[name].scope}</td>
+            <td>${propertyInfo[name].editable}</td>
+            <td>${propertyInfo[name].type}</td>
+        </tr>
+        </#list>
     </table>
 
 
-<@helium_api_html_footer/>
\ No newline at end of file
+<@helium_api_html_footer/>
+
+
+
--- a/buildframework/helium/doc/src/api/property.html.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/doc/src/api/property.html.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -21,7 +21,7 @@
 -->
 <#include "api.ftllib"/>
 
-<#list data.heliumDataModel.property as property>
+<#list doc.antDatabase.project.property as property>
 <@pp.changeOutputFile name="property-${property.name}.html" />
 
 <@helium_api_header title="property ${property.name}"/>
@@ -29,31 +29,20 @@
 
     
 <h2>Property ${property.name}</h2>
-<b>Type</b>
-<p>
-${property.type}
-</p>
-<b>Edit status</b>
-<p>
-${property.editStatus}
-</p>
-<b>Default value</b>
-<#assign ifDefined = false>
-<#list doc.antDatabase.project.property as propDatabase>
-    <#if propDatabase.name == property.name>       
-        <p>
-        <tt class="docutils literal">${propDatabase.defaultValue}</tt>
-        </p>
-        <#assign ifDefined = true>
-        <#break>
-    </#if>
-</#list>
-<#if ifDefined == false>
-    <p>
-    None defined.
-    </p>
-</#if>
-<#if property.deprecated?size &gt; 0>
+
+<b>Type: </b>${property.type}<br/>
+<b>Scope: </b>${property.scope}<br/>
+<b>Editable: </b>${property.editable}<br/>
+
+<b>Default value: </b>
+<#assign defaultValue = "Not defined">
+<#if property.defaultValue?size &gt; 0>
+    <#assign defaultValue = property.defaultValue>
+</#if>      
+<tt class="docutils literal">${defaultValue}</tt>
+<br/>
+
+<#if property.deprecated?length &gt; 0>
     <b>Deprecated</b>
     <p>
     ${property.deprecated}
@@ -62,11 +51,18 @@
 
 <hr/>
 
-<h3>Description</h3>
+<h3>Documentation</h3>
 <p>
-${property.description}
+${property.documentation}
 </p>
 
+<hr/>
+
+<h3>Source code</h3>
+<pre>
+    ${property.source?html}
+</pre>
+
 
 
 <@helium_api_html_footer/>
--- a/buildframework/helium/doc/src/api/propertygroup.html.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/doc/src/api/propertygroup.html.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -21,7 +21,7 @@
 -->
 <#include "api.ftllib"/>
 
-<#list data.heliumDataModel.group as group>
+<#list doc.antDatabase.project.group as group>
 <@pp.changeOutputFile name="propertygroup-${group.name}.html" />
 
 <@helium_api_header title="Property group ${group.name}"/>
@@ -48,12 +48,12 @@
         <td colspan="3">User editable properties</td>
     </tr>
     <#list propertyList as property>
-        <#list data.heliumDataModel.property as propDataModel>
+        <#list doc.antDatabase.project.property as propDataModel>
             <#if property == propDataModel.name>
-                <#if propDataModel.editStatus == "must" || propDataModel.editStatus == "recommended" || propDataModel.editStatus == "allowed">
+                <#if propDataModel.editable == "must" || propDataModel.editable == "recommended" || propDataModel.editable == "allowed">
                     <tr>
                         <td><a href="property-${property}.html" title="${propDataModel.description}" target="classframe"><tt class="docutils literal">${property}</tt></a></td>
-                        <td><a href="help.html" title="Help" target="classframe">${propDataModel.editStatus}</a></td>
+                        <td><a href="help.html" title="Help" target="classframe">${propDataModel.editable}</a></td>
                         <td>
                             <#if propDataModel.deprecated?size &gt; 0>
                                 ${propDataModel.deprecated}
@@ -68,12 +68,12 @@
         <td colspan="3">Internal properties</td>
     </tr>
     <#list propertyList as property>
-        <#list data.heliumDataModel.property as propDataModel>
+        <#list doc.antDatabase.project.property as propDataModel>
             <#if property == propDataModel.name>
-                <#if propDataModel.editStatus == "never" || propDataModel.editStatus == "discouraged">
+                <#if propDataModel.editable == "never" || propDataModel.editable == "discouraged">
                     <tr>
                         <td><a href="property-${property}.html" title="${propDataModel.description}" target="classframe"><tt class="docutils literal">${property}</tt></a></td>
-                        <td><a href="help.html" title="Help" target="classframe">${propDataModel.editStatus}</a></td>
+                        <td><a href="help.html" title="Help" target="classframe">${propDataModel.editable}</a></td>
                         <td>
                             <#if propDataModel.deprecated?size &gt; 0>
                                 ${propDataModel.deprecated}
--- a/buildframework/helium/doc/src/api/propertygroups-frame.html.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/doc/src/api/propertygroups-frame.html.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -19,7 +19,7 @@
 
 ============================================================================
 -->
-<#list data.heliumDataModel.group as group>
+<#list doc.antDatabase.project.group as group>
 <@pp.changeOutputFile name="propertygroups-frame-${group.name}.html" />
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE HTML PUBLIC "-//w3c//dtd xhtml 1.0 strict//en"
--- a/buildframework/helium/doc/src/api/target-dependencies.dot.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/doc/src/api/target-dependencies.dot.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -85,7 +85,7 @@
     "${targetMain.name}" -> "${targetMain.dependency[depTotal-1]}" [color=limegreen];
     </#if>
     <#list doc.antDatabase.project.target as targetDep>
-        <#if targetDep.name == targetMain.dependency && targetDep.name != "blacktusk-signal">
+        <#if targetDep.name == targetMain.dependency>
         <@targetFunc targetMain=targetDep caller=1 />
         </#if>
     </#list>
--- a/buildframework/helium/doc/src/api/target.html.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/doc/src/api/target.html.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -30,6 +30,11 @@
     
 <h2>Target ${target.name}</h2>
 
+<b>Scope: </b>${target.scope}<br/>
+
+<p><b>Description</b></p>
+<p>${target.description}</p>
+
 <p><b>Location</b></p>
 <p><@helium_api_location_path location="${target.location}"/></p>
 
@@ -43,9 +48,17 @@
 <#if target.ifDependency?length == 0 && target.unlessDependency?length == 0>
 <p>No conditions on target execution.</p>
 </#if>
+
+<#if target.deprecated?length &gt; 0>
+    <h3>Deprecated :</h3>
+    <p>
+    ${target.deprecated}
+    </p>
+</#if>
 <hr/>
 
-<h3>Description</h3>
+
+<h3>Documentation</h3>
 <p>
 <#recurse target.documentation>
 </p>
@@ -74,49 +87,11 @@
 <h3>Property dependencies</h3>
 
 <#assign propertyList=target.propertyDependency?sort>
-
-<p> 
-<table class="docutils" width="50%">
-    <tr>
-        <th class="head">Name</th><th class="head">Edit status</th>
-    </tr>
-    <tr>
-        <td colspan="2">User editable properties</td>
-    </tr>
+<ul>
     <#list propertyList as property>
-        <#list data.heliumDataModel.property as propDataModel>
-            <#if property == propDataModel.name>
-                <#if propDataModel.editStatus == "must" || propDataModel.editStatus == "recommended" || propDataModel.editStatus == "allowed">
-                    <tr>
-                        <td><a href="property-${property}.html" title="${propDataModel.description}" target="classframe"><tt class="docutils literal">${property}</tt></a></td><td><a href="help.html" title="Help" target="classframe">${propDataModel.editStatus}</a></td>
-                    </tr>
-                </#if>
-            </#if>
-        </#list>
+    <li>${property}</li>
     </#list>
-    <tr>
-        <td colspan="2">Internal properties</td>
-    </tr>
-    <#list propertyList as property>
-        <#list data.heliumDataModel.property as propDataModel>
-            <#if property == propDataModel.name>
-                <#if propDataModel.editStatus == "never" || propDataModel.editStatus == "discouraged">
-                    <tr>
-                        <td><a href="property-${property}.html" title="${propDataModel.description}" target="classframe"><tt class="docutils literal">${property}</tt></a></td><td><a href="help.html" title="Help" target="classframe">${propDataModel.editStatus}</a></td>
-                    </tr>
-                </#if>
-            </#if>
-        </#list>
-    </#list>
-</table>
-</p>
-
-<#if target.deprecated?size &gt; 0>
-    <h3>Deprecated :</h3>
-    <p>
-    ${target.deprecated}
-    </p>
-</#if>
+</ul>
 <hr/>
 
 
--- a/buildframework/helium/doc/src/api_changes.rst.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/doc/src/api_changes.rst.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -70,8 +70,8 @@
     </#if>
 </#list>
 
-Properties removed
-==================
+Properties removed or made private
+==================================
 <#list doc.apiChanges.property?sort as property>
     <#if property.@state == 'removed'>
 * ${property}
--- a/buildframework/helium/doc/src/default.css	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/doc/src/default.css	Thu Mar 04 15:10:37 2010 +0200
@@ -733,6 +733,7 @@
     border-left: none;
     border-right: none;
     overflow: auto;
+    word-wrap: break-word;
 }
 
 td.linenos pre {
--- a/buildframework/helium/doc/src/developer_guide.rst	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/doc/src/developer_guide.rst	Thu Mar 04 15:10:37 2010 +0200
@@ -22,7 +22,48 @@
 
 __ http://docutils.sourceforge.net/rst.html
 
-HTML documentation is generated in ``/helium/build/doc`` using the ``hlm doc`` command.
+HTML documentation is generated in ``/helium/build/doc`` using the ``hlm docs`` command.
+
+API documentation
+-----------------
+
+The Helium API documentation is generated directly from the Ant source files. Additional documentation for Ant objects (properties, targets, macros, etc) and special markup is defined in a similar style to JavaDoc, following these conventions:
+
+* Additional documentation is written as XML comments.
+* Typically the preceeding comment for an Ant object is assumed to relate to that object. A comment can be definitively noted as a Ant documentation comment by adding a ``*`` character at the start.
+
+  * Project comments must have the ``*`` character in order to avoid assuming that the copyright comment block is project documentation::
+  
+    <!--* comment text -->
+
+* The text format of the documentation can be formatted in MediaWiki format.
+* The first sentence of the comment is taken as the summary for short text fields. The rest of the text is the full documentation.
+* Specific metadata tags are defined using ``@``. Each tag should be on a newline and all tags should be after the general documentation paragraphs::
+
+    <!--* comment text
+    
+    @scope private
+    -->
+    
+* A number of tags are supported:
+
+.. csv-table:: Ant comment tags
+   :header: "Tag", "Applies to", "Description"
+
+   "scope", "All elements", "The scope or visibility of the element. Valid values are ``public`` (default), ``protected`` and ``private``."
+   "editable", "All types", "Whether this element should be overridden or defined by the user. Valid values are ``required`` and ``optional``"
+   "type", "Properties", "The type of the property value. Valid values are ``string`` (default), ``integer``, ``boolean``."
+   "deprecated", "All elements", "Documents that the element is deprecated and may be removed in a future release. The text should describe what to use instead."
+
+* Some properties (and other types) are only defined by the user, so there is no default declaration inside Helium. These can be documented completely within a comment::
+
+    <!--* @property name.of.property
+    This property must be defined by the user.
+    
+    @scope public
+    @editable required
+    @type integer
+    -->
 
 
 .. index::
@@ -74,9 +115,6 @@
 ``/external``
     Applications and libraries that are maintained outside of the Helium team.
 
-``/testconfig``
-    Test build configurations.
-
 ``/tests``
     Test data for unit tests. All unit tests are co-located with the code under test.
 
@@ -109,40 +147,6 @@
 
 
 .. index::
-  single: XML Schemas
-
-XML schemas
-===========
-
-A ``validate-xml`` command can be run to check the various Helium XML files against their schema (this is run in the automated unit tests).
-
-There are schema files for these XML file types:
-
-* Helium data model.
-
-
-.. index::
-  single: Helium Data Model
-
-Helium data model
-=================
-
-The Helium data model defines the configuration elements needed to configure Helium. It is defined in the file ``/config/helium_data_model.xml`` and contains:
-
-* A list of configuration elements with metadata:
-
-  * Name. Defines the name of the configuration element. Required.
-  * Type. Defines the type of the configuration element, i.e. if the configuration element is a string, integer, boolean or flag. Required.
-  * Usage. Defines the typical usage of the property. Must one of "must", "recommended", "allowed", "discouraged", "never". Required.
-  * Description. This should be in .rst format. Required.
-  * Deprecated. This is a optional element that defines the property is deprecated.
-
-* A list of groups that group together related configuration elements and their usage requirements within that group, i.e. if that feature is to be used, what configuration is required and what is optional. All required configuration elements in a group must be defined.
-  
-Any Ant configuration can be checked against the model by running ``hlm check``.
-
-
-.. index::
   single: Assertions
 
 Assertions
--- a/buildframework/helium/doc/src/feature_list.rst	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/doc/src/feature_list.rst	Thu Mar 04 15:10:37 2010 +0200
@@ -208,15 +208,6 @@
 
 Localisation
 ------------
-
-* S60 3.2.x support
-
-  * Support for S60 localisation tool.
-  * Support for localise resources tool which localises using in EBS / EC based on the build system.
-  * Possibility to provide a different set of configuration for each region.
-  * Locales_xx.iby generation that support override directive from SP.
-  * Cenrep generation for variants (languagepack and customer).
-  * Languagepack automation (Should be moved to SP/iMaker in the future).
   
 * S60 5.0.x support
 
@@ -229,18 +220,8 @@
 iMaker image creation
 ---------------------
 
-* Creates EE images.
-* Image creation using EBS / EC based on the build system
-* Language pack creation/automation.
-* Customer variant creation.
-* Creates SW version string for the images and override the one in ROM. (through Helium/iMaker feature).
-* Firmware ID generation and automatic inclusion (through iMaker feature).
-* Debug image creation (through Helium/iMaker feature).
-* Core image creation.
-* Auto-detection of variant folder.
-* Variation from variant folder (no export/clean-export to epoc32).
-* Automatic region switching.
-* (Future feature) Support for languagepack automation (through iMaker, still RD feature at the moment).
+* Build information generation for iMaker (as an input to the naming convention).
+* Accelerated image creation using local parallelization or ECA cluster
 
 .. index::
   single: feature - Release Notes Creation
@@ -296,15 +277,6 @@
 ==============
 
 .. index::
-  single: feature - Interation
-
-Integration
------------
-
-* Overlays can be validated to check the need for merging.
-* Automated merge task creation.
-
-.. index::
   single: feature - Miscallaneous
 
 Miscellaneous
@@ -336,7 +308,6 @@
 -----------------------------
 * Generation of FOTA packages between 2 published releases.
 * Generation of FOTA toggle packages for TRUE test.
-* Support of MakeUPCT: generation of _fota.cnf and .fota.conf files.
 
 .. index::
   single: feature - Data packaging
@@ -359,20 +330,6 @@
 * UDA creation using iMaker
 * Mass Memory using ImageTool
 
-.. index::
-  single: feature - RnD SDK creation
-
-RnD SDK creation
-----------------
-
-* RndSDK creation tool is used to create an SDK using S60 released Rnd environment.
-* It generates the eclipse based html-documentation for the APIs present in the Rnd Environment.
-* The APIs in the S60 Rnd environment can be filtered, based on the required API categories Public, Domain etc.
-* The output is a zip file containing the Rnd SDK environment, along with the documentation of the APIs present in it.
-* The developer can extract and use the RndSDK for further development.
-
-.. index::
-  single: feature - API Analysis
 
 NSIS installer file creation
 ----------------------------
@@ -381,13 +338,6 @@
 
   * Plugins include environment setting modification.
 
-API analysis
-------------
-
-* API Analysis takes input from apidescr.xml, generated by the Analysis tool from S60 build environment and generates count of SDK, Domain and Internal APIs for diamonds logging.
-* The analysis can be run as part of the RnD SDK or independently. 
-* API  tests are supported by `Testing`_
-
 .. index::
   single: feature - Releasing
 
@@ -395,4 +345,3 @@
 ---------
 
 * Upload content to network.
-* Release to Grace.
--- a/buildframework/helium/doc/src/helium_overview.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/doc/src/helium_overview.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -106,7 +106,6 @@
             <component>Synergy</component>
             <component>Mercurial</component>
             <component>CodeScanner</component>
-            <component>GRACE CLI</component>
         </row>
         <row>
             <component>Java 1.3.1</component>
@@ -120,7 +119,7 @@
         <colour>#B2BC00</colour>
         <row>
             <component>Java 6</component>
-            <component>Python 2.5</component>
+            <component>Python 2.6</component>
             <component>Perl 5.6</component>
         </row>
     </layer>
--- a/buildframework/helium/doc/src/index.rst.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/doc/src/index.rst.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -79,11 +79,7 @@
    tutorials/configuration/SimplestConfiguration
    tutorials/configuration/UseHlmTasksInConfiguration
    tutorials/rom_image
-   tutorials/variant
    tutorials/qt_build
-<#if !ant?keys?seq_contains("sf")>
-   nokia/blacktusk/howto-setup-blacktusk-with-helium
-</#if>
 
 .. raw:: html
 
@@ -114,18 +110,19 @@
 .. raw:: html
 
    <script type="text/javascript" language="JavaScript"><!--
-   function HideContent(d) {
-   if(d.length < 1) { return; }
-   document.getElementById(d).style.display = "none";
-   }
-   function ShowContent(d) {
-   if(d.length < 1) { return; }
-   document.getElementById(d).style.display = "block";
-   }
-   function ReverseContentDisplay(d) {
-   if(d.length < 1) { return; }
-   if(document.getElementById(d).style.display == "none") { document.getElementById(d).style.display = "block"; }
-   else { document.getElementById(d).style.display = "none"; }
+    function ReverseContentDisplay(d) {
+        if(d.length < 1) { return; }
+    
+         var elem = document.getElementsByTagName('div');
+         for(var i = 0; i < elem.length; i++)
+         {
+             if(elem[i].style.display == "block" && elem[i] != document.getElementById(d)) {
+                 elem[i].style.display = "none";
+             }
+         }
+    
+        if(document.getElementById(d).style.display == "none") { document.getElementById(d).style.display = "block"; }
+        else { document.getElementById(d).style.display = "none"; }
    }
    //--></script>
    <ul><li class="toctree-l1"><a href="javascript:ReverseContentDisplay('stages')">Stages</a></li></ul>
@@ -156,7 +153,6 @@
    :maxdepth: 1
    
 <#if !ant?keys?seq_contains("sf")>
-   nokia/rndsdk_user_manual
    nokia/quality
 </#if>
    manual/debugging
@@ -207,16 +203,14 @@
 ==============================
 
 .. toctree::
+   :maxdepth: 3
+   
+   helium-antlib/index
+   
+.. toctree::
    :maxdepth: 1
    
-   tutorials/configuration/HowtoCreateANewSignal
-   manual/signaling
-   manual/configuringdiamonds
    manual/cruisecontrol
-   manual/antlogging
-* helium-antlib_
-
-.. _helium-antlib: helium-antlib
 
 <#if !ant?keys?seq_contains("sf")>
 Customer docs
--- a/buildframework/helium/doc/src/manual/antlogging.rst	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,105 +0,0 @@
-Configuring Logging
-=====================
-
-Features:
------------------
-* Will be initiated by the ANT Listener.
-* Logging will starts whenever build starts.
-* Helium logging framework offers you to configure the ant logging system for different stages of builds.
-* You can log the build process into seperate ant log files for each stage.
-* You can configure the log system to log different level of information (ex: debug, vebose, error).
-
-The configuration:
------------------
-
-We can configure the stages for which helium should log the build process.
-
-    * Stages
-       
-       * Stages are like preparation, compilation, postbuild etc.. for which we need to log build process. 
-       * Stages will have attributes for start and end targets.
-       * Stages will specify from which target we need log the build process and at which target we need to end logging build process.
-       
-       .. csv-table:: 
-          :header: "Attribute", "Description", "Required"
-   
-              "id", "Name of Stage (preparation, compilation)","Yes"
-              "starttarget", "Name of target to start logging.","Yes"
-              "endtarget", "Name of target to end logging.","Yes"
-      
-    * Stagerecord 
-
-       * Will record/log the build process from start target to end target mentioned in the Stage type.
-       * Need provide attributes like output log file, loglevel.
-       * Supports passwordfilterset datatype. If we need to filter any passwords from specific stage log files.
-       
-       .. csv-table:: 
-          :header: "Attribute", "Description", "Required"
-   
-              "id", "ID for stage record entry.", "Yes"
-              "defaultoutput", "File to record main ant log file" "Yes (should not have stagerefid attribute if stage record has defaultoutput)"
-              "stagerefid", "Stage reference ID. Exactly as given in the Stage", "Yes"
-              "output", "File to record the build process.", "Yes"
-              "loglevel", "Loglevel to record type of information. ex: debug, info, vebose", "No, Default it will be info"
-              "append", "To append the logging into existing file.", "No, Default it will be false"
-
-Example:
------------------
-.. code-block:: xml
-    
-        <hlm:stage id="preparation" starttarget="prep" endtarget="prep"/>
-        <hlm:stage id="compilation" starttarget="compile-main" endtarget="compile-main"/>
-        
-        <hlm:stagerecord id="stage.default" defaultoutput="${build.log.dir}/${build.id}_main.ant.log" loglevel="info" append="true"/>
-        <hlm:stagerecord id="stage.preparation" stagerefid="preparation" output="${build.log.dir}/${build.id}_prep.ant.log" loglevel="info" append="true"/>
-        <hlm:stagerecord id="stage.compilation" stagerefid="compilation" output="${build.log.dir}/${build.id}_compile.ant.log" loglevel="info" append="true"/>
-
-logreplace Task (hlm:logreplace)
------------------
-* LogReplace task will filter out the string from stage logging files.
-* If we need to filter out any user passwords and specific word which should n't be logged can passed to stage logging through this task.
-* Specified string will be filtered out from all the stages logging files.
-* It will not be filtered our by hlm:record task. To filter out the same need to passed to hlm:record task through recorderfilterset or recordfilter.
-
-Example:
------------------
-This example will filter out unix password value from all the stage logging files.
-
-.. code-block:: xml
-
-        <hlm:logreplace regexp="${unix.password}"/>
-
-
-Record Task (hlm:record)
------------------
-* Behaviour is same ANT record task with some addon features.
-* Filerts the logging messages which are passed through the filters to hlm:record task.
-* Will stops the logging happening by listener for any stages and resumes to stage logging once hlm:record task  finishes.
-
-Example:
------------------
-
-Below example
-    * Will sets one recoderfilteset.
-    * Will record the given target/tasks into ${build.id}_stagetest.log file by filtering the regexp mentioned in the recorderfilterset and recordfilter.
-
-.. code-block:: xml
-    
-        <hlm:recordfilterset id="recordfilter.config">
-            <hlm:recordfilter category="info" regexp="ERROR" />
-        </hlm:recordfilterset>
-        
-        <hlm:record name="${build.log.dir}/${build.id}_stagetest.log" action="start" loglevel="info">
-            <hlm:recordfilterset refid="recordfilter.config"/>
-            <hlm:recordfilter category="unix" regexp="${unix.password}" />
-        </hlm:record>
-        
-        ... Call tasks you would like to record the output  ...
-        
-        <hlm:record name="${build.log.dir}/${build.id}_stagetest.log" action="stop" append="true" />
-
-
-    
-    
-    
-
--- a/buildframework/helium/doc/src/manual/configuring.rst	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/doc/src/manual/configuring.rst	Thu Mar 04 15:10:37 2010 +0200
@@ -12,7 +12,7 @@
 
 This describes the key aspects of configuring a Helium build and other aspects of using the Helium build toolkit.
 
-Helium consists of several phases (the stages_ section explains these in detail) these are briefly outlined here:
+Helium consists of several phases (the   stages_ section explains these in detail) these are briefly outlined here:
 
 * pre-build   - performs several checks on the environment and creates the Bill of Materials (BOM) before copying the relevant files from synergy to the build area and unzipping them.
 * build       - compiles the  files.
@@ -105,7 +105,7 @@
 Passwords
 =========
 
-Helium requires access to a few resources that require username and password authentication, like Synergy for SCM operations and a user's network login/password for GRACE upload. To avoid the need for a password dialog request, these details can be entered in a ``.netrc`` file located on the user's HOME drive. The HOME location is one of:
+Helium requires access to a few resources that require username and password authentication, like Synergy for SCM operations. To avoid the need for a password dialog request, these details can be entered in a ``.netrc`` file located on the user's HOME drive. The HOME location is one of:
 
 Windows
   H: drive
@@ -135,10 +135,6 @@
 NOE::
 
   machine noe login <network-username> password <network-password>
-
-GRACE::
-
-  machine grace login <network-username> password <network-password>
   
 Lotus Notes::
 
@@ -284,90 +280,6 @@
     </project>
 
 .. index::
-  single: MC Helium configuration
-
-MC Helium configuration
------------------------
-
-Based on the former MC codeline policy the SAL organisation in MC has used a hierarchical structure for the Helium build configuration files. This is an example configuration that can be used as a guideline.
-
-.. index::
-  single: Product family and product properties
-
-Product family and product properties
-:::::::::::::::::::::::::::::::::::::
-
-These are set in hierarchical structure under mc_build::
-
-    /mc_build
-        /<SAL>
-            /<product>
-                /<variant>
-                
-E.g::
-
-    /mc_build
-        /mc_4032_build
-            mc_4032_build.ant.xml - product family configuration.
-            /PRODUCT
-                PRODUCT.ant.xml - product configuration.
-                /RM247
-                    build.xml - variant configuration.
-                /RM297
-                    build.xml
-            /PRODUCT
-                /RMxxx
-        /mc_5132_build
-            /PRODUCT
-       /teams
-           juno.ant.xml
-
-Ant files at each level contain the configuration for that level. Builds are run from the outermost directories, e.g. RM247 and ``<import>`` statements are used to import the files in the parent directories. The ``mc_4032_build.ant.xml`` file would import ``helium.ant.xml``.
-
-For an example of a product build click here.
-
-.. toctree::
-   :maxdepth: 1
-   
-   product_example.rst
-   
-
-.. index::
-  single: Team properties
-
-.. _`Team-Properties-label`:
-
-Team properties
-:::::::::::::::
-
-For the MC build configurations are a number of properties that are related to a team and/or site. 
-These are all combined in a single configuration file. All the team configuration files are stored under ``/mc/mc_build/teams``. 
-This allows different build configurations to be run in different locations, or handle multiple product family configurations at one site.
-
-In order for this to work in windows environment you may need to set up an environment variable called TEAM. So click 
-start->settings->control panel and double click on 'system' to open the system properties window. Click on the 'advanced' tab and then click the
-'environment variables' tab. Create a new variable preferably under the system varaibles but if you do not have permission to add one here then add
-it to the user variables make the variable name 'TEAM' (note capital letters) and the team name is what ever your team name is.
-
-Also see :ref:`Setting-Team_properties-label`:
-
-
-.. index::
-  single: Setting the team/site
-
-Setting the team/site
-:::::::::::::::::::::
-
-To enable running any build with any team/site configuration, the team must be defined separately from the build configuration files. The team name should be the same as the team configuration file under ``/mc/mc_build/teams`` without the "``.ant.xml``".
-
-The team can be set in one of the following ways (using the example of the ``juno.ant.xml`` file):
-
-* Define a ``TEAM`` environment variable, e.g. ``TEAM=juno``.
-* Add an Ant command line parameter to set the team, e.g::
-
-    hlm product-build -Dteam=juno
-
-.. index::
   single: System definition configuration files
 
 System definition configuration files
@@ -376,7 +288,7 @@
 Sysdef configuration defines the source code you actually want to compile with Helium. More information about the System definition
 files can be found from: http://developer.symbian.org/wiki/index.php/System_Definition. 
 
-Under helium/testconfig/mc/mc_build/ibusal_51_build/ is the file IBUSAL51_SystemDefinition.xml  which can be examined as a sample definition file.
+helium/tests/minibuilds/qt/minibuild_compile.sysdef.xml which can be examined as a sample definition file.
 It is used by the Helium test environment to test helium works. It consists of a list of components to compile and some special instructions to 
 perform whilst compiling the components e.g. run toucher.exe on certain directories. You will need to make sure this file exists and contains 
 the correct components when building and especialy for a product which consists of many hundreds of components. It should be possible to use 
--- a/buildframework/helium/doc/src/manual/configuringdiamonds.rst	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,79 +0,0 @@
-.. index::
-  module: Configuring Diamonds
-
-====================
-Configuring Diamonds
-====================
-
-.. contents::
-
-Introduction
-------------
-Diamonds is web application that can collect all build related information and categorize
-builds. It can represent build information in different metrics. This document describes how
-to configure diamonds in helium.
-
-Diamonds Server setup
----------------------
-Please define ``diamonds.host`` property with server address and ``diamonds.port`` with server port number.
-e. g. ::
-
-    <!-- Diamonds server details -->
-    <property name="diamonds.host" value="diamonds.xxx.com"/>
-    <property name="diamonds.port" value="9900"/>
-
-
-Initialize diamonds
--------------------
-`diamonds` target is the initialize target for diamonds logging. Call diamonds target in build target sequence
-and this will log the already available data to diamonds and continue to log data onward as soon as they are available.
-This is done already in helium build target sequence. So user can ignore this section.
-
-Disable diamonds logging
--------------------------------
-Diamonds logging can be skipped by defining the property ``skip.diamonds`` to true.
-e.g.::
-
-    hlm -Dskip.diamonds=true 
-
-
-Add targets into diamonds configuration ftl file
-------------------------------------------------
-Diamonds detail configurations are in helium/config/diamonds_config.xml.ftl file.
-User have to add target here(this target must be already defined in configuration) 
-if they want to log some additional data to diamonds after the target execution.
-
-Define the target with the following attributes inside ``<targets>`` node:
-
-.. csv-table:: Target
-   :header: "Attribute", "Description", "Required"
-   
-    "name", "Name of the target","Yes"
-    "template-file", "template file to process the data","No, if not defined, consider template file name same as target name"
-    "logfile", "log file which will be processed","No"
-    "ant-properties","set true if you need values from ant properties, default is false","No"
-    "defer", "logging will be deferred and will be logged at the build finish time. Default is false","No"
-
-e.g
-::
-
-    <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"/>    
-
-
-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. For below example, it looks for 
-<build.id_create-bom.xml> or create_bom.xml and if any one exists then it will send that data. 
-
-::
-    
-    <target name="create-bom"/>
-
-
-Using only ant properties for a specific target to send data
-
-::
-    
-    <target name="ant-prop-target" template-file="ant-prop.xml.ftl" ant-properties="true"/>
-    
--- a/buildframework/helium/doc/src/manual/debugging.rst	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/doc/src/manual/debugging.rst	Thu Mar 04 15:10:37 2010 +0200
@@ -31,7 +31,7 @@
 e.g. the Bill Of Materials log file exists as .html, .xml and .txt (all the same information). Some of the logs exist as different file formats giving
 different information at various stages of the activity, e.g. the cenrep logs in which case generally the .html files are a summary of the whole activity.
 For mc product builds the following log files are created 
-where xx is the name of the build + build id e.g. mc_5132_12.030_ant_env.log
+where xx is the name of the build + build id e.g. 12.030_ant_env.log
 where nn is the variant number(s):
 
 .. csv-table:: build logs
@@ -41,19 +41,9 @@
     "xx_ant_build.log", "Ant build Log", "Lists all the ANT tasks that have been executed"
     "xx_BOM.html", "BOM listing", "lists all the projects and tasks included in the build"
     "xx_bom_delta.html", "BOM delta listing", "lists all the delta projects and tasks included in the build"
-    "xx_ee_roms.log", "ee ROM creation log", "lists all the .iby, .txt, etc. files included in the ee ROM creation, including missing files"
-    "xx_scan2.html", "compile record", "lists all the components built with their errors (0 if no errors)"
-    "xx_prebuild_scan2.html", "pre-compilation record", "lists all the pre-build components with their errors (0 if no errors)"
-    "xx_postbuild_scan2.html", "post-compilation record", "lists all the post-build components with their errors (0 if no errors)"
-    "xx_dtd_scan2.html", "dtd-compilation record", "lists all the dtd components with their errors (0 if no errors)"
-    "xx_dtd_build.log", "dtd-build record", "lists all the dtd components included in the build"
+    "xx.roms.log", "ROM creation log", "lists all the .iby, .txt, etc. files included in the ROM creation, including missing files"
+    "xx_scan2.html", "Compilation summary", "Lists all the components built with their errors (0 if no errors)"
     "xx_zips_scan2.html", "zips creation log", "lists all the zip files created and whether there are any errors"
-    "xx_cenrep_scan2.html", "cenrep creation log", "lists all the cenrep files created and whether there are any errors"
-    "xx_edge_bin_var_scan2.html", "Edge bin var creation log", "lists all the edge bin var files created and whether there are any errors"
-    "localisation_nn.html", "localisation creation log", "lists all the full build activites for localisation for a particular variant and whether there are any errors"
-    "xx_china_scan2.html", "China variant creation log", "lists all the build and link activites for creation of the China variant and whether there are any errors"
-    "xx_japan_scan2.html", "Japan variant creation log", "lists all the build and link activites for creation of the Japan variant and whether there are any errors"
-    "xx_western_scan2.html", "Western variant creation log", "lists all the build and link activites for creation of the Western variant and whether there are any errors"
     "hlm_listener.log", "Helium debug log", "Helium debug log for internal data [Helium runtime information] and it can be found inside HELIUM_CACHE_DIR folder"
     "hlm_debug.log", "Helium debug log", "Helium debug log for all other debug log (all java logs) and it can be found inside HELIUM_CACHE_DIR folder"
        
--- a/buildframework/helium/doc/src/manual/product_example.rst	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/doc/src/manual/product_example.rst	Thu Mar 04 15:10:37 2010 +0200
@@ -25,10 +25,10 @@
 
   \mc
     \helium   #contains the helium tool set.
-    \mc_build #contains the build command files and build configuration files (mostly ant configuration files).
+    \build #contains the build command files and build configuration files (mostly ant configuration files).
         languages.xml
         team.ant.xml
-        \mc_number_build
+        \number_build
             delivery.xml
             prep.xml
             rom_image_comfig.xml
@@ -40,20 +40,20 @@
                 bld.bat
        \teams
           teamName.ant.xml
-    \mc_config    #contains configuration files specific to the product being build e.g. which components to include.
+    \config    #contains configuration files specific to the product being build e.g. which components to include.
         \product
             \rom
                 \include
-                    mc_product_override.iby
+                    product_override.iby
         \product_edge
             \rom
                 \include
-                    mc_product_override.iby
+                    product_override.iby
         \product_lta
             \rom
                 \include
-                    mc_product_override.iby
-    \mc_overlay       #these contain files that are to overwite code supplied by S60 in the same structure as is saved in the S60 code under 2 different folders
+                    product_override.iby
+    \overlay       #these contain files that are to overwite code supplied by S60 in the same structure as is saved in the S60 code under 2 different folders
         \common       #contains overlay files common to all products
             \files
                 \config
@@ -68,8 +68,8 @@
                 .
                 .
                 .
-    \mc_sw      #contains any extra software required for the build i.e. new features to be added that are not yet in the main line code.
-        \mc_nummber_sw
+    \sw      #contains any extra software required for the build i.e. new features to be added that are not yet in the main line code.
+        \nummber_sw
             \exports
             
 
@@ -94,7 +94,7 @@
 .. code-block:: xml
 
   <?xml version="1.0" encoding="UTF-8"?>
-  <project name="mc_tools.nbuild.team">
+  <project name="tools.nbuild.team">
       <property name="team" value="${env.TEAM}"/>
       <import file="teams/${team}.ant.xml"/>
   </project>
@@ -129,7 +129,7 @@
 .. code-block:: xml
 
   <build>
-      <spec name="mc_number" abstract="true">
+      <spec name="number" abstract="true">
           <set name="database" value="${ccm.database}"/>
           <set name="dir" value="${ccm.base.dir}" />
           <set name="threads" value="6" />
@@ -195,14 +195,14 @@
                * product
             -->
           <location name="${ccm.base.dir}/S60/S60/Symbian_ICD_ICF/${symbian.release}" />
-          <location name="${mc_number_build.dir}../../../mc_overlay/${product.family}_overlay/common/files/s60/Symbian_ICD_ICF/${symbian.release}" />
+          <location name="${number_build.dir}../../../overlay/${product.family}_overlay/common/files/s60/Symbian_ICD_ICF/${symbian.release}" />
         </unzipicds>
       </source>
   
       <!-- Unzip (ICF/ICD)'s if there are any -->
       <source name="product_icds" basedir="">
         <unzipicds dest="${build.drive}\">
-          <location name="${mc_number_build.dir}../../../mc_overlay/${product.family}_overlay/common/files/s60/Symbian_ICD_ICF/product_ICF" />
+          <location name="${number_build.dir}../../../overlay/${product.family}_overlay/common/files/s60/Symbian_ICD_ICF/product_ICF" />
         </unzipicds>
       </source>
   
@@ -265,7 +265,7 @@
           <set name="ui.platform" value="mcnumber"/>
           <set name="zips.loc.dir" value="${zips.loc.dir}" />
           <set name="languages.xml.location" value="${localisation.language.file}" />
-          <set name="variation.dir" value="${build.drive}\mc\mc_config\mc_number_config\product\variation" />
+          <set name="variation.dir" value="${build.drive}\mc\config\number_config\product\variation" />
           <set name="rombuild.config.file" value="${rombuild.config.file.parsed}" />
           <set name="version.product.name" value="N78"/>
           <set name="imaker.languagepack.automation" value="0"/>
@@ -299,7 +299,7 @@
           <set name="customer.type" value="vanilla"/>
           <set name="uda.type" value="vanilla"/>
           <set name="image.master.iby" value="\epoc32\rom\master.oby"/>
-          <set name="image.variant.iby" value="\epoc32\rom\mc_number_variant_imaker.oby"/>
+          <set name="image.variant.iby" value="\epoc32\rom\number_variant_imaker.oby"/>
           <set name="include.rnd.oby" value="$(if $(subst rnd,,$(TYPE)),0,1)" /> <!-- include rnd applications only in rnd images -->
           <set name="image.override.iby" value="\epoc32\rom\override.oby"/>
           <set name="version.copyright" value="(C) Nokia"/>
@@ -369,16 +369,16 @@
   
           <!-- templates to generate the makefiles -->
           <set name="output.makefile.filename" value="${rombuild.makefile.name}"/>
-          <set name="main.makefile.template" value="${build.drive}\mc\mc_config\mc_number_config\rombuild\main.mk"/>
-          <set name="flash.makefile.template" value="${build.drive}\mc\mc_config\mc_number_config\rombuild\flash.mk"/>
-          <set name="core.makefile.template" value="${build.drive}\mc\mc_config\mc_number_config\rombuild\core.mk"/>
-          <set name="languagepack.makefile.template" value="${build.drive}\mc\mc_config\mc_number_config\rombuild\languagepack.mk"/>
-          <set name="customer.makefile.template" value="${build.drive}\mc\mc_config\mc_number_config\rombuild\customer.mk"/>
-          <set name="uda.makefile.template" value="${build.drive}\mc\mc_config\mc_number_config\rombuild\uda.mk"/>
-          <set name="eraseuda.makefile.template" value="${build.drive}\mc\mc_config\mc_number_config\rombuild\eraseuda.mk"/>
-          <set name="flash.config.template" value="${build.drive}\mc\mc_config\mc_number_config\rombuild\template.config.xml"/>
-          <set name="flash.config.makefile.template" value="${build.drive}\mc\mc_config\mc_number_config\rombuild\flash_config.mk"/>
-          <set name="makeupct_core.makefile.template" value="..\..\mc\mc_config\mc_number_config\rombuild\makeupct_core.mk"/>
+          <set name="main.makefile.template" value="${build.drive}\mc\config\number_config\rombuild\main.mk"/>
+          <set name="flash.makefile.template" value="${build.drive}\mc\config\number_config\rombuild\flash.mk"/>
+          <set name="core.makefile.template" value="${build.drive}\mc\config\number_config\rombuild\core.mk"/>
+          <set name="languagepack.makefile.template" value="${build.drive}\mc\config\number_config\rombuild\languagepack.mk"/>
+          <set name="customer.makefile.template" value="${build.drive}\mc\config\number_config\rombuild\customer.mk"/>
+          <set name="uda.makefile.template" value="${build.drive}\mc\config\number_config\rombuild\uda.mk"/>
+          <set name="eraseuda.makefile.template" value="${build.drive}\mc\config\number_config\rombuild\eraseuda.mk"/>
+          <set name="flash.config.template" value="${build.drive}\mc\config\number_config\rombuild\template.config.xml"/>
+          <set name="flash.config.makefile.template" value="${build.drive}\mc\config\number_config\rombuild\flash_config.mk"/>
+          <set name="makeupct_core.makefile.template" value="..\..\mc\config\number_config\rombuild\makeupct_core.mk"/>
           
           <spec name="product" abstract="true">
       
@@ -555,7 +555,7 @@
           -->
           <spec name="product_edge" abstract="true">
               <set name="config.name" value="product_edge"/>
-              <set name="variation.dir" value="${build.drive}\mc\mc_config\mc_number_config\product_edge\variation" />
+              <set name="variation.dir" value="${build.drive}\mc\config\number_config\product_edge\variation" />
               <set name="version.bandvariant" value="1"/>
               <set name="zips.loc.dir" value="${zips.loc.dir}" />
               <set name="variation" value="western"/>
@@ -733,22 +733,22 @@
       <property name="local.free.space" value="102400" />
   
       #these are the configuration files specific to each variant
-      <property name="product.variant.config" location="${build.drive}/mc/mc_build/mc_family_build/dummy_variant_config.xml" />
-      <property name="product_edge.variant.config" location="${build.drive}/mc/mc_build/mc_family_build/dummy_variant_config.xml" />
-      <property name="product_lta.variant.config" location="${build.drive}/mc/mc_build/mc_family_build/dummy_variant_config.xml" />
+      <property name="product.variant.config" location="${build.drive}/build/family_build/dummy_variant_config.xml" />
+      <property name="product_edge.variant.config" location="${build.drive}/build/family_build/dummy_variant_config.xml" />
+      <property name="product_lta.variant.config" location="${build.drive}/build/family_build/dummy_variant_config.xml" />
   
       <property name="build.errors.limit" value="-1" />
       <property name="flash.config.enabled" value="enabled" />
       
        <!-- -->
-      <import file="../mc_family_build.ant.xml"/>                 #include the family product config file
+      <import file="../family_build.ant.xml"/>                 #include the family product config file
 
       <path id="system.definition.files">                       #locations of various system configuration files.
-          <pathelement path="${build.drive}/mc/mc_build/mc_family_build/family_System_Definition.xml"/>
-          <pathelement path="${build.drive}/mc/mc_build/mc_family_build/family_SDF_loc.xml"/>
-          <pathelement path="${build.drive}/mc/mc_build/ibusal_51_build/IBUSAL51_System_Definition.xml" />
+          <pathelement path="${build.drive}/build/family_build/family_System_Definition.xml"/>
+          <pathelement path="${build.drive}/build/family_build/family_SDF_loc.xml"/>
+          <pathelement path="${build.drive}/build/ibusal_51_build/IBUSAL51_System_Definition.xml" />
           <fileset dir="${build.drive}/s60/tools/build_platforms/build/data" includes="S60_System*.xml"/>
-          <pathelement path="${build.drive}/mc/mc_build/mc_family_build/product/product_System_Definition.xml" />
+          <pathelement path="${build.drive}/build/family_build/product/product_System_Definition.xml" />
           <pathelement path="${build.drive}/MULTIMEDIA_SW/ME_SCD_DESW/ME_SCD_DESW/sysdef/System_Definition_product.xml" />
       </path>
   
@@ -831,9 +831,9 @@
  
  
 .. index::
-  single: Example - mc_product_override.iby file
+  single: Example - product_override.iby file
 
-mc_product_override.iby file
+product_override.iby file
 ------------------------------
  
  This file contains details of files that will be used to create the ROM image. ::
@@ -844,23 +844,23 @@
   
   // Variating ActiveIdle theme
   
-  #ifdef MC_ACTIVEIDLE_VARIANT
-  #ifndef __MC_NO_FMTX_IN_ROM
-  data-override=concat3(ZPRIVATE\10207254\themes\271012080\270513751\271063149\1.0\AI.,MC_ACTIVEIDLE_VARIANT,.o0000)           PRIVATE\10207254\themes\271012080\270513751\271063149\1.0\AI.o0000
-  data-override=concat3(ZPRIVATE\10207254\themes\271012080\270513751\271063147\1.0\CI.,MC_ACTIVEIDLE_VARIANT,.o0000)           PRIVATE\10207254\themes\271012080\270513751\271063147\1.0\CI.o0000
-  ROM_IMAGE[2] data-override=concat3(ZPRIVATE\10207254\themes\271012080\270513751\271063149\1.0\AI.,MC_ACTIVEIDLE_VARIANT,.o0001)                                 PRIVATE\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001
-  ROM_IMAGE[2] data-override=concat3(ZPRIVATE\10207254\themes\271012080\270513751\271063147\1.0\CI.,MC_ACTIVEIDLE_VARIANT,.o0001)                                 PRIVATE\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001
-  #endif // __MC_NO_FMTX_IN_ROM
-  #endif // MC_ACTIVEIDLE_VARIANT
+  #ifdef ACTIVEIDLE_VARIANT
+  #ifndef __NO_FMTX_IN_ROM
+  data-override=concat3(ZPRIVATE\10207254\themes\271012080\270513751\271063149\1.0\AI.,ACTIVEIDLE_VARIANT,.o0000)           PRIVATE\10207254\themes\271012080\270513751\271063149\1.0\AI.o0000
+  data-override=concat3(ZPRIVATE\10207254\themes\271012080\270513751\271063147\1.0\CI.,ACTIVEIDLE_VARIANT,.o0000)           PRIVATE\10207254\themes\271012080\270513751\271063147\1.0\CI.o0000
+  ROM_IMAGE[2] data-override=concat3(ZPRIVATE\10207254\themes\271012080\270513751\271063149\1.0\AI.,ACTIVEIDLE_VARIANT,.o0001)                                 PRIVATE\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001
+  ROM_IMAGE[2] data-override=concat3(ZPRIVATE\10207254\themes\271012080\270513751\271063147\1.0\CI.,ACTIVEIDLE_VARIANT,.o0001)                                 PRIVATE\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001
+  #endif // __NO_FMTX_IN_ROM
+  #endif // ACTIVEIDLE_VARIANT
   
   // Variantion ends
   
   
   // Product customisation
   #include <commontsy.var>
-  #ifdef MC_PRODUCT_CUSTOMISATION_VAR
-  define __MC_PRODUCT_CUSTOMISATION_VAR__ MC_PRODUCT_CUSTOMISATION_VAR
-  file-override=ABI_DIR\BUILD_DIR\COMMONTSY.__MC_PRODUCT_CUSTOMISATION_VAR__.DLL    Sys\Bin\COMMONTSY.DLL
+  #ifdef PRODUCT_CUSTOMISATION_VAR
+  define __PRODUCT_CUSTOMISATION_VAR__ PRODUCT_CUSTOMISATION_VAR
+  file-override=ABI_DIR\BUILD_DIR\COMMONTSY.__PRODUCT_CUSTOMISATION_VAR__.DLL    Sys\Bin\COMMONTSY.DLL
   #endif
   
   
--- a/buildframework/helium/doc/src/manual/running.rst	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/doc/src/manual/running.rst	Thu Mar 04 15:10:37 2010 +0200
@@ -96,7 +96,7 @@
 Build output
 ================
 
-When a build is running the targets being executed are listed on the screen there is no need to pipe this to a file as the ant targets are logged in the   ``\*_ant_build.log`` for product and IDO builds. Once the build is complete it will say on the screen whether the build was successful or failed. If it has failed it should give an indication of where and why it failed on the screen but for more information you must examine the output logs. If the build says it was successfult this does not necessarily mean that the build compiled all components successfully, you must examine the logs to check that all is compiled and linked correctly. See :ref:`Troubleshooting-label` for information on logs and where they kept.
+When a build is running the targets being executed are listed on the screen there is no need to pipe this to a file as the ant targets are logged in the   ``\*_main.ant.log`` for product and IDO builds. Once the build is complete it will say on the screen whether the build was successful or failed. If it has failed it should give an indication of where and why it failed on the screen but for more information you must examine the output logs. If the build says it was successfult this does not necessarily mean that the build compiled all components successfully, you must examine the logs to check that all is compiled and linked correctly. See :ref:`Troubleshooting-label` for information on logs and where they kept.
 
 The result of the build (compiled files, linked (flash) files etc.) are  stored in the usual folders and directories under the ``\epoc32`` directory.
 
--- a/buildframework/helium/doc/src/manual/sbs.rst	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,154 +0,0 @@
-.. index::
-  module: SBS in Helium
-
-.. index::
-  module: Raptor (SBS) in Helium
-
-=======================
-SBS (raptor) In Helium
-=======================
-
-.. contents::
-
-This document describes requirements and how to run sbs builds using helium
-
-
-SBS Requirements
------------------
-
-Before starting the build, SBS needs to be updated for s60 related changes, please follow the instructions from the link below,
-
-`How to Build Raptor <http://s60wiki.nokia.com/S60Wiki/How_To_Build_With_Raptor>`_
-
-1. SBS_HOME environment variable needs to be set
-2. PATH environment variable needs to be updated with SBS related exe:
-
-   path(SBS_HOME\\BIN;SBS_HOME\\win32\\mingw\\bin;SBS_HOME\\win32\\msys\\bin)
-
-3. RVCT requirement for raptor is 22_616, in IDO config / product config batch file the env variable needs to be set to
-HLM_RVCT_VERSION=22_616
-
-For Example: ::
-
- set HELIUM_HOME=E:\Build_E\ec_test\helium-trunk\helium
- set PATH=e:\svn\bin;E:\sbs\bin;c:\apps\actpython;%PATH%
- set SBS_HOME=E:\sbs
- set MWSym2Libraries=%MWSym2Libraries%;C:\APPS\carbide\x86Build\Symbian_Support\Runtime\Runtime_x86\Runtime_Win32\Libs
- set TEAM=site_name
-   
-(Note: For IDOs, these environment variables are set automatically, for S60 option is proposed).
-
-Required SBS input for Helium
-------------------------------
-1. To run using SBS mode the following properties need to be set with the values shown below:
-
-   * build.system - sbs - gmake as SBS engine
-   * build.system - sbs-ec emake as SBS engine (ECA 4.3 or above required)
-
-2. sbs.config - (configurations for which the sbs needs to be run - for example (armv5 / winscw) - default is armv5 only.
-
-The layers to be built for SBS are obtained from System definition files (layers.sysdef.xml found in each component top level folder in the released code). The requirement for the system definition files to be run using SBS / raptor is to have a unique filter for each configuration. The current setup is using raptor\_<configuration_name> for example, for s60_build configuration, the filter should be raptor\_s60_build.
-This is the temporary solution and discussions are on to finalise / improve the filter mechanism for raptor. The raptor\_ change has been added to the layers.sysdef.xml files supplied for the IDOs and S60_SBS build releases but when building using DFS full builds the files need to be modified to add the raptor\_ for each layer.
-
-Supported SBS parameters from helium
--------------------------------------
-
-List of parameters::
-
-   a. layers - No need to specify for the full IDO / product configuration. If there is a requirement to run specific layer alone, then this needs to be set.
-   b. config - (configuration to be built - armv5, winscw - with comma seperated values)
-   c. skipBuild - just to generate the makefile for SBS and not to run the targets.
-   d. singleJob - run in single thread for engine gmake only
-   e. layerOrder - If the layers need to be built using order, then this needs to be set to true.
-   f. command - command to be executed(SBS commands - REALLYCLEAN, EXPORT, BITMAP, RESOURCE, TARGET)
-   g. sysdef-base - base location for the sysdef (root directory for relative paths in the system definition files)
-   h. enable-filter - to use the SBS log processing using filter options from SBS, this should be set to true
-      to use helium log filter and scanlog.
-   i. retry-limit - number of times to try in case of transient failure ( -t of sbs).
-   j. run-check - (true / false) runs the --check sbs command if set to true
-   k. run-what - (true / false) runs the --what sbs command if set to true
-
-Command line arguments to SBS using Helium:
--------------------------------------------
-
-build.system=sbs
-~~~~~~~~~~~~~~~~~
-To build using gmake as the engine, and all others with default values (skipBuild - false, with multiple jobs (default
-set by helium is number.of.processor*2 and no layer order)
-
-If multiple configurations need to be built, a comma separated list needs to be passed as (armv5,winscw) to sbs.config property.
-
-examples::
-   
-   <property name="sbs.config" value="armv5" />
-   <property name="sbs.config" value="armv5,winscw" />
-   <property name="sbs.config" value="armv5,winscw,armv5.test"/>
-   
-This can be set in the IDO root directory build.xml file.
-
-Here is an example command to use (first 'cd' to IDO configuration directory ido_configuration/running/idos/abs/branches/mcl_devlon ) ::
-
-   hlm -Dbuild.drive=z: -Dbuild.system=sbs -Dbuild.number=005 -Dskip.password.validation=true ido-build
-
-   
-build.system=sbs-ec
-~~~~~~~~~~~~~~~~~~~~
-To build using emake as the engine with default values set by helium (sbs make engine as emake and other emake parameters using ec) just the ``sbs.config`` property has   to be set to configuration to be built(armv5, winscw).
-   
-Here is an example command to use (first 'cd' to IDO configuration directory ido_configuration/running/idos/abs/branches/mcl_devlon )
-
-hlm -Dbuild.drive=z: -Dbuild.system.main.build=sbs-ec -Dbuild.number=005 -Dskip.password.validation=true ido-build
-
-Note the different flag ``-Dbuild.system.main.build=sbs-ec``
-
-
-Passing Make options to SBS using helium
------------------------------------------
-
-Make options for different make engines could be passed to SBS using ant reference as below,
-(Note: currently supported make engine options are emake options only, in the future will
-be added for pvm and gmake).
-
-Make options for SBS using helium:
-
-.. code-block:: xml
-
-   <hlm:sbsMakeOptions id="sbs-ec.fullbuild.options" engine="emake">
-      <hlm:makeOption name="--emake-emulation" value="gmake" />
-      <hlm:makeOption name="--emake-annodetail" value="basic,history,waiting" />
-      <hlm:makeOption name="--emake-class" value="${ec.build.class}" />
-   </hlm:sbsMakeOptions>
-   
-First user defined make options need to be defined as above, then the default ``<build.system>.make.options``
-parameter needs to be overridden in the antcall of user defined config as below:
-   
-.. code-block:: xml
-   
-   <antcall target="compile-main" inheritAll="false" inheritRefs="true">
-      <reference refid="sbs-ec.fullbuild.options" torefid="sbs-ec.make.options"/>
-   </antcall>
-   
-Here the ``sbs-ec.fullbuild.options`` mapped to ``sbs-ec.make.options`` and used by helium to set
-emake options for SBS.
-   
-Building for different SBS input (advanced users)
---------------------------------------------------
-
-Some examples to build for different sbs input using helium are below:
-   
-To build using a single thread, the sbs helium variable is:
-   
-.. code-block:: xml
-   
-   <hlm:argSet id="sbs.singlethread.var">
-      <hlm:arg name="config" value="${sbs.config}" />
-      <hlm:arg name="singleJob" value="true" />
-   </hlm:argSet>
-   
-And set ``sbs.var`` to ``sbs.singlethread.var`` as below during <antcall> target to call compile-main:
-
-.. code-block:: xml
-
-   <antcall target="compile-main" inheritAll="false" inheritRefs="true">
-      <reference refid="sbs.singlethread.var" torefid="sbs.var"/>
-   </antcall>
\ No newline at end of file
--- a/buildframework/helium/doc/src/manual/signaling.rst	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,181 +0,0 @@
-Configuring Signaling
-=====================
-
-Helium signaling framework offers you a simplest way to control 
-failures on build flow, and provides you an easy way to get reporting on
-some crucial steps of your build.
-
-
-The configuration
------------------
-
-The signaling configuration is divided on three parts:
-
-   * the signalConfig: defines the signal (Depreciated - please use signalListenerConfig)
-   * the signalListenerConfig: defines the signal
-   * the signalInput: defines what to do when a signal is raised
-   * the notifierList: defines a set of notifiers
-
-signalListenerConfig
-....................
-
-This part of the configuration is not targeted to be overridden by the build manager.
-
-The following example defines a custom signal named as **customSignal**.
-The default configuration must reference a default signalInput configuration using a nested inputRef element,
-so the signaling framework knows how to behave when a signal is raised.
-
-.. code-block:: xml
-
-    <hlm:signalListenerConfig id="customSignal" target="target-name" message="target-name triggered a signal">
-        <signalNotifierInput>
-            <signalInput refid="signalInputId" />
-            <notifierInput file="some/file/to/notify.html" />
-        </signalNotifierInput>
-        <hlm:targetCondition>
-            </available file="some-file.txt" />
-        </hlm:targetCondition>
-    </hlm:signalListenerConfig>
- 
-A signal will then be triggered each time the **target-name** completed. The signalInput will then defined how it should be handled.
-
-Other way to trigger a signal is by using the signal task:
- 
-.. code-block:: xml
-
-    <hlm:signal name="customSignal" result="1">
-        <signalNotifierInput>
-            <signalInput refid="signalInputId" />
-            <notifierInput file="some/file/to/notify.html" />
-        </signalNotifierInput>
-    </hlm:signal>
-    
-
-signalInput
-...........
-
-This Ant type defines what a signal should do when it is raised. The failbuild attribute defines
-if a build failure should be:
-
-    * failing the build now (value: now)
-    * deferred at the end of the build (value: defer)
-    * ignored (value: never)
-   
-Then the configuration will accept a reference to a notifierList using the notifierListRef element.
-
-Example of configurations
-
-.. code-block:: xml
-
-    <hlm:signalInput id="customSignalInput" failbuild="now">
-        <hlm:notifierListRef refid="customNotifier" />
-    </hlm:signalInput>
-  
-This will run all notifier from the customNotifier configuration then fail the build.
-
-.. code-block:: xml
-
-    <hlm:signalInput id="customSignalInput" failbuild="defer"/>
-
-This will defer the failure at the end of the build, no notifier will be run.
-
-notifierList
-............
-
-The notifierList Ant type allows the user to configure a set of Notifier (e.g Email, execute task):
-
-The following example configures a notifier list that will send an email and run few echo task to print
-some information.
-
-.. code-block:: xml
-
-    <hlm:notifierList id="customNotifier">
-        <hlm:emailNotifier templateSrc="${helium.dir}/tools/common/templates/log/email_new.html.ftl"
-                           title="[signal] ${signal.name}" smtp="smtp.server.address"
-                           ldap="ldap://ldap.server.address:389"
-                           notifyWhen="always"/>
-        <hlm:executeTaskNotifier>
-            <echo>defaultSignalAlwaysNotifier: Signal: ${signal.name}</echo>
-            <echo>defaultSignalAlwaysNotifier: Status: ${signal.status}</echo>
-        </hlm:executeTaskNotifier>
-    </hlm:notifierList>
-
-Detailed documentation of the notifier interface could be found `here <../../helium-antlib/index.html>`_.
-
-
-Example: configuring compileSignal
-----------------------------------
-
-In this example we will configure the compileSignal to behave this way:
-
-   * send an email to additional users e.g: user@foo.com, user@bar.com
-   * defer the build failure.
-
-You configuration should contains (e.g build.xml)
-
-.. code-block:: xml
-
-   <?xml version="1.0"?>
-   <project name="mybuild">
-      ...
-      <import file="${helium.dir}/helium.ant.xml"/>
-      ...
-      
-      <hlm:notifierList id="myCustomNotifierList">
-          <hlm:emailNotifier templateSrc="${helium.dir}/tools/common/templates/log/email_new.html.ftl"
-                title="[signal] My build goes wrong: ${signal.name}"
-                smtp="${email.smtp.server}"
-                ldap="${email.ldap.server}"
-                notifyWhen="fail"
-                additionalrecipients="user@foo.com,user@bar.com"/>
-      </hlm:notifierList>
-      
-      <hlm:signalInput id="compileSignalInput" failbuild="defer">
-         <hlm:notifierListRef refid="myCustomNotifierList" />
-      </hlm:signalInput>
-
-   </project>
-
-   
-A custom notifierList has been created with **myCustomNotifierList** as reference ID. It defines
-a emailNotifier which uses the default email template under Helium (${helium.dir}/tools/common/templates/log/email_new.html.ftl).
-It also set the title of you email to be "[signal] My build goes wrong: ${signal.name}" (signal.name property will be replace by the signal name raised).
-**notifyWhen** attribute will make the notifier to send a notification only on build failure.
-Finally the two additional email addresses will be set using the **additionalrecipients** attribute. 
-
-We then need to link the signal configuration and our custom the notifier list. The signalInput element is use to achieve that. 
-It must be defined using the same reference ID (see reference overriding howto) as the one in the Helium configuration, the naming convention for this is: **<signal_name>Input**.
-Its **failbuild** attribute is set to **defer** which will configure the build to keepgoing, and fail at the end of the build flow.
-Finally an embedded notifierListRef element will reference our custom notifier list: **myCustomNotifierList**.
-
-While failing the signaling framework will execute all notifier defined and then store internally the build failure so it can raise it again at the end of the execution.
-    
-
-Example: Report specific errors not included by default
--------------------------------------------------------
-
-Target prep-work-area has extra log extraction added and output xml is read by a new signal.
-
-.. code-block:: xml
-
-   <hlm:signalInput id="prepWorkAreaSignalInputWarn" failbuild="defer">
-       <hlm:notifierListRef refid="defaultSignalFailNotifier" />
-   </hlm:signalInput>
-   
-   <hlm:signalListenerConfig id="prepWorkAreaSignalWarn" target="prep-work-area" message="Warnings happened during Preparing Work Area">>
-        <signalNotifierInput>
-            <signalInput refid="prepWorkAreaSignalInputWarn" />
-            <notifierInput file="${build.log.dir}/${build.id}_ccm_get_input.log2.xml" />
-        </signalNotifierInput>
-       <hlm:targetCondition> 
-           <hlm:hasSeverity severity="error" file="${build.log.dir}/${build.id}_ccm_get_input.log2.xml"/>
-       </hlm:targetCondition>
-   </hlm:signalListenerConfig>
-
-   <target name="prep-work-area" depends="ccmgetinput.prep-work-area">
-       <hlm:logextract file="${build.log.dir}/${build.id}_ccm_get_input.log" outputfile="${build.log.dir}/${build.id}_ccm_get_input.log2.xml">
-           <logfilterset>
-               <logfilter category="error" regex=".*Explicitly specified but not included" />
-           </logfilterset>
-       </hlm:logextract>
-   </target>
--- a/buildframework/helium/doc/src/manual/stages.rst.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/doc/src/manual/stages.rst.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -72,7 +72,7 @@
 
   <BuildProcessDefinition>
       <remoteBuilds>
-          <build machine="vcbldsrv12" ccmhomedir="${r'$'}{ccm.home.dir}" basedir="${r'$'}{ccm.base.dir}" executable="hlm" dir="${r'$'}{mc_4031_build.dir}\PRODUCT" args="product-build -Dbuild.number=${r'$'}{build.number} -Dprep.root.dir=d:\pmackay"/>
+          <build machine="vcbldsrv12" ccmhomedir="${r'$'}{ccm.home.dir}" basedir="${r'$'}{ccm.base.dir}" executable="hlm" dir="${r'$'}{_build.dir}\PRODUCT" args="product-build -Dbuild.number=${r'$'}{build.number} -Dprep.root.dir=d:\"/>
       </remoteBuilds>
   </BuildProcessDefinition>
 
@@ -135,7 +135,7 @@
 How to prepare the build area?
 ------------------------------
 
-A key part of build preparation is initialising the build drive by copying or unzipping the input files. The ``build.prep.config.file`` should reference a file that follows the prep XML file format (e.g. mc\mc_build\mc_4031_build\prep.xml). A suggestion is that this file is called prep.xml by default.
+A key part of build preparation is initialising the build drive by copying or unzipping the input files. The ``build.prep.config.file`` should reference a file that follows the prep XML file format (e.g. build/_build/prep.xml). A suggestion is that this file is called prep.xml by default.
 
 The XML format of the prep file is as follows:
 
@@ -219,7 +219,7 @@
 Flags:
 ``````
 
-Flags are extracted from the ProductVariant.hrh (mc_config/${r'$'}{build.configuration}_config/${r'$'}{product.name}/include/ProductVariant.hrh).
+Flags are extracted from the ProductVariant.hrh (config/${r'$'}{build.configuration}_config/${r'$'}{product.name}/include/ProductVariant.hrh).
 
 .. index::
   single: Stage - Source preparation
@@ -259,8 +259,8 @@
 .. code-block:: xml
 
     <build>
-        <config name="mc_5132" abstract="true">
-            <set name="database" value="fa1f5132"/>
+        <config name="" abstract="true">
+            <set name="database" value="fa1f"/>
             <set name="host" value="${r'$'}{ccm.engine.host}" />
             <set name="dbpath" value="${r'$'}{ccm.database.path}" />
         
@@ -271,13 +271,13 @@
             <set name="release" value="${r'$'}{release.tag}" />
             
             <config name="ppd_sw-PPD51.32_200810:project:sa1spp#1" type="checkout" >
-               <set name="folders" value="jk1f5132#1820" />
+               <set name="folders" value="jk1f#1820" />
             </config>
             
             <config name="WLANSniffer2-2007_wk21:project:e002sa08#1" type="snapshot" />
             
-            <config name="NSeries08_Themes-1:project:fa1f5132#1" type="checkout" >
-               <set name="tasks" value="jk1f5132#1763" />
+            <config name="NSeries08_Themes-1:project:fa1f#1" type="checkout" >
+               <set name="tasks" value="jk1f#1763" />
                <set name="skip.ci" value="true"/> 
             </config>
             
@@ -287,7 +287,7 @@
             </config>
             
             <config name="S60-S60.32_200810:project:sa1spp#1" type="checkout" >
-               <set name="folders" value="jk1f5132#1983" />
+               <set name="folders" value="jk1f#1983" />
             </config>
 
             <config name="ppd_sw-username:project:sa1spp#1" type="update"/>
@@ -378,10 +378,10 @@
 
     <path id="system.definition.files">
         <fileset dir="${r'$'}{build.drive}/src/common/generic/tools/build" includes="System_Definition*.xml"/>
-        <pathelement path="${r'$'}{build.drive}/mc/mc_build/ibusal_40_build/ibusal_40/IBUSAL40_System_Definition.xml"/>
+        <pathelement path="${r'$'}{build.drive}/build/ibusal_40_build/ibusal_40/IBUSAL40_System_Definition.xml"/>
         <fileset dir="${r'$'}{build.drive}/s60/tools/build_platforms/build/data" includes="S60_System*.xml"/>
         <pathelement path="${r'$'}{build.drive}/me/me_scd_desw/sysdef/System_Definition_PRODUCT.xml"/>
-        <pathelement path="${r'$'}{build.drive}/mc/mc_build/${r'$'}{product.family}_build/4032_System_Definition.xml"/>
+        <pathelement path="${r'$'}{build.drive}/build/${r'$'}{product.family}_build/_System_Definition.xml"/>
     </path>
     
 The order of the files is significant. If building Symbian OS, the Symbian System Definition file must come first. Here both ``fileset`` and ``pathelement`` are used. ``pathelement`` selects just one file whereas a ``fileset`` can use wildcards to select multiple files or handle problems of filenames changing across different platform releases.
@@ -437,16 +437,6 @@
 
 Also the --emake-debug could be configured either by the environment using the EMAKE_DEBUG variable or using the ``emake_debug_flag`` property. Its default value is 'g'.
 
-
-SBS (Raptor) compilation
-------------------------
-
-.. toctree::
-   :maxdepth: 1
-
-   sbs
-
-
 .. index::
   single: Stage - Post Build
 
@@ -524,318 +514,6 @@
 It checks all files in the target folder and renames the invalid sis files with .bak extention. 
 
 .. index::
-  single: S60 3.2 Localisation
-
-Stage: S60 3.2 Localisation
-===========================
-
-.. csv-table:: Ant property descriptions
-   :header: "Property", "Description", "Default Values"
-
-   "``localisation.language.file``", "This defines where to find the languages.xml database.", "/epoc32/tools/s60tools/languages.xml"
-   "``rombuild.config.file``", "This key defines  where this parsed file will be located.", ""
-   "``localisation.files``", "This key  defines which files should be used to localise the build.", "-i ${r'$'}{build.drive}/epoc32/tools/s60tools/LocInfo_input_S60.txt"
-   "``localisation.tool``", "This key defines which tool should be used to localise the build area (localise-resources or localisation-s60-localiser).", "localise-resources"
-
-The process uses the information from the languages.xml to know what languages have to be localised. In order to have language pack configured correctly you also have to configure them (as explained in the next section).
-
-.. index::
-  single: Creation of core, language pack and customer variant images
-
-Creation of core, language pack and customer variant images
------------------------------------------------------------
-
-Core, language pack and customer variant images are created automatically in product-build. 
-They can also be created separately calling localisation target::
-
-  hlm -Dbuild.number=xx localisation
-
-
-Stage: ROM creation
-===================
-
-Called by ``build-roms`` target.
-
-.. index::
-   single: imakerconfigurationset type
-
-The imakerconfigurationset type
--------------------------------
-
-Information on how to configure the properties is given below:
-
-The imakerconfigurationset supports imakerconfiguration nested elements.
-
-'''imakerconfiguration''' element:
-
-.. csv-table:: Ant properties to modify
-   :header: "Attribute", "Description", "Values"
-
-   "``regionalVariation``", "Enable regional variation switching. - Deprecated (always false)", "false"
-
-The imakerconfiguration supports three sub-types:
-
-.. csv-table:: Ant properties to modify
-   :header: "Sub-type", "Description"
-
-   "``makefileset``", "Defines the list of iMaker configuration to run image creation on."
-   "``targetset``", "List of regular expression used to match which target need to be executed."
-   "``variableset``", "List of variable to set when executing iMaker."
-
-
-Example of configuration:
-
-.. code-block:: xml
-
-   <hlm:imakerconfigurationset>
-      <hlm:imakerconfiguration regionalVariation="true">
-         <makefileset>
-            <include name="**/product_name/*ui.mk" />
-         </makefileset>
-         <targetset>
-            <include name="^core${r'$'}" />
-            <include name="langpack_\d+" />
-            <include name="^custvariant_.*${r'$'}" />
-            <include name="^udaerase${r'$'}" />
-         </targetset>
-         <variableset>
-            <variable name="USE_FOTI" value="0" />
-            <variable name="USE_FOTA" value="1" />
-            <variable name="TYPE" value="rnd" />
-         </variableset>
-      </hlm:imakerconfiguration>
-   </hlm:imakerconfigurationset>
-
-
-Other example using product list and variable group:
-
-.. code-block:: xml
-
-   <hlm:imakerconfigurationset>
-      <hlm:imakerconfiguration>
-         <hlm:product list="product_name" ui="true" failonerror="false" />
-         <targetset>
-            <include name="^core${r'$'}" />
-            <include name="langpack_\d+" />
-            <include name="^custvariant_.*${r'$'}" />
-            <include name="^udaerase${r'$'}" />
-         </targetset>
-         <variableset>
-            <variable name="USE_FOTI" value="0" />
-            <variable name="USE_FOTA" value="1" />
-         </variableset>
-         <variablegroup>
-            <variable name="TYPE" value="rnd" />
-         </variablegroup>
-         <variablegroup>
-            <variable name="TYPE" value="subcon" />
-         </variablegroup>
-         <variablegroup>
-            <variable name="TYPE" value="prd" />
-         </variablegroup>
-      </hlm:imakerconfiguration>
-   </hlm:imakerconfigurationset>
-
-
-.. index::
-   single: The iMaker Task
-
-How to configure the target
----------------------------
-
-The target can be configured by defining an hlm:imakerconfigurationset element with the '''imaker.rom.config''' reference.
-
-.. code-block:: xml
-    
-    <hlm:imakerconfigurationset id="imaker.rom.config">
-    ...
-    </hlm:imakerconfigurationset>
-
-The other configurable element is the engine. The '''imaker.engine''' property defines the reference
-to the engine configuration to use for building the roms. Helium defines two engines by default:
-* imaker.engine.default: multithreaded engine (hlm:defaultEngine type)
-* imaker.engine.ec: ECA engine - cluster base execution (hlm:emakeEngine type)
-  
-If the property is not defined Helium will guess the best engine to used based on the build.system property.
- 
-.. index::
-  single: Legacy ROM creation
-
-.. _ROM-creation-label:
-
-Stage: Legacy ROM creation
-==========================
-
-A S60 3.2 build uses the localisation target which calls localisation-roms. A S60 5.0 build only requires the localisation-roms target since localisation is done differently.
-
-There are 2 targets used to create the ROM images these are 'ee-roms' and 'localisation-roms'. The 'ee-roms' target
-builds an Engineering English version and the 'localisation-roms' target builds all the localised ROM images. Both require
-some configuration particularly the 'localisation-roms' target so that it knows which variants to build etc. This configuration
-is explained below but 1st here is an example of how to create the EE ROM image using Helium::
-
-  hlm -Dbuild.number=xx ee-roms
-  
-where xx is the build number.
-
-To see an example of how to build the localised versions click :ref:`localised example <localisation-label>`:
-
-.. index::
-  single: ROM Image configuration
-
-Legacy ROM Image configuration
-------------------------------
-
-Engineering English ROMs, including debug/trace images, can be configured per build configuration. The path to the configuration file is defined by the ``rombuild.config.file`` property. The :ref:`common-configuration-format-label` is used, e.g.
-
-.. code-block:: xml
-
-    <?xml version="1.0" encoding="UTF-8"?>
-    <build>
-        <config name="PRODUCT" abstract="true">
-            <set name="rommake.cmt.path" value="${r'$'}{build.drive}\epoc32\rombuild"/>
-            ....
-            <!-- GUI images -->
-            <set name="rommake.args" value="-rebldxld -es60ibymacros -DS60_IN_ROM"/>
-            
-            <config name="ee_roms">
-                <config name="flash">
-                    <set name="image.type" value="rnd"/>
-                </config>
-            </config>
-        </config>
-    </build>
-
-The properties that can be set for configuring each ROM image are described below:
-
-.. csv-table:: Property descriptions
-   :header: "Property", "Description", "Values"
-
-   "``output.makefile.template``", "This defines the name of the output makefile (MUST NOT contain path info).", "${r'$'}{rombuild.makefile.name}"
-   "``main.makefile.template``", "This defines the location of the main part of the makefile (template).", "${r'$'}{mc_5132_build.dir}/imaker.mk"
-   "``flash.makefile.template``", "This defines template location for flash makefile targets (ee roms).", "${r'$'}{mc_5132_build.dir}/flash.mk"
-   "``mytraces.file``", "The path for the mytraces.txt file that contains the list of debug binaries to include. (Template)", ""
-   "``version.product.name``", "The name of the product that appears in the version string.", "e.g. N91"
-   "``version.pd.milestone``", "The current PD milestone.", ""
-   "``version.pr``", "The current PR branch number.", ""
-   "``version.bandvariant``", "The band variant.", ""
-   "``version.buildnumber``", "The build number. This should be set to the Ant property.", "${r'$'}{build.number} (default)"
-   "``version.variant``", "The variant version number.", ""
-   "``version.product.type``", "The product type shown in the version string.", "e.g. RM43"
-   "``version.rimcycle``", "The year and week of the current RIM cycle.", ""
-   "``rom.id``", "An identifier for the ROM image filenames. Currently based on Ant ``build.id`` property.", ""
-   "``rommake.hwid``", "The hardware ID provided to the ROM build tool.", ""
-   "``rommake.product.name``", "The product name provided to the ROM build tool.", "e.g. devlon4"
-   "``rom.output.dir``", "The directory where the ROM image files will be copied.", ""
-   "``cmt``", "The CMT to use (if included).", ""
-   "``image.ui``", "The UI type.", "gui, text"
-   "``image.iby``", "The path for the top-level .iby file", ".iby path"
-   "``image.nocmt``", "Whether the image should include a CMT or not", "true, false (default)"
-   "``image.name.extension``", "A text extension added to the image filename.", "Optional"
-   "``version.copyright``", "Copyright text used in the version string.", ""
-   "``core.template``", "The template for the core version string format.", ""
-   "``variant.template``", "The template for the variant version string format.", ""
-   "``uda.template``", "The template for the UDA version string format.", ""
-   "``model.template``", "The template for the model version string format.", ""
-   "``core.txt.path``", "Path to the sw.txt version file.", ""
-   "``variant.txt.path``", "Path to the langsw.txt version file.", ""
-   "``model.txt.path``", "Path to the model.txt version file.", ""
-   "``uda.txt.path``", "Path to the UDA version file.", ""
-   "``mytraces.binaries``", "A list of binaries that should be ``UDEB``. The list will be included in ``mytraces.txt``. Either comma-separated items can be used or multiple properties defined.", ""
-   "``build.parallel``", "Defines if a group is buildable in parallel.", "true/false"
-
-
-Ant properties can be used and they will be replaced by their values before the file is processed.
-
-All abstract ``<config>`` element will be considered as makefile group target. You have to ensure that you defined an ee_roms abstract spec to be able to build EE roms.
-
-This example configuration will build one rom during ee_roms call that will use flash template:
-
-.. code-block:: xml
-    
-   <config name="ee_roms" abstract="true">
-       <config name="flash">
-            <set name="flash.id" value="ui_rom" />
-       </config>
-   </config>
-
-Mandatory keys:
-    "``flash.id``" defines a uniq id for the rom creation, used to define makefile template.
-
-
-.. index::
-  single: Main makefile template
-
-Main makefile template
-----------------------
-
-The ROM image creation tools use a makefile template to generate a target for each image. The main.makefile.template is used as the top-level part of the makefile, you can define any common custom steps in there. The template allows us to easily add any custom dependencies before creating the variant (also post steps could be added). The current version of the main makefile template should look like that, dont't forget it is tied to the product family.
-
-.. index::
-  single: Xinclude
-  
-.. _`Xinclude-label`:
-
-Xinclude
----------
-
-Xinclude is a generic tool to include lists of files in tasks. However, Xinclude for ROM creation is deprecated, so please ensure you are using iMaker for all ROM image creation. Click on :ref:`iMaker-label` for details.  
-
-
-.. _localisation-label:
-  
-Legacy Customer variant configuration 
-:::::::::::::::::::::::::::::::::::::
-To create a new customer variant, just add a spec of the type customer: e.g:
-
-.. code-block:: xml
-
-  <config type="customer">
-      <set name="customer.id" value="100"/>
-      <set name="customer.revision" value="2"/>
-      <set name="description" value=""/>
-      <set name="compatible.languagepack" value="01,03"/>
-  </config>
-
-
-This specification must be added in the specification of the appropriate region (western, china, japan or thai).
-
-For each customer specification, helium creates 
-  * the customer variant image 
-  * the flash configuration file (during publishing.).
-
-If compatible.languagepack property is omitted, the system assumes the customer variant is compatible with all language packs. A flash configuration file is created for each language pack.
-
-In case a variant created with a previous build is re-used with the current build, an extra property must be declared: e.g:
-
-.. code-block:: xml
-
-  <config type="customer">
-      <set name="customer.image.version.name" value="10.30"/>
-      <set name="customer.id" value="101"/>
-      <set name="description" value="OPERATOR_UK"/>
-      <set name="compatible.languagepack" value="01"/>
-  </config>
-
-
-customer.image.version.name is the build ID with which the re-used variant was created.
-
-
-.. index::
-  single: Trace image creation
-
-Trace image creation
---------------------
-Initial support for recompiling and creating rom images is provided by the build-traces target. This feature will be refactored and revised, so the details will still change.
-
-.. csv-table:: Ant property descriptions
-   :header: "Property", "Description", "Values"
-
-   "``tracebuild.tracetype``", "This defines the type of traces to create", "general, phone or all"
-   "``tracebuild.product``", "This defines the product for which to create images.", ""
-   "``tracebuild.variant``", "This defines the imaker target to use in image creation", ""
-
-
-.. index::
   single: Stage - Publishing
 
 Stage: Publishing
@@ -1050,23 +728,6 @@
 
 Subcon zipping is also configured using the same XML format as ``zip-ee`` and implemented in the ``zip-subcon`` target. A ``zips.subcon.spec.name`` property must be defined but currently it is still a separate configuration file.
 
-.. index::
-  single: Zipping .loc files
-
-Zipping .loc files
-------------------
-
-```zip-loc-files``` -target finds, sorts into language specific folders and archives all the .loc files from the build area. Usage::
-
-   hlm -Dbuild.number=XX zip-loc-files
-
-The following properties are needed (default values defined in helium.ant.xml):
-
-- loc.temp.dir - the temporary directory used by zip-loc-files
-- loc.output.dir - the directory where the output zip file is stored
-- loc.output.filename - the name of the output-file (xxx.zip)
-- loc.files.zipper - The location of the tool (should not be changed)
-  
 
 .. index::
   single: Stage - Releasing
@@ -1132,11 +793,11 @@
 
 Define in your build configuration the path to the config of relnotes::
 
-  e.g. <property name="relnotes.config.dir" value="${r'$'}{helium.dir}/../mc_config/${r'$'}{product.family}_config/${r'$'}{build.name}/relnotes"/>
+  e.g. <property name="relnotes.config.dir" value="${r'$'}{helium.dir}/../config/${r'$'}{product.family}_config/${r'$'}{build.name}/relnotes"/>
 
 The contents of "config_template" in helium/extensions/nokia/config/relnotes should be copied to the appropriate directory::
 
-  e.g. mc/mc_config/mc_5132_config/mc_5132/relnotes
+  e.g. config/config//relnotes
 
 Contents of template:
  * logo.png : the logo of your product
@@ -1202,7 +863,7 @@
 Setting the team property
 :::::::::::::::::::::::::
 
-SET TEAM=<team-name> (this defines which team specific .xml file from /mc/mc_build/teams is used for build configuration).
+SET TEAM=<team-name> (this defines which team specific .xml file from /build/teams is used for build configuration).
 
 Also see :ref: `Team-Properties-label` for more information.
 
@@ -1237,7 +898,7 @@
 
 Before this phase it is needed to run the prebuild command (hlm prebuild -Dbuild.number=123) which creates necessary folders to the build area.
 
-Build-main phase is used to compile the components defined in the build.configuration property which refers to defined configuration in System_Definition.xml file(s) (ANT property system.definition.files in /mc/mc_build/PLATFORM/PLATFORM_build.ant.xml). The command to run is: hlm build-main -Dbuild.number=123
+Build-main phase is used to compile the components defined in the build.configuration property which refers to defined configuration in System_Definition.xml file(s) (ANT property system.definition.files in /build/PLATFORM/PLATFORM_build.ant.xml). The command to run is: hlm build-main -Dbuild.number=123
 
 
 .. index::
@@ -1249,7 +910,7 @@
 A product build executes the typical stages for building product software and ROM images. Generally this involves building all the software completely from scratch. It can be run using the command:
   hlm product-build -Dbuild.number=123
 
-This can be run from a product build configuration directory, e.g. <tt>/mc/mc_build/mc_4031_build/cogsworth</tt>.
+This can be run from a product build configuration directory, e.g. <tt>/build/_build/cogsworth</tt>.
 
 Product-build command combines all needed subcommands for doing a build. The subcommands run in product-build are:
 prep -> Prepares the build area (see prep instructions above)
@@ -1386,302 +1047,6 @@
 
 
 .. index::
-  single: Advanced Usage
-
-Advanced Usage
-=================
-
-
-.. index::
-  single: UDA (using iMaker)
-
-UDA (using iMaker)
-------------------
-
-UDA creation using iMaker follows the same process, it uses a template that requires the following keys to be defined.
-
-"``uda.id``" this key defines uniquely the uda.
-"``content.dir``" defines the location of UDA content.
-
-This is a simple example of uda spec:
-
-::
-
-    <config name="uda">
-      <set name="uda.id" value="myuda" />
-      <set name="content.dir" value="${r'$'}{build.drive}/uda1/" />
-    </config>
-
-To build the uda you have to run the following Ant target: (use uda.makefile.target to specify which rom you want to build)
-  hlm uda-roms -Dteam=kawa -Dbuild.number=xx
-
-
-.. index::
-  single: Core and Variant images creation
-
-Core and Variant images creation
---------------------------------
-
-Core and variant images are created automatically in product-build. They can also be created separately calling do-localisation target::
-
-  hlm localisation-roms -Dteam=kawa -Dbuild.number=xx
-
-Variation (S60 3.2.3 - 5.x)
----------------------------
-
-See http://delivery.nmp.nokia.com/trac/imaker/wiki/iMakerUseCaseCustomerVariantConfml
-
-Variation (S60 3.2)
--------------------
-
-In the new process the variation handling deviate from regular Nokia variation rule as the backup/export/restore process from Creator.pl has been dropped. Now each variant is self contained, which means the content must be reference from the variation folder! On the same way  language pack configuration is automated, which means that branching files like ``languages.txt``, ``lang.txt``... is strictly forbiden.
-
-Structure and Naming
-::::::::::::::::::::
-
-The variation folder naming must match that rule ``.+_${r'$'}{variant.id}``.
-
-Finally your variation folder must have the following structure::
-
-    + variation
-        + euro1_01
-            + data
-                + VariantData_01.xml
-        + euro2_02
-            + data
-                + VariantData_02.xml
-        + japan_15
-            + data
-                + VariantData_15.xml
-        + ...
-
-
-Cenrep variation
-::::::::::::::::
-
-
-Developer has to create a VariantData_${r'$'}{variant.id}.xml file for each variant that references product one (SPP/PRODUCT process).
-
-Example of an dummy PRODUCT variant configuration:
-
-.. code-block:: xml
-
-    <?xml version="1.0" encoding="UTF-8"?>
-    <Variant xmlns:xi="http://www.w3.org/2001/xinclude">
-        <xi:include href="file:\\\%EPOCROOT%\spp_config\s60_32_config\PLATFORM_config\PLATFORM_PRODUCT_config\config\data\CenrepVar_PRODUCT\data\VariantData_PRODUCT.xml"/>
-    </Variant>
-
-
-To rebuild cenrep configuration using Customisation Tool for all variants you can use the following command:
-    hlm -Dbuild.number=xx localisation-create-cenrep
-
-Note: for Xinclude information see :ref:`Xinclude-label`:
-
-.. index::
-  single: iMaker image creation template
-
-iMaker image creation template
-------------------------------
-
-::
-
-   ###############################################################################
-   # iMaker templates
-   ###############################################################################
-   
-   # defining helium in the build area if not set by the environment
-   HELIUM_HOME?=\mc\helium
-   PYTHONPATH?=$(HELIUM_HOME)\install\python\lib\python2.4\win32;$(HELIUM_HOME)\tools\common\python\lib
-   
-   # using winimage from helium delivery.
-   WINIMAGE_TOOL=$(HELIUM_HOME)/tools/localisation/exports/winimage.exe
-   
-   CALL_IMAKER_PLATFORM=imaker -p$(PRODUCT_NAME) -c$(COREPLAT_NAME) -f $(E32ROMCFG)/helium_features.mk
-   CALL_IMAKER=imaker -p$(PRODUCT_NAME) -c$(COREPLAT_NAME) $(if $(UI_PLATFORM),-u$(UI_PLATFORM)) -f $(E32ROMCFG)/helium_features.mk
-   CALL_TARGET=imaker -p$(PRODUCT_NAME) -c$(COREPLAT_NAME) -f $(E32ROMCFG)/$(COREPLAT_NAME)/$(PRODUCT_NAME)/mc_imaker.mk
-   
-   transfer_option=$(foreach option,$1,$(if $($(option)),"$(option)=$($(option))",))
-   
-   #
-   # Variation handling
-   #
-   unzip_%:
-       @echo Unzipping variation $*...
-       -@unzip -o -qq -d $(subst \,/,$(EPOCROOT)) /output/build_area/localised/delta_$*_package.zip
-   
-   
-   include helium_features.mk
-   ###############################################################################   
-
-
-.. index::
-  single: Flash makefile template
-
-Flash makefile template
------------------------
-
-This is the currently used template for flash rom type.
-
-::
-
-   ###############################################################################
-   # Flash template
-   ###############################################################################
-   
-   flash${r'$'}{flash.id}${r'$'}{image.type}: TYPE=${r'$'}{image.type}
-   flash${r'$'}{flash.id}${r'$'}{image.type}: NAME=${r'$'}{build.id}_$(TYPE)$(if ${r'$'}{flash.id},_${r'$'}{flash.id},)
-   flash${r'$'}{flash.id}${r'$'}{image.type}: WORKDIR=${r'$'}{rom.output.dir}/${r'$'}{rommake.product.name}/${r'$'}{image.type}
-   flash${r'$'}{flash.id}${r'$'}{image.type}: OBYPARSE_UDEBFILE=${r'$'}{mytraces.file}
-   flash${r'$'}{flash.id}${r'$'}{image.type}: FEAT_UDEBFILE=$(if "${r'$'}{mytraces.binaries}",1,0)
-   flash${r'$'}{flash.id}${r'$'}{image.type}: BLDROM_OPTVAR=${r'$'}{rommake.flags}
-   flash${r'$'}{flash.id}${r'$'}{image.type}: HWID=${r'$'}{rommake.hwid}
-   flash${r'$'}{flash.id}${r'$'}{image.type}: OPTION_LIST=TYPE NAME WORKDIR OBYPARSE_UDEBFILE CORE_UDEBFILE BLDROM_OPTVAR HWID
-   flash${r'$'}{flash.id}${r'$'}{image.type}: unzip_western
-      -@echo $(CALL_IMAKER) $(call transfer_option,$(OPTION_LIST)) flash
-      -@$(CALL_IMAKER) $(call transfer_option,$(OPTION_LIST)) flash
-    
-The target is using target specific variable to override the default iMaker values. The script also makes sure that the current environment is western, so do not need anymore to switch between environments. You can customize your target as needed, e.g. call custom scripts...
-
-.. Note::
-        Don't forget that all template are parsed and concatenated, which means a modification in the main one could affect any target one.
-
-.. index::
-  single: Create a customize makefile target
-
-How to create a customize makefile target
------------------------------------------
-
-In order to create a custom makefile target for rom image creation you have to first create the makefile template: You will call your target test for example. In that case you have to create a test.mk file that should define your target. E.g
-
-::
-   
-   ###############################################################################
-   # Test template
-   ###############################################################################
-   
-   flash_${r'$'}{target.name}_${r'$'}{image.type}: TYPE=${r'$'}{image.type}
-   flash_${r'$'}{target.name}_${r'$'}{image.type}: OPTION_LIST=TYPE
-      -@echo $(CALL_IMAKER) $(call transfer_option,$(OPTION_LIST)) flash
-      -@$(CALL_IMAKER) $(call transfer_option,$(OPTION_LIST)) flash
-
-Then you have to declare it into your configuration file, just add the following line to your main configuration:
-::
-   
-   <set name="test.makefile.template" />
-
-Then to create a ROM according to that template just add a specification to the configuration file::
-   
-   <config name="test">
-       <set name="image.type" value="rnd,prd" />
-       <set name="target.name" value="ui_rom" />
-   </config>
- 
-This will create two targets in the generated makefiles: test_ui_rom_rnd and test_ui_rom_prd.
-
-.. index::
-  single: Language pack configuration
-
-Language pack configuration
----------------------------
-
-Please read the ``ROM Image configuration (using iMaker)`` part first to have a better understanding of this part.
-
-.. index::
-  single: Main Language configuration
-
-Main configuration
-------------------
-
-These keys must be defined in order to enbable localisation/variation process.
-
-.. csv-table:: Configuration property descriptions
-   :header: "Property", "Description", "Values"
-
-   "``zips.loc.dir``", "The directory where to find variation delta packages.", "${r'$'}{zips.loc.dir}"
-   "``languages.xml.location``", "This defines where to find the languages.xml database.", "${r'$'}{localisation.language.file}"
-   "``variation.dir``", "This defines the path where variation for a product is located.", "${r'$'}{mc_5132_config.dir}\${r'$'}{product.name}\variation"
-   "``rombuild.config.file``", "That key defines where this parsed file will be located.", "${r'$'}{rombuild.config.file.parsed}"
-   "``core.makefile.template``", "This defines what template to use for core creation.", "${r'$'}{mc_5132_build.dir}/core.mk"
-   "``languagepack.makefile.template``", "This defines what template to use for core creation.", "${r'$'}{mc_5132_build.dir}/languagepack.mk"
-   "``operator.makefile.template``", "This defines what template to use for core creation.", "${r'$'}{mc_5132_build.dir}/operator.mk"
-
-Other keys could be defined accordingly to the template you are using.
-
-
-.. index::
-  single: Language pack configuration
-
-Legacy Language pack configuration
-----------------------------------
-
-Language pack could be defined into the rom image configuration, the name of the template is "``languagepack``" (this is used to render the correct makefile template).
-Example of configuration:
-
-.. code-block:: xml
-   
-   <config name="languagepack">
-       <set name="languagepack.id" value="01" />
-       <set name="description" value="01" />
-          <set name="default" value="01" />
-       <set name="languages" value="01,02,03" />
-       <set name="variation" value="western" />
-   </config>
-
-The following fields are mandatories to define a correct language pack:
-"``variant.id``" defines the variant id from the variant chart.
-"``description``" defines variant content (must not contains space).
-"``default``" default language id.
-"``languages``" comma separated list of languages to be included.
-"``variation``" defines which variation to use (western, china, japan) You can define western variation at top level and override it on target.
-
-
-.. index::
-  single: Customer Variant configuration
-
-Legacy Customer variant configuration
--------------------------------------
-
-Customer variant could be define the same way.
-Example:
-
-.. code-block:: xml
-   
-   <config name="customer_variants" abstract="true">
-   ...
-
-      <set name="variation.dir" value="\path\to\customer\variants" />
-      <config name="customer">
-          <set name="customer.id" value="20" />
-          <set name="description" value="OPERATOR" />
-      </config>
-      <config name="customer">
-          <set name="customer.id" value="10" />
-          <set name="description" value="orange" />
-          ...
-      </config>
-        <config name="customer">
-              <set name="customer.id" value="11" />
-              <set name="description" value="orange_fr" />
-        </config>
-      ...
-   </config>
-      
-Only description and customer.id and variation.dir are mandatory for customer variants.
-
-The variant creation process is now working without any copy on top of epoc32 directory, you can override epoc32 content directly from the variant directory.
-
-To run the creation of all images under the '''customer_variants''' group, just call the following command line on your configuration:
-
-  hlm customer-roms -Dteam=kawa -Dbuild.number=xx 
-
-If you just want to build one particular customer variant just invoke the following command:
-
-  hlm customer-roms -Dteam=kawa -Dbuild.number=xx -Dcustomer.makefile.target=customer99rnd
-  
-The naming of the target follows this template: customer``customer.id````image.type``.
-
-
-.. index::
   single: ATS - STIF, TEF, RTEST, MTF and EUnit
 
 .. _`Stage-ATS-label`:
@@ -1804,6 +1169,7 @@
     **ats.diamonds.signal**        [allowed]       Should be "true" so at end of the build diamonds is checked for test results and helium fails if tests failed.
     **ats.delta.enabled**          [allowed]       Should be "true" so only ado's changed during do-prep-work-area are tested by ats.
     **ats4.enabled**               [allowed]       Should be "true" if ats4 is to be used.
+    **ats.specific.pkg**           [allowed]       Text in name of pkg files to use eg. 'sanity' would only use xxxsanity.pkg files from components.
     ============================== =============== ===============
 
 
@@ -2147,7 +1513,7 @@
 .. code-block:: xml
 
     <property name="enabled.matti" value="true" />
-    <property name="matti.scripts" value="${r'$'}{helium.dir}\testconfig\ats3\matti\script" />
+    <property name="matti.scripts" value="${r'$'}{helium.dir}/tests/data/matti" />
     <property name="template.file" value="${r'$'}{helium.dir}\tools\common\python\lib\ats3\matti\template\matti_demo.xml" />
     <property name="ats.sis.images.dir" location="${r'$'}{build.drive}\output\matti\sis" />
     <property name="ats.product.name" value="" />
Binary file buildframework/helium/doc/src/mc_tools_design.vsd has changed
--- a/buildframework/helium/doc/src/tutorials/configuration/HowtoCreateANewSignal.rst	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,113 +0,0 @@
-How to create a new signal
-==========================
-
-This document will help you implementing a new signal in your configuration.  
-
-Use case
---------
-You have one target named **custom-action** which
-should generate an artifact in some know location, and you would like the build to continue as far 
-as possible even if that artifact is missing, but being informed during the build it is not going as expected. 
-
-
-Base configuration
-------------------
-
-The following code snippet will be the base configuration for this exercise.   
-
-build.xml
-
-.. code-block:: xml
-
-   <?xml version="1.0" ?>
-   <project name="config" default="test" xmlns:hlm="http://www.nokia.com/helium"> 
-      <property environment="env"/>
-      <import file="${helium.dir}/helium_preinclude.ant.xml"/>
-
-      <!-- Location of the artifact -->    
-      <property name="artifact" location="artifact.txt"/>
-            
-      <import file="${helium.dir}/helium.ant.xml"/>
-
-      <!-- The target -->
-      <target name="custom-action">
-         <delete failonerror="false" file="${artifact}"/>
-         <if>
-            <istrue value="${create.artifact}"/>
-            <then>
-               <echo file="${artifact}">My artifact</echo>
-            </then>
-         </if>
-      </target>
-      
-      <target name="custom-dummy">
-        <echo message="Dummy action"/>
-      </target>
-   
-   </project>   
-
-
-
-To declare a new signal to the framework you need to define a new signalListenerConfig reference.
-You also need to create a signalInput configuration to define your signal behaviour.
-
-.. code-block:: xml
- 
-   <hlm:signalInput id="customActionSignalInput" failbuild="defer"/>
-   
-   <hlm:signalListenerConfig id="customActionSignal" target="custom-action" message="custom-action target ended.">
-      <signalNotifierInput>
-          <signalInput refid="customActionSignalInput" />
-          <notifierInput file="${artifact}" />
-      </signalNotifierInput>
-      <hlm:targetCondition>
-         <not><available file="${artifact}"/></not>            
-      </hlm:targetCondition>
-   </hlm:signalListenerConfig>
-
-
-The signalListenerConfig defines which target to listen and raise signal for. The target name is defined through the **target** attribute.
-Then the nested **targetCondition** element is used to configure how the signal should be triggered.
-This element accepts any nested `Ant conditions <http://ant.apache.org/manual/CoreTasks/conditions.html>`_.
-In this case the signal will get raised only if the file is not present after the execution of the **custom-action** target.
-
-The framework then uses the defined signalInput from the signalNotifierInput configuration to know how to behave when the signal is raised. In the previous example it will
-simply keep running and fail the build at the end. Then files defined by the nested notifierInput will be passed to the notifier.
-
-The execution of the **custom-action custom-dummy** build sequence will happen entirely even if the artifact is not 
-created properly, then fail the build mentioning the faulty target::
-
-   > hlm custom-action custom-dummy
-   Internal data listening enabled.
-   Buildfile: build.xml
-        [echo]  Using build drive X:
-   
-   custom-action:
-   18:21:14,503  INFO - Signal customActionSignal will be deferred.
-   
-   custom-dummy:
-        [echo] Dummy action
-   
-   BUILD FAILED
-   customActionSignal: custom-action target ended. : custom-action
-   
-   
-   Total time: 2 seconds
-
-
-If you enable the artifact creation then the build will proceed successfully::
-
-   >hlm custom-action custom-dummy -Dcreate.artifact=true
-   Internal data listening enabled.
-   Buildfile: build.xml
-        [echo]  Using build drive X:
-   
-   custom-action:
-   
-   custom-dummy:
-        [echo] Dummy action
-   
-   BUILD SUCCESSFUL
-   Total time: 2 seconds
-
-   
--- a/buildframework/helium/doc/src/tutorials/configuration/SimplestConfiguration.rst	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/doc/src/tutorials/configuration/SimplestConfiguration.rst	Thu Mar 04 15:10:37 2010 +0200
@@ -43,4 +43,4 @@
 
 Download the example:
 `simple_config.zip <simple_config.zip>`_
-  
\ No newline at end of file
+  
--- a/buildframework/helium/doc/src/tutorials/configuration/UseHlmTasksInConfiguration.rst	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/doc/src/tutorials/configuration/UseHlmTasksInConfiguration.rst	Thu Mar 04 15:10:37 2010 +0200
@@ -22,7 +22,7 @@
         Helium pre include test.
         </description>
         <property environment="env"/>
-        <import file="${env.HELIUM_HOME}\helium_preinclude.ant.xml"/>   
+        <import file="${helium.dir}\helium_preinclude.ant.xml"/>   
             
         <target name="test">
            <hlm:logtoconsole action="stop"/>
@@ -31,7 +31,7 @@
            <echo>Should print something.</echo>       
         </target>
         
-        <import file="${env.HELIUM_HOME}\helium.ant.xml"/>           
+        <import file="${helium.dir}\helium.ant.xml"/>           
     </project>    
 
 
--- a/buildframework/helium/doc/src/tutorials/imaker/buildinfo_creation.rst	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/doc/src/tutorials/imaker/buildinfo_creation.rst	Thu Mar 04 15:10:37 2010 +0200
@@ -72,10 +72,10 @@
    BUILD_SUMMARY_FILE_2 = Z:\output\logs\summary\pf_5250_16_wk2008_summary.log2.xml
    BUILD_LOG = Z:\output\logs\pf_5250_16_wk2008_ant_build.log
    BUILD_NAME = pf_5250
-   BUILD_CACHE_LOG_DIR = C:\DOCUME~1\wbernard\LOCALS~1\Temp\helium\wbernard\pf_5250_16_wk2008\logs
+   BUILD_CACHE_LOG_DIR = C:\DOCUME~1\wbernard\LOCALS~1\Temp\helium\pf_5250_16_wk2008\logs
    BUILD_SYSTEM = ebs
    BUILD_LOG_DIR = Z:\output\logs
-   BUILD_CACHE_DIR = C:\DOCUME~1\wbernard\LOCALS~1\Temp\helium\wbernard\pf_5250_16_wk2008
+   BUILD_CACHE_DIR = C:\DOCUME~1\wbernard\LOCALS~1\Temp\helium\pf_5250_16_wk2008
    BUILD_OUTPUT_DIR = Z:\output
    BUILD_SUMMARY_FILE = Z:\output\logs\pf_5250_16_wk2008_build_summary.xml
    BUILD_VERSION = 0.0.1
--- a/buildframework/helium/doc/src/tutorials/qt_build.rst	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/doc/src/tutorials/qt_build.rst	Thu Mar 04 15:10:37 2010 +0200
@@ -26,7 +26,10 @@
 Then you can configure your Qt components by using the proFile attribute under the system definition files.
 The proFile attribute defines the name of the pro file relatively to the path defined by the bldFile attribute.
 Default qMake command line parameters can be overridden by using the optional qmakeArgs attribute. 
-Example::
+
+Example
+
+.. code-block:: xml
    
    <?xml version="1.0"?>
    <!DOCTYPE SystemDefinition SYSTEM "sysdef_1_5_1.dtd" []>
--- a/buildframework/helium/doc/src/tutorials/rom_image.rst	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/doc/src/tutorials/rom_image.rst	Thu Mar 04 15:10:37 2010 +0200
@@ -26,62 +26,8 @@
 
 In order to use Helium for ROM-image creation your ROMs need to be configured to
 be created using Helium. The creation is supported by the iMaker task which supports the  '''imakerconfigurationset'''
-element to configure what needs to be built.
-
-.. index::
-   single: How to Install iMaker
-
-How to Install iMaker
-=====================
-
-iMaker comes as part of S60 code and therefore should be automatically installed when S60 is installed. However, if you are not using S60
-it is also available via Helium under the 'helium_trunk/external/imaker/bin' directory, the main executable is called 'mingw_make.exe'.
-
-
-.. index::
-   single: ROM Creation Commands
-
-ROM Creation Commands
-======================
-
-To build an Engineering English (EE) version of the ROM use the target 'ee-roms' for localised images use the target
-'localisation'. These are both for product builds and need several parameters to be configured before they will work successfully.
-For details on how to configure helium for ROM image creation click :ref:`ROM-creation-label`.
-
-.. index::
-   single: Engineering English - brief description
-
-Engineering English - brief description
-----------------------------------------
-
-EE builds are the basic builds that contain all the required components but the only available language is English. 
-It is often used to prove that a build can be made or for basic testing, without the added complication of different languages.
-
-.. index::
-   single: Localisation - brief description
-
-Localisation - brief description
----------------------------------
-
-Localisation is the process used to create the different variants for different parts of the world. For each different language
-available in a phone there is one or more text files that contain the text to be displayed, e.g. contacts, options, exit, keypad locked,
-all have to be translated to the relevent language text. There are various regional variations as well which need to be implemented
-so the correct files need to be included, this is all part of the configuration for localisation.
-
+element to configure what needs to be built (please check the Helium Antlib documentation).
  
-.. index::
-   single: iMaker User Guide
-
-.. _iMaker-label:
-
-iMaker User Guide
-=================
-
-There is an `iMaker User Guide` available from helium in the \\helium-trunk\\external\\imaker\\doc folder 
-it is a PDF file (S60_iMaker_User_Guide.pdf) and explains 
-everything you need to know about iMaker. iMaker is based on `GNU Make`_ click on the link to view a .html version of `GNU Make`_ documentation. 
-
-.. _`GNU Make`: http://www.gnu.org/software/make/manual/make.html
 
 .. index::
    single: iMaker tutorials
--- a/buildframework/helium/doc/src/tutorials/variant.rst	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,185 +0,0 @@
-.. index::
-  module: Variant creation tutorial
-
-################################
-Legacy Variant creation tutorial
-################################
-
-This section describes the configuration required to create a variants and UDA, this should be read along with the :ref:`localisation-label`:
-sections else where.
-
-Variant Creation
------------------
-
-This section aims to describe the creation of Customer Variants using Helium.  
-
-
-The variant team should configure their variant using the following template:
- 
-   variation (configurable location)
-      operator_xx_51
-         data
-            ibys
-            cenreps
-            rscs
-         variation
-            rss rebuilt using binary variation (like spp psw folder)
-         config
-            hlm.bat
-            build.xml (mini-configuration referencing product release one)
-            customer_rom_config.xml (external configuration to define the variant image)
-
-
-
-Keep in mind that with MultiROFS nothing will get exported by image creation, ibys and content will be directly
-referenced from the variant location: data directory and variant root will be added to the ROM creation include path.
-           
-
-You can configure your variant build environment with the following template files:
-
-
-* build.xml:
-
-.. code-block:: xml
-
-   <?xml version="1.0" encoding="utf-8" ?> 
-   <project name="customer_variants" basedir="/mc/mc_build/mc_5132_build/all">
-       <dirname property="customer_variants.basedir" file="${ant.file.customer_variants}" />
-       <!-- Product you are generating the variant for -->
-       <property name="product.list" value="PRODUCT" /> 
-       <!-- Specifying the variant config that should be used. -->
-       <property name="PRODUCT.customer.roms.config" location="${customer_variants.basedir}/customer_rom_config.xml" />
-       <!-- Specifying our rom image creation group: should be always the same -->
-       <property name="customer.makefile.target" value="vt_customer_variants" /> 
-       <!-- Referencing the build configuration -->
-       <import file="/mc/mc_build/mc_5132_build/all/build.xml" /> 
-   </project>
- 
- 
-* customer_rom_config.xml:
-
-.. code-block:: xml
-
-   <?xml version="1.0" encoding="UTF-8" ?> 
-   <config name="vt_customer_variants" abstract="true">
-      <set name="customer.type" value="operatorcountry" /> 
-      <set name="variation.dir" value="\variation" /> 
-      <set name="image.type" value="prd" /> 
-   
-      <!--  Your variant config --> 
-      <config type="customer">
-         <set name="customer.id" value="151" /> 
-         <set name="customer.revision" value="2" /> 
-         <set name="description" value="" /> 
-         <set name="compatible.languagepack" value="03" /> 
-      </config>
-   </config>
-   
-
-What is happening when generating the Customer Variant?
-The customer file will be included by the platform configuration and be included by the XInclude mechanism.
-This currently means that the platform has to explicitly add the include information. But we will try to remove that dependence in the future.
-
-UDA creation 
--------------
-
-The main concept of this section is to explain how the Variant Team should use Helium to handle UDA creation.
-First of all the UDA environment is split in 2 different parts: the content and the config::
-
-   + uda_delivery      
-      + uda_content
-         + common
-            - content.zip
-         + application1
-            - file1.zip
-            - file2.zip
-         + application2
-            - file.zip
-
-      + config
-         - hlm.bat
-         - build.xml
-         - uda_rom_config.xml (standalone configuration)
-
-     
-* The content must contain subdirectories that represents different kind of features which store them as zip files. 
-  All the zip files under that folder will be unzipped when generating the UDA.
-* The configuration is a standalone Helium configuration that would be used to configure the UDA creation.
-
-
-Example of configuration:
-
-* build.xml
-
-.. code-block:: xml
-
-  <?xml version="1.0" encoding="UTF-8" ?> 
-    <project basedir=".">
-    <property environment="env" /> 
-    <property name="product.list" value="PRODUCT" /> 
-    <property name="build.drive" value="Z:" /> 
-    <property name="rombuild.config.file" location="uda_rom_config.xml" /> 
-    <property name="product.name" value="PRODUCT" /> 
-    <property name="major.version" value="0" /> 
-    <property name="minor.version" value="0" /> 
-    <import file="${helium.dir}/helium.ant.xml" /> 
-  </project>
-  
-* uda_rom_config.xml
-
-.. code-block:: xml
- 
-   <?xml version="1.0" encoding="UTF-8" ?> 
-   <build xmlns:xi="http://www.w3.org/2001/XInclude">
-   <config name="PRODUCT" abstract="true">
-      <set name="ui.platform" value="mc5132" /> 
-      <set name="version.product.name" value="N00" /> 
-      <set name="rom.output.dir" value="${build.output.dir}" /> 
-      <set name="uda.output.dir" value="${rom.output.dir}${uda.image.path}" /> 
-      
-      <!--  Template relative paths  --> 
-      <set name="uda.image.path" value="release_flash_images/${image.type}/user_data/${image.type}/${uda.id}_${description}" /> 
-
-      <!--  Template names  --> 
-      <set name="uda.image.name" value="${rombuild.id}_${uda.id}.${uda.revision}_${image.type}" /> 
-
-      <!--  Template publish paths (used for flash config files generation) --> 
-      <set name="uda.publish.dir" value="${rom.publish.dir}${uda.image.path}" /> 
-      <set name="uda.template" value="${version.product.name} (${uda.id})" /> 
-      
-      <!--  Do not build target in parallel by default --> 
-      <set name="build.parallel" value="false" /> 
-      <set name="image.type" value="prd" /> 
-      <!--  Driving iMaker configuration generation --> 
-      <set name="output.makefile.filename" value="${rombuild.makefile.name}" /> 
-      <set name="main.makefile.template" value="${helium.dir}\tools\rombuild\generic_templates\main.mk" /> 
-      <set name="uda.makefile.template" value="${helium.dir}\tools\rombuild\generic_templates\vt_uda.mk" /> 
-      <set name="winimage.tool" value="${build.drive}/winimage.exe" /> 
-      <set name="uda.content.dir" value="/uda_PRODUCT/content" /> 
-      
-      <!-- Group of UDA to be built -->
-      <config name="uda_roms" abstract="true">
-      
-         <!-- Defining a UDA -->
-         <config type="uda">
-            <set name="uda.id" value="111" /> 
-            <set name="uda.revision" value="0" /> 
-            <set name="uda.content" value="common,snakes" /> 
-         </config>
-
-
-      </config>
-   </config>
-   </build>
-   
-.. csv-table:: Property descriptions
-   :header: "Property", "Description"
-
-   "``uda.id``", "Defines the uda identification number"
-   "``uda.revision``", "Defines the revision number for the version string"
-   "``uda.content``", "Comma separated list that defines the UDA content"
-   "``uda.content.dir``", "Location of the content subdirectories"
-   "``uda.template``", "Template that defines the how to generate the version string"
-   "``uda.image.path``", "Template that defines where to generated the UDA"
-   "``uda.image.name``", "Template that defines how to name the UDA"
- 
--- a/buildframework/helium/doc/src/user-graph.dot.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/doc/src/user-graph.dot.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -55,14 +55,9 @@
     
     subgraph cluster_2 {
         node [style=filled];
+        "ROM Image" -> "Helium Stages"[dir=none];
         <#if !(ant?keys?seq_contains("sf"))>
-            "ROM Image" -> "Variant Creation"[dir=none];
-            "Variant Creation" -> "Helium Stages"[dir=none];
             "Helium Stages" -> "Helium Nokia Stages"[dir=none];
-            "Helium Nokia Stages" -> "SDK Creation"[dir=none];
-        <#else>
-            "ROM Image" -> "Variant Creation"[dir=none];
-            "Variant Creation" -> "Helium Stages"[dir=none];
         </#if>
         label = "Advanced";
     }
@@ -94,7 +89,6 @@
             Raptor [fontcolor=navyblue,fontsize=12,shape=box,href="http://s60wiki.nokia.com/S60Wiki/Raptor"];
             "Electric Cloud" [fontcolor=navyblue,fontsize=12,shape=box,href="http://www.connecting.nokia.com/nmp/tpm/nmpglosw.nsf/document/ES21T6K9FM4?OpenDocument"];
             ATS [fontcolor=navyblue,fontsize=12,shape=box,href="manual/stages.html#stage-ats3-stif-and-eunit"];
-            BlackTusk [fontcolor=navyblue,fontsize=12,shape=box,href="nokia/blacktusk/howto-setup-blacktusk-with-helium.html"];
     }
     </#if>
     
@@ -110,7 +104,7 @@
     Start -> "ROM Image" [lhead=cluster_2];
     Start -> "Helium Developer Guide" [lhead=cluster_4];
     <#if !(ant?keys?seq_contains("sf"))>
-        "SDK Creation" -> "Electric Cloud"[dir=none, lhead=cluster_2_1, ltail=cluster_2];
+        "Helium Nokia Stages" -> "Electric Cloud"[dir=none, lhead=cluster_2_1, ltail=cluster_2];
     </#if>
     "DOS Scripting" -> NOSE[dir=none, lhead=cluster_4_1, ltail=cluster_4];
    
@@ -129,9 +123,7 @@
     "Configure Helium" [fontcolor=navyblue,fontsize=12,shape=box,href="manual/configuring.html"];
     "Helium Stages" [fontcolor=navyblue,fontsize=12,shape=box,href="manual/stages.html"];
     
-
     "ROM Image" [fontcolor=navyblue,fontsize=12,shape=box,href="tutorials/rom_image.html"];
-    "Variant Creation" [fontcolor=navyblue,fontsize=12,shape=box,href="tutorials/variant.html"];
     
     <#if !(ant?keys?seq_contains("sf"))>
         "Setting up Helium at Nokia" [fontcolor=navyblue,fontsize=12,shape=box,href="nokia/nokia.html"];
@@ -140,7 +132,6 @@
         "Helium Wiki" [fontcolor=navyblue,fontsize=12,shape=box,href="http://delivery.nmp.nokia.com/trac/helium/wiki"];
         "Helium Forum" [fontcolor=navyblue,fontsize=12,shape=box,href="http://forums.connecting.nokia.com/forums/forum.jspa?forumID=262"];
         MCL [fontcolor=navyblue,fontsize=12,shape=box,href="http://s60wiki.nokia.com/S60Wiki/S60_Software_Asset_Management/Organization/Delivery_Services/Howto_build_DFS70.91.91_/_S60.MCL_with_Helium"];
-        "SDK Creation" [fontcolor=navyblue,fontsize=12,shape=box,href="nokia/rndsdk_user_manual.html"];
         IDO [fontcolor=navyblue,fontsize=12,shape=box,href="ido/index.html"];
         TeamCI [fontcolor=navyblue,fontsize=12,shape=box,href="teamci/index.html"];
         "Helium Test Plan" [fontcolor=navyblue,fontsize=12,shape=box,href="nokia/testing.html"];
Binary file buildframework/helium/external/antlibs/derby.jar has changed
Binary file buildframework/helium/external/antlibs/eclipselink-2.0.0.jar has changed
Binary file buildframework/helium/external/antlibs/persistence-2.0.0.jar has changed
Binary file buildframework/helium/external/antlibs/xmltask-v1.15.1.jar has changed
Binary file buildframework/helium/external/antlibs/xmltask-v1.16.jar has changed
Binary file buildframework/helium/external/helium-antlib/antlibs/ant-antunit-1.1.jar has changed
Binary file buildframework/helium/external/helium-antlib/antlibs/ant-contrib-1.0b2.jar has changed
Binary file buildframework/helium/external/helium-antlib/antlibs/emma.jar has changed
Binary file buildframework/helium/external/helium-antlib/antlibs/emma_ant.jar has changed
Binary file buildframework/helium/external/helium-antlib/antlibs/fmpp-0.9.13.jar has changed
Binary file buildframework/helium/external/helium-antlib/antlibs/junit-4.5.jar has changed
Binary file buildframework/helium/external/helium-antlib/antlibs/velocity-dep-1.3.1.jar has changed
Binary file buildframework/helium/external/helium-antlib/antlibs/xmlunit-1.2.jar has changed
Binary file buildframework/helium/external/helium-antlib/bin/helium-antdata.jar has changed
Binary file buildframework/helium/external/helium-antlib/bin/helium-antlint.jar has changed
Binary file buildframework/helium/external/helium-antlib/bin/helium-antunit.jar has changed
Binary file buildframework/helium/external/helium-antlib/bin/helium-checktools.jar has changed
Binary file buildframework/helium/external/helium-antlib/bin/helium-core.jar has changed
Binary file buildframework/helium/external/helium-antlib/bin/helium-diamonds.jar has changed
Binary file buildframework/helium/external/helium-antlib/bin/helium-internaldata.jar has changed
Binary file buildframework/helium/external/helium-antlib/bin/helium-jpa.jar has changed
Binary file buildframework/helium/external/helium-antlib/bin/helium-logging.jar has changed
Binary file buildframework/helium/external/helium-antlib/bin/helium-metadata.jar has changed
Binary file buildframework/helium/external/helium-antlib/bin/helium-quality.jar has changed
Binary file buildframework/helium/external/helium-antlib/bin/helium-sbs.jar has changed
Binary file buildframework/helium/external/helium-antlib/bin/helium-signaling.jar has changed
--- a/buildframework/helium/external/helium-antlib/bld.bat	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/external/helium-antlib/bld.bat	Thu Mar 04 15:10:37 2010 +0200
@@ -17,43 +17,9 @@
 rem
 
 setlocal
-if not defined JAVA_6_HOME (
-set TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
-) ELSE  set TESTED_JAVA=%JAVA_6_HOME%
-if exist %TESTED_JAVA% (set JAVA_HOME=%TESTED_JAVA%)
 
-REM Configure Ant 
-if not defined TESTED_ANT_HOME (
-set TESTED_ANT_HOME=C:\Apps\ant_1.7
-) 
-if exist %TESTED_ANT_HOME% (set ANT_HOME=%TESTED_ANT_HOME%)
-
-REM Configure the expected Ant Version details below
-SET expMajorVer=1
-SET expMinorVer=7
-
-rem *** Verify Ant Version ***
-rem -- Run the 'ant -version' command and capture the output to a variable 
-for /f "tokens=*" %%a in ('ant -version') do (set antversion=%%a)
-echo *** Installed Version : %antversion%
-
-rem -- Parse the version string obtained above and get the version number
-for /f "tokens=4 delims= " %%a in ("%antversion%") do set val=%%a
-rem -- Parse the version number delimiting the '.' and set the major and
-rem    minor versions
-for /f "tokens=1-2 delims=." %%a in ("%val%") do (
-set /A majorVersion=%%a
-set /A minorVersion=%%b
-)
-rem -- Check whether major version is greater than or equal to the expected.
-if %majorVersion% geq %expMajorVer% ( 
-rem -- if major version is valid, check minor version. If minor version is less
-rem    than expected display message and abort the execution.
-if %minorVersion% lss %expMinorVer% (echo *** Incorrect version of Ant found. Please check you have atleast Ant 1.7.0 & goto :errorstop ) 
-)
-
-set ANT_ARGS=-lib antlibs -lib lib -lib core/lib -lib diamonds/lib -lib scm/lib
-ant %*
+set BUILDER_HOME=builder
+%BUILDER_HOME%\bld.bat %*
 endlocal
 
 :errorstop
--- a/buildframework/helium/external/helium-antlib/bld.sh	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/external/helium-antlib/bld.sh	Thu Mar 04 15:10:37 2010 +0200
@@ -1,4 +1,4 @@
-#!/bin/csh
+#!/bin/sh
 
 #
 # Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
@@ -16,8 +16,5 @@
 # Description: 
 #
 
-module load java/1.6.0
-module load "tww/ant/1.7.1"
-module load mercurial
-setenv ANT_ARGS "-lib antlibs -lib lib" 
-ant $*
+export BUILDER_HOME=builder
+$BUILDER_HOME/bld $*
--- a/buildframework/helium/external/helium-antlib/build.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/external/helium-antlib/build.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -20,75 +20,11 @@
 
 ============================================================================
 -->
-<project name="helium-antlib" default="build" xmlns:au="antlib:org.apache.ant.antunit">
-    <description>Helium Antlib build file.</description>
-    
+<project name="sf" default="build">
     <property environment="env" />
-
-    <dirname property="helium.antlib.root.dir" file="${ant.file.helium-antlib}" />    
-
-    <import file="macros.ant.xml" />    
-    
-    
-    <path id="subant.build.files">
-        <fileset dir="." includes="core/build.xml" />
-        <fileset dir="." includes="signaling/build.xml" />
-        <fileset dir="." includes="*/build.xml" />
-    </path>
-
-    
-    <target name="compile" description="Compile class files">
-        <subantPreset target="compile"/>
-    </target>
-    
-    
-    <target name="jar" description="Create jar files">
-        <subantPreset target="jar"/>
-    </target>
-    
-    
-    <target name="build" description="Runs compile and jar">
-        <subantPreset target="build"/>
-    </target>
-    
-    
-    <target name="junit" description="Runs jUnit tests">
-        <subantPreset target="junit"/>
-        <antcall target="merge-coverage" />
-    </target>
-    
-    
-    <target name="unittest" description="Runs AntUnit tests">
-        <subantPreset target="unittest"/>
-        <antcall target="merge-coverage" />
-    </target>
-    
-        
-    <target name="test" description="Runs all tests">
-        <subantPreset target="test"/>
-        <antcall target="merge-coverage" />
-    </target>
-    
-    <target name="clean" description="Cleans build outputs">
-        <subantPreset target="clean"/>
-    </target>
-
-    <target name="merge-coverage">
-        <emma enabled="true">
-            <report>
-                <sourcepath>
-                    <dirset dir="${helium.antlib.root.dir}" >
-                        <include name="**/src" /> 
-                    </dirset>
-                </sourcepath>
-                <infileset dir="${build.temp.dir}" includes="**/*.emma" />
-                <txt outfile="${build.temp.dir}/coverage.txt" />
-                <html outfile="${build.temp.dir}/coverage.html" />
-                <xml outfile="${build.temp.dir}/coverage.xml" />
-            </report>
-        </emma>
-    </target>
-    
+    <property name="helium.source.root.dir" location="${ant.file.sf}/.." />
+    <property name="sf.source.root.dir" location="${ant.file.sf}/.." />
+    <import file="${env.BUILDER_HOME}/build.xml"/>
 </project>
 
 
Binary file buildframework/helium/external/helium-antlib/builder/antlibs/ant-antunit-1.1.jar has changed
Binary file buildframework/helium/external/helium-antlib/builder/antlibs/ant-contrib-1.0b2.jar has changed
Binary file buildframework/helium/external/helium-antlib/builder/antlibs/bsf-2.4.0.jar has changed
Binary file buildframework/helium/external/helium-antlib/builder/antlibs/checkstyle-all-5.0.jar has changed
Binary file buildframework/helium/external/helium-antlib/builder/antlibs/commons-logging-1.1.1.jar has changed
Binary file buildframework/helium/external/helium-antlib/builder/antlibs/emma.jar has changed
Binary file buildframework/helium/external/helium-antlib/builder/antlibs/emma_ant.jar has changed
Binary file buildframework/helium/external/helium-antlib/builder/antlibs/fmpp-0.9.13.jar has changed
Binary file buildframework/helium/external/helium-antlib/builder/antlibs/ivy-2.1.0.jar has changed
Binary file buildframework/helium/external/helium-antlib/builder/antlibs/junit-4.5.jar has changed
Binary file buildframework/helium/external/helium-antlib/builder/antlibs/jython-2.5.jar has changed
Binary file buildframework/helium/external/helium-antlib/builder/antlibs/velocity-dep-1.3.1.jar has changed
Binary file buildframework/helium/external/helium-antlib/builder/antlibs/xmlunit-1.2.jar has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/builder/bld	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,67 @@
+#!/bin/bash
+
+#
+# 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: 
+#
+
+# loading the system wide settings from ~/.bashrc
+if [ -f ~/.bashrc ] ; then
+	. ~/.bashrc
+fi
+MODULE_VERSION="$(module --version 2>&1)"
+if [ "$?" == "0" ] ; then
+    module load "java/1.6.0"
+    module load "tww/ant/1.7.0"
+    module load mercurial
+    module load tww/python/2.6.4
+    module load "tww/p7zip/4.58"
+    module load ccm
+fi
+
+export LANG="en_US.UTF-8"
+
+if [ ! $EPOCROOT ]; then
+    export EPOCROOT="/"
+fi 
+
+BUILDER_HOME=$(cd ${0%/*} && pwd -P)
+
+CWD=`pwd`
+
+if [ ! -e "$BUILDER_HOME/../deps/amara/4Suite_XML/1.0.2/4Suite_XML-1.0.2.py2.6-unix.egg" ] ; then
+    cd $BUILDER_HOME/../deps/amara/4Suite_XML/1.0.2
+    tar xvfz 4Suite-XML-1.0.2.tar.gz > /dev/null
+    cd 4Suite-XML-1.0.2
+    python setup.py bdist_egg > /dev/null
+    mv dist/*.egg ../4Suite_XML-1.0.2.py2.6-unix.egg
+fi
+
+cd $CWD
+
+export PYTHONPATH=$BUILDER_HOME/python/lib/setuptools-0.6c11-py2.5.egg
+
+if [ ! -e "$BUILDER_HOME/../deps/lxml/lxml/2.2.1/lxml-2.2.1.py2.6-unix.egg" ] ; then
+    cd $BUILDER_HOME/../deps/lxml/lxml/2.2.1
+    tar xvfz lxml-1.3.6.tgz > /dev/null
+    cd lxml-1.3.6
+    python setup.py bdist_egg > /dev/null
+    mv dist/*.egg ../lxml-2.2.1.py2.6-unix.egg
+fi
+
+cd $CWD
+
+export USERNAME=$USER
+export PATH=$PATH:.
+ant -lib $BUILDER_HOME/antlibs $*
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/builder/bld.bat	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,37 @@
+@echo off
+
+rem
+rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+rem All rights reserved.
+rem This component and the accompanying materials are made available
+rem under the terms of the License "Eclipse Public License v1.0"
+rem which accompanies this distribution, and is available
+rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+rem
+rem Initial Contributors:
+rem Nokia Corporation - initial contribution.
+rem
+rem Contributors:
+rem
+rem Description: 
+rem
+
+setlocal
+if not defined JAVA_6_HOME (
+set TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
+) ELSE  set TESTED_JAVA=%JAVA_6_HOME%
+if exist %TESTED_JAVA% (set JAVA_HOME=%TESTED_JAVA%)
+
+if not defined BUILDER_HOME (
+    set BUILDER_HOME=%~dp0
+)
+
+set PATH=%JAVA_HOME%\bin;%PATH%
+ant -lib %BUILDER_HOME%\antlibs %*
+if "%ERRORLEVEL%" neq "0" (goto error)
+endlocal
+goto :eof
+
+:error
+endlocal
+if "%OS%"=="Windows_NT" color 00
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/builder/build.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : build.xml 
+Part of     : Helium AntLib
+
+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="helium-antlib" default="build" xmlns:au="antlib:org.apache.ant.antunit" xmlns:ivy="antlib:org.apache.ivy.ant" xmlns:ac="antlib:net.sf.antcontrib">
+    <!--
+    <property name="bin.dir" location="${build.dir}/bin" />
+    <property name="build.dir" location="${ant.file.helium-antlib}/../../build" />
+    <property name="helium.dir" location="${ant.file.helium-antlib}/../../build/helium" />
+    <property name="antlib.dir" location="${helium.dir}/external/antlib" />
+    <property name="ivy.dep.file" location="${ant.file.helium-antlib}/../../config/${config}/ivy.xml"/>
+     
+    <target name="configure-ivy">
+        <ivy:settings file="${ant.file.helium-antlib}/../../config/${config}/ivysettings.xml" />
+    </target>
+
+    <target name="get-deps" depends="configure-ivy">
+      <mkdir dir="${helium.dir}" />
+      <mkdir dir="${antlib.dir}" />
+      <ivy:retrieve pattern="${antlib.dir}/[artifact]-[revision].[ext]"
+          ivypattern="${antlib.dir}/[artifact]-[revision].[ext]" conf="${config}" sync="true"/>
+    </target>
+  
+    <target name="build-helium" depends="get-deps">
+    </target>
+    -->
+    <condition property="platform" value="win32" else="unix">
+        <os family="windows"/>
+    </condition>
+    <property name="helium.source.root.dir" location=".." />
+    <property name="build.temp.dir" location="${helium.source.root.dir}/build" />
+    <property name="sf.source.root.dir" location=".." />
+    <property name="component" value="*" />
+    <fileset id="ant.build.files" dir="${helium.source.root.dir}">
+        <include name="*/${component}/build.xml" />
+        <exclude name="builder/**" />
+        <exclude name="*/builder/**" />
+    </fileset>
+  
+    <target name="get-build-list">
+        <ivy:buildlist reference="ivy.buildlist.path">
+            <fileset refid="ant.build.files"/>
+        </ivy:buildlist>
+    </target>
+
+    <target name="report" depends="get-build-list">
+        <subant target="report" buildpathref="ivy.buildlist.path">
+            <property name="builder.dir" location="${ant.file.helium-antlib}/.." />
+        </subant>
+    </target>
+  
+    <target name="compile" depends="get-build-list">
+        <subant target="compile" buildpathref="ivy.buildlist.path">
+            <property name="builder.dir" location="${ant.file.helium-antlib}/.." />
+            <property name="helium.source.root.dir" value="${helium.source.root.dir}"/>
+            <property name="sf.source.root.dir" value="${sf.source.root.dir}"/>
+        </subant>
+    </target>
+
+    <target name="build" depends="get-build-list">
+        <subant target="package" buildpathref="ivy.buildlist.path">
+            <property name="builder.dir" location="${ant.file.helium-antlib}/.." />
+            <property name="helium.source.root.dir" value="${helium.source.root.dir}"/>
+            <property name="sf.source.root.dir" value="${sf.source.root.dir}"/>
+            <property name="platform" value="${platform}"/>
+        </subant>
+    </target>
+
+    <target name="clean" depends="get-build-list">
+        <subant target="clean" buildpathref="ivy.buildlist.path">
+            <property name="builder.dir" location="${ant.file.helium-antlib}/.." />
+            <property name="helium.source.root.dir" value="${helium.source.root.dir}"/>
+            <property name="sf.source.root.dir" value="${sf.source.root.dir}"/>
+        </subant>
+    </target>
+  
+    <target name="test" depends="get-build-list,build">
+        <ac:for param="file" keepgoing="true">
+            <path refid="ivy.buildlist.path" />
+            <sequential>
+                <echo>Testing: @{file}</echo>
+                <ant antfile="@{file}" dir="@{file}/.." target="test" inheritAll="false">
+                    <property name="builder.dir" location="${ant.file.helium-antlib}/.." />
+                </ant>
+            </sequential>
+        </ac:for>
+    </target>
+    <!-- TODO: remove after CI tools are cleaned up -->
+    <target name="unittest" depends="test"/>
+    
+    <target name="junit" depends="get-build-list">
+        <subant target="junit" buildpathref="ivy.buildlist.path">
+            <property name="builder.dir" location="${ant.file.helium-antlib}/.." />
+        </subant>
+    </target>
+    
+    <target name="antunit" depends="get-build-list">
+        <subant target="antunit" buildpathref="ivy.buildlist.path">
+            <property name="builder.dir" location="${ant.file.helium-antlib}/.." />
+        </subant>
+    </target>
+    
+    <target name="quality" depends="get-build-list">
+        <ac:for param="file" keepgoing="true">
+            <path refid="ivy.buildlist.path" />
+            <sequential>
+                <echo>${ant.file.helium-antlib}</echo>
+                <ant antfile="@{file}" dir="@{file}/.." target="quality" inheritAll="false">
+                    <property name="builder.dir" location="${ant.file.helium-antlib}/.." />
+                    <property name="helium.source.root.dir" value="${helium.source.root.dir}"/>
+                    <property name="sf.source.root.dir" value="${sf.source.root.dir}"/>
+                    <property name="platform" value="${platform}"/>
+                </ant>
+            </sequential>
+        </ac:for>
+    </target>
+
+    <target name="checkstyle" depends="get-build-list">
+        <ac:for param="file" keepgoing="true">
+            <path refid="ivy.buildlist.path" />
+            <sequential>
+                <ant antfile="@{file}" dir="@{file}/.." target="checkstyle" inheritAll="false">
+                    <property name="builder.dir" location="${ant.file.helium-antlib}/.." />
+                    <property name="helium.source.root.dir" value="${helium.source.root.dir}"/>
+                    <property name="sf.source.root.dir" value="${sf.source.root.dir}"/>
+                    <property name="platform" value="${platform}"/>
+                </ant>
+            </sequential>
+        </ac:for>
+    </target>
+
+    <target name="textdoc">
+        <copy todir="${build.temp.dir}/doctmp" overwrite="true">
+            <fileset dir="${sf.source.root.dir}/doc/src"/>
+        </copy>
+        <copy todir="${build.temp.dir}/doctmp" overwrite="true" flatten="true">
+            <fileset dir="${sf.source.root.dir}" includes="**/*.rst"/>
+        </copy>
+        <rstMacro version="1.0" src="${build.temp.dir}/doctmp"/>
+    </target>
+    
+    <!-- Macro to generate html docs from rst. -->
+    <macrodef name="rstMacro">
+        <attribute name="version"/>
+        <attribute name="src" default="${sf.source.root.dir}/doc/src"/>
+        <attribute name="output" default="${build.temp.dir}/doc"/>
+        <sequential>
+            <property name="sphinx.lib.dir" location="${sf.source.root.dir}/doc/tools/Sphinx-0.5.1-py2.5.egg/sphinx" />
+            <exec executable="python" failonerror="${failonerror}">
+                <env key="PYTHONPATH" path="${sf.source.root.dir}/doc/tools" />
+                <arg file="${sf.source.root.dir}/doc/tools/sphinx-build.py"/>
+                <arg value="-b" />
+                <arg value="html" />            
+                <arg value="-D" />
+                <arg value="version=@{version}" />
+                <arg value="-D" />
+                <arg value="release=@{version}" />
+                <arg file="@{src}" />
+                <arg file="@{output}" />
+            </exec>
+        </sequential>
+    </macrodef>
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/builder/helium.basic.tools.config	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,33 @@
+#
+# 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: 
+#
+
+###############################################
+#   *** HELIUM BASIC TOOLS CONFIGURATION ***  #
+###############################################
+
+## Note: For multiple version support use comma separated values
+## Eg: java.version=1.5,1.6
+
+## Supported java versions 
+java.version=1.6
+
+
+## Supported ant versions
+ant.version=1.7.0
+
+
+## Supported Python version
+python.version=2.5,2.6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/builder/java/common.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,41 @@
+<?xml version="1.0"?>
+<!-- 
+============================================================================ 
+Name        : build.xml 
+Part of     : Helium AntLib
+
+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="build-common-macros" xmlns:ivy="antlib:org.apache.ivy.ant" xmlns:au="org.apache.ant.antunit">
+    <!--<dirname property="helium.source.root.dir" file="${ant.file.build-common-macros}/../.." />-->
+    <dirname property="builder.dir" file="${ant.file.build-common-macros}/../" />
+    <property name="build.temp.dir" location="${builder.dir}/../build" />
+    <property name="bin.dir" location="${basedir}/../../bin" />
+    <property name="module.temp.dir" location="${build.temp.dir}/${ant.project.name}/" />
+    <property name="lib.dir" location="${module.temp.dir}/lib" />
+    <property name="classes.dir" location="${module.temp.dir}/classes" />
+    <property name="module.bin.dir" location="${module.temp.dir}/bin" />
+    <property name="antunit.result.dir" location="${module.temp.dir}/antunit" />
+    <property name="src.dir" location="${basedir}/src" />
+    <property name="ivy.file" location="${basedir}/ivy.xml" />
+    <property name="jar.file" location="${bin.dir}/${ant.project.name}.jar" />
+    <property name="module.version.target" value="1.0" />
+    <property name="ivy.settings.dir" location="${basedir}/../../settings" />
+    <path id="lib.path.id">
+        <fileset dir="${lib.dir}" />
+    </path>
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/builder/java/config/java_checkstyle_config.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,196 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : java_checkstyle_config.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:
+
+============================================================================
+-->
+<!DOCTYPE module PUBLIC
+    "-//Puppy Crawl//DTD Check Configuration 1.2//EN"
+    "http://www.puppycrawl.com/dtds/configuration_1_2.dtd">
+
+<!--
+
+  Checkstyle configuration using Eclipse Helium profile
+
+-->
+
+<module name="Checker">
+
+
+    <!-- Allow exception in the code, but comment is needed -->
+    <module name="SuppressionCommentFilter" />
+    <module name="SuppressionCommentFilter">
+        <property name="offCommentFormat" value="CheckStyle\:([\w\|]+) OFF"/>
+        <property name="onCommentFormat" value="CheckStyle\:([\w\|]+) ON"/>
+        <property name="checkFormat" value="$1"/>
+    </module>
+    
+    <!-- Checks that a package.html file exists for each package.     -->
+    <!-- See http://checkstyle.sf.net/config_javadoc.html#PackageHtml -->
+    <!-- module name="PackageHtml"/-->
+
+    <!-- Checks whether files end with a new line.                        -->
+    <!-- See http://checkstyle.sf.net/config_misc.html#NewlineAtEndOfFile -->
+    <!--<module name="NewlineAtEndOfFile"/>-->
+
+    <!-- Checks that property files contain the same keys.         -->
+    <!-- See http://checkstyle.sf.net/config_misc.html#Translation -->
+    <module name="Translation"/>
+    <module name="FileLength"/>
+    <module name="FileTabCharacter"/>
+
+    <module name="TreeWalker">
+        <module name="FileContentsHolder"/>
+        
+        <!-- Checks for Javadoc comments.                     -->
+        <!-- See http://checkstyle.sf.net/config_javadoc.html -->
+        <!--<module name="JavadocMethod"/>
+        <module name="JavadocVariable"/>
+        <module name="JavadocStyle"/>-->
+        
+        <module name="JavadocType">
+           <property name="scope" value="public"/>
+        </module>
+
+        <!-- Checks for Naming Conventions.                  -->
+        <!-- See http://checkstyle.sf.net/config_naming.html -->
+        <module name="ConstantName"/>
+        <module name="LocalFinalVariableName"/>
+        <module name="LocalVariableName"/>
+        <module name="MemberName"/>
+        <module name="MethodName"/>
+        <module name="PackageName"/>
+        <module name="ParameterName"/>
+        <module name="StaticVariableName"/>
+        <module name="TypeName"/>
+
+
+        <!-- Checks for Headers                                -->
+        <!-- See http://checkstyle.sf.net/config_header.html   -->
+        <!-- <module name="Header">                            -->
+            <!-- The follow property value demonstrates the ability     -->
+            <!-- to have access to ANT properties. In this case it uses -->
+            <!-- the ${basedir} property to allow Checkstyle to be run  -->
+            <!-- from any directory within a project. See property      -->
+            <!-- expansion,                                             -->
+            <!-- http://checkstyle.sf.net/config.html#properties        -->
+            <!-- <property                                              -->
+            <!--     name="headerFile"                                  -->
+            <!--     value="${basedir}/java.header"/>                   -->
+        <!-- </module> -->
+
+        <!-- Following interprets the header file as regular expressions. -->
+        <!-- <module name="RegexpHeader"/>                                -->
+
+
+        <!-- Checks for imports                              -->
+        <!-- See http://checkstyle.sf.net/config_import.html -->
+        <!--<module name="AvoidStarImport"/>-->
+        <module name="IllegalImport"/> <!-- defaults to sun.* packages -->
+        <module name="RedundantImport"/>
+        <module name="UnusedImports"/>
+
+
+        <!-- Checks for Size Violations.                    -->
+        <!-- See http://checkstyle.sf.net/config_sizes.html -->
+        <!--<module name="LineLength"/>-->
+        <module name="MethodLength"/>
+        <module name="ParameterNumber"/>
+
+
+        <!-- Checks for whitespace                               -->
+        <!-- See http://checkstyle.sf.net/config_whitespace.html -->
+        <!--<module name="EmptyForIteratorPad"/>
+        <module name="MethodParamPad"/>
+        <module name="NoWhitespaceAfter"/>
+        <module name="NoWhitespaceBefore"/>
+        <module name="OperatorWrap"/>
+        <module name="ParenPad"/>
+        <module name="TypecastParenPad"/>
+        <module name="WhitespaceAfter"/>-->
+        <module name="WhitespaceAround"/>
+
+
+        <!-- Modifier Checks                                    -->
+        <!-- See http://checkstyle.sf.net/config_modifiers.html -->
+        <module name="ModifierOrder"/>
+        <module name="RedundantModifier"/>
+
+
+        <!-- Checks for blocks. You know, those {}'s         -->
+        <!-- See http://checkstyle.sf.net/config_blocks.html -->
+        <module name="AvoidNestedBlocks"/>
+        <module name="EmptyBlock"/>
+        <!--<module name="LeftCurly">--> 
+        <!--<module name="NeedBraces"/>-->
+        <!--<module name="RightCurly">-->
+
+
+        <!-- Checks for common coding problems               -->
+        <!-- See http://checkstyle.sf.net/config_coding.html -->
+        <module name="DoubleCheckedLocking"/>    <!-- MY FAVOURITE -->
+        <module name="EmptyStatement"/>
+        <module name="EqualsHashCode"/>
+        <!--<module name="HiddenField"/>-->
+        <module name="IllegalInstantiation"/>
+        <module name="InnerAssignment"/>
+        <!--<module name="MagicNumber"/>-->
+        <module name="MissingSwitchDefault"/>
+        <module name="RedundantThrows"/>
+        <module name="SimplifyBooleanExpression"/>
+        <module name="SimplifyBooleanReturn"/>
+
+        <!-- Checks for class design                         -->
+        <!-- See http://checkstyle.sf.net/config_design.html -->
+        <!--<module name="DesignForExtension"/>-->
+        <module name="FinalClass"/>
+        <module name="HideUtilityClassConstructor"/>
+        <module name="InterfaceIsType"/>
+        <module name="VisibilityModifier"/>
+
+
+        <!-- Miscellaneous other checks.                   -->
+        <!-- See http://checkstyle.sf.net/config_misc.html -->
+        <module name="ArrayTypeStyle"/>
+        <!--<module name="FinalParameters"/>
+        <module name="GenericIllegalRegexp">
+            <property name="format" value="\s+$"/>
+            <property name="message" value="Line has trailing spaces."/>
+        </module>-->
+        <module name="TodoComment"/>
+        <module name="UpperEll"/>
+        
+        <module name="ExplicitInitialization"/>
+        <module name="UnnecessaryParentheses"/>
+        <module name="DeclarationOrder"/>
+        
+        <module name="StringLiteralEquality"/>
+        
+        <module name="CyclomaticComplexity">
+            <property name="max" value="26"/>
+        </module>
+        
+        <module name="SuperFinalize"/>
+        
+        <module name="IllegalCatch">
+            <property name="severity" value="warning"/>
+        </module>
+    </module>
+
+</module>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/builder/java/macros.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,338 @@
+<?xml version="1.0"?>
+<!-- 
+============================================================================ 
+Name        : build.xml 
+Part of     : Helium AntLib
+
+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="build-macros" xmlns:ivy="antlib:org.apache.ivy.ant" xmlns:au="org.apache.ant.antunit"
+    xmlns:cs="antlib:com.puppycrawl.tools.checkstyle">
+    <import file="common.ant.xml" />
+    
+    <target name="clean">
+        <delete dir="${module.temp.dir}" />
+    </target>
+
+    <target name="resolve">
+        <mkdir dir="${lib.dir}"/> <!-- not usually necessary, ivy creates the directory IF there are dependencies -->
+        <ivy:settings file="${ivy.settings.dir}/ivysettings.xml" />
+        
+        <!-- the call to resolve is not mandatory, retrieve makes an implicit call if we don't -->
+        <ivy:resolve file="${ivy.file}" log="download-only"/>
+        <ivy:retrieve pattern="${lib.dir}/[artifact].[ext]" log="download-only"/>
+    </target>
+
+    <target name="report" depends="resolve" description="--> generates a report of dependencies">
+        <ivy:report todir="${build.dir}"/>
+    </target>
+
+    <target name="quality" depends="checkstyle" />
+    
+    <target name="checkstyle" depends="resolve">
+        <mkdir dir="${module.temp.dir}"/>
+        <echo>Running checkstyle on ${ant.project.name}.</echo>
+        <cs:checkstyle config="${builder.dir}/java/config/java_checkstyle_config.xml">
+            <classpath>
+                <path refid="lib.path.id" />
+                <pathelement location="${jar.file}" />
+            </classpath>
+            <fileset dir="${src.dir}" includes="**/*.java"/>
+            <formatter type="plain"/>
+            <formatter type="xml" toFile="${module.temp.dir}/checkstyle_errors.xml"/>
+        </cs:checkstyle>
+    </target>
+    
+    <target name="compile" depends="resolve" description="--> compile the project">
+        <mkdir dir="${classes.dir}" />
+        <javac srcdir="${src.dir}" destdir="${classes.dir}" classpathref="lib.path.id" debug="true" source="1.6" target="1.6" listfiles="true"> 
+            <compilerarg value="-Xlint:unchecked" />
+            <compilerarg value="-Xlint:deprecation" />
+            <compilerarg value="-Werror" />
+        </javac>
+    </target>
+
+    <target name="ivy-new-version"  unless="ivy.new.revision">
+        <!-- default module version prefix value 
+        <property name="module.version.prefix" value="${module.version.target}-dev-b" />
+        -->
+        <!-- asks to ivy an available version number
+        <ivy:info file="${ivy.file}" />
+        <ivy:buildnumber 
+            organisation="${ivy.organisation}" module="${ivy.module}" 
+            revision="${module.version.prefix}" defaultBuildNumber="1" revSep=""/> -->
+    </target>
+
+    <target name="local-version">
+        <!--<tstamp>
+            <format property="now" pattern="yyyyMMddHHmmss"/>
+        </tstamp>
+        <property name="ivy.new.revision" value="${module.version.target}-local-${now}"/>-->
+    </target>
+    
+    <target name="version" depends="ivy-new-version">
+        <!-- create version file in classpath for later inclusion in jar 
+        <mkdir dir="${classes.dir}"/>
+        <echo message="version=${ivy.new.revision}" file="${classes.dir}/${ant.project.name}.properties" append="false" />
+-->
+        <!-- load generated version properties file 
+        <property file="${classes.dir}/${ant.project.name}.properties" />-->
+    </target>
+    
+    <target name="package" depends="local-version,version,compile" description="--> make a jar file for this project">
+        <delete dir="${module.bin.dir}"/>
+        <mkdir dir="${module.bin.dir}" />
+        <jar destfile="${module.bin.dir}/${ant.project.name}.jar">
+            <fileset dir="${classes.dir}" />
+            <fileset dir="${src.dir}" includes="**/*.xml" />
+            <fileset dir="${src.dir}" includes="**/*.*ftl" />
+            <fileset dir="${src.dir}" includes="**/*.vm" />
+            <manifest>
+                <section name="common">
+                    <attribute name="Implementation-Title" value="${ant.project.name}" />
+                    <attribute name="Implementation-Vendor" value="Nokia" />
+                </section>
+            </manifest>
+        </jar>
+
+        <copy file="${module.bin.dir}/${ant.project.name}.jar" todir="${bin.dir}" />
+        <!--
+        <mkdir dir="${bin.dir}/com.nokia.helium/${ant.project.name}/${version}" />
+        <copy file="${bin.dir}/com.nokia.helium/${ant.project.name}/${version}/${ant.project.name}.jar" todir="${module.bin.dir}" />
+        [organisation]/[module]/[color]/[revision]/[artifact].[ext] 
+        
+        pubrevision="${version}"
+        pubdate="${now}"
+        -->
+        <ivy:publish artifactspattern="${bin.dir}/[artifact].[ext]" 
+                        resolver="local"
+                        status="integration"
+                        forcedeliver="true"
+                        pubrevision="1.0"
+                        overwrite="true"
+        />
+    </target>
+
+
+    <target name="test" depends="junit,antunit"/>
+
+    <target name="junit">
+        <junitModule name="${ant.project.name}"/>
+        <if>
+            <resourcecount count="0" when="gt">
+                <fileset dir="${build.temp.dir}/" includes="*/*.emma" />
+            </resourcecount>
+            <then>
+                <emma enabled="true" verbosity="quiet">
+                    <report sourcepath="${src.dir}">
+                        <infileset dir="${build.temp.dir}/" includes="*/*.emma" />
+                        <txt outfile="${build.temp.dir}/coverage.txt" />
+                        <html outfile="${build.temp.dir}/coverage.html" />
+                        <xml outfile="${build.temp.dir}/coverage.xml" />
+                    </report>
+                </emma>
+            </then>
+        </if>
+    </target>
+    
+    <target name="antunit">
+        <antunitModule name="${ant.project.name}"/>
+        <if>
+            <resourcecount count="0" when="gt">
+                <fileset dir="${build.temp.dir}/" includes="*/*.emma" />
+            </resourcecount>
+            <then>
+                <emma enabled="true" verbosity="quiet">
+                    <report sourcepath="${src.dir}">
+                        <infileset dir="${build.temp.dir}/" includes="*/*.emma" />
+                        <txt outfile="${build.temp.dir}/coverage.txt" />
+                        <html outfile="${build.temp.dir}/coverage.html" />
+                        <xml outfile="${build.temp.dir}/coverage.xml" />
+                    </report>
+                </emma>
+            </then>
+        </if>
+    </target>
+    <target name="unittest" depends="antunit"/>
+    
+    <macrodef name="antunitModule">
+        <attribute name="name" />
+        <attribute name="dir" default="${helium.antlib.root.dir}" />
+        <attribute name="bindir" default="${bin.dir}" />
+        <sequential>
+            <mkdir dir="${build.temp.dir}" />
+            <if>
+                <available type="dir" file="${basedir}/tests"/>
+                <then>
+                    <trycatch property="antunitModule.error">
+                        <try>
+                            <!-- Temporarly replacing the jar file
+                                 with an instrumented one to do the 
+                                 actual coverage measurment
+                             -->
+                            <mkdir dir="${build.temp.dir}/@{name}/backup" />
+                            <delete>
+                                <fileset dir="${build.temp.dir}" includes="@{name}/**/*_antunit.emma" />
+                            </delete>
+                            <copy file="@{bindir}/@{name}.jar" todir="${build.temp.dir}/@{name}/backup/" />
+                            <emma enabled="true" verbosity="quiet">
+                                <instr destdir="@{bindir}/" metadatafile="${build.temp.dir}/@{name}/metadata_antunit.emma" merge="true" mode="overwrite">
+                                    <instrpath>
+                                        <fileset dir="@{bindir}" includes="@{name}.jar" />
+                                    </instrpath>
+                                </instr>
+                            </emma>
+                            <exec osfamily="windows" executable="cmd" dir="${basedir}/tests" failonerror="true">
+                                <env key="ANT_ARGS" value="-lib ${lib.dir} -lib @{bindir}/@{name}.jar -lib ${builder.dir}/antlibs" />
+                                <arg line="/c build.bat unittest -Dbuilder.dir=${builder.dir}" />
+                            </exec>
+                            <exec osfamily="unix" executable="./bld.sh" dir="${basedir}/tests" failonerror="true">
+                                <env key="ANT_ARGS" value="-lib ${lib.dir} -lib @{bindir}/@{name}.jar -lib ${builder.dir}/antlibs" />
+                                <arg line="unittest -Dbuilder.dir=${builder.dir}" />
+                            </exec>
+                            <move todir="${build.temp.dir}/@{name}">
+                                <fileset dir="${basedir}/tests" includes="**/coverage.ec" />
+                                <chainedmapper>
+                                    <filtermapper>
+                                        <replacestring from="/" to="_" />
+                                        <replacestring from="\" to="_" />
+                                    </filtermapper>
+                                    <regexpmapper from="^(.*)\.ec$$" to="\1_antunit.emma" />
+                                </chainedmapper>
+                            </move>
+                            <emma enabled="true" verbosity="quiet">
+                                <report>
+                                    <infileset dir="${build.temp.dir}/@{name}/" includes="*_antunit.emma" />
+                                    <txt outfile="${build.temp.dir}/@{name}/coverage_antunit.txt" />
+                                    <html outfile="${build.temp.dir}/@{name}/coverage_antunit.html" />
+                                    <xml outfile="${build.temp.dir}/@{name}/coverage_antunit.xml" />
+                                </report>
+                            </emma>
+                            <if>
+                                <available file="${build.temp.dir}/@{name}/coverage_antunit.txt" />
+                                <then>
+                                    <loadfile property="message" srcFile="${build.temp.dir}/@{name}/coverage_antunit.txt" />
+                                    <echo message="${message}" />
+                                </then>
+                            </if>
+                        </try>
+                        <catch>
+                            <fail message="${antunitModule.error}" />
+                        </catch>
+                        <finally>
+                            <copy file="${build.temp.dir}/@{name}/backup/@{name}.jar" todir="@{bindir}" overwrite="true" />
+                            <delete>
+                                <fileset dir="${build.temp.dir}" includes="@{name}/backup/*.jar" />
+                            </delete>                                
+                        </finally>
+                    </trycatch>
+                </then>
+            </if>
+        </sequential>
+    </macrodef>
+    
+    
+    <path id="emma.classpath">
+        <fileset dir="${builder.dir}/antlibs">
+            <include name="**/*.jar" />
+        </fileset>
+    </path>
+    <taskdef resource="net/sf/antcontrib/antlib.xml" classpathref="emma.classpath"/>
+    <taskdef classpathref="emma.classpath" resource="emma_ant.properties" />
+    
+    <macrodef name="junitModule">
+        <attribute name="name" />
+        <attribute name="dir" default="${helium.antlib.root.dir}" />
+        <attribute name="bindir" default="${bin.dir}" />
+        <sequential>
+            <mkdir dir="${build.temp.dir}" />
+            <if>
+                <available type="dir" file="${basedir}/tests/src"/>
+                <then>
+                    <echo>JUnit test module @{name}</echo>
+                    <delete dir="${build.temp.dir}/@{name}/junit_classes"/>
+                    <delete>
+                        <fileset dir="${build.temp.dir}" includes="@{name}/**/*_junit.emma" />
+                        <fileset dir="${build.temp.dir}" includes="@{name}/backup/*.jar" />
+                    </delete>
+                    <mkdir dir="${build.temp.dir}/@{name}/junit_classes" />
+                    <javac srcdir="${basedir}/tests/src" destdir="${build.temp.dir}/@{name}/junit_classes" debug="true"> 
+                        <classpath>
+                            <fileset dir="${module.temp.dir}">
+                                <include name="**/*.jar"/>
+                            </fileset>
+                        </classpath>
+                        <include name="**/*.java" />
+                    </javac>
+            
+                    <mkdir dir="${build.temp.dir}/@{name}/backup" />
+                    <copy file="@{bindir}/@{name}.jar" todir="${build.temp.dir}/@{name}/backup/" overwrite="true"/>
+                    <emma enabled="true" verbosity="quiet">
+                        <instr destdir="${build.temp.dir}/@{name}/backup/" metadatafile="${build.temp.dir}/@{name}/metadata_junit.emma" merge="true" mode="overwrite">
+                            <instrpath>
+                                <fileset dir="${build.temp.dir}/@{name}/backup/" includes="@{name}.jar" />
+                            </instrpath>
+                        </instr>
+                    </emma>
+                    
+                    <delete file="${build.temp.dir}/@{name}/coverage.emma" failonerror="false" />
+                    <junit fork="yes" printsummary="yes" haltonfailure="yes">
+                        <formatter type="brief" usefile="false"/>
+                        <jvmarg value="-Demma.coverage.out.file=${build.temp.dir}/@{name}/coverage_junit.emma" />
+                        <jvmarg value="-Demma.coverage.out.merge=true" />
+                        <jvmarg value="-Dtestdir=${basedir}" />
+                        <classpath>
+                            <fileset dir="${build.temp.dir}/@{name}/backup/">
+                                <include name="**/*.jar"/>
+                            </fileset>
+                            <fileset dir="${lib.dir}">
+                                <include name="**/*.jar"/>
+                            </fileset>
+                            <fileset dir="${builder.dir}/antlibs">
+                                <include name="**/*.jar"/>
+                            </fileset>
+                            <pathelement path="${build.temp.dir}/@{name}/junit_classes" />
+                        </classpath>
+                        <batchtest fork="yes" todir="${build.temp.dir}/@{name}/junit_test">
+                            <fileset dir="${basedir}/tests/src">
+                                <include name="**/*Test*.java"/>
+                            </fileset>
+                        </batchtest>
+                    </junit>
+                    <delete dir="${build.temp.dir}/@{name}/backup/" failonerror="false" />
+                    
+                    <emma enabled="true" verbosity="quiet">
+                        <report>
+                            <infileset dir="${build.temp.dir}/@{name}" includes="*_junit.emma" />
+                            <txt outfile="${build.temp.dir}/@{name}/coverage.txt" />
+                            <html outfile="${build.temp.dir}/@{name}/coverage.html" />
+                            <xml outfile="${build.temp.dir}/@{name}/coverage.xml" />
+                        </report>
+                    </emma>
+                    <if>
+                        <available file="${build.temp.dir}/@{name}/coverage.txt" />
+                        <then>
+                            <loadfile property="message" srcFile="${build.temp.dir}/@{name}/coverage.txt"/>
+                            <echo message="${message}"/>
+                        </then>
+                    </if>
+                </then>
+            </if>
+        </sequential>
+    </macrodef>
+    
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/builder/java/test-macros.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,43 @@
+<?xml version="1.0"?>
+<!-- 
+============================================================================ 
+Name        : build.xml 
+Part of     : Helium AntLib
+
+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="test-macros" xmlns:ivy="antlib:org.apache.ivy.ant" xmlns:au="antlib:org.apache.ant.antunit">
+    <import file="common.ant.xml" />
+  
+    <path id="classpath.anlibs">
+        <fileset dir="${builder.dir}/antlibs" includes="*.jar"/>
+    </path>
+    
+    <fileset id="unittests.filetset" dir="${basedir}" includes="**/test_*.ant.xml" />
+    
+    <target name="antunit">
+        <echo message="${antunit.result.dir}" />
+        <mkdir dir="${antunit.result.dir}" />
+        <au:antunit>
+            <fileset refid="unittests.filetset" />
+            <au:plainlistener logLevel="info"/>
+            <au:xmllistener toDir="${antunit.result.dir}"/>
+        </au:antunit>
+    </target>
+    <target name="unittest" depends="antunit"/>
+    
+</project>
Binary file buildframework/helium/external/helium-antlib/builder/python/lib/coverage-2.85-py2.5.egg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/builder/python/lib/coverage.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,8 @@
+#!/usr/bin/env python
+"A script for invoking coverage from the command line."
+
+import sys
+del sys.path[0] # Otherwise "import coverage" finds this file!
+import coverage
+
+coverage.the_coverage.command_line(sys.argv[1:])
Binary file buildframework/helium/external/helium-antlib/builder/python/lib/jython-2.5-py2.5.egg has changed
Binary file buildframework/helium/external/helium-antlib/builder/python/lib/nose-0.11.1-py2.6.egg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/builder/python/lib/nosetests-script.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,9 @@
+#!C:\APPS\ACTPYT~1\python.exe
+# EASY-INSTALL-ENTRY-SCRIPT: 'nose==0.10.4','console_scripts','nosetests'
+
+import sys
+from pkg_resources import load_entry_point
+
+sys.exit(
+   load_entry_point('nose==0.11.1', 'console_scripts', 'nosetests')()
+)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/builder/python/lib/pkg_resources.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,2543 @@
+"""Package resource API
+--------------------
+
+A resource is a logical file contained within a package, or a logical
+subdirectory thereof.  The package resource API expects resource names
+to have their path parts separated with ``/``, *not* whatever the local
+path separator is.  Do not use os.path operations to manipulate resource
+names being passed into the API.
+
+The package resource API is designed to work with normal filesystem packages,
+.egg files, and unpacked .egg files.  It can also work in a limited way with
+.zip files and with custom PEP 302 loaders that support the ``get_data()``
+method.
+"""
+
+import sys, os, zipimport, time, re, imp, pkgutil  # XXX
+
+try:
+    frozenset
+except NameError:
+    from sets import ImmutableSet as frozenset
+
+# capture these to bypass sandboxing
+from os import utime, rename, unlink, mkdir
+from os import open as os_open
+from os.path import isdir, split
+
+def _bypass_ensure_directory(name, mode=0777):
+    # Sandbox-bypassing version of ensure_directory()
+    dirname, filename = split(name)
+    if dirname and filename and not isdir(dirname):
+        _bypass_ensure_directory(dirname)
+        mkdir(dirname, mode)
+
+
+
+
+
+
+
+
+_state_vars = {}
+
+def _declare_state(vartype, **kw):
+    g = globals()
+    for name, val in kw.iteritems():
+        g[name] = val
+        _state_vars[name] = vartype
+
+def __getstate__():
+    state = {}
+    g = globals()
+    for k, v in _state_vars.iteritems():
+        state[k] = g['_sget_'+v](g[k])
+    return state
+
+def __setstate__(state):
+    g = globals()
+    for k, v in state.iteritems():
+        g['_sset_'+_state_vars[k]](k, g[k], v)
+    return state
+
+def _sget_dict(val):
+    return val.copy()
+
+def _sset_dict(key, ob, state):
+    ob.clear()
+    ob.update(state)
+
+def _sget_object(val):
+    return val.__getstate__()
+
+def _sset_object(key, ob, state):
+    ob.__setstate__(state)
+
+_sget_none = _sset_none = lambda *args: None
+
+
+
+
+
+
+def get_supported_platform():
+    """Return this platform's maximum compatible version.
+
+    distutils.util.get_platform() normally reports the minimum version
+    of Mac OS X that would be required to *use* extensions produced by
+    distutils.  But what we want when checking compatibility is to know the
+    version of Mac OS X that we are *running*.  To allow usage of packages that
+    explicitly require a newer version of Mac OS X, we must also know the
+    current version of the OS.
+
+    If this condition occurs for any other platform with a version in its
+    platform strings, this function should be extended accordingly.
+    """
+    plat = get_build_platform(); m = macosVersionString.match(plat)
+    if m is not None and sys.platform == "darwin":
+        try:
+            plat = 'macosx-%s-%s' % ('.'.join(_macosx_vers()[:2]), m.group(3))
+        except ValueError:
+            pass    # not Mac OS X
+    return plat
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__all__ = [
+    # Basic resource access and distribution/entry point discovery
+    'require', 'run_script', 'get_provider',  'get_distribution',
+    'load_entry_point', 'get_entry_map', 'get_entry_info', 'iter_entry_points',
+    'resource_string', 'resource_stream', 'resource_filename',
+    'resource_listdir', 'resource_exists', 'resource_isdir',
+
+    # Environmental control
+    'declare_namespace', 'working_set', 'add_activation_listener',
+    'find_distributions', 'set_extraction_path', 'cleanup_resources',
+    'get_default_cache',
+
+    # Primary implementation classes
+    'Environment', 'WorkingSet', 'ResourceManager',
+    'Distribution', 'Requirement', 'EntryPoint',
+
+    # Exceptions
+    'ResolutionError','VersionConflict','DistributionNotFound','UnknownExtra',
+    'ExtractionError',
+
+    # Parsing functions and string utilities
+    'parse_requirements', 'parse_version', 'safe_name', 'safe_version',
+    'get_platform', 'compatible_platforms', 'yield_lines', 'split_sections',
+    'safe_extra', 'to_filename',
+
+    # filesystem utilities
+    'ensure_directory', 'normalize_path',
+
+    # Distribution "precedence" constants
+    'EGG_DIST', 'BINARY_DIST', 'SOURCE_DIST', 'CHECKOUT_DIST', 'DEVELOP_DIST',
+
+    # "Provider" interfaces, implementations, and registration/lookup APIs
+    'IMetadataProvider', 'IResourceProvider', 'FileMetadata',
+    'PathMetadata', 'EggMetadata', 'EmptyProvider', 'empty_provider',
+    'NullProvider', 'EggProvider', 'DefaultProvider', 'ZipProvider',
+    'register_finder', 'register_namespace_handler', 'register_loader_type',
+    'fixup_namespace_packages', 'get_importer',
+
+    # Deprecated/backward compatibility only
+    'run_main', 'AvailableDistributions',
+]
+class ResolutionError(Exception):
+    """Abstract base for dependency resolution errors"""
+    def __repr__(self):
+        return self.__class__.__name__+repr(self.args)
+
+class VersionConflict(ResolutionError):
+    """An already-installed version conflicts with the requested version"""
+
+class DistributionNotFound(ResolutionError):
+    """A requested distribution was not found"""
+
+class UnknownExtra(ResolutionError):
+    """Distribution doesn't have an "extra feature" of the given name"""
+
+_provider_factories = {}
+PY_MAJOR = sys.version[:3]
+EGG_DIST    = 3
+BINARY_DIST = 2
+SOURCE_DIST = 1
+CHECKOUT_DIST = 0
+DEVELOP_DIST = -1
+
+def register_loader_type(loader_type, provider_factory):
+    """Register `provider_factory` to make providers for `loader_type`
+
+    `loader_type` is the type or class of a PEP 302 ``module.__loader__``,
+    and `provider_factory` is a function that, passed a *module* object,
+    returns an ``IResourceProvider`` for that module.
+    """
+    _provider_factories[loader_type] = provider_factory
+
+def get_provider(moduleOrReq):
+    """Return an IResourceProvider for the named module or requirement"""
+    if isinstance(moduleOrReq,Requirement):
+        return working_set.find(moduleOrReq) or require(str(moduleOrReq))[0]
+    try:
+        module = sys.modules[moduleOrReq]
+    except KeyError:
+        __import__(moduleOrReq)
+        module = sys.modules[moduleOrReq]
+    loader = getattr(module, '__loader__', None)
+    return _find_adapter(_provider_factories, loader)(module)
+
+def _macosx_vers(_cache=[]):
+    if not _cache:
+        from platform import mac_ver
+        _cache.append(mac_ver()[0].split('.'))
+    return _cache[0]
+
+def _macosx_arch(machine):
+    return {'PowerPC':'ppc', 'Power_Macintosh':'ppc'}.get(machine,machine)
+
+def get_build_platform():
+    """Return this platform's string for platform-specific distributions
+
+    XXX Currently this is the same as ``distutils.util.get_platform()``, but it
+    needs some hacks for Linux and Mac OS X.
+    """
+    from distutils.util import get_platform
+    plat = get_platform()
+    if sys.platform == "darwin" and not plat.startswith('macosx-'):
+        try:
+            version = _macosx_vers()
+            machine = os.uname()[4].replace(" ", "_")
+            return "macosx-%d.%d-%s" % (int(version[0]), int(version[1]),
+                _macosx_arch(machine))
+        except ValueError:
+            # if someone is running a non-Mac darwin system, this will fall
+            # through to the default implementation
+            pass
+    return plat
+
+macosVersionString = re.compile(r"macosx-(\d+)\.(\d+)-(.*)")
+darwinVersionString = re.compile(r"darwin-(\d+)\.(\d+)\.(\d+)-(.*)")
+get_platform = get_build_platform   # XXX backward compat
+
+
+
+
+
+
+
+def compatible_platforms(provided,required):
+    """Can code for the `provided` platform run on the `required` platform?
+
+    Returns true if either platform is ``None``, or the platforms are equal.
+
+    XXX Needs compatibility checks for Linux and other unixy OSes.
+    """
+    if provided is None or required is None or provided==required:
+        return True     # easy case
+
+    # Mac OS X special cases
+    reqMac = macosVersionString.match(required)
+    if reqMac:
+        provMac = macosVersionString.match(provided)
+
+        # is this a Mac package?
+        if not provMac:
+            # this is backwards compatibility for packages built before
+            # setuptools 0.6. All packages built after this point will
+            # use the new macosx designation.
+            provDarwin = darwinVersionString.match(provided)
+            if provDarwin:
+                dversion = int(provDarwin.group(1))
+                macosversion = "%s.%s" % (reqMac.group(1), reqMac.group(2))
+                if dversion == 7 and macosversion >= "10.3" or \
+                    dversion == 8 and macosversion >= "10.4":
+
+                    #import warnings
+                    #warnings.warn("Mac eggs should be rebuilt to "
+                    #    "use the macosx designation instead of darwin.",
+                    #    category=DeprecationWarning)
+                    return True
+            return False    # egg isn't macosx or legacy darwin
+
+        # are they the same major version and machine type?
+        if provMac.group(1) != reqMac.group(1) or \
+            provMac.group(3) != reqMac.group(3):
+            return False
+
+
+
+        # is the required OS major update >= the provided one?
+        if int(provMac.group(2)) > int(reqMac.group(2)):
+            return False
+
+        return True
+
+    # XXX Linux and other platforms' special cases should go here
+    return False
+
+
+def run_script(dist_spec, script_name):
+    """Locate distribution `dist_spec` and run its `script_name` script"""
+    ns = sys._getframe(1).f_globals
+    name = ns['__name__']
+    ns.clear()
+    ns['__name__'] = name
+    require(dist_spec)[0].run_script(script_name, ns)
+
+run_main = run_script   # backward compatibility
+
+def get_distribution(dist):
+    """Return a current distribution object for a Requirement or string"""
+    if isinstance(dist,basestring): dist = Requirement.parse(dist)
+    if isinstance(dist,Requirement): dist = get_provider(dist)
+    if not isinstance(dist,Distribution):
+        raise TypeError("Expected string, Requirement, or Distribution", dist)
+    return dist
+
+def load_entry_point(dist, group, name):
+    """Return `name` entry point of `group` for `dist` or raise ImportError"""
+    return get_distribution(dist).load_entry_point(group, name)
+
+def get_entry_map(dist, group=None):
+    """Return the entry point map for `group`, or the full entry map"""
+    return get_distribution(dist).get_entry_map(group)
+
+def get_entry_info(dist, group, name):
+    """Return the EntryPoint object for `group`+`name`, or ``None``"""
+    return get_distribution(dist).get_entry_info(group, name)
+
+
+try:
+    from pkgutil import get_importer
+except ImportError:
+    import _pkgutil as pkgutil
+    get_importer = pkgutil.get_importer
+else:
+    import pkgutil
+
+
+class IMetadataProvider:
+
+    def has_metadata(name):
+        """Does the package's distribution contain the named metadata?"""
+
+    def get_metadata(name):
+        """The named metadata resource as a string"""
+
+    def get_metadata_lines(name):
+        """Yield named metadata resource as list of non-blank non-comment lines
+
+       Leading and trailing whitespace is stripped from each line, and lines
+       with ``#`` as the first non-blank character are omitted."""
+
+    def metadata_isdir(name):
+        """Is the named metadata a directory?  (like ``os.path.isdir()``)"""
+
+    def metadata_listdir(name):
+        """List of metadata names in the directory (like ``os.listdir()``)"""
+
+    def run_script(script_name, namespace):
+        """Execute the named script in the supplied namespace dictionary"""
+
+
+
+
+
+
+
+
+
+
+class IResourceProvider(IMetadataProvider):
+    """An object that provides access to package resources"""
+
+    def get_resource_filename(manager, resource_name):
+        """Return a true filesystem path for `resource_name`
+
+        `manager` must be an ``IResourceManager``"""
+
+    def get_resource_stream(manager, resource_name):
+        """Return a readable file-like object for `resource_name`
+
+        `manager` must be an ``IResourceManager``"""
+
+    def get_resource_string(manager, resource_name):
+        """Return a string containing the contents of `resource_name`
+
+        `manager` must be an ``IResourceManager``"""
+
+    def has_resource(resource_name):
+        """Does the package contain the named resource?"""
+
+    def resource_isdir(resource_name):
+        """Is the named resource a directory?  (like ``os.path.isdir()``)"""
+
+    def resource_listdir(resource_name):
+        """List of resource names in the directory (like ``os.listdir()``)"""
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+class WorkingSet(object):
+    """A collection of active distributions on sys.path (or a similar list)"""
+
+    def __init__(self, entries=None):
+        """Create working set from list of path entries (default=sys.path)"""
+        self.entries = []
+        self.entry_keys = {}
+        self.by_key = {}
+        self.callbacks = []
+
+        if entries is None:
+            entries = sys.path
+
+        for entry in entries:
+            self.add_entry(entry)
+
+
+    def add_entry(self, entry):
+        """Add a path item to ``.entries``, finding any distributions on it
+
+        ``find_distributions(entry, True)`` is used to find distributions
+        corresponding to the path entry, and they are added.  `entry` is
+        always appended to ``.entries``, even if it is already present.
+        (This is because ``sys.path`` can contain the same value more than
+        once, and the ``.entries`` of the ``sys.path`` WorkingSet should always
+        equal ``sys.path``.)
+        """
+        self.entry_keys.setdefault(entry, [])
+        self.entries.append(entry)
+        for dist in find_distributions(entry, True):
+            self.add(dist, entry, False)
+
+
+    def __contains__(self,dist):
+        """True if `dist` is the active distribution for its project"""
+        return self.by_key.get(dist.key) == dist
+
+
+
+
+
+    def find(self, req):
+        """Find a distribution matching requirement `req`
+
+        If there is an active distribution for the requested project, this
+        returns it as long as it meets the version requirement specified by
+        `req`.  But, if there is an active distribution for the project and it
+        does *not* meet the `req` requirement, ``VersionConflict`` is raised.
+        If there is no active distribution for the requested project, ``None``
+        is returned.
+        """
+        dist = self.by_key.get(req.key)
+        if dist is not None and dist not in req:
+            raise VersionConflict(dist,req)     # XXX add more info
+        else:
+            return dist
+
+    def iter_entry_points(self, group, name=None):
+        """Yield entry point objects from `group` matching `name`
+
+        If `name` is None, yields all entry points in `group` from all
+        distributions in the working set, otherwise only ones matching
+        both `group` and `name` are yielded (in distribution order).
+        """
+        for dist in self:
+            entries = dist.get_entry_map(group)
+            if name is None:
+                for ep in entries.values():
+                    yield ep
+            elif name in entries:
+                yield entries[name]
+
+    def run_script(self, requires, script_name):
+        """Locate distribution for `requires` and run `script_name` script"""
+        ns = sys._getframe(1).f_globals
+        name = ns['__name__']
+        ns.clear()
+        ns['__name__'] = name
+        self.require(requires)[0].run_script(script_name, ns)
+
+
+
+    def __iter__(self):
+        """Yield distributions for non-duplicate projects in the working set
+
+        The yield order is the order in which the items' path entries were
+        added to the working set.
+        """
+        seen = {}
+        for item in self.entries:
+            for key in self.entry_keys[item]:
+                if key not in seen:
+                    seen[key]=1
+                    yield self.by_key[key]
+
+    def add(self, dist, entry=None, insert=True):
+        """Add `dist` to working set, associated with `entry`
+
+        If `entry` is unspecified, it defaults to the ``.location`` of `dist`.
+        On exit from this routine, `entry` is added to the end of the working
+        set's ``.entries`` (if it wasn't already present).
+
+        `dist` is only added to the working set if it's for a project that
+        doesn't already have a distribution in the set.  If it's added, any
+        callbacks registered with the ``subscribe()`` method will be called.
+        """
+        if insert:
+            dist.insert_on(self.entries, entry)
+
+        if entry is None:
+            entry = dist.location
+        keys = self.entry_keys.setdefault(entry,[])
+        keys2 = self.entry_keys.setdefault(dist.location,[])
+        if dist.key in self.by_key:
+            return      # ignore hidden distros
+
+        self.by_key[dist.key] = dist
+        if dist.key not in keys:
+            keys.append(dist.key)
+        if dist.key not in keys2:
+            keys2.append(dist.key)
+        self._added_new(dist)
+
+    def resolve(self, requirements, env=None, installer=None):
+        """List all distributions needed to (recursively) meet `requirements`
+
+        `requirements` must be a sequence of ``Requirement`` objects.  `env`,
+        if supplied, should be an ``Environment`` instance.  If
+        not supplied, it defaults to all distributions available within any
+        entry or distribution in the working set.  `installer`, if supplied,
+        will be invoked with each requirement that cannot be met by an
+        already-installed distribution; it should return a ``Distribution`` or
+        ``None``.
+        """
+
+        requirements = list(requirements)[::-1]  # set up the stack
+        processed = {}  # set of processed requirements
+        best = {}  # key -> dist
+        to_activate = []
+
+        while requirements:
+            req = requirements.pop(0)   # process dependencies breadth-first
+            if req in processed:
+                # Ignore cyclic or redundant dependencies
+                continue
+            dist = best.get(req.key)
+            if dist is None:
+                # Find the best distribution and add it to the map
+                dist = self.by_key.get(req.key)
+                if dist is None:
+                    if env is None:
+                        env = Environment(self.entries)
+                    dist = best[req.key] = env.best_match(req, self, installer)
+                    if dist is None:
+                        raise DistributionNotFound(req)  # XXX put more info here
+                to_activate.append(dist)
+            if dist not in req:
+                # Oops, the "best" so far conflicts with a dependency
+                raise VersionConflict(dist,req) # XXX put more info here
+            requirements.extend(dist.requires(req.extras)[::-1])
+            processed[req] = True
+
+        return to_activate    # return list of distros to activate
+
+    def find_plugins(self,
+        plugin_env, full_env=None, installer=None, fallback=True
+    ):
+        """Find all activatable distributions in `plugin_env`
+
+        Example usage::
+
+            distributions, errors = working_set.find_plugins(
+                Environment(plugin_dirlist)
+            )
+            map(working_set.add, distributions)  # add plugins+libs to sys.path
+            print "Couldn't load", errors        # display errors
+
+        The `plugin_env` should be an ``Environment`` instance that contains
+        only distributions that are in the project's "plugin directory" or
+        directories. The `full_env`, if supplied, should be an ``Environment``
+        contains all currently-available distributions.  If `full_env` is not
+        supplied, one is created automatically from the ``WorkingSet`` this
+        method is called on, which will typically mean that every directory on
+        ``sys.path`` will be scanned for distributions.
+
+        `installer` is a standard installer callback as used by the
+        ``resolve()`` method. The `fallback` flag indicates whether we should
+        attempt to resolve older versions of a plugin if the newest version
+        cannot be resolved.
+
+        This method returns a 2-tuple: (`distributions`, `error_info`), where
+        `distributions` is a list of the distributions found in `plugin_env`
+        that were loadable, along with any other distributions that are needed
+        to resolve their dependencies.  `error_info` is a dictionary mapping
+        unloadable plugin distributions to an exception instance describing the
+        error that occurred. Usually this will be a ``DistributionNotFound`` or
+        ``VersionConflict`` instance.
+        """
+
+        plugin_projects = list(plugin_env)
+        plugin_projects.sort()  # scan project names in alphabetic order
+
+        error_info = {}
+        distributions = {}
+
+        if full_env is None:
+            env = Environment(self.entries)
+            env += plugin_env
+        else:
+            env = full_env + plugin_env
+
+        shadow_set = self.__class__([])
+        map(shadow_set.add, self)   # put all our entries in shadow_set
+
+        for project_name in plugin_projects:
+
+            for dist in plugin_env[project_name]:
+
+                req = [dist.as_requirement()]
+
+                try:
+                    resolvees = shadow_set.resolve(req, env, installer)
+
+                except ResolutionError,v:
+                    error_info[dist] = v    # save error info
+                    if fallback:
+                        continue    # try the next older version of project
+                    else:
+                        break       # give up on this project, keep going
+
+                else:
+                    map(shadow_set.add, resolvees)
+                    distributions.update(dict.fromkeys(resolvees))
+
+                    # success, no need to try any more versions of this project
+                    break
+
+        distributions = list(distributions)
+        distributions.sort()
+
+        return distributions, error_info
+
+
+
+
+
+    def require(self, *requirements):
+        """Ensure that distributions matching `requirements` are activated
+
+        `requirements` must be a string or a (possibly-nested) sequence
+        thereof, specifying the distributions and versions required.  The
+        return value is a sequence of the distributions that needed to be
+        activated to fulfill the requirements; all relevant distributions are
+        included, even if they were already activated in this working set.
+        """
+        needed = self.resolve(parse_requirements(requirements))
+
+        for dist in needed:
+            self.add(dist)
+
+        return needed
+
+    def subscribe(self, callback):
+        """Invoke `callback` for all distributions (including existing ones)"""
+        if callback in self.callbacks:
+            return
+        self.callbacks.append(callback)
+        for dist in self:
+            callback(dist)
+
+    def _added_new(self, dist):
+        for callback in self.callbacks:
+            callback(dist)
+
+    def __getstate__(self):
+        return (
+            self.entries[:], self.entry_keys.copy(), self.by_key.copy(),
+            self.callbacks[:]
+        )
+
+    def __setstate__(self, (entries, keys, by_key, callbacks)):
+        self.entries = entries[:]
+        self.entry_keys = keys.copy()
+        self.by_key = by_key.copy()
+        self.callbacks = callbacks[:]
+
+
+class Environment(object):
+    """Searchable snapshot of distributions on a search path"""
+
+    def __init__(self, search_path=None, platform=get_supported_platform(), python=PY_MAJOR):
+        """Snapshot distributions available on a search path
+
+        Any distributions found on `search_path` are added to the environment.
+        `search_path` should be a sequence of ``sys.path`` items.  If not
+        supplied, ``sys.path`` is used.
+
+        `platform` is an optional string specifying the name of the platform
+        that platform-specific distributions must be compatible with.  If
+        unspecified, it defaults to the current platform.  `python` is an
+        optional string naming the desired version of Python (e.g. ``'2.4'``);
+        it defaults to the current version.
+
+        You may explicitly set `platform` (and/or `python`) to ``None`` if you
+        wish to map *all* distributions, not just those compatible with the
+        running platform or Python version.
+        """
+        self._distmap = {}
+        self._cache = {}
+        self.platform = platform
+        self.python = python
+        self.scan(search_path)
+
+    def can_add(self, dist):
+        """Is distribution `dist` acceptable for this environment?
+
+        The distribution must match the platform and python version
+        requirements specified when this environment was created, or False
+        is returned.
+        """
+        return (self.python is None or dist.py_version is None
+            or dist.py_version==self.python) \
+           and compatible_platforms(dist.platform,self.platform)
+
+    def remove(self, dist):
+        """Remove `dist` from the environment"""
+        self._distmap[dist.key].remove(dist)
+
+    def scan(self, search_path=None):
+        """Scan `search_path` for distributions usable in this environment
+
+        Any distributions found are added to the environment.
+        `search_path` should be a sequence of ``sys.path`` items.  If not
+        supplied, ``sys.path`` is used.  Only distributions conforming to
+        the platform/python version defined at initialization are added.
+        """
+        if search_path is None:
+            search_path = sys.path
+
+        for item in search_path:
+            for dist in find_distributions(item):
+                self.add(dist)
+
+    def __getitem__(self,project_name):
+        """Return a newest-to-oldest list of distributions for `project_name`
+        """
+        try:
+            return self._cache[project_name]
+        except KeyError:
+            project_name = project_name.lower()
+            if project_name not in self._distmap:
+                return []
+
+        if project_name not in self._cache:
+            dists = self._cache[project_name] = self._distmap[project_name]
+            _sort_dists(dists)
+
+        return self._cache[project_name]
+
+    def add(self,dist):
+        """Add `dist` if we ``can_add()`` it and it isn't already added"""
+        if self.can_add(dist) and dist.has_version():
+            dists = self._distmap.setdefault(dist.key,[])
+            if dist not in dists:
+                dists.append(dist)
+                if dist.key in self._cache:
+                    _sort_dists(self._cache[dist.key])
+
+
+    def best_match(self, req, working_set, installer=None):
+        """Find distribution best matching `req` and usable on `working_set`
+
+        This calls the ``find(req)`` method of the `working_set` to see if a
+        suitable distribution is already active.  (This may raise
+        ``VersionConflict`` if an unsuitable version of the project is already
+        active in the specified `working_set`.)  If a suitable distribution
+        isn't active, this method returns the newest distribution in the
+        environment that meets the ``Requirement`` in `req`.  If no suitable
+        distribution is found, and `installer` is supplied, then the result of
+        calling the environment's ``obtain(req, installer)`` method will be
+        returned.
+        """
+        dist = working_set.find(req)
+        if dist is not None:
+            return dist
+        for dist in self[req.key]:
+            if dist in req:
+                return dist
+        return self.obtain(req, installer) # try and download/install
+
+    def obtain(self, requirement, installer=None):
+        """Obtain a distribution matching `requirement` (e.g. via download)
+
+        Obtain a distro that matches requirement (e.g. via download).  In the
+        base ``Environment`` class, this routine just returns
+        ``installer(requirement)``, unless `installer` is None, in which case
+        None is returned instead.  This method is a hook that allows subclasses
+        to attempt other ways of obtaining a distribution before falling back
+        to the `installer` argument."""
+        if installer is not None:
+            return installer(requirement)
+
+    def __iter__(self):
+        """Yield the unique project names of the available distributions"""
+        for key in self._distmap.keys():
+            if self[key]: yield key
+
+
+
+
+    def __iadd__(self, other):
+        """In-place addition of a distribution or environment"""
+        if isinstance(other,Distribution):
+            self.add(other)
+        elif isinstance(other,Environment):
+            for project in other:
+                for dist in other[project]:
+                    self.add(dist)
+        else:
+            raise TypeError("Can't add %r to environment" % (other,))
+        return self
+
+    def __add__(self, other):
+        """Add an environment or distribution to an environment"""
+        new = self.__class__([], platform=None, python=None)
+        for env in self, other:
+            new += env
+        return new
+
+
+AvailableDistributions = Environment    # XXX backward compatibility
+
+
+class ExtractionError(RuntimeError):
+    """An error occurred extracting a resource
+
+    The following attributes are available from instances of this exception:
+
+    manager
+        The resource manager that raised this exception
+
+    cache_path
+        The base directory for resource extraction
+
+    original_error
+        The exception instance that caused extraction to fail
+    """
+
+
+
+
+class ResourceManager:
+    """Manage resource extraction and packages"""
+    extraction_path = None
+
+    def __init__(self):
+        self.cached_files = {}
+
+    def resource_exists(self, package_or_requirement, resource_name):
+        """Does the named resource exist?"""
+        return get_provider(package_or_requirement).has_resource(resource_name)
+
+    def resource_isdir(self, package_or_requirement, resource_name):
+        """Is the named resource an existing directory?"""
+        return get_provider(package_or_requirement).resource_isdir(
+            resource_name
+        )
+
+    def resource_filename(self, package_or_requirement, resource_name):
+        """Return a true filesystem path for specified resource"""
+        return get_provider(package_or_requirement).get_resource_filename(
+            self, resource_name
+        )
+
+    def resource_stream(self, package_or_requirement, resource_name):
+        """Return a readable file-like object for specified resource"""
+        return get_provider(package_or_requirement).get_resource_stream(
+            self, resource_name
+        )
+
+    def resource_string(self, package_or_requirement, resource_name):
+        """Return specified resource as a string"""
+        return get_provider(package_or_requirement).get_resource_string(
+            self, resource_name
+        )
+
+    def resource_listdir(self, package_or_requirement, resource_name):
+        """List the contents of the named resource directory"""
+        return get_provider(package_or_requirement).resource_listdir(
+            resource_name
+        )
+
+    def extraction_error(self):
+        """Give an error message for problems extracting file(s)"""
+
+        old_exc = sys.exc_info()[1]
+        cache_path = self.extraction_path or get_default_cache()
+
+        err = ExtractionError("""Can't extract file(s) to egg cache
+
+The following error occurred while trying to extract file(s) to the Python egg
+cache:
+
+  %s
+
+The Python egg cache directory is currently set to:
+
+  %s
+
+Perhaps your account does not have write access to this directory?  You can
+change the cache directory by setting the PYTHON_EGG_CACHE environment
+variable to point to an accessible directory.
+"""         % (old_exc, cache_path)
+        )
+        err.manager        = self
+        err.cache_path     = cache_path
+        err.original_error = old_exc
+        raise err
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    def get_cache_path(self, archive_name, names=()):
+        """Return absolute location in cache for `archive_name` and `names`
+
+        The parent directory of the resulting path will be created if it does
+        not already exist.  `archive_name` should be the base filename of the
+        enclosing egg (which may not be the name of the enclosing zipfile!),
+        including its ".egg" extension.  `names`, if provided, should be a
+        sequence of path name parts "under" the egg's extraction location.
+
+        This method should only be called by resource providers that need to
+        obtain an extraction location, and only for names they intend to
+        extract, as it tracks the generated names for possible cleanup later.
+        """
+        extract_path = self.extraction_path or get_default_cache()
+        target_path = os.path.join(extract_path, archive_name+'-tmp', *names)
+        try:
+            _bypass_ensure_directory(target_path)
+        except:
+            self.extraction_error()
+
+        self.cached_files[target_path] = 1
+        return target_path
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    def postprocess(self, tempname, filename):
+        """Perform any platform-specific postprocessing of `tempname`
+
+        This is where Mac header rewrites should be done; other platforms don't
+        have anything special they should do.
+
+        Resource providers should call this method ONLY after successfully
+        extracting a compressed resource.  They must NOT call it on resources
+        that are already in the filesystem.
+
+        `tempname` is the current (temporary) name of the file, and `filename`
+        is the name it will be renamed to by the caller after this routine
+        returns.
+        """
+
+        if os.name == 'posix':
+            # Make the resource executable
+            mode = ((os.stat(tempname).st_mode) | 0555) & 07777
+            os.chmod(tempname, mode)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    def set_extraction_path(self, path):
+        """Set the base path where resources will be extracted to, if needed.
+
+        If you do not call this routine before any extractions take place, the
+        path defaults to the return value of ``get_default_cache()``.  (Which
+        is based on the ``PYTHON_EGG_CACHE`` environment variable, with various
+        platform-specific fallbacks.  See that routine's documentation for more
+        details.)
+
+        Resources are extracted to subdirectories of this path based upon
+        information given by the ``IResourceProvider``.  You may set this to a
+        temporary directory, but then you must call ``cleanup_resources()`` to
+        delete the extracted files when done.  There is no guarantee that
+        ``cleanup_resources()`` will be able to remove all extracted files.
+
+        (Note: you may not change the extraction path for a given resource
+        manager once resources have been extracted, unless you first call
+        ``cleanup_resources()``.)
+        """
+        if self.cached_files:
+            raise ValueError(
+                "Can't change extraction path, files already extracted"
+            )
+
+        self.extraction_path = path
+
+    def cleanup_resources(self, force=False):
+        """
+        Delete all extracted resource files and directories, returning a list
+        of the file and directory names that could not be successfully removed.
+        This function does not have any concurrency protection, so it should
+        generally only be called when the extraction path is a temporary
+        directory exclusive to a single process.  This method is not
+        automatically called; you must call it explicitly or register it as an
+        ``atexit`` function if you wish to ensure cleanup of a temporary
+        directory used for extractions.
+        """
+        # XXX
+
+
+
+def get_default_cache():
+    """Determine the default cache location
+
+    This returns the ``PYTHON_EGG_CACHE`` environment variable, if set.
+    Otherwise, on Windows, it returns a "Python-Eggs" subdirectory of the
+    "Application Data" directory.  On all other systems, it's "~/.python-eggs".
+    """
+    try:
+        return os.environ['PYTHON_EGG_CACHE']
+    except KeyError:
+        pass
+
+    if os.name!='nt':
+        return os.path.expanduser('~/.python-eggs')
+
+    app_data = 'Application Data'   # XXX this may be locale-specific!
+    app_homes = [
+        (('APPDATA',), None),       # best option, should be locale-safe
+        (('USERPROFILE',), app_data),
+        (('HOMEDRIVE','HOMEPATH'), app_data),
+        (('HOMEPATH',), app_data),
+        (('HOME',), None),
+        (('WINDIR',), app_data),    # 95/98/ME
+    ]
+
+    for keys, subdir in app_homes:
+        dirname = ''
+        for key in keys:
+            if key in os.environ:
+                dirname = os.path.join(dirname, os.environ[key])
+            else:
+                break
+        else:
+            if subdir:
+                dirname = os.path.join(dirname,subdir)
+            return os.path.join(dirname, 'Python-Eggs')
+    else:
+        raise RuntimeError(
+            "Please set the PYTHON_EGG_CACHE enviroment variable"
+        )
+
+def safe_name(name):
+    """Convert an arbitrary string to a standard distribution name
+
+    Any runs of non-alphanumeric/. characters are replaced with a single '-'.
+    """
+    return re.sub('[^A-Za-z0-9.]+', '-', name)
+
+
+def safe_version(version):
+    """Convert an arbitrary string to a standard version string
+
+    Spaces become dots, and all other non-alphanumeric characters become
+    dashes, with runs of multiple dashes condensed to a single dash.
+    """
+    version = version.replace(' ','.')
+    return re.sub('[^A-Za-z0-9.]+', '-', version)
+
+
+def safe_extra(extra):
+    """Convert an arbitrary string to a standard 'extra' name
+
+    Any runs of non-alphanumeric characters are replaced with a single '_',
+    and the result is always lowercased.
+    """
+    return re.sub('[^A-Za-z0-9.]+', '_', extra).lower()
+
+
+def to_filename(name):
+    """Convert a project or version name to its filename-escaped form
+
+    Any '-' characters are currently replaced with '_'.
+    """
+    return name.replace('-','_')
+
+
+
+
+
+
+
+
+class NullProvider:
+    """Try to implement resources and metadata for arbitrary PEP 302 loaders"""
+
+    egg_name = None
+    egg_info = None
+    loader = None
+
+    def __init__(self, module):
+        self.loader = getattr(module, '__loader__', None)
+        self.module_path = os.path.dirname(getattr(module, '__file__', ''))
+
+    def get_resource_filename(self, manager, resource_name):
+        return self._fn(self.module_path, resource_name)
+
+    def get_resource_stream(self, manager, resource_name):
+        return StringIO(self.get_resource_string(manager, resource_name))
+
+    def get_resource_string(self, manager, resource_name):
+        return self._get(self._fn(self.module_path, resource_name))
+
+    def has_resource(self, resource_name):
+        return self._has(self._fn(self.module_path, resource_name))
+
+    def has_metadata(self, name):
+        return self.egg_info and self._has(self._fn(self.egg_info,name))
+
+    def get_metadata(self, name):
+        if not self.egg_info:
+            return ""
+        return self._get(self._fn(self.egg_info,name))
+
+    def get_metadata_lines(self, name):
+        return yield_lines(self.get_metadata(name))
+
+    def resource_isdir(self,resource_name):
+        return self._isdir(self._fn(self.module_path, resource_name))
+
+    def metadata_isdir(self,name):
+        return self.egg_info and self._isdir(self._fn(self.egg_info,name))
+
+
+    def resource_listdir(self,resource_name):
+        return self._listdir(self._fn(self.module_path,resource_name))
+
+    def metadata_listdir(self,name):
+        if self.egg_info:
+            return self._listdir(self._fn(self.egg_info,name))
+        return []
+
+    def run_script(self,script_name,namespace):
+        script = 'scripts/'+script_name
+        if not self.has_metadata(script):
+            raise ResolutionError("No script named %r" % script_name)
+        script_text = self.get_metadata(script).replace('\r\n','\n')
+        script_text = script_text.replace('\r','\n')
+        script_filename = self._fn(self.egg_info,script)
+        namespace['__file__'] = script_filename
+        if os.path.exists(script_filename):
+            execfile(script_filename, namespace, namespace)
+        else:
+            from linecache import cache
+            cache[script_filename] = (
+                len(script_text), 0, script_text.split('\n'), script_filename
+            )
+            script_code = compile(script_text,script_filename,'exec')
+            exec script_code in namespace, namespace
+
+    def _has(self, path):
+        raise NotImplementedError(
+            "Can't perform this operation for unregistered loader type"
+        )
+
+    def _isdir(self, path):
+        raise NotImplementedError(
+            "Can't perform this operation for unregistered loader type"
+        )
+
+    def _listdir(self, path):
+        raise NotImplementedError(
+            "Can't perform this operation for unregistered loader type"
+        )
+
+    def _fn(self, base, resource_name):
+        if resource_name:
+            return os.path.join(base, *resource_name.split('/'))
+        return base
+
+    def _get(self, path):
+        if hasattr(self.loader, 'get_data'):
+            return self.loader.get_data(path)
+        raise NotImplementedError(
+            "Can't perform this operation for loaders without 'get_data()'"
+        )
+
+register_loader_type(object, NullProvider)
+
+
+class EggProvider(NullProvider):
+    """Provider based on a virtual filesystem"""
+
+    def __init__(self,module):
+        NullProvider.__init__(self,module)
+        self._setup_prefix()
+
+    def _setup_prefix(self):
+        # we assume here that our metadata may be nested inside a "basket"
+        # of multiple eggs; that's why we use module_path instead of .archive
+        path = self.module_path
+        old = None
+        while path!=old:
+            if path.lower().endswith('.egg'):
+                self.egg_name = os.path.basename(path)
+                self.egg_info = os.path.join(path, 'EGG-INFO')
+                self.egg_root = path
+                break
+            old = path
+            path, base = os.path.split(path)
+
+
+
+
+
+
+class DefaultProvider(EggProvider):
+    """Provides access to package resources in the filesystem"""
+
+    def _has(self, path):
+        return os.path.exists(path)
+
+    def _isdir(self,path):
+        return os.path.isdir(path)
+
+    def _listdir(self,path):
+        return os.listdir(path)
+
+    def get_resource_stream(self, manager, resource_name):
+        return open(self._fn(self.module_path, resource_name), 'rb')
+
+    def _get(self, path):
+        stream = open(path, 'rb')
+        try:
+            return stream.read()
+        finally:
+            stream.close()
+
+register_loader_type(type(None), DefaultProvider)
+
+
+class EmptyProvider(NullProvider):
+    """Provider that returns nothing for all requests"""
+
+    _isdir = _has = lambda self,path: False
+    _get          = lambda self,path: ''
+    _listdir      = lambda self,path: []
+    module_path   = None
+
+    def __init__(self):
+        pass
+
+empty_provider = EmptyProvider()
+
+
+
+
+class ZipProvider(EggProvider):
+    """Resource support for zips and eggs"""
+
+    eagers = None
+
+    def __init__(self, module):
+        EggProvider.__init__(self,module)
+        self.zipinfo = zipimport._zip_directory_cache[self.loader.archive]
+        self.zip_pre = self.loader.archive+os.sep
+
+    def _zipinfo_name(self, fspath):
+        # Convert a virtual filename (full path to file) into a zipfile subpath
+        # usable with the zipimport directory cache for our target archive
+        if fspath.startswith(self.zip_pre):
+            return fspath[len(self.zip_pre):]
+        raise AssertionError(
+            "%s is not a subpath of %s" % (fspath,self.zip_pre)
+        )
+
+    def _parts(self,zip_path):
+        # Convert a zipfile subpath into an egg-relative path part list
+        fspath = self.zip_pre+zip_path  # pseudo-fs path
+        if fspath.startswith(self.egg_root+os.sep):
+            return fspath[len(self.egg_root)+1:].split(os.sep)
+        raise AssertionError(
+            "%s is not a subpath of %s" % (fspath,self.egg_root)
+        )
+
+    def get_resource_filename(self, manager, resource_name):
+        if not self.egg_name:
+            raise NotImplementedError(
+                "resource_filename() only supported for .egg, not .zip"
+            )
+        # no need to lock for extraction, since we use temp names
+        zip_path = self._resource_to_zip(resource_name)
+        eagers = self._get_eager_resources()
+        if '/'.join(self._parts(zip_path)) in eagers:
+            for name in eagers:
+                self._extract_resource(manager, self._eager_to_zip(name))
+        return self._extract_resource(manager, zip_path)
+
+    def _extract_resource(self, manager, zip_path):
+
+        if zip_path in self._index():
+            for name in self._index()[zip_path]:
+                last = self._extract_resource(
+                    manager, os.path.join(zip_path, name)
+                )
+            return os.path.dirname(last)  # return the extracted directory name
+
+        zip_stat = self.zipinfo[zip_path]
+        t,d,size = zip_stat[5], zip_stat[6], zip_stat[3]
+        date_time = (
+            (d>>9)+1980, (d>>5)&0xF, d&0x1F,                      # ymd
+            (t&0xFFFF)>>11, (t>>5)&0x3F, (t&0x1F) * 2, 0, 0, -1   # hms, etc.
+        )
+        timestamp = time.mktime(date_time)
+
+        try:
+            real_path = manager.get_cache_path(
+                self.egg_name, self._parts(zip_path)
+            )
+
+            if os.path.isfile(real_path):
+                stat = os.stat(real_path)
+                if stat.st_size==size and stat.st_mtime==timestamp:
+                    # size and stamp match, don't bother extracting
+                    return real_path
+
+            outf, tmpnam = _mkstemp(".$extract", dir=os.path.dirname(real_path))
+            os.write(outf, self.loader.get_data(zip_path))
+            os.close(outf)
+            utime(tmpnam, (timestamp,timestamp))
+            manager.postprocess(tmpnam, real_path)
+
+            try:
+                rename(tmpnam, real_path)
+
+            except os.error:
+                if os.path.isfile(real_path):
+                    stat = os.stat(real_path)
+
+                    if stat.st_size==size and stat.st_mtime==timestamp:
+                        # size and stamp match, somebody did it just ahead of
+                        # us, so we're done
+                        return real_path
+                    elif os.name=='nt':     # Windows, del old file and retry
+                        unlink(real_path)
+                        rename(tmpnam, real_path)
+                        return real_path
+                raise
+
+        except os.error:
+            manager.extraction_error()  # report a user-friendly error
+
+        return real_path
+
+    def _get_eager_resources(self):
+        if self.eagers is None:
+            eagers = []
+            for name in ('native_libs.txt', 'eager_resources.txt'):
+                if self.has_metadata(name):
+                    eagers.extend(self.get_metadata_lines(name))
+            self.eagers = eagers
+        return self.eagers
+
+    def _index(self):
+        try:
+            return self._dirindex
+        except AttributeError:
+            ind = {}
+            for path in self.zipinfo:
+                parts = path.split(os.sep)
+                while parts:
+                    parent = os.sep.join(parts[:-1])
+                    if parent in ind:
+                        ind[parent].append(parts[-1])
+                        break
+                    else:
+                        ind[parent] = [parts.pop()]
+            self._dirindex = ind
+            return ind
+
+    def _has(self, fspath):
+        zip_path = self._zipinfo_name(fspath)
+        return zip_path in self.zipinfo or zip_path in self._index()
+
+    def _isdir(self,fspath):
+        return self._zipinfo_name(fspath) in self._index()
+
+    def _listdir(self,fspath):
+        return list(self._index().get(self._zipinfo_name(fspath), ()))
+
+    def _eager_to_zip(self,resource_name):
+        return self._zipinfo_name(self._fn(self.egg_root,resource_name))
+
+    def _resource_to_zip(self,resource_name):
+        return self._zipinfo_name(self._fn(self.module_path,resource_name))
+
+register_loader_type(zipimport.zipimporter, ZipProvider)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+class FileMetadata(EmptyProvider):
+    """Metadata handler for standalone PKG-INFO files
+
+    Usage::
+
+        metadata = FileMetadata("/path/to/PKG-INFO")
+
+    This provider rejects all data and metadata requests except for PKG-INFO,
+    which is treated as existing, and will be the contents of the file at
+    the provided location.
+    """
+
+    def __init__(self,path):
+        self.path = path
+
+    def has_metadata(self,name):
+        return name=='PKG-INFO'
+
+    def get_metadata(self,name):
+        if name=='PKG-INFO':
+            return open(self.path,'rU').read()
+        raise KeyError("No metadata except PKG-INFO is available")
+
+    def get_metadata_lines(self,name):
+        return yield_lines(self.get_metadata(name))
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+class PathMetadata(DefaultProvider):
+    """Metadata provider for egg directories
+
+    Usage::
+
+        # Development eggs:
+
+        egg_info = "/path/to/PackageName.egg-info"
+        base_dir = os.path.dirname(egg_info)
+        metadata = PathMetadata(base_dir, egg_info)
+        dist_name = os.path.splitext(os.path.basename(egg_info))[0]
+        dist = Distribution(basedir,project_name=dist_name,metadata=metadata)
+
+        # Unpacked egg directories:
+
+        egg_path = "/path/to/PackageName-ver-pyver-etc.egg"
+        metadata = PathMetadata(egg_path, os.path.join(egg_path,'EGG-INFO'))
+        dist = Distribution.from_filename(egg_path, metadata=metadata)
+    """
+    def __init__(self, path, egg_info):
+        self.module_path = path
+        self.egg_info = egg_info
+
+
+class EggMetadata(ZipProvider):
+    """Metadata provider for .egg files"""
+
+    def __init__(self, importer):
+        """Create a metadata provider from a zipimporter"""
+
+        self.zipinfo = zipimport._zip_directory_cache[importer.archive]
+        self.zip_pre = importer.archive+os.sep
+        self.loader = importer
+        if importer.prefix:
+            self.module_path = os.path.join(importer.archive, importer.prefix)
+        else:
+            self.module_path = importer.archive
+        self._setup_prefix()
+
+
+
+_declare_state('dict', _distribution_finders = {})
+
+def register_finder(importer_type, distribution_finder):
+    """Register `distribution_finder` to find distributions in sys.path items
+
+    `importer_type` is the type or class of a PEP 302 "Importer" (sys.path item
+    handler), and `distribution_finder` is a callable that, passed a path
+    item and the importer instance, yields ``Distribution`` instances found on
+    that path item.  See ``pkg_resources.find_on_path`` for an example."""
+    _distribution_finders[importer_type] = distribution_finder
+
+
+def find_distributions(path_item, only=False):
+    """Yield distributions accessible via `path_item`"""
+    importer = get_importer(path_item)
+    finder = _find_adapter(_distribution_finders, importer)
+    return finder(importer, path_item, only)
+
+def find_in_zip(importer, path_item, only=False):
+    metadata = EggMetadata(importer)
+    if metadata.has_metadata('PKG-INFO'):
+        yield Distribution.from_filename(path_item, metadata=metadata)
+    if only:
+        return  # don't yield nested distros
+    for subitem in metadata.resource_listdir('/'):
+        if subitem.endswith('.egg'):
+            subpath = os.path.join(path_item, subitem)
+            for dist in find_in_zip(zipimport.zipimporter(subpath), subpath):
+                yield dist
+
+register_finder(zipimport.zipimporter, find_in_zip)
+
+def StringIO(*args, **kw):
+    """Thunk to load the real StringIO on demand"""
+    global StringIO
+    try:
+        from cStringIO import StringIO
+    except ImportError:
+        from StringIO import StringIO
+    return StringIO(*args,**kw)
+
+def find_nothing(importer, path_item, only=False):
+    return ()
+register_finder(object,find_nothing)
+
+def find_on_path(importer, path_item, only=False):
+    """Yield distributions accessible on a sys.path directory"""
+    path_item = _normalize_cached(path_item)
+
+    if os.path.isdir(path_item) and os.access(path_item, os.R_OK):
+        if path_item.lower().endswith('.egg'):
+            # unpacked egg
+            yield Distribution.from_filename(
+                path_item, metadata=PathMetadata(
+                    path_item, os.path.join(path_item,'EGG-INFO')
+                )
+            )
+        else:
+            # scan for .egg and .egg-info in directory
+            for entry in os.listdir(path_item):
+                lower = entry.lower()
+                if lower.endswith('.egg-info'):
+                    fullpath = os.path.join(path_item, entry)
+                    if os.path.isdir(fullpath):
+                        # egg-info directory, allow getting metadata
+                        metadata = PathMetadata(path_item, fullpath)
+                    else:
+                        metadata = FileMetadata(fullpath)
+                    yield Distribution.from_location(
+                        path_item,entry,metadata,precedence=DEVELOP_DIST
+                    )
+                elif not only and lower.endswith('.egg'):
+                    for dist in find_distributions(os.path.join(path_item, entry)):
+                        yield dist
+                elif not only and lower.endswith('.egg-link'):
+                    for line in file(os.path.join(path_item, entry)):
+                        if not line.strip(): continue
+                        for item in find_distributions(os.path.join(path_item,line.rstrip())):
+                            yield item
+                        break
+register_finder(pkgutil.ImpImporter, find_on_path)
+
+_declare_state('dict', _namespace_handlers = {})
+_declare_state('dict', _namespace_packages = {})
+
+def register_namespace_handler(importer_type, namespace_handler):
+    """Register `namespace_handler` to declare namespace packages
+
+    `importer_type` is the type or class of a PEP 302 "Importer" (sys.path item
+    handler), and `namespace_handler` is a callable like this::
+
+        def namespace_handler(importer,path_entry,moduleName,module):
+            # return a path_entry to use for child packages
+
+    Namespace handlers are only called if the importer object has already
+    agreed that it can handle the relevant path item, and they should only
+    return a subpath if the module __path__ does not already contain an
+    equivalent subpath.  For an example namespace handler, see
+    ``pkg_resources.file_ns_handler``.
+    """
+    _namespace_handlers[importer_type] = namespace_handler
+
+def _handle_ns(packageName, path_item):
+    """Ensure that named package includes a subpath of path_item (if needed)"""
+    importer = get_importer(path_item)
+    if importer is None:
+        return None
+    loader = importer.find_module(packageName)
+    if loader is None:
+        return None
+    module = sys.modules.get(packageName)
+    if module is None:
+        module = sys.modules[packageName] = imp.new_module(packageName)
+        module.__path__ = []; _set_parent_ns(packageName)
+    elif not hasattr(module,'__path__'):
+        raise TypeError("Not a package:", packageName)
+    handler = _find_adapter(_namespace_handlers, importer)
+    subpath = handler(importer,path_item,packageName,module)
+    if subpath is not None:
+        path = module.__path__; path.append(subpath)
+        loader.load_module(packageName); module.__path__ = path
+    return subpath
+
+def declare_namespace(packageName):
+    """Declare that package 'packageName' is a namespace package"""
+
+    imp.acquire_lock()
+    try:
+        if packageName in _namespace_packages:
+            return
+
+        path, parent = sys.path, None
+        if '.' in packageName:
+            parent = '.'.join(packageName.split('.')[:-1])
+            declare_namespace(parent)
+            __import__(parent)
+            try:
+                path = sys.modules[parent].__path__
+            except AttributeError:
+                raise TypeError("Not a package:", parent)
+
+        # Track what packages are namespaces, so when new path items are added,
+        # they can be updated
+        _namespace_packages.setdefault(parent,[]).append(packageName)
+        _namespace_packages.setdefault(packageName,[])
+
+        for path_item in path:
+            # Ensure all the parent's path items are reflected in the child,
+            # if they apply
+            _handle_ns(packageName, path_item)
+
+    finally:
+        imp.release_lock()
+
+def fixup_namespace_packages(path_item, parent=None):
+    """Ensure that previously-declared namespace packages include path_item"""
+    imp.acquire_lock()
+    try:
+        for package in _namespace_packages.get(parent,()):
+            subpath = _handle_ns(package, path_item)
+            if subpath: fixup_namespace_packages(subpath,package)
+    finally:
+        imp.release_lock()
+
+def file_ns_handler(importer, path_item, packageName, module):
+    """Compute an ns-package subpath for a filesystem or zipfile importer"""
+
+    subpath = os.path.join(path_item, packageName.split('.')[-1])
+    normalized = _normalize_cached(subpath)
+    for item in module.__path__:
+        if _normalize_cached(item)==normalized:
+            break
+    else:
+        # Only return the path if it's not already there
+        return subpath
+
+register_namespace_handler(pkgutil.ImpImporter, file_ns_handler)
+register_namespace_handler(zipimport.zipimporter, file_ns_handler)
+
+
+def null_ns_handler(importer, path_item, packageName, module):
+    return None
+
+register_namespace_handler(object,null_ns_handler)
+
+
+def normalize_path(filename):
+    """Normalize a file/dir name for comparison purposes"""
+    return os.path.normcase(os.path.realpath(filename))
+
+def _normalize_cached(filename,_cache={}):
+    try:
+        return _cache[filename]
+    except KeyError:
+        _cache[filename] = result = normalize_path(filename)
+        return result
+
+def _set_parent_ns(packageName):
+    parts = packageName.split('.')
+    name = parts.pop()
+    if parts:
+        parent = '.'.join(parts)
+        setattr(sys.modules[parent], name, sys.modules[packageName])
+
+
+def yield_lines(strs):
+    """Yield non-empty/non-comment lines of a ``basestring`` or sequence"""
+    if isinstance(strs,basestring):
+        for s in strs.splitlines():
+            s = s.strip()
+            if s and not s.startswith('#'):     # skip blank lines/comments
+                yield s
+    else:
+        for ss in strs:
+            for s in yield_lines(ss):
+                yield s
+
+LINE_END = re.compile(r"\s*(#.*)?$").match         # whitespace and comment
+CONTINUE = re.compile(r"\s*\\\s*(#.*)?$").match    # line continuation
+DISTRO   = re.compile(r"\s*((\w|[-.])+)").match    # Distribution or extra
+VERSION  = re.compile(r"\s*(<=?|>=?|==|!=)\s*((\w|[-.])+)").match  # ver. info
+COMMA    = re.compile(r"\s*,").match               # comma between items
+OBRACKET = re.compile(r"\s*\[").match
+CBRACKET = re.compile(r"\s*\]").match
+MODULE   = re.compile(r"\w+(\.\w+)*$").match
+EGG_NAME = re.compile(
+    r"(?P<name>[^-]+)"
+    r"( -(?P<ver>[^-]+) (-py(?P<pyver>[^-]+) (-(?P<plat>.+))? )? )?",
+    re.VERBOSE | re.IGNORECASE
+).match
+
+component_re = re.compile(r'(\d+ | [a-z]+ | \.| -)', re.VERBOSE)
+replace = {'pre':'c', 'preview':'c','-':'final-','rc':'c','dev':'@'}.get
+
+def _parse_version_parts(s):
+    for part in component_re.split(s):
+        part = replace(part,part)
+        if not part or part=='.':
+            continue
+        if part[:1] in '0123456789':
+            yield part.zfill(8)    # pad for numeric comparison
+        else:
+            yield '*'+part
+
+    yield '*final'  # ensure that alpha/beta/candidate are before final
+
+def parse_version(s):
+    """Convert a version string to a chronologically-sortable key
+
+    This is a rough cross between distutils' StrictVersion and LooseVersion;
+    if you give it versions that would work with StrictVersion, then it behaves
+    the same; otherwise it acts like a slightly-smarter LooseVersion. It is
+    *possible* to create pathological version coding schemes that will fool
+    this parser, but they should be very rare in practice.
+
+    The returned value will be a tuple of strings.  Numeric portions of the
+    version are padded to 8 digits so they will compare numerically, but
+    without relying on how numbers compare relative to strings.  Dots are
+    dropped, but dashes are retained.  Trailing zeros between alpha segments
+    or dashes are suppressed, so that e.g. "2.4.0" is considered the same as
+    "2.4". Alphanumeric parts are lower-cased.
+
+    The algorithm assumes that strings like "-" and any alpha string that
+    alphabetically follows "final"  represents a "patch level".  So, "2.4-1"
+    is assumed to be a branch or patch of "2.4", and therefore "2.4.1" is
+    considered newer than "2.4-1", which in turn is newer than "2.4".
+
+    Strings like "a", "b", "c", "alpha", "beta", "candidate" and so on (that
+    come before "final" alphabetically) are assumed to be pre-release versions,
+    so that the version "2.4" is considered newer than "2.4a1".
+
+    Finally, to handle miscellaneous cases, the strings "pre", "preview", and
+    "rc" are treated as if they were "c", i.e. as though they were release
+    candidates, and therefore are not as new as a version string that does not
+    contain them, and "dev" is replaced with an '@' so that it sorts lower than
+    than any other pre-release tag.
+    """
+    parts = []
+    for part in _parse_version_parts(s.lower()):
+        if part.startswith('*'):
+            if part<'*final':   # remove '-' before a prerelease tag
+                while parts and parts[-1]=='*final-': parts.pop()
+            # remove trailing zeros from each series of numeric parts
+            while parts and parts[-1]=='00000000':
+                parts.pop()
+        parts.append(part)
+    return tuple(parts)
+
+class EntryPoint(object):
+    """Object representing an advertised importable object"""
+
+    def __init__(self, name, module_name, attrs=(), extras=(), dist=None):
+        if not MODULE(module_name):
+            raise ValueError("Invalid module name", module_name)
+        self.name = name
+        self.module_name = module_name
+        self.attrs = tuple(attrs)
+        self.extras = Requirement.parse(("x[%s]" % ','.join(extras))).extras
+        self.dist = dist
+
+    def __str__(self):
+        s = "%s = %s" % (self.name, self.module_name)
+        if self.attrs:
+            s += ':' + '.'.join(self.attrs)
+        if self.extras:
+            s += ' [%s]' % ','.join(self.extras)
+        return s
+
+    def __repr__(self):
+        return "EntryPoint.parse(%r)" % str(self)
+
+    def load(self, require=True, env=None, installer=None):
+        if require: self.require(env, installer)
+        entry = __import__(self.module_name, globals(),globals(), ['__name__'])
+        for attr in self.attrs:
+            try:
+                entry = getattr(entry,attr)
+            except AttributeError:
+                raise ImportError("%r has no %r attribute" % (entry,attr))
+        return entry
+
+    def require(self, env=None, installer=None):
+        if self.extras and not self.dist:
+            raise UnknownExtra("Can't require() without a distribution", self)
+        map(working_set.add,
+            working_set.resolve(self.dist.requires(self.extras),env,installer))
+
+
+
+    #@classmethod
+    def parse(cls, src, dist=None):
+        """Parse a single entry point from string `src`
+
+        Entry point syntax follows the form::
+
+            name = some.module:some.attr [extra1,extra2]
+
+        The entry name and module name are required, but the ``:attrs`` and
+        ``[extras]`` parts are optional
+        """
+        try:
+            attrs = extras = ()
+            name,value = src.split('=',1)
+            if '[' in value:
+                value,extras = value.split('[',1)
+                req = Requirement.parse("x["+extras)
+                if req.specs: raise ValueError
+                extras = req.extras
+            if ':' in value:
+                value,attrs = value.split(':',1)
+                if not MODULE(attrs.rstrip()):
+                    raise ValueError
+                attrs = attrs.rstrip().split('.')
+        except ValueError:
+            raise ValueError(
+                "EntryPoint must be in 'name=module:attrs [extras]' format",
+                src
+            )
+        else:
+            return cls(name.strip(), value.strip(), attrs, extras, dist)
+
+    parse = classmethod(parse)
+
+
+
+
+
+
+
+
+    #@classmethod
+    def parse_group(cls, group, lines, dist=None):
+        """Parse an entry point group"""
+        if not MODULE(group):
+            raise ValueError("Invalid group name", group)
+        this = {}
+        for line in yield_lines(lines):
+            ep = cls.parse(line, dist)
+            if ep.name in this:
+                raise ValueError("Duplicate entry point", group, ep.name)
+            this[ep.name]=ep
+        return this
+
+    parse_group = classmethod(parse_group)
+
+    #@classmethod
+    def parse_map(cls, data, dist=None):
+        """Parse a map of entry point groups"""
+        if isinstance(data,dict):
+            data = data.items()
+        else:
+            data = split_sections(data)
+        maps = {}
+        for group, lines in data:
+            if group is None:
+                if not lines:
+                    continue
+                raise ValueError("Entry points must be listed in groups")
+            group = group.strip()
+            if group in maps:
+                raise ValueError("Duplicate group name", group)
+            maps[group] = cls.parse_group(group, lines, dist)
+        return maps
+
+    parse_map = classmethod(parse_map)
+
+
+
+
+
+
+class Distribution(object):
+    """Wrap an actual or potential sys.path entry w/metadata"""
+    def __init__(self,
+        location=None, metadata=None, project_name=None, version=None,
+        py_version=PY_MAJOR, platform=None, precedence = EGG_DIST
+    ):
+        self.project_name = safe_name(project_name or 'Unknown')
+        if version is not None:
+            self._version = safe_version(version)
+        self.py_version = py_version
+        self.platform = platform
+        self.location = location
+        self.precedence = precedence
+        self._provider = metadata or empty_provider
+
+    #@classmethod
+    def from_location(cls,location,basename,metadata=None,**kw):
+        project_name, version, py_version, platform = [None]*4
+        basename, ext = os.path.splitext(basename)
+        if ext.lower() in (".egg",".egg-info"):
+            match = EGG_NAME(basename)
+            if match:
+                project_name, version, py_version, platform = match.group(
+                    'name','ver','pyver','plat'
+                )
+        return cls(
+            location, metadata, project_name=project_name, version=version,
+            py_version=py_version, platform=platform, **kw
+        )
+    from_location = classmethod(from_location)
+
+    hashcmp = property(
+        lambda self: (
+            getattr(self,'parsed_version',()), self.precedence, self.key,
+            -len(self.location or ''), self.location, self.py_version,
+            self.platform
+        )
+    )
+    def __cmp__(self, other): return cmp(self.hashcmp, other)
+    def __hash__(self): return hash(self.hashcmp)
+
+    # These properties have to be lazy so that we don't have to load any
+    # metadata until/unless it's actually needed.  (i.e., some distributions
+    # may not know their name or version without loading PKG-INFO)
+
+    #@property
+    def key(self):
+        try:
+            return self._key
+        except AttributeError:
+            self._key = key = self.project_name.lower()
+            return key
+    key = property(key)
+
+    #@property
+    def parsed_version(self):
+        try:
+            return self._parsed_version
+        except AttributeError:
+            self._parsed_version = pv = parse_version(self.version)
+            return pv
+
+    parsed_version = property(parsed_version)
+
+    #@property
+    def version(self):
+        try:
+            return self._version
+        except AttributeError:
+            for line in self._get_metadata('PKG-INFO'):
+                if line.lower().startswith('version:'):
+                    self._version = safe_version(line.split(':',1)[1].strip())
+                    return self._version
+            else:
+                raise ValueError(
+                    "Missing 'Version:' header and/or PKG-INFO file", self
+                )
+    version = property(version)
+
+
+
+
+    #@property
+    def _dep_map(self):
+        try:
+            return self.__dep_map
+        except AttributeError:
+            dm = self.__dep_map = {None: []}
+            for name in 'requires.txt', 'depends.txt':
+                for extra,reqs in split_sections(self._get_metadata(name)):
+                    if extra: extra = safe_extra(extra)
+                    dm.setdefault(extra,[]).extend(parse_requirements(reqs))
+            return dm
+    _dep_map = property(_dep_map)
+
+    def requires(self,extras=()):
+        """List of Requirements needed for this distro if `extras` are used"""
+        dm = self._dep_map
+        deps = []
+        deps.extend(dm.get(None,()))
+        for ext in extras:
+            try:
+                deps.extend(dm[safe_extra(ext)])
+            except KeyError:
+                raise UnknownExtra(
+                    "%s has no such extra feature %r" % (self, ext)
+                )
+        return deps
+
+    def _get_metadata(self,name):
+        if self.has_metadata(name):
+            for line in self.get_metadata_lines(name):
+                yield line
+
+    def activate(self,path=None):
+        """Ensure distribution is importable on `path` (default=sys.path)"""
+        if path is None: path = sys.path
+        self.insert_on(path)
+        if path is sys.path:
+            fixup_namespace_packages(self.location)
+            for pkg in self._get_metadata('namespace_packages.txt'):
+                if pkg in sys.modules: declare_namespace(pkg)
+
+    def egg_name(self):
+        """Return what this distribution's standard .egg filename should be"""
+        filename = "%s-%s-py%s" % (
+            to_filename(self.project_name), to_filename(self.version),
+            self.py_version or PY_MAJOR
+        )
+
+        if self.platform:
+            filename += '-'+self.platform
+        return filename
+
+    def __repr__(self):
+        if self.location:
+            return "%s (%s)" % (self,self.location)
+        else:
+            return str(self)
+
+    def __str__(self):
+        try: version = getattr(self,'version',None)
+        except ValueError: version = None
+        version = version or "[unknown version]"
+        return "%s %s" % (self.project_name,version)
+
+    def __getattr__(self,attr):
+        """Delegate all unrecognized public attributes to .metadata provider"""
+        if attr.startswith('_'):
+            raise AttributeError,attr
+        return getattr(self._provider, attr)
+
+    #@classmethod
+    def from_filename(cls,filename,metadata=None, **kw):
+        return cls.from_location(
+            _normalize_cached(filename), os.path.basename(filename), metadata,
+            **kw
+        )
+    from_filename = classmethod(from_filename)
+
+    def as_requirement(self):
+        """Return a ``Requirement`` that matches this distribution exactly"""
+        return Requirement.parse('%s==%s' % (self.project_name, self.version))
+
+    def load_entry_point(self, group, name):
+        """Return the `name` entry point of `group` or raise ImportError"""
+        ep = self.get_entry_info(group,name)
+        if ep is None:
+            raise ImportError("Entry point %r not found" % ((group,name),))
+        return ep.load()
+
+    def get_entry_map(self, group=None):
+        """Return the entry point map for `group`, or the full entry map"""
+        try:
+            ep_map = self._ep_map
+        except AttributeError:
+            ep_map = self._ep_map = EntryPoint.parse_map(
+                self._get_metadata('entry_points.txt'), self
+            )
+        if group is not None:
+            return ep_map.get(group,{})
+        return ep_map
+
+    def get_entry_info(self, group, name):
+        """Return the EntryPoint object for `group`+`name`, or ``None``"""
+        return self.get_entry_map(group).get(name)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    def insert_on(self, path, loc = None):
+        """Insert self.location in path before its nearest parent directory"""
+
+        loc = loc or self.location
+        if not loc:
+            return
+
+        nloc = _normalize_cached(loc)
+        bdir = os.path.dirname(nloc)
+        npath= [(p and _normalize_cached(p) or p) for p in path]
+
+        bp = None
+        for p, item in enumerate(npath):
+            if item==nloc:
+                break
+            elif item==bdir and self.precedence==EGG_DIST:
+                # if it's an .egg, give it precedence over its directory
+                if path is sys.path:
+                    self.check_version_conflict()
+                path.insert(p, loc)
+                npath.insert(p, nloc)
+                break
+        else:
+            if path is sys.path:
+                self.check_version_conflict()
+            path.append(loc)
+            return
+
+        # p is the spot where we found or inserted loc; now remove duplicates
+        while 1:
+            try:
+                np = npath.index(nloc, p+1)
+            except ValueError:
+                break
+            else:
+                del npath[np], path[np]
+                p = np  # ha!
+
+        return
+
+
+    def check_version_conflict(self):
+        if self.key=='setuptools':
+            return      # ignore the inevitable setuptools self-conflicts  :(
+
+        nsp = dict.fromkeys(self._get_metadata('namespace_packages.txt'))
+        loc = normalize_path(self.location)
+        for modname in self._get_metadata('top_level.txt'):
+            if (modname not in sys.modules or modname in nsp
+                or modname in _namespace_packages
+            ):
+                continue
+
+            fn = getattr(sys.modules[modname], '__file__', None)
+            if fn and (normalize_path(fn).startswith(loc) or fn.startswith(loc)):
+                continue
+            issue_warning(
+                "Module %s was already imported from %s, but %s is being added"
+                " to sys.path" % (modname, fn, self.location),
+            )
+
+    def has_version(self):
+        try:
+            self.version
+        except ValueError:
+            issue_warning("Unbuilt egg for "+repr(self))
+            return False
+        return True
+
+    def clone(self,**kw):
+        """Copy this distribution, substituting in any changed keyword args"""
+        for attr in (
+            'project_name', 'version', 'py_version', 'platform', 'location',
+            'precedence'
+        ):
+            kw.setdefault(attr, getattr(self,attr,None))
+        kw.setdefault('metadata', self._provider)
+        return self.__class__(**kw)
+
+
+
+
+    #@property
+    def extras(self):
+        return [dep for dep in self._dep_map if dep]
+    extras = property(extras)
+
+
+def issue_warning(*args,**kw):
+    level = 1
+    g = globals()
+    try:
+        # find the first stack frame that is *not* code in
+        # the pkg_resources module, to use for the warning
+        while sys._getframe(level).f_globals is g:
+            level += 1
+    except ValueError:
+        pass
+    from warnings import warn
+    warn(stacklevel = level+1, *args, **kw)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+def parse_requirements(strs):
+    """Yield ``Requirement`` objects for each specification in `strs`
+
+    `strs` must be an instance of ``basestring``, or a (possibly-nested)
+    iterable thereof.
+    """
+    # create a steppable iterator, so we can handle \-continuations
+    lines = iter(yield_lines(strs))
+
+    def scan_list(ITEM,TERMINATOR,line,p,groups,item_name):
+
+        items = []
+
+        while not TERMINATOR(line,p):
+            if CONTINUE(line,p):
+                try:
+                    line = lines.next(); p = 0
+                except StopIteration:
+                    raise ValueError(
+                        "\\ must not appear on the last nonblank line"
+                    )
+
+            match = ITEM(line,p)
+            if not match:
+                raise ValueError("Expected "+item_name+" in",line,"at",line[p:])
+
+            items.append(match.group(*groups))
+            p = match.end()
+
+            match = COMMA(line,p)
+            if match:
+                p = match.end() # skip the comma
+            elif not TERMINATOR(line,p):
+                raise ValueError(
+                    "Expected ',' or end-of-list in",line,"at",line[p:]
+                )
+
+        match = TERMINATOR(line,p)
+        if match: p = match.end()   # skip the terminator, if any
+        return line, p, items
+
+    for line in lines:
+        match = DISTRO(line)
+        if not match:
+            raise ValueError("Missing distribution spec", line)
+        project_name = match.group(1)
+        p = match.end()
+        extras = []
+
+        match = OBRACKET(line,p)
+        if match:
+            p = match.end()
+            line, p, extras = scan_list(
+                DISTRO, CBRACKET, line, p, (1,), "'extra' name"
+            )
+
+        line, p, specs = scan_list(VERSION,LINE_END,line,p,(1,2),"version spec")
+        specs = [(op,safe_version(val)) for op,val in specs]
+        yield Requirement(project_name, specs, extras)
+
+
+def _sort_dists(dists):
+    tmp = [(dist.hashcmp,dist) for dist in dists]
+    tmp.sort()
+    dists[::-1] = [d for hc,d in tmp]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+class Requirement:
+    def __init__(self, project_name, specs, extras):
+        """DO NOT CALL THIS UNDOCUMENTED METHOD; use Requirement.parse()!"""
+        self.unsafe_name, project_name = project_name, safe_name(project_name)
+        self.project_name, self.key = project_name, project_name.lower()
+        index = [(parse_version(v),state_machine[op],op,v) for op,v in specs]
+        index.sort()
+        self.specs = [(op,ver) for parsed,trans,op,ver in index]
+        self.index, self.extras = index, tuple(map(safe_extra,extras))
+        self.hashCmp = (
+            self.key, tuple([(op,parsed) for parsed,trans,op,ver in index]),
+            frozenset(self.extras)
+        )
+        self.__hash = hash(self.hashCmp)
+
+    def __str__(self):
+        specs = ','.join([''.join(s) for s in self.specs])
+        extras = ','.join(self.extras)
+        if extras: extras = '[%s]' % extras
+        return '%s%s%s' % (self.project_name, extras, specs)
+
+    def __eq__(self,other):
+        return isinstance(other,Requirement) and self.hashCmp==other.hashCmp
+
+    def __contains__(self,item):
+        if isinstance(item,Distribution):
+            if item.key != self.key: return False
+            if self.index: item = item.parsed_version  # only get if we need it
+        elif isinstance(item,basestring):
+            item = parse_version(item)
+        last = None
+        for parsed,trans,op,ver in self.index:
+            action = trans[cmp(item,parsed)]
+            if action=='F':     return False
+            elif action=='T':   return True
+            elif action=='+':   last = True
+            elif action=='-' or last is None:   last = False
+        if last is None: last = True    # no rules encountered
+        return last
+
+
+    def __hash__(self):
+        return self.__hash
+
+    def __repr__(self): return "Requirement.parse(%r)" % str(self)
+
+    #@staticmethod
+    def parse(s):
+        reqs = list(parse_requirements(s))
+        if reqs:
+            if len(reqs)==1:
+                return reqs[0]
+            raise ValueError("Expected only one requirement", s)
+        raise ValueError("No requirements found", s)
+
+    parse = staticmethod(parse)
+
+state_machine = {
+    #       =><
+    '<' :  '--T',
+    '<=':  'T-T',
+    '>' :  'F+F',
+    '>=':  'T+F',
+    '==':  'T..',
+    '!=':  'F++',
+}
+
+
+def _get_mro(cls):
+    """Get an mro for a type or classic class"""
+    if not isinstance(cls,type):
+        class cls(cls,object): pass
+        return cls.__mro__[1:]
+    return cls.__mro__
+
+def _find_adapter(registry, ob):
+    """Return an adapter factory for `ob` from `registry`"""
+    for t in _get_mro(getattr(ob, '__class__', type(ob))):
+        if t in registry:
+            return registry[t]
+
+
+def ensure_directory(path):
+    """Ensure that the parent directory of `path` exists"""
+    dirname = os.path.dirname(path)
+    if not os.path.isdir(dirname):
+        os.makedirs(dirname)
+
+def split_sections(s):
+    """Split a string or iterable thereof into (section,content) pairs
+
+    Each ``section`` is a stripped version of the section header ("[section]")
+    and each ``content`` is a list of stripped lines excluding blank lines and
+    comment-only lines.  If there are any such lines before the first section
+    header, they're returned in a first ``section`` of ``None``.
+    """
+    section = None
+    content = []
+    for line in yield_lines(s):
+        if line.startswith("["):
+            if line.endswith("]"):
+                if section or content:
+                    yield section, content
+                section = line[1:-1].strip()
+                content = []
+            else:
+                raise ValueError("Invalid section heading", line)
+        else:
+            content.append(line)
+
+    # wrap up last segment
+    yield section, content
+
+def _mkstemp(*args,**kw):
+    from tempfile import mkstemp
+    old_open = os.open
+    try:
+        os.open = os_open   # temporarily bypass sandboxing
+        return mkstemp(*args,**kw)
+    finally:
+        os.open = old_open  # and then put it back
+
+
+# Set up global resource manager (deliberately not state-saved)
+_manager = ResourceManager()
+def _initialize(g):
+    for name in dir(_manager):
+        if not name.startswith('_'):
+            g[name] = getattr(_manager, name)
+_initialize(globals())
+
+# Prepare the master working set and make the ``require()`` API available
+_declare_state('object', working_set = WorkingSet())
+try:
+    # Does the main program list any requirements?
+    from __main__ import __requires__
+except ImportError:
+    pass # No: just use the default working set based on sys.path
+else:
+    # Yes: ensure the requirements are met, by prefixing sys.path if necessary
+    try:
+        working_set.require(__requires__)
+    except VersionConflict:     # try it without defaults already on sys.path
+        working_set = WorkingSet([])    # by starting with an empty path
+        for dist in working_set.resolve(
+            parse_requirements(__requires__), Environment()
+        ):
+            working_set.add(dist)
+        for entry in sys.path:  # add any missing entries from sys.path
+            if entry not in working_set.entries:
+                working_set.add_entry(entry)
+        sys.path[:] = working_set.entries   # then copy back to sys.path
+
+require = working_set.require
+iter_entry_points = working_set.iter_entry_points
+add_activation_listener = working_set.subscribe
+run_script = working_set.run_script
+run_main = run_script   # backward compatibility
+# Activate all distributions already on sys.path, and ensure that
+# all distributions added to the working set in the future (e.g. by
+# calling ``require()``) will get activated as well.
+add_activation_listener(lambda dist: dist.activate())
+working_set.entries=[]; map(working_set.add_entry,sys.path) # match order
+
Binary file buildframework/helium/external/helium-antlib/builder/python/lib/setuptools-0.6c11-py2.5.egg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/builder/python/macros.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : build.xml 
+Part of     : Helium AntLib
+
+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="helium-python-builder" xmlns:ivy="antlib:org.apache.ivy.ant"
+  xmlns:contrib="antlib:net.sf.antcontrib">
+  
+    <property name="bin.dir" location="${builder.dir}/../build/${ant.project.name}" />
+    <import file="../java/common.ant.xml" />
+    <dirname property="python.builder.dir" file="${ant.file.helium-python-builder}" />
+
+    <target name="resolve">
+        <ivy:settings file="${ivy.settings.dir}/ivysettings.xml" />
+        
+        <!-- the call to resolve is not mandatory, retrieve makes an implicit call if we don't -->
+        <ivy:resolve file="${ivy.file}" log="download-only"/>
+        <ivy:retrieve pattern="${lib.dir}/[artifact].[ext]" log="download-only"/>
+    </target>
+
+    <target name="checkstyle"/>
+    <target name="junit"/>
+    <target name="quality"/>
+
+    <target name="package" depends="clean,resolve">
+        <exec executable="python" failonerror="true" dir="${basedir}">
+            <env key="PYTHONPATH" path="${python.builder.dir}/lib/setuptools-0.6c11-py2.5.egg" />
+            <arg line="setup.py -q bdist_egg -d ${bin.dir}" />
+        </exec>
+        <delete dir="${basedir}/build"/>
+        <delete includeemptydirs="true">
+            <fileset dir="${basedir}/lib" includes="*.egg-info/"/>
+        </delete>
+        
+        <ivy:publish artifactspattern="${bin.dir}/[artifact]-0.1-py2.6.[ext]" 
+                        resolver="local"
+                        status="integration"
+                        forcedeliver="true"
+                        pubrevision="1.0"
+                        overwrite="true"
+        />
+    </target>
+    
+    <target name="test">
+        <condition property="target" value="pt" else="unittest">
+            <isset property="nose.args"/>
+        </condition>
+        
+        <property name="nose.args" value="${basedir}/lib/${ant.project.name}tests ${basedir}/lib/${ant.project.name}cpythontests"/>
+        <exec osfamily="windows" executable="cmd" dir="${basedir}" failonerror="true">
+            <env key="ANT_ARGS" value="-lib ${lib.dir} -lib ${builder.dir}\antlibs" />
+            <env key="JYTHONPATH" value="${builder.dir}\python\lib\jython-2.5-py2.5.egg" />
+            <env key="TEST_DATA" path="${basedir}/tests" />
+            <arg line="/c ant -f tests.ant.xml ${target} -Dbuilder.dir=${builder.dir}" />
+            <arg line='-Dnose.args="${nose.args}"'/>
+        </exec>
+        <exec osfamily="unix" executable="ant" dir="${basedir}" failonerror="true">
+            <env key="ANT_ARGS" value="-lib ${lib.dir} -lib ${builder.dir}/antlibs" />
+            <env key="JYTHONPATH" value="${builder.dir}/python/lib/jython-2.5-py2.5.egg" />
+            <env key="TEST_DATA" path="${basedir}/tests" />
+            <arg line="-f tests.ant.xml ${target} -Dbuilder.dir=${builder.dir}" />
+            <arg line='-Dnose.args="${nose.args}"'/>
+        </exec>
+    </target>  
+
+    <target name="clean">
+    </target>
+    
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/builder/python/test-macros.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,96 @@
+<?xml version="1.0"?>
+<!-- 
+============================================================================ 
+Name        : build.xml 
+Part of     : Helium AntLib
+
+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="test-macros">
+    <import file="../java/common.ant.xml" />
+    <dirname property="python.builder.dir" file="${ant.file.test-macros}" />
+    
+    <target name="unittest" depends="pt,pt-coverage"/>
+    
+    <target name="pt">
+        <pathconvert pathsep=":" property="python.path">
+            <fileset dir="${python.builder.dir}/lib" includes="**/*.egg" excludes="jython*"/>
+            <fileset dir="${lib.dir}" includes="**/*.egg"/>
+            <dirset dir="${lib.dir}"/>
+            <fileset dir="${bin.dir}" includes="**/${ant.project.name}*.egg"/>
+            <dirset dir="${basedir}/lib"/>
+        </pathconvert>
+        <pathconvert pathsep=" " property="python.modules.coverage">
+            <fileset dir="${basedir}" includes="**/*.py"/>
+        </pathconvert>
+        <!---->
+        <exec executable="python" failonerror="true" dir="${lib.dir}">
+            <env key="PYTHONPATH" path="${python.path}" />
+            <arg line="${python.builder.dir}/lib/coverage.py -x ${python.builder.dir}/lib/nosetests-script.py --exe -v ${nose.args}"/>
+        </exec>
+        
+        <script language="jython" setbeans="false">
+import sys
+import os
+import shutil
+for p in project.getProperty('python.path').split(':'):
+    if 'amara' not in p:
+        sys.path.append(p)
+os.chdir(project.getProperty('lib.dir'))
+if os.path.exists('build'):
+    shutil.rmtree('build')
+import nose
+args = project.getProperty('nose.args')
+
+testdir = os.path.join(project.getProperty('basedir'), 'lib', project.getProperty('ant.project.name'))
+
+if ' ' in args:
+    nose.run(argv=['-v', testdir + 'tests'])
+elif 'cpython' not in args:
+    nose.run(argv=['-v', args])
+print >> sys.stderr
+        </script>
+        <delete includeemptydirs="true">
+            <fileset dir="${basedir}/lib" includes="*.egg-info/"/>
+        </delete>
+    </target>
+    
+    <target name="pt-coverage">
+        <mkdir dir="${lib.dir}/../coverage"/>
+        <exec executable="python" failonerror="true" dir="${lib.dir}">
+            <env key="PYTHONPATH" path="${python.path}" />
+            <arg line="${python.builder.dir}/lib/coverage.py -a -d ${lib.dir}/../coverage ${python.modules.coverage}"/>
+        </exec>
+        
+        <mkdir dir="${lib.dir}/../coverage/report"/>
+        <move file="${lib.dir}/../coverage/report/line_coverage.txt" tofile="${lib.dir}/../coverage/report/line_coverage_old.txt" overwrite="true" failonerror="false"/>
+        <record name="${lib.dir}/../coverage/report/line_coverage.txt" action="start"/>
+        <exec executable="python" failonerror="true" dir="${lib.dir}">
+            <env key="PYTHONPATH" path="${python.path}" />
+            <arg line="${python.builder.dir}/lib/coverage.py -r ${python.modules.coverage}"/>
+        </exec>
+        <record name="${lib.dir}/../coverage/report/line_coverage.txt" action="stop"/>
+        
+        <script language="jython" setbeans="false">
+for line in open(project.getProperty('lib.dir') + r'/../coverage/report/line_coverage.txt'):
+    if 'TOTAL' in line and ' 0%' in line:
+        raise Exception('Coverage at 0%')
+        </script>
+        <delete file="${basedir}/.coverage"/>
+    </target>
+    
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/builder/settings/ivysettings.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,37 @@
+<!--
+============================================================================ 
+Name        : ivysettings.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:
+
+============================================================================    
+-->
+<ivysettings>
+  <include url="${helium.source.root.dir}/settings/ivysettings.xml"/>
+  <settings defaultResolver="helium-nokia-build"/>
+
+  <resolvers>
+    <chain name="helium-nokia-build" returnFirst="true">
+      <filesystem name="sf">
+          <artifact pattern="${helium.source.root.dir}/sf/deps/[module]/[artifact]-[revision].[ext]" />
+      </filesystem>
+      <!--ibiblio name="ibiblio" m2compatible="true" usepoms="false" /-->
+      <resolver ref="default"/>
+    </chain>
+  </resolvers>
+
+</ivysettings>
+
--- a/buildframework/helium/external/helium-antlib/core/bld.bat	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-@echo off
-
-rem
-rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-rem All rights reserved.
-rem This component and the accompanying materials are made available
-rem under the terms of the License "Eclipse Public License v1.0"
-rem which accompanies this distribution, and is available
-rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
-rem
-rem Initial Contributors:
-rem Nokia Corporation - initial contribution.
-rem
-rem Contributors:
-rem
-rem Description: 
-rem
-
-setlocal
-if not defined JAVA_6_HOME (
-set TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
-) ELSE  set TESTED_JAVA=%JAVA_6_HOME%
-if exist %TESTED_JAVA% (set JAVA_HOME=%TESTED_JAVA%)
-
-REM Configure Ant 
-if not defined TESTED_ANT_HOME (
-set TESTED_ANT_HOME=C:\Apps\ant_1.7
-) 
-if exist %TESTED_ANT_HOME% (set ANT_HOME=%TESTED_ANT_HOME%)
-
-REM Configure the expected Ant Version details below
-SET expMajorVer=1
-SET expMinorVer=7
-
-rem *** Verify Ant Version ***
-rem -- Run the 'ant -version' command and capture the output to a variable 
-for /f "tokens=*" %%a in ('ant -version') do (set antversion=%%a)
-echo *** Installed Version : %antversion%
-
-rem -- Parse the version string obtained above and get the version number
-for /f "tokens=4 delims= " %%a in ("%antversion%") do set val=%%a
-rem -- Parse the version number delimiting the '.' and set the major and
-rem    minor versions
-for /f "tokens=1-2 delims=." %%a in ("%val%") do (
-set /A majorVersion=%%a
-set /A minorVersion=%%b
-)
-rem -- Check whether major version is greater than or equal to the expected.
-if %majorVersion% geq %expMajorVer% ( 
-rem -- if major version is valid, check minor version. If minor version is less
-rem    than expected display message and abort the execution.
-if %minorVersion% lss %expMinorVer% (echo *** Incorrect version of Ant found. Please check you have atleast Ant 1.7.0 & goto :errorstop ) 
-)
-
-ant %*
-endlocal
-
-:errorstop
-@echo *** Build aborted with error
-exit /b 1
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/core/build.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : build.xml 
-Part of     : Helium AntLib
-
-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="helium-core">
-    <description>Helium Antlib Core build file.</description>
-    
-    <import file="../macros.ant.xml"/>
-    
-    <property name="name" value="core"/>
-    
-    <path id="helium.core.classpath">
-        <fileset dir="${ant.file.helium-core}/../lib" includes="*.jar"/>
-    </path>
-
-</project>
-
-
Binary file buildframework/helium/external/helium-antlib/core/lib/jakarta-oro-2.0.8.jar has changed
--- a/buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/AbstractTemplateInputSource.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-
-package com.nokia.helium.core;
-
-/**
- * Implements the source name handling.
- */
-public abstract class AbstractTemplateInputSource implements
-        TemplateInputSource {
-
-    private String sourceName;
-    /**
-     * Get template source name.
-     * @return
-     *      template source name.
-     */
-    public String getSourceName() {
-        return sourceName;
-    }
-    /**
-     * Add template source name
-     * @param String 
-     *          template source name     
-     */
-    public void setSourceName(String souceName) {
-        this.sourceName = souceName;
-    }
-
-}
--- a/buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/EmailDataSender.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,361 +0,0 @@
-/*
- * Copyright (c) 2007-2008 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:  
- *
- */
-
-package com.nokia.helium.core;
-
-import java.util.Arrays;
-import java.util.Properties;
-import java.util.Hashtable;
-import java.util.zip.GZIPOutputStream;
-import java.io.BufferedInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import javax.mail.*;
-import javax.mail.internet.*;
-import javax.naming.*;
-import javax.naming.directory.*;
-
-import javax.activation.DataHandler;
-import javax.mail.util.ByteArrayDataSource;
-import org.apache.log4j.Logger;
-import org.apache.commons.io.FileUtils;
-
-/**
- * Send compressed or uncompressed xml data with email.
- */
-public class EmailDataSender {
-
-    // Logger
-    private static Logger log = Logger.getLogger(EmailDataSender.class);
-
-    // Address email is sent from
-    private String from;
-    
-    // The target address
-    private String[] toAddressList;
-
-    // LDAP config
-    private String ldapURL;
-    // TODO all reference to nokia internals MUST be removed.
-    private String rootdn = "o=Nokia";
-
-    // Configured smtp server address
-    private String smtpServerAddress;
-    /**
-    * Constructor
-    * 
-    * @param String
-    *            comma separeted email recepients list
-    * @param String
-    *            smtp server 
-    * @param String
-    *            ldap server
-    */
-    public EmailDataSender(String toStrings, String smtpServer,
-            String ldapAddress) {
-        if (toStrings != null) {
-            String[] splitList = toStrings.split(",");
-            toAddressList = splitList;
-        }
-        smtpServerAddress = smtpServer;
-        ldapURL = ldapAddress;
-    }
-    /**
-    * Constructor
-    * 
-    * @param String
-    *            email recepient list in array
-    * @param String
-    *            smtp server 
-    * @param String
-    *            ldap server
-    */
-    public EmailDataSender(String[] toList, String smtpServer,
-            String ldapAddress) {
-        toAddressList = toList;
-        smtpServerAddress = smtpServer;
-        ldapURL = ldapAddress;
-    }
-    /**
-    * Constructor
-    * 
-    * @param String
-    *            email recepients list in array
-    * @param String
-    *            smtp server 
-    * @param String
-    *            ldap server
-    * @param String
-    *            root domain in ldap server
-    */
-    public EmailDataSender(String[] toList, String smtpServer,
-            String ldapAddress, String rootdn) {
-        toAddressList = toList;
-        smtpServerAddress = smtpServer;
-        ldapURL = ldapAddress;
-        this.rootdn = rootdn;
-    }
-    /**
-    * Set sender address.
-    *
-    * @param String
-    *            mail sender address
-    */
-    public void setFrom(String from) {
-        this.from = from;
-    }
-    /**
-    * Add current user to recipient list.
-    *    
-    */
-    public void addCurrentUserToAddressList() {
-        // Create an empty array if needed
-        if (toAddressList == null)
-            toAddressList = new String[0];
-        try {
-            String userEmail;
-            userEmail = getUserEmail();
-            toAddressList = Arrays.copyOf(toAddressList,
-                    toAddressList.length + 1);
-            toAddressList[toAddressList.length - 1] = userEmail;
-        } catch (Exception e) {
-            return;
-        }
-    }
-    /**
-    * Get recipient address list.
-    * 
-    * @return
-    *       Recipient address list.
-    */
-    private InternetAddress[] getToAddressList() {
-        int toListLength = 0;
-        if (toAddressList != null)
-            toListLength = toAddressList.length;
-        InternetAddress[] addressList = new InternetAddress[toListLength];
-        try {
-            log.debug("getToAddressList:length: "
-                    + toListLength);
-            for (int i = 0; i < toListLength; i++) {
-                log.debug("getToAddressList:address:"
-                        + toAddressList[i]);
-                addressList[i] = new InternetAddress(toAddressList[i]);
-            }
-        } catch (Exception aex) {
-            // We are Ignoring the errors as no need to fail the build.
-            log.error("AddressException: " + aex);
-        }
-        return addressList;
-    }
-    /**
-    * Send xml data without compression
-    * 
-    * @param String
-    *            purpose of this email
-    * @param String
-    *            file to send 
-    * @param String
-    *            mime type
-    * @param String
-    *            subject of email
-    * @param String
-    *            header of email
-    */
-    public void sendData(String purpose, String fileToSend, String mimeType,
-            String subject, String header) {
-        sendData(purpose, fileToSend, mimeType, subject, header, false);
-    }
-
-   
-    /**
-    * Sending the XML data(compressed) through email.
-    * 
-    * @param String
-    *            purpose of this email
-    * @param String
-    *            file to send     
-    * @param String
-    *            subject of email
-    * @param String
-    *            header of email
-    */
-    public void compresseAndSendData(String purpose, String fileToSend,
-            String subject, String header) {
-        sendData(purpose, fileToSend, null, subject, header, true);
-    }
-    /**
-    * Send xml data 
-    * 
-    * @param String
-    *            purpose of this email
-    * @param String
-    *            file to send 
-    * @param String
-    *            mime type
-    * @param String
-    *            subject of email
-    * @param String
-    *            header of mail
-    * @param boolean
-    *            compress data if true
-    */
-    public void sendData(String purpose, String fileToSend, String mimeType,
-            String subject, String header, boolean compressData) {
-        try {
-            log.debug("sendData:Send file: " + fileToSend + " and mimetype: " + mimeType);
-            if (fileToSend != null) {
-                log.debug("sendData:smtp address: "
-                        + smtpServerAddress);
-                InternetAddress[] toAddresses = getToAddressList();
-                Properties props = new Properties();
-                props.setProperty("mail.smtp.host", smtpServerAddress);
-                Session mailSession = Session.getDefaultInstance(props, null);
-                MimeMessage message = new MimeMessage(mailSession);
-                String subjectToSend = subject;
-                if (subject == null) {
-                    subjectToSend = "";
-                }
-                message.setSubject(subjectToSend);
-                MimeMultipart multipart = new MimeMultipart("related");
-                BodyPart messageBodyPart = new MimeBodyPart();
-                ByteArrayDataSource dataSrc = null;
-                String fileName = new File(fileToSend).getName();
-                if (compressData) {
-                    log.debug("Sending compressed data");
-                    dataSrc = compressFile(fileToSend);
-                    dataSrc.setName(fileName + ".gz");
-                    messageBodyPart.setFileName(fileName + ".gz");
-                } else {
-                    log.debug("Sending uncompressed data:");
-                    dataSrc = new ByteArrayDataSource(new FileInputStream(
-                            new File(fileToSend)), mimeType);
-
-                    message.setContent(FileUtils.readFileToString(new File(
-                            fileToSend)), "text/html");
-                    multipart = null;
-                }
-                String headerToSend = null;
-                if (header == null) {
-                    headerToSend = "";
-                }
-                messageBodyPart.setHeader("helium-bld-data", headerToSend);
-                messageBodyPart.setDataHandler(new DataHandler(dataSrc));
-
-                if (multipart != null) {
-                    multipart.addBodyPart(messageBodyPart); // add to the
-                    // multipart
-                    message.setContent(multipart);
-                }
-                try {
-                    InternetAddress fromAddress = getFromAddress(); 
-                    message.setFrom(fromAddress);
-                } catch (Exception e) {
-                    // We are Ignoring the errors as no need to fail the build.
-                    log.debug("Error retrieving current user email address: " + e.getMessage(), e);
-                }
-                message.addRecipients(Message.RecipientType.TO, toAddresses);
-                log.info("Sending email alert: " + subject);
-                Transport.send(message);
-            }
-        } catch (Exception e) {
-            String errorMessage = e.getMessage();
-            String fullErrorMessage = "Failed sending e-mail: " + purpose;
-            if (errorMessage != null) {
-                fullErrorMessage += " " + errorMessage;
-            }
-            // We are Ignoring the errors as no need to fail the build.
-            log.info(fullErrorMessage);
-        }
-    }
-
-    /**
-     * GZipping a string.
-     * 
-     * @param data
-     *            the content to be gzipped.
-     * @param filename
-     *            the name for the file.
-     * @return a ByteArrayDataSource.
-     */
-    protected ByteArrayDataSource compressFile(String fileName)
-            throws IOException {
-        ByteArrayOutputStream out = new ByteArrayOutputStream();
-        GZIPOutputStream gz = new GZIPOutputStream(out);
-        BufferedInputStream bufferedInputStream = new BufferedInputStream(
-                new FileInputStream(new File(fileName)));
-        byte[] dataBuffer = new byte[512];
-        while ((bufferedInputStream.read(dataBuffer)) != -1) {
-            gz.write(dataBuffer);
-        }
-        gz.close();
-        bufferedInputStream.close();
-        ByteArrayDataSource dataSrc = new ByteArrayDataSource(
-                out.toByteArray(), "application/x-gzip");
-        return dataSrc;
-    }
-    /**
-    * Get sender address.
-    * 
-    * @return
-    *       sender address.
-    */
-    private InternetAddress getFromAddress() throws Exception {
-        if (from != null) {
-            return new InternetAddress(from);
-        }
-        return new InternetAddress(getUserEmail());
-    }
-    
-    /**
-     * Getting user email.
-     * 
-     * @return
-     *    the user email address.
-     */
-    protected String getUserEmail() throws Exception {
-        String username = System.getProperty("user.name");
-        log.debug("EmailDataSender:getUserEmail:username: " + username);
-
-        // Set up environment for creating initial context
-        Hashtable<String, String> env = new Hashtable<String, String>(11);
-        env.put(Context.INITIAL_CONTEXT_FACTORY,
-                "com.sun.jndi.ldap.LdapCtxFactory");
-        env.put(Context.PROVIDER_URL, ldapURL + "/" + rootdn);
-
-        // Create initial context
-        DirContext ctx = new InitialDirContext(env);
-        SearchControls controls = new SearchControls();
-        controls.setSearchScope(SearchControls.SUBTREE_SCOPE);
-        try {
-            NamingEnumeration<SearchResult> en = ctx.search("", "uid=" + username, controls);
-            if (en.hasMore()) {
-                SearchResult sr = en.next();
-                String email = (String) sr.getAttributes().get("mail").get();
-                log.debug("getUserEmail:" + email);
-                return email;
-            }
-        } catch (javax.naming.NameNotFoundException ex) {
-            throw new HlmAntLibException("Error finding user email for " + username );
-        }
-        throw new HlmAntLibException("Could not find user email in LDAP.");
-    }
-}
-
-
-
--- a/buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/HlmAntLibException.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-/*
- * Copyright (c) 2007-2008 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:  
- *
- */
-
-package com.nokia.helium.core;
-
-/**
- * HlmAntlib exception handling class
- */
-public class HlmAntLibException extends RuntimeException {
-
-    private static final long serialVersionUID = -2504337723465536053L;
-
-    /**
-     * Constructor
-     * 
-     * @param String
-     *            exception message
-     */
-    public HlmAntLibException(String msg) {
-        super("HlmAntLibException:generic:" + msg);
-    }
-
-    /**
-     * Constructor
-     * 
-     * @param String
-     *            module which throws the exception
-     * @param String
-     *            exception message
-     */
-    public HlmAntLibException(String module, String msg) {
-        super("HlmAntLibException:" + module + ":" + msg);
-    }
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/LogSource.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-
-package com.nokia.helium.core;
-
-import java.io.File;
-
-import org.apache.tools.ant.types.DataType;
-
-/**
- * This class is the base class for all types of logs
- * 
- */
-public class LogSource extends DataType {
-
-    public File getFilename() {
-        //will be implemented by subclasses
-        throw new HlmAntLibException("Improper logsource usage"); 
-    }
-
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/PPHash.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,151 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-
-package com.nokia.helium.core;
-
-import java.io.File;
-import java.util.HashMap;
-import java.util.Map;
-
-import freemarker.template.ObjectWrapper;
-import freemarker.template.SimpleCollection;
-import freemarker.template.SimpleScalar;
-import freemarker.template.TemplateCollectionModel;
-import freemarker.template.TemplateHashModelEx;
-import freemarker.template.TemplateModel;
-import fmpp.Engine;
-import fmpp.models.AddTransform;
-import fmpp.models.ClearTransform;
-import fmpp.models.CopyWritableVariableMethod;
-import fmpp.models.NewWritableHashMethod;
-import fmpp.models.NewWritableSequenceMethod;
-import fmpp.models.RemoveTransform;
-import fmpp.models.SetTransform;
-
-/**
- * Downgraded implementation which makes the PPHash public (from FMPP).
- */
-public class PPHash implements TemplateHashModelEx {
-    private Map<String, TemplateModel> map = new HashMap<String, TemplateModel>();
-
-    /**
-    * Constructor
-    *     
-    */
-    public PPHash() {
-        // transforms
-        put("set", new SetTransform());
-        put("add", new AddTransform());
-        put("remove", new RemoveTransform());
-        put("clear", new ClearTransform());
-
-        // methods
-        put("newWritableSequence", new NewWritableSequenceMethod());
-        put("newWritableHash", new NewWritableHashMethod());
-        put("copyWritable", new CopyWritableVariableMethod());
-
-        // constants
-        put("slash", File.separator);
-        put("version", Engine.getVersionNumber());
-        put("freemarkerVersion", Engine.getFreeMarkerVersionNumber());
-
-    }
-    /**
-    * Get number of templates.
-    * 
-    * @return
-    *       Number of templates.
-    */
-    public int size() {
-        return map.size();
-    }
-
-    /**
-    * Get templates.
-    * 
-    * @return
-    *       templates.
-    */
-    public TemplateCollectionModel keys() {
-        return new SimpleCollection(map.keySet(), ObjectWrapper.SIMPLE_WRAPPER);
-    }
-    
-    /**
-    * Get template values.
-    * 
-    * @return
-    *       template values.
-    */
-    public TemplateCollectionModel values() {
-        return new SimpleCollection(map.values(), ObjectWrapper.SIMPLE_WRAPPER);
-    }
-
-    /**
-    * Get a template.
-    * 
-    * @param String
-    *            key for template
-    * @return
-    *       a template.
-    */
-    public TemplateModel get(String key) {
-        return map.get(key);
-    }
-
-     /**
-    * Check if there are any template.
-    * 
-    * @return
-    *       True if no template.
-    */
-    public boolean isEmpty() {
-        return map.isEmpty();
-    }
-     /**
-    * Add template
-    *     
-    * @param String
-    *            name of template
-    * @param TemplateModel
-    *            value
-    */
-    public void put(String name, TemplateModel value) {
-        map.put(name, value);
-    }
-     /**
-    * Add template
-    *     
-    * @param String
-    *            name of template
-    * @param String
-    *            value
-    */
-    public void put(String name, String value) {
-        map.put(name, new SimpleScalar(value));
-    }
-
-     /**
-    * Delete template
-    *     
-    * @param String
-    *            name of template
-    */
-    public void remove(String name) {
-        map.remove(name);
-    }
-}
--- a/buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/PPInputSource.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-
-package com.nokia.helium.core;
-/**
- * Template source.
- */
-public class PPInputSource implements TemplateInputSource {
-
-    private String name = "pp";
-
-     /**
-    * Get source name
-    *     
-    * @return 
-    *        name of source
-    */
-    @Override
-    public String getSourceName() {
-        return name;
-    }
-
-     /**
-    * Get hash
-    *     
-    * @return 
-    *        hash
-    */
-    public PPHash getPPHash() {
-        return new PPHash();
-    }
-}
--- a/buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/PropertiesSource.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
-/*
- * Copyright (c) 2007-2008 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:  
- *
- */
-
-package com.nokia.helium.core;
-
-import java.util.Hashtable;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Map.Entry;
-
-/**
- * Property set configuration holder. Will make the defined properties available
- * under a named variable.
- */
-public class PropertiesSource extends AbstractTemplateInputSource {
-    private Map<String, String> properties;
-
-    /**
-     * Constructor
-     * 
-     * @param String
-     *            Name of template
-     * @param Hashtable
-     *            properties
-     */
-    public PropertiesSource(String name, Map<String, String> props) {
-        setSourceName(name);
-        properties = props;
-    }
-
-    /**
-     * Constructor
-     * 
-     * @param String
-     *            Name of template
-     * @param Properties
-     *            properties
-     */
-    public PropertiesSource(String name, Properties props) {
-        setSourceName(name);
-        properties = new Hashtable<String, String>();
-        for (Entry<Object, Object> entry : props.entrySet()) {
-            properties.put((String) entry.getKey(), (String) entry.getValue());
-        }
-    }
-
-    /**
-     * Get properties.
-     * 
-     * @return Properties.
-     */
-    public Map<String, String> getProperties() {
-        return properties;
-    }
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/TemplateInputSource.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-
-
-package com.nokia.helium.core;
-
-/**
- * Generic interface between all input sources.
- */
-public interface TemplateInputSource {
-    /**
-     * Get the name of the source inside the template.
-     * 
-     * @return
-     *          source name.
-     */
-    String getSourceName();
-}
--- a/buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/TemplateProcessor.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,166 +0,0 @@
-/*
- * Copyright (c) 2007-2008 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:  
- *
- */
-
-package com.nokia.helium.core;
-
-import freemarker.template.Template;
-import freemarker.template.Configuration;
-
-import java.io.FileWriter;
-import java.io.File;
-import java.util.List;
-import java.util.HashMap;
-import java.util.Map;
-import org.apache.log4j.Logger;
-
-/**
- * Template processor.
- * 
- */
-public class TemplateProcessor {
-
-    private Logger log = Logger.getLogger(TemplateProcessor.class);
-
-    /**
-     * Create a Map of FreeMarker compatible data from the list of input source.
-     * 
-     * @param inputSources
-     * @return
-     * @throws TemplateProcessorException
-     */
-    private HashMap<String, Object> getTemplateMap(
-            List<TemplateInputSource> inputSources) {
-        HashMap<String, Object> templateMap = new HashMap<String, Object>();
-        try {
-            for (TemplateInputSource source : inputSources) {
-                if (source instanceof XMLTemplateSource) {
-                    XMLTemplateSource xmlSource = (XMLTemplateSource) source;
-                    File inputFile = xmlSource.getSourceLocation();
-                    if (inputFile.exists()) {
-                        templateMap.put(xmlSource.getSourceName(),
-                                freemarker.ext.dom.NodeModel.parse(inputFile));
-                    } else {
-                        log.debug("TemplateProcessor: input file " + inputFile
-                                + " for the template does not exists");
-                    }
-                } else if (source instanceof PropertiesSource) {
-                    PropertiesSource propSource = (PropertiesSource) source;
-                    templateMap.put(propSource.getSourceName(), propSource
-                            .getProperties());
-                } else if (source instanceof PPInputSource) {
-                    PPInputSource ppSource = (PPInputSource) source;
-                    templateMap.put(ppSource.getSourceName(), ppSource
-                            .getPPHash());
-                }
-            }
-        } catch (java.io.IOException e) {
-            throw new TemplateProcessorException(
-                    "I/O Error during template conversion: " + e.getMessage());
-        } catch (org.xml.sax.SAXException e1) {
-            throw new TemplateProcessorException("XML parser error: "
-                    + e1.getMessage());
-        } catch (javax.xml.parsers.ParserConfigurationException e3) {
-            throw new TemplateProcessorException("Parser error: "
-                    + e3.getMessage());
-        }
-        return templateMap;
-    }
-
-    /**
-     * Convert a template.
-     * 
-     * @param templateFile
-     * @param outputFile
-     * @param sourceList
-     * @throws TemplateProcessorException
-     */
-    public void convertTemplate(String templateFile, String outputFile,
-            List<TemplateInputSource> sourceList) {
-        convertTemplate(new File(templateFile), new File(outputFile),
-                sourceList);
-    }
-
-    /**
-     * Convert a template.
-     * 
-     * @param templateFile
-     * @param outputFile
-     * @param sourceList
-     * @throws TemplateProcessorException
-     */
-    public void convertTemplate(File templateFile, File outputFile,
-            List<TemplateInputSource> sourceList) {
-        if (templateFile != null) {
-            convertTemplate(templateFile.getParent(), templateFile.getName(),
-                    outputFile.toString(), sourceList);
-        } else {
-            throw new TemplateProcessorException("Template file not defined.");
-        }
-    }
-
-    /**
-     * Converts the template to generate xml file to be sent to the server.
-     * 
-     * @param templateFile
-     *            - template file to be converted
-     * @param input
-     *            - input source file.
-     * @param outputFile
-     *            - location to store the converted file
-     * @param antProperties
-     *            - used as one of the input for conversion.
-     * @param inputSourceType
-     *            - source input type (xml / properties from file). Currently
-     *            xml input source is the only one supported.
-     * @return - location of the input source.
-     * @throws TemplateProcessorException
-     */
-    public void convertTemplate(String templateDir, String templateFile,
-            String outputFile, List<TemplateInputSource> sourceList) {
-
-        Configuration cfg = new Configuration();
-        File templateDirFile = new File(templateDir);
-        if (templateDir != null && templateDirFile.exists()) {
-            try {
-                cfg.setDirectoryForTemplateLoading(templateDirFile);
-                log
-                        .debug("diamonds:TemplateProcessor:adding template directory loader: "
-                                + templateDir);
-            } catch (java.io.IOException ie) {
-                throw new TemplateProcessorException(
-                        "Template directory configuring error: " + ie);
-            }
-        } else {
-            throw new TemplateProcessorException(
-                    "Template directory does not exist: "
-                            + templateDirFile.getAbsolutePath());
-        }
-        try {
-            Template template = cfg.getTemplate(templateFile);
-            Map<String, Object> templateMap = getTemplateMap(sourceList);
-            template.process(templateMap, new FileWriter(outputFile));
-        } catch (freemarker.core.InvalidReferenceException ivx) {
-            throw new TemplateProcessorException(
-                    "Invalid reference in config: " + ivx);
-        } catch (freemarker.template.TemplateException e2) {
-            throw new TemplateProcessorException("TemplateException: " + e2);
-        } catch (java.io.IOException e) {
-            throw new TemplateProcessorException(
-                    "I/O Error during template conversion: " + e);
-        }
-    }
-}
--- a/buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/TemplateProcessorException.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-
-
-package com.nokia.helium.core;
-
-/**
- * Template Exception handler.
- * 
- */
-public class TemplateProcessorException extends RuntimeException {
-    
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * Default constructor.
-     * @param message the error message.
-     */
-    public TemplateProcessorException(String message) {
-        super(message);
-    }
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/XMLTemplateSource.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
- 
-
-package com.nokia.helium.core;
-
-import java.io.File;
-
-/**
- * HlmAntlib exception handling class
- */
-public class XMLTemplateSource extends AbstractTemplateInputSource
-{
-    private File sourceLocation;
-
-    /**
-    * Constructor
-    * 
-    * @param String
-    *            Name of template
-    * @param String
-    *            location of template 
-    */
-    public XMLTemplateSource(String name, File location) {
-        setSourceName(name);
-        sourceLocation = location;
-    }
-    
-    /**
-    * Get source location
-    * 
-    * @return 
-    *            source location. 
-    */
-    public File getSourceLocation() {
-        return sourceLocation;
-    }
-}
--- a/buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/ant/HeliumExecutor.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,270 +0,0 @@
-/*
- * Copyright (c) 2007-2008 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:  
- *
- */
-
-package com.nokia.helium.core.ant;
-
-import java.util.StringTokenizer;
-import java.util.Vector;
-import java.util.Enumeration;
-import java.util.List;
-import java.io.BufferedReader;
-import java.io.FileWriter;
-import java.io.InputStream;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.net.JarURLConnection;
-import java.net.URL;
-import java.util.ArrayList;
-
-import org.apache.tools.ant.taskdefs.ImportTask;
-import org.apache.tools.ant.helper.DefaultExecutor;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Target;
-import org.apache.tools.ant.Location;
-import com.nokia.helium.core.ant.types.*;
-
-import java.util.HashMap;
-import java.util.jar.JarEntry;
-import java.util.jar.JarFile;
-import org.apache.log4j.Logger;
-
-/**
- * This class implements a flexible Ant Executor which allows dynamic discovery
- * and automatic loading of new features. It also supports pre/post actions to
- * be executed.
- */
-public class HeliumExecutor extends DefaultExecutor {
-    private HashMap<String, Vector<HlmDefinition>> preOperations = new HashMap<String, Vector<HlmDefinition>>();
-    private HashMap<String, Vector<HlmDefinition>> postOperations = new HashMap<String, Vector<HlmDefinition>>();
-    private HashMap<String, Vector<HlmExceptionHandler>> exceptionHandlers = new HashMap<String, Vector<HlmExceptionHandler>>();
-    private Project project;
-    private Logger log = Logger.getLogger(HeliumExecutor.class);
-
-    /**
-     * Override the default Ant executor.
-     * 
-     * @param project
-     *            Object of the project
-     * @param targetNames
-     *            Array of target names to execute
-     * 
-     */
-    public void executeTargets(Project project, String[] targetNames) {
-        this.project = project;
-        log.debug("Running executeTargets");
-        BuildException failure = null;
-        try {
-            loadModules(project);
-            doOperations(preOperations, project, targetNames);
-            super.executeTargets(project, targetNames);
-        } catch (BuildException e) {
-            // Saving current issue
-            // We are Ignoring the errors as no need to fail the build.
-            failure = e;
-        }
-
-        try {
-            doOperations(postOperations, project, targetNames);
-        } catch (BuildException e) {
-            // Treating possible new issues...
-            if (failure != null) {
-                failure = new BuildException(e.toString() + failure.toString());
-            } else {
-                failure = e;
-            }
-        }
-        // Propagating any raised issues.
-        if (failure != null) {
-            handleExceptions(project, failure);
-            throw failure;
-        }
-    }
-
-    /**
-     * Loading all the discovered modules.
-     * 
-     * @param module
-     * @param prj
-     */
-    private void loadModules(Project prj) {
-        List<File> moduleList = loadAvailableModules();
-        for (File moduleName : moduleList) {
-            loadModule(moduleName, prj);
-        }
-    }
-
-    /**
-     * Load a specific module.
-     * 
-     * @param moduleLib
-     * @param prj
-     */
-    private void loadModule(File moduleLib, Project prj) {
-        String file = getHlmAntLibFile(moduleLib);
-        if (file == null) {
-            return;
-        }
-        log.debug("Loading " + moduleLib.getName());
-        ImportTask task = new ImportTask();
-        Target target = new Target();
-        target.setName("");
-        target.setProject(prj);
-        task.setOwningTarget(target);
-        task.setLocation(new Location(file));
-        task.setFile(file);
-        task.setProject(prj);
-        task.execute();
-        String moduleName = getModuleName(moduleLib);
-        Object refObject = prj.getReference(moduleName + ".list");
-
-        if (refObject == null) {
-            log.debug(moduleName + ".list not found");
-        }
-        if (refObject != null && refObject instanceof HlmDefList) {
-            HlmDefList defList = (HlmDefList) refObject;
-            Vector<HlmDefinition> tempDefList = new Vector<HlmDefinition>(
-                    defList.getPreDefList());
-            if (tempDefList != null) {
-                preOperations.put(moduleName, tempDefList);
-            }
-            Vector<HlmDefinition> tempPostDefList = new Vector<HlmDefinition>(
-                    defList.getPostDefList());
-            if (tempPostDefList != null) {
-                postOperations.put(moduleName, tempPostDefList);
-            }
-            Vector<HlmExceptionHandler> tempExceptionDefList = defList
-                    .getExceptionHandlerList();
-            if (tempExceptionDefList != null) {
-                exceptionHandlers.put(moduleName, tempExceptionDefList);
-            }
-            log.debug("loadModule:pre-opsize"
-                    + preOperations.size());
-            log.debug("loadModule:post-opsize"
-                    + postOperations.size());
-            log.debug("loadModule:exception-opsize"
-                    + exceptionHandlers.size());
-            log.debug("Checking " + moduleLib);
-        }
-    }
-
-    /**
-     * Search for helium.antlib.xml under the module Jar.
-     * 
-     * @param moduleLib
-     * @return
-     * @throws IOException
-     */
-    protected URL findHeliumAntlibXml(File moduleLib) throws IOException {
-        JarFile jarFile = new JarFile(moduleLib);
-        Enumeration<JarEntry> jee = jarFile.entries();
-        while (jee.hasMoreElements()) {
-            JarEntry je = jee.nextElement();
-            if (je.getName().endsWith("/helium.antlib.xml")) {
-                return new URL("jar:" + moduleLib.toURI().toString() + "!/"
-                        + je.getName());
-            }
-        }
-        return null;
-    }
-
-    /**
-     * Retrieve the found helium.antlib.xml. TODO improve if possible without
-     * extracting the file.
-     * 
-     * @param moduleLib
-     * @return
-     */
-    private String getHlmAntLibFile(File moduleLib) {
-        log.debug("[HeliumExecutor] Checking " + moduleLib);
-        try {
-            URL url = findHeliumAntlibXml(moduleLib);
-            if (url == null)
-                return null;
-            log.debug("Getting " + url);
-
-            JarURLConnection jarConnection = (JarURLConnection) url
-                    .openConnection();
-            JarEntry jarEntry = jarConnection.getJarEntry();
-            JarFile jarFile = new JarFile(moduleLib);
-            InputStream is = jarFile.getInputStream(jarEntry);
-            InputStreamReader isr = new InputStreamReader(is);
-            BufferedReader reader = new BufferedReader(isr);
-            File file = File.createTempFile("helium", "antlib.xml");
-            file.deleteOnExit();
-            FileWriter writer = new FileWriter(file);
-            String line;
-            while ((line = reader.readLine()) != null) {
-                writer.write(line + "\n");
-            }
-            writer.close();
-            reader.close();
-            log.debug("Temp file " + file.getAbsolutePath());
-            return file.getAbsolutePath();
-        } catch (Exception ex) {
-            log.error("Error: " + ex.getMessage(), ex);
-            return null;
-        }
-    }
-
-    private void doOperations(
-            HashMap<String, Vector<HlmDefinition>> operations, Project prj,
-            String[] targetNames) {
-        log.debug("doOperations: start");
-        for (String moduleName : operations.keySet()) {
-            log.debug("doOperations: module" + moduleName);
-            for (HlmDefinition definition : operations.get(moduleName)) {
-                definition.execute(prj, moduleName, targetNames);
-            }
-        }
-    }
-
-    private void handleExceptions(Project prj, Exception e) {
-        for (String moduleName : this.exceptionHandlers.keySet()) {
-            log.debug("handleExceptions: module" + moduleName);
-            for (HlmExceptionHandler exceptionHandler : this.exceptionHandlers
-                    .get(moduleName)) {
-                exceptionHandler.handleException(prj, moduleName, e);
-            }
-        }
-    }
-
-    private String getModuleName(File moduleLib) {
-        String name = moduleLib.getName();
-        return name.substring(0, name.lastIndexOf('.'));
-    }
-
-    private List<File> loadAvailableModules() {
-        List<File> moduleList = new ArrayList<File>();
-        String classpathString = System.getProperty("java.class.path");
-        StringTokenizer tokenizier = new StringTokenizer(classpathString,
-                File.pathSeparator);
-        String token;
-        while (tokenizier.hasMoreTokens()) {
-            token = (String) tokenizier.nextToken();
-            if (new File(token).isFile() && token.endsWith(".jar")) {
-                moduleList.add(new File(token));
-            }
-        }
-        return moduleList;
-    }
-
-    protected Project getProject() {
-        return project;
-    }
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/ant/HlmDefinition.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-
-package com.nokia.helium.core.ant;
-
-import org.apache.tools.ant.Project;
-
-/**
- * This interface defines the API of an HeliumExecutor task. 
- */
-public interface HlmDefinition {
-    
-    /**
-     * This method will implement the action to be performed by the 
-     * HeliumExecutor plugin. 
-     * @param prj
-     * @param module
-     */
-    void execute(Project prj, String module, String[] targetNames);
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/ant/HlmExceptionHandler.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-
-package com.nokia.helium.core.ant;
-
-import org.apache.tools.ant.Project;
-
-/**
- * This interface defines the API of an HeliumExecutor task. 
- */
-public interface HlmExceptionHandler {
-    
-    /**
-     * This method will implement the action to be performed by the 
-     * HeliumExecutor plugin. 
-     * @param project
-     * @param module
-     * @param exception
-     */
-    void handleException(Project project, String module, Exception exception);
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/ant/VariableIFImpl.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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: 
-*
-*/
- 
-package com.nokia.helium.core.ant;
-
-import org.apache.tools.ant.types.DataType;
-import com.nokia.helium.core.ant.types.Variable;
-import java.util.Collection;
-
-/**
- * Interface to get the list of variables of type VariableSet
- */
-public class VariableIFImpl extends DataType 
-{
-
-    
-    /**
-     * Get the name of the variable.
-     * @return name.
-     */
-    public Collection<Variable> getVariables() {
-        //Implemented by sub class
-        return null;
-    }
-
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/ant/VariableInterface.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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: 
-*
-*/
- 
-package com.nokia.helium.core.ant;
-
-import com.nokia.helium.core.ant.types.Variable;
-import java.util.Collection;
-
-/**
- * Interface to get the list of variables of type VariableSet
- */
-public interface VariableInterface
-{
-
-    
-    /**
-     * Get the name of the variable.
-     * @return name.
-     */
-    Collection<Variable> getVariables();
-
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/ant/antlib.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : antlib.xml 
-Part of     : Helium AntLib
-
-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:
-
-============================================================================
--->
-<antlib>
-    <!-- Task definition -->
-    <taskdef name="path2file" classname="com.nokia.helium.core.ant.taskdefs.SerializePathTask"/>
-    <taskdef name="countSeverity" classname="com.nokia.helium.core.ant.taskdefs.XMLLogCount"/>
-    <taskdef name="getVariableValue" classname="com.nokia.helium.core.ant.taskdefs.GetValueFromVariableSet"/>
-    <!-- Type definition -->
-    <typedef name="hasSeverity" classname="com.nokia.helium.core.ant.conditions.XMLLogCondition"/>
-    <typedef name="ldapauthenticate" classname="com.nokia.helium.core.ant.taskdefs.ValidateUserLogin" />
-
-    <typedef name="arg" classname="com.nokia.helium.core.ant.types.Variable"/>
-    <typedef name="argSet" classname="com.nokia.helium.core.ant.types.VariableSet"/>
-
-    <!-- Type definition -->
-    <typedef name="deflist" classname="com.nokia.helium.core.ant.types.HlmDefList"/>
-    <typedef name="importdef" classname="com.nokia.helium.core.ant.types.HlmImportDef"/>
-    <typedef name="listenerdef" classname="com.nokia.helium.core.ant.types.HlmListenerDef"/> 
-</antlib>
--- a/buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/ant/conditions/XMLLogCondition.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,143 +0,0 @@
-/*
- * Copyright (c) 2007-2008 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:  
- *
- */
-
-package com.nokia.helium.core.ant.conditions;
-
-import java.io.File;
-import org.apache.tools.ant.BuildException;
-import javax.xml.parsers.SAXParser;
-import javax.xml.parsers.SAXParserFactory;
-import org.xml.sax.*;
-import org.xml.sax.helpers.*;
-import com.nokia.helium.core.ant.types.ConditionType;
-
-/**
- * This class implements a Ant Condition which report true if it finds any
- * matching severity inside an XML log.
- * 
- * Example:
- * <pre>
- * &lt;target name=&quot;fail-on-build-error&quot;&gt;
- *   &lt;fail message=&quot;The build contains errors&quot;&gt;
- *     &lt;hlm:hasSeverity file=&quot;build_log.log.xml&quot; severity=&quot;error&quot;/&gt;
- *   &lt;/fail&gt;
- * &lt;/target&gt;
- * </pre>
- * 
- * The condition will eval as true if the build_log.log.xml contains any error message in the log.
- * 
- * @ant.type name="hasSeverity" category="Core"
- */
-public class XMLLogCondition extends ConditionType {
-
-    // The severity to count
-    private String severity;
-    private String logRegexp;
-    private File fileName;
-
-    /**
-     * Sets which severity will be counted.
-     * 
-     * @param severity
-     * @ant.required
-     */
-    public void setSeverity(String severity) {
-        this.severity = severity;
-    }
-
-    public void setFile(File file) {
-        fileName = file;
-    }
-
-    /**
-     * Regular expression which used to match a specific log filename.
-     * 
-     * @param regex
-     * @ant.not-required
-     */
-    public void setLogMatcher(String regex) {
-        this.logRegexp = regex;
-    }
-
-    /**
-     * Get the number of a particular severity.
-     * 
-     * @return the number of a particular severity.
-     */
-    public int getSeverity() {
-        int messageCount = 0;
-        if (fileName == null || !fileName.exists()) {
-            //this.log("Error: Log file does not exist " + fileName);
-            return -1;
-        }
-        if (severity == null)
-            throw new BuildException("'severity' attribute is not defined");
-
-        //this.log("Looking for severity '" + severity + "' under '" + fileName.getAbsolutePath() + "'");
-        SAXParserFactory factory = SAXParserFactory.newInstance();
-        try {
-            SAXParser saxParser = factory.newSAXParser();
-            MessageHandler handler = new MessageHandler();
-            saxParser.parse(fileName, handler);
-            this.log("Found " + handler.getMessageCount() + " " + severity
-                    + "(s).");
-            messageCount += handler.getMessageCount();
-        } catch (Exception exc) {
-            throw new BuildException(exc);
-        }
-        return messageCount;
-    }
-
-    /**
-     * This method open the defined file and count the number of message tags
-     * with their severity attribute matching the configured one.
-     * 
-     * @return if true if message with the defined severity have been found.
-     */
-    public boolean eval() {
-        int severity = getSeverity();
-        if (severity < 0) {
-            return false;
-        }
-        return severity > 0;
-    }
-
-    /**
-     * Implements a SAX handler specialized in counting message tag with a
-     * specific severity.
-     */
-    class MessageHandler extends DefaultHandler {
-
-        private int count;
-
-        public MessageHandler() {
-        }
-
-        @Override
-        public void startElement(String uri, String localName, String name,
-                Attributes attributes) throws SAXException {
-            super.startElement(uri, localName, name, attributes);
-            if (name.equals(severity) && count == 0) {
-                count = Integer.valueOf(attributes.getValue("count"));
-            }
-        }
-
-        public int getMessageCount() {
-            return count;
-        }
-    }
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/ant/helium.antlib.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : libs.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="libs-core" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
-    <description>
-        Ant task definition declarations.
-    </description>
-    <taskdef resource="com/nokia/helium/core/ant/antlib.xml" uri="http://www.nokia.com/helium"/>
-    <typedef name="finaltargetdef" classname="com.nokia.helium.core.ant.types.HlmFinalTargetDef"/> 
-
-    <hlm:deflist id="helium-core.list">
-        <finaltargetdef/>
-    </hlm:deflist>
-</project>
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/ant/taskdefs/AntCall.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-
-package com.nokia.helium.core.ant.taskdefs;
-
-import org.apache.tools.ant.taskdefs.Ant;
-import org.apache.tools.ant.taskdefs.CallTarget;
-
-/**
- * This task extends current AntCall task by
- * supporting any kind of Reference object.
- * 
- * @ant.task name="antcall" category="Core"
- */
-public class AntCall extends CallTarget {
-
-    /**
-     * Add a Reference object.
-     * @param ref the reference object.
-     */
-    public void add(Ant.Reference ref) {
-        this.addReference(ref);
-    }
-
-}
--- a/buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/ant/taskdefs/GetValueFromVariableSet.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,126 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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: 
-*
-*/
-
-package com.nokia.helium.core.ant.taskdefs;
-
-import org.apache.tools.ant.BuildException;
-import java.util.Vector;
-import java.util.Collection;
-import com.nokia.helium.core.ant.VariableIFImpl;
-import org.apache.tools.ant.Task;
-import com.nokia.helium.core.ant.types.Variable;
-
-
-/**
- * To retrive a variable value from a collection of variable set based on name, which contains property-value in pair.
- *  
- * <pre>
- * Example:
- * 
- * &lt;hlm:argSet id="test.variableSet"&gt;
- * &lt;variable name="v1" value="the_value_1"/&gt;
- *     &lt;variable name="v2" value="the_value_2"/&gt;
- *      &lt;variable name="v3" value="the_value_3"/&gt;
- * &lt;/hlm:argSet&gt;
- *       
- *  &lt;hlm:getVariableValue name="v3" property="v1.value"&gt;
- * &lt;hlm:argSet refid="test.variableSet"/&gt;
- * &lt;/hlm:getVariableValue&gt;
- * </pre>
- * @ant.task name="getVariableValue"
- */
-public class GetValueFromVariableSet extends Task {
-    private String name;
-    private String property;
-    private boolean failOnError = true;
-    
-   private Vector<VariableIFImpl> variableIntefaces = new Vector<VariableIFImpl>();
-    
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    /**
-     * Helper function to set failonerror attribute for the task. 
-     * @param failStatus, if true will fail the build if no variable is found for 
-     * matching name.
-     */
-    public void setFailOnError(boolean failStatus) {
-        failOnError = failStatus;
-    }
-
-    /**
-     * Helper function to store the name of the property where the value to be stored
-     * @param property name of the property where the result to be stored
-     */
-    public void setProperty(String property) {
-        this.property = property;
-    }
-
-    /**
-     * Helper function to create the VariableIFImpl object. 
-     * @return created VariableIFImpl instance
-     */
-    public VariableIFImpl createVariableIFImpl() {
-        VariableIFImpl var = new VariableIFImpl();
-        add(var);
-        return var;
-    }
-
-    
-    /**
-     * Helper function to add the newly created variable set. Called by ant.
-     * @param vs variable set to be added.
-     */
-    public void add(VariableIFImpl vs) {
-        variableIntefaces.add(vs);
-    }
-
-    public VariableIFImpl getVariableInterface() {
-        if (variableIntefaces.isEmpty()) {
-            throw new BuildException("variable interface cannot be null");
-        }
-        if (variableIntefaces.size() > 1 ) {
-            throw new BuildException("maximum one variable interface can be set");
-        }
-        return variableIntefaces.elementAt(0);
-    }
-    
-
-    /**
-     * Task to get the name / value pair
-     * @return return the name / value pair for the variable set.
-     */
-    public void execute() {
-        if (name == null)
-            throw new BuildException("'name' attribute has not been defined.");
-        if (property == null)
-            throw new BuildException(
-                    "'property' attribute has not been defined.");
-        VariableIFImpl varInterface = getVariableInterface();
-        Collection<Variable> variables = varInterface.getVariables();
-        for (Variable var : variables) {
-            if (var.getName().equals(name)) {
-                getProject().setProperty(property, var.getValue());
-                return;
-            }
-        }
-        if (failOnError) {
-            throw new BuildException("Could not find '" + name + "' variable.");
-        }
-    }
-}
--- a/buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/ant/taskdefs/SerializePathTask.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,137 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-
-package com.nokia.helium.core.ant.taskdefs;
-
-import java.io.*;
-import java.util.Vector;
-import java.util.Iterator;
-
-import org.apache.tools.ant.Task;
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.types.Path;
-
-/**
- * This class implements a Path de/serializer which can dumps the list of files
- * to a UTF-8 file or retrieve a list path from a file into a path datatype.
- *
- * Examples:
- * <pre>
- * &lt;target name=&quot;serialize&quot;&gt;
- *   &lt;hlm:path2file file=&quot;output.txt&quot;&gt;
- *     &lt;path&gt;
- *         &lt;pathelement path=&quot;/temp/filename.ext&quot;/&gt;
- *     &lt;/path&gt;
- *   &lt;/hlm:path2file&gt;
- * &lt;/target&gt;
- * </pre>
- * 
- * The execution of the <code>serialize</code> task will produce a file called output.txt that will contains
- * a line referencing the /temp/filename.ext.
-
- * <pre>
- * &lt;target name=&quot;deserialize&quot;&gt;
- *   &lt;hlm:path2file reference=&quot;output.ref&quot;&gt; file=&quot;output.txt&quot;/&gt;
- * &lt;/target&gt;
- * </pre>
- * 
- * The execution of the <code>deserialize</code> task will create a path datatype that will
- * contains a pathelement pointing on <code>/temp/filename.ext.</code>
- * 
- * @ant.task name="path2file" category="Core"
- */
-public class SerializePathTask extends Task {
-
-    private Vector<Path> paths = new Vector<Path>();
-    private File filename;
-    private String reference;
-
-    /**
-     * Add path datatype to the task.
-     * 
-     * @param path
-     */
-    public void add(Path path) {
-        paths.add(path);
-    }
-
-    /**
-     * Set reference attribute.
-     * 
-     * @param reference
-     */
-    public void setReference(String reference) {
-        this.reference = reference;
-    }
-
-    /**
-     * Set file attribute. It is a mandatory setting.
-     * 
-     * @param filename
-     */
-    public void setFile(File filename) {
-        this.filename = filename;
-    }
-
-    /**
-     * Excecute the task. If filename is defined and reference is not, it will
-     * try to dump the paths content into a file. Else if a filename and a
-     * reference is defined it will covert each line of the file into a
-     * pathelement of a path datatype.
-     */
-    public void execute() {
-        if (filename == null) {
-            throw new BuildException("'file' attribute must be defined");
-        }
-        if (filename != null && reference == null) {
-            this.log("Dumping paths into file " + filename);
-            try {
-                OutputStreamWriter os = new OutputStreamWriter(
-                        new FileOutputStream(filename), "UTF8");
-                for (Iterator<Path> ipath = paths.iterator(); ipath.hasNext();) {
-                    Path path = ipath.next();
-                    String[] plist = path.list();
-                    for (int i = 0; i < plist.length; i++) {
-                        os.write(plist[i] + "\n");
-                    }
-                }
-                os.close();
-            } catch (Exception exc) {
-                throw new BuildException(exc);
-            }
-        } else if (filename != null && reference != null) {
-            this.log("Converting " + filename + " content into path.");
-            try {
-                Path path = new Path(getProject());
-                BufferedReader is = new BufferedReader(new InputStreamReader(
-                        new FileInputStream(filename), "UTF-8"));
-                String line = null;
-                while ((line = is.readLine()) != null) {
-                    path.createPathElement().setPath(line);
-                }
-                this.log("Creating reference " + reference + ".");
-                getProject().addReference(reference, path);
-            } catch (Exception exc) {
-                throw new BuildException(exc);
-            }
-        } else {
-            new BuildException("The task is not configured properly.");
-        }
-
-    }
-}
--- a/buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/ant/taskdefs/ValidateUserLogin.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,239 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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: 
-*
-*/
- 
-package com.nokia.helium.core.ant.taskdefs;
-
-import org.apache.tools.ant.Task;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.BuildException;
-import javax.naming.*;
-import javax.naming.directory.*;
-import java.util.Hashtable;
-import org.apache.tools.ant.taskdefs.condition.Condition;
-
-/**
- * Task is to validate noe user with LDAP server.
- * <pre>
- * Usage: &lt;hlm:ldapauthenticate url="${email.ldap.server}" 
-                                rootdn="${email.ldap.rootdn}" 
-                                searchdn="${ldap.organization.unit.rootdn}, ${ldap.people.rootdn}" 
-                                filter="uid=${env.USERNAME}" 
-                                outputproperty="is.authentication.sucess" 
-                                key="employeeNumber"
-                                password="${noe.password}"/&gt;
-   </pre>
-   <pre>
- * Usage:   &lt;condition property="is.authentication.sucess" &gt;
-                &lt;hlm:ldapauthenticate url="${email.ldap.server}" 
-                                rootdn="${email.ldap.rootdn}" 
-                                searchdn="${ldap.organization.unit.rootdn}, ${ldap.people.rootdn}" 
-                                filter="uid=${env.USERNAME}" 
-                                key="employeeNumber"
-                                password="${noe.password}"/&gt;
-            &lt;condition/&gt;
-   </pre>
-   @ant.task name="ldapauthenticate" category="Core" 
- */
-public class ValidateUserLogin extends Task implements Condition
-{
-    private String url;
-    private String rootdn;
-    private String filter;
-    private String key;
-    private String property;
-    private String searchdn;
-    private String password;
-        
-    public void execute()
-    {
-        
-        if (property == null)
-            throw new BuildException("'property' attribute is not defined");
-        validateParameters(url, rootdn, filter, key, searchdn, password);
-        log("Authenticating the user...");
-        if (authenticateUser(url, searchUser(url, rootdn, filter, key, searchdn))) {
-            getProject().setProperty(property, "true");
-        }
-        else {
-            getProject().setProperty(property, "false");
-        }
-    }
-    
-    public boolean eval() {
-        
-        validateParameters(url, rootdn, filter, key, searchdn, password);
-        return authenticateUser(url, searchUser(url, rootdn, filter, key, searchdn)); 
-         
-    }
-    
-    public String searchUser(String url, String rootdn, String filter, String key, String searchdn) {
-        
-        String userSearchDN = null;
-        // Set up environment for creating initial context
-        Hashtable<String, String> env = new Hashtable<String, String>();
-        env.put(Context.INITIAL_CONTEXT_FACTORY,
-                "com.sun.jndi.ldap.LdapCtxFactory");
-        env.put(Context.PROVIDER_URL, url + "/" + rootdn);
-
-        // Create initial context
-        env.put(Context.SECURITY_AUTHENTICATION, "simple");
-        DirContext ctx = null;
-        NamingEnumeration results = null;
-        try {
-            ctx = new InitialDirContext(env);
-            SearchControls controls = new SearchControls();
-            controls.setSearchScope(SearchControls.SUBTREE_SCOPE);
-            results = ctx.search("", filter, controls);
-            while (results.hasMore()) {
-                SearchResult searchResult = (SearchResult) results.next();
-                Attributes attributes = searchResult.getAttributes();
-                Attribute attr = attributes.get(key);
-                userSearchDN = key + "=" + (String) attr.get() + ", " + searchdn + ", " + rootdn;
-            }
-        } catch (NamingException e) {
-            e.printStackTrace(); 
-            throw new BuildException("LDAP Naming exception"); 
-        }
-        return userSearchDN;
-    }
-    
-    public void validateParameters(String url, String rootdn, String filter, String key, String searchdn, String password) {
-        
-        if (url == null)
-            throw new BuildException("'url' attribute is not defined");
-        if (rootdn == null)
-            throw new BuildException("'rootdn' attribute is not defined");
-        if (filter == null)
-            throw new BuildException("'filter' attribute is not defined");
-        if (key == null)
-            throw new BuildException("'key' attribute is not defined");
-        if (searchdn == null)
-            throw new BuildException("'searchdn' attribute is not defined");
-        if (password == null)
-            throw new BuildException("'password' attribute is not defined");
-    }
-    
-    public boolean authenticateUser(String ldapurl, String rooTdn) {
-    
-        Hashtable<String, String> env = new Hashtable<String, String>(11);
-        env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
-        env.put(Context.PROVIDER_URL, ldapurl);
-        env.put(Context.SECURITY_AUTHENTICATION, "simple");
-        env.put(Context.SECURITY_PRINCIPAL, rooTdn);
-        env.put(Context.SECURITY_CREDENTIALS, password);
-        try {
-            DirContext authContext = new InitialDirContext(env);
-            return true;
-        } catch (NamingException e) {
-            // We are Ignoring the errors as no need to fail the build.
-            log("Not able to validate the user. " + e.getMessage(), Project.MSG_DEBUG);
-            return false;  
-        }
-
-    }
-    public String getUrl() 
-    {
-        return url;
-    }
-    /**
-     * ldap URL
-     * @ant.required
-     */
-    public void setUrl(String url) 
-    {
-        this.url = url;
-    }
-    
-
-    public String getRootdn() 
-    {
-        return rootdn;
-    }
-    /**
-     * user password to authenticate
-     * @ant.required
-     */
-    public void setpassword(String password) 
-    {
-        this.password = password;
-    }
-    
-    public String getpassword() 
-    {
-        return password;
-    }
-    /**
-     * ldap root distinguished name to search user.
-     * @ant.required
-     */
-    public void setRootdn(String rootdn) 
-    {
-        this.rootdn = rootdn;
-    }
-    
-    public String getsearchdn() 
-    {
-        return searchdn;
-    }
-    /**
-     * ldap distinguished name to search user
-     * @ant.required
-     */
-    public void setsearchdn(String searchdn) 
-    {
-        this.searchdn = searchdn;
-    }
-
-    public String getFilter() 
-    {
-        return filter;
-    }
-    /**
-     * object name to search in the ldap.
-     * @ant.required
-     */
-    public void setFilter(String filter) 
-    {
-        this.filter = filter;
-    }
-
-    public String getOutputProperty() 
-    {
-        return property;
-    }
-    /**
-     * output property to set if the user found.
-     * @ant.required
-     */
-    public void setOutputProperty(String property) 
-    {
-        this.property = property;
-    }
-
-    public String getKey() 
-    {
-        return key;
-    }
-    /**
-     * key to search the user information
-     * @ant.required
-     */
-    public void setKey(String key) 
-    {
-        this.key = key;
-    }
-}
--- a/buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/ant/taskdefs/XMLLogCount.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,90 +0,0 @@
-/*
- * Copyright (c) 2007-2008 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:  
- *
- */
-
-package com.nokia.helium.core.ant.taskdefs;
-
-import java.io.File;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Task;
-import com.nokia.helium.core.ant.conditions.XMLLogCondition;
-
-/**
- * This class sets a property to the number of matching severity inside a XML log.
- * 
- * @ant.task name="countSeverity" category="Core"
- */
-public class XMLLogCount extends Task {
-
-    private File fileName;
-    private String severity;
-    private String logRegexp;
-    private String property;
-
-    /**
-     * File to be parsed.
-     * 
-     * @param filename
-     * @ant.required
-     */
-    public void setFile(File filename) {
-        fileName = filename;
-    }
-
-    /**
-     * Defines the severity name to be counted.
-     * 
-     * @param severity
-     * @ant.required
-     */
-    public void setSeverity(String severity) {
-        this.severity = severity;
-    }
-
-    /**
-     * Name of the property to be set.
-     * @param property the property name
-     * @ant.required
-     */
-    public void setProperty(String property) {
-        this.property = property;
-    }
-
-    /**
-     * Regular expression which used to match a specific log filename.
-     * @param regex
-     * @ant.not-required
-     */
-    public void setLogMatcher(String regex) {
-        this.logRegexp = regex;
-    }
-    
-    /**
-     *  Execute the task. Set the property with number of severities.  
-     * @throws BuildException
-     */
-    public void execute() {
-        if (property == null)
-            throw new BuildException("'property' attribute is not defined");
-        
-        XMLLogCondition cond = new XMLLogCondition();
-        cond.setFile(fileName);
-        cond.setLogMatcher(logRegexp);
-        cond.setSeverity(severity);
-        getProject().setNewProperty(property, "" + cond.getSeverity());
-    }
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/ant/types/ConditionType.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-
-package com.nokia.helium.core.ant.types;
-
-import org.apache.tools.ant.ProjectComponent;
-import org.apache.tools.ant.taskdefs.condition.Condition;
-
-/**
- * Base class for conditions.
- */
-public class ConditionType extends ProjectComponent implements Condition {
-    
-    public boolean eval() {
-        return false;
-    }
-}
--- a/buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/ant/types/FallbackReference.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,65 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-
-package com.nokia.helium.core.ant.types;
-
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.taskdefs.Ant;
-
-/**
- * This DataType implements a reference fallback.
- * If refid is not defined then the implementation,
- * can fallback on a defaultRefid.  
- *
- * @ant.type name="fallbackReference" category="Core"
- */
-public class FallbackReference extends Ant.Reference {
-
-    private String defaultRefid;
-
-    /**
-     * Set the refid if it is defined, else it uses the defaultRefid
-     * @param id
-     */
-    public void setRefid(String id) {
-        getProject().log("Setting reference:  " + id, Project.MSG_DEBUG);
-        super.setRefId(id);
-        if (getProject().getReference(super.getRefId()) == null
-                && defaultRefid != null) {
-            super.setRefId(defaultRefid);
-        }
-    }
-
-    /**
-     * Set the default refid if it refid doesn't exists then
-     * it configures the reference to use the defaultRefid. 
-     * @param id
-     */
-    public void setDefaultRefid(String defaultRefid) {
-        getProject().log("Setting default reference: " + defaultRefid,
-                Project.MSG_DEBUG);
-        this.defaultRefid = defaultRefid;
-        if (getProject().getReference(super.getRefId()) == null) {
-            getProject().log(
-                    "Reference not defined using default reference: "
-                            + defaultRefid, Project.MSG_DEBUG);
-            setRefId(defaultRefid);
-        }
-    }
-
-}
--- a/buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/ant/types/HlmDefList.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,108 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-
-package com.nokia.helium.core.ant.types;
-
-import java.util.Vector;
-import org.apache.tools.ant.types.DataType;
-import com.nokia.helium.core.ant.HlmExceptionHandler;
-
-/**
- * 
- */
-public class HlmDefList extends DataType {
-
-    private Vector<HlmPreDefImpl> preDefList = new Vector<HlmPreDefImpl>();
-    private Vector<HlmPostDefImpl> postDefList = new Vector<HlmPostDefImpl>();
-    private Vector<HlmExceptionHandler> exceptionHandlerList = new Vector<HlmExceptionHandler>();
-
-    /**
-     * Creates an empty hlm post-action definition and adds it to the list.
-     */
-    public HlmPreDefImpl createHlmPreDefImpl() {
-        HlmPreDefImpl def = new HlmPreDefImpl();
-        add(def);
-        return (HlmPreDefImpl) def;
-    }
-
-    /**
-     * Creates an empty hlm post-action definition and adds it to the list.
-     */
-    public HlmPostDefImpl createHlmPostDefImpl() {
-        HlmPostDefImpl def = new HlmPostDefImpl();
-        add(def);
-        return (HlmPostDefImpl) def;
-    }
-
-    /**
-     * Add a given variable to the list
-     * 
-     * @param var
-     *            variable to add
-     */
-    public void add(HlmPreDefImpl definition) {
-        if (definition != null) {
-            preDefList.add(definition);
-        }
-    }
-
-    /**
-     * Add a post-action to the list.
-     */
-    public void add(HlmPostDefImpl definition) {
-        if (definition != null) {
-            postDefList.add(definition);
-        }
-    }
-    
-    /**
-     * Add a exception handler to the list.
-     */
-    public void add(HlmExceptionHandler exceptionHandler) {
-        if (exceptionHandler != null) {
-            exceptionHandlerList.add(exceptionHandler);
-        }
-    }
-
-    /**
-     * Get the pre-action list.
-     * 
-     * @return a vector containing all the pre-actions
-     */
-    public Vector<HlmPreDefImpl> getPreDefList() {
-        return preDefList;
-    }
-
-    /**
-     * Get the post-action list.
-     * 
-     * @return a vector containing all the post-actions
-     */
-    public Vector<HlmPostDefImpl> getPostDefList() {
-        return postDefList;
-    }
-    
-    /**
-     * Get the exception handler list.
-     * 
-     * @return a vector containing all the exception handlers
-     */
-    public Vector<HlmExceptionHandler> getExceptionHandlerList() {
-        return exceptionHandlerList;
-    }
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/ant/types/HlmFinalTargetDef.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
- 
-package com.nokia.helium.core.ant.types;
-
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.Target;
-import java.util.Hashtable;
-import org.apache.log4j.Logger;
-
-
-/**
- * Class to execute the final target as post operation.
- */
-public class HlmFinalTargetDef extends HlmPostDefImpl
-{
-    private Logger log = Logger.getLogger(HlmFinalTargetDef.class);
-    
-    /**
-     * This post action will execute the final target if any to be executed.
-     * @param prj
-     * @param module
-     * @param targetNames
-     * 
-     */
-    public void execute(Project prj, String module, String[] targetNames) {
-        String finalTargetName = prj.getProperty("hlm.target.final");
-        log.debug("Calling final target" + finalTargetName);
-        if (finalTargetName != null) {
-            Hashtable targets = prj.getTargets();
-            Target finalTarget = (Target)targets.get(finalTargetName);
-            if (finalTarget == null) {
-                log.info("The final target : " + finalTargetName + " not available skipping");
-                return;
-            }
-            finalTarget.execute();
-        }
-    }
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/ant/types/HlmImportDef.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-
-package com.nokia.helium.core.ant.types;
-
-import org.apache.log4j.Logger;
-import org.apache.tools.ant.taskdefs.ImportTask;
-import org.apache.tools.ant.Target;
-import org.apache.tools.ant.Location;
-import org.apache.tools.ant.Project;
-
-import java.io.File;
-
-/**
- * This class implements an Executor importer pre-action.
- * 
- * @ant.type name="importdef" category="Core"
- */
-public class HlmImportDef extends HlmPreDefImpl {
-
-    private static Logger log = Logger.getLogger(HlmImportDef.class);
-    
-    private File file ;
-
-    public void setFile(File file) {
-        this.file = file;
-    }
-
-    /**
-     * Will import the given file.
-     */
-    public void execute(Project prj, String module, String[] targetNames) {
-        log.debug("importdef:prj name" + prj.getName() + ". fileName" + file.toString());
-        ImportTask task = new ImportTask();
-        Target target = new Target();
-        target.setName("");
-        target.setProject(prj);
-        task.setOwningTarget(target);
-        task.setLocation(new Location(file.getAbsolutePath()));
-        task.setFile(file.toString());
-        task.setProject(prj);
-        task.execute();
-    }
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/ant/types/HlmListenerDef.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-
-package com.nokia.helium.core.ant.types;
-
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.BuildListener;
-import org.apache.log4j.Logger;
-
-/**
- * This class implements a listener registration action.
- * 
- * @ant.type name="listenerdef" category="Core"
- */
-public class HlmListenerDef extends HlmPreDefImpl {
-
-    private String classname;
-    private Logger log = Logger.getLogger(HlmListenerDef.class);
-
-    public void setClassname(String classname) {
-        this.classname = classname;
-    }
-
-    /**
-     * Register given listener to the project.
-     */
-    public void execute(Project prj, String module, String[] targetNames) {
-        try {
-            Class<?> listenerClass = Class.forName(classname);
-            BuildListener listener = (BuildListener) listenerClass
-                    .newInstance();
-            prj.addBuildListener(listener);
-        } catch (ClassNotFoundException ex) {
-            log.debug("Class not found exception:" + ex.getMessage(), ex);
-        } catch (InstantiationException ex1) {
-            log.debug("Class Instantiation exception:" + ex1.getMessage(), ex1);
-        } catch (IllegalAccessException ex1) {
-            log.debug("Illegal Class Access exception:" + ex1.getMessage(), ex1);
-        }
-    }
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/ant/types/HlmPostDefImpl.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-
-package com.nokia.helium.core.ant.types;
-
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.types.DataType;
-import org.apache.log4j.Logger;
-
-import com.nokia.helium.core.ant.HeliumExecutor;
-import com.nokia.helium.core.ant.HlmDefinition;
-
-/**
- * Implement an abstract post-action.
- */
-public class HlmPostDefImpl extends DataType implements HlmDefinition {
-    private Logger log = Logger.getLogger(HeliumExecutor.class);
-
-    /**
-     * Do nothing.
-     */
-    public void execute(Project prj, String module, String[] targetNames) {
-        // Empty method. Implemented by extending classes.
-    }
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/ant/types/HlmPreDefImpl.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-
-package com.nokia.helium.core.ant.types;
-
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.types.DataType;
-
-import com.nokia.helium.core.ant.HlmDefinition;
-
-/**
- * Implement an abstract pre-action.
- */
-public class HlmPreDefImpl extends DataType implements HlmDefinition {
-    /**
-     * Do nothing.
-     */
-    public void execute(Project prj, String module, String[] targetNames) {
-        // empty will implemented by the sub classes.
-    }
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/ant/types/ReferenceType.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-
-package com.nokia.helium.core.ant.types;
-
-import org.apache.tools.ant.types.DataType;
-import org.apache.tools.ant.types.Reference;
-
-/**
- * Helper class to force user providing a reference. It doesn't implement any
- * particular Ant interface.
- */
-public class ReferenceType extends DataType {
-    /**
-     * Returns the referenced object.
-     * 
-     * @return the reference object.
-     */
-    public Object getReferencedObject() {
-        Reference reference = getRefid();
-        Object obj = reference.getReferencedObject(getProject());
-        return obj;
-    }
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/ant/types/Variable.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,130 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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: 
-*
-*/
- 
-package com.nokia.helium.core.ant.types;
-
-import org.apache.tools.ant.types.DataType;
-import org.apache.tools.ant.BuildException;
-import org.apache.log4j.Logger;
-
-/**
- * Helper class to store the command line variables
- * with name / value pair.
- * @ant.type name="arg"
- * @ant.type name="makeOption"
- */
-public class Variable extends DataType
-{
-    private static Logger log = Logger.getLogger(Variable.class);
-    private String name;
-    private String value;
-    private String cmdLine;
-
-    
-    public Variable() {
-    }
-    
-    /**
-     * Set the name of the variable.
-     * @param name
-     */
-    public void setName(String nm) {
-        name = nm;
-    }
-
-    
-    /**
-     * Get the name of the variable.
-     * @return name.
-     */
-    public String getName() {
-        if ( cmdLine == null) {
-            if (name == null ) { 
-                throw new BuildException( "name should not be null");
-            }
-            if (value == null) {
-                throw new BuildException( "value should not be null");
-            }
-            return name;
-        } else {
-            if (name != null  && value != null) { 
-                throw new BuildException( "you can define either name, value or line attribute and not both");
-            }
-            String cmdPart = cmdLine.trim();
-            String[] cmdArgs = cmdPart.split(" ");
-            return cmdArgs[0];
-        }
-    }
-
-    /**
-     * Set the value of the variable.
-     * @param value
-     */
-    public void setValue(String vlue) {
-        value = vlue;
-    }
-
-    /**
-     * Helper function to set the command line string
-     * @param line, string as input to command line.
-     */
-    public void setLine(String line) {
-        cmdLine = line;
-    }
-    
-    /**
-     * Get the value of the variable.
-     * @return value.
-     */
-    public String getValue() {
-        if ( cmdLine == null) {
-            if (name == null ) { 
-                throw new BuildException( "name should not be null");
-            }
-            if (value == null) {
-                throw new BuildException( "value should not be null");
-            }
-            return value;
-        } else {
-            if (name != null  && value != null) { 
-                throw new BuildException( "you can define either name, value or line attribute and not both");
-            }
-            return cmdLine;
-        }
-    }
-    /**
-     * Get the command line parameter
-     * @return command line string.
-     */
-    public String getParameter() {
-        if ( cmdLine == null) {
-            if (name == null ) { 
-                throw new BuildException( "name should not be null");
-            }
-            if (value == null) {
-                throw new BuildException( "value should not be null");
-            }
-            return name + "=" + value;
-        } else {
-            if (name != null  && value != null) { 
-                throw new BuildException( "you can define either name, value or line attribute and not both");
-            }
-            return cmdLine;
-        }
-    }
-
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/ant/types/VariableSet.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,160 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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: 
-*
-*/
- 
-package com.nokia.helium.core.ant.types;
-
-import java.util.Vector;
-import java.util.HashMap;
-import java.util.List;
-import com.nokia.helium.core.ant.VariableIFImpl;
-import java.util.Collection;
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.types.Reference;
-import java.util.ArrayList;
-import org.apache.log4j.Logger;
-
-/**
- * Helper class to store the variable set (list of variables
- * with name / value pair)
- * @ant.type name="argSet"
- */
-public class VariableSet extends VariableIFImpl {
-
-    private static Logger log = Logger.getLogger(VariableSet.class);
-    
-    private HashMap<String, Variable> variablesMap = new HashMap<String, Variable>();
-
-    private List<Variable> variables = new ArrayList<Variable> ();
-
-    private Vector<VariableSet> varSets = new Vector<VariableSet>();
-    
-    private VariableSet currentSet;
-
-    /**
-     * Constructor
-     */
-    public VariableSet() {
-    }    
-
-    /**
-     * Helper function to add the created varset
-     * @param filter to be added to the varset
-     */
-    public void add(VariableSet varSet) {
-        currentSet = null;
-        if (varSet != null) {
-            varSets.add(varSet);
-        }
-    }
-
-    /**
-     * Creates an empty variable element and adds 
-     * it to the variables list
-     * @return empty Variable pair
-     */
-    public VariableSet createArgSet() {
-        VariableSet varSet =  new VariableSet();
-        add(varSet);
-        return varSet;
-    }
-
-    /**
-     * Creates an empty variable element and adds 
-     * it to the variables list
-     * @return empty Variable pair
-     */
-    public Variable createArg() {
-        Variable var =  new Variable();
-        add(var);
-        return var;
-    }
-    
-    private void addVariable(Variable var) {
-        variables.add(var);
-    }
-    
-    /**
-     * Add a given variable to the list 
-     * @param var variable to add
-     */
-    public void add(Variable var) {
-        if ( currentSet == null) {
-            currentSet = new VariableSet();
-            varSets.add(currentSet);
-        }
-        currentSet.addVariable(var);
-    }
-
-    /**
-     * Helper function to get the list of variables defined for this set.
-     * @return variable list for this set.
-     */
-    public List<Variable> getVariablesList() {
-        return variables;
-    }
-    
-    public List<VariableSet> getVariableSets() {
-        return varSets;
-    }
-
-
-    /**
-     * Helper function to return the list of variables and its references
-     * @return variable list for this set and its references.
-     */
-    public Collection<Variable> getVariables() {
-        HashMap<String, Variable> varMap =   getVariablesMap();
-        //if (varMap.isEmpty()) {
-        //    throw new BuildException("Variable should not be empty and should contain one arg");
-        //}
-        return getVariablesMap().values();
-    }
-    /**
-     * Returns the list of variables available in the VariableSet 
-     * @return variable list
-     */
-    public HashMap<String, Variable> getVariablesMap() {
-        HashMap<String, Variable> allVariables = new HashMap<String, Variable>();
-        // Then filters as reference in filterset
-        Reference refId = getRefid();
-        Object varSetObject = null;
-        if (refId != null) {
-            try {
-                varSetObject = refId.getReferencedObject();
-            } catch ( Exception ex) {
-                log.debug("exception in getting variable", ex);
-                throw new BuildException("Not found: " + ex.getMessage());
-            }
-            if (varSetObject != null && varSetObject instanceof VariableSet) {
-                HashMap<String, Variable> varSetMap = ((VariableSet)varSetObject).getVariablesMap();
-                allVariables.putAll(varSetMap);
-            }
-        }
-        if (varSets != null && (!varSets.isEmpty())) {
-            for (VariableSet varSet : varSets) {
-                HashMap<String, Variable> variablesMap = varSet.getVariablesMap();
-                allVariables.putAll(variablesMap);
-            }
-        }
-        if (variables != null && !variables.isEmpty()) {
-            for (Variable var : variables) {
-                allVariables.put(var.getName(), var);
-            }
-        }
-        return allVariables;
-    }
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/plexus/AntStreamConsumer.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-package com.nokia.helium.core.plexus;
-
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.Task;
-import org.codehaus.plexus.util.cli.StreamConsumer;
-
-/**
- * Handle the output lines and redirect them to Ant logging.
- * The logging level is configurable.
- *
- */
-public class AntStreamConsumer implements StreamConsumer {
-
-    private Task task;
-    private int level = Project.MSG_INFO;
-    
-    /**
-     * Initialize the consumer with the task that will be used to 
-     * redirect the consumed lines. Default logging level will be 
-     * Project.MSG_INFO.
-     * @param task an Ant task
-     */
-    public AntStreamConsumer(Task task) {
-        this.task = task;
-    }
-
-    /**
-     * Initialize the consumer with the task that will be used to 
-     * redirect the consumed lines, and the level of logging.
-     * @param task ant Ant task.
-     * @param level ant logging level to use.
-     */
-    public AntStreamConsumer(Task task, int level) {
-        this.task = task;
-        this.level = level;
-    }
-    
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void consumeLine(String line) {
-        task.log(line, level);
-    }
-
-}
--- a/buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/plexus/CommandBase.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,214 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-package com.nokia.helium.core.plexus;
-
-import java.io.File;
-import java.util.Map;
-import java.util.Vector;
-
-import org.apache.log4j.Logger;
-import org.codehaus.plexus.util.Os;
-import org.codehaus.plexus.util.cli.CommandLineException;
-import org.codehaus.plexus.util.cli.CommandLineUtils;
-import org.codehaus.plexus.util.cli.Commandline;
-import org.codehaus.plexus.util.cli.StreamConsumer;
-
-/**
- * This abstract class implements some basic support to execute commands and 
- * redirect outputs to StreamConsumer. You can have common stream consumers or
- * execution base streamconsumers. The exception type raised 
- * can be controlled by the implementing class.
- *
- * @param <T>
- */
-public abstract class CommandBase<T extends Exception> {
-    private final Logger log = Logger.getLogger(getClass());
-    private Vector<StreamConsumer> outputHandlers = new Vector<StreamConsumer>();
-    private Vector<StreamConsumer> errorHandlers = new Vector<StreamConsumer>();
-
-    /**
-     * Get the executable name.
-     * @return
-     */
-    protected abstract String getExecutable();
-
-    /**
-     * Throw an exception with message and cause.
-     * @param message
-     * @param t
-     * @throws T
-     */
-    protected abstract void throwException(String message, Throwable t) throws T;
-
-    /**
-     * Throw an exception with message only.
-     * @param message
-     * @throws T
-     */
-    protected void throwException(String message) throws T {
-        throwException(message, null);
-    }
-
-    /**
-     * Location where to execute the command. The default location
-     * is the current directory.
-     * @return a File object pointing to a directory.
-     */
-    public File getWorkingDir() {
-        return new File(".");
-    }
-    
-    /**
-     * Add a LineHandler to the CommandBase instance.
-     * LineHandlers could be used to record/log the output stream
-     * command invocation.
-     * @param lineHandler a lineHandle instance
-     */
-    public void addOutputLineHandler(StreamConsumer lineHandler) {
-        if (lineHandler != null) {
-            outputHandlers.add(lineHandler);
-        }
-    }
-    
-    /**
-     * Add a LineHandler to the CommandBase instance.
-     * LineHandlers could be used to record/log the output error stream
-     * command invocation.
-     * @param lineHandler a lineHandle instance
-     */
-    public void addErrorLineHandler(StreamConsumer lineHandler) {
-        if (lineHandler != null) {
-            errorHandlers.add(lineHandler);
-        }
-    }
-
-    /**
-     * Execute the command defined by getExecutable with args as list of arguments.
-     * 
-     * @param args
-     * @throws T extends
-     */
-    public void execute(String[] args) throws T {
-        execute(args, null);
-    }
-
-    /**
-     * Execute the command given by getExecutable with args as list of arguments and custom StreamConsumer.
-     * 
-     * @param args
-     *            an array representing blocks arguments
-     * @param output
-     *            the StreamConsumer to analyze the output with. If null it is
-     *            ignored.
-     * @throws T
-     */
-    public void execute(String[] args, StreamConsumer output) throws T {
-        execute(args, null, output);
-    }
-
-    /**
-     * Execute the command given by getExecutable with args as list of arguments and custom StreamConsumer.
-     * Also env content will be added to the environment. 
-     * 
-     * @param args
-     *            an array representing blocks arguments
-     * @param env
-     *            additional key to add the environment
-     * @param output
-     *            the StreamConsumer to analyze the output with. If null it is
-     *            ignored.
-     * @throws T
-     */
-    public void executeCmdLine(String argLine, Map<String, String> env, StreamConsumer output)
-            throws T {
-        Commandline cmdLine = new Commandline();
-        cmdLine.createArg().setValue(getExecutable());
-        if (argLine != null) {
-            cmdLine.createArg().setLine(argLine);
-        }
-        executeCmd(cmdLine, env, output);
-    }
-
-    private void executeCmd(Commandline cmdLine, Map<String, String> env, StreamConsumer output)     throws T  {
-        if (env != null) {
-            for (Map.Entry<String, String> entry : env.entrySet()) {
-                cmdLine.addEnvironment(entry.getKey(), entry.getValue());
-            }
-        }
-        cmdLine.setWorkingDirectory(getWorkingDir());
-        
-        // This is only needed on windows.
-        if (Os.isFamily(Os.FAMILY_WINDOWS)) {
-            cmdLine.createArg().setLine("&& exit %%ERRORLEVEL%%");    
-        }
-        
-
-        StreamMultiplexer inputMux = new StreamMultiplexer();
-        if (output != null) {
-            inputMux.addHandler(output);
-        }
-        for (StreamConsumer lh : outputHandlers) {
-            inputMux.addHandler(lh);
-        }
-
-        StreamMultiplexer errorMux = new StreamMultiplexer();
-        StreamRecorder errorRecorder = new StreamRecorder();
-        errorMux.addHandler(errorRecorder);
-        for (StreamConsumer lh : errorHandlers) {
-            errorMux.addHandler(lh);
-        }
-
-        try {
-            int err = CommandLineUtils.executeCommandLine(cmdLine, inputMux,
-                    errorMux);
-            // check its exit value
-            log.debug("Execution of " + getExecutable() + " returned: " + err);
-            if (err != 0) {
-                throwException(errorRecorder.getBuffer() + " (return code: " + err
-                        + ")");
-            }
-        } catch (CommandLineException e) {
-            throwException(
-                    "Error executing " + getExecutable() + ": "
-                            + e.toString());
-        }
-    }
-
-    /**
-     * Execute the command given by getExecutable with args as list of arguments and custom StreamConsumer.
-     * Also env content will be added to the environment. 
-     * 
-     * @param args
-     *            an array representing blocks arguments
-     * @param env
-     *            additional key to add the environment
-     * @param output
-     *            the StreamConsumer to analyze the output with. If null it is
-     *            ignored.
-     * @throws T
-     */
-    public void execute(String[] args, Map<String, String> env, StreamConsumer output)
-            throws T {
-        Commandline cmdLine = new Commandline();
-        cmdLine.createArg().setValue(getExecutable());
-        if (args != null) {
-            cmdLine.addArguments(args);
-        }
-        executeCmd(cmdLine, env, output);
-    }
-    
-}
--- a/buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/plexus/FileStreamConsumer.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-package com.nokia.helium.core.plexus;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStreamWriter;
-import java.io.Writer;
-
-import org.apache.log4j.Logger;
-import org.codehaus.plexus.util.cli.StreamConsumer;
-
-/**
- * Record a stream into a file. 
- *
- */
-public class FileStreamConsumer implements StreamConsumer {
-    private Logger log = Logger.getLogger(getClass());
-    private Writer writer;
-    
-    /**
-     * Create a FileStreamConsumer which will record content to 
-     * the output file.
-     * @param output the file to write the output to.
-     * @throws FileNotFoundException if an error occur while opening the file.
-     */
-    public FileStreamConsumer(File output) throws FileNotFoundException {
-        writer = new OutputStreamWriter(new FileOutputStream(output));
-    }
-    
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public synchronized void consumeLine(String line) {
-        try {
-            writer.append(line + "\n");
-        } catch (IOException e) {
-            log.error("Error while writing to file: " + e.getMessage(), e);
-        }
-    }
-    
-    /**
-     * Closing the file.
-     */
-    public void close() {
-        try {
-            writer.flush();
-            writer.close();
-        } catch (IOException e) {
-            log.error("Error while writing to file: " + e.getMessage(), e);
-        }
-    }
-}
--- a/buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/plexus/StreamMultiplexer.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-package com.nokia.helium.core.plexus;
-
-import java.util.Vector;
-
-import org.codehaus.plexus.util.cli.StreamConsumer;
-
-/**
- * Get the line consumed by a set of StreamConsumer.
- *
- */
-public class StreamMultiplexer implements StreamConsumer {
-
-    private Vector<StreamConsumer> handlers = new Vector<StreamConsumer>(); 
-    
-    /**
-     * Add an StreamConsumer to the multiplexing. 
-     * @param handler the StreamConsumer to add.
-     */
-    public void addHandler(StreamConsumer handler) {
-        handlers.add(handler);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void consumeLine(String line) {
-        for (StreamConsumer handler : handlers) {
-            handler.consumeLine(line);
-        }
-    }
-    
-
-}
--- a/buildframework/helium/external/helium-antlib/core/src/com/nokia/helium/core/plexus/StreamRecorder.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-package com.nokia.helium.core.plexus;
-
-import org.apache.log4j.Logger;
-import org.codehaus.plexus.util.cli.StreamConsumer;
-
-/**
- * Record the consumed lines into a StringBuffer.
- *
- */
-public class StreamRecorder implements StreamConsumer {
-    private Logger log = Logger.getLogger(this.getClass());    
-    private StringBuffer buffer = new StringBuffer();
-    
-    /**
-     * Default constructor.
-     */
-    public StreamRecorder() {
-    }
-
-    /**
-     * This constructor allows you to set a custom
-     * buffer.
-     * @param buffer custom buffer object.
-     */
-    public StreamRecorder(StringBuffer buffer) {
-        this.buffer = buffer;
-    }
-
-    /**
-     * Get the current buffer.
-     * @return the current buffer object
-     */
-    public StringBuffer getBuffer() {
-        return buffer;
-    }
-
-    /**
-     * Set the buffer object.
-     * @param buffer custom buffer object.
-     */
-    public synchronized void setBuffer(StringBuffer buffer) {
-        this.buffer = buffer;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public synchronized void consumeLine(String line) {
-        log.debug(line);
-        buffer.append(line + "\n");
-    }
-}
--- a/buildframework/helium/external/helium-antlib/core/src/log4j.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : libs.ant.xml 
-Part of     : Helium Antlib
-
-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:
-
-============================================================================
--->
-<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
-<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
-
-    <appender name="ASYNC" class="org.apache.log4j.AsyncAppender">
-            <appender-ref ref="FILE"/>
-            <appender-ref ref="CONSOLE"/>
-    </appender>
-
-    <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
-        <layout class="org.apache.log4j.PatternLayout">
-               <param name="ConversionPattern" 
-                            value="%d{HH:mm:ss,SSS}  %-2p - %m  %n"/>
-        </layout>
-    <filter class="org.apache.log4j.varia.LevelMatchFilter">
-      <param name="LevelToMatch" value="DEBUG" />
-      <param name="AcceptOnMatch" value="false" />
-    </filter>
-    </appender>
-
-
-    <appender name="FILE" class="org.apache.log4j.RollingFileAppender">
-        <param name="File" value="hlm_debug.log"/>
-        <param name="append" value="false"/>
-        <layout class="org.apache.log4j.PatternLayout">
-               <param name="ConversionPattern" 
-                            value="%d{HH:mm:ss,SSS}  %-2p - %m  %n"/>
-        </layout>
-    <filter class="org.apache.log4j.varia.LevelMatchFilter">
-      <param name="LevelToMatch" value="DEBUG" />
-      <param name="AcceptOnMatch" value="true" />
-    </filter>
-
-    <filter class="org.apache.log4j.varia.DenyAllFilter"/>
-
-    </appender>
-
-  <logger name="com.nokia" additivity="false">
-      <level value="DEBUG" />
-    <appender-ref ref="ASYNC" />
-  </logger>
-
-    <root>
-        <priority value="DEBUG"/>
-        <appender-ref ref="CONSOLE"/>
-    </root>
-</log4j:configuration>
--- a/buildframework/helium/external/helium-antlib/core/tests/bld.sh	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-#!/bin/csh
-
-#
-# 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: 
-#
-
-
-
-module load java/1.6.0
-setenv ANT_ARGS "-lib ../../antlibs -lib ../lib -lib ../../lib -lib ../../bin/helium-core.jar " 
-ant -Dant.executor.class="com.nokia.helium.core.ant.HeliumExecutor" $*
--- a/buildframework/helium/external/helium-antlib/core/tests/build.bat	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-@echo off
-
-rem
-rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-rem All rights reserved.
-rem This component and the accompanying materials are made available
-rem under the terms of the License "Eclipse Public License v1.0"
-rem which accompanies this distribution, and is available
-rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
-rem
-rem Initial Contributors:
-rem Nokia Corporation - initial contribution.
-rem
-rem Contributors:
-rem
-rem Description: 
-rem
-
-setlocal
-if not defined JAVA_6_HOME (
-set TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
-) ELSE  set TESTED_JAVA=%JAVA_6_HOME%
-if exist %TESTED_JAVA% (set JAVA_HOME=%TESTED_JAVA%)
-set ANT_ARGS=-lib %CD%\..\lib -lib %CD%\..\..\lib -lib %CD%\..\..\antlibs -lib %CD%\..\..\bin\helium-core.jar
-ant -Dant.executor.class=com.nokia.helium.core.ant.HeliumExecutor %*
-endlocal
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/core/tests/build.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : build.xml 
-Part of     : Helium AntLib
-
-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="helium-antlib-unittest" xmlns:au="antlib:org.apache.ant.antunit">
-    <description>Helium antlib core tests.</description>
-
-    <import file="../../test-macros.ant.xml" />
-    
-    <target name="unittest" depends="unittest-core" />
-
-    <target name="unittest-core">
-        <antunitModule name="core" />
-    </target>
-
-</project>
--- a/buildframework/helium/external/helium-antlib/core/tests/core/executor/build.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-<?xml version="1.0"?>
-<!-- 
-============================================================================ 
-Name        : build.ant.xml 
-Part of     : Helium AntLib
-
-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="test-executor">
-    <description>Helium antlib core executor test config.</description>
-
-    <target name="target">
-        <echo>Running target.</echo>
-    </target>
-
-</project>
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/core/tests/core/executor/test_executor.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,83 +0,0 @@
-<?xml version="1.0"?>
-<!-- 
-============================================================================ 
-Name        : test_executor.ant.xml 
-Part of     : Helium AntLib
-
-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="test-executor" xmlns:au="antlib:org.apache.ant.antunit">
-    <description>Helium antlib core executor tests.</description>
-
-    <target name="final-target-1">
-        <echo message="about to call final target" />
-        <fail message="test is failed for final target" />
-    </target>
-
-    <target name="test-final-target-1">
-        <property name="hlm.target.final" value="test_final_target" />
-        <au:expectfailure>
-            <antcall target="final-target-1" />
-        </au:expectfailure>
-    </target>
-
-    <target name="test-final-target-2">
-        <property name="hlm.target.final" value="test_final_target" />
-        <echo message="about to call final target" />
-    </target>
-
-    <target name="test-final-target-3" depends="test_final_target">
-        <!-- assumption is that always that the target would be running -->
-        <property name="hlm.target.final" value="test_final_target" />
-    </target>
-
-    <target name="test-final-target-4">
-        <!-- assumption is that always that the target would be running -->
-        <property name="hlm.target.final" value="non-exist-target" />
-    </target>
-
-
-    <target name="test_final_target">
-        <echo message="executing test_final_target by default at end" />
-    </target>
-    
-    <target name="test-executor">
-        <au:logcapturer/>
-        <exec osfamily="windows" executable="cmd">
-            <arg line="/C ant"/>
-            <arg value="-Dant.executor.class=com.nokia.helium.core.ant.HeliumExecutor"/>
-            <arg line="-lib ../../../../bin"/>
-            <arg line="-lib ../../../../lib"/>
-            <arg line="-lib ../../../../antlibs"/>
-            <arg line="target"/>
-        </exec>    
-        <exec osfamily="unix" executable="ant">
-            <arg value="-Dant.executor.class=com.nokia.helium.core.ant.HeliumExecutor"/>
-            <arg line="-lib ../../../../bin"/>
-            <arg line="-lib ../../../../lib"/>
-            <arg line="-lib ../../../../antlibs"/>
-            <arg line="target"/>
-        </exec>
-        <exec osfamily="unix" executable="ant">
-            <arg value="-Dant.executor.class=com.nokia.helium.core.ant.HeliumExecutor"/>
-            <arg line="-lib ../../../../bin"/>
-            <arg line="-lib ../../../../lib"/>
-            <arg line="-lib ../../../../antlibs"/>
-            <arg line="target"/>
-        </exec>
-    </target>
-</project>
--- a/buildframework/helium/external/helium-antlib/core/tests/core/serializepath/test_serializepath.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : test_serializepath.ant.xml 
-Part of     : Helium AntLib
-
-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="test-serializepath" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
-    <description>Helium antlib core serializepath tests.</description>
-
-    <taskdef resource="com/nokia/helium/core/ant/antlib.xml" uri="http://www.nokia.com/helium" />
-
-    <!-- is called prior to the test -->
-    <target name="setUp">
-    </target>
-
-    <!-- is called after the test, even if that caused an error -->
-    <target name="tearDown">
-        <delete file="dump.txt" failonerror="false" />
-    </target>
-
-    <fileset id="empty_folder.path" dir="data/empty_folder" />
-
-    <!-- the actual test case -->
-    <target name="test-serializepath-emptydump">
-        <!-- Creating an empty file -->
-        <hlm:path2file file="dump.txt" />
-        <au:assertFileExists file="dump.txt" />
-        <hlm:path2file file="dump.txt" reference="path2file.empty"/>
-        <au:assertTrue>
-            <resourcecount refid="path2file.empty" when="eq" count="0" />
-        </au:assertTrue>
-    </target>
-
-    <!-- the actual test case -->
-    <target name="test-serializepath-data">
-        <!-- Creating an empty file -->
-        <hlm:path2file file="dump.txt">
-            <path>
-                <fileset dir="${ant.file.test-serializepath}/../data">
-                    <include name="**/test.txt"/>    
-                </fileset>
-            </path>
-        </hlm:path2file>
-        <au:assertFileExists file="dump.txt" />
-        <hlm:path2file file="dump.txt" reference="path2file.data"/>
-        <au:assertTrue>
-            <resourcecount refid="path2file.data" when="eq" count="2" />
-        </au:assertTrue>
-    </target>
-
-    <!-- the actual test case -->
-    <target name="test-serializepath-noattribute">
-        <!-- Creating an empty file -->
-        <au:expectfailure>
-            <hlm:path2file/>
-        </au:expectfailure>
-    </target>
-
-    <target name="test-serializepath-nofile-reference">
-        <!-- Creating an empty file -->
-        <au:expectfailure>
-            <hlm:path2file reference="ref.not.defined"/>
-        </au:expectfailure>
-    </target>
-</project>
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/core/tests/core/variableset/build.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-<?xml version="1.0"?>
-<!-- 
-============================================================================ 
-Name        : build.ant.xml 
-Part of     : Helium AntLib
-
-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="test-variableset">
-    <description>Helium antlib core executor test config.</description>
-
-    <target name="target">
-        <echo>Running target.</echo>
-    </target>
-
-</project>
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/core/tests/core/variableset/test_variableset.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,127 +0,0 @@
-<?xml version="1.0"?>
-<!-- 
-============================================================================ 
-Name        : test_executor.ant.xml 
-Part of     : Helium AntLib
-
-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="test-variableset" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
-    <description>Helium antlib core variableset tests.</description>
-
-    <typedef name="arg" classname="com.nokia.helium.core.ant.types.Variable"/>
-    <typedef name="argSet" classname="com.nokia.helium.core.ant.types.VariableSet"/>
-
-    <taskdef resource="com/nokia/helium/core/ant/antlib.xml" uri="http://www.nokia.com/helium"/>
-    <taskdef name="getVariableValue" classname="com.nokia.helium.core.ant.taskdefs.GetValueFromVariableSet"/>
-
-    <argSet id="common.argset">
-        <arg line="-c tools_rel -c tools2_rel" />
-        <arg name="-j" value="1" />
-    </argSet>
-
-    <argSet id="common.invalid.arg1" />
-
-    <argSet id="common.invalid.arg2">
-        <arg name="-j"/>
-    </argSet>
-
-    <argSet id="common.invalid.arg3">
-        <arg line="-c tools_rel -c tools2_rel" name="test" value="test"/>
-    </argSet>
-
-    <argSet id="override.argset.thread">
-        <argSet refid="common.argset" />
-        <arg name="-j" value="10" />
-    </argSet>
-
-    <argSet id="load.order1">
-        <arg name="--engine" value="emake" />
-        <argSet refid="common.argset" />
-    </argSet>
-
-    <target name="test-var-value-test1">
-        <getVariableValue name="-j" property="test.var">
-            <argSet refid="common.argset" />
-        </getVariableValue>
-        <echo message="test.var: ${test.var}" />
-        <au:assertTrue>
-            <equals arg1="${test.var}" arg2="1"/>
-        </au:assertTrue>
-    </target>
-
-    <target name="test-var-invalid-ref">
-        <au:expectfailure>
-            <getVariableValue name="-j" property="test.var">
-                <argSet refid="common.target" />
-            </getVariableValue>
-        </au:expectfailure>
-    </target>
-
-    <target name="test-var-override-test1">
-        <getVariableValue name="-j" property="test.var">
-            <argSet refid="override.argset.thread" />
-        </getVariableValue>
-        <echo message="test.var: ${test.var}" />
-        <au:assertTrue>
-            <equals arg1="${test.var}" arg2="10"/>
-        </au:assertTrue>
-    </target>
-
-    <target name="test-var-load-order1">
-        <getVariableValue name="--engine" property="test.var">
-            <argSet refid="load.order1" />
-        </getVariableValue>
-        <echo message="test.var: ${test.var}" />
-        <au:assertTrue>
-            <equals arg1="${test.var}" arg2="emake"/>
-        </au:assertTrue>
-    </target>
-
-    <target name="test-var-invalid-name">
-        <au:expectfailure>
-            <getVariableValue name="--engine" property="test.var">
-                <argSet refid="common.argset" />
-            </getVariableValue>
-        </au:expectfailure>
-    </target>
-
-    <target name="test-var-invalid-arg1">
-        <au:expectfailure>
-            <getVariableValue name="--engine" property="test.var">
-                <argSet refid="common.invalid.arg1" />
-            </getVariableValue>
-        </au:expectfailure>
-    </target>
-
-    <target name="test-var-invalid-arg2">
-        <au:expectfailure>
-            <getVariableValue name="--engine" property="test.var">
-                <argSet refid="common.invalid.arg2" />
-            </getVariableValue>
-        </au:expectfailure>
-    </target>
-
-    <target name="test-var-invalid-arg3">
-        <au:expectfailure>
-            <getVariableValue name="--engine" property="test.var">
-                <argSet refid="common.invalid.arg3" />
-            </getVariableValue>
-        </au:expectfailure>
-    </target>
-
-</project>
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/core/tests/core/xmllogcondition/data/helium_minibuild_ido_compile.log.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<build-status>
-        <warning count= "2" />
-        <error count= "1" />
-        <fatal count= "0" />
-        <default count= "0" />
-        <remark count= "0" />
-        <info count= "0" />
-</build-status>
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/core/tests/core/xmllogcondition/test_countseverity.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : test_countseverity.ant.xml 
-Part of     : Helium AntLib
-
-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="test-countseverity" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
-    <description>Helium antlib core countseverity tests.</description>
-    <taskdef resource="com/nokia/helium/core/ant/antlib.xml" uri="http://www.nokia.com/helium" />
-
-    <!-- is called prior to the test -->
-    <target name="setUp">
-    </target>
-
-    <!-- is called after the test, even if that caused an error -->
-    <target name="tearDown">
-    </target>
-
-    <fileset id="empty_folder.path" dir="data/empty_folder" />
-    <target name="test-countseverity-no-property">
-        <au:expectfailure>
-            <hlm:countSeverity severity="error" file="./data/helium_minibuild_ido_compile.log.xml" />
-        </au:expectfailure>
-    </target>
-
-    <!-- the actual test case -->
-    <target name="test-countseverity-error">
-        <!-- Check for errors -->
-        <hlm:countSeverity severity="error" file="./data/helium_minibuild_ido_compile.log.xml" property="errors"/>
-        <au:assertTrue>
-            <equals arg1="${errors}" arg2="1"/>
-        </au:assertTrue>
-    </target>
-
-    <target name="test-countseverity-warning">
-        <!-- Check for warnings -->
-        <hlm:countSeverity severity="warning" file="./data/helium_minibuild_ido_compile.log.xml" property="warnings"/>
-        <echo message="Warnings: ${warnings}"/>
-        <au:assertTrue>
-            <equals arg1="${warnings}" arg2="2"/>
-        </au:assertTrue>
-    </target>
-
-    <target name="test-countseverity-info">
-        <!-- Check for infos -->
-        <hlm:countSeverity severity="infos" file="./data/helium_minibuild_ido_compile.log.xml" property="infos"/>
-        <au:assertTrue>
-            <equals arg1="${infos}" arg2="0"/>
-        </au:assertTrue>
-    </target>
-
-</project>
--- a/buildframework/helium/external/helium-antlib/core/tests/core/xmllogcondition/test_hasseverity.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : test_hasseverity.ant.xml 
-Part of     : Helium AntLib
-
-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="test-hasseverity" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
-    <description>Helium antlib core hasseverity tests.</description>
-
-    <taskdef resource="com/nokia/helium/core/ant/antlib.xml" uri="http://www.nokia.com/helium" />
-
-    <!-- is called prior to the test -->
-    <target name="setUp">
-    </target>
-
-    <!-- is called after the test, even if that caused an error -->
-    <target name="tearDown">
-    </target>
-
-    <fileset id="empty_folder.path" dir="data/empty_folder" />
-
-    <!-- the actual test case -->
-    <target name="test-hasseverity-error">
-        <!-- Check for errors -->
-        <au:assertTrue>
-            <hlm:hasSeverity severity="error" file="./data/helium_minibuild_ido_compile.log.xml" />
-        </au:assertTrue>
-    </target>
-
-    <target name="test-hasseverity-warning">
-        <!-- Check for warnings -->
-        <au:assertTrue>
-            <hlm:hasSeverity severity="warning" file="./data/helium_minibuild_ido_compile.log.xml" />
-        </au:assertTrue>
-    </target>
-
-    <target name="test-hasseverity-info">
-        <!-- Check for infos -->
-        <au:assertFalse>
-            <hlm:hasSeverity severity="info" file="./data/helium_minibuild_ido_compile.log.xml" />
-        </au:assertFalse>
-    </target>
-</project>
--- a/buildframework/helium/external/helium-antlib/core/tests/src/com/nokia/helium/core/plexus/tests/TestAntStreamConsumer.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,110 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-package com.nokia.helium.core.plexus.tests;
-
-import org.apache.tools.ant.BuildEvent;
-import org.apache.tools.ant.BuildListener;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.taskdefs.Echo;
-import org.junit.Test;
-import static org.junit.Assert.*;
-import com.nokia.helium.core.plexus.AntStreamConsumer;
-
-public class TestAntStreamConsumer {
-
-    public class AntBuildListener implements BuildListener {
-        private StringBuffer log = new StringBuffer();
-        
-        public StringBuffer getLog() {
-            return log;
-        }
-
-        @Override
-        public void buildFinished(BuildEvent arg0) {
-        }
-
-        @Override
-        public void buildStarted(BuildEvent arg0) {
-        }
-
-        @Override
-        public void messageLogged(BuildEvent arg0) {
-            log.append(arg0.getMessage());
-        }
-
-        @Override
-        public void targetFinished(BuildEvent arg0) {
-        }
-
-        @Override
-        public void targetStarted(BuildEvent arg0) {
-        }
-
-        @Override
-        public void taskFinished(BuildEvent arg0) {
-        }
-
-        @Override
-        public void taskStarted(BuildEvent arg0) {
-        }
-        
-    }
-    
-    @Test
-    public void testLoggingThroughAnt() {
-        // Setting up an Ant task
-        Project project = new Project();
-        AntBuildListener listener = new AntBuildListener();
-        project.addBuildListener(listener);
-        project.init();
-        Echo echo = new Echo();
-        echo.setProject(project);
-        echo.setMessage("From the echo task");
-        
-        
-        // Configuring the Ant consumer
-        AntStreamConsumer consumer = new AntStreamConsumer(echo);
-        consumer.consumeLine("consumed line!");
-        echo.execute();
-        assertTrue(listener.getLog().toString().contains("From the echo task"));
-        assertTrue(listener.getLog().toString().contains("consumed line!"));
-        
-    }
-
-    @Test
-    public void testLoggingThroughAntAsError() {
-        // Setting up an Ant task
-        Project project = new Project();
-        AntBuildListener listener = new AntBuildListener();
-        project.addBuildListener(listener);
-        project.init();
-        Echo echo = new Echo();
-        echo.setProject(project);
-        echo.setMessage("From the echo task");
-        
-        
-        // Configuring the Ant consumer
-        AntStreamConsumer consumer = new AntStreamConsumer(echo, Project.MSG_ERR);
-        consumer.consumeLine("consumed line!");
-        echo.execute();
-        assertTrue(listener.getLog().toString().contains("From the echo task"));
-        assertTrue(listener.getLog().toString().contains("consumed line!"));
-        
-    }
-    
-    
-}
--- a/buildframework/helium/external/helium-antlib/core/tests/src/com/nokia/helium/core/plexus/tests/TestCommandBase.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,121 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-package com.nokia.helium.core.plexus.tests;
-
-import hidden.org.codehaus.plexus.interpolation.os.Os;
-
-import java.util.Hashtable;
-
-import org.junit.Test;
-import static org.junit.Assert.*;
-
-import com.nokia.helium.core.plexus.CommandBase;
-import com.nokia.helium.core.plexus.StreamRecorder;
-
-/**
- * Unittests for the CommandBase class. 
- *
- */
-public class TestCommandBase {
-
-    /**
-     * The simplest possible implementation possible.
-     *
-     */
-    public class CommandImpl extends CommandBase<Exception> {
-
-        @Override
-        protected String getExecutable() {
-            return "echo";
-        }
-
-        @Override
-        protected void throwException(String message, Throwable t)
-                throws Exception {
-            throw new Exception(message, t);
-        }
-        
-    }
-    
-    @Test
-    public void simpleExecution() {
-        CommandImpl cmd = new CommandImpl();
-        try {
-            cmd.execute(null);
-        } catch (Exception e) {
-            fail("Exception should not happen.");
-        }
-
-    }
-
-    @Test
-    public void simpleExecutionWithArgs() {
-        CommandImpl cmd = new CommandImpl();
-        String args[] = new String[2];
-        args[0] = "foo";
-        args[1] = "bar";
-        try {
-            cmd.execute(args);
-        } catch (Exception e) {
-            fail("Exception should not happen.");
-        }
-    }
-    
-    @Test
-    public void simpleExecutionWithArgsAndRecorder() throws Exception {
-        CommandImpl cmd = new CommandImpl();
-        String args[] = new String[2];
-        args[0] = "foo";
-        args[1] = "bar";
-        StreamRecorder rec = new StreamRecorder();
-        cmd.execute(args, rec);
-        assertTrue(rec.getBuffer().toString().startsWith("foo bar"));
-    }
-
-    @Test
-    public void simpleExecutionWithArgsAndRecorderAsOutputHandler() throws Exception {
-        CommandImpl cmd = new CommandImpl();
-        StreamRecorder rec = new StreamRecorder();
-        cmd.addOutputLineHandler(rec);
-        String args[] = new String[2];
-        args[0] = "foo";
-        args[1] = "bar";
-        cmd.execute(args, rec);
-        assertTrue(rec.getBuffer().toString().startsWith("foo bar"));
-    }
-
-    @Test
-    public void simpleExecutionWithEnv() throws Exception {
-        CommandImpl cmd = new CommandImpl();
-        StreamRecorder rec = new StreamRecorder();
-        cmd.addOutputLineHandler(rec);
-        String args[] = new String[2];
-        if (Os.isFamily(Os.FAMILY_WINDOWS)) {
-            args[0] = "%TEST_FOO%";
-            args[1] = "%TEST_BAR%";
-        } else {
-            args[0] = "$TEST_FOO";
-            args[1] = "$TEST_BAR";
-        }
-        Hashtable<String, String> env = new Hashtable<String, String>();
-        env.put("TEST_FOO", "foo");
-        env.put("TEST_BAR", "bar");
-        cmd.execute(args, env, rec);
-        assertTrue(rec.getBuffer().toString().startsWith("foo bar"));
-    }
-
-}
--- a/buildframework/helium/external/helium-antlib/core/tests/src/com/nokia/helium/core/plexus/tests/TestFileStreamConsumer.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-package com.nokia.helium.core.plexus.tests;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-
-import org.junit.Test;
-import static org.junit.Assert.*;
-import com.nokia.helium.core.plexus.FileStreamConsumer;
-
-public class TestFileStreamConsumer {
-    
-    @Test
-    public void testContentGoesToFile() throws FileNotFoundException, IOException {
-        // Setting up an Ant task
-        File temp = File.createTempFile("temp_",".log");
-        temp.deleteOnExit();
-        FileStreamConsumer consumer = new FileStreamConsumer(temp);
-        consumer.consumeLine("Hello World!");
-        consumer.consumeLine("Bonjour monde!");
-        consumer.close();
-        assertTrue(temp.length() == 28);
-    }
-
-}
--- a/buildframework/helium/external/helium-antlib/core/tests/src/com/nokia/helium/core/plexus/tests/TestStreamMultiplexer.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-package com.nokia.helium.core.plexus.tests;
-
-import static org.junit.Assert.assertTrue;
-
-import org.junit.Test;
-
-import com.nokia.helium.core.plexus.StreamMultiplexer;
-import com.nokia.helium.core.plexus.StreamRecorder;
-
-/**
- * Testing the StreamMultiplexer class.
- *
- */
-public class TestStreamMultiplexer {
-
-    /**
-     * Having an empty list of handler should not cause any problem.
-     */
-    @Test
-    public void noHandler() {
-        StreamMultiplexer mux = new StreamMultiplexer();
-        mux.consumeLine("1st line");
-        mux.consumeLine("2nd line");
-    }
-    
-    /**
-     * The two recorders should record the same stuff.
-     */
-    @Test
-    public void recordSomeLines() {
-        StreamMultiplexer mux = new StreamMultiplexer();
-        StreamRecorder rec = new StreamRecorder();
-        StreamRecorder rec2 = new StreamRecorder();
-        mux.addHandler(rec);
-        mux.addHandler(rec2);
-        mux.consumeLine("1st line");
-        mux.consumeLine("2nd line");
-        assertTrue(rec.getBuffer().toString().equals("1st line\n2nd line\n"));
-        assertTrue(rec2.getBuffer().toString().equals("1st line\n2nd line\n"));
-    }
-
-}
--- a/buildframework/helium/external/helium-antlib/core/tests/src/com/nokia/helium/core/plexus/tests/TestStreamRecorder.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-package com.nokia.helium.core.plexus.tests;
-
-import static org.junit.Assert.*;
-
-import org.junit.Test;
-
-import com.nokia.helium.core.plexus.StreamRecorder;
-
-/**
- * Unittests for the TestStreamRecorder class. 
- *
- */
-public class TestStreamRecorder {
-
-    @Test
-    public void recordSomeLines() {
-        StreamRecorder rec = new StreamRecorder();
-        rec.consumeLine("1st line");
-        rec.consumeLine("2nd line");
-        assertTrue(rec.getBuffer().toString().equals("1st line\n2nd line\n"));
-    }
-
-    @Test
-    public void recordSomeLinesWithOwnBuffer() {
-        StringBuffer buffer = new StringBuffer();
-        StreamRecorder rec = new StreamRecorder(buffer);
-        assertTrue(rec.getBuffer() == buffer);
-        rec.consumeLine("1st line");
-        rec.consumeLine("2nd line");
-        assertTrue(rec.getBuffer().toString().equals("1st line\n2nd line\n"));
-    }
-
-    @Test
-    public void setGetBuffer() {
-        StringBuffer buffer = new StringBuffer();
-        StreamRecorder rec = new StreamRecorder();
-        assertTrue(rec.getBuffer() != buffer);
-        rec.setBuffer(buffer);
-    }
-}
Binary file buildframework/helium/external/helium-antlib/deps/amara/4Suite_XML/1.0.2/4Suite-XML-1.0.2.tar.gz has changed
Binary file buildframework/helium/external/helium-antlib/deps/amara/4Suite_XML/1.0.2/4Suite_XML-1.0.2.py2.6-win32.egg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/deps/amara/4Suite_XML/1.0.2/ivy.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+============================================================================ 
+Name        : ivy.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:
+
+============================================================================  
+-->
+<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
+    <info
+        organisation="amara"
+        module="4Suite_XML"
+        status="release"
+        revision="1.0.2" />
+    <publications>
+        <artifact type="egg" ext="py2.6-${platform}.egg" conf="default"/>
+    </publications>
+</ivy-module>
Binary file buildframework/helium/external/helium-antlib/deps/amara/amara/1.2.0.1/amara-1.2.0.1.egg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/deps/amara/amara/1.2.0.1/ivy.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+============================================================================ 
+Name        : ivy.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:
+
+============================================================================  
+-->
+<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
+    <info
+        organisation="amara"
+        module="amara"
+        status="release"
+        revision="1.2.0.1" />
+    <publications>
+        <artifact type="egg" conf="default"/>
+    </publications>
+    <dependencies>
+        <dependency org="amara" name="4Suite_XML" rev="latest.integration" conf="default" />
+    </dependencies>
+</ivy-module>
Binary file buildframework/helium/external/helium-antlib/deps/bsh/bsh/2.1b0/bsh-2.1b0.jar has changed
Binary file buildframework/helium/external/helium-antlib/deps/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/deps/dom4j/dom4j/1.6.1/ivy.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+============================================================================ 
+Name        : ivy.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:
+
+============================================================================  
+-->
+<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
+    <info
+        organisation="dom4j"
+        module="dom4j"
+        status="release"
+        revision="1.6.1" />
+    <dependencies>
+        <dependency org="jaxen" name="jaxen" rev="latest.integration" conf="default" />
+    </dependencies>
+</ivy-module>
Binary file buildframework/helium/external/helium-antlib/deps/eclipselink/eclipselink/2.0.0/eclipselink-2.0.0.jar has changed
Binary file buildframework/helium/external/helium-antlib/deps/info.bliki/bliki/3.0.7/bliki-3.0.7.jar has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/deps/info.bliki/bliki/3.0.7/ivy.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+============================================================================ 
+Name        : ivy.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:
+
+============================================================================  
+-->
+<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
+    <info
+        organisation="info.bliki"
+        module="bliki"
+        status="release"
+        revision="3.0.7" />
+    <dependencies>
+    </dependencies>
+</ivy-module>
Binary file buildframework/helium/external/helium-antlib/deps/javax.jms/jms/1.1/jms-1.1.jar has changed
Binary file buildframework/helium/external/helium-antlib/deps/javax.mail/mail/1.4.1/mail-1.4.1.jar has changed
Binary file buildframework/helium/external/helium-antlib/deps/javax.persistence/persistence/2.0.0/persistence-2.0.0.jar has changed
Binary file buildframework/helium/external/helium-antlib/deps/jaxen/jaxen/1.1.1/jaxen-1.1.1.jar has changed
Binary file buildframework/helium/external/helium-antlib/deps/jinja/Jinja2/2.2.1/Jinja2-2.2.1.egg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/deps/jinja/Jinja2/2.2.1/ivy.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+============================================================================ 
+Name        : ivy.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:
+
+============================================================================  
+-->
+<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
+    <info
+        organisation="jinja"
+        module="Jinja2"
+        status="release"
+        revision="2.2.1" />
+    <publications>
+        <artifact type="egg" conf="default"/>
+    </publications>
+</ivy-module>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/deps/log4j/log4j/1.2.9/ivy.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+============================================================================ 
+Name        : ivy.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:
+
+============================================================================  
+-->
+<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
+    <info
+        organisation="log4j"
+        module="log4j"
+        status="release"
+        revision="1.2.9" />
+        
+  <publications>
+        <artifact name="log4j" type="jar" ext="jar" conf="default"/>
+    </publications>
+</ivy-module>
Binary file buildframework/helium/external/helium-antlib/deps/log4j/log4j/1.2.9/log4j-1.2.9.jar has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/deps/lxml/lxml/2.2.1/ivy.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+============================================================================ 
+Name        : ivy.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:
+
+============================================================================  
+-->
+<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
+    <info
+        organisation="lxml"
+        module="lxml"
+        status="release"
+        revision="2.2.1" />
+    <publications>
+        <artifact type="egg" ext="py2.6-${platform}.egg" conf="default"/>
+    </publications>
+</ivy-module>
Binary file buildframework/helium/external/helium-antlib/deps/lxml/lxml/2.2.1/lxml-1.3.6.tgz has changed
Binary file buildframework/helium/external/helium-antlib/deps/lxml/lxml/2.2.1/lxml-2.2.1.py2.6-win32.egg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/deps/mocker/mocker/0.10.1/ivy.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+============================================================================ 
+Name        : ivy.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:
+
+============================================================================  
+-->
+<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
+    <info
+        organisation="mocker"
+        module="mocker"
+        status="release"
+        revision="0.10.1" />
+    <publications>
+        <artifact type="egg" conf="default"/>
+    </publications>
+</ivy-module>
Binary file buildframework/helium/external/helium-antlib/deps/mocker/mocker/0.10.1/mocker-0.10.1.egg has changed
Binary file buildframework/helium/external/helium-antlib/deps/net.sourceforge.fmpp/fmpp/0.9.13/fmpp-0.9.13.jar has changed
Binary file buildframework/helium/external/helium-antlib/deps/org.apache.ant/ant-antunit/1.1/ant-antunit-1.1.jar has changed
Binary file buildframework/helium/external/helium-antlib/deps/org.apache.ant/ivy/2.1.0/ivy-2.1.0.jar has changed
Binary file buildframework/helium/external/helium-antlib/deps/org.apache.commons/commons-codec/1.3/commons-codec-1.3.jar has changed
Binary file buildframework/helium/external/helium-antlib/deps/org.apache.commons/commons-collections/3.2/commons-collections-3.2.jar has changed
Binary file buildframework/helium/external/helium-antlib/deps/org.apache.commons/commons-configuration/1.5/commons-configuration-1.5.jar has changed
Binary file buildframework/helium/external/helium-antlib/deps/org.apache.commons/commons-httpclient/3.1/commons-httpclient-3.1.jar has changed
Binary file buildframework/helium/external/helium-antlib/deps/org.apache.commons/commons-io/1.4/commons-io-1.4.jar has changed
Binary file buildframework/helium/external/helium-antlib/deps/org.apache.commons/commons-lang/2.4/commons-lang-2.4.jar has changed
Binary file buildframework/helium/external/helium-antlib/deps/org.apache.commons/commons-logging/1.1.1/commons-logging-1.1.1.jar has changed
Binary file buildframework/helium/external/helium-antlib/deps/org.apache.derby/derby/10.5/derby-10.5.jar has changed
Binary file buildframework/helium/external/helium-antlib/deps/org.apache.maven/maven-scm-api/1.1/maven-scm-api-1.1.jar has changed
Binary file buildframework/helium/external/helium-antlib/deps/org.apache.maven/maven-scm-provider-hg/1.1/maven-scm-provider-hg-1.1.jar has changed
Binary file buildframework/helium/external/helium-antlib/deps/org.apache.maven/maven-scm-provider-svn-commons/1.1/maven-scm-provider-svn-commons-1.1.jar has changed
Binary file buildframework/helium/external/helium-antlib/deps/org.apache.maven/maven-scm-provider-synergy/1.1/maven-scm-provider-synergy-1.1.jar has changed
Binary file buildframework/helium/external/helium-antlib/deps/org.apache.xml/serializer/1.0/serializer-1.0.jar has changed
Binary file buildframework/helium/external/helium-antlib/deps/org.apache.xml/xalan/1.0/xalan-1.0.jar has changed
Binary file buildframework/helium/external/helium-antlib/deps/org.codehaus.plexus/plexus-utils/1.5.6/plexus-utils-1.5.6.jar has changed
Binary file buildframework/helium/external/helium-antlib/deps/org.freemarker/freemarker/2.3.13/freemarker-2.3.13.jar has changed
Binary file buildframework/helium/external/helium-antlib/deps/org.sqlite/sqlitejdbc/v053/sqlitejdbc-v053.jar has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/deps/path/path/2.2/ivy.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+============================================================================ 
+Name        : ivy.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:
+
+============================================================================  
+-->
+<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
+    <info
+        organisation="path"
+        module="path"
+        status="release"
+        revision="2.2" />
+    <publications>
+        <artifact type="egg" conf="default"/>
+    </publications>
+</ivy-module>
Binary file buildframework/helium/external/helium-antlib/deps/path/path/2.2/path-2.2.egg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/deps/threadpool/threadpool/1.2.3/ivy.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+============================================================================ 
+Name        : ivy.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:
+
+============================================================================  
+-->
+<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
+    <info
+        organisation="threadpool"
+        module="threadpool"
+        status="release"
+        revision="1.2.3" />
+    <publications>
+        <artifact type="py" conf="default"/>
+    </publications>
+</ivy-module>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/deps/threadpool/threadpool/1.2.3/threadpool-1.2.3.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,337 @@
+
+# -*- coding: UTF-8 -*-
+"""Easy to use object-oriented thread pool framework.
+
+A thread pool is an object that maintains a pool of worker threads to perform
+time consuming operations in parallel. It assigns jobs to the threads
+by putting them in a work request queue, where they are picked up by the
+next available thread. This then performs the requested operation in the
+background and puts the results in a another queue.
+
+The thread pool object can then collect the results from all threads from
+this queue as soon as they become available or after all threads have
+finished their work. It's also possible, to define callbacks to handle
+each result as it comes in.
+
+The basic concept and some code was taken from the book "Python in a Nutshell"
+by Alex Martelli, copyright 2003, ISBN 0-596-00188-6, from section 14.5
+"Threaded Program Architecture". I wrapped the main program logic in the
+ThreadPool class, added the WorkRequest class and the callback system and
+tweaked the code here and there. Kudos also to Florent Aide for the exception
+handling mechanism.
+
+Basic usage:
+
+>>> pool = TreadPool(poolsize)
+>>> requests = makeRequests(some_callable, list_of_args, callback)
+>>> [pool.putRequest(req) for req in requests]
+>>> pool.wait()
+
+See the end of the module code for a brief, annotated usage example.
+
+Website : http://chrisarndt.de/en/software/python/threadpool/
+"""
+
+__all__ = [
+  'makeRequests',
+  'NoResultsPending',
+  'NoWorkersAvailable',
+  'ThreadPool',
+  'WorkRequest',
+  'WorkerThread'
+]
+
+__author__ = "Christopher Arndt"
+__version__ = "1.2.3"
+__revision__ = "$Revision: 1.5 $"
+__date__ = "$Date: 2006/06/23 12:32:25 $"
+__license__ = 'Python license'
+
+# standard library modules
+import sys
+import threading
+import Queue
+
+# exceptions
+class NoResultsPending(Exception):
+    """All work requests have been processed."""
+    pass
+
+class NoWorkersAvailable(Exception):
+    """No worker threads available to process remaining requests."""
+    pass
+
+# classes
+class WorkerThread(threading.Thread):
+    """Background thread connected to the requests/results queues.
+
+    A worker thread sits in the background and picks up work requests from
+    one queue and puts the results in another until it is dismissed.
+    """
+
+    def __init__(self, requestsQueue, resultsQueue, **kwds):
+        """Set up thread in daemonic mode and start it immediatedly.
+
+        requestsQueue and resultQueue are instances of Queue.Queue passed
+        by the ThreadPool class when it creates a new worker thread.
+        """
+
+        threading.Thread.__init__(self, **kwds)
+        self.setDaemon(1)
+        self.workRequestQueue = requestsQueue
+        self.resultQueue = resultsQueue
+        self._dismissed = threading.Event()
+        self.start()
+
+    def run(self):
+        """Repeatedly process the job queue until told to exit."""
+
+        while not self._dismissed.isSet():
+            # thread blocks here, if queue empty
+            request = self.workRequestQueue.get()
+            if self._dismissed.isSet():
+                # if told to exit, return the work request we just picked up
+                self.workRequestQueue.put(request)
+                break # and exit
+            try:
+                self.resultQueue.put(
+                    (request, request.callable(*request.args, **request.kwds))
+                )
+            except:
+                request.exception = True
+                self.resultQueue.put((request, sys.exc_info()))
+
+    def dismiss(self):
+        """Sets a flag to tell the thread to exit when done with current job.
+        """
+
+        self._dismissed.set()
+
+
+class WorkRequest:
+    """A request to execute a callable for putting in the request queue later.
+
+    See the module function makeRequests() for the common case
+    where you want to build several WorkRequests for the same callable
+    but with different arguments for each call.
+    """
+
+    def __init__(self, callable, args=None, kwds=None, requestID=None,
+      callback=None, exc_callback=None):
+        """Create a work request for a callable and attach callbacks.
+
+        A work request consists of the a callable to be executed by a
+        worker thread, a list of positional arguments, a dictionary
+        of keyword arguments.
+
+        A callback function can be specified, that is called when the results
+        of the request are picked up from the result queue. It must accept
+        two arguments, the request object and the results of the callable,
+        in that order. If you want to pass additional information to the
+        callback, just stick it on the request object.
+
+        You can also give a callback for when an exception occurs. It should
+        also accept two arguments, the work request and a tuple with the
+        exception details as returned by sys.exc_info().
+
+        requestID, if given, must be hashable since it is used by the
+        ThreadPool object to store the results of that work request in a
+        dictionary. It defaults to the return value of id(self).
+        """
+
+        if requestID is None:
+            self.requestID = id(self)
+        else:
+            try:
+                hash(requestID)
+            except TypeError:
+                raise TypeError("requestID must be hashable.")
+            self.requestID = requestID
+        self.exception = False
+        self.callback = callback
+        self.exc_callback = exc_callback
+        self.callable = callable
+        self.args = args or []
+        self.kwds = kwds or {}
+
+
+class ThreadPool:
+    """A thread pool, distributing work requests and collecting results.
+
+    See the module doctring for more information.
+    """
+
+    def __init__(self, num_workers, q_size=0):
+        """Set up the thread pool and start num_workers worker threads.
+
+        num_workers is the number of worker threads to start initialy.
+        If q_size > 0 the size of the work request queue is limited and
+        the thread pool blocks when the queue is full and it tries to put
+        more work requests in it (see putRequest method).
+        """
+
+        self.requestsQueue = Queue.Queue(q_size)
+        self.resultsQueue = Queue.Queue()
+        self.workers = []
+        self.workRequests = {}
+        self.createWorkers(num_workers)
+
+    def createWorkers(self, num_workers):
+        """Add num_workers worker threads to the pool."""
+
+        for i in range(num_workers):
+            self.workers.append(WorkerThread(self.requestsQueue,
+              self.resultsQueue))
+
+    def dismissWorkers(self, num_workers):
+        """Tell num_workers worker threads to quit after their current task.
+        """
+
+        for i in range(min(num_workers, len(self.workers))):
+            worker = self.workers.pop()
+            worker.dismiss()
+
+    def addWork(self, callable, args=None, kwds=None, requestID=None, callback=None, exc_callback=None, block=True, timeout=0):
+        request = WorkRequest(callable, args, kwds, requestID, callback, exc_callback)
+        self.putRequest(request, block, timeout)
+        
+    def putRequest(self, request, block=True, timeout=0):
+        """Put work request into work queue and save its id for later."""
+
+        assert isinstance(request, WorkRequest)
+        self.requestsQueue.put(request, block, timeout)
+        self.workRequests[request.requestID] = request
+
+    def poll(self, block=False):
+        """Process any new results in the queue."""
+
+        while True:
+            # still results pending?
+            if not self.workRequests:
+                raise NoResultsPending
+            # are there still workers to process remaining requests?
+            elif block and not self.workers:
+                raise NoWorkersAvailable
+            try:
+                # get back next results
+                request, result = self.resultsQueue.get(block=block)
+                # has an exception occured?
+                if request.exception and request.exc_callback:
+                    request.exc_callback(request, result)
+                # hand results to callback, if any
+                if request.callback and not \
+                  (request.exception and request.exc_callback):
+                    request.callback(request, result)
+                del self.workRequests[request.requestID]
+            except Queue.Empty:
+                break
+
+    def wait(self):
+        """Wait for results, blocking until all have arrived."""
+
+        while 1:
+            try:
+                self.poll(True)
+            except NoResultsPending:
+                break
+
+# helper functions
+def makeRequests(callable, args_list, callback=None, exc_callback=None):
+    """Create several work requests for same callable with different arguments.
+
+    Convenience function for creating several work requests for the same
+    callable where each invocation of the callable receives different values
+    for its arguments.
+
+    args_list contains the parameters for each invocation of callable.
+    Each item in 'args_list' should be either a 2-item tuple of the list of
+    positional arguments and a dictionary of keyword arguments or a single,
+    non-tuple argument.
+
+    See docstring for WorkRequest for info on callback and exc_callback.
+    """
+
+    requests = []
+    for item in args_list:
+        if isinstance(item, tuple):
+            requests.append(
+              WorkRequest(callable, item[0], item[1], callback=callback,
+                exc_callback=exc_callback)
+            )
+        else:
+            requests.append(
+              WorkRequest(callable, [item], None, callback=callback,
+                exc_callback=exc_callback)
+            )
+    return requests
+
+################
+# USAGE EXAMPLE
+################
+
+if __name__ == '__main__':
+    import random
+    import time
+
+    # the work the threads will have to do (rather trivial in our example)
+    def do_something(data):
+        time.sleep(random.randint(1, 5))
+        result = round(random.random() * data, 5)
+        # just to show off, we throw an exception once in a while
+        if result > 3:
+            raise RuntimeError("Something extraordinary happened!")
+        return result
+
+    # this will be called each time a result is available
+    def print_result(request, result):
+        print "**Result: %s from request #%s" % (result, request.requestID)
+
+    # this will be called when an exception occurs within a thread
+    def handle_exception(request, exc_info):
+        print "Exception occured in request #%s: %s" % \
+          (request.requestID, exc_info[1])
+
+    # assemble the arguments for each job to a list...
+    data = [random.randint(1, 10) for i in range(20)]
+    # ... and build a WorkRequest object for each item in data
+    requests = makeRequests(do_something, data, print_result, handle_exception)
+
+    # or the other form of args_lists accepted by makeRequests: ((,), {})
+    data = [((random.randint(1, 10), ), {}) for i in range(20)]
+    requests.extend(
+      makeRequests(do_something, data, print_result, handle_exception)
+    )
+
+    # we create a pool of 3 worker threads
+    main = ThreadPool(3)
+
+    # then we put the work requests in the queue...
+    for req in requests:
+        main.putRequest(req)
+        print "Work request #%s added." % req.requestID
+    # or shorter:
+    # [main.putRequest(req) for req in requests]
+
+    # ...and wait for the results to arrive in the result queue
+    # by using ThreadPool.wait(). This would block until results for
+    # all work requests have arrived:
+    # main.wait()
+
+    # instead we can poll for results while doing something else:
+    i = 0
+    while 1:
+        try:
+            main.poll()
+            print "Main thread working..."
+            time.sleep(0.5)
+            if i == 10:
+                print "Adding 3 more worker threads..."
+                main.createWorkers(3)
+            i += 1
+        except KeyboardInterrupt:
+            print "Interrupted!"
+            break
+        except NoResultsPending:
+            print "All results collected."
+            break
+
--- a/buildframework/helium/external/helium-antlib/diamonds/bld.bat	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-@echo off
-
-rem
-rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-rem All rights reserved.
-rem This component and the accompanying materials are made available
-rem under the terms of the License "Eclipse Public License v1.0"
-rem which accompanies this distribution, and is available
-rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
-rem
-rem Initial Contributors:
-rem Nokia Corporation - initial contribution.
-rem
-rem Contributors:
-rem
-rem Description: 
-rem
-
-setlocal
-if not defined JAVA_6_HOME (
-set TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
-) ELSE  set TESTED_JAVA=%JAVA_6_HOME%
-if exist %TESTED_JAVA% (set JAVA_HOME=%TESTED_JAVA%)
-
-REM Configure Ant 
-if not defined TESTED_ANT_HOME (
-set TESTED_ANT_HOME=C:\Apps\ant_1.7
-) 
-if exist %TESTED_ANT_HOME% (set ANT_HOME=%TESTED_ANT_HOME%)
-
-REM Configure the expected Ant Version details below
-SET expMajorVer=1
-SET expMinorVer=7
-
-rem *** Verify Ant Version ***
-rem -- Run the 'ant -version' command and capture the output to a variable 
-for /f "tokens=*" %%a in ('ant -version') do (set antversion=%%a)
-echo *** Installed Version : %antversion%
-
-rem -- Parse the version string obtained above and get the version number
-for /f "tokens=4 delims= " %%a in ("%antversion%") do set val=%%a
-rem -- Parse the version number delimiting the '.' and set the major and
-rem    minor versions
-for /f "tokens=1-2 delims=." %%a in ("%val%") do (
-set /A majorVersion=%%a
-set /A minorVersion=%%b
-)
-rem -- Check whether major version is greater than or equal to the expected.
-if %majorVersion% geq %expMajorVer% ( 
-rem -- if major version is valid, check minor version. If minor version is less
-rem    than expected display message and abort the execution.
-if %minorVersion% lss %expMinorVer% (echo *** Incorrect version of Ant found. Please check you have atleast Ant 1.7.0 & goto :errorstop ) 
-)
-
-ant %*
-endlocal
-
-:errorstop
-@echo *** Build aborted with error
-exit /b 1
--- a/buildframework/helium/external/helium-antlib/diamonds/build.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : build.xml 
-Part of     : Helium AntLib
-
-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="helium-diamonds">
-    <description>Helium Antlib build file.</description>
-    
-    <import file="../macros.ant.xml"/>
-    
-    <property name="name" value="diamonds"/>
-    
-    <path id="helium.diamonds.classpath">
-        <fileset dir="${helium.antlib.root.dir}/bin" includes="*.jar"/>
-        <fileset dir="${helium.antlib.root.dir}/diamonds/lib" includes="*.jar"/>
-    </path>
-
-</project>
-
-
Binary file buildframework/helium/external/helium-antlib/diamonds/lib/commons-codec-1.3.jar has changed
Binary file buildframework/helium/external/helium-antlib/diamonds/lib/commons-configuration-1.5.jar has changed
Binary file buildframework/helium/external/helium-antlib/diamonds/lib/commons-httpclient-3.1.jar has changed
Binary file buildframework/helium/external/helium-antlib/diamonds/lib/commons-lang-2.4.jar has changed
Binary file buildframework/helium/external/helium-antlib/diamonds/lib/commons-logging-1.1.1.jar has changed
--- a/buildframework/helium/external/helium-antlib/diamonds/src/com/nokia/helium/diamonds/DiamondsClient.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,233 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-
-package com.nokia.helium.diamonds;
-
-import org.apache.commons.httpclient.HttpClient;
-import org.apache.commons.httpclient.HttpException;
-import org.apache.commons.httpclient.methods.FileRequestEntity;
-import org.apache.commons.httpclient.methods.PostMethod;
-import org.apache.commons.httpclient.methods.RequestEntity;
-import org.apache.commons.lang.StringUtils;
-import org.apache.log4j.Logger;
-import com.nokia.helium.core.EmailDataSender;
-
-import java.io.IOException;
-import java.io.File;
-
-/**
- * Diamonds client used to connect to get build id and also to send the build
- * results
- * 
- */
-public class DiamondsClient {
-
-    private static final int INT_SERV_ERROR = 500;
-
-    private static final int SERV_NOT_FOUND = 404;
-
-    private static final int SERV_OK = 200;
-    
-    private boolean isRecordOnly;
-
-    private Logger log = Logger.getLogger(DiamondsClient.class);
-
-    private String host;
-
-    private String port;
-
-    private String path;
-
-    private String emailID;
-
-    private HttpClient httpClient;
-
-
-    public DiamondsClient(String hst, String prt, String pth, String mailID) {
-        host = hst;
-        port = prt;
-        path = pth;
-        emailID = mailID;
-        httpClient = new HttpClient();
-    }
-
-    private int executeMethod(PostMethod postMethod) throws DiamondsException {
-        int result = 0;
-        try {
-            result = httpClient.executeMethod(postMethod);
-        } catch (IOException e) {
-            isRecordOnly = true;
-            throw new DiamondsException("IOException while sending http request." + e.getMessage());
-            // e.printStackTrace();
-        }
-        return result;
-    }
-
-    private String checkForProtocol(String url) throws DiamondsException {
-        String retURL = url;
-        try {
-            if (!StringUtils.containsIgnoreCase(url, "http://")) {
-                retURL = "http://" + url;
-            }
-        } catch (Exception ex) {
-            // ex.printStackTrace();
-            isRecordOnly = true;
-            throw new DiamondsException("Failed to check url, defaulting to input. " + ex.getMessage());
-        }
-        return retURL;
-    }
-
-    private String getURL() throws DiamondsException {
-        return getURL(null);
-    }
-
-    private String getURL(String subPath) throws DiamondsException {
-        String urlPath = path;
-        if (subPath != null) {
-            urlPath = subPath;
-        }
-        return checkForProtocol("http://" + host + ":" + port + urlPath);
-    }
-
-    private PostMethod getPostMethod(String fileName, String urlPath) {
-
-        // Get the Diamonds XML-file which is to be exported
-        File input = new File(fileName);
-
-        // Prepare HTTP post
-        PostMethod post = new PostMethod(urlPath);
-
-        // Request content will be retrieved directly
-        // from the input stream
-
-        RequestEntity entity = new FileRequestEntity(input,
-                "text/xml; charset=ISO-8859-1");
-        post.setRequestEntity(entity);
-        return post;
-    }
-
-    private int processPostMethodResult(int result) {
-        // Log status code
-        switch (result) {
-        case INT_SERV_ERROR:
-            // log.error("Internal server error");
-            break;
-        case SERV_NOT_FOUND:
-            // log.error("Server not found");
-            break;
-        case SERV_OK:
-            // log.info("Connection to diamonds server - OK");
-            break;
-        default:
-            // log.debug("Response code: " + result);
-        }
-        return result;
-    }
-
-
-    /**
-     * 
-     * @param fileName
-     *            Filename to export to Diamonds
-     * @return diamonds build id
-     */
-    public String getBuildId(String fileName) throws DiamondsException {
-        String diamondsBuildID = null;
-        PostMethod postMethod = null;
-
-        // Get HTTP client
-        // MyHttpClient httpclient = createHttpClient();
-
-        // Execute post request
-        try {
-            if (!isRecordOnly) {
-                String strURL = getURL();
-                log.debug("strURL:" + strURL);
-                postMethod = getPostMethod(fileName, strURL);
-                log.debug("postmethod:" + postMethod);
-                int postMethodResult = httpClient.executeMethod(postMethod);
-                log.debug("postmethod-result:" + postMethodResult);
-    
-                int result = processPostMethodResult(postMethodResult);
-
-                if (result == SERV_OK) {
-                    // Display and save response code which functions as a id for
-                    // the build.
-                    diamondsBuildID = postMethod.getResponseBodyAsString();
-                    log.debug("diamondsBuildID: " + diamondsBuildID);
-                } else {
-                    isRecordOnly = true;
-                    log.error("Diamonds data not sent, because of connection failure.");
-                    //throw new DiamondsException("Connection Failed");
-                }
-            }
-        } catch (HttpException ex) {
-            isRecordOnly = true;
-            log.error("Diamonds data not sent, because of httpexception.", ex);
-            // log.error("Failed: " + ex.toString());
-            //throw new DiamondsException("Http Exception see the logs: "
-            //        + ex.getMessage());
-        } catch (IOException ex1) {
-            isRecordOnly = true;
-            log.error("Diamonds data not sent, because of io exception.", ex1);
-            // log.error("Failed: " + ex.toString());
-            //throw new DiamondsException("Network error, see the logs: "
-            //        + ex1.getMessage());
-        } finally {
-            // Release current connection to the connection pool once you are
-            // done
-            if (postMethod != null) {
-                postMethod.releaseConnection();
-            }
-        }
-        return diamondsBuildID;
-    }
-
-    public int sendData(String fileName, String urlPath) {
-        PostMethod postMethod = null;
-        int result = -1;
-        if (urlPath != null && !isRecordOnly) {
-            try {
-                String strURL = getURL(urlPath);
-                postMethod = getPostMethod(fileName, strURL);
-                result = processPostMethodResult(httpClient
-                        .executeMethod(postMethod));
-            } catch (Exception e) {
-                log.error("sendData:The final data via http not sent because errors: ", e);
-            }
-        }
-        return result;
-    }
-
-    public int sendDataByMail(String fileName, String smtpServer,
-            String ldapServer) {
-        log.debug("DiamondsClient:sendDataByEmail:emailID" + emailID);
-        EmailDataSender emailSender = new EmailDataSender(emailID, smtpServer,
-                ldapServer);
-        try {
-            log.debug("DiamondsClient:sendDataByEmail: " + fileName);
-            emailSender.sendData("diamonds", fileName, "application/xml",
-                    "[DIAMONDS_DATA]", null);
-            log.debug("DiamondsClient:sendDataByEmail:succeeds");
-        } catch (Exception e) {
-            log.error("sendDataByMail:The final data via http not sent because errors: ", e);
-            return -1;
-        }
-        return 0;
-    }
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/diamonds/src/com/nokia/helium/diamonds/DiamondsConfig.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,252 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-
-
-package com.nokia.helium.diamonds;
-
-import org.apache.tools.ant.BuildException;
-
-import java.util.*;
-import org.dom4j.io.SAXReader;
-import org.dom4j.Document;
-import org.dom4j.Element;
-import org.dom4j.Node;
-import org.apache.log4j.Logger;
-
-/**
- * Loads the configuration information from the xml file.
- * 
- */
-public final class DiamondsConfig {
-    private static DiamondsProperties diamondsProperties;
-
-    private static List<Stage> stages;
-
-    private static Logger log;
-
-    private static Map<String, Target> targets;
-
-    private static String outputDir;
-
-    private static String templateDir;
-    
-    private static String initialiserTargetName;
-
-    private DiamondsConfig() {
-    }
-    
-    /**
-     * Method accessed by loggers to load the diamonds specific configuration.
-     * 
-     * @param configFile
-     *            - configuration to load
-     * 
-     */
-    public static void parseConfiguration(String configFile)
-            throws DiamondsException {
-        if (log == null) {
-            log = Logger.getLogger(DiamondsConfig.class);
-        }
-        SAXReader saxReader = new SAXReader();
-        Document document = null;
-        try {
-            log.debug("Reading diamonds configuration.");
-            document = saxReader.read(configFile);
-        } catch (Exception e) {
-            // No need to fail the build due to internal Helium configuration errors.
-            log.debug("Diamonds configuration parsing error: "
-                    + e.getMessage());
-        }
-        parseConfig(document);
-        diamondsProperties = parseDiamondsProperties(document);
-        stages = parseStages(document);
-        targets = parseTargets(document);
-    }
-
-    /**
-     * Parses the general configuration info.
-     * 
-     * @param document
-     *            - XML config in DOM4J document
-     */
-    private static void parseConfig(Document document) {
-        log.debug("diamonds:DiamondsConfig:parsing general configuration.");
-        Node node = document.selectSingleNode("//output-dir");
-        outputDir = node.valueOf("@path");
-        node = document.selectSingleNode("//template-dir");
-        templateDir = node.valueOf("@path");
-    }
-
-    /**
-     * Parses the server info.
-     * 
-     * @param document
-     *            - XML config in DOM4J document
-     */
-    private static DiamondsProperties parseDiamondsProperties(Document document) {
-        log.debug("diamonds:DiamondsConfig:parsing diamonds properties.");
-        
-        Map<String, String> propertiesMap = new HashMap<String, String>();
-        
-        loadProperty(document, propertiesMap, "host");
-        loadProperty(document, propertiesMap, "port");
-        loadProperty(document, propertiesMap, "path");
-        loadProperty(document, propertiesMap, "tstampformat");
-        loadProperty(document, propertiesMap, "mail");
-        loadProperty(document, propertiesMap, "ldapserver");
-        loadProperty(document, propertiesMap, "smtpserver");
-        loadProperty(document, propertiesMap, "initialiser-target-name");
-        loadProperty(document, propertiesMap, "category-property");
-        loadProperty(document, propertiesMap, "buildid-property");
-        return new DiamondsProperties(propertiesMap);
-    }
-
-    /**
-     * Parses the Targets data from config.
-     * 
-     * @param document
-     *            - XML config in DOM4J document
-     * @return list of targets available in the config
-     */
-    @SuppressWarnings("unchecked")
-    private static Map<String, Target> parseTargets(Document document) {
-        log.debug("diamonds:DiamondsConfig:parsing for targets");
-        Map<String, Target> targets = new HashMap<String, Target>();
-        List<Element> stageNodes = document.selectNodes("//target");
-       
-        // Set initialiserTargetName according to target name defined Diamonds config file
-        initialiserTargetName = diamondsProperties.getProperty("initialiser-target-name");
-        targets.put(initialiserTargetName, new Target(initialiserTargetName,"","","",""));
-        for (Element stageNode : stageNodes) {
-            targets.put(stageNode.valueOf("@name"), new Target(stageNode
-                    .valueOf("@name"), stageNode.valueOf("@template-file"),
-                    stageNode.valueOf("@logfile"), stageNode
-                            .valueOf("@ant-properties"), stageNode
-                            .valueOf("@defer")));
-        }
-        return targets;
-    }
-
-    /**
-     * Parses the stages info.
-     * 
-     * @param document
-     *            - XML config in DOM4J document
-     * @return list of stages in config
-     */
-    @SuppressWarnings("unchecked")
-    private static List<Stage> parseStages(Document document) {
-        List<Stage> stages = new ArrayList<Stage>();
-        List<Element> stageNodes = document.selectNodes("//stage");
-        log.debug("diamonds:DiamondsConfig:parsing for stages");
-        for (Element stage : stageNodes) {
-            stages.add(new Stage(stage.valueOf("@name"), stage
-                    .valueOf("@start"), stage.valueOf("@end"), stage
-                    .valueOf("@logfile")));
-        }
-        return stages;
-    }
-
-    /**
-     * Helper function to get the stages
-     * 
-     * @return the stages from config in memory
-     */
-    static List<Stage> getStages() {
-        return stages;
-    }
-
-    /**
-     * Helper function to get the targets
-     * 
-     * @return the targets from config in memory
-     */
-    static Map<String, Target> getTargets() {
-        return targets;
-    }
-
-    /**
-     * Returns true if stages exists in config
-     * 
-     * @return the existance of stages in config
-     */
-    public static boolean isStagesInConfig() {
-        return stages != null;
-    }
-
-    /**
-     * Returns true if targets exists in config
-     * 
-     * @return the targets from config in memory
-     */
-    public static boolean isTargetsInConfig() {
-        return targets != null;
-    }
-
-    /**
-     * Gets the diamonds properties loaded from config
-     * 
-     * @return the targets from config in memory
-     */
-    public static DiamondsProperties getDiamondsProperties() {
-        return diamondsProperties;
-    }
-
-    /**
-     * Gets the output directory
-     * 
-     * @return the output directory, loaded from config
-     */
-    static String getOutputDir() {
-        return outputDir;
-    }
-
-    /**
-     * Gets the output directory
-     * 
-     * @return the output directory, loaded from config
-     */
-    static String getTemplateDir() {
-        return templateDir;
-    }
-    
-    /**
-     * Gets the initialiserTargetName
-     * 
-     * @return the initialiserTargetName, loaded from config
-     */
-    public static String getInitialiserTargetName() {
-        return initialiserTargetName;
-    }
-    
-    /**
-     * Load diamonds property into hashmap.
-     * @param doc
-     * @param hash
-     * @param name
-     * @return
-     */
-    public static void loadProperty(Document document, Map<String, String> hash, String name) {
-        Node node = document.selectSingleNode("//property[@name='" + name + "']");
-        if (node == null) {
-            throw new BuildException("diamonds: DiamondsConfig:'" + name + "' property definition is missing.");
-        }
-        hash.put(name, node.valueOf("@value"));
-    }
-
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/diamonds/src/com/nokia/helium/diamonds/DiamondsException.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-
-package com.nokia.helium.diamonds;
-
-/**
- * Exception class for Diamonds implementation
- * 
- */
-public class DiamondsException extends Exception {
-
-    private static final long serialVersionUID = 8743300713686555395L;
-
-    /**
-     * Constructor
-     * 
-     * @exception - exception to be processed.
-     */
-
-    public DiamondsException(String exception) {
-    }
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/diamonds/src/com/nokia/helium/diamonds/DiamondsExceptionStatusUpdate.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,173 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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: To update the build status to Diamonds with signals in case of build exceptions.
-*
-*/
- 
-package com.nokia.helium.diamonds;
-
-import org.apache.tools.ant.Project;
-import com.nokia.helium.core.ant.HlmExceptionHandler;
-import com.nokia.helium.core.PropertiesSource;
-import com.nokia.helium.core.TemplateInputSource;
-import com.nokia.helium.core.TemplateProcessor;
-import com.nokia.helium.signal.SignalStatus;
-import com.nokia.helium.signal.SignalStatusList;
-
-import org.apache.log4j.Logger;
-
-import java.util.Hashtable;
-import java.util.Vector;
-import java.util.List;
-import java.io.File;
-import java.util.ArrayList;
-import java.text.SimpleDateFormat;
-import java.util.Properties;
-
-
-/**
- * Class to store the builds status and check the signal is present in the deferred signal list.
- * if so get the signal informations like signal name, error message and target name.
- * With collected signal information and build status send the generated XML file to diamonds client class
- * to update the information into diamonds
- */
-public class DiamondsExceptionStatusUpdate implements HlmExceptionHandler {
-    private Logger log = Logger.getLogger(DiamondsExceptionStatusUpdate.class);
-
-    /* Initiate build status to failed as this method will be invoked in case of exceptions only */
-    private String buildStatus = "failed";
-
-    private SimpleDateFormat timeFormat;
-
-    private TemplateProcessor templateProcessor;
-
-    private Hashtable<String, String> signalInformation = new Hashtable<String, String>();
-
-    private String outputFile,templateFile;
-
-    private List<TemplateInputSource> sourceList = new ArrayList<TemplateInputSource>();
-
-    /**
-     * Implements the Exception method to update build status and signal information to diamonds.
-     * @param project
-     * @param module
-     * @param e
-     */
-    @SuppressWarnings("unchecked")
-    public void handleException(Project project, String module, Exception e) {
-        templateProcessor = new TemplateProcessor();
-        Properties tempProperties = new Properties();
-        String templateDir = DiamondsConfig.getTemplateDir();
-        /* Initialize the diamond properties class to access the diamonds properties */
-        DiamondsProperties diamondsProperties = DiamondsConfig.getDiamondsProperties();
-        //Check, Is the diamonds listener is initialized?
-        if (DiamondsListenerImpl.isInitialized()) {
-            timeFormat = new SimpleDateFormat(DiamondsConfig.getDiamondsProperties().getProperty("tstampformat"));
-            /* Initialize the diamond client class required to update the information into diamonds. */
-            DiamondsClient diamondsClient = new DiamondsClient(project
-                    .getProperty(diamondsProperties.getProperty("host")),
-                    project.getProperty(diamondsProperties
-                            .getProperty("port")), project
-                            .getProperty(diamondsProperties
-                                    .getProperty("path")), project
-                                    .getProperty(diamondsProperties
-                                            .getProperty("mail")));
-
-            /* Check is the signal is in deferred signal list?
-             * If so get the signal information like signal name, error message and target name
-             * 
-             */
-            if (SignalStatusList.getDeferredSignalList().hasSignalInList()) {
-                Vector<SignalStatus> signalList = SignalStatusList.getDeferredSignalList().getSignalStatusList();
-                timeFormat = new SimpleDateFormat(DiamondsConfig.getDiamondsProperties().getProperty("tstampformat"));
-                log.debug("Build Status = " + buildStatus);
-                int i = 0;
-                for (SignalStatus status : signalList) {
-                    signalInformation.put("diamond.signal.name." + i, status.getName());
-                    signalInformation.put("diamond.error.message." + i, status.getMessage());
-                    signalInformation.put("diamond.time.stamp." + i,new String(timeFormat.format(status.getTimestamp())));
-                    i += 1;
-                }
-                /* Generate the signal XML file required for diamonds to update the signal information,
-                 * using templateprocessor class
-                 */
-                templateFile = "diamonds_signal.xml.ftl";
-                outputFile = DiamondsConfig.getOutputDir() + File.separator + "diamonds-signal.xml";
-                sourceList.add(new PropertiesSource("diamondSignal", signalInformation));
-                templateProcessor.convertTemplate(templateDir, templateFile, outputFile,sourceList);
-
-                /* send the generated XML file for diamonds client to update the signals information into Diamonds */
-                log.debug("sending data to diamonds ..." + outputFile);
-                diamondsClient.sendData(outputFile, DiamondsConfig.getDiamondsProperties().getDiamondsBuildID());
-                try {
-                    DiamondsListenerImpl.mergeToFullResults(new File(outputFile));
-                } catch (DiamondsException de) {
-                    log.error("Not able to merge into full results XML file " + de.getMessage(), de);
-                }
-            }
-            /* Check, is the signal is in now signal list?
-             * If so get the signal information like signal name, error message and target name
-             * 
-             */
-            if (SignalStatusList.getNowSignalList().hasSignalInList()) {
-                Vector<SignalStatus> signalList = SignalStatusList.getNowSignalList().getSignalStatusList();
-                buildStatus = "failed";
-                timeFormat = new SimpleDateFormat(DiamondsConfig.getDiamondsProperties().getProperty("tstampformat"));
-                log.debug("Build Status = " + buildStatus);
-                int i = 0;
-                for (SignalStatus status : signalList) {
-                    signalInformation.put("diamond.signal.name." + i, status.getName());
-                    signalInformation.put("diamond.error.message." + i, status.getMessage());
-                    signalInformation.put("diamond.time.stamp." + i,new String(timeFormat.format(status.getTimestamp())));
-                    i += 1;
-                }
-                /* Generate the signal XML file required for diamonds to update the signal information,
-                 * using templateprocessor class
-                 */
-                templateFile = "diamonds_signal.xml.ftl";
-                outputFile = DiamondsConfig.getOutputDir() + File.separator + "diamonds-signal.xml";
-                sourceList.add(new PropertiesSource("diamondSignal", signalInformation));
-                templateProcessor.convertTemplate(templateDir, templateFile, outputFile,sourceList);
-
-                /* send the generated XML file for diamonds client to update the signals information into Diamonds */
-                log.debug("sending data to diamonds ..." + outputFile);
-                diamondsClient.sendData(outputFile, DiamondsConfig.getDiamondsProperties().getDiamondsBuildID());
-                try {
-                    DiamondsListenerImpl.mergeToFullResults(new File(outputFile));
-                } catch (DiamondsException de) {
-                    log.error("Not able to merge into full results XML file " + de.getMessage(), de);
-                }
-            }
-            /* Generate the build status XML file required for diamonds to update the build status information,
-             * using templateprocessor class. 
-             */
-            tempProperties.put("build.status", buildStatus);
-            sourceList.add(new PropertiesSource("ant", project.getProperties()));
-            sourceList.add(new PropertiesSource("diamonds", tempProperties));
-            outputFile = DiamondsConfig.getOutputDir() + File.separator + "diamonds-status.xml";
-            templateFile = "diamonds_status.xml.ftl";
-            templateProcessor.convertTemplate(templateDir, templateFile, outputFile, sourceList);
-
-            /* send the generated XML file for diamonds client to update the build status into Diamonds */
-            log.debug("[DiamondsExceptionStatusUpdate] => sending data to diamonds ..." + outputFile);
-            diamondsClient.sendData(outputFile, DiamondsConfig.getDiamondsProperties().getDiamondsBuildID());
-            try {
-                DiamondsListenerImpl.mergeToFullResults(new File(outputFile));
-            } catch (DiamondsException de) {
-                log.error("Not able to merge into full results XML file " + de.getMessage(), de);
-            }
-        }
-
-    }
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/diamonds/src/com/nokia/helium/diamonds/DiamondsListener.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-package com.nokia.helium.diamonds;
-
-import org.apache.tools.ant.BuildEvent;
-
-/**
- * Diamonds specific Listener interface.
- * 
- */
-public interface DiamondsListener {
-    /**
-     * Function to process logging info during beginning of target execution
-     * 
-     * @param event
-     *            of target execution.
-     */
-    void targetBegin(BuildEvent buildEvent) throws DiamondsException;
-
-    /**
-     * Function to process logging info during end of target execution
-     * 
-     * @param event
-     *            of target execution.
-     */
-    void targetEnd(BuildEvent buildEvent) throws DiamondsException;
-
-    /**
-     * Function to process logging info during beginning of build
-     * 
-     * @param event
-     *            of target execution.
-     */
-    void buildBegin(BuildEvent buildEvent) throws DiamondsException;
-
-    /**
-     * Function to process logging info during end of build
-     * 
-     * @param event
-     *            of target execution.
-     */
-    void buildEnd(BuildEvent buildEvent) throws DiamondsException;
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/diamonds/src/com/nokia/helium/diamonds/DiamondsListenerImpl.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,284 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-
-package com.nokia.helium.diamonds;
-
-import org.apache.tools.ant.BuildEvent;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.util.FileUtils;
-import java.util.Date;
-import java.util.List;
-import java.util.HashSet;
-import java.io.File;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.ListIterator;
-import org.apache.log4j.Logger;
-import java.util.Properties;
-import com.nokia.helium.core.PropertiesSource;
-import com.nokia.helium.core.TemplateInputSource;
-import com.nokia.helium.core.TemplateProcessor;
-
-/**
- * Base diamonds logger implementation. The common implementation like
- * initialization done here and used by sub classes.
- */
-public class DiamondsListenerImpl implements DiamondsListener {
-
-    private static ArrayList<File> finalLogList = new ArrayList<File>();
-
-    private static DiamondsClient diamondsClient;
-
-    private static boolean isInitialized;
-
-    private static ArrayList<String> deferLogList = new ArrayList<String>();
-
-    private TemplateProcessor templateProcessor;
-
-    private Project project;
-    
-    private SimpleDateFormat timeFormat;
-
-    private Date buildStartTime;
-    
-    private Logger log = Logger.getLogger(DiamondsListenerImpl.class);
-
-    /**
-     * Default constructor
-     */
-    public DiamondsListenerImpl() {
-        templateProcessor = new TemplateProcessor();
-        timeFormat = new SimpleDateFormat(DiamondsConfig
-                .getDiamondsProperties().getProperty("tstampformat"));
-    }
-
-    /**
-     * Function to process logging info during end of build
-     * 
-     * @param event
-     *            of target execution.
-     */
-    public final void buildBegin(BuildEvent buildEvent)
-            throws DiamondsException {
-        project = buildEvent.getProject();
-        buildStartTime = new Date();
-    }
-    
-    /**
-     * Function to process logging info during end of build
-     * 
-     * @param event
-     *            of target execution.
-     */
-    @SuppressWarnings("unchecked")
-    public final void buildEnd(BuildEvent buildEvent) throws DiamondsException {
-        if (isInitialized()) {
-            log.debug("diamonds:DiamondsListenerImpl:sending final data to diamonds.");
-            String output = DiamondsConfig.getOutputDir() + File.separator
-                    + "diamonds-finish.xml";
-            File outputFile = new File(output);
-            String finishTemplateFile = "diamonds_finish.xml.ftl";
-            try {
-                Properties tempProperties = new Properties();
-                tempProperties.put("build.end.time", timeFormat
-                        .format(new Date()));
-                List<TemplateInputSource> sourceList = new ArrayList<TemplateInputSource>();
-                sourceList.add(new PropertiesSource("ant", project
-                        .getProperties()));
-                sourceList
-                        .add(new PropertiesSource("diamonds", tempProperties));
-                templateProcessor.convertTemplate(DiamondsConfig
-                        .getTemplateDir(), finishTemplateFile, output,
-                        sourceList);
-            } catch (Exception e) {
-                throw new DiamondsException(
-                        "failed to convert the build finish template: "
-                                + e.getMessage());
-            }
-
-            try {
-                log.info("Sending final data to diamonds.");
-                // String mergedFile = mergeFiles(output);
-                diamondsClient.sendData(output, DiamondsConfig
-                        .getDiamondsProperties().getDiamondsBuildID());
-            } catch (Exception e) {
-                throw new DiamondsException("Failed to send data to diamonds: "
-                        + e.getMessage());
-            }
-            mergeToFullResults(outputFile);
-            isInitialized = false;
-            DiamondsProperties props = DiamondsConfig.getDiamondsProperties();
-            String smtpServer = project.getProperty(props
-                    .getProperty("smtpserver"));
-            String ldapServer = project.getProperty(props
-                    .getProperty("ldapserver"));
-
-            try {
-                File first = finalLogList.remove(0);
-                String outputDir = DiamondsConfig.getOutputDir();
-                File fullResultsFile = new File(outputDir + File.separator
-                        + "diamonds-full-results.xml");
-                FileUtils.getFileUtils().copyFile(first, fullResultsFile);
-                XMLMerger merger = new XMLMerger(fullResultsFile);
-                HashSet<File> h = new HashSet<File>(finalLogList);
-                for (File f : h) {
-                    try {
-                        merger.merge(f);
-                    } catch (XMLMerger.XMLMergerException xe) {
-                        log.debug("Error during the merge: ", xe);
-                    }
-                }
-                diamondsClient.sendDataByMail(
-                        fullResultsFile.getAbsolutePath(), smtpServer,
-                        ldapServer);
-            } catch (Exception e) {
-                log.error("Error sending diamonds final log: ", e);
-            }
-        }
-    }
-
-    /**
-     * Function to process logging info during begining of target execution
-     * 
-     * @param event
-     *            of target execution.
-     */
-    public void targetBegin(BuildEvent buildEvent) throws DiamondsException {
-        initDiamondsClient();
-    }
-
-    /**
-     * Function to process logging info during end of target execution
-     * 
-     * @param event
-     *            of target execution.
-     */
-    public void targetEnd(BuildEvent buildEvent) throws DiamondsException {
-    }
-
-    /**
-     * returns true if diamonds is already initialized for the build.
-     * 
-     * @param true diamonds initialized otherwise false.
-     */
-    public static boolean isInitialized() {
-        return isInitialized;
-    }
-
-    public static void mergeToFullResults(File xmlFile) throws DiamondsException {
-        finalLogList.add(xmlFile);
-    }
-
-    protected String getSourceFile(String inputName) {
-        return DiamondsConfig.getOutputDir() + File.separator + inputName
-                + ".xml";
-    }
-    
-    protected DiamondsClient getDiamondsClient() {
-        return diamondsClient;
-    }
-    
-    protected TemplateProcessor getTemplateProcessor() {
-        return templateProcessor;
-    }
-    
-    protected boolean getIsInitialized() {
-        return isInitialized;
-    }
-    
-    protected SimpleDateFormat getTimeFormat() {
-        return timeFormat;
-    }
-    
-    protected ArrayList<String> getDeferLogList() {
-        return deferLogList;
-    }
-
-    /**
-     * Initializes the diamonds client and sends the initial data
-     */
-    @SuppressWarnings("unchecked")
-    protected void initDiamondsClient() throws DiamondsException {
-        String outputDir = DiamondsConfig.getOutputDir();
-        if (!isInitialized) {
-            String startTemplateFile = "diamonds_start.xml.ftl";
-            String output = outputDir + File.separator
-                    + "diamonds-start.log.xml";
-            File outputFile = new File(output);
-            try {
-                Properties tempProperties = new Properties();
-                tempProperties.put("build.start.time", timeFormat
-                        .format(buildStartTime));
-                List<TemplateInputSource> sourceList = new ArrayList<TemplateInputSource>();
-                sourceList.add(new PropertiesSource("ant", project
-                        .getProperties()));
-                sourceList
-                        .add(new PropertiesSource("diamonds", tempProperties));
-                DiamondsProperties diamondsProperties = DiamondsConfig
-                        .getDiamondsProperties();
-                templateProcessor.convertTemplate(DiamondsConfig
-                        .getTemplateDir(), startTemplateFile, output,
-                        sourceList);
-                mergeToFullResults(outputFile);
-
-                // String mergedFile = mergeFiles(output);
-                log.info("Initializing diamonds client");
-                diamondsClient = new DiamondsClient(project
-                        .getProperty(diamondsProperties.getProperty("host")),
-                        project.getProperty(diamondsProperties
-                                .getProperty("port")), project
-                                .getProperty(diamondsProperties
-                                        .getProperty("path")), project
-                                .getProperty(diamondsProperties
-                                        .getProperty("mail")));
-                String buildID = diamondsClient
-                        .getBuildId(outputFile.getAbsolutePath());
-                if (buildID != null) {
-                    diamondsProperties.setDiamondsBuildID(buildID);
-                    project.setProperty(diamondsProperties.getProperty("buildid-property"),
-                            diamondsProperties.getDiamondsBuildID());
-                    log.info("Got build id from diamonds"
-                            + diamondsClient.getBuildId(outputFile
-                                    .getAbsolutePath()));
-                } else {
-                    diamondsProperties.setDiamondsBuildID(buildID);
-                    project.setProperty(diamondsProperties.getProperty("buildid-property"),
-                            "default");
-                    log.info("diamonds build id set to default and in record only mode");
-                }
-                if (deferLogList.size() > 0) {
-                    log
-                            .debug("diamonds:DiamondsListenerImpl: sending DefferList");
-                    ListIterator<String> defferList = deferLogList
-                            .listIterator();
-                    while (defferList.hasNext()) {
-                        String mergedDeferFile = defferList.next();
-                        mergeToFullResults(new File(mergedDeferFile));
-                        diamondsClient.sendData(mergedDeferFile, DiamondsConfig
-                                .getDiamondsProperties().getDiamondsBuildID());
-                    }
-                    deferLogList.clear();
-                }
-                isInitialized = true;
-            } catch (Exception e) {
-                throw new DiamondsException("failed to connect to diamonds: "
-                        + e.getMessage());
-            }
-        }
-    }
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/diamonds/src/com/nokia/helium/diamonds/DiamondsPostBuildStatusUpdate.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,100 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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: To update the build status to Diamonds with signals in case of build exceptions.
-*
-*/
- 
-package com.nokia.helium.diamonds;
-
-import org.apache.tools.ant.Project;
-import com.nokia.helium.core.ant.types.*;
-import com.nokia.helium.core.PropertiesSource;
-import com.nokia.helium.core.TemplateInputSource;
-import com.nokia.helium.core.TemplateProcessor;
-
-import org.apache.log4j.Logger;
-
-import java.util.List;
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Properties;
-
-
-/**
- * Class to store the builds status and send the generated XML file to diamonds client class
- * to update the build status into diamonds
- */
-public class DiamondsPostBuildStatusUpdate extends HlmPostDefImpl {
-    private Logger log;
-
-    /* Initiate build status to failed as this method will be invoked in case of exceptions only */
-    private String buildStatus = "succeeded";
-
-    private TemplateProcessor templateProcessor;
-
-    private String outputFile,templateFile;
-
-    private List<TemplateInputSource> sourceList = new ArrayList<TemplateInputSource>();
-
-    public DiamondsPostBuildStatusUpdate() {
-        log = Logger.getLogger(DiamondsPostBuildStatusUpdate.class);    
-    }
-
-    /**
-     * Override execute method to update build status to diamonds.
-     * @param prj
-     * @param module
-     * @param targetNames
-     */
-    @SuppressWarnings("unchecked")
-    public void execute(Project prj, String module, String[] targetNames) {
-        templateProcessor = new TemplateProcessor();
-        Properties tempProperties = new Properties();
-
-        /* Intialiaze the diamond properties class to access the diamonds properties */
-        DiamondsProperties diamondsProperties = DiamondsConfig.getDiamondsProperties();
-
-        //Check, Is the diamonds listener is initialized?
-        if (DiamondsListenerImpl.isInitialized()) {
-            /* Initialize the diamond client class required to update the information into diamonds. */
-            DiamondsClient diamondsClient = new DiamondsClient(getProject()
-                    .getProperty(diamondsProperties.getProperty("host")),
-                    getProject().getProperty(diamondsProperties
-                            .getProperty("port")), getProject()
-                            .getProperty(diamondsProperties
-                                    .getProperty("path")), getProject()
-                                    .getProperty(diamondsProperties
-                                            .getProperty("mail")));
-            /* Generate the build status XML file required for diamonds to update the build status information,
-             * using templateprocessor class. 
-             */
-            tempProperties.put("build.status", buildStatus);
-            sourceList.add(new PropertiesSource("ant", getProject().getProperties()));
-            sourceList.add(new PropertiesSource("diamonds", tempProperties));
-            outputFile = DiamondsConfig.getOutputDir() + File.separator + "diamonds-status.xml";
-            templateFile = "diamonds_status.xml.ftl";
-            templateProcessor.convertTemplate(DiamondsConfig.getTemplateDir(), templateFile, outputFile, sourceList);
-
-            /* send the generated XML file for diamonds client to update the build status into Diamonds */
-            log.debug("[DiamondsPostBuildStatusUpdate] => sending data to diamonds ..." + outputFile);
-            diamondsClient.sendData(outputFile, DiamondsConfig.getDiamondsProperties().getDiamondsBuildID());
-            try {
-                DiamondsListenerImpl.mergeToFullResults(new File(outputFile));
-            } catch (DiamondsException de) {
-                log.error("Not able to merge into full results XML file " + de.getMessage(), de);
-            }
-        }
-    }
-
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/diamonds/src/com/nokia/helium/diamonds/DiamondsProperties.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,64 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-
-
-package com.nokia.helium.diamonds;
-
-import java.util.Map;
-
-/**
- * Helper class for Diamonds properties need to connect.
- * 
- */
-public class DiamondsProperties {
-    private Map<String, String> diamondsProperties;
-
-    public DiamondsProperties(Map<String, String> configroperties) {
-        diamondsProperties = configroperties;
-    }
-
-    /**
-     * Gets the build id returned by Diamonds server.
-     * 
-     * @return build ID
-     */
-    public String getDiamondsBuildID() {
-        return diamondsProperties.get("buildid");
-    }
-
-    /**
-     * Sets the build id obtained from the server.
-     * 
-     * @param diamondsBuildID
-     */
-    public void setDiamondsBuildID(String diamondsBuildID) {
-        diamondsProperties.put("buildid", diamondsBuildID);
-    }
-
-    /**
-     * Returns the required property obtained from config
-     * 
-     * @param property
-     *            for which the values needs to be obtained.
-     * @return address of server
-     */
-    public String getProperty(String property) {
-        // need to validate the properties while assigning in constructor
-        return diamondsProperties.get(property);
-    }
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/diamonds/src/com/nokia/helium/diamonds/Stage.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,93 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-
-package com.nokia.helium.diamonds;
-
-/**
- * Helper class for Stage configuration of Diamonds.
- * 
- */
-public class Stage {
-    private String stageName;
-    private String startTargetName;
-    private String endTargetName;
-    private String source;
-
-    /**
-     * Constructor
-     * 
-     * @param stName
-     *            - name of the stage
-     * @param startTgName
-     *            - Name of the start target
-     * @param endTgName
-     *            - Name of the ending target of the stage
-     */
-    public Stage(String stName, String startTgName, String endTgName,
-            String sourceFiles) {
-        String emptyString = "";
-        if (!stName.equals(emptyString)) {
-            stageName = stName;
-        }
-        if (!startTgName.equals(emptyString)) {
-            startTargetName = startTgName;
-        }
-        if (!endTgName.equals(emptyString)) {
-            endTargetName = endTgName;
-        }
-        if (!sourceFiles.equals(emptyString)) {
-            source = sourceFiles;
-        }
-    }
-
-    /**
-     * Get the stage Name of the stage.
-     * 
-     * @return - name of the stage
-     */
-    public String getStageName() {
-        return stageName;
-    }
-
-    /**
-     * Get the stage Name of the stage.
-     * 
-     * @return - name of the stage
-     */
-    public String getSourceFile() {
-        return source;
-    }
-
-    /**
-     * gets the start target of the stage
-     * 
-     * @return - start target of the stage
-     */
-    public String getStartTargetName() {
-        return startTargetName;
-    }
-
-    /**
-     * gets the end target name of the stage.
-     * 
-     * @return - end target name of the stage
-     */
-    public String getEndTargetName() {
-        return endTargetName;
-    }
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/diamonds/src/com/nokia/helium/diamonds/StageDiamondsListener.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,219 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-package com.nokia.helium.diamonds;
-
-import org.apache.tools.ant.BuildEvent;
-import org.apache.tools.ant.Target;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.BuildException;
-
-
-
-import java.util.Date;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Enumeration;
-import java.util.Map;
-import java.io.File;
-import java.util.Iterator;
-import java.util.Vector;
-import java.util.ArrayList;
-import org.apache.log4j.Logger;
-
-import com.nokia.helium.core.PropertiesSource;
-import com.nokia.helium.core.TemplateInputSource;
-
-
-import com.nokia.helium.core.XMLTemplateSource;
-
-/**
- * Diamonds client used to connect to get build id and also to send the build
- * results
- * 
- */
-public class StageDiamondsListener extends DiamondsListenerImpl {
-
-    private static final Date INVALID_DATE = new Date(-1);
-
-    private Logger log = Logger.getLogger(StageDiamondsListener.class);
-    
-    private List<Map<String, Date>> stageTargetBeginList = new ArrayList<Map<String, Date>>();
-
-    private Map<String, Stage> stageTargetEndMap = new HashMap<String, Stage>();
-
-    private boolean isTargetMapInitialized;
-
-    private Project project;
-
-    private String currentStartTargetName;
-
-    private List<Stage> stages;
-
-    private Date currentStartTargetTime;
-
-    public StageDiamondsListener() {
-        stages = DiamondsConfig.getStages();
-    }
-
-    public void targetBegin(BuildEvent buildEvent) throws DiamondsException {
-        project = buildEvent.getProject();
-        String targetName = buildEvent.getTarget().getName();
-        if (!isTargetMapInitialized && stages != null) {
-            log
-                    .debug("diamonds:StageDiamondsListener: initializing for all stages.");
-            initStageTargetsMap();
-            isTargetMapInitialized = true;
-        }
-        log.debug("targetBegin targetName: " + targetName + " - currentStartTargetName:" + currentStartTargetName);
-        if (currentStartTargetName == null) {
-            findAndSetStartTimeForTargetInStageList(targetName);
-        }
-    }
-
-    @SuppressWarnings("unchecked")
-    public void targetEnd(BuildEvent buildEvent) throws DiamondsException {
-        if (currentStartTargetName != null) {
-            String targetName = buildEvent.getTarget().getName();
-            Stage stage = stageTargetEndMap.get(targetName);
-            if (stage != null && getIsInitialized() ) {
-                //initDiamondsClient();
-                String stageName = stage.getStageName();
-                String sourceFile = stage.getSourceFile();
-                log
-                        .debug("diamonds:StageDiamondsListener: finished recording for stage: "
-                                + stageName);
-                if (sourceFile == null) {
-                    sourceFile = getSourceFile(stageName);
-                }
-                project.setProperty("logical.stage", stageName);
-                project.setProperty("stage.start.time", getTimeFormat()
-                        .format(currentStartTargetTime));
-                project.setProperty("stage.end.time", getTimeFormat()
-                        .format(new Date()));
-                currentStartTargetName = null;
-                // Look for template file with stage name
-                String stageTemplateFileName = stageName + ".xml.ftl";
-                File stageTemplateFile = new File(stageTemplateFileName);
-                if (stageTemplateFile.exists()) {
-                    String output = DiamondsConfig.getOutputDir()
-                            + File.separator + stageName + ".xml";
-                    try {
-                        List<TemplateInputSource> sourceList = new ArrayList<TemplateInputSource>();
-                        sourceList.add(new PropertiesSource("ant", project
-                                .getProperties()));
-                        sourceList
-                                .add(new XMLTemplateSource("doc", new File(sourceFile)));
-                        getTemplateProcessor().convertTemplate(DiamondsConfig
-                                .getTemplateDir(), stageTemplateFileName,
-                                output, sourceList);
-                        mergeToFullResults(new File(output));
-
-                        // String mergedFile = mergeFiles(new File(output));
-
-                        log.info("Sending data to diamonds for stage: "
-                                + stageName);
-                        getDiamondsClient().sendData(output, DiamondsConfig
-                                .getDiamondsProperties().getDiamondsBuildID());
-                    } catch (com.nokia.helium.core.TemplateProcessorException e1) {
-                        throw new DiamondsException(
-                                "template conversion error for stage: "
-                                        + stageName + " : " + e1.getMessage());
-                    }
-                } else {
-                    log.debug("diamonds:StageDiamondsListener:tempalte file: "
-                            + stageTemplateFile + " does not exist");
-                }
-
-                String output = DiamondsConfig.getOutputDir() + File.separator
-                        + stageName + "-time.xml";
-                // Store the time for the current stage and send it
-                stageTemplateFileName = "diamonds_stage.xml.ftl";
-                try {
-                    List<TemplateInputSource> sourceList = new ArrayList<TemplateInputSource>();
-                    sourceList.add(new PropertiesSource("ant", project
-                            .getProperties()));
-                    sourceList.add(new XMLTemplateSource("doc", new File(sourceFile)));
-                    getTemplateProcessor().convertTemplate(DiamondsConfig
-                            .getTemplateDir(), stageTemplateFileName, output,
-                            sourceList);
-                    mergeToFullResults(new File(output));
-                    // List filesToMerge = new ArrayList();
-
-                    // mergedFile = mergeFiles(output);
-                    getDiamondsClient().sendData(output, DiamondsConfig
-                            .getDiamondsProperties().getDiamondsBuildID());
-                } catch (com.nokia.helium.core.TemplateProcessorException e1) {
-                    throw new DiamondsException("template conversion error while sending data for stage: "
-                            + stageName + " : " + e1.getMessage());
-                }
-            }
-        }
-    }
-
-    private void findAndSetStartTimeForTargetInStageList(String targetName)
-            throws DiamondsException {
-        for (Iterator<Map<String, Date>> listIter = stageTargetBeginList.iterator(); listIter
-                .hasNext();) {
-            Map<String, Date> stageMap = listIter.next();
-            Date targetTime = stageMap.get(targetName);
-            if (targetTime != null && targetTime.equals(INVALID_DATE)) {
-                log.debug("diamonds:StageDiamondsListener: started recording for stage-target: "
-                                + targetName);
-                stageMap.put(targetName, new Date());
-                currentStartTargetName = targetName;
-                currentStartTargetTime = new Date();
-            }
-        }
-    }
-
-    @SuppressWarnings("unchecked")
-    private void initStageTargetsMap() {
-        Iterator<Stage> iter = stages.iterator();
-        while (iter.hasNext()) {
-            // stage begin process
-            Stage stage = iter.next();
-            String startTargetName = stage.getStartTargetName();
-            Map<String, Date> stageMap = new HashMap<String, Date>();
-            Vector<Target> arrayList = null;
-            try {
-                arrayList = project.topoSort(startTargetName, project
-                        .getTargets(), false);
-            } catch (BuildException be) {
-                log.debug("Diamonds target missing: ", be);
-            }
-            if (arrayList != null) {
-                log.debug(" + Stage definition: " + stage.getStageName());
-                Enumeration<Target> targetEnum = arrayList.elements();
-                while (targetEnum.hasMoreElements()) {
-                    // fast lookup
-                    Target target = targetEnum.nextElement();
-                    stageMap.put(target.getName(), INVALID_DATE);
-                    log.debug("   - Start target: " + target.getName());
-                }
-                stageTargetBeginList.add(stageMap);
-
-                // stage end process
-                String endTargetName = stage.getEndTargetName();
-                // fast lookup
-                stageTargetEndMap.put(endTargetName, stage);
-                log.debug("   - End target: " + endTargetName);
-            }
-        }
-    }
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/diamonds/src/com/nokia/helium/diamonds/Target.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,109 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-
-package com.nokia.helium.diamonds;
-
-/**
- * Helper class for the target in diamonds config.
- * 
- */
-public class Target {
-    private String targetName;
-    private String source;
-    private boolean reqAntProperties;
-    private boolean defer;
-    private String templatefile;
-
-    /**
-     * Constructor
-     * 
-     * @param target
-     *            - name of the target
-     * @param src
-     *            - input source location.
-     */
-    public Target(String target, String src) {
-        this(target, null, src, "false", "false");
-    }
-
-    /**
-     * Constructor
-     * 
-     * @param target
-     *            - name of the target
-     * @param src
-     *            - input source location.
-     * @param antProps
-     *            - boolean to pass ant properties while conversion.
-     */
-    public Target(String target, String tplfile, String src, String antProps,
-            String deferSend) {
-        String emptyString = "";
-        if (!target.equals(emptyString)) {
-            targetName = target;
-        }
-        if (!src.equals(emptyString)) {
-            source = src;
-        }
-        if (!tplfile.equals(emptyString)) {
-            templatefile = tplfile;
-        }
-        if (antProps != null && antProps.equals("true")) {
-            reqAntProperties = true;
-        }
-        if (deferSend != null && deferSend.equals("true")) {
-            defer = true;
-        }
-    }
-
-    /**
-     * Get the target name of the target to send data
-     * 
-     * @return - target name of the target to send data
-     */
-    public String getTargetName() {
-        return targetName;
-    }
-
-    /**
-     * Get the input source used for template conversion.
-     * 
-     * @return - location of the input source.
-     */
-    public String getSource() {
-        return source;
-    }
-
-    public boolean isDefer() {
-        return defer;
-    }
-
-    public String getTemplateFile() {
-        return templatefile;
-    }
-
-    /**
-     * returns true if ant properties required for conversion, obtained from
-     * configuration.
-     * 
-     * @return - name of the stage
-     */
-    public boolean isAntPropertiesRequired() {
-        return reqAntProperties;
-    }
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/diamonds/src/com/nokia/helium/diamonds/TargetDiamondsListener.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,195 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-package com.nokia.helium.diamonds;
-
-import org.apache.tools.ant.BuildEvent;
-import org.apache.tools.ant.Target;
-import org.apache.tools.ant.Project;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Hashtable;
-import java.util.Map;
-import java.io.File;
-import org.apache.log4j.Logger;
-import com.nokia.helium.core.PropertiesSource;
-import com.nokia.helium.core.TemplateInputSource;
-import com.nokia.helium.core.XMLTemplateSource;
-
-/**
- * Listener sending data based on target configuration to diamonds.
- */
-public class TargetDiamondsListener extends DiamondsListenerImpl {
-
-    private Project project;
-    
-    private Logger log = Logger.getLogger(TargetDiamondsListener.class);
-
-    private Map<String, com.nokia.helium.diamonds.Target> targetsMap;
-
-    private String currentTarget;
-
-    /**
-     * Default constructor
-     */
-    public TargetDiamondsListener() {
-        targetsMap = DiamondsConfig.getTargets();
-    }
-
-    private boolean isTargetsToExecute(BuildEvent buildEvent) {
-        project = buildEvent.getProject();
-        Target target = buildEvent.getTarget();
-        boolean retValue = false;
-        com.nokia.helium.diamonds.Target currentTarget = targetsMap
-                .get(target.getName());
-        String currentTargetName = null;
-        if (currentTarget != null) {
-            currentTargetName = currentTarget.getTargetName();
-        }
-        if (currentTargetName != null) {
-            String ifCondition = target.getIf();
-            String unlessCondition = target.getUnless();
-            if (ifCondition == null && unlessCondition == null) {
-                retValue = true;
-            } else {
-                String ifProperty = project.getProperty(ifCondition);
-                String unlessProperty = project.getProperty(unlessCondition);
-                if (ifProperty != null || unlessProperty == null) {
-                    retValue = true;
-                }
-            }
-        }
-        return retValue;
-    }
-
-    /**
-     * Function to process logging info during beginning of target execution.
-     * This checks that the current target execution is in config and requires
-     * some data to be send it to diamonds.
-     * 
-     * @param event
-     *            of target execution.
-     */
-    public void targetBegin(BuildEvent buildEvent) throws DiamondsException {
-        String targetName = buildEvent.getTarget().getName();
-        if (isTargetsToExecute(buildEvent)) {
-            currentTarget = targetName;
-            com.nokia.helium.diamonds.Target target = targetsMap
-                    .get(currentTarget);
-            if (!target.isDefer()) {
-                initDiamondsClient();
-            }
-        }
-    }
-
-    /**
-     * Function to process logging info during end of build. If the target in
-     * config, sends the data to diamonds (uses the template conversion if
-     * needed).
-     * 
-     * @param event
-     *            of target execution.
-     */
-    public void targetEnd(BuildEvent buildEvent) throws DiamondsException {
-        String targetName = buildEvent.getTarget().getName();
-        if (currentTarget != null && currentTarget.equals(targetName)) {           
-            if (getIsInitialized()) {
-                log
-                .debug("diamonds:TargetDiamondsListener:finished recording, sending data to diamonds for target: "
-                        + buildEvent.getTarget().getName());
-                sendTargetData(buildEvent, buildEvent.getTarget().getProject());
-            }
-            currentTarget = null;
-        }
-    }
-
-    /**
-     * Sends the data to diamonds. First it looks if the template with target
-     * name exists, then it looks for input source file from config, if ant
-     * properties required from config, it uses it for template conversion. If
-     * no template file exists, sends the data directly.
-     * 
-     * @param event
-     *            of target execution.
-     */
-    @SuppressWarnings("unchecked")
-    private void sendTargetData(BuildEvent buildEvent, Project project)
-            throws DiamondsException {
-        com.nokia.helium.diamonds.Target target = targetsMap
-                .get(currentTarget);
-        String sourceFile = target.getSource();
-        if (sourceFile == null) {
-            sourceFile = getSourceFile(target.getTargetName());
-        }
-        Hashtable<String, String> antProperties = null;
-        String targetTemplateFile = target.getTemplateFile();
-        if (targetTemplateFile == null) {
-            targetTemplateFile = target.getTargetName() + ".xml.ftl";
-        }
-        String output = DiamondsConfig.getOutputDir() + File.separator
-                + target.getTargetName() + ".xml";
-        File templateFile = new File(DiamondsConfig.getTemplateDir(),
-                targetTemplateFile);
-        List<TemplateInputSource> sourceList = new ArrayList<TemplateInputSource>();
-        if (sourceFile == null) {
-            log
-                    .debug("diamonds:TargetDiamondsListener:sourceFile not defined.");
-        } else {
-            sourceList.add(new XMLTemplateSource("doc", new File(sourceFile)));
-        }
-        // Ant?
-        if (target.isAntPropertiesRequired()) {
-            sourceList
-                    .add(new PropertiesSource("ant", project.getProperties()));
-        }
-        try {
-            if (templateFile.exists()) {
-                if (!(antProperties == null && sourceFile == null)) {
-                    getTemplateProcessor().convertTemplate(DiamondsConfig
-                            .getTemplateDir(), targetTemplateFile, output,
-                            sourceList);
-                }
-            } else {
-                log
-                        .debug("sendTargetData: exists("
-                                + templateFile.getAbsolutePath() + ") => false");
-
-            }
-        } catch (com.nokia.helium.core.TemplateProcessorException e1) {
-            throw new DiamondsException("template conversion error while sending data for target:"
-                    + target + ":" + e1.getMessage());
-        }
-        File outputFile = new File(output);
-        if (outputFile.exists()) {
-            mergeToFullResults(outputFile);
-            if (!target.isDefer()) {
-                getDiamondsClient().sendData(outputFile.getAbsolutePath(),
-                        DiamondsConfig.getDiamondsProperties()
-                                .getDiamondsBuildID());
-            } else {
-                log.debug("diamonds:TargetDiamondsListener:defer logging for: "
-                        + outputFile);
-                getDeferLogList().add(output);
-            }
-        } else {
-            log.debug("diamonds:TargetDiamondsListener:outputfile "
-                    + outputFile + " does not exist");
-        }
-    }
-
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/diamonds/src/com/nokia/helium/diamonds/XMLMerger.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,181 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-
-package com.nokia.helium.diamonds;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.util.Iterator;
-import java.util.List;
-
-import org.apache.log4j.Logger;
-import org.dom4j.Attribute;
-import org.dom4j.Document;
-import org.dom4j.DocumentException;
-import org.dom4j.Element;
-import org.dom4j.io.OutputFormat;
-import org.dom4j.io.SAXReader;
-import org.dom4j.io.XMLWriter;
-
-/**
- * This class implements an XML file merger. All node from an external XML with
- * same format (same root node name) will get added to the source root element.
- */
-public class XMLMerger {
-    private Logger log = Logger.getLogger(getClass());
-    private File merge;
-    private Document doc;
-    private Element root;
-
-    /**
-     * Create an XMLMerger, the merge file will be used as input and output.
-     * 
-     * @param merge
-     * @throws XMLMergerException
-     */
-    public XMLMerger(File merge) throws XMLMergerException {
-        log.debug("Merging into: " + merge.getAbsolutePath());
-        try {
-            this.merge = merge;
-            SAXReader reader = new SAXReader();
-            doc = reader.read(merge);
-            root = doc.getRootElement();
-        } catch (DocumentException e) {
-            throw new XMLMergerException(e.getMessage());
-        }        
-    }
-    
-    /**
-     * Add all sub element of data file into the merged file. If the root
-     * element name is different for the merged file an XMLMergerException is
-     * thrown.
-     * 
-     * @param data
-     *            the input file.
-     * @throws XMLMergerException
-     */
-    public void merge(File data) throws XMLMergerException {
-        log.debug("Merging " + data.getAbsolutePath());
-        try {
-            SAXReader reader = new SAXReader();
-            Document dataDoc = reader.read(data);
-            Element dataRoot = dataDoc.getRootElement();
-            if (!root.getName().equals(dataRoot.getName())) {
-                throw new XMLMergerException(
-                        "Trying to merge incompatible xml format ('"
-                                + root.getName() + "'!='" + dataRoot.getName()
-                                + "')");
-            }
-            mergeNode(root, dataRoot);
-            write();
-        } catch (DocumentException e) {
-            throw new XMLMergerException(e.getMessage());
-        }
-    }
-
-    /**
-     * Merging two XML elements. It only keeps difference.
-     * 
-     * @param dest
-     * @param src
-     */
-    @SuppressWarnings("unchecked")
-    protected void mergeNode(Element dest, Element src) {
-        for (Iterator<Element> node = src.elements().iterator(); node.hasNext();) {
-            Element e = node.next();
-            
-            List<Element> ses = dest.elements(e.getName());
-            boolean add = true;
-            for (Element se : ses) {
-                if (areSame(se, e)) {
-                    log.debug("Element " + e.getName() + " already found in dest.");
-                    add = false;
-                }
-            }
-            if (add) {
-                log.debug("Adding node " + e.getName() + " to " + dest.getName());
-                dest.add(e.detach());
-            } else if (ses.size() > 0) {
-                log.debug("Merging " + ses.get(0).getName() + " to " + e.getName());
-                mergeNode(ses.get(0), e);
-            }
-        }
-    }
-
-    /**
-     * Compare two elements name and attributes. Returns true if name and all
-     * attributes are matching, false otherwise.
-     * 
-     * @param a
-     * @param b
-     * @return boolean
-     */
-    @SuppressWarnings("unchecked")
-    protected boolean areSame(Element a, Element b) {
-        log.debug("areSame:" + a + " <=> " + b);
-        if (!a.getName().equals(b.getName()))
-            return false;
-        log.debug("same attribute list size?");
-        if (a.attributes().size() != b.attributes().size())
-            return false;
-        log.debug("same attribute list?");
-        for (Iterator<Attribute> at = a.attributes().iterator(); at.hasNext();) {
-            Attribute attra = at.next();
-            Attribute attrb = b.attribute(attra.getName());
-            if (attrb == null || !attra.getValue().equals(attrb.getValue()))
-                return false;
-        }
-        if (!a.getTextTrim().equals(b.getTextTrim()))
-            return false;
-        return true;
-    }
-
-    /**
-     * Write the XML content back the file.
-     * @throws XMLMergerException
-     */
-    protected void write() throws XMLMergerException {
-        log.debug("Writing " + merge.getAbsolutePath());
-        try {
-            FileOutputStream fos = new FileOutputStream(merge);
-            OutputFormat format = OutputFormat.createPrettyPrint();
-            XMLWriter writer = new XMLWriter(fos, format);
-            writer.write(doc);
-            writer.flush();
-        } catch (Exception e) {
-            throw new XMLMergerException(e.getMessage());
-        }
-    }
-
-    /**
-     * Exception class related to the XMLMerger. 
-     */
-    public class XMLMergerException extends Exception {
-
-        private static final long serialVersionUID = 7624650310086957316L;
-
-        /**
-         * Default constructor.
-         * @param msg error message
-         */
-        public XMLMergerException(String msg) {
-            super(msg);
-        }
-    }
-
-}
--- a/buildframework/helium/external/helium-antlib/diamonds/src/com/nokia/helium/diamonds/ant/HeliumListener.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,253 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-
-package com.nokia.helium.diamonds.ant;
-
-import java.io.File;
-import java.util.Hashtable;
-import java.util.List;
-import java.util.ArrayList;
-import org.apache.tools.ant.BuildListener;
-import org.apache.tools.ant.BuildException;
-import com.nokia.helium.diamonds.*;
-import com.nokia.helium.core.PropertiesSource;
-import com.nokia.helium.core.TemplateProcessor;
-
-import org.apache.tools.ant.BuildEvent;
-import org.apache.tools.ant.Project;
-import org.apache.log4j.Logger;
-
-/**
- * Listener class that can connect to Ant and log information regarding to build
- * times, number of errors and such. Data is sent to Diamonds server, where it
- * is processed further.
- * 
- * This class is listening all build related events. It catches the build
- * start-finish, target start-finish events of Ant and gather build start-end
- * time, errors/warnings and store in BuildData class. Stored data will be
- * exported to XML and uploaded to Diamonds server after each specific target.
- * For example after target "create-bom" this class will upload all BOM data to
- * Diamonds.
- * 
- * 
- */
-public class HeliumListener implements BuildListener {
-
-    private Logger log = Logger.getLogger(HeliumListener.class);
-
-    private List<DiamondsListener> diamondsListeners;
-
-    private Project project;
-
-    private boolean isInitialized;
-
-    private boolean skipDiamonds;
-    private boolean skipDiamondsSet;
-
-    /**
-     * Default constructor.
-     */
-    public HeliumListener() {
-        diamondsListeners = new ArrayList<DiamondsListener>();
-    }
-
-    /**
-     * Ant call this function when build start.
-     */
-    public void buildStarted(BuildEvent event) {
-        project = event.getProject();
-    }
-
-    /**
-     * Triggered when a target starts.
-     */
-    @SuppressWarnings("unchecked") 
-    public void targetStarted(BuildEvent event) {
-        String targetName = event.getTarget().getName();
-        project = event.getProject();
-
-        String skip = project.getProperty("skip.diamonds");
-        if (skip != null && skip.equals("true")) {
-            skipDiamonds = true;
-        }
-        try {
-            if (!skipDiamonds) {
-                if (!isInitialized) {
-                    String configFile = project
-                            .getProperty("diamonds.listener.configuration.file");
-                    parseConfig(configFile, project.getProperties());
-                    isInitialized = true;
-                }
-                DiamondsProperties diamondProperties = DiamondsConfig
-                        .getDiamondsProperties();
-
-                /**
-                 * Initialize Diamonds if and only if initializer-target-name has been called
-                 */
-                if (targetName.equals(DiamondsConfig.getInitialiserTargetName())) {                                        
-                    String categoryName = diamondProperties.getProperty("category-property");
-                    String category = project.getProperty(categoryName);
-                    log.debug("category:" + category);
-                    if (category != null && diamondsListeners.isEmpty()) {
-                        addListeners(event);
-                        log.info("Diamonds enabled");
-                    }
-                }
-            } else {
-                if (!skipDiamondsSet && skipDiamonds)
-                {
-                    log.info("skip.diamonds set, to use diamonds don't set skip.diamonds.");
-                    skipDiamondsSet = true;
-                }
-            }
-        } catch (Exception ex) {
-            log.debug("Diamonds error: ", ex);
-            String errorMessage = ex.getMessage();
-            if (errorMessage == null) {
-                errorMessage = "";
-            }
-            log.error("Diamonds Error, might not be logged properly, see debug log. "
-                            + errorMessage);
-        }
-        if (diamondsListeners != null) {
-            for (DiamondsListener diamondsListener : diamondsListeners) {
-                try {
-                    diamondsListener.targetBegin(event);
-                } catch (Exception e) {
-                    log.debug("Error:", e);
-                    String errorMessage = e.getMessage();
-                    if (errorMessage == null) {
-                        errorMessage = "";
-                    }
-                    log.error("Diamonds Error, might not be logged properly, see debug log. "
-                                    + errorMessage);
-                }
-            }
-        }
-    }
-
-    @SuppressWarnings("unchecked") 
-    private void parseConfig(String configFile, Hashtable<String, String> antProperties) {
-        TemplateProcessor templateProcessor = new TemplateProcessor();
-        File outputFile = null;
-        try {
-            outputFile = File.createTempFile("diamonds", "-config.xml");
-            outputFile.deleteOnExit();
-            log
-                    .debug("Preprocessing the diamonds configuration: "
-                            + configFile);
-            List sourceList = new ArrayList();
-            sourceList.add(new PropertiesSource("ant", antProperties));
-            templateProcessor.convertTemplate(configFile,
-                    outputFile.toString(), sourceList);
-        } catch (Exception e) {
-            throw new BuildException(
-                    "Diamonds configuration pre-parsing error: "
-                            + e.getMessage());
-        }
-        try {
-            DiamondsConfig.parseConfiguration(outputFile.toString());
-        } catch (Exception e) {
-            throw new BuildException("Diamonds configuration parsing error: "
-                    + e.getMessage());
-        }
-    }
-
-    private void addListeners(BuildEvent event) throws DiamondsException {
-        if (DiamondsConfig.isStagesInConfig()) {
-            StageDiamondsListener stageListener = new StageDiamondsListener();
-            diamondsListeners.add(stageListener);
-            stageListener.buildBegin(event);
-        }
-        if (DiamondsConfig.isTargetsInConfig()) {
-            TargetDiamondsListener targetListener = new TargetDiamondsListener();
-            diamondsListeners.add(targetListener);
-            targetListener.buildBegin(event);
-        }
-    }
-
-    /**
-     * Triggered when a target finishes.
-     */
-    public void targetFinished(BuildEvent event) {
-        if (diamondsListeners != null) {
-            for (DiamondsListener diamondsListener : diamondsListeners) {
-                try {
-                    diamondsListener.targetEnd(event);
-                } catch (Exception e) {
-                    log.debug("Error:", e);
-                    String errorMessage = e.getMessage();
-                    if (errorMessage == null) {
-                        errorMessage = "";
-                    }
-                    log.error("Diamonds Error, might not be logged properly, see debug log. "
-                                    + errorMessage);
-                }
-
-            }
-        }
-    }
-
-    /**
-     * Triggered when the build finishes.
-     */
-    public void buildFinished(BuildEvent event) {
-        if (diamondsListeners != null) {
-            for (DiamondsListener diamondsListener : diamondsListeners) {
-                try {
-                    diamondsListener.buildEnd(event);
-                } catch (Exception e) {
-                    log.error("Failed to log in diamonds: " + e);
-                }
-
-            }
-        }
-        project = event.getProject();
-        cleanup();
-    }
-
-    /**
-     * See if build needs a final cleanup target to be called.
-     */
-    private void cleanup() {
-        String loggingoutputfile = project.getProperty("logging.output.file");
-        if (loggingoutputfile != null) {
-            File f = new File(loggingoutputfile);
-            if (f.exists())
-                f.delete();
-        }
-    }
-
-    /**
-     * Triggered when a task starts.
-     */
-    public void taskStarted(BuildEvent event) {
-    }
-
-    /**
-     * Triggered when a task finishes.
-     */
-    public void taskFinished(BuildEvent event) {
-    }
-
-    /**
-     * Triggered when a build message is logged.
-     */
-    public void messageLogged(BuildEvent event) {
-    }
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/diamonds/src/com/nokia/helium/diamonds/helium.antlib.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : libs.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="libs-diamonds" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
-    <description>
-        Ant task definition declarations.
-    </description>
-    <taskdef resource="com/nokia/helium/core/ant/antlib.xml" uri="http://www.nokia.com/helium" />
-    <typedef name="diamondsExceptionStatusUpdate" classname="com.nokia.helium.diamonds.DiamondsExceptionStatusUpdate" uri="http://www.nokia.com/helium"/>    
-    <typedef name="diamondsPostBuildStatusUpdate" classname="com.nokia.helium.diamonds.DiamondsPostBuildStatusUpdate" uri="http://www.nokia.com/helium"/>
-    <hlm:deflist id="helium-diamonds.list">
-        <hlm:listenerdef classname="com.nokia.helium.diamonds.ant.HeliumListener"/>
-        <hlm:diamondsExceptionStatusUpdate/>
-        <hlm:diamondsPostBuildStatusUpdate/>
-    </hlm:deflist>    
-</project>
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/diamonds/tests/bld.sh	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,24 +0,0 @@
-#!/bin/csh
-
-#
-# 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: 
-#
-
-
-
-setenv COMPUTERNAME fasbs01
-module load java/1.6.0
-setenv ANT_ARGS "-lib ../lib -lib ../../lib -lib ../../core/lib -lib ../../bin/helium-core.jar -lib ../../bin/helium-diamonds.jar -lib ../../antlibs"
-ant -Dant.executor.class="com.nokia.helium.core.ant.HeliumExecutor" $*
--- a/buildframework/helium/external/helium-antlib/diamonds/tests/build.bat	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-@echo off
-
-rem
-rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-rem All rights reserved.
-rem This component and the accompanying materials are made available
-rem under the terms of the License "Eclipse Public License v1.0"
-rem which accompanies this distribution, and is available
-rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
-rem
-rem Initial Contributors:
-rem Nokia Corporation - initial contribution.
-rem
-rem Contributors:
-rem
-rem Description: 
-rem
-
-setlocal
-if not defined JAVA_6_HOME (
-set TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
-) ELSE  set TESTED_JAVA=%JAVA_6_HOME%
-if exist %TESTED_JAVA% (set JAVA_HOME=%TESTED_JAVA%)
-set ANT_ARGS=-lib ..\lib -lib ..\..\lib -lib ..\..\core\lib -lib ..\..\bin\helium-core.jar -lib ..\..\bin\helium-diamonds.jar -lib ..\..\antlibs -lib ..\..\bin\helium-signaling.jar
-ant -Dant.executor.class=com.nokia.helium.core.ant.HeliumExecutor %*
-endlocal
-
--- a/buildframework/helium/external/helium-antlib/diamonds/tests/build.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : build.xml 
-Part of     : Helium AntLib
-
-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="helium-antlib-diamonds-unittest" xmlns:au="antlib:org.apache.ant.antunit">
-    <description>Helium Antlib diamonds tests.</description>
-    
-    <dirname property="diamonds.unitest.dir" file="${ant.file.helium-antlib-diamonds-unittest}" />
-    <property environment="env" />
-    <import file="../../../nokia/companyproperties.ant.xml" optional="true"/>
-    <import file="../../../../extensions/nokia/external/helium-nokia-antlib/companyproperties.ant.xml" optional="true"/>
-    <property name="diamonds.output.dir" location="${diamonds.unitest.dir}/output" />
-    <property name="diamonds.template.dir" location="${diamonds.unitest.dir}/templates" />
-    <property name="build.family" value="test_new_hlm"/>
-    <property name="id" value="123"/>
-    <property name="name" value="${build.family}_${id}"/>
-    <property name="build.system" value="ec-helium"/>
-    <property name="diamonds.listener.configuration.file" location="${diamonds.unitest.dir}/config/diamonds_config.xml.ftl" />
-    <property name="compile.log.input" location="${diamonds.unitest.dir}/data/compile.log.xml" />
-    <property name="codescanner.log.input" location="${diamonds.unitest.dir}/data/problemIndex.xml" />
-    <property name="policy.log.input" location="${diamonds.unitest.dir}/data/policy.log.xml" />
-    <property name="invalid.target.input.file" location="${diamonds.unitest.dir}/data/invalid.target.input.log.xml" />
-    <property name="symsee.version" value="9.1.0" />
-
-    <import file="./test_diamonds.ant.xml" />
-
-    <target name="unittest" depends="unittest-diamonds" />
-    
-    <target name="unittest-diamonds" >
-        <delete dir="${diamonds.unitest.dir}/output" failonerror="false"/>
-        <mkdir dir="${diamonds.unitest.dir}/output"/>
-        <antcall target="test-all" />
-    </target>
-</project>
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/diamonds/tests/config/diamonds_config.xml.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,67 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : diamonds_config.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:
-
-============================================================================
--->
-<configuration>
-<config>
-    <output-dir path="${ant['diamonds.output.dir']}"/>
-    <template-dir path="${ant['diamonds.template.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>
-            <!-- verifying basic stage input -->
-            <stage name="pre-build" start="version" end="version" />
-            
-            <!-- verifying basic stage input with input xml file-->
-            <stage name="build" start="compile-target" end="compile-target"
-                logfile="${ant['compile.log.input']}"/>
-    </stages>
-    <targets>
-        <target name="codescanner" template-file="codescanner.xml.ftl"
-            logfile="${ant['codescanner.log.input']}" />
-
-        <!-- 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-log" />
-        
-    <!-- Test the defer case -->
-        <target name="defer-type" template-file="tool.xml.ftl" 
-            ant-properties="true" defer="true"/>
-    </targets>
-</logger>
-</configuration>
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/diamonds/tests/data/compile.log.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2301 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<log filename="m:\output\logs\ido_tedo_mcl_devlon52_ec_MCL.52.105.s60_build_compile.log">
-    <build>
-        <task name="s60_build">
-            <task name="\s60\mw\telephonyservices\telsrv_dom\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\telsrv_sdk\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\cbs\CbsServer\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\cbs\cbsui\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\convergedcallengine\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\networkhandling\networkhandlingengine\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\aiwdialdata\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\CallUI\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\dialutils\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\EnPolicy\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneclient\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneserver\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satengine\SatServer\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satui\satapp\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satui\satplugin\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\utils\phoneparser\group">
-            </task>
-            <task name="\s60\app\telephony\tel_dom\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\Blacklist\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneui\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuicontrol\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuistates\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuiutils\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuiview\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuivoipextension\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\silenceactionplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\PhoneCntFinder\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\audiohandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\callhandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\contacthandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\loghandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\phonemodel\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\aiwcallimageplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\PsetNotesUi\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\pslncallimageplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\telephonysettings\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\SSSettings\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\dialer\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\BubbleManager\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\ConnectUtil\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\ServiceRequest\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\SFIUtils\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\Ussd\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\vmbx\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\TelephonyDeviceMode\group">
-            </task>
-            <task name="\s60\app\videotelephony\videotel_dom\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoengine\PacketVideoEngineBinaries\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoplugins\DisplaySink\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoplugins\VideoSource\group">
-            </task>
-            <task name="\s60\app\videotelephony\vtengines\videoteleng\Group">
-            </task>
-            <task name="\s60\app\videotelephony\vtengines\videotelcomms\group">
-            </task>
-            <task name="\s60\app\videotelephony\vtuis\videotelui\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\telsrv_dom\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\telsrv_sdk\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\cbs\CbsServer\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\cbs\cbsui\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\convergedcallengine\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\networkhandling\networkhandlingengine\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\aiwdialdata\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\CallUI\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\dialutils\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\EnPolicy\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneclient\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneserver\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satengine\SatServer\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satui\satapp\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satui\satplugin\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\utils\phoneparser\group">
-            </task>
-            <task name="\s60\app\telephony\tel_dom\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\Blacklist\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneui\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuicontrol\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuistates\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuiutils\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuiview\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuivoipextension\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\silenceactionplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\PhoneCntFinder\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\audiohandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\callhandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\contacthandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\loghandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\phonemodel\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\aiwcallimageplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\PsetNotesUi\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\pslncallimageplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\telephonysettings\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\SSSettings\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\dialer\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\BubbleManager\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\ConnectUtil\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\ServiceRequest\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\SFIUtils\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\Ussd\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\vmbx\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\TelephonyDeviceMode\group">
-            </task>
-            <task name="\s60\app\videotelephony\videotel_dom\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoengine\PacketVideoEngineBinaries\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoplugins\DisplaySink\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoplugins\VideoSource\group">
-            </task>
-            <task name="\s60\app\videotelephony\vtengines\videoteleng\Group">
-            </task>
-            <task name="\s60\app\videotelephony\vtengines\videotelcomms\group">
-            </task>
-            <task name="\s60\app\videotelephony\vtuis\videotelui\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\telsrv_dom\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\telsrv_sdk\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\cbs\CbsServer\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\cbs\cbsui\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\convergedcallengine\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\networkhandling\networkhandlingengine\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\aiwdialdata\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\CallUI\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\dialutils\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\EnPolicy\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneclient\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneserver\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satengine\SatServer\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satui\satapp\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satui\satplugin\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\utils\phoneparser\group">
-            </task>
-            <task name="\s60\app\telephony\tel_dom\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\Blacklist\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneui\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuicontrol\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuistates\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuiutils\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuiview\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuivoipextension\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\silenceactionplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\PhoneCntFinder\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\audiohandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\callhandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\contacthandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\loghandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\phonemodel\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\aiwcallimageplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\PsetNotesUi\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\pslncallimageplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\telephonysettings\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\SSSettings\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\dialer\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\BubbleManager\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\ConnectUtil\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\ServiceRequest\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\SFIUtils\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\Ussd\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\vmbx\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\TelephonyDeviceMode\group">
-            </task>
-            <task name="\s60\app\videotelephony\videotel_dom\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoengine\PacketVideoEngineBinaries\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoplugins\DisplaySink\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoplugins\VideoSource\group">
-            </task>
-            <task name="\s60\app\videotelephony\vtengines\videoteleng\Group">
-            </task>
-            <task name="\s60\app\videotelephony\vtengines\videotelcomms\group">
-            </task>
-            <task name="\s60\app\videotelephony\vtuis\videotelui\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\telsrv_dom\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\telsrv_sdk\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\cbs\CbsServer\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\cbs\cbsui\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\convergedcallengine\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\networkhandling\networkhandlingengine\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\aiwdialdata\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\CallUI\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\dialutils\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\EnPolicy\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneclient\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneserver\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satengine\SatServer\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satui\satapp\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satui\satplugin\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\utils\phoneparser\group">
-            </task>
-            <task name="\s60\app\telephony\tel_dom\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\Blacklist\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneui\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuicontrol\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuistates\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuiutils\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuiview\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuivoipextension\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\silenceactionplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\PhoneCntFinder\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\audiohandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\callhandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\contacthandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\loghandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\phonemodel\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\aiwcallimageplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\PsetNotesUi\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\pslncallimageplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\telephonysettings\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\SSSettings\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\dialer\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\BubbleManager\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\ConnectUtil\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\ServiceRequest\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\SFIUtils\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\Ussd\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\vmbx\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\TelephonyDeviceMode\group">
-            </task>
-            <task name="\s60\app\videotelephony\videotel_dom\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoengine\PacketVideoEngineBinaries\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoplugins\DisplaySink\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoplugins\VideoSource\group">
-            </task>
-            <task name="\s60\app\videotelephony\vtengines\videoteleng\Group">
-            </task>
-            <task name="\s60\app\videotelephony\vtengines\videotelcomms\group">
-            </task>
-            <task name="\s60\app\videotelephony\vtuis\videotelui\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\telsrv_dom\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\telsrv_sdk\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\cbs\CbsServer\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\cbs\cbsui\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\convergedcallengine\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\networkhandling\networkhandlingengine\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\aiwdialdata\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\CallUI\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\dialutils\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\EnPolicy\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneclient\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneserver\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satengine\SatServer\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satui\satapp\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satui\satplugin\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\utils\phoneparser\group">
-            </task>
-            <task name="\s60\app\telephony\tel_dom\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\Blacklist\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneui\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuicontrol\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuistates\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuiutils\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuiview\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuivoipextension\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\silenceactionplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\PhoneCntFinder\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\audiohandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\callhandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\contacthandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\loghandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\phonemodel\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\aiwcallimageplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\PsetNotesUi\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\pslncallimageplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\telephonysettings\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\SSSettings\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\dialer\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\BubbleManager\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\ConnectUtil\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\ServiceRequest\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\SFIUtils\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\Ussd\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\vmbx\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\TelephonyDeviceMode\group">
-            </task>
-            <task name="\s60\app\videotelephony\videotel_dom\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoengine\PacketVideoEngineBinaries\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoplugins\DisplaySink\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoplugins\VideoSource\group">
-            </task>
-            <task name="\s60\app\videotelephony\vtengines\videoteleng\Group">
-            </task>
-            <task name="\s60\app\videotelephony\vtengines\videotelcomms\group">
-            </task>
-            <task name="\s60\app\videotelephony\vtuis\videotelui\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\telsrv_dom\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\telsrv_sdk\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\cbs\CbsServer\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\cbs\cbsui\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\convergedcallengine\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\networkhandling\networkhandlingengine\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\aiwdialdata\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\CallUI\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\dialutils\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\EnPolicy\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneclient\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneserver\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satengine\SatServer\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satui\satapp\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satui\satplugin\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\utils\phoneparser\group">
-            </task>
-            <task name="\s60\app\telephony\tel_dom\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\Blacklist\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneui\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuicontrol\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuistates\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuiutils\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuiview\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuivoipextension\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\silenceactionplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\PhoneCntFinder\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\audiohandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\callhandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\contacthandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\loghandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\phonemodel\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\aiwcallimageplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\PsetNotesUi\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\pslncallimageplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\telephonysettings\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\SSSettings\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\dialer\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\BubbleManager\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\ConnectUtil\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\ServiceRequest\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\SFIUtils\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\Ussd\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\vmbx\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\TelephonyDeviceMode\group">
-            </task>
-            <task name="\s60\app\videotelephony\videotel_dom\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoengine\PacketVideoEngineBinaries\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoplugins\DisplaySink\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoplugins\VideoSource\group">
-            </task>
-            <task name="\s60\app\videotelephony\vtengines\videoteleng\Group">
-            </task>
-            <task name="\s60\app\videotelephony\vtengines\videotelcomms\group">
-            </task>
-            <task name="\s60\app\videotelephony\vtuis\videotelui\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\telsrv_dom\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\telsrv_sdk\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\cbs\CbsServer\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\cbs\cbsui\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\convergedcallengine\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\networkhandling\networkhandlingengine\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\aiwdialdata\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\CallUI\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\dialutils\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\EnPolicy\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneclient\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneserver\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satengine\SatServer\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satui\satapp\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satui\satplugin\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\utils\phoneparser\group">
-            </task>
-            <task name="\s60\app\telephony\tel_dom\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\Blacklist\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneui\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuicontrol\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuistates\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuiutils\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuiview\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuivoipextension\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\silenceactionplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\PhoneCntFinder\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\audiohandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\callhandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\contacthandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\loghandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\phonemodel\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\aiwcallimageplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\PsetNotesUi\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\pslncallimageplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\telephonysettings\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\SSSettings\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\dialer\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\BubbleManager\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\ConnectUtil\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\ServiceRequest\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\SFIUtils\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\Ussd\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\vmbx\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\TelephonyDeviceMode\group">
-            </task>
-            <task name="\s60\app\videotelephony\videotel_dom\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoengine\PacketVideoEngineBinaries\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoplugins\DisplaySink\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoplugins\VideoSource\group">
-            </task>
-            <task name="\s60\app\videotelephony\vtengines\videoteleng\Group">
-            </task>
-            <task name="\s60\app\videotelephony\vtengines\videotelcomms\group">
-            </task>
-            <task name="\s60\app\videotelephony\vtuis\videotelui\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\telsrv_dom\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\telsrv_sdk\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\cbs\CbsServer\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\cbs\cbsui\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\convergedcallengine\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\networkhandling\networkhandlingengine\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\aiwdialdata\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\CallUI\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\dialutils\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\EnPolicy\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneclient\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneserver\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satengine\SatServer\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satui\satapp\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satui\satplugin\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\utils\phoneparser\group">
-            </task>
-            <task name="\s60\app\telephony\tel_dom\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\Blacklist\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneui\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuicontrol\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuistates\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuiutils\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuiview\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuivoipextension\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\silenceactionplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\PhoneCntFinder\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\audiohandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\callhandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\contacthandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\loghandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\phonemodel\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\aiwcallimageplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\PsetNotesUi\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\pslncallimageplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\telephonysettings\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\SSSettings\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\dialer\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\BubbleManager\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\ConnectUtil\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\ServiceRequest\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\SFIUtils\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\Ussd\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\vmbx\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\TelephonyDeviceMode\group">
-            </task>
-            <task name="\s60\app\videotelephony\videotel_dom\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoengine\PacketVideoEngineBinaries\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoplugins\DisplaySink\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoplugins\VideoSource\group">
-            </task>
-            <task name="\s60\app\videotelephony\vtengines\videoteleng\Group">
-            </task>
-            <task name="\s60\app\videotelephony\vtengines\videotelcomms\group">
-            </task>
-            <task name="\s60\app\videotelephony\vtuis\videotelui\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\telsrv_dom\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\telsrv_sdk\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\cbs\CbsServer\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\cbs\cbsui\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\convergedcallengine\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\networkhandling\networkhandlingengine\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\aiwdialdata\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\CallUI\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\dialutils\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\EnPolicy\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneclient\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneserver\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satengine\SatServer\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satui\satapp\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satui\satplugin\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\utils\phoneparser\group">
-            </task>
-            <task name="\s60\app\telephony\tel_dom\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\Blacklist\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneui\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuicontrol\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuistates\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuiutils\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuiview\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuivoipextension\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\silenceactionplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\PhoneCntFinder\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\audiohandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\callhandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\contacthandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\loghandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\phonemodel\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\aiwcallimageplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\PsetNotesUi\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\pslncallimageplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\telephonysettings\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\SSSettings\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\dialer\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\BubbleManager\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\ConnectUtil\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\ServiceRequest\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\SFIUtils\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\Ussd\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\vmbx\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\TelephonyDeviceMode\group">
-            </task>
-            <task name="\s60\app\videotelephony\videotel_dom\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoengine\PacketVideoEngineBinaries\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoplugins\DisplaySink\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoplugins\VideoSource\group">
-            </task>
-            <task name="\s60\app\videotelephony\vtengines\videoteleng\Group">
-            </task>
-            <task name="\s60\app\videotelephony\vtengines\videotelcomms\group">
-            </task>
-            <task name="\s60\app\videotelephony\vtuis\videotelui\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\telsrv_dom\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\telsrv_sdk\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\cbs\CbsServer\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\cbs\cbsui\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\convergedcallengine\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\networkhandling\networkhandlingengine\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\aiwdialdata\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\CallUI\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\dialutils\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\EnPolicy\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneclient\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneserver\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satengine\SatServer\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satui\satapp\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satui\satplugin\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\utils\phoneparser\group">
-            </task>
-            <task name="\s60\app\telephony\tel_dom\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\Blacklist\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneui\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuicontrol\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuistates\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuiutils\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuiview\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuivoipextension\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\silenceactionplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\PhoneCntFinder\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\audiohandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\callhandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\contacthandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\loghandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\phonemodel\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\aiwcallimageplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\PsetNotesUi\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\pslncallimageplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\telephonysettings\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\SSSettings\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\dialer\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\BubbleManager\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\ConnectUtil\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\ServiceRequest\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\SFIUtils\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\Ussd\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\vmbx\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\TelephonyDeviceMode\group">
-            </task>
-            <task name="\s60\app\videotelephony\videotel_dom\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoengine\PacketVideoEngineBinaries\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoplugins\DisplaySink\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoplugins\VideoSource\group">
-            </task>
-            <task name="\s60\app\videotelephony\vtengines\videoteleng\Group">
-            </task>
-            <task name="\s60\app\videotelephony\vtengines\videotelcomms\group">
-            </task>
-            <task name="\s60\app\videotelephony\vtuis\videotelui\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\telsrv_dom\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\telsrv_sdk\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\cbs\CbsServer\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\cbs\cbsui\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\convergedcallengine\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\networkhandling\networkhandlingengine\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\aiwdialdata\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\CallUI\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\dialutils\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\EnPolicy\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneclient\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneserver\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satengine\SatServer\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satui\satapp\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satui\satplugin\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\utils\phoneparser\group">
-            </task>
-            <task name="\s60\app\telephony\tel_dom\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\Blacklist\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneui\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuicontrol\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuistates\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuiutils\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuiview\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuivoipextension\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\silenceactionplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\PhoneCntFinder\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\audiohandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\callhandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\contacthandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\loghandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\phonemodel\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\aiwcallimageplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\PsetNotesUi\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\pslncallimageplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\telephonysettings\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\SSSettings\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\dialer\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\BubbleManager\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\ConnectUtil\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\ServiceRequest\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\SFIUtils\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\Ussd\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\vmbx\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\TelephonyDeviceMode\group">
-            </task>
-            <task name="\s60\app\videotelephony\videotel_dom\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoengine\PacketVideoEngineBinaries\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoplugins\DisplaySink\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoplugins\VideoSource\group">
-            </task>
-            <task name="\s60\app\videotelephony\vtengines\videoteleng\Group">
-            </task>
-            <task name="\s60\app\videotelephony\vtengines\videotelcomms\group">
-            </task>
-            <task name="\s60\app\videotelephony\vtuis\videotelui\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\telsrv_dom\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\telsrv_sdk\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\cbs\CbsServer\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\cbs\cbsui\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\convergedcallengine\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\networkhandling\networkhandlingengine\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\aiwdialdata\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\CallUI\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\dialutils\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\EnPolicy\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneclient\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneserver\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satengine\SatServer\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satui\satapp\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satui\satplugin\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\utils\phoneparser\group">
-            </task>
-            <task name="\s60\app\telephony\tel_dom\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\Blacklist\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneui\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuicontrol\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuistates\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuiutils\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuiview\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuivoipextension\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\silenceactionplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\PhoneCntFinder\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\audiohandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\callhandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\contacthandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\loghandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\phonemodel\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\aiwcallimageplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\PsetNotesUi\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\pslncallimageplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\telephonysettings\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\SSSettings\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\dialer\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\BubbleManager\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\ConnectUtil\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\ServiceRequest\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\SFIUtils\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\Ussd\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\vmbx\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\TelephonyDeviceMode\group">
-            </task>
-            <task name="\s60\app\videotelephony\videotel_dom\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoengine\PacketVideoEngineBinaries\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoplugins\DisplaySink\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoplugins\VideoSource\group">
-            </task>
-            <task name="\s60\app\videotelephony\vtengines\videoteleng\Group">
-            </task>
-            <task name="\s60\app\videotelephony\vtengines\videotelcomms\group">
-            </task>
-            <task name="\s60\app\videotelephony\vtuis\videotelui\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\telsrv_dom\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\telsrv_sdk\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\cbs\CbsServer\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\cbs\cbsui\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\convergedcallengine\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\networkhandling\networkhandlingengine\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\aiwdialdata\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\CallUI\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\dialutils\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\EnPolicy\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneclient\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneserver\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satengine\SatServer\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satui\satapp\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satui\satplugin\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\utils\phoneparser\group">
-            </task>
-            <task name="\s60\app\telephony\tel_dom\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\Blacklist\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneui\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuicontrol\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuistates\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuiutils\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuiview\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuivoipextension\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\silenceactionplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\PhoneCntFinder\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\audiohandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\callhandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\contacthandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\loghandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\phonemodel\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\aiwcallimageplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\PsetNotesUi\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\pslncallimageplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\telephonysettings\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\SSSettings\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\dialer\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\BubbleManager\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\ConnectUtil\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\ServiceRequest\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\SFIUtils\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\Ussd\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\vmbx\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\TelephonyDeviceMode\group">
-            </task>
-            <task name="\s60\app\videotelephony\videotel_dom\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoengine\PacketVideoEngineBinaries\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoplugins\DisplaySink\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoplugins\VideoSource\group">
-            </task>
-            <task name="\s60\app\videotelephony\vtengines\videoteleng\Group">
-            </task>
-            <task name="\s60\app\videotelephony\vtengines\videotelcomms\group">
-            </task>
-            <task name="\s60\app\videotelephony\vtuis\videotelui\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\telsrv_dom\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\telsrv_sdk\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\cbs\CbsServer\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\cbs\cbsui\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\convergedcallengine\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\networkhandling\networkhandlingengine\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\aiwdialdata\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\CallUI\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\dialutils\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\EnPolicy\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneclient\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneserver\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satengine\SatServer\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satui\satapp\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satui\satplugin\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\utils\phoneparser\group">
-            </task>
-            <task name="\s60\app\telephony\tel_dom\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\Blacklist\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneui\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuicontrol\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuistates\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuiutils\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuiview\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuivoipextension\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\silenceactionplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\PhoneCntFinder\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\audiohandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\callhandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\contacthandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\loghandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\phonemodel\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\aiwcallimageplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\PsetNotesUi\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\pslncallimageplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\telephonysettings\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\SSSettings\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\dialer\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\BubbleManager\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\ConnectUtil\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\ServiceRequest\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\SFIUtils\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\Ussd\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\vmbx\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\TelephonyDeviceMode\group">
-            </task>
-            <task name="\s60\app\videotelephony\videotel_dom\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoengine\PacketVideoEngineBinaries\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoplugins\DisplaySink\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoplugins\VideoSource\group">
-            </task>
-            <task name="\s60\app\videotelephony\vtengines\videoteleng\Group">
-            </task>
-            <task name="\s60\app\videotelephony\vtengines\videotelcomms\group">
-            </task>
-            <task name="\s60\app\videotelephony\vtuis\videotelui\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\telsrv_dom\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\telsrv_sdk\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\cbs\CbsServer\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\cbs\cbsui\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\convergedcallengine\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\networkhandling\networkhandlingengine\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\aiwdialdata\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\CallUI\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\dialutils\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\EnPolicy\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneclient\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneserver\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satengine\SatServer\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satui\satapp\group">
-                <message priority="warning"><![CDATA[..\satuisrc\csatuiviewappui.cpp:2558: warning: variable / argument 'aError' is not used in function]]></message>
-                <message priority="remark"><![CDATA[M:\epoc32\include\domain\applications\BrowserUiInternalCRKeys.h:6: note: Please include BrowserUiSDKCRKeys.h in place of BrowserUiInternalCRKeys.h]]></message>
-                <message priority="warning"><![CDATA[..\satuisrc\csatuiviewappui.cpp:2558: warning: variable / argument 'aError' is not used in function]]></message>
-                <message priority="remark"><![CDATA[M:\epoc32\include\domain\applications\BrowserUiInternalCRKeys.h:6: note: Please include BrowserUiSDKCRKeys.h in place of BrowserUiInternalCRKeys.h]]></message>
-            </task>
-            <task name="\s60\mw\telephonyservices\satui\satplugin\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\utils\phoneparser\group">
-            </task>
-            <task name="\s60\app\telephony\tel_dom\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\Blacklist\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneui\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuicontrol\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuistates\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuiutils\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuiview\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuivoipextension\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\silenceactionplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\PhoneCntFinder\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\audiohandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\callhandling\group">
-                <message priority="warning"><![CDATA[..\src\cpesinglecallobserver.cpp:328: warning: variable / argument 'aAttended' is not used in function]]></message>
-                <message priority="warning"><![CDATA[..\src\cpesinglecallobserver.cpp:328: warning: variable / argument 'aDestination' is not used in function]]></message>
-            </task>
-            <task name="\s60\app\telephony\phoneengine\contacthandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\loghandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\phonemodel\group">
-                <message priority="warning"><![CDATA[..\src\cpemessagehandler.cpp:310: warning: variable / argument 'aCallId' is not used in function]]></message>
-                <message priority="warning"><![CDATA[..\src\cpemessagehandler.cpp:310: warning: variable / argument 'aCallId' is not used in function]]></message>
-            </task>
-            <task name="\s60\app\telephony\phonesettings\aiwcallimageplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\PsetNotesUi\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\pslncallimageplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\telephonysettings\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\SSSettings\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\dialer\group">
-                <message priority="warning"><![CDATA[..\src\cdialervideocontainer.cpp:164: warning: variable / argument 'aIndex' is not used in function]]></message>
-            </task>
-            <task name="\s60\app\telephony\phoneuis\BubbleManager\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\ConnectUtil\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\ServiceRequest\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\SFIUtils\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\Ussd\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\vmbx\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\TelephonyDeviceMode\group">
-            </task>
-            <task name="\s60\app\videotelephony\videotel_dom\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoengine\PacketVideoEngineBinaries\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoplugins\DisplaySink\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoplugins\VideoSource\group">
-            </task>
-            <task name="\s60\app\videotelephony\vtengines\videoteleng\Group">
-                <message priority="warning"><![CDATA[..\LOGGER\src\CVtLogger.cpp:20: warning: illegal #pragma]]></message>
-                <message priority="warning"><![CDATA[..\LOGGER\src\CVtLogger.cpp:371: warning: illegal #pragma]]></message>
-                <message priority="warning"><![CDATA[..\CALLCTRL\src\CVtCtlFactory.cpp:20: warning: illegal #pragma]]></message>
-                <message priority="warning"><![CDATA[..\CALLCTRL\src\CVtCtlFactory.cpp:69: warning: illegal #pragma]]></message>
-                <message priority="warning"><![CDATA[..\CALLCTRL\src\CVtCtlCallControl.cpp:20: warning: illegal #pragma]]></message>
-                <message priority="warning"><![CDATA[..\CALLCTRL\src\CVtCtlCallControl.cpp:251: warning: illegal #pragma]]></message>
-                <message priority="warning"><![CDATA[..\CALLCTRL\src\CVtCtlSessionContainer.cpp:20: warning: illegal #pragma]]></message>
-                <message priority="warning"><![CDATA[..\CALLCTRL\src\CVtCtlSessionContainer.cpp:456: warning: illegal #pragma]]></message>
-                <message priority="warning"><![CDATA[..\CALLCTRL\src\CVtCtlCallStatusMonitor.cpp:20: warning: illegal #pragma]]></message>
-                <message priority="warning"><![CDATA[..\CALLCTRL\src\CVtCtlCallStatusMonitor.cpp:226: warning: illegal #pragma]]></message>
-                <message priority="warning"><![CDATA[..\CALLCTRL\src\CVtCtlLineMonitor.cpp:20: warning: illegal #pragma]]></message>
-                <message priority="warning"><![CDATA[..\CALLCTRL\src\CVtCtlLineMonitor.cpp:130: warning: illegal #pragma]]></message>
-                <message priority="warning"><![CDATA[..\CALLCTRL\src\CVtCtlVideoCall.cpp:20: warning: illegal #pragma]]></message>
-                <message priority="warning"><![CDATA[..\CALLCTRL\src\CVtCtlVideoCall.cpp:241: warning: illegal #pragma]]></message>
-                <message priority="warning"><![CDATA[..\CALLCTRL\src\VtCtlPanic.cpp:20: warning: illegal #pragma]]></message>
-                <message priority="warning"><![CDATA[..\CALLCTRL\src\VtCtlPanic.cpp:35: warning: illegal #pragma]]></message>
-                <message priority="warning"><![CDATA[..\LOGGER\src\CVtLogger.cpp:20: warning: illegal #pragma]]></message>
-                <message priority="warning"><![CDATA[..\LOGGER\src\CVtLogger.cpp:371: warning: illegal #pragma]]></message>
-                <message priority="warning"><![CDATA[..\CALLCTRL\src\CVtCtlFactory.cpp:20: warning: illegal #pragma]]></message>
-                <message priority="warning"><![CDATA[..\CALLCTRL\src\CVtCtlFactory.cpp:69: warning: illegal #pragma]]></message>
-                <message priority="warning"><![CDATA[..\CALLCTRL\src\CVtCtlCallControl.cpp:20: warning: illegal #pragma]]></message>
-                <message priority="warning"><![CDATA[..\CALLCTRL\src\CVtCtlCallControl.cpp:251: warning: illegal #pragma]]></message>
-                <message priority="warning"><![CDATA[..\CALLCTRL\src\CVtCtlSessionContainer.cpp:20: warning: illegal #pragma]]></message>
-                <message priority="warning"><![CDATA[..\CALLCTRL\src\CVtCtlSessionContainer.cpp:456: warning: illegal #pragma]]></message>
-                <message priority="warning"><![CDATA[..\CALLCTRL\src\CVtCtlCallStatusMonitor.cpp:20: warning: illegal #pragma]]></message>
-                <message priority="warning"><![CDATA[..\CALLCTRL\src\CVtCtlCallStatusMonitor.cpp:226: warning: illegal #pragma]]></message>
-                <message priority="warning"><![CDATA[..\CALLCTRL\src\CVtCtlLineMonitor.cpp:20: warning: illegal #pragma]]></message>
-                <message priority="warning"><![CDATA[..\CALLCTRL\src\CVtCtlLineMonitor.cpp:130: warning: illegal #pragma]]></message>
-                <message priority="warning"><![CDATA[..\CALLCTRL\src\CVtCtlVideoCall.cpp:20: warning: illegal #pragma]]></message>
-                <message priority="warning"><![CDATA[..\CALLCTRL\src\CVtCtlVideoCall.cpp:241: warning: illegal #pragma]]></message>
-                <message priority="warning"><![CDATA[..\CALLCTRL\src\VtCtlPanic.cpp:20: warning: illegal #pragma]]></message>
-                <message priority="warning"><![CDATA[..\CALLCTRL\src\VtCtlPanic.cpp:35: warning: illegal #pragma]]></message>
-            </task>
-            <task name="\s60\app\videotelephony\vtengines\videotelcomms\group">
-            </task>
-            <task name="\s60\app\videotelephony\vtuis\videotelui\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\telsrv_dom\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\telsrv_sdk\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\cbs\CbsServer\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\cbs\cbsui\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\convergedcallengine\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\networkhandling\networkhandlingengine\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\aiwdialdata\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\CallUI\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\dialutils\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\EnPolicy\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneclient\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneserver\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satengine\SatServer\group">
-                <message priority="warning"><![CDATA["\s60\mw\telephonyservices\satengine\SatServer\SystemState\src\csatsystemstate.cpp", line 66: Warning:  #550-D: variable "err" was set but never used]]></message>
-                <message priority="warning"><![CDATA["\s60\mw\telephonyservices\satengine\SatServer\Engine\src\csatapnhandler.cpp", line 34: Warning:  #177-D: variable "KMaxAccessPointName" was declared but never referenced]]></message>
-                <message priority="warning"><![CDATA["\s60\mw\telephonyservices\satengine\SatServer\Engine\src\csatapnhandler.cpp", line 38: Warning:  #177-D: variable "KSatMaxApnName" was declared but never referenced]]></message>
-                <message priority="warning"><![CDATA["\s60\mw\telephonyservices\satengine\SatServer\SystemState\src\csatsystemstate.cpp", line 66: Warning:  #550-D: variable "err" was set but never used]]></message>
-                <message priority="warning"><![CDATA["\s60\mw\telephonyservices\satengine\SatServer\Engine\src\csatapnhandler.cpp", line 34: Warning:  #177-D: variable "KMaxAccessPointName" was declared but never referenced]]></message>
-                <message priority="warning"><![CDATA["\s60\mw\telephonyservices\satengine\SatServer\Engine\src\csatapnhandler.cpp", line 38: Warning:  #177-D: variable "KSatMaxApnName" was declared but never referenced]]></message>
-            </task>
-            <task name="\s60\mw\telephonyservices\satui\satapp\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satui\satplugin\group">
-                <message priority="warning"><![CDATA["\s60\mw\telephonyservices\satui\satplugin\aisatpluginsrc\caisatplugin.cpp", line 188: Warning:  #550-D: variable "error" was set but never used]]></message>
-                <message priority="warning"><![CDATA["\s60\mw\telephonyservices\satui\satplugin\aisatpluginsrc\caisatplugin.cpp", line 188: Warning:  #550-D: variable "error" was set but never used]]></message>
-            </task>
-            <task name="\s60\mw\telephonyservices\utils\phoneparser\group">
-                <message priority="critical"><![CDATA["\s60\mw\telephonyservices\utils\phoneparser\src\cphoneparserfeatures.cpp", line 81: Warning: C2874W: self may be used before being set]]></message>
-            </task>
-            <task name="\s60\app\telephony\tel_dom\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\Blacklist\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneui\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuicontrol\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuistates\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuiutils\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuiview\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuivoipextension\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\silenceactionplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\PhoneCntFinder\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\audiohandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\callhandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\contacthandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\loghandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\phonemodel\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\aiwcallimageplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\PsetNotesUi\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\pslncallimageplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\telephonysettings\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\SSSettings\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\dialer\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\BubbleManager\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\ConnectUtil\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\ServiceRequest\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\SFIUtils\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\Ussd\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\vmbx\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\TelephonyDeviceMode\group">
-            </task>
-            <task name="\s60\app\videotelephony\videotel_dom\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoengine\PacketVideoEngineBinaries\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoplugins\DisplaySink\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoplugins\VideoSource\group">
-            </task>
-            <task name="\s60\app\videotelephony\vtengines\videoteleng\Group">
-            </task>
-            <task name="\s60\app\videotelephony\vtengines\videotelcomms\group">
-            </task>
-            <task name="\s60\app\videotelephony\vtuis\videotelui\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\telsrv_dom\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\telsrv_sdk\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\cbs\CbsServer\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\cbs\cbsui\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\convergedcallengine\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\networkhandling\networkhandlingengine\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\aiwdialdata\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\CallUI\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\dialutils\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\EnPolicy\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneclient\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneserver\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satengine\SatServer\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satui\satapp\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satui\satplugin\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\utils\phoneparser\group">
-            </task>
-            <task name="\s60\app\telephony\tel_dom\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\Blacklist\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneui\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuicontrol\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuistates\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuiutils\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuiview\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuivoipextension\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\silenceactionplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\PhoneCntFinder\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\audiohandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\callhandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\contacthandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\loghandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\phonemodel\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\aiwcallimageplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\PsetNotesUi\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\pslncallimageplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\telephonysettings\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\SSSettings\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\dialer\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\BubbleManager\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\ConnectUtil\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\ServiceRequest\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\SFIUtils\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\Ussd\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\vmbx\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\TelephonyDeviceMode\group">
-            </task>
-            <task name="\s60\app\videotelephony\videotel_dom\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoengine\PacketVideoEngineBinaries\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoplugins\DisplaySink\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoplugins\VideoSource\group">
-            </task>
-            <task name="\s60\app\videotelephony\vtengines\videoteleng\Group">
-            </task>
-            <task name="\s60\app\videotelephony\vtengines\videotelcomms\group">
-            </task>
-            <task name="\s60\app\videotelephony\vtuis\videotelui\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\telsrv_dom\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\telsrv_sdk\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\cbs\CbsServer\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\cbs\cbsui\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\convergedcallengine\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\networkhandling\networkhandlingengine\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\aiwdialdata\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\CallUI\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\dialutils\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\EnPolicy\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneclient\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneserver\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satengine\SatServer\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satui\satapp\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satui\satplugin\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\utils\phoneparser\group">
-            </task>
-            <task name="\s60\app\telephony\tel_dom\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\Blacklist\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneui\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuicontrol\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuistates\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuiutils\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuiview\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuivoipextension\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\silenceactionplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\PhoneCntFinder\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\audiohandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\callhandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\contacthandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\loghandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\phonemodel\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\aiwcallimageplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\PsetNotesUi\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\pslncallimageplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\telephonysettings\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\SSSettings\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\dialer\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\BubbleManager\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\ConnectUtil\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\ServiceRequest\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\SFIUtils\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\Ussd\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\vmbx\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\TelephonyDeviceMode\group">
-            </task>
-            <task name="\s60\app\videotelephony\videotel_dom\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoengine\PacketVideoEngineBinaries\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoplugins\DisplaySink\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoplugins\VideoSource\group">
-            </task>
-            <task name="\s60\app\videotelephony\vtengines\videoteleng\Group">
-            </task>
-            <task name="\s60\app\videotelephony\vtengines\videotelcomms\group">
-            </task>
-            <task name="\s60\app\videotelephony\vtuis\videotelui\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\telsrv_dom\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\telsrv_sdk\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\cbs\CbsServer\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\cbs\cbsui\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\convergedcallengine\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\networkhandling\networkhandlingengine\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\aiwdialdata\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\CallUI\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\dialutils\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\EnPolicy\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneclient\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneserver\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satengine\SatServer\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satui\satapp\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satui\satplugin\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\utils\phoneparser\group">
-            </task>
-            <task name="\s60\app\telephony\tel_dom\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\Blacklist\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneui\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuicontrol\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuistates\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuiutils\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuiview\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuivoipextension\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\silenceactionplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\PhoneCntFinder\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\audiohandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\callhandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\contacthandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\loghandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\phonemodel\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\aiwcallimageplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\PsetNotesUi\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\pslncallimageplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\telephonysettings\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\SSSettings\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\dialer\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\BubbleManager\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\ConnectUtil\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\ServiceRequest\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\SFIUtils\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\Ussd\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\vmbx\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\TelephonyDeviceMode\group">
-            </task>
-            <task name="\s60\app\videotelephony\videotel_dom\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoengine\PacketVideoEngineBinaries\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoplugins\DisplaySink\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoplugins\VideoSource\group">
-            </task>
-            <task name="\s60\app\videotelephony\vtengines\videoteleng\Group">
-            </task>
-            <task name="\s60\app\videotelephony\vtengines\videotelcomms\group">
-            </task>
-            <task name="\s60\app\videotelephony\vtuis\videotelui\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\telsrv_dom\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\telsrv_sdk\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\cbs\CbsServer\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\cbs\cbsui\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\convergedcallengine\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\networkhandling\networkhandlingengine\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\aiwdialdata\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\CallUI\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\dialutils\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\EnPolicy\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneclient\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneserver\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satengine\SatServer\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satui\satapp\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satui\satplugin\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\utils\phoneparser\group">
-            </task>
-            <task name="\s60\app\telephony\tel_dom\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\Blacklist\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneui\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuicontrol\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuistates\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuiutils\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuiview\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuivoipextension\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\silenceactionplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\PhoneCntFinder\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\audiohandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\callhandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\contacthandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\loghandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\phonemodel\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\aiwcallimageplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\PsetNotesUi\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\pslncallimageplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\telephonysettings\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\SSSettings\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\dialer\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\BubbleManager\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\ConnectUtil\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\ServiceRequest\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\SFIUtils\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\Ussd\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\vmbx\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\TelephonyDeviceMode\group">
-            </task>
-            <task name="\s60\app\videotelephony\videotel_dom\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoengine\PacketVideoEngineBinaries\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoplugins\DisplaySink\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoplugins\VideoSource\group">
-            </task>
-            <task name="\s60\app\videotelephony\vtengines\videoteleng\Group">
-            </task>
-            <task name="\s60\app\videotelephony\vtengines\videotelcomms\group">
-            </task>
-            <task name="\s60\app\videotelephony\vtuis\videotelui\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\telsrv_dom\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\telsrv_sdk\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\cbs\CbsServer\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\cbs\cbsui\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\convergedcallengine\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\networkhandling\networkhandlingengine\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\aiwdialdata\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\CallUI\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\dialutils\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\EnPolicy\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneclient\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneserver\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satengine\SatServer\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satui\satapp\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satui\satplugin\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\utils\phoneparser\group">
-            </task>
-            <task name="\s60\app\telephony\tel_dom\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\Blacklist\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneui\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuicontrol\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuistates\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuiutils\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuiview\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuivoipextension\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\silenceactionplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\PhoneCntFinder\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\audiohandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\callhandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\contacthandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\loghandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\phonemodel\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\aiwcallimageplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\PsetNotesUi\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\pslncallimageplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\telephonysettings\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\SSSettings\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\dialer\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\BubbleManager\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\ConnectUtil\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\ServiceRequest\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\SFIUtils\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\Ussd\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\vmbx\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\TelephonyDeviceMode\group">
-            </task>
-            <task name="\s60\app\videotelephony\videotel_dom\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoengine\PacketVideoEngineBinaries\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoplugins\DisplaySink\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoplugins\VideoSource\group">
-            </task>
-            <task name="\s60\app\videotelephony\vtengines\videoteleng\Group">
-            </task>
-            <task name="\s60\app\videotelephony\vtengines\videotelcomms\group">
-            </task>
-            <task name="\s60\app\videotelephony\vtuis\videotelui\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\telsrv_dom\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\telsrv_sdk\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\cbs\CbsServer\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\cbs\cbsui\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\convergedcallengine\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\networkhandling\networkhandlingengine\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\aiwdialdata\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\CallUI\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\dialutils\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\EnPolicy\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneclient\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneserver\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satengine\SatServer\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satui\satapp\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\satui\satplugin\group">
-            </task>
-            <task name="\s60\mw\telephonyservices\utils\phoneparser\group">
-            </task>
-            <task name="\s60\app\telephony\tel_dom\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\Blacklist\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneui\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuicontrol\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuistates\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuiutils\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuiview\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\phoneuivoipextension\group">
-            </task>
-            <task name="\s60\app\telephony\phoneapp\silenceactionplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\PhoneCntFinder\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\audiohandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\callhandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\contacthandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\loghandling\group">
-            </task>
-            <task name="\s60\app\telephony\phoneengine\phonemodel\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\aiwcallimageplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\PsetNotesUi\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\pslncallimageplugin\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\telephonysettings\group">
-            </task>
-            <task name="\s60\app\telephony\phonesettings\SSSettings\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\dialer\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\BubbleManager\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\ConnectUtil\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\ServiceRequest\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\SFIUtils\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\Ussd\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\vmbx\group">
-            </task>
-            <task name="\s60\app\telephony\phoneuis\TelephonyDeviceMode\group">
-            </task>
-            <task name="\s60\app\videotelephony\videotel_dom\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoengine\PacketVideoEngineBinaries\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoplugins\DisplaySink\group">
-            </task>
-            <task name="\s60\app\videotelephony\packetvideoplugins\VideoSource\group">
-            </task>
-            <task name="\s60\app\videotelephony\vtengines\videoteleng\Group">
-            </task>
-            <task name="\s60\app\videotelephony\vtengines\videotelcomms\group">
-            </task>
-            <task name="\s60\app\videotelephony\vtuis\videotelui\group">
-            </task>
-        </task>
-    </build>
-</log>
--- a/buildframework/helium/external/helium-antlib/diamonds/tests/data/create-bom-log.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<diamonds-build>
-    <schema>10</schema>    
-    <stages>
-      <stage>    
-            <name>build</name>
-            <started>2009-02-03T01:17:52</started>
-            <finished>2009-02-03T01:17:52</finished>
-     </stage>
-    </stages>
-</diamonds-build>
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/diamonds/tests/data/problemIndex.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14859 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<problemIndex>
-   <category name="functionality">
-      <problem name="LeaveNoError" severity="medium">
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexserviceirsend\src\IRSSProvider.cpp">
-            118
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuiinfrared\src\irmtmui.cpp">
-            244
-         </file>
-      </problem>
-   </category>
-   <category name="performance">
-      <problem name="arraypassing" severity="medium">
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTServiceClient.cpp">
-            61
-            113
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSController.cpp">
-            69
-         </file>
-      </problem>
-      <problem name="eikonenvstatic" severity="medium">
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\lcstylustap\src\lcstylustap.cpp">
-            127
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNInqUI.cpp">
-            291
-            388
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintuiprovider\src\caiwimageprintIf.cpp">
-            57
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbuinotif\src\USBNotifier.cpp">
-            61
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNObexPinNotifier.cpp">
-            134
-            168
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNPBAPPinNotifier.cpp">
-            135
-            166
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidkbdsettings\src\bthidsettingview.cpp">
-            93
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilslaunchwaiter.cpp">
-            106
-            109
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNotifier.cpp">
-            82
-            507
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbui\USBClassChangeUIPlugin\src\USBClassChangeUIPluginView.cpp">
-            96
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUIMainView.cpp">
-            121
-         </file>
-      </problem>
-      <problem name="trapeleave" severity="medium">
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUIPairedDevicesView.cpp">
-            916
-            1282
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbuinotif\src\USBUINMain.cpp">
-            75
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNMain.cpp">
-            129
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\devmodel\src\btpairedmodel.cpp">
-            138
-            155
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNotifier.cpp">
-            841
-         </file>
-      </problem>
-      <problem name="userafter" severity="medium">
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUIPairedDevicesView.cpp">
-            1607
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\socketinitiator.cpp">
-            115
-            235
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthidconnection.cpp">
-            210
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthidsession.cpp">
-            253
-         </file>
-      </problem>
-   </category>
-   <category name="codingstandards">
-      <problem name="baddefines" severity="low">
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btrcc\btrccPluginImplUid.h">
-            23
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\expinc\BTAccPluginUid.h">
-            32
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsacpluginuid.h">
-            30
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudiostreamer\inc\btaudiostreamerdebug.h">
-            114
-            143
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\devmodel\inc\btdevmodel.h">
-            78
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\usb_watcher_api\inc\usbpersonalityids.h">
-            23
-            24
-            25
-            26
-            27
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintuiprovider\inc\aiwprintingprovideruid.h">
-            24
-            25
-         </file>
-      </problem>
-      <problem name="cleanup" severity="low">
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapSocketHandler.cpp">
-            88
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanserver\src\SrcsServiceManager.cpp">
-            86
-            257
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTServiceStarter.cpp">
-            87
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\dpstransaction.cpp">
-            58
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSBPPObjectRequest.cpp">
-            107
-            452
-            481
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTServiceClient.cpp">
-            118
-            332
-            334
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\manager\src\decode.cpp">
-            47
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\cusbglobalsystemstateobserver.cpp">
-            31
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSOPPController.cpp">
-            52
-            71
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapPlugin.cpp">
-            53
-            198
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsglobaldialog.cpp">
-            57
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanserver\src\SrcsSession.cpp">
-            175
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanserver\src\obexsm.cpp">
-            69
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSBPPObjectServer.cpp">
-            134
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNGenericInfoNotifier.cpp">
-            45
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\btaccDosListener.cpp">
-            43
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapRequestHandler.cpp">
-            57
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsmessagehandler.cpp">
-            184
-            209
-            336
-            524
-            553
-            639
-            644
-            650
-            654
-            853
-            922
-            928
-            934
-            940
-            1005
-            1076
-            1246
-            1266
-            1340
-            1376
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvacc.cpp">
-            33
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\mouse\src\mouse.cpp">
-            63
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\manager\src\shutdown.cpp">
-            40
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSBIPController.cpp">
-            93
-            302
-            340
-            404
-            434
-            467
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\btnpaireddevsettnotifier.cpp">
-            55
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicebtsend\src\BTSSProvider.cpp">
-            70
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidkbdsettings\src\bthidsettings.cpp">
-            61
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\BTAccFwConnection_dos.cpp">
-            66
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\pictbridge.cpp">
-            64
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNInqUI.cpp">
-            320
-            322
-            586
-            673
-            757
-            859
-            931
-            1144
-            1202
-            1224
-            1226
-            1241
-            1244
-            1288
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\src\nptpdatahandler.cpp">
-            672
-            725
-            1262
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irappgsplugin\src\irappgspluginview.cpp">
-            411
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNObexPinNotifier.cpp">
-            47
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNPBAPPinNotifier.cpp">
-            48
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNPwrNotifier.cpp">
-            45
-            143
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\src\usb\obexsmusbconnection.cpp">
-            87
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuibluetooth\src\btmtmui.cpp">
-            269
-            295
-            358
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapSimCardStatusNotifier.cpp">
-            58
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidkbdsettings\src\bthidcenrepwatcher.cpp">
-            42
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\btaccDosSender.cpp">
-            60
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irbearer\src\irstatemachine.cpp">
-            64
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanclient\src\ObexSMPlugin.cpp">
-            33
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\dpsxmlstring.cpp">
-            40
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\atext\src\main.cpp">
-            81
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\ecom\BtnotifWrapper.cpp">
-            134
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapServerState.cpp">
-            57
-            195
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintuiprovider\src\caiwprintingprovider.cpp">
-            117
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irbearer\src\irtimer.cpp">
-            54
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapHciExtensionMan.cpp">
-            74
-            249
-            362
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\src\ptptimer.cpp">
-            43
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvsdpquery.cpp">
-            41
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNGenericQueryNotifier.cpp">
-            55
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\src\ir\obexsmirdaconnection.cpp">
-            88
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTServiceParameterList.cpp">
-            76
-            169
-            244
-            307
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvaccfwconn.cpp">
-            73
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\src\bt\obexsmpasskey.cpp">
-            50
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidkbdsettings\src\bthidsettingview.cpp">
-            58
-            216
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\lcstylustap\src\lcstylustap.cpp">
-            71
-            87
-            102
-            164
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbmscpersonality\src\CUsbActiveMscHandlerMdrv.cpp">
-            78
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsuilayer.cpp">
-            175
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNAuthNotifier.cpp">
-            101
-            255
-            407
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\CUsbWatcherSession.cpp">
-            31
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsglobalprogressdialog.cpp">
-            66
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSUImageConverter.cpp">
-            73
-            162
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\CUsbActivePersonalityHandler.cpp">
-            79
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanserver\src\obexsmmain.cpp">
-            94
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\dpsstatemachine.cpp">
-            46
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\src\hidcollection.cpp">
-            48
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\CUsbDeviceLock.cpp">
-            74
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irbearer\src\iractivatewatcher.cpp">
-            55
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUIDeviceContainer.cpp">
-            608
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSUXmlParser.cpp">
-            66
-            130
-            171
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNotifier.cpp">
-            392
-            396
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irbearer\src\irremotelockwatcher.cpp">
-            58
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btbearer\src\btpluginprovider.cpp">
-            62
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilslaunchwaiter.cpp">
-            147
-            176
-            386
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btrfsplugin\src\btrfsplugin.cpp">
-            59
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\src\hidgeneric.cpp">
-            51
-            370
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\src\bt\obexsmbtconnection.cpp">
-            105
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\dpsfile.cpp">
-            41
-            113
-            128
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\keyboard\src\keyboard.cpp">
-            90
-            1306
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\src\hidparser.cpp">
-            138
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\CUsbActiveState.cpp">
-            73
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irbearer\src\irstatuswatcher.cpp">
-            53
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\src\hidfield.cpp">
-            36
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSBPPController.cpp">
-            76
-            377
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbuinotif\src\USBUINCableConnectedNotifier.cpp">
-            240
-            513
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexserviceirsend\src\IRClient.cpp">
-            108
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\CUsbPersonalityNotifier.cpp">
-            54
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanclient\src\usbobex.cpp">
-            34
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapSniffHandler.cpp">
-            74
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\src\ptptransport.cpp">
-            55
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irbearer\src\irbearer.cpp">
-            51
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapSecurityHandler.cpp">
-            64
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexserviceirsend\src\IRSSProvider.cpp">
-            70
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\dpsusbnotifier.cpp">
-            48
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btrcc\btrccplayerstarter.cpp">
-            283
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSBPPServerWait.cpp">
-            70
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNInqNotifier.cpp">
-            43
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\CUsbWatcher.cpp">
-            115
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNInquiryAO.cpp">
-            69
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthidserver.cpp">
-            661
-            1358
-            1395
-            1486
-            1491
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\hiddescriptorlist.cpp">
-            135
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbbasicpersonality\src\CUsbActiveBasicHandler.cpp">
-            56
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTServiceAPI.cpp">
-            61
-         </file>
-      </problem>
-      <problem name="driveletters" severity="low">
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidkbdsettings\data\BthidResource.rss">
-            1331
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\inc\btNotifDebug.h">
-            40
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintuiprovider\inc\imageprintuidebug.h">
-            38
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\inc\RUsbWatcher.h">
-            28
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\inc\ptpdef.h">
-            25
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudiostreamer\inc\btaudiostreamerdebug.h">
-            64
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\cusbdevconstarter.cpp">
-            23
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicebtsend\inc\BTSendingServiceDebug.h">
-            34
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanserver\inc\SrcsClSv.h">
-            52
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\inc\obexutilsdebug.h">
-            33
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexserviceirsend\inc\IrSendingServiceDebug.h">
-            34
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuiinfrared\inc\debug.h">
-            33
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthidserver.cpp">
-            48
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\inc\DunDebug.h">
-            39
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\inc\BTSUDebug.h">
-            34
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btrfsplugin\src\btrfsplugin.cpp">
-            27
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\inc\imageprintuidebug.h">
-            38
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanclient\inc\obexsmclient.h">
-            33
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuibluetooth\inc\btmtmuidebug.h">
-            33
-         </file>
-      </problem>
-      <problem name="enummembers" severity="low">
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSBPPObjectRequest.cpp">
-            51
-         </file>
-      </problem>
-      <problem name="enumnames" severity="low">
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSBPPObjectRequest.cpp">
-            51
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmac\btmsopenaudio.h">
-            28
-         </file>
-      </problem>
-      <problem name="forbiddenwords" severity="low">
-         <file path="Y:\LC_Domain\shortlinkconn\localconn_sdk\bluetooth_power_state_api\inc\btserversdkcrkeys.h">
-            29
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbremotepersonality\inc\cremotepersonalityhandler.h">
-            43
-            52
-            70
-            114
-            122
-            129
-            138
-            148
-            160
-            167
-            174
-            183
-            191
-            198
-            205
-            212
-            219
-            226
-            233
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\inc\ptpmsghandler.h">
-            35
-            55
-            63
-            70
-            77
-            84
-            94
-            101
-            108
-            116
-            124
-            132
-            139
-            146
-            153
-            160
-            167
-            179
-            188
-            196
-            205
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\locod\inc\locodserviceman.h">
-            38
-            51
-            76
-            91
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsacState.h">
-            45
-            56
-            63
-            71
-            80
-            87
-            95
-            104
-            111
-            120
-            186
-            194
-            206
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\btaudiomanplugin.h">
-            35
-            45
-            62
-            72
-            83
-            98
-            111
-            125
-            139
-            155
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\plugins\inc\bt\DunBtPlugin.h">
-            34
-            60
-            85
-            93
-            102
-            112
-            121
-            130
-            138
-            146
-            156
-            165
-            178
-            189
-            201
-            211
-            223
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuibluetooth\inc\btmtmui.h">
-            310
-            330
-            355
-            376
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\inc\DunDataWaiter.h">
-            32
-            55
-            65
-            74
-            83
-            91
-            105
-            116
-            125
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\plugins\inc\usb\DunUsbListen.h">
-            42
-            68
-            84
-            100
-            108
-            119
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\devmodel\inc\btregistryobserver.h">
-            37
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\bluetooth_local_variation_api\inc\btengdomaincrkeys.h">
-            176
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\inc\nptpstack.h">
-            42
-            49
-            65
-            85
-            95
-            103
-            112
-            121
-            129
-            141
-            149
-            157
-            165
-            173
-            181
-            189
-            197
-            207
-            216
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\inc\obexutilsentryhandler.h">
-            31
-            50
-            60
-            77
-            85
-            104
-            112
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmac\btmman.h">
-            46
-            60
-            70
-            78
-            86
-            95
-            104
-            113
-            122
-            131
-            139
-            160
-            169
-            177
-            186
-            195
-            203
-            212
-            221
-            230
-            246
-            254
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\inc\BTUIListedDevicesView.h">
-            36
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\bluetooth_engine_device_management_api\inc\btengdevman.h">
-            33
-            46
-            56
-            74
-            105
-            117
-            134
-            148
-            167
-            178
-            191
-            200
-            210
-            217
-            224
-            231
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbdevcon\inc\cusbdevcon.h">
-            44
-            55
-            63
-            71
-            78
-            88
-            95
-            102
-            109
-            116
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\inc\BTServiceStarter.h">
-            189
-            209
-            234
-            255
-            272
-            283
-            293
-            301
-            309
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\inc\DunSignalNotify.h">
-            30
-            52
-            62
-            72
-            81
-            90
-            98
-            112
-            120
-            128
-            138
-            150
-            159
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\inc\BTSController.h">
-            38
-            54
-            64
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdinterruptobserver.h">
-            28
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\lcstylustap\inc\lcstylustap.h">
-            30
-            40
-            47
-            54
-            68
-            74
-            84
-            91
-            97
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\inc\DunUpstream.h">
-            34
-            66
-            95
-            106
-            115
-            126
-            150
-            158
-            167
-            176
-            184
-            192
-            206
-            214
-            222
-            230
-            241
-            250
-            261
-            270
-            280
-            288
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsacActivePacketDropIoctl.h">
-            34
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btbearer\inc\btpluginprovider.h">
-            40
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\server\inc\DunServer.h">
-            43
-            76
-            101
-            111
-            121
-            130
-            141
-            156
-            172
-            186
-            197
-            207
-            221
-            235
-            245
-            256
-            269
-            279
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbuinotif\inc\USBUINCableConnectedNotifier.h">
-            46
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\bluetooth_engine_settings_api\inc\btengsettings.h">
-            38
-            49
-            59
-            75
-            85
-            95
-            110
-            121
-            131
-            141
-            154
-            163
-            181
-            189
-            202
-            211
-            219
-            229
-            246
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdbaseclass.h">
-            49
-            72
-            83
-            111
-            116
-            132
-            144
-            153
-            162
-            171
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btpsmplugin\inc\btengpsmplugin.h">
-            32
-            59
-            68
-            78
-            96
-            103
-            110
-            117
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\inc\eventmanager.h">
-            56
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmac\btmsdisconnect.h">
-            31
-            49
-            60
-            73
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\inc\imageprintuiappui.h">
-            63
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmac\btmscloseaudio.h">
-            31
-            50
-            57
-            66
-            75
-            85
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irbearer\inc\irbearer.h">
-            35
-            43
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanclient\inc\usbobex.h">
-            40
-            59
-            68
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\inc\nptpobject.h">
-            36
-            55
-            63
-            71
-            79
-            87
-            95
-            104
-            116
-            127
-            135
-            144
-            153
-            161
-            169
-            178
-            186
-            194
-            202
-            211
-            219
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmac\btmsidle.h">
-            31
-            56
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanclient\inc\ObexSMPlugin.h">
-            42
-            51
-            65
-            85
-            94
-            102
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btpbap\inc\debug.h">
-            46
-            57
-            68
-            91
-            116
-            141
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\inc\DunSignalCopy.h">
-            31
-            52
-            61
-            71
-            80
-            93
-            101
-            115
-            123
-            131
-            139
-            147
-            157
-            167
-            179
-            188
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\inc\BtuiPluginInterface.h">
-            57
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudiostreamer\inc\btaudiostreamer.h">
-            40
-            58
-            69
-            80
-            91
-            103
-            113
-            126
-            137
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\basrvaccstate.h">
-            43
-            50
-            117
-            125
-            140
-            149
-            157
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsacStateConfiguring.h">
-            29
-            53
-            63
-            74
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmac\btmsyncsock.h">
-            40
-            59
-            66
-            73
-            84
-            91
-            103
-            111
-            119
-            127
-            135
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmac\btmactiveobserver.h">
-            32
-            42
-            50
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbuinotif\inc\USBUINQueriesNotifier.h">
-            38
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\bluetooth_engine_discovery_api\inc\btengdiscovery.h">
-            45
-            103
-            116
-            136
-            163
-            184
-            200
-            220
-            243
-            252
-            262
-            281
-            303
-            330
-            348
-            364
-            375
-            391
-            404
-            417
-            433
-            454
-            474
-            486
-            496
-            511
-            526
-            536
-            545
-            553
-            563
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbremotepersonality\inc\csetpersonality.h">
-            32
-            43
-            51
-            58
-            65
-            74
-            81
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\inc\BTUIApp.h">
-            31
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\inc\ptpsession.h">
-            31
-            39
-            46
-            58
-            68
-            75
-            81
-            87
-            93
-            102
-            107
-            112
-            120
-            127
-            133
-            139
-            145
-            151
-            157
-            163
-            169
-            175
-            181
-            187
-            193
-            199
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\btengsrvsession.h">
-            41
-            51
-            64
-            83
-            92
-            101
-            108
-            115
-            123
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\inc\BTUIPairedDevicesView.h">
-            55
-            341
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmac\btmsctrl.h">
-            38
-            66
-            74
-            84
-            95
-            112
-            124
-            132
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\basrvpowercontrolagent.h">
-            50
-            58
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\devmodel\inc\btdevmodelbase.h">
-            33
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\usb_personality_plugin_api\inc\tusbpersonalityparams.h">
-            33
-            44
-            52
-            60
-            68
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\basrvaccstatedetach.h">
-            36
-            43
-            73
-            81
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\btengclient.h">
-            38
-            48
-            55
-            62
-            70
-            80
-            89
-            99
-            108
-            117
-            128
-            139
-            148
-            157
-            166
-            177
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengdiscovery\inc\btengsdpquery.h">
-            37
-            66
-            73
-            82
-            94
-            108
-            122
-            136
-            158
-            166
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbdevcon\inc\cstatemachine.h">
-            32
-            52
-            62
-            69
-            78
-            86
-            93
-            100
-            110
-            119
-            126
-            134
-            144
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\inc\nptpimagehandler.h">
-            37
-            52
-            60
-            76
-            89
-            98
-            107
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\inc\ptptransport.h">
-            84
-            94
-            103
-            110
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidkbdsettings\inc\bthidsettingcontainer.h">
-            34
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\basrvaccstatedisconnect.h">
-            35
-            42
-            55
-            63
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdcontrolhandler.h">
-            52
-            74
-            82
-            91
-            125
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanserver\inc\SrcsServiceManager.h">
-            39
-            47
-            77
-            90
-            102
-            118
-            126
-            134
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\inc\DunNetDataport.h">
-            34
-            63
-            74
-            86
-            97
-            107
-            116
-            130
-            157
-            169
-            180
-            190
-            205
-            213
-            221
-            230
-            238
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\devmodel\inc\btblockedmodel.h">
-            29
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\inc\DunAtUrcHandler.h">
-            34
-            59
-            67
-            75
-            90
-            101
-            110
-            120
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicddatahandler.h">
-            49
-            71
-            78
-            85
-            107
-            115
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengconnman\inc\btengpairinghandler.h">
-            41
-            62
-            72
-            85
-            95
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\btengactive.h">
-            40
-            50
-            77
-            87
-            103
-            111
-            119
-            126
-            133
-            144
-            152
-            160
-            169
-            181
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\basrvaccstatequery.h">
-            36
-            43
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanserver\inc\obexserviceman.h">
-            58
-            65
-            72
-            79
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsaController.h">
-            80
-            201
-            209
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\inc\DunChanMan.h">
-            37
-            74
-            105
-            169
-            179
-            193
-            223
-            231
-            239
-            248
-            263
-            272
-            281
-            290
-            306
-            329
-            337
-            347
-            357
-            369
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irbearer\inc\irtimer.h">
-            32
-            43
-            50
-            58
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbmscpersonality\inc\CUsbActiveMscHandlerMdrv.h">
-            114
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdusbplugin.h">
-            41
-            62
-            69
-            76
-            85
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\inc\hiddriveritem.h">
-            31
-            51
-            60
-            68
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\inc\rptp.h">
-            40
-            57
-            65
-            75
-            83
-            90
-            105
-            111
-            129
-            141
-            152
-            158
-            165
-            176
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmac\btmsopenaudio.h">
-            42
-            61
-            68
-            77
-            87
-            96
-            107
-            116
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\locod\commoninc\locodservicepluginobserver.h">
-            32
-            44
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\usb_watcher_api\inc\usbwatcher.h">
-            33
-            45
-            53
-            79
-            91
-            99
-            107
-            114
-            122
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsacStateStreaming.h">
-            29
-            53
-            62
-            72
-            82
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\inc\nptplistener.h">
-            41
-            58
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmac\btmrfcommsock.h">
-            33
-            48
-            56
-            65
-            75
-            82
-            90
-            98
-            105
-            113
-            121
-            130
-            138
-            161
-            171
-            181
-            190
-            199
-            208
-            217
-            237
-            245
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsacStateListening.h">
-            37
-            62
-            72
-            82
-            102
-            110
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\inc\cusbdevconstarter.h">
-            29
-            55
-            62
-            71
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\client\inc\dunactive.h">
-            32
-            42
-            50
-            60
-            97
-            116
-            125
-            136
-            145
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbosdescriptorhandler\inc\cosdescriptorhandler.h">
-            35
-            44
-            61
-            72
-            80
-            90
-            100
-            112
-            119
-            126
-            133
-            141
-            148
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\ptpclasscontroller\inc\ptpclasscontroller.h">
-            85
-            93
-            121
-            128
-            135
-            144
-            150
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\btengregistrycleaner.h">
-            56
-            66
-            105
-            113
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsacStateSuspended.h">
-            29
-            53
-            63
-            72
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanserver\inc\obexsm.h">
-            58
-            65
-            83
-            93
-            100
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\inc\DunTransUtils.h">
-            30
-            41
-            50
-            62
-            72
-            83
-            100
-            119
-            133
-            142
-            151
-            165
-            175
-            184
-            205
-            240
-            249
-            259
-            279
-            294
-            309
-            324
-            338
-            347
-            356
-            368
-            380
-            397
-            417
-            432
-            442
-            452
-            464
-            474
-            493
-            502
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbdevcon\inc\crequestshandler.h">
-            31
-            42
-            53
-            60
-            71
-            81
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\btengsrvpluginmgr.h">
-            43
-            64
-            72
-            79
-            89
-            97
-            104
-            112
-            121
-            132
-            143
-            164
-            173
-            182
-            191
-            200
-            215
-            225
-            233
-            242
-            250
-            258
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicebtsend\inc\BTSSSendListHandler.h">
-            35
-            53
-            68
-            76
-            89
-            96
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\server\inc\DunSession.h">
-            28
-            45
-            56
-            66
-            76
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\inc\DunDataPusher.h">
-            32
-            56
-            68
-            79
-            103
-            111
-            120
-            129
-            140
-            148
-            156
-            172
-            187
-            195
-            203
-            216
-            225
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\btengsrvbbconnectionmgr.h">
-            42
-            64
-            71
-            78
-            88
-            96
-            106
-            118
-            128
-            137
-            148
-            160
-            183
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\inc\nptplistcontrol.h">
-            35
-            53
-            61
-            70
-            78
-            86
-            94
-            102
-            110
-            118
-            126
-            136
-            149
-            158
-            166
-            180
-            194
-            203
-            211
-            223
-            231
-            239
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\server\inc\DunServerUtils.h">
-            32
-            43
-            53
-            63
-            75
-            89
-            109
-            126
-            136
-            148
-            159
-            191
-            201
-            211
-            223
-            237
-            255
-            272
-            282
-            294
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\plugins\inc\usb\DunUsbConfig.h">
-            37
-            47
-            56
-            68
-            94
-            102
-            112
-            120
-            136
-            152
-            161
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\inc\hidreportgenerator.h">
-            31
-            39
-            51
-            67
-            82
-            91
-            101
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\inc\DunTransporter.h">
-            112
-            162
-            173
-            188
-            198
-            206
-            218
-            228
-            242
-            346
-            371
-            401
-            410
-            419
-            429
-            438
-            449
-            468
-            484
-            493
-            504
-            515
-            525
-            535
-            547
-            566
-            584
-            599
-            617
-            628
-            646
-            656
-            664
-            672
-            680
-            692
-            704
-            713
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidengplugin\inc\bthidengplugin.h">
-            36
-            48
-            66
-            77
-            87
-            102
-            115
-            129
-            143
-            160
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irbearer\inc\iractivatewatcher.h">
-            38
-            49
-            57
-            65
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengconnman\inc\btengconnhandler.h">
-            41
-            61
-            72
-            82
-            93
-            104
-            115
-            126
-            137
-            147
-            155
-            166
-            177
-            185
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmac\btmslisten.h">
-            31
-            50
-            58
-            67
-            77
-            89
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\inc\nptpdatahandler.h">
-            38
-            45
-            63
-            71
-            79
-            88
-            102
-            116
-            126
-            136
-            152
-            161
-            170
-            186
-            195
-            207
-            221
-            238
-            247
-            255
-            263
-            271
-            279
-            287
-            295
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btpbap\inc\DisconnectHelper.h">
-            28
-            39
-            48
-            69
-            77
-            84
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\inc\DunSignalWaiter.h">
-            32
-            55
-            65
-            74
-            83
-            91
-            105
-            116
-            125
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdwriteobserver.h">
-            30
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\inc\hidreportroot.h">
-            42
-            55
-            71
-            85
-            97
-            106
-            117
-            151
-            162
-            178
-            194
-            210
-            222
-            232
-            242
-            250
-            262
-         </file>
-         <file path="Y:\LC_Domain_osext\shortlinksrv\shortlinksrv_plat\bluetooth_power_management_api\inc\btpm.h">
-            34
-            44
-            60
-            70
-            79
-            88
-            97
-            106
-         </file>
-         <file path="Y:\LC_Domain_osext\shortlinksrv\shortlinksrv_plat\bluetooth_audio_adaptation_api\inc\btaudiostreaminputbase.h">
-            35
-            43
-            53
-            69
-            77
-            94
-            107
-            119
-            132
-            145
-            157
-            169
-            182
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\inc\hiditem.h">
-            39
-            64
-            80
-            88
-            98
-            108
-            116
-            125
-            133
-            141
-            149
-            157
-            166
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\inc\BTUIDeviceContainer.h">
-            47
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\ptp_transport_api\inc\ptptransport.h">
-            84
-            94
-            103
-            110
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\basrvaccstateattached.h">
-            36
-            43
-            97
-            105
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irappgsplugin\inc\irappgsplugin.h">
-            41
-            58
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\inc\btuipluginman.h">
-            37
-            47
-            75
-            82
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\plugins\inc\ir\DunIrPlugin.h">
-            34
-            55
-            63
-            72
-            82
-            91
-            99
-            107
-            121
-            134
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\inc\hidfield.h">
-            49
-            78
-            86
-            94
-            102
-            110
-            118
-            126
-            134
-            142
-            150
-            158
-            166
-            174
-            182
-            190
-            198
-            206
-            214
-            222
-            230
-            238
-            246
-            254
-            262
-            270
-            278
-            286
-            294
-            302
-            311
-            320
-            328
-            337
-            345
-            353
-            362
-            371
-            379
-            388
-            397
-            406
-            415
-            424
-            433
-            442
-            451
-            460
-            469
-            478
-            487
-            496
-            505
-            514
-            523
-            532
-            541
-            550
-            559
-            569
-            579
-            589
-            599
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btbearer\inc\btpluginnotifier.h">
-            40
-            90
-            101
-            109
-            117
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudiostreamer\inc\btaudiostreamsender.h">
-            43
-            54
-            63
-            73
-            81
-            91
-            101
-            109
-            127
-            137
-            148
-            158
-            169
-            179
-            192
-            202
-            213
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\inc\BTUIMainView.h">
-            55
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdusbwriter.h">
-            50
-            71
-            88
-            98
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdusbreader.h">
-            46
-            69
-            80
-            94
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\inc\hidvalues.h">
-            103
-            123
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\inc\DunDownstream.h">
-            36
-            68
-            78
-            93
-            120
-            128
-            136
-            145
-            160
-            168
-            177
-            189
-            198
-            208
-            221
-            231
-            239
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbuinotif\inc\USBNotifier.h">
-            49
-            101
-            107
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmac\btmstate.h">
-            47
-            62
-            69
-            77
-            86
-            93
-            102
-            111
-            118
-            127
-            135
-            157
-            166
-            174
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\devmodel\inc\btpairedmodel.h">
-            46
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbdevcon\inc\cep0reader.h">
-            31
-            42
-            52
-            59
-            66
-            76
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\plugins\inc\bt\DunBtListen.h">
-            41
-            70
-            80
-            88
-            105
-            113
-            122
-            131
-            149
-            158
-            169
-            178
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\inc\nptpresponder.h">
-            48
-            55
-            64
-            75
-            83
-            92
-            109
-            118
-            128
-            136
-            144
-            152
-            165
-            175
-            190
-            203
-            213
-            223
-            231
-            238
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdusbconnector.h">
-            40
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsacStateAborting.h">
-            29
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmac\btmsaudio.h">
-            33
-            51
-            58
-            69
-            80
-            90
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\usb_personality_plugin_api\inc\cusbpersonalityplugin.h">
-            32
-            40
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\inc\hidconnectioninfo.h">
-            35
-            58
-            66
-            74
-            83
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\client\inc\dunplugin.h">
-            32
-            54
-            63
-            76
-            94
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\inc\DunAtCmdHandler.h">
-            38
-            72
-            82
-            90
-            101
-            124
-            132
-            141
-            149
-            157
-            171
-            180
-            189
-            201
-            210
-            220
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\inc\nptpdeviceinfo.h">
-            33
-            40
-            54
-            62
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irappgsplugin\inc\irappgspluginview.h">
-            59
-            87
-            95
-            103
-            112
-            119
-            128
-            135
-            143
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\plugins\inc\usb\DunUsbPlugin.h">
-            36
-            62
-            86
-            94
-            102
-            110
-            118
-            126
-            135
-            145
-            156
-            166
-            175
-            183
-            191
-            201
-            211
-            226
-            238
-            248
-            260
-            273
-            285
-            294
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\mouse\inc\mouse.h">
-            145
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\basrvaccstateattach.h">
-            35
-            42
-            70
-            78
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\ptp_transport_api\inc\ptpcallbacks.h">
-            32
-            39
-            48
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\inc\BTUIActive.h">
-            35
-            45
-            71
-            81
-            99
-            107
-            115
-            122
-            129
-            140
-            148
-            157
-            168
-            180
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengsettings\inc\btengsettingsnotify.h">
-            37
-            48
-            68
-            79
-            89
-            99
-            108
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmac\btmstempd.h">
-            31
-            61
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\inc\BTUIKeyWatcher.h">
-            35
-            60
-            71
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmac\btmactive.h">
-            33
-            50
-            57
-            65
-            76
-            84
-            92
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\obex_service_utils_api\inc\obexutilsmessagehandler.h">
-            173
-            189
-            197
-            214
-            226
-            236
-            246
-            247
-            254
-            262
-            445
-            458
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidengplugin\inc\genericactive.h">
-            33
-            43
-            51
-            64
-            85
-            92
-            100
-            113
-            121
-            129
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\ptp_server_api\inc\rptp.h">
-            40
-            57
-            65
-            75
-            83
-            90
-            105
-            111
-            129
-            141
-            152
-            158
-            165
-            176
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmac\btmsconnect.h">
-            37
-            63
-            71
-            83
-            94
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengdiscovery\inc\btengsdpattrparser.h">
-            36
-            57
-            70
-            82
-            91
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdpacketobserver.h">
-            31
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\locod\commoninc\locodserviceplugin.h">
-            37
-            54
-            70
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\usb_device_control_plugin_api\inc\cusbdevicecontrolplugin.h">
-            38
-            53
-            63
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\basrvaccman.h">
-            127
-            135
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\utils\inc\IRActive.h">
-            35
-            45
-            71
-            81
-            99
-            107
-            115
-            122
-            129
-            138
-            146
-            155
-            166
-            178
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\basrvactive.h">
-            32
-            42
-            50
-            64
-            88
-            95
-            103
-            114
-            122
-            130
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmac\btmsreconnect.h">
-            37
-            55
-            64
-            73
-            81
-            92
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\keyboard\inc\keyboard.h">
-            147
-            155
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\bluetooth_engine_plugin_api\inc\btengplugin.h">
-            37
-            56
-            76
-            98
-            111
-            128
-            138
-            149
-            164
-            177
-            191
-            206
-            222
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irbearer\inc\irstatemachine.h">
-            50
-            61
-            71
-            79
-            87
-            95
-            103
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdinterrupthandler.h">
-            48
-            68
-            76
-            85
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\btengsrvkeywatcher.h">
-            38
-            61
-            71
-            91
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\inc\ptpeventsender.h">
-            37
-            46
-            59
-            70
-            79
-            90
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmac\btmsockobserver.h">
-            30
-            39
-            47
-            56
-            64
-            72
-            80
-            92
-            100
-            108
-            116
-            124
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\inc\ptpserver.h">
-            40
-            49
-            55
-            62
-            68
-            75
-            82
-            91
-            98
-            105
-            115
-            122
-            128
-            134
-            141
-            147
-            154
-            160
-            167
-            174
-            181
-            188
-            196
-            205
-            213
-            221
-            228
-            235
-            242
-            255
-            264
-            270
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbdevcon\inc\cep0writer.h">
-            31
-            42
-            52
-            59
-            70
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\client\inc\dunclient.h">
-            34
-            46
-            56
-            64
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\locod\inc\locodservice.h">
-            36
-            44
-            56
-            66
-            78
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\atext\inc\genericactive.h">
-            33
-            43
-            51
-            59
-            71
-            92
-            99
-            107
-            120
-            128
-            136
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\inc\ptptimer.h">
-            29
-            36
-            41
-            47
-            52
-            57
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\btengsdpdbhandler.h">
-            34
-            44
-            57
-            68
-            80
-            90
-            101
-            108
-            115
-            126
-            137
-            148
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmac\btmsrfcomm.h">
-            33
-            61
-            73
-            86
-            96
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbdevcon\inc\cusbstatewatcher.h">
-            33
-            44
-            54
-            61
-            70
-            79
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\inc\ptpcallbacks.h">
-            32
-            39
-            48
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbuinotif\inc\USBUINQueriesNotifierMdrv.h">
-            35
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\locod\commoninc\locodbearerpluginparams.h">
-            34
-            43
-            52
-            60
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\usb_personality_plugin_api\inc\cusbpersonality.h">
-            91
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\inc\DunUtils.h">
-            30
-            40
-            49
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\btengserver.h">
-            49
-            56
-            65
-            90
-            112
-            121
-            129
-            137
-            145
-            153
-            161
-            169
-            177
-            184
-            192
-            200
-            208
-            215
-            225
-            243
-            256
-            272
-            280
-            288
-            296
-            304
-            312
-            320
-            328
-            336
-            345
-            355
-            368
-            378
-            387
-            399
-            409
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\basrvaccstateconnect.h">
-            35
-            42
-            60
-            68
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irbearer\inc\irstates.h">
-            31
-            60
-            79
-            97
-            115
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\inc\hidtranslate.h">
-            33
-            41
-            52
-            62
-            75
-            94
-            103
-            115
-            130
-            143
-            154
-            164
-            173
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btaudiostreaminputbase.h">
-            35
-            43
-            53
-            69
-            77
-            94
-            107
-            119
-            132
-            145
-            157
-            169
-            182
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanclient\inc\obexsmclient.h">
-            84
-            96
-            104
-            111
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanclient\inc\usbclientwrapper.h">
-            33
-            51
-            60
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\bluetooth_dosserver_audio_api\inc\btaudio4dos.h">
-            33
-            37
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\inc\imageprintuidocument.h">
-            38
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\btengpairobserver.h">
-            41
-            61
-            69
-            79
-            90
-            110
-            117
-            124
-            131
-            139
-            147
-            155
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\inc\imageprintuiapp.h">
-            36
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\btaudio4dosimpl.h">
-            32
-            36
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\inc\vMessageHandler.h">
-            10
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsacStateIdle.h">
-            29
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\inc\hidgeneric.h">
-            38
-            49
-            59
-            69
-            79
-            89
-            105
-            121
-            133
-            150
-            170
-            188
-            204
-            220
-            232
-            243
-            254
-            265
-            278
-            295
-            303
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\bluetooth_engine_connection_management_api\inc\btengconnman.h">
-            37
-            52
-            75
-            89
-            113
-            123
-            133
-            156
-            176
-            189
-            203
-            225
-            249
-            261
-            270
-            282
-            308
-            331
-            341
-            356
-            372
-            385
-            400
-            420
-            428
-            437
-            446
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\locod\inc\locodaemon.h">
-            36
-            44
-            68
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\inc\genericactive.h">
-            33
-            43
-            51
-            59
-            71
-            92
-            99
-            107
-            120
-            128
-            136
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicddataobserver.h">
-            30
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsacStateConnecting.h">
-            29
-            54
-            64
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\btengsrvstate.h">
-            52
-            99
-            109
-            119
-            132
-            142
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\locod\commoninc\locodbearerplugin.h">
-            34
-            47
-            59
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\inc\CUsbWatcher.h">
-            90
-            99
-            107
-            115
-            127
-            138
-            145
-            153
-            162
-            255
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmac\btmssniffm.h">
-            31
-            53
-            61
-            71
-            84
-            100
-            112
-            120
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudiostreamer\inc\btaudiostreamsendersbc.h">
-            39
-            54
-            63
-            73
-            85
-            95
-            105
-            116
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdusbpacketreader.h">
-            47
-            67
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\basrvactivenotifier.h">
-            36
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\locod\commoninc\locodbearerpluginobserver.h">
-            32
-            42
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbuinotif\inc\USBUIConnectionNotifier.h">
-            35
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanclient\inc\ObexSMRequester.h">
-            38
-            74
-            80
-            88
-            100
-            108
-            116
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irbearer\inc\irremotelockwatcher.h">
-            37
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsacActiveObserver.h">
-            32
-            42
-            50
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btpbap\inc\Pbapplugin.h">
-            32
-            57
-            68
-            80
-            96
-            110
-            125
-            141
-            157
-            174
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\inc\BTUIMainContainer.h">
-            33
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\inc\requestmanager.h">
-            94
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\inc\BTUIBlockedDevicesView.h">
-            42
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\inc\DunPlugin.h">
-            59
-            69
-            78
-            87
-            101
-            111
-            121
-            133
-            146
-            155
-            168
-            191
-            205
-            216
-            226
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\inc\nptpstorage.h">
-            35
-            43
-            62
-            70
-            78
-            86
-            94
-            102
-            110
-            119
-            133
-            142
-            151
-            159
-            167
-            175
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbobexclasscontroller\inc\CUsbObexClassController.h">
-            37
-            45
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbosdescriptorhandler\inc\cselectedpersonalityproperty.h">
-            31
-            42
-            50
-            58
-            68
-            75
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengdiscovery\inc\btengdevicesearch.h">
-            37
-            58
-            71
-            90
-            99
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsacactive.h">
-            33
-            53
-            60
-            68
-            79
-            87
-            95
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\inc\hidcollection.h">
-            39
-            78
-            86
-            94
-            102
-            110
-            118
-            129
-            139
-            147
-            155
-            163
-            171
-            179
-            187
-            197
-            205
-            213
-            223
-            233
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsacStateConfigured.h">
-            29
-            53
-            62
-            72
-            80
-            91
-            99
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\inc\hidparser.h">
-            152
-            167
-            242
-            267
-            276
-            294
-            305
-            316
-            328
-            342
-            357
-            372
-            386
-            396
-            408
-            422
-            436
-            451
-            461
-            477
-            490
-            499
-            511
-            521
-            531
-            540
-            549
-            559
-            568
-            577
-            586
-            595
-            604
-            613
-            622
-            631
-            640
-            649
-            658
-            667
-            676
-            685
-            694
-            703
-            712
-            721
-            730
-            739
-            748
-            757
-            766
-            776
-            784
-            792
-            800
-            812
-            821
-            831
-            839
-            847
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\locod\commoninc\locodservicepluginparams.h">
-            34
-            42
-            51
-            59
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\inc\hidinterfaces.h">
-            97
-            108
-            141
-            150
-            159
-            168
-            178
-            188
-            201
-            216
-            230
-            244
-            257
-            277
-            311
-            320
-            329
-            341
-            355
-            371
-            386
-            402
-            420
-            442
-            462
-            476
-            504
-            515
-            526
-            541
-            555
-            570
-            599
-            610
-            622
-            632
-            644
-            656
-            665
-            674
-            683
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\inc\DunNoteHandler.h">
-            33
-            54
-            62
-            70
-            84
-            92
-            100
-            113
-            122
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmac\btmsinuse.h">
-            34
-            46
-            68
-            76
-            85
-            93
-            101
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\inc\DunStream.h">
-            29
-            39
-            47
-            59
-            71
-            80
-            91
-            102
-            120
-            133
-            142
-            152
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsacStateConnected.h">
-            29
-            54
-            64
-            74
-            96
-            104
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irappgsplugin\inc\irkeywatcher.h">
-            34
-            58
-            69
-         </file>
-      </problem>
-      <problem name="ifassignments" severity="low">
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\CUsbPersonalityNotifier.cpp">
-            183
-            213
-            393
-         </file>
-      </problem>
-      <problem name="ifpreprocessor" severity="low">
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbmscpersonality\inc\CUsbActiveMscHandlerMdrv.h">
-            20
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\opp\inc\oppcontroller.h">
-            24
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btrcc\btrccPluginImplUid.h">
-            19
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdbaseclass.h">
-            20
-            202
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\inc\socketreader.h">
-            21
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\inc\hidgeneric.h">
-            20
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btpbap\inc\debug.h">
-            21
-            26
-            28
-            76
-            99
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmonobearer\bmbplugin.h">
-            20
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\inc\btnpbappinnotifier.h">
-            21
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\BTAccDosSender.h">
-            20
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanserver\inc\SrcsSecurityPolicy.h">
-            20
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\atext\inc\prjconfig.h">
-            26
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\atext\inc\atextpluginobserver.h">
-            21
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\bluetooth_local_variation_api\inc\btengdomaincrkeys.h">
-            20
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbremotepersonality\inc\debug.h">
-            33
-            47
-            68
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\inc\debug.h">
-            20
-            25
-            27
-            58
-            73
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmac\btmman.h">
-            64
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\atext\inc\debugconfig.h">
-            28
-            33
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\inc\BTServiceStarter.h">
-            21
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\atcodec\prjconfig.h">
-            26
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\inc\btninquiryao.h">
-            21
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdinterruptobserver.h">
-            20
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\inc\BTSUDebug.h">
-            21
-            25
-            27
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\ptp_transport_api\inc\ptptransport.h">
-            21
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmonocmdhandler\prjconfig.h">
-            26
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmonobearer\prjconfig.h">
-            26
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btpsmplugin\inc\btengpsmplugin.h">
-            20
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\bluetooth_engine_api\inc\btengconstants.h">
-            20
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\locod\inc\debugconfig.h">
-            28
-            33
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsacStateConnecting.h">
-            20
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\debugconfig.h">
-            28
-            33
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\inc\mptpobserver.h">
-            20
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\inc\prjconfig.h">
-            26
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\locod\inc\prjconfig.h">
-            26
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintuiprovider\inc\aiwprintingprovideruid.h">
-            20
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\inc\BTSController.h">
-            21
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdatatypes.h">
-            21
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanclient\inc\ObexSMPlugin.h">
-            20
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\opp\inc\debugconfig.h">
-            29
-            34
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\inc\debug.h">
-            20
-            25
-            27
-            58
-            73
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmonobearer\playercontrolistener.h">
-            20
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\basrvaccstate.h">
-            19
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsacStateConfiguring.h">
-            20
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmac\btmsyncsock.h">
-            19
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\lcstylustap\inc\debug.h">
-            20
-            26
-            28
-            50
-            65
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\atext\inc\atextsrv.h">
-            21
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\bluetooth_sap_connection_state_api\inc\BTSapInternalPSKeys.h">
-            1
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\btengprivatecrkeys.h">
-            20
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\inc\ir\debug.h">
-            36
-            52
-            74
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmonocmdhandler\BTMonoCdmaIncomingFlash.h">
-            21
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuiinfrared\inc\debug.h">
-            45
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\inc\debug.h">
-            33
-            49
-            71
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\bluetooth_dut_mode_api\inc\btengdomainpskeys.h">
-            20
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\atext\inc\atextsecpolicy.h">
-            21
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\common\debug.h">
-            20
-            26
-            28
-            50
-            65
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdreadobserver.h">
-            22
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanserver\inc\SrcsClSv.h">
-            60
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\inc\settingscontainer.h">
-            104
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\basrvaccstatedetach.h">
-            19
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanclient\inc\debug.h">
-            20
-            25
-            27
-            58
-            73
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\inc\nptpcodedefs.h">
-            25
-            77
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\inc\BTSapSecurityHandler.h">
-            22
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\inc\BTServiceAPI.h">
-            21
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\inc\debug.h">
-            43
-            51
-            62
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\inc\datasegmenter.h">
-            21
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irbearer\inc\irtestpskeys.h">
-            20
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmonocmdhandler\btmc_defs.h">
-            23
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\basrvaccstatedisconnect.h">
-            19
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\inc\BTSUImageConverter.h">
-            21
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmonobearer\bmbcmdlistener.h">
-            20
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\inc\prjconfig.h">
-            26
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\inc\BTSUDataConverter.h">
-            20
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\debug.h">
-            27
-            29
-            72
-            74
-            95
-            97
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\basrvaccstatequery.h">
-            19
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\bluetooth_sap_connection_state_api\inc\BTSapDomainPSKeys.h">
-            1
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbuinotif\inc\USBUINotifDebug.h">
-            24
-            30
-            56
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\bluetooth_dosserver_audio_api\inc\btaudio4dos.h">
-            21
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdusbplugin.h">
-            20
-            105
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\inc\BTSUXmlParser.h">
-            20
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\inc\BTConnectionTimer.h">
-            21
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\inc\BTSBPPController.h">
-            21
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\usb_secondary_display_api\inc\usbuinotifsecondarydisplay.h">
-            51
-            59
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\BTAccServer.h">
-            24
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmac\prjconfig.h">
-            26
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\inc\hiddriveritem.h">
-            21
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuibluetooth\inc\btmtmuidebug.h">
-            21
-            25
-            45
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbbasicpersonality\inc\debug.h">
-            33
-            49
-            71
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbdevcon\inc\debug.h">
-            33
-            47
-            68
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsacStateStreaming.h">
-            20
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\inc\BTSapRequestHandler.h">
-            23
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\inc\BTSOPPController.h">
-            21
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\inc\usb\debug.h">
-            36
-            52
-            74
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsacStateListening.h">
-            20
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\inc\btNotifDebug.h">
-            21
-            25
-            31
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btrcc\btrccplayerstarter.h">
-            21
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmac\btmconfig.h">
-            22
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\bluetooth_engine_plugin_api\inc\btengplugin.h">
-            21
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsacStateSuspended.h">
-            20
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\inc\BTSUPassKeyRequest.h">
-            21
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\atext\inc\atextsession.h">
-            25
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\common\inc\genericclient.h">
-            24
-            26
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbuinotif\inc\USBNotifier.h">
-            21
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsacSEPManager.h">
-            23
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\inc\bthidconnection.h">
-            21
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\opp\inc\debug.h">
-            20
-            25
-            27
-            58
-            73
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\inc\ptpcallbacks.h">
-            20
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdusbreader.h">
-            20
-            33
-            175
-            179
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\ptpclasscontroller\inc\ptpclasscontroller.h">
-            24
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\inc\hidreportgenerator.h">
-            19
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\inc\BTSUCapabilityResolver.h">
-            20
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\inc\BTSURefObjectResolver.h">
-            20
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\debugconfig.h">
-            29
-            35
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\inc\BTServiceParameterList.h">
-            20
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidengplugin\inc\bthidengplugin.h">
-            19
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\inc\obexservicemanprivatecrkeys.h">
-            20
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\debug.h">
-            20
-            26
-            28
-            50
-            65
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\lcstylustap\inc\debugconfig.h">
-            24
-            45
-            50
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\bip\inc\debug.h">
-            20
-            25
-            27
-            58
-            73
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btrcc\btrccVolumeLevelController.h">
-            21
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbmscpersonality\inc\debug.h">
-            33
-            49
-            71
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\inc\BTSapMessage.h">
-            22
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\inc\bthidclientsrv.h">
-            21
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmonobearer\debugconfig.h">
-            28
-            33
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\inc\imageprintuidebug.h">
-            23
-            29
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdwriteobserver.h">
-            22
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\inc\BTSapSniffHandler.h">
-            25
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconn_sdk\bluetooth_power_state_api\inc\btserversdkcrkeys.h">
-            21
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexserviceirsend\inc\IrSSProvider.h">
-            22
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdconstants.h">
-            21
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\basrvaccfwconn.h">
-            25
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\inc\hiditem.h">
-            20
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanclient\inc\prjconfig.h">
-            26
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\inc\BTServiceUtils.h">
-            20
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbosdescriptorhandler\inc\debug.h">
-            33
-            47
-            68
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmonocmdhandler\btmcprotocolstatus.h">
-            23
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\basrvaccstateattached.h">
-            19
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irappgsplugin\inc\irappgsplugin.h">
-            23
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsacStreamerController.h">
-            22
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdlogger.h">
-            21
-            34
-            50
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btpbap\inc\prjconfig.h">
-            25
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\basrvrvc.h">
-            19
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\at_command_handler_plugin_api\inc\atextpluginbase.h">
-            21
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\inc\BTSapPlugin.h">
-            23
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\inc\hidfield.h">
-            19
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicebtsend\inc\BTSSProvider.h">
-            22
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\bip\inc\prjconfig.h">
-            26
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexserviceirsend\inc\IrSendingServiceDebug.h">
-            21
-            25
-            27
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\inc\BTSapSocketHandler.h">
-            23
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btrcc\debugconfig.h">
-            40
-            45
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\common\atcodec.h">
-            21
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\ptp_transport_api\inc\ptpcallbacks.h">
-            20
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\inc\BTSBPPObjectRequest.h">
-            21
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\bluetooth_secondary_display_notification_api\inc\secondarydisplay\BTnotifSecondaryDisplayAPI.h">
-            20
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmonobearer\bmbserviceuid.h">
-            1
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdusbconnector.h">
-            20
-            109
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\BTAccSecurityPolicy.h">
-            23
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsacStateAborting.h">
-            20
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\inc\hidconnectioninfo.h">
-            20
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\inc\ir\obexsmirdaconnection.h">
-            21
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicebtsend\inc\BTSendingServiceDebug.h">
-            21
-            25
-            27
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\atext\inc\atextclientsrv.h">
-            21
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\basrvaccstateattach.h">
-            19
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btpbap\inc\debugconfig.h">
-            28
-            33
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmac\debugconfig.h">
-            28
-            33
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\expinc\BTAccParams.h">
-            25
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\expinc\BTAccPluginUid.h">
-            25
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btrcc\prjconfig.h">
-            26
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\inc\BTSBPPObjectServer.h">
-            21
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbui\inc\USBClassChangeUIDebug.h">
-            25
-            31
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmac\btmstempd.h">
-            19
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\inc\prjconfig.h">
-            26
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\debugconfig.h">
-            28
-            33
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\inc\debugconfig.h">
-            29
-            34
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\atcodec\debugconfig.h">
-            28
-            33
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdusbpacketreader.h">
-            21
-            35
-            108
-            112
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\expinc\AccessoryTypes_4dos.h">
-            24
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\inc\ptptransport.h">
-            21
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdpacketobserver.h">
-            22
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\basrvaccman.h">
-            19
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\dialup_connection_status_api\inc\dundomainpskeys.h">
-            23
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\server\inc\DunServerSecurityPolicy.h">
-            20
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdinterrupthandler.h">
-            20
-            124
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\btengsrvkeywatcher.h">
-            145
-            219
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdcontrolhandler.h">
-            20
-            40
-            189
-            193
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicddatahandler.h">
-            20
-            164
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\inc\btnotifier.h">
-            267
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\locod\inc\debug.h">
-            20
-            26
-            28
-            50
-            65
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\basrvpluginman.h">
-            23
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsacGavdpObserver.h">
-            23
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbui\USBClassChangeUIPlugin\inc\USBClassChangeUIPluginDebug.h">
-            24
-            30
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\common\debug.h">
-            20
-            26
-            28
-            50
-            65
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\client\inc\dunserverdef.h">
-            20
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdcontrolobserver.h">
-            20
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\prjconfig.h">
-            26
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\BTAccDosListener.h">
-            20
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\inc\obexutilsdebug.h">
-            21
-            25
-            45
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\common\inc\hiddebug.h">
-            27
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\inc\BTSBPPServerWait.h">
-            21
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdusbwriter.h">
-            20
-            38
-            176
-            180
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\opp\inc\prjconfig.h">
-            26
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\BTAccFwConnection_d.h">
-            24
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\inc\prjconfig.h">
-            26
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbuinotif\inc\USBUINQueriesNotifierMdrv.h">
-            21
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\inc\debugconfig.h">
-            28
-            33
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanserver\inc\debug.h">
-            36
-            52
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\bluetooth_dosserver_audio_api\inc\btaudio4dosdomainpskeys.h">
-            22
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\expinc\BTAccObserver.h">
-            23
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\btengserver.h">
-            23
-            93
-            221
-            251
-            516
-            528
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\basrvaccstateconnect.h">
-            19
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\inc\obexutilsglobalprogressdialog.h">
-            22
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\inc\hidtranslate.h">
-            19
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\BTAccFwIf.h">
-            23
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\inc\debugconfig.h">
-            28
-            33
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\inc\debug.h">
-            20
-            27
-            29
-            51
-            66
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\inc\BTServiceClient.h">
-            21
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmonocmdhandler\debugconfig.h">
-            28
-            33
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\inc\hidinterfaces.h">
-            21
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\basrvacc.h">
-            19
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\inc\BTNGenericInfoNotifier.h">
-            21
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsacStateIdle.h">
-            20
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\locod\inc\utils.h">
-            20
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsacGavdp.h">
-            23
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\obex_secondary_display_notification_api\inc\secondarydisplay\obexutilssecondarydisplayapi.h">
-            21
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintuiprovider\inc\imageprintuidebug.h">
-            23
-            29
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\inc\BTSapServerState.h">
-            24
-            31
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\inc\debug.h">
-            20
-            26
-            28
-            52
-            67
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicddataobserver.h">
-            21
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexserviceirsend\inc\IRClient.h">
-            21
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\prjconfig.h">
-            26
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicddatatypes.h">
-            21
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanclient\inc\debugconfig.h">
-            29
-            34
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsacStreamEndPoint.h">
-            23
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\prjconfig.h">
-            27
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\expinc\BTAccTypes.h">
-            23
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\BTAccInfo.h">
-            22
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\inc\BTSapSession.h">
-            23
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\inc\debugconfig.h">
-            28
-            33
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\bip\inc\debugconfig.h">
-            29
-            34
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\inc\BTSapHciExtensionMan.h">
-            23
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\inc\DunDebug.h">
-            20
-            27
-            29
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\inc\DunPlugin.h">
-            20
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\inc\hidparser.h">
-            19
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\expinc\BTAccPlugin.h">
-            25
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\atext\inc\debug.h">
-            20
-            26
-            28
-            50
-            65
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmac\btmsreconnect.h">
-            19
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\inc\hidcollection.h">
-            20
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsacStateConfigured.h">
-            20
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudiostreamer\inc\btaudiostreamerdebug.h">
-            20
-            26
-            40
-            59
-            84
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\btengprivatepskeys.h">
-            20
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\inc\socketwriter.h">
-            21
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\btaudio4dosimpl.h">
-            21
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\inc\BTSBIPController.h">
-            21
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\inc\BTSapSimCardStatusNotifier.h">
-            24
-            30
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\inc\bt\debug.h">
-            34
-            50
-            72
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsacStateConnected.h">
-            20
-         </file>
-      </problem>
-      <problem name="longlines" severity="low">
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSUCapabilityResolver.cpp">
-            178
-            267
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicdusbreader.cpp">
-            415
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudiostreamer\src\btaudiostreamsendersbc.cpp">
-            112
-            188
-         </file>
-      </problem>
-      <problem name="magicnumbers" severity="low">
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\src\nptpimagehandler.cpp">
-            318
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\atextagent.cpp">
-            102
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthiddevice.cpp">
-            72
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\src\bt\obexsmbtconnection.cpp">
-            192
-            195
-            197
-            199
-            201
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\src\nptpobject.cpp">
-            427
-            428
-            625
-            632
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmcprotocol.cpp">
-            867
-            872
-            875
-            1204
-            1214
-            1224
-            1234
-            1244
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNInqUI.cpp">
-            831
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNAuthNotifier.cpp">
-            70
-            74
-            75
-            79
-            82
-            87
-            184
-            419
-            619
-            630
-            631
-            638
-            639
-            640
-            647
-            650
-            651
-            667
-            672
-            674
-            699
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\bip\src\BIPController.cpp">
-            279
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\opp\src\oppcontroller.cpp">
-            191
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irappgsplugin\src\irappgspluginview.cpp">
-            411
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapMessage.cpp">
-            59
-            87
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\hiddescriptor.cpp">
-            92
-            98
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNPwrNotifier.cpp">
-            134
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\manager\src\mapping.cpp">
-            41
-            42
-            43
-            44
-            45
-            46
-            47
-            48
-            49
-            50
-            51
-            52
-            58
-            59
-            60
-            61
-            62
-            63
-            79
-            80
-            81
-            82
-            83
-            84
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapSession.cpp">
-            164
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\src\nptpstorage.cpp">
-            63
-            409
-            428
-            434
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuibluetooth\src\btmtmui.cpp">
-            269
-            283
-            286
-            295
-            358
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsglobalprogressdialog.cpp">
-            190
-            193
-            196
-            201
-            204
-            214
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicdinterrupthandler.cpp">
-            212
-            216
-            220
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapSocketStateListen.cpp">
-            65
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\btnumcmpnotifier.cpp">
-            137
-            156
-            218
-            314
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSUDataConverter.cpp">
-            61
-            75
-            91
-            105
-            117
-            121
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthidsession.cpp">
-            253
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexserviceirsend\src\IRClient.cpp">
-            165
-            166
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUIMainView.cpp">
-            135
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsuilayer.cpp">
-            175
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmcnumber.cpp">
-            103
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvaccstate.cpp">
-            146
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\vMessageHandler.cpp">
-            415
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNPinNotifier.cpp">
-            153
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\src\ptpservermain.cpp">
-            84
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidkbdsettings\src\layoututils.cpp">
-            41
-            44
-            47
-            50
-            53
-            56
-            59
-            62
-            65
-            68
-            71
-            96
-            99
-            124
-            127
-            130
-            133
-            136
-            139
-            142
-            145
-            148
-            151
-            154
-            180
-            183
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicdbaseclass.cpp">
-            156
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\src\nptpdeviceinfo.cpp">
-            199
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\btaccDosListener.cpp">
-            100
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\BTAccInfoCmdHandler.cpp">
-            90
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\btnssppasskeyentrynotifier.cpp">
-            132
-            151
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuibluetooth\src\btmtmuidata.cpp">
-            370
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuiinfrared\src\irmtmuidata.cpp">
-            398
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsdialog.cpp">
-            316
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStreamerController.cpp">
-            308
-            313
-            318
-            323
-            384
-            389
-            394
-            399
-            421
-            426
-            644
-            666
-            683
-            688
-            722
-            883
-            889
-            895
-            901
-            921
-            924
-            927
-            930
-            934
-            1062
-            1068
-            1074
-            1080
-            1100
-            1103
-            1106
-            1109
-            1113
-            1138
-            1144
-            1160
-            1178
-            1179
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsmessagehandler.cpp">
-            154
-            184
-            524
-            553
-            595
-            639
-            644
-            654
-            823
-            853
-            922
-            928
-            940
-            1005
-            1076
-            1112
-            1246
-            1266
-            1376
-            1482
-            1522
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmccallstatus.cpp">
-            287
-            291
-            297
-            302
-            363
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNInqNotifier.cpp">
-            181
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\mouse\src\mouse.cpp">
-            365
-            367
-            370
-            372
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengregistrycleaner.cpp">
-            211
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvaccman.cpp">
-            241
-            372
-            475
-            506
-            521
-            553
-            617
-            639
-            709
-            764
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTServiceParameterList.cpp">
-            169
-            307
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicdcontrolhandler.cpp">
-            322
-            371
-            440
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthidconnection.cpp">
-            210
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengsdpdbhandler.cpp">
-            128
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSBIPController.cpp">
-            302
-            404
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvaccfwconn.cpp">
-            106
-            131
-            190
-            207
-            224
-            240
-            255
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicddatahandler.cpp">
-            392
-            398
-            644
-            648
-            652
-            656
-            660
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthidserver.cpp">
-            1438
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\hiddescriptorlist.cpp">
-            81
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilslaunchwaiter.cpp">
-            176
-            288
-            338
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\RUsbWatcher.cpp">
-            62
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmrfcommsock.cpp">
-            229
-            251
-         </file>
-      </problem>
-      <problem name="membervariablecallld" severity="low">
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbuinotif\src\USBUINQueriesNotifierMdrv.cpp">
-            256
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNPinNotifier.cpp">
-            267
-            312
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNGenericQueryNotifier.cpp">
-            380
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNInqUI.cpp">
-            325
-            399
-            428
-            456
-            513
-            1170
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNAuthNotifier.cpp">
-            404
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\btnumcmpnotifier.cpp">
-            287
-            334
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\btnssppasskeyentrynotifier.cpp">
-            291
-            339
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNObexPinNotifier.cpp">
-            148
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNPBAPPinNotifier.cpp">
-            151
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\src\notes.cpp">
-            148
-            203
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsdialog.cpp">
-            142
-            176
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbuinotif\src\USBUINCableConnectedNotifier.cpp">
-            219
-            331
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNotifier.cpp">
-            441
-            569
-            722
-            865
-         </file>
-      </problem>
-      <problem name="multipledeclarations" severity="low">
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\btuipluginman.cpp">
-            130
-         </file>
-      </problem>
-      <problem name="namespace" severity="low">
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\inc\bthidprivatecrkeys.h">
-            63
-         </file>
-      </problem>
-      <problem name="nonconsttdesc" severity="low">
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsglobalprogressdialog.cpp">
-            175
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsmessagehandler.cpp">
-            1015
-         </file>
-      </problem>
-      <problem name="null" severity="low">
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTServiceStarter.cpp">
-            263
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNInqUI.cpp">
-            385
-            423
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNAuthNotifier.cpp">
-            146
-            531
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUIPairedDevicesView.cpp">
-            553
-            968
-            1278
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irappgsplugin\src\irappgspluginview.cpp">
-            343
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengdiscovery\src\btengdiscovery.cpp">
-            158
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSBPPObjectRequest.cpp">
-            155
-            159
-            197
-            201
-            234
-            422
-            463
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNPBAPPinNotifier.cpp">
-            95
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\devmodel\src\btdevmodelbase.cpp">
-            168
-            531
-            786
-            798
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSUPassKeyRequest.cpp">
-            113
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicdbaseclass.cpp">
-            561
-            565
-            569
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSUCapabilityResolver.cpp">
-            186
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNPwrNotifier.cpp">
-            89
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicdusbreader.cpp">
-            347
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\devmodel\src\btdevmodel.cpp">
-            44
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsglobalprogressdialog.cpp">
-            116
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSUImageConverter.cpp">
-            136
-            164
-            222
-            223
-            256
-            257
-            258
-            279
-            284
-            303
-            304
-            305
-            306
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\btnumcmpnotifier.cpp">
-            114
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengdiscovery\src\btengsdpquery.cpp">
-            316
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSBPPController.cpp">
-            165
-            182
-            352
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexserviceirsend\src\IRClient.cpp">
-            416
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNInqNotifier.cpp">
-            93
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\CUsbPersonalityNotifier.cpp">
-            183
-            213
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanserver\src\SrcsSession.cpp">
-            171
-            188
-            200
-            212
-            236
-            260
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNPinNotifier.cpp">
-            111
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSBPPObjectServer.cpp">
-            59
-            60
-            61
-            170
-            184
-            306
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexserviceirsend\src\IRSSProvider.cpp">
-            122
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSBPPServerWait.cpp">
-            88
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\btnssppasskeyentrynotifier.cpp">
-            108
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\src\BTUIAppUi.cpp">
-            108
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSUXmlParser.cpp">
-            100
-            147
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUIKeyWatcher.cpp">
-            66
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNotifier.cpp">
-            432
-            836
-            863
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsglobaldialog.cpp">
-            153
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNGenericQueryNotifier.cpp">
-            355
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\devmodel\src\btpairedmodel.cpp">
-            182
-            411
-            552
-            771
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTServiceParameterList.cpp">
-            142
-            181
-            321
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btrcc\btrccLinker.cpp">
-            373
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSBIPController.cpp">
-            480
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\btnpaireddevsettnotifier.cpp">
-            104
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicebtsend\src\BTSSProvider.cpp">
-            113
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNObexPinNotifier.cpp">
-            94
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmrfcommsock.cpp">
-            139
-            414
-         </file>
-      </problem>
-      <problem name="privateinheritance" severity="low">
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\BTAccInfoMainService.h">
-            35
-         </file>
-      </problem>
-      <problem name="resourcesonheap" severity="low">
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSUXmlParser.cpp">
-            109
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthidconnection.cpp">
-            161
-            168
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudiostreamer\src\btaudiostreamsender.cpp">
-            58
-            60
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthidserver.cpp">
-            167
-            168
-            1109
-            1166
-         </file>
-      </problem>
-      <problem name="stringliterals" severity="low">
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicdusbplugin.cpp">
-            60
-            68
-            79
-            88
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTServiceStarter.cpp">
-            70
-            74
-            94
-            99
-            127
-            138
-            176
-            180
-            191
-            233
-            259
-            304
-            315
-            331
-            346
-            354
-            362
-            367
-            377
-            403
-            408
-            417
-            426
-            435
-            443
-            454
-            471
-            480
-            495
-            498
-            516
-            525
-            596
-            609
-            622
-            642
-            680
-            682
-            691
-            702
-            712
-            783
-            791
-            792
-            811
-            821
-            827
-            847
-            868
-            879
-            889
-            899
-            936
-            947
-            950
-            961
-            991
-            1002
-            1004
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btpbap\inc\debug.h">
-            108
-            133
-            153
-            186
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengconnman\src\btengconnman.cpp">
-            57
-            242
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\dpsxmlparser.cpp">
-            41
-            52
-            54
-            63
-            65
-            75
-            78
-            81
-            90
-            93
-            97
-            108
-            112
-            117
-            124
-            169
-            184
-            194
-            198
-            209
-            216
-            232
-            240
-            251
-            256
-            267
-            271
-            278
-            287
-            292
-            297
-            308
-            311
-            323
-            334
-            337
-            340
-            350
-            353
-            356
-            366
-            369
-            372
-            382
-            385
-            388
-            399
-            402
-            405
-            414
-            417
-            419
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTServiceClient.cpp">
-            63
-            102
-            126
-            179
-            189
-            227
-            238
-            275
-            285
-            369
-            378
-            384
-            393
-            405
-            416
-            420
-            429
-            445
-            454
-            463
-            477
-            508
-            529
-            534
-            543
-            562
-            565
-            573
-            595
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmactive.cpp">
-            58
-            64
-            71
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapSocketStateSend.cpp">
-            37
-            40
-            50
-            57
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\manager\src\library.cpp">
-            51
-            71
-            75
-            82
-            86
-            96
-            103
-            111
-            118
-            123
-            129
-            136
-            138
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\inc\debug.h">
-            82
-            97
-            108
-            141
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStateListening.cpp">
-            86
-            201
-            206
-            223
-            229
-            301
-            313
-            321
-            328
-            348
-            356
-            389
-            402
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengconnman\src\btengpairinghandler.cpp">
-            100
-            170
-            178
-            207
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicebtsend\src\btsssendlisthandler.cpp">
-            80
-            91
-            100
-            110
-            118
-            128
-            134
-            141
-            147
-            166
-            175
-            190
-            199
-            204
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunNoteHandler.cpp">
-            55
-            57
-            66
-            75
-            84
-            87
-            93
-            98
-            108
-            111
-            116
-            122
-            142
-            144
-            153
-            156
-            165
-            168
-            192
-            201
-            226
-            236
-            240
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\dpsconnectnotifier.cpp">
-            39
-            52
-            54
-            63
-            65
-            74
-            82
-            124
-            126
-            135
-            137
-            146
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irbearer\src\irremotelockwatcher.cpp">
-            93
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanserver\src\SrcsSession.cpp">
-            61
-            123
-            148
-            176
-            186
-            201
-            215
-            237
-            246
-            261
-            269
-            279
-            338
-            357
-            361
-            371
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmsdisconnect.cpp">
-            45
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\manager\src\server.cpp">
-            43
-            67
-            101
-            109
-            218
-            227
-            238
-            247
-            268
-            275
-            282
-            289
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunDownstream.cpp">
-            53
-            55
-            86
-            89
-            94
-            101
-            114
-            124
-            127
-            132
-            139
-            146
-            156
-            169
-            178
-            186
-            191
-            196
-            216
-            221
-            245
-            249
-            256
-            264
-            268
-            277
-            283
-            288
-            292
-            299
-            309
-            316
-            324
-            335
-            361
-            385
-            405
-            409
-            414
-            421
-            435
-            446
-            454
-            464
-            479
-            489
-            504
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapRequestHandler.cpp">
-            42
-            67
-            81
-            93
-            152
-            165
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUIMainView.cpp">
-            311
-            592
-            612
-            617
-            636
-            637
-            686
-            737
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\dpsscriptsender.cpp">
-            40
-            53
-            55
-            64
-            66
-            75
-            109
-            124
-            141
-            144
-            153
-            155
-            164
-            167
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\mouse\src\mouse.cpp">
-            46
-            196
-            563
-            602
-            625
-            738
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\manager\src\client.cpp">
-            55
-            56
-            84
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicdusbreader.cpp">
-            61
-            73
-            83
-            99
-            108
-            118
-            131
-            136
-            151
-            163
-            185
-            196
-            210
-            220
-            227
-            238
-            243
-            248
-            257
-            270
-            277
-            284
-            286
-            288
-            293
-            304
-            349
-            371
-            372
-            390
-            391
-            397
-            424
-            425
-            430
-            440
-            451
-            463
-            470
-            474
-            486
-            495
-            506
-            512
-            513
-            524
-            525
-            527
-            539
-            554
-            555
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\inc\debug.h">
-            82
-            97
-            108
-            141
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapStateNotConnected.cpp">
-            40
-            57
-            63
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\client\src\dunplugin.cpp">
-            43
-            50
-            59
-            60
-            71
-            85
-            95
-            103
-            114
-            120
-            127
-            131
-            149
-            150
-            161
-            166
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmcoperator.cpp">
-            82
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\server\src\DunServerUtils.cpp">
-            78
-            86
-            94
-            105
-            120
-            130
-            137
-            140
-            152
-            156
-            166
-            170
-            173
-            175
-            180
-            188
-            192
-            199
-            203
-            216
-            227
-            239
-            243
-            256
-            260
-            266
-            281
-            288
-            291
-            293
-            304
-            308
-            326
-            337
-            349
-            355
-            364
-            367
-            378
-            382
-            387
-            390
-            396
-            397
-            407
-            408
-            419
-            423
-            428
-            431
-            437
-            438
-            445
-            451
-            453
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidkbdsettings\src\bthidsettings.cpp">
-            99
-            107
-            128
-            138
-            151
-            161
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\common\debug.h">
-            74
-            89
-            100
-            133
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbremotepersonality\src\csetpersonality.cpp">
-            33
-            60
-            71
-            111
-            151
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\dpsxmlstring.cpp">
-            69
-            73
-            77
-            81
-            85
-            89
-            95
-            99
-            103
-            107
-            111
-            115
-            119
-            123
-            135
-            139
-            143
-            147
-            160
-            164
-            168
-            179
-            183
-            187
-            191
-            195
-            199
-            203
-            207
-            211
-            215
-            219
-            223
-            227
-            231
-            235
-            239
-            243
-            247
-            251
-            255
-            259
-            263
-            267
-            271
-            275
-            279
-            283
-            287
-            291
-            295
-            299
-            303
-            307
-            311
-            315
-            319
-            323
-            327
-            331
-            335
-            339
-            343
-            347
-            351
-            355
-            359
-            363
-            367
-            371
-            375
-            379
-            383
-            387
-            391
-            395
-            399
-            403
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmonobearer\bmbplugin.cpp">
-            90
-            98
-            138
-            163
-            167
-            193
-            207
-            219
-            230
-            238
-            265
-            268
-            272
-            289
-            292
-            296
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNInqUI.cpp">
-            88
-            109
-            118
-            129
-            135
-            143
-            149
-            159
-            168
-            184
-            193
-            246
-            255
-            279
-            289
-            352
-            365
-            385
-            405
-            413
-            423
-            424
-            443
-            466
-            499
-            532
-            542
-            546
-            563
-            588
-            598
-            622
-            643
-            646
-            655
-            657
-            658
-            759
-            768
-            892
-            902
-            904
-            911
-            943
-            1034
-            1042
-            1069
-            1103
-            1108
-            1113
-            1121
-            1213
-            1255
-            1263
-            1268
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irappgsplugin\src\irappgspluginview.cpp">
-            286
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNObexPinNotifier.cpp">
-            92
-            115
-            125
-            175
-            185
-            194
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\devmodel\src\btdevmodelbase.cpp">
-            334
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacState.cpp">
-            223
-            228
-            334
-            340
-            404
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmcsignal.cpp">
-            95
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNPwrNotifier.cpp">
-            87
-            102
-            112
-            159
-            169
-            173
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengsrvstate.cpp">
-            239
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTConnectionTimer.cpp">
-            53
-            58
-            105
-            112
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbdevcon\src\cep0reader.cpp">
-            32
-            61
-            102
-            114
-            136
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\opp\src\oppcontroller.cpp">
-            130
-            187
-            247
-            379
-            384
-            392
-            427
-            447
-            451
-            483
-            509
-            513
-            521
-            549
-            566
-            591
-            602
-            613
-            621
-            675
-            923
-            931
-            936
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmslisten.cpp">
-            50
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\btnumcmpnotifier.cpp">
-            112
-            137
-            155
-            158
-            162
-            173
-            192
-            228
-            241
-            252
-            279
-            293
-            333
-            356
-            366
-            375
-            387
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbbasicpersonality\inc\debug.h">
-            74
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\src\hidreportroot.cpp">
-            86
-            89
-            155
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintuiprovider\src\caiwprintingprovider.cpp">
-            97
-            99
-            110
-            130
-            132
-            147
-            167
-            172
-            182
-            193
-            209
-            219
-            235
-            246
-            259
-            271
-            272
-            280
-            291
-            310
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmsrfcomm.cpp">
-            51
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbosdescriptorhandler\inc\debug.h">
-            71
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengregistrycleaner.cpp">
-            120
-            207
-            260
-            266
-            275
-            280
-            286
-            367
-            374
-            413
-            417
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNGenericQueryNotifier.cpp">
-            103
-            120
-            136
-            236
-            273
-            282
-            295
-            334
-            378
-            381
-            416
-            426
-            436
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\debug.h">
-            74
-            89
-            100
-            135
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapStateCardReaderStatus.cpp">
-            39
-            52
-            63
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbui\src\USBClassChangeUIAppui.cpp">
-            43
-            58
-            69
-            79
-            91
-            96
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbdevcon\src\cstatemachine.cpp">
-            41
-            57
-            98
-            118
-            136
-            141
-            154
-            171
-            186
-            211
-            225
-            233
-            257
-            273
-            300
-            314
-            325
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNAuthNotifier.cpp">
-            144
-            183
-            186
-            187
-            189
-            200
-            206
-            258
-            271
-            324
-            332
-            339
-            345
-            352
-            357
-            363
-            368
-            427
-            442
-            464
-            493
-            504
-            514
-            519
-            539
-            549
-            559
-            564
-            604
-            618
-            650
-            653
-            666
-            683
-            693
-            704
-            718
-            726
-            736
-            739
-            740
-            744
-            756
-            760
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\src\settingsview.cpp">
-            44
-            47
-            58
-            62
-            73
-            79
-            98
-            100
-            109
-            121
-            127
-            134
-            161
-            166
-            179
-            184
-            194
-            201
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\src\rptp.cpp">
-            38
-            67
-            78
-            88
-            108
-            120
-            143
-            155
-            166
-            168
-            178
-            180
-            192
-            196
-            206
-            208
-            220
-            229
-            231
-            243
-            250
-            252
-            267
-            271
-            282
-            284
-            294
-            298
-            308
-            312
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidkbdsettings\src\bthidsettingcontainer.cpp">
-            69
-            137
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\src\settingscontainer.cpp">
-            60
-            87
-            99
-            113
-            129
-            141
-            146
-            156
-            171
-            182
-            194
-            218
-            228
-            239
-            244
-            246
-            258
-            261
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\src\nptpstorage.cpp">
-            122
-            131
-            177
-            186
-            274
-            294
-            300
-            312
-            317
-            333
-            343
-            348
-            394
-            475
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunDataWaiter.cpp">
-            46
-            48
-            57
-            64
-            75
-            78
-            84
-            90
-            93
-            103
-            106
-            113
-            117
-            127
-            130
-            135
-            143
-            153
-            156
-            161
-            167
-            188
-            194
-            203
-            207
-            217
-            222
-            244
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbdevcon\src\cep0writer.cpp">
-            32
-            60
-            93
-            114
-            122
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmccallinghandler.cpp">
-            61
-            107
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\CUsbDeviceLock.cpp">
-            46
-            53
-            70
-            84
-            107
-            113
-            132
-            137
-            142
-            157
-            172
-            192
-            200
-            206
-            219
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\src\nptpimagehandler.cpp">
-            50
-            69
-            71
-            82
-            84
-            94
-            96
-            106
-            125
-            139
-            142
-            155
-            171
-            184
-            204
-            218
-            228
-            246
-            256
-            284
-            294
-            300
-            311
-            331
-            340
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuiinfrared\src\irmtmuidata.cpp">
-            43
-            54
-            57
-            72
-            85
-            98
-            157
-            169
-            185
-            206
-            228
-            250
-            272
-            295
-            372
-            397
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSUXmlParser.cpp">
-            49
-            53
-            76
-            80
-            98
-            118
-            134
-            145
-            165
-            174
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\dpsptpnotifier.cpp">
-            38
-            50
-            52
-            61
-            63
-            72
-            78
-            87
-            94
-            98
-            107
-            109
-            118
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\ptpclasscontroller\src\ptpclasscontroller.cpp">
-            75
-            103
-            113
-            128
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\devmodel\src\btpairedmodel.cpp">
-            368
-            454
-            644
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilslaunchwaiter.cpp">
-            205
-            210
-            218
-            233
-            247
-            251
-            259
-            270
-            286
-            327
-            395
-            397
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengclient.cpp">
-            48
-            55
-            61
-            72
-            117
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\inc\imageprintuidebug.h">
-            78
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStreamEndPoint.cpp">
-            107
-            119
-            132
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmonobearer\playercontrolistener.cpp">
-            56
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbdevcon\src\cusbdevcon.cpp">
-            37
-            51
-            65
-            69
-            73
-            77
-            95
-            120
-            124
-            128
-            132
-            136
-            140
-            144
-            148
-            152
-            168
-            177
-            186
-            195
-            204
-            213
-            229
-            237
-            258
-            262
-            276
-            296
-            319
-            334
-            341
-            352
-            366
-            381
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\CUsbActiveState.cpp">
-            47
-            50
-            92
-            98
-            125
-            135
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irbearer\src\irstatuswatcher.cpp">
-            78
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvaccstateconnect.cpp">
-            47
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\bip\inc\debug.h">
-            82
-            97
-            108
-            141
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbdevcon\src\crequestshandler.cpp">
-            37
-            53
-            72
-            101
-            117
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\locod\src\locodservice.cpp">
-            67
-            81
-            88
-            94
-            109
-            120
-            133
-            146
-            155
-            172
-            178
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexserviceirsend\src\IRClient.cpp">
-            61
-            95
-            150
-            192
-            231
-            242
-            305
-            317
-            346
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbbasicpersonality\src\CUsbActiveBasicHandler.cpp">
-            43
-            63
-            91
-            103
-            115
-            127
-            139
-            151
-            160
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapSniffHandler.cpp">
-            37
-            44
-            49
-            53
-            58
-            69
-            84
-            92
-            96
-            104
-            108
-            113
-            117
-            122
-            133
-            136
-            143
-            147
-            161
-            165
-            171
-            175
-            187
-            194
-            199
-            203
-            208
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvaccstate.cpp">
-            61
-            68
-            78
-            121
-            131
-            148
-            168
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapSecurityHandler.cpp">
-            44
-            74
-            86
-            99
-            105
-            129
-            140
-            174
-            178
-            184
-            189
-            219
-            247
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\src\BTUIAppUi.cpp">
-            167
-            190
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapStatePowerOff.cpp">
-            39
-            53
-            71
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\src\connectionmanager.cpp">
-            40
-            54
-            57
-            86
-            89
-            94
-            105
-            109
-            117
-            118
-            119
-            123
-            126
-            137
-            140
-            151
-            155
-            172
-            176
-            188
-            195
-            206
-            207
-            210
-            213
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapStateReset.cpp">
-            39
-            59
-            90
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\atext\inc\debug.h">
-            74
-            89
-            100
-            135
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUIRegistryWatcher.cpp">
-            124
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudiostreamer\inc\btaudiostreamerdebug.h">
-            87
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbuinotif\src\USBUINMain.cpp">
-            45
-            63
-            71
-            95
-            100
-            122
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengdevman\src\btengdevman.cpp">
-            56
-            170
-            195
-            228
-            240
-            344
-            349
-            360
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\dpsusbnotifier.cpp">
-            44
-            62
-            64
-            73
-            80
-            89
-            94
-            103
-            113
-            129
-            138
-            140
-            149
-            163
-            172
-            197
-            206
-            221
-            230
-            244
-            253
-            255
-            264
-            274
-            293
-            302
-            304
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunNetDataport.cpp">
-            50
-            58
-            69
-            71
-            82
-            86
-            91
-            98
-            105
-            117
-            120
-            123
-            131
-            137
-            138
-            150
-            165
-            169
-            170
-            181
-            195
-            214
-            222
-            229
-            232
-            241
-            246
-            252
-            258
-            264
-            267
-            276
-            284
-            291
-            299
-            302
-            312
-            316
-            320
-            330
-            334
-            339
-            344
-            346
-            351
-            353
-            356
-            365
-            369
-            382
-            384
-            389
-            391
-            395
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengsrvkeywatcher.cpp">
-            298
-            305
-            316
-            331
-            343
-            351
-            359
-            370
-            383
-            395
-            400
-            409
-            460
-            478
-            515
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\BTAccSession.cpp">
-            73
-            115
-            354
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbobexclasscontroller\src\CUsbObexClassController.cpp">
-            113
-            135
-            150
-            154
-            172
-            188
-            207
-            247
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\btaudiomanplugin.cpp">
-            128
-            163
-            292
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicdusbpacketreader.cpp">
-            61
-            71
-            81
-            91
-            100
-            104
-            111
-            114
-            116
-            127
-            135
-            144
-            147
-            159
-            160
-            162
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\manager\src\decode.cpp">
-            38
-            58
-            188
-            208
-            220
-            238
-            251
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapStateInit.cpp">
-            38
-            50
-            56
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\CUsbWatcherServer.cpp">
-            49
-            56
-            76
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvaccstatedetach.cpp">
-            47
-            75
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\cusbglobalsystemstateobserver.cpp">
-            74
-            98
-            102
-            122
-            128
-            149
-            159
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\cusbdevconstarter.cpp">
-            37
-            60
-            79
-            84
-            94
-            100
-            110
-            112
-            123
-            129
-            150
-            154
-            164
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNMain.cpp">
-            54
-            114
-            125
-            139
-            147
-            152
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\src\ptpstackstatelistener.cpp">
-            55
-            57
-            66
-            69
-            78
-            81
-            101
-            105
-            111
-            121
-            130
-            140
-            143
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSBPPObjectServer.cpp">
-            57
-            99
-            114
-            118
-            142
-            159
-            168
-            174
-            183
-            195
-            204
-            215
-            224
-            234
-            248
-            258
-            262
-            271
-            282
-            293
-            305
-            318
-            329
-            340
-            345
-            357
-            368
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengsrvbbconnectionmgr.cpp">
-            192
-            204
-            320
-            337
-            362
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\BTAccInfoCmdHandler.cpp">
-            68
-            90
-            107
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\src\eventmanager.cpp">
-            76
-            88
-            89
-            90
-            91
-            92
-            93
-            94
-            95
-            96
-            97
-            98
-            99
-            100
-            105
-            106
-            107
-            114
-            123
-            128
-            133
-            138
-            144
-            150
-            154
-            164
-            167
-            172
-            179
-            186
-            191
-            197
-            205
-            209
-            221
-            224
-            230
-            235
-            246
-            253
-            258
-            270
-            273
-            278
-            283
-            288
-            299
-            305
-            310
-            315
-            320
-            331
-            336
-            341
-            352
-            357
-            361
-            364
-            373
-            374
-            377
-            382
-            393
-            395
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\locod\src\locodaemon.cpp">
-            68
-            71
-            73
-            97
-            161
-            171
-            175
-            179
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsmessagehandler.cpp">
-            123
-            150
-            187
-            201
-            217
-            231
-            249
-            264
-            278
-            292
-            306
-            318
-            334
-            340
-            354
-            377
-            453
-            519
-            527
-            537
-            555
-            576
-            596
-            635
-            645
-            649
-            656
-            659
-            677
-            697
-            714
-            725
-            733
-            748
-            824
-            855
-            867
-            908
-            929
-            948
-            961
-            1007
-            1021
-            1031
-            1035
-            1052
-            1062
-            1078
-            1142
-            1153
-            1169
-            1209
-            1213
-            1224
-            1256
-            1275
-            1294
-            1304
-            1323
-            1333
-            1342
-            1352
-            1378
-            1399
-            1404
-            1419
-            1432
-            1444
-            1450
-            1518
-            1578
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmccallstatus.cpp">
-            61
-            419
-            423
-            453
-            475
-            547
-            574
-            662
-            681
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunSignalCopy.cpp">
-            45
-            47
-            56
-            66
-            76
-            79
-            85
-            91
-            94
-            105
-            108
-            114
-            120
-            123
-            135
-            138
-            154
-            163
-            169
-            179
-            182
-            198
-            203
-            204
-            207
-            213
-            219
-            229
-            232
-            245
-            250
-            270
-            272
-            281
-            289
-            298
-            311
-            320
-            325
-            329
-            334
-            339
-            343
-            348
-            353
-            363
-            368
-            372
-            377
-            382
-            386
-            391
-            396
-            401
-            407
-            412
-            416
-            421
-            425
-            434
-            440
-            449
-            455
-            464
-            477
-            487
-            492
-            509
-            511
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUIPairedDevicesView.cpp">
-            107
-            127
-            216
-            221
-            225
-            435
-            462
-            848
-            1065
-            1076
-            1097
-            1103
-            1147
-            1171
-            1193
-            1219
-            1261
-            1539
-            1650
-            1651
-            1652
-            1653
-            1668
-            1673
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintuiprovider\src\caiwimageprintIf.cpp">
-            108
-            121
-            125
-            138
-            148
-            159
-            167
-            179
-            194
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btrcc\btrccPlugin.cpp">
-            113
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmsaudio.cpp">
-            44
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapStatePowerOn.cpp">
-            39
-            59
-            85
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmsyncsock.cpp">
-            149
-            169
-            176
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\src\nptpdatahandler.cpp">
-            59
-            62
-            72
-            76
-            88
-            113
-            123
-            161
-            171
-            203
-            214
-            236
-            249
-            261
-            276
-            323
-            334
-            343
-            354
-            367
-            382
-            383
-            384
-            385
-            395
-            397
-            401
-            404
-            430
-            442
-            464
-            475
-            479
-            501
-            508
-            532
-            551
-            668
-            673
-            783
-            797
-            818
-            827
-            855
-            867
-            894
-            905
-            999
-            1011
-            1085
-            1129
-            1160
-            1210
-            1227
-            1239
-            1252
-            1253
-            1265
-            1276
-            1286
-            1294
-            1308
-            1318
-            1323
-            1344
-            1389
-            1546
-            1547
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\src\emptycontainer.cpp">
-            49
-            59
-            70
-            84
-            100
-            112
-            128
-            137
-            144
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacActivePacketDropIoctl.cpp">
-            68
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\bip\src\BIPImageHandler.cpp">
-            56
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbuinotif\inc\USBUINotifDebug.h">
-            107
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuibluetooth\src\btmtmui.cpp">
-            55
-            61
-            72
-            79
-            90
-            104
-            122
-            136
-            150
-            182
-            211
-            223
-            261
-            296
-            391
-            403
-            483
-            507
-            515
-            530
-            539
-            544
-            549
-            570
-            622
-            635
-            648
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\BTAccInfoRequester.cpp">
-            126
-            135
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapSimCardStatusNotifier.cpp">
-            45
-            76
-            86
-            98
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmstate.cpp">
-            146
-            155
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidkbdsettings\src\btkeyenumtextsettingitem.cpp">
-            59
-            94
-            101
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbuinotif\src\USBUIConnectionNotifier.cpp">
-            44
-            50
-            62
-            71
-            76
-            86
-            90
-            101
-            135
-            171
-            182
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsentryhandler.cpp">
-            81
-            96
-            110
-            118
-            131
-            146
-            160
-            168
-            182
-            191
-            202
-            207
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\manager\src\codestore.cpp">
-            49
-            70
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmcvolume.cpp">
-            63
-            67
-            77
-            93
-            121
-            129
-            186
-            206
-            230
-            249
-            258
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUIBlockedDevicesView.cpp">
-            68
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\ATCodec\atccommand.cpp">
-            209
-            214
-            261
-            264
-            454
-            483
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapState.cpp">
-            44
-            50
-            56
-            62
-            82
-            125
-            134
-            140
-            151
-            162
-            167
-            176
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudiostreamer\src\btaudiostreamsendersbc.cpp">
-            36
-            37
-            46
-            52
-            62
-            63
-            74
-            76
-            88
-            104
-            105
-            106
-            107
-            108
-            109
-            112
-            120
-            127
-            132
-            133
-            145
-            148
-            160
-            166
-            175
-            177
-            183
-            190
-            195
-            196
-            203
-            204
-            210
-            216
-            226
-            227
-            230
-            231
-            237
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengserver.cpp">
-            114
-            130
-            141
-            280
-            288
-            294
-            373
-            426
-            499
-            550
-            551
-            599
-            640
-            644
-            709
-            768
-            779
-            900
-            909
-            1095
-            1185
-            1193
-            1231
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapHciExtensionMan.cpp">
-            81
-            87
-            96
-            118
-            129
-            138
-            163
-            167
-            181
-            219
-            229
-            231
-            268
-            270
-            279
-            298
-            305
-            323
-            338
-            347
-            356
-            376
-            378
-            397
-            403
-            426
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\atext\src\atextsession.cpp">
-            71
-            176
-            257
-            318
-            331
-            366
-            424
-            429
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvsdpquery.cpp">
-            227
-            261
-            270
-            276
-            282
-            288
-            294
-            312
-            319
-            325
-            329
-            337
-            343
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmman.cpp">
-            90
-            95
-            170
-            190
-            259
-            272
-            282
-            296
-            314
-            327
-            359
-            385
-            418
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvaccstateattach.cpp">
-            47
-            88
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\src\bt\obexsmpasskey.cpp">
-            64
-            79
-            93
-            110
-            115
-            144
-            151
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbmscpersonality\inc\debug.h">
-            74
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\BTAccClient.cpp">
-            57
-            82
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapStateATR.cpp">
-            39
-            53
-            69
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\lcstylustap\src\lcstylustap.cpp">
-            125
-            165
-            178
-            201
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\RUsbWatcher.cpp">
-            60
-            73
-            85
-            96
-            108
-            119
-            131
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\btuipluginman.cpp">
-            120
-            136
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\client\src\dunclient.cpp">
-            35
-            44
-            74
-            94
-            99
-            109
-            110
-            122
-            137
-            143
-            147
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\inc\debug.h">
-            65
-            110
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicdinterrupthandler.cpp">
-            62
-            68
-            77
-            84
-            95
-            106
-            116
-            118
-            128
-            130
-            141
-            163
-            164
-            165
-            166
-            171
-            175
-            181
-            190
-            195
-            207
-            223
-            224
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\bip\src\BIPController.cpp">
-            182
-            213
-            500
-            508
-            579
-            583
-            629
-            636
-            657
-            663
-            722
-            733
-            744
-            752
-            1015
-            1020
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\inc\bt\debug.h">
-            75
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanserver\src\obexsmmain.cpp">
-            37
-            49
-            68
-            88
-            91
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\src\notes.cpp">
-            56
-            58
-            69
-            72
-            78
-            82
-            102
-            109
-            112
-            124
-            130
-            139
-            142
-            145
-            147
-            149
-            159
-            172
-            174
-            183
-            193
-            197
-            202
-            205
-            214
-            215
-            220
-            250
-            255
-            259
-            263
-            267
-            278
-            303
-            306
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\plugins\src\usb\DunUsbConfig.cpp">
-            48
-            50
-            74
-            77
-            85
-            93
-            104
-            114
-            117
-            124
-            134
-            137
-            143
-            168
-            175
-            198
-            203
-            210
-            216
-            220
-            231
-            238
-            245
-            283
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\devmodel\src\btregistryobserver.cpp">
-            122
-            160
-            183
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\inc\debug.h">
-            74
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irbearer\src\iractivatewatcher.cpp">
-            81
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btpsmplugin\src\btpsmplugin.cpp">
-            142
-            146
-            189
-            220
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbui\inc\USBClassChangeUIDebug.h">
-            84
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsaController.cpp">
-            72
-            85
-            124
-            141
-            183
-            197
-            223
-            242
-            245
-            262
-            270
-            293
-            312
-            315
-            335
-            354
-            357
-            417
-            440
-            507
-            511
-            516
-            521
-            526
-            622
-            634
-            647
-            667
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbosdescriptorhandler\src\cselectedpersonalityproperty.cpp">
-            31
-            47
-            54
-            76
-            90
-            103
-            125
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbremotepersonality\inc\debug.h">
-            71
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvaccman.cpp">
-            243
-            258
-            285
-            287
-            374
-            397
-            401
-            415
-            477
-            508
-            523
-            538
-            555
-            581
-            619
-            641
-            711
-            766
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btpbap\src\Pbapplugin.cpp">
-            74
-            80
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunUpstream.cpp">
-            52
-            54
-            88
-            93
-            107
-            110
-            118
-            124
-            134
-            137
-            142
-            147
-            157
-            161
-            170
-            175
-            183
-            194
-            223
-            228
-            255
-            259
-            266
-            270
-            281
-            286
-            291
-            294
-            301
-            311
-            324
-            333
-            336
-            345
-            356
-            383
-            407
-            426
-            432
-            443
-            451
-            456
-            467
-            474
-            484
-            491
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\locod\inc\debug.h">
-            74
-            89
-            100
-            133
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\src\imageprintuiappui.cpp">
-            59
-            96
-            126
-            143
-            154
-            158
-            166
-            170
-            182
-            192
-            193
-            194
-            197
-            202
-            207
-            211
-            219
-            220
-            221
-            222
-            230
-            233
-            240
-            247
-            250
-            253
-            262
-            268
-            273
-            276
-            281
-            294
-            295
-            299
-            303
-            308
-            317
-            322
-            328
-            334
-            339
-            343
-            348
-            352
-            356
-            359
-            367
-            372
-            381
-            386
-            391
-            394
-            406
-            416
-            417
-            421
-            432
-            437
-            441
-            446
-            451
-            457
-            460
-            465
-            470
-            476
-            480
-            485
-            490
-            500
-            510
-            513
-            519
-            525
-            531
-            536
-            547
-            556
-            565
-            574
-            591
-            605
-            619
-            626
-            636
-            653
-            663
-            675
-            680
-            689
-            704
-            714
-            722
-            723
-            734
-            747
-            753
-            758
-            771
-            793
-            804
-            814
-            833
-            834
-            836
-            845
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidengplugin\src\genericactive.cpp">
-            49
-            70
-            75
-            81
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\dpsxmlgenerator.cpp">
-            41
-            52
-            62
-            73
-            82
-            110
-            114
-            123
-            128
-            137
-            142
-            151
-            157
-            167
-            186
-            195
-            201
-            212
-            222
-            232
-            240
-            249
-            256
-            267
-            300
-            310
-            316
-            326
-            333
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicdusbconnector.cpp">
-            65
-            76
-            84
-            89
-            100
-            108
-            118
-            121
-            127
-            150
-            158
-            165
-            172
-            179
-            186
-            193
-            201
-            208
-            217
-            221
-            232
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunAtCmdHandler.cpp">
-            92
-            106
-            115
-            117
-            120
-            138
-            142
-            152
-            156
-            164
-            174
-            180
-            190
-            196
-            217
-            224
-            230
-            253
-            276
-            285
-            288
-            296
-            307
-            312
-            318
-            326
-            336
-            338
-            348
-            360
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbui\USBClassChangeUIPlugin\inc\USBClassChangeUIPluginDebug.h">
-            78
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\inc\ir\debug.h">
-            77
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\UsbWatcher.cpp">
-            67
-            83
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\src\emptyview.cpp">
-            45
-            47
-            57
-            60
-            71
-            75
-            86
-            92
-            103
-            115
-            117
-            129
-            134
-            144
-            151
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNotifierAccFw.cpp">
-            34
-            57
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\ATCodec\atcparam.cpp">
-            43
-            50
-            126
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunChanMan.cpp">
-            54
-            56
-            65
-            76
-            85
-            87
-            97
-            109
-            122
-            128
-            136
-            149
-            158
-            167
-            171
-            181
-            191
-            195
-            205
-            215
-            219
-            232
-            253
-            260
-            266
-            274
-            279
-            283
-            295
-            307
-            311
-            337
-            342
-            351
-            356
-            366
-            369
-            386
-            397
-            402
-            411
-            420
-            424
-            432
-            440
-            442
-            453
-            467
-            488
-            499
-            505
-            535
-            545
-            550
-            563
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTServiceAPI.cpp">
-            47
-            68
-            73
-            83
-            87
-            97
-            102
-            105
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\plugins\src\ir\DunIrPlugin.cpp">
-            45
-            47
-            65
-            68
-            75
-            83
-            87
-            98
-            103
-            106
-            117
-            122
-            125
-            135
-            140
-            146
-            151
-            160
-            172
-            195
-            204
-            220
-            231
-            234
-            239
-            249
-            256
-            263
-            270
-            277
-            282
-            285
-            299
-            303
-            307
-            309
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthidsession.cpp">
-            130
-            159
-            180
-            264
-            276
-            280
-            305
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudiostreamer\src\btaudiostreamsender.cpp">
-            34
-            36
-            45
-            48
-            51
-            54
-            61
-            70
-            75
-            85
-            108
-            119
-            121
-            131
-            136
-            143
-            165
-            175
-            177
-            187
-            190
-            198
-            207
-            213
-            214
-            229
-            233
-            241
-            244
-            257
-            270
-            274
-            277
-            286
-            300
-            302
-            313
-            322
-            326
-            329
-            332
-            340
-            347
-            356
-            361
-            365
-            374
-            376
-            377
-            415
-            420
-            428
-            430
-            440
-            451
-            452
-            457
-            460
-            477
-            483
-            485
-            490
-            495
-            511
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidkbdsettings\src\bthidcenrepwatcher.cpp">
-            52
-            59
-            79
-            84
-            94
-            106
-            116
-            126
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvaccstateattached.cpp">
-            61
-            154
-            171
-            403
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStateConnecting.cpp">
-            70
-            114
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\src\nptpdeviceinfo.cpp">
-            60
-            161
-            171
-            183
-            225
-            323
-            333
-            392
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\socketinitiator.cpp">
-            69
-            81
-            125
-            143
-            191
-            200
-            217
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\src\capabilitymanager.cpp">
-            42
-            59
-            70
-            98
-            110
-            113
-            120
-            126
-            127
-            129
-            131
-            143
-            158
-            168
-            174
-            179
-            186
-            191
-            194
-            205
-            210
-            220
-            225
-            235
-            242
-            251
-            272
-            274
-            283
-            309
-            312
-            322
-            326
-            331
-            337
-            342
-            348
-            357
-            374
-            377
-            415
-            423
-            424
-            435
-            442
-            445
-            457
-            465
-            466
-            477
-            484
-            487
-            498
-            505
-            506
-            516
-            524
-            533
-            538
-            550
-            564
-            565
-            568
-            574
-            588
-            589
-            592
-            599
-            613
-            614
-            617
-            623
-            643
-            653
-            672
-            679
-            684
-            688
-            697
-            712
-            729
-            745
-            748
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNInqNotifier.cpp">
-            63
-            66
-            75
-            91
-            110
-            120
-            126
-            136
-            146
-            149
-            153
-            162
-            164
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbuinotif\src\usbuinotifcrwatcher.cpp">
-            36
-            53
-            56
-            85
-            98
-            106
-            118
-            124
-            134
-            136
-            146
-            156
-            167
-            174
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSURefObjectResolver.cpp">
-            87
-            90
-            101
-            104
-            120
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicdbaseclass.cpp">
-            52
-            70
-            96
-            126
-            136
-            151
-            157
-            162
-            177
-            189
-            201
-            212
-            238
-            248
-            249
-            262
-            267
-            284
-            289
-            324
-            326
-            331
-            341
-            355
-            360
-            366
-            376
-            379
-            382
-            387
-            389
-            401
-            404
-            410
-            413
-            425
-            427
-            438
-            442
-            452
-            468
-            478
-            481
-            492
-            500
-            511
-            519
-            521
-            532
-            551
-            560
-            574
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmcphonestatus.cpp">
-            212
-            350
-            369
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUIViewsCommonUtils.cpp">
-            52
-            68
-            92
-            112
-            113
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmssniffm.cpp">
-            58
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbui\USBClassChangeUIPlugin\src\USBClassChangeUIPluginView.cpp">
-            49
-            59
-            72
-            82
-            94
-            122
-            131
-            171
-            197
-            242
-            256
-            274
-            283
-            293
-            303
-            309
-            424
-            428
-            439
-            455
-            466
-            497
-            509
-            549
-            562
-            588
-            598
-            608
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapSocketHandler.cpp">
-            60
-            68
-            98
-            113
-            124
-            169
-            192
-            213
-            225
-            234
-            243
-            256
-            312
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbui\USBClassChangeUIPlugin\src\USBClassChangeUIPluginCRWatcher.cpp">
-            40
-            57
-            60
-            89
-            102
-            110
-            122
-            128
-            138
-            140
-            150
-            160
-            171
-            178
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicdusbwriter.cpp">
-            62
-            74
-            84
-            98
-            114
-            136
-            147
-            153
-            157
-            177
-            178
-            179
-            188
-            189
-            190
-            203
-            213
-            222
-            223
-            224
-            225
-            235
-            240
-            245
-            252
-            258
-            271
-            282
-            286
-            288
-            292
-            295
-            337
-            351
-            352
-            353
-            354
-            399
-            411
-            413
-            414
-            418
-            419
-            420
-            424
-            428
-            434
-            440
-            443
-            447
-            457
-            460
-            470
-            477
-            487
-            488
-            492
-            507
-            510
-            519
-            532
-            554
-            564
-            567
-            571
-            574
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\src\imageprintuidocument.cpp">
-            47
-            52
-            55
-            65
-            71
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\dpstransaction.cpp">
-            54
-            69
-            78
-            82
-            91
-            101
-            110
-            111
-            123
-            132
-            142
-            158
-            167
-            187
-            234
-            243
-            259
-            264
-            290
-            293
-            300
-            303
-            349
-            352
-            359
-            365
-            375
-            395
-            415
-            422
-            442
-            455
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSBPPObjectRequest.cpp">
-            80
-            92
-            115
-            121
-            130
-            140
-            153
-            161
-            166
-            175
-            181
-            186
-            195
-            203
-            208
-            215
-            232
-            240
-            247
-            272
-            286
-            295
-            304
-            311
-            322
-            331
-            343
-            352
-            365
-            409
-            413
-            449
-            450
-            471
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\plugins\src\bt\DunBtPlugin.cpp">
-            46
-            48
-            58
-            61
-            66
-            84
-            87
-            93
-            105
-            115
-            120
-            123
-            134
-            139
-            142
-            152
-            196
-            205
-            208
-            224
-            234
-            245
-            255
-            263
-            268
-            278
-            286
-            291
-            303
-            314
-            318
-            345
-            349
-            359
-            367
-            377
-            384
-            391
-            398
-            405
-            410
-            413
-            429
-            439
-            446
-            470
-            476
-            484
-            493
-            500
-            520
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\src\nptpstack.cpp">
-            69
-            77
-            113
-            122
-            130
-            135
-            147
-            158
-            239
-            243
-            246
-            286
-            290
-            293
-            305
-            326
-            345
-            351
-            355
-            368
-            376
-            431
-            444
-            656
-            667
-            700
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbdevcon\src\cusbstatewatcher.cpp">
-            30
-            111
-            120
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\client\src\dunactive.cpp">
-            61
-            63
-            72
-            78
-            102
-            104
-            123
-            126
-            136
-            137
-            148
-            149
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmcbattery.cpp">
-            86
-            93
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\src\nptplistcontrol.cpp">
-            174
-            178
-            179
-            180
-            184
-            188
-            195
-            199
-            208
-            209
-            210
-            215
-            219
-            227
-            231
-            245
-            260
-            270
-            285
-            296
-            299
-            300
-            304
-            317
-            327
-            341
-            346
-            361
-            367
-            371
-            381
-            429
-            442
-            461
-            467
-            512
-            609
-            612
-            623
-            644
-            725
-            913
-            931
-            1006
-            1009
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvaccstatequery.cpp">
-            47
-            100
-            166
-            171
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNGenericInfoNotifier.cpp">
-            90
-            93
-            108
-            202
-            268
-            277
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\socketreader.cpp">
-            82
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStreamerController.cpp">
-            88
-            131
-            138
-            148
-            174
-            191
-            202
-            223
-            229
-            285
-            330
-            368
-            406
-            433
-            460
-            479
-            481
-            491
-            522
-            546
-            547
-            552
-            561
-            564
-            566
-            576
-            604
-            623
-            646
-            647
-            648
-            649
-            650
-            651
-            652
-            664
-            678
-            699
-            700
-            701
-            719
-            721
-            723
-            724
-            726
-            727
-            735
-            736
-            761
-            769
-            782
-            796
-            804
-            807
-            818
-            837
-            885
-            891
-            897
-            903
-            907
-            933
-            983
-            984
-            987
-            989
-            1003
-            1009
-            1013
-            1027
-            1033
-            1039
-            1045
-            1049
-            1064
-            1070
-            1076
-            1082
-            1086
-            1112
-            1140
-            1146
-            1150
-            1304
-            1315
-            1329
-            1332
-            1359
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\src\requestmanager.cpp">
-            54
-            63
-            102
-            105
-            114
-            115
-            125
-            126
-            132
-            137
-            142
-            147
-            152
-            157
-            161
-            167
-            170
-            182
-            185
-            189
-            194
-            206
-            208
-            217
-            241
-            252
-            258
-            264
-            268
-            279
-            292
-            307
-            313
-            318
-            325
-            331
-            339
-            355
-            359
-            364
-            368
-            376
-            379
-            384
-            397
-            401
-            406
-            410
-            435
-            439
-            449
-            455
-            460
-            465
-            468
-            479
-            495
-            507
-            517
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunAtUrcHandler.cpp">
-            57
-            64
-            73
-            76
-            83
-            93
-            96
-            102
-            125
-            131
-            151
-            156
-            161
-            169
-            188
-            190
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSBIPController.cpp">
-            79
-            96
-            129
-            149
-            157
-            162
-            172
-            185
-            196
-            207
-            217
-            255
-            264
-            308
-            315
-            324
-            350
-            414
-            445
-            478
-            494
-            503
-            538
-            550
-            672
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\lcstylustap\inc\debug.h">
-            74
-            89
-            100
-            133
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btrcc\btrccVolumeLevelController.cpp">
-            108
-            113
-            151
-            164
-            168
-            180
-            187
-            217
-            223
-            229
-            235
-            242
-            281
-            288
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\atext\src\genericactive.cpp">
-            49
-            70
-            75
-            77
-            82
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btbearer\src\btpluginnotifier.cpp">
-            67
-            69
-            77
-            151
-            162
-            170
-            184
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengsettings\src\btengsettings.cpp">
-            57
-            222
-            225
-            237
-            247
-            257
-            269
-            274
-            350
-            352
-            376
-            386
-            388
-            423
-            436
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbuinotif\src\USBNotifier.cpp">
-            49
-            65
-            83
-            92
-            110
-            120
-            131
-            142
-            156
-            164
-            174
-            176
-            199
-            210
-            220
-            232
-            238
-            245
-            255
-            262
-            273
-            287
-            290
-            300
-            303
-            305
-            308
-            310
-            312
-            317
-            320
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmcmobileline.cpp">
-            109
-            117
-            153
-            229
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\src\nptpobject.cpp">
-            48
-            60
-            136
-            138
-            148
-            157
-            167
-            169
-            179
-            188
-            223
-            240
-            268
-            286
-            311
-            318
-            320
-            401
-            406
-            420
-            442
-            452
-            454
-            474
-            480
-            484
-            492
-            505
-            608
-            619
-            622
-            633
-            663
-            676
-            678
-            682
-            686
-            688
-            691
-            695
-            704
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\server\src\DunServer.cpp">
-            42
-            52
-            58
-            82
-            98
-            113
-            123
-            127
-            138
-            142
-            153
-            155
-            165
-            169
-            172
-            176
-            187
-            194
-            198
-            214
-            223
-            241
-            250
-            257
-            261
-            265
-            269
-            273
-            276
-            281
-            293
-            310
-            313
-            318
-            321
-            331
-            350
-            361
-            373
-            376
-            377
-            389
-            401
-            404
-            408
-            412
-            413
-            425
-            437
-            440
-            444
-            453
-            457
-            458
-            469
-            473
-            479
-            490
-            492
-            503
-            515
-            518
-            525
-            533
-            539
-            542
-            543
-            554
-            558
-            561
-            572
-            576
-            579
-            595
-            607
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\debug.h">
-            77
-            85
-            100
-            128
-            136
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\src\ptpserver.cpp">
-            51
-            56
-            67
-            73
-            83
-            95
-            111
-            116
-            119
-            130
-            143
-            153
-            156
-            161
-            171
-            173
-            177
-            180
-            191
-            200
-            213
-            218
-            229
-            241
-            254
-            257
-            267
-            280
-            290
-            300
-            322
-            332
-            338
-            342
-            345
-            350
-            360
-            368
-            377
-            388
-            402
-            413
-            416
-            430
-            442
-            443
-            457
-            460
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\CUsbWatcher.cpp">
-            63
-            73
-            76
-            79
-            80
-            85
-            89
-            111
-            125
-            164
-            197
-            212
-            229
-            234
-            277
-            282
-            298
-            311
-            347
-            356
-            367
-            377
-            382
-            394
-            406
-            444
-            467
-            475
-            492
-            505
-            513
-            524
-            532
-            544
-            586
-            588
-            608
-            626
-            658
-            675
-            704
-            716
-            730
-            736
-            745
-            757
-            768
-            784
-            792
-            802
-            814
-            826
-            835
-            838
-            854
-            859
-            870
-            873
-            883
-            891
-            901
-            912
-            926
-            979
-            985
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\src\ptpmsghandler.cpp">
-            42
-            45
-            57
-            68
-            99
-            100
-            101
-            102
-            103
-            104
-            105
-            106
-            107
-            108
-            110
-            126
-            130
-            140
-            144
-            147
-            149
-            160
-            170
-            173
-            181
-            183
-            187
-            190
-            203
-            212
-            214
-            220
-            224
-            236
-            242
-            252
-            262
-            264
-            268
-            274
-            277
-            287
-            290
-            295
-            300
-            303
-            310
-            319
-            324
-            331
-            337
-            349
-            359
-            366
-            376
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStateConfiguring.cpp">
-            79
-            86
-            155
-            176
-            196
-            205
-            216
-            221
-            229
-            230
-            231
-            232
-            233
-            234
-            235
-            238
-            247
-            262
-            290
-            299
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbdevcon\inc\debug.h">
-            71
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapSocketStateCheckSecurity.cpp">
-            40
-            51
-            74
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunTransUtils.cpp">
-            75
-            80
-            89
-            109
-            118
-            133
-            148
-            155
-            160
-            168
-            173
-            177
-            189
-            196
-            201
-            204
-            217
-            224
-            229
-            232
-            244
-            251
-            256
-            259
-            271
-            278
-            283
-            286
-            295
-            300
-            307
-            320
-            330
-            335
-            342
-            352
-            362
-            367
-            373
-            386
-            396
-            408
-            419
-            428
-            431
-            447
-            453
-            457
-            464
-            474
-            477
-            483
-            492
-            504
-            613
-            629
-            634
-            667
-            677
-            718
-            733
-            737
-            743
-            752
-            764
-            780
-            784
-            795
-            799
-            805
-            811
-            816
-            841
-            852
-            856
-            863
-            869
-            874
-            898
-            909
-            915
-            920
-            925
-            949
-            960
-            964
-            969
-            975
-            980
-            983
-            998
-            1014
-            1020
-            1031
-            1041
-            1045
-            1056
-            1059
-            1071
-            1075
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\socketlistener.cpp">
-            79
-            89
-            125
-            158
-            173
-            182
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\dpsscriptreceiver.cpp">
-            39
-            52
-            55
-            64
-            66
-            75
-            82
-            115
-            131
-            146
-            149
-            158
-            160
-            169
-            173
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\ecom\BtnotifWrapper.cpp">
-            77
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\plugins\src\usb\DunUsbPlugin.cpp">
-            54
-            56
-            74
-            77
-            83
-            102
-            111
-            113
-            120
-            124
-            133
-            138
-            147
-            151
-            161
-            166
-            173
-            197
-            201
-            211
-            214
-            228
-            234
-            237
-            247
-            250
-            279
-            300
-            305
-            308
-            319
-            324
-            327
-            337
-            340
-            347
-            361
-            371
-            387
-            398
-            406
-            411
-            422
-            430
-            435
-            445
-            454
-            459
-            470
-            473
-            478
-            488
-            495
-            502
-            509
-            516
-            521
-            524
-            535
-            538
-            545
-            552
-            557
-            568
-            571
-            580
-            588
-            602
-            608
-            621
-            628
-            641
-            648
-            658
-            673
-            684
-            691
-            705
-            719
-            722
-            733
-            740
-            748
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapStateAPDU.cpp">
-            37
-            43
-            48
-            53
-            63
-            65
-            82
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irbearer\src\irtimer.cpp">
-            85
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSController.cpp">
-            44
-            54
-            59
-            71
-            73
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuibluetooth\src\btmtmuidata.cpp">
-            37
-            48
-            51
-            60
-            66
-            77
-            89
-            142
-            153
-            168
-            188
-            209
-            230
-            251
-            273
-            345
-            369
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuiinfrared\src\irmtmuidll.cpp">
-            38
-            49
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapStateConnect.cpp">
-            45
-            84
-            124
-            138
-            169
-            176
-            185
-            193
-            205
-            209
-            214
-            225
-            237
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicdcontrolhandler.cpp">
-            64
-            80
-            90
-            102
-            112
-            114
-            124
-            128
-            139
-            146
-            156
-            161
-            163
-            184
-            188
-            191
-            195
-            196
-            201
-            205
-            211
-            215
-            233
-            235
-            246
-            254
-            266
-            281
-            285
-            294
-            304
-            307
-            319
-            321
-            324
-            335
-            338
-            348
-            359
-            369
-            373
-            378
-            379
-            380
-            384
-            385
-            386
-            391
-            396
-            400
-            410
-            437
-            438
-            441
-            454
-            464
-            469
-            481
-            483
-            496
-            497
-            499
-            509
-            511
-            515
-            518
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usblocodplugin\src\usblcdactive.cpp">
-            77
-            83
-            93
-            98
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbmscpersonality\src\CUsbMscPersonalityTimer.cpp">
-            31
-            38
-            45
-            52
-            62
-            68
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacactive.cpp">
-            55
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmrfcommsock.cpp">
-            215
-            223
-            232
-            254
-            275
-            290
-            301
-            319
-            325
-            330
-            335
-            340
-            345
-            349
-            354
-            359
-            364
-            369
-            374
-            406
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvaccstatedisconnect.cpp">
-            40
-            61
-            65
-            116
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmcactive.cpp">
-            81
-            91
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\CUsbWatcherSession.cpp">
-            43
-            59
-            69
-            108
-            112
-            119
-            131
-            138
-            142
-            153
-            159
-            182
-            201
-            219
-            230
-            265
-            271
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvactive.cpp">
-            58
-            74
-            80
-            87
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSUPassKeyRequest.cpp">
-            44
-            49
-            58
-            63
-            72
-            80
-            90
-            99
-            112
-            123
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\BTAccServer.cpp">
-            174
-            184
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsglobalprogressdialog.cpp">
-            228
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSUImageConverter.cpp">
-            54
-            60
-            84
-            89
-            98
-            104
-            116
-            125
-            134
-            171
-            183
-            198
-            207
-            211
-            220
-            244
-            254
-            292
-            301
-            329
-            338
-            348
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\dpsstatemachine.cpp">
-            42
-            56
-            68
-            79
-            81
-            90
-            99
-            108
-            113
-            122
-            130
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStateConnected.cpp">
-            106
-            162
-            201
-            256
-            292
-            298
-            309
-            314
-            320
-            321
-            322
-            323
-            324
-            325
-            326
-            330
-            338
-            349
-            360
-            361
-            407
-            440
-            451
-            472
-            478
-            485
-            513
-            518
-            531
-            554
-            567
-            578
-            625
-            653
-            662
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudiostreamer\src\btaudiostreamer.cpp">
-            35
-            36
-            45
-            50
-            60
-            61
-            70
-            72
-            81
-            88
-            95
-            98
-            108
-            111
-            115
-            122
-            132
-            140
-            149
-            155
-            162
-            165
-            171
-            181
-            183
-            189
-            191
-            196
-            197
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilspropertynotifier.cpp">
-            33
-            38
-            54
-            65
-            74
-            77
-            82
-            86
-            97
-            106
-            116
-            123
-            126
-            128
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbuinotif\src\USBUINQueriesNotifierMdrv.cpp">
-            46
-            83
-            88
-            100
-            119
-            131
-            159
-            169
-            200
-            210
-            219
-            230
-            255
-            263
-            268
-            271
-            283
-            290
-            298
-            307
-            316
-            320
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapStateDisconnect.cpp">
-            39
-            52
-            62
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunTransporter.cpp">
-            52
-            54
-            64
-            76
-            87
-            90
-            94
-            106
-            118
-            130
-            133
-            137
-            147
-            148
-            164
-            167
-            174
-            180
-            196
-            202
-            208
-            214
-            219
-            228
-            238
-            241
-            255
-            264
-            269
-            276
-            284
-            291
-            296
-            306
-            311
-            324
-            329
-            341
-            347
-            355
-            366
-            372
-            382
-            387
-            394
-            402
-            409
-            413
-            424
-            429
-            436
-            443
-            447
-            464
-            473
-            484
-            499
-            509
-            521
-            529
-            538
-            550
-            558
-            573
-            578
-            588
-            596
-            607
-            617
-            621
-            647
-            652
-            661
-            665
-            677
-            687
-            707
-            716
-            722
-            726
-            736
-            739
-            759
-            765
-            771
-            774
-            785
-            789
-            803
-            806
-            810
-            821
-            825
-            828
-            838
-            841
-            847
-            850
-            860
-            874
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\layouts\inc\hidlayoutplugininterface.h">
-            94
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbremotepersonality\src\cremotepersonalityhandler.cpp">
-            89
-            115
-            127
-            143
-            157
-            172
-            177
-            220
-            238
-            250
-            256
-            267
-            273
-            281
-            300
-            331
-            344
-            352
-            368
-            383
-            392
-            398
-            413
-            419
-            454
-            460
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStateStreaming.cpp">
-            80
-            100
-            129
-            135
-            141
-            167
-            171
-            187
-            210
-            214
-            235
-            239
-            256
-            261
-            272
-            279
-            299
-            306
-            334
-            364
-            396
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\src\ir\obexsmirdaconnection.cpp">
-            55
-            59
-            66
-            72
-            75
-            84
-            103
-            136
-            142
-            154
-            161
-            167
-            180
-            182
-            196
-            205
-            219
-            231
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\src\ptpsession.cpp">
-            38
-            41
-            52
-            54
-            64
-            67
-            70
-            80
-            82
-            92
-            146
-            166
-            168
-            178
-            184
-            194
-            200
-            210
-            211
-            217
-            227
-            231
-            241
-            243
-            253
-            289
-            292
-            296
-            309
-            319
-            329
-            331
-            337
-            348
-            358
-            360
-            365
-            367
-            382
-            395
-            405
-            411
-            424
-            436
-            442
-            444
-            455
-            458
-            463
-            465
-            475
-            482
-            484
-            494
-            498
-            503
-            505
-            515
-            528
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthidconnection.cpp">
-            124
-            152
-            186
-            198
-            224
-            245
-            286
-            292
-            298
-            317
-            345
-            374
-            410
-            457
-            493
-            704
-            735
-            744
-            760
-            767
-            771
-            793
-            807
-            829
-            873
-            901
-            1057
-            1114
-            1144
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidengplugin\src\bthidengplugin.cpp">
-            170
-            204
-            285
-            347
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapStateIdle.cpp">
-            40
-            53
-            62
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapSocketStateListen.cpp">
-            40
-            61
-            69
-            79
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmsreconnect.cpp">
-            52
-            121
-            180
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvpluginman.cpp">
-            104
-            119
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\atextagent.cpp">
-            50
-            82
-            88
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\src\bt\obexsmbtconnection.cpp">
-            54
-            59
-            68
-            74
-            80
-            86
-            91
-            101
-            121
-            154
-            160
-            163
-            167
-            171
-            181
-            214
-            234
-            236
-            242
-            249
-            257
-            272
-            284
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmcprotocol.cpp">
-            192
-            203
-            327
-            334
-            341
-            388
-            397
-            763
-            770
-            775
-            880
-            1073
-            1098
-            1121
-            1148
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmonobearer\bmbcmdlistener.cpp">
-            58
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\dpsfile.cpp">
-            37
-            51
-            53
-            62
-            64
-            74
-            77
-            86
-            98
-            108
-            114
-            123
-            129
-            138
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\keyboard\src\keyboard.cpp">
-            65
-            74
-            100
-            128
-            148
-            187
-            199
-            276
-            354
-            366
-            379
-            388
-            407
-            444
-            475
-            493
-            504
-            524
-            583
-            584
-            593
-            598
-            605
-            638
-            669
-            670
-            695
-            725
-            810
-            834
-            885
-            898
-            942
-            961
-            1014
-            1022
-            1034
-            1047
-            1073
-            1075
-            1092
-            1160
-            1201
-            1227
-            1237
-            1242
-            1254
-            1280
-            1374
-            1392
-            1404
-            1417
-            1424
-            1436
-            1443
-            1466
-            1478
-            1486
-            1494
-            1502
-            1510
-            1518
-            1542
-            1552
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\src\notetimer.cpp">
-            37
-            60
-            62
-            81
-            93
-            98
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSBPPController.cpp">
-            60
-            88
-            125
-            139
-            144
-            153
-            176
-            192
-            199
-            208
-            218
-            224
-            233
-            254
-            263
-            275
-            284
-            301
-            310
-            325
-            329
-            338
-            354
-            387
-            394
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\CUsbPersonalityNotifier.cpp">
-            41
-            61
-            81
-            139
-            143
-            150
-            165
-            201
-            230
-            235
-            239
-            249
-            258
-            271
-            275
-            292
-            301
-            308
-            312
-            325
-            334
-            347
-            358
-            367
-            387
-            395
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\vMessageHandler.cpp">
-            46
-            56
-            89
-            100
-            144
-            159
-            174
-            222
-            249
-            353
-            370
-            394
-            417
-            437
-            512
-            522
-            614
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexserviceirsend\src\IRSSProvider.cpp">
-            107
-            115
-            124
-            152
-            158
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btrcc\btrccplayerstarter.cpp">
-            107
-            122
-            131
-            203
-            267
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\opp\inc\debug.h">
-            82
-            97
-            108
-            141
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengsrvpluginmgr.cpp">
-            171
-            253
-            262
-            273
-            367
-            390
-            407
-            413
-            439
-            460
-            482
-            496
-            527
-            545
-            555
-            592
-            618
-            679
-            717
-            751
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapSocketStateRecv.cpp">
-            42
-            58
-            59
-            70
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmsconnect.cpp">
-            58
-            141
-            162
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengdiscovery\src\btengdevicesearch.cpp">
-            197
-            218
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\inc\usb\debug.h">
-            77
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthidserver.cpp">
-            146
-            154
-            162
-            184
-            190
-            197
-            202
-            205
-            213
-            234
-            254
-            339
-            362
-            447
-            453
-            460
-            497
-            537
-            564
-            592
-            657
-            686
-            694
-            705
-            740
-            842
-            880
-            1052
-            1123
-            1180
-            1326
-            1401
-            1440
-            1512
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStateConfigured.cpp">
-            71
-            103
-            152
-            203
-            253
-            257
-            275
-            296
-            325
-            344
-            361
-            378
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmsopenaudio.cpp">
-            49
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanserver\src\SrcsServiceManager.cpp">
-            82
-            172
-            177
-            182
-            187
-            193
-            207
-            216
-            219
-            233
-            239
-            245
-            251
-            263
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbui\src\USBClassChangeUIDocument.cpp">
-            33
-            43
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSOPPController.cpp">
-            47
-            55
-            78
-            87
-            106
-            115
-            121
-            130
-            144
-            153
-            162
-            172
-            178
-            185
-            203
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunStream.cpp">
-            38
-            40
-            67
-            79
-            84
-            90
-            96
-            99
-            111
-            123
-            128
-            134
-            140
-            143
-            153
-            156
-            161
-            165
-            175
-            178
-            191
-            194
-            205
-            208
-            217
-            220
-            230
-            261
-            271
-            288
-            292
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\server\src\DunSession.cpp">
-            40
-            42
-            51
-            57
-            78
-            83
-            89
-            96
-            100
-            119
-            122
-            134
-            138
-            142
-            145
-            157
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\dpsoperation.cpp">
-            48
-            69
-            81
-            99
-            129
-            130
-            144
-            145
-            155
-            156
-            166
-            167
-            176
-            177
-            185
-            186
-            194
-            195
-            206
-            220
-            241
-            253
-            259
-            272
-            290
-            305
-            320
-            332
-            351
-            372
-            396
-            403
-            417
-            452
-            458
-            474
-            482
-            496
-            511
-            515
-            536
-            570
-            574
-            579
-            593
-            696
-            700
-            714
-            741
-            827
-            852
-            948
-            953
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunUtils.cpp">
-            34
-            39
-            45
-            48
-            58
-            62
-            68
-            71
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapPlugin.cpp">
-            63
-            108
-            138
-            172
-            208
-            229
-            240
-            251
-            272
-            326
-            355
-            370
-            381
-            392
-            403
-            414
-            426
-            438
-            456
-            466
-            478
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsglobaldialog.cpp">
-            85
-            108
-            152
-            166
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\inc\debug.h">
-            76
-            91
-            102
-            139
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\atext\src\atextclient.cpp">
-            56
-            177
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanserver\src\obexsm.cpp">
-            53
-            65
-            79
-            96
-            120
-            122
-            132
-            143
-            153
-            159
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\inc\debug.h">
-            75
-            90
-            101
-            110
-            143
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidclient\src\bthidclient.cpp">
-            48
-            179
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbui\USBClassChangeUIPlugin\src\USBClassChangeUIPluginContainer.cpp">
-            42
-            58
-            97
-            118
-            125
-            135
-            140
-            150
-            155
-            165
-            180
-            204
-            216
-            230
-            255
-            261
-            270
-            283
-            322
-            334
-            338
-            347
-            352
-            382
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmscloseaudio.cpp">
-            47
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\manager\src\shutdown.cpp">
-            35
-            46
-            59
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\btnpaireddevsettnotifier.cpp">
-            102
-            113
-            124
-            140
-            146
-            176
-            200
-            212
-            223
-            237
-            247
-            257
-            267
-            276
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irappgsplugin\src\irkeywatcher.cpp">
-            71
-            108
-            112
-            141
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicebtsend\src\BTSSProvider.cpp">
-            57
-            80
-            111
-            115
-            121
-            157
-            163
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuibluetooth\src\btmtmuidll.cpp">
-            38
-            49
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\pictbridge.cpp">
-            55
-            80
-            87
-            96
-            101
-            110
-            133
-            142
-            147
-            156
-            158
-            167
-            179
-            189
-            201
-            213
-            222
-            229
-            239
-            252
-            261
-            275
-            284
-            311
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanclient\inc\debug.h">
-            82
-            97
-            108
-            141
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengsrvsession.cpp">
-            108
-            249
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunSignalNotify.cpp">
-            45
-            47
-            56
-            66
-            77
-            80
-            86
-            92
-            95
-            106
-            109
-            115
-            121
-            124
-            134
-            137
-            148
-            153
-            163
-            166
-            171
-            176
-            177
-            190
-            200
-            203
-            208
-            214
-            235
-            241
-            250
-            256
-            265
-            270
-            274
-            279
-            284
-            288
-            293
-            298
-            303
-            309
-            314
-            318
-            323
-            327
-            336
-            361
-            370
-            383
-            393
-            415
-            417
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanclient\src\ObexSMClient.cpp">
-            59
-            71
-            75
-            101
-            105
-            145
-            159
-            161
-            239
-            249
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStateSuspended.cpp">
-            77
-            104
-            144
-            148
-            165
-            184
-            205
-            246
-            253
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunSignalWaiter.cpp">
-            46
-            48
-            57
-            65
-            76
-            79
-            85
-            91
-            94
-            104
-            107
-            114
-            118
-            128
-            131
-            136
-            143
-            153
-            156
-            161
-            167
-            188
-            194
-            203
-            208
-            218
-            223
-            243
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengdiscovery\src\btengdiscovery.cpp">
-            55
-            158
-            198
-            215
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvrvc.cpp">
-            67
-            68
-            81
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapSession.cpp">
-            41
-            46
-            113
-            121
-            132
-            142
-            151
-            166
-            172
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSUCapabilityResolver.cpp">
-            113
-            116
-            127
-            130
-            293
-            298
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacGavdp.cpp">
-            77
-            81
-            125
-            143
-            169
-            182
-            192
-            200
-            207
-            214
-            226
-            235
-            259
-            292
-            299
-            302
-            334
-            377
-            388
-            391
-            394
-            400
-            403
-            406
-            409
-            413
-            425
-            428
-            431
-            439
-            445
-            473
-            483
-            560
-            573
-            585
-            596
-            608
-            619
-            630
-            641
-            652
-            664
-            672
-            686
-            696
-            707
-            711
-            719
-            729
-            732
-            742
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmccallactive.cpp">
-            114
-            115
-            128
-            187
-            204
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStateIdle.cpp">
-            77
-            86
-            93
-            105
-            115
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irbearer\src\irstatemachine.cpp">
-            109
-            118
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvactivenotifier.cpp">
-            51
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\atext\src\main.cpp">
-            61
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\inc\btNotifDebug.h">
-            79
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNPinNotifier.cpp">
-            109
-            152
-            155
-            158
-            169
-            175
-            198
-            211
-            222
-            256
-            276
-            368
-            378
-            387
-            424
-            458
-            468
-            469
-            485
-            494
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapServerState.cpp">
-            67
-            89
-            106
-            117
-            160
-            190
-            205
-            223
-            242
-            252
-            266
-            273
-            290
-            301
-            312
-            331
-            346
-            357
-            380
-            406
-            425
-            445
-            458
-            517
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\locod\src\locodserviceman.cpp">
-            97
-            107
-            187
-            197
-            201
-            205
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\src\ptpeventsender.cpp">
-            42
-            56
-            67
-            79
-            82
-            101
-            112
-            117
-            126
-            129
-            133
-            140
-            151
-            169
-            181
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUIKeyWatcher.cpp">
-            73
-            78
-            123
-            137
-            148
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsdialog.cpp">
-            75
-            93
-            101
-            108
-            118
-            155
-            163
-            178
-            186
-            193
-            201
-            215
-            223
-            235
-            243
-            262
-            270
-            277
-            285
-            294
-            312
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicdlogger.cpp">
-            111
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\src\settingsitems.cpp">
-            111
-            144
-            156
-            161
-            165
-            179
-            197
-            228
-            248
-            276
-            293
-            308
-            312
-            314
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTServiceParameterList.cpp">
-            58
-            63
-            96
-            131
-            140
-            172
-            199
-            310
-            319
-            332
-            341
-            354
-            390
-            397
-            408
-            425
-            436
-            451
-            464
-            475
-            494
-            502
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStateAborting.cpp">
-            66
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuiinfrared\src\irmtmui.cpp">
-            91
-            104
-            123
-            151
-            187
-            217
-            233
-            241
-            330
-            355
-            429
-            442
-            509
-            525
-            570
-            583
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvaccfwconn.cpp">
-            108
-            133
-            192
-            209
-            226
-            242
-            257
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengconnman\src\btengconnhandler.cpp">
-            174
-            210
-            222
-            228
-            248
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidkbdsettings\src\bthidsettingview.cpp">
-            82
-            90
-            106
-            116
-            153
-            204
-            219
-            247
-            259
-            301
-            348
-            395
-            428
-            443
-            452
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\CUsbWatcherScheduler.cpp">
-            36
-            42
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmstempd.cpp">
-            43
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbosdescriptorhandler\src\cosdescriptorhandler.cpp">
-            88
-            113
-            124
-            137
-            142
-            160
-            180
-            190
-            204
-            213
-            223
-            238
-            244
-            253
-            258
-            272
-            290
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsuilayer.cpp">
-            52
-            78
-            89
-            99
-            110
-            119
-            140
-            151
-            177
-            195
-            221
-            234
-            249
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengsettings\src\btengsettingsnotify.cpp">
-            142
-            187
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdlogger.h">
-            40
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbmscpersonality\src\CUsbActiveMscHandlerMdrv.cpp">
-            58
-            88
-            113
-            116
-            150
-            165
-            179
-            192
-            212
-            245
-            287
-            297
-            323
-            332
-            337
-            349
-            359
-            364
-            380
-            384
-            395
-            433
-            436
-            442
-            449
-            466
-            472
-            498
-            504
-            512
-            519
-            525
-            538
-            559
-            569
-            577
-            585
-            593
-            604
-            609
-            621
-            633
-            639
-            645
-            660
-            686
-            699
-            714
-            729
-            746
-            790
-            805
-            816
-            840
-            847
-            860
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\CUsbActivePersonalityHandler.cpp">
-            59
-            99
-            151
-            188
-            210
-            219
-            236
-            263
-            288
-            303
-            311
-            321
-            332
-            342
-            354
-            370
-            376
-            384
-            400
-            422
-            433
-            493
-            524
-            557
-            569
-            584
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\genericactive.cpp">
-            49
-            70
-            75
-            81
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmsidle.cpp">
-            39
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvaccman_accfw_var.cpp">
-            49
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmsctrl.cpp">
-            60
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNotifier.cpp">
-            67
-            80
-            117
-            128
-            138
-            151
-            162
-            175
-            191
-            246
-            255
-            267
-            275
-            287
-            299
-            302
-            311
-            329
-            341
-            368
-            431
-            432
-            459
-            493
-            504
-            511
-            520
-            579
-            612
-            631
-            638
-            647
-            650
-            683
-            690
-            701
-            702
-            730
-            737
-            821
-            861
-            863
-            875
-            879
-            892
-            912
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintuiprovider\inc\imageprintuidebug.h">
-            78
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsdialogtimer.cpp">
-            46
-            50
-            82
-            87
-            96
-            102
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbui\USBClassChangeUIPlugin\src\USBClassChangeUIPluginModel.cpp">
-            57
-            69
-            80
-            93
-            98
-            109
-            126
-            141
-            145
-            152
-            157
-            166
-            171
-            178
-            188
-            191
-            226
-            228
-            240
-            261
-            269
-            298
-            309
-            324
-            358
-            363
-            374
-            380
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicddatahandler.cpp">
-            62
-            78
-            82
-            92
-            104
-            114
-            132
-            143
-            146
-            155
-            159
-            170
-            184
-            185
-            186
-            211
-            226
-            227
-            228
-            246
-            247
-            248
-            265
-            266
-            267
-            283
-            284
-            285
-            311
-            312
-            313
-            326
-            330
-            340
-            347
-            357
-            358
-            359
-            361
-            367
-            368
-            378
-            384
-            390
-            395
-            401
-            411
-            418
-            426
-            432
-            440
-            455
-            471
-            472
-            473
-            489
-            490
-            491
-            503
-            521
-            533
-            535
-            546
-            548
-            554
-            569
-            573
-            574
-            589
-            597
-            599
-            603
-            606
-            619
-            630
-            633
-            662
-            674
-            680
-            682
-            683
-            689
-            694
-            699
-            708
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\dpsstate.cpp">
-            45
-            56
-            62
-            73
-            97
-            102
-            113
-            114
-            143
-            154
-            163
-            198
-            215
-            226
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\src\ptptimer.cpp">
-            39
-            44
-            56
-            67
-            78
-            88
-            91
-            94
-            99
-            104
-            109
-            114
-            118
-            120
-            129
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\common\debug.h">
-            74
-            89
-            100
-            133
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\src\hidgeneric.cpp">
-            36
-            49
-            61
-            62
-            261
-            275
-            277
-            281
-            283
-            288
-            304
-            318
-            324
-            333
-            340
-            345
-            364
-            367
-            373
-            414
-            419
-            465
-            468
-            517
-            521
-            524
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\manager\src\session.cpp">
-            76
-            90
-            103
-            111
-            118
-            126
-            128
-            136
-            143
-            152
-            162
-            164
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\plugins\src\usb\DunUsbListen.cpp">
-            52
-            54
-            76
-            80
-            86
-            97
-            103
-            113
-            116
-            124
-            149
-            155
-            177
-            181
-            191
-            202
-            207
-            212
-            222
-            228
-            237
-            241
-            250
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNPBAPPinNotifier.cpp">
-            93
-            116
-            126
-            175
-            185
-            194
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapMessage.cpp">
-            193
-            197
-            202
-            211
-            226
-            233
-            240
-            252
-            263
-            280
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacSEPManager.cpp">
-            82
-            112
-            126
-            137
-            145
-            156
-            164
-            175
-            185
-            193
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\src\ptpservermain.cpp">
-            39
-            48
-            60
-            81
-            85
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\src\hidparser.cpp">
-            454
-            469
-            556
-            570
-            574
-            579
-            583
-            604
-            650
-            727
-            782
-            861
-            891
-            922
-            954
-            984
-            1020
-            1073
-            1110
-            1139
-            1163
-            1182
-            1202
-            1228
-            1252
-            1271
-            1294
-            1310
-            1335
-            1367
-            1408
-            1450
-            1472
-            1493
-            1514
-            1535
-            1557
-            1613
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\manager\src\mapping.cpp">
-            132
-            156
-            173
-            181
-            184
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunDataPusher.cpp">
-            45
-            47
-            71
-            74
-            78
-            88
-            91
-            95
-            106
-            109
-            119
-            130
-            133
-            143
-            146
-            152
-            156
-            166
-            169
-            176
-            186
-            190
-            200
-            218
-            231
-            241
-            242
-            265
-            271
-            294
-            297
-            303
-            318
-            322
-            332
-            340
-            344
-            355
-            396
-            406
-            410
-            415
-            417
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbuinotif\src\USBUINCableConnectedNotifier.cpp">
-            64
-            70
-            82
-            91
-            96
-            107
-            112
-            124
-            141
-            151
-            162
-            182
-            213
-            241
-            251
-            263
-            274
-            302
-            312
-            329
-            345
-            358
-            408
-            415
-            426
-            456
-            494
-            526
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmcnumber.cpp">
-            82
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\src\nptpresponder.cpp">
-            34
-            39
-            50
-            55
-            66
-            71
-            82
-            84
-            131
-            136
-            309
-            319
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSBPPServerWait.cpp">
-            52
-            57
-            87
-            92
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\btnssppasskeyentrynotifier.cpp">
-            106
-            132
-            150
-            153
-            158
-            169
-            190
-            196
-            215
-            237
-            250
-            264
-            265
-            329
-            365
-            375
-            384
-            404
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\plugins\src\bt\DunBtListen.cpp">
-            58
-            60
-            92
-            96
-            126
-            129
-            138
-            146
-            155
-            158
-            164
-            191
-            198
-            231
-            239
-            254
-            257
-            267
-            270
-            276
-            283
-            297
-            302
-            310
-            319
-            334
-            342
-            360
-            371
-            379
-            388
-            400
-            419
-            421
-            431
-            434
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\src\usb\obexsmusbconnection.cpp">
-            56
-            66
-            74
-            83
-            101
-            128
-            134
-            137
-            171
-            176
-            180
-            182
-            194
-            207
-            219
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvpowercontrolagent.cpp">
-            65
-            83
-            87
-            104
-            132
-            156
-            203
-            208
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btrcc\btrccLinker.cpp">
-            191
-            201
-            288
-            295
-            323
-            344
-            352
-            380
-            395
-            483
-            492
-            504
-            513
-            528
-            537
-            665
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengsdpdbhandler.cpp">
-            95
-            109
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNInquiryAO.cpp">
-            50
-            58
-            93
-            97
-            102
-            115
-            119
-            130
-            155
-            160
-            171
-            185
-            191
-            199
-            207
-            212
-            227
-            231
-            245
-            249
-            254
-            263
-            267
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengpairobserver.cpp">
-            171
-            197
-            203
-            217
-            278
-            304
-            311
-            356
-            402
-         </file>
-      </problem>
-      <problem name="struct" severity="low">
-         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\pictbridge_api\inc\dpsdefs.h">
-            239
-            407
-            459
-            468
-            477
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbremotepersonality\inc\cremotepersonalityhandler.h">
-            30
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\common\inc\genericserver.h">
-            32
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\inc\CUsbWatcher.h">
-            50
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\inc\BTServiceParameterList.h">
-            32
-            38
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\btengclientserver.h">
-            73
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\inc\BTServiceUtils.h">
-            79
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\inc\dpsparam.h">
-            37
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\inc\dpsdefs.h">
-            239
-            407
-            459
-            468
-            477
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\inc\BTSBPPObjectRequest.h">
-            126
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\inc\settingstables.h">
-            44
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\inc\devui_const.h">
-            48
-            82
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\pictbridge_api\inc\dpsparam.h">
-            37
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\bluetooth_notifier_internal_api\inc\btnotif.h">
-            89
-            95
-            102
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicddatatypes.h">
-            46
-            55
-            63
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdatatypes.h">
-            46
-            55
-            63
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\layouts\inc\layout.h">
-            177
-            218
-            310
-            321
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\manager\inc\mapping.h">
-            44
-            56
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\usb_notifier_api\inc\usbuinotif.h">
-            35
-            43
-            74
-         </file>
-      </problem>
-      <problem name="tclassdestructor" severity="low">
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\dpsxmlstring.cpp">
-            414
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\TUsbPersonalityParams.cpp">
-            40
-         </file>
-      </problem>
-      <problem name="variablenames" severity="low">
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuibluetooth\src\btmtmui.cpp">
-            251
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsmessagehandler.cpp">
-            1110
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSURefObjectResolver.cpp">
-            123
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthidsession.cpp">
-            272
-            330
-         </file>
-      </problem>
-      <problem name="voidparameter" severity="low">
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidengplugin\src\genericactive.cpp">
-            82
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengsrvkeywatcher.cpp">
-            479
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStateSuspended.cpp">
-            166
-            185
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengsettings\src\btengsettings.cpp">
-            381
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengsettings\src\btengsettingsnotify.cpp">
-            188
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacactive.cpp">
-            84
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengdiscovery\src\btengdiscovery.cpp">
-            412
-            414
-            428
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvactive.cpp">
-            88
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmactive.cpp">
-            72
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacState.cpp">
-            335
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\keyboard\src\keyboard.cpp">
-            1468
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacGavdp.cpp">
-            743
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\src\hidparser.cpp">
-            557
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengsrvstate.cpp">
-            144
-            145
-            241
-            242
-            243
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\CUsbWatcherServer.cpp">
-            58
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\BTAccServer.cpp">
-            103
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStateIdle.cpp">
-            116
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengconnman\src\btengpairinghandler.cpp">
-            172
-            173
-            209
-            210
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\bip\src\BIPController.cpp">
-            1035
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\opp\src\oppcontroller.cpp">
-            953
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\btnumcmpnotifier.cpp">
-            144
-            258
-            299
-            341
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengdiscovery\src\btengsdpquery.cpp">
-            252
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStateStreaming.cpp">
-            257
-            273
-            300
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmccallstatus.cpp">
-            424
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTServiceStarter.cpp">
-            838
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\atext\src\main.cpp">
-            72
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStateConfiguring.cpp">
-            156
-            263
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUIKeyWatcher.cpp">
-            138
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvaccstate.cpp">
-            150
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btbearer\src\btpluginnotifier.cpp">
-            78
-            185
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStateConnected.cpp">
-            532
-            568
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNPinNotifier.cpp">
-            141
-            282
-            320
-            327
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btpsmplugin\src\btpsmplugin.cpp">
-            221
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidkbdsettings\src\layoututils.cpp">
-            218
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvaccstateattached.cpp">
-            265
-            301
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengsrvbbconnectionmgr.cpp">
-            298
-            309
-            324
-            339
-            340
-            347
-            363
-            364
-            365
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btrcc\btrccplayerstarter.cpp">
-            150
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmman.cpp">
-            274
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btrcc\btrccVolumeLevelController.cpp">
-            304
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\btnssppasskeyentrynotifier.cpp">
-            139
-            271
-            305
-            359
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNAuthNotifier.cpp">
-            172
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengsrvpluginmgr.cpp">
-            192
-            224
-            362
-            385
-            432
-            434
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengconnman\src\btengconnman.cpp">
-            122
-            281
-            336
-            337
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengserver.cpp">
-            513
-            574
-            600
-            700
-            860
-            1372
-            1386
-            1389
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\atext\src\atextsession.cpp">
-            431
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvsdpquery.cpp">
-            263
-            294
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNotifier.cpp">
-            804
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengregistrycleaner.cpp">
-            208
-            209
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengdiscovery\src\btengdevicesearch.cpp">
-            198
-            219
-            220
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvpowercontrolagent.cpp">
-            110
-            116
-            198
-            199
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvmain.cpp">
-            65
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btrcc\btrccLinker.cpp">
-            202
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidengplugin\src\bthidengplugin.cpp">
-            103
-            110
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengconnman\src\btengconnhandler.cpp">
-            176
-            177
-            182
-            250
-            251
-            252
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthidserver.cpp">
-            340
-            348
-            354
-            355
-            462
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengdevman\src\btengdevman.cpp">
-            245
-            296
-            333
-            366
-            403
-            519
-            531
-            532
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidkbdsettings\src\bthidsettingview.cpp">
-            206
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStateConfigured.cpp">
-            276
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengpairobserver.cpp">
-            218
-            219
-            220
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengdiscovery\src\btengsdpattrparser.cpp">
-            150
-         </file>
-      </problem>
-   </category>
-   <category name="codereview">
-      <problem name="accessArrayElementWithoutCheck" severity="low">
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuibluetooth\src\btmtmui.cpp">
-            171
-            200
-            212
-            404
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNInqUI.cpp">
-            487
-            530
-            782
-            784
-            786
-            788
-            849
-            1083
-            1085
-            1087
-            1088
-            1306
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuiinfrared\src\irmtmui.cpp">
-            176
-            206
-            344
-            367
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuibluetooth\src\btmtmuidata.cpp">
-            132
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthidserver.cpp">
-            884
-            952
-            963
-            1004
-            1027
-            1314
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\BTAccInfo.cpp">
-            156
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuiinfrared\src\irmtmuidata.cpp">
-            147
-         </file>
-      </problem>
-      <problem name="accessArrayElementWithoutCheck2" severity="low">
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapSocketHandler.cpp">
-            114
-            135
-            247
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\src\nptplistcontrol.cpp">
-            188
-            199
-            219
-            231
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbmscpersonality\src\CUsbActiveMscHandlerMdrv.cpp">
-            313
-            482
-            736
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNAuthNotifier.cpp">
-            675
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\dpsxmlgenerator.cpp">
-            270
-            296
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\src\nptpdatahandler.cpp">
-            1246
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\dpstransaction.cpp">
-            148
-            446
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\dpsoperation.cpp">
-            118
-            119
-            120
-            123
-            125
-            127
-            128
-            129
-            130
-            138
-            139
-            140
-            142
-            144
-            145
-            151
-            152
-            153
-            155
-            156
-            163
-            164
-            165
-            166
-            167
-            172
-            173
-            175
-            176
-            177
-            182
-            183
-            184
-            185
-            186
-            191
-            192
-            193
-            194
-            195
-            199
-            200
-            234
-            310
-            316
-            345
-            349
-            351
-            352
-            355
-            360
-            361
-            362
-            370
-            371
-            372
-            373
-            374
-            380
-            381
-            382
-            388
-            389
-            390
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\dpsxmlparser.cpp">
-            167
-            192
-            227
-            245
-            295
-            297
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\devmodel\src\btdevmodelbase.cpp">
-            562
-            566
-            580
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbdevcon\src\cstatemachine.cpp">
-            349
-            377
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\keyboard\src\keyboard.cpp">
-            138
-            155
-            284
-            285
-            307
-            331
-            616
-            680
-            1183
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbuinotif\src\USBUINCableConnectedNotifier.cpp">
-            231
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\src\hidparser.cpp">
-            584
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuibluetooth\src\btmtmui.cpp">
-            287
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\BTAccInfoRequester.cpp">
-            131
-            132
-            133
-            134
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicebtsend\src\btsssendlisthandler.cpp">
-            130
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexserviceirsend\src\IRClient.cpp">
-            163
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irbearer\src\irstatemachine.cpp">
-            83
-            107
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\plugins\src\usb\DunUsbConfig.cpp">
-            96
-            260
-            272
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvaccstate.cpp">
-            190
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapServerState.cpp">
-            166
-            244
-            256
-            268
-            292
-            303
-            318
-            363
-            369
-            436
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\socketwriter.cpp">
-            161
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvaccstatequery.cpp">
-            134
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengsrvpluginmgr.cpp">
-            542
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\plugins\src\usb\DunUsbPlugin.cpp">
-            747
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStreamerController.cpp">
-            542
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsmessagehandler.cpp">
-            600
-            877
-            967
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbremotepersonality\src\cremotepersonalityhandler.cpp">
-            368
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\atext\src\atextsession.cpp">
-            267
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvsdpquery.cpp">
-            264
-            271
-            277
-            283
-            288
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\mouse\src\mouse.cpp">
-            99
-            112
-            276
-            329
-            357
-            385
-            409
-            720
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\src\requestmanager.cpp">
-            259
-            260
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\layouts\src\layout.cpp">
-            540
-            560
-            562
-            563
-            565
-            587
-            589
-            602
-            604
-            605
-            614
-            616
-            618
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvaccman.cpp">
-            106
-            133
-            149
-            301
-            483
-            513
-            544
-            560
-            702
-            706
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\src\settingsitems.cpp">
-            189
-            191
-            268
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\devmodel\src\btpairedmodel.cpp">
-            422
-            439
-            455
-            556
-            567
-            568
-            569
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTServiceParameterList.cpp">
-            394
-            395
-            417
-            418
-            419
-            420
-            421
-            422
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicdcontrolhandler.cpp">
-            423
-            432
-            458
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btrcc\btrccLinker.cpp">
-            131
-            142
-            152
-            166
-            181
-            192
-            213
-            241
-            313
-            325
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\hidsdpclient.cpp">
-            139
-            148
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicdbaseclass.cpp">
-            228
-            230
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNInquiryAO.cpp">
-            251
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintuiprovider\src\caiwimageprintIf.cpp">
-            139
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthidserver.cpp">
-            374
-         </file>
-      </problem>
-      <problem name="activestart" severity="low">
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\atext\src\main.cpp">
-            78
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuibluetooth\src\btmtmui.cpp">
-            337
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbdevcon\src\cusbdevcon.cpp">
-            384
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\manager\src\server.cpp">
-            176
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuiinfrared\src\irmtmui.cpp">
-            284
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanserver\src\obexsmmain.cpp">
-            89
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthidserver.cpp">
-            1514
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\server\src\DunServer.cpp">
-            54
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengserver.cpp">
-            116
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\UsbWatcher.cpp">
-            85
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\locod\src\locodmain.cpp">
-            70
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvmain.cpp">
-            71
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\src\ptpservermain.cpp">
-            83
-         </file>
-      </problem>
-      <problem name="activestop" severity="low">
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanserver\src\obexsm.cpp">
-            160
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\BTAccServer.cpp">
-            163
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\atext\src\atextsrv.cpp">
-            117
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\manager\src\shutdown.cpp">
-            79
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthidserver.cpp">
-            132
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengserver.cpp">
-            1373
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\server\src\DunServer.cpp">
-            173
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\src\ptptimer.cpp">
-            95
-         </file>
-      </problem>
-      <problem name="baseconstruct" severity="low">
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUIBlockedDevicesView.cpp">
-            66
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUIPairedDevicesView.cpp">
-            119
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irappgsplugin\src\irappgspluginview.cpp">
-            104
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidkbdsettings\src\bthidsettingview.cpp">
-            100
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidkbdsettings\src\bthidsettingcontainer.cpp">
-            39
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbui\USBClassChangeUIPlugin\src\USBClassChangeUIPluginView.cpp">
-            106
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUIMainView.cpp">
-            154
-            158
-         </file>
-      </problem>
-      <problem name="callActiveObjectWithoutCheckingOrStopping" severity="low">
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSUImageConverter.cpp">
-            241
-            289
-            326
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmonobearer\bmbplugin.cpp">
-            174
-            220
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbdevcon\src\cusbdevcon.cpp">
-            304
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\CUsbWatcher.cpp">
-            248
-            1005
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbmscpersonality\src\CUsbActiveMscHandlerMdrv.cpp">
-            486
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuibluetooth\src\btmtmui.cpp">
-            256
-            263
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicebtsend\src\btsssendlisthandler.cpp">
-            99
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTServiceAPI.cpp">
-            103
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmcprotocol.cpp">
-            1092
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsentryhandler.cpp">
-            94
-            144
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStateConnected.cpp">
-            156
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\src\nptpimagehandler.cpp">
-            214
-            243
-            276
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvaccstateattached.cpp">
-            150
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btrcc\btrccplayerstarter.cpp">
-            119
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\manager\src\server.cpp">
-            119
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapStateConnect.cpp">
-            67
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengserver.cpp">
-            647
-            1145
-            1262
-            1287
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStreamerController.cpp">
-            186
-            750
-            786
-            1207
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmccallstatus.cpp">
-            86
-            656
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengregistrycleaner.cpp">
-            127
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvpowercontrolagent.cpp">
-            63
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicdcontrolhandler.cpp">
-            392
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btrcc\btrccLinker.cpp">
-            407
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengdevman\src\btengdevman.cpp">
-            163
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmssniffm.cpp">
-            100
-            199
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStateConfigured.cpp">
-            146
-         </file>
-      </problem>
-      <problem name="commentcode" severity="low">
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\src\bt\obexsmbtconnection.cpp">
-            174
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\btengclientserver.h">
-            29
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanclient\src\ObexSMClient.cpp">
-            53
-            81
-            87
-            92
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmonocmdhandler\btmcprotocolstatus.h">
-            40
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengsettings\src\btengsettings.cpp">
-            342
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsacStreamerController.h">
-            59
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\atext\src\atextclient.cpp">
-            29
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSBPPObjectRequest.cpp">
-            44
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapMessage.cpp">
-            79
-            86
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapRequestHandler.cpp">
-            123
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\devmodel\src\btdevmodelbase.cpp">
-            113
-            114
-            115
-            116
-            117
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbosdescriptorhandler\src\cosdescriptorhandler.cpp">
-            43
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidkbdsettings\src\bthidsettingcontainer.cpp">
-            116
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\keyboard\src\keyboard.cpp">
-            50
-            622
-            839
-            840
-            841
-            1238
-            1366
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\src\usb\obexsmusbconnection.cpp">
-            188
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbremotepersonality\src\cremotepersonalityhandler.cpp">
-            188
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsglobalprogressdialog.cpp">
-            162
-            165
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\opp\src\oppcontroller.cpp">
-            205
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\btengactive.h">
-            30
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\btnumcmpnotifier.cpp">
-            214
-            215
-            216
-            224
-            320
-            321
-            326
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthidsession.cpp">
-            112
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexserviceirsend\src\IRClient.cpp">
-            70
-            72
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidkbdsettings\inc\bthidsettingview.h">
-            149
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\btengsrvstate.h">
-            34
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmcnumber.cpp">
-            161
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanserver\src\SrcsSession.cpp">
-            360
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\btaccDosSender.cpp">
-            123
-            206
-            221
-            240
-            297
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStateConnected.cpp">
-            376
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanserver\src\obexsm.cpp">
-            31
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapServerState.cpp">
-            148
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\src\nptpimagehandler.cpp">
-            111
-            117
-            123
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\src\ptpstackstatelistener.cpp">
-            68
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengsrvbbconnectionmgr.cpp">
-            324
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\inc\BTSBPPObjectServer.h">
-            229
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\btaccDosListener.cpp">
-            75
-            110
-            121
-            132
-            154
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNInqUI.cpp">
-            1067
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\btnssppasskeyentrynotifier.cpp">
-            224
-            320
-            321
-            332
-            342
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\src\BTUIAppUi.cpp">
-            97
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\btengsrvpluginmgr.h">
-            34
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengsrvpluginmgr.cpp">
-            662
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStateConfiguring.cpp">
-            226
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\inc\btnauthnotifier.h">
-            133
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStreamerController.cpp">
-            33
-            1277
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\btengsrvbbconnectionmgr.h">
-            33
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\inc\nptpobject.h">
-            282
-            283
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvsdpquery.cpp">
-            68
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\mouse\src\mouse.cpp">
-            352
-            380
-            404
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\inc\btnssppasskeyentrynotifier.h">
-            65
-            74
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\ptpclasscontroller\inc\ptpclasscontroller.h">
-            152
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicdcontrolhandler.cpp">
-            189
-            314
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapStateNotConnected.cpp">
-            65
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthidconnection.cpp">
-            125
-            874
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSBIPController.cpp">
-            648
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmcphonestatus.cpp">
-            344
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irappgsplugin\src\irappgspluginview.cpp">
-            187
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicdusbwriter.cpp">
-            184
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidkbdsettings\src\bthidsettingview.cpp">
-            52
-            60
-            183
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\src\imageprintuiappui.cpp">
-            402
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengdiscovery\src\btengsdpattrparser.cpp">
-            25
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\BTAccFwConnection_dos.cpp">
-            127
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\src\eventmanager.cpp">
-            362
-            365
-         </file>
-      </problem>
-      <problem name="doubleSemiColon" severity="low">
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\src\ptpserver.cpp">
-            173
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\src\ir\obexsmirdaconnection.cpp">
-            161
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmsyncsock.cpp">
-            107
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbmscpersonality\src\CUsbActiveMscHandlerMdrv.cpp">
-            758
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvaccstatequery.cpp">
-            136
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irappgsplugin\src\irappgspluginview.cpp">
-            187
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapPlugin.cpp">
-            120
-         </file>
-      </problem>
-      <problem name="foff" severity="low">
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\src\ptptransport.cpp">
-            49
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\CUsbPersonalityPlugin.cpp">
-            36
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\src\hidinterfaces.cpp">
-            48
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\atext\src\atextpluginbase.cpp">
-            31
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbdevcon\src\crequestshandler.cpp">
-            65
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\src\hidgeneric.cpp">
-            72
-         </file>
-      </problem>
-      <problem name="forgottoputptroncleanupstack" severity="low">
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\devmodel\src\btdevmodel.cpp">
-            46
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUISap.cpp">
-            214
-            219
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmcprotocol.cpp">
-            392
-            722
-            730
-            738
-            745
-            752
-            759
-            774
-            785
-            794
-            803
-            812
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvaccstatequery.cpp">
-            154
-            181
-            185
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNInqUI.cpp">
-            1057
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanserver\src\SrcsServiceManager.cpp">
-            235
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\btnumcmpnotifier.cpp">
-            257
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\btnssppasskeyentrynotifier.cpp">
-            270
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsmessagehandler.cpp">
-            1027
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmcnumber.cpp">
-            109
-         </file>
-      </problem>
-      <problem name="friend" severity="low">
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\inc\BTUIMainContainer.h">
-            200
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\server\inc\DunServer.h">
-            82
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\inc\DunDownstream.h">
-            101
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\inc\dpsusbnotifier.h">
-            41
-            42
-            43
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\inc\dpsoperation.h">
-            32
-            95
-            131
-            158
-            171
-            197
-            223
-            267
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\inc\DunTransporter.h">
-            376
-            377
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\inc\hidparser.h">
-            156
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmonocmdhandler\btmccallstatus.h">
-            87
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmac\btmsyncsock.h">
-            166
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btrcc\btrccLinker.h">
-            108
-            124
-            143
-            162
-            175
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\btengserver.h">
-            98
-            99
-            100
-            101
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\inc\hiddriveritem.h">
-            36
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbui\USBClassChangeUIPlugin\inc\USBClassChangeUIPluginContainer.h">
-            206
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\pictbridge_api\inc\dpsoperation.h">
-            32
-            95
-            131
-            158
-            171
-            197
-            223
-            267
-         </file>
-      </problem>
-      <problem name="intleaves" severity="low">
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\plugins\src\usb\DunUsbListen.cpp">
-            74
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\src\hidreporttranslator.cpp">
-            89
-            136
-            149
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNInqUI.cpp">
-            1040
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\bip\src\BIPController.cpp">
-            540
-            954
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\opp\src\oppcontroller.cpp">
-            402
-            868
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\devmodel\src\btdevmodelbase.cpp">
-            164
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\keyboard\src\keyboard.cpp">
-            1158
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbuinotif\src\USBUINCableConnectedNotifier.cpp">
-            169
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\src\hidparser.cpp">
-            187
-            419
-            624
-            685
-            739
-            848
-            889
-            920
-            952
-            1292
-            1333
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNotifierAccFw.cpp">
-            31
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuibluetooth\src\btmtmui.cpp">
-            481
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunChanMan.cpp">
-            227
-            291
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicdinterrupthandler.cpp">
-            139
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\BTAccInfoMainService.cpp">
-            59
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicdcontrolhandler.cpp">
-            408
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNotifierNonAccFw.cpp">
-            28
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNotifier.cpp">
-            339
-            518
-            859
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsuilayer.cpp">
-            65
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanserver\src\obexsm.cpp">
-            130
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapServerState.cpp">
-            378
-            404
-            423
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidkbdsettings\src\layoututils.cpp">
-            214
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuibluetooth\src\btmtmuidata.cpp">
-            74
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuiinfrared\src\irmtmuidata.cpp">
-            81
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengsrvpluginmgr.cpp">
-            233
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunTransporter.cpp">
-            659
-            818
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapHciExtensionMan.cpp">
-            136
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsmessagehandler.cpp">
-            114
-            668
-            689
-            1331
-            1458
-            1512
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbremotepersonality\src\cremotepersonalityhandler.cpp">
-            483
-            495
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUIMainView.cpp">
-            578
-            1020
-            1044
-            1371
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\mouse\src\mouse.cpp">
-            702
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbuinotif\src\USBUINQueriesNotifierMdrv.cpp">
-            227
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsdialog.cpp">
-            292
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicdusbreader.cpp">
-            438
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\devmodel\src\btpairedmodel.cpp">
-            119
-            800
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTServiceParameterList.cpp">
-            473
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUISap.cpp">
-            185
-            202
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\manager\inc\layoutmgr.h">
-            257
-            264
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicdbaseclass.cpp">
-            134
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuiinfrared\src\irmtmui.cpp">
-            440
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUIViewsCommonUtils.cpp">
-            76
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthidserver.cpp">
-            655
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilslaunchwaiter.cpp">
-            379
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\src\hidgeneric.cpp">
-            302
-         </file>
-      </problem>
-      <problem name="LFunctionCantLeave" severity="low">
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\lcstylustap\src\lcstylustap.cpp">
-            55
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanserver\src\SrcsServiceManager.cpp">
-            141
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicdusbplugin.cpp">
-            96
-            107
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbuinotif\src\USBUINQueriesNotifierMdrv.cpp">
-            81
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\BTAccSession.cpp">
-            351
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengactive.cpp">
-            46
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\server\src\DunSession.cpp">
-            76
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTServiceClient.cpp">
-            452
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanclient\src\ObexSMPlugin.cpp">
-            104
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStateListening.cpp">
-            84
-            165
-            397
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvaccstatedetach.cpp">
-            71
-            78
-            84
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbdevcon\src\cusbstatewatcher.cpp">
-            57
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbui\src\USBClassChangeUIAppui.cpp">
-            77
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicebtsend\src\btsssendlisthandler.cpp">
-            44
-            173
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\BTAccInfoMainService.cpp">
-            59
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\client\src\dunactive.cpp">
-            100
-            121
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunNoteHandler.cpp">
-            140
-            234
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\dpsconnectnotifier.cpp">
-            89
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapPlugin.cpp">
-            61
-            476
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNotifierNonAccFw.cpp">
-            28
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUIMainView.cpp">
-            507
-            564
-            1330
-            1340
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmcbattery.cpp">
-            127
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanserver\src\obexsm.cpp">
-            118
-            130
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSBPPObjectServer.cpp">
-            193
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidkbdsettings\src\layoututils.cpp">
-            214
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengsrvbbconnectionmgr.cpp">
-            296
-            307
-            318
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNGenericInfoNotifier.cpp">
-            74
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmsdisconnect.cpp">
-            43
-            51
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanclient\src\ObexSMRequester.cpp">
-            76
-            136
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\utils\src\iractive.cpp">
-            46
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\bip\src\BIPXMLWriter.cpp">
-            186
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUIMainContainer.cpp">
-            153
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\socketreader.cpp">
-            79
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunDownstream.cpp">
-            333
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbui\USBClassChangeUIPlugin\src\USBDeviceStateWatcher.cpp">
-            103
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapRequestHandler.cpp">
-            91
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStreamerController.cpp">
-            708
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmccallstatus.cpp">
-            224
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvacc.cpp">
-            267
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunSignalCopy.cpp">
-            268
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\mouse\src\mouse.cpp">
-            103
-            132
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\CUsbPersonalityNotifier.cpp">
-            39
-            78
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunAtUrcHandler.cpp">
-            149
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmscloseaudio.cpp">
-            88
-            117
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\manager\src\shutdown.cpp">
-            76
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\btnpaireddevsettnotifier.cpp">
-            83
-            122
-            129
-            260
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\client\src\dunplugin.cpp">
-            147
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmcoperator.cpp">
-            154
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btrcc\btrccVolumeLevelController.cpp">
-            257
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidkbdsettings\src\bthidsettings.cpp">
-            49
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvaccman_nonaccfw_var.cpp">
-            53
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmsaudio.cpp">
-            42
-            75
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\socketlistener.cpp">
-            121
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmsyncsock.cpp">
-            44
-            59
-            137
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengsrvsession.cpp">
-            48
-            91
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmcvolume.cpp">
-            81
-            197
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbuinotif\src\USBNotifier.cpp">
-            140
-            184
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irappgsplugin\src\irappgspluginview.cpp">
-            209
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNObexPinNotifier.cpp">
-            77
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\src\nptpobject.cpp">
-            82
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNPBAPPinNotifier.cpp">
-            78
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\devmodel\src\btdevmodelbase.cpp">
-            319
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\hiddescriptor.cpp">
-            65
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmcsignal.cpp">
-            131
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSUCapabilityResolver.cpp">
-            95
-            111
-            125
-            291
-            306
-            323
-            331
-            339
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNPwrNotifier.cpp">
-            72
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTConnectionTimer.cpp">
-            103
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\bip\src\BIPImageHandler.cpp">
-            88
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbdevcon\src\cep0reader.cpp">
-            99
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmccallactive.cpp">
-            181
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\BTAccInfoRequester.cpp">
-            53
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapSimCardStatusNotifier.cpp">
-            66
-            84
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmstate.cpp">
-            56
-            62
-            71
-            81
-            87
-            96
-            102
-            112
-            117
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\opp\src\oppcontroller.cpp">
-            756
-            779
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmslisten.cpp">
-            124
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\btnumcmpnotifier.cpp">
-            96
-            402
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStateConfiguring.cpp">
-            131
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\BTMonoCdmaIncomingFlash.cpp">
-            133
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbuinotif\src\USBUIConnectionNotifier.cpp">
-            84
-            145
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsentryhandler.cpp">
-            44
-            176
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvactivenotifier.cpp">
-            63
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\btaccDosSender.cpp">
-            219
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUIBlockedDevicesView.cpp">
-            336
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNPinNotifier.cpp">
-            93
-            440
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicebtsend\src\BTSSProvider.cpp">
-            55
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapServerState.cpp">
-            87
-            264
-            404
-            515
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\locod\src\locodserviceman.cpp">
-            62
-            175
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irbearer\src\irtimer.cpp">
-            83
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmsrfcomm.cpp">
-            82
-            97
-            107
-            157
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilslaunchwaiter.cpp">
-            203
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapHciExtensionMan.cpp">
-            136
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\src\ptpeventsender.cpp">
-            124
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\src\ptptimer.cpp">
-            86
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvsdpquery.cpp">
-            161
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\CUsbWatcher.cpp">
-            375
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmman.cpp">
-            79
-            382
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsdialog.cpp">
-            241
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNGenericQueryNotifier.cpp">
-            86
-            101
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTServiceParameterList.cpp">
-            473
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\common\src\timeouttimer.cpp">
-            62
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStateAborting.cpp">
-            64
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usblocodplugin\src\usblcdactive.cpp">
-            70
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbmscpersonality\src\CUsbMscPersonalityTimer.cpp">
-            50
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\src\bt\obexsmpasskey.cpp">
-            61
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\datasegmenter.cpp">
-            195
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\src\BTUIDocument.cpp">
-            44
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmrfcommsock.cpp">
-            381
-            411
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmstempd.cpp">
-            87
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicdinterrupthandler.cpp">
-            126
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNAuthNotifier.cpp">
-            128
-            562
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUIPairedDevicesView.cpp">
-            397
-            1326
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\CUsbWatcherSession.cpp">
-            64
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsdialogtimer.cpp">
-            94
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbremotepersonality\src\csetpersonality.cpp">
-            57
-            107
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidkbdsettings\src\bthidsettingcontainer.cpp">
-            99
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\src\ir\obexsmirdaconnection.cpp">
-            217
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapSession.cpp">
-            56
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUIActive.cpp">
-            43
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicdlogger.cpp">
-            45
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmsinuse.cpp">
-            38
-            64
-            69
-            74
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSUImageConverter.cpp">
-            205
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\bip\src\BIPController.cpp">
-            839
-            862
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\CUsbActivePersonalityHandler.cpp">
-            329
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUIKeyWatcher.cpp">
-            113
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbremotepersonality\src\cremotepersonalityhandler.cpp">
-            483
-            495
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbdevcon\src\cep0writer.cpp">
-            90
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanclient\src\usbclientwrapper.cpp">
-            41
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmccallinghandler.cpp">
-            154
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\plugins\src\usb\DunUsbConfig.cpp">
-            229
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\devmodel\src\btregistryobserver.cpp">
-            138
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\src\hidcollection.cpp">
-            56
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\CUsbDeviceLock.cpp">
-            166
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irbearer\src\iractivatewatcher.cpp">
-            63
-            79
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudiostreamer\src\btaudiostreamer.cpp">
-            58
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\src\nptpimagehandler.cpp">
-            133
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\socketwriter.cpp">
-            102
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmsidle.cpp">
-            37
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStateSuspended.cpp">
-            75
-            98
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\src\notes.cpp">
-            100
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbosdescriptorhandler\src\cselectedpersonalityproperty.cpp">
-            121
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUIDeviceContainer.cpp">
-            310
-            547
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmsctrl.cpp">
-            130
-            188
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\dpsptpnotifier.cpp">
-            85
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStateStreaming.cpp">
-            78
-            110
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNotifier.cpp">
-            160
-            231
-            915
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\ptpclasscontroller\src\ptpclasscontroller.cpp">
-            147
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\atext\src\atextsrv.cpp">
-            101
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irbearer\src\irremotelockwatcher.cpp">
-            66
-            88
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvaccman.cpp">
-            222
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\devmodel\src\btpairedmodel.cpp">
-            237
-            763
-            835
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthidconnection.cpp">
-            184
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunAtCmdHandler.cpp">
-            305
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunUpstream.cpp">
-            354
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidengplugin\src\bthidengplugin.cpp">
-            252
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicdcontrolhandler.cpp">
-            494
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbui\USBClassChangeUIPlugin\src\USBClassChangeUIPluginModel.cpp">
-            124
-            307
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irbearer\src\irstates.cpp">
-            69
-            90
-            116
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\dpsstate.cpp">
-            43
-            93
-            111
-            141
-            194
-            224
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmsreconnect.cpp">
-            50
-            83
-            109
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btrfsplugin\src\btrfsplugin.cpp">
-            68
-            75
-            79
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengdiscovery\src\btengsdpattrparser.cpp">
-            44
-            146
-            159
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmcprotocol.cpp">
-            155
-            1169
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSBPPController.cpp">
-            401
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmonobearer\bmbcmdlistener.cpp">
-            46
-            53
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\plugins\src\usb\DunUsbListen.cpp">
-            200
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmonobearer\playercontrolistener.cpp">
-            46
-            53
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbdevcon\src\cusbdevcon.cpp">
-            255
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacState.cpp">
-            79
-            89
-            99
-            127
-            137
-            147
-            366
-            384
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irbearer\src\irstatuswatcher.cpp">
-            61
-            73
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbmscpersonality\src\CUsbActiveMscHandlerMdrv.cpp">
-            110
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacActivePacketDropIoctl.cpp">
-            66
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUINonSap.cpp">
-            29
-            38
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbobexclasscontroller\src\CUsbObexClassController.cpp">
-            144
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengpairobserver.cpp">
-            266
-            295
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunDataPusher.cpp">
-            353
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\locod\src\locodservice.cpp">
-            209
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\src\imageprintuiappui.cpp">
-            123
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthidsession.cpp">
-            365
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudiostreamer\src\btaudiostreamsender.cpp">
-            311
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbbasicpersonality\src\CUsbActiveBasicHandler.cpp">
-            41
-            70
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapSniffHandler.cpp">
-            184
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmcnumber.cpp">
-            155
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvaccstate.cpp">
-            40
-            51
-            81
-            86
-            91
-            96
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\vMessageHandler.cpp">
-            69
-            425
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexserviceirsend\src\IRSSProvider.cpp">
-            55
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvaccstateattached.cpp">
-            59
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStateConnecting.cpp">
-            68
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btrcc\btrccplayerstarter.cpp">
-            77
-            105
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\socketinitiator.cpp">
-            168
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSBPPServerWait.cpp">
-            85
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\btnssppasskeyentrynotifier.cpp">
-            90
-            392
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\src\BTUIAppUi.cpp">
-            130
-            165
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengsrvpluginmgr.cpp">
-            59
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\btaccDosListener.cpp">
-            130
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmsconnect.cpp">
-            56
-            86
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNInqNotifier.cpp">
-            73
-            134
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\plugins\src\bt\DunBtListen.cpp">
-            369
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\src\usb\obexsmusbconnection.cpp">
-            205
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSURefObjectResolver.cpp">
-            68
-            85
-            99
-            178
-            186
-            203
-            211
-            219
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvpowercontrolagent.cpp">
-            120
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btpbap\src\DisconnectHelper.cpp">
-            93
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btrcc\btrccLinker.cpp">
-            189
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\CUsbActiveState.cpp">
-            87
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicdbaseclass.cpp">
-            509
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNInquiryAO.cpp">
-            128
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUIViewsCommonUtils.cpp">
-            61
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthidserver.cpp">
-            228
-            337
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\dpsusbnotifier.cpp">
-            228
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmssniffm.cpp">
-            110
-            122
-            228
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStateConfigured.cpp">
-            194
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmsopenaudio.cpp">
-            86
-            118
-            197
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbui\USBClassChangeUIPlugin\src\USBClassChangeUIPluginView.cpp">
-            596
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\cusbdevconstarter.cpp">
-            121
-            195
-         </file>
-      </problem>
-      <problem name="nonleavenew" severity="low">
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\dpsoperation.cpp">
-            87
-            105
-            110
-            333
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvpowercontrolagent.cpp">
-            34
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\CUsbPersonalityNotifier.cpp">
-            183
-            213
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\hidsdpclient.cpp">
-            300
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthidserver.cpp">
-            1109
-            1166
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengdevman\src\btengdevman.cpp">
-            158
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvrvc.cpp">
-            32
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengpairobserver.cpp">
-            92
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUIMainView.cpp">
-            135
-         </file>
-      </problem>
-      <problem name="pragmaother" severity="low">
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\group\sicdusbplugin_UID_.cpp">
-            3
-            5
-         </file>
-      </problem>
-      <problem name="rfs" severity="low">
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\bip\src\BIPController.cpp">
-            550
-            617
-            685
-            714
-            958
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsuilayer.cpp">
-            153
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengsdpdbhandler.cpp">
-            358
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\opp\src\oppcontroller.cpp">
-            413
-            497
-            583
-            872
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSBIPController.cpp">
-            416
-            447
-            484
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunNoteHandler.cpp">
-            203
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilslaunchwaiter.cpp">
-            381
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsmessagehandler.cpp">
-            703
-            726
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\pictbridge.cpp">
-            277
-         </file>
-      </problem>
-      <problem name="rssnames" severity="low">
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\data\phonecapability.rss">
-            19
-         </file>
-      </problem>
-      <problem name="stringsinresourcefiles" severity="low">
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\data\imageprintui.rss">
-            38
-            100
-            285
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\bip\data\101F8671.rss">
-            41
-            42
-            63
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\data\irapp.rss">
-            35
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\data\btrcc\10208978.rss">
-            43
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usblocodplugin\data\0x102823dd.rss">
-            45
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbmscpersonality\src\10274798.rss">
-            36
-            37
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\usbman.rss">
-            69
-            87
-            104
-            121
-            141
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\data\1020742B.rss">
-            38
-            39
-            40
-            54
-            61
-            68
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbuinotif\data\USBUINotif.rss">
-            123
-            126
-            129
-            132
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbbasicpersonality\src\10274797.rss">
-            38
-            39
-            48
-            49
-            50
-            58
-            59
-            60
-            67
-            68
-            69
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\keyboard\data\hidkeyboard.rss">
-            35
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicebtsend\data\101F86A2.rss">
-            46
-            60
-            61
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\data\10208970.rss">
-            41
-            43
-            50
-            67
-            68
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\src\ir\101F9695.rss">
-            43
-            44
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbui\data\USBClassChangeUI_reg.rss">
-            29
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irbearer\src\20002770.rss">
-            45
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbui\data\USBClassChangeUI.rss">
-            40
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\ptpclasscontroller\src\1020DF7C.rss">
-            36
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuibluetooth\data\btmtmui.rss">
-            53
-            61
-            69
-            77
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\ecom\101FD68F.rss">
-            39
-            40
-            41
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\data\imageprintui_reg.rss">
-            29
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\client\src\0x20002775.rss">
-            44
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\data\BTUI.rss">
-            43
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\data\200159E9.rss">
-            43
-            44
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidkbdsettings\data\bthidkbdsettings.rss">
-            35
-            36
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidkbdsettings\data\BthidResource.rss">
-            33
-            264
-            291
-            318
-            1331
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintuiprovider\data\1020E471.rss">
-            39
-            40
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\data\Btui_reg.rss">
-            29
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\opp\data\101F8636.rss">
-            41
-            42
-            63
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\data\btsac\10208973.rss">
-            42
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\src\usb\101F9693.rss">
-            43
-            44
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\data\10204DB2.rss">
-            19
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\src\bt\101f7c9d.rss">
-            43
-            44
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\data\irapp_reg.rss">
-            30
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\layouts\data\kbdlayout.rss">
-            35
-            41
-            47
-            53
-            59
-            65
-            71
-            77
-            83
-            89
-            95
-            101
-            107
-            113
-            119
-            125
-            131
-            137
-            143
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbui\USBClassChangeUIPlugin\data\1020E472.rss">
-            41
-            43
-            44
-            54
-            55
-            56
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbuinotif\data\102068DC.rss">
-            38
-            39
-            40
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexserviceirsend\data\001F86A2.rss">
-            43
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbui\USBClassChangeUIPlugin\data\USBClassChangeUIPlugin.rss">
-            40
-            112
-            124
-            231
-            262
-            263
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\data\BtuiViewResources.rss">
-            157
-            187
-            1031
-            1032
-            1033
-            1034
-            1037
-            1039
-            1042
-            1043
-            1059
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irappgsplugin\data\10204DB0.rss">
-            36
-            37
-            38
-            44
-            45
-            46
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbobexclasscontroller\data\10281F29.rss">
-            35
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\lcstylustap\data\10204DAE.rss">
-            43
-            44
-            53
-            54
-            63
-            64
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\mouse\data\hidmouse.rss">
-            35
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbremotepersonality\src\10283307.rss">
-            37
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\data\200100C4.rss">
-            36
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\data\101f4689.rss">
-            41
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanclient\data\0x101F7C88.rss">
-            45
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbmscpersonality\src\usbms.rss">
-            23
-            24
-            25
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\data\Obexutils.rss">
-            338
-            488
-            489
-            490
-            491
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuiinfrared\data\irmtmui.rss">
-            44
-            52
-            60
-            68
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidengplugin\data\2001E308.rss">
-            42
-            43
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbosdescriptorhandler\src\10283305.rss">
-            37
-            38
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\data\10208970_nonaccfw.rss">
-            39
-            56
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\data\20002774.rss">
-            45
-         </file>
-      </problem>
-      <problem name="todocomments" severity="low">
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\inc\BTSap_Conn_State_SD.h">
-            37
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidkbdsettings\src\bthidsettingcontainer.cpp">
-            101
-         </file>
-      </problem>
-      <problem name="uids" severity="low">
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\group\UsbWatcherServer_pcsmtp.mmp">
-            27
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbuinotif\group\USBUINotifWrapper.mmp">
-            26
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbmscpersonality\group\UsbMscPersonality.mmp">
-            23
-         </file>
-      </problem>
-      <problem name="userWaitForRequest" severity="low">
-         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\CUsbActivePersonalityHandler.cpp">
-            115
-            443
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsmessagehandler.cpp">
-            1093
-            1128
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\atext\src\atextclient.cpp">
-            176
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidclient\src\bthidclient.cpp">
-            178
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\client\src\dunclient.cpp">
-            60
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\opp\src\oppcontroller.cpp">
-            203
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbmscpersonality\src\CUsbActiveMscHandlerMdrv.cpp">
-            565
-            596
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsuilayer.cpp">
-            136
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanclient\src\ObexSMClient.cpp">
-            96
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthidconnection.cpp">
-            207
-            847
-            860
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\bip\src\BIPController.cpp">
-            289
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidengplugin\src\bthidengplugin.cpp">
-            72
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmcphonestatus.cpp">
-            349
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengsrvpluginmgr.cpp">
-            716
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\src\rptp.cpp">
-            65
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengserver.cpp">
-            465
-            671
-            705
-            914
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\common\src\genericclient.cpp">
-            82
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\BTAccClient.cpp">
-            56
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengpairobserver.cpp">
-            302
-            310
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengclient.cpp">
-            64
-         </file>
-      </problem>
-      <problem name="worryingcomments" severity="low">
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\layouts\src\unitedstates.cpp">
-            69
-            95
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\layouts\src\su8intusenglish.cpp">
-            71
-            97
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\BTAccDosSender.h">
-            217
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\plugins\src\bt\DunBtPlugin.cpp">
-            220
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengconnman\src\btengpairinghandler.cpp">
-            28
-            94
-            100
-            137
-            164
-            201
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengdiscovery\src\btengsdpquery.cpp">
-            90
-            184
-            238
-            259
-            311
-            340
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengclient.cpp">
-            34
-            90
-            123
-            134
-            144
-            154
-            168
-            180
-            194
-            209
-            225
-            236
-            249
-            270
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanserver\src\SrcsSession.cpp">
-            280
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengsrvbbconnectionmgr.cpp">
-            28
-            30
-            32
-            141
-            293
-            304
-            315
-            331
-            370
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\btaccDosListener.cpp">
-            75
-            110
-            121
-            132
-            154
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\layouts\src\usinternational.cpp">
-            71
-            97
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunDownstream.cpp">
-            354
-            358
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsmessagehandler.cpp">
-            229
-            1067
-            1202
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\mouse\src\mouse.cpp">
-            525
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\layouts\src\norwegian.cpp">
-            69
-            95
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\layouts\src\layout.cpp">
-            69
-            95
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunAtUrcHandler.cpp">
-            61
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\btnpaireddevsettnotifier.cpp">
-            208
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmcoperator.cpp">
-            94
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\layouts\src\french.cpp">
-            69
-            95
-            276
-            296
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\layouts\src\german.cpp">
-            69
-            95
-            261
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthiddevice.cpp">
-            82
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\bluetooth_secondary_display_notification_api\inc\secondarydisplay\BTnotifSecondaryDisplayAPI.h">
-            51
-            58
-            88
-            94
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengdiscovery\inc\btengsdpquery.h">
-            44
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\src\nptpdatahandler.cpp">
-            1154
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengdiscovery\src\btengdiscovery.cpp">
-            186
-            204
-            221
-            232
-            250
-            268
-            286
-            355
-            368
-            384
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\layouts\src\danish.cpp">
-            70
-            96
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\hiddescriptor.cpp">
-            108
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\btengactive.h">
-            29
-            30
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacGavdp.cpp">
-            211
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengsrvstate.cpp">
-            94
-            119
-            136
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\src\usb\obexsmusbconnection.cpp">
-            117
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\BTAccInfoRequester.cpp">
-            82
-            151
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\opp\src\oppcontroller.cpp">
-            481
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\bluetooth_secondary_display_notification_api\inc\secondarydisplay\BtuiSecondaryDisplayAPI.h">
-            41
-            47
-            77
-            83
-            101
-            107
-            113
-            187
-            193
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStateConfiguring.cpp">
-            191
-            252
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunTransUtils.cpp">
-            501
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\socketlistener.cpp">
-            97
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\btaccDosSender.cpp">
-            206
-            221
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\ecom\BtnotifWrapper.cpp">
-            27
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\btengsrvpluginmgr.h">
-            33
-            34
-            315
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengserver.cpp">
-            320
-            408
-            421
-            473
-            504
-            521
-            594
-            626
-            655
-            715
-            785
-            811
-            851
-            926
-            975
-            988
-            1065
-            1226
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\btengsrvbbconnectionmgr.h">
-            32
-            33
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\src\ir\obexsmirdaconnection.cpp">
-            125
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengconnman\inc\btengconnhandler.h">
-            26
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengconnman\src\btengconnhandler.cpp">
-            115
-            148
-            209
-            217
-            219
-            221
-            249
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\layouts\src\portuguese.cpp">
-            69
-            95
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\common\atcodec.h">
-            73
-            76
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\inc\bt\debug.h">
-            31
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\layouts\inc\layout.h">
-            185
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanserver\inc\debug.h">
-            33
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudiostreamer\src\btaudiostreamer.cpp">
-            86
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\layouts\src\italian.cpp">
-            69
-            95
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\usb_secondary_display_api\inc\usbuinotifsecondarydisplay.h">
-            70
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengconnman\src\btengconnman.cpp">
-            104
-            116
-            127
-            139
-            151
-            163
-            174
-            285
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\layouts\src\su8usenglish.cpp">
-            71
-            97
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNotifier.cpp">
-            352
-            359
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\inc\btnssppasskeyentrynotifier.h">
-            134
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthidconnection.cpp">
-            447
-            646
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunUpstream.cpp">
-            158
-            376
-            380
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbui\USBClassChangeUIPlugin\src\USBClassChangeUIPluginModel.cpp">
-            360
-            376
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\layouts\src\dutch.cpp">
-            70
-            96
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\layouts\src\finnishswedish.cpp">
-            69
-            95
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilslaunchwaiter.cpp">
-            151
-            173
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvmain.cpp">
-            64
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengdiscovery\src\btengsdpattrparser.cpp">
-            21
-            25
-            84
-            143
-            156
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\layouts\src\unitedstatesdvorak.cpp">
-            69
-            95
-            195
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\BTAccDosListener.h">
-            172
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\src\bt\obexsmbtconnection.cpp">
-            140
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunAtCmdHandler.cpp">
-            153
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStateConnected.cpp">
-            438
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\inc\ir\debug.h">
-            33
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\layouts\src\spanish.cpp">
-            69
-            95
-            155
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\keyboard\src\keyboard.cpp">
-            396
-            892
-            1320
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunDataPusher.cpp">
-            380
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdconstants.h">
-            29
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthidsession.cpp">
-            50
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\btengsrvstate.h">
-            25
-            33
-            34
-            83
-            84
-            126
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStateConnecting.cpp">
-            121
-            123
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\layouts\src\belgian.cpp">
-            70
-            96
-            156
-            169
-            176
-            304
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\btnssppasskeyentrynotifier.cpp">
-            259
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengsrvpluginmgr.cpp">
-            90
-            183
-            198
-            230
-            268
-            291
-            309
-            327
-            354
-            377
-            398
-            419
-            445
-            466
-            488
-            532
-            550
-            586
-            593
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\layouts\src\unitedkingdom.cpp">
-            69
-            95
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\hidsdpclient.cpp">
-            216
-            416
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\inc\usb\debug.h">
-            33
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthidserver.cpp">
-            1431
-         </file>
-         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\hiddescriptorlist.cpp">
-            100
-         </file>
-      </problem>
-   </category>
-</problemIndex>
--- a/buildframework/helium/external/helium-antlib/diamonds/tests/src/com/nokia/helium/diamonds/tests/TestXMLMerger.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,221 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-package com.nokia.helium.diamonds.tests;
-
-import java.io.File;
-import java.io.BufferedWriter;
-import java.io.FileWriter;
-import java.io.FileReader;
-import java.io.Reader;
-import java.io.BufferedReader;
-import java.io.IOException;
-import com.nokia.helium.diamonds.XMLMerger;
-import com.nokia.helium.diamonds.XMLMerger.XMLMergerException;
-
-import org.junit.*;
-import static org.junit.Assert.*;
-import org.custommonkey.xmlunit.*;
-
-public class TestXMLMerger {
-    
-    @Before
-    public void setUp() {
-    }
-
-    @After
-    public void tearDown() {
-    }
-
-    
-    private File createTextFile(String content) throws IOException {
-        File temp = File.createTempFile("merge", ".xml");
-        temp.deleteOnExit();
-        BufferedWriter output = new BufferedWriter(new FileWriter(temp));
-        output.write(content);
-        output.close();
-        return temp;
-    }
-    
-    /**
-     * Simple merge with empty source.
-     * The result should be the same as the merged content.
-     * @throws Exception
-     */
-    @Test
-    public void test_simpleMergeNode() throws Exception {
-        File merge = createTextFile("<?xml version=\"1.0\"?>\n<root/>");
-        File toBeMerged = createTextFile("<?xml version=\"1.0\"?>\n<root>\n" +                 
-                "<section1/>\n" + 
-                "<section2/>\n"+ 
-                "<section3><subnode>text</subnode></section3>\n"+ 
-                "</root>");
-        XMLMerger merger = new XMLMerger(merge);
-        merger.merge(toBeMerged);
-        DifferenceListener differenceListener = new IgnoreTextAndAttributeValuesDifferenceListener();
-        Diff diff = new Diff(new ReaderNoSpaces(new FileReader(merge)), new ReaderNoSpaces(new FileReader(toBeMerged)));
-        diff.overrideDifferenceListener(differenceListener);
-        assertTrue("Test that 2 simple XML merge correctly  " + diff, diff.similar());
-    }
-
-    /**
-     * Test the merging of twice the same content.
-     * Result should be similar to the source.
-     * @throws Exception
-     */
-    @Test
-    public void test_mergeSameNode() throws Exception {
-        File merge = createTextFile("<?xml version=\"1.0\"?>\n<root>\n" +                 
-                "<section>\n" + 
-                "<subnode attr=\"1\">1</subnode>\n" + 
-                "</section>\n" + 
-                "</root>");
-        File toBeMerged = createTextFile("<?xml version=\"1.0\"?>\n<root>\n" +                 
-                "<section>\n" + 
-                "<subnode attr=\"1\">1</subnode>\n" + 
-                "</section>\n" + 
-                "</root>");
-        XMLMerger merger = new XMLMerger(merge);
-        merger.merge(toBeMerged);
-        DifferenceListener differenceListener = new IgnoreTextAndAttributeValuesDifferenceListener();
-        Diff diff = new Diff(new ReaderNoSpaces(new FileReader(merge)), new ReaderNoSpaces(new FileReader(toBeMerged)));
-        diff.overrideDifferenceListener(differenceListener);
-        assertTrue("Test that identity  " + diff, diff.similar());
-    }
-
-    /**
-     * Testing the merge of several files.
-     * @throws Exception
-     */
-    @Test
-    public void test_mergeWithSubNodeAndAttribute() throws Exception {
-        File merge = createTextFile("<?xml version=\"1.0\"?>\n<root/>");
-        File toBeMerged1 = createTextFile("<?xml version=\"1.0\"?>\n<root>\n" +                 
-                "<section>\n" + 
-                "<subnode attr=\"1\">1</subnode>\n" + 
-                "</section>\n" + 
-                "</root>");
-        File toBeMerged2 = createTextFile("<?xml version=\"1.0\"?>\n<root>\n" +                 
-                "<section>\n" + 
-                "<subnode attr=\"2\">2</subnode>\n" + 
-                "</section>\n" + 
-                "</root>");
-        File toBeMerged3 = createTextFile("<?xml version=\"1.0\"?>\n<root>\n" +                 
-                "<section>\n" + 
-                "<subnode attr=\"3\">3</subnode>\n" + 
-                "</section>\n" + 
-                "</root>");
-        File toBeMerged4 = createTextFile("<?xml version=\"1.0\"?>\n<root>\n" +                 
-                "<section>\n" +                 
-                "<subnode attr=\"4\">1</subnode>\n" + 
-                "</section>\n" + 
-                "</root>");
-        File expected = createTextFile("<?xml version=\"1.0\"?>\n<root>\n" +                 
-                "<section>\n" + 
-                "<subnode attr=\"1\">1</subnode>\n" + 
-                "<subnode attr=\"2\">2</subnode>\n" + 
-                "<subnode attr=\"3\">3</subnode>\n" + 
-                "<subnode attr=\"4\">1</subnode>\n" + 
-                "</section>\n" + 
-                "</root>");
-        XMLMerger merger = new XMLMerger(merge);
-        merger.merge(toBeMerged1);
-        merger.merge(toBeMerged2);
-        merger.merge(toBeMerged3);
-        merger.merge(toBeMerged4);
-        Diff diff = new Diff(new ReaderNoSpaces(new FileReader(merge)), new ReaderNoSpaces(new FileReader(expected)));
-        //System.out.println(readTextFile(merge.getAbsolutePath()));
-        assertTrue("test XML matches control skeleton XML " + diff, diff.similar());
-    }
-
-    /**
-     * Test the XMLMerger with xml file with no Root node.
-     */
-    @Test(expected=XMLMergerException.class)
-    public void test_mergeWithNoRootNode() throws Exception{
-		File merge = createTextFile("<?xml version=\"1.0\"?>\n");
-		XMLMerger merger = new XMLMerger(merge);
-	}
-    /**
-     * Test the XMLMerger with xml files with different root nodes to merge.
-     */
-    @Test(expected=XMLMergerException.class)
-    public void test_mergeWithDifferentRootNodes() throws Exception{
-		File merge = createTextFile("<?xml version=\"1.0\"?>\n<root/>");
-		File toBeMerged = createTextFile("<?xml version=\"1.0\"?>\n<root1/>\n");
-		XMLMerger merger = new XMLMerger(merge);
-		merger.merge(toBeMerged);
-	}
-    /**
-     * Test the XMLMerger with xml files with Wrong xml format
-     */
-    @Test(expected=XMLMergerException.class)
-    public void test_mergeWithWrongXML() throws Exception{
-        	File merge = createTextFile("<?xml version=\"1.0\"?>\n<root/>");
-        	File toBeMerged = createTextFile("<?xml version=\"1.0\"?>\n<root/><test/>\n");
-        	XMLMerger merger = new XMLMerger(merge);
-        	merger.merge(toBeMerged);
-	}
-
-    /**
-     * Load file content into a string. 
-     * @param fullPathFilename
-     * @return the file content as a string
-     * @throws IOException
-     */
-    public static String readTextFile(String fullPathFilename) throws IOException {
-        StringBuffer sb = new StringBuffer(1024);
-        BufferedReader reader = new BufferedReader(new FileReader(fullPathFilename));
-                
-        char[] chars = new char[1024];
-        int numRead = 0;
-        while ( (numRead = reader.read(chars)) > -1) {
-            sb.append(String.valueOf(chars));
-        }
-
-        reader.close();
-
-        return sb.toString();
-    }    
-    
-    public class ReaderNoSpaces extends BufferedReader {
-
-        private boolean skip = true; 
-        public ReaderNoSpaces(Reader in) throws Exception {
-            super(in);
-        }
-        
-        public int read(char[] cbuf, int off, int len) throws IOException {
-            int rlen = super.read(cbuf, off, len);
-            if (rlen < 0)
-                return rlen;
-            int w = off;
-            for (int i = off ; i < off + rlen ; i++) {
-                char c = cbuf[i];
-                if (c == '<')
-                    skip = false;
-                if (c == '>')
-                    skip = true;                
-                if (!(skip && (c == '\n' || c == '\t'|| c == ' '))) {
-                    cbuf[w++] = c;
-                }
-            }
-            return w - off;
-        }
-        
-    }
-}
--- a/buildframework/helium/external/helium-antlib/diamonds/tests/templates/apimetrics.xml.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-<#--
-============================================================================ 
-Name        : diamonds-api-metrics.xml.ftl 
-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:
-
-============================================================================
---> 
-    <#if (doc)??>
-    <apis>
-        <count type="sdk"><@totalNoOfRelease type="sdk"/></count>
-        <count type="domain"><@totalNoOfRelease type="domain"/></count>
-        <count type="internal"><@totalNoOfRelease type="internal"/></count>
-        <count type="private"><@totalNoOfRelease type="private"/></count>
-    <illegal-apis>
-    <#list doc.api_dataset.api as illegal>
-        <#if illegal.release.@category == 'private'>
-            <api>${illegal.buildfiles.file.path}</api>
-        </#if>
-        <#if illegal.release.@category == 'internal'>
-            <api>${illegal.buildfiles.file.path}</api>
-        </#if>
-    </#list>
-    </illegal-apis>
-    </apis>
-    </#if>
-
-<#if (doc)?? >
-<#macro totalNoOfRelease type>
-    <#assign count = 0>
-<#list doc.api_dataset.api as apinode>
-        <#if apinode.release.@category == '${type}'>
-            <#assign count = count + 1>
-        </#if>
-    </#list>
-${count}</#macro>
-</#if>
--- a/buildframework/helium/external/helium-antlib/diamonds/tests/templates/build.xml.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-<#--
-============================================================================ 
-Name        : diamonds-build.ftl 
-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:
-
-============================================================================
---> 
-    <build>
-        <category>${ant["build.family"]}</category>
-        <name>${ant["id"]}</name>
-        <#if ant?keys?seq_contains("diamonds.start.time")><started>${ant["diamonds.start.time"]}</started></#if>
-        <#if ant?keys?seq_contains("diamonds.end.time")><finished>${ant["diamonds.end.time"]}</finished></#if>
-        <creator>${ant["env.USERNAME"]}</creator>
-        <hostname>${ant["env.COMPUTERNAME"]}</hostname>
-        <product>${ant["name"]}</product>
-        <build_system>${ant["build.system"]}</build_system>
-        <#if ant?keys?seq_contains("env.NUMBER_OF_PROCESSORS")><processor_count>${ant["env.NUMBER_OF_PROCESSORS"]}</processor_count></#if>
-    </build>
--- a/buildframework/helium/external/helium-antlib/diamonds/tests/templates/codescanner.xml.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-  <#--
-============================================================================ 
-Name        : diamonds-faults.ftl 
-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:
-
-============================================================================
---> 
-<#include "header.ftl">
-  <faults>
-    <#if (doc)?? >
-      <#--<total severity="codescanner_error"><@totalNoOfSeverity type="error"/></total>-->
-      <total severity="codescanner_warning"><@totalNoOfSeverity type="high"/></total>
-    </#if>
-  </faults>
-<#include "footer.ftl">
-
-<#macro totalNoOfSeverity type>
-  <#assign count = 0>
-<#if (doc)?? >
-<#list doc["problemIndex/category/problem[@severity='${type}']/file"] as problem>
-    <#list problem?split("\n") as lineNo>
-        <#if lineNo?matches(".*[0-9].*")>
-            <#assign count = count + 1>
-        </#if>
-    </#list>
-</#list>
-</#if>
-${count}</#macro>
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/diamonds/tests/templates/diamonds_finish.xml.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-<#--
-============================================================================ 
-Name        : finish.xml.ftl 
-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:
-
-============================================================================
--->
-<#include "header.ftl">
-  <build>
-    <#if ant?keys?seq_contains("diamonds.end.time")><finished>${ant["diamonds.end.time"]}</finished></#if>
-  </build>
-<#include "footer.ftl">
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/diamonds/tests/templates/diamonds_signal.xml.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-<#--
-============================================================================ 
-Name        : finish.xml.ftl 
-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:
-
-============================================================================
--->
-<#include "header.ftl"> 
-  <signals>
-      <#assign diamondsignalname = ""/>
-      <#assign diamondkeys = diamondSignal?keys>
-      <#list diamondkeys as diamondkey>
-      <#if diamondkey?contains("diamond.signal.name")>
-      <#list diamondSignal[diamondkey]?split(".") as signalname>
-      <#assign diamondsignalname = signalname/>
-      </#list>
-      <signal>
-      <#list diamondkeys as diamondkey>
-      <#if diamondkey?contains("${diamondsignalname}")>
-          <#if diamondkey?contains("diamond.signal.name.${diamondsignalname}")><name>${diamondSignal[diamondkey]}</name></#if>
-          <#if diamondkey?contains("diamond.error.message.${diamondsignalname}")><message>${diamondSignal[diamondkey]}</message></#if>
-          <#if diamondkey?contains("diamond.time.stamp.${diamondsignalname}")><timestamp>${diamondSignal[diamondkey]}</timestamp></#if>
-      </#if>
-      </#list>
-      </signal>
-      </#if>
-      </#list>
-  </signals>
-<#include "footer.ftl"> 
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/diamonds/tests/templates/diamonds_stage.xml.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-<#--
-============================================================================ 
-Name        : stage.xml.ftl 
-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:
-
-============================================================================
---> 
-<#include "header.ftl">
-    <stages>
-      <stage>    
-            <name>${ant["logical.stage"]}</name>
-            <#if ant?keys?seq_contains("stage.start.time")><started>${ant["stage.start.time"]}</started></#if>
-            <#if ant?keys?seq_contains("stage.end.time")><finished>${ant["stage.end.time"]}</finished></#if>
-     </stage>
-    </stages>
-<#include "footer.ftl">
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/diamonds/tests/templates/diamonds_start.xml.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-<#--
-============================================================================ 
-Name        : start.xml.ftl 
-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:
-
-============================================================================
---> 
-<#include "header.ftl">
-<#include "build.xml.ftl">
-<#include "locations.ftl">    
-<#include "footer.ftl">
--- a/buildframework/helium/external/helium-antlib/diamonds/tests/templates/diamonds_status.xml.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-<#--
-============================================================================ 
-Name        : finish.xml.ftl 
-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:
-
-============================================================================
--->
-<#include "header.ftl"> 
-  <build>
-    <#if diamonds?keys?seq_contains("build.status")><status>${diamonds["build.status"]}</status></#if>
-  </build>
-<#include "footer.ftl"> 
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/diamonds/tests/templates/faults.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-<#--
-============================================================================ 
-Name        : faults.ftl 
-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:
-
-============================================================================
---> 
-<#include "macro.ftl">
-  <#if doc?? >
-      <@printall type='error'/>
-  </#if>
-  
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/diamonds/tests/templates/footer.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-<#--
-============================================================================ 
-Name        : footer.ftl 
-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:
-
-============================================================================
---> 
-</diamonds-build>
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/diamonds/tests/templates/header.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-<#--
-============================================================================ 
-Name        : header.ftl 
-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:
-
-============================================================================
--->
-<#include "macro.ftl">
-<?xml version="1.0" encoding="UTF-8"?>
-<diamonds-build>
-    <schema>${schema_version}</schema>
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/diamonds/tests/templates/locations.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-<#--
-============================================================================ 
-Name        : diamonds-locations.ftl 
-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:
-
-============================================================================
--->
-    <locations>
-    <#if ant?keys?seq_contains("release.grace.dir") &&  !(ant["release.grace.dir"]?contains("${"))>
-        <location>
-              <link>${ant["release.grace.dir"]}</link>
-              <description>GRACE server</description>
-           </location>
-    </#if>
-    <#if ant?keys?seq_contains("publish.dir.list")>
-        <#list ant["publish.dir.list"]?split(",") as path>
-            <#if !path?contains("${")>
-                <location>
-                      <link>${path}</link>
-                      <description>Shared drive</description>
-                   </location>
-               </#if>
-           </#list>
-    </#if>
-    <#if (ant?keys?seq_contains("publish.dir") && !ant["publish.dir"]?contains("${"))>
-            <location>
-                   <link>${ant["publish.dir"]}</link>
-                   <description>Shared drive</description>
-            </location>
-    </#if>
-    </locations>
--- a/buildframework/helium/external/helium-antlib/diamonds/tests/templates/macro.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,94 +0,0 @@
-<#--
-============================================================================ 
-Name        : diamonds-macro.ftl 
-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:
-
-============================================================================
---> 
-<#macro numberof regex type>
-    <#assign count = 0>
-<#if doc?? >
-    <#list doc.logSummary.log as lognode>
-        <#if lognode.@filename[0]?matches(regex)>
-            <#assign count = count + lognode.build[".//message[@priority='${type}']"]?size>
-        </#if>
-    </#list>
-</#if>
-${count}</#macro>
-<#macro printfaults regex type>
-</#macro>
-
-<#macro printcomponents regex>
-</#macro>
-<#macro printall type>
-    <#if doc?? >
-        <#assign componentname="">
-        <#assign components="">
-        <#assign componenterrors = 0>
-        <#assign totalerrors = 0>
-        <#assign totalwarnings = 0>
-        <#assign componentwarnings = 0>
-        <#assign ls=doc.logSummary["//task/task/@name"]?sort>
-        <!-- print all the fault info -->
-        <faults>
-        <#list ls as task>
-            <#assign currenttask=task?parent>
-            <#assign parenttask=currenttask?parent>
-            <#assign currentcomponentname="${task}">
-            <#if componentname == "">
-                <#assign componentname="${task?parent.@name}">
-                <#assign components="${componentname}">
-            </#if>
-            <#if componentname != currentcomponentname>
-            <component>
-                <name>${componentname}</name>
-                <total severity="error">${componenterrors}</total>
-                <total severity="warning">${componentwarnings}</total>
-            </component>
-                <#assign componentname=currentcomponentname>
-                <#assign components= components + ",${componentname}">
-                <#assign totalerrors = totalerrors + componenterrors>
-                <#assign totalwarnings = totalwarnings + componentwarnings>
-                <#assign componenterrors = 0>
-                <#assign componentwarnings = 0>
-            </#if>
-            <#assign componenterrors = componenterrors + currenttask[".//message[@priority='error']"]?size>
-            <#assign componentwarnings = componentwarnings + currenttask[".//message[@priority='warning']"]?size>
-        </#list>
-            <component>
-                <name>${componentname}</name>
-                <total severity="error">${componenterrors}</total>
-                <total severity="warning">${componentwarnings}</total>
-            </component>
-            <!-- print summary of the errors -->
-            <#assign totalerrors = totalerrors + componenterrors>
-            <#assign totalwarnings = totalwarnings + componentwarnings>
-            <total severity="error">${totalerrors}</total>      
-            <total severity="warning">${totalwarnings}</total>
-            <total severity="warning_rvct_other">${totalerrors}</total>
-            <!-- todo update to calculate the correct value -->
-            <total severity="warning_rvct_bad">${totalwarnings}</total>
-        </faults>
-        <components>
-        <!-- all components -->
-        <#list components?split(",") as component >
-            <component>${component}</component>
-        </#list>
-        </components>
-    </#if>
-</#macro>
-<#assign schema_version=13/>
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/diamonds/tests/templates/tool.xml.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-<#--
-============================================================================ 
-Name        : diamonds-tool.ftl 
-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:
-
-============================================================================
--->
-<#include "header.ftl">
-       <tools>
-         <tool>
-           <name>SymSEE</name>
-           <version>${ant["symsee.version"]}</version>
-         </tool>
-       </tools>
-<#include "footer.ftl">
-       
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/diamonds/tests/templates/validate-policy-log.xml.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-<#--
-============================================================================ 
-Name        : validate-policy-log.xml.ftl 
-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:
-
-============================================================================
---> 
-<#include "macro.ftl">
-<#include "header.ftl">
-<schema>${schema_version}</schema>
-<policyvalidation>
-<#if (doc)??!""?keys?seq_contains('validatePolicy')>
-<#list doc['validatePolicy'].policyvalidation.error as error>
-      <error type="${error.@type}" message="${error.@message}" value="${error.@value}"/>
-</#list>
-</#if>
-</policyvalidation>
-<#include "footer.ftl">
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/diamonds/tests/test_diamonds.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,136 +0,0 @@
-<?xml version="1.0"?>
-<!-- 
-============================================================================ 
-Name        : test_diamonds.ant.xml 
-Part of     : Helium AntLib
-
-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="test-diamonds" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
-    <description>Helium Antlib diamonds unittests.</description>
-    
-    <dirname property="project.dir" file="${ant.file.test-diamonds}" />
-    <target name="version">
-        <echo message="version target for diamonds to verify sending data to diamonds" />
-    </target>
-
-    <target name="diamonds" />
-
-    <target name="compile-target">
-        <echo message="verify the build stage with input source xml file" />
-    </target>
-
-    <target name="codescanner">
-        <echo message="target verification with input source xml file" />
-    </target>
-
-    <target name="create-bom-log">
-        <echo message="target without input file and just to send the data" />
-    </target>
-
-    <target name="invalid-target-input-file">
-        <echo message="target with invalid input source xml file" />
-    </target>
-
-    <target name="invalid-stage-input-file">
-        <echo message="stage with invalid input source xml file" />
-    </target>
-
-    <target name="invalid-template-file">
-        <echo message="target with invalid template-file" />
-    </target>
-
-    <target name="invalid-ant-properties-input">
-        <echo message="target with invalid ant properties input" />
-    </target>
-
-    <target name="non-existing-ant-properties">
-        <echo message="target with non-existing-ant-properties" />
-    </target>
-
-    <target name="invalid-diamonds-server-properties">
-        <echo message="target with invalid-diamonds-server-properties" />
-    </target>
-
-    <target name="defer-type">
-        <echo message="version target for diamonds to verify sending data to diamonds" />
-    </target>
-
-    <target name="test-defer-type">
-        <antcall target="defer-type" />
-    </target>
-
-    <target name="test-create-bom-log">
-        <antcall target="create-bom-log" />
-    </target>
-
-    <target name="test-codescanner">
-        <antcall target="codescanner" />
-    </target>
-
-    <target name="test-invalid-target-input-file">
-        <antcall target="invalid-target-input-file" />
-    </target>
-
-    <target name="test-invalid-stage-input-file">
-        <antcall target="invalid-target-input-file" />
-        <echo message="stage with invalid input source xml file" />
-    </target>
-
-    <target name="test-invalid-template-file">
-        <antcall target="invalid-template-file" />
-    </target>
-
-    <target name="test-invalid-ant-properties-input">
-        <antcall target="invalid-ant-properties-input" />
-    </target>
-
-    <target name="test-non-existing-ant-properties">
-        <antcall target="non-existing-ant-properties" />
-    </target>
-
-    <target name="test-invalid-diamonds-server-properties">
-        <antcall target="invalid-diamonds-server-properties" />
-        <echo message="target with invalid-diamonds-server-properties" />
-    </target>
-
-    <target name="test-compile-target">
-        <antcall target="compile-target" />
-    </target>
-
-    <target name="test-version">
-        <antcall target="version" />
-    </target>
-
-    <target name="test-buildid-set">
-        <echo>${diamonds.build.id}</echo>
-        <au:assertTrue>
-            <isset property="diamonds.build.id"/>
-        </au:assertTrue>
-    </target>
-
-    <target name="test-buildid-notset">
-        <au:assertFalse>
-            <isset property="diamonds.build.id"/>
-        </au:assertFalse>
-    </target>
-
-    <target name="test-all" depends="test-buildid-notset, diamonds, test-buildid-set, test-defer-type, test-version,
-        test-create-bom-log,test-codescanner,test-compile-target,test-invalid-diamonds-server-properties,
-        test-non-existing-ant-properties,test-invalid-ant-properties-input,test-invalid-template-file,
-        test-invalid-target-input-file,test-invalid-stage-input-file " />
-</project>
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/doc/src/build.rst	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/external/helium-antlib/doc/src/build.rst	Thu Mar 04 15:10:37 2010 +0200
@@ -11,79 +11,12 @@
 Building
 --------
 
-Simply run the following command on the route of your delivery:
-
-::
-   
-   > bld build
-   Buildfile: build.xml
-   
-   build:
-   
-   compile:
-        [echo] Compiling helium-core
-       [mkdir] Created dir: C:\development\workspace\helium-antlib-dragonfly-trunk\sf\build\core\classes
-       [javac] Compiling 25 source files to C:\development\workspace\helium-antlib-dragonfly-trunk\sf\build\core\classes
-       [javac] Note: Some input files use unchecked or unsafe operations.
-       [javac] Note: Recompile with -Xlint:unchecked for details.
-   
-   ...
-   
-   build:
-        [echo] helium-signaling is built.
-   
-   BUILD SUCCESSFUL
-   Total time: 6 seconds
+Run the following command on the route of your delivery `bld` or `bld -Dcomponent=module_name` to build only one module.
    
 Cleaning
 --------
 
-To cleanup the generated files just run:
-
-::
-   
-   > bld clean
-   Buildfile: build.xml
-   
-   clean:
-   
-   clean:
-        [echo] Cleaning helium-core
-      [delete] Deleting directory C:\development\workspace\helium-antlib-dragonfly-trunk\sf\build\core\classes
-      [delete] Deleting: C:\development\workspace\helium-antlib-dragonfly-trunk\sf\bin\helium-core.jar
-
-   clean:
-        [echo] Cleaning helium-diamonds
-      [delete] Deleting directory C:\development\workspace\helium-antlib-dragonfly-trunk\sf\build\diamonds\classes
-      [delete] Deleting: C:\development\workspace\helium-antlib-dragonfly-trunk\sf\bin\helium-diamonds.jar
-   
-   clean:
-        [echo] Cleaning helium-metadata
-      [delete] Deleting directory C:\development\workspace\helium-antlib-dragonfly-trunk\sf\build\metadata\classes
-      [delete] Deleting: C:\development\workspace\helium-antlib-dragonfly-trunk\sf\bin\helium-metadata.jar
-   
-   clean:
-        [echo] Cleaning helium-quality
-      [delete] Deleting directory C:\development\workspace\helium-antlib-dragonfly-trunk\sf\build\quality\classes
-      [delete] Deleting: C:\development\workspace\helium-antlib-dragonfly-trunk\sf\bin\helium-quality.jar
-
-   clean:
-        [echo] Cleaning helium-scm
-      [delete] Deleting directory C:\development\workspace\helium-antlib-dragonfly-trunk\sf\build\scm\classes
-      [delete] Deleting: C:\development\workspace\helium-antlib-dragonfly-trunk\sf\bin\helium-scm.jar
-   
-   clean:
-        [echo] Cleaning helium-signaling
-      [delete] Deleting directory C:\development\workspace\helium-antlib-dragonfly-trunk\sf\build\signaling\classes
-      [delete] Deleting: C:\development\workspace\helium-antlib-dragonfly-trunk\sf\bin\helium-signaling.jar
-      
-   clean:
-        [echo] Cleaning helium-logging
-      [delete] Deleting directory C:\development\workspace\helium-antlib-dragonfly-trunk\sf\build\logging\classes
-      [delete] Deleting: C:\development\workspace\helium-antlib-dragonfly-trunk\sf\bin\helium-logging.jar
-   
-   BUILD SUCCESSFUL
-   Total time: 1 second
+To cleanup the generated files just run `bld clean`
    
 Testing
 -------
--- a/buildframework/helium/external/helium-antlib/doc/src/index.rst	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/external/helium-antlib/doc/src/index.rst	Thu Mar 04 15:10:37 2010 +0200
@@ -8,13 +8,12 @@
 =======================
 .. toctree::
    :maxdepth: 1
+   :glob:
 
-   structure
-   build
+   *
    
-
-Documentation
-=============
+API Documentation
+=================
    * `Helium Antlib AntDoclet`_
    * `Helium Antlib Java API`_
    
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/imaker/bld.bat	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-@echo off
-
-rem
-rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-rem All rights reserved.
-rem This component and the accompanying materials are made available
-rem under the terms of the License "Eclipse Public License v1.0"
-rem which accompanies this distribution, and is available
-rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
-rem
-rem Initial Contributors:
-rem Nokia Corporation - initial contribution.
-rem
-rem Contributors:
-rem
-rem Description: 
-rem
-
-setlocal
-if not defined JAVA_6_HOME (
-set TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
-) ELSE  set TESTED_JAVA=%JAVA_6_HOME%
-if exist %TESTED_JAVA% (set JAVA_HOME=%TESTED_JAVA%)
-
-REM Configure Ant 
-if not defined TESTED_ANT_HOME (
-set TESTED_ANT_HOME=C:\Apps\ant_1.7
-) 
-if exist %TESTED_ANT_HOME% (set ANT_HOME=%TESTED_ANT_HOME%)
-
-REM Configure the expected Ant Version details below
-SET expMajorVer=1
-SET expMinorVer=7
-
-rem *** Verify Ant Version ***
-rem -- Run the 'ant -version' command and capture the output to a variable 
-for /f "tokens=*" %%a in ('ant -version') do (set antversion=%%a)
-echo *** Installed Version : %antversion%
-
-rem -- Parse the version string obtained above and get the version number
-for /f "tokens=4 delims= " %%a in ("%antversion%") do set val=%%a
-rem -- Parse the version number delimiting the '.' and set the major and
-rem    minor versions
-for /f "tokens=1-2 delims=." %%a in ("%val%") do (
-set /A majorVersion=%%a
-set /A minorVersion=%%b
-)
-rem -- Check whether major version is greater than or equal to the expected.
-if %majorVersion% geq %expMajorVer% ( 
-rem -- if major version is valid, check minor version. If minor version is less
-rem    than expected display message and abort the execution.
-if %minorVersion% lss %expMinorVer% (echo *** Incorrect version of Ant found. Please check you have atleast Ant 1.7.0 & goto :errorstop ) 
-)
-
-ant %*
-endlocal
-
-:errorstop
-@echo *** Build aborted with error
-exit /b 1
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/imaker/build.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : build.xml 
-Part of     : Helium AntLib
-
-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="helium-imaker">
-    <description>Helium Antlib iMaker build file.</description>
-    
-    <import file="../macros.ant.xml"/>
-    
-    <property name="name" value="imaker"/>
-    
-    <path id="helium.imaker.classpath">
-        <fileset dir="${ant.file.helium-imaker}/../lib" includes="*.jar"/>
-        <fileset dir="${ant.file.helium-imaker}/../../bin" includes="helium-core.jar"/>
-    </path>
-
-</project>
-
-
--- a/buildframework/helium/external/helium-antlib/imaker/demo/build.bat	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-@echo off
-
-rem
-rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-rem All rights reserved.
-rem This component and the accompanying materials are made available
-rem under the terms of the License "Eclipse Public License v1.0"
-rem which accompanies this distribution, and is available
-rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
-rem
-rem Initial Contributors:
-rem Nokia Corporation - initial contribution.
-rem
-rem Contributors:
-rem
-rem Description: 
-rem
-
-setlocal
-if not defined JAVA_6_HOME (
-set TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
-) ELSE  set TESTED_JAVA=%JAVA_6_HOME%
-if exist %TESTED_JAVA% (set JAVA_HOME=%TESTED_JAVA%)
-set ANT_ARGS=-lib %CD%\..\lib -lib %CD%\..\..\lib -lib  %CD%\..\..\bin\helium-core.jar -lib  %CD%\..\..\bin\helium-imaker.jar -lib %CD%\..\..\antlibs
-ant %*
-endlocal
-
--- a/buildframework/helium/external/helium-antlib/imaker/demo/build.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : build.xml 
-Part of     : Helium AntLib
-
-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="helium-antlib-imaker-demo" xmlns:hlm="http://www.nokia.com/helium">
-    <description>Helium Antlib imaker demo.</description>
-
-    <taskdef resource="com/nokia/helium/imaker/ant/antlib.xml" uri="http://www.nokia.com/helium" />
-
-    <property name="epocroot" location="K:/" />
-    <property name="product" value="?product??" />
-    
-    <hlm:emakeEngine id="imaker.ec">
-        <arg value="--emake-annofile=${epocroot}/imaker.anno.xml"/>
-        <arg value="--emake-autodepend=1"/>
-        <arg value="--emake-annodetail=basic,history,file,waiting"/>                            
-    </hlm:emakeEngine>
-    <hlm:defaultEngine id="imaker.default"/>
-    
-    <property name="imaker.engine" value="default" />
-    
-    <target name="demo-imaker">
-        <hlm:imaker epocroot="${epocroot}" output="${epocroot}/imaker.log" verbose="true" engineRefid="imaker.${imaker.engine}">
-            <hlm:imakerconfigurationset>
-                <hlm:imakerconfiguration>
-                    <makefileset>
-                        <include name="**/${product}/*ui.mk" />
-                    </makefileset>
-                    <targetset>
-                        <include name="core" />
-                        <include name="langpack_01" />
-                    </targetset>
-                    <variableset>
-                        <variable name="USE_FOTI" value="1" />
-                        <variable name="USE_FOTA" value="1" />
-                    </variableset>
-                    <variablegroup>
-                        <variable name="TYPE" value="rnd" />
-                    </variablegroup>
-                    <variablegroup>
-                        <variable name="TYPE" value="subcon" />
-                    </variablegroup>
-                </hlm:imakerconfiguration>
-            </hlm:imakerconfigurationset>
-        </hlm:imaker>
-    </target>
-    
-</project>
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/imaker/src/com/nokia/helium/imaker/HelpConfigStreamConsumer.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,65 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-package com.nokia.helium.imaker;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.codehaus.plexus.util.cli.StreamConsumer;
-
-/**
- * This class implements the help-config output parser for iMaker. 
- * The list of configuration will be stored into an internal list 
- * object. 
- * 
- */
-public class HelpConfigStreamConsumer implements StreamConsumer {
-    private List<String> configurations = new ArrayList<String>();
-    
-    /**
-     * {@inheritDoc}
-     * Only list starting with '/' and ending with '.mk' will be considered.
-     */
-    @Override
-    public void consumeLine(String line) {
-        line = line.trim();
-        if (line.startsWith("/") && line.endsWith(".mk")) {
-            configurations.add(line);
-        }
-    }
-    
-    /**
-     * Get the list of configurations as File objects.
-     * @return
-     */
-    public List<File> getConfigurations(File epocroot) {
-        List<File> confs = new ArrayList<File>();
-        for (String config : configurations) {
-            confs.add(new File(epocroot, config));
-        }
-        return confs; 
-    }
-    
-    /**
-     * Get the list of configuration as strings.
-     * @return the list of configurations
-     */
-    public List<String> getConfigurations() {
-        return configurations;
-    }
-}
--- a/buildframework/helium/external/helium-antlib/imaker/src/com/nokia/helium/imaker/HelpTargetListStreamConsumer.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-package com.nokia.helium.imaker;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.codehaus.plexus.util.cli.StreamConsumer;
-
-/**
- *  Helper class to parse the output form help-target-*-list. 
- *
- */
-public class HelpTargetListStreamConsumer implements StreamConsumer {
-
-    private List<String> targets = new ArrayList<String>();
-    
-    /**
-     * {@inheritDoc}
-     * iMaker targets should match the following patterns to be selected: [A-za-z0-9\\-_%]+.
-     */
-    @Override
-    public void consumeLine(String line) {
-        line = line.trim();
-        if (line.matches("^[A-za-z0-9\\-_%]+$")) {
-            targets.add(line);
-        }
-    }
-
-    /**
-     * Get the list of found targets.
-     * @return the target list.
-     */
-    public List<String> getTargets() {
-        return targets;
-    }
-
-}
--- a/buildframework/helium/external/helium-antlib/imaker/src/com/nokia/helium/imaker/IMaker.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,190 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-package com.nokia.helium.imaker;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.List;
-
-
-import com.nokia.helium.core.plexus.CommandBase;
-import com.nokia.helium.core.plexus.StreamRecorder;
-
-import org.apache.log4j.Logger;
-
-/**
- * This class implements a wrapper around iMaker.
- * It helps to introspect:
- *   <li> variables
- *   <li> targets
- *   <li> configurations
- *
- */
-public class IMaker extends CommandBase<IMakerException> {
-    private static final String TEMP_ROMBUILD_DIR = "epoc32/rombuild/temp";
-    private final Logger log = Logger.getLogger(getClass());
-    private File epocroot;
-
-    /**
-     * Create an iMaker wrapper class with a specific epocroot.
-     * @param epocroot
-     */
-    public IMaker(File epocroot) {
-        this.epocroot = epocroot;
-        
-    }
-    
-    /**
-     * Creates a temp working dir for the rom image creation.
-     * @return
-     * @throws IOException
-     */
-    public File createWorkDir() throws IMakerException {
-        try {
-            File tempRootDir = new File(getEpocroot(), TEMP_ROMBUILD_DIR);
-            tempRootDir.mkdirs();
-            File tempDir = File.createTempFile("helium-imaker", "", tempRootDir);
-            tempDir.delete();
-            tempDir.mkdirs();
-            return tempDir;
-        } catch (IOException e) {
-            throw new IMakerException(e.getMessage(), e);
-        }
-    }
-    
-    /**
-     * Epocroot location.
-     * @return the epocroot location
-     */
-    public File getEpocroot() {
-        return epocroot;
-    }
-
-    /**
-     * Get the iMaker version.
-     * @return the current iMaker version.
-     * @throws IMakerException is thrown in case of an iMaker execution error.
-     */
-    public String getVersion() throws IMakerException {
-        log.debug("getVersion");
-        String[] args = new String[1];
-        args[0] = "version";
-        StreamRecorder rec = new StreamRecorder();
-        execute(args, rec);
-        return rec.getBuffer().toString().trim();
-    }
-
-    /**
-     * Get the value of a particular variable from iMaker configuration.
-     * @param name the variable name
-     * @return the value or null if the variable does not exist.
-     * @throws IMakerException
-     */
-    public String getVariable(String name) throws IMakerException {
-        log.debug("getVariable: " + name);
-        String[] args = new String[1];
-        args[0] = "print-" + name;
-        PrintVarSteamConsumer consumer = new PrintVarSteamConsumer(name);
-        execute(args, consumer);
-        return consumer.getValue();
-    }
-
-    /**
-     * Get the value of a particular variable from iMaker configuration for a particular
-     * configuration.
-     * @param name the variable name
-     * @return the value or null if the variable does not exist.
-     * @throws IMakerException
-     */
-    public String getVariable(String name, File configuration) throws IMakerException {
-        log.debug("getVariable: " + name + " - " + configuration);
-        String[] args = new String[3];
-        args[0] = "-f";
-        args[1] = configuration.getAbsolutePath();
-        args[2] = "print-" + name;
-        PrintVarSteamConsumer consumer = new PrintVarSteamConsumer(name);
-        execute(args, consumer);
-        return consumer.getValue();
-    }
-
-    /**
-     * Get the list of available iMaker configurations.
-     * @return a list of configurations
-     * @throws IMakerException
-     */
-    public List<String> getConfigurations() throws IMakerException {
-        log.debug("getConfigurations");
-        String[] args = new String[1];
-        args[0] = "help-config";
-        HelpConfigStreamConsumer consumer = new HelpConfigStreamConsumer();
-        execute(args, consumer);
-        return consumer.getConfigurations();
-    }
-    
-    /**
-     * Get the a list of target supported by a specific configuration.  
-     * @param configuration the configuration to use
-     * @return the list of targets.
-     * @throws IMakerException
-     */
-    public List<String> getTargets(String configuration) throws IMakerException {
-        log.debug("getConfigurations");
-        String[] args = new String[3];
-        args[0] = "-f";
-        args[1] = configuration;
-        args[2] = "help-target-*-list";
-        HelpTargetListStreamConsumer consumer = new HelpTargetListStreamConsumer();
-        execute(args, consumer);
-        return consumer.getTargets();
-    }
-
-    /**
-     * Get the target list for the configuration.
-     * @param configuration a File object representing the configuration location.
-     * @return a list of targets.
-     * @throws IMakerException
-     */
-    public List<String> getTargets(File configuration) throws IMakerException {
-        return getTargets(configuration.getAbsolutePath());
-    }
-    
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    protected String getExecutable() {
-        return "imaker";
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public File getWorkingDir() {
-        return getEpocroot();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    protected void throwException(String message, Throwable t)
-            throws IMakerException {
-        throw new IMakerException(message, t);        
-    }
-    
-}
--- a/buildframework/helium/external/helium-antlib/imaker/src/com/nokia/helium/imaker/IMakerException.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-package com.nokia.helium.imaker;
-
-/**
- * Exception raise by the iMaker framework.
- *
- */
-public class IMakerException extends Exception {
-
-    private static final long serialVersionUID = -6918895304070211899L;
-
-    /**
-     * An exception with message. 
-     * @param message
-     */
-    public IMakerException(String message) {
-        super(message);
-    }
-
-    /**
-     * An exception with message and cause.
-     * @param message
-     */
-    public IMakerException(String message, Throwable t) {
-        super(message, t);
-    }
-    
-}
--- a/buildframework/helium/external/helium-antlib/imaker/src/com/nokia/helium/imaker/PrintVarSteamConsumer.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,67 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-package com.nokia.helium.imaker;
-
-import org.codehaus.plexus.util.cli.StreamConsumer;
-
-/**
- * Parsing iMaker printvar calls.
- * Output from iMaker should match:
- * NAME = `some content'
- *
- */
-public class PrintVarSteamConsumer implements StreamConsumer {
-
-    private String name;
-    private String value;
-    private boolean inParsing;
-    
-    /**
-     * Construct a PrintVarSteamConsumer for a variable named by name.
-     * @param name
-     */
-    public PrintVarSteamConsumer(String name) {
-        this.name = name;
-    }
-    
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void consumeLine(String line) {
-        String varPrefix = name + " = `";
-        if (!inParsing && line.startsWith(varPrefix)) {
-            value = line.substring(varPrefix.length());
-            inParsing = true;
-        } else if (inParsing) {
-            value += "\n" + line;
-        }
-        if (value != null && value.endsWith("'")) {
-            value = value.substring(0, value.length() - 1);
-            inParsing = false;
-        }
-    }
-    
-    /**
-     * Get the variable value returned by iMaker.
-     * @return the variable content return by iMaker.
-     */
-    public String getValue() {
-        return value;
-    }
-
-}
--- a/buildframework/helium/external/helium-antlib/imaker/src/com/nokia/helium/imaker/ant/Command.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,148 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-package com.nokia.helium.imaker.ant;
-
-import java.util.ArrayList;
-import java.util.Hashtable;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-
-/**
- * Abstract a command call. The default command will be imaker.
- * 
- */
-public class Command {
-    // default command is iMaker
-    private String command = "imaker";
-    private List<String> args = new ArrayList<String>();
-    private Map<String, String> variables = new Hashtable<String, String>();
-    private String target = "";
-    
-    /**
-     * Get the target name.
-     * @return the target name.
-     */
-    public String getTarget() {
-        return target;
-    }
-
-    /**
-     * Set the command name
-     * @param target the command name.
-     */
-    public void setTarget(String target) {
-        this.target = target;
-    }
-
-    /**
-     * Get the command name.
-     * @return the command name.
-     */
-    public String getCommand() {
-        return command;
-    }
-
-    /**
-     * Set the command name 
-     * @param command the command name.
-     */
-    public void setCommand(String command) {
-        this.command = command;
-    }
-    
-    /**
-     * Set the list of arguments based on a list of String.
-     * @param args the arg list.
-     */
-    public void setArguments(List<String> args) {
-        this.args.clear();
-        this.args.addAll(args);
-    }
-    
-    /**
-     * Append an argument to the argument list.
-     * @param arg the argument to add.
-     */
-    public void addArgument(String arg) {
-        this.args.add(arg);
-    }
-    
-    /**
-     * Get the list of arguments.
-     * @return the list of arguments
-     */
-    public List<String> getArguments() {
-        return args;
-    }
-
-    /**
-     * Get the map of variables.
-     * @return a map representing variables for current object.
-     */
-    public Map<String, String> getVariables() {
-        return variables;
-    }
-
-    /**
-     * Set variables using vars set of variables.
-     * @param vars
-     */
-    public void setVariables(Map<String, String> vars) {
-        variables.clear();
-        variables.putAll(vars);
-    }
-
-    /**
-     * Add all the variables from vars.
-     * @param vars a set of variables
-     */
-    public void addVariables(Map<String, String> vars) {
-        variables.putAll(vars);
-    }
-
-    /**
-     * Add a variable to the command.
-     * @param name the variable name
-     * @param value the variable value
-     */
-    public void addVariable(String name, String value) {
-        variables.put(name, value);
-    }
-
-    /**
-     * Convert the current object as a command line string.
-     * The final string will be contains the data in the following
-     * order:
-     *   <li> command
-     *   <li> arguments
-     *   <li> variables
-     *   <li> target 
-     * @return
-     */
-    public String getCmdLine() {
-        String cmdLine = getCommand();
-        for (String arg : getArguments()) {
-            cmdLine += " " + arg;            
-        }
-        for (Entry<String, String> e : getVariables().entrySet()) {
-            cmdLine += " " + e.getKey() + "=" + e.getValue();            
-        }
-        cmdLine += " " + getTarget();
-        return cmdLine;
-    }
-}
--- a/buildframework/helium/external/helium-antlib/imaker/src/com/nokia/helium/imaker/ant/Engine.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-package com.nokia.helium.imaker.ant;
-
-import java.util.List;
-
-import com.nokia.helium.imaker.IMakerException;
-import com.nokia.helium.imaker.ant.taskdefs.IMakerTask;
-
-/**
- * Engine interface. Methods needed by the IMaker task to
- * build the roms. 
- *
- */
-public interface Engine {
-    
-    /**
-     * Set the current IMakerTask.
-     * @param task the task instance.
-     */
-    void setTask(IMakerTask task);
-
-    /**
-     * Build the Commands.
-     * The sublist will be build in a serialize way,
-     * the content of each sublist will be built in parallel.
-     * @param cmdSet
-     * @throws IMakerException
-     */
-    void build(List<List<Command>> cmdSet) throws IMakerException;
-}
--- a/buildframework/helium/external/helium-antlib/imaker/src/com/nokia/helium/imaker/ant/IMakerCommandSet.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-package com.nokia.helium.imaker.ant;
-
-import java.util.List;
-
-import com.nokia.helium.imaker.IMaker;
-
-/**
- * This interface describes the API a configuration object should define.   
- *
- */
-public interface IMakerCommandSet {
-
-    /**
-     * Returns a list of command List.
-     * The sublist will be build sequentially. Their content can be built
-     * in parallel.
-     * @return a list of Command list
-     */
-    List<List<Command>> getCommands(IMaker imaker);
-
-}
--- a/buildframework/helium/external/helium-antlib/imaker/src/com/nokia/helium/imaker/ant/antlib.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : antlib.xml 
-Part of     : Helium AntLib
-
-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:
-
-============================================================================
--->
-<antlib>
-    <!-- Task definition -->
-    <taskdef name="imaker" classname="com.nokia.helium.imaker.ant.taskdefs.IMakerTask" />
-
-
-    <!-- Type definition - configuration -->
-    <typedef name="imakerconfiguration" classname="com.nokia.helium.imaker.ant.types.Configuration"/>
-    <typedef name="imakerconfigurationset" classname="com.nokia.helium.imaker.ant.types.ConfigurationSet"/>
-    <typedef name="product" classname="com.nokia.helium.imaker.ant.types.Product"/>
-
-    <!-- Type definition - Engine -->
-    <typedef name="defaultEngine" classname="com.nokia.helium.imaker.ant.engines.JavaEngine" />
-    <typedef name="emakeEngine" classname="com.nokia.helium.imaker.ant.engines.EmakeEngine" />
-</antlib>
--- a/buildframework/helium/external/helium-antlib/imaker/src/com/nokia/helium/imaker/ant/engines/Emake.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,65 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-package com.nokia.helium.imaker.ant.engines;
-
-import java.io.File;
-
-import com.nokia.helium.core.plexus.CommandBase;
-import com.nokia.helium.imaker.IMakerException;
-
-/**
- * Simple emake wrapper based on the CommandBase class.
- *
- */
-public class Emake extends CommandBase<IMakerException> {
-
-    private File workingDir = new File(".");
-    
-    /**
-     * @return emake.
-     */
-    @Override
-    protected String getExecutable() {
-        return "emake";
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    protected void throwException(String message, Throwable t) throws IMakerException {
-        throw new IMakerException(message, t);
-    }
-
-    /**
-     * Set the working directory where emake should be called.
-     * @param workingDir the working directory.
-     */
-    public void setWorkingDir(File workingDir) {
-        this.workingDir = workingDir;
-    }
-
-    /**
-     * Get the workingDir defined by the user.
-     * @return the working dir.
-     */
-    @Override
-    public File getWorkingDir() {
-        return workingDir;
-    }
-
-}
--- a/buildframework/helium/external/helium-antlib/imaker/src/com/nokia/helium/imaker/ant/engines/EmakeEngine.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,250 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-package com.nokia.helium.imaker.ant.engines;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.FileNotFoundException;
-import java.io.OutputStreamWriter;
-import java.io.StringWriter;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Hashtable;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.log4j.Logger;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.types.DataType;
-
-import com.nokia.helium.core.plexus.AntStreamConsumer;
-import com.nokia.helium.core.plexus.FileStreamConsumer;
-import com.nokia.helium.imaker.IMakerException;
-import com.nokia.helium.imaker.ant.Command;
-import com.nokia.helium.imaker.ant.Engine;
-import com.nokia.helium.imaker.ant.taskdefs.IMakerTask;
-
-import freemarker.cache.ClassTemplateLoader;
-import freemarker.cache.FileTemplateLoader;
-import freemarker.template.Configuration;
-import freemarker.template.Template;
-import freemarker.template.TemplateException;
-
-/**
- *
- * Simplest possible definition of the type, e.g:
- * <pre>
- * &lt;emakeEngine id="imaker.ec" /&gt;
- * </pre>
- * 
- * Emake engine with some custom configuration.
- * <pre> 
- * &lt;emakeEngine id="imaker.ec" &gt;
- *     &lt;arg value="--emake-annofile=imaker.anno.xml" /&gt;
- * &lt;/emakeEngine&gt;
- * </pre>
- * 
- * @ant.type name=emakeEngine category=imaker
- */
-public class EmakeEngine extends DataType implements Engine {
-    private Logger log = Logger.getLogger(getClass());
-    private IMakerTask task;
-    private List<Arg> customArgs = new ArrayList<Arg>(); 
-    private File template;
-    
-    /**
-     * Holder for emake custom args. 
-     */
-    public class Arg {
-        private String value;
-
-        /**
-         * Get the value of the argument.
-         * @return the argument
-         */
-        public String getValue() {
-            return value;
-        }
-
-        /**
-         * Define the additional command line parameter you want to add to emake
-         * invocation.
-         * @param value the additional command line parameter
-         * @ant.required
-         */
-        public void setValue(String value) {
-            this.value = value;
-        }
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public void build(List<List<Command>> cmdSet) throws IMakerException {
-        File makefile = null;
-        try {
-            // Writing the makefile.
-            makefile = writeMakefile(cmdSet);
-            
-            // Running Emake
-            runEmake(makefile);
-        } finally {
-            if (makefile != null) {
-                makefile.delete();
-            }
-        }
-    }
-
-    /**
-     * Returns the jar file name containing this class
-     * @return a File object or null if not found.
-     * @throws IMakerException
-     */
-    protected File getJarFile() throws IMakerException {
-        URL url = this.getClass().getClassLoader().getResource(this.getClass().getName().replace('.', '/') + ".class");
-        if (url.getProtocol().equals("jar") && url.getPath().contains("!/")) {
-            String fileUrl = url.getPath().split("!/")[0];
-            try {
-                return new File(new URL(fileUrl).getPath());
-            } catch (MalformedURLException e) {
-                throw new IMakerException("Error determining the jar file where "
-                        + this.getClass().getName() + " is located.", e);
-            }
-        }
-        return null;
-    }
-    /**
-     * Run emake using defined makefile.
-     * @param makefile the makefile to build
-     * @throws IMakerException
-     */
-    private void runEmake(File makefile) throws IMakerException {
-        FileStreamConsumer output = null;
-        if (task.getOutput() != null) {
-            try {
-                output = new FileStreamConsumer(task.getOutput());
-            } catch (FileNotFoundException e) {
-                throw new IMakerException("Error creating the stream recorder: " + e.getMessage(), e);
-            }
-        }
-        try {
-            Emake emake = new Emake();
-            emake.setWorkingDir(task.getEpocroot());
-            List<String> args = new ArrayList<String>();
-            for (Arg arg : customArgs) {
-                if (arg.getValue() != null) {
-                    args.add(arg.getValue());
-                }
-            }
-            args.add("-f");
-            args.add(makefile.getAbsolutePath());
-            args.add("all");
-            if (task.isVerbose()) {
-                emake.addOutputLineHandler(new AntStreamConsumer(task));
-            }
-            emake.addErrorLineHandler(new AntStreamConsumer(task, Project.MSG_ERR));
-            if (output != null) {
-                emake.addOutputLineHandler(output);
-                emake.addErrorLineHandler(output);
-            }
-            emake.execute(args.toArray(new String[args.size()]));
-        } catch (IMakerException e) {
-            throw new IMakerException("Error executing emake: " + e.getMessage(), e);
-        } finally {
-            if (output != null) {
-                output.close();
-            }
-        }
-    }
-    
-    /**
-     * Create the Makefile based on the cmdSet build sequence. 
-     * @param cmdSet
-     * @return
-     * @throws IMakerException 
-     * @throws IOException
-     */
-    private File writeMakefile(List<List<Command>> cmdSet) throws IMakerException {
-        try {
-            Configuration cfg = new Configuration();
-            Template template = null;
-            if (this.template != null) {
-                if (!this.template.exists()) {
-                    throw new IMakerException("Could not find template file: " + this.template.getAbsolutePath());
-                }
-                task.log("Loading template: " + this.template.getAbsolutePath());
-                cfg.setTemplateLoader(new FileTemplateLoader(this.template.getParentFile()));
-                template = cfg.getTemplate(this.template.getName());
-            } else {
-                cfg.setTemplateLoader(new ClassTemplateLoader(this.getClass(), ""));
-                template = cfg.getTemplate("build_imaker_roms_signing.mk.ftl");
-            }
-            File makefile = File.createTempFile("helium-imaker", ".mk", task.getEpocroot());
-            makefile.deleteOnExit();
-            StringWriter out = new StringWriter();
-            Map<String, Object> data = new Hashtable<String, Object>();
-            data.put("cmdSets", cmdSet);
-            data.put("makefile", makefile.getAbsoluteFile());
-            data.put("java_home", System.getProperty("java.home"));
-            File jar = getJarFile();
-            if (jar != null) {
-                task.log("Using " + jar + " as the utility container, make sure the file is available under an emake root.");
-                data.put("java_utils_classpath", jar.getAbsolutePath());
-            }
-            template.process(data, out);
-            log.debug(out.getBuffer().toString());
-        
-            OutputStreamWriter output = new OutputStreamWriter(new FileOutputStream(makefile));
-            output.append(out.getBuffer().toString());
-            output.close();
-            return makefile;
-        } catch (IOException e) {
-           throw new IMakerException("Error generating the makefile: " + e.getMessage(), e);
-        } catch (TemplateException e) {
-            throw new IMakerException("Error while rendering the makefile template: " + e.getMessage(), e);
-        }
-    }
-    
-    /**
-     * Add custom parameters for the emake invocation.
-     * @return a new Arg object.
-     */
-    public Arg createArg() {
-        Arg arg = new Arg();
-        customArgs.add(arg);
-        return arg;
-    }
-    
-    
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void setTask(IMakerTask task) {
-        this.task = task;
-    }
-    
-    /**
-     * Defines an alternate template to use to generate the build sequence for emake.
-     * @ant.not-required
-     */
-    public void setTemplate(File template) {
-        this.template = template;
-    }
-}
--- a/buildframework/helium/external/helium-antlib/imaker/src/com/nokia/helium/imaker/ant/engines/JavaEngine.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,194 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-package com.nokia.helium.imaker.ant.engines;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStreamWriter;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map.Entry;
-import java.util.concurrent.ArrayBlockingQueue;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
-
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.types.DataType;
-
-import com.nokia.helium.core.plexus.StreamRecorder;
-import com.nokia.helium.imaker.IMaker;
-import com.nokia.helium.imaker.IMakerException;
-import com.nokia.helium.imaker.ant.Command;
-import com.nokia.helium.imaker.ant.Engine;
-import com.nokia.helium.imaker.ant.taskdefs.IMakerTask;
-
-/**
- * Engine purely based on Java. Parallelisation is
- * implemented using multithreading.
- * 
- * <pre>
- * &lt;defaultEngine id="imaker.default" threads="4" /&gt;
- * </pre>
- * 
- * @ant.type name=defaultEngine category=imaker
- */
-public class JavaEngine extends DataType implements Engine {
-
-    private IMakerTask task;
-    private OutputStreamWriter output;
-    private int threads = 1;
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void setTask(IMakerTask task) {
-        this.task = task;
-    }
-    
-    /**
-     * Defines the number of iMaker jobs running in
-     * parallel. 
-     * @ant.not-required Default value is 1.
-     */
-    public void setThreads(int threads) {
-        this.threads = threads;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void build(List<List<Command>> cmds) throws IMakerException {
-        task.log("Building with Ant engine.");
-        if (threads <= 0) {
-            throw new BuildException("'threads' must be >= 0. (current value: " + threads + ")");
-        }
-        openLog();
-        // Do something with the configurations
-        for (List<Command> cmdlist : cmds) {
-            task.log("Building command list in parallel.");
-            if (cmdlist.size() > 0) {
-                ArrayBlockingQueue<Runnable> queue = new ArrayBlockingQueue<Runnable>(cmdlist.size());
-                ThreadPoolExecutor threadPool = new ThreadPoolExecutor(threads, threads, 10, TimeUnit.MILLISECONDS, queue);
-                task.log("Adding " + cmdlist.size() + " to queue.");
-                for (final Command cmd : cmdlist) {
-                    // Create a Runnable to wrap the image
-                    // building.
-                    threadPool.execute(new Runnable() {
-                        public void run() {
-                            try {
-                                buildCommand(cmd);
-                            } catch (IMakerException e) {
-                                task.log(e.getMessage(), Project.MSG_ERR);
-                            }
-                        }
-                    });
-                }
-                threadPool.shutdown();
-                try {
-                    while (!threadPool.isTerminated()) {
-                        threadPool.awaitTermination(100, TimeUnit.MILLISECONDS);
-                    }
-                } catch (InterruptedException e) {
-                    e.printStackTrace();
-                }
-            }
-        }
-        closeLog();
-    }
-
-  
-    /**
-     * Build a Command.
-     * @param cmd
-     * @throws IMakerException
-     */
-    protected void buildCommand(Command cmd) throws IMakerException {
-        IMaker imaker = task.getIMaker();
-        StreamRecorder rec = new StreamRecorder();
-        imaker.addOutputLineHandler(rec);
-        imaker.addErrorLineHandler(rec);
-        
-        rec.consumeLine("-- " + cmd.getCmdLine());
-        rec.consumeLine("++ Started at " + new Date());
-        rec.consumeLine("+++ HiRes Start " + new Date().getTime());
-        
-        List<String> args = new ArrayList<String>();
-        args.addAll(cmd.getArguments());
-        // Setting the working dir for the image creation.
-        File tempDir = imaker.createWorkDir();
-        args.add("WORKDIR=" + tempDir.getAbsolutePath());
-        // Pushing custom variables
-        for (Entry<String, String> e : cmd.getVariables().entrySet()) {
-            if (e.getKey().equals("WORKDIR")) {
-                task.log("WORKDIR cannot be defined by the user, the value will be ignored.", Project.MSG_WARN);
-            } else {
-                args.add(e.getKey() + "=" + e.getValue());
-            }
-        }
-        // Setting the target
-        args.add(cmd.getTarget());                
-        try {
-            imaker.execute(args.toArray(new String[args.size()]));
-        } catch (IMakerException e) {
-            // logging iMaker execution error to the 
-            // task and the output log.
-            task.log(e.getMessage(), Project.MSG_ERR);
-            rec.consumeLine(e.getMessage());
-        } finally {
-            rec.consumeLine("+++ HiRes End " + new Date().getTime());
-            rec.consumeLine("++ Finished at " + new Date());
-        }
-        // writing data
-        writeLog(rec.getBuffer().toString());
-    }
-    
-    private void openLog() throws IMakerException {
-        if (task.getOutput() != null) {
-            try {
-                output = new OutputStreamWriter(new FileOutputStream(task.getOutput()));
-            } catch (FileNotFoundException e) {
-                throw new IMakerException(e.getMessage(), e);
-            }
-        }
-    }
-
-    private synchronized void writeLog(String str) throws IMakerException {
-        if (output != null) {
-            try {
-                output.write(str);
-            } catch (IOException e) {
-                throw new IMakerException(e.getMessage(), e);
-            }
-        }
-    }
-    
-    private void closeLog() throws IMakerException {
-        if (output != null) {
-            try {
-                output.close();
-            } catch (IOException e) {
-                throw new IMakerException(e.getMessage(), e);
-            }
-        }
-    }
-}
--- a/buildframework/helium/external/helium-antlib/imaker/src/com/nokia/helium/imaker/ant/engines/build_imaker_roms_signing.mk.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,128 +0,0 @@
-<#--
-============================================================================ 
-Name        : build_imaker_roms_signing.mk.ftl 
-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:
-
-============================================================================
--->
-############################################################################
-# Makefile generated by the emake engine 
-############################################################################
-
-# Are we using linux?
-USE_UNIX  := $(if $(findstring cmd.exe,$(SHELL))$(findstring mingw,$(call lcase,$(MAKE))),0,1)
-EXECUTOR_CLASS = com.nokia.helium.imaker.utils.ParallelExecutor
-
-# Path conversion macro
-true        = $(if $(filter-out 0,$(subst 0,0 ,$1)),1)
-iif         = $(if $(call true,$1),$2,$3)
-lcase       = $(call tr,$([A-Z]),$([a-z]),$1)
-pathconv    = $(call iif,$(USE_UNIX),$(subst \,/,$1),$(subst /,\,$1))
-
-# Some variables
-ROMBUILD_TEMPDIR=$(call pathconv,epoc32/rombuild/temp)
-
-
-$(ROMBUILD_TEMPDIR)/:
-	-mkdir $(ROMBUILD_TEMPDIR)
-
-<#assign cid=0>
-<#assign iid=0>
-<#assign deps="">
-<#list cmdSets as cmds>
-<#assign configdeps="">
-<#assign configimagedeps="">
-<#assign firstiid=iid>
-
-#pragma runlocal
-configuration_${cid}-dir: $(ROMBUILD_TEMPDIR)/config_${iid} <#if (cid>0)>configuration_${cid-1}</#if> <#if (cmds?size == 0)>;</#if>
-	$(call iif,$(USE_UNIX),touch,@echo off >) $(ROMBUILD_TEMPDIR)/command-dir-list-${cid}.txt
-    <#list cmds as cmd>
-        <#assign cmdline="">
-        <#list cmd.getArguments() as arg>
-            <#assign cmdline="${cmdline} ${arg}">
-        </#list>
-        <#assign vars=cmd.getVariables()>
-        <#list vars?keys as var>
-            <#assign cmdline="${cmdline} ${var}=${vars[var]}">
-        </#list>
-	@echo $(call iif,$(USE_UNIX),,cmd /c) ${cmd.getCommand()} WORKDIR=$(ROMBUILD_TEMPDIR)/config_${iid} ${cmdline} ${cmd.getTarget()}-dir >> $(ROMBUILD_TEMPDIR)/command-dir-list-${cid}.txt 
-<#assign iid=iid+1>
-    </#list>
-	-@${java_home}/bin/java -cp "${java_utils_classpath}" $(EXECUTOR_CLASS) $(ROMBUILD_TEMPDIR)/command-dir-list-${cid}.txt
-
-
-<#assign iid=firstiid>
-    <#list cmds as cmd>
-        <#assign cmdline="">
-        <#list cmd.getArguments() as arg>
-            <#assign cmdline="${cmdline} ${arg}">
-        </#list>
-        <#assign vars=cmd.getVariables()>
-        <#list vars?keys as var>
-            <#assign cmdline="${cmdline} ${var}=${vars[var]}">
-        </#list>
-#
-#  Building configuration ${iid}.
-#
-$(ROMBUILD_TEMPDIR)/config_${iid}/: $(ROMBUILD_TEMPDIR)
-	-mkdir $(call pathconv,$(ROMBUILD_TEMPDIR)/config_${iid})
-
-
-rom_${iid}-image: configuration_${cid}-dir
-	@echo -- ${cmd.getCmdLine()}-image
-	-@perl -e "print '++ Started at '.localtime().\"\n\""
-	-@perl -e "use Time::HiRes; print '+++ HiRes Start '.Time::HiRes::time().\"\n\";"	
-	-${cmd.getCommand()} WORKDIR=$(ROMBUILD_TEMPDIR)/config_${iid} ${cmdline} ${cmd.getTarget()}-image
-	-@perl -e "use Time::HiRes; print '+++ HiRes End '.Time::HiRes::time().\"\n\";"
-	-@perl -e "print '++ Finished at '.localtime().\"\n\""
-
-<#assign configimagedeps="${configimagedeps} rom_${iid}-image">
-<#assign iid=iid+1>
-    </#list>
-
-configuration_${cid}-image: ${configimagedeps} ;
-
-<#assign iid=firstiid>
-#pragma runlocal
-configuration_${cid}-e2flash: configuration_${cid}-image
-	$(call iif,$(USE_UNIX),touch,@echo off >) $(ROMBUILD_TEMPDIR)/command-e2flash-list-${cid}.txt
-    <#list cmds as cmd>
-        <#assign cmdline="">
-        <#list cmd.getArguments() as arg>
-            <#assign cmdline="${cmdline} ${arg}">
-        </#list>
-        <#assign vars=cmd.getVariables()>
-        <#list vars?keys as var>
-            <#assign cmdline="${cmdline} ${var}=${vars[var]}">
-        </#list>
-	@echo $(call iif,$(USE_UNIX),,cmd /c) ${cmd.getCommand()} WORKDIR=$(ROMBUILD_TEMPDIR)/config_${iid} ${cmdline} ${cmd.getTarget()}-e2flash >> $(ROMBUILD_TEMPDIR)/command-e2flash-list-${cid}.txt 
-<#assign iid=iid+1>
-    </#list>
-	 -@${java_home}/bin/java -cp "${java_utils_classpath}" $(EXECUTOR_CLASS) $(ROMBUILD_TEMPDIR)/command-e2flash-list-${cid}.txt
-
-
-configuration_${cid}: <#if (cid>0)>configuration_${cid-1}</#if> configuration_${cid}-dir configuration_${cid}-image configuration_${cid}-e2flash ;
-
-
-<#assign deps="configuration_${cid}">        
-<#assign cid=cid+1>
-</#list>
-
-all: ${deps} ;
-
-# End of config
--- a/buildframework/helium/external/helium-antlib/imaker/src/com/nokia/helium/imaker/ant/taskdefs/IMakerTask.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,286 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-package com.nokia.helium.imaker.ant.taskdefs;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.Task;
-import org.apache.tools.ant.types.DataType;
-
-import com.nokia.helium.core.plexus.AntStreamConsumer;
-import com.nokia.helium.imaker.IMaker;
-import com.nokia.helium.imaker.IMakerException;
-import com.nokia.helium.imaker.ant.Command;
-import com.nokia.helium.imaker.ant.Engine;
-import com.nokia.helium.imaker.ant.IMakerCommandSet;
-import com.nokia.helium.imaker.ant.engines.JavaEngine;
-
-/**
- * The imaker task will allow you to efficiently use iMaker to 
- * build rom images in parallel.
- * 
- * The task is actually base on two concepts:
- * <ul>
- *   <li> content configuration: what needs to be built.
- *   <li> acceleration engine: how to build roms in an efficient way.
- * </ul>
- * 
- * In the following example the task is configured to use the emake engine
- * to accelerate the rom image creation and an <code>imakerconfiguration</code> configuration
- * element to configure the content of the building:
- *
- * <pre>
- *       &lt;hlm:emakeEngine id="imaker.ec" /&gt;
- *       &lt;hlm:imaker epocroot="${epocroot}" 
- *                      output="${epocroot}/imaker.log"
- *                      engineRefid="imaker.ec"
- *                      verbose="true"&gt;
-             &lt;hlm:imakerconfiguration&gt;
- *                   &lt;makefileset&gt;
- *                       &lt;include name="*&#42;/product/*ui.mk" /&gt;
- *                   &lt;/makefileset&gt;
- *                   &lt;targetset&gt;
- *                       &lt;include name="core" /&gt;
- *                       &lt;include name="langpack_01" /&gt;
- *                   &lt;/targetset&gt;
-             &lt;/hlm:imakerconfiguration&gt;
- *       &lt;/hlm:imaker&gt;
- * </pre> 
- * @ant.task name=imaker category=imaker
- */
-public class IMakerTask extends Task {
-
-    private File epocroot;
-    private boolean verbose;
-    private boolean failOnError = true;
-    private List<IMakerCommandSet> commandSets = new ArrayList<IMakerCommandSet>();
-    private String engineRefId;
-    private AntStreamConsumer stdout = new AntStreamConsumer(this);
-    private AntStreamConsumer stderr = new AntStreamConsumer(this, Project.MSG_ERR);
-    private File output;
-    
-    /**
-     * Add iMaker Task compatible configuration. The task will 
-     * accept any Ant type implementing the IMakerCommandSet 
-     * interface like the <code>imakerconfiguration</code> type.
-     * 
-     * @param cmdSet an iMaker configuration which will defines
-     *               what needs to be built.
-     * 
-     * @ant.required
-     */
-    public void add(IMakerCommandSet cmdSet) {
-        commandSets.add(cmdSet);
-    }
-
-    /**
-     * Defines the reference id of the engine to use.
-     * @ant.not-required Default Java implementation will be used.
-     */
-    public void setEngineRefId(String engineRefId) {
-        this.engineRefId = engineRefId;
-    }
-
-    /**
-     * Retrieve the engine to be used. If the engineRefId
-     * attribute is not defined then the JavaEngine is used 
-     * as the default one.
-     * @return An instance of engine.
-     * @throws a BuildException if the engineRefId attribute doesn't define an Engine
-     * object.
-     */
-    protected Engine getEngine() {
-        if (engineRefId == null) {
-            log("Using default engine (Java threading)");
-            JavaEngine engine = new JavaEngine();
-            engine.setProject(getProject());
-            engine.setTask(this);
-            return engine;
-        } else {
-            try {
-                Engine engine = (Engine)this.getProject().getReference(engineRefId);
-                engine.setTask(this);
-                return engine;
-            } catch (ClassCastException e) {
-                throw new BuildException("Reference '" + engineRefId + "' is not referencing an Engine configuration.");
-            }
-        }
-    }
-    
-    /**
-     * Get current epocroot location (build environment).
-     * @return a File object.
-     */
-    public File getEpocroot() {
-        File epocroot = this.epocroot;
-        if (epocroot == null) {
-            epocroot = new File(System.getenv("EPOCROOT"));
-            if (epocroot == null) {
-                throw new BuildException("'epocroot' attribute has not been defined.");                
-            } else {
-                log("Using EPOCROOT: " + epocroot.getAbsolutePath());
-            }
-        }
-
-        if (!epocroot.exists() || !epocroot.isDirectory()) {
-            throw new BuildException("Invalid epocroot directory: " + epocroot);
-        }
-        return epocroot;
-    }
-
-    /**
-     * Defines the EPOCROOT location.
-     * @param epocroot
-     * @ant.not-required Will use EPOCROOT environment variable if not defined.
-     */
-    public void setEpocroot(File epocroot) {
-        this.epocroot = epocroot;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void execute() {
-        try {
-            // Simple way to verify if iMaker is installed under
-            // then environment.
-            IMaker imaker = getIMaker();
-            log("Using iMaker: " + imaker.getVersion());
-
-            // build the content.
-            build();
-        } catch (IMakerException e) {
-            if (shouldFailOnError()) {
-                throw new BuildException(e.getMessage(), e);
-            } else {
-                log(e.getMessage(),  Project.MSG_ERR);
-            }
-        }
-    }
-    
-    /**
-     * Should the task be verbose.
-     * @return  Returns true if the task should display all iMaker outputs.
-     */
-    public boolean isVerbose() {
-        return verbose;
-    }
-
-    /**
-     * Defines if the task should log all the output through Ant.
-     * by default only error/warnings are printed.
-     * @param verbose set the verbosity status.
-     * @ant.not-required Default is false.
-     */
-    public void setVerbose(boolean verbose) {
-        this.verbose = verbose;
-    }
-
-    /**
-     * Get the output filename.
-     * @return the output filename.
-     */
-    public File getOutput() {
-        return output;
-    }
-
-    /**
-     * Defined the output log filename.
-     * @param output
-     * @ant.not-required
-     */
-    public void setOutput(File output) {
-        this.output = output;
-    }
-
-    /**
-     * Concatenate all the configuration content and
-     * delegate the building to the engine.
-     * @throws IMakerException
-     */
-    protected void build() throws IMakerException {
-        List<List<Command>> cmds = new ArrayList<List<Command>>();
-        for (IMakerCommandSet cmdSet : commandSets) {
-            if (cmdSet instanceof DataType) {
-                DataType dataType = (DataType)cmdSet;
-                if (dataType.isReference()) {
-                    cmdSet = (IMakerCommandSet)dataType.getRefid().getReferencedObject();
-                }
-            }
-            cmds.addAll(cmdSet.getCommands(getIMaker()));
-        }
-        if (cmds.size() > 0) {
-            getEngine().build(cmds);
-        } else {
-            log("Nothing to build.");
-        }
-    }
-    
-    /**
-     * Get a configured IMaker instance. The created object
-     * is configured with output stream redirected to
-     * the task logging. Stderr is always redirected,
-     * stdout is only redirected if the task is configured
-     * to be verbose.
-     * 
-     * @return an IMaker instance.
-     */
-    public IMaker getIMaker() {
-        return getIMaker(verbose, true);
-    }
-
-    /**
-     * Get a configured IMaker instance. The created object
-     * is configured with output stream redirected to
-     * the task logging. Stderr is always redirected,
-     * the stdout will be configured by the verbose parameter.
-     * @param verbose enable stdout redirection to the task logging.
-     * @return an IMaker instance.
-     */
-    public IMaker getIMaker(boolean verbose, boolean verboseError) {
-        IMaker imaker = new IMaker(getEpocroot());
-        if (verbose) {
-            imaker.addOutputLineHandler(stdout);
-        }
-        if (verboseError) {
-            imaker.addErrorLineHandler(stderr);
-        }
-        return imaker;
-    }
-    
-    /**
-     * Defines if the task should fail in case of error.
-     * @ant.not-required Default is true
-     */
-    public void setFailOnError(boolean failOnError) {
-        this.failOnError = failOnError;
-    }
-    
-    /**
-     * Should the task should fail in case of error?
-     * @return true if the task should fail on error.
-     */
-    public boolean shouldFailOnError() {
-        return this.failOnError;
-    }
-        
-}
--- a/buildframework/helium/external/helium-antlib/imaker/src/com/nokia/helium/imaker/ant/types/Configuration.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,356 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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: 
-*
-*/
- 
-package com.nokia.helium.imaker.ant.types;
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.DirectoryScanner;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.types.DataType;
-import org.apache.tools.ant.types.PatternSet;
-
-import com.nokia.helium.imaker.IMaker;
-import com.nokia.helium.imaker.IMakerException;
-import com.nokia.helium.imaker.ant.Command;
-import com.nokia.helium.imaker.ant.IMakerCommandSet;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.Vector;
-import java.util.regex.Pattern;
-
-/**
- * The imakerconfiguration enables the build manager to configure his iMaker
- * builds based on introspection.
- *
- * The makefileset element will configure the filtering of the "imaker help-config"
- * command. Then for each of the configuration found the targetset elements will be used
- * to filter the output from the "imaker -f <i>configuration.mk</i> help-target-*-list"
- * command. Finally a set of command will be generated.
- *
- * Each command will then be configure using the set of variables defined by the variableset
- * elements. Only the WORKDIR variable is under the task control to ensure call safety during the
- * parallelization. 
- * 
- * The usage of the variablegroup will allow you to duplicate the common set of commands 
- * and apply additional variables.    
- *
- * Example: 
- * <pre>
- *     &lt;imakerconfiguration regionalVariation="true"&gt;
- *         &lt;makefileset&gt;
- *             &lt;include name="*&#42;/product/*ui.mk"/&gt;
- *         &lt;/makefileset&gt;
- *         &lt;targetset&gt;
- *             &lt;include name="^core$" /&gt;
- *             &lt;include name="langpack_\d+" /&gt;
- *             &lt;include name="^custvariant_.*$" /&gt;
- *             &lt;include name="^udaerase$" /&gt;
- *         &lt;/targetset&gt;
- *         &lt;variableset&gt;
- *             &lt;variable name="USE_FOTI" value="0"/&gt;
- *             &lt;variable name="USE_FOTA" value="1"/&gt;
- *         &lt;/variableset&gt;
- *         &lt;variablegroup&gt;
- *             &lt;variable name="TYPE" value="rnd"/&gt;
- *         &lt;/variablegroup&gt;
- *         &lt;variablegroup&gt;
- *             &lt;variable name="TYPE" value="subcon"/&gt;
- *         &lt;/variablegroup&gt;
- *     &lt;/imakerconfiguration&gt;
- * </pre>
- *
- * This configuration might produce the following calls :
- * <pre>
- * imaker -f /epoc32/rom/config/platform/product/image_conf_product_ui.mk TYPE=rnd USE_FOTI=0 USE_FOTA=1 core
- * imaker -f /epoc32/rom/config/platform/product/image_conf_product_ui.mk TYPE=subcon USE_FOTI=0 USE_FOTA=1 core
- * imaker -f /epoc32/rom/config/platform/product/image_conf_product_ui.mk TYPE=rnd USE_FOTI=0 USE_FOTA=1 langpack_01
- * imaker -f /epoc32/rom/config/platform/product/image_conf_product_ui.mk TYPE=subcon USE_FOTI=0 USE_FOTA=1 langpack_01
- * </pre>
- * 
- * @ant.type name="imakerconfiguration" category="imaker"
- */
-public class Configuration extends DataType implements IMakerCommandSet {
-    
-    private Vector<PatternSet> makefiles = new Vector<PatternSet>();
-    private Vector<MakefileSelector> selectors = new Vector<MakefileSelector>();
-    private Vector<PatternSet> targets = new Vector<PatternSet>();
-    private Vector<VariableSet> variables = new Vector<VariableSet>();
-    private Vector<VariableGroup> variablegroups = new Vector<VariableGroup>();
-    private boolean regionalVariation;
-    
-    /**
-     * Create a makefileset element.
-     * Makefileset elements are based on regular Ant PatternSet.
-     * @return a PatternSet object.
-     */
-    public PatternSet createMakefileSet() {
-        PatternSet makefile =  new PatternSet();
-        makefiles.add(makefile);
-        return makefile;
-    }
-    
-    /**
-     * Get the list of makefileset element.
-     * @return a vector of PatternSet objects.
-     */
-    public Vector<PatternSet> getMakefileSet() {
-        return makefiles;
-    }
-    
-    /**
-     * Add a Makefile selector configuration (e.g: products)
-     * @param filter
-     */
-    public void add(MakefileSelector filter) {
-        selectors.add(filter);
-    }
-    
-    /**
-     * Create a targetset element.
-     * Targetset elements are based on regular Ant PatternSet.
-     * @return a PatternSet object.
-     */
-    public PatternSet createTargetSet() {
-        PatternSet target =  new PatternSet();
-        targets.add(target);
-        return target;
-    }
-    
-    /**
-     * Get the list of targetset.
-     * @return a vector of PatternSet objects.
-     */
-    public Vector<PatternSet> getTargetSet() {
-        return targets;
-    }
-
-    /**
-     * Create a VariableSet element.
-     * @return a VariableSet object.
-     */
-    public VariableSet createVariableSet() {
-        VariableSet var =  new VariableSet();
-        variables.add(var);
-        return var;
-    }
-        
-    /**
-     * Create a VariableSet element.
-     * @return a VariableSet object.
-     */
-    public VariableGroup createVariableGroup() {
-        VariableGroup var =  new VariableGroup();
-        variablegroups.add(var);
-        return var;
-    }
-        
-    /**
-     * Get the list of variableset.
-     * @return a vector of VariableSet objects.
-     */
-    public Vector<VariableSet> getVariableSet() {
-        return variables;
-    }
-
-    /**
-     * Enables the sorting of images per region. 
-     * @deprecated The usage of this feature is now ignored.
-     * @param value the state of the regional variation
-     * @ant.not-required Default is false - The usage of this feature is now ignored.
-     */
-    @Deprecated
-    public void setRegionalVariation(boolean value) {
-        log(this.getDataTypeName() + ": the usage of the regionalVariation attribute is now ignored.", Project.MSG_WARN);
-        regionalVariation = value;
-    }
-
-    /**
-     * Get the status of the regional variation enabling.
-     * @deprecated The usage of this feature is now ignored.
-     * @return returns true is the regional variation should be enabled.
-     */
-    public boolean getRegionalVariation() {
-        return regionalVariation;
-    }
-
-    /**
-     * Check if name is matching any of the pattern under patterns list.
-     * @param name the string to match
-     * @param patterns a list of PatternSet
-     * @return Returns true if name matches at least one pattern.
-     */
-    protected boolean isIncluded(String name, Vector<PatternSet> patterns) {
-        for (PatternSet patternSet : patterns) {
-            if (patternSet.isReference()) {
-                patternSet = (PatternSet) patternSet.getRefid().getReferencedObject();
-            }
-            String[] includes = patternSet.getIncludePatterns(getProject());
-            if (includes != null) {
-                for (String pattern : includes) {
-                    if (Pattern.matches(pattern, name)) {
-                        return true;
-                    }
-                }
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Check if name is matching any of the pattern under patterns list.
-     * @param name the string to match
-     * @param patterns a list of PatternSet
-     * @return Returns true if name matches at least one pattern.
-     */
-    protected boolean isExcluded(String name, Vector<PatternSet> patterns) {
-        for (PatternSet patternSet : patterns) {
-            if (patternSet.isReference()) {
-                patternSet = (PatternSet) patternSet.getRefid().getReferencedObject();
-            }
-            String[] excludes = patternSet.getExcludePatterns(getProject());
-            if (excludes != null) {
-                for (String pattern : excludes) {
-                    if (Pattern.matches(pattern, name)) {
-                        return true;
-                    }
-                }
-            }
-        }
-        return false;
-    }
-    
-    /**
-     * Get a configured matcher.
-     * @return a configured makefile matcher.
-     */
-    protected Matcher getMakefileMatcher() {
-        Matcher matcher = new Matcher();
-        List<String> includes = new ArrayList<String>(); 
-        List<String> excludes = new ArrayList<String>(); 
-        for (PatternSet patternSet : makefiles) {
-            if (patternSet.isReference()) {
-                patternSet = (PatternSet) patternSet.getRefid().getReferencedObject();
-            }
-            String[] patterns = patternSet.getIncludePatterns(getProject());
-            if (patterns != null) {
-                for (String pattern : patterns) {
-                    includes.add(pattern);
-                }
-            }
-            patterns = patternSet.getExcludePatterns(getProject());
-            if (patterns != null) {
-                for (String pattern : patterns) {
-                    excludes.add(pattern);
-                }
-            }
-        }    
-        matcher.setIncludes(includes.toArray(new String[includes.size()]));
-        matcher.setExcludes(excludes.toArray(new String[excludes.size()]));
-        return matcher;
-    }
-    
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public List<List<Command>> getCommands(IMaker imaker) {
-        List<List<Command>> cmdSet = new ArrayList<List<Command>>();
-        List<Command> cmds = new ArrayList<Command>();
-        // Let's add one fake group.
-        if (variablegroups.size() == 0) {
-            variablegroups.add(new VariableGroup());
-        }
-        try {
-            for (String configuration : getConfigurations(imaker.getConfigurations())) {
-                log("Including configuration: " + configuration);
-                for (String target : imaker.getTargets(configuration)) {
-                    if (isIncluded(target, targets) && !isExcluded(target, targets)) {
-                        log("Including target: " + target);
-                        for (VariableGroup group : variablegroups) {
-                            if (group.isReference()) {
-                                group = (VariableGroup)group.getRefid().getReferencedObject();
-                            }
-                            Command cmd = new Command();
-                            cmd.setCommand("imaker");
-                            cmd.addArgument("-f");
-                            cmd.addArgument(configuration);
-                            // Adding variables
-                            for (VariableSet vs : variables) {
-                                cmd.addVariables(vs.toMap());
-                            }
-                            // Adding variables from groups
-                            cmd.addVariables(group.toMap());
-                            cmd.setTarget(target);
-                            cmds.add(cmd);
-                        }
-                    }
-                }
-            }
-        } catch (IMakerException e) {
-            throw new BuildException(e.getMessage());
-        }
-        // adding all the commands.
-        if (cmds.size() > 0) {
-            cmdSet.add(cmds);
-        }
-        return cmdSet;
-    }
-    
-    /**
-     * Select which iMaker configuration should be built.
-     * @param configurations
-     * @return
-     */
-    protected Set<String> getConfigurations(List<String> configurations) {
-        Set<String> result = new HashSet<String>();
-        if (makefiles.size() > 0) {
-            Matcher matcher = getMakefileMatcher();
-            for (String configuration : configurations) {
-                if (matcher.match(configuration)) {
-                    result.add(configuration);
-                }
-            }
-        }
-        for (MakefileSelector selector : selectors) {
-            result.addAll(selector.selectMakefile(configurations));
-        }
-        return result;
-    }
-    
-    /**
-     * Matcher object to filter discovered configurations.
-     * iMaker configuration.
-     */
-    public class Matcher extends DirectoryScanner {
-        
-        /**
-         * Check is a particular configuration can
-         * is selected.
-         * @param path the string to match.
-         * @return return true is the path is selected.
-         */
-        public boolean match(String path) {
-            String vpath = path.replace('/', File.separatorChar).
-                replace('\\', File.separatorChar);
-            return isIncluded(vpath) && !isExcluded(vpath);
-        }
-    }
-
-}
--- a/buildframework/helium/external/helium-antlib/imaker/src/com/nokia/helium/imaker/ant/types/ConfigurationSet.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,95 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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: 
-*
-*/
- 
-package com.nokia.helium.imaker.ant.types;
-
-import org.apache.tools.ant.types.DataType;
-
-import com.nokia.helium.imaker.IMaker;
-import com.nokia.helium.imaker.ant.Command;
-import com.nokia.helium.imaker.ant.IMakerCommandSet;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Vector;
-
-/**
- * Set of iMaker configuration.
- *
- * <pre>
- * &lt;hlm:imakerconfigurationset&gt;
- *     &lt;imakerconfiguration regionalVariation="true"&gt;
- *         &lt;makefileset&gt;
- *             &lt;include name="*&#42;/product/*ui.mk"/&gt;
- *         &lt;/makefileset&gt;
- *         &lt;targetset&gt;
- *             &lt;include name="^core$" /&gt;
- *             &lt;include name="langpack_\d+" /&gt;
- *             &lt;include name="^custvariant_.*$" /&gt;
- *             &lt;include name="^udaerase$" /&gt;
- *         &lt;/targetset&gt;
- *         &lt;variableset&gt;
- *             &lt;variable name="USE_FOTI" value="0"/&gt;
- *             &lt;variable name="USE_FOTA" value="1"/&gt;
- *         &lt;/variableset&gt;
- *         &lt;variablegroup&gt;
- *             &lt;variable name="TYPE" value="rnd"/&gt;
- *             &lt;variable name="USE_FOTI" value="0"/&gt;
- *             &lt;variable name="USE_FOTA" value="1"/&gt;
- *         &lt;/variablegroup&gt;
- *         &lt;variablegroup&gt;
- *             &lt;variable name="TYPE" value="subcon"/&gt;
- *             &lt;variable name="USE_FOTI" value="0"/&gt;
- *             &lt;variable name="USE_FOTA" value="1"/&gt;
- *         &lt;/variablegroup&gt;
- *     &lt;/imakerconfiguration&gt;
- * &lt;/hlm:imakerconfigurationset&gt;
- * </pre>
- * @ant.type name="imakerconfigurationset" category="imaker"
- */
-public class ConfigurationSet extends DataType implements IMakerCommandSet {
-
-    private Vector<Configuration> configurations = new Vector<Configuration>();
-
-    /**
-     * This method create an iMaker Configuration element. 
-     */
-    public Configuration createImakerConfiguration() {
-        Configuration config = new Configuration();
-        configurations.add(config);
-        return config;
-    }
-
-    /**
-     * Get the list of iMaker configuration. 
-     */
-    public Vector<Configuration> getImakerConfiguration() {
-        return configurations;
-    }
-
-    @Override
-    public List<List<Command>> getCommands(IMaker imaker) {
-        List<List<Command>> cmdset = new ArrayList<List<Command>>();
-        for (Configuration config : configurations) {
-            if (config.isReference()) {
-                config = (Configuration) config.getRefid().getReferencedObject();
-            }
-            cmdset.addAll(config.getCommands(imaker));
-        }
-        return cmdset;
-    }
-}
--- a/buildframework/helium/external/helium-antlib/imaker/src/com/nokia/helium/imaker/ant/types/MakefileSelector.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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: 
-*
-*/
-package com.nokia.helium.imaker.ant.types;
-
-import java.util.List;
-
-/**
- * Interface used to extend the Makefile introspection of the
- *  iMaker configuration.
- *
- */
-public interface MakefileSelector {
-
-    /**
-     * Select the configurations to be built based on the object settings.
-     * @param configuration
-     * @return a list of selected configuration from the input list.
-     */
-    List<String> selectMakefile(List<String> configurations);
-}
--- a/buildframework/helium/external/helium-antlib/imaker/src/com/nokia/helium/imaker/ant/types/Product.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,123 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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: 
-*
-*/
-package com.nokia.helium.imaker.ant.types;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Vector;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.types.DataType;
-
-/**
- * The product type will allow you to select iMaker makefile configuration based on
- * the product name. The search will be done using the following template:
- * image_conf_[product_name][_ui].mk
- * 
- * <pre>
- * &lt;hlm:product list="product1,product2" ui="true" failonerror="false" /&gt;
- * </pre>
- * @ant.type name="hlm:product" category="imaker"
- */
-public class Product extends DataType implements MakefileSelector {
-    private String list;
-    private boolean ui;
-    private boolean failOnError = true;
-
-    /**
-     * Defines a comma separated list of product names.
-     * @param name
-     */
-    public void setList(String list) {
-        this.list = list;
-    }
-    
-    /**
-     * Get the list of products
-     * @return an array of products
-     */
-    public String[] getNames() {
-        Vector<String> names = new Vector<String>();
-        for (String name : this.list.split(",")) {
-            name = name.trim();
-            if (name.length() > 0) {
-                names.add(name);
-            }
-        }
-        return names.toArray(new String[names.size()]);
-    }
-
-    public void setUi(boolean ui) {
-        this.ui = ui;
-    }
-
-    /**
-     * Define if we are looking for a ui configuration (will add _ui to the
-     * makefile name)
-     * @return
-     * @ant.not-required Default false
-     */
-    public boolean isUi() {
-        return ui;
-    }
-
-    /**
-     * Shall we fail the build in case of missing config?
-     * @param failOnError
-     * @ant.not-required Default true
-     */
-    public void setFailOnError(boolean failOnError) {
-        this.failOnError = failOnError;
-    }
-
-    /**
-     * Shall we fail the build in case of missing config. 
-     * @return a boolean
-     */
-    public boolean isFailOnError() {
-        return failOnError;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public List<String> selectMakefile(List<String> configurations) {
-        List<String> result = new ArrayList<String>();
-        for (String product : getNames()) {
-            String endOfString = "image_conf_" + product + (ui ? "_ui" : "") + ".mk";
-            boolean foundConfig = false;
-            for (String config : configurations) {
-                if (config.endsWith(endOfString)) {
-                    foundConfig = true;
-                    result.add(config);
-                    break;
-                }
-            }
-            if (!foundConfig) {
-                if (isFailOnError()) {
-                    throw new BuildException("Could not find a valid configuration for " + product);
-                } else {
-                    log("Could not find a valid configuration for " + product, Project.MSG_ERR);
-                }
-            }
-        }
-        return result;
-    }
-
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/imaker/src/com/nokia/helium/imaker/ant/types/Variable.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,78 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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: 
-*
-*/
- 
-package com.nokia.helium.imaker.ant.types;
-
-import org.apache.tools.ant.types.DataType;
-import org.apache.tools.ant.BuildException;
-
-/**
- * Configure a variable for iMaker.
- * @ant.type name="variable" category="imaker"
- */
-public class Variable extends DataType
-{
-    private String mName;
-    private String mValue;
-    
-    /**
-     * Set the name of the variable.
-     * @param name
-     */
-    public void setName(String name) {
-        mName = name;
-    }
-
-    
-    /**
-     * Get the name of the variable.
-     * @return name.
-     */
-    public String getName() {
-        return mName;
-    }
-
-    /**
-     * Set the value of the variable.
-     * @param value
-     */
-    public void setValue(String value) {
-        mValue = value;
-    }
-
-    
-    /**
-     * Get the value of the variable.
-     * @return value.
-     */
-    public String getValue() {
-        return mValue;
-    }
-
-    /**
-     * Validate if the configuration is defined properly.
-     * Throws BuildException in case of error.
-     */
-    public void validate() {
-        if (getName() == null) {
-            throw new BuildException("The variable element doesn't define a 'name' attribute.");
-        }
-        if (getValue() == null) {
-            throw new BuildException("The variable element doesn't define a 'value' attribute.");
-        }
-    }
-}
--- a/buildframework/helium/external/helium-antlib/imaker/src/com/nokia/helium/imaker/ant/types/VariableGroup.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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: 
-*
-*/
-package com.nokia.helium.imaker.ant.types;
-
-/**
- * This type is a container for variable configuration.
- * A set of command will be generated for each group
- * present in the imakerconfiguration.
- * 
- * <pre>
- * &lt;variablegroup&gt;
- *     &lt;variable name="TYPE" value="rnd" /&gt;
- * &lt;/variablegroup&gt;
- * </pre>
- * 
- * @ant.type name=variablegroup category="imaker"
- */
-public class VariableGroup extends VariableSet {
-
-}
--- a/buildframework/helium/external/helium-antlib/imaker/src/com/nokia/helium/imaker/ant/types/VariableSet.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,78 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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: 
-*
-*/
- 
-package com.nokia.helium.imaker.ant.types;
-import org.apache.tools.ant.types.DataType;
-
-import java.util.Hashtable;
-import java.util.Map;
-import java.util.Vector;
-
-/**
- * This type is a container for variable configuration.
- * 
- * <pre>
- * &lt;variableset&gt;
- *     &lt;variable name="TYPE" value="rnd" /&gt;
- * &lt;/variableset&gt;
- * </pre>
- * 
- * @ant.type name="variableset" category="imaker"
- */
-public class VariableSet extends DataType {
-    
-    private Vector<Variable> variables = new Vector<Variable>();
-    
-    /**
-     * Creates a Variable object.
-     * @return a Variable object.
-     */
-    public Variable createVariable() {
-        Variable var =  new Variable();
-        add(var);
-        return var;
-    }
-    
-    /**
-     * Support the addition of a Variable object.
-     * @param a Variable object.
-     */
-    public void add(Variable var) {
-        variables.add(var);
-    }
-    
-    /**
-     * Get the list of Variable object.
-     * @return a vector of Variable objects
-     */
-    public Vector<Variable> getVariables() {
-        return variables;
-    }
-    
-    /**
-     * Convert the set of variable to a Map object.
-     * @return the content of that set into a Map object.
-     */
-    public Map<String, String> toMap() {
-        Map<String, String> data = new Hashtable<String, String>();
-        for (Variable var : variables) {
-            var.validate();
-            data.put(var.getName(), var.getValue());
-        }
-        return data;
-    }
-}
--- a/buildframework/helium/external/helium-antlib/imaker/src/com/nokia/helium/imaker/utils/ParallelExecutor.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,134 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-package com.nokia.helium.imaker.utils;
-
-import java.io.BufferedReader;
-import java.io.FileReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.StringTokenizer;
-import java.util.concurrent.ArrayBlockingQueue;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
-import java.util.Date;
-import java.text.SimpleDateFormat;
-
-/**
- * Simple application which will execute each line from a text file
- * as a command. All the command will be executed in parallel.
- * Default number of threads is 4.
- * 
- * The implementation must not rely on any external dependencies except JVM and owning jar.
- *
- */
-public final class ParallelExecutor {
-    
-    /**
-     * Private constructor - not meant to be instantiated.
-     */
-    private ParallelExecutor() {
-    }
-    
-    /**
-     * Internal class holding a command to 
-     * execute.
-     *
-     */
-    private static class RunCommand implements Runnable {
-        private String cmdline;
-        
-        /**
-         * Default constructor
-         * @param cmdline the command to run
-         */
-        public RunCommand(String cmdline) {
-            this.cmdline = cmdline;
-        }
-        
-        /**
-         * Running command line and capturing the output.
-         */
-        @Override
-        public void run() {
-            StringTokenizer st = new StringTokenizer(cmdline);
-            String[] cmdArray = new String[st.countTokens()];
-            for (int i = 0; st.hasMoreTokens(); i++) {
-                cmdArray[i] = st.nextToken();
-            }
-            Process p;
-            try {
-                p = new ProcessBuilder(cmdArray).redirectErrorStream(true).start();
-                BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
-                String line;
-                StringBuffer buffer = new StringBuffer();
-                SimpleDateFormat df = new SimpleDateFormat("EEE MMM d HH:mm:ss yyyy");
-                
-                Date start = new Date();
-                buffer.append("++ Started at " + df.format(start) + "\n");
-                buffer.append("+++ HiRes Start " + start.getTime() / 1000 + "\n");
-                buffer.append("-- " + cmdline + "\n");
-                while ((line = in.readLine()) != null) {
-                    buffer.append(line + "\n");
-                }
-                Date end = new Date();
-                buffer.append("+++ HiRes End " + end.getTime() / 1000 + "\n");
-                buffer.append("++ Finished at " + df.format(end) + "\n");
-                synchronized (System.out) {
-                    System.out.print(buffer);
-                }
-            } catch (IOException e) {
-                System.err.println("ERROR: " + e.getMessage());
-            }
-        }
-    }
-    
-    /**
-     * This is the entry point of the application.
-     * It will only accept one file name as parameter.
-     * @param args a list of arguments.
-     */
-    public static void main(String[] args) {
-        if (args.length == 1) {
-            try {
-                List<String> cmds = new ArrayList<String>();
-                BufferedReader in = new BufferedReader(new FileReader(args[0]));
-                String line;
-                while ((line = in.readLine()) != null) {
-                    if (line.trim().length() > 0) {
-                        cmds.add(line);
-                    }
-                }
-                
-                final ArrayBlockingQueue<Runnable> queue = new ArrayBlockingQueue<Runnable>(cmds.size());
-                int numOfProcessor = Runtime.getRuntime().availableProcessors();
-                System.out.println("Number of threads: " + numOfProcessor);
-                ThreadPoolExecutor executor = new ThreadPoolExecutor(numOfProcessor, numOfProcessor, 100, TimeUnit.MILLISECONDS, queue);
-                for (String cmd : cmds) {
-                    executor.execute(new RunCommand(cmd));
-                }
-                executor.shutdown();
-            } catch (IOException e) {
-                System.err.println("ERROR: " + e.getMessage());
-            }
-        } else {
-            System.out.println("ParallelExecutor: nothing to execute.");
-        }
-    }
-
-}
--- a/buildframework/helium/external/helium-antlib/imaker/tests/antunit/test_emakeengine.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,155 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : test_emakeengine.ant.xml 
-Part of     : Helium AntLib
-
-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="helium-antlib-imaker-emakeengine-unittest" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
-    <description>Helium Antlib imaker unittests.</description>
-
-    <taskdef resource="com/nokia/helium/imaker/ant/antlib.xml" uri="http://www.nokia.com/helium"/>
-    <property name="epocroot" location="${basedir}/../epocroot_task" />
-    <property name="epocroot.temp" location="${epocroot}/temp" />
-
-    <!-- is called prior to the test -->
-    <target name="setUp">
-        <echo>-------------------------------------------------------------------------------</echo>
-        <delete dir="${epocroot.temp}" failonerror="false" />
-        <delete dir="${epocroot}/epoc32" failonerror="false" />
-        <mkdir dir="${epocroot.temp}" />
-    </target>
-
-    <!-- is called after the test, even if that caused an error -->
-    <target name="tearDown">
-        <delete dir="${epocroot.temp}" failonerror="false" />
-        <delete dir="${epocroot}/epoc32" failonerror="false" />
-        <echo>-------------------------------------------------------------------------------</echo>
-    </target>
-
-    <target name="test-imaker-defaultconfig">
-        <hlm:emakeEngine id="imaker.ec" />
-        <hlm:imaker epocroot="${epocroot}" 
-            output="${epocroot.temp}/output.log"
-            engineRefId="imaker.ec">
-            <hlm:imakerconfiguration>
-                <makefileset>
-                    <include name="**/product/*ui.mk" />
-                </makefileset>
-                <targetset>
-                    <include name="core" />
-                    <include name="langpack_\d+" />
-                </targetset>
-            </hlm:imakerconfiguration>
-        </hlm:imaker>
-        <au:assertFileExists file="${epocroot.temp}/output.log" />
-    </target>
-
-    <target name="test-imaker-defaultconfig-custom-args">
-        <hlm:emakeEngine id="imaker.ec">
-            <arg value="--autodepends=1" />
-        </hlm:emakeEngine>
-        <hlm:imaker epocroot="${epocroot}" 
-            output="${epocroot.temp}/output.log"
-            engineRefId="imaker.ec"
-            verbose="true">
-            <hlm:imakerconfiguration>
-                <makefileset>
-                    <include name="**/product/*ui.mk" />
-                </makefileset>
-                <targetset>
-                    <include name="core" />
-                    <include name="langpack_\d+" />
-                </targetset>
-            </hlm:imakerconfiguration>
-        </hlm:imaker>
-        <au:assertLogContains text="--autodepends=1" />
-        <au:assertFileExists file="${epocroot.temp}/output.log" />
-    </target>
-
-    <target name="test-imaker-defaultconfig-with-cust-missing-template">
-        <hlm:emakeEngine id="imaker.ec" template="missing.mk.ftl">
-            <arg value="--autodepends=1" />
-        </hlm:emakeEngine>
-        <au:expectfailure message="Could not find template file:">
-            <hlm:imaker epocroot="${epocroot}" 
-            	output="${epocroot.temp}/output.log"
-                engineRefId="imaker.ec"
-                verbose="true">
-                <hlm:imakerconfiguration>
-                    <makefileset>
-                        <include name="**/product/*ui.mk" />
-                    </makefileset>
-                    <targetset>
-                        <include name="core" />
-                        <include name="langpack_\d+" />
-                    </targetset>
-                </hlm:imakerconfiguration>
-            </hlm:imaker>
-        </au:expectfailure>
-        <au:assertFileDoesntExist file="${epocroot.temp}/output.log" />
-    </target>
-
-    <target name="test-imaker-defaultconfig-with-cust-invalid-template">
-        <hlm:emakeEngine id="imaker.ec" template="../emake_data/invalid.mk.ftl">
-            <arg value="--autodepends=1" />
-        </hlm:emakeEngine>
-        <au:expectfailure message="Error while rendering the makefile template:">
-            <hlm:imaker epocroot="${epocroot}" 
-                output="${epocroot.temp}/output.log"
-                engineRefId="imaker.ec"
-                verbose="true">
-                <hlm:imakerconfiguration>
-                    <makefileset>
-                        <include name="**/product/*ui.mk" />
-                    </makefileset>
-                    <targetset>
-                        <include name="core" />
-                        <include name="langpack_\d+" />
-                    </targetset>
-                </hlm:imakerconfiguration>
-            </hlm:imaker>
-        </au:expectfailure>
-        <au:assertLogContains text="invalid.mk.ftl" />
-        <au:assertFileDoesntExist file="${epocroot.temp}/output.log" />
-    </target>
-
-    <target name="test-imaker-defaultconfig-with-cust-template">
-        <hlm:emakeEngine id="imaker.ec" template="../emake_data/cust.mk.ftl">
-            <arg value="--autodepends=1" />
-        </hlm:emakeEngine>
-        <hlm:imaker epocroot="${epocroot}" 
-            output="${epocroot.temp}/output.log"
-            engineRefId="imaker.ec"
-            verbose="true">
-            <hlm:imakerconfiguration>
-                <makefileset>
-                    <include name="**/product/*ui.mk" />
-                </makefileset>
-                <targetset>
-                    <include name="core" />
-                    <include name="langpack_\d+" />
-                </targetset>
-            </hlm:imakerconfiguration>
-        </hlm:imaker>
-        <au:assertLogContains text="Loading template:" />
-        <au:assertLogContains text="cust.mk.ftl" />
-        <au:assertFileExists file="${epocroot.temp}/output.log" />
-    </target>
-
-</project>
--- a/buildframework/helium/external/helium-antlib/imaker/tests/antunit/test_imaker.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,280 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : test_imaker.ant.xml 
-Part of     : Helium AntLib
-
-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="helium-antlib-imaker-unittest" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
-    <description>Helium Antlib imaker unittests.</description>
-
-    <taskdef resource="com/nokia/helium/imaker/ant/antlib.xml" uri="http://www.nokia.com/helium"/>
-    <property name="epocroot" location="${basedir}/../epocroot_task" />
-    <property name="epocroot.temp" location="${epocroot}/temp" />
-
-    <!-- is called prior to the test -->
-    <target name="setUp">
-        <echo>-------------------------------------------------------------------------------</echo>
-        <delete dir="${epocroot.temp}" failonerror="false" />
-        <delete dir="${epocroot}/epoc32" failonerror="false" />
-        <mkdir dir="${epocroot.temp}" />
-    </target>
-
-    <!-- is called after the test, even if that caused an error -->
-    <target name="tearDown">
-        <delete dir="${epocroot.temp}" failonerror="false" />
-        <delete dir="${epocroot}/epoc32" failonerror="false" />
-        <echo>-------------------------------------------------------------------------------</echo>
-    </target>
-
-    <target name="test-imaker-noargs-noconfig">
-        <echo>Will fail because it can't find imaker.</echo>
-        <au:expectfailure>
-            <hlm:imaker />
-        </au:expectfailure>
-    </target>
-
-    <target name="test-imaker-epocroot">
-        <echo>Usin custom epocroot.</echo>
-        <hlm:imaker epocroot="${epocroot}" />
-    </target>
-
-    <target name="test-imaker-noargs">
-        <hlm:imaker epocroot="${epocroot}" output="${epocroot.temp}/output.log"/>
-        <au:assertFileDoesntExist file="${epocroot.temp}/output.log" />
-    </target>
-
-    <target name="test-imaker-empty-imakerconfigurationset">
-        <hlm:imaker epocroot="${epocroot}" output="${epocroot.temp}/output.log">
-            <hlm:imakerconfigurationset>
-            </hlm:imakerconfigurationset>
-        </hlm:imaker>
-        <au:assertFileDoesntExist file="${epocroot.temp}/output.log" />
-        <au:assertLogContains text="Nothing to build." />
-    </target>
-
-    <target name="test-imaker-empty-imakerconfiguration-accepted">
-        <hlm:imaker epocroot="${epocroot}" output="${epocroot.temp}/output.log">
-            <hlm:imakerconfiguration>
-            </hlm:imakerconfiguration>
-        </hlm:imaker>
-        <au:assertFileDoesntExist file="${epocroot.temp}/output.log" />
-        <au:assertLogContains text="Nothing to build." />
-    </target>
-
-    <target name="test-imaker-empty-imakerconfiguration">
-        <hlm:imaker epocroot="${epocroot}" output="${epocroot.temp}/output.log">
-            <hlm:imakerconfigurationset>
-                <hlm:imakerconfiguration>
-                </hlm:imakerconfiguration>
-            </hlm:imakerconfigurationset>
-        </hlm:imaker>
-        <au:assertFileDoesntExist file="${epocroot.temp}/output.log" />
-        <au:assertLogContains text="Nothing to build." />
-    </target>
-
-    <target name="test-imaker-imakerconfiguration-makefileset">
-        <hlm:imaker epocroot="${epocroot}" output="${epocroot.temp}/output.log">
-            <hlm:imakerconfigurationset>
-                <hlm:imakerconfiguration>
-                    <makefileset>
-                        <include name="**/product/*ui.mk" />
-                    </makefileset>
-                </hlm:imakerconfiguration>
-            </hlm:imakerconfigurationset>
-        </hlm:imaker>
-        <au:assertFileDoesntExist file="${epocroot.temp}/output.log" />
-        <au:assertLogContains text="Nothing to build." />
-    </target>
-    
-    <target name="test-imaker-imakerconfiguration-targetset">
-        <hlm:imaker epocroot="${epocroot}" output="${epocroot.temp}/output.log">
-            <hlm:imakerconfigurationset>
-                <hlm:imakerconfiguration>
-                    <makefileset>
-                        <include name="**/product/*ui.mk" />
-                    </makefileset>
-                    <targetset>
-                        <include name="core" />
-                        <include name="langpack_\d+" />
-                    </targetset>
-                </hlm:imakerconfiguration>
-            </hlm:imakerconfigurationset>
-        </hlm:imaker>
-        <au:assertFileExists file="${epocroot.temp}/output.log" />
-    </target>
-
-    <target name="test-imaker-imakerconfiguration-variableset">
-        <au:expectfailure message="The variable element doesn't define a 'name' attribute.">
-            <hlm:imaker epocroot="${epocroot}" output="${epocroot.temp}/output.log">
-                <hlm:imakerconfigurationset>
-                    <hlm:imakerconfiguration>
-                        <makefileset>
-                            <include name="**/product/*ui.mk" />
-                        </makefileset>
-                        <targetset>
-                            <include name="core" />
-                            <include name="langpack_\d+" />
-                        </targetset>
-                        <variableset>
-                            <variable />
-                        </variableset>
-                    </hlm:imakerconfiguration>
-                </hlm:imakerconfigurationset>
-            </hlm:imaker>
-        </au:expectfailure>
-        <au:assertFileDoesntExist file="${epocroot.temp}/output.log" />
-    </target>
-
-    <target name="test-imaker-imakerconfiguration-variablegroup">
-        <hlm:imaker epocroot="${epocroot}" output="${epocroot.temp}/output.log">
-            <hlm:imakerconfigurationset>
-                <hlm:imakerconfiguration>
-                    <makefileset>
-                        <include name="**/product/*ui.mk" />
-                    </makefileset>
-                    <targetset>
-                        <include name="core" />
-                        <include name="langpack_\d+" />
-                    </targetset>
-                    <variablegroup>
-                        <variable name="TYPE" value="rnd" />
-                    </variablegroup>
-                    <variablegroup>
-                        <variable name="TYPE" value="prd" />
-                    </variablegroup>
-                </hlm:imakerconfiguration>
-            </hlm:imakerconfigurationset>
-        </hlm:imaker>
-        <au:assertFileExists file="${epocroot.temp}/output.log" />
-    </target>
-
-    <target name="test-imaker-imakerconfiguration-variablegroup-refid">
-        <hlm:imakerconfigurationset id="config">
-            <hlm:imakerconfiguration>
-                <makefileset>
-                    <include name="**/product/*ui.mk" />
-                </makefileset>
-                <targetset>
-                    <include name="core" />
-                    <include name="langpack_\d+" />
-                </targetset>
-                <variablegroup>
-                    <variable name="TYPE" value="rnd" />
-                </variablegroup>
-                <variablegroup>
-                    <variable name="TYPE" value="prd" />
-                </variablegroup>
-            </hlm:imakerconfiguration>
-        </hlm:imakerconfigurationset>
-        <hlm:imaker epocroot="${epocroot}" output="${epocroot.temp}/output.log">
-            <hlm:imakerconfigurationset refid="config"/>
-        </hlm:imaker>
-        <au:assertFileExists file="${epocroot.temp}/output.log" />
-        <au:assertLogDoesntContain text="Nothing to build" />
-    </target>
-
-    <target name="test-imaker-imakerconfiguration-variablegroup-refid-subconfig">
-        <hlm:imakerconfiguration id="subconfig">
-            <makefileset>
-                <include name="**/product/*ui.mk" />
-            </makefileset>
-            <targetset>
-                <include name="core" />
-                <include name="langpack_\d+" />
-            </targetset>
-            <variablegroup>
-                <variable name="TYPE" value="rnd" />
-            </variablegroup>
-            <variablegroup>
-                <variable name="TYPE" value="prd" />
-            </variablegroup>
-        </hlm:imakerconfiguration>
-        <hlm:imakerconfigurationset id="config">
-            <hlm:imakerconfiguration refid="subconfig" />
-        </hlm:imakerconfigurationset>
-        <hlm:imaker epocroot="${epocroot}" output="${epocroot.temp}/output.log">
-            <hlm:imakerconfigurationset refid="config"/>
-        </hlm:imaker>
-        <au:assertFileExists file="${epocroot.temp}/output.log" />
-        <au:assertLogDoesntContain text="Nothing to build" />
-    </target>
-
-    <target name="test-imaker-imakerconfiguration-variablegroup-product">
-        <hlm:imaker epocroot="${epocroot}" output="${epocroot.temp}/output.log">
-            <hlm:imakerconfiguration>
-                <hlm:product list="product" ui="true" />
-                <targetset>
-                    <include name="core" />
-                    <include name="langpack_\d+" />
-                </targetset>
-                <variablegroup>
-                    <variable name="TYPE" value="rnd" />
-                </variablegroup>
-                <variablegroup>
-                    <variable name="TYPE" value="prd" />
-                </variablegroup>
-            </hlm:imakerconfiguration>
-        </hlm:imaker>
-        <au:assertFileExists file="${epocroot.temp}/output.log" />
-        <au:assertLogDoesntContain text="Nothing to build" />
-    </target>
-
-    <target name="test-imaker-imakerconfiguration-variablegroup-product-invalid">
-        <au:expectfailure message="Could not find a valid configuration for product_invalid">
-            <hlm:imaker epocroot="${epocroot}" output="${epocroot.temp}/output.log">
-                <hlm:imakerconfiguration>
-                    <hlm:product list="product_invalid" ui="true" />
-                    <targetset>
-                        <include name="core" />
-                        <include name="langpack_\d+" />
-                    </targetset>
-                    <variablegroup>
-                        <variable name="TYPE" value="rnd" />
-                    </variablegroup>
-                    <variablegroup>
-                        <variable name="TYPE" value="prd" />
-                    </variablegroup>
-                </hlm:imakerconfiguration>
-            </hlm:imaker>
-        </au:expectfailure>
-        <au:assertFileDoesntExist file="${epocroot.temp}/output.log" />
-    </target>
-
-    <target name="test-imaker-imakerconfiguration-variablegroup-product-invalid-notfail">
-        <hlm:imaker epocroot="${epocroot}" output="${epocroot.temp}/output.log">
-            <hlm:imakerconfiguration>
-                <hlm:product list="product_invalid" ui="true" failonerror="false" />
-                <targetset>
-                    <include name="core" />
-                    <include name="langpack_\d+" />
-                </targetset>
-                <variablegroup>
-                    <variable name="TYPE" value="rnd" />
-                </variablegroup>
-                <variablegroup>
-                    <variable name="TYPE" value="prd" />
-                </variablegroup>
-            </hlm:imakerconfiguration>
-        </hlm:imaker>
-        <au:assertFileDoesntExist file="${epocroot.temp}/output.log" />
-        <au:assertLogContains text="Could not find a valid configuration for product_invalid" />
-        <au:assertLogContains text="Nothing to build." />
-    </target>
-
-</project>
--- a/buildframework/helium/external/helium-antlib/imaker/tests/antunit/test_imaker_invalid.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : test_imaker_invalid.ant.xml 
-Part of     : Helium AntLib
-
-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="helium-antlib-imaker-invalid-unittest" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
-    <description>Helium Antlib imaker unittests.</description>
-
-    <taskdef resource="com/nokia/helium/imaker/ant/antlib.xml" uri="http://www.nokia.com/helium"/>
-    <property name="epocroot" location="${basedir}/../epocroot_invalid" />
-    <property name="epocroot.temp" location="${epocroot}/temp" />
-
-    <!-- is called prior to the test -->
-    <target name="setUp">
-        <echo>-------------------------------------------------------------------------------</echo>
-        <delete dir="${epocroot.temp}" failonerror="false" />
-        <delete dir="${epocroot}/epoc32" failonerror="false" />
-        <mkdir dir="${epocroot.temp}" />
-    </target>
-
-    <!-- is called after the test, even if that caused an error -->
-    <target name="tearDown">
-        <delete dir="${epocroot.temp}" failonerror="false" />
-        <delete dir="${epocroot}/epoc32" failonerror="false" />
-        <echo>-------------------------------------------------------------------------------</echo>
-    </target>
-
-    <target name="test-imaker-imakerconfiguration-targetset">
-        <au:expectfailure message="(return code: 1)">
-            <hlm:imaker epocroot="${epocroot}" output="${epocroot.temp}/output.log">
-                <hlm:imakerconfigurationset>
-                    <hlm:imakerconfiguration>
-                        <makefileset>
-                            <include name="**/product/*ui.mk" />
-                        </makefileset>
-                        <targetset>
-                            <include name="core" />
-                            <include name="langpack_\d+" />
-                        </targetset>
-                    </hlm:imakerconfiguration>
-                </hlm:imakerconfigurationset>
-            </hlm:imaker>
-        </au:expectfailure>
-        <au:assertFileDoesntExist file="${epocroot.temp}/output.log" />
-    </target>
-
-    <target name="test-imaker-imakerconfiguration-targetset-failonerror-false">
-        <hlm:imaker epocroot="${epocroot}" output="${epocroot.temp}/output.log" failonerror="false">
-            <hlm:imakerconfigurationset>
-                <hlm:imakerconfiguration>
-                    <makefileset>
-                        <include name="**/product/*ui.mk" />
-                    </makefileset>
-                    <targetset>
-                        <include name="core" />
-                        <include name="langpack_\d+" />
-                    </targetset>
-                </hlm:imakerconfiguration>
-            </hlm:imakerconfigurationset>
-        </hlm:imaker>
-        <au:assertLogContains text="*** No rule to make target" />
-        <au:assertFileDoesntExist file="${epocroot.temp}/output.log" />
-    </target>
-
-</project>
--- a/buildframework/helium/external/helium-antlib/imaker/tests/antunit/test_javaengine.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : test_javaengine.ant.xml 
-Part of     : Helium AntLib
-
-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="helium-antlib-imaker-javaengine-unittest" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
-    <description>Helium Antlib imaker unittests.</description>
-
-    <taskdef resource="com/nokia/helium/imaker/ant/antlib.xml" uri="http://www.nokia.com/helium"/>
-    <property name="epocroot" location="${basedir}/../epocroot_task" />
-    <property name="epocroot.temp" location="${epocroot}/temp" />
-
-    <!-- is called prior to the test -->
-    <target name="setUp">
-        <echo>-------------------------------------------------------------------------------</echo>
-        <delete dir="${epocroot.temp}" failonerror="false" />
-        <delete dir="${epocroot}/epoc32" failonerror="false" />
-        <mkdir dir="${epocroot.temp}" />
-    </target>
-
-    <!-- is called after the test, even if that caused an error -->
-    <target name="tearDown">
-        <delete dir="${epocroot.temp}" failonerror="false" />
-        <delete dir="${epocroot}/epoc32" failonerror="false" />
-        <echo>-------------------------------------------------------------------------------</echo>
-    </target>
-
-    <target name="test-imaker-defaultconfig">
-        <hlm:defaultEngine id="imaker.default" threads="1"/>
-        <hlm:imaker epocroot="${epocroot}" 
-            output="${epocroot.temp}/output.log"
-            engineRefId="imaker.default">
-            <hlm:imakerconfiguration>
-                <makefileset>
-                    <include name="**/product/*ui.mk" />
-                </makefileset>
-                <targetset>
-                    <include name="core" />
-                    <include name="langpack_\d+" />
-                </targetset>
-            </hlm:imakerconfiguration>
-        </hlm:imaker>
-        <au:assertFileExists file="${epocroot.temp}/output.log" />
-    </target>
-
-</project>
--- a/buildframework/helium/external/helium-antlib/imaker/tests/bld.sh	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-#!/bin/csh
-
-#
-# 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: 
-#
-
-
-
-module load java/1.6.0
-module load mercurial
-export PATH=$PATH:.
-setenv ANT_ARGS "-lib ../lib -lib ../../lib -lib ../../core/lib -lib ../../bin/helium-core.jar -lib ../../bin/helium-imaker.jar -lib ../../antlibs"
-ant $*
--- a/buildframework/helium/external/helium-antlib/imaker/tests/build.bat	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-@echo off
-
-rem
-rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-rem All rights reserved.
-rem This component and the accompanying materials are made available
-rem under the terms of the License "Eclipse Public License v1.0"
-rem which accompanies this distribution, and is available
-rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
-rem
-rem Initial Contributors:
-rem Nokia Corporation - initial contribution.
-rem
-rem Contributors:
-rem
-rem Description: 
-rem
-
-setlocal
-if not defined JAVA_6_HOME (
-set TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
-) ELSE  set TESTED_JAVA=%JAVA_6_HOME%
-if exist %TESTED_JAVA% (set JAVA_HOME=%TESTED_JAVA%)
-set ANT_ARGS=-lib %CD%\..\lib -lib %CD%\..\..\lib -lib %CD%\..\..\bin\helium-core.jar -lib %CD%\..\..\bin\helium-imaker.jar -lib %CD%\..\..\antlibs
-ant %*
-endlocal
-
--- a/buildframework/helium/external/helium-antlib/imaker/tests/build.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : build.xml 
-Part of     : Helium AntLib
-
-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="helium-antlib-unittest" xmlns:au="antlib:org.apache.ant.antunit">
-    <description>Helium Antlib Sysdef unittests.</description>
-
-    
-    <import file="../../test-macros.ant.xml" />
-
-    <target name="unittest" depends="unittest-imaker" />
-
-    <target name="unittest-imaker">
-        <antunitModule name="imaker" />
-    </target>
-
-</project>
--- a/buildframework/helium/external/helium-antlib/imaker/tests/emake_data/cust.mk.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-<#--
-============================================================================ 
-Name        : cust.mk.ftl 
-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:
-
-============================================================================
--->
-java_home:${java_home}
-java_utils_classpath:${java_utils_classpath}
-makefile:${makefile}
-<#list cmdSets as cmds>
-Group:
-    <#list cmds as cmd>
-    + <#list cmd.getArguments() as arg>${arg} </#list>${cmd.getTarget()}
-    </#list>
-</#list>
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/imaker/tests/emake_data/invalid.mk.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-<#--
-============================================================================ 
-Name        : invalid.mk.ftl 
-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:
-
-============================================================================
--->
-java_home:${java_home}
-java_utils_classpath:${java_utils_classpath}
-makefile:${makefile}
-<#list cmdSets as cmds>
-Group:
-    <#list cmds as cmd>
-    + <#list cmd.getArguments() as arg>${arg} </#list>${cmd.getTarget()}
-    </#list>
-<#-- The next line is meant to be invalid! -->
-</list>
--- a/buildframework/helium/external/helium-antlib/imaker/tests/epocroot/imaker	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +0,0 @@
-#!/bin/sh
-#
-# 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: 
-#
-
-python imaker_mock.p $*
--- a/buildframework/helium/external/helium-antlib/imaker/tests/epocroot/imaker.bat	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +0,0 @@
-@echo off
-
-rem
-rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-rem All rights reserved.
-rem This component and the accompanying materials are made available
-rem under the terms of the License "Eclipse Public License v1.0"
-rem which accompanies this distribution, and is available
-rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
-rem
-rem Initial Contributors:
-rem Nokia Corporation - initial contribution.
-rem
-rem Contributors:
-rem
-rem Description: 
-rem
-
-@python imaker_mock.py %*
--- a/buildframework/helium/external/helium-antlib/imaker/tests/epocroot/imaker_mock.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
-#============================================================================ 
-#Name        : imaler_mock.py 
-#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:
-#===============================================================================
-
-import sys
-print "iMaker 09.24.01, 10-Jun-2009."
-
-if sys.argv.count("version"):
-    print ""
-    sys.exit(0)
-
-if sys.argv.count("help-target-*-list") and sys.argv.count("/epoc32/rom/config/platform/product/image_conf_invalid.mk"):
-    print """mingw_make: /epoc32/rom/config/platform/product/image_conf_invalid.mk: No such file or directory
-mingw_make: *** No rule to make target `/epoc32/rom/config/platform/product/image_conf_invalid.mk'.  Stop.
-*** Error: Command `\epoc32\tools\rom\imaker\mingw_make.exe -R --no-print-directory SHELL="C:\WINNT\system32\cmd.exe" -I
- B:/epoc32/rom/config -f B:/epoc32/tools/rom/imaker/imaker.mk TIMESTAMP=2009102317302243    -f /epoc32/rom/config/platform/
-product/image_conf_invalid.mk  -f B:/epoc32/tools/rom/imaker/imaker.mk help-target-*-list' failed in `/'.
-"""
-    sys.exit(1)
-
-if sys.argv.count("help-config"):
-    print "Finding available configuration file(s):"
-    print "/epoc32/rom/config/platform/product/image_conf_product.mk"
-    print "/epoc32/rom/config/platform/product/image_conf_product_ui.mk"
-    print ""
-    sys.exit(0)
-
-if sys.argv.count("help-target-*-list"):
-    # start with some kind of warnings...
-    print "B:/epoc32/tools/rom/imaker/imaker_help.mk:55: memory_map_settings2.hrh: No such file or directory"
-    print "all"
-    print "core"
-    print "core-dir"
-    print "help-%-list"
-    print "langpack_01"
-    print ""
-    sys.exit(0)
-
-if sys.argv.count("-f") and sys.argv.count("print-VARIABLE"):
-    print "VARIABLE = `PRODUCT_VALUE'"
-    print ""
-    sys.exit(0)
-
-if sys.argv.count("print-VARIABLE"):
-    print "VARIABLE = `VALUE'"
-    print ""
-    sys.exit(0)
-
-if sys.argv.count("print-NOTEXISTSVARIABLE"):
-    print ""
-    sys.exit(0)
-
-print ""
-sys.exit(0)
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/imaker/tests/epocroot_invalid/imaker	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +0,0 @@
-#!/bin/sh
-#
-# 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: 
-#
-
-python imaker_mock.p $*
--- a/buildframework/helium/external/helium-antlib/imaker/tests/epocroot_invalid/imaker.bat	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +0,0 @@
-@echo off
-
-rem
-rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-rem All rights reserved.
-rem This component and the accompanying materials are made available
-rem under the terms of the License "Eclipse Public License v1.0"
-rem which accompanies this distribution, and is available
-rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
-rem
-rem Initial Contributors:
-rem Nokia Corporation - initial contribution.
-rem
-rem Contributors:
-rem
-rem Description: 
-rem
-
-@python imaker_mock.py %*
--- a/buildframework/helium/external/helium-antlib/imaker/tests/epocroot_invalid/imaker_mock.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-#============================================================================ 
-#Name        : imaler_mock.py 
-#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:
-#===============================================================================
-
-import sys
-print "iMaker 09.24.01, 10-Jun-2009."
-sys.stderr.write("""mingw_make: /epoc32/rom/config/platform/product/image_conf_invalid.mk: No such file or directory
-mingw_make: *** No rule to make target `/epoc32/rom/config/platform/product/image_conf_invalid.mk'.  Stop.
-*** Error: Command `\epoc32\tools\rom\imaker\mingw_make.exe -R --no-print-directory SHELL="C:\WINNT\system32\cmd.exe" -I
- B:/epoc32/rom/config -f B:/epoc32/tools/rom/imaker/imaker.mk TIMESTAMP=2009102317302243    -f /epoc32/rom/config/platform/
-product/image_conf_invalid.mk  -f B:/epoc32/tools/rom/imaker/imaker.mk help-target-*-list' failed in `/'.
-""")
-sys.exit(1)
--- a/buildframework/helium/external/helium-antlib/imaker/tests/epocroot_task/emake	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +0,0 @@
-#!/bin/sh
-#
-# 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: 
-#
-
-echo $*
--- a/buildframework/helium/external/helium-antlib/imaker/tests/epocroot_task/emake.cmd	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,21 +0,0 @@
-@echo off
-
-rem
-rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-rem All rights reserved.
-rem This component and the accompanying materials are made available
-rem under the terms of the License "Eclipse Public License v1.0"
-rem which accompanies this distribution, and is available
-rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
-rem
-rem Initial Contributors:
-rem Nokia Corporation - initial contribution.
-rem
-rem Contributors:
-rem
-rem Description: 
-rem
-
-echo %*
-
-
--- a/buildframework/helium/external/helium-antlib/imaker/tests/epocroot_task/imaker	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +0,0 @@
-#!/bin/sh
-#
-# 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: 
-#
-
-python imaker_mock.p $*
--- a/buildframework/helium/external/helium-antlib/imaker/tests/epocroot_task/imaker.bat	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +0,0 @@
-@echo off
-
-rem
-rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-rem All rights reserved.
-rem This component and the accompanying materials are made available
-rem under the terms of the License "Eclipse Public License v1.0"
-rem which accompanies this distribution, and is available
-rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
-rem
-rem Initial Contributors:
-rem Nokia Corporation - initial contribution.
-rem
-rem Contributors:
-rem
-rem Description: 
-rem
-
-@python imaker_mock.py %*
--- a/buildframework/helium/external/helium-antlib/imaker/tests/epocroot_task/imaker_mock.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,167 +0,0 @@
-#============================================================================ 
-#Name        : imaler_mock.py 
-#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:
-#===============================================================================
-
-import sys
-print "iMaker 09.24.01, 10-Jun-2009."
-
-if sys.argv.count("version"):
-    print ""
-    sys.exit(0)
-
-# two product supported by the mock
-if sys.argv.count("help-config"):
-    print "Finding available configuration file(s):"
-    print "/epoc32/rom/config/platform/product/image_conf_product.mk"
-    print "/epoc32/rom/config/platform/product/image_conf_product_ui.mk"
-    print ""
-    sys.exit(0)
-
-# List of targets
-if sys.argv.count("help-target-*-list"):
-    # start with some kind of warnings...
-    print "all"
-    print "core"
-    print "core-dir"
-    print "help-%-list"
-    print "langpack_01"
-    print ""
-    sys.exit(0)
-
-
-
-
-def print_log(log):
-    for line in log:
-        print line
-
-
-core_log = ["iMaker 09.42.01, 13-Oct-2009.", 
-"Generating content with ConE",
-"* Writing tmp2.oby - result of substitution phase",
-"* Writing tmp3.oby - result of reorganisation phase",
-"* Writing tmp4.oby - result of Plugin stage",
-"* Writing tmp5.oby - result of choosing language-specific files",
-"* Writing tmp7.oby - result of problem-suppression phase",
-"* Writing tmp8.oby - result of bitmap conversion phase",
-"* Removing previous image and logs...",
-"* Writing tmp9.oby - result of cleaning phase",
-"* Writing NAME_VERSION04_rnd.oby - final OBY file",
-"* Writing NAME_VERSION04_rnd.rom.oby - final OBY file",
-"* Writing NAME_VERSION04_rnd.dir - ROM directory listing",
-"-------------------------------------------------------------------------------",
-"Total duration: 01:42  Status: OK",
-"===============================================================================",
-]
-
-if sys.argv.count("core"):
-    print_log(core_log)
-    print ""
-    sys.exit(0)
-
-rof2_log = ["iMaker 09.42.01, 13-Oct-2009.", 
-"Generating content with ConE",
-"Variant target             USE_VARIANTBLD = `2'",
-"Variant directory          VARIANT_DIR    = `/output/release_flash_images/product/rnd/langpack/langpack_01/rofs2/temp/cone'",
-"Variant config makefile    VARIANT_MK     = `/output/release_flash_images/product/rnd/langpack/langpack_01/rofs2/temp/cone/language_variant.mk'",
-"Variant include directory  VARIANT_INCDIR = `/output/release_flash_images/product/rnd/langpack/langpack_01/rofs2/temp/cone/include'",
-"Variant SIS directory      VARIANT_SISDIR = -",
-"Variant operator cache dir VARIANT_OPCDIR = -",
-"Variant widget preinst dir VARIANT_WGZDIR = -",
-"Variant zip content dir    VARIANT_ZIPDIR = -",
-"Variant copy content dir   VARIANT_CPDIR  = `/output/release_flash_images/product/rnd/langpack/langpack_01/rofs2/temp/cone/content'",
-"Variant output directory   VARIANT_OUTDIR = `/output/release_flash_images/product/rnd/langpack/langpack_01/rofs2/variant'",
-"Generating oby(s) for Variant image creation",
-"Copying copy content directory",
-"Generating Feature manager file(s)",
-"Generating file(s) for ROFS2 image creation",
-"Generating language files for Language Package image creation",
-"Creating ROFS2 SOS image",
-"",
-"ROM_IMAGE[0] non-xip size=0x00000000 xip=0 compress=0 extension=0 composite=none uncompress=0", 
-"ROM_IMAGE[1] dummy1 size=0x10000000 xip=0 compress=0 extension=0 composite=none uncompress=0 ",
-"ROM_IMAGE[2] rofs2 size=0x10000000 xip=0 compress=0 extension=0 composite=none uncompress=0 ",
-"ROM_IMAGE[3] dummy3 size=0x10000000 xip=0 compress=0 extension=0 composite=none uncompress=0 ",
-"* Writing tmp2.oby - result of substitution phase",
-"* Writing tmp3.oby - result of reorganisation phase",
-"* Writing tmp4.oby - result of Plugin stage",
-"* Writing tmp5.oby - result of choosing language-specific files",
-"Created ecom-2-0.spi",
-"Created ecom-2-1.s06",
-"Created ecom-2-2.s15",
-"Created ecom-2-3.s07",
-"Created ecom-2-4.s08",
-"Created ecom-2-5.s09",
-"Created ecom-2-6.s01",
-"* Writing tmp6.oby - result of SPI stage",
-"override.pm: ------------------------------------------------------------------",
-"Handling overrides...Replace ROM_IMAGE[2] `data=\epoc32\data\Z\Resource\bootdata\languages.txt   resource\Bootdata\languages.txt' with `data=I:/output/release_flash_images/product/rnd/langpack/langpack_01/rofs2/NAME_VERSION04_rnd_rofs2_languages.txt  resource\Bootdata\languages.txt'",
-"Replace ROM_IMAGE[2] `data=\epoc32\data\Z\Resource\versions\lang.txt        resource\versions\lang.txt' with `data=I:/output/release_flash_images/product/rnd/langpack/langpack_01/rofs2/NAME_VERSION04_rnd_rofs2_lang.txt  resource\versions\lang.txt'",
-"Replace ROM_IMAGE[2] `data=\epoc32\data\Z\Resource\versions\langsw.txt        resource\versions\langsw.txt' with `data=I:/output/release_flash_images/product/rnd/langpack/langpack_01/rofs2/NAME_VERSION04_rnd_rofs2_langsw.txt  resource\versions\langsw.txt'",
-"override.pm: Duration: 1 seconds ----------------------------------------------",
-"obyparse.pm: ------------------------------------------------------------------",
-"Finding include hierarchy from tmp1.oby",
-"Found 730 different include files",
-"Finding SPI input files from tmp5.oby",
-"Found 103 SPI input files",
-"Reading UDEB files from /epoc32/rombuild/mytraces.txt",
-"Found 0 entries",
-"Finding ROM-patched components",
-"Found 0 ROM-patched components",
-"obyparse.pm: Duration: 2 seconds ----------------------------------------------",
-"* Writing tmp7.oby - result of problem-suppression phase",
-"* Writing tmp8.oby - result of bitmap conversion phase",
-"* Removing previous image and logs...",
-"* Writing tmp9.oby - result of cleaning phase",
-"* Writing NAME_VERSION04_rnd.oby - final OBY file",
-"* Writing NAME_VERSION04_rnd.rofs2.oby - final OBY file",
-"* Writing NAME_VERSION04_rnd.dir - ROM directory listing",
-"* Executing rofsbuild -slog -loglevel1     NAME_VERSION04_rnd.rofs2.oby",
-"The number of processors (4) is used as the number of concurrent jobs.",
-"",
-"ROFSBUILD - Rofs/Datadrive image builder V2.6.3",
-"Copyright (c) 1996-2009 Nokia Corporation.",
-"",
-"WARNING: Unknown keyword 'OM_IMAGE[0]'.  Line 31 ignored",
-"WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 2464 ignored",
-"WARNING: Unknown keyword 'OM_IMAGE[0]'.  Line 31 ignored",
-"WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 2464 ignored",
-"* rofsbuild failed",
-"",
-"*** Error: (S:ROFS2,C:1,B:1,K:0,V:1): Command `buildrom -loglevel1 -v -nosymbols -DFEATUREVARIANT=product -fm=/epoc32/include/s60regionalfeatures.xml -es60ibymacros -elocalise -oNAME_VERSION04_rnd.img I:/output/release_flash_images/product/rnd/langpack/langpack_01/rofs2/NAME_VERSION04_rnd_rofs2_master.oby' failed (1) in `/output/release_flash_images/product/rnd/langpack/langpack_01/rofs2'.",
-"===============================================================================",
-"Target: langpack_01  Duration: 01:40  Status: FAILED",
-"ConE output dir = `/output/release_flash_images/product/rnd/langpack/langpack_01/rofs2/temp/cone'",
-"ConE log file   = `/output/release_flash_images/product/rnd/langpack/langpack_01/rofs2/NAME_VERSION04_rnd_cone_langpack_01.log'",
-"ROFS2 dir       = `/output/release_flash_images/product/rnd/langpack/langpack_01/rofs2'",
-"ROFS2 symbols   = `/output/release_flash_images/product/rnd/langpack/langpack_01/rofs2/NAME_VERSION04_rnd.rofs2.symbol'",
-"ROFS2 flash     = `/output/release_flash_images/product/rnd/langpack/langpack_01/NAME_VERSION04_rnd.rofs2.fpsx'",
-"-------------------------------------------------------------------------------",
-"Total duration: 01:42  Status: FAILED",
-"===============================================================================",
-]
-
-if sys.argv.count("langpack_01"):
-    print_log(rof2_log)
-    sys.stderr.write("*** Error: (S:ROFS2,C:1,B:1,K:0,V:1): Command `buildrom -loglevel1 -v -nosymbols -DFEATUREVARIANT=product -fm=/epoc32/include/s60regionalfeatures.xml -es60ibymacros -elocalise -oNAME_VERSION04_rnd.img /output/release_flash_images/product/rnd/langpack/langpack_01/rofs2/NAME_VERSION04_rnd_rofs2_master.oby' failed (1) in `/output/release_flash_images/product/rnd/langpack/langpack_01/rofs2'.\n")
-    print ""
-    sys.exit(1)
-
-
-print ""
-sys.exit(0)
--- a/buildframework/helium/external/helium-antlib/imaker/tests/parallelexecutor_data/linux.txt	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-ls -l
-ls -l
--- a/buildframework/helium/external/helium-antlib/imaker/tests/parallelexecutor_data/windows.txt	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-cmd /c dir
-cmd /c dir
--- a/buildframework/helium/external/helium-antlib/imaker/tests/src/com/nokia/helium/imaker/tests/TestHelpConfigStreamConsumer.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-package com.nokia.helium.imaker.tests;
-
-import java.io.File;
-
-import org.junit.*;
-
-import com.nokia.helium.imaker.HelpConfigStreamConsumer;
-
-import static org.junit.Assert.*;
-
-/**
- * Test the HelpTargetStreamConsumer.
- *
- */
-public class TestHelpConfigStreamConsumer {
-
-    /**
-     * Checking if the consumer is parsing correctly the output. 
-     */
-    @Test
-    public void introspectConfiguration() {
-        HelpConfigStreamConsumer consumer = new HelpConfigStreamConsumer();
-        consumer.consumeLine("iMaker 09.24.01, 10-Jun-2009.");
-        consumer.consumeLine("Finding available configuration file(s):");
-        consumer.consumeLine("/epoc32/rom/config/platform/product/image_conf_product.mk");
-        consumer.consumeLine("/epoc32/rom/config/platform/product/image_conf_product_ui.mk");
-        consumer.consumeLine("");
-        
-        // Verifying string output
-        String[] expected = new String[2];
-        expected[0] = "/epoc32/rom/config/platform/product/image_conf_product.mk";
-        expected[1] = "/epoc32/rom/config/platform/product/image_conf_product_ui.mk";
-        assertArrayEquals(expected, consumer.getConfigurations().toArray(new String[2]));
-
-        // Verifying the file output
-        File[] expectedFile = new File[2];
-        expectedFile[0] = new File(new File("."), "/epoc32/rom/config/platform/product/image_conf_product.mk");
-        expectedFile[1] = new File(new File("."), "/epoc32/rom/config/platform/product/image_conf_product_ui.mk");
-        assertArrayEquals(expectedFile, consumer.getConfigurations(new File(".")).toArray(new File[2]));
-    }
-}
-
--- a/buildframework/helium/external/helium-antlib/imaker/tests/src/com/nokia/helium/imaker/tests/TestIMaker.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,141 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-package com.nokia.helium.imaker.tests;
-
-import static org.junit.Assert.*;
-
-import java.io.File;
-import java.util.List;
-
-import org.junit.Test;
-
-import com.nokia.helium.imaker.IMaker;
-import com.nokia.helium.imaker.IMakerException;
-
-/**
- * Testing IMaker class.
- */
-public class TestIMaker {
-
-    private File epocroot = new File(System.getProperty("testdir"), "tests/epocroot");
-
-    /**
-     * Test the getVersion is retrieving the output from imaker correctly.
-     * @throws IMakerException
-     */
-    @Test
-    public void testGetVersion() throws IMakerException {
-        String expectedVersion = "iMaker 09.24.01, 10-Jun-2009.";
-        IMaker imaker = new IMaker(epocroot);
-        assertEquals(expectedVersion, imaker.getVersion());
-    }
-
-    /**
-     * Test the introspection of an existing variable.
-     * @throws IMakerException
-     */
-    @Test
-    public void testGetVariable() throws IMakerException {
-        IMaker imaker = new IMaker(epocroot);
-        assertEquals("VALUE", imaker.getVariable("VARIABLE"));
-    }
-    
-    /**
-     * Test the introspection of an existing variable.
-     * @throws IMakerException
-     */
-    @Test
-    public void testGetVariableFromConfiguration() throws IMakerException {
-        IMaker imaker = new IMaker(epocroot);
-        assertEquals("PRODUCT_VALUE", imaker.getVariable("VARIABLE", new File("/epoc32/rom/config/platform/product/image_conf_product.mk")));
-    }
-
-    /**
-     * Test the introspection of a non-existing variable.
-     * @throws IMakerException
-     */
-    @Test
-    public void testGetNotExistingVariable() throws IMakerException {
-        IMaker imaker = new IMaker(epocroot);
-        assertEquals(null, imaker.getVariable("NOTEXISTINGVARIABLE"));
-    }
-    
-    /**
-     * Test the introspection of existing configurations.
-     * @throws IMakerException
-     */
-    @Test
-    public void testGetConfigurations() throws IMakerException {
-        IMaker imaker = new IMaker(epocroot);
-        String[] expected = new String[2];
-        expected[0] = "/epoc32/rom/config/platform/product/image_conf_product.mk";
-        expected[1] = "/epoc32/rom/config/platform/product/image_conf_product_ui.mk";
-        assertArrayEquals(expected, imaker.getConfigurations().toArray(new String[2]));
-    }
-    
-    /**
-     * Test the introspection of existing target for a configuration.
-     * @throws IMakerException
-     */
-    @Test
-    public void testGetTargets() throws IMakerException {
-        IMaker imaker = new IMaker(epocroot);
-        List<String> targets = imaker.getTargets("/epoc32/rom/config/platform/product/image_conf_product.mk");
-        
-        String[] expected = new String[5];
-        expected[0] = "all";
-        expected[1] = "core";
-        expected[2] = "core-dir";
-        expected[3] = "help-%-list";
-        expected[4] = "langpack_01";
-        assertArrayEquals(expected, targets.toArray(new String[5]));
-    }
-
-    /**
-     * Test the introspection of existing target for a configuration using file
-     * object.
-     * @throws IMakerException
-     */
-    @Test
-    public void testGetTargetsFromFile() throws IMakerException {
-        IMaker imaker = new IMaker(epocroot);
-        List<String> targets = imaker.getTargets(new File("/epoc32/rom/config/platform/product/image_conf_product.mk"));
-        
-        String[] expected = new String[5];
-        expected[0] = "all";
-        expected[1] = "core";
-        expected[2] = "core-dir";
-        expected[3] = "help-%-list";
-        expected[4] = "langpack_01";
-        assertArrayEquals(expected, targets.toArray(new String[5]));
-    }
-    
-    /**
-     * Test the introspection of existing target for a configuration.
-     * @throws IMakerException
-     */
-    @Test
-    public void testGetTargetsWithInvalidProductConf() throws IMakerException {
-        IMaker imaker = new IMaker(epocroot);
-        try {
-            imaker.getTargets("/epoc32/rom/config/platform/product/image_conf_invalid.mk");
-            fail("We should catch a failure from iMaker.");
-        } catch(IMakerException e) {
-            // Exception should be raised
-        }
-    }
-}
--- a/buildframework/helium/external/helium-antlib/imaker/tests/src/com/nokia/helium/imaker/tests/TestParallelExecutor.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-package com.nokia.helium.imaker.tests;
-
-import java.io.File;
-import org.junit.Test;
-import com.nokia.helium.imaker.utils.ParallelExecutor;
-
-/**
- * Basic testing of the ParallelExecutor
- *
- */
-public class TestParallelExecutor {
-	private File testdir = new File(System.getProperty("testdir"));
-	
-	/**
-	 * Nothing should happen.
-	 */
-	@Test
-	public void executionWithNoArgs() {
-		String args[] = new String[0];
-		ParallelExecutor.main(args);
-	}
-
-	/**
-	 * Will list current directory content twice.
-	 */
-	@Test
-	public void executionWithTextFile() {
-		String args[] = new String[1];
-        if (System.getProperty("os.name").toLowerCase().startsWith("win")) {
-        	args[0] = new File(testdir, "tests/parallelexecutor_data/windows.txt").getAbsolutePath();
-        } else {
-        	args[0] = new File(testdir, "tests/parallelexecutor_data/linux.txt").getAbsolutePath();
-        }
-		ParallelExecutor.main(args);
-	}
-
-}
--- a/buildframework/helium/external/helium-antlib/imaker/tests/src/com/nokia/helium/imaker/tests/TestPrintVarStreamConsumer.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-package com.nokia.helium.imaker.tests;
-
-import org.junit.*;
-
-import com.nokia.helium.imaker.PrintVarSteamConsumer;
-
-import static org.junit.Assert.*;
-
-public class TestPrintVarStreamConsumer {
-
-    @Test
-    public void readSimpleVar() {
-        PrintVarSteamConsumer consumer = new PrintVarSteamConsumer("WORKDIR");
-        consumer.consumeLine("iMaker 09.24.01, 10-Jun-2009.");
-        consumer.consumeLine("WORKDIR = `/.'");
-        consumer.consumeLine("");
-        assertEquals(consumer.getValue(), "/.");
-    }
-
-    @Test
-    public void readMultilineVar() {
-        PrintVarSteamConsumer consumer = new PrintVarSteamConsumer("LONGVAR");
-        consumer.consumeLine("iMaker 09.24.01, 10-Jun-2009.");
-        consumer.consumeLine("LONGVAR = `some text");
-        consumer.consumeLine("second line");
-        consumer.consumeLine("end of text'");
-        consumer.consumeLine("");
-        assertEquals(consumer.getValue(), "some text\nsecond line\nend of text");
-    }
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antdata/build.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : build.xml 
+Part of     : Helium AntLib
+
+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="helium-antdata">
+    <description>Helium Antlib build file.</description>
+    
+    <!--<import file="../macros.ant.xml"/>-->
+    
+    <property name="builder.dir" location="../../builder"/>
+    <property name="sf.source.root.dir" location="../../" />
+    <import file="${builder.dir}/java/macros.ant.xml"/>
+    <property name="name" value="antdata"/>
+    
+    <!--<path id="helium.antdata.classpath">
+        <fileset dir="${helium.antlib.root.dir}/bin" includes="*.jar"/>
+        <fileset dir="${helium.antlib.root.dir}/antdata/lib" includes="*.jar"/>
+    </path>-->
+
+</project>
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antdata/db.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : build.xml 
+Part of     : Helium AntLib
+
+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="helium-antdata-check" default="database">
+    <description>Helium Antlib build file.</description>
+    
+    <!--<import file="../macros.ant.xml"/>-->
+    
+    <property name="name" value="antdata"/>
+    <property name="helium.antlib.root.dir" location="../../" />
+    
+    <path id="classpath">
+        <fileset dir="${helium.antlib.root.dir}/bin" includes="*.jar"/>
+        <fileset dir="${helium.antlib.root.dir}/build/helium-antdata/lib" includes="*.jar"/>
+    </path>
+    
+    <taskdef name="fmpp" classname="fmpp.tools.AntTask" classpathref="classpath" onerror="report"/>
+    <taskdef resource="com/nokia/helium/ant/data/antlib.xml" classpathref="classpath"/>
+    
+    <target name="database">
+        <database output="database.xml"/>
+    </target>
+
+</project>
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antdata/ivy.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+============================================================================ 
+Name        : ivy.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:
+
+============================================================================  
+-->
+<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
+    <info
+        organisation="com.nokia.helium"
+        module="helium-antdata"
+        status="integration">
+    </info>
+    <dependencies>
+        <dependency org="dom4j" name="dom4j" rev="latest.integration" conf="default" />
+        <dependency org="info.bliki" name="bliki" rev="latest.integration" conf="default" />
+        <dependency org="org.freemarker" name="freemarker" rev="latest.integration" conf="default" />
+        <dependency org="jaxen" name="jaxen" rev="latest.integration" conf="default" />
+    </dependencies>
+</ivy-module>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antdata/src/com/nokia/helium/ant/data/AntComment.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,198 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+
+package com.nokia.helium.ant.data;
+
+import java.io.IOException;
+import java.text.BreakIterator;
+import java.util.HashMap;
+import java.util.StringTokenizer;
+
+import org.apache.tools.ant.Project;
+import org.dom4j.Comment;
+import org.dom4j.Node;
+
+/**
+ * An XML comment about an Ant object, which could be a property, target,
+ * fileset, etc. It should preceed the object.
+ */
+public class AntComment {
+    private String summary = "";
+    private String parsedDocText = "";
+    private HashMap<String, String> tags;
+    private String objectName = "";
+    private boolean isMarkedComment;
+
+    public AntComment() throws IOException {
+        this(null);
+    }
+
+    public AntComment(Comment comment) throws IOException {
+        tags = new HashMap<String, String>();
+        if (comment != null) {
+            
+            String text = getCleanedDocNodeText(comment);
+
+            // See if it is a marked comment (a comment that is only
+            // intended to be for documentation generation)
+            if (text.startsWith("*")) {
+                text = text.substring(1).trim();
+                isMarkedComment = true;
+            }
+
+            // See if it is a comment describing an object not defined in Helium
+            // Currently only properties are supported
+            if (text.startsWith("@property")) {
+                String[] splitStrings = text.split("\\s", 3);
+                objectName = splitStrings[1];
+                if (objectName == null) {
+                    log("Comment block: object name is not defined.", Project.MSG_WARN);
+                    objectName = "";
+                }
+                if (splitStrings.length > 2) {
+                    text = splitStrings[2];
+                }
+                else {
+                    text = "";
+                }
+            }
+            parseCommentText(text);
+        }
+    }
+
+    private void parseCommentText(String text) throws IOException {
+        if (text.length() > 0) {
+            StringTokenizer tokenizer = new StringTokenizer(text, "@");
+
+            // Parse any free text before the tags
+            if (!text.startsWith("@")) {
+                String freeText = tokenizer.nextToken();
+
+                BreakIterator iterator = BreakIterator.getSentenceInstance();
+                iterator.setText(freeText);
+                if (iterator.next() > 0) {
+                    this.summary = freeText.substring(0, iterator.current()).trim();
+                }
+
+                parsedDocText = freeText;
+            }
+
+            // See if there are any tags to parse
+            if (tokenizer.countTokens() > 0) {
+                while (tokenizer.hasMoreElements()) {
+                    String tagText = (String) tokenizer.nextElement();
+                    String[] tagParts = tagText.split("\\s", 2);
+                    tags.put(tagParts[0], tagParts[1].trim());
+                }
+            }
+        }
+    }
+
+    /**
+     * The summary text of the comment, which is the first sentence.
+     * 
+     * @return The first comment sentence.
+     */
+    public String getSummary() {
+        return summary;
+    }
+
+    /**
+     * The full documentation text of the comment.
+     * 
+     * @return The doc text.
+     */
+    public String getDocumentation() {
+        return parsedDocText;
+
+    }
+
+    /**
+     * The value of a comment tag that is used to describe a specific attribute
+     * of the Ant object.
+     * 
+     * @param tag The tag name.
+     * @return The value of the tag.
+     */
+    public String getTagValue(String tag) {
+        return getTagValue(tag, "");
+    }
+
+    /**
+     * The value of a comment tag that is used to describe a specific attribute
+     * of the Ant object.
+     * 
+     * @param tag The tag name.
+     * @return The value of the tag.
+     */
+    public String getTagValue(String tag, String defaultValue) {
+        String value = (String) tags.get(tag);
+        if (value == null) {
+            value = defaultValue;
+        }
+        return value;
+    }
+
+    /**
+     * Returns the name of the object when the object is defined only by a
+     * comment.
+     * 
+     * @return An object name.
+     */
+    public String getObjectName() {
+        return objectName;
+    }
+
+    public boolean isMarkedComment() {
+        return isMarkedComment;
+    }
+
+    private void log(String string, int msgWarn) {
+        System.out.println(string);
+    }
+    
+    /**
+     * Clean the whitespace of the doc text.
+     * Trim the whole string and also remove a consistent indent from the start
+     * of each line.
+     */
+    static String getCleanedDocNodeText(Node docNode) {
+        Node preceedingWhitespaceNode = docNode.selectSingleNode("preceding-sibling::text()");
+        // System.out.println(whitespace);
+        int indent = 0;
+        if (preceedingWhitespaceNode != null) {
+            String text = preceedingWhitespaceNode.getText();
+            String[] lines = text.split("\n");
+            indent = lines[lines.length - 1].length();
+            // System.out.println("indent: " + lines[lines.length -
+            // 1].length());
+        }
+        
+        String text = docNode.getText();
+        text = text.trim();
+        
+        String[] docLines = text.split("\n");
+        // Do not remove from the first line, it is already trimmed.
+        text = docLines[0];
+        for (int i = 1; i < docLines.length; i++) {
+            String line = docLines[i].replaceFirst("^[ \t]{" + indent + "}", "");
+            text += line + "\n";
+        }
+        
+        return text;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antdata/src/com/nokia/helium/ant/data/AntFile.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,120 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+
+package com.nokia.helium.ant.data;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.tools.ant.Project;
+import org.dom4j.Document;
+import org.dom4j.DocumentException;
+import org.dom4j.Element;
+import org.dom4j.Node;
+import org.dom4j.io.SAXReader;
+
+/**
+ * An Ant build file. It could be a project file or an antlib file.
+ */
+public class AntFile {
+    private Database database;
+    private File path;
+    private Document doc;
+    private RootAntObjectMeta fileObjectMeta;
+    private Project rootProject;
+
+    public AntFile(Database database, String path) throws IOException {
+        this(database, path, Database.DEFAULT_SCOPE);
+    }
+
+    public AntFile(Database database, String path, String scope) throws IOException {
+        this.database = database;
+        this.path = new File(path);
+        SAXReader xmlReader = new SAXReader();
+        try {
+            doc = xmlReader.read(path);
+
+            Element node = doc.getRootElement();
+            if (node.getName().equals("project")) {
+                fileObjectMeta = new ProjectMeta(this, node);
+            }
+            else {
+                fileObjectMeta = new AntlibMeta(this, node);
+            }
+
+            fileObjectMeta.setScopeFilter(scope);
+            fileObjectMeta.setRuntimeProject(rootProject);
+        }
+        catch (DocumentException e) {
+            throw new IOException(e.getMessage());
+        }
+    }
+
+    public Project getProject() {
+        return rootProject;
+    }
+
+    public void setProject(Project project) {
+        this.rootProject = project;
+        fileObjectMeta.setRuntimeProject(rootProject);
+    }
+
+    public void setScope(String scope) {
+        fileObjectMeta.setScopeFilter(scope);
+    }
+
+    /**
+     * Get the meta object for the Ant project in this build file.
+     * 
+     * @return The project meta object.
+     * @throws DocumentException
+     */
+    public RootAntObjectMeta getRootObjectMeta() throws IOException {
+        return fileObjectMeta;
+    }
+
+    /**
+     * The File path of the Ant file.
+     * 
+     * @return Path.
+     */
+    public File getFile() {
+        return path;
+    }
+
+    public Database getDatabase() {
+        return database;
+    }
+
+    @SuppressWarnings("unchecked")
+    public List<AntFile> getAntlibs() throws IOException {
+        Element node = doc.getRootElement();
+        List<AntFile> antlibFiles = new ArrayList<AntFile>();
+        if (node.getName().equals("project")) {
+            List<Node> typedefs = node
+                    .selectNodes("//*[namespace-uri()='http://www.nokia.com/helium' and local-name()='typedef']");
+            for (Node typedefNode : typedefs) {
+                String filePath = ((Element) typedefNode).attributeValue("file");
+                filePath = getProject().replaceProperties(filePath);
+                antlibFiles.add(new AntFile(database, filePath));
+            }
+        }
+        return antlibFiles;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antdata/src/com/nokia/helium/ant/data/AntObjectMeta.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,292 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+
+package com.nokia.helium.ant.data;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.tools.ant.Project;
+import org.dom4j.Comment;
+import org.dom4j.Element;
+import org.dom4j.Node;
+
+/**
+ * Base class for all Ant Meta objects. Each Ant object is represented by a meta
+ * object that provides core and additional data about it.
+ */
+public class AntObjectMeta {
+
+    public static final Map<String, Integer> SCOPES = new HashMap<String, Integer>() {
+        {
+            put("public", new Integer(1));
+            put("protected", new Integer(2));
+            put("private", new Integer(3));
+        }
+    };
+    /** The default scope if an element does not have a defined scope. */
+    public static final String DEFAULT_SCOPE = "public";
+
+    private static AntComment emptyComment;
+
+    private Project rootProject;
+
+    /** The parent meta object. */
+    private AntObjectMeta parent;
+    /** The dom4j XML Element of the Ant object represented by this meta object. */
+    private Node node;
+    /** The AntComment of any preceeding comment block. */
+    private AntComment comment = emptyComment;
+
+    static {
+        try {
+            emptyComment = new AntComment();
+        }
+        catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * Constructor.
+     * 
+     * @param parent The parent meta object.
+     * @param node The XML node of the Ant object.
+     * @throws IOException
+     */
+    public AntObjectMeta(AntObjectMeta parent, Node node) throws IOException {
+        this.parent = parent;
+        this.node = node;
+        processComment();
+    }
+
+    public Project getRuntimeProject() {
+        return rootProject;
+    }
+
+    public void setRuntimeProject(Project project) {
+        this.rootProject = project;
+    }
+
+    /**
+     * Gets an attribute if a value is available, otherwise returns an emtpy
+     * string.
+     * 
+     * @param name Attribute name.
+     * @return Attribute value.
+     */
+    protected String getAttr(String name) {
+        if (node.getNodeType() == Node.ELEMENT_NODE) {
+            String value = ((Element) node).attributeValue(name);
+            if (value != null) {
+                return value;
+            }
+        }
+        return "";
+    }
+
+    protected Node getNode() {
+        return node;
+    }
+
+    protected AntComment getEmptyComment() {
+        return emptyComment;
+    }
+
+    /**
+     * Returns the meta object of the top-level project for this Ant object.
+     */
+    public RootAntObjectMeta getRootMeta() {
+        if (parent instanceof RootAntObjectMeta) {
+            return (RootAntObjectMeta) parent;
+        }
+        return parent.getRootMeta();
+    }
+
+    /**
+     * Returns the Ant file this Ant object is contained in.
+     */
+    public AntFile getAntFile() {
+        return getRootMeta().getAntFile();
+    }
+
+    /**
+     * Returns the top-level database object.
+     */
+    public Database getDatabase() {
+        return getAntFile().getDatabase();
+    }
+
+    /**
+     * Returns the name of the object or an empty string.
+     * 
+     * @return Object name.
+     */
+    public String getName() {
+        String name = getAttr("name");
+        if (name.length() == 0) {
+            name = getComment().getObjectName();
+            if (name.length() == 0) {
+                try {
+                    System.out.println("name is 0 length: " + getLocation());
+                    // System.out.println(node.toString());
+                }
+                catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        return name;
+    }
+
+    /**
+     * Returns the location path of the object.
+     * 
+     * @return Location path string.
+     * @throws IOException
+     */
+    public String getLocation() throws IOException {
+        RootAntObjectMeta rootMeta = getRootMeta();
+        return rootMeta.getFile().getCanonicalPath();
+    }
+
+    /**
+     * Returns the first line summary from a doc comment.
+     * 
+     * @return The documentation text.
+     */
+    public String getSummary() {
+        return getComment().getSummary();
+    }
+
+    /**
+     * Returns the documentation block from a associated comment.
+     * 
+     * @return The documentation text.
+     */
+    public String getDocumentation() {
+        return getComment().getDocumentation();
+    }
+
+    /**
+     * Returns the scope of the object, or an empty string. This could be
+     * public, protected or private.
+     * 
+     * @return The object scope.
+     */
+    public String getScope() {
+        String scope = getComment().getTagValue("scope");
+        if (scope.equals("")) {
+            scope = DEFAULT_SCOPE;
+        }
+        return scope;
+    }
+
+    public boolean matchesScope(String scopeFilter) {
+        if (!SCOPES.containsKey(scopeFilter)) {
+            throw new IllegalArgumentException("Invalid scope filter: " + scopeFilter);
+        }
+        String scope = getScope();
+        if (!SCOPES.containsKey(scope)) {
+            log("Invalid scope: " + scope + ", " + toString(), Project.MSG_WARN);
+            return false;
+        }
+        return SCOPES.get(scope).compareTo(SCOPES.get(scopeFilter)) <= 0;
+    }
+
+    /**
+     * Returns the deprecated text if the object has been deprecated, or an
+     * empty string.
+     * 
+     * @return Deprecated descripion.
+     */
+    public String getDeprecated() {
+        return comment.getTagValue("deprecated");
+    }
+
+    /**
+     * Returns the source XML of the object.
+     * 
+     * @return The XML string.
+     */
+    public String getSource() {
+        // Add the raw XML content of the element
+        String sourceXml = node.asXML();
+        // Replace the CDATA end notation to avoid nested CDATA sections
+        sourceXml = sourceXml.replace("]]>", "] ]>");
+        return sourceXml;
+    }
+
+    /**
+     * Returns the AntComment that represents a preceeding comment.
+     * 
+     * @return An Ant comment.
+     */
+    protected AntComment getComment() {
+        return comment;
+    }
+
+    protected void setComment(AntComment comment) {
+        this.comment = comment;
+    }
+
+    private void processComment() throws IOException {
+        Comment commentNode = getCommentNode();
+        if (commentNode != null) {
+            comment = new AntComment(commentNode);
+        }
+    }
+
+    @SuppressWarnings("unchecked")
+    private Comment getCommentNode() {
+        Node commentNode = null;
+        if (node.getNodeType() == Node.COMMENT_NODE) {
+            commentNode = node;
+        }
+        else {
+            List<Node> children = node.selectNodes("preceding-sibling::node()");
+            if (children.size() > 0) {
+                // Scan past the text nodess, which are most likely whitespace
+                int index = children.size() - 1;
+                Node child = children.get(index);
+                while (index > 0 && child.getNodeType() == Node.TEXT_NODE) {
+                    index--;
+                    child = children.get(index);
+                }
+
+                // Check if there is a comment node
+                if (child.getNodeType() == Node.COMMENT_NODE) {
+                    commentNode = child;
+                    log("Node has comment: " + node.getStringValue(), Project.MSG_DEBUG);
+                }
+                else {
+                    log("Node has no comment: " + node.toString(), Project.MSG_WARN);
+                }
+            }
+        }
+        return (Comment)commentNode;
+    }
+
+    public void log(String text, int level) {
+        Project project = getRuntimeProject();
+        if (project != null) {
+            project.log(text, level);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antdata/src/com/nokia/helium/ant/data/AntlibMeta.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+
+package com.nokia.helium.ant.data;
+
+import java.io.IOException;
+import org.dom4j.DocumentException;
+import org.dom4j.Element;
+
+/**
+ * An Ant library root object.
+ */
+public class AntlibMeta extends RootAntObjectMeta {
+
+    public AntlibMeta(AntFile antFile, Element node) throws DocumentException, IOException {
+        super(antFile, node);
+
+        // Only parse a project comment if it is marked
+        if (!getComment().isMarkedComment()) {
+            setComment(getEmptyComment());
+        }
+    }
+
+    @Override
+    public String getName() {
+        return getFile().getName();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antdata/src/com/nokia/helium/ant/data/CommentMeta.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,35 @@
+/*
+ * 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: 
+ *
+ */
+
+package com.nokia.helium.ant.data;
+
+import java.io.IOException;
+
+import org.dom4j.Comment;
+
+/**
+ * Meta object for an XML comment that defines data about an Ant object.
+ */
+public class CommentMeta extends AntObjectMeta {
+
+    public CommentMeta(AntObjectMeta parent, Comment comment) throws IOException {
+        super(parent, comment);
+    }
+
+    public String getName() {
+        return getComment().getObjectName();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antdata/src/com/nokia/helium/ant/data/Database.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,280 @@
+/*
+ * 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: 
+ *
+ */
+
+package com.nokia.helium.ant.data;
+
+import freemarker.cache.ClassTemplateLoader;
+import freemarker.cache.FileTemplateLoader;
+import freemarker.cache.MultiTemplateLoader;
+import freemarker.cache.TemplateLoader;
+import freemarker.template.Configuration;
+import freemarker.template.DefaultObjectWrapper;
+import freemarker.template.Template;
+import freemarker.template.TemplateException;
+import java.io.File;
+import java.io.IOException;
+import java.io.Writer;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.Target;
+import org.dom4j.Document;
+import org.dom4j.DocumentException;
+import org.dom4j.DocumentHelper;
+import org.dom4j.Element;
+import org.dom4j.Node;
+import org.dom4j.XPath;
+import org.dom4j.io.SAXReader;
+
+import com.nokia.helium.freemarker.WikiMethod;
+
+/**
+ * Reads the current ant project and a fileset and generates a xml file with a
+ * summary of targets, macros and properties.
+ */
+public class Database {
+    /** The default scope filter if no scope filter is defined. */
+    public static final String DEFAULT_SCOPE = "public";
+
+    private Project rootProject;
+    private Map<String, AntFile> antfilesMap;
+    private Map<String, PackageMeta> packagesMap;
+    private String scopeFilter;
+
+    private HashMap<String, String> namespaceMap = new HashMap<String, String>();
+    private HashMap<String, List<String>> globalSignalList = new HashMap<String, List<String>>();
+    private Document signaldoc;
+
+    public Database(Project project) throws IOException {
+        this(project, DEFAULT_SCOPE);
+    }
+
+    @SuppressWarnings("unchecked")
+    public Database(Project project, String scopeFilter) throws IOException {
+        this.rootProject = project;
+        this.scopeFilter = scopeFilter;
+        antfilesMap = new HashMap<String, AntFile>();
+        packagesMap = new HashMap<String, PackageMeta>();
+        namespaceMap.put("hlm", "http://www.nokia.com/helium");
+
+        if (project != null) {
+            Map<String, Target> targets = project.getTargets();
+            Iterator<Target> targetsIter = targets.values().iterator();
+
+            while (targetsIter.hasNext()) {
+                Target target = targetsIter.next();
+                String antFilePath = new File(target.getLocation().getFileName()).getCanonicalPath();
+
+                if (!antfilesMap.containsKey(antFilePath)) {
+                    addAntFile(antFilePath);
+                }
+            }
+        }
+
+        Collection<AntFile> antFiles = getAntFiles();
+        Iterator<AntFile> antFilesIter = antFiles.iterator();
+        while (antFilesIter.hasNext()) {
+            AntFile antFile = (AntFile) antFilesIter.next();
+            readSignals(antFile.getFile().getCanonicalPath());
+        }
+    }
+
+    private void log(String string, int level) {
+        if (rootProject != null) {
+            rootProject.log(string, level);
+        }
+    }
+
+    public void addAntFilePaths(List<String> antFilePaths) throws IOException {
+        for (String antFilePath : antFilePaths) {
+            addAntFile(antFilePath);
+        }
+    }
+
+    private void addAntFile(String antFilePath) throws IOException {
+        if (!antfilesMap.containsKey(antFilePath)) {
+            log("Adding project to database: " + antFilePath, Project.MSG_DEBUG);
+            AntFile antfile = new AntFile(this, antFilePath, scopeFilter);
+            antfile.setProject(rootProject);
+            antfilesMap.put(antFilePath, antfile);
+
+            // See if project is part of a package
+            checkPackageMembership(antfile);
+            readSignals(antFilePath);
+
+            // See if any antlibs are defined
+            List<AntFile> antlibFiles = antfile.getAntlibs();
+            for (AntFile antFile2 : antlibFiles) {
+                antfilesMap.put(antFile2.getFile().getCanonicalPath(), antFile2);
+                checkPackageMembership(antFile2);
+            }
+        }
+    }
+
+    private void checkPackageMembership(AntFile antfile) throws IOException {
+        RootAntObjectMeta rootObjectMeta = antfile.getRootObjectMeta();
+        String packageStr = rootObjectMeta.getPackage();
+        if (!packagesMap.containsKey(packageStr)) {
+            PackageMeta packageMeta = new PackageMeta(packageStr);
+            packageMeta.setRuntimeProject(rootProject);
+            packagesMap.put(packageStr, packageMeta);
+        }
+        PackageMeta packageMeta = packagesMap.get(packageStr);
+        packageMeta.addObject(rootObjectMeta);
+    }
+
+    @SuppressWarnings("unchecked")
+    private void readSignals(String antFile) throws IOException {
+        SAXReader xmlReader = new SAXReader();
+        Document antDoc;
+        try {
+            antDoc = xmlReader.read(new File(antFile));
+        }
+        catch (DocumentException e) {
+            throw new IOException(e.getMessage());
+        }
+
+        XPath xpath = DocumentHelper.createXPath("//hlm:signalListenerConfig");
+        xpath.setNamespaceURIs(namespaceMap);
+        List<Node> signalNodes = xpath.selectNodes(antDoc);
+        for (Iterator<Node> iterator = signalNodes.iterator(); iterator.hasNext();) {
+            signaldoc = antDoc;
+            Element propertyNode = (Element) iterator.next();
+            String signalid = propertyNode.attributeValue("id");
+            String signaltarget = propertyNode.attributeValue("target");
+            List<String> existinglist = globalSignalList.get(signaltarget); 
+            String failbuild = findSignalFailMode(signalid, signaldoc);
+            if (existinglist == null) {
+                existinglist = new ArrayList<String>();
+            }
+            existinglist.add(signalid + "," + failbuild);
+            globalSignalList.put(signaltarget, existinglist);
+        }
+    }
+
+    public List<String> getSignals(String target) {
+        return globalSignalList.get(target);
+    }
+
+    @SuppressWarnings("unchecked")
+    private String findSignalFailMode(String signalid, Document antDoc) {
+        XPath xpath2 = DocumentHelper.createXPath("//hlm:signalListenerConfig[@id='" + signalid
+                + "']/signalNotifierInput/signalInput");
+        xpath2.setNamespaceURIs(namespaceMap);
+        List signalNodes3 = xpath2.selectNodes(antDoc);
+
+        for (Iterator iterator3 = signalNodes3.iterator(); iterator3.hasNext();) {
+            Element propertyNode3 = (Element) iterator3.next();
+            String signalinputid = propertyNode3.attributeValue("refid");
+
+            XPath xpath3 = DocumentHelper.createXPath("//hlm:signalInput[@id='" + signalinputid + "']");
+            xpath3.setNamespaceURIs(namespaceMap);
+            List signalNodes4 = xpath3.selectNodes(antDoc);
+            for (Iterator iterator4 = signalNodes4.iterator(); iterator4.hasNext();) {
+                Element propertyNode4 = (Element) iterator4.next();
+                return propertyNode4.attributeValue("failbuild");
+            }
+        }
+        return null;
+    }
+
+    public void setScopeFilter(String scopeFilter) {
+        if (!(scopeFilter.equals("public") || scopeFilter.equals("protected") || scopeFilter.equals("private"))) {
+            throw new IllegalArgumentException("Invalid scope value");
+        }
+        this.scopeFilter = scopeFilter;
+    }
+
+    public void toXML(Writer out) throws IOException {
+        // Setup configuration
+        Configuration cfg = new Configuration();
+        TemplateLoader[] loaders = null;
+        ClassTemplateLoader ctl = new ClassTemplateLoader(getClass(), "");
+        File testingDir = new File("src/com/nokia/helium/ant/data/taskdefs");
+        if (testingDir.exists()) {
+            FileTemplateLoader ftl1 = new FileTemplateLoader(testingDir);
+            loaders = new TemplateLoader[] { ftl1, ctl };
+        }
+        else {
+            loaders = new TemplateLoader[] { ctl };
+        }
+        MultiTemplateLoader mtl = new MultiTemplateLoader(loaders);
+        cfg.setTemplateLoader(mtl);
+        cfg.setObjectWrapper(new DefaultObjectWrapper());
+
+        // Create the data model
+        List<ProjectMeta> projects = new ArrayList<ProjectMeta>();
+        List<AntlibMeta> antlibs = new ArrayList<AntlibMeta>();
+        for (AntFile antfile : antfilesMap.values()) {
+            antfile.setScope(scopeFilter);
+            RootAntObjectMeta rootObject = antfile.getRootObjectMeta();
+            if (rootObject instanceof ProjectMeta) {
+                projects.add((ProjectMeta) rootObject);
+            }
+            else {
+                antlibs.add((AntlibMeta) rootObject);
+            }
+        }
+        // antfiles.addAll(antfilesMap.values());
+        Map<String, Object> root = new HashMap<String, Object>();
+        root.put("projects", projects);
+        root.put("antlibs", antlibs);
+        root.put("packages", getPackages());
+
+        // Add a custom wiki formatting method
+        WikiMethod wikiMethod = new WikiMethod();
+        root.put("wiki", wikiMethod);
+
+        // Process template
+        Template template = cfg.getTemplate("database.xml.ftl");
+        try {
+            template.process(root, out);
+        }
+        catch (TemplateException e) {
+            e.printStackTrace();
+            throw new IOException(e.getMessage());
+        }
+        out.flush();
+    }
+
+    public Collection<AntFile> getAntFiles() {
+        return antfilesMap.values();
+    }
+
+    public List<PropertyMeta> getProperties() throws IOException {
+        List<PropertyMeta> propertiesList = new ArrayList<PropertyMeta>();
+        for (AntFile antfile : antfilesMap.values()) {
+            RootAntObjectMeta rootMeta = antfile.getRootObjectMeta();
+            if (rootMeta instanceof ProjectMeta) {
+                propertiesList.addAll(((ProjectMeta) rootMeta).getProperties());
+            }
+        }
+        return propertiesList;
+    }
+
+    public List<PackageMeta> getPackages() throws IOException {
+        List<PackageMeta> packages = new ArrayList<PackageMeta>();
+        for (PackageMeta packageMeta : packagesMap.values()) {
+            packages.add(packageMeta);
+        }
+        return packages;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antdata/src/com/nokia/helium/ant/data/MacroMeta.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,70 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+
+package com.nokia.helium.ant.data;
+
+import java.io.IOException;
+import java.util.List;
+
+import org.dom4j.Element;
+import org.dom4j.Node;
+
+/**
+ * An Ant macro.
+ */
+public class MacroMeta extends TaskContainerMeta {
+
+    public MacroMeta(AntObjectMeta parent, Element objNode) throws IOException {
+        super(parent, objNode);
+    }
+
+    public String getDescription() {
+        return getAttr("description");
+    }
+
+    @SuppressWarnings("unchecked")
+    public String getUsage() {
+        String macroName = getName();
+        List<Node> statements = getNode().selectNodes(
+                "//scriptdef[@name='" + macroName + "']/attribute | //macrodef[@name='" + macroName + "']/attribute");
+        String usage = "";
+        for (Node statement : statements) {
+            String defaultval = statement.valueOf("@default");
+            if (defaultval.equals("")) {
+                defaultval = "value";
+            }
+            else {
+                defaultval = "<i>" + defaultval + "</i>";
+            }
+            usage = usage + statement.valueOf("@name") + "=\"" + defaultval + "\"" + " ";
+        }
+
+        String macroElements = "";
+        statements = getNode().selectNodes(
+                "//scriptdef[@name='" + macroName + "']/element | //macrodef[@name='" + macroName + "']/element");
+        for (Node statement : statements) {
+            macroElements = "&lt;" + statement.valueOf("@name") + "/&gt;\n" + macroElements;
+        }
+
+        if (macroElements.equals("")) {
+            return "&lt;hlm:" + macroName + " " + usage + "/&gt;";
+        }
+        else {
+            return "&lt;hlm:" + macroName + " " + usage + "&gt;\n" + macroElements + "&lt;/hlm:" + macroName + "&gt;";
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antdata/src/com/nokia/helium/ant/data/PackageMeta.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,85 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+
+package com.nokia.helium.ant.data;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.tools.ant.Project;
+
+/**
+ * A package is a collection of related Ant projects.
+ */
+public class PackageMeta {
+    private Project rootProject;
+    private String name;
+    private String summary = "";
+    private ArrayList<RootAntObjectMeta> objects = new ArrayList<RootAntObjectMeta>();
+
+    public PackageMeta(String name) {
+        this.name = name;
+    }
+
+    public Project getRuntimeProject() {
+        return rootProject;
+    }
+
+    public void setRuntimeProject(Project project) {
+        this.rootProject = project;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getSummary() {
+        return summary;
+    }
+
+    public String getDocumentation() {
+        return summary;
+    }
+
+    public void addObject(RootAntObjectMeta rootAntObjectMeta) {
+        objects.add(rootAntObjectMeta);
+    }
+
+    public List<ProjectMeta> getProjects() {
+        List<ProjectMeta> projects = new ArrayList<ProjectMeta>();
+        for (RootAntObjectMeta objectMeta : objects) {
+            if (objectMeta instanceof ProjectMeta) {
+                projects.add((ProjectMeta) objectMeta);
+            }
+        }
+        return projects;
+    }
+
+    public List<AntlibMeta> getAntlibs() {
+        List<AntlibMeta> antlibs = new ArrayList<AntlibMeta>();
+        for (RootAntObjectMeta objectMeta : objects) {
+            if (objectMeta instanceof AntlibMeta) {
+                antlibs.add((AntlibMeta) objectMeta);
+            }
+        }
+        return antlibs;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antdata/src/com/nokia/helium/ant/data/ProjectMeta.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,166 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+
+package com.nokia.helium.ant.data;
+
+import java.io.File;
+import java.io.IOException;
+import java.text.BreakIterator;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.dom4j.Comment;
+import org.dom4j.DocumentException;
+import org.dom4j.Element;
+import org.dom4j.Node;
+
+/**
+ * Meta object for an Ant project.
+ */
+public class ProjectMeta extends RootAntObjectMeta {
+    private static final String DOC_COMMENT_MARKER = "*";
+
+    private String description = "";
+
+    public ProjectMeta(AntFile antFile, Element node) throws DocumentException, IOException {
+        super(antFile, node);
+
+        // Only parse a project comment if it is marked
+        if (!getComment().isMarkedComment()) {
+            setComment(getEmptyComment());
+        }
+
+        Element descriptionNode = ((Element) getNode()).element("description");
+        // System.out.println(descriptionNode);
+        if (descriptionNode != null) {
+            description = AntComment.getCleanedDocNodeText(descriptionNode);
+        }
+    }
+
+    public File getFile() {
+        return this.getAntFile().getFile();
+    }
+
+    public String getDefault() {
+        return getAttr("default");
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public String getPackage() {
+        return getComment().getTagValue("package", DEFAULT_PACKAGE);
+    }
+
+    public String getSummary() {
+        String text = getDescription();
+        if (text.length() == 0) {
+            text = getDocumentation();
+        }
+        BreakIterator iterator = BreakIterator.getSentenceInstance();
+        // BreakIterator iterator = BreakIterator.getLineInstance();
+        iterator.setText(text);
+        String summary = "";
+        if (iterator.next() > 0) {
+            summary = text.substring(0, iterator.current()).trim();
+        }
+        return summary;
+    }
+
+    @SuppressWarnings("unchecked")
+    public List<TargetMeta> getTargets() throws IOException {
+        ArrayList<TargetMeta> objects = new ArrayList<TargetMeta>();
+        List<Node> nodes = getNode().selectNodes("target");
+        for (Node targetNode : nodes) {
+            TargetMeta targetMeta = new TargetMeta(this, targetNode);
+            targetMeta.setRuntimeProject(getRuntimeProject());
+            if (targetMeta.matchesScope(getScopeFilter())) {
+                objects.add(targetMeta);
+            }
+        }
+        return objects;
+    }
+
+    @SuppressWarnings("unchecked")
+    public List<PropertyMeta> getProperties() throws IOException {
+        List<PropertyMeta> properties = new ArrayList<PropertyMeta>();
+        List<Node> propertyNodes = getNode().selectNodes("//property");
+        for (Node propNode : propertyNodes) {
+            PropertyMeta propertyMeta = new PropertyMeta(this, propNode);
+            propertyMeta.setRuntimeProject(getRuntimeProject());
+            if (propertyMeta.matchesScope(getScopeFilter())) {
+                properties.add(propertyMeta);
+            }
+        }
+        return properties;
+    }
+
+    @SuppressWarnings("unchecked")
+    public List<MacroMeta> getMacros() throws IOException {
+        ArrayList<MacroMeta> objects = new ArrayList<MacroMeta>();
+        List<Element> nodes = getNode().selectNodes("//macrodef | //scriptdef");
+        for (Element node : nodes) {
+            MacroMeta macroMeta = new MacroMeta(this, node);
+            macroMeta.setRuntimeProject(getRuntimeProject());
+            if (macroMeta.matchesScope(getScopeFilter())) {
+                objects.add(macroMeta);
+            }
+        }
+        return objects;
+    }
+
+    @SuppressWarnings("unchecked")
+    public List<String> getProjectDependencies() {
+        ArrayList<String> objects = new ArrayList<String>();
+        List<Element> importNodes = getNode().selectNodes("//import");
+        for (Element node : importNodes) {
+            objects.add(node.attributeValue("file"));
+        }
+        return objects;
+    }
+
+    @SuppressWarnings("unchecked")
+    public List<String> getLibraryDependencies() {
+        ArrayList<String> objects = new ArrayList<String>();
+        List<Element> nodes = getNode().selectNodes("//typedef");
+        for (Element node : nodes) {
+            if (node.attributeValue("file") != null) {
+                objects.add(node.attributeValue("file"));
+            }
+            else if (node.attributeValue("resource") != null) {
+                objects.add(node.attributeValue("resource"));
+            }
+        }
+        return objects;
+    }
+
+    @SuppressWarnings("unchecked")
+    public List<PropertyCommentMeta> getPropertyCommentBlocks() throws IOException {
+        ArrayList<PropertyCommentMeta> objects = new ArrayList<PropertyCommentMeta>();
+        List<Node> nodes = getNode().selectNodes("//comment()");
+        for (Node node : nodes) {
+            String text = node.getText().trim();
+            if (text.startsWith(DOC_COMMENT_MARKER + " @property")) {
+                PropertyCommentMeta propertyCommentMeta = new PropertyCommentMeta(this, (Comment) node);
+                propertyCommentMeta.setRuntimeProject(getRuntimeProject());
+                objects.add(propertyCommentMeta);
+            }
+        }
+        return objects;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antdata/src/com/nokia/helium/ant/data/PropertyCommentMeta.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,62 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+
+package com.nokia.helium.ant.data;
+
+import java.io.IOException;
+
+import org.dom4j.Comment;
+
+/**
+ * Meta object for a property that is defined entirely by a comment.
+ */
+public class PropertyCommentMeta extends CommentMeta {
+
+    /**
+     * Constructor.
+     * 
+     * @param parent The parent meta object.
+     * @param propertyNode XML node representing the comment.
+     * @throws IOException
+     */
+    public PropertyCommentMeta(AntObjectMeta parent, Comment comment) throws IOException {
+        super(parent, comment);
+    }
+
+    /**
+     * Returns the property name as it is defined at the top of the comment
+     * block for that property.
+     */
+    public String getName() {
+        return getComment().getObjectName();
+    }
+
+    /**
+     * There is no default value for properties defined only by comments.
+     */
+    public String getDefaultValue() {
+        return "";
+    }
+
+    public String getType() {
+        return getComment().getTagValue("type", PropertyMeta.DEFAULT_TYPE);
+    }
+
+    public String getEditable() {
+        return getComment().getTagValue("editable", PropertyMeta.DEFAULT_EDITABLE);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antdata/src/com/nokia/helium/ant/data/PropertyMeta.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,98 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+
+package com.nokia.helium.ant.data;
+
+import java.io.IOException;
+
+import org.apache.tools.ant.Project;
+import org.dom4j.Element;
+import org.dom4j.Node;
+
+/**
+ * Meta object for an Ant property.
+ */
+public class PropertyMeta extends AntObjectMeta {
+    public static final String DEFAULT_EDITABLE = "optional";
+    public static final String STRING_TYPE = "string";
+    public static final String INTEGER_TYPE = "integer";
+    public static final String BOOLEAN_TYPE = "boolean";
+    public static final String DEFAULT_TYPE = STRING_TYPE;
+
+    public PropertyMeta(AntObjectMeta parent, Node propNode) throws IOException {
+        super(parent, propNode);
+    }
+
+    /**
+     * Returns the default value of the property.
+     * 
+     * @return A default value.
+     */
+    public String getDefaultValue() {
+        String value = getAttr("value");
+        if (value.length() == 0) {
+            value = getAttr("location");
+        }
+        return value;
+    }
+
+    public String getType() {
+        return getComment().getTagValue("type", PropertyMeta.DEFAULT_TYPE);
+    }
+
+    public String getEditable() {
+        return getComment().getTagValue("editable", PropertyMeta.DEFAULT_EDITABLE);
+    }
+
+    /**
+     * Attempts to get the actual value of this current property.
+     * 
+     * @return The property's current value.
+     */
+    public String getValue() {
+        String value = null;
+        Project project = getRuntimeProject();
+        if (project != null) {
+            value = project.getProperty(getName());
+        }
+        return value;
+    }
+
+    /**
+     * Handling of scope is overridden here to make properties declared at the
+     * project root to be public and those nested inside targets, etc to be
+     * private by default. This is only if there is no scope defined in the
+     * comment for the property.
+     */
+    @Override
+    public String getScope() {
+        String scope = getComment().getTagValue("scope");
+        if (scope.equals("")) {
+            Element parent = getNode().getParent();
+            if (parent.getName().equals("project")) {
+                scope = "public";
+            }
+            else {
+                scope = "private";
+                if (!getComment().getDocumentation().equals("")) {
+                    System.out.println(getName() + " no scope");
+                }
+            }
+        }
+        return scope;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antdata/src/com/nokia/helium/ant/data/RootAntObjectMeta.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,78 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+
+package com.nokia.helium.ant.data;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.dom4j.Element;
+
+/**
+ * Abstract meta object that represents the root objects found in Ant files.
+ */
+public class RootAntObjectMeta extends AntObjectMeta {
+    static final String DEFAULT_PACKAGE = "(default)";
+
+    private AntFile antFile;
+    private String scopeFilter;
+
+    public RootAntObjectMeta(AntFile antFile, Element node) throws IOException {
+        super(null, node);
+        this.antFile = antFile;
+    }
+
+    public String getPackage() {
+        return getComment().getTagValue("package", DEFAULT_PACKAGE);
+    }
+
+    public File getFile() {
+        return antFile.getFile();
+    }
+
+    public AntFile getAntFile() {
+        return antFile;
+    }
+
+    public void setScopeFilter(String scopeFilter) {
+        this.scopeFilter = scopeFilter;
+    }
+
+    public String getScopeFilter() {
+        return scopeFilter;
+    }
+
+    public RootAntObjectMeta getRootMeta() {
+        return this;
+    }
+
+    @SuppressWarnings("unchecked")
+    public List<MacroMeta> getMacros() throws IOException {
+        ArrayList<MacroMeta> objects = new ArrayList<MacroMeta>();
+        List<Element> nodes = getNode().selectNodes("//macrodef | //scriptdef");
+        for (Element node : nodes) {
+            MacroMeta macroMeta = new MacroMeta(this, node);
+            macroMeta.setRuntimeProject(getRuntimeProject());
+            if (macroMeta.matchesScope(scopeFilter)) {
+                objects.add(macroMeta);
+            }
+        }
+        return objects;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antdata/src/com/nokia/helium/ant/data/TargetMeta.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,168 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+
+package com.nokia.helium.ant.data;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.StringTokenizer;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.apache.tools.ant.Project;
+import org.dom4j.Attribute;
+import org.dom4j.CDATA;
+import org.dom4j.Element;
+import org.dom4j.Node;
+import org.dom4j.Text;
+import org.dom4j.Visitor;
+import org.dom4j.VisitorSupport;
+
+/**
+ * Meta object representing a target.
+ */
+public class TargetMeta extends TaskContainerMeta {
+
+    public TargetMeta(AntObjectMeta parent, Node node) throws IOException {
+        super(parent, node);
+        // callAntTargetVisitor();
+    }
+
+    public String getIf() {
+        return getAttr("if");
+    }
+
+    public String getUnless() {
+        return getAttr("unless");
+    }
+
+    public String getDescription() {
+        return getAttr("description");
+    }
+
+    /**
+     * Use the standard Ant description element if there is no summary in a
+     * comment.
+     */
+    public String getSummary() {
+        String summary = super.getSummary();
+        if (summary.length() == 0) {
+            summary = getDescription();
+        }
+        return summary;
+    }
+
+    public List<String> getDepends() {
+        String dependsAttr = getAttr("depends");
+        StringTokenizer st = new StringTokenizer(dependsAttr, ",");
+        List<String> depends = new ArrayList<String>();
+        while (st.hasMoreTokens()) {
+            depends.add(st.nextToken().trim());
+        }
+        return depends;
+    }
+
+    public List<String> getSignals() {
+        List<String> signals = super.getSignals();
+        List<String> additionalSignals = getDatabase().getSignals(getName());
+        if (additionalSignals != null) {
+            signals.addAll(additionalSignals);
+        }
+        return signals;
+    }
+
+    public List<String> getPropertyDependencies() {
+        ArrayList<String> properties = new ArrayList<String>();
+        Visitor visitor = new AntPropertyVisitor(properties);
+        getNode().accept(visitor);
+        return properties;
+    }
+
+    private class AntPropertyVisitor extends VisitorSupport {
+        private List<String> propertyList;
+
+        public AntPropertyVisitor(List<String> propertyList) {
+            this.propertyList = propertyList;
+        }
+
+        public void visit(Attribute node) {
+            String text = node.getStringValue();
+            extractUsedProperties(text);
+        }
+
+        public void visit(CDATA node) {
+            String text = node.getText();
+            extractUsedProperties(text);
+        }
+
+        public void visit(Text node) {
+            String text = node.getText();
+            extractUsedProperties(text);
+        }
+
+        public void visit(Element node) {
+            if (node.getName().equals("property")) {
+                String propertyName = node.attributeValue("name");
+                if (propertyName != null && !propertyList.contains(propertyName)) {
+                    propertyList.add(propertyName);
+                    // System.out.println("prop "+propertyName);
+                    log("property matches :" + propertyName, Project.MSG_DEBUG);
+                }
+            }
+        }
+
+        private void extractUsedProperties(String text) {
+            Pattern p1 = Pattern.compile("\\$\\{([^@$}]*)\\}");
+            Matcher m1 = p1.matcher(text);
+            log(text, Project.MSG_DEBUG);
+            while (m1.find()) {
+                String group = m1.group(1);
+                if (!propertyList.contains(group)) {
+                    propertyList.add(group);
+                    // System.out.println("m1 "+group + " "+ text);
+                }
+                log("property matches: " + group, Project.MSG_DEBUG);
+            }
+
+            Pattern p2 = Pattern.compile("\\$\\{([^\n]*\\})\\}");
+            Matcher m2 = p2.matcher(text);
+            log(text, Project.MSG_DEBUG);
+            while (m2.find()) {
+                String group = m2.group(1);
+                if (!propertyList.contains(group)) {
+                    propertyList.add(group);
+                    // System.out.println("m2 "+group + " "+ text);
+                }
+                log("property matches: " + group, Project.MSG_DEBUG);
+            }
+
+            Pattern p3 = Pattern.compile("\\$\\{(\\@\\{[^\n]*)\\}");
+            Matcher m3 = p3.matcher(text);
+            log(text, Project.MSG_DEBUG);
+            while (m3.find()) {
+                String group = m3.group(1);
+                if (!propertyList.contains(group)) {
+                    propertyList.add(group);
+                    // System.out.println("m3 "+group + " "+ text);
+                }
+                log("property matches: " + group, Project.MSG_DEBUG);
+            }
+        }
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antdata/src/com/nokia/helium/ant/data/TaskContainerMeta.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,143 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+package com.nokia.helium.ant.data;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.tools.ant.Project;
+import org.dom4j.Element;
+import org.dom4j.Node;
+import org.dom4j.Visitor;
+import org.dom4j.VisitorSupport;
+
+/**
+ * Meta data for Ant objects that can contain other tasks.
+ */
+public class TaskContainerMeta extends AntObjectMeta {
+    private ArrayList<String> antcallTargets;
+    private ArrayList<String> logs;
+    private ArrayList<String> signals;
+    private ArrayList<String> executables;
+
+    public TaskContainerMeta(AntObjectMeta parent, Node node) throws IOException {
+        super(parent, node);
+        callAntTargetVisitor();
+    }
+
+    public List<String> getExecTargets() {
+        return antcallTargets;
+    }
+
+    public List<String> getLogs() {
+        return logs;
+    }
+
+    public List<String> getSignals() {
+        return signals;
+    }
+
+    public List<String> getExecutables() {
+        return executables;
+    }
+
+    private void callAntTargetVisitor() throws IOException {
+        // Add antcall/runtarget dependencies
+        antcallTargets = new ArrayList<String>();
+        logs = new ArrayList<String>();
+        signals = new ArrayList<String>();
+        executables = new ArrayList<String>();
+
+        Visitor visitorTarget = new AntTargetVisitor(antcallTargets, logs, signals, executables);
+        getNode().accept(visitorTarget);
+    }
+
+    private class AntTargetVisitor extends VisitorSupport {
+        private List<String> targetList;
+        private List<String> logList;
+        private List<String> signalList;
+        private List<String> executableList;
+
+        public AntTargetVisitor(List<String> targetList, List<String> logList, List<String> signalList,
+                List<String> executableList) {
+            this.targetList = targetList;
+            this.logList = logList;
+            this.signalList = signalList;
+            this.executableList = executableList;
+        }
+
+        @Override
+        public void visit(Element node) {
+            String name = node.getName();
+            // System.out.println(name);
+            if (name.equals("antcall") || name.equals("runtarget")) {
+                String text = node.attributeValue("target");
+                targetList.add(text);
+            }
+
+            if (!name.equals("include") && !name.equals("exclude")) {
+                String text = node.attributeValue("name");
+                addLog(text);
+                text = node.attributeValue("output");
+                addLog(text);
+                text = node.attributeValue("value");
+                addLog(text);
+                text = node.attributeValue("log");
+                addLog(text);
+                text = node.attributeValue("line");
+                addLog(text);
+                text = node.attributeValue("file");
+                addLog(text);
+            }
+
+            if (name.endsWith("signal") || name.endsWith("execSignal")) {
+                // System.out.println(name);
+                String signalid = node.attributeValue("name"); // getProject().replaceProperties(node.attributeValue("name"));
+                // String failbuild = signalType(signalid, node.getDocument());
+
+                if (signalList != null) {
+                    // if (failbuild != null) {
+                    // signalList.add(signalid + "," + failbuild);
+                    // }
+                    // else {
+                    signalList.add(signalid);
+                    // }
+                }
+            }
+
+            if (name.equals("exec") || name.equals("preset.exec")) {
+                String text = node.attributeValue("executable");
+                executableList.add(text);
+                log("Executable: " + text, Project.MSG_DEBUG);
+            }
+        }
+
+        private void addLog(String text) {
+            if (text != null && logList != null) {
+                for (String log : text.split(" ")) {
+                    // TODO
+                    String fulllogname = log; // getProject().replaceProperties(log);
+                    if (!logList.contains(log) && (fulllogname.endsWith(".log") || fulllogname.endsWith(".html"))) {
+                        log = log.replace("--log=", "");
+                        logList.add(log);
+                    }
+                }
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antdata/src/com/nokia/helium/ant/data/TypeMeta.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+
+package com.nokia.helium.ant.data;
+
+import java.io.IOException;
+
+import org.dom4j.Element;
+
+/**
+ * An Ant type such as a fileset, resource collection, mapper, etc.
+ */
+public class TypeMeta extends AntObjectMeta {
+
+    public TypeMeta(AntObjectMeta parent, Element node) throws IOException {
+        super(parent, node);
+    }
+
+    public String getId() {
+        return getAttr("id");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antdata/src/com/nokia/helium/ant/data/antlib.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : antlib.xml 
+Part of     : Helium AntLib
+
+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:
+
+============================================================================
+-->
+<antlib>
+    <!-- Task definition -->
+    <taskdef name="database" classname="com.nokia.helium.ant.data.taskdefs.DatabaseTask" />
+    <taskdef name="antconfiglint" classname="com.nokia.helium.ant.data.taskdefs.AntConfigLintTask" />
+
+</antlib>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antdata/src/com/nokia/helium/ant/data/database.xml.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,175 @@
+<#--
+============================================================================ 
+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:
+
+============================================================================
+-->
+<#macro macroOutputMacro macro>
+        <macro>
+            <name>${macro.name}</name>
+            <description>${macro.description}</description>
+            <scope>${macro.scope}</scope>
+            <deprecated>${macro.deprecated}</deprecated>
+            <location>${macro.location}</location>
+            <summary><![CDATA[${macro.summary}]]></summary>
+            <documentation><![CDATA[${wiki(macro.documentation)}]]></documentation>
+            <usage><![CDATA[${macro.usage}]]></usage>
+            
+            <#list macro.signals as signal>
+            <signal>${signal}</signal>
+            </#list>
+            
+            <source><![CDATA[
+    ${macro.source}]]></source>
+        </macro>
+</#macro>
+
+<antDatabase>
+    <#list projects as project>
+    <project>
+        <name>${project.name}</name>
+        <default>${project.default}</default>
+        <description><![CDATA[${wiki(project.description)}]]></description>
+        <scope>${project.scope}</scope>
+        <deprecated>${project.deprecated}</deprecated>
+        <location>${project.location}</location>
+        <summary><![CDATA[${project.summary}]]></summary>
+        <documentation><![CDATA[${wiki(project.documentation)}]]></documentation>
+        
+        <#list project.projectDependencies as dependency>
+        <projectDependency>${dependency}</projectDependency>
+        </#list>
+        
+        <#list project.libraryDependencies as dependency>
+        <libraryDependency>${dependency}</libraryDependency>
+        </#list>
+        
+        <pythonDependency/>
+        
+        <#list project.targets as target>
+        <target>
+            <name>${target.name}</name>
+            <ifDependency>${target.if}</ifDependency>
+            <unlessDependency>${target.unless}</unlessDependency>
+            <description><![CDATA[${target.description}]]></description>
+            <scope>${target.scope}</scope>
+            <deprecated>${target.deprecated}</deprecated>
+            <location>${target.location}</location>
+            <summary><![CDATA[${target.summary}]]></summary>
+            <documentation><![CDATA[${wiki(target.documentation)}]]></documentation>
+            
+            <#list target.depends as dependency>
+            <dependency type="direct">${dependency}</dependency>
+            </#list>
+            
+            <#list target.execTargets as target>
+            <dependency type="exec">${target}</dependency>
+            </#list>
+            
+            <#list target.logs as log>
+            <log>${log}</log>
+            </#list>
+            
+            <#list target.signals as signal>
+            <signal>${signal}</signal>
+            </#list>
+            
+            <#list target.executables as executable>
+            <executable>${executable}</executable>
+            </#list>
+            
+            <#list target.propertyDependencies as propertyDep>
+            <propertyDependency>${propertyDep}</propertyDependency>
+            </#list>
+            
+            <source><![CDATA[
+    ${target.source}]]></source>
+        </target>
+        </#list>
+        
+        <#list project.properties as property>
+        <property>
+            <name>${property.name}</name>
+            <defaultValue>${property.defaultValue}</defaultValue>
+            <type>${property.type}</type>
+            <editable>${property.editable}</editable>
+            <scope>${property.scope}</scope>
+            <deprecated>${property.deprecated}</deprecated>
+            <location>${property.location}</location>
+            <summary><![CDATA[${property.summary}]]></summary>
+            <documentation><![CDATA[${wiki(property.documentation)}]]></documentation>
+            <source><![CDATA[
+    ${property.source}]]></source>
+        </property>
+        </#list>
+        
+        <#list project.propertyCommentBlocks as property>
+        <property>
+            <name>${property.name}</name>
+            <defaultValue>No default value.</defaultValue>
+            <type>${property.type}</type>
+            <editable>${property.editable}</editable>
+            <scope>${property.scope}</scope>
+            <deprecated>${property.deprecated}</deprecated>
+            <location>${property.location}</location>
+            <summary><![CDATA[${property.summary}]]></summary>
+            <documentation><![CDATA[${wiki(property.documentation)}]]></documentation>
+            <source><![CDATA[
+    ${property.source}]]></source>
+        </property>
+        </#list>
+        
+        <#list project.macros as macro>
+        <@macroOutputMacro macro/>
+        </#list>
+    </project>
+    </#list>
+    
+    <#list antlibs as antlib>
+    <antlib>
+        <name>${antlib.name}</name>
+        <location>${antlib.location}</location>
+        
+        <#list antlib.macros as macro>
+        <@macroOutputMacro macro/>
+        </#list>
+    </antlib>
+    </#list>
+    
+    <#list packages as package>
+    <package>
+        <name>${package.name}</name>
+        <summary>${package.summary}</summary>
+        <documentation>${package.documentation}</documentation>
+        <#list package.projects as projectRef>
+        <projectRef>
+            <name>${projectRef.name}</name>
+        </projectRef>
+        </#list>
+        <#list package.antlibs as antlibRef>
+        <antlibRef>
+            <name>${antlibRef.name}</name>
+        </antlibRef>
+        </#list>
+    </package>
+    </#list>
+    
+</antDatabase>
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antdata/src/com/nokia/helium/ant/data/taskdefs/AntConfigLintTask.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,114 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+
+package com.nokia.helium.ant.data.taskdefs;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.DynamicElement;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.Task;
+
+import com.nokia.helium.ant.data.Database;
+import com.nokia.helium.ant.data.types.AntLintCheck;
+import com.nokia.helium.ant.data.types.LintIssue;
+
+/**
+ * Another version of AntLint that fits with the antdata API more closely.
+ */
+@SuppressWarnings("serial")
+public class AntConfigLintTask extends Task implements DynamicElement {
+
+    // Temporary solution, should change to scanning jar
+    public static final Map<String, String> CHECKS = new HashMap<String, String>() {
+        {
+            put("wrongtypepropertycheck", "WrongTypePropertyCheck");
+            // put("protected", new Integer(2));
+            // put("private", new Integer(3));
+        }
+    };
+    private List<AntLintCheck> checks = new ArrayList<AntLintCheck>();
+    private List<LintIssue> issues = new ArrayList<LintIssue>();
+    private Database db;
+    private int errorsTotal;
+
+    public AntConfigLintTask() throws IOException {
+        setTaskName("antconfiglint");
+    }
+
+    @SuppressWarnings("unchecked")
+    public Object createDynamicElement(String name) {
+        AntLintCheck check = null;
+        String className = "com.nokia.helium.ant.data.types." + CHECKS.get(name);
+        log("Creating check: " + className, Project.MSG_DEBUG);
+        try {
+            Class<AntLintCheck> clazz = (Class<AntLintCheck>) Class.forName(className);
+            if (clazz != null) {
+                check = (AntLintCheck) clazz.newInstance();
+                checks.add(check);
+            }
+        }
+        catch (Throwable th) {
+            th.printStackTrace();
+            throw new BuildException("Error in Antlint configuration: " + th.getMessage());
+        }
+        return check;
+    }
+
+    public void execute() {
+        errorsTotal = 0;
+        try {
+            System.out.println(getProject());
+            db = new Database(getProject());
+            if (checks.size() == 0) {
+                throw new BuildException("No checks defined.");
+            }
+            for (AntLintCheck check : checks) {
+                check.setTask(this);
+
+                log("Running check: " + check, Project.MSG_DEBUG);
+                check.run();
+
+            }
+            for (LintIssue issue : issues) {
+                log(issue.toString());
+            }
+            if (errorsTotal > 0) {
+                throw new BuildException("AntLint errors found: " + errorsTotal);
+            }
+        }
+        catch (IOException e) {
+            throw new BuildException(e.getMessage());
+        }
+    }
+
+    public void addLintIssue(LintIssue issue) {
+        issues.add(issue);
+        if (issue.getSeverity() == AntLintCheck.SEVERITY_ERROR) {
+            errorsTotal++;
+        }
+    }
+
+    public Database getDatabase() {
+        return db;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antdata/src/com/nokia/helium/ant/data/taskdefs/DatabaseTask.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,119 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+
+package com.nokia.helium.ant.data.taskdefs;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.DirectoryScanner;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.Task;
+import org.apache.tools.ant.types.FileSet;
+import org.apache.tools.ant.types.ResourceCollection;
+import com.nokia.helium.ant.data.Database;
+
+/**
+ * Reads the current Ant project and any additional filesets and generates a xml
+ * file with a summary of targets, macros and properties.
+ * 
+ * @ant.task name="database"
+ */
+public class DatabaseTask extends Task {
+    private File outputFile;
+    // private boolean excludeParsedFiles
+    private String scope = "public";
+
+    private List<ResourceCollection> rcs = new ArrayList<ResourceCollection>();
+
+    public DatabaseTask() {
+        setTaskName("database");
+    }
+
+    /**
+     * Add a set of files to copy.
+     * 
+     * @param set a set of files to copy.
+     */
+    public void addFileset(FileSet set) {
+        add(set);
+    }
+
+    /**
+     * Add a collection of files to copy.
+     * 
+     * @param res a resource collection to copy.
+     * @since Ant 1.7
+     */
+    public void add(ResourceCollection res) {
+        rcs.add(res);
+    }
+
+    public void setOutput(File outputFile) {
+        this.outputFile = outputFile;
+    }
+
+    /**
+     * Defines what level of visibility to display Ant objects at.
+     * 
+     * @param scope The visibility level, either public, protected or private.
+     */
+    public void setScope(String scope) {
+        this.scope = scope;
+    }
+
+    public void execute() {
+        if (outputFile == null) {
+            throw new BuildException("'output' must be defined.");
+        }
+        log("Building Ant project database", Project.MSG_DEBUG);
+
+        // Get additional Ant file paths
+        try {
+            List<String> antFilePaths = new ArrayList<String>();
+            // Only filesets are supported currently
+            for (ResourceCollection rc : rcs) {
+                if (rc instanceof FileSet) {
+                    FileSet fs = (FileSet) rc;
+                    DirectoryScanner ds = fs.getDirectoryScanner(getProject());
+                    String[] srcFiles = ds.getIncludedFiles();
+                    String basedir = ds.getBasedir().getPath();
+                    for (int i = 0; i < srcFiles.length; i++) {
+                        String fileName = basedir + File.separator + srcFiles[i];
+                        antFilePaths.add(fileName);
+                    }
+                }
+            }
+
+            // Output the database file
+            Database db = new Database(getProject());
+            db.setScopeFilter(scope);
+            db.addAntFilePaths(antFilePaths);
+            FileWriter out = new FileWriter(outputFile);
+            db.toXML(out);
+            out.close();
+        }
+        catch (IOException e) {
+            e.printStackTrace();
+            throw new BuildException("Not able to build the ANT project Database " + e.getMessage());
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antdata/src/com/nokia/helium/ant/data/types/AntLintCheck.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,108 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+
+package com.nokia.helium.ant.data.types;
+
+import java.io.IOException;
+
+import org.apache.tools.ant.types.DataType;
+
+import com.nokia.helium.ant.data.Database;
+import com.nokia.helium.ant.data.taskdefs.AntConfigLintTask;
+
+/**
+ * An Ant Lint coding conventions check.
+ */
+public abstract class AntLintCheck extends DataType {
+    public static final int SEVERITY_ERROR = 0;
+    public static final int DEFAULT_SEVERITY = SEVERITY_ERROR;
+
+    private AntConfigLintTask task;
+    private String name;
+    private String text;
+    private int severity = DEFAULT_SEVERITY;
+
+    /**
+     * Set the pattern text.
+     * 
+     * @param text is the pattern text to set.
+     */
+    public void addText(String text) {
+        this.text = text;
+    }
+
+    /**
+     * Get the name of the Checker.
+     * 
+     * @return name of the checker.
+     */
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * Set the name of the Checker.
+     * 
+     * @param name is the name of the checker to set.
+     * @ant.required
+     */
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    /**
+     * Get the pattern set for this Checker.
+     * 
+     * @return the pattern.
+     */
+    public String getPattern() {
+        return text;
+    }
+
+    /**
+     * Get the severity.
+     * 
+     * @return the severity
+     */
+    public int getSeverity() {
+        return severity;
+    }
+
+    /**
+     * Set the severity. (Valid values : error|warning)
+     * 
+     * @param severity is the severity to set.
+     * @ant.required
+     */
+    public void setSeverity(int severity) {
+        this.severity = severity;
+    }
+
+    public AntConfigLintTask getTask() {
+        return task;
+    }
+
+    public void setTask(AntConfigLintTask task) {
+        this.task = task;
+    }
+
+    protected Database getDb() {
+        return task.getDatabase();
+    }
+
+    public abstract void run() throws IOException;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antdata/src/com/nokia/helium/ant/data/types/LintIssue.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,69 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+
+package com.nokia.helium.ant.data.types;
+
+import com.nokia.helium.ant.data.AntFile;
+
+/**
+ * An Ant lint issue.
+ */
+public class LintIssue {
+    private String description;
+    private int level;
+    private AntFile antfile;
+    private String location;
+    
+    public LintIssue(String description, int level, String location) {
+        super();
+        this.description = description;
+        this.level = level;
+        this.location = location;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    public int getSeverity() {
+        return level;
+    }
+
+    public void setLevel(int level) {
+        this.level = level;
+    }
+
+    public AntFile getAntfile() {
+        return antfile;
+    }
+
+    public void setAntfile(AntFile antfile) {
+        this.antfile = antfile;
+    }
+
+    public String getLocation() {
+        return location;
+    }
+
+    public void setLocation(String location) {
+        this.location = location;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antdata/src/com/nokia/helium/ant/data/types/PropertyNameCheck.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,25 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+
+package com.nokia.helium.ant.data.types;
+
+/**
+ * A check for the name of a property.
+ */
+public class PropertyNameCheck {
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antdata/src/com/nokia/helium/ant/data/types/WrongTypePropertyCheck.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,62 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+
+package com.nokia.helium.ant.data.types;
+
+import java.io.IOException;
+import java.util.List;
+
+import org.apache.tools.ant.Project;
+
+import com.nokia.helium.ant.data.PropertyMeta;
+
+/**
+ * An AntLint check of the type of a property.
+ */
+public class WrongTypePropertyCheck extends AntLintCheck {
+    public static final String DESCRIPTION = "Property value does not match type";
+
+    public WrongTypePropertyCheck() {
+    }
+
+    @Override
+    public void run() throws IOException {
+        List<PropertyMeta> properties = getDb().getProperties();
+        log("Properties total: " + properties.size(), Project.MSG_DEBUG);
+        for (PropertyMeta propertyMeta : properties) {
+            String type = propertyMeta.getType();
+            String value = propertyMeta.getValue();
+            if (value != null) {
+                log("Testing for wrong type: " + propertyMeta.getName() + ", type: " + type, Project.MSG_DEBUG);
+                if (type.equals("integer")) {
+                    try {
+                        Integer.decode(value);
+                    }
+                    catch (NumberFormatException e) {
+                        getTask().addLintIssue(new LintIssue(DESCRIPTION, getSeverity(), propertyMeta.getLocation()));
+                    }
+                }
+            }
+            else {
+                log("Testing for wrong type: " + propertyMeta.getName() + ": value cannot be found", Project.MSG_DEBUG);
+            }
+        }
+    }
+}
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antdata/src/com/nokia/helium/freemarker/WikiMethod.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+
+package com.nokia.helium.freemarker;
+
+import info.bliki.wiki.model.WikiModel;
+
+import java.util.List;
+
+import freemarker.template.TemplateMethodModel;
+import freemarker.template.TemplateModelException;
+
+/**
+ * A FreeMarker method for converting the given text argument into HTML. The
+ * text is assumed to be in MediaWiki format. 
+ */
+public class WikiMethod implements TemplateMethodModel {
+
+    @SuppressWarnings("unchecked")
+    public Object exec(List args) throws TemplateModelException {
+        String text = (String) args.get(0);
+        WikiModel wikiModel = new WikiModel("", "");
+        if (!text.contains("</pre>") && (text.contains("**") || text.contains("==") || text.contains("- -"))) {
+            text = text.replace("**", "").replace("==", "").replace("- -", "").trim();
+            // log("Warning: Comment code has invalid syntax: " + text,
+            // Project.MSG_WARN);
+        }
+        if (text.startsWith("-")) {
+            text = text.replace("-", "");
+        }
+        
+        text = text.trim();
+        text = wikiModel.render(text);
+        return text;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antdata/tests/antunit/test_antdata.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : test_antdata.ant.xml 
+Part of     : Helium AntLib
+
+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:
+
+============================================================================
+-->
+<!--* @package test-package -->
+<project name="helium-antlib-antdata-unittest" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
+    <description>Helium Antlib antdata unittests.</description>
+
+    <taskdef resource="com/nokia/helium/ant/data/antlib.xml" uri="http://www.nokia.com/helium"/>
+
+
+    <!-- is called prior to the test -->
+    <target name="setUp">
+
+    </target>
+
+    <!-- is called after the test, even if that caused an error 
+        
+    @scope private -->
+    <target name="tearDown">
+
+    </target>
+
+    <target name="test-database">
+        <echo>${basedir}</echo>
+        <hlm:database output="test_db.xml"/>
+        <delete file="test_db.xml"/>
+    </target>
+
+    
+    <target name="test-database-with-fileset">
+        <echo>${basedir}</echo>
+        <hlm:database output="test_db2.xml">
+            <fileset dir="${basedir}/../data" includes="external_project.ant.xml"/>
+        </hlm:database>
+        <!--<delete file="test_db.xml"/>-->
+    </target>
+    
+    
+    <target name="test-database-private">
+        <hlm:database output="test_db.xml" scope="private"/>
+        <delete file="test_db.xml"/>
+    </target>
+    
+    <!-- Test property.
+    @type integer -->
+    <property name="should.be.int" value="not an int"/>
+    <target name="test-antconfiglint">
+        <au:expectfailure>
+            <hlm:antconfiglint>
+                <WrongTypePropertyCheck/>
+            </hlm:antconfiglint>
+        </au:expectfailure>
+    </target>
+
+</project>
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antdata/tests/bld.sh	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,23 @@
+#!/bin/sh
+
+#
+# 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: 
+#
+
+if [ -f ~/.bashrc ] ; then
+    . ~/.bashrc
+fi
+
+ant $*
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antdata/tests/build.bat	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,31 @@
+@echo off
+
+rem
+rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+rem All rights reserved.
+rem This component and the accompanying materials are made available
+rem under the terms of the License "Eclipse Public License v1.0"
+rem which accompanies this distribution, and is available
+rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+rem
+rem Initial Contributors:
+rem Nokia Corporation - initial contribution.
+rem
+rem Contributors:
+rem
+rem Description: 
+rem
+
+setlocal
+if not defined JAVA_6_HOME (
+set TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
+) ELSE  set TESTED_JAVA=%JAVA_6_HOME%
+if exist %TESTED_JAVA% (set JAVA_HOME=%TESTED_JAVA%)
+call ant %*
+if "%ERRORLEVEL%" neq "0" (goto error)
+endlocal
+goto :eof
+
+:error
+endlocal
+if "%OS%"=="Windows_NT" color 00
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antdata/tests/build.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : build.xml 
+Part of     : Helium AntLib
+
+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="helium-antdata" xmlns:au="antlib:org.apache.ant.antunit">
+    <description>Helium Antlib Sysdef unittests.</description>
+
+    
+    <dirname property="antlint.test.dir" file="${ant.file.helium-antlib-antlint-unittest}"/>
+    <import file="${builder.dir}/java/test-macros.ant.xml"/>
+
+
+</project>
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antdata/tests/data/external_project.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,29 @@
+<!-- 
+============================================================================ 
+Name        : external_project.ant.xml 
+Part of     : Helium AntLib
+
+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="external_project">
+
+    <description>An external Ant project.</description>
+
+</project>
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antdata/tests/data/test_lib.antlib.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,29 @@
+<!-- 
+============================================================================ 
+Name        : antlib.xml 
+Part of     : Helium AntLib
+
+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:
+
+============================================================================
+-->
+<antlib xmlns:au="org.apache.ant.antunit">
+    <macrodef name="testMacro">
+        <attribute name="dir"/>
+        <sequential>
+            <echo>Cool macro!</echo>
+        </sequential>
+    </macrodef>
+</antlib>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antdata/tests/data/test_project.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,89 @@
+<!-- 
+============================================================================ 
+Name        : antlib.xml 
+Part of     : Helium AntLib
+
+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="test_project" default="check-target">
+    <description>A test Ant project.
+    
+    Bit more text.
+    
+    And some more.
+    </description>
+    
+    <import file="random.xml" optional="true"/>
+    
+    <typedef file="common.antlib.xml"/>
+    
+    <!-- This is a property comment summary.
+        
+    Here is a longer description of this property.
+        
+    @scope public
+    @editable recommended
+    @deprecated Since 6.0.
+    -->
+    <property name="property1" value="value1"/>
+    
+    <path id="helium.antdata.classpath">
+        <fileset dir="${helium.antlib.root.dir}/bin" includes="*.jar"/>
+        <fileset dir="${helium.antlib.root.dir}/antdata/lib" includes="*.jar"/>
+    </path>
+    
+    <!-- This target is for testing the generation of documentation.
+        
+    So this comment is also for testing if the comments can be extracted.
+
+    Some vague usage twaddle:
+
+     <runtarget target="check-target"/>
+    
+    @deprecated Lets pretend this target is deprecated.
+    -->
+    <target name="check-target" if="foo" unless="bar" depends="dep1, dep2" description="A test target">
+        <antcall target="sub_test_target"/>
+        <echo>${property1}</echo>
+        <exec executable="python.exe" output="foo.log"/>
+        <signal name="fooSignal"/>
+    </target>
+    
+    <target name="dep1"/>
+    <target name="dep2"/>
+    
+    <!-- @scope public -->
+    <macrodef name="test_macro">
+        <attribute name="dir"/>
+        <sequential>
+            <echo>Cool macro!</echo>
+        </sequential>
+    </macrodef>
+    
+    <!-- @property user.defined.property
+        
+    This property must be defined by the user.
+    
+    Here is a bit more description.
+    @editable required
+    @scope public
+    -->
+
+</project>
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antdata/tests/src/com/nokia/helium/ant/data/tests/TestMeta.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,85 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+
+package com.nokia.helium.ant.data.tests;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.StringWriter;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.dom4j.Document;
+import org.dom4j.DocumentException;
+import org.dom4j.DocumentHelper;
+import org.dom4j.Node;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+import com.nokia.helium.ant.data.Database;
+
+public class TestMeta {
+    @Test
+    public void testProjectMeta() throws IOException, DocumentException {
+        Database db = new Database(null, "public");
+        List<String> paths = new ArrayList<String>();
+        File testAntFile = new File(System.getProperty("testdir"), "tests/data/test_project.ant.xml");
+        paths.add(testAntFile.getCanonicalPath());
+        db.addAntFilePaths(paths);
+        StringWriter out = new StringWriter();
+        db.toXML(out);
+
+        Document doc = DocumentHelper.parseText(out.toString());
+        System.out.println(doc.asXML());
+
+        Node database = doc.selectSingleNode("//antDatabase");
+
+        Node project = database.selectSingleNode("project");
+        assertTrue(project.valueOf("name").equals("test_project"));
+        assertTrue(project.valueOf("scope").equals("public"));
+        assertTrue(project.valueOf("default").equals("check-target"));
+        assertTrue(project.valueOf("deprecated").equals(""));
+        assertTrue(project.valueOf("description").contains("A test Ant project."));
+        assertTrue(project.valueOf("location").contains("test_project.ant.xml"));
+        assertTrue(project.valueOf("projectDependency").equals("random.xml"));
+        assertTrue(project.valueOf("libraryDependency").equals("common.antlib.xml"));
+
+        Node target = project.selectSingleNode("target[1]");
+        assertTrue(target.valueOf("name").equals("check-target"));
+        assertTrue(target.valueOf("ifDependency").equals("foo"));
+        assertTrue(target.valueOf("unlessDependency").equals("bar"));
+        assertTrue(target.valueOf("description").contains("A test target"));
+        assertTrue(target.valueOf("scope").equals("public"));
+        assertTrue(target.valueOf("deprecated").equals("Lets pretend this target is deprecated."));
+        assertTrue(target.valueOf("location").contains("test_project.ant.xml"));
+
+        Node property = project.selectSingleNode("property");
+        assertTrue(property.valueOf("name").equals("property1"));
+        assertTrue(property.valueOf("defaultValue").equals("value1"));
+        assertTrue(property.valueOf("type").equals("string"));
+        assertTrue(property.valueOf("editable").equals("recommended"));
+        assertTrue(property.valueOf("scope").equals("public"));
+        assertTrue(property.valueOf("deprecated").equals("Since 6.0."));
+        assertTrue(property.valueOf("location").contains("test_project.ant.xml"));
+        assertTrue(property.valueOf("summary").startsWith("This is a property comment summary."));
+
+        Node macro = project.selectSingleNode("macro");
+        assertTrue(macro.valueOf("name").equals("test_macro"));
+        assertTrue(macro.valueOf("scope").equals("public"));
+        assertTrue(macro.valueOf("deprecated").equals(""));
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antlint/bld.bat	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,39 @@
+@echo off
+
+rem
+rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+rem All rights reserved.
+rem This component and the accompanying materials are made available
+rem under the terms of the License "Eclipse Public License v1.0"
+rem which accompanies this distribution, and is available
+rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+rem
+rem Initial Contributors:
+rem Nokia Corporation - initial contribution.
+rem
+rem Contributors:
+rem
+rem Description: 
+rem
+
+setlocal
+if not defined JAVA_6_HOME (
+set TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
+) ELSE  set TESTED_JAVA=%JAVA_6_HOME%
+if exist %TESTED_JAVA% (set JAVA_HOME=%TESTED_JAVA%)
+
+REM Configure Ant 
+if not defined TESTED_ANT_HOME (
+set TESTED_ANT_HOME=C:\Apps\ant_1.7
+) 
+if exist %TESTED_ANT_HOME% (set ANT_HOME=%TESTED_ANT_HOME%)
+
+call java -cp ".\..\..\bin\helium-checktools.jar" com.nokia.helium.checktools.HeliumToolsCheckerMain -config ".\..\..\builder\helium.basic.tools.config"
+if "%ERRORLEVEL%" neq "0" (goto errorstop)
+
+ant -lib ../../builder/antlibs %*
+endlocal
+
+:errorstop
+@echo *** Build aborted with error
+exit /b 1
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antlint/build.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : build.xml 
+Part of     : Helium AntLib
+
+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="helium-antlint">
+    <description>Helium Antlib antlint.</description>
+    
+    <property name="builder.dir" location="../../builder"/>
+    <property name="sf.source.root.dir" location="../../" />
+    <import file="${builder.dir}/java/macros.ant.xml"/>
+    <property name="name" value="antlint"/>
+
+</project>
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antlint/ivy.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+============================================================================ 
+Name        : ivy.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:
+
+============================================================================  
+-->
+<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
+    <info
+        organisation="com.nokia.helium"
+        module="helium-antlint"
+        status="integration">
+    </info>
+    <dependencies>
+        <dependency org="dom4j" name="dom4j" rev="latest.integration" conf="default" />
+        <dependency org="log4j" name="log4j" rev="1.2.9" conf="default" />
+        <dependency name="helium-core" rev="latest.integration" conf="default" />
+    </dependencies>
+</ivy-module>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/AntFile.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,114 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+package com.nokia.helium.antlint;
+
+import java.util.ArrayList;
+
+/**
+ * <code>AntFile</code> is used to hold information about the antlint checkings
+ * such as number of errors and warnings found for the given ant file.
+ * 
+ */
+public class AntFile implements Comparable<AntFile> {
+    private String name;
+    private int warningCount;
+    private int errorCount;
+
+    private ArrayList<String> propertiesVisited = new ArrayList<String>();
+
+    /**
+     * Create an instance of {@link AntFile}.
+     * 
+     * @param name
+     *            is the name of the Ant file.
+     */
+    public AntFile(String name) {
+        this.name = name;
+    }
+
+    /**
+     * Increment warnings count by one.
+     */
+    public void incrementWarningCount() {
+        warningCount++;
+    }
+
+    /**
+     * Return total number of warnings found.
+     * 
+     * @return the total number of warnings.
+     */
+    public int getWarningCount() {
+        return warningCount;
+    }
+
+    /**
+     * Increment error count by one.
+     */
+    public void incrementErrorCount() {
+        errorCount++;
+    }
+
+    /**
+     * Return total number of errors found.
+     * 
+     * @return the total number of errors.
+     */
+    public int getErrorCount() {
+        return errorCount;
+    }
+
+    /**
+     * Mark the given property as visited.
+     * 
+     * @param propertyName
+     *            is the property to be marked.
+     */
+    public void markPropertyAsVisited(String propertyName) {
+        propertiesVisited.add(propertyName);
+    }
+
+    /**
+     * Check whether the given property is already visited or not.
+     * 
+     * @param propertyName
+     *            is the property to lookup for.
+     * @return true if the property is marked visited; otherwise false.
+     */
+    public boolean isPropertyVisited(String propertyName) {
+        return propertiesVisited.contains(propertyName);
+    }
+
+    /**
+     * Return a string representation of this object.
+     * 
+     * @return a string representation of this object.
+     */
+    public String toString() {
+        return errorCount + " errors and " + warningCount + " warnings " + name;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public int compareTo(AntFile otherAntFile) {
+        return new Integer(otherAntFile.getWarningCount())
+                .compareTo(new Integer(this.warningCount))
+                * -1;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/AntLintHandler.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,174 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+package com.nokia.helium.antlint;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.helpers.DefaultHandler;
+
+import com.nokia.helium.antlint.checks.Check;
+
+/**
+ * <code>AntLintHandler</code> is an SAX2 event handler class used to check for
+ * tab characters and indents inside the xml elements.
+ * 
+ */
+public class AntLintHandler extends DefaultHandler {
+    private int indentLevel;
+    private int indentSpace;
+    private Locator locator;
+    private boolean textElement;
+    private int currentLine;
+    private StringBuffer strBuff = new StringBuffer();
+
+    private boolean indentationCheck;
+    private boolean tabCharacterCheck;
+
+    private Check check;
+
+    /**
+     * Create an instance of {@link AntLintHandler}.
+     * 
+     * @param check
+     *            is the check to be performed.
+     */
+    public AntLintHandler(Check check) {
+        super();
+        this.check = check;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void setDocumentLocator(Locator locator) {
+        this.locator = locator;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void startDocument() {
+        indentLevel -= 4;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void endDocument() {
+
+    }
+
+    /**
+     * Set whether the handler should check for indentation or not.
+     * 
+     * @param indentationCheck
+     *            a boolean value to set.
+     */
+    public void setIndentationCheck(boolean indentationCheck) {
+        this.indentationCheck = indentationCheck;
+    }
+
+    /**
+     * Set whether the handler should check for tab characters or not.
+     * 
+     * @param tabCharacterCheck
+     *            is a boolean value to set.
+     */
+    public void setTabCharacterCheck(boolean tabCharacterCheck) {
+        this.tabCharacterCheck = tabCharacterCheck;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void startElement(String uri, String name, String qName,
+            Attributes atts) {
+        countSpaces();
+        indentLevel += 4; // When an element start tag is encountered,
+        // indentLevel is increased 4 spaces.
+        checkIndent();
+        currentLine = locator.getLineNumber();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void endElement(String uri, String name, String qName) {
+        countSpaces();
+        // Ignore end tags in the same line
+        if (currentLine != locator.getLineNumber()) {
+            checkIndent();
+        }
+        indentLevel -= 4; // When an element end tag is encountered,
+        // indentLevel is decreased 4 spaces.
+        textElement = false;
+    }
+
+    /**
+     * Check for indentation.
+     * 
+     */
+    private void checkIndent() {
+        if (indentationCheck) {
+            if ((indentSpace != indentLevel) && !textElement) {
+                check.log(locator.getLineNumber() + ": Bad indentation!");
+            }
+        }
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void characters(char[] ch, int start, int length) {
+        for (int i = start; i < start + length; i++) {
+            strBuff.append(ch[i]);
+        }
+    }
+
+    /**
+     * Method counts the number of spaces.
+     */
+    public void countSpaces() {
+        // Counts spaces and tabs in every newline.
+        int numSpaces = 0;
+        for (int i = 0; i < strBuff.length(); i++) {
+            switch (strBuff.charAt(i)) {
+            case '\t':
+                numSpaces += 4;
+                if (tabCharacterCheck) {
+                    check.log(locator.getLineNumber()
+                            + ": Tabs should not be used!");
+                }
+                break;
+            case '\n':
+                numSpaces = 0;
+                break;
+            case '\r':
+                break;
+            case ' ':
+                numSpaces++;
+                break;
+            default:
+                textElement = true;
+                break;
+            }
+        }
+        indentSpace = numSpaces;
+        strBuff.delete(0, strBuff.length());
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/AntProjectVisitor.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+package com.nokia.helium.antlint;
+
+import java.util.Collection;
+
+import org.dom4j.Element;
+import org.dom4j.VisitorSupport;
+
+import com.nokia.helium.antlint.checks.Check;
+
+/**
+ * <code>AntProjectVisitor</code> extends {@link VisitorSupport} and is used to
+ * visit the various nodes of the given project and run the antlint checklist
+ * against those nodes.
+ * 
+ */
+public class AntProjectVisitor extends VisitorSupport {
+
+    private Collection<Check> checks;
+
+    /**
+     * Create an instance of {@link AntProjectVisitor}.
+     * 
+     * @param checks is the antlint checklist.
+     */
+    public AntProjectVisitor(Collection<Check> checks) {
+        this.checks = checks;
+    }
+
+    /**
+     * Visit the given node and run the antlint checklist.
+     */
+    public void visit(Element node) {
+        for (Check check : checks) {
+            if (check.isEnabled())
+                check.run(node);
+        }
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/ant/antlib.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : antlib.xml 
+Part of     : Helium AntLib
+
+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:
+
+============================================================================
+-->
+<antlib>
+    <!-- Task definition -->
+    <taskdef name="antlint" classname="com.nokia.helium.antlint.ant.taskdefs.AntLintTask"/>
+    
+    <!-- Type definition -->
+    <typedef name="checker" classname="com.nokia.helium.antlint.ant.types.Checker"/>
+    
+</antlib>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/ant/helium.antlib.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : helium.antlib.xml 
+Part of     : Helium Antlib 
+
+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="libs-antlint" xmlns:hlm="http://www.nokia.com/helium">
+    <description>
+        Ant task definition declarations.
+    </description>    
+    <taskdef resource="com/nokia/helium/antlint/ant/antlib.xml" uri="http://www.nokia.com/helium"/>
+</project>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/ant/taskdefs/AntLintTask.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,267 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+
+package com.nokia.helium.antlint.ant.taskdefs;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Vector;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.DirectoryScanner;
+import org.apache.tools.ant.Task;
+import org.apache.tools.ant.types.FileSet;
+import org.dom4j.Document;
+import org.dom4j.Element;
+import org.dom4j.Visitor;
+import org.dom4j.io.SAXReader;
+
+import com.nokia.helium.antlint.AntFile;
+import com.nokia.helium.antlint.AntProjectVisitor;
+import com.nokia.helium.antlint.ant.types.Checker;
+import com.nokia.helium.antlint.checks.Check;
+
+/**
+ * AntLint Task. This task checks for common coding conventions and errors in
+ * Ant XML script files.
+ * 
+ * <p>
+ * The current checks include:
+ * <ul>
+ * <li>CheckAntCall : checks whether antcall is used with no param elements and
+ * calls target with no dependencies</li>
+ * <li>CheckDescription : checks for project description</li>
+ * <li>CheckDuplicateNames : checks for duplicate macros</li>
+ * <li>CheckFileName : checks the naming convention of ant xml files</li>
+ * <li>CheckIndentation : checks indentation</li>
+ * <li>CheckJepJythonScript : checks the coding convention in Jep and Jython
+ * scripts</li>
+ * <li>CheckPresetDefMacroDefName : checks the naming convention of presetdef
+ * and macrodef</li>
+ * <li>CheckProjectName : checks the naming convention of project</li>
+ * <li>CheckPropertiesInDataModel : checks whether the properties are defined in
+ * data model</li>
+ * <li>CheckPropertyName : checks the naming convention of properties</li>
+ * </li>
+ * <li>CheckPythonTasks : checks the coding convention of python tasks</li>
+ * <li>CheckRunTarget : checks whether runtarget calls a target that has
+ * dependencies</li>
+ * <li>CheckScriptCondition : checks the coding convention in script condition</li>
+ * <li>CheckScriptDef : checks the coding convention in scriptdef</li>
+ * <li>CheckScriptDefNameAttributes - checks the naming convention of scriptdef
+ * name attributes</li></li>
+ * <li>CheckScriptDefStyle : checks the coding style of scriptdef</li>
+ * <li>CheckScriptSize : checks the size of scripts</li>
+ * <li>CheckTabCharacter : checks for tab characters</li>
+ * <li>CheckTargetName : checks the naming convention of targets</li>
+ * <li>CheckUseOfEqualsTask : checks the usage of equals task</li>
+ * <li>CheckUseOfIfInTargets : checks the usage of if task inside targets</li>
+ * </ul>
+ * </pre>
+ * 
+ * <p>
+ * Checks to be added:
+ * <ul>
+ * <li>Help target is defined.</li>
+ * <li>Optional to thrown warnings about deprecated targets (rename, copydir,
+ * copyfile).</li>
+ * </ul>
+ * </p>
+ * 
+ * <pre>
+ * Usage:
+ * 
+ *  &lt;antlint&gt;
+ *       &lt;fileset id=&quot;antlint.files&quot; dir=&quot;${antlint.test.dir}/data&quot;&gt;
+ *               &lt;include name=&quot;*.ant.xml&quot;/&gt;
+ *               &lt;include name=&quot;*build.xml&quot;/&gt;
+ *               &lt;include name=&quot;*.antlib.xml&quot;/&gt;
+ *       &lt;/fileset&gt;
+ *       &lt;checker name=&quot;CheckTabCharacter&quot; severity=&quot;error&quot; /&gt;
+ *       .
+ *       .
+ *       &lt;checker name=&quot;CheckTargetName&quot; severity=&quot;warning&quot;&gt;([a-z0-9[\\d\\-]]*)&lt;/checker&gt;
+ *  &lt;/antlint&gt;
+ * </pre>
+ * 
+ * @ant.task name="antlint" category="AntLint"
+ * 
+ */
+public class AntLintTask extends Task {
+
+    private List<Checker> checkerList = new Vector<Checker>();
+    private List<FileSet> antFileSetList = new ArrayList<FileSet>();
+
+    private List<AntFile> antFilelist = new ArrayList<AntFile>();
+    private List<Check> checkList = new ArrayList<Check>();
+
+    /**
+     * Add the given {@link Checker} to the checklist.
+     * 
+     * @param checker
+     *            is the checker to be added.
+     * @ant.required
+     */
+    public void addChecker(Checker checker) {
+        checkerList.add(checker);
+    }
+
+    /**
+     * Add a set of files to copy.
+     * 
+     * @param set
+     *            a set of files to AntLintTask.
+     * @ant.required
+     */
+    public void addFileset(FileSet set) {
+        antFileSetList.add(set);
+    }
+
+    /**
+     * Execute the antlint task.
+     */
+    public final void execute() {
+        try {
+            initialize();
+            startAntLintCheck(); // trigger antlint checking
+        } catch (Exception e) {
+            throw new BuildException(
+                    "Exception occured while running AntLint task "
+                            + e.getMessage());
+        }
+
+        int errorCount = 0;
+        for (AntFile antFile : antFilelist) {
+            errorCount = errorCount + antFile.getErrorCount();
+            log(antFile.toString());
+        }
+        if (errorCount > 0) {
+            throw new BuildException(errorCount + " errors found.");
+        }
+    }
+
+    /**
+     * Initialize the checklist setting the checkers against their corresponding
+     * Checks.
+     */
+    private void initialize() {
+        Check check = null;
+        for (Checker checker : checkerList) {
+            check = getCheckObject(checker.getName());
+            if (check != null) {
+                check.setChecker(checker);
+                checkList.add(check);
+            }
+        }
+    }
+
+    /**
+     * Instantiate the given {@link Check}.
+     * 
+     * @param checkerName
+     *            is the name of the Check object to be instantiated.
+     * @return an instance of requested {@link Check}.
+     */
+    @SuppressWarnings("unchecked")
+    private Check getCheckObject(String checkerName) {
+        Check check = null;
+        try {
+            Class clazz = Class.forName("com.nokia.helium.antlint.checks."
+                    + checkerName);
+            if (clazz != null) {
+                check = (Check) clazz.newInstance();
+            }
+        } catch (Throwable th) {
+            throw new BuildException("Error in Antlint configuration:", th);
+        }
+        return check;
+    }
+
+    /**
+     * Triggers the antlint checking.
+     * 
+     * @throws Exception
+     *             if the checking fails.
+     */
+    private void startAntLintCheck() throws Exception {
+        runOneTimeCheck();
+
+        for (FileSet fs : antFileSetList) {
+            DirectoryScanner ds = fs.getDirectoryScanner(getProject());
+            String[] srcFiles = ds.getIncludedFiles();
+            String basedir = ds.getBasedir().getPath();
+
+            for (int i = 0; i < srcFiles.length; i++) {
+                String antFileName = basedir + File.separator + srcFiles[i];
+                getProject().log("*************** Ant File: " + antFileName);
+
+                run(antFileName);
+
+                SAXReader saxReader = new SAXReader();
+                Document doc = saxReader.read(new File(antFileName));
+                treeWalk(doc);
+            }
+            Collections.sort(antFilelist);
+        }
+    }
+
+    /**
+     * Parse the given document.
+     * 
+     * @param document
+     *            is the document to be parsed.
+     */
+    private void treeWalk(final Document document) {
+        Element rootElement = document.getRootElement();
+        Visitor visitorRootElement = new AntProjectVisitor(checkList);
+        rootElement.accept(visitorRootElement);
+    }
+
+    /**
+     * Runs one time antlint checks.
+     * 
+     */
+    private void runOneTimeCheck() {
+        AntFile antFile = new AntFile("General");
+        antFilelist.add(antFile);
+        for (Check check : checkList) {
+            if (check.isEnabled()) {
+                check.setAntFile(antFile);
+                check.run();
+            }
+        }
+    }
+
+    /**
+     * Runs antlint checks for the given ant file.
+     * 
+     * @param antFileName
+     *            is the name of the ant file to be checked.
+     */
+    private void run(String antFileName) {
+        AntFile antFile = new AntFile(antFileName);
+        antFilelist.add(antFile);
+        for (Check check : checkList) {
+            if (check.isEnabled()) {
+                check.setAntFile(antFile);
+                check.run(antFileName);
+            }
+        }
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/ant/types/Checker.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,97 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+package com.nokia.helium.antlint.ant.types;
+
+import org.apache.tools.ant.types.DataType;
+
+/**
+ * <code>Checker</code> is a datatype used to hold information related to
+ * antlint check configurations.
+ * 
+ * <pre>
+ * Usage:
+ *  
+ *      &lt;checker name=&quot;CheckTargetName&quot; severity=&quot;warning&quot;&gt;([a-z0-9[\\d\\-]]*)&lt;/checker&gt;
+ * </pre>
+ * 
+ */
+public class Checker extends DataType {
+
+    private String name;
+    private String text;
+    private String severity;
+
+    /**
+     * Set the pattern text.
+     * 
+     * @param text
+     *            is the pattern text to set.
+     */
+    public void addText(String text) {
+        this.text = text;
+    }
+
+    /**
+     * Get the name of the Checker.
+     * 
+     * @return name of the checker.
+     */
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * Set the name of the Checker.
+     * 
+     * @param name
+     *            is the name of the checker to set.
+     * @ant.required
+     */
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    /**
+     * Get the pattern set for this Checker.
+     * 
+     * @return the pattern.
+     */
+    public String getPattern() {
+        return text;
+    }
+
+    /**
+     * Get the severity.
+     * 
+     * @return the severity
+     */
+    public String getSeverity() {
+        return severity;
+    }
+
+    /**
+     * Set the severity. (Valid values : error|warning)
+     * 
+     * @param severity
+     *            is the severity to set.
+     * @ant.required
+     */
+    public void setSeverity(String severity) {
+        this.severity = severity;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/checks/AbstractCheck.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,205 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+package com.nokia.helium.antlint.checks;
+
+//import java.io.File;
+//import java.util.List;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.Target;
+import org.dom4j.Document;
+import org.dom4j.Element;
+//import org.dom4j.Node;
+import org.dom4j.io.SAXReader;
+
+import com.nokia.helium.antlint.AntFile;
+import com.nokia.helium.antlint.ant.types.Checker;
+
+/**
+ * <code>AbstractCheck</code> is an abstract implementation of {@link Check}.
+ * 
+ */
+public abstract class AbstractCheck implements Check {
+
+    private Checker checker;
+    private AntFile antFile;
+    private boolean enabled;
+
+    /**
+     * {@inheritDoc}
+     */
+    public void setChecker(Checker checker) {
+        this.checker = checker;
+        this.enabled = true;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void setAntFile(AntFile antFile) {
+        this.antFile = antFile;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public boolean isEnabled() {
+        return enabled;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public Checker getChecker() {
+        return this.checker;
+    }
+
+    /**
+     * Return the {@link AntFile} set.
+     * 
+     * @return the {@link AntFile}
+     */
+    protected AntFile getAntFile() {
+        return antFile;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void log(String message) {
+        if (checker.getSeverity() != null
+                && checker.getSeverity().equalsIgnoreCase("error")) {
+            logError(message);
+            antFile.incrementErrorCount();
+        } else {
+            logWarning(message);
+            antFile.incrementWarningCount();
+        }
+    }
+
+    /**
+     * Get the {@link Pattern} associated with current {@link Check}.
+     * 
+     * @return the Pattern.
+     */
+    protected String getPattern() {
+        return checker.getPattern();
+    }
+
+    /**
+     * Get the {@link Project}.
+     * 
+     * @return the {@link Project}
+     */
+    protected Project getProject() {
+        return checker.getProject();
+    }
+
+    /**
+     * Check the availability dependent targets of the given target.
+     * 
+     * @param targetName
+     *            is the target for which dependent targets to be loked up.
+     * @return true, if the dependant targets are available; otherwise false
+     */
+    protected boolean checkTargetDependency(String targetName) {
+        boolean dependencyCheck = false;
+        try {
+            Target targetDependency = (Target) getProject().getTargets().get(
+                    targetName);
+            dependencyCheck = targetDependency != null
+                    && targetDependency.getDependencies().hasMoreElements();
+        } catch (Exception e) {
+            throw new BuildException("Not able to get Target Dependency for "
+                    + targetName);
+        }
+        return dependencyCheck;
+    }
+
+    /**
+     * Check the whether the given property is defined in the data model.
+     * 
+     * @param customerProp
+     *            is the property to check for.
+     */
+    @SuppressWarnings("unchecked")
+    protected void checkPropertyInModel(String customerProp) {
+        SAXReader xmlReader = new SAXReader();
+        Document antDoc = null;
+        
+        // TODO
+
+//        try {
+//            File model = new File(getProject().getProperty("data.model.parsed"));
+//            antDoc = xmlReader.read(model);
+//      } catch (Exception e) {
+//            throw new BuildException("Not able to read data model file "
+//                    + getProject().getProperty("data.model.parsed"));
+//        }
+//
+//        List<Node> statements = antDoc.selectNodes("//property");
+//
+//        for (Node statement : statements) {
+//            if (customerProp.equals(statement.valueOf("name"))) {
+//                return;
+//            }
+//        }
+//        log(customerProp + " not in data model");
+    }
+
+    /**
+     * Log the given message as an error.
+     * 
+     * @param message
+     *            is the message to log.
+     */
+    private void logError(String message) {
+        getProject().log("E: " + message);
+    }
+
+    /**
+     * Log the given message as an warning.
+     * 
+     * @param message
+     *            is the message to log.
+     */
+    private void logWarning(String message) {
+        getProject().log("W: " + message);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void run(Element node) {
+        // ignore
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void run(String text) {
+        // ignore
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void run() {
+        // ignore
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/checks/AbstractScriptCheck.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,102 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+package com.nokia.helium.antlint.checks;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.apache.tools.ant.BuildException;
+
+/**
+ * <code>AbstractScriptCheck</code> is an abstract implementation of
+ * {@link Check} and contains some concrete methods related to script.
+ * 
+ */
+public abstract class AbstractScriptCheck extends AbstractCheck {
+
+    /**
+     * Write a script with the given name and the text.
+     * 
+     * @param name is the name of the script
+     * @param text is the script text.
+     */
+    protected void writeJepFile(String name, String text) {
+        if (text.contains("${")) {
+            log("${ found in " + name);
+        }
+        try {
+            String heliumpath = new File(getProject().getProperty(
+                    "helium.build.dir")).getCanonicalPath();
+            new File(heliumpath + File.separator + "jep").mkdirs();
+            File file = new File(heliumpath + File.separator + "jep"
+                    + File.separator + name + "_jep.py");
+            PrintWriter output = new PrintWriter(new FileOutputStream(file));
+            output.write("def abc():\n");
+            output.write("    attributes = {} # pylint: disable-msg=C0103\n");
+            output.write("    elements = {} # pylint: disable-msg=C0103\n");
+            output.write("    project = None # pylint: disable-msg=C0103\n");
+            output.write("    self = None # pylint: disable-msg=C0103\n");
+            text = text.replace(" File(", " self.File(");
+            for (String t : text.split("\n"))
+                output.write("    " + t + "\n");
+            output.close();
+
+            if (text.contains("import ")) {
+                File file2 = new File(heliumpath + File.separator
+                        + "test_jython.xml");
+                PrintWriter output2 = new PrintWriter(new FileOutputStream(
+                        file2, true));
+                output2.write("try:\n");
+                for (String line : text.split("\n")) {
+                    if (line.trim().startsWith("import ")
+                            || line.trim().startsWith("from "))
+                        output2.write("    " + line + "\n");
+                }
+
+                output2.write("except ImportError, e:\n");
+                output2.write("    print '" + name
+                        + " failed: ' + str(e)\n");
+                output2.close();
+            }
+        } catch (Exception e) {
+            throw new BuildException("Not able to write JEP File "
+                    + name + "_jep.py");
+        }
+    }
+
+    /**
+     * Check for the properties in the given script text.
+     * 
+     * @param text is the script text to lookup.
+     */
+    protected void checkJepPropertiesInText(String text) {
+        Pattern p1 = Pattern
+                .compile("getProperty\\([\"']([a-zA-Z0-9\\.]*)[\"']\\)");
+        Matcher m1 = p1.matcher(text);
+        ArrayList<String> props = new ArrayList<String>();
+        while (m1.find()) {
+            props.add(m1.group(1));
+        }
+        for (String group : props)
+            checkPropertyInModel(group);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/checks/Check.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,90 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+package com.nokia.helium.antlint.checks;
+
+import org.dom4j.Element;
+
+import com.nokia.helium.antlint.AntFile;
+import com.nokia.helium.antlint.ant.types.Checker;
+
+/**
+ * <code>Check</code> represents a basic antlint component responsible for
+ * running the user configured checks.
+ * 
+ */
+public interface Check {
+
+    /**
+     * Method runs the configured checks. Usually checks which have to be run
+     * only time should be used here.
+     */
+    void run();
+
+    /**
+     * Method runs the configured checks against the given node.
+     * 
+     * @param node
+     *            is the node of the xml to be checked.
+     */
+    void run(Element node);
+
+    /**
+     * Method runs the configured checks against the given ant file.
+     * 
+     * @param fileName
+     *            is the name of the ant file.
+     */
+    void run(String fileName);
+
+    /**
+     * Set the {@link Checker} configured for this check.
+     * 
+     * @param checker
+     *            is the {@link Checker} to set.
+     */
+    void setChecker(Checker checker);
+
+    /**
+     * Set the ant file to hold information about the checks conducted on the
+     * file.
+     * 
+     * @param antFile
+     *            is the {@link AntFile} to set.
+     */
+    void setAntFile(AntFile antFile);
+
+    /**
+     * Return whether this is check is enabled or not.
+     * 
+     * @return true if a checker is available for this check; otherwise false.
+     */
+    boolean isEnabled();
+
+    /**
+     * Log the given message.
+     * 
+     * @param message is the message to be logged.
+     */
+    void log(String message);
+
+    /**
+     * Return the {@link Checker} configured for this {@link Check}.
+     * 
+     * @return the {@link Checker}.
+     */
+    Checker getChecker();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/checks/CheckAntCall.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,61 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+package com.nokia.helium.antlint.checks;
+
+import java.util.List;
+
+import org.dom4j.Element;
+
+/**
+ * <code>CheckAntCall</code> is used to check whether antcall is used with no param
+ * elements and calls the target with no dependencies
+ *
+ */
+public class CheckAntCall extends AbstractCheck {
+
+    /**
+     * {@inheritDoc}
+     */
+    public void run(Element node) {
+        if (node.getName().equals("target")) {
+            checkAntCalls(node);
+        }
+    }
+
+    /**
+     * Check against the given node.
+     * 
+     * @param node is the node to check.
+     */
+    @SuppressWarnings("unchecked")
+    private void checkAntCalls(Element node) {
+        if (node.elements("antcall") != null) {
+            List<Element> antcallList = node.elements("antcall");
+            for (Element antcallElement : antcallList) {
+                String antcallName = antcallElement.attributeValue("target");
+                if (((node.elements("param") == null) || (node
+                        .elements("param") != null && node.elements("param")
+                        .isEmpty()))
+                        && !checkTargetDependency(antcallName)) {
+                    log("<antcall> is used with no param elements and calls the target "
+                            + antcallName
+                            + " that has no dependencies! (<runtarget> could be used instead.)");
+                }
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/checks/CheckDescription.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+package com.nokia.helium.antlint.checks;
+
+import org.dom4j.Element;
+
+/**
+ * <code>CheckDescription</code> is used to check whether project description is
+ * present or not.
+ * 
+ */
+public class CheckDescription extends AbstractCheck {
+
+    /**
+     * {@inheritDoc}
+     */
+    public void run(Element node) {
+        if (node.getName().equals("project")
+                && node.element("description") == null) {
+            log("Description not specified!");
+        }
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/checks/CheckDuplicateNames.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+package com.nokia.helium.antlint.checks;
+
+import java.util.ArrayList;
+import java.util.Hashtable;
+
+/**
+ * <code>CheckDuplicateNames</code> is used to check for duplicate macro names.
+ *
+ */
+public class CheckDuplicateNames extends AbstractCheck {
+
+    /**
+     * {@inheritDoc}
+     */
+    @SuppressWarnings("unchecked")
+    public void run() {
+
+        Hashtable<String, Class<Object>> taskdefs = getProject()
+                .getTaskDefinitions();
+        ArrayList<String> macros = new ArrayList<String>(taskdefs.keySet());
+        for (String macroName : macros) {
+            if (macros.contains(macroName + "Macro")
+                    || macros.contains(macroName + "macro"))
+                log(macroName + " and " + macroName + "Macro"
+                        + " found duplicate name");
+        }
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/checks/CheckFileName.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+package com.nokia.helium.antlint.checks;
+
+import java.io.File;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.apache.tools.ant.BuildException;
+
+/**
+ * <code>CheckFileName</code> is used to check the naming convention of the ant files.
+ *
+ */
+public class CheckFileName extends AbstractCheck {
+
+    /**
+     * {@inheritDoc}
+     */
+    public void run(String arg) {
+        if (arg != null) {
+            try {
+                boolean found = false;
+                Pattern p1 = Pattern.compile(getPattern());
+                Matcher m1 = p1.matcher(new File(arg).getName());
+                while (m1.find()) {
+                    found = true;
+                }
+                if (!found) {
+                    log("INVALID File Name: " + arg);
+                }
+            } catch (Exception e) {
+                throw new BuildException("W: INVALID File Name: " + arg
+                        + e.getMessage());
+            }
+        }
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/checks/CheckIndentation.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+package com.nokia.helium.antlint.checks;
+
+import java.io.File;
+
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+
+import com.nokia.helium.antlint.AntLintHandler;
+
+/**
+ * <code>CheckIndentation</code> is used to check the indentations in the ant files.
+ *
+ */
+public class CheckIndentation extends AbstractCheck {
+
+    /**
+     * {@inheritDoc}
+     */
+    public void run(String antFileName) {
+        try {
+            SAXParserFactory saxFactory = SAXParserFactory.newInstance();
+            saxFactory.setNamespaceAware(true);
+            saxFactory.setValidating(true);
+            SAXParser parser = saxFactory.newSAXParser();
+            AntLintHandler handler = new AntLintHandler(this);
+            handler.setIndentationCheck(true);
+            parser.parse(new File(antFileName), handler);
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        } 
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/checks/CheckJepJythonScript.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+package com.nokia.helium.antlint.checks;
+
+import java.util.List;
+
+import org.dom4j.Element;
+
+/**
+ * <code>CheckJepJythonScript</code> is used to check the coding convention in Jep and
+ * Jython scripts
+ *
+ */
+public class CheckJepJythonScript extends AbstractScriptCheck {
+
+    /**
+     * {@inheritDoc}
+     */
+    public void run(Element node) {
+        if (node.getName().equals("target")) {
+            checkScripts(node);
+        }
+
+        if (node.getName().equals("scriptdef")) {
+            String scriptdefname = node.attributeValue("name");
+            String language = node.attributeValue("language");
+            if (language.equals("jep") || language.equals("jython")) {
+                writeJepFile(scriptdefname, node.getText());
+            }
+        }
+    }
+
+    /**
+     * Check against the given node.
+     * 
+     * @param node is the node to check.
+     */
+    @SuppressWarnings("unchecked")
+    private void checkScripts(Element node) {
+        String target = node.attributeValue("name");
+        List<Element> scriptList = node.selectNodes("//target[@name='" + target
+                + "']/descendant::script");
+        for (Element scriptElement : scriptList) {
+            String language = scriptElement.attributeValue("language");
+            if (language.equals("jep") || language.equals("jython")) {
+                writeJepFile("target_" + target, scriptElement.getText());
+            }
+        }
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/checks/CheckPresetDefMacroDefName.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+package com.nokia.helium.antlint.checks;
+
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.apache.tools.ant.BuildException;
+import org.dom4j.Element;
+
+/**
+ * <code>CheckPresetDefMacroDefName</code> is used to check the naming
+ * convention of presetdef and macrodef
+ * 
+ */
+public class CheckPresetDefMacroDefName extends AbstractCheck {
+
+    /**
+     * {@inheritDoc}
+     */
+    @SuppressWarnings("unchecked")
+    public void run(Element node) {
+        if (node.getName().equals("presetdef")
+                || node.getName().equals("macrodef")) {
+            String text = node.attributeValue("name");
+            if (text != null && !text.isEmpty()) {
+                checkDefName(text);
+            }
+
+            List<Element> attributeList = node.elements("attribute");
+            for (Element attributeElement : attributeList) {
+                String attributeName = attributeElement.attributeValue("name");
+                checkDefName(attributeName);
+            }
+        }
+    }
+
+    /**
+     * Check the given text.
+     * 
+     * @param text
+     *            is the text to check.
+     */
+    private void checkDefName(String text) {
+        try {
+            Pattern p1 = Pattern.compile(getPattern());
+            Matcher m1 = p1.matcher(text);
+            if (!m1.matches()) {
+                log("INVALID PRESETDEF/MACRODEF Name: " + text);
+            }
+        } catch (Exception e) {
+            throw new BuildException("Not able to match the MacroDef Name for "
+                    + text);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/checks/CheckProjectName.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+package com.nokia.helium.antlint.checks;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.apache.tools.ant.BuildException;
+import org.dom4j.Element;
+
+/**
+ * <code>CheckProjectName</code> is used to check the naming convention of
+ * project names.
+ * 
+ */
+public class CheckProjectName extends AbstractCheck {
+
+    /**
+     * {@inheritDoc}
+     */
+    public void run(Element node) {
+        if (node.getName().equals("project")) {
+            String text = node.attributeValue("name");
+            if (text != null && !text.isEmpty()) {
+                checkProjectName(text);
+            } else {
+                log("Project name not specified!");
+            }
+
+        }
+    }
+
+    /**
+     * Check the given the project name.
+     * 
+     * @param text is the text to check.
+     */
+    private void checkProjectName(String text) {
+        try {
+            Pattern p1 = Pattern.compile(getPattern());
+            Matcher m1 = p1.matcher(text);
+            if (!m1.matches()) {
+                log("INVALID Project Name: " + text);
+            }
+        } catch (Exception e) {
+            throw new BuildException("Not able to match Project Name for "
+                    + text);
+        }
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/checks/CheckPropertiesInDataModel.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,119 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+package com.nokia.helium.antlint.checks;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.dom4j.Element;
+
+/**
+ * <code>CheckPropertiesInDataModel</code> is used to check whether the properties are
+ * defined in data model
+ *
+ */
+public class CheckPropertiesInDataModel extends AbstractScriptCheck {
+
+    /**
+     * {@inheritDoc}
+     */
+    public void run(Element node) {
+        if (node.getName().equals("target")) {
+            checkInScripts(node);
+            checkInScriptConditions(node);
+            checkInPythonTasks(node);
+        }
+        
+        if (node.getName().equals("scriptdef")) {
+            String language = node.attributeValue("language");
+
+            if (language.equals("jep") || language.equals("jython")) {
+                checkJepPropertiesInText(node.getText());
+            }
+        }
+    }
+
+    /**
+     * Check the properties defined inside script condition.
+     *  
+     * @param node is the node to check.
+     */
+    @SuppressWarnings("unchecked")
+    private void checkInScriptConditions(Element node) {
+        String target = node.attributeValue("name");
+        List<Element> scriptList = node.selectNodes("//target[@name='" + target
+                + "']/descendant::scriptcondition");
+        for (Element scriptElement : scriptList) {
+            String language = scriptElement.attributeValue("language");
+            if (language.equals("jep") || language.equals("jython")) {
+                checkJepPropertiesInText(scriptElement.getText());
+            }
+        }
+    }
+
+    /**
+     * Check the properties defined inside scripts.
+     *  
+     * @param node is the node to check.
+     */
+    @SuppressWarnings("unchecked")
+    private void checkInScripts(Element node) {
+        String target = node.attributeValue("name");
+        List<Element> scriptList = node.selectNodes("//target[@name='" + target
+                + "']/descendant::script");
+        for (Element scriptElement : scriptList) {
+            String language = scriptElement.attributeValue("language");
+            if (language.equals("jep") || language.equals("jython")) {
+                checkJepPropertiesInText(scriptElement.getText());
+            }
+        }
+    }
+    
+    /**
+     * Check the properties defined inside python tasks.
+     *  
+     * @param node is the node to check.
+     */
+    @SuppressWarnings("unchecked")
+    private void checkInPythonTasks(Element node) {
+        String target = node.attributeValue("name");
+        List<Element> pythonList = node.selectNodes("//target[@name='" + target
+                + "']/descendant::*[name()=\"hlm:python\"]");
+        for (Element pythonElement : pythonList) {
+            checkPropertiesInText(pythonElement.getText());
+        }
+    }
+
+    /**
+     * Check for the properties in the given text.
+     * 
+     * @param text is the text to lookup.
+     */
+    private void checkPropertiesInText(String text) {
+        Pattern p1 = Pattern.compile("r[\"']\\$\\{([a-zA-Z0-9\\.]*)\\}[\"']");
+        Matcher m1 = p1.matcher(text);
+        ArrayList<String> props = new ArrayList<String>();
+        while (m1.find()) {
+            props.add(m1.group(1));
+        }
+        for (String group : props)
+            checkPropertyInModel(group);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/checks/CheckPropertyName.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,72 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+package com.nokia.helium.antlint.checks;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.apache.tools.ant.BuildException;
+import org.dom4j.Element;
+
+/**
+ * <code>CheckPropertyName</code> is used to check the naming convention of
+ * property names.
+ * 
+ */
+public class CheckPropertyName extends AbstractCheck {
+
+    /**
+     * {@inheritDoc}
+     */
+    public void run(Element node) {
+        if (node.getName().equals("property")) {
+            String text = node.attributeValue("name");
+            if (text != null && !text.isEmpty()) {
+                checkPropertyName(text);
+            }
+        }
+    }
+
+    /**
+     * Check the given property name.
+     * 
+     * @param propertyName is the property name to check.
+     */
+    private void checkPropertyName(String propertyName) {
+        try {
+            Pattern p1 = Pattern.compile(getPattern());
+            Matcher m1 = p1.matcher(propertyName);
+            if (!m1.matches() && !isPropertyAlreadyVisited(propertyName)) {
+                log("INVALID Property Name: " + propertyName);
+                getAntFile().markPropertyAsVisited(propertyName);
+            }
+        } catch (Exception e) {
+            throw new BuildException("Not able to match the Property Name for "
+                    + propertyName);
+        }
+    }
+
+    /**
+     * Check whether the property is already visited or not.
+     * 
+     * @param propertyName is the property to be checked.
+     * @return true, if already been visited; otherwise false
+     */
+    private boolean isPropertyAlreadyVisited(String propertyName) {
+        return getAntFile().isPropertyVisited(propertyName);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/checks/CheckPythonTasks.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,79 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+package com.nokia.helium.antlint.checks;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.PrintWriter;
+import java.util.List;
+
+import org.apache.tools.ant.BuildException;
+import org.dom4j.Element;
+
+/**
+ * <code>CheckPythonTasks</code> is used to the check the coding convention of
+ * python tasks.
+ * 
+ */
+public class CheckPythonTasks extends AbstractCheck {
+
+    /**
+     * {@inheritDoc}
+     */
+    @SuppressWarnings("unchecked")
+    public void run(Element node) {
+        if (node.getName().equals("target")) {
+            String target = node.attributeValue("name");
+            List<Element> pythonList = node.selectNodes("//target[@name='"
+                    + target + "']/descendant::*[name()=\"hlm:python\"]");
+            int i = 0;
+            for (Element pythonElement : pythonList) {
+                writePythonFile(i + "_" + target, pythonElement.getText());
+                i++;
+            }
+        }
+    }
+
+    /**
+     * Writes the given text to a python file.
+     * 
+     * @param name
+     *            is the name of the file to be written.
+     * @param text
+     *            is the text to be written inside the file.
+     */
+    private void writePythonFile(String name, String text) {
+        try {
+            String heliumpath = new File(getProject().getProperty(
+                    "helium.build.dir")).getCanonicalPath();
+            new File(heliumpath + File.separator + "python").mkdirs();
+            File file = new File(heliumpath + File.separator + "python"
+                    + File.separator + "target" + name + ".py");
+            PrintWriter output = new PrintWriter(new FileOutputStream(file));
+            if (!text.equals("")) {
+                output.write("def abc():");
+                for (String t : text.split("\n"))
+                    output.write("    " + t + "\n");
+            }
+            output.close();
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new BuildException("Not able to write python file " + name
+                    + ".py");
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/checks/CheckRunTarget.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+package com.nokia.helium.antlint.checks;
+
+import java.util.List;
+
+import org.dom4j.Element;
+
+/**
+ * <code>CheckRunTarget</code> is used to check whether runtarget calls a target
+ * that has dependencies.
+ * 
+ */
+public class CheckRunTarget extends AbstractCheck {
+
+    /**
+     * {@inheritDoc}
+     */
+    public void run(Element node) {
+        if (node.getName().equals("target")) {
+            checkRunTargets(node);
+        }
+    }
+
+    /**
+     * Check against the given node.
+     * 
+     * @param node
+     *            is the node to check.
+     */
+    @SuppressWarnings("unchecked")
+    private void checkRunTargets(Element node) {
+        if (node.elements("runtarget") != null) {
+            List<Element> runTargetList = node.elements("runtarget");
+            for (Element runTargetElement : runTargetList) {
+                String runTargetName = runTargetElement
+                        .attributeValue("target");
+                if (checkTargetDependency(runTargetName)) {
+                    log("<runtarget> calls the target " + runTargetName
+                            + " that has dependencies!");
+                }
+            }
+        }
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/checks/CheckScriptCondition.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,58 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+package com.nokia.helium.antlint.checks;
+
+import java.util.List;
+
+import org.dom4j.Element;
+
+/**
+ * <code>CheckScriptCondition</code> is used to check the coding convention in
+ * script condition
+ * 
+ */
+public class CheckScriptCondition extends AbstractScriptCheck {
+
+    /**
+     * {@inheritDoc}
+     */
+    public void run(Element node) {
+        if (node.getName().equals("target")) {
+            checkScriptConditions(node);
+        }
+    }
+
+    /**
+     * Check against the given node.
+     * 
+     * @param node
+     *            is the node to check.
+     */
+    @SuppressWarnings("unchecked")
+    private void checkScriptConditions(Element node) {
+        String target = node.attributeValue("name");
+        List<Element> scriptList = node.selectNodes("//target[@name='" + target
+                + "']/descendant::scriptcondition");
+        for (Element scriptElement : scriptList) {
+            String language = scriptElement.attributeValue("language");
+            if (language.equals("jep") || language.equals("jython")) {
+                writeJepFile("scriptcondition_" + target, scriptElement
+                        .getText());
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/checks/CheckScriptDef.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,121 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+package com.nokia.helium.antlint.checks;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.apache.tools.ant.BuildException;
+import org.dom4j.Element;
+import org.dom4j.Node;
+
+/**
+ * <code>CheckScriptDef</code> is used to check the coding convention in
+ * scriptdef.
+ * 
+ */
+public class CheckScriptDef extends AbstractScriptCheck {
+
+    /**
+     * {@inheritDoc}
+     */
+    public void run(Element node) {
+        if (node.getName().equals("scriptdef")) {
+            String scriptdefname = node.attributeValue("name");
+            String language = node.attributeValue("language");
+
+            checkScriptDef(scriptdefname, node);
+
+            if (language.equals("beanshell")) {
+                writeBeanshellFile(scriptdefname, node.getText());
+            }
+        }
+    }
+
+    /**
+     * Check against the given node.
+     * 
+     * @param node
+     *            is the node to check.
+     */
+    @SuppressWarnings("unchecked")
+    public void checkScriptDef(String name, Node node) {
+        List<Node> statements = node.selectNodes("//scriptdef[@name='" + name
+                + "']/attribute");
+        Pattern p1 = Pattern.compile("attributes.get\\([\"']([^\"']*)[\"']\\)");
+        Matcher m1 = p1.matcher(node.getText());
+        ArrayList<String> props = new ArrayList<String>();
+        while (m1.find()) {
+            props.add(m1.group(1));
+        }
+
+        if (!statements.isEmpty() && !props.isEmpty()) {
+            for (Node statement : statements) {
+                if (!props.contains(statement.valueOf("@name"))) {
+                    // for (String x : props)
+                    // log(x);
+                    log("Scriptdef " + name + " does not use "
+                            + statement.valueOf("@name"));
+                }
+            }
+        }
+    }
+
+    /**
+     * Write a bean shell file with the given text.
+     * 
+     * @param scriptdefname
+     *            is the name of the file to be written.
+     * @param text
+     *            is the text to be written inside the file.
+     */
+    private void writeBeanshellFile(String scriptdefname, String text) {
+        scriptdefname = "Beanshell" + scriptdefname;
+        try {
+            String heliumpath = new File(getProject().getProperty(
+                    "helium.build.dir")).getCanonicalPath();
+            new File(heliumpath + File.separator + "beanshell").mkdirs();
+            File file = new File(heliumpath + File.separator + "beanshell"
+                    + File.separator + scriptdefname + ".java");
+            PrintWriter output = new PrintWriter(new FileOutputStream(file));
+
+            for (String line : text.split("\n")) {
+                if (line.trim().startsWith("import"))
+                    output.write(line + "\n");
+            }
+
+            output.write("/**\n * x\n */\npublic final class " + scriptdefname
+                    + " {\n");
+            output.write("private " + scriptdefname + "() { }\n");
+            output.write("public static void main(String[] args) {\n");
+            for (String line : text.split("\n")) {
+                if (!line.trim().startsWith("import"))
+                    output.write(line + "\n");
+            }
+            output.write("} }");
+            output.close();
+        } catch (Exception e) {
+            throw new BuildException("Not able to write Beanshell File "
+                    + scriptdefname + ".java");
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/checks/CheckScriptDefNameAttributes.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+package com.nokia.helium.antlint.checks;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.dom4j.Element;
+import org.dom4j.Node;
+
+/**
+ * <code>CheckScriptDefNameAttributes</code> is used to check the naming
+ * convention of scriptdef name attributes
+ * 
+ */
+public class CheckScriptDefNameAttributes extends AbstractCheck {
+
+    /**
+     * {@inheritDoc}
+     */
+    public void run(Element node) {
+        if (node.getName().equals("scriptdef")) {
+            String scriptdefname = node.attributeValue("name");
+            checkScriptDefNameAttributes(scriptdefname, node);
+        }
+    }
+
+    /**
+     * Check against the given node.
+     * 
+     * @param node
+     *            is the node to check.
+     */
+    @SuppressWarnings("unchecked")
+    public void checkScriptDefNameAttributes(String name, Node node) {
+        List<Node> statements = node.selectNodes("//scriptdef[@name='" + name
+                + "']/attribute");
+        Pattern p1 = Pattern.compile("attributes.get\\([\"']([^\"']*)[\"']\\)");
+        Matcher m1 = p1.matcher(node.getText());
+        ArrayList<String> props = new ArrayList<String>();
+        while (m1.find()) {
+            props.add(m1.group(1));
+        }
+
+        ArrayList<String> attributes = new ArrayList<String>();
+        for (Node statement : statements) {
+            attributes.add(statement.valueOf("@name"));
+        }
+        for (String x : props) {
+            if (!attributes.contains(x)) {
+                log("Scriptdef " + name + " does not have attribute " + x);
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/checks/CheckScriptDefStyle.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+package com.nokia.helium.antlint.checks;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.dom4j.Element;
+import org.dom4j.Node;
+
+/**
+ * <code>CheckScriptDefStyle</code> is used to check the coding style of
+ * scriptdef.
+ * 
+ */
+public class CheckScriptDefStyle extends AbstractCheck {
+
+    /**
+     * {@inheritDoc}
+     */
+    public void run(Element node) {
+        if (node.getName().equals("scriptdef")) {
+            String scriptdefname = node.attributeValue("name");
+            checkScriptDefStyle(scriptdefname, node);
+        }
+    }
+
+    /**
+     * Check against the given node.
+     * 
+     * @param node
+     *            is the node to check.
+     */
+    @SuppressWarnings("unchecked")
+    public void checkScriptDefStyle(String name, Node node) {
+        List<Node> statements = node.selectNodes("//scriptdef[@name='" + name
+                + "']/attribute");
+        Pattern p1 = Pattern.compile("attributes.get\\([\"']([^\"']*)[\"']\\)");
+        Matcher m1 = p1.matcher(node.getText());
+        ArrayList<String> props = new ArrayList<String>();
+        while (m1.find()) {
+            props.add(m1.group(1));
+        }
+
+        ArrayList<String> attributes = new ArrayList<String>();
+        for (Node statement : statements) {
+            attributes.add(statement.valueOf("@name"));
+        }
+
+        if (!statements.isEmpty() && props.isEmpty()) {
+            log("Scriptdef " + name
+                    + " doesn't reference attributes directly, poor style");
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/checks/CheckScriptSize.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,62 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+package com.nokia.helium.antlint.checks;
+
+import java.util.List;
+
+import org.dom4j.Element;
+import org.dom4j.Node;
+
+/**
+ * <code>CheckScriptSize</code> is used to check the size of script. By default,
+ * the script should not contain more than 1000 characters.
+ * 
+ */
+public class CheckScriptSize extends AbstractCheck {
+
+    /**
+     * {@inheritDoc}
+     */
+    public void run(Element node) {
+        if (node.getName().equals("target")) {
+            checkSizeOfScript(node);
+        }
+    }
+
+    /**
+     * Check against the given node.
+     * 
+     * @param node is the node to check.
+     */
+    @SuppressWarnings("unchecked")
+    private void checkSizeOfScript(Element node) {
+        String target = node.attributeValue("name");
+
+        List<Node> statements = node.selectNodes("//target[@name='" + target
+                + "']/script | //target[@name='" + target
+                + "']/*[name()=\"hlm:python\"]");
+
+        for (Node statement : statements) {
+            int size = statement.getText().length();
+            if (size > 1000) {
+                log("Target " + target + " has a script with " + size
+                        + " characters, code should be inside a python file");
+            }
+        }
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/checks/CheckTabCharacter.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,84 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+package com.nokia.helium.antlint.checks;
+
+import java.io.File;
+import java.util.List;
+
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+
+import org.dom4j.Element;
+import org.dom4j.Node;
+
+import com.nokia.helium.antlint.AntLintHandler;
+
+/**
+ * <code>CheckTabCharacter</code> is used to check the tab characters inside the
+ * ant files.
+ * 
+ */
+public class CheckTabCharacter extends AbstractCheck {
+
+    /**
+     * {@inheritDoc}
+     */
+    public void run(Element node) {
+        checkTabsInScript(node);
+    }
+
+    /**
+     * Check against the given node.
+     * 
+     * @param node
+     *            is the node to check.
+     */
+    @SuppressWarnings("unchecked")
+    private void checkTabsInScript(Element node) {
+        if (node.getName().equals("target")) {
+            String target = node.attributeValue("name");
+
+            List<Node> statements = node.selectNodes("//target[@name='"
+                    + target + "']/script | //target[@name='" + target
+                    + "']/*[name()=\"hlm:python\"]");
+
+            for (Node statement : statements) {
+                if (statement.getText().contains("\t")) {
+                    log("Target " + target + " has a script with tabs");
+                }
+            }
+        }
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void run(String antFileName) {
+        try {
+            SAXParserFactory saxFactory = SAXParserFactory.newInstance();
+            saxFactory.setNamespaceAware(true);
+            saxFactory.setValidating(true);
+            SAXParser parser = saxFactory.newSAXParser();
+            AntLintHandler handler = new AntLintHandler(this);
+            handler.setTabCharacterCheck(true);
+            parser.parse(new File(antFileName), handler);
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/checks/CheckTargetName.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,64 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+package com.nokia.helium.antlint.checks;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.apache.tools.ant.BuildException;
+import org.dom4j.Element;
+
+/**
+ * <code>CheckTargetName</code> is used to check the naming convention of the
+ * target names.
+ * 
+ */
+public class CheckTargetName extends AbstractCheck {
+
+    /**
+     * {@inheritDoc}
+     */
+    public void run(Element node) {
+        if (node.getName().equals("target")) {
+            String target = node.attributeValue("name");
+            checkTargetName(target);
+        }
+    }
+
+    /**
+     * Check the given target name.
+     * 
+     * @param targetName
+     *            is the target name to check.
+     */
+    private void checkTargetName(String targetName) {
+        if (targetName != null && !targetName.isEmpty()) {
+            try {
+                Pattern p1 = Pattern.compile(getPattern());
+                Matcher m1 = p1.matcher(targetName);
+                if (!m1.matches()) {
+                    log("INVALID Target Name: " + targetName);
+                }
+            } catch (Exception e) {
+                throw new BuildException(
+                        "Not able to match the target name for " + targetName);
+            }
+        } else {
+            log("Target name not specified!");
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/checks/CheckUseOfEqualsTask.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+package com.nokia.helium.antlint.checks;
+
+import org.dom4j.Element;
+
+/**
+ * <code>CheckUseOfEqualsTask</code> is used to check the usage of equals task
+ * as against istrue task.
+ * 
+ */
+public class CheckUseOfEqualsTask extends AbstractCheck {
+
+    /**
+     * {@inheritDoc}
+     */
+    public void run(Element node) {
+        if (node.getName().equals("equals")) {
+            String text = node.attributeValue("arg2");
+            if (text.equals("true") || text.equals("yes")) {
+                log(node.attributeValue("arg1")
+                        + " uses 'equals' should use 'istrue' task");
+            }
+        }
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antlint/src/com/nokia/helium/antlint/checks/CheckUseOfIfInTargets.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,83 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+package com.nokia.helium.antlint.checks;
+
+import java.util.List;
+
+import org.dom4j.Element;
+import org.dom4j.Node;
+
+/**
+ * <code>CheckUseOfIfInTargets</code> is used to check the usage of if task as
+ * against the condition task or &lt;target if|unless="property.name"&gt; inside
+ * targets.
+ * 
+ */
+public class CheckUseOfIfInTargets extends AbstractCheck {
+
+    /**
+     * {@inheritDoc}
+     */
+    public void run(Element node) {
+        if (node.getName().equals("target")) {
+            checkUseOfIf(node);
+        }
+    }
+
+    /**
+     * Check against the given node.
+     * 
+     * @param node
+     *            is the node to check.
+     */
+    @SuppressWarnings("unchecked")
+    private void checkUseOfIf(Element node) {
+        String target = node.attributeValue("name");
+        String targetxpath = "//target[@name='" + target + "']//if";
+
+        List<Node> statements2 = node.selectNodes(targetxpath);
+        for (Node statement : statements2) {
+            List<Node> conditiontest = statement.selectNodes("./then/property");
+            if (conditiontest != null && conditiontest.size() == 1) {
+                List<Node> conditiontest2 = statement
+                        .selectNodes("./else/property");
+                if (conditiontest2 != null && conditiontest2.size() == 1) {
+                    log("Target "
+                            + target
+                            + " poor use of if-else-property statement, use condition task");
+                } else if (statement.selectNodes("./else").size() == 0) {
+                    log("Target "
+                            + target
+                            + " poor use of if-then-property statement, use condition task");
+                }
+            }
+        }
+        List<Node> statements = node.selectNodes("//target[@name='" + target
+                + "']/*");
+        if (!(statements.size() > 1)) {
+            if (node.selectSingleNode(targetxpath + "/else") == null) {
+                if (node.selectSingleNode(targetxpath + "/isset") != null
+                        || node.selectSingleNode(targetxpath + "/not/isset") != null) {
+                    log("Target "
+                            + target
+                            + " poor use of if statement, use <target if|unless=\"prop\"");
+                }
+            }
+        }
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antlint/tests/antunit/test_antlint.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : test_antlint.ant.xml 
+Part of     : Helium AntLib
+
+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="test-antlint" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
+    <description>Helium Antlib AntLint unittests.</description>
+    
+    <!-- is called prior to the test -->
+    <target name="setUp">
+        <echo>-------------------------------------------------------------------------------</echo>
+        <delete dir="../output" failonerror="false" />
+    </target>
+
+    <!-- is called after the test, even if that caused an error -->
+    <target name="tearDown">
+        <delete dir="../output" failonerror="false" />
+        <echo>-------------------------------------------------------------------------------</echo>
+    </target>
+
+    <target name="test-antlint">
+        <au:expectfailure>
+            <runtarget target="antlint"/>    
+            <au:assertLogContains text="W: Description not specified!" level="info"/>
+            <au:assertLogContains text="W: Project name not specified!" level="info"/>
+            <au:assertLogContains text="W: INVALID File Name:" level="info"/>
+            <au:assertLogContains text="E: 234: Bad indentation!" level="info"/>
+            <au:assertLogContains text="E: 229: Tabs should not be used!" level="info"/>
+            <au:assertLogContains text="W: INVALID Project Name: Sample" level="info"/>
+            <au:assertLogContains text="W: INVALID Property Name: check-property-name" level="info"/>
+            <au:assertLogContains text="W: INVALID PRESETDEF/MACRODEF Name: check_PresetDef.Name" level="info"/>
+            <au:assertLogContains text="W: INVALID Target Name: Check_target.Name" level="info"/>
+            <au:assertLogContains text="runtarget> calls the target smile that has dependencies!" level="info"/>
+            <au:assertLogContains text="antcall> is used with no param elements and calls the target hello that has no dependencies!" level="info"/>
+            <au:assertLogContains text="W: Target check-script-size has a script with 1098 characters, code should be inside a python file" level="info"/>
+            <au:assertLogContains text="W: Target check-use-of-if-in-targets poor use of if statement, use " level="info"/>
+            <au:assertLogContains text="W: Target check-use-of-if-else-in-targets poor use of if-else-property statement, use condition task" level="info"/>
+            <au:assertLogContains text="W: Target check-use-of-if-then-in-targets poor use of if-then-property statement, use condition task" level="info"/>
+            <au:assertLogContains text="W: test.script.property not in data model" level="info"/>
+            <au:assertLogContains text="W: Target check-prop-in-scriptcondition poor use of if-else-property statement, use condition task" level="info"/>
+            <au:assertLogContains text="W: build.errors.total not in data model" level="info"/>
+            <au:assertLogContains text="W: s60.getenv.path not in data model" level="info"/>
+            <au:assertLogContains text="W: test.boolean1 uses 'equals' should use 'istrue' task" level="info"/>
+            <au:assertLogContains text="W: test.boolean2 uses 'equals' should use 'istrue' task" level="info"/>
+            <au:assertLogContains text="E: ${ found in target_check-jython-script" level="info"/>
+            <au:assertLogContains text="W: ${ found in scriptcondition_check-scriptcondition" level="info"/>
+            <au:assertLogContains text="W: Target check-scriptcondition poor use of if-else-property statement, use condition task" level="info"/>
+            <au:assertLogContains text="W: INVALID PRESETDEF/MACRODEF Name: foo_Macro" level="info"/>
+            <au:assertLogContains text="W: test.scriptdef.property not in data model" level="info"/>
+            <au:assertLogContains text="E: Scriptdef check-scriptdef does not use attr2" level="info"/>
+            <au:assertLogContains text="W: Scriptdef check-scriptdef-style doesn't reference attributes directly, poor style" level="info"/>
+            <au:assertLogContains text="E: ${ found in check-script" level="info"/>
+            <au:assertLogContains text="E: Scriptdef check-scriptdef-attributes does not have attribute target" level="info"/>
+
+        </au:expectfailure>
+    </target>
+    
+    <target name="antlint">
+        <antlint>
+            <fileset id="antlint.files" dir="${antlint.test.dir}/data">
+                <include name="*.xml"/>
+                <include name="*.ant.xml"/>
+                <include name="*build.xml"/>
+                <include name="*.antlib.xml"/>
+            </fileset>
+            <checker name="CheckTabCharacter" severity="error" />
+            <checker name="CheckPropertyName" severity="warning">([a-z0-9[\\d\\_\\.\\@\\{\\}\\$]]*)</checker>
+            <checker name="CheckTargetName" severity="warning">([a-z0-9[\\d\\-]]*)</checker>
+            <checker name="CheckIndentation" severity="error"/>
+            <checker name="CheckPresetDefMacroDefName" severity="warning">([a-z0-9][a-zA-Z0-9]*)</checker>       
+            <checker name="CheckProjectName" severity="warning">([a-z0-9[\\d\\.\\_\\-]]*)</checker>
+            <checker name="CheckDescription" severity="warning"/>
+            <checker name="CheckFileName" severity="warning" >^build.xml$|ant.xml$|antlib.xml$</checker>
+            <checker name="CheckRunTarget" severity="warning"/>
+            <checker name="CheckAntCall" severity="warning"/>
+            <checker name="CheckScriptSize" severity="warning"/>
+            <checker name="CheckUseOfIfInTargets" severity="warning"/>
+            <checker name="CheckJepJythonScript" severity="error" />
+            <checker name="CheckPropertiesInDataModel" severity="warning"/>
+            <checker name="CheckScriptCondition" severity="warning"/>
+            <checker name="CheckPythonTasks" severity="warning"/>
+            <checker name="CheckUseOfEqualsTask" severity="warning"/>
+            <checker name="CheckScriptDefNameAttributes" severity="error"/>
+            <checker name="CheckScriptDefStyle" severity="warning"/>
+            <checker name="CheckScriptDef" severity="error"/>
+            <checker name="CheckDuplicateNames" severity="warning"/>
+        </antlint>
+    </target>
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antlint/tests/bld.sh	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,23 @@
+#!/bin/sh
+
+#
+# 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: 
+#
+
+if [ -f ~/.bashrc ] ; then
+    . ~/.bashrc
+fi
+
+ant $*
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antlint/tests/build.bat	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,31 @@
+@echo off
+
+rem
+rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+rem All rights reserved.
+rem This component and the accompanying materials are made available
+rem under the terms of the License "Eclipse Public License v1.0"
+rem which accompanies this distribution, and is available
+rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+rem
+rem Initial Contributors:
+rem Nokia Corporation - initial contribution.
+rem
+rem Contributors:
+rem
+rem Description: 
+rem
+
+setlocal
+if not defined JAVA_6_HOME (
+set TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
+) ELSE  set TESTED_JAVA=%JAVA_6_HOME%
+if exist %TESTED_JAVA% (set JAVA_HOME=%TESTED_JAVA%)
+call ant -Dant.executor.class=com.nokia.helium.core.ant.HeliumExecutor %*
+if "%ERRORLEVEL%" neq "0" (goto error)
+endlocal
+goto :eof
+
+:error
+endlocal
+if "%OS%"=="Windows_NT" color 00
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antlint/tests/build.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : build.xml 
+Part of     : Helium AntLib
+
+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="helium-antlint" xmlns:au="antlib:org.apache.ant.antunit">
+    <description>Helium Antlib Antlint tests.</description>
+    
+    <dirname property="antlint.test.dir" file="${ant.file.helium-antlib-antlint-unittest}"/>
+    <import file="${antlint.test.dir}/data/sample.ant.xml" />
+    <import file="${builder.dir}/java/test-macros.ant.xml"/>
+    
+    
+    <property name="data.model.parsed" location="${antlint.test.dir}/data/datamodel.out"/>
+
+    <target name="antlint">
+        <antlint>
+            <fileset id="antlint.files" dir="${antlint.test.dir}/data">
+                <include name="*.xml"/>
+                <include name="*.ant.xml"/>
+                <include name="*build.xml"/>
+                <include name="*.antlib.xml"/>
+            </fileset>
+            <checker name="CheckTabCharacter" severity="error" />
+            <checker name="CheckPropertyName" severity="warning">([a-z0-9[\\d\\_\\.\\@\\{\\}\\$]]*)</checker>
+            <checker name="CheckTargetName" severity="warning">([a-z0-9[\\d\\-]]*)</checker>
+            <checker name="CheckIndentation" severity="error"/>
+            <checker name="CheckPresetDefMacroDefName" severity="warning">([a-z0-9][a-zA-Z0-9]*)</checker>       
+            <checker name="CheckProjectName" severity="warning">([a-z0-9[\\d\\.\\_\\-]]*)</checker>
+            <checker name="CheckDescription" severity="warning"/>
+            <checker name="CheckFileName" severity="warning" >^build.xml$|ant.xml$|antlib.xml$</checker>
+            <checker name="CheckRunTarget" severity="warning"/>
+            <checker name="CheckAntCall" severity="warning"/>
+            <checker name="CheckScriptSize" severity="warning"/>
+            <checker name="CheckUseOfIfInTargets" severity="warning"/>
+            <checker name="CheckJepJythonScript" severity="error" />
+            <checker name="CheckPropertiesInDataModel" severity="warning"/>
+            <checker name="CheckScriptCondition" severity="warning"/>
+            <checker name="CheckPythonTasks" severity="warning"/>
+            <checker name="CheckUseOfEqualsTask" severity="warning"/>
+            <checker name="CheckScriptDefNameAttributes" severity="error"/>
+            <checker name="CheckScriptDefStyle" severity="warning"/>
+            <checker name="CheckScriptDef" severity="error"/>
+            <checker name="CheckDuplicateNames" severity="warning"/>
+        </antlint>
+    </target>
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antlint/tests/data/build.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : build.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="sample.build">
+
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antlint/tests/data/datamodel.out	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<heliumDataModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="..\tools\common\schema\helium_data_model.xsd">
+<property>
+        <name>build.version</name>
+        <editStatus>discouraged</editStatus>
+        <type>string</type>
+        <description>Version of the build.</description>
+    </property>
+<property>
+        <name>build.drive</name>
+        <editStatus>discouraged</editStatus>
+        <type>string</type>
+        <description>Build Drive.</description>
+    </property>
+    
+</heliumDataModel>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antlint/tests/data/invalid.build.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : build.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="">
+
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antlint/tests/data/sample.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,234 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : test.tabchar.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="Sample" xmlns:hlm="http://www.nokia.com/helium">
+    <description>
+        Testing for tab character
+    </description>
+    
+    <taskdef resource="net/sf/antcontrib/antlib.xml"/>
+   
+    
+    <property name="check-property-name" value="test"/>
+    <property name="helium.build.dir" value="output"/>
+    
+    <presetdef name="check_PresetDef.Name" >
+        <echo>check PresetDef Name </echo>
+    </presetdef>
+    
+    <target name="hello">
+        <echo>Hello Checking Tab Character</echo>
+    </target>
+    
+    <target name="smile" depends="hello">
+        <echo>Print Smile</echo>
+    </target>
+      
+    <target name="Check_target.Name">
+        <echo>Checking target name</echo>
+    </target>  
+    
+    <target name="check-run-target">
+        <runtarget target="smile"/>
+    </target>
+    
+    <target name="check-ant-call">
+        <antcall target="hello"/>
+    </target>
+    
+    <target name="check-script-size">
+        <hlm:python>
+print check-script-size
+print check-script-size
+print check-script-size
+print check-script-size
+print check-script-size
+print check-script-size
+print check-script-size
+print check-script-size
+print check-script-size
+print check-script-size
+print check-script-size
+print check-script-size
+print check-script-size
+print check-script-size
+print check-script-size
+print check-script-size
+print check-script-size
+print check-script-size
+print check-script-size
+print check-script-size
+print check-script-size
+print check-script-size
+print check-script-size
+print check-script-size
+print check-script-size
+print check-script-size
+print check-script-size
+print check-script-size
+print check-script-size
+print check-script-size
+print check-script-size
+print check-script-size
+print check-script-size
+print check-script-size
+print check-script-size
+print check-script-size
+print check-script-size
+print check-script-size
+print check-script-size
+print check-script-size
+print check-script-size
+print check-script-size
+print check-script-size         
+print check-script-size
+print check-script-size
+        </hlm:python>
+    </target>
+    
+    <target name="check-use-of-if-in-targets">
+        <if>
+            <isset property="build.drive"/>
+            <then>
+                <echo> Using build drive ${build.drive} </echo>
+            </then>
+        </if>
+    </target>
+    
+    <target name="check-use-of-if-else-in-targets">
+        <if>
+            <and>
+                <isset property="major.version"/>
+                <isset property="minor.version"/>
+            </and>
+            <then>
+                <property name="core.build.version" value="1.0"/>
+            </then>
+            <else>
+                <property name="core.build.version" value="2.0"/>
+            </else>
+        </if>
+    </target>
+
+    <target name="check-use-of-if-then-in-targets">
+        <if>
+            <and>
+                <isset property="major.version"/>
+                <isset property="minor.version"/>
+            </and>
+            <then>
+                <property name="core.build.version" value="1.0"/>
+            </then>
+        </if>
+    </target>
+
+    <target name="check-prop-in-script">    
+        <script language="jython" setbeans="false">
+result = None
+if project.getProperty("test.script.property")is not None:
+    result = "found"
+        </script>
+    </target>
+
+    <target name="check-prop-in-scriptcondition">
+        <attribute name="phase" default="compile"/>
+        <sequential>
+            <if>
+                <scriptcondition language="jython" value="false">
+errorsTotal = project.getProperty("build.errors.total")
+if int(r'@{error.limit}') > -1:
+    if int(errorsTotal) > int(r'@{error.limit}'):
+        self.setValue(1)
+                </scriptcondition>
+                <then>
+                    <property name="compile.result" value="1"/>
+                </then>
+                <else>
+                    <property name="compile.result" value="0"/>
+                </else>
+            </if>
+        </sequential>
+    </target>
+
+    <target name="check-prop-in-pythontask">    
+        <hlm:python>
+from path import path
+print "Writing version file...."
+vfile = path(r'${build.drive}'+"/").joinpath('s60_version.txt')
+f = open(str(vfile), 'w')
+f.write(path(r'${s60.getenv.path}').name)
+f.close()
+        </hlm:python>   
+    </target>
+
+    <property name="test.boolean1" value="true"/>
+    <property name="test.boolean2" value="yes"/>
+    <property name="test.boolean3" value="yes"/>
+    
+    <target name="check-use-of-equals">
+        <if>
+            <and>
+                <equals arg1="test.boolean1" arg2="true"/>
+                <equals arg1="test.boolean2" arg2="yes"/>
+                <istrue value="test.boolean3"/>
+            </and>               
+            <then>
+                <echo>Equals</echo>
+            </then>
+        </if>
+    </target>
+
+    <target name="check-jython-script">
+        <script language="jython">
+if ${build.drive} is None:
+    print "Not found"        
+        </script>
+    </target>
+    
+    <target name="check-scriptcondition">
+        <attribute name="phase" default="compile"/>
+        <sequential>
+            <if>
+                <scriptcondition language="jython" value="false">
+errorsTotal = ${build.errors.total}
+if int(r'@{error.limit}') > -1:
+    if int(errorsTotal) > int(r'@{error.limit}'):
+        self.setValue(1)
+                </scriptcondition>
+                <then>
+                    <property name="compile.result" value="1"/>
+                </then>
+                <else>
+                    <property name="compile.result" value="0"/>
+                </else>
+            </if>
+        </sequential>
+    </target>
+
+    <target name="check-tabs">
+    	<echo>checking tab characters</echo>
+    </target>
+    
+    <target name="check-indentation">
+        <echo>checking indentation</echo>
+     </target>
+</project>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antlint/tests/data/sample.antlib.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : sample.antlib.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:
+
+============================================================================
+-->
+<antlib xmlns:au="org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
+    
+    
+    <!-- A simple test macro -->
+    <macrodef name="foo_Macro" uri="http://www.nokia.com/helium">
+        <sequential>
+            <echo>foo</echo>
+            <runtarget target="hello"/>
+        </sequential>
+    </macrodef>
+    
+    <macrodef name="pow" uri="http://www.nokia.com/helium">
+        <sequential>
+            <echo>pow</echo>
+        </sequential>
+    </macrodef>
+    
+    <scriptdef  name="check-prop-in-scriptdef" language="jython">
+result = None
+if project.getProperty("test.scriptdef.property")is not None:
+    result = "found"
+    </scriptdef>    
+    
+    <scriptdef name="check-scriptdef" language="jython">
+        <attribute name="attr0"/>
+        <attribute name="attr2"/>
+target = str(attributes.get('attr0'))    
+    </scriptdef>    
+    
+    <scriptdef name="check-scriptdef-style" language="jython" uri="http://www.nokia.com/helium">
+        <attribute name="output" />
+        <element name="fileset" type="fileset" />
+        <![CDATA[
+import integration.ant
+integration.ant.check_build_duplicates_task(project, self, attributes, elements)
+        ]]>
+    </scriptdef>
+    
+    <scriptdef name="check-script" language="jython">
+result = None
+if ${build.drive} is None:
+    result = "Not found"
+    </scriptdef>
+    
+    <scriptdef name="check-scriptdef-attributes" language="jython">
+target = str(attributes.get('target'))    
+    </scriptdef>
+</antlib>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antunit/bld.bat	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,39 @@
+@echo off
+
+rem
+rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+rem All rights reserved.
+rem This component and the accompanying materials are made available
+rem under the terms of the License "Eclipse Public License v1.0"
+rem which accompanies this distribution, and is available
+rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+rem
+rem Initial Contributors:
+rem Nokia Corporation - initial contribution.
+rem
+rem Contributors:
+rem
+rem Description: 
+rem
+
+setlocal
+if not defined JAVA_6_HOME (
+set TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
+) ELSE  set TESTED_JAVA=%JAVA_6_HOME%
+if exist %TESTED_JAVA% (set JAVA_HOME=%TESTED_JAVA%)
+
+REM Configure Ant 
+if not defined TESTED_ANT_HOME (
+set TESTED_ANT_HOME=C:\Apps\ant_1.7
+) 
+if exist %TESTED_ANT_HOME% (set ANT_HOME=%TESTED_ANT_HOME%)
+
+call java -cp ".\..\..\bin\helium-checktools.jar" com.nokia.helium.checktools.HeliumToolsCheckerMain -config ".\..\..\builder\helium.basic.tools.config"
+if "%ERRORLEVEL%" neq "0" (goto errorstop)
+
+ant -lib ../../builder/antlibs %*
+endlocal
+
+:errorstop
+@echo *** Build aborted with error
+exit /b 1
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antunit/build.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : build.xml 
+Part of     : Helium AntLib
+
+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="helium-antunit">
+    <description>Helium Antlib antunit.</description>
+    
+    <property name="builder.dir" location="../../builder"/>
+    <property name="sf.source.root.dir" location="../../" />
+    <import file="${builder.dir}/java/macros.ant.xml"/>
+
+</project>
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antunit/ivy.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+============================================================================ 
+Name        : ivy.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:
+
+============================================================================  
+-->
+<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
+    <info
+        organisation="com.nokia.helium"
+        module="helium-antunit"
+        status="integration">
+    </info>
+    <dependencies>
+        <dependency org="org.apache.ant" name="ant-antunit" rev="1.1" conf="default" />
+    </dependencies>
+</ivy-module>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antunit/src/com/nokia/helium/antunit/ant/antlib.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : antlib.xml 
+Part of     : Helium AntLib
+
+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:
+
+============================================================================
+-->
+<antlib>
+
+    <!-- Type definition -->
+    <typedef name="customListener" classname="com.nokia.helium.antunit.ant.types.CustomListener"/>
+    
+</antlib>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antunit/src/com/nokia/helium/antunit/ant/types/CustomListener.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,171 @@
+/*
+* Copyright (c) 2007-2008 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: 
+*
+*/
+package com.nokia.helium.antunit.ant.types;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.ant.antunit.AntUnitListener;
+import org.apache.ant.antunit.AssertionFailedException;
+import org.apache.tools.ant.BuildEvent;
+import org.apache.tools.ant.BuildListener;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.Task;
+import org.apache.tools.ant.types.DataType;
+
+
+/**
+ * The customListener type allows you to defines additional custom
+ * listener to be run while running test. Each test are considered
+ * as single build.
+ * 
+ * &lt;au:antunit&lt;
+ *     .......
+ *     &lt;hlm:customListener&lt;
+ *         &lt;hlm:listener classname="org.apache.tools.ant.listener.XmlLogger" /&lt;
+ *     &lt;/hlm:customListener&lt;
+ * &lt;/au:antunit&lt;
+ * 
+ * @ant.type name="customListener" category="antunit"
+ */
+public class CustomListener extends DataType implements AntUnitListener {
+    
+    private Project currentProject;
+    private List<Listener> listenerDefinitions = new ArrayList<Listener>();
+    private List<BuildListener> listeners =  new ArrayList<BuildListener>();
+    
+    /**
+     * Add an additional listener definition. 
+     */
+    public Listener createListener() {
+        Listener listener = new Listener();
+        listenerDefinitions.add(listener);
+        return listener;
+    }
+    
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void addError(String name, Throwable error) {
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void addFailure(String name, AssertionFailedException exception) {
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void endTest(String name) {
+        for (BuildListener bl : listeners) {
+            currentProject.removeBuildListener(bl);
+            bl.buildFinished(new BuildEvent(currentProject));
+        }
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void endTestSuite(Project project, String name) {
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void setCurrentTestProject(Project project) {
+        currentProject = project;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void setParentTask(Task task) {
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void startTest(String name) {
+        listeners.clear();
+        for (Listener l : listenerDefinitions) {
+            BuildListener bl = l.instantiate();
+            l.setProject(currentProject);
+            if (bl != null) {
+                listeners.add(bl);
+                bl.buildStarted(new BuildEvent(currentProject));
+                currentProject.addBuildListener(bl);
+            }
+        }
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void startTestSuite(Project project, String name) {
+    }
+
+    /**
+     * This class defines a listener to add
+     * to the AntUnit test. 
+     */
+    public class Listener extends DataType {
+        
+        private String className;
+        
+        /**
+         * Defines the classname to use to instantiate the listener.
+         * @param className
+         * @ant.required
+         */
+        public void setClassname(String className) {
+            this.className = className;
+        }
+        
+        /**
+         * Create a BuildListener instance based on the
+         * classname.
+         * @return a new BuildListener.
+         */
+        @SuppressWarnings("unchecked")
+        public BuildListener instantiate() {
+            if (className != null) {
+                try {
+                    Class<BuildListener> clazz = (Class<BuildListener>) Class.forName(className);
+                    return clazz.newInstance();
+                } catch (ClassNotFoundException e) {
+                    log("ERROR: " + e.toString(), Project.MSG_ERR);
+                } catch (InstantiationException e) {
+                    log("ERROR: " + e.toString(), Project.MSG_ERR);
+                } catch (IllegalAccessException e) {
+                    log("ERROR: " + e.toString(), Project.MSG_ERR);
+                }
+            }
+            return null;
+        }
+        
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antunit/tests/antunit/test_antunit.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : test_imaker.ant.xml 
+Part of     : Helium AntLib
+
+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="helium-antlib-antunit-unittest" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
+    <description>Helium Antlib imaker unittests.</description>
+
+    <taskdef resource="com/nokia/helium/antunit/ant/antlib.xml" uri="http://www.nokia.com/helium"/>
+    
+    <target name="test-antunit">
+        <au:antunit>
+            <fileset dir="../data_antunit" includes="antunit_*.ant.xml" />
+            <au:plainlistener logLevel="info"/>
+            <hlm:customListener>
+                <listener classname="org.apache.tools.ant.XmlLogger" />
+                <listener classname="invalid.Listener" />
+            </hlm:customListener>
+        </au:antunit>
+        <au:assertFileExists file="../log.xml" />
+        <delete file="../log.xml" failonerror="false" />
+    </target>
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antunit/tests/bld.sh	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+#
+# 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: 
+#
+
+if [ -f ~/.bashrc ] ; then
+    . ~/.bashrc
+fi
+
+export PATH=$PATH:.
+ant $*
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antunit/tests/build.bat	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,31 @@
+@echo off
+
+rem
+rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+rem All rights reserved.
+rem This component and the accompanying materials are made available
+rem under the terms of the License "Eclipse Public License v1.0"
+rem which accompanies this distribution, and is available
+rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+rem
+rem Initial Contributors:
+rem Nokia Corporation - initial contribution.
+rem
+rem Contributors:
+rem
+rem Description: 
+rem
+
+setlocal
+if not defined JAVA_6_HOME (
+set TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
+) ELSE  set TESTED_JAVA=%JAVA_6_HOME%
+if exist %TESTED_JAVA% (set JAVA_HOME=%TESTED_JAVA%)
+call ant %*
+if "%ERRORLEVEL%" neq "0" (goto error)
+endlocal
+goto :eof
+
+:error
+endlocal
+if "%OS%"=="Windows_NT" color 00
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antunit/tests/build.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : build.xml 
+Part of     : Helium AntLib
+
+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="helium-antunit" xmlns:au="antlib:org.apache.ant.antunit">
+    <description>Helium Antlib Sysdef unittests.</description>
+
+    
+    <import file="${builder.dir}/java/test-macros.ant.xml"/>
+
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/antunit/tests/data_antunit/antunit_unittest.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : test_imaker.ant.xml 
+Part of     : Helium AntLib
+
+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="helium-antlib-antunit-unittest" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
+    <description>Helium Antlib imaker unittests.</description>
+
+    <taskdef resource="com/nokia/helium/antunit/ant/antlib.xml" uri="http://www.nokia.com/helium"/>
+    
+    <target name="test-some-basic-build">
+        <echo>some message.</echo>
+    </target>
+
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/checktools/bld.bat	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,39 @@
+@echo off
+
+rem
+rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+rem All rights reserved.
+rem This component and the accompanying materials are made available
+rem under the terms of the License "Eclipse Public License v1.0"
+rem which accompanies this distribution, and is available
+rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+rem
+rem Initial Contributors:
+rem Nokia Corporation - initial contribution.
+rem
+rem Contributors:
+rem
+rem Description: 
+rem
+
+setlocal
+if not defined JAVA_6_HOME (
+set TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
+) ELSE  set TESTED_JAVA=%JAVA_6_HOME%
+if exist %TESTED_JAVA% (set JAVA_HOME=%TESTED_JAVA%)
+
+REM Configure Ant 
+if not defined TESTED_ANT_HOME (
+set TESTED_ANT_HOME=C:\Apps\ant_1.7
+) 
+if exist %TESTED_ANT_HOME% (set ANT_HOME=%TESTED_ANT_HOME%)
+
+call java -cp ".\..\..\bin\helium-checktools.jar" com.nokia.helium.checktools.HeliumToolsCheckerMain -config ".\..\..\builder\helium.basic.tools.config"
+if "%ERRORLEVEL%" neq "0" (goto errorstop)
+
+ant -lib ../../builder/antlibs %*
+endlocal
+
+:errorstop
+@echo *** Build aborted with error
+exit /b 1
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/checktools/build.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : build.xml 
+Part of     : Helium AntLib
+
+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="helium-checktools">
+    <description>Helium Antlib checktools.</description>
+    
+    <property name="builder.dir" location="../../builder"/>
+    <property name="sf.source.root.dir" location="../../" />
+    <import file="${builder.dir}/java/macros.ant.xml"/>
+    <property name="name" value="checktools"/>
+    
+    <target name="compile" depends="resolve" description="--> compile the project">
+        <mkdir dir="${classes.dir}" />
+        <javac srcdir="${src.dir}" destdir="${classes.dir}" classpathref="lib.path.id" debug="true" source="1.3" target="1.3" listfiles="true">
+            <compilerarg value="-Xlint:unchecked" />
+            <compilerarg value="-Xlint:deprecation" />
+            <compilerarg value="-Werror" />
+        </javac>
+    </target>
+</project>
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/checktools/demo	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,43 @@
+#!/bin/bash
+
+#
+# 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: 
+#
+
+# loading the system wide settings from ~/.bashrc
+if [ -f ~/.bashrc ] ; then
+	. ~/.bashrc
+fi
+MODULE_VERSION="$(module --version 2>&1)"
+if [ "$?" == "0" ] ; then
+    module load "java/1.6.0"
+    module load "tww/ant/1.7.0"
+    module load tww/python/2.6.4
+fi
+
+export LANG="en_US.UTF-8"
+
+CWD=`pwd`
+
+cd $CWD
+
+export USERNAME=$USER
+export PATH=$PATH:.
+java -cp "./../../bin/helium-checktools.jar" com.nokia.helium.checktools.HeliumToolsCheckerMain -config "./tests/config/helium.basic.tools.config"
+
+if [ "$?" == "-1" ] ; then
+    echo *** Build aborted with error
+fi    
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/checktools/demo.bat	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,31 @@
+@echo off
+
+rem
+rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+rem All rights reserved.
+rem This component and the accompanying materials are made available
+rem under the terms of the License "Eclipse Public License v1.0"
+rem which accompanies this distribution, and is available
+rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+rem
+rem Initial Contributors:
+rem Nokia Corporation - initial contribution.
+rem
+rem Contributors:
+rem
+rem Description: 
+rem
+
+"%JAVA_HOME%\bin\java" -cp "./../../bin/helium-checktools.jar" com.nokia.helium.checktools.HeliumToolsCheckerMain -config "./tests/config/helium.basic.tools.config"
+
+IF (%ERRORLEVEL% == 0) GOTO :ok
+IF (%ERRORLEVEL% == -1) GOTO :errorstop
+
+:ok
+GOTO :end
+
+:errorstop
+echo *** Build aborted with error
+exit /b 1
+
+:end
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/checktools/ivy.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+============================================================================ 
+Name        : ivy.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:
+
+============================================================================  
+-->
+<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
+    <info
+        organisation="com.nokia.helium"
+        module="helium-checktools"
+        status="integration">
+    </info>
+    <dependencies/>
+</ivy-module>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/checktools/src/com/nokia/helium/checktools/CheckEngine.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,93 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+package com.nokia.helium.checktools;
+
+import java.util.Properties;
+
+/**
+ * CheckEngine is used to verify the versions of tools required by the Helium.
+ * 
+ * Currently it verifies the following tools:
+ * <p>
+ * <ul>
+ * <li>Java</li>
+ * <li>Ant</li>
+ * <li>Python</li>
+ * </ul>
+ * 
+ */
+public class CheckEngine extends ToolChecker {
+
+    private Properties configuration;
+
+    /**
+     * Create an instance of CheckEngine.
+     * 
+     * @param configuration
+     *            is the configuration details of tools
+     */
+    public CheckEngine(Properties configuration) {
+        this.configuration = configuration;
+    }
+
+    /**
+     * Method verifies Java version.
+     * 
+     */
+    public void verifyJavaVersion() {
+        System.out.println("Checking for Java...");
+
+        String expVersion = configuration.getProperty("java.version");
+        String errorMsg = "Supported Java version is not defined in 'helium.basic.tools.config'.";
+        verifyIsExpectedToolVersionConfigured(expVersion, errorMsg);
+        errorMsg = "Java " + expVersion
+                + " not found. Kindly install and run again.";
+        verifyToolVersion(OSResolver.getCommand("java -version"), expVersion,
+                "java version \"", errorMsg);
+    }
+
+    /**
+     * Method verifies Ant version.
+     */
+    public void verifyAntVersion() {
+        System.out.println("Checking for Ant...");
+
+        String expVersion = configuration.getProperty("ant.version");
+        String errorMsg = "Supported Ant version is not defined in 'helium.basic.tools.config'.";
+        verifyIsExpectedToolVersionConfigured(expVersion, errorMsg);
+        errorMsg = "Ant " + expVersion
+                + " not found. Kindly install and run again.";
+        verifyToolVersion(OSResolver.getCommand("ant -version"), expVersion,
+                "Apache Ant version ", errorMsg);
+    }
+
+    /**
+     * Method verifies Python version.
+     */
+    public void verifyPythonVersion() {
+        System.out.println("Checking for Python...");
+
+        String expVersion = configuration.getProperty("python.version");
+        String errorMsg = "Supported Python version is not defined in 'helium.basic.tools.config'.";
+        verifyIsExpectedToolVersionConfigured(expVersion, errorMsg);
+
+        errorMsg = "Python " + expVersion
+                + " not found. Kindly install and run again.";
+        verifyToolVersion(OSResolver.getCommand("python -V"), expVersion,
+                "Python ", errorMsg);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/checktools/src/com/nokia/helium/checktools/CheckToolException.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+package com.nokia.helium.checktools;
+
+/**
+ * CheckToolException is a runtime exception used to indicate an error or a
+ * failure occurred during checking of tools required by the Helium.
+ * 
+ */
+public class CheckToolException extends RuntimeException {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * Create an instance of CheckToolException.
+     * 
+     * @param message
+     *            is the failure message.
+     */
+    public CheckToolException(String message) {
+        super(message);
+    }
+
+    /**
+     * Create an instance of CheckToolException.
+     * 
+     * @param th
+     *            is the actual error thrown.
+     */
+    public CheckToolException(Throwable th) {
+        super(th);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/checktools/src/com/nokia/helium/checktools/HeliumToolsCheckerMain.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,148 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+package com.nokia.helium.checktools;
+
+import java.io.FileInputStream;
+import java.util.Properties;
+
+/**
+ * HeliumToolsCheckerMain is the main class which is used to trigger the
+ * checking of basic tools required by the Helium.
+ * 
+ * Note: HeliumToolsCheckerMain requires a '-config' parameter to be passed as
+ * the argument. The config parameter should be followed by a valid location of
+ * the configuration file.
+ * 
+ */
+public final class HeliumToolsCheckerMain {
+
+    private Properties configuration;
+    private CheckEngine checkEngine;
+
+    
+    /**
+     * Create an instance of HeliumToolsCheckerMain.
+     * 
+     * @param configFile
+     *            is the config file to read.
+     */
+    private HeliumToolsCheckerMain(String configFile) {
+        loadConfiguration(configFile);
+        checkEngine = new CheckEngine(configuration);
+    }
+
+    /**
+     * Check java version.
+     * 
+     */
+    private void checkJava() {
+        try {
+            checkEngine.verifyJavaVersion();
+        } catch (CheckToolException e) {
+            System.out.println("***Error: " + e.getMessage());
+        }
+    }
+
+    /**
+     * Check ant version.
+     * 
+     */
+    private void checkAnt() {
+        try {
+            checkEngine.verifyAntVersion();
+        } catch (CheckToolException e) {
+            System.out.println("***Error: " + e.getMessage());
+        }
+    }
+
+    /**
+     * Check python version.
+     */
+    private void checkPython() {
+        try {
+            checkEngine.verifyPythonVersion();
+        } catch (CheckToolException e) {
+            System.out.println("***Error: " + e.getMessage());
+        }
+    }
+
+    /**
+     * Method to check whether the tool check failed or not.
+     * 
+     * @return true, if the tool check failed with errors; otherwise false.
+     */
+    private boolean checkFailed() {
+        return checkEngine.getErrorCount() > 0;
+    }
+
+    /**
+     * Method loads the configuration details from the given file.
+     * 
+     * @param configFile
+     *            is the configuration file to be loaded.
+     */
+    private void loadConfiguration(String configFile) {
+        try {
+            configuration = new Properties();
+            configuration.load(new FileInputStream(configFile));
+        } catch (Throwable th) {
+            System.out.println("Error occured while loading config file: "
+                    + configFile);
+            System.exit(-1);
+        }
+    }
+
+    /**
+     * Main method to trigger tool check.
+     * 
+     * @param args
+     *            contains command line arguments passed.
+     * @throws Exception
+     */
+    public static void main(String[] args) throws Exception {
+
+        String configFile = null;
+
+        // check for configuration file
+        if (args.length == 2 && args[0].equalsIgnoreCase("-config")) {
+            if (args[1] == null
+                    || (args[1] != null && args[1].trim().isEmpty())) {
+                System.out.println("***Error: Parameter '-config' not set");
+                System.exit(-1);
+            }
+            configFile = args[1];
+        }
+
+        if (configFile != null) {
+            HeliumToolsCheckerMain checkerMain = new HeliumToolsCheckerMain(
+                    configFile);
+            checkerMain.checkJava();
+            checkerMain.checkAnt();
+            checkerMain.checkPython();
+            if (checkerMain.checkFailed()) {
+                System.exit(-1);
+            }
+        } else {
+            System.out.println("***Error: Missing '-config' argument");
+            System.out
+                    .println("Usage: java [main-class-name] -config [location of configuration file]");
+            System.out
+                    .println("Example: java com.nokia.helium.checktools.HeliumToolsCheckerMain -config \"config/helium.basic.tools.config\"");
+            System.exit(-1);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/checktools/src/com/nokia/helium/checktools/OSResolver.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,109 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+package com.nokia.helium.checktools;
+
+import java.util.Locale;
+
+/**
+ * OSResolver is a utility class containing useful methods related to OS.
+ * 
+ */
+public final class OSResolver {
+
+    public static final String FAMILY_WINDOWS = "windows";
+    public static final String FAMILY_9X = "win9x";
+    public static final String FAMILY_NT = "winnt";
+    public static final String FAMILY_MAC = "mac";
+    public static final String FAMILY_UNIX = "unix";
+
+    private static final String OS_NAME = System.getProperty("os.name")
+            .toLowerCase(Locale.US);
+    private static final String PATH_SEP = System.getProperty("path.separator");
+
+
+    /**
+     * Must not be instantiated.
+     */
+    private OSResolver() {
+    }
+    
+    /**
+     * Returns a formatted command string specific to the underlying OS.
+     * 
+     * @param cmd
+     *            is the command to be formatted.
+     * @return the formatted OS specific command string.
+     */
+    public static String getCommand(String cmd) {
+        StringBuffer buffer = new StringBuffer();
+        if (isOs("windows")) {
+            if (!isOs("win9x")) {
+                // Windows XP/2000/NT
+                buffer.append("cmd /c ");
+            } else {
+                // Windows 98/95
+                buffer.append("command /c ");
+            }
+        }
+        // generic
+        buffer.append(cmd);
+        return buffer.toString();
+    }
+
+    /**
+     * Method verifies whether the underlying OS belongs to the given OS family.
+     * 
+     * @param family
+     *            The OS family
+     * @return true if the OS matches; otherwise false.
+     */
+    public static boolean isOs(String family) {
+        boolean retValue = false;
+        if (family != null) {
+            // windows probing logic relies on the word 'windows' in
+            // the OS
+            boolean isWindows = OS_NAME.indexOf(FAMILY_WINDOWS) > -1;
+            boolean is9x = false;
+            boolean isNT = false;
+            if (isWindows) {
+                // there are only four 9x platforms that we look for
+                is9x = OS_NAME.indexOf("95") >= 0
+                        || OS_NAME.indexOf("98") >= 0
+                        || OS_NAME.indexOf("me") >= 0 || OS_NAME.indexOf("ce") >= 0;
+                isNT = !is9x;
+            }
+            if (family.equals(FAMILY_WINDOWS)) {
+                retValue = isWindows;
+            } else if (family.equals(FAMILY_9X)) {
+                retValue = isWindows && is9x;
+            } else if (family.equals(FAMILY_NT)) {
+                retValue = isWindows && isNT;
+            } else if (family.equals(FAMILY_MAC)) {
+                retValue = OS_NAME.indexOf(FAMILY_MAC) > -1;
+            } else if (family.equals(FAMILY_UNIX)) {
+                retValue = PATH_SEP.equals(":")
+                        && (!isOs(FAMILY_MAC) || OS_NAME.endsWith("x"));
+            } else {
+                throw new CheckToolException(
+                        "Don\'t know how to detect os family \"" + family
+                                + "\"");
+            }
+        }
+        return retValue;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/checktools/src/com/nokia/helium/checktools/ToolChecker.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,158 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+package com.nokia.helium.checktools;
+
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
+import java.io.OutputStream;
+
+/**
+ * ToolChecker is a generic class used to verify tool versions.
+ * 
+ */
+public class ToolChecker {
+
+    private int errorCount;
+
+    /**
+     * Method verifies whether the expected version is set or not.
+     * 
+     * @param expVersion
+     *            is the version string to verify.
+     * @param errorMsg
+     *            is the message to be displayed on failure.
+     */
+    public void verifyIsExpectedToolVersionConfigured(String expVersion,
+            String errorMsg) {
+        if (expVersion == null
+                || (expVersion != null && expVersion.trim().isEmpty())) {
+            raiseError(errorMsg);
+        }
+    }
+
+    /**
+     * Method verifies the tool version.
+     * 
+     * @param command
+     *            is the command string to verify tool version.
+     * @param expVersion
+     *            is the expected tool version.
+     * @param versionString2match
+     *            is the version string to match
+     * @param errorMsg
+     *            is the message to be displayed on failure.
+     */
+    public void verifyToolVersion(String command, String expVersion,
+            String versionString2match, String errorMsg) {
+        String[] versions = expVersion.split(",");
+        String installedVersion = getInstalledToolVersion(command);
+        boolean valid = false;
+        for (int i = 0; i < versions.length; i++) {
+            if (!valid)
+                valid = installedVersion.contains(versionString2match
+                        + versions[i]);
+        }
+        if (!valid) {
+            System.out.println("Installed Version : " + installedVersion);
+            raiseError(errorMsg);
+        } else
+            System.out.println("Done");
+    }
+
+    /**
+     * Method throws a CheckToolException with the given message.
+     * 
+     * @param message
+     *            is the failure message.
+     */
+    public void raiseError(String message) {
+        incrementErrorCount();
+        throw new CheckToolException(message);
+    }
+
+    /**
+     * Method returns the actual version of the tool installed.
+     * 
+     * @param cmd
+     *            is the command string to execute.
+     * @return the actual tool version.
+     */
+    public String getInstalledToolVersion(String cmd) {
+        String input = null;
+        String error = null;
+        try {
+            Process toolProcess = Runtime.getRuntime().exec(cmd);
+            input = toString(toolProcess.getInputStream());
+            error = toString(toolProcess.getErrorStream());
+        } catch (Throwable th) {
+            throw new CheckToolException(th);
+        }
+        return (input.isEmpty()) ? error : input;
+    }
+
+    /**
+     * Method returns a string read from the given input stream.
+     * 
+     * @param is
+     *            is the input stream to read from.
+     * @return the contents read from the input stream.
+     * @throws Exception
+     */
+    private String toString(InputStream is) throws Exception {
+        OutputStream os = null;
+        String versionString = null;
+        try {
+
+            byte[] buffer = new byte[4096];
+            os = new ByteArrayOutputStream();
+
+            while (true) {
+                int read = is.read(buffer);
+                if (read == -1) {
+                    break;
+                }
+                os.write(buffer, 0, read);
+            }
+            versionString = os.toString();
+        } finally {
+            try {
+                os.close();
+                is.close();
+            } catch (Exception e) {
+                e = null; // ignore the exception
+            }
+        }
+        return versionString;
+    }
+
+    /**
+     * Method increases error count by one.
+     */
+    private void incrementErrorCount() {
+        errorCount++;
+    }
+
+    /**
+     * Return the error count.
+     * 
+     * @return the error count.
+     */
+    public int getErrorCount() {
+        return errorCount;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/checktools/tests/bld.sh	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,24 @@
+#!/bin/bash
+
+#
+# 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: 
+#
+
+
+if [ -f ~/.bashrc ] ; then
+    . ~/.bashrc
+fi
+
+ant $*
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/checktools/tests/build.bat	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,31 @@
+@echo off
+
+rem
+rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+rem All rights reserved.
+rem This component and the accompanying materials are made available
+rem under the terms of the License "Eclipse Public License v1.0"
+rem which accompanies this distribution, and is available
+rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+rem
+rem Initial Contributors:
+rem Nokia Corporation - initial contribution.
+rem
+rem Contributors:
+rem
+rem Description: 
+rem
+
+setlocal
+if not defined JAVA_6_HOME (
+set TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
+) ELSE  set TESTED_JAVA=%JAVA_6_HOME%
+if exist %TESTED_JAVA% (set JAVA_HOME=%TESTED_JAVA%)
+call ant %*
+if "%ERRORLEVEL%" neq "0" (goto error)
+endlocal
+goto :eof
+
+:error
+endlocal
+if "%OS%"=="Windows_NT" color 00
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/checktools/tests/build.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : build.xml 
+Part of     : Helium AntLib
+
+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="helium-checktools" xmlns:au="antlib:org.apache.ant.antunit">
+    <description>Helium antlib checktools tests.</description>
+
+    <import file="${builder.dir}/java/test-macros.ant.xml"/>
+
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/checktools/tests/config/helium.basic.tools.config	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,33 @@
+#
+# 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: 
+#
+
+###############################################
+#   *** HELIUM BASIC TOOLS CONFIGURATION ***  #
+###############################################
+
+## Note: For multiple version support use comma separated values
+## Eg: java.version=1.5,1.6
+
+## Supported java versions 
+java.version=1.6
+
+
+## Supported ant versions
+ant.version=1.7.0
+
+
+## Supported Python version
+python.version=2.5,2.6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/checktools/tests/src/com/nokia/helium/checktools/tests/TestCheckEngine.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,149 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+
+package com.nokia.helium.checktools.tests;
+
+import java.util.Properties;
+
+import junit.framework.TestCase;
+
+import com.nokia.helium.checktools.CheckEngine;
+import com.nokia.helium.checktools.CheckToolException;
+import com.nokia.helium.checktools.OSResolver;
+import com.nokia.helium.checktools.ToolChecker;
+
+/**
+ * Test class for CheckEngine.
+ * 
+ */
+public class TestCheckEngine extends TestCase {
+
+    /**
+     * Method tests the java version with invalid version set.
+     */
+    public void testVerifyJavaVersionInValid() {
+        CheckToolException cte = null;
+        Properties props = new Properties();
+        props.setProperty("java.version", "0.0");
+
+        try {
+            new CheckEngine(props).verifyJavaVersion();
+        } catch (CheckToolException ex) {
+            cte = ex;
+        }
+        assertNotNull(cte);
+        String expected = "Java 0.0 not found. Kindly install and run again.";
+        assertEquals(expected, cte.getMessage());
+    }
+
+    /**
+     * Method tests the java version with valid version set.
+     */
+    public void testVerifyJavaVersionValid() {
+        CheckToolException cte = null;
+        Properties props = new Properties();
+        String str = new ToolChecker().getInstalledToolVersion(OSResolver
+                .getCommand("java -version"));
+        String ver = str.split(" ")[2].split(System
+                .getProperty("line.separator"))[0];
+        props.setProperty("java.version", ver.replaceAll("\"", ""));
+
+        try {
+            new CheckEngine(props).verifyJavaVersion();
+        } catch (CheckToolException ex) {
+            cte = ex;
+            ex.printStackTrace();
+        }
+        assertNull(cte);
+    }
+
+    /**
+     * Method tests the ant version with invalid version set.
+     */
+    public void testVerifyAntVersionInValid() {
+        CheckToolException cte = null;
+        Properties props = new Properties();
+        props.setProperty("ant.version", "0.0.0");
+
+        try {
+            new CheckEngine(props).verifyAntVersion();
+        } catch (CheckToolException ex) {
+            cte = ex;
+        }
+        assertNotNull(cte);
+        String expected = "Ant 0.0.0 not found. Kindly install and run again.";
+        assertEquals(expected, cte.getMessage());
+    }
+
+    /**
+     * Method tests the ant version with valid version set.
+     */
+    public void testVerifyAntVersionValid() {
+        CheckToolException cte = null;
+        Properties props = new Properties();
+        String str = new ToolChecker().getInstalledToolVersion(OSResolver
+                .getCommand("ant -version"));
+        String ver = str.split(" ")[3];
+        props.setProperty("ant.version", ver);
+
+        try {
+            new CheckEngine(props).verifyAntVersion();
+        } catch (CheckToolException ex) {
+            cte = ex;
+            ex.printStackTrace();
+        }
+        assertNull(cte);
+    }
+
+    /**
+     * Method tests the python version with invalid version set.
+     */
+    public void testVerifyPythonVersionInValid() {
+        CheckToolException cte = null;
+        Properties props = new Properties();
+        props.setProperty("python.version", "0.0.0.0");
+
+        try {
+            new CheckEngine(props).verifyPythonVersion();
+        } catch (CheckToolException ex) {
+            cte = ex;
+        }
+        assertNotNull(cte);
+        String expected = "Python 0.0.0.0 not found. Kindly install and run again.";
+        assertEquals(expected, cte.getMessage());
+    }
+
+    /**
+     * Method tests the python version with valid version set.
+     */
+    public void testVerifyPythonVersionValid() {
+        CheckToolException cte = null;
+        Properties props = new Properties();
+        String str = new ToolChecker().getInstalledToolVersion(OSResolver
+                .getCommand("python -V"));
+        String ver = str.split(" ")[1];
+        props.setProperty("python.version", ver);
+
+        try {
+            new CheckEngine(props).verifyPythonVersion();
+        } catch (CheckToolException ex) {
+            cte = ex;
+            ex.printStackTrace();
+        }
+        assertNull(cte);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/checktools/tests/src/com/nokia/helium/checktools/tests/TestOSResolver.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,95 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+package com.nokia.helium.checktools.tests;
+
+import java.util.Locale;
+
+import junit.framework.TestCase;
+
+import com.nokia.helium.checktools.CheckToolException;
+import com.nokia.helium.checktools.OSResolver;
+
+/**
+ * Test class for OSResolver.
+ * 
+ */
+public class TestOSResolver extends TestCase {
+
+    /**
+     * Method to test getCommand.
+     */
+    public void testGetCommand() {
+        String result = OSResolver.getCommand("test");
+        String osName = System.getProperty("os.name").toLowerCase(Locale.US);
+        boolean isWindows = osName.indexOf("windows") > -1;
+        boolean is9x = (osName.indexOf("95") >= 0 || osName.indexOf("98") >= 0
+                || osName.indexOf("me") >= 0 || osName.indexOf("ce") >= 0);
+        if (isWindows && is9x) {
+            assertEquals("command /c test", result);
+        } else if (isWindows && !is9x) {
+            assertEquals("cmd /c test", result);
+        } else {
+            assertEquals("test", result);
+        }
+    }
+
+    /**
+     * Method to test whether the given os is of Windows family or not.
+     */
+    public void testIsOSWindowsFamily() {
+        String osName = System.getProperty("os.name").toLowerCase(Locale.US);
+        boolean isWindows = osName.indexOf("windows") > -1;
+        boolean result = OSResolver.isOs("windows");
+        if (isWindows) {
+            assertEquals(true, result);
+        } else {
+            assertEquals(false, result);
+        }
+    }
+
+    /**
+     * Method to test whether the given os is of unix family or not.
+     */
+    public void testIsOSUnixFamily() {
+        String osName = System.getProperty("os.name").toLowerCase(Locale.US);
+        String pathSeparator = System.getProperty("path.separator");
+        boolean isUnix = pathSeparator.equals(":")
+                && (osName.indexOf("mac") == -1 || osName.endsWith("x"));
+        boolean result = OSResolver.isOs("unix");
+        if (isUnix) {
+            assertEquals(true, result);
+        } else {
+            assertEquals(false, result);
+        }
+    }
+
+    /**
+     * Method to test whether the given os is invalid or not.
+     */
+    public void testIsOSInvalidFamily() {
+        CheckToolException cte = null;
+        try {
+            OSResolver.isOs("invalid");
+        } catch (CheckToolException ex) {
+            cte = ex;
+        }
+        assertNotNull(cte);
+        String expected = "Don\'t know how to detect os family \"invalid\"";
+        assertEquals(expected, cte.getMessage());
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/bld.bat	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,39 @@
+@echo off
+
+rem
+rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+rem All rights reserved.
+rem This component and the accompanying materials are made available
+rem under the terms of the License "Eclipse Public License v1.0"
+rem which accompanies this distribution, and is available
+rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+rem
+rem Initial Contributors:
+rem Nokia Corporation - initial contribution.
+rem
+rem Contributors:
+rem
+rem Description: 
+rem
+
+setlocal
+if not defined JAVA_6_HOME (
+set TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
+) ELSE  set TESTED_JAVA=%JAVA_6_HOME%
+if exist %TESTED_JAVA% (set JAVA_HOME=%TESTED_JAVA%)
+
+REM Configure Ant 
+if not defined TESTED_ANT_HOME (
+set TESTED_ANT_HOME=C:\Apps\ant_1.7
+) 
+if exist %TESTED_ANT_HOME% (set ANT_HOME=%TESTED_ANT_HOME%)
+
+call java -cp ".\..\..\bin\helium-checktools.jar" com.nokia.helium.checktools.HeliumToolsCheckerMain -config ".\..\..\builder\helium.basic.tools.config"
+if "%ERRORLEVEL%" neq "0" (goto errorstop)
+
+ant -lib ../../builder/antlibs %*
+endlocal
+
+:errorstop
+@echo *** Build aborted with error
+exit /b 1
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/build.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : build.xml 
+Part of     : Helium AntLib
+
+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="helium-core">
+    <description>Helium Antlib Core build file.</description>
+    <property name="name" value="core"/>
+    <property name="builder.dir" location="../../builder"/>
+    <property name="sf.source.root.dir" location="../../" />
+    <import file="${builder.dir}/java/macros.ant.xml"/>
+</project>
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/ivy.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+============================================================================ 
+Name        : ivy.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:
+
+============================================================================  
+-->
+<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
+    <info
+        organisation="com.nokia.helium"
+        module="helium-core"
+        status="integration" />
+        
+  <dependencies>
+    <dependency org="org.freemarker" name="freemarker" rev="2.3.13" conf="default" />
+    <dependency org="log4j" name="log4j" rev="1.2.9" conf="default" />
+    <dependency org="org.codehaus.plexus" name="plexus-utils" rev="1.5.6" conf="default" />
+    <dependency org="javax.mail" name="mail" rev="1.4.1" conf="default" />
+    <dependency org="org.apache.commons" name="commons-io" rev="1.4" conf="default" />
+    <dependency org="net.sourceforge.fmpp" name="fmpp" rev="0.9.13" conf="default" />
+    <dependency org="dom4j" name="dom4j" rev="latest.integration" conf="default" />
+  </dependencies>
+</ivy-module>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/AbstractTemplateInputSource.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,45 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+
+package com.nokia.helium.core;
+
+/**
+ * Implements the source name handling.
+ */
+public abstract class AbstractTemplateInputSource implements
+        TemplateInputSource {
+
+    private String sourceName;
+    /**
+     * Get template source name.
+     * @return
+     *      template source name.
+     */
+    public String getSourceName() {
+        return sourceName;
+    }
+    /**
+     * Add template source name
+     * @param String 
+     *          template source name     
+     */
+    public void setSourceName(String souceName) {
+        this.sourceName = souceName;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/EmailDataSender.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,361 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+
+package com.nokia.helium.core;
+
+import java.util.Arrays;
+import java.util.Properties;
+import java.util.Hashtable;
+import java.util.zip.GZIPOutputStream;
+import java.io.BufferedInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import javax.mail.*;
+import javax.mail.internet.*;
+import javax.naming.*;
+import javax.naming.directory.*;
+
+import javax.activation.DataHandler;
+import javax.mail.util.ByteArrayDataSource;
+import org.apache.log4j.Logger;
+import org.apache.commons.io.FileUtils;
+
+/**
+ * Send compressed or uncompressed xml data with email.
+ */
+public class EmailDataSender {
+
+    // Logger
+    private static Logger log = Logger.getLogger(EmailDataSender.class);
+
+    // Address email is sent from
+    private String from;
+    
+    // The target address
+    private String[] toAddressList;
+
+    // LDAP config
+    private String ldapURL;
+    // TODO all reference to nokia internals MUST be removed.
+    private String rootdn = "o=Nokia";
+
+    // Configured smtp server address
+    private String smtpServerAddress;
+    /**
+    * Constructor
+    * 
+    * @param String
+    *            comma separeted email recepients list
+    * @param String
+    *            smtp server 
+    * @param String
+    *            ldap server
+    */
+    public EmailDataSender(String toStrings, String smtpServer,
+            String ldapAddress) {
+        if (toStrings != null) {
+            String[] splitList = toStrings.split(",");
+            toAddressList = splitList;
+        }
+        smtpServerAddress = smtpServer;
+        ldapURL = ldapAddress;
+    }
+    /**
+    * Constructor
+    * 
+    * @param String
+    *            email recepient list in array
+    * @param String
+    *            smtp server 
+    * @param String
+    *            ldap server
+    */
+    public EmailDataSender(String[] toList, String smtpServer,
+            String ldapAddress) {
+        toAddressList = toList;
+        smtpServerAddress = smtpServer;
+        ldapURL = ldapAddress;
+    }
+    /**
+    * Constructor
+    * 
+    * @param String
+    *            email recepients list in array
+    * @param String
+    *            smtp server 
+    * @param String
+    *            ldap server
+    * @param String
+    *            root domain in ldap server
+    */
+    public EmailDataSender(String[] toList, String smtpServer,
+            String ldapAddress, String rootdn) {
+        toAddressList = toList;
+        smtpServerAddress = smtpServer;
+        ldapURL = ldapAddress;
+        this.rootdn = rootdn;
+    }
+    /**
+    * Set sender address.
+    *
+    * @param String
+    *            mail sender address
+    */
+    public void setFrom(String from) {
+        this.from = from;
+    }
+    /**
+    * Add current user to recipient list.
+    *    
+    */
+    public void addCurrentUserToAddressList() {
+        // Create an empty array if needed
+        if (toAddressList == null)
+            toAddressList = new String[0];
+        try {
+            String userEmail;
+            userEmail = getUserEmail();
+            toAddressList = Arrays.copyOf(toAddressList,
+                    toAddressList.length + 1);
+            toAddressList[toAddressList.length - 1] = userEmail;
+        } catch (Exception e) {
+            return;
+        }
+    }
+    /**
+    * Get recipient address list.
+    * 
+    * @return
+    *       Recipient address list.
+    */
+    private InternetAddress[] getToAddressList() {
+        int toListLength = 0;
+        if (toAddressList != null)
+            toListLength = toAddressList.length;
+        InternetAddress[] addressList = new InternetAddress[toListLength];
+        try {
+            log.debug("getToAddressList:length: "
+                    + toListLength);
+            for (int i = 0; i < toListLength; i++) {
+                log.debug("getToAddressList:address:"
+                        + toAddressList[i]);
+                addressList[i] = new InternetAddress(toAddressList[i]);
+            }
+        } catch (Exception aex) {
+            // We are Ignoring the errors as no need to fail the build.
+            log.error("AddressException: " + aex);
+        }
+        return addressList;
+    }
+    /**
+    * Send xml data without compression
+    * 
+    * @param String
+    *            purpose of this email
+    * @param String
+    *            file to send 
+    * @param String
+    *            mime type
+    * @param String
+    *            subject of email
+    * @param String
+    *            header of email
+    */
+    public void sendData(String purpose, String fileToSend, String mimeType,
+            String subject, String header) {
+        sendData(purpose, fileToSend, mimeType, subject, header, false);
+    }
+
+   
+    /**
+    * Sending the XML data(compressed) through email.
+    * 
+    * @param String
+    *            purpose of this email
+    * @param String
+    *            file to send     
+    * @param String
+    *            subject of email
+    * @param String
+    *            header of email
+    */
+    public void compresseAndSendData(String purpose, String fileToSend,
+            String subject, String header) {
+        sendData(purpose, fileToSend, null, subject, header, true);
+    }
+    /**
+    * Send xml data 
+    * 
+    * @param String
+    *            purpose of this email
+    * @param String
+    *            file to send 
+    * @param String
+    *            mime type
+    * @param String
+    *            subject of email
+    * @param String
+    *            header of mail
+    * @param boolean
+    *            compress data if true
+    */
+    public void sendData(String purpose, String fileToSend, String mimeType,
+            String subject, String header, boolean compressData) {
+        try {
+            log.debug("sendData:Send file: " + fileToSend + " and mimetype: " + mimeType);
+            if (fileToSend != null) {
+                log.debug("sendData:smtp address: "
+                        + smtpServerAddress);
+                InternetAddress[] toAddresses = getToAddressList();
+                Properties props = new Properties();
+                props.setProperty("mail.smtp.host", smtpServerAddress);
+                Session mailSession = Session.getDefaultInstance(props, null);
+                MimeMessage message = new MimeMessage(mailSession);
+                String subjectToSend = subject;
+                if (subject == null) {
+                    subjectToSend = "";
+                }
+                message.setSubject(subjectToSend);
+                MimeMultipart multipart = new MimeMultipart("related");
+                BodyPart messageBodyPart = new MimeBodyPart();
+                ByteArrayDataSource dataSrc = null;
+                String fileName = new File(fileToSend).getName();
+                if (compressData) {
+                    log.debug("Sending compressed data");
+                    dataSrc = compressFile(fileToSend);
+                    dataSrc.setName(fileName + ".gz");
+                    messageBodyPart.setFileName(fileName + ".gz");
+                } else {
+                    log.debug("Sending uncompressed data:");
+                    dataSrc = new ByteArrayDataSource(new FileInputStream(
+                            new File(fileToSend)), mimeType);
+
+                    message.setContent(FileUtils.readFileToString(new File(
+                            fileToSend)), "text/html");
+                    multipart = null;
+                }
+                String headerToSend = null;
+                if (header == null) {
+                    headerToSend = "";
+                }
+                messageBodyPart.setHeader("helium-bld-data", headerToSend);
+                messageBodyPart.setDataHandler(new DataHandler(dataSrc));
+
+                if (multipart != null) {
+                    multipart.addBodyPart(messageBodyPart); // add to the
+                    // multipart
+                    message.setContent(multipart);
+                }
+                try {
+                    InternetAddress fromAddress = getFromAddress(); 
+                    message.setFrom(fromAddress);
+                } catch (Exception e) {
+                    // We are Ignoring the errors as no need to fail the build.
+                    log.debug("Error retrieving current user email address: " + e.getMessage(), e);
+                }
+                message.addRecipients(Message.RecipientType.TO, toAddresses);
+                log.info("Sending email alert: " + subject);
+                Transport.send(message);
+            }
+        } catch (Exception e) {
+            String errorMessage = e.getMessage();
+            String fullErrorMessage = "Failed sending e-mail: " + purpose;
+            if (errorMessage != null) {
+                fullErrorMessage += " " + errorMessage;
+            }
+            // We are Ignoring the errors as no need to fail the build.
+            log.info(fullErrorMessage);
+        }
+    }
+
+    /**
+     * GZipping a string.
+     * 
+     * @param data
+     *            the content to be gzipped.
+     * @param filename
+     *            the name for the file.
+     * @return a ByteArrayDataSource.
+     */
+    protected ByteArrayDataSource compressFile(String fileName)
+            throws IOException {
+        ByteArrayOutputStream out = new ByteArrayOutputStream();
+        GZIPOutputStream gz = new GZIPOutputStream(out);
+        BufferedInputStream bufferedInputStream = new BufferedInputStream(
+                new FileInputStream(new File(fileName)));
+        byte[] dataBuffer = new byte[512];
+        while ((bufferedInputStream.read(dataBuffer)) != -1) {
+            gz.write(dataBuffer);
+        }
+        gz.close();
+        bufferedInputStream.close();
+        ByteArrayDataSource dataSrc = new ByteArrayDataSource(
+                out.toByteArray(), "application/x-gzip");
+        return dataSrc;
+    }
+    /**
+    * Get sender address.
+    * 
+    * @return
+    *       sender address.
+    */
+    private InternetAddress getFromAddress() throws Exception {
+        if (from != null) {
+            return new InternetAddress(from);
+        }
+        return new InternetAddress(getUserEmail());
+    }
+    
+    /**
+     * Getting user email.
+     * 
+     * @return
+     *    the user email address.
+     */
+    protected String getUserEmail() throws Exception {
+        String username = System.getProperty("user.name");
+        log.debug("EmailDataSender:getUserEmail:username: " + username);
+
+        // Set up environment for creating initial context
+        Hashtable<String, String> env = new Hashtable<String, String>(11);
+        env.put(Context.INITIAL_CONTEXT_FACTORY,
+                "com.sun.jndi.ldap.LdapCtxFactory");
+        env.put(Context.PROVIDER_URL, ldapURL + "/" + rootdn);
+
+        // Create initial context
+        DirContext ctx = new InitialDirContext(env);
+        SearchControls controls = new SearchControls();
+        controls.setSearchScope(SearchControls.SUBTREE_SCOPE);
+        try {
+            NamingEnumeration<SearchResult> en = ctx.search("", "uid=" + username, controls);
+            if (en.hasMore()) {
+                SearchResult sr = en.next();
+                String email = (String) sr.getAttributes().get("mail").get();
+                log.debug("getUserEmail:" + email);
+                return email;
+            }
+        } catch (javax.naming.NameNotFoundException ex) {
+            throw new HlmAntLibException("Error finding user email for " + username );
+        }
+        throw new HlmAntLibException("Could not find user email in LDAP.");
+    }
+}
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/HlmAntLibException.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+
+package com.nokia.helium.core;
+
+/**
+ * HlmAntlib exception handling class
+ */
+public class HlmAntLibException extends RuntimeException {
+
+    private static final long serialVersionUID = -2504337723465536053L;
+
+    /**
+     * Constructor
+     * 
+     * @param String
+     *            exception message
+     */
+    public HlmAntLibException(String msg) {
+        super("HlmAntLibException:generic:" + msg);
+    }
+
+    /**
+     * Constructor
+     * 
+     * @param String
+     *            module which throws the exception
+     * @param String
+     *            exception message
+     */
+    public HlmAntLibException(String module, String msg) {
+        super("HlmAntLibException:" + module + ":" + msg);
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/LogSource.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,36 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+
+package com.nokia.helium.core;
+
+import java.io.File;
+
+import org.apache.tools.ant.types.DataType;
+
+/**
+ * This class is the base class for all types of logs
+ * 
+ */
+public class LogSource extends DataType {
+
+    public File getFilename() {
+        //will be implemented by subclasses
+        throw new HlmAntLibException("Improper logsource usage"); 
+    }
+
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/PPHash.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,151 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+
+package com.nokia.helium.core;
+
+import java.io.File;
+import java.util.HashMap;
+import java.util.Map;
+
+import freemarker.template.ObjectWrapper;
+import freemarker.template.SimpleCollection;
+import freemarker.template.SimpleScalar;
+import freemarker.template.TemplateCollectionModel;
+import freemarker.template.TemplateHashModelEx;
+import freemarker.template.TemplateModel;
+import fmpp.Engine;
+import fmpp.models.AddTransform;
+import fmpp.models.ClearTransform;
+import fmpp.models.CopyWritableVariableMethod;
+import fmpp.models.NewWritableHashMethod;
+import fmpp.models.NewWritableSequenceMethod;
+import fmpp.models.RemoveTransform;
+import fmpp.models.SetTransform;
+
+/**
+ * Downgraded implementation which makes the PPHash public (from FMPP).
+ */
+public class PPHash implements TemplateHashModelEx {
+    private Map<String, TemplateModel> map = new HashMap<String, TemplateModel>();
+
+    /**
+    * Constructor
+    *     
+    */
+    public PPHash() {
+        // transforms
+        put("set", new SetTransform());
+        put("add", new AddTransform());
+        put("remove", new RemoveTransform());
+        put("clear", new ClearTransform());
+
+        // methods
+        put("newWritableSequence", new NewWritableSequenceMethod());
+        put("newWritableHash", new NewWritableHashMethod());
+        put("copyWritable", new CopyWritableVariableMethod());
+
+        // constants
+        put("slash", File.separator);
+        put("version", Engine.getVersionNumber());
+        put("freemarkerVersion", Engine.getFreeMarkerVersionNumber());
+
+    }
+    /**
+    * Get number of templates.
+    * 
+    * @return
+    *       Number of templates.
+    */
+    public int size() {
+        return map.size();
+    }
+
+    /**
+    * Get templates.
+    * 
+    * @return
+    *       templates.
+    */
+    public TemplateCollectionModel keys() {
+        return new SimpleCollection(map.keySet(), ObjectWrapper.SIMPLE_WRAPPER);
+    }
+    
+    /**
+    * Get template values.
+    * 
+    * @return
+    *       template values.
+    */
+    public TemplateCollectionModel values() {
+        return new SimpleCollection(map.values(), ObjectWrapper.SIMPLE_WRAPPER);
+    }
+
+    /**
+    * Get a template.
+    * 
+    * @param String
+    *            key for template
+    * @return
+    *       a template.
+    */
+    public TemplateModel get(String key) {
+        return map.get(key);
+    }
+
+     /**
+    * Check if there are any template.
+    * 
+    * @return
+    *       True if no template.
+    */
+    public boolean isEmpty() {
+        return map.isEmpty();
+    }
+     /**
+    * Add template
+    *     
+    * @param String
+    *            name of template
+    * @param TemplateModel
+    *            value
+    */
+    public void put(String name, TemplateModel value) {
+        map.put(name, value);
+    }
+     /**
+    * Add template
+    *     
+    * @param String
+    *            name of template
+    * @param String
+    *            value
+    */
+    public void put(String name, String value) {
+        map.put(name, new SimpleScalar(value));
+    }
+
+     /**
+    * Delete template
+    *     
+    * @param String
+    *            name of template
+    */
+    public void remove(String name) {
+        map.remove(name);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/PPInputSource.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,47 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+
+package com.nokia.helium.core;
+/**
+ * Template source.
+ */
+public class PPInputSource implements TemplateInputSource {
+
+    private String name = "pp";
+
+     /**
+    * Get source name
+    *     
+    * @return 
+    *        name of source
+    */
+    @Override
+    public String getSourceName() {
+        return name;
+    }
+
+     /**
+    * Get hash
+    *     
+    * @return 
+    *        hash
+    */
+    public PPHash getPPHash() {
+        return new PPHash();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/PropertiesSource.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,69 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+
+package com.nokia.helium.core;
+
+import java.util.Hashtable;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Map.Entry;
+
+/**
+ * Property set configuration holder. Will make the defined properties available
+ * under a named variable.
+ */
+public class PropertiesSource extends AbstractTemplateInputSource {
+    private Map<String, String> properties;
+
+    /**
+     * Constructor
+     * 
+     * @param String
+     *            Name of template
+     * @param Hashtable
+     *            properties
+     */
+    public PropertiesSource(String name, Map<String, String> props) {
+        setSourceName(name);
+        properties = props;
+    }
+
+    /**
+     * Constructor
+     * 
+     * @param String
+     *            Name of template
+     * @param Properties
+     *            properties
+     */
+    public PropertiesSource(String name, Properties props) {
+        setSourceName(name);
+        properties = new Hashtable<String, String>();
+        for (Entry<Object, Object> entry : props.entrySet()) {
+            properties.put((String) entry.getKey(), (String) entry.getValue());
+        }
+    }
+
+    /**
+     * Get properties.
+     * 
+     * @return Properties.
+     */
+    public Map<String, String> getProperties() {
+        return properties;
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/TemplateInputSource.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,33 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+
+
+package com.nokia.helium.core;
+
+/**
+ * Generic interface between all input sources.
+ */
+public interface TemplateInputSource {
+    /**
+     * Get the name of the source inside the template.
+     * 
+     * @return
+     *          source name.
+     */
+    String getSourceName();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/TemplateProcessor.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,166 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+
+package com.nokia.helium.core;
+
+import freemarker.template.Template;
+import freemarker.template.Configuration;
+
+import java.io.FileWriter;
+import java.io.File;
+import java.util.List;
+import java.util.HashMap;
+import java.util.Map;
+import org.apache.log4j.Logger;
+
+/**
+ * Template processor.
+ * 
+ */
+public class TemplateProcessor {
+
+    private Logger log = Logger.getLogger(TemplateProcessor.class);
+
+    /**
+     * Create a Map of FreeMarker compatible data from the list of input source.
+     * 
+     * @param inputSources
+     * @return
+     * @throws TemplateProcessorException
+     */
+    private HashMap<String, Object> getTemplateMap(
+            List<TemplateInputSource> inputSources) {
+        HashMap<String, Object> templateMap = new HashMap<String, Object>();
+        try {
+            for (TemplateInputSource source : inputSources) {
+                if (source instanceof XMLTemplateSource) {
+                    XMLTemplateSource xmlSource = (XMLTemplateSource) source;
+                    File inputFile = xmlSource.getSourceLocation();
+                    if (inputFile.exists()) {
+                        templateMap.put(xmlSource.getSourceName(),
+                                freemarker.ext.dom.NodeModel.parse(inputFile));
+                    } else {
+                        log.debug("TemplateProcessor: input file " + inputFile
+                                + " for the template does not exists");
+                    }
+                } else if (source instanceof PropertiesSource) {
+                    PropertiesSource propSource = (PropertiesSource) source;
+                    templateMap.put(propSource.getSourceName(), propSource
+                            .getProperties());
+                } else if (source instanceof PPInputSource) {
+                    PPInputSource ppSource = (PPInputSource) source;
+                    templateMap.put(ppSource.getSourceName(), ppSource
+                            .getPPHash());
+                }
+            }
+        } catch (java.io.IOException e) {
+            throw new TemplateProcessorException(
+                    "I/O Error during template conversion: " + e.getMessage());
+        } catch (org.xml.sax.SAXException e1) {
+            throw new TemplateProcessorException("XML parser error: "
+                    + e1.getMessage());
+        } catch (javax.xml.parsers.ParserConfigurationException e3) {
+            throw new TemplateProcessorException("Parser error: "
+                    + e3.getMessage());
+        }
+        return templateMap;
+    }
+
+    /**
+     * Convert a template.
+     * 
+     * @param templateFile
+     * @param outputFile
+     * @param sourceList
+     * @throws TemplateProcessorException
+     */
+    public void convertTemplate(String templateFile, String outputFile,
+            List<TemplateInputSource> sourceList) {
+        convertTemplate(new File(templateFile), new File(outputFile),
+                sourceList);
+    }
+
+    /**
+     * Convert a template.
+     * 
+     * @param templateFile
+     * @param outputFile
+     * @param sourceList
+     * @throws TemplateProcessorException
+     */
+    public void convertTemplate(File templateFile, File outputFile,
+            List<TemplateInputSource> sourceList) {
+        if (templateFile != null) {
+            convertTemplate(templateFile.getParent(), templateFile.getName(),
+                    outputFile.toString(), sourceList);
+        } else {
+            throw new TemplateProcessorException("Template file not defined.");
+        }
+    }
+
+    /**
+     * Converts the template to generate xml file to be sent to the server.
+     * 
+     * @param templateFile
+     *            - template file to be converted
+     * @param input
+     *            - input source file.
+     * @param outputFile
+     *            - location to store the converted file
+     * @param antProperties
+     *            - used as one of the input for conversion.
+     * @param inputSourceType
+     *            - source input type (xml / properties from file). Currently
+     *            xml input source is the only one supported.
+     * @return - location of the input source.
+     * @throws TemplateProcessorException
+     */
+    public void convertTemplate(String templateDir, String templateFile,
+            String outputFile, List<TemplateInputSource> sourceList) {
+
+        Configuration cfg = new Configuration();
+        File templateDirFile = new File(templateDir);
+        if (templateDir != null && templateDirFile.exists()) {
+            try {
+                cfg.setDirectoryForTemplateLoading(templateDirFile);
+                log
+                        .debug("diamonds:TemplateProcessor:adding template directory loader: "
+                                + templateDir);
+            } catch (java.io.IOException ie) {
+                throw new TemplateProcessorException(
+                        "Template directory configuring error: " + ie);
+            }
+        } else {
+            throw new TemplateProcessorException(
+                    "Template directory does not exist: "
+                            + templateDirFile.getAbsolutePath());
+        }
+        try {
+            Template template = cfg.getTemplate(templateFile);
+            Map<String, Object> templateMap = getTemplateMap(sourceList);
+            template.process(templateMap, new FileWriter(outputFile));
+        } catch (freemarker.core.InvalidReferenceException ivx) {
+            throw new TemplateProcessorException(
+                    "Invalid reference in config: " + ivx);
+        } catch (freemarker.template.TemplateException e2) {
+            throw new TemplateProcessorException("TemplateException: " + e2);
+        } catch (java.io.IOException e) {
+            throw new TemplateProcessorException(
+                    "I/O Error during template conversion: " + e);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/TemplateProcessorException.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,37 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+
+
+package com.nokia.helium.core;
+
+/**
+ * Template Exception handler.
+ * 
+ */
+public class TemplateProcessorException extends RuntimeException {
+    
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * Default constructor.
+     * @param message the error message.
+     */
+    public TemplateProcessorException(String message) {
+        super(message);
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/XMLTemplateSource.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,53 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+ 
+
+package com.nokia.helium.core;
+
+import java.io.File;
+
+/**
+ * HlmAntlib exception handling class
+ */
+public class XMLTemplateSource extends AbstractTemplateInputSource
+{
+    private File sourceLocation;
+
+    /**
+    * Constructor
+    * 
+    * @param String
+    *            Name of template
+    * @param String
+    *            location of template 
+    */
+    public XMLTemplateSource(String name, File location) {
+        setSourceName(name);
+        sourceLocation = location;
+    }
+    
+    /**
+    * Get source location
+    * 
+    * @return 
+    *            source location. 
+    */
+    public File getSourceLocation() {
+        return sourceLocation;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/ant/HeliumExecutor.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,270 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+
+package com.nokia.helium.core.ant;
+
+import java.util.StringTokenizer;
+import java.util.Vector;
+import java.util.Enumeration;
+import java.util.List;
+import java.io.BufferedReader;
+import java.io.FileWriter;
+import java.io.InputStream;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.JarURLConnection;
+import java.net.URL;
+import java.util.ArrayList;
+
+import org.apache.tools.ant.taskdefs.ImportTask;
+import org.apache.tools.ant.helper.DefaultExecutor;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Target;
+import org.apache.tools.ant.Location;
+import com.nokia.helium.core.ant.types.*;
+
+import java.util.HashMap;
+import java.util.jar.JarEntry;
+import java.util.jar.JarFile;
+import org.apache.log4j.Logger;
+
+/**
+ * This class implements a flexible Ant Executor which allows dynamic discovery
+ * and automatic loading of new features. It also supports pre/post actions to
+ * be executed.
+ */
+public class HeliumExecutor extends DefaultExecutor {
+    private HashMap<String, Vector<HlmDefinition>> preOperations = new HashMap<String, Vector<HlmDefinition>>();
+    private HashMap<String, Vector<HlmDefinition>> postOperations = new HashMap<String, Vector<HlmDefinition>>();
+    private HashMap<String, Vector<HlmExceptionHandler>> exceptionHandlers = new HashMap<String, Vector<HlmExceptionHandler>>();
+    private Project project;
+    private Logger log = Logger.getLogger(HeliumExecutor.class);
+
+    /**
+     * Override the default Ant executor.
+     * 
+     * @param project
+     *            Object of the project
+     * @param targetNames
+     *            Array of target names to execute
+     * 
+     */
+    public void executeTargets(Project project, String[] targetNames) {
+        this.project = project;
+        log.debug("Running executeTargets");
+        BuildException failure = null;
+        try {
+            loadModules(project);
+            doOperations(preOperations, project, targetNames);
+            super.executeTargets(project, targetNames);
+        } catch (BuildException e) {
+            // Saving current issue
+            // We are Ignoring the errors as no need to fail the build.
+            failure = e;
+        }
+
+        try {
+            doOperations(postOperations, project, targetNames);
+        } catch (BuildException e) {
+            // Treating possible new issues...
+            if (failure != null) {
+                failure = new BuildException(e.toString() + failure.toString());
+            } else {
+                failure = e;
+            }
+        }
+        // Propagating any raised issues.
+        if (failure != null) {
+            handleExceptions(project, failure);
+            throw failure;
+        }
+    }
+
+    /**
+     * Loading all the discovered modules.
+     * 
+     * @param module
+     * @param prj
+     */
+    private void loadModules(Project prj) {
+        List<File> moduleList = loadAvailableModules();
+        for (File moduleName : moduleList) {
+            loadModule(moduleName, prj);
+        }
+    }
+
+    /**
+     * Load a specific module.
+     * 
+     * @param moduleLib
+     * @param prj
+     */
+    private void loadModule(File moduleLib, Project prj) {
+        String file = getHlmAntLibFile(moduleLib);
+        if (file == null) {
+            return;
+        }
+        log.debug("Loading " + moduleLib.getName());
+        ImportTask task = new ImportTask();
+        Target target = new Target();
+        target.setName("");
+        target.setProject(prj);
+        task.setOwningTarget(target);
+        task.setLocation(new Location(file));
+        task.setFile(file);
+        task.setProject(prj);
+        task.execute();
+        String moduleName = getModuleName(moduleLib);
+        Object refObject = prj.getReference(moduleName + ".list");
+
+        if (refObject == null) {
+            log.debug(moduleName + ".list not found");
+        }
+        if (refObject != null && refObject instanceof HlmDefList) {
+            HlmDefList defList = (HlmDefList) refObject;
+            Vector<HlmDefinition> tempDefList = new Vector<HlmDefinition>(
+                    defList.getPreDefList());
+            if (tempDefList != null) {
+                preOperations.put(moduleName, tempDefList);
+            }
+            Vector<HlmDefinition> tempPostDefList = new Vector<HlmDefinition>(
+                    defList.getPostDefList());
+            if (tempPostDefList != null) {
+                postOperations.put(moduleName, tempPostDefList);
+            }
+            Vector<HlmExceptionHandler> tempExceptionDefList = defList
+                    .getExceptionHandlerList();
+            if (tempExceptionDefList != null) {
+                exceptionHandlers.put(moduleName, tempExceptionDefList);
+            }
+            log.debug("loadModule:pre-opsize"
+                    + preOperations.size());
+            log.debug("loadModule:post-opsize"
+                    + postOperations.size());
+            log.debug("loadModule:exception-opsize"
+                    + exceptionHandlers.size());
+            log.debug("Checking " + moduleLib);
+        }
+    }
+
+    /**
+     * Search for helium.antlib.xml under the module Jar.
+     * 
+     * @param moduleLib
+     * @return
+     * @throws IOException
+     */
+    protected URL findHeliumAntlibXml(File moduleLib) throws IOException {
+        JarFile jarFile = new JarFile(moduleLib);
+        Enumeration<JarEntry> jee = jarFile.entries();
+        while (jee.hasMoreElements()) {
+            JarEntry je = jee.nextElement();
+            if (je.getName().endsWith("/helium.antlib.xml")) {
+                return new URL("jar:" + moduleLib.toURI().toString() + "!/"
+                        + je.getName());
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Retrieve the found helium.antlib.xml. TODO improve if possible without
+     * extracting the file.
+     * 
+     * @param moduleLib
+     * @return
+     */
+    private String getHlmAntLibFile(File moduleLib) {
+        log.debug("[HeliumExecutor] Checking " + moduleLib);
+        try {
+            URL url = findHeliumAntlibXml(moduleLib);
+            if (url == null)
+                return null;
+            log.debug("Getting " + url);
+
+            JarURLConnection jarConnection = (JarURLConnection) url
+                    .openConnection();
+            JarEntry jarEntry = jarConnection.getJarEntry();
+            JarFile jarFile = new JarFile(moduleLib);
+            InputStream is = jarFile.getInputStream(jarEntry);
+            InputStreamReader isr = new InputStreamReader(is);
+            BufferedReader reader = new BufferedReader(isr);
+            File file = File.createTempFile("helium", "antlib.xml");
+            file.deleteOnExit();
+            FileWriter writer = new FileWriter(file);
+            String line;
+            while ((line = reader.readLine()) != null) {
+                writer.write(line + "\n");
+            }
+            writer.close();
+            reader.close();
+            log.debug("Temp file " + file.getAbsolutePath());
+            return file.getAbsolutePath();
+        } catch (Exception ex) {
+            log.error("Error: " + ex.getMessage(), ex);
+            return null;
+        }
+    }
+
+    private void doOperations(
+            HashMap<String, Vector<HlmDefinition>> operations, Project prj,
+            String[] targetNames) {
+        log.debug("doOperations: start");
+        for (String moduleName : operations.keySet()) {
+            log.debug("doOperations: module" + moduleName);
+            for (HlmDefinition definition : operations.get(moduleName)) {
+                definition.execute(prj, moduleName, targetNames);
+            }
+        }
+    }
+
+    private void handleExceptions(Project prj, Exception e) {
+        for (String moduleName : this.exceptionHandlers.keySet()) {
+            log.debug("handleExceptions: module" + moduleName);
+            for (HlmExceptionHandler exceptionHandler : this.exceptionHandlers
+                    .get(moduleName)) {
+                exceptionHandler.handleException(prj, moduleName, e);
+            }
+        }
+    }
+
+    private String getModuleName(File moduleLib) {
+        String name = moduleLib.getName();
+        return name.substring(0, name.lastIndexOf('.'));
+    }
+
+    private List<File> loadAvailableModules() {
+        List<File> moduleList = new ArrayList<File>();
+        String classpathString = System.getProperty("java.class.path");
+        StringTokenizer tokenizier = new StringTokenizer(classpathString,
+                File.pathSeparator);
+        String token;
+        while (tokenizier.hasMoreTokens()) {
+            token = (String) tokenizier.nextToken();
+            if (new File(token).isFile() && token.endsWith(".jar")) {
+                moduleList.add(new File(token));
+            }
+        }
+        return moduleList;
+    }
+
+    protected Project getProject() {
+        return project;
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/ant/HlmDefinition.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,35 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+
+package com.nokia.helium.core.ant;
+
+import org.apache.tools.ant.Project;
+
+/**
+ * This interface defines the API of an HeliumExecutor task. 
+ */
+public interface HlmDefinition {
+    
+    /**
+     * This method will implement the action to be performed by the 
+     * HeliumExecutor plugin. 
+     * @param prj
+     * @param module
+     */
+    void execute(Project prj, String module, String[] targetNames);
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/ant/HlmExceptionHandler.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,36 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+
+package com.nokia.helium.core.ant;
+
+import org.apache.tools.ant.Project;
+
+/**
+ * This interface defines the API of an HeliumExecutor task. 
+ */
+public interface HlmExceptionHandler {
+    
+    /**
+     * This method will implement the action to be performed by the 
+     * HeliumExecutor plugin. 
+     * @param project
+     * @param module
+     * @param exception
+     */
+    void handleException(Project project, String module, Exception exception);
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/ant/VariableIFImpl.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,40 @@
+/*
+* Copyright (c) 2007-2008 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: 
+*
+*/
+ 
+package com.nokia.helium.core.ant;
+
+import org.apache.tools.ant.types.DataType;
+import com.nokia.helium.core.ant.types.Variable;
+import java.util.Collection;
+
+/**
+ * Interface to get the list of variables of type VariableSet
+ */
+public class VariableIFImpl extends DataType 
+{
+
+    
+    /**
+     * Get the name of the variable.
+     * @return name.
+     */
+    public Collection<Variable> getVariables() {
+        //Implemented by sub class
+        return null;
+    }
+
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/ant/VariableInterface.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,36 @@
+/*
+* Copyright (c) 2007-2008 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: 
+*
+*/
+ 
+package com.nokia.helium.core.ant;
+
+import com.nokia.helium.core.ant.types.Variable;
+import java.util.Collection;
+
+/**
+ * Interface to get the list of variables of type VariableSet
+ */
+public interface VariableInterface
+{
+
+    
+    /**
+     * Get the name of the variable.
+     * @return name.
+     */
+    Collection<Variable> getVariables();
+
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/ant/antlib.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : antlib.xml 
+Part of     : Helium AntLib
+
+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:
+
+============================================================================
+-->
+<antlib>
+    <!-- Task definition -->
+    <taskdef name="path2file" classname="com.nokia.helium.core.ant.taskdefs.SerializePathTask"/>
+    <taskdef name="countSeverity" classname="com.nokia.helium.core.ant.taskdefs.XMLLogCount"/>
+    <taskdef name="getVariableValue" classname="com.nokia.helium.core.ant.taskdefs.GetValueFromVariableSet"/>
+    <taskdef name="python" classname="com.nokia.helium.core.ant.taskdefs.PythonTask"/>
+    <taskdef name="retry" classname="com.nokia.helium.core.ant.taskdefs.RetryTask"/>
+    
+    <!-- Type definition -->
+    <typedef name="hasSeverity" classname="com.nokia.helium.core.ant.conditions.XMLLogCondition"/>
+    <typedef name="ldapauthenticate" classname="com.nokia.helium.core.ant.taskdefs.ValidateUserLogin" />
+    <typedef name="ldap" classname="com.nokia.helium.core.ant.taskdefs.LDAP" />
+    
+    <typedef name="arg" classname="com.nokia.helium.core.ant.types.Variable"/>
+    <typedef name="argSet" classname="com.nokia.helium.core.ant.types.VariableSet"/>
+
+    <!-- Type definition -->
+    <typedef name="deflist" classname="com.nokia.helium.core.ant.types.HlmDefList"/>
+    <typedef name="importdef" classname="com.nokia.helium.core.ant.types.HlmImportDef"/>
+    <typedef name="listenerdef" classname="com.nokia.helium.core.ant.types.HlmListenerDef"/>
+    
+    <typedef name="prettyprintxml" classname="com.nokia.helium.core.ant.filters.PrettyPrintXmlFilter"/> 
+</antlib>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/ant/conditions/XMLLogCondition.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,143 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+
+package com.nokia.helium.core.ant.conditions;
+
+import java.io.File;
+import org.apache.tools.ant.BuildException;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+import org.xml.sax.*;
+import org.xml.sax.helpers.*;
+import com.nokia.helium.core.ant.types.ConditionType;
+
+/**
+ * This class implements a Ant Condition which report true if it finds any
+ * matching severity inside an XML log.
+ * 
+ * Example:
+ * <pre>
+ * &lt;target name=&quot;fail-on-build-error&quot;&gt;
+ *   &lt;fail message=&quot;The build contains errors&quot;&gt;
+ *     &lt;hlm:hasSeverity file=&quot;build_log.log.xml&quot; severity=&quot;error&quot;/&gt;
+ *   &lt;/fail&gt;
+ * &lt;/target&gt;
+ * </pre>
+ * 
+ * The condition will eval as true if the build_log.log.xml contains any error message in the log.
+ * 
+ * @ant.type name="hasSeverity" category="Core"
+ */
+public class XMLLogCondition extends ConditionType {
+
+    // The severity to count
+    private String severity;
+    private String logRegexp;
+    private File fileName;
+
+    /**
+     * Sets which severity will be counted.
+     * 
+     * @param severity
+     * @ant.required
+     */
+    public void setSeverity(String severity) {
+        this.severity = severity;
+    }
+
+    public void setFile(File file) {
+        fileName = file;
+    }
+
+    /**
+     * Regular expression which used to match a specific log filename.
+     * 
+     * @param regex
+     * @ant.not-required
+     */
+    public void setLogMatcher(String regex) {
+        this.logRegexp = regex;
+    }
+
+    /**
+     * Get the number of a particular severity.
+     * 
+     * @return the number of a particular severity.
+     */
+    public int getSeverity() {
+        int messageCount = 0;
+        if (fileName == null || !fileName.exists()) {
+            //this.log("Error: Log file does not exist " + fileName);
+            return -1;
+        }
+        if (severity == null)
+            throw new BuildException("'severity' attribute is not defined");
+
+        //this.log("Looking for severity '" + severity + "' under '" + fileName.getAbsolutePath() + "'");
+        SAXParserFactory factory = SAXParserFactory.newInstance();
+        try {
+            SAXParser saxParser = factory.newSAXParser();
+            MessageHandler handler = new MessageHandler();
+            saxParser.parse(fileName, handler);
+            this.log("Found " + handler.getMessageCount() + " " + severity
+                    + "(s).");
+            messageCount += handler.getMessageCount();
+        } catch (Exception exc) {
+            throw new BuildException(exc);
+        }
+        return messageCount;
+    }
+
+    /**
+     * This method open the defined file and count the number of message tags
+     * with their severity attribute matching the configured one.
+     * 
+     * @return if true if message with the defined severity have been found.
+     */
+    public boolean eval() {
+        int severity = getSeverity();
+        if (severity < 0) {
+            return false;
+        }
+        return severity > 0;
+    }
+
+    /**
+     * Implements a SAX handler specialized in counting message tag with a
+     * specific severity.
+     */
+    class MessageHandler extends DefaultHandler {
+
+        private int count;
+
+        public MessageHandler() {
+        }
+
+        @Override
+        public void startElement(String uri, String localName, String name,
+                Attributes attributes) throws SAXException {
+            super.startElement(uri, localName, name, attributes);
+            if (name.equals(severity) && count == 0) {
+                count = Integer.valueOf(attributes.getValue("count"));
+            }
+        }
+
+        public int getMessageCount() {
+            return count;
+        }
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/ant/filters/PrettyPrintXmlFilter.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,72 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+
+package com.nokia.helium.core.ant.filters;
+
+import java.io.StringWriter;
+
+import org.apache.tools.ant.filters.TokenFilter.Filter;
+import org.dom4j.Document;
+import org.dom4j.DocumentHelper;
+import org.dom4j.io.OutputFormat;
+import org.dom4j.io.XMLWriter;
+
+/**
+ * Prints xml file in pretty format.
+ * 
+ */
+public class PrettyPrintXmlFilter implements Filter {
+
+    public PrettyPrintXmlFilter() {
+     
+    }
+    
+    /**
+     * Filter the input string.
+     * 
+     * @param string
+     *            the string to filter
+     * @return the modified string
+     */
+    public String filter(String token) {
+        String output = token;
+        XMLWriter writer = null;
+        if (token.length() > 0) {
+            try {
+                Document doc = DocumentHelper.parseText(token);
+                StringWriter out = new StringWriter();
+                OutputFormat format = OutputFormat.createPrettyPrint();
+                format.setIndentSize(4);
+                writer = new XMLWriter(out, format);
+                writer.write(doc);
+
+                output = out.toString();
+            } catch (Exception e) {
+                throw new RuntimeException(e);
+            } finally {
+                try {
+                    if (writer != null)
+                        writer.close();
+                } catch (Exception e2) {
+                    e2.printStackTrace();
+                }
+            }
+        }
+        return output;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/ant/helium.antlib.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : libs.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="libs-core" xmlns:hlm="http://www.nokia.com/helium">
+    <description>
+        Ant task definition declarations.
+    </description>
+    <taskdef resource="com/nokia/helium/core/ant/antlib.xml" uri="http://www.nokia.com/helium"/>
+    <typedef name="finaltargetdef" classname="com.nokia.helium.core.ant.types.HlmFinalTargetDef"/> 
+
+    <hlm:deflist id="helium-core.list">
+        <finaltargetdef/>
+    </hlm:deflist>
+</project>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/ant/listener/TargetTimesLogGeneratorListener.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,164 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+package com.nokia.helium.core.ant.listener;
+
+import java.io.DataOutputStream;
+import java.io.FileOutputStream;
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.concurrent.TimeUnit;
+
+import org.apache.tools.ant.BuildEvent;
+import org.apache.tools.ant.BuildListener;
+import org.apache.tools.ant.Project;
+
+/**
+ * <code>TargetTimesGeneratorListener</code> is a build listener used to
+ * generate a comma separated value file of targets and the total time the
+ * targets took to run.
+ * 
+ * Note: To generate a target times csv file make an entry of this listener in
+ * the hlm.bat file.
+ * 
+ */
+public class TargetTimesLogGeneratorListener implements BuildListener {
+
+    private String targetTimesLogCsv;
+    private List<String> targetTimesTable;
+
+    private Project project;
+    private Date targetStartTime;
+    private boolean isInitialized;
+
+    /**
+     * Method initializes the listener on build start.
+     * 
+     * @param event
+     *            is the build start event.
+     */
+    public void buildStarted(BuildEvent event) {
+
+    }
+
+    /**
+     * Initialize the listener.
+     * 
+     * @param project
+     *            is the current ant project running.
+     */
+    private void initialize(Project project) {
+        this.project = project;
+        targetTimesLogCsv = project.getProperty("target.times.log.file");
+        targetTimesTable = new ArrayList<String>();
+        isInitialized = true;
+        if (targetTimesLogCsv == null) {
+            this.project.log("TargetTimesLog csv file will not be generated. "
+                    + "Reason: Property 'target.times.log.file' not set");
+        }
+    }
+
+    /**
+     * Method generates the comma separated value file of targets and their
+     * times.
+     * 
+     * @param event
+     *            is the build finish event.
+     */
+    public void buildFinished(BuildEvent event) {
+        if (targetTimesLogCsv != null) {
+            DataOutputStream timesLogOut = null;
+            try {
+                File dir = new File(targetTimesLogCsv).getParentFile();
+                dir.mkdirs();
+                if (dir.exists())
+                {
+                    FileOutputStream timesLogFileStream = new FileOutputStream(
+                            targetTimesLogCsv, true);
+                    timesLogOut = new DataOutputStream(timesLogFileStream);
+                    // Display (sorted) hashtable.
+                    for (String s : targetTimesTable)
+                        timesLogOut.writeBytes(s + "\n");
+                    timesLogOut.close();
+                }
+            } catch (Exception ex) {
+                // We are Ignoring the errors as no need to fail the build.
+                project.log("Exception has occurred", ex, Project.MSG_WARN);
+                ex.printStackTrace();
+            }
+        }
+    }
+
+    /**
+     * Method records the target start time.
+     * 
+     * @param event
+     *            is the target start event.
+     */
+    public void targetStarted(BuildEvent event) {
+        if (!isInitialized) {
+            initialize(event.getProject());
+        }
+        targetStartTime = new Date();
+    }
+
+    /**
+     * Method records the total time of the target.
+     * 
+     * @param event
+     *            is the target finish event.
+     */
+    public void targetFinished(BuildEvent event) {
+        String targetName = event.getTarget().getName();
+        long time = getTargetRunTime();
+        targetTimesTable.add(targetName + "," + time);
+    }
+
+    /**
+     * Returns the total time the target run.
+     * 
+     * @return total target run time in seconds.
+     */
+    private long getTargetRunTime() {
+        Date targetFinishTime = new Date();
+        long targetLengthMSecs = targetFinishTime.getTime()
+                - targetStartTime.getTime();
+        return TimeUnit.MILLISECONDS.toSeconds(targetLengthMSecs);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void messageLogged(BuildEvent event) {
+        // ignore
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void taskFinished(BuildEvent event) {
+        // ignore
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void taskStarted(BuildEvent event) {
+        // ignore
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/ant/taskdefs/AntCall.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,40 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+
+package com.nokia.helium.core.ant.taskdefs;
+
+import org.apache.tools.ant.taskdefs.Ant;
+import org.apache.tools.ant.taskdefs.CallTarget;
+
+/**
+ * This task extends current AntCall task by
+ * supporting any kind of Reference object.
+ * 
+ * @ant.task name="antcall" category="Core"
+ */
+public class AntCall extends CallTarget {
+
+    /**
+     * Add a Reference object.
+     * @param ref the reference object.
+     */
+    public void add(Ant.Reference ref) {
+        this.addReference(ref);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/ant/taskdefs/GetValueFromVariableSet.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,126 @@
+/*
+* Copyright (c) 2007-2008 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: 
+*
+*/
+
+package com.nokia.helium.core.ant.taskdefs;
+
+import org.apache.tools.ant.BuildException;
+import java.util.Vector;
+import java.util.Collection;
+import com.nokia.helium.core.ant.VariableIFImpl;
+import org.apache.tools.ant.Task;
+import com.nokia.helium.core.ant.types.Variable;
+
+
+/**
+ * To retrive a variable value from a collection of variable set based on name, which contains property-value in pair.
+ *  
+ * <pre>
+ * Example:
+ * 
+ * &lt;hlm:argSet id="test.variableSet"&gt;
+ * &lt;variable name="v1" value="the_value_1"/&gt;
+ *     &lt;variable name="v2" value="the_value_2"/&gt;
+ *      &lt;variable name="v3" value="the_value_3"/&gt;
+ * &lt;/hlm:argSet&gt;
+ *       
+ *  &lt;hlm:getVariableValue name="v3" property="v1.value"&gt;
+ * &lt;hlm:argSet refid="test.variableSet"/&gt;
+ * &lt;/hlm:getVariableValue&gt;
+ * </pre>
+ * @ant.task name="getVariableValue"
+ */
+public class GetValueFromVariableSet extends Task {
+    private String name;
+    private String property;
+    private boolean failOnError = true;
+    
+   private Vector<VariableIFImpl> variableIntefaces = new Vector<VariableIFImpl>();
+    
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    /**
+     * Helper function to set failonerror attribute for the task. 
+     * @param failStatus, if true will fail the build if no variable is found for 
+     * matching name.
+     */
+    public void setFailOnError(boolean failStatus) {
+        failOnError = failStatus;
+    }
+
+    /**
+     * Helper function to store the name of the property where the value to be stored
+     * @param property name of the property where the result to be stored
+     */
+    public void setProperty(String property) {
+        this.property = property;
+    }
+
+    /**
+     * Helper function to create the VariableIFImpl object. 
+     * @return created VariableIFImpl instance
+     */
+    public VariableIFImpl createVariableIFImpl() {
+        VariableIFImpl var = new VariableIFImpl();
+        add(var);
+        return var;
+    }
+
+    
+    /**
+     * Helper function to add the newly created variable set. Called by ant.
+     * @param vs variable set to be added.
+     */
+    public void add(VariableIFImpl vs) {
+        variableIntefaces.add(vs);
+    }
+
+    public VariableIFImpl getVariableInterface() {
+        if (variableIntefaces.isEmpty()) {
+            throw new BuildException("variable interface cannot be null");
+        }
+        if (variableIntefaces.size() > 1 ) {
+            throw new BuildException("maximum one variable interface can be set");
+        }
+        return variableIntefaces.elementAt(0);
+    }
+    
+
+    /**
+     * Task to get the name / value pair
+     * @return return the name / value pair for the variable set.
+     */
+    public void execute() {
+        if (name == null)
+            throw new BuildException("'name' attribute has not been defined.");
+        if (property == null)
+            throw new BuildException(
+                    "'property' attribute has not been defined.");
+        VariableIFImpl varInterface = getVariableInterface();
+        Collection<Variable> variables = varInterface.getVariables();
+        for (Variable var : variables) {
+            if (var.getName().equals(name)) {
+                getProject().setProperty(property, var.getValue());
+                return;
+            }
+        }
+        if (failOnError) {
+            throw new BuildException("Could not find '" + name + "' variable.");
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/ant/taskdefs/LDAP.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,181 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+
+package com.nokia.helium.core.ant.taskdefs;
+
+import org.apache.tools.ant.Task;
+import org.apache.tools.ant.BuildException;
+import javax.naming.*;
+import javax.naming.directory.*;
+import java.util.Hashtable;
+
+/**
+ * Task is to search data from LDAP server.
+ * 
+ * <pre>
+ * Usage: &lt;hlm:ldap url=&quot;${ldap.server.url}&quot; 
+ *                  rootdn=&quot;${ldap.root.dn}&quot; 
+ *                  filter=&quot;uid=${env.USERNAME}&quot; 
+ *                  outputproperty=&quot;email.from&quot; 
+ *                  key=&quot;mail&quot;/&gt;
+ * </pre>
+ * @ant.task name="ldap" category="Core" 
+ */
+public class LDAP extends Task {
+    private String url;
+    private String rootdn;
+    private String filter;
+    private String key;
+    private String property;
+
+    /**
+     * Method executes current task.
+     */
+    public void execute() {
+        if (url == null)
+            throw new BuildException("'url' attribute is not defined");
+        if (rootdn == null)
+            throw new BuildException("'rootdn' attribute is not defined");
+        if (filter == null)
+            throw new BuildException("'filter' attribute is not defined");
+        if (property == null)
+            throw new BuildException("'property' attribute is not defined");
+        if (key == null)
+            throw new BuildException("'key' attribute is not defined");
+
+        // Set up environment for creating initial context
+        Hashtable<String, String> env = new Hashtable<String, String>();
+        env.put(Context.INITIAL_CONTEXT_FACTORY,
+                "com.sun.jndi.ldap.LdapCtxFactory");
+        env.put(Context.PROVIDER_URL, url + "/" + rootdn);
+
+        // Create initial context
+        try {
+            DirContext ctx = new InitialDirContext(env);
+            SearchControls controls = new SearchControls();
+            controls.setSearchScope(SearchControls.SUBTREE_SCOPE);
+            NamingEnumeration<SearchResult> en = ctx.search("", filter,
+                    controls);
+            if (en.hasMore()) {
+                SearchResult sr = en.next();
+                getProject().setProperty(property,
+                        (String) sr.getAttributes().get(key).get());
+                return;
+            }
+        } catch (NamingException exc) {
+            throw new BuildException(exc.getMessage());
+        } catch (Throwable e) {
+            // As user will not get affected due to this error not failing build.
+            log("Not able to retrive LDAP information for " + filter);
+        }
+    }
+
+    /**
+     * Return the LDAP server URL.
+     * 
+     * @return the LDAP server URL.
+     */
+    public String getUrl() {
+        return url;
+    }
+
+    /**
+     * Set LDAP server URL.
+     * 
+     * @param url is the LDAP server URL to set.
+     * @ant.required
+     */
+    public void setUrl(String url) {
+        this.url = url;
+    }
+
+    /**
+     * Return LDAP root distinguished name.
+     * 
+     * @return LDAP root distinguished name
+     */
+    public String getRootdn() {
+        return rootdn;
+    }
+
+    /**
+     * Set LDAP root distinguished name.
+     * 
+     * @param rootdn is the LDAP root distinguished name to set.
+     * @ant.required
+     */
+    public void setRootdn(String rootdn) {
+        this.rootdn = rootdn;
+    }
+
+    /**
+     * Return object name to search in the LDAP.
+     * 
+     * @return the object name to search in the LDAP
+     */
+    public String getFilter() {
+        return filter;
+    }
+
+    /**
+     * Set the object name to search in the LDAP.
+     * 
+     * @param filter is the object name to set.
+     * @ant.required
+     */
+    public void setFilter(String filter) {
+        this.filter = filter;
+    }
+
+    /**
+     * Return the output property to set.
+     * 
+     * @return is the output property to set.
+     */
+    public String getOutputProperty() {
+        return property;
+    }
+
+    /**
+     * Set the output property if the user found.
+     * 
+     * @param property is the property to be set.
+     * @ant.required
+     */
+    public void setOutputProperty(String property) {
+        this.property = property;
+    }
+
+    /**
+     * Return the key search element to search user information.
+     * 
+     * @return the key search element.
+     */
+    public String getKey() {
+        return key;
+    }
+
+    /**
+     * Set the key search element to search the user information.
+     * 
+     * @param key is the key search element to set.
+     * @ant.required
+     */
+    public void setKey(String key) {
+        this.key = key;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/ant/taskdefs/PythonTask.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,204 @@
+/*
+ * Copyright (c) 2007-2008 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: 
+ *
+ */
+
+package com.nokia.helium.core.ant.taskdefs;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.PrintWriter;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Task;
+import org.apache.tools.ant.taskdefs.ExecTask;
+import org.apache.tools.ant.types.Commandline;
+
+/**
+ * Embed python code in ant, generates temporary python file and executes it.
+ * 
+ * <pre>
+ * Usage: &lt;hlm:python&gt;
+ *                .
+ *                .  
+ *                .
+ *        &lt;/hlm:python&gt;
+ * </pre>
+ * 
+ * @ant.task name="python" category="Core"
+ */
+public class PythonTask extends Task {
+    private String iText;
+    private String outputProperty;
+    private String resultProperty;
+    private File script;
+
+    private File dir;
+    private File output;
+
+    private boolean iFailonerror;
+
+    /**
+     * Sets the property name whose value should be set to the output of the
+     * process.
+     * 
+     * @param propertyname
+     *            name of property.
+     * @ant.not-required
+     */
+    public void setOutputProperty(String propertyname) {
+        outputProperty = propertyname;
+    }
+
+    /**
+     * Sets the name of a property in which the return code of the command
+     * should be stored. Only of interest if failonerror=false.
+     * 
+     * @param propertyname
+     *            name of property.
+     * @ant.not-required .
+     */
+    public void setResultProperty(String propertyname) {
+        resultProperty = propertyname;
+    }
+
+    /**
+     * Add python statements to execute.
+     * 
+     * @param text
+     *            is the python statement to execute
+     * @ant.required If no script.
+     */
+    public void addText(String text) {
+        iText = getProject().replaceProperties(text);
+    }
+
+    /**
+     * Set the name of the python script to execute.
+     * 
+     * @param scriptname
+     *            name of the script to set.
+     * @ant.required If no text.
+     */
+    public void setScript(File scriptname) {
+        script = scriptname;
+    }
+
+    /**
+     * Fail if the command exits with a non-zero return code.
+     * 
+     * @param failonerror
+     *            if true fail the command on non-zero return code.
+     * @ant.not-required Default is no.
+     */
+    public void setFailonerror(boolean failonerror) {
+        iFailonerror = failonerror;
+    }
+
+    /**
+     * File the output of the process is redirected to. If error is not
+     * redirected, it too will appear in the output.
+     * 
+     * @param outputname
+     *            name of a file to which output should be sent.
+     * @ant.not-required
+     */
+    public void setOutput(File outputname) {
+        output = outputname;
+    }
+
+    /**
+     * Set the working directory of the process.
+     * 
+     * @param dirname
+     *            the working directory of the process.
+     * @ant.not-required
+     */
+    public void setDir(File dirname) {
+        dir = dirname;
+    }
+
+
+    /**
+     * Method executes current task.
+     */
+    public void execute() {
+        if (script != null) {
+            if (!script.exists()) {
+                throw new BuildException("Could not find " + script);
+            }
+            // Run the Python script
+            ExecTask execTask = new ExecTask();
+            execTask.setProject(getProject());
+            execTask.setTaskName(getTaskName());
+            execTask.setExecutable("python");
+            execTask.setFailonerror(true);
+            execTask.createArg().setFile(script);
+            execTask.setOutputproperty(outputProperty);
+            execTask.setResultProperty(resultProperty);
+            execTask.setDir(dir);
+            execTask.setOutput(output);
+            try {
+                execTask.execute();
+            } catch (BuildException t) {
+                if (iFailonerror)
+                    throw new BuildException(t.getMessage());
+                else
+                    log(t.getMessage(), 0); // MSG_ERR=0
+            }
+        } else if (iText != null) {
+            // Write the content of the script using Echo task
+            File tempfile = null;
+            try {
+                // Create a temporary file to contain the script
+                tempfile = File.createTempFile("helium", null);
+                PrintWriter out = new PrintWriter(new FileWriter(tempfile));
+                out.write(iText);
+                out.close();
+
+                // Run the temporary Python script
+                ExecTask execTask = new ExecTask();
+                execTask.setProject(getProject());
+                execTask.setTaskName(getTaskName());
+                execTask.setExecutable("python");
+                execTask.setFailonerror(iFailonerror);
+                Commandline.Argument scriptArg = execTask.createArg();
+                scriptArg.setValue(tempfile.getAbsolutePath());
+                execTask.setOutputproperty(outputProperty);
+                execTask.setResultProperty(resultProperty);
+                execTask.setDir(dir);
+                execTask.setOutput(output);
+                execTask.execute();
+
+                // Delete temporary script file
+                boolean fileDeleted = tempfile.delete();
+                if (!fileDeleted && iFailonerror) {
+                    throw new BuildException("Could not delete script file!");
+                }
+            } catch (IOException e) {
+                if (iFailonerror) {
+                    throw new BuildException(e.getMessage());
+                }
+                log("Error while running python task " + e.getMessage());
+            } finally {
+                // make sure we delete the file anyway
+                if (tempfile != null)
+                    tempfile.delete();
+            }
+        }
+    }
+
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/ant/taskdefs/RetryTask.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,131 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/* package org.apache.tools.ant.taskdefs; */
+/* * Portion Copyright (c) 2007-2008 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.*/
+
+package com.nokia.helium.core.ant.taskdefs;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.Task;
+import org.apache.tools.ant.TaskContainer;
+import org.apache.tools.ant.taskdefs.*;
+
+/**
+ * Retries the nested task a set number of times
+ * 
+ * @since Ant 1.7.1
+ * @ant.task name="retry" category="Core"
+ */
+public class RetryTask extends Task implements TaskContainer {
+    /**
+     * task to execute n times
+     */
+    private Task nestedTask;
+
+    /**
+     * set retryCount to 1 by default
+     */
+    private int retryCount = 1;
+
+    /**
+     * set sleepTime to 0 by default
+     */
+    private int sleepTime;
+
+    /**
+     * set the task
+     * 
+     * @param t
+     *            the task to retry.
+     */
+    public synchronized void addTask(Task t) {
+        if (nestedTask != null) {
+            throw new BuildException(
+                    "The retry task container accepts a single nested task"
+                            + " (which may be a sequential task container)");
+        }
+        nestedTask = t;
+    }
+
+    /**
+     * set the number of times to retry the task
+     * 
+     * @param n
+     *            the number to use.
+     * @ant.not-required Default is 1.
+     */
+    public void setRetryCount(int n) {
+        retryCount = n;
+    }
+
+    /**
+     * set the sleep time inbetween each retry
+     * 
+     * @param n
+     *            the time in ms to sleep between each retry.
+     * @ant.not-required Default is 0.
+     */
+    public void setSleepTime(int n) {
+        sleepTime = n;
+    }
+
+    /**
+     * perform the work
+     * 
+     * @throws BuildException
+     *             if there is an error.
+     */
+    public void execute() {
+        if (nestedTask == null) {
+            throw new BuildException("The nested retry task not defined");
+        }
+
+        StringBuffer errorMessages = new StringBuffer();
+        String br = getProject().getProperty("line.separator");
+        for (int i = 0; i <= retryCount; i++) {
+            try {
+                nestedTask.perform();
+                break;
+            } catch (Exception e) {
+                errorMessages.append(e.getMessage());
+                if (i >= retryCount) {
+                    StringBuffer exceptionMessage = new StringBuffer();
+                    exceptionMessage.append("Task [").append(
+                            nestedTask.getTaskName());
+                    exceptionMessage.append("] failed after [").append(
+                            retryCount);
+                    exceptionMessage.append("] attempts; giving up.")
+                            .append(br);
+                    exceptionMessage.append("Error messages:").append(br);
+                    exceptionMessage.append(errorMessages);
+                    throw new BuildException(exceptionMessage.toString(),
+                            getLocation());
+                }
+                log("Attempt [" + i + "]:  error occurred; retrying...", e,
+                        Project.MSG_INFO);
+                errorMessages.append(br);
+                if (sleepTime > 0) {
+                    Sleep sleepTimer = new Sleep();
+                    sleepTimer.setMilliseconds(sleepTime);
+                    sleepTimer.execute();
+                }
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/ant/taskdefs/SerializePathTask.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,137 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+
+package com.nokia.helium.core.ant.taskdefs;
+
+import java.io.*;
+import java.util.Vector;
+import java.util.Iterator;
+
+import org.apache.tools.ant.Task;
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.types.Path;
+
+/**
+ * This class implements a Path de/serializer which can dumps the list of files
+ * to a UTF-8 file or retrieve a list path from a file into a path datatype.
+ *
+ * Examples:
+ * <pre>
+ * &lt;target name=&quot;serialize&quot;&gt;
+ *   &lt;hlm:path2file file=&quot;output.txt&quot;&gt;
+ *     &lt;path&gt;
+ *         &lt;pathelement path=&quot;/temp/filename.ext&quot;/&gt;
+ *     &lt;/path&gt;
+ *   &lt;/hlm:path2file&gt;
+ * &lt;/target&gt;
+ * </pre>
+ * 
+ * The execution of the <code>serialize</code> task will produce a file called output.txt that will contains
+ * a line referencing the /temp/filename.ext.
+
+ * <pre>
+ * &lt;target name=&quot;deserialize&quot;&gt;
+ *   &lt;hlm:path2file reference=&quot;output.ref&quot;&gt; file=&quot;output.txt&quot;/&gt;
+ * &lt;/target&gt;
+ * </pre>
+ * 
+ * The execution of the <code>deserialize</code> task will create a path datatype that will
+ * contains a pathelement pointing on <code>/temp/filename.ext.</code>
+ * 
+ * @ant.task name="path2file" category="Core"
+ */
+public class SerializePathTask extends Task {
+
+    private Vector<Path> paths = new Vector<Path>();
+    private File filename;
+    private String reference;
+
+    /**
+     * Add path datatype to the task.
+     * 
+     * @param path
+     */
+    public void add(Path path) {
+        paths.add(path);
+    }
+
+    /**
+     * Set reference attribute.
+     * 
+     * @param reference
+     */
+    public void setReference(String reference) {
+        this.reference = reference;
+    }
+
+    /**
+     * Set file attribute. It is a mandatory setting.
+     * 
+     * @param filename
+     */
+    public void setFile(File filename) {
+        this.filename = filename;
+    }
+
+    /**
+     * Excecute the task. If filename is defined and reference is not, it will
+     * try to dump the paths content into a file. Else if a filename and a
+     * reference is defined it will covert each line of the file into a
+     * pathelement of a path datatype.
+     */
+    public void execute() {
+        if (filename == null) {
+            throw new BuildException("'file' attribute must be defined");
+        }
+        if (filename != null && reference == null) {
+            this.log("Dumping paths into file " + filename);
+            try {
+                OutputStreamWriter os = new OutputStreamWriter(
+                        new FileOutputStream(filename), "UTF8");
+                for (Iterator<Path> ipath = paths.iterator(); ipath.hasNext();) {
+                    Path path = ipath.next();
+                    String[] plist = path.list();
+                    for (int i = 0; i < plist.length; i++) {
+                        os.write(plist[i] + "\n");
+                    }
+                }
+                os.close();
+            } catch (Exception exc) {
+                throw new BuildException(exc);
+            }
+        } else if (filename != null && reference != null) {
+            this.log("Converting " + filename + " content into path.");
+            try {
+                Path path = new Path(getProject());
+                BufferedReader is = new BufferedReader(new InputStreamReader(
+                        new FileInputStream(filename), "UTF-8"));
+                String line = null;
+                while ((line = is.readLine()) != null) {
+                    path.createPathElement().setPath(line);
+                }
+                this.log("Creating reference " + reference + ".");
+                getProject().addReference(reference, path);
+            } catch (Exception exc) {
+                throw new BuildException(exc);
+            }
+        } else {
+            new BuildException("The task is not configured properly.");
+        }
+
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/ant/taskdefs/ValidateUserLogin.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,239 @@
+/*
+* Copyright (c) 2007-2008 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: 
+*
+*/
+ 
+package com.nokia.helium.core.ant.taskdefs;
+
+import org.apache.tools.ant.Task;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.BuildException;
+import javax.naming.*;
+import javax.naming.directory.*;
+import java.util.Hashtable;
+import org.apache.tools.ant.taskdefs.condition.Condition;
+
+/**
+ * Task is to validate noe user with LDAP server.
+ * <pre>
+ * Usage: &lt;hlm:ldapauthenticate url="${email.ldap.server}" 
+                                rootdn="${email.ldap.rootdn}" 
+                                searchdn="${ldap.organization.unit.rootdn}, ${ldap.people.rootdn}" 
+                                filter="uid=${env.USERNAME}" 
+                                outputproperty="is.authentication.sucess" 
+                                key="employeeNumber"
+                                password="${noe.password}"/&gt;
+   </pre>
+   <pre>
+ * Usage:   &lt;condition property="is.authentication.sucess" &gt;
+                &lt;hlm:ldapauthenticate url="${email.ldap.server}" 
+                                rootdn="${email.ldap.rootdn}" 
+                                searchdn="${ldap.organization.unit.rootdn}, ${ldap.people.rootdn}" 
+                                filter="uid=${env.USERNAME}" 
+                                key="employeeNumber"
+                                password="${noe.password}"/&gt;
+            &lt;condition/&gt;
+   </pre>
+   @ant.task name="ldapauthenticate" category="Core" 
+ */
+public class ValidateUserLogin extends Task implements Condition
+{
+    private String url;
+    private String rootdn;
+    private String filter;
+    private String key;
+    private String property;
+    private String searchdn;
+    private String password;
+        
+    public void execute()
+    {
+        
+        if (property == null)
+            throw new BuildException("'property' attribute is not defined");
+        validateParameters(url, rootdn, filter, key, searchdn, password);
+        log("Authenticating the user...");
+        if (authenticateUser(url, searchUser(url, rootdn, filter, key, searchdn))) {
+            getProject().setProperty(property, "true");
+        }
+        else {
+            getProject().setProperty(property, "false");
+        }
+    }
+    
+    public boolean eval() {
+        
+        validateParameters(url, rootdn, filter, key, searchdn, password);
+        return authenticateUser(url, searchUser(url, rootdn, filter, key, searchdn)); 
+         
+    }
+    
+    public String searchUser(String url, String rootdn, String filter, String key, String searchdn) {
+        
+        String userSearchDN = null;
+        // Set up environment for creating initial context
+        Hashtable<String, String> env = new Hashtable<String, String>();
+        env.put(Context.INITIAL_CONTEXT_FACTORY,
+                "com.sun.jndi.ldap.LdapCtxFactory");
+        env.put(Context.PROVIDER_URL, url + "/" + rootdn);
+
+        // Create initial context
+        env.put(Context.SECURITY_AUTHENTICATION, "simple");
+        DirContext ctx = null;
+        NamingEnumeration results = null;
+        try {
+            ctx = new InitialDirContext(env);
+            SearchControls controls = new SearchControls();
+            controls.setSearchScope(SearchControls.SUBTREE_SCOPE);
+            results = ctx.search("", filter, controls);
+            while (results.hasMore()) {
+                SearchResult searchResult = (SearchResult) results.next();
+                Attributes attributes = searchResult.getAttributes();
+                Attribute attr = attributes.get(key);
+                userSearchDN = key + "=" + (String) attr.get() + ", " + searchdn + ", " + rootdn;
+            }
+        } catch (NamingException e) {
+            e.printStackTrace(); 
+            throw new BuildException("LDAP Naming exception"); 
+        }
+        return userSearchDN;
+    }
+    
+    public void validateParameters(String url, String rootdn, String filter, String key, String searchdn, String password) {
+        
+        if (url == null)
+            throw new BuildException("'url' attribute is not defined");
+        if (rootdn == null)
+            throw new BuildException("'rootdn' attribute is not defined");
+        if (filter == null)
+            throw new BuildException("'filter' attribute is not defined");
+        if (key == null)
+            throw new BuildException("'key' attribute is not defined");
+        if (searchdn == null)
+            throw new BuildException("'searchdn' attribute is not defined");
+        if (password == null)
+            throw new BuildException("'password' attribute is not defined");
+    }
+    
+    public boolean authenticateUser(String ldapurl, String rooTdn) {
+    
+        Hashtable<String, String> env = new Hashtable<String, String>(11);
+        env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
+        env.put(Context.PROVIDER_URL, ldapurl);
+        env.put(Context.SECURITY_AUTHENTICATION, "simple");
+        env.put(Context.SECURITY_PRINCIPAL, rooTdn);
+        env.put(Context.SECURITY_CREDENTIALS, password);
+        try {
+            DirContext authContext = new InitialDirContext(env);
+            return true;
+        } catch (NamingException e) {
+            // We are Ignoring the errors as no need to fail the build.
+            log("Not able to validate the user. " + e.getMessage(), Project.MSG_DEBUG);
+            return false;  
+        }
+
+    }
+    public String getUrl() 
+    {
+        return url;
+    }
+    /**
+     * ldap URL
+     * @ant.required
+     */
+    public void setUrl(String url) 
+    {
+        this.url = url;
+    }
+    
+
+    public String getRootdn() 
+    {
+        return rootdn;
+    }
+    /**
+     * user password to authenticate
+     * @ant.required
+     */
+    public void setpassword(String password) 
+    {
+        this.password = password;
+    }
+    
+    public String getpassword() 
+    {
+        return password;
+    }
+    /**
+     * ldap root distinguished name to search user.
+     * @ant.required
+     */
+    public void setRootdn(String rootdn) 
+    {
+        this.rootdn = rootdn;
+    }
+    
+    public String getsearchdn() 
+    {
+        return searchdn;
+    }
+    /**
+     * ldap distinguished name to search user
+     * @ant.required
+     */
+    public void setsearchdn(String searchdn) 
+    {
+        this.searchdn = searchdn;
+    }
+
+    public String getFilter() 
+    {
+        return filter;
+    }
+    /**
+     * object name to search in the ldap.
+     * @ant.required
+     */
+    public void setFilter(String filter) 
+    {
+        this.filter = filter;
+    }
+
+    public String getOutputProperty() 
+    {
+        return property;
+    }
+    /**
+     * output property to set if the user found.
+     * @ant.required
+     */
+    public void setOutputProperty(String property) 
+    {
+        this.property = property;
+    }
+
+    public String getKey() 
+    {
+        return key;
+    }
+    /**
+     * key to search the user information
+     * @ant.required
+     */
+    public void setKey(String key) 
+    {
+        this.key = key;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/ant/taskdefs/XMLLogCount.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,90 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+
+package com.nokia.helium.core.ant.taskdefs;
+
+import java.io.File;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Task;
+import com.nokia.helium.core.ant.conditions.XMLLogCondition;
+
+/**
+ * This class sets a property to the number of matching severity inside a XML log.
+ * 
+ * @ant.task name="countSeverity" category="Core"
+ */
+public class XMLLogCount extends Task {
+
+    private File fileName;
+    private String severity;
+    private String logRegexp;
+    private String property;
+
+    /**
+     * File to be parsed.
+     * 
+     * @param filename
+     * @ant.required
+     */
+    public void setFile(File filename) {
+        fileName = filename;
+    }
+
+    /**
+     * Defines the severity name to be counted.
+     * 
+     * @param severity
+     * @ant.required
+     */
+    public void setSeverity(String severity) {
+        this.severity = severity;
+    }
+
+    /**
+     * Name of the property to be set.
+     * @param property the property name
+     * @ant.required
+     */
+    public void setProperty(String property) {
+        this.property = property;
+    }
+
+    /**
+     * Regular expression which used to match a specific log filename.
+     * @param regex
+     * @ant.not-required
+     */
+    public void setLogMatcher(String regex) {
+        this.logRegexp = regex;
+    }
+    
+    /**
+     *  Execute the task. Set the property with number of severities.  
+     * @throws BuildException
+     */
+    public void execute() {
+        if (property == null)
+            throw new BuildException("'property' attribute is not defined");
+        
+        XMLLogCondition cond = new XMLLogCondition();
+        cond.setFile(fileName);
+        cond.setLogMatcher(logRegexp);
+        cond.setSeverity(severity);
+        getProject().setNewProperty(property, "" + cond.getSeverity());
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/ant/types/ConditionType.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,32 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+
+package com.nokia.helium.core.ant.types;
+
+import org.apache.tools.ant.ProjectComponent;
+import org.apache.tools.ant.taskdefs.condition.Condition;
+
+/**
+ * Base class for conditions.
+ */
+public class ConditionType extends ProjectComponent implements Condition {
+    
+    public boolean eval() {
+        return false;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/ant/types/FallbackReference.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,65 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+
+package com.nokia.helium.core.ant.types;
+
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.taskdefs.Ant;
+
+/**
+ * This DataType implements a reference fallback.
+ * If refid is not defined then the implementation,
+ * can fallback on a defaultRefid.  
+ *
+ * @ant.type name="fallbackReference" category="Core"
+ */
+public class FallbackReference extends Ant.Reference {
+
+    private String defaultRefid;
+
+    /**
+     * Set the refid if it is defined, else it uses the defaultRefid
+     * @param id
+     */
+    public void setRefid(String id) {
+        getProject().log("Setting reference:  " + id, Project.MSG_DEBUG);
+        super.setRefId(id);
+        if (getProject().getReference(super.getRefId()) == null
+                && defaultRefid != null) {
+            super.setRefId(defaultRefid);
+        }
+    }
+
+    /**
+     * Set the default refid if it refid doesn't exists then
+     * it configures the reference to use the defaultRefid. 
+     * @param id
+     */
+    public void setDefaultRefid(String defaultRefid) {
+        getProject().log("Setting default reference: " + defaultRefid,
+                Project.MSG_DEBUG);
+        this.defaultRefid = defaultRefid;
+        if (getProject().getReference(super.getRefId()) == null) {
+            getProject().log(
+                    "Reference not defined using default reference: "
+                            + defaultRefid, Project.MSG_DEBUG);
+            setRefId(defaultRefid);
+        }
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/ant/types/HlmDefList.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,108 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+
+package com.nokia.helium.core.ant.types;
+
+import java.util.Vector;
+import org.apache.tools.ant.types.DataType;
+import com.nokia.helium.core.ant.HlmExceptionHandler;
+
+/**
+ * 
+ */
+public class HlmDefList extends DataType {
+
+    private Vector<HlmPreDefImpl> preDefList = new Vector<HlmPreDefImpl>();
+    private Vector<HlmPostDefImpl> postDefList = new Vector<HlmPostDefImpl>();
+    private Vector<HlmExceptionHandler> exceptionHandlerList = new Vector<HlmExceptionHandler>();
+
+    /**
+     * Creates an empty hlm post-action definition and adds it to the list.
+     */
+    public HlmPreDefImpl createHlmPreDefImpl() {
+        HlmPreDefImpl def = new HlmPreDefImpl();
+        add(def);
+        return (HlmPreDefImpl) def;
+    }
+
+    /**
+     * Creates an empty hlm post-action definition and adds it to the list.
+     */
+    public HlmPostDefImpl createHlmPostDefImpl() {
+        HlmPostDefImpl def = new HlmPostDefImpl();
+        add(def);
+        return (HlmPostDefImpl) def;
+    }
+
+    /**
+     * Add a given variable to the list
+     * 
+     * @param var
+     *            variable to add
+     */
+    public void add(HlmPreDefImpl definition) {
+        if (definition != null) {
+            preDefList.add(definition);
+        }
+    }
+
+    /**
+     * Add a post-action to the list.
+     */
+    public void add(HlmPostDefImpl definition) {
+        if (definition != null) {
+            postDefList.add(definition);
+        }
+    }
+    
+    /**
+     * Add a exception handler to the list.
+     */
+    public void add(HlmExceptionHandler exceptionHandler) {
+        if (exceptionHandler != null) {
+            exceptionHandlerList.add(exceptionHandler);
+        }
+    }
+
+    /**
+     * Get the pre-action list.
+     * 
+     * @return a vector containing all the pre-actions
+     */
+    public Vector<HlmPreDefImpl> getPreDefList() {
+        return preDefList;
+    }
+
+    /**
+     * Get the post-action list.
+     * 
+     * @return a vector containing all the post-actions
+     */
+    public Vector<HlmPostDefImpl> getPostDefList() {
+        return postDefList;
+    }
+    
+    /**
+     * Get the exception handler list.
+     * 
+     * @return a vector containing all the exception handlers
+     */
+    public Vector<HlmExceptionHandler> getExceptionHandlerList() {
+        return exceptionHandlerList;
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/ant/types/HlmFinalTargetDef.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,54 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+ 
+package com.nokia.helium.core.ant.types;
+
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.Target;
+import java.util.Hashtable;
+import org.apache.log4j.Logger;
+
+
+/**
+ * Class to execute the final target as post operation.
+ */
+public class HlmFinalTargetDef extends HlmPostDefImpl
+{
+    private Logger log = Logger.getLogger(HlmFinalTargetDef.class);
+    
+    /**
+     * This post action will execute the final target if any to be executed.
+     * @param prj
+     * @param module
+     * @param targetNames
+     * 
+     */
+    public void execute(Project prj, String module, String[] targetNames) {
+        String finalTargetName = prj.getProperty("hlm.target.final");
+        log.debug("Calling final target" + finalTargetName);
+        if (finalTargetName != null) {
+            Hashtable targets = prj.getTargets();
+            Target finalTarget = (Target)targets.get(finalTargetName);
+            if (finalTarget == null) {
+                log.info("The final target : " + finalTargetName + " not available skipping");
+                return;
+            }
+            finalTarget.execute();
+        }
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/ant/types/HlmImportDef.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,59 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+
+package com.nokia.helium.core.ant.types;
+
+import org.apache.log4j.Logger;
+import org.apache.tools.ant.taskdefs.ImportTask;
+import org.apache.tools.ant.Target;
+import org.apache.tools.ant.Location;
+import org.apache.tools.ant.Project;
+
+import java.io.File;
+
+/**
+ * This class implements an Executor importer pre-action.
+ * 
+ * @ant.type name="importdef" category="Core"
+ */
+public class HlmImportDef extends HlmPreDefImpl {
+
+    private static Logger log = Logger.getLogger(HlmImportDef.class);
+    
+    private File file ;
+
+    public void setFile(File file) {
+        this.file = file;
+    }
+
+    /**
+     * Will import the given file.
+     */
+    public void execute(Project prj, String module, String[] targetNames) {
+        log.debug("importdef:prj name" + prj.getName() + ". fileName" + file.toString());
+        ImportTask task = new ImportTask();
+        Target target = new Target();
+        target.setName("");
+        target.setProject(prj);
+        task.setOwningTarget(target);
+        task.setLocation(new Location(file.getAbsolutePath()));
+        task.setFile(file.toString());
+        task.setProject(prj);
+        task.execute();
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/ant/types/HlmListenerDef.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,56 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+
+package com.nokia.helium.core.ant.types;
+
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.BuildListener;
+import org.apache.log4j.Logger;
+
+/**
+ * This class implements a listener registration action.
+ * 
+ * @ant.type name="listenerdef" category="Core"
+ */
+public class HlmListenerDef extends HlmPreDefImpl {
+
+    private String classname;
+    private Logger log = Logger.getLogger(HlmListenerDef.class);
+
+    public void setClassname(String classname) {
+        this.classname = classname;
+    }
+
+    /**
+     * Register given listener to the project.
+     */
+    public void execute(Project prj, String module, String[] targetNames) {
+        try {
+            Class<?> listenerClass = Class.forName(classname);
+            BuildListener listener = (BuildListener) listenerClass
+                    .newInstance();
+            prj.addBuildListener(listener);
+        } catch (ClassNotFoundException ex) {
+            log.debug("Class not found exception:" + ex.getMessage(), ex);
+        } catch (InstantiationException ex1) {
+            log.debug("Class Instantiation exception:" + ex1.getMessage(), ex1);
+        } catch (IllegalAccessException ex1) {
+            log.debug("Illegal Class Access exception:" + ex1.getMessage(), ex1);
+        }
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/ant/types/HlmPostDefImpl.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,40 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+
+package com.nokia.helium.core.ant.types;
+
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.types.DataType;
+import org.apache.log4j.Logger;
+
+import com.nokia.helium.core.ant.HeliumExecutor;
+import com.nokia.helium.core.ant.HlmDefinition;
+
+/**
+ * Implement an abstract post-action.
+ */
+public class HlmPostDefImpl extends DataType implements HlmDefinition {
+    private Logger log = Logger.getLogger(HeliumExecutor.class);
+
+    /**
+     * Do nothing.
+     */
+    public void execute(Project prj, String module, String[] targetNames) {
+        // Empty method. Implemented by extending classes.
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/ant/types/HlmPreDefImpl.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,36 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+
+package com.nokia.helium.core.ant.types;
+
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.types.DataType;
+
+import com.nokia.helium.core.ant.HlmDefinition;
+
+/**
+ * Implement an abstract pre-action.
+ */
+public class HlmPreDefImpl extends DataType implements HlmDefinition {
+    /**
+     * Do nothing.
+     */
+    public void execute(Project prj, String module, String[] targetNames) {
+        // empty will implemented by the sub classes.
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/ant/types/ReferenceType.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,39 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+
+package com.nokia.helium.core.ant.types;
+
+import org.apache.tools.ant.types.DataType;
+import org.apache.tools.ant.types.Reference;
+
+/**
+ * Helper class to force user providing a reference. It doesn't implement any
+ * particular Ant interface.
+ */
+public class ReferenceType extends DataType {
+    /**
+     * Returns the referenced object.
+     * 
+     * @return the reference object.
+     */
+    public Object getReferencedObject() {
+        Reference reference = getRefid();
+        Object obj = reference.getReferencedObject(getProject());
+        return obj;
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/ant/types/Variable.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,130 @@
+/*
+* Copyright (c) 2007-2008 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: 
+*
+*/
+ 
+package com.nokia.helium.core.ant.types;
+
+import org.apache.tools.ant.types.DataType;
+import org.apache.tools.ant.BuildException;
+import org.apache.log4j.Logger;
+
+/**
+ * Helper class to store the command line variables
+ * with name / value pair.
+ * @ant.type name="arg" category="Core"
+ * @ant.type name="makeOption" category="Core"
+ */
+public class Variable extends DataType
+{
+    private static Logger log = Logger.getLogger(Variable.class);
+    private String name;
+    private String value;
+    private String cmdLine;
+
+    
+    public Variable() {
+    }
+    
+    /**
+     * Set the name of the variable.
+     * @param name
+     */
+    public void setName(String nm) {
+        name = nm;
+    }
+
+    
+    /**
+     * Get the name of the variable.
+     * @return name.
+     */
+    public String getName() {
+        if ( cmdLine == null) {
+            if (name == null ) { 
+                throw new BuildException( "name should not be null");
+            }
+            if (value == null) {
+                throw new BuildException( "value should not be null");
+            }
+            return name;
+        } else {
+            if (name != null  && value != null) { 
+                throw new BuildException( "you can define either name, value or line attribute and not both");
+            }
+            String cmdPart = cmdLine.trim();
+            String[] cmdArgs = cmdPart.split(" ");
+            return cmdArgs[0];
+        }
+    }
+
+    /**
+     * Set the value of the variable.
+     * @param value
+     */
+    public void setValue(String vlue) {
+        value = vlue;
+    }
+
+    /**
+     * Helper function to set the command line string
+     * @param line, string as input to command line.
+     */
+    public void setLine(String line) {
+        cmdLine = line;
+    }
+    
+    /**
+     * Get the value of the variable.
+     * @return value.
+     */
+    public String getValue() {
+        if ( cmdLine == null) {
+            if (name == null ) { 
+                throw new BuildException( "name should not be null");
+            }
+            if (value == null) {
+                throw new BuildException( "value should not be null");
+            }
+            return value;
+        } else {
+            if (name != null  && value != null) { 
+                throw new BuildException( "you can define either name, value or line attribute and not both");
+            }
+            return cmdLine;
+        }
+    }
+    /**
+     * Get the command line parameter
+     * @return command line string.
+     */
+    public String getParameter() {
+        if ( cmdLine == null) {
+            if (name == null ) { 
+                throw new BuildException( "name should not be null");
+            }
+            if (value == null) {
+                throw new BuildException( "value should not be null");
+            }
+            return name + "=" + value;
+        } else {
+            if (name != null  && value != null) { 
+                throw new BuildException( "you can define either name, value or line attribute and not both");
+            }
+            return cmdLine;
+        }
+    }
+
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/ant/types/VariableSet.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,160 @@
+/*
+* Copyright (c) 2007-2008 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: 
+*
+*/
+ 
+package com.nokia.helium.core.ant.types;
+
+import java.util.Vector;
+import java.util.HashMap;
+import java.util.List;
+import com.nokia.helium.core.ant.VariableIFImpl;
+import java.util.Collection;
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.types.Reference;
+import java.util.ArrayList;
+import org.apache.log4j.Logger;
+
+/**
+ * Helper class to store the variable set (list of variables
+ * with name / value pair)
+ * @ant.type name="argSet" category="Core"
+ */
+public class VariableSet extends VariableIFImpl {
+
+    private static Logger log = Logger.getLogger(VariableSet.class);
+    
+    private HashMap<String, Variable> variablesMap = new HashMap<String, Variable>();
+
+    private List<Variable> variables = new ArrayList<Variable> ();
+
+    private Vector<VariableSet> varSets = new Vector<VariableSet>();
+    
+    private VariableSet currentSet;
+
+    /**
+     * Constructor
+     */
+    public VariableSet() {
+    }    
+
+    /**
+     * Helper function to add the created varset
+     * @param filter to be added to the varset
+     */
+    public void add(VariableSet varSet) {
+        currentSet = null;
+        if (varSet != null) {
+            varSets.add(varSet);
+        }
+    }
+
+    /**
+     * Creates an empty variable element and adds 
+     * it to the variables list
+     * @return empty Variable pair
+     */
+    public VariableSet createArgSet() {
+        VariableSet varSet =  new VariableSet();
+        add(varSet);
+        return varSet;
+    }
+
+    /**
+     * Creates an empty variable element and adds 
+     * it to the variables list
+     * @return empty Variable pair
+     */
+    public Variable createArg() {
+        Variable var =  new Variable();
+        add(var);
+        return var;
+    }
+    
+    private void addVariable(Variable var) {
+        variables.add(var);
+    }
+    
+    /**
+     * Add a given variable to the list 
+     * @param var variable to add
+     */
+    public void add(Variable var) {
+        if ( currentSet == null) {
+            currentSet = new VariableSet();
+            varSets.add(currentSet);
+        }
+        currentSet.addVariable(var);
+    }
+
+    /**
+     * Helper function to get the list of variables defined for this set.
+     * @return variable list for this set.
+     */
+    public List<Variable> getVariablesList() {
+        return variables;
+    }
+    
+    public List<VariableSet> getVariableSets() {
+        return varSets;
+    }
+
+
+    /**
+     * Helper function to return the list of variables and its references
+     * @return variable list for this set and its references.
+     */
+    public Collection<Variable> getVariables() {
+        HashMap<String, Variable> varMap =   getVariablesMap();
+        //if (varMap.isEmpty()) {
+        //    throw new BuildException("Variable should not be empty and should contain one arg");
+        //}
+        return getVariablesMap().values();
+    }
+    /**
+     * Returns the list of variables available in the VariableSet 
+     * @return variable list
+     */
+    public HashMap<String, Variable> getVariablesMap() {
+        HashMap<String, Variable> allVariables = new HashMap<String, Variable>();
+        // Then filters as reference in filterset
+        Reference refId = getRefid();
+        Object varSetObject = null;
+        if (refId != null) {
+            try {
+                varSetObject = refId.getReferencedObject();
+            } catch ( Exception ex) {
+                log.debug("exception in getting variable", ex);
+                throw new BuildException("Not found: " + ex.getMessage());
+            }
+            if (varSetObject != null && varSetObject instanceof VariableSet) {
+                HashMap<String, Variable> varSetMap = ((VariableSet)varSetObject).getVariablesMap();
+                allVariables.putAll(varSetMap);
+            }
+        }
+        if (varSets != null && (!varSets.isEmpty())) {
+            for (VariableSet varSet : varSets) {
+                HashMap<String, Variable> variablesMap = varSet.getVariablesMap();
+                allVariables.putAll(variablesMap);
+            }
+        }
+        if (variables != null && !variables.isEmpty()) {
+            for (Variable var : variables) {
+                allVariables.put(var.getName(), var);
+            }
+        }
+        return allVariables;
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/plexus/AntStreamConsumer.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,62 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+package com.nokia.helium.core.plexus;
+
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.Task;
+import org.codehaus.plexus.util.cli.StreamConsumer;
+
+/**
+ * Handle the output lines and redirect them to Ant logging.
+ * The logging level is configurable.
+ *
+ */
+public class AntStreamConsumer implements StreamConsumer {
+
+    private Task task;
+    private int level = Project.MSG_INFO;
+    
+    /**
+     * Initialize the consumer with the task that will be used to 
+     * redirect the consumed lines. Default logging level will be 
+     * Project.MSG_INFO.
+     * @param task an Ant task
+     */
+    public AntStreamConsumer(Task task) {
+        this.task = task;
+    }
+
+    /**
+     * Initialize the consumer with the task that will be used to 
+     * redirect the consumed lines, and the level of logging.
+     * @param task ant Ant task.
+     * @param level ant logging level to use.
+     */
+    public AntStreamConsumer(Task task, int level) {
+        this.task = task;
+        this.level = level;
+    }
+    
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void consumeLine(String line) {
+        task.log(line, level);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/plexus/CommandBase.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,214 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+package com.nokia.helium.core.plexus;
+
+import java.io.File;
+import java.util.Map;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.codehaus.plexus.util.Os;
+import org.codehaus.plexus.util.cli.CommandLineException;
+import org.codehaus.plexus.util.cli.CommandLineUtils;
+import org.codehaus.plexus.util.cli.Commandline;
+import org.codehaus.plexus.util.cli.StreamConsumer;
+
+/**
+ * This abstract class implements some basic support to execute commands and 
+ * redirect outputs to StreamConsumer. You can have common stream consumers or
+ * execution base streamconsumers. The exception type raised 
+ * can be controlled by the implementing class.
+ *
+ * @param <T>
+ */
+public abstract class CommandBase<T extends Exception> {
+    private final Logger log = Logger.getLogger(getClass());
+    private Vector<StreamConsumer> outputHandlers = new Vector<StreamConsumer>();
+    private Vector<StreamConsumer> errorHandlers = new Vector<StreamConsumer>();
+
+    /**
+     * Get the executable name.
+     * @return
+     */
+    protected abstract String getExecutable();
+
+    /**
+     * Throw an exception with message and cause.
+     * @param message
+     * @param t
+     * @throws T
+     */
+    protected abstract void throwException(String message, Throwable t) throws T;
+
+    /**
+     * Throw an exception with message only.
+     * @param message
+     * @throws T
+     */
+    protected void throwException(String message) throws T {
+        throwException(message, null);
+    }
+
+    /**
+     * Location where to execute the command. The default location
+     * is the current directory.
+     * @return a File object pointing to a directory.
+     */
+    public File getWorkingDir() {
+        return new File(".");
+    }
+    
+    /**
+     * Add a LineHandler to the CommandBase instance.
+     * LineHandlers could be used to record/log the output stream
+     * command invocation.
+     * @param lineHandler a lineHandle instance
+     */
+    public void addOutputLineHandler(StreamConsumer lineHandler) {
+        if (lineHandler != null) {
+            outputHandlers.add(lineHandler);
+        }
+    }
+    
+    /**
+     * Add a LineHandler to the CommandBase instance.
+     * LineHandlers could be used to record/log the output error stream
+     * command invocation.
+     * @param lineHandler a lineHandle instance
+     */
+    public void addErrorLineHandler(StreamConsumer lineHandler) {
+        if (lineHandler != null) {
+            errorHandlers.add(lineHandler);
+        }
+    }
+
+    /**
+     * Execute the command defined by getExecutable with args as list of arguments.
+     * 
+     * @param args
+     * @throws T extends
+     */
+    public void execute(String[] args) throws T {
+        execute(args, null);
+    }
+
+    /**
+     * Execute the command given by getExecutable with args as list of arguments and custom StreamConsumer.
+     * 
+     * @param args
+     *            an array representing blocks arguments
+     * @param output
+     *            the StreamConsumer to analyze the output with. If null it is
+     *            ignored.
+     * @throws T
+     */
+    public void execute(String[] args, StreamConsumer output) throws T {
+        execute(args, null, output);
+    }
+
+    /**
+     * Execute the command given by getExecutable with args as list of arguments and custom StreamConsumer.
+     * Also env content will be added to the environment. 
+     * 
+     * @param args
+     *            an array representing blocks arguments
+     * @param env
+     *            additional key to add the environment
+     * @param output
+     *            the StreamConsumer to analyze the output with. If null it is
+     *            ignored.
+     * @throws T
+     */
+    public void executeCmdLine(String argLine, Map<String, String> env, StreamConsumer output)
+            throws T {
+        Commandline cmdLine = new Commandline();
+        cmdLine.createArg().setValue(getExecutable());
+        if (argLine != null) {
+            cmdLine.createArg().setLine(argLine);
+        }
+        executeCmd(cmdLine, env, output);
+    }
+
+    private void executeCmd(Commandline cmdLine, Map<String, String> env, StreamConsumer output)     throws T  {
+        if (env != null) {
+            for (Map.Entry<String, String> entry : env.entrySet()) {
+                cmdLine.addEnvironment(entry.getKey(), entry.getValue());
+            }
+        }
+        cmdLine.setWorkingDirectory(getWorkingDir());
+        
+        // This is only needed on windows.
+        if (Os.isFamily(Os.FAMILY_WINDOWS)) {
+            cmdLine.createArg().setLine("&& exit %%ERRORLEVEL%%");    
+        }
+        
+
+        StreamMultiplexer inputMux = new StreamMultiplexer();
+        if (output != null) {
+            inputMux.addHandler(output);
+        }
+        for (StreamConsumer lh : outputHandlers) {
+            inputMux.addHandler(lh);
+        }
+
+        StreamMultiplexer errorMux = new StreamMultiplexer();
+        StreamRecorder errorRecorder = new StreamRecorder();
+        errorMux.addHandler(errorRecorder);
+        for (StreamConsumer lh : errorHandlers) {
+            errorMux.addHandler(lh);
+        }
+
+        try {
+            int err = CommandLineUtils.executeCommandLine(cmdLine, inputMux,
+                    errorMux);
+            // check its exit value
+            log.debug("Execution of " + getExecutable() + " returned: " + err);
+            if (err != 0) {
+                throwException(errorRecorder.getBuffer() + " (return code: " + err
+                        + ")");
+            }
+        } catch (CommandLineException e) {
+            throwException(
+                    "Error executing " + getExecutable() + ": "
+                            + e.toString());
+        }
+    }
+
+    /**
+     * Execute the command given by getExecutable with args as list of arguments and custom StreamConsumer.
+     * Also env content will be added to the environment. 
+     * 
+     * @param args
+     *            an array representing blocks arguments
+     * @param env
+     *            additional key to add the environment
+     * @param output
+     *            the StreamConsumer to analyze the output with. If null it is
+     *            ignored.
+     * @throws T
+     */
+    public void execute(String[] args, Map<String, String> env, StreamConsumer output)
+            throws T {
+        Commandline cmdLine = new Commandline();
+        cmdLine.createArg().setValue(getExecutable());
+        if (args != null) {
+            cmdLine.addArguments(args);
+        }
+        executeCmd(cmdLine, env, output);
+    }
+    
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/plexus/FileStreamConsumer.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,80 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+package com.nokia.helium.core.plexus;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.io.BufferedWriter;
+
+import org.apache.log4j.Logger;
+import org.codehaus.plexus.util.cli.StreamConsumer;
+
+/**
+ * Record a stream into a file. 
+ *
+ */
+public class FileStreamConsumer implements StreamConsumer {
+    private Logger log = Logger.getLogger(getClass());
+    private BufferedWriter writer;
+    
+    /**
+     * Create a FileStreamConsumer which will record content to 
+     * the output file.
+     * @param output the file to write the output to.
+     * @throws FileNotFoundException if an error occur while opening the file.
+     */
+    public FileStreamConsumer(File output) throws FileNotFoundException {
+        writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(output)));
+    }
+    
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public synchronized void consumeLine(String line) {
+        try {
+            writer.write(line);
+            writer.newLine();
+        } catch (IOException e) {
+            log.error("Error while writing to file: " + e.getMessage(), e);
+        }
+    }
+    
+    /**
+     * Closing the file.
+     */
+    public void close() {
+        try {
+            writer.flush();
+            writer.close();
+        } catch (IOException e) {
+            log.error("Error while writing to file: " + e.getMessage(), e);
+        }
+    }
+
+    /**
+     * Helper function to return the writer instance for sub classes
+     * to write if any additional information.
+     * @return writer of the stream consumer. 
+     */
+    public BufferedWriter getWriter() {
+        return writer;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/plexus/StreamMultiplexer.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,48 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+package com.nokia.helium.core.plexus;
+
+import java.util.Vector;
+import org.codehaus.plexus.util.cli.StreamConsumer;
+
+/**
+ * Get the line consumed by a set of StreamConsumer.
+ *
+ */
+public class StreamMultiplexer implements StreamConsumer {
+
+    private Vector<StreamConsumer> handlers = new Vector<StreamConsumer>(); 
+    
+    /**
+     * Add an StreamConsumer to the multiplexing. 
+     * @param handler the StreamConsumer to add.
+     */
+    public void addHandler(StreamConsumer handler) {
+        handlers.add(handler);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void consumeLine(String line) {
+        for (StreamConsumer handler : handlers) {
+            handler.consumeLine(line);
+        }
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/src/com/nokia/helium/core/plexus/StreamRecorder.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,69 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+package com.nokia.helium.core.plexus;
+
+import org.apache.log4j.Logger;
+import org.codehaus.plexus.util.cli.StreamConsumer;
+
+/**
+ * Record the consumed lines into a StringBuffer.
+ *
+ */
+public class StreamRecorder implements StreamConsumer {
+    private Logger log = Logger.getLogger(this.getClass());    
+    private StringBuffer buffer = new StringBuffer();
+    
+    /**
+     * Default constructor.
+     */
+    public StreamRecorder() {
+    }
+
+    /**
+     * This constructor allows you to set a custom
+     * buffer.
+     * @param buffer custom buffer object.
+     */
+    public StreamRecorder(StringBuffer buffer) {
+        this.buffer = buffer;
+    }
+
+    /**
+     * Get the current buffer.
+     * @return the current buffer object
+     */
+    public StringBuffer getBuffer() {
+        return buffer;
+    }
+
+    /**
+     * Set the buffer object.
+     * @param buffer custom buffer object.
+     */
+    public synchronized void setBuffer(StringBuffer buffer) {
+        this.buffer = buffer;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public synchronized void consumeLine(String line) {
+        log.debug(line);
+        buffer.append(line + "\n");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/src/log4j.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : libs.ant.xml 
+Part of     : Helium Antlib
+
+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:
+
+============================================================================
+-->
+<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
+<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
+
+    <appender name="ASYNC" class="org.apache.log4j.AsyncAppender">
+            <appender-ref ref="FILE"/>
+            <appender-ref ref="CONSOLE"/>
+    </appender>
+
+    <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
+        <layout class="org.apache.log4j.PatternLayout">
+               <param name="ConversionPattern" 
+                            value="%d{HH:mm:ss,SSS}  %-2p - %m  %n"/>
+        </layout>
+    <filter class="org.apache.log4j.varia.LevelMatchFilter">
+      <param name="LevelToMatch" value="DEBUG" />
+      <param name="AcceptOnMatch" value="false" />
+    </filter>
+    </appender>
+
+
+    <appender name="FILE" class="org.apache.log4j.RollingFileAppender">
+        <param name="File" value="hlm_debug.log"/>
+        <param name="append" value="false"/>
+        <layout class="org.apache.log4j.PatternLayout">
+               <param name="ConversionPattern" 
+                            value="%d{HH:mm:ss,SSS}  %-2p - %m  %n"/>
+        </layout>
+    <filter class="org.apache.log4j.varia.LevelMatchFilter">
+      <param name="LevelToMatch" value="DEBUG" />
+      <param name="AcceptOnMatch" value="true" />
+    </filter>
+
+    <filter class="org.apache.log4j.varia.DenyAllFilter"/>
+
+    </appender>
+
+  <logger name="com.nokia" additivity="false">
+      <level value="DEBUG" />
+    <appender-ref ref="ASYNC" />
+  </logger>
+
+    <root>
+        <priority value="DEBUG"/>
+        <appender-ref ref="CONSOLE"/>
+    </root>
+</log4j:configuration>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/tests/bld.sh	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,24 @@
+#!/bin/bash
+
+#
+# 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: 
+#
+
+
+if [ -f ~/.bashrc ] ; then
+    . ~/.bashrc
+fi
+
+ant -Dant.executor.class="com.nokia.helium.core.ant.HeliumExecutor" $*
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/tests/build.bat	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,31 @@
+@echo off
+
+rem
+rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+rem All rights reserved.
+rem This component and the accompanying materials are made available
+rem under the terms of the License "Eclipse Public License v1.0"
+rem which accompanies this distribution, and is available
+rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+rem
+rem Initial Contributors:
+rem Nokia Corporation - initial contribution.
+rem
+rem Contributors:
+rem
+rem Description: 
+rem
+
+setlocal
+if not defined JAVA_6_HOME (
+set TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
+) ELSE  set TESTED_JAVA=%JAVA_6_HOME%
+if exist %TESTED_JAVA% (set JAVA_HOME=%TESTED_JAVA%)
+call ant -Dant.executor.class=com.nokia.helium.core.ant.HeliumExecutor %*
+if "%ERRORLEVEL%" neq "0" (goto error)
+endlocal
+goto :eof
+
+:error
+endlocal
+if "%OS%"=="Windows_NT" color 00
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/tests/build.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : build.xml 
+Part of     : Helium AntLib
+
+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="helium-core" xmlns:au="antlib:org.apache.ant.antunit">
+    <description>Helium antlib core tests.</description>
+
+    <import file="${builder.dir}/java/test-macros.ant.xml"/>
+
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/tests/core/executor/build.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<!-- 
+============================================================================ 
+Name        : build.ant.xml 
+Part of     : Helium AntLib
+
+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="test-executor">
+    <description>Helium antlib core executor test config.</description>
+
+    <target name="target">
+        <echo>Running target.</echo>
+    </target>
+
+</project>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/tests/core/executor/test_executor.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,83 @@
+<?xml version="1.0"?>
+<!-- 
+============================================================================ 
+Name        : test_executor.ant.xml 
+Part of     : Helium AntLib
+
+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="test-executor" xmlns:au="antlib:org.apache.ant.antunit">
+    <description>Helium antlib core executor tests.</description>
+
+    <target name="final-target-1">
+        <echo message="about to call final target" />
+        <fail message="test is failed for final target" />
+    </target>
+
+    <target name="test-final-target-1">
+        <property name="hlm.target.final" value="test_final_target" />
+        <au:expectfailure>
+            <antcall target="final-target-1" />
+        </au:expectfailure>
+    </target>
+
+    <target name="test-final-target-2">
+        <property name="hlm.target.final" value="test_final_target" />
+        <echo message="about to call final target" />
+    </target>
+
+    <target name="test-final-target-3" depends="test_final_target">
+        <!-- assumption is that always that the target would be running -->
+        <property name="hlm.target.final" value="test_final_target" />
+    </target>
+
+    <target name="test-final-target-4">
+        <!-- assumption is that always that the target would be running -->
+        <property name="hlm.target.final" value="non-exist-target" />
+    </target>
+
+
+    <target name="test_final_target">
+        <echo message="executing test_final_target by default at end" />
+    </target>
+    
+    <target name="test-executor">
+        <au:logcapturer/>
+        <exec osfamily="windows" executable="cmd">
+            <arg line="/C ant"/>
+            <arg value="-Dant.executor.class=com.nokia.helium.core.ant.HeliumExecutor"/>
+            <arg line="-lib ../../../../bin"/>
+            <arg line="-lib ../../../../lib"/>
+            <arg line="-lib ../../../../antlibs"/>
+            <arg line="target"/>
+        </exec>    
+        <exec osfamily="unix" executable="ant">
+            <arg value="-Dant.executor.class=com.nokia.helium.core.ant.HeliumExecutor"/>
+            <arg line="-lib ../../../../bin"/>
+            <arg line="-lib ../../../../lib"/>
+            <arg line="-lib ../../../../antlibs"/>
+            <arg line="target"/>
+        </exec>
+        <exec osfamily="unix" executable="ant">
+            <arg value="-Dant.executor.class=com.nokia.helium.core.ant.HeliumExecutor"/>
+            <arg line="-lib ../../../../bin"/>
+            <arg line="-lib ../../../../lib"/>
+            <arg line="-lib ../../../../antlibs"/>
+            <arg line="target"/>
+        </exec>
+    </target>
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/tests/core/ldap/test_ldap.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,72 @@
+<?xml version="1.0"?>
+<!-- 
+============================================================================ 
+Name        : test_ldap.ant.xml 
+Part of     : Helium AntLib
+
+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="test-ldap" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
+    <description>Helium antlib core ldap tests.</description>
+
+    <typedef name="ldap" classname="com.nokia.helium.core.ant.taskdefs.LDAP"/>
+    <taskdef resource="com/nokia/helium/core/ant/antlib.xml" uri="http://www.nokia.com/helium"/>
+    
+    
+    <target name="setUp">
+        <property environment="env"/>
+        <property name="email.ldap.server" value="ldap://some.address.test:389"/>
+        <property name="email.ldap.rootdn" value="o=RootName"/>
+    </target>
+  
+    <target name="test-ldap-case-no-args">
+        <au:expectfailure expectedMessage="'url' attribute is not defined">
+            <hlm:ldap/>
+        </au:expectfailure>
+    </target>
+    
+    <target name="test-ldap-case-only-url-set">
+        <au:expectfailure expectedMessage="'rootdn' attribute is not defined">
+            <hlm:ldap url="test"/>
+        </au:expectfailure>
+    </target>
+    
+    <target name="test-ldap-case-url-rootdn-set">
+        <au:expectfailure expectedMessage="'filter' attribute is not defined">
+            <hlm:ldap url="test" rootdn="root"/>
+        </au:expectfailure>
+    </target>
+
+    <target name="test-ldap-case-url-rootdn-filter-set">
+        <au:expectfailure expectedMessage="'property' attribute is not defined">
+            <hlm:ldap url="test" rootdn="root" filter="filter"/>
+        </au:expectfailure>
+    </target>
+
+    <target name="test-ldap-case-url-rootdn-property-set">
+        <au:expectfailure expectedMessage="'key' attribute is not defined">
+            <hlm:ldap url="test" rootdn="root" filter="filter" outputproperty="email.from"/>
+        </au:expectfailure>
+    </target>
+
+    <target name="test-ldap-case-all-args-set">
+        <au:expectfailure expectedMessage="some.address.test:389">
+            <hlm:ldap url="${email.ldap.server}" rootdn="${email.ldap.rootdn}" filter="uid=${env.USERNAME}" outputproperty="email.from" key="mail"/>
+        </au:expectfailure>    
+    </target>
+    
+</project>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/tests/core/pythontask/data/test_sample.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,22 @@
+#============================================================================ 
+#Name        : test_sample.py 
+#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:
+#===============================================================================
+"""
+   Sample python file for testing Python task 
+"""
+print "Test Sample python file successful"
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/tests/core/pythontask/test_pythontask.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,94 @@
+<?xml version="1.0"?>
+<!-- 
+============================================================================ 
+Name        : test_pythontask.ant.xml 
+Part of     : Helium AntLib
+
+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="test-pythontask" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
+    <description>Helium antlib core ldap tests.</description>
+
+    <typedef name="python" classname="com.nokia.helium.core.ant.taskdefs.PythonTask"/>
+    <taskdef resource="com/nokia/helium/core/ant/antlib.xml" uri="http://www.nokia.com/helium"/>
+    
+    <target name="test-python-task-case-default">
+        <hlm:python>
+import logging
+
+_logger = logging.getLogger('test_pythontask')
+_handler = logging.StreamHandler()
+_handler.setFormatter(logging.Formatter('%(levelname)s: %(message)s'))
+_logger.addHandler(_handler)
+_logger.setLevel(logging.INFO)
+_logger.info("Test python task successful")
+        </hlm:python>
+        <au:assertLogContains text="Test python task successful" level="info"/>
+    </target>
+    
+    <target name="test-python-task-case-outputproperty-set">
+        <hlm:python outputProperty="result">
+print "Testing python task"        
+        </hlm:python>
+        <au:assertEquals expected="Testing python task"
+                      actual="${result}" casesensitive="false"/>
+    </target>
+    
+    <target name="test-python-task-case-failonerror-set">
+        <au:expectfailure>
+            <hlm:python failonerror="true" outputProperty="result">
+import sys
+print "Testing failonerror"
+sys.exit(1)
+            </hlm:python>
+        </au:expectfailure>
+        <au:assertMatches string="${result}" pattern="Testing failonerror" 
+                      casesensitive="false"/>
+    </target>
+    
+    <target name="test-python-task-case-resultproperty-set">
+        <hlm:python resultproperty="result">
+import sys
+print "Testing failonerror"
+sys.exit(1)
+        </hlm:python>
+        <au:assertEquals actual="${result}" expected="1" 
+                      casesensitive="false"/>
+    </target>
+    
+    <target name="test-python-task-case-no-text-set">
+        <hlm:python resultproperty="result"/>
+        <au:assertTrue>
+            <not>
+                <isset property="${result}"/>
+            </not>
+        </au:assertTrue>
+    </target>
+    
+    <target name="test-python-task-case-invalid-script-set">
+        <au:expectfailure expectedmessage="Could not find">
+            <hlm:python failonerror="true" outputProperty="result" script="some_python_script.py"/>
+        </au:expectfailure>            
+    </target>
+
+    <target name="test-python-task-case-valid-script-set">
+        <hlm:python failonerror="true" outputProperty="result" script="./data/test_sample.py"/>
+        <au:assertEquals actual="${result}" expected="Test Sample python file successful" 
+                      casesensitive="false"/>
+    </target>
+    
+</project>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/tests/core/retrytask/test_retrytask.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,52 @@
+<?xml version="1.0"?>
+<!-- 
+============================================================================ 
+Name        : test_retrytask.ant.xml 
+Part of     : Helium AntLib
+
+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="test-retrytask" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
+    <description>Helium antlib core ldap tests.</description>
+
+    <typedef name="retry" classname="com.nokia.helium.core.ant.taskdefs.RetryTask"/>
+    <taskdef resource="com/nokia/helium/core/ant/antlib.xml" uri="http://www.nokia.com/helium"/>
+    
+    <target name="test-retry-task-case-retrycount-set">
+        <au:expectfailure expectedMessage="Task [fail] failed after [2] attempts; giving up.">
+            <hlm:retry retryCount="2">
+                <fail message="Test Retry....."/>
+            </hlm:retry>
+        </au:expectfailure>    
+    </target>
+    
+    <target name="test-retry-task-case-multiple-sequential-task">
+        <au:expectfailure expectedMessage="The retry task container accepts a single nested task (which may be a sequential task container)">
+            <hlm:retry sleepTime="2">
+                <echo>Sleeping....</echo>
+                <echo>Sleeping....</echo>
+            </hlm:retry>
+        </au:expectfailure>
+    </target>
+
+    <target name="test-retry-task-case-no-task">
+        <au:expectfailure expectedMessage="The nested retry task not defined">
+            <hlm:retry/>
+        </au:expectfailure>
+    </target>
+    
+</project>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/tests/core/serializepath/test_serializepath.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : test_serializepath.ant.xml 
+Part of     : Helium AntLib
+
+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="test-serializepath" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
+    <description>Helium antlib core serializepath tests.</description>
+
+    <taskdef resource="com/nokia/helium/core/ant/antlib.xml" uri="http://www.nokia.com/helium" />
+
+    <!-- is called prior to the test -->
+    <target name="setUp">
+    </target>
+
+    <!-- is called after the test, even if that caused an error -->
+    <target name="tearDown">
+        <delete file="dump.txt" failonerror="false" />
+    </target>
+
+    <fileset id="empty_folder.path" dir="data/empty_folder" />
+
+    <!-- the actual test case -->
+    <target name="test-serializepath-emptydump">
+        <!-- Creating an empty file -->
+        <hlm:path2file file="dump.txt" />
+        <au:assertFileExists file="dump.txt" />
+        <hlm:path2file file="dump.txt" reference="path2file.empty"/>
+        <au:assertTrue>
+            <resourcecount refid="path2file.empty" when="eq" count="0" />
+        </au:assertTrue>
+    </target>
+
+    <!-- the actual test case -->
+    <target name="test-serializepath-data">
+        <!-- Creating an empty file -->
+        <hlm:path2file file="dump.txt">
+            <path>
+                <fileset dir="${ant.file.test-serializepath}/../data">
+                    <include name="**/test.txt"/>    
+                </fileset>
+            </path>
+        </hlm:path2file>
+        <au:assertFileExists file="dump.txt" />
+        <hlm:path2file file="dump.txt" reference="path2file.data"/>
+        <au:assertTrue>
+            <resourcecount refid="path2file.data" when="eq" count="2" />
+        </au:assertTrue>
+    </target>
+
+    <!-- the actual test case -->
+    <target name="test-serializepath-noattribute">
+        <!-- Creating an empty file -->
+        <au:expectfailure>
+            <hlm:path2file/>
+        </au:expectfailure>
+    </target>
+
+    <target name="test-serializepath-nofile-reference">
+        <!-- Creating an empty file -->
+        <au:expectfailure>
+            <hlm:path2file reference="ref.not.defined"/>
+        </au:expectfailure>
+    </target>
+</project>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/tests/core/test_core.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : test_core.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="test_core" xmlns:au="org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
+    <description>
+        Testing core targets
+    </description>
+    
+    <target name="test-prettyprintxml-filter">
+        <loadfile srcfile="./../data/config_test.cfg.xml" property="xml.test.content">
+            <filterchain>
+                <tokenfilter>
+                    <filetokenizer/>
+                    <hlm:prettyprintxml/>                
+                </tokenfilter>
+            </filterchain>
+        </loadfile>
+        <echo>Pretty-printed XML:
+            
+${xml.test.content}</echo>
+    </target>
+
+</project>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/tests/core/variableset/build.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<!-- 
+============================================================================ 
+Name        : build.ant.xml 
+Part of     : Helium AntLib
+
+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="test-variableset">
+    <description>Helium antlib core executor test config.</description>
+
+    <target name="target">
+        <echo>Running target.</echo>
+    </target>
+
+</project>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/tests/core/variableset/test_variableset.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,127 @@
+<?xml version="1.0"?>
+<!-- 
+============================================================================ 
+Name        : test_executor.ant.xml 
+Part of     : Helium AntLib
+
+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="test-variableset" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
+    <description>Helium antlib core variableset tests.</description>
+
+    <typedef name="arg" classname="com.nokia.helium.core.ant.types.Variable"/>
+    <typedef name="argSet" classname="com.nokia.helium.core.ant.types.VariableSet"/>
+
+    <taskdef resource="com/nokia/helium/core/ant/antlib.xml" uri="http://www.nokia.com/helium"/>
+    <taskdef name="getVariableValue" classname="com.nokia.helium.core.ant.taskdefs.GetValueFromVariableSet"/>
+
+    <argSet id="common.argset">
+        <arg line="-c tools_rel -c tools2_rel" />
+        <arg name="-j" value="1" />
+    </argSet>
+
+    <argSet id="common.invalid.arg1" />
+
+    <argSet id="common.invalid.arg2">
+        <arg name="-j"/>
+    </argSet>
+
+    <argSet id="common.invalid.arg3">
+        <arg line="-c tools_rel -c tools2_rel" name="test" value="test"/>
+    </argSet>
+
+    <argSet id="override.argset.thread">
+        <argSet refid="common.argset" />
+        <arg name="-j" value="10" />
+    </argSet>
+
+    <argSet id="load.order1">
+        <arg name="--engine" value="emake" />
+        <argSet refid="common.argset" />
+    </argSet>
+
+    <target name="test-var-value-test1">
+        <getVariableValue name="-j" property="test.var">
+            <argSet refid="common.argset" />
+        </getVariableValue>
+        <echo message="test.var: ${test.var}" />
+        <au:assertTrue>
+            <equals arg1="${test.var}" arg2="1"/>
+        </au:assertTrue>
+    </target>
+
+    <target name="test-var-invalid-ref">
+        <au:expectfailure>
+            <getVariableValue name="-j" property="test.var">
+                <argSet refid="common.target" />
+            </getVariableValue>
+        </au:expectfailure>
+    </target>
+
+    <target name="test-var-override-test1">
+        <getVariableValue name="-j" property="test.var">
+            <argSet refid="override.argset.thread" />
+        </getVariableValue>
+        <echo message="test.var: ${test.var}" />
+        <au:assertTrue>
+            <equals arg1="${test.var}" arg2="10"/>
+        </au:assertTrue>
+    </target>
+
+    <target name="test-var-load-order1">
+        <getVariableValue name="--engine" property="test.var">
+            <argSet refid="load.order1" />
+        </getVariableValue>
+        <echo message="test.var: ${test.var}" />
+        <au:assertTrue>
+            <equals arg1="${test.var}" arg2="emake"/>
+        </au:assertTrue>
+    </target>
+
+    <target name="test-var-invalid-name">
+        <au:expectfailure>
+            <getVariableValue name="--engine" property="test.var">
+                <argSet refid="common.argset" />
+            </getVariableValue>
+        </au:expectfailure>
+    </target>
+
+    <target name="test-var-invalid-arg1">
+        <au:expectfailure>
+            <getVariableValue name="--engine" property="test.var">
+                <argSet refid="common.invalid.arg1" />
+            </getVariableValue>
+        </au:expectfailure>
+    </target>
+
+    <target name="test-var-invalid-arg2">
+        <au:expectfailure>
+            <getVariableValue name="--engine" property="test.var">
+                <argSet refid="common.invalid.arg2" />
+            </getVariableValue>
+        </au:expectfailure>
+    </target>
+
+    <target name="test-var-invalid-arg3">
+        <au:expectfailure>
+            <getVariableValue name="--engine" property="test.var">
+                <argSet refid="common.invalid.arg3" />
+            </getVariableValue>
+        </au:expectfailure>
+    </target>
+
+</project>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/tests/core/xmllogcondition/data/helium_minibuild_ido_compile.log.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<build-status>
+        <warning count= "2" />
+        <error count= "1" />
+        <fatal count= "0" />
+        <default count= "0" />
+        <remark count= "0" />
+        <info count= "0" />
+</build-status>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/tests/core/xmllogcondition/test_countseverity.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : test_countseverity.ant.xml 
+Part of     : Helium AntLib
+
+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="test-countseverity" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
+    <description>Helium antlib core countseverity tests.</description>
+    <taskdef resource="com/nokia/helium/core/ant/antlib.xml" uri="http://www.nokia.com/helium" />
+
+    <!-- is called prior to the test -->
+    <target name="setUp">
+    </target>
+
+    <!-- is called after the test, even if that caused an error -->
+    <target name="tearDown">
+    </target>
+
+    <fileset id="empty_folder.path" dir="data/empty_folder" />
+    <target name="test-countseverity-no-property">
+        <au:expectfailure>
+            <hlm:countSeverity severity="error" file="./data/helium_minibuild_ido_compile.log.xml" />
+        </au:expectfailure>
+    </target>
+
+    <!-- the actual test case -->
+    <target name="test-countseverity-error">
+        <!-- Check for errors -->
+        <hlm:countSeverity severity="error" file="./data/helium_minibuild_ido_compile.log.xml" property="errors"/>
+        <au:assertTrue>
+            <equals arg1="${errors}" arg2="1"/>
+        </au:assertTrue>
+    </target>
+
+    <target name="test-countseverity-warning">
+        <!-- Check for warnings -->
+        <hlm:countSeverity severity="warning" file="./data/helium_minibuild_ido_compile.log.xml" property="warnings"/>
+        <echo message="Warnings: ${warnings}"/>
+        <au:assertTrue>
+            <equals arg1="${warnings}" arg2="2"/>
+        </au:assertTrue>
+    </target>
+
+    <target name="test-countseverity-info">
+        <!-- Check for infos -->
+        <hlm:countSeverity severity="infos" file="./data/helium_minibuild_ido_compile.log.xml" property="infos"/>
+        <au:assertTrue>
+            <equals arg1="${infos}" arg2="0"/>
+        </au:assertTrue>
+    </target>
+
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/tests/core/xmllogcondition/test_hasseverity.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : test_hasseverity.ant.xml 
+Part of     : Helium AntLib
+
+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="test-hasseverity" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
+    <description>Helium antlib core hasseverity tests.</description>
+
+    <taskdef resource="com/nokia/helium/core/ant/antlib.xml" uri="http://www.nokia.com/helium" />
+
+    <!-- is called prior to the test -->
+    <target name="setUp">
+    </target>
+
+    <!-- is called after the test, even if that caused an error -->
+    <target name="tearDown">
+    </target>
+
+    <fileset id="empty_folder.path" dir="data/empty_folder" />
+
+    <!-- the actual test case -->
+    <target name="test-hasseverity-error">
+        <!-- Check for errors -->
+        <au:assertTrue>
+            <hlm:hasSeverity severity="error" file="./data/helium_minibuild_ido_compile.log.xml" />
+        </au:assertTrue>
+    </target>
+
+    <target name="test-hasseverity-warning">
+        <!-- Check for warnings -->
+        <au:assertTrue>
+            <hlm:hasSeverity severity="warning" file="./data/helium_minibuild_ido_compile.log.xml" />
+        </au:assertTrue>
+    </target>
+
+    <target name="test-hasseverity-info">
+        <!-- Check for infos -->
+        <au:assertFalse>
+            <hlm:hasSeverity severity="info" file="./data/helium_minibuild_ido_compile.log.xml" />
+        </au:assertFalse>
+    </target>
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/tests/data/config_test.cfg.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<build>
+    <config name="test_spec" abstract="true">
+        <set name="A" value="foo"/>
+        <set name="B" value="parent: ${A}"/>
+        <!-- 0 -->
+        <config>
+            <set name="B" value="child -> ${A}"/>
+            <set name="C" value="missing value test ${does_not_exist}"/>
+            <set name="node.content">
+This is the value!
+            </set>
+        </config>
+        
+        <!-- 1 -->
+        <config>
+            <set name="C" value="one"/>
+            <set name="C" value="two"/>
+        </config>
+        
+        <!-- 2 -->
+        <config/>
+        
+        <!-- 3 -->
+        <config name="spec.with.type" type="test.type"/>
+        
+        <!-- 4 -->
+        <config>
+            <append name="A" value="bar"/>
+        </config>
+        
+        <!-- 5 -->
+        <config name="parent">
+            <set name="template" value="value -> ${my.value}"/>
+            <set name="my.value" value="from parent"/>
+    
+            <config name="child">
+                <set name="my.value" value="from child"/>
+            </config>
+        </config>
+
+        <!-- 6 -->
+        <config name="spec.with.type2" type="test.type"/>
+    
+    </config>
+    
+    
+    <config name="test_list" abstract="true">
+        <append name="include" value="foo_${custom.property}"/>
+        <config abstract="true">
+            <append name="include" value="bar1_${custom.property}"/>
+            <set name="include" value="bar2_${custom.property}"/>
+            <config name="test_list_config1">
+                    <set name="custom.property" value="config1"/>
+            </config>
+
+            <config name="test_list_config2">
+                    <set name="custom.property" value="config2"/>
+            </config>    
+        </config>
+    </config>
+
+</build>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/tests/echo.sh	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+#
+# 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: 
+#
+
+eval "echo $*"
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/tests/src/com/nokia/helium/core/ant/tests/TestTargetTimesLogGenerator.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,109 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+package com.nokia.helium.core.ant.tests;
+
+import java.io.File;
+
+import junit.framework.TestCase;
+
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.Target;
+import org.apache.tools.ant.taskdefs.Echo;
+
+import com.nokia.helium.core.ant.listener.TargetTimesLogGeneratorListener;
+
+/**
+ * Test class for TargetTimesGeneratorListener.
+ * 
+ */
+public class TestTargetTimesLogGenerator extends TestCase {
+
+    private Project project;
+    private String timesLogFileName;
+
+    /**
+     * Method to setup project
+     */
+    protected void setUp() throws Exception {
+        // create a temp dir to store csv file
+        String path = System.getenv("TEMP");
+        String buildId = "helium_" + System.getenv("USERNAME");
+        timesLogFileName = path + File.separator + buildId
+                + "_targetTimesLog.csv";
+        project = new Project();
+        project.setProperty("target.times.log.file", timesLogFileName);
+        project.addBuildListener(new TargetTimesLogGeneratorListener());
+        project.addTarget(constructTarget("foo", null));
+        project.addTarget(constructTarget("woo", null));
+        project.addTarget(constructTarget("moo", null));
+        project.addTarget(constructTarget("hello", "foo,woo,moo"));
+        project.setDefault("hello");
+    }
+
+    /**
+     * Method returns a target.
+     * 
+     * @param targetName
+     *            is the target to create.
+     * @param depends
+     *            is the list of dependent targets
+     * @return a target
+     */
+    private Target constructTarget(String targetName, String depends) {
+        Target target = new Target();
+        target.setName(targetName);
+        target.setProject(project);
+        Echo echo = new Echo();
+        echo.setMessage("Inside " + targetName);
+        echo.setOwningTarget(target);
+        echo.setProject(project);
+        target.addTask(echo);
+        if (depends != null) {
+            target.setDepends(depends);
+        }
+        return target;
+    }
+
+    /**
+     * Method to test the target times csv file generation.
+     */
+    public void testTargetTimesCsvFileGeneration() {
+        if (project != null) {
+            try {
+                project.fireBuildStarted();
+                project.init();
+                project.executeTarget("hello");
+
+            } finally {
+                project.fireBuildFinished(null);
+            }
+        }
+        assert new File(timesLogFileName).exists();
+    }
+
+    /**
+     * Method to cleanup.
+     */
+    protected void tearDown() throws Exception {
+        if (timesLogFileName != null) {
+            File file = new File(timesLogFileName);
+            if (file != null && file.exists()) {
+                file.delete();
+            }
+        }
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/tests/src/com/nokia/helium/core/plexus/tests/TestAntStreamConsumer.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,110 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+package com.nokia.helium.core.plexus.tests;
+
+import org.apache.tools.ant.BuildEvent;
+import org.apache.tools.ant.BuildListener;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.taskdefs.Echo;
+import org.junit.Test;
+import static org.junit.Assert.*;
+import com.nokia.helium.core.plexus.AntStreamConsumer;
+
+public class TestAntStreamConsumer {
+
+    public class AntBuildListener implements BuildListener {
+        private StringBuffer log = new StringBuffer();
+        
+        public StringBuffer getLog() {
+            return log;
+        }
+
+        @Override
+        public void buildFinished(BuildEvent arg0) {
+        }
+
+        @Override
+        public void buildStarted(BuildEvent arg0) {
+        }
+
+        @Override
+        public void messageLogged(BuildEvent arg0) {
+            log.append(arg0.getMessage());
+        }
+
+        @Override
+        public void targetFinished(BuildEvent arg0) {
+        }
+
+        @Override
+        public void targetStarted(BuildEvent arg0) {
+        }
+
+        @Override
+        public void taskFinished(BuildEvent arg0) {
+        }
+
+        @Override
+        public void taskStarted(BuildEvent arg0) {
+        }
+        
+    }
+    
+    @Test
+    public void testLoggingThroughAnt() {
+        // Setting up an Ant task
+        Project project = new Project();
+        AntBuildListener listener = new AntBuildListener();
+        project.addBuildListener(listener);
+        project.init();
+        Echo echo = new Echo();
+        echo.setProject(project);
+        echo.setMessage("From the echo task");
+        
+        
+        // Configuring the Ant consumer
+        AntStreamConsumer consumer = new AntStreamConsumer(echo);
+        consumer.consumeLine("consumed line!");
+        echo.execute();
+        assertTrue(listener.getLog().toString().contains("From the echo task"));
+        assertTrue(listener.getLog().toString().contains("consumed line!"));
+        
+    }
+
+    @Test
+    public void testLoggingThroughAntAsError() {
+        // Setting up an Ant task
+        Project project = new Project();
+        AntBuildListener listener = new AntBuildListener();
+        project.addBuildListener(listener);
+        project.init();
+        Echo echo = new Echo();
+        echo.setProject(project);
+        echo.setMessage("From the echo task");
+        
+        
+        // Configuring the Ant consumer
+        AntStreamConsumer consumer = new AntStreamConsumer(echo, Project.MSG_ERR);
+        consumer.consumeLine("consumed line!");
+        echo.execute();
+        assertTrue(listener.getLog().toString().contains("From the echo task"));
+        assertTrue(listener.getLog().toString().contains("consumed line!"));
+        
+    }
+    
+    
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/tests/src/com/nokia/helium/core/plexus/tests/TestCommandBase.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,125 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+package com.nokia.helium.core.plexus.tests;
+
+import hidden.org.codehaus.plexus.interpolation.os.Os;
+
+import java.util.Hashtable;
+
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+import com.nokia.helium.core.plexus.CommandBase;
+import com.nokia.helium.core.plexus.StreamRecorder;
+
+/**
+ * Unittests for the CommandBase class. 
+ *
+ */
+public class TestCommandBase {
+
+    /**
+     * The simplest possible implementation possible.
+     *
+     */
+    public class CommandImpl extends CommandBase<Exception> {
+
+        @Override
+        protected String getExecutable() {
+            if (Os.isFamily(Os.FAMILY_WINDOWS)) {
+                return "echo";
+            } else {
+                return System.getProperty("testdir") +  "/tests/echo.sh";
+            }
+        }
+
+        @Override
+        protected void throwException(String message, Throwable t)
+                throws Exception {
+            throw new Exception(message, t);
+        }
+        
+    }
+    
+    @Test
+    public void simpleExecution() {
+        CommandImpl cmd = new CommandImpl();
+        try {
+            cmd.execute(null);
+        } catch (Exception e) {
+            fail("Exception should not happen.");
+        }
+
+    }
+
+    @Test
+    public void simpleExecutionWithArgs() {
+        CommandImpl cmd = new CommandImpl();
+        String args[] = new String[2];
+        args[0] = "foo";
+        args[1] = "bar";
+        try {
+            cmd.execute(args);
+        } catch (Exception e) {
+            fail("Exception should not happen.");
+        }
+    }
+    
+    @Test
+    public void simpleExecutionWithArgsAndRecorder() throws Exception {
+        CommandImpl cmd = new CommandImpl();
+        String args[] = new String[2];
+        args[0] = "foo";
+        args[1] = "bar";
+        StreamRecorder rec = new StreamRecorder();
+        cmd.execute(args, rec);
+        assertTrue(rec.getBuffer().toString().startsWith("foo bar"));
+    }
+
+    @Test
+    public void simpleExecutionWithArgsAndRecorderAsOutputHandler() throws Exception {
+        CommandImpl cmd = new CommandImpl();
+        StreamRecorder rec = new StreamRecorder();
+        cmd.addOutputLineHandler(rec);
+        String args[] = new String[2];
+        args[0] = "foo";
+        args[1] = "bar";
+        cmd.execute(args, rec);
+        assertTrue(rec.getBuffer().toString().startsWith("foo bar"));
+    }
+
+    @Test
+    public void simpleExecutionWithEnv() throws Exception {
+        CommandImpl cmd = new CommandImpl();
+        StreamRecorder rec = new StreamRecorder();
+        cmd.addOutputLineHandler(rec);
+        String args[] = new String[2];
+        if (Os.isFamily(Os.FAMILY_WINDOWS)) {
+            args[0] = "%TEST_FOO%";
+            args[1] = "%TEST_BAR%";
+        } else {
+            args[0] = "$TEST_FOO";
+            args[1] = "$TEST_BAR";
+        }
+        Hashtable<String, String> env = new Hashtable<String, String>();
+        env.put("TEST_FOO", "foo");
+        env.put("TEST_BAR", "bar");
+        cmd.execute(args, env, rec);
+        assertTrue(rec.getBuffer().toString().startsWith("foo bar"));
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/tests/src/com/nokia/helium/core/plexus/tests/TestFileStreamConsumer.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,41 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+package com.nokia.helium.core.plexus.tests;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+
+import org.junit.Test;
+import static org.junit.Assert.*;
+import com.nokia.helium.core.plexus.FileStreamConsumer;
+
+public class TestFileStreamConsumer {
+    
+    @Test
+    public void testContentGoesToFile() throws FileNotFoundException, IOException {
+        // Setting up an Ant task
+        File temp = File.createTempFile("temp_",".log");
+        temp.deleteOnExit();
+        FileStreamConsumer consumer = new FileStreamConsumer(temp);
+        consumer.consumeLine("Hello World!");
+        consumer.consumeLine("Bonjour monde!");
+        consumer.close();
+        assertTrue(temp.length() == 26 + System.getProperty("line.separator").length()*2);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/tests/src/com/nokia/helium/core/plexus/tests/TestStreamMultiplexer.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,58 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+package com.nokia.helium.core.plexus.tests;
+
+import static org.junit.Assert.assertTrue;
+
+import org.junit.Test;
+
+import com.nokia.helium.core.plexus.StreamMultiplexer;
+import com.nokia.helium.core.plexus.StreamRecorder;
+
+/**
+ * Testing the StreamMultiplexer class.
+ *
+ */
+public class TestStreamMultiplexer {
+
+    /**
+     * Having an empty list of handler should not cause any problem.
+     */
+    @Test
+    public void noHandler() {
+        StreamMultiplexer mux = new StreamMultiplexer();
+        mux.consumeLine("1st line");
+        mux.consumeLine("2nd line");
+    }
+    
+    /**
+     * The two recorders should record the same stuff.
+     */
+    @Test
+    public void recordSomeLines() {
+        StreamMultiplexer mux = new StreamMultiplexer();
+        StreamRecorder rec = new StreamRecorder();
+        StreamRecorder rec2 = new StreamRecorder();
+        mux.addHandler(rec);
+        mux.addHandler(rec2);
+        mux.consumeLine("1st line");
+        mux.consumeLine("2nd line");
+        assertTrue(rec.getBuffer().toString().equals("1st line\n2nd line\n"));
+        assertTrue(rec2.getBuffer().toString().equals("1st line\n2nd line\n"));
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/core/tests/src/com/nokia/helium/core/plexus/tests/TestStreamRecorder.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,56 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+package com.nokia.helium.core.plexus.tests;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+import com.nokia.helium.core.plexus.StreamRecorder;
+
+/**
+ * Unittests for the TestStreamRecorder class. 
+ *
+ */
+public class TestStreamRecorder {
+
+    @Test
+    public void recordSomeLines() {
+        StreamRecorder rec = new StreamRecorder();
+        rec.consumeLine("1st line");
+        rec.consumeLine("2nd line");
+        assertTrue(rec.getBuffer().toString().equals("1st line\n2nd line\n"));
+    }
+
+    @Test
+    public void recordSomeLinesWithOwnBuffer() {
+        StringBuffer buffer = new StringBuffer();
+        StreamRecorder rec = new StreamRecorder(buffer);
+        assertTrue(rec.getBuffer() == buffer);
+        rec.consumeLine("1st line");
+        rec.consumeLine("2nd line");
+        assertTrue(rec.getBuffer().toString().equals("1st line\n2nd line\n"));
+    }
+
+    @Test
+    public void setGetBuffer() {
+        StringBuffer buffer = new StringBuffer();
+        StreamRecorder rec = new StreamRecorder();
+        assertTrue(rec.getBuffer() != buffer);
+        rec.setBuffer(buffer);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/diamonds/build.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : build.xml 
+Part of     : Helium AntLib
+
+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="helium-diamonds">
+    <description>Helium Antlib build file.</description>
+    
+    <property name="name" value="diamonds"/>
+    <import file="${builder.dir}/java/macros.ant.xml" />
+
+</project>
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/diamonds/diamonds.rst	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,78 @@
+.. index::
+  module: Configuring Diamonds
+
+====================
+Configuring Diamonds
+====================
+
+.. contents::
+
+Introduction
+------------
+Diamonds is web application that can collect all build related information and categorize
+builds. It can represent build information in different metrics. This document describes how
+to configure diamonds in helium.
+
+Diamonds Server setup
+---------------------
+Please define ``diamonds.host`` property with server address and ``diamonds.port`` with server port number.
+e. g. ::
+
+    <!-- Diamonds server details -->
+    <property name="diamonds.host" value="diamonds.xxx.com"/>
+    <property name="diamonds.port" value="9900"/>
+
+
+Initialize diamonds
+-------------------
+`diamonds` target is the initialize target for diamonds logging. Call diamonds target in build target sequence
+and this will log the already available data to diamonds and continue to log data onward as soon as they are available.
+This is done already in helium build target sequence. So user can ignore this section.
+
+Disable diamonds logging
+-------------------------------
+Diamonds logging can be skipped by defining the property ``skip.diamonds`` to true.
+e.g.::
+
+    hlm -Dskip.diamonds=true 
+
+
+Add targets into diamonds configuration ftl file
+------------------------------------------------
+Diamonds detail configurations are in helium/config/diamonds_config.xml.ftl file.
+User have to add target here(this target must be already defined in configuration) 
+if they want to log some additional data to diamonds after the target execution.
+
+Define the target with the following attributes inside ``<targets>`` node:
+
+.. csv-table:: Target
+   :header: "Attribute", "Description", "Required"
+   
+    "name", "Name of the target","Yes"
+    "template-file", "template file to process the data","No, if not defined, consider template file name same as target name"
+    "logfile", "log file which will be processed","No"
+    "ant-properties","set true if you need values from ant properties, default is false","No"
+    "defer", "logging will be deferred and will be logged at the build finish time. Default is false","No"
+
+e.g
+
+.. code-block:: xml
+
+    <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"/>    
+
+
+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. For below example, it looks for 
+<build.id_create-bom.xml> or create_bom.xml and if any one exists then it will send that data. 
+
+::
+    
+    <target name="create-bom"/>
+
+
+Using only ant properties for a specific target to send data
+
+::
+    
+    <target name="ant-prop-target" template-file="ant-prop.xml.ftl" ant-properties="true"/>
+    
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/diamonds/ivy.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+============================================================================ 
+Name        : ivy.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:
+
+============================================================================  
+-->
+<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
+    <info
+        organisation="com.nokia.helium"
+        module="helium-diamonds"
+        status="integration">
+  </info>
+  <dependencies>
+    <dependency name="helium-core" rev="latest.integration" conf="default" />
+    <dependency name="helium-signaling" rev="latest.integration" conf="default" />
+    <dependency org="dom4j" name="dom4j" rev="latest.integration" conf="default" />
+    <dependency org="org.apache.commons" name="commons-httpclient" rev="latest.integration" conf="default"/>
+    <dependency org="org.apache.commons" name="commons-lang" rev="latest.integration" conf="default"/>
+    <dependency org="jaxen" name="jaxen" rev="latest.integration" conf="default"/>
+    <dependency org="org.apache.commons" name="commons-logging" rev="latest.integration" conf="default"/>
+    <dependency org="org.apache.commons" name="commons-codec" rev="latest.integration" conf="default"/>
+  </dependencies>
+</ivy-module>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/diamonds/src/com/nokia/helium/diamonds/DiamondsClient.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,233 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+
+package com.nokia.helium.diamonds;
+
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.HttpException;
+import org.apache.commons.httpclient.methods.FileRequestEntity;
+import org.apache.commons.httpclient.methods.PostMethod;
+import org.apache.commons.httpclient.methods.RequestEntity;
+import org.apache.commons.lang.StringUtils;
+import org.apache.log4j.Logger;
+import com.nokia.helium.core.EmailDataSender;
+
+import java.io.IOException;
+import java.io.File;
+
+/**
+ * Diamonds client used to connect to get build id and also to send the build
+ * results
+ * 
+ */
+public class DiamondsClient {
+
+    private static final int INT_SERV_ERROR = 500;
+
+    private static final int SERV_NOT_FOUND = 404;
+
+    private static final int SERV_OK = 200;
+    
+    private boolean isRecordOnly;
+
+    private Logger log = Logger.getLogger(DiamondsClient.class);
+
+    private String host;
+
+    private String port;
+
+    private String path;
+
+    private String emailID;
+
+    private HttpClient httpClient;
+
+
+    public DiamondsClient(String hst, String prt, String pth, String mailID) {
+        host = hst;
+        port = prt;
+        path = pth;
+        emailID = mailID;
+        httpClient = new HttpClient();
+    }
+
+    private int executeMethod(PostMethod postMethod) throws DiamondsException {
+        int result = 0;
+        try {
+            result = httpClient.executeMethod(postMethod);
+        } catch (IOException e) {
+            isRecordOnly = true;
+            throw new DiamondsException("IOException while sending http request." + e.getMessage());
+            // e.printStackTrace();
+        }
+        return result;
+    }
+
+    private String checkForProtocol(String url) throws DiamondsException {
+        String retURL = url;
+        try {
+            if (!StringUtils.containsIgnoreCase(url, "http://")) {
+                retURL = "http://" + url;
+            }
+        } catch (Exception ex) {
+            // ex.printStackTrace();
+            isRecordOnly = true;
+            throw new DiamondsException("Failed to check url, defaulting to input. " + ex.getMessage());
+        }
+        return retURL;
+    }
+
+    private String getURL() throws DiamondsException {
+        return getURL(null);
+    }
+
+    private String getURL(String subPath) throws DiamondsException {
+        String urlPath = path;
+        if (subPath != null) {
+            urlPath = subPath;
+        }
+        return checkForProtocol("http://" + host + ":" + port + urlPath);
+    }
+
+    private PostMethod getPostMethod(String fileName, String urlPath) {
+
+        // Get the Diamonds XML-file which is to be exported
+        File input = new File(fileName);
+
+        // Prepare HTTP post
+        PostMethod post = new PostMethod(urlPath);
+
+        // Request content will be retrieved directly
+        // from the input stream
+
+        RequestEntity entity = new FileRequestEntity(input,
+                "text/xml; charset=ISO-8859-1");
+        post.setRequestEntity(entity);
+        return post;
+    }
+
+    private int processPostMethodResult(int result) {
+        // Log status code
+        switch (result) {
+        case INT_SERV_ERROR:
+            // log.error("Internal server error");
+            break;
+        case SERV_NOT_FOUND:
+            // log.error("Server not found");
+            break;
+        case SERV_OK:
+            // log.info("Connection to diamonds server - OK");
+            break;
+        default:
+            // log.debug("Response code: " + result);
+        }
+        return result;
+    }
+
+
+    /**
+     * 
+     * @param fileName
+     *            Filename to export to Diamonds
+     * @return diamonds build id
+     */
+    public String getBuildId(String fileName) throws DiamondsException {
+        String diamondsBuildID = null;
+        PostMethod postMethod = null;
+
+        // Get HTTP client
+        // MyHttpClient httpclient = createHttpClient();
+
+        // Execute post request
+        try {
+            if (!isRecordOnly) {
+                String strURL = getURL();
+                log.debug("strURL:" + strURL);
+                postMethod = getPostMethod(fileName, strURL);
+                log.debug("postmethod:" + postMethod);
+                int postMethodResult = httpClient.executeMethod(postMethod);
+                log.debug("postmethod-result:" + postMethodResult);
+    
+                int result = processPostMethodResult(postMethodResult);
+
+                if (result == SERV_OK) {
+                    // Display and save response code which functions as a id for
+                    // the build.
+                    diamondsBuildID = postMethod.getResponseBodyAsString();
+                    log.debug("diamondsBuildID: " + diamondsBuildID);
+                } else {
+                    isRecordOnly = true;
+                    log.error("Diamonds data not sent, because of connection failure.");
+                    //throw new DiamondsException("Connection Failed");
+                }
+            }
+        } catch (HttpException ex) {
+            isRecordOnly = true;
+            log.error("Diamonds data not sent, because of httpexception.", ex);
+            // log.error("Failed: " + ex.toString());
+            //throw new DiamondsException("Http Exception see the logs: "
+            //        + ex.getMessage());
+        } catch (IOException ex1) {
+            isRecordOnly = true;
+            log.error("Diamonds data not sent, because of io exception.", ex1);
+            // log.error("Failed: " + ex.toString());
+            //throw new DiamondsException("Network error, see the logs: "
+            //        + ex1.getMessage());
+        } finally {
+            // Release current connection to the connection pool once you are
+            // done
+            if (postMethod != null) {
+                postMethod.releaseConnection();
+            }
+        }
+        return diamondsBuildID;
+    }
+
+    public int sendData(String fileName, String urlPath) {
+        PostMethod postMethod = null;
+        int result = -1;
+        if (urlPath != null && !isRecordOnly) {
+            try {
+                String strURL = getURL(urlPath);
+                postMethod = getPostMethod(fileName, strURL);
+                result = processPostMethodResult(httpClient
+                        .executeMethod(postMethod));
+            } catch (Exception e) {
+                log.error("sendData:The final data via http not sent because errors: ", e);
+            }
+        }
+        return result;
+    }
+
+    public int sendDataByMail(String fileName, String smtpServer,
+            String ldapServer) {
+        log.debug("DiamondsClient:sendDataByEmail:emailID" + emailID);
+        EmailDataSender emailSender = new EmailDataSender(emailID, smtpServer,
+                ldapServer);
+        try {
+            log.debug("DiamondsClient:sendDataByEmail: " + fileName);
+            emailSender.sendData("diamonds", fileName, "application/xml",
+                    "[DIAMONDS_DATA]", null);
+            log.debug("DiamondsClient:sendDataByEmail:succeeds");
+        } catch (Exception e) {
+            log.error("sendDataByMail:The final data via http not sent because errors: ", e);
+            return -1;
+        }
+        return 0;
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/diamonds/src/com/nokia/helium/diamonds/DiamondsConfig.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,252 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+
+
+package com.nokia.helium.diamonds;
+
+import org.apache.tools.ant.BuildException;
+
+import java.util.*;
+import org.dom4j.io.SAXReader;
+import org.dom4j.Document;
+import org.dom4j.Element;
+import org.dom4j.Node;
+import org.apache.log4j.Logger;
+
+/**
+ * Loads the configuration information from the xml file.
+ * 
+ */
+public final class DiamondsConfig {
+    private static DiamondsProperties diamondsProperties;
+
+    private static List<Stage> stages;
+
+    private static Logger log;
+
+    private static Map<String, Target> targets;
+
+    private static String outputDir;
+
+    private static String templateDir;
+    
+    private static String initialiserTargetName;
+
+    private DiamondsConfig() {
+    }
+    
+    /**
+     * Method accessed by loggers to load the diamonds specific configuration.
+     * 
+     * @param configFile
+     *            - configuration to load
+     * 
+     */
+    public static void parseConfiguration(String configFile)
+            throws DiamondsException {
+        if (log == null) {
+            log = Logger.getLogger(DiamondsConfig.class);
+        }
+        SAXReader saxReader = new SAXReader();
+        Document document = null;
+        try {
+            log.debug("Reading diamonds configuration.");
+            document = saxReader.read(configFile);
+        } catch (Exception e) {
+            // No need to fail the build due to internal Helium configuration errors.
+            log.debug("Diamonds configuration parsing error: "
+                    + e.getMessage());
+        }
+        parseConfig(document);
+        diamondsProperties = parseDiamondsProperties(document);
+        stages = parseStages(document);
+        targets = parseTargets(document);
+    }
+
+    /**
+     * Parses the general configuration info.
+     * 
+     * @param document
+     *            - XML config in DOM4J document
+     */
+    private static void parseConfig(Document document) {
+        log.debug("diamonds:DiamondsConfig:parsing general configuration.");
+        Node node = document.selectSingleNode("//output-dir");
+        outputDir = node.valueOf("@path");
+        node = document.selectSingleNode("//template-dir");
+        templateDir = node.valueOf("@path");
+    }
+
+    /**
+     * Parses the server info.
+     * 
+     * @param document
+     *            - XML config in DOM4J document
+     */
+    private static DiamondsProperties parseDiamondsProperties(Document document) {
+        log.debug("diamonds:DiamondsConfig:parsing diamonds properties.");
+        
+        Map<String, String> propertiesMap = new HashMap<String, String>();
+        
+        loadProperty(document, propertiesMap, "host");
+        loadProperty(document, propertiesMap, "port");
+        loadProperty(document, propertiesMap, "path");
+        loadProperty(document, propertiesMap, "tstampformat");
+        loadProperty(document, propertiesMap, "mail");
+        loadProperty(document, propertiesMap, "ldapserver");
+        loadProperty(document, propertiesMap, "smtpserver");
+        loadProperty(document, propertiesMap, "initialiser-target-name");
+        loadProperty(document, propertiesMap, "category-property");
+        loadProperty(document, propertiesMap, "buildid-property");
+        return new DiamondsProperties(propertiesMap);
+    }
+
+    /**
+     * Parses the Targets data from config.
+     * 
+     * @param document
+     *            - XML config in DOM4J document
+     * @return list of targets available in the config
+     */
+    @SuppressWarnings("unchecked")
+    private static Map<String, Target> parseTargets(Document document) {
+        log.debug("diamonds:DiamondsConfig:parsing for targets");
+        Map<String, Target> targets = new HashMap<String, Target>();
+        List<Element> stageNodes = document.selectNodes("//target");
+       
+        // Set initialiserTargetName according to target name defined Diamonds config file
+        initialiserTargetName = diamondsProperties.getProperty("initialiser-target-name");
+        targets.put(initialiserTargetName, new Target(initialiserTargetName,"","","",""));
+        for (Element stageNode : stageNodes) {
+            targets.put(stageNode.valueOf("@name"), new Target(stageNode
+                    .valueOf("@name"), stageNode.valueOf("@template-file"),
+                    stageNode.valueOf("@logfile"), stageNode
+                            .valueOf("@ant-properties"), stageNode
+                            .valueOf("@defer")));
+        }
+        return targets;
+    }
+
+    /**
+     * Parses the stages info.
+     * 
+     * @param document
+     *            - XML config in DOM4J document
+     * @return list of stages in config
+     */
+    @SuppressWarnings("unchecked")
+    private static List<Stage> parseStages(Document document) {
+        List<Stage> stages = new ArrayList<Stage>();
+        List<Element> stageNodes = document.selectNodes("//stage");
+        log.debug("diamonds:DiamondsConfig:parsing for stages");
+        for (Element stage : stageNodes) {
+            stages.add(new Stage(stage.valueOf("@name"), stage
+                    .valueOf("@start"), stage.valueOf("@end"), stage
+                    .valueOf("@logfile")));
+        }
+        return stages;
+    }
+
+    /**
+     * Helper function to get the stages
+     * 
+     * @return the stages from config in memory
+     */
+    static List<Stage> getStages() {
+        return stages;
+    }
+
+    /**
+     * Helper function to get the targets
+     * 
+     * @return the targets from config in memory
+     */
+    static Map<String, Target> getTargets() {
+        return targets;
+    }
+
+    /**
+     * Returns true if stages exists in config
+     * 
+     * @return the existance of stages in config
+     */
+    public static boolean isStagesInConfig() {
+        return stages != null;
+    }
+
+    /**
+     * Returns true if targets exists in config
+     * 
+     * @return the targets from config in memory
+     */
+    public static boolean isTargetsInConfig() {
+        return targets != null;
+    }
+
+    /**
+     * Gets the diamonds properties loaded from config
+     * 
+     * @return the targets from config in memory
+     */
+    public static DiamondsProperties getDiamondsProperties() {
+        return diamondsProperties;
+    }
+
+    /**
+     * Gets the output directory
+     * 
+     * @return the output directory, loaded from config
+     */
+    static String getOutputDir() {
+        return outputDir;
+    }
+
+    /**
+     * Gets the output directory
+     * 
+     * @return the output directory, loaded from config
+     */
+    static String getTemplateDir() {
+        return templateDir;
+    }
+    
+    /**
+     * Gets the initialiserTargetName
+     * 
+     * @return the initialiserTargetName, loaded from config
+     */
+    public static String getInitialiserTargetName() {
+        return initialiserTargetName;
+    }
+    
+    /**
+     * Load diamonds property into hashmap.
+     * @param doc
+     * @param hash
+     * @param name
+     * @return
+     */
+    public static void loadProperty(Document document, Map<String, String> hash, String name) {
+        Node node = document.selectSingleNode("//property[@name='" + name + "']");
+        if (node == null) {
+            throw new BuildException("diamonds: DiamondsConfig:'" + name + "' property definition is missing.");
+        }
+        hash.put(name, node.valueOf("@value"));
+    }
+
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/diamonds/src/com/nokia/helium/diamonds/DiamondsException.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,38 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+
+package com.nokia.helium.diamonds;
+
+/**
+ * Exception class for Diamonds implementation
+ * 
+ */
+public class DiamondsException extends Exception {
+
+    private static final long serialVersionUID = 8743300713686555395L;
+
+    /**
+     * Constructor
+     * 
+     * @exception - exception to be processed.
+     */
+
+    public DiamondsException(String exception) {
+        super(exception);
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/diamonds/src/com/nokia/helium/diamonds/DiamondsExceptionStatusUpdate.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,173 @@
+/*
+* Copyright (c) 2007-2008 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: To update the build status to Diamonds with signals in case of build exceptions.
+*
+*/
+ 
+package com.nokia.helium.diamonds;
+
+import org.apache.tools.ant.Project;
+import com.nokia.helium.core.ant.HlmExceptionHandler;
+import com.nokia.helium.core.PropertiesSource;
+import com.nokia.helium.core.TemplateInputSource;
+import com.nokia.helium.core.TemplateProcessor;
+import com.nokia.helium.signal.SignalStatus;
+import com.nokia.helium.signal.SignalStatusList;
+
+import org.apache.log4j.Logger;
+
+import java.util.Hashtable;
+import java.util.Vector;
+import java.util.List;
+import java.io.File;
+import java.util.ArrayList;
+import java.text.SimpleDateFormat;
+import java.util.Properties;
+
+
+/**
+ * Class to store the builds status and check the signal is present in the deferred signal list.
+ * if so get the signal informations like signal name, error message and target name.
+ * With collected signal information and build status send the generated XML file to diamonds client class
+ * to update the information into diamonds
+ */
+public class DiamondsExceptionStatusUpdate implements HlmExceptionHandler {
+    private Logger log = Logger.getLogger(DiamondsExceptionStatusUpdate.class);
+
+    /* Initiate build status to failed as this method will be invoked in case of exceptions only */
+    private String buildStatus = "failed";
+
+    private SimpleDateFormat timeFormat;
+
+    private TemplateProcessor templateProcessor;
+
+    private Hashtable<String, String> signalInformation = new Hashtable<String, String>();
+
+    private String outputFile,templateFile;
+
+    private List<TemplateInputSource> sourceList = new ArrayList<TemplateInputSource>();
+
+    /**
+     * Implements the Exception method to update build status and signal information to diamonds.
+     * @param project
+     * @param module
+     * @param e
+     */
+    @SuppressWarnings("unchecked")
+    public void handleException(Project project, String module, Exception e) {
+        templateProcessor = new TemplateProcessor();
+        Properties tempProperties = new Properties();
+        String templateDir = DiamondsConfig.getTemplateDir();
+        /* Initialize the diamond properties class to access the diamonds properties */
+        DiamondsProperties diamondsProperties = DiamondsConfig.getDiamondsProperties();
+        //Check, Is the diamonds listener is initialized?
+        if (DiamondsListenerImpl.isInitialized()) {
+            timeFormat = new SimpleDateFormat(DiamondsConfig.getDiamondsProperties().getProperty("tstampformat"));
+            /* Initialize the diamond client class required to update the information into diamonds. */
+            DiamondsClient diamondsClient = new DiamondsClient(project
+                    .getProperty(diamondsProperties.getProperty("host")),
+                    project.getProperty(diamondsProperties
+                            .getProperty("port")), project
+                            .getProperty(diamondsProperties
+                                    .getProperty("path")), project
+                                    .getProperty(diamondsProperties
+                                            .getProperty("mail")));
+
+            /* Check is the signal is in deferred signal list?
+             * If so get the signal information like signal name, error message and target name
+             * 
+             */
+            if (SignalStatusList.getDeferredSignalList().hasSignalInList()) {
+                Vector<SignalStatus> signalList = SignalStatusList.getDeferredSignalList().getSignalStatusList();
+                timeFormat = new SimpleDateFormat(DiamondsConfig.getDiamondsProperties().getProperty("tstampformat"));
+                log.debug("Build Status = " + buildStatus);
+                int i = 0;
+                for (SignalStatus status : signalList) {
+                    signalInformation.put("diamond.signal.name." + i, status.getName());
+                    signalInformation.put("diamond.error.message." + i, status.getMessage());
+                    signalInformation.put("diamond.time.stamp." + i,new String(timeFormat.format(status.getTimestamp())));
+                    i += 1;
+                }
+                /* Generate the signal XML file required for diamonds to update the signal information,
+                 * using templateprocessor class
+                 */
+                templateFile = "diamonds_signal.xml.ftl";
+                outputFile = DiamondsConfig.getOutputDir() + File.separator + "diamonds-signal.xml";
+                sourceList.add(new PropertiesSource("diamondSignal", signalInformation));
+                templateProcessor.convertTemplate(templateDir, templateFile, outputFile,sourceList);
+
+                /* send the generated XML file for diamonds client to update the signals information into Diamonds */
+                log.debug("sending data to diamonds ..." + outputFile);
+                diamondsClient.sendData(outputFile, DiamondsConfig.getDiamondsProperties().getDiamondsBuildID());
+                try {
+                    DiamondsListenerImpl.mergeToFullResults(new File(outputFile));
+                } catch (DiamondsException de) {
+                    log.error("Not able to merge into full results XML file " + de.getMessage(), de);
+                }
+            }
+            /* Check, is the signal is in now signal list?
+             * If so get the signal information like signal name, error message and target name
+             * 
+             */
+            if (SignalStatusList.getNowSignalList().hasSignalInList()) {
+                Vector<SignalStatus> signalList = SignalStatusList.getNowSignalList().getSignalStatusList();
+                buildStatus = "failed";
+                timeFormat = new SimpleDateFormat(DiamondsConfig.getDiamondsProperties().getProperty("tstampformat"));
+                log.debug("Build Status = " + buildStatus);
+                int i = 0;
+                for (SignalStatus status : signalList) {
+                    signalInformation.put("diamond.signal.name." + i, status.getName());
+                    signalInformation.put("diamond.error.message." + i, status.getMessage());
+                    signalInformation.put("diamond.time.stamp." + i,new String(timeFormat.format(status.getTimestamp())));
+                    i += 1;
+                }
+                /* Generate the signal XML file required for diamonds to update the signal information,
+                 * using templateprocessor class
+                 */
+                templateFile = "diamonds_signal.xml.ftl";
+                outputFile = DiamondsConfig.getOutputDir() + File.separator + "diamonds-signal.xml";
+                sourceList.add(new PropertiesSource("diamondSignal", signalInformation));
+                templateProcessor.convertTemplate(templateDir, templateFile, outputFile,sourceList);
+
+                /* send the generated XML file for diamonds client to update the signals information into Diamonds */
+                log.debug("sending data to diamonds ..." + outputFile);
+                diamondsClient.sendData(outputFile, DiamondsConfig.getDiamondsProperties().getDiamondsBuildID());
+                try {
+                    DiamondsListenerImpl.mergeToFullResults(new File(outputFile));
+                } catch (DiamondsException de) {
+                    log.error("Not able to merge into full results XML file " + de.getMessage(), de);
+                }
+            }
+            /* Generate the build status XML file required for diamonds to update the build status information,
+             * using templateprocessor class. 
+             */
+            tempProperties.put("build.status", buildStatus);
+            sourceList.add(new PropertiesSource("ant", project.getProperties()));
+            sourceList.add(new PropertiesSource("diamonds", tempProperties));
+            outputFile = DiamondsConfig.getOutputDir() + File.separator + "diamonds-status.xml";
+            templateFile = "diamonds_status.xml.ftl";
+            templateProcessor.convertTemplate(templateDir, templateFile, outputFile, sourceList);
+
+            /* send the generated XML file for diamonds client to update the build status into Diamonds */
+            log.debug("[DiamondsExceptionStatusUpdate] => sending data to diamonds ..." + outputFile);
+            diamondsClient.sendData(outputFile, DiamondsConfig.getDiamondsProperties().getDiamondsBuildID());
+            try {
+                DiamondsListenerImpl.mergeToFullResults(new File(outputFile));
+            } catch (DiamondsException de) {
+                log.error("Not able to merge into full results XML file " + de.getMessage(), de);
+            }
+        }
+
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/diamonds/src/com/nokia/helium/diamonds/DiamondsListener.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,58 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+package com.nokia.helium.diamonds;
+
+import org.apache.tools.ant.BuildEvent;
+
+/**
+ * Diamonds specific Listener interface.
+ * 
+ */
+public interface DiamondsListener {
+    /**
+     * Function to process logging info during beginning of target execution
+     * 
+     * @param event
+     *            of target execution.
+     */
+    void targetBegin(BuildEvent buildEvent) throws DiamondsException;
+
+    /**
+     * Function to process logging info during end of target execution
+     * 
+     * @param event
+     *            of target execution.
+     */
+    void targetEnd(BuildEvent buildEvent) throws DiamondsException;
+
+    /**
+     * Function to process logging info during beginning of build
+     * 
+     * @param event
+     *            of target execution.
+     */
+    void buildBegin(BuildEvent buildEvent) throws DiamondsException;
+
+    /**
+     * Function to process logging info during end of build
+     * 
+     * @param event
+     *            of target execution.
+     */
+    void buildEnd(BuildEvent buildEvent) throws DiamondsException;
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/diamonds/src/com/nokia/helium/diamonds/DiamondsListenerImpl.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,283 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+
+package com.nokia.helium.diamonds;
+
+import org.apache.tools.ant.BuildEvent;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.util.FileUtils;
+import java.util.Date;
+import java.util.List;
+import java.util.HashSet;
+import java.io.File;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.ListIterator;
+import org.apache.log4j.Logger;
+import java.util.Properties;
+import com.nokia.helium.core.PropertiesSource;
+import com.nokia.helium.core.TemplateInputSource;
+import com.nokia.helium.core.TemplateProcessor;
+
+/**
+ * Base diamonds logger implementation. The common implementation like
+ * initialization done here and used by sub classes.
+ */
+public class DiamondsListenerImpl implements DiamondsListener {
+
+    private static ArrayList<File> finalLogList = new ArrayList<File>();
+
+    private static DiamondsClient diamondsClient;
+
+    private static boolean isInitialized;
+
+    private static ArrayList<String> deferLogList = new ArrayList<String>();
+
+    private TemplateProcessor templateProcessor;
+
+    private Project project;
+    
+    private SimpleDateFormat timeFormat;
+
+    private Date buildStartTime;
+    
+    private Logger log = Logger.getLogger(DiamondsListenerImpl.class);
+
+    /**
+     * Default constructor
+     */
+    public DiamondsListenerImpl() {
+        templateProcessor = new TemplateProcessor();
+        timeFormat = new SimpleDateFormat(DiamondsConfig
+                .getDiamondsProperties().getProperty("tstampformat"));
+    }
+
+    /**
+     * Function to process logging info during end of build
+     * 
+     * @param event
+     *            of target execution.
+     */
+    public final void buildBegin(BuildEvent buildEvent)
+            throws DiamondsException {
+        project = buildEvent.getProject();
+        buildStartTime = new Date();
+    }
+    
+    /**
+     * Function to process logging info during end of build
+     * 
+     * @param event
+     *            of target execution.
+     */
+    @SuppressWarnings("unchecked")
+    public final void buildEnd(BuildEvent buildEvent) throws DiamondsException {
+        if (isInitialized()) {
+            log.debug("diamonds:DiamondsListenerImpl:sending final data to diamonds.");
+            String output = DiamondsConfig.getOutputDir() + File.separator
+                    + "diamonds-finish.xml";
+            File outputFile = new File(output);
+            String finishTemplateFile = "diamonds_finish.xml.ftl";
+            try {
+                Properties tempProperties = new Properties();
+                tempProperties.put("build.end.time", timeFormat
+                        .format(new Date()));
+                List<TemplateInputSource> sourceList = new ArrayList<TemplateInputSource>();
+                sourceList.add(new PropertiesSource("ant", project
+                        .getProperties()));
+                sourceList
+                        .add(new PropertiesSource("diamonds", tempProperties));
+                templateProcessor.convertTemplate(DiamondsConfig
+                        .getTemplateDir(), finishTemplateFile, output,
+                        sourceList);
+            } catch (Exception e) {
+                throw new DiamondsException(
+                        "failed to convert the build finish template: "
+                                + e.getMessage());
+            }
+
+            try {
+                log.info("Sending final data to diamonds.");
+                // String mergedFile = mergeFiles(output);
+                diamondsClient.sendData(output, DiamondsConfig
+                        .getDiamondsProperties().getDiamondsBuildID());
+            } catch (Exception e) {
+                throw new DiamondsException("Failed to send data to diamonds: "
+                        + e.getMessage());
+            }
+            mergeToFullResults(outputFile);
+            isInitialized = false;
+            DiamondsProperties props = DiamondsConfig.getDiamondsProperties();
+            String smtpServer = project.getProperty(props
+                    .getProperty("smtpserver"));
+            String ldapServer = project.getProperty(props
+                    .getProperty("ldapserver"));
+
+            try {
+                File first = finalLogList.remove(0);
+                String outputDir = DiamondsConfig.getOutputDir();
+                File fullResultsFile = new File(outputDir + File.separator
+                        + "diamonds-full-results.xml");
+                FileUtils.getFileUtils().copyFile(first, fullResultsFile);
+                XMLMerger merger = new XMLMerger(fullResultsFile);
+                HashSet<File> h = new HashSet<File>(finalLogList);
+                for (File f : h) {
+                    try {
+                        merger.merge(f);
+                    } catch (XMLMerger.XMLMergerException xe) {
+                        log.debug("Error during the merge: ", xe);
+                    }
+                }
+//                diamondsClient.sendData(fullResultsFile.getAbsolutePath(), DiamondsConfig.getDiamondsProperties().getDiamondsBuildID());
+                diamondsClient.sendDataByMail(
+                        fullResultsFile.getAbsolutePath(), smtpServer,
+                        ldapServer);
+            } catch (Exception e) {
+                log.error("Error sending diamonds final log: ", e);
+            }
+        }
+    }
+
+    /**
+     * Function to process logging info during begining of target execution
+     * 
+     * @param event
+     *            of target execution.
+     */
+    public void targetBegin(BuildEvent buildEvent) throws DiamondsException {
+        initDiamondsClient();
+    }
+
+    /**
+     * Function to process logging info during end of target execution
+     * 
+     * @param event
+     *            of target execution.
+     */
+    public void targetEnd(BuildEvent buildEvent) throws DiamondsException {
+    }
+
+    /**
+     * returns true if diamonds is already initialized for the build.
+     * 
+     * @param true diamonds initialized otherwise false.
+     */
+    public static boolean isInitialized() {
+        return isInitialized;
+    }
+
+    public static void mergeToFullResults(File xmlFile) throws DiamondsException {
+        finalLogList.add(xmlFile);
+    }
+
+    protected String getSourceFile(String inputName) {
+        return DiamondsConfig.getOutputDir() + File.separator + inputName
+                + ".xml";
+    }
+    
+    protected DiamondsClient getDiamondsClient() {
+        return diamondsClient;
+    }
+    
+    protected TemplateProcessor getTemplateProcessor() {
+        return templateProcessor;
+    }
+    
+    protected boolean getIsInitialized() {
+        return isInitialized;
+    }
+    
+    protected SimpleDateFormat getTimeFormat() {
+        return timeFormat;
+    }
+    
+    protected ArrayList<String> getDeferLogList() {
+        return deferLogList;
+    }
+
+    /**
+     * Initializes the diamonds client and sends the initial data
+     */
+    @SuppressWarnings("unchecked")
+    protected void initDiamondsClient() throws DiamondsException {
+        String outputDir = DiamondsConfig.getOutputDir();
+        if (!isInitialized) {
+            String startTemplateFile = "diamonds_start.xml.ftl";
+            String output = outputDir + File.separator
+                    + "diamonds-start.log.xml";
+            File outputFile = new File(output);
+            try {
+                Properties tempProperties = new Properties();
+                tempProperties.put("build.start.time", timeFormat
+                        .format(buildStartTime));
+                List<TemplateInputSource> sourceList = new ArrayList<TemplateInputSource>();
+                sourceList.add(new PropertiesSource("ant", project
+                        .getProperties()));
+                sourceList
+                        .add(new PropertiesSource("diamonds", tempProperties));
+                DiamondsProperties diamondsProperties = DiamondsConfig
+                        .getDiamondsProperties();
+                templateProcessor.convertTemplate(DiamondsConfig
+                        .getTemplateDir(), startTemplateFile, output,
+                        sourceList);
+                mergeToFullResults(outputFile);
+
+                // String mergedFile = mergeFiles(output);
+                log.info("Initializing diamonds client");
+                diamondsClient = new DiamondsClient(project
+                        .getProperty(diamondsProperties.getProperty("host")),
+                        project.getProperty(diamondsProperties
+                                .getProperty("port")), project
+                                .getProperty(diamondsProperties
+                                        .getProperty("path")), project
+                                .getProperty(diamondsProperties
+                                        .getProperty("mail")));
+                String buildID = diamondsClient
+                        .getBuildId(outputFile.getAbsolutePath());
+                if (buildID != null) {
+                    diamondsProperties.setDiamondsBuildID(buildID);
+                    project.setProperty(diamondsProperties.getProperty("buildid-property"),
+                            diamondsProperties.getDiamondsBuildID());
+                    log.info("Got build id from diamonds: " + buildID);
+                } else {
+                    diamondsProperties.setDiamondsBuildID(buildID);
+                    project.setProperty(diamondsProperties.getProperty("buildid-property"),
+                            "default");
+                    log.info("diamonds build id set to default and in record only mode");
+                }
+                if (deferLogList.size() > 0) {
+                    log
+                            .debug("diamonds:DiamondsListenerImpl: sending DefferList");
+                    ListIterator<String> defferList = deferLogList
+                            .listIterator();
+                    while (defferList.hasNext()) {
+                        String mergedDeferFile = defferList.next();
+                        mergeToFullResults(new File(mergedDeferFile));
+                        diamondsClient.sendData(mergedDeferFile, DiamondsConfig
+                                .getDiamondsProperties().getDiamondsBuildID());
+                    }
+                    deferLogList.clear();
+                }
+                isInitialized = true;
+            } catch (Exception e) {
+                throw new DiamondsException("failed to connect to diamonds: "
+                        + e.getMessage());
+            }
+        }
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/diamonds/src/com/nokia/helium/diamonds/DiamondsPostBuildStatusUpdate.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,100 @@
+/*
+* Copyright (c) 2007-2008 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: To update the build status to Diamonds with signals in case of build exceptions.
+*
+*/
+ 
+package com.nokia.helium.diamonds;
+
+import org.apache.tools.ant.Project;
+import com.nokia.helium.core.ant.types.*;
+import com.nokia.helium.core.PropertiesSource;
+import com.nokia.helium.core.TemplateInputSource;
+import com.nokia.helium.core.TemplateProcessor;
+
+import org.apache.log4j.Logger;
+
+import java.util.List;
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Properties;
+
+
+/**
+ * Class to store the builds status and send the generated XML file to diamonds client class
+ * to update the build status into diamonds
+ */
+public class DiamondsPostBuildStatusUpdate extends HlmPostDefImpl {
+    private Logger log;
+
+    /* Initiate build status to failed as this method will be invoked in case of exceptions only */
+    private String buildStatus = "succeeded";
+
+    private TemplateProcessor templateProcessor;
+
+    private String outputFile,templateFile;
+
+    private List<TemplateInputSource> sourceList = new ArrayList<TemplateInputSource>();
+
+    public DiamondsPostBuildStatusUpdate() {
+        log = Logger.getLogger(DiamondsPostBuildStatusUpdate.class);    
+    }
+
+    /**
+     * Override execute method to update build status to diamonds.
+     * @param prj
+     * @param module
+     * @param targetNames
+     */
+    @SuppressWarnings("unchecked")
+    public void execute(Project prj, String module, String[] targetNames) {
+        templateProcessor = new TemplateProcessor();
+        Properties tempProperties = new Properties();
+
+        /* Intialiaze the diamond properties class to access the diamonds properties */
+        DiamondsProperties diamondsProperties = DiamondsConfig.getDiamondsProperties();
+
+        //Check, Is the diamonds listener is initialized?
+        if (DiamondsListenerImpl.isInitialized()) {
+            /* Initialize the diamond client class required to update the information into diamonds. */
+            DiamondsClient diamondsClient = new DiamondsClient(getProject()
+                    .getProperty(diamondsProperties.getProperty("host")),
+                    getProject().getProperty(diamondsProperties
+                            .getProperty("port")), getProject()
+                            .getProperty(diamondsProperties
+                                    .getProperty("path")), getProject()
+                                    .getProperty(diamondsProperties
+                                            .getProperty("mail")));
+            /* Generate the build status XML file required for diamonds to update the build status information,
+             * using templateprocessor class. 
+             */
+            tempProperties.put("build.status", buildStatus);
+            sourceList.add(new PropertiesSource("ant", getProject().getProperties()));
+            sourceList.add(new PropertiesSource("diamonds", tempProperties));
+            outputFile = DiamondsConfig.getOutputDir() + File.separator + "diamonds-status.xml";
+            templateFile = "diamonds_status.xml.ftl";
+            templateProcessor.convertTemplate(DiamondsConfig.getTemplateDir(), templateFile, outputFile, sourceList);
+
+            /* send the generated XML file for diamonds client to update the build status into Diamonds */
+            log.debug("[DiamondsPostBuildStatusUpdate] => sending data to diamonds ..." + outputFile);
+            diamondsClient.sendData(outputFile, DiamondsConfig.getDiamondsProperties().getDiamondsBuildID());
+            try {
+                DiamondsListenerImpl.mergeToFullResults(new File(outputFile));
+            } catch (DiamondsException de) {
+                log.error("Not able to merge into full results XML file " + de.getMessage(), de);
+            }
+        }
+    }
+
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/diamonds/src/com/nokia/helium/diamonds/DiamondsProperties.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,64 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+
+
+package com.nokia.helium.diamonds;
+
+import java.util.Map;
+
+/**
+ * Helper class for Diamonds properties need to connect.
+ * 
+ */
+public class DiamondsProperties {
+    private Map<String, String> diamondsProperties;
+
+    public DiamondsProperties(Map<String, String> configroperties) {
+        diamondsProperties = configroperties;
+    }
+
+    /**
+     * Gets the build id returned by Diamonds server.
+     * 
+     * @return build ID
+     */
+    public String getDiamondsBuildID() {
+        return diamondsProperties.get("buildid");
+    }
+
+    /**
+     * Sets the build id obtained from the server.
+     * 
+     * @param diamondsBuildID
+     */
+    public void setDiamondsBuildID(String diamondsBuildID) {
+        diamondsProperties.put("buildid", diamondsBuildID);
+    }
+
+    /**
+     * Returns the required property obtained from config
+     * 
+     * @param property
+     *            for which the values needs to be obtained.
+     * @return address of server
+     */
+    public String getProperty(String property) {
+        // need to validate the properties while assigning in constructor
+        return diamondsProperties.get(property);
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/diamonds/src/com/nokia/helium/diamonds/Stage.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,93 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+
+package com.nokia.helium.diamonds;
+
+/**
+ * Helper class for Stage configuration of Diamonds.
+ * 
+ */
+public class Stage {
+    private String stageName;
+    private String startTargetName;
+    private String endTargetName;
+    private String source;
+
+    /**
+     * Constructor
+     * 
+     * @param stName
+     *            - name of the stage
+     * @param startTgName
+     *            - Name of the start target
+     * @param endTgName
+     *            - Name of the ending target of the stage
+     */
+    public Stage(String stName, String startTgName, String endTgName,
+            String sourceFiles) {
+        String emptyString = "";
+        if (!stName.equals(emptyString)) {
+            stageName = stName;
+        }
+        if (!startTgName.equals(emptyString)) {
+            startTargetName = startTgName;
+        }
+        if (!endTgName.equals(emptyString)) {
+            endTargetName = endTgName;
+        }
+        if (!sourceFiles.equals(emptyString)) {
+            source = sourceFiles;
+        }
+    }
+
+    /**
+     * Get the stage Name of the stage.
+     * 
+     * @return - name of the stage
+     */
+    public String getStageName() {
+        return stageName;
+    }
+
+    /**
+     * Get the stage Name of the stage.
+     * 
+     * @return - name of the stage
+     */
+    public String getSourceFile() {
+        return source;
+    }
+
+    /**
+     * gets the start target of the stage
+     * 
+     * @return - start target of the stage
+     */
+    public String getStartTargetName() {
+        return startTargetName;
+    }
+
+    /**
+     * gets the end target name of the stage.
+     * 
+     * @return - end target name of the stage
+     */
+    public String getEndTargetName() {
+        return endTargetName;
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/diamonds/src/com/nokia/helium/diamonds/StageDiamondsListener.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,219 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+package com.nokia.helium.diamonds;
+
+import org.apache.tools.ant.BuildEvent;
+import org.apache.tools.ant.Target;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.BuildException;
+
+
+
+import java.util.Date;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Enumeration;
+import java.util.Map;
+import java.io.File;
+import java.util.Iterator;
+import java.util.Vector;
+import java.util.ArrayList;
+import org.apache.log4j.Logger;
+
+import com.nokia.helium.core.PropertiesSource;
+import com.nokia.helium.core.TemplateInputSource;
+
+
+import com.nokia.helium.core.XMLTemplateSource;
+
+/**
+ * Diamonds client used to connect to get build id and also to send the build
+ * results
+ * 
+ */
+public class StageDiamondsListener extends DiamondsListenerImpl {
+
+    private static final Date INVALID_DATE = new Date(-1);
+
+    private Logger log = Logger.getLogger(StageDiamondsListener.class);
+    
+    private List<Map<String, Date>> stageTargetBeginList = new ArrayList<Map<String, Date>>();
+
+    private Map<String, Stage> stageTargetEndMap = new HashMap<String, Stage>();
+
+    private boolean isTargetMapInitialized;
+
+    private Project project;
+
+    private String currentStartTargetName;
+
+    private List<Stage> stages;
+
+    private Date currentStartTargetTime;
+
+    public StageDiamondsListener() {
+        stages = DiamondsConfig.getStages();
+    }
+
+    public void targetBegin(BuildEvent buildEvent) throws DiamondsException {
+        project = buildEvent.getProject();
+        String targetName = buildEvent.getTarget().getName();
+        if (!isTargetMapInitialized && stages != null) {
+            log
+                    .debug("diamonds:StageDiamondsListener: initializing for all stages.");
+            initStageTargetsMap();
+            isTargetMapInitialized = true;
+        }
+        log.debug("targetBegin targetName: " + targetName + " - currentStartTargetName:" + currentStartTargetName);
+        if (currentStartTargetName == null) {
+            findAndSetStartTimeForTargetInStageList(targetName);
+        }
+    }
+
+    @SuppressWarnings("unchecked")
+    public void targetEnd(BuildEvent buildEvent) throws DiamondsException {
+        if (currentStartTargetName != null) {
+            String targetName = buildEvent.getTarget().getName();
+            Stage stage = stageTargetEndMap.get(targetName);
+            if (stage != null && getIsInitialized() ) {
+                //initDiamondsClient();
+                String stageName = stage.getStageName();
+                String sourceFile = stage.getSourceFile();
+                log
+                        .debug("diamonds:StageDiamondsListener: finished recording for stage: "
+                                + stageName);
+                if (sourceFile == null) {
+                    sourceFile = getSourceFile(stageName);
+                }
+                project.setProperty("logical.stage", stageName);
+                project.setProperty("stage.start.time", getTimeFormat()
+                        .format(currentStartTargetTime));
+                project.setProperty("stage.end.time", getTimeFormat()
+                        .format(new Date()));
+                currentStartTargetName = null;
+                // Look for template file with stage name
+                String stageTemplateFileName = stageName + ".xml.ftl";
+                File stageTemplateFile = new File(stageTemplateFileName);
+                if (stageTemplateFile.exists()) {
+                    String output = DiamondsConfig.getOutputDir()
+                            + File.separator + stageName + ".xml";
+                    try {
+                        List<TemplateInputSource> sourceList = new ArrayList<TemplateInputSource>();
+                        sourceList.add(new PropertiesSource("ant", project
+                                .getProperties()));
+                        sourceList
+                                .add(new XMLTemplateSource("doc", new File(sourceFile)));
+                        getTemplateProcessor().convertTemplate(DiamondsConfig
+                                .getTemplateDir(), stageTemplateFileName,
+                                output, sourceList);
+                        mergeToFullResults(new File(output));
+
+                        // String mergedFile = mergeFiles(new File(output));
+
+                        log.info("Sending data to diamonds for stage: "
+                                + stageName);
+                        getDiamondsClient().sendData(output, DiamondsConfig
+                                .getDiamondsProperties().getDiamondsBuildID());
+                    } catch (com.nokia.helium.core.TemplateProcessorException e1) {
+                        throw new DiamondsException(
+                                "template conversion error for stage: "
+                                        + stageName + " : " + e1.getMessage());
+                    }
+                } else {
+                    log.debug("diamonds:StageDiamondsListener:tempalte file: "
+                            + stageTemplateFile + " does not exist");
+                }
+
+                String output = DiamondsConfig.getOutputDir() + File.separator
+                        + stageName + "-time.xml";
+                // Store the time for the current stage and send it
+                stageTemplateFileName = "diamonds_stage.xml.ftl";
+                try {
+                    List<TemplateInputSource> sourceList = new ArrayList<TemplateInputSource>();
+                    sourceList.add(new PropertiesSource("ant", project
+                            .getProperties()));
+                    sourceList.add(new XMLTemplateSource("doc", new File(sourceFile)));
+                    getTemplateProcessor().convertTemplate(DiamondsConfig
+                            .getTemplateDir(), stageTemplateFileName, output,
+                            sourceList);
+                    mergeToFullResults(new File(output));
+                    // List filesToMerge = new ArrayList();
+
+                    // mergedFile = mergeFiles(output);
+                    getDiamondsClient().sendData(output, DiamondsConfig
+                            .getDiamondsProperties().getDiamondsBuildID());
+                } catch (com.nokia.helium.core.TemplateProcessorException e1) {
+                    throw new DiamondsException("template conversion error while sending data for stage: "
+                            + stageName + " : " + e1.getMessage());
+                }
+            }
+        }
+    }
+
+    private void findAndSetStartTimeForTargetInStageList(String targetName)
+            throws DiamondsException {
+        for (Iterator<Map<String, Date>> listIter = stageTargetBeginList.iterator(); listIter
+                .hasNext();) {
+            Map<String, Date> stageMap = listIter.next();
+            Date targetTime = stageMap.get(targetName);
+            if (targetTime != null && targetTime.equals(INVALID_DATE)) {
+                log.debug("diamonds:StageDiamondsListener: started recording for stage-target: "
+                                + targetName);
+                stageMap.put(targetName, new Date());
+                currentStartTargetName = targetName;
+                currentStartTargetTime = new Date();
+            }
+        }
+    }
+
+    @SuppressWarnings("unchecked")
+    private void initStageTargetsMap() {
+        Iterator<Stage> iter = stages.iterator();
+        while (iter.hasNext()) {
+            // stage begin process
+            Stage stage = iter.next();
+            String startTargetName = stage.getStartTargetName();
+            Map<String, Date> stageMap = new HashMap<String, Date>();
+            Vector<Target> arrayList = null;
+            try {
+                arrayList = project.topoSort(startTargetName, project
+                        .getTargets(), false);
+            } catch (BuildException be) {
+                log.debug("Diamonds target missing: ", be);
+            }
+            if (arrayList != null) {
+                log.debug(" + Stage definition: " + stage.getStageName());
+                Enumeration<Target> targetEnum = arrayList.elements();
+                while (targetEnum.hasMoreElements()) {
+                    // fast lookup
+                    Target target = targetEnum.nextElement();
+                    stageMap.put(target.getName(), INVALID_DATE);
+                    log.debug("   - Start target: " + target.getName());
+                }
+                stageTargetBeginList.add(stageMap);
+
+                // stage end process
+                String endTargetName = stage.getEndTargetName();
+                // fast lookup
+                stageTargetEndMap.put(endTargetName, stage);
+                log.debug("   - End target: " + endTargetName);
+            }
+        }
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/diamonds/src/com/nokia/helium/diamonds/Target.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,109 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+
+package com.nokia.helium.diamonds;
+
+/**
+ * Helper class for the target in diamonds config.
+ * 
+ */
+public class Target {
+    private String targetName;
+    private String source;
+    private boolean reqAntProperties;
+    private boolean defer;
+    private String templatefile;
+
+    /**
+     * Constructor
+     * 
+     * @param target
+     *            - name of the target
+     * @param src
+     *            - input source location.
+     */
+    public Target(String target, String src) {
+        this(target, null, src, "false", "false");
+    }
+
+    /**
+     * Constructor
+     * 
+     * @param target
+     *            - name of the target
+     * @param src
+     *            - input source location.
+     * @param antProps
+     *            - boolean to pass ant properties while conversion.
+     */
+    public Target(String target, String tplfile, String src, String antProps,
+            String deferSend) {
+        String emptyString = "";
+        if (!target.equals(emptyString)) {
+            targetName = target;
+        }
+        if (!src.equals(emptyString)) {
+            source = src;
+        }
+        if (!tplfile.equals(emptyString)) {
+            templatefile = tplfile;
+        }
+        if (antProps != null && antProps.equals("true")) {
+            reqAntProperties = true;
+        }
+        if (deferSend != null && deferSend.equals("true")) {
+            defer = true;
+        }
+    }
+
+    /**
+     * Get the target name of the target to send data
+     * 
+     * @return - target name of the target to send data
+     */
+    public String getTargetName() {
+        return targetName;
+    }
+
+    /**
+     * Get the input source used for template conversion.
+     * 
+     * @return - location of the input source.
+     */
+    public String getSource() {
+        return source;
+    }
+
+    public boolean isDefer() {
+        return defer;
+    }
+
+    public String getTemplateFile() {
+        return templatefile;
+    }
+
+    /**
+     * returns true if ant properties required for conversion, obtained from
+     * configuration.
+     * 
+     * @return - name of the stage
+     */
+    public boolean isAntPropertiesRequired() {
+        return reqAntProperties;
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/diamonds/src/com/nokia/helium/diamonds/TargetDiamondsListener.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,195 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+package com.nokia.helium.diamonds;
+
+import org.apache.tools.ant.BuildEvent;
+import org.apache.tools.ant.Target;
+import org.apache.tools.ant.Project;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Hashtable;
+import java.util.Map;
+import java.io.File;
+import org.apache.log4j.Logger;
+import com.nokia.helium.core.PropertiesSource;
+import com.nokia.helium.core.TemplateInputSource;
+import com.nokia.helium.core.XMLTemplateSource;
+
+/**
+ * Listener sending data based on target configuration to diamonds.
+ */
+public class TargetDiamondsListener extends DiamondsListenerImpl {
+
+    private Project project;
+    
+    private Logger log = Logger.getLogger(TargetDiamondsListener.class);
+
+    private Map<String, com.nokia.helium.diamonds.Target> targetsMap;
+
+    private String currentTarget;
+
+    /**
+     * Default constructor
+     */
+    public TargetDiamondsListener() {
+        targetsMap = DiamondsConfig.getTargets();
+    }
+
+    private boolean isTargetsToExecute(BuildEvent buildEvent) {
+        project = buildEvent.getProject();
+        Target target = buildEvent.getTarget();
+        boolean retValue = false;
+        com.nokia.helium.diamonds.Target currentTarget = targetsMap
+                .get(target.getName());
+        String currentTargetName = null;
+        if (currentTarget != null) {
+            currentTargetName = currentTarget.getTargetName();
+        }
+        if (currentTargetName != null) {
+            String ifCondition = target.getIf();
+            String unlessCondition = target.getUnless();
+            if (ifCondition == null && unlessCondition == null) {
+                retValue = true;
+            } else {
+                String ifProperty = project.getProperty(ifCondition);
+                String unlessProperty = project.getProperty(unlessCondition);
+                if (ifProperty != null || unlessProperty == null) {
+                    retValue = true;
+                }
+            }
+        }
+        return retValue;
+    }
+
+    /**
+     * Function to process logging info during beginning of target execution.
+     * This checks that the current target execution is in config and requires
+     * some data to be send it to diamonds.
+     * 
+     * @param event
+     *            of target execution.
+     */
+    public void targetBegin(BuildEvent buildEvent) throws DiamondsException {
+        String targetName = buildEvent.getTarget().getName();
+        if (isTargetsToExecute(buildEvent)) {
+            currentTarget = targetName;
+            com.nokia.helium.diamonds.Target target = targetsMap
+                    .get(currentTarget);
+            if (!target.isDefer()) {
+                initDiamondsClient();
+            }
+        }
+    }
+
+    /**
+     * Function to process logging info during end of build. If the target in
+     * config, sends the data to diamonds (uses the template conversion if
+     * needed).
+     * 
+     * @param event
+     *            of target execution.
+     */
+    public void targetEnd(BuildEvent buildEvent) throws DiamondsException {
+        String targetName = buildEvent.getTarget().getName();
+        if (currentTarget != null && currentTarget.equals(targetName)) {           
+            if (getIsInitialized()) {
+                log
+                .debug("diamonds:TargetDiamondsListener:finished recording, sending data to diamonds for target: "
+                        + buildEvent.getTarget().getName());
+                sendTargetData(buildEvent, buildEvent.getTarget().getProject());
+            }
+            currentTarget = null;
+        }
+    }
+
+    /**
+     * Sends the data to diamonds. First it looks if the template with target
+     * name exists, then it looks for input source file from config, if ant
+     * properties required from config, it uses it for template conversion. If
+     * no template file exists, sends the data directly.
+     * 
+     * @param event
+     *            of target execution.
+     */
+    @SuppressWarnings("unchecked")
+    private void sendTargetData(BuildEvent buildEvent, Project project)
+            throws DiamondsException {
+        com.nokia.helium.diamonds.Target target = targetsMap
+                .get(currentTarget);
+        String sourceFile = target.getSource();
+        if (sourceFile == null) {
+            sourceFile = getSourceFile(target.getTargetName());
+        }
+        Hashtable<String, String> antProperties = null;
+        String targetTemplateFile = target.getTemplateFile();
+        if (targetTemplateFile == null) {
+            targetTemplateFile = target.getTargetName() + ".xml.ftl";
+        }
+        String output = DiamondsConfig.getOutputDir() + File.separator
+                + target.getTargetName() + ".xml";
+        File templateFile = new File(DiamondsConfig.getTemplateDir(),
+                targetTemplateFile);
+        List<TemplateInputSource> sourceList = new ArrayList<TemplateInputSource>();
+        if (sourceFile == null) {
+            log
+                    .debug("diamonds:TargetDiamondsListener:sourceFile not defined.");
+        } else {
+            sourceList.add(new XMLTemplateSource("doc", new File(sourceFile)));
+        }
+        // Ant?
+        if (target.isAntPropertiesRequired()) {
+            sourceList
+                    .add(new PropertiesSource("ant", project.getProperties()));
+        }
+        try {
+            if (templateFile.exists()) {
+                if (!(antProperties == null && sourceFile == null)) {
+                    getTemplateProcessor().convertTemplate(DiamondsConfig
+                            .getTemplateDir(), targetTemplateFile, output,
+                            sourceList);
+                }
+            } else {
+                log
+                        .debug("sendTargetData: exists("
+                                + templateFile.getAbsolutePath() + ") => false");
+
+            }
+        } catch (com.nokia.helium.core.TemplateProcessorException e1) {
+            throw new DiamondsException("template conversion error while sending data for target:"
+                    + target + ":" + e1.getMessage());
+        }
+        File outputFile = new File(output);
+        if (outputFile.exists()) {
+            mergeToFullResults(outputFile);
+            if (!target.isDefer()) {
+                getDiamondsClient().sendData(outputFile.getAbsolutePath(),
+                        DiamondsConfig.getDiamondsProperties()
+                                .getDiamondsBuildID());
+            } else {
+                log.debug("diamonds:TargetDiamondsListener:defer logging for: "
+                        + outputFile);
+                getDeferLogList().add(output);
+            }
+        } else {
+            log.debug("diamonds:TargetDiamondsListener:outputfile "
+                    + outputFile + " does not exist");
+        }
+    }
+
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/diamonds/src/com/nokia/helium/diamonds/XMLMerger.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,181 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+
+package com.nokia.helium.diamonds;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.log4j.Logger;
+import org.dom4j.Attribute;
+import org.dom4j.Document;
+import org.dom4j.DocumentException;
+import org.dom4j.Element;
+import org.dom4j.io.OutputFormat;
+import org.dom4j.io.SAXReader;
+import org.dom4j.io.XMLWriter;
+
+/**
+ * This class implements an XML file merger. All node from an external XML with
+ * same format (same root node name) will get added to the source root element.
+ */
+public class XMLMerger {
+    private Logger log = Logger.getLogger(getClass());
+    private File merge;
+    private Document doc;
+    private Element root;
+
+    /**
+     * Create an XMLMerger, the merge file will be used as input and output.
+     * 
+     * @param merge
+     * @throws XMLMergerException
+     */
+    public XMLMerger(File merge) throws XMLMergerException {
+        log.debug("Merging into: " + merge.getAbsolutePath());
+        try {
+            this.merge = merge;
+            SAXReader reader = new SAXReader();
+            doc = reader.read(merge);
+            root = doc.getRootElement();
+        } catch (DocumentException e) {
+            throw new XMLMergerException(e.getMessage());
+        }        
+    }
+    
+    /**
+     * Add all sub element of data file into the merged file. If the root
+     * element name is different for the merged file an XMLMergerException is
+     * thrown.
+     * 
+     * @param data
+     *            the input file.
+     * @throws XMLMergerException
+     */
+    public void merge(File data) throws XMLMergerException {
+        log.debug("Merging " + data.getAbsolutePath());
+        try {
+            SAXReader reader = new SAXReader();
+            Document dataDoc = reader.read(data);
+            Element dataRoot = dataDoc.getRootElement();
+            if (!root.getName().equals(dataRoot.getName())) {
+                throw new XMLMergerException(
+                        "Trying to merge incompatible xml format ('"
+                                + root.getName() + "'!='" + dataRoot.getName()
+                                + "')");
+            }
+            mergeNode(root, dataRoot);
+            write();
+        } catch (DocumentException e) {
+            throw new XMLMergerException(e.getMessage());
+        }
+    }
+
+    /**
+     * Merging two XML elements. It only keeps difference.
+     * 
+     * @param dest
+     * @param src
+     */
+    @SuppressWarnings("unchecked")
+    protected void mergeNode(Element dest, Element src) {
+        for (Iterator<Element> node = src.elements().iterator(); node.hasNext();) {
+            Element e = node.next();
+            
+            List<Element> ses = dest.elements(e.getName());
+            boolean add = true;
+            for (Element se : ses) {
+                if (areSame(se, e)) {
+                    log.debug("Element " + e.getName() + " already found in dest.");
+                    add = false;
+                }
+            }
+            if (add) {
+                log.debug("Adding node " + e.getName() + " to " + dest.getName());
+                dest.add(e.detach());
+            } else if (ses.size() > 0) {
+                log.debug("Merging " + ses.get(0).getName() + " to " + e.getName());
+                mergeNode(ses.get(0), e);
+            }
+        }
+    }
+
+    /**
+     * Compare two elements name and attributes. Returns true if name and all
+     * attributes are matching, false otherwise.
+     * 
+     * @param a
+     * @param b
+     * @return boolean
+     */
+    @SuppressWarnings("unchecked")
+    protected boolean areSame(Element a, Element b) {
+        log.debug("areSame:" + a + " <=> " + b);
+        if (!a.getName().equals(b.getName()))
+            return false;
+        log.debug("same attribute list size?");
+        if (a.attributes().size() != b.attributes().size())
+            return false;
+        log.debug("same attribute list?");
+        for (Iterator<Attribute> at = a.attributes().iterator(); at.hasNext();) {
+            Attribute attra = at.next();
+            Attribute attrb = b.attribute(attra.getName());
+            if (attrb == null || !attra.getValue().equals(attrb.getValue()))
+                return false;
+        }
+        if (!a.getTextTrim().equals(b.getTextTrim()))
+            return false;
+        return true;
+    }
+
+    /**
+     * Write the XML content back the file.
+     * @throws XMLMergerException
+     */
+    protected void write() throws XMLMergerException {
+        log.debug("Writing " + merge.getAbsolutePath());
+        try {
+            FileOutputStream fos = new FileOutputStream(merge);
+            OutputFormat format = OutputFormat.createPrettyPrint();
+            XMLWriter writer = new XMLWriter(fos, format);
+            writer.write(doc);
+            writer.flush();
+        } catch (Exception e) {
+            throw new XMLMergerException(e.getMessage());
+        }
+    }
+
+    /**
+     * Exception class related to the XMLMerger. 
+     */
+    public class XMLMergerException extends Exception {
+
+        private static final long serialVersionUID = 7624650310086957316L;
+
+        /**
+         * Default constructor.
+         * @param msg error message
+         */
+        public XMLMergerException(String msg) {
+            super(msg);
+        }
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/diamonds/src/com/nokia/helium/diamonds/ant/HeliumListener.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,254 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+
+package com.nokia.helium.diamonds.ant;
+
+import java.io.File;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.ArrayList;
+import org.apache.tools.ant.BuildListener;
+import org.apache.tools.ant.BuildException;
+import com.nokia.helium.diamonds.*;
+import com.nokia.helium.core.PropertiesSource;
+import com.nokia.helium.core.TemplateProcessor;
+
+import org.apache.tools.ant.BuildEvent;
+import org.apache.tools.ant.Project;
+import org.apache.log4j.Logger;
+
+/**
+ * Listener class that can connect to Ant and log information regarding to build
+ * times, number of errors and such. Data is sent to Diamonds server, where it
+ * is processed further.
+ * 
+ * This class is listening all build related events. It catches the build
+ * start-finish, target start-finish events of Ant and gather build start-end
+ * time, errors/warnings and store in BuildData class. Stored data will be
+ * exported to XML and uploaded to Diamonds server after each specific target.
+ * For example after target "create-bom" this class will upload all BOM data to
+ * Diamonds.
+ * 
+ * 
+ */
+public class HeliumListener implements BuildListener {
+
+    private Logger log = Logger.getLogger(HeliumListener.class);
+
+    private List<DiamondsListener> diamondsListeners;
+
+    private Project project;
+
+    private boolean isInitialized;
+
+    private boolean skipDiamonds;
+    private boolean skipDiamondsSet;
+
+    /**
+     * Default constructor.
+     */
+    public HeliumListener() {
+        diamondsListeners = new ArrayList<DiamondsListener>();
+    }
+
+    /**
+     * Ant call this function when build start.
+     */
+    public void buildStarted(BuildEvent event) {
+        project = event.getProject();
+    }
+
+    /**
+     * Triggered when a target starts.
+     */
+    @SuppressWarnings("unchecked") 
+    public void targetStarted(BuildEvent event) {
+        String targetName = event.getTarget().getName();
+        project = event.getProject();
+
+        String skip = project.getProperty("skip.diamonds");
+        if (skip != null && skip.equals("true")) {
+            skipDiamonds = true;
+        }
+        try {
+            if (!skipDiamonds) {
+                if (!isInitialized) {
+                    String configFile = project
+                            .getProperty("diamonds.listener.configuration.file");
+                    parseConfig(configFile, project.getProperties());
+                    isInitialized = true;
+                }
+                DiamondsProperties diamondProperties = DiamondsConfig
+                        .getDiamondsProperties();
+
+                /**
+                 * Initialize Diamonds if and only if initializer-target-name has been called
+                 */
+                if (targetName.equals(DiamondsConfig.getInitialiserTargetName())) {                                        
+                    String categoryName = diamondProperties.getProperty("category-property");
+                    String category = project.getProperty(categoryName);
+                    log.debug("category:" + category);
+                    if (category != null && diamondsListeners.isEmpty()) {
+                        addListeners(event);
+                        log.info("Diamonds enabled");
+                    }
+                }
+            } else {
+                if (!skipDiamondsSet && skipDiamonds)
+                {
+                    log.info("skip.diamonds set, to use diamonds don't set skip.diamonds.");
+                    skipDiamondsSet = true;
+                }
+            }
+        } catch (Exception ex) {
+            log.debug("Diamonds error: ", ex);
+            String errorMessage = ex.getMessage();
+            if (errorMessage == null) {
+                errorMessage = "";
+            }
+            log.error("Diamonds Error, might not be logged properly, see debug log. "
+                            + errorMessage);
+        }
+        if (diamondsListeners != null) {
+            for (DiamondsListener diamondsListener : diamondsListeners) {
+                try {
+                    diamondsListener.targetBegin(event);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                    log.debug("Error:", e);
+                    String errorMessage = e.getMessage();
+                    if (errorMessage == null) {
+                        errorMessage = "";
+                    }
+                    log.error("Diamonds Error, might not be logged properly, see debug log. "
+                                    + errorMessage);
+                }
+            }
+        }
+    }
+
+    @SuppressWarnings("unchecked") 
+    private void parseConfig(String configFile, Hashtable<String, String> antProperties) {
+        TemplateProcessor templateProcessor = new TemplateProcessor();
+        File outputFile = null;
+        try {
+            outputFile = File.createTempFile("diamonds", "-config.xml");
+            outputFile.deleteOnExit();
+            log
+                    .debug("Preprocessing the diamonds configuration: "
+                            + configFile);
+            List sourceList = new ArrayList();
+            sourceList.add(new PropertiesSource("ant", antProperties));
+            templateProcessor.convertTemplate(configFile,
+                    outputFile.toString(), sourceList);
+        } catch (Exception e) {
+            throw new BuildException(
+                    "Diamonds configuration pre-parsing error: "
+                            + e.getMessage());
+        }
+        try {
+            DiamondsConfig.parseConfiguration(outputFile.toString());
+        } catch (Exception e) {
+            throw new BuildException("Diamonds configuration parsing error: "
+                    + e.getMessage());
+        }
+    }
+
+    private void addListeners(BuildEvent event) throws DiamondsException {
+        if (DiamondsConfig.isStagesInConfig()) {
+            StageDiamondsListener stageListener = new StageDiamondsListener();
+            diamondsListeners.add(stageListener);
+            stageListener.buildBegin(event);
+        }
+        if (DiamondsConfig.isTargetsInConfig()) {
+            TargetDiamondsListener targetListener = new TargetDiamondsListener();
+            diamondsListeners.add(targetListener);
+            targetListener.buildBegin(event);
+        }
+    }
+
+    /**
+     * Triggered when a target finishes.
+     */
+    public void targetFinished(BuildEvent event) {
+        if (diamondsListeners != null) {
+            for (DiamondsListener diamondsListener : diamondsListeners) {
+                try {
+                    diamondsListener.targetEnd(event);
+                } catch (Exception e) {
+                    log.debug("Error:", e);
+                    String errorMessage = e.getMessage();
+                    if (errorMessage == null) {
+                        errorMessage = "";
+                    }
+                    log.error("Diamonds Error, might not be logged properly, see debug log. "
+                                    + errorMessage);
+                }
+
+            }
+        }
+    }
+
+    /**
+     * Triggered when the build finishes.
+     */
+    public void buildFinished(BuildEvent event) {
+        if (diamondsListeners != null) {
+            for (DiamondsListener diamondsListener : diamondsListeners) {
+                try {
+                    diamondsListener.buildEnd(event);
+                } catch (Exception e) {
+                    log.error("Failed to log in diamonds: " + e);
+                }
+
+            }
+        }
+        project = event.getProject();
+        cleanup();
+    }
+
+    /**
+     * See if build needs a final cleanup target to be called.
+     */
+    private void cleanup() {
+        String loggingoutputfile = project.getProperty("logging.output.file");
+        if (loggingoutputfile != null) {
+            File f = new File(loggingoutputfile);
+            if (f.exists())
+                f.delete();
+        }
+    }
+
+    /**
+     * Triggered when a task starts.
+     */
+    public void taskStarted(BuildEvent event) {
+    }
+
+    /**
+     * Triggered when a task finishes.
+     */
+    public void taskFinished(BuildEvent event) {
+    }
+
+    /**
+     * Triggered when a build message is logged.
+     */
+    public void messageLogged(BuildEvent event) {
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/diamonds/src/com/nokia/helium/diamonds/helium.antlib.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : libs.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="libs-diamonds" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
+    <description>
+        Ant task definition declarations.
+    </description>
+    <taskdef resource="com/nokia/helium/core/ant/antlib.xml" uri="http://www.nokia.com/helium" />
+    <typedef name="diamondsExceptionStatusUpdate" classname="com.nokia.helium.diamonds.DiamondsExceptionStatusUpdate" uri="http://www.nokia.com/helium"/>    
+    <typedef name="diamondsPostBuildStatusUpdate" classname="com.nokia.helium.diamonds.DiamondsPostBuildStatusUpdate" uri="http://www.nokia.com/helium"/>
+    <hlm:deflist id="helium-diamonds.list">
+        <hlm:listenerdef classname="com.nokia.helium.diamonds.ant.HeliumListener"/>
+        <hlm:diamondsExceptionStatusUpdate/>
+        <hlm:diamondsPostBuildStatusUpdate/>
+    </hlm:deflist>    
+</project>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/diamonds/tests/bld.sh	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,24 @@
+#!/bin/bash
+
+#
+# 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: 
+#
+
+if [ -f ~/.bashrc ] ; then
+    . ~/.bashrc
+fi
+
+export COMPUTERNAME=fasbs01
+ant -Dant.executor.class="com.nokia.helium.core.ant.HeliumExecutor" $*
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/diamonds/tests/build.bat	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,31 @@
+@echo off
+
+rem
+rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+rem All rights reserved.
+rem This component and the accompanying materials are made available
+rem under the terms of the License "Eclipse Public License v1.0"
+rem which accompanies this distribution, and is available
+rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+rem
+rem Initial Contributors:
+rem Nokia Corporation - initial contribution.
+rem
+rem Contributors:
+rem
+rem Description: 
+rem
+
+setlocal
+if not defined JAVA_6_HOME (
+set TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
+) ELSE  set TESTED_JAVA=%JAVA_6_HOME%
+if exist %TESTED_JAVA% (set JAVA_HOME=%TESTED_JAVA%)
+call ant -Dant.executor.class=com.nokia.helium.core.ant.HeliumExecutor %*
+if "%ERRORLEVEL%" neq "0" (goto error)
+endlocal
+goto :eof
+
+:error
+endlocal
+if "%OS%"=="Windows_NT" color 00
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/diamonds/tests/build.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : build.xml 
+Part of     : Helium AntLib
+
+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="helium-diamonds" xmlns:au="antlib:org.apache.ant.antunit">
+    <description>Helium Antlib diamonds tests.</description>
+    
+    <dirname property="diamonds.unitest.dir" file="${ant.file.helium-antlib-diamonds-unittest}" />
+    <property environment="env" />
+    <import file="../../../../nokia/companyproperties.ant.xml" optional="true"/>
+    <import file="../../../../../extensions/nokia/external/helium-nokia-antlib/companyproperties.ant.xml" optional="true"/>
+    <property name="diamonds.output.dir" location="${diamonds.unitest.dir}/output" />
+    <property name="diamonds.template.dir" location="${diamonds.unitest.dir}/templates" />
+    <property name="build.family" value="test_new_hlm"/>
+    <property name="id" value="123"/>
+    <property name="name" value="${build.family}_${id}"/>
+    <property name="build.system" value="ec-helium"/>
+    <property name="diamonds.listener.configuration.file" location="${diamonds.unitest.dir}/config/diamonds_config.xml.ftl" />
+    <property name="compile.log.input" location="${diamonds.unitest.dir}/data/compile.log.xml" />
+    <property name="codescanner.log.input" location="${diamonds.unitest.dir}/data/problemIndex.xml" />
+    <property name="policy.log.input" location="${diamonds.unitest.dir}/data/policy.log.xml" />
+    <property name="invalid.target.input.file" location="${diamonds.unitest.dir}/data/invalid.target.input.log.xml" />
+    <property name="symsee.version" value="9.1.0" />
+
+    <import file="./test_diamonds.ant.xml" />
+
+    <target name="unittest" depends="unittest-diamonds" />
+    
+    <target name="unittest-diamonds" >
+        <delete dir="${diamonds.unitest.dir}/output" failonerror="false"/>
+        <mkdir dir="${diamonds.unitest.dir}/output"/>
+        <antcall target="test-all" />
+    </target>
+</project>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/diamonds/tests/config/diamonds_config.xml.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : diamonds_config.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:
+
+============================================================================
+-->
+<configuration>
+<config>
+    <output-dir path="${ant['diamonds.output.dir']}"/>
+    <template-dir path="${ant['diamonds.template.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>
+            <!-- verifying basic stage input -->
+            <stage name="pre-build" start="version" end="version" />
+            
+            <!-- verifying basic stage input with input xml file-->
+            <stage name="build" start="compile-target" end="compile-target"
+                logfile="${ant['compile.log.input']}"/>
+    </stages>
+    <targets>
+        <target name="codescanner" template-file="codescanner.xml.ftl"
+            logfile="${ant['codescanner.log.input']}" />
+
+        <!-- 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-log" />
+        
+    <!-- Test the defer case -->
+        <target name="defer-type" template-file="tool.xml.ftl" 
+            ant-properties="true" defer="true"/>
+    </targets>
+</logger>
+</configuration>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/diamonds/tests/data/compile.log.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,2301 @@
+<?xml version="1.0" encoding="utf-8"?>
+<log filename="m:\output\logs\ido_tedo_mcl_devlon52_ec_MCL.52.105.s60_build_compile.log">
+    <build>
+        <task name="s60_build">
+            <task name="\s60\mw\telephonyservices\telsrv_dom\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\telsrv_sdk\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\cbs\CbsServer\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\cbs\cbsui\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\convergedcallengine\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\networkhandling\networkhandlingengine\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\aiwdialdata\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\CallUI\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\dialutils\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\EnPolicy\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneclient\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneserver\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satengine\SatServer\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satui\satapp\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satui\satplugin\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\utils\phoneparser\group">
+            </task>
+            <task name="\s60\app\telephony\tel_dom\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\Blacklist\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneui\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuicontrol\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuistates\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuiutils\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuiview\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuivoipextension\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\silenceactionplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\PhoneCntFinder\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\audiohandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\callhandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\contacthandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\loghandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\phonemodel\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\aiwcallimageplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\PsetNotesUi\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\pslncallimageplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\telephonysettings\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\SSSettings\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\dialer\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\BubbleManager\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\ConnectUtil\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\ServiceRequest\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\SFIUtils\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\Ussd\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\vmbx\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\TelephonyDeviceMode\group">
+            </task>
+            <task name="\s60\app\videotelephony\videotel_dom\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoengine\PacketVideoEngineBinaries\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoplugins\DisplaySink\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoplugins\VideoSource\group">
+            </task>
+            <task name="\s60\app\videotelephony\vtengines\videoteleng\Group">
+            </task>
+            <task name="\s60\app\videotelephony\vtengines\videotelcomms\group">
+            </task>
+            <task name="\s60\app\videotelephony\vtuis\videotelui\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\telsrv_dom\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\telsrv_sdk\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\cbs\CbsServer\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\cbs\cbsui\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\convergedcallengine\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\networkhandling\networkhandlingengine\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\aiwdialdata\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\CallUI\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\dialutils\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\EnPolicy\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneclient\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneserver\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satengine\SatServer\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satui\satapp\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satui\satplugin\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\utils\phoneparser\group">
+            </task>
+            <task name="\s60\app\telephony\tel_dom\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\Blacklist\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneui\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuicontrol\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuistates\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuiutils\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuiview\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuivoipextension\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\silenceactionplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\PhoneCntFinder\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\audiohandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\callhandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\contacthandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\loghandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\phonemodel\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\aiwcallimageplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\PsetNotesUi\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\pslncallimageplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\telephonysettings\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\SSSettings\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\dialer\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\BubbleManager\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\ConnectUtil\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\ServiceRequest\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\SFIUtils\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\Ussd\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\vmbx\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\TelephonyDeviceMode\group">
+            </task>
+            <task name="\s60\app\videotelephony\videotel_dom\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoengine\PacketVideoEngineBinaries\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoplugins\DisplaySink\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoplugins\VideoSource\group">
+            </task>
+            <task name="\s60\app\videotelephony\vtengines\videoteleng\Group">
+            </task>
+            <task name="\s60\app\videotelephony\vtengines\videotelcomms\group">
+            </task>
+            <task name="\s60\app\videotelephony\vtuis\videotelui\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\telsrv_dom\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\telsrv_sdk\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\cbs\CbsServer\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\cbs\cbsui\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\convergedcallengine\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\networkhandling\networkhandlingengine\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\aiwdialdata\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\CallUI\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\dialutils\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\EnPolicy\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneclient\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneserver\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satengine\SatServer\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satui\satapp\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satui\satplugin\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\utils\phoneparser\group">
+            </task>
+            <task name="\s60\app\telephony\tel_dom\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\Blacklist\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneui\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuicontrol\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuistates\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuiutils\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuiview\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuivoipextension\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\silenceactionplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\PhoneCntFinder\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\audiohandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\callhandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\contacthandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\loghandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\phonemodel\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\aiwcallimageplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\PsetNotesUi\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\pslncallimageplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\telephonysettings\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\SSSettings\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\dialer\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\BubbleManager\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\ConnectUtil\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\ServiceRequest\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\SFIUtils\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\Ussd\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\vmbx\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\TelephonyDeviceMode\group">
+            </task>
+            <task name="\s60\app\videotelephony\videotel_dom\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoengine\PacketVideoEngineBinaries\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoplugins\DisplaySink\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoplugins\VideoSource\group">
+            </task>
+            <task name="\s60\app\videotelephony\vtengines\videoteleng\Group">
+            </task>
+            <task name="\s60\app\videotelephony\vtengines\videotelcomms\group">
+            </task>
+            <task name="\s60\app\videotelephony\vtuis\videotelui\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\telsrv_dom\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\telsrv_sdk\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\cbs\CbsServer\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\cbs\cbsui\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\convergedcallengine\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\networkhandling\networkhandlingengine\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\aiwdialdata\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\CallUI\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\dialutils\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\EnPolicy\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneclient\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneserver\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satengine\SatServer\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satui\satapp\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satui\satplugin\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\utils\phoneparser\group">
+            </task>
+            <task name="\s60\app\telephony\tel_dom\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\Blacklist\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneui\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuicontrol\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuistates\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuiutils\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuiview\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuivoipextension\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\silenceactionplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\PhoneCntFinder\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\audiohandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\callhandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\contacthandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\loghandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\phonemodel\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\aiwcallimageplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\PsetNotesUi\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\pslncallimageplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\telephonysettings\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\SSSettings\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\dialer\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\BubbleManager\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\ConnectUtil\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\ServiceRequest\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\SFIUtils\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\Ussd\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\vmbx\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\TelephonyDeviceMode\group">
+            </task>
+            <task name="\s60\app\videotelephony\videotel_dom\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoengine\PacketVideoEngineBinaries\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoplugins\DisplaySink\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoplugins\VideoSource\group">
+            </task>
+            <task name="\s60\app\videotelephony\vtengines\videoteleng\Group">
+            </task>
+            <task name="\s60\app\videotelephony\vtengines\videotelcomms\group">
+            </task>
+            <task name="\s60\app\videotelephony\vtuis\videotelui\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\telsrv_dom\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\telsrv_sdk\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\cbs\CbsServer\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\cbs\cbsui\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\convergedcallengine\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\networkhandling\networkhandlingengine\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\aiwdialdata\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\CallUI\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\dialutils\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\EnPolicy\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneclient\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneserver\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satengine\SatServer\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satui\satapp\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satui\satplugin\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\utils\phoneparser\group">
+            </task>
+            <task name="\s60\app\telephony\tel_dom\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\Blacklist\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneui\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuicontrol\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuistates\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuiutils\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuiview\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuivoipextension\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\silenceactionplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\PhoneCntFinder\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\audiohandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\callhandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\contacthandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\loghandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\phonemodel\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\aiwcallimageplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\PsetNotesUi\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\pslncallimageplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\telephonysettings\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\SSSettings\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\dialer\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\BubbleManager\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\ConnectUtil\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\ServiceRequest\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\SFIUtils\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\Ussd\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\vmbx\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\TelephonyDeviceMode\group">
+            </task>
+            <task name="\s60\app\videotelephony\videotel_dom\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoengine\PacketVideoEngineBinaries\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoplugins\DisplaySink\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoplugins\VideoSource\group">
+            </task>
+            <task name="\s60\app\videotelephony\vtengines\videoteleng\Group">
+            </task>
+            <task name="\s60\app\videotelephony\vtengines\videotelcomms\group">
+            </task>
+            <task name="\s60\app\videotelephony\vtuis\videotelui\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\telsrv_dom\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\telsrv_sdk\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\cbs\CbsServer\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\cbs\cbsui\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\convergedcallengine\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\networkhandling\networkhandlingengine\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\aiwdialdata\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\CallUI\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\dialutils\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\EnPolicy\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneclient\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneserver\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satengine\SatServer\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satui\satapp\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satui\satplugin\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\utils\phoneparser\group">
+            </task>
+            <task name="\s60\app\telephony\tel_dom\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\Blacklist\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneui\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuicontrol\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuistates\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuiutils\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuiview\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuivoipextension\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\silenceactionplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\PhoneCntFinder\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\audiohandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\callhandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\contacthandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\loghandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\phonemodel\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\aiwcallimageplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\PsetNotesUi\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\pslncallimageplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\telephonysettings\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\SSSettings\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\dialer\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\BubbleManager\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\ConnectUtil\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\ServiceRequest\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\SFIUtils\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\Ussd\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\vmbx\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\TelephonyDeviceMode\group">
+            </task>
+            <task name="\s60\app\videotelephony\videotel_dom\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoengine\PacketVideoEngineBinaries\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoplugins\DisplaySink\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoplugins\VideoSource\group">
+            </task>
+            <task name="\s60\app\videotelephony\vtengines\videoteleng\Group">
+            </task>
+            <task name="\s60\app\videotelephony\vtengines\videotelcomms\group">
+            </task>
+            <task name="\s60\app\videotelephony\vtuis\videotelui\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\telsrv_dom\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\telsrv_sdk\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\cbs\CbsServer\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\cbs\cbsui\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\convergedcallengine\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\networkhandling\networkhandlingengine\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\aiwdialdata\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\CallUI\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\dialutils\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\EnPolicy\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneclient\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneserver\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satengine\SatServer\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satui\satapp\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satui\satplugin\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\utils\phoneparser\group">
+            </task>
+            <task name="\s60\app\telephony\tel_dom\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\Blacklist\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneui\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuicontrol\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuistates\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuiutils\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuiview\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuivoipextension\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\silenceactionplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\PhoneCntFinder\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\audiohandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\callhandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\contacthandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\loghandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\phonemodel\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\aiwcallimageplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\PsetNotesUi\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\pslncallimageplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\telephonysettings\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\SSSettings\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\dialer\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\BubbleManager\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\ConnectUtil\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\ServiceRequest\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\SFIUtils\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\Ussd\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\vmbx\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\TelephonyDeviceMode\group">
+            </task>
+            <task name="\s60\app\videotelephony\videotel_dom\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoengine\PacketVideoEngineBinaries\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoplugins\DisplaySink\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoplugins\VideoSource\group">
+            </task>
+            <task name="\s60\app\videotelephony\vtengines\videoteleng\Group">
+            </task>
+            <task name="\s60\app\videotelephony\vtengines\videotelcomms\group">
+            </task>
+            <task name="\s60\app\videotelephony\vtuis\videotelui\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\telsrv_dom\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\telsrv_sdk\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\cbs\CbsServer\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\cbs\cbsui\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\convergedcallengine\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\networkhandling\networkhandlingengine\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\aiwdialdata\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\CallUI\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\dialutils\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\EnPolicy\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneclient\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneserver\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satengine\SatServer\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satui\satapp\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satui\satplugin\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\utils\phoneparser\group">
+            </task>
+            <task name="\s60\app\telephony\tel_dom\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\Blacklist\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneui\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuicontrol\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuistates\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuiutils\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuiview\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuivoipextension\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\silenceactionplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\PhoneCntFinder\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\audiohandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\callhandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\contacthandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\loghandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\phonemodel\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\aiwcallimageplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\PsetNotesUi\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\pslncallimageplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\telephonysettings\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\SSSettings\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\dialer\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\BubbleManager\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\ConnectUtil\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\ServiceRequest\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\SFIUtils\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\Ussd\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\vmbx\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\TelephonyDeviceMode\group">
+            </task>
+            <task name="\s60\app\videotelephony\videotel_dom\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoengine\PacketVideoEngineBinaries\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoplugins\DisplaySink\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoplugins\VideoSource\group">
+            </task>
+            <task name="\s60\app\videotelephony\vtengines\videoteleng\Group">
+            </task>
+            <task name="\s60\app\videotelephony\vtengines\videotelcomms\group">
+            </task>
+            <task name="\s60\app\videotelephony\vtuis\videotelui\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\telsrv_dom\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\telsrv_sdk\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\cbs\CbsServer\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\cbs\cbsui\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\convergedcallengine\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\networkhandling\networkhandlingengine\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\aiwdialdata\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\CallUI\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\dialutils\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\EnPolicy\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneclient\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneserver\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satengine\SatServer\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satui\satapp\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satui\satplugin\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\utils\phoneparser\group">
+            </task>
+            <task name="\s60\app\telephony\tel_dom\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\Blacklist\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneui\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuicontrol\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuistates\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuiutils\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuiview\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuivoipextension\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\silenceactionplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\PhoneCntFinder\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\audiohandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\callhandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\contacthandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\loghandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\phonemodel\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\aiwcallimageplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\PsetNotesUi\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\pslncallimageplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\telephonysettings\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\SSSettings\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\dialer\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\BubbleManager\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\ConnectUtil\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\ServiceRequest\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\SFIUtils\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\Ussd\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\vmbx\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\TelephonyDeviceMode\group">
+            </task>
+            <task name="\s60\app\videotelephony\videotel_dom\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoengine\PacketVideoEngineBinaries\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoplugins\DisplaySink\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoplugins\VideoSource\group">
+            </task>
+            <task name="\s60\app\videotelephony\vtengines\videoteleng\Group">
+            </task>
+            <task name="\s60\app\videotelephony\vtengines\videotelcomms\group">
+            </task>
+            <task name="\s60\app\videotelephony\vtuis\videotelui\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\telsrv_dom\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\telsrv_sdk\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\cbs\CbsServer\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\cbs\cbsui\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\convergedcallengine\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\networkhandling\networkhandlingengine\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\aiwdialdata\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\CallUI\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\dialutils\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\EnPolicy\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneclient\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneserver\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satengine\SatServer\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satui\satapp\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satui\satplugin\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\utils\phoneparser\group">
+            </task>
+            <task name="\s60\app\telephony\tel_dom\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\Blacklist\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneui\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuicontrol\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuistates\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuiutils\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuiview\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuivoipextension\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\silenceactionplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\PhoneCntFinder\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\audiohandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\callhandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\contacthandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\loghandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\phonemodel\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\aiwcallimageplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\PsetNotesUi\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\pslncallimageplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\telephonysettings\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\SSSettings\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\dialer\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\BubbleManager\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\ConnectUtil\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\ServiceRequest\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\SFIUtils\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\Ussd\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\vmbx\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\TelephonyDeviceMode\group">
+            </task>
+            <task name="\s60\app\videotelephony\videotel_dom\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoengine\PacketVideoEngineBinaries\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoplugins\DisplaySink\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoplugins\VideoSource\group">
+            </task>
+            <task name="\s60\app\videotelephony\vtengines\videoteleng\Group">
+            </task>
+            <task name="\s60\app\videotelephony\vtengines\videotelcomms\group">
+            </task>
+            <task name="\s60\app\videotelephony\vtuis\videotelui\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\telsrv_dom\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\telsrv_sdk\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\cbs\CbsServer\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\cbs\cbsui\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\convergedcallengine\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\networkhandling\networkhandlingengine\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\aiwdialdata\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\CallUI\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\dialutils\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\EnPolicy\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneclient\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneserver\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satengine\SatServer\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satui\satapp\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satui\satplugin\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\utils\phoneparser\group">
+            </task>
+            <task name="\s60\app\telephony\tel_dom\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\Blacklist\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneui\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuicontrol\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuistates\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuiutils\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuiview\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuivoipextension\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\silenceactionplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\PhoneCntFinder\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\audiohandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\callhandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\contacthandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\loghandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\phonemodel\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\aiwcallimageplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\PsetNotesUi\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\pslncallimageplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\telephonysettings\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\SSSettings\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\dialer\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\BubbleManager\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\ConnectUtil\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\ServiceRequest\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\SFIUtils\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\Ussd\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\vmbx\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\TelephonyDeviceMode\group">
+            </task>
+            <task name="\s60\app\videotelephony\videotel_dom\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoengine\PacketVideoEngineBinaries\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoplugins\DisplaySink\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoplugins\VideoSource\group">
+            </task>
+            <task name="\s60\app\videotelephony\vtengines\videoteleng\Group">
+            </task>
+            <task name="\s60\app\videotelephony\vtengines\videotelcomms\group">
+            </task>
+            <task name="\s60\app\videotelephony\vtuis\videotelui\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\telsrv_dom\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\telsrv_sdk\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\cbs\CbsServer\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\cbs\cbsui\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\convergedcallengine\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\networkhandling\networkhandlingengine\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\aiwdialdata\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\CallUI\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\dialutils\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\EnPolicy\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneclient\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneserver\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satengine\SatServer\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satui\satapp\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satui\satplugin\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\utils\phoneparser\group">
+            </task>
+            <task name="\s60\app\telephony\tel_dom\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\Blacklist\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneui\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuicontrol\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuistates\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuiutils\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuiview\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuivoipextension\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\silenceactionplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\PhoneCntFinder\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\audiohandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\callhandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\contacthandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\loghandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\phonemodel\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\aiwcallimageplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\PsetNotesUi\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\pslncallimageplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\telephonysettings\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\SSSettings\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\dialer\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\BubbleManager\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\ConnectUtil\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\ServiceRequest\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\SFIUtils\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\Ussd\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\vmbx\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\TelephonyDeviceMode\group">
+            </task>
+            <task name="\s60\app\videotelephony\videotel_dom\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoengine\PacketVideoEngineBinaries\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoplugins\DisplaySink\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoplugins\VideoSource\group">
+            </task>
+            <task name="\s60\app\videotelephony\vtengines\videoteleng\Group">
+            </task>
+            <task name="\s60\app\videotelephony\vtengines\videotelcomms\group">
+            </task>
+            <task name="\s60\app\videotelephony\vtuis\videotelui\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\telsrv_dom\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\telsrv_sdk\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\cbs\CbsServer\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\cbs\cbsui\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\convergedcallengine\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\networkhandling\networkhandlingengine\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\aiwdialdata\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\CallUI\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\dialutils\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\EnPolicy\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneclient\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneserver\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satengine\SatServer\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satui\satapp\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satui\satplugin\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\utils\phoneparser\group">
+            </task>
+            <task name="\s60\app\telephony\tel_dom\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\Blacklist\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneui\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuicontrol\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuistates\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuiutils\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuiview\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuivoipextension\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\silenceactionplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\PhoneCntFinder\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\audiohandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\callhandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\contacthandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\loghandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\phonemodel\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\aiwcallimageplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\PsetNotesUi\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\pslncallimageplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\telephonysettings\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\SSSettings\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\dialer\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\BubbleManager\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\ConnectUtil\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\ServiceRequest\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\SFIUtils\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\Ussd\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\vmbx\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\TelephonyDeviceMode\group">
+            </task>
+            <task name="\s60\app\videotelephony\videotel_dom\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoengine\PacketVideoEngineBinaries\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoplugins\DisplaySink\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoplugins\VideoSource\group">
+            </task>
+            <task name="\s60\app\videotelephony\vtengines\videoteleng\Group">
+            </task>
+            <task name="\s60\app\videotelephony\vtengines\videotelcomms\group">
+            </task>
+            <task name="\s60\app\videotelephony\vtuis\videotelui\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\telsrv_dom\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\telsrv_sdk\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\cbs\CbsServer\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\cbs\cbsui\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\convergedcallengine\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\networkhandling\networkhandlingengine\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\aiwdialdata\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\CallUI\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\dialutils\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\EnPolicy\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneclient\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneserver\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satengine\SatServer\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satui\satapp\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satui\satplugin\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\utils\phoneparser\group">
+            </task>
+            <task name="\s60\app\telephony\tel_dom\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\Blacklist\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneui\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuicontrol\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuistates\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuiutils\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuiview\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuivoipextension\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\silenceactionplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\PhoneCntFinder\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\audiohandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\callhandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\contacthandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\loghandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\phonemodel\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\aiwcallimageplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\PsetNotesUi\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\pslncallimageplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\telephonysettings\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\SSSettings\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\dialer\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\BubbleManager\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\ConnectUtil\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\ServiceRequest\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\SFIUtils\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\Ussd\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\vmbx\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\TelephonyDeviceMode\group">
+            </task>
+            <task name="\s60\app\videotelephony\videotel_dom\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoengine\PacketVideoEngineBinaries\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoplugins\DisplaySink\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoplugins\VideoSource\group">
+            </task>
+            <task name="\s60\app\videotelephony\vtengines\videoteleng\Group">
+            </task>
+            <task name="\s60\app\videotelephony\vtengines\videotelcomms\group">
+            </task>
+            <task name="\s60\app\videotelephony\vtuis\videotelui\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\telsrv_dom\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\telsrv_sdk\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\cbs\CbsServer\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\cbs\cbsui\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\convergedcallengine\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\networkhandling\networkhandlingengine\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\aiwdialdata\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\CallUI\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\dialutils\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\EnPolicy\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneclient\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneserver\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satengine\SatServer\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satui\satapp\group">
+                <message priority="warning"><![CDATA[..\satuisrc\csatuiviewappui.cpp:2558: warning: variable / argument 'aError' is not used in function]]></message>
+                <message priority="remark"><![CDATA[M:\epoc32\include\domain\applications\BrowserUiInternalCRKeys.h:6: note: Please include BrowserUiSDKCRKeys.h in place of BrowserUiInternalCRKeys.h]]></message>
+                <message priority="warning"><![CDATA[..\satuisrc\csatuiviewappui.cpp:2558: warning: variable / argument 'aError' is not used in function]]></message>
+                <message priority="remark"><![CDATA[M:\epoc32\include\domain\applications\BrowserUiInternalCRKeys.h:6: note: Please include BrowserUiSDKCRKeys.h in place of BrowserUiInternalCRKeys.h]]></message>
+            </task>
+            <task name="\s60\mw\telephonyservices\satui\satplugin\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\utils\phoneparser\group">
+            </task>
+            <task name="\s60\app\telephony\tel_dom\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\Blacklist\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneui\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuicontrol\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuistates\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuiutils\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuiview\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuivoipextension\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\silenceactionplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\PhoneCntFinder\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\audiohandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\callhandling\group">
+                <message priority="warning"><![CDATA[..\src\cpesinglecallobserver.cpp:328: warning: variable / argument 'aAttended' is not used in function]]></message>
+                <message priority="warning"><![CDATA[..\src\cpesinglecallobserver.cpp:328: warning: variable / argument 'aDestination' is not used in function]]></message>
+            </task>
+            <task name="\s60\app\telephony\phoneengine\contacthandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\loghandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\phonemodel\group">
+                <message priority="warning"><![CDATA[..\src\cpemessagehandler.cpp:310: warning: variable / argument 'aCallId' is not used in function]]></message>
+                <message priority="warning"><![CDATA[..\src\cpemessagehandler.cpp:310: warning: variable / argument 'aCallId' is not used in function]]></message>
+            </task>
+            <task name="\s60\app\telephony\phonesettings\aiwcallimageplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\PsetNotesUi\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\pslncallimageplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\telephonysettings\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\SSSettings\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\dialer\group">
+                <message priority="warning"><![CDATA[..\src\cdialervideocontainer.cpp:164: warning: variable / argument 'aIndex' is not used in function]]></message>
+            </task>
+            <task name="\s60\app\telephony\phoneuis\BubbleManager\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\ConnectUtil\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\ServiceRequest\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\SFIUtils\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\Ussd\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\vmbx\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\TelephonyDeviceMode\group">
+            </task>
+            <task name="\s60\app\videotelephony\videotel_dom\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoengine\PacketVideoEngineBinaries\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoplugins\DisplaySink\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoplugins\VideoSource\group">
+            </task>
+            <task name="\s60\app\videotelephony\vtengines\videoteleng\Group">
+                <message priority="warning"><![CDATA[..\LOGGER\src\CVtLogger.cpp:20: warning: illegal #pragma]]></message>
+                <message priority="warning"><![CDATA[..\LOGGER\src\CVtLogger.cpp:371: warning: illegal #pragma]]></message>
+                <message priority="warning"><![CDATA[..\CALLCTRL\src\CVtCtlFactory.cpp:20: warning: illegal #pragma]]></message>
+                <message priority="warning"><![CDATA[..\CALLCTRL\src\CVtCtlFactory.cpp:69: warning: illegal #pragma]]></message>
+                <message priority="warning"><![CDATA[..\CALLCTRL\src\CVtCtlCallControl.cpp:20: warning: illegal #pragma]]></message>
+                <message priority="warning"><![CDATA[..\CALLCTRL\src\CVtCtlCallControl.cpp:251: warning: illegal #pragma]]></message>
+                <message priority="warning"><![CDATA[..\CALLCTRL\src\CVtCtlSessionContainer.cpp:20: warning: illegal #pragma]]></message>
+                <message priority="warning"><![CDATA[..\CALLCTRL\src\CVtCtlSessionContainer.cpp:456: warning: illegal #pragma]]></message>
+                <message priority="warning"><![CDATA[..\CALLCTRL\src\CVtCtlCallStatusMonitor.cpp:20: warning: illegal #pragma]]></message>
+                <message priority="warning"><![CDATA[..\CALLCTRL\src\CVtCtlCallStatusMonitor.cpp:226: warning: illegal #pragma]]></message>
+                <message priority="warning"><![CDATA[..\CALLCTRL\src\CVtCtlLineMonitor.cpp:20: warning: illegal #pragma]]></message>
+                <message priority="warning"><![CDATA[..\CALLCTRL\src\CVtCtlLineMonitor.cpp:130: warning: illegal #pragma]]></message>
+                <message priority="warning"><![CDATA[..\CALLCTRL\src\CVtCtlVideoCall.cpp:20: warning: illegal #pragma]]></message>
+                <message priority="warning"><![CDATA[..\CALLCTRL\src\CVtCtlVideoCall.cpp:241: warning: illegal #pragma]]></message>
+                <message priority="warning"><![CDATA[..\CALLCTRL\src\VtCtlPanic.cpp:20: warning: illegal #pragma]]></message>
+                <message priority="warning"><![CDATA[..\CALLCTRL\src\VtCtlPanic.cpp:35: warning: illegal #pragma]]></message>
+                <message priority="warning"><![CDATA[..\LOGGER\src\CVtLogger.cpp:20: warning: illegal #pragma]]></message>
+                <message priority="warning"><![CDATA[..\LOGGER\src\CVtLogger.cpp:371: warning: illegal #pragma]]></message>
+                <message priority="warning"><![CDATA[..\CALLCTRL\src\CVtCtlFactory.cpp:20: warning: illegal #pragma]]></message>
+                <message priority="warning"><![CDATA[..\CALLCTRL\src\CVtCtlFactory.cpp:69: warning: illegal #pragma]]></message>
+                <message priority="warning"><![CDATA[..\CALLCTRL\src\CVtCtlCallControl.cpp:20: warning: illegal #pragma]]></message>
+                <message priority="warning"><![CDATA[..\CALLCTRL\src\CVtCtlCallControl.cpp:251: warning: illegal #pragma]]></message>
+                <message priority="warning"><![CDATA[..\CALLCTRL\src\CVtCtlSessionContainer.cpp:20: warning: illegal #pragma]]></message>
+                <message priority="warning"><![CDATA[..\CALLCTRL\src\CVtCtlSessionContainer.cpp:456: warning: illegal #pragma]]></message>
+                <message priority="warning"><![CDATA[..\CALLCTRL\src\CVtCtlCallStatusMonitor.cpp:20: warning: illegal #pragma]]></message>
+                <message priority="warning"><![CDATA[..\CALLCTRL\src\CVtCtlCallStatusMonitor.cpp:226: warning: illegal #pragma]]></message>
+                <message priority="warning"><![CDATA[..\CALLCTRL\src\CVtCtlLineMonitor.cpp:20: warning: illegal #pragma]]></message>
+                <message priority="warning"><![CDATA[..\CALLCTRL\src\CVtCtlLineMonitor.cpp:130: warning: illegal #pragma]]></message>
+                <message priority="warning"><![CDATA[..\CALLCTRL\src\CVtCtlVideoCall.cpp:20: warning: illegal #pragma]]></message>
+                <message priority="warning"><![CDATA[..\CALLCTRL\src\CVtCtlVideoCall.cpp:241: warning: illegal #pragma]]></message>
+                <message priority="warning"><![CDATA[..\CALLCTRL\src\VtCtlPanic.cpp:20: warning: illegal #pragma]]></message>
+                <message priority="warning"><![CDATA[..\CALLCTRL\src\VtCtlPanic.cpp:35: warning: illegal #pragma]]></message>
+            </task>
+            <task name="\s60\app\videotelephony\vtengines\videotelcomms\group">
+            </task>
+            <task name="\s60\app\videotelephony\vtuis\videotelui\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\telsrv_dom\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\telsrv_sdk\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\cbs\CbsServer\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\cbs\cbsui\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\convergedcallengine\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\networkhandling\networkhandlingengine\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\aiwdialdata\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\CallUI\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\dialutils\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\EnPolicy\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneclient\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneserver\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satengine\SatServer\group">
+                <message priority="warning"><![CDATA["\s60\mw\telephonyservices\satengine\SatServer\SystemState\src\csatsystemstate.cpp", line 66: Warning:  #550-D: variable "err" was set but never used]]></message>
+                <message priority="warning"><![CDATA["\s60\mw\telephonyservices\satengine\SatServer\Engine\src\csatapnhandler.cpp", line 34: Warning:  #177-D: variable "KMaxAccessPointName" was declared but never referenced]]></message>
+                <message priority="warning"><![CDATA["\s60\mw\telephonyservices\satengine\SatServer\Engine\src\csatapnhandler.cpp", line 38: Warning:  #177-D: variable "KSatMaxApnName" was declared but never referenced]]></message>
+                <message priority="warning"><![CDATA["\s60\mw\telephonyservices\satengine\SatServer\SystemState\src\csatsystemstate.cpp", line 66: Warning:  #550-D: variable "err" was set but never used]]></message>
+                <message priority="warning"><![CDATA["\s60\mw\telephonyservices\satengine\SatServer\Engine\src\csatapnhandler.cpp", line 34: Warning:  #177-D: variable "KMaxAccessPointName" was declared but never referenced]]></message>
+                <message priority="warning"><![CDATA["\s60\mw\telephonyservices\satengine\SatServer\Engine\src\csatapnhandler.cpp", line 38: Warning:  #177-D: variable "KSatMaxApnName" was declared but never referenced]]></message>
+            </task>
+            <task name="\s60\mw\telephonyservices\satui\satapp\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satui\satplugin\group">
+                <message priority="warning"><![CDATA["\s60\mw\telephonyservices\satui\satplugin\aisatpluginsrc\caisatplugin.cpp", line 188: Warning:  #550-D: variable "error" was set but never used]]></message>
+                <message priority="warning"><![CDATA["\s60\mw\telephonyservices\satui\satplugin\aisatpluginsrc\caisatplugin.cpp", line 188: Warning:  #550-D: variable "error" was set but never used]]></message>
+            </task>
+            <task name="\s60\mw\telephonyservices\utils\phoneparser\group">
+                <message priority="critical"><![CDATA["\s60\mw\telephonyservices\utils\phoneparser\src\cphoneparserfeatures.cpp", line 81: Warning: C2874W: self may be used before being set]]></message>
+            </task>
+            <task name="\s60\app\telephony\tel_dom\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\Blacklist\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneui\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuicontrol\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuistates\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuiutils\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuiview\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuivoipextension\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\silenceactionplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\PhoneCntFinder\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\audiohandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\callhandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\contacthandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\loghandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\phonemodel\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\aiwcallimageplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\PsetNotesUi\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\pslncallimageplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\telephonysettings\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\SSSettings\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\dialer\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\BubbleManager\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\ConnectUtil\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\ServiceRequest\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\SFIUtils\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\Ussd\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\vmbx\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\TelephonyDeviceMode\group">
+            </task>
+            <task name="\s60\app\videotelephony\videotel_dom\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoengine\PacketVideoEngineBinaries\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoplugins\DisplaySink\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoplugins\VideoSource\group">
+            </task>
+            <task name="\s60\app\videotelephony\vtengines\videoteleng\Group">
+            </task>
+            <task name="\s60\app\videotelephony\vtengines\videotelcomms\group">
+            </task>
+            <task name="\s60\app\videotelephony\vtuis\videotelui\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\telsrv_dom\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\telsrv_sdk\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\cbs\CbsServer\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\cbs\cbsui\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\convergedcallengine\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\networkhandling\networkhandlingengine\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\aiwdialdata\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\CallUI\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\dialutils\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\EnPolicy\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneclient\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneserver\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satengine\SatServer\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satui\satapp\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satui\satplugin\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\utils\phoneparser\group">
+            </task>
+            <task name="\s60\app\telephony\tel_dom\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\Blacklist\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneui\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuicontrol\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuistates\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuiutils\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuiview\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuivoipextension\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\silenceactionplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\PhoneCntFinder\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\audiohandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\callhandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\contacthandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\loghandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\phonemodel\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\aiwcallimageplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\PsetNotesUi\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\pslncallimageplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\telephonysettings\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\SSSettings\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\dialer\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\BubbleManager\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\ConnectUtil\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\ServiceRequest\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\SFIUtils\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\Ussd\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\vmbx\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\TelephonyDeviceMode\group">
+            </task>
+            <task name="\s60\app\videotelephony\videotel_dom\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoengine\PacketVideoEngineBinaries\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoplugins\DisplaySink\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoplugins\VideoSource\group">
+            </task>
+            <task name="\s60\app\videotelephony\vtengines\videoteleng\Group">
+            </task>
+            <task name="\s60\app\videotelephony\vtengines\videotelcomms\group">
+            </task>
+            <task name="\s60\app\videotelephony\vtuis\videotelui\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\telsrv_dom\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\telsrv_sdk\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\cbs\CbsServer\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\cbs\cbsui\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\convergedcallengine\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\networkhandling\networkhandlingengine\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\aiwdialdata\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\CallUI\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\dialutils\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\EnPolicy\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneclient\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneserver\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satengine\SatServer\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satui\satapp\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satui\satplugin\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\utils\phoneparser\group">
+            </task>
+            <task name="\s60\app\telephony\tel_dom\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\Blacklist\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneui\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuicontrol\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuistates\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuiutils\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuiview\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuivoipextension\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\silenceactionplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\PhoneCntFinder\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\audiohandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\callhandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\contacthandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\loghandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\phonemodel\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\aiwcallimageplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\PsetNotesUi\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\pslncallimageplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\telephonysettings\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\SSSettings\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\dialer\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\BubbleManager\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\ConnectUtil\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\ServiceRequest\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\SFIUtils\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\Ussd\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\vmbx\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\TelephonyDeviceMode\group">
+            </task>
+            <task name="\s60\app\videotelephony\videotel_dom\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoengine\PacketVideoEngineBinaries\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoplugins\DisplaySink\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoplugins\VideoSource\group">
+            </task>
+            <task name="\s60\app\videotelephony\vtengines\videoteleng\Group">
+            </task>
+            <task name="\s60\app\videotelephony\vtengines\videotelcomms\group">
+            </task>
+            <task name="\s60\app\videotelephony\vtuis\videotelui\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\telsrv_dom\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\telsrv_sdk\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\cbs\CbsServer\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\cbs\cbsui\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\convergedcallengine\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\networkhandling\networkhandlingengine\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\aiwdialdata\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\CallUI\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\dialutils\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\EnPolicy\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneclient\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneserver\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satengine\SatServer\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satui\satapp\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satui\satplugin\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\utils\phoneparser\group">
+            </task>
+            <task name="\s60\app\telephony\tel_dom\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\Blacklist\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneui\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuicontrol\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuistates\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuiutils\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuiview\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuivoipextension\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\silenceactionplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\PhoneCntFinder\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\audiohandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\callhandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\contacthandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\loghandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\phonemodel\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\aiwcallimageplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\PsetNotesUi\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\pslncallimageplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\telephonysettings\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\SSSettings\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\dialer\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\BubbleManager\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\ConnectUtil\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\ServiceRequest\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\SFIUtils\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\Ussd\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\vmbx\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\TelephonyDeviceMode\group">
+            </task>
+            <task name="\s60\app\videotelephony\videotel_dom\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoengine\PacketVideoEngineBinaries\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoplugins\DisplaySink\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoplugins\VideoSource\group">
+            </task>
+            <task name="\s60\app\videotelephony\vtengines\videoteleng\Group">
+            </task>
+            <task name="\s60\app\videotelephony\vtengines\videotelcomms\group">
+            </task>
+            <task name="\s60\app\videotelephony\vtuis\videotelui\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\telsrv_dom\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\telsrv_sdk\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\cbs\CbsServer\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\cbs\cbsui\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\convergedcallengine\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\networkhandling\networkhandlingengine\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\aiwdialdata\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\CallUI\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\dialutils\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\EnPolicy\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneclient\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneserver\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satengine\SatServer\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satui\satapp\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satui\satplugin\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\utils\phoneparser\group">
+            </task>
+            <task name="\s60\app\telephony\tel_dom\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\Blacklist\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneui\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuicontrol\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuistates\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuiutils\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuiview\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuivoipextension\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\silenceactionplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\PhoneCntFinder\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\audiohandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\callhandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\contacthandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\loghandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\phonemodel\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\aiwcallimageplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\PsetNotesUi\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\pslncallimageplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\telephonysettings\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\SSSettings\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\dialer\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\BubbleManager\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\ConnectUtil\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\ServiceRequest\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\SFIUtils\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\Ussd\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\vmbx\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\TelephonyDeviceMode\group">
+            </task>
+            <task name="\s60\app\videotelephony\videotel_dom\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoengine\PacketVideoEngineBinaries\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoplugins\DisplaySink\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoplugins\VideoSource\group">
+            </task>
+            <task name="\s60\app\videotelephony\vtengines\videoteleng\Group">
+            </task>
+            <task name="\s60\app\videotelephony\vtengines\videotelcomms\group">
+            </task>
+            <task name="\s60\app\videotelephony\vtuis\videotelui\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\telsrv_dom\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\telsrv_sdk\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\cbs\CbsServer\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\cbs\cbsui\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\convergedcallengine\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\networkhandling\networkhandlingengine\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\aiwdialdata\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\CallUI\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\dialutils\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\EnPolicy\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneclient\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneserver\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satengine\SatServer\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satui\satapp\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satui\satplugin\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\utils\phoneparser\group">
+            </task>
+            <task name="\s60\app\telephony\tel_dom\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\Blacklist\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneui\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuicontrol\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuistates\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuiutils\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuiview\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuivoipextension\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\silenceactionplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\PhoneCntFinder\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\audiohandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\callhandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\contacthandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\loghandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\phonemodel\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\aiwcallimageplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\PsetNotesUi\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\pslncallimageplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\telephonysettings\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\SSSettings\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\dialer\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\BubbleManager\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\ConnectUtil\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\ServiceRequest\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\SFIUtils\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\Ussd\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\vmbx\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\TelephonyDeviceMode\group">
+            </task>
+            <task name="\s60\app\videotelephony\videotel_dom\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoengine\PacketVideoEngineBinaries\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoplugins\DisplaySink\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoplugins\VideoSource\group">
+            </task>
+            <task name="\s60\app\videotelephony\vtengines\videoteleng\Group">
+            </task>
+            <task name="\s60\app\videotelephony\vtengines\videotelcomms\group">
+            </task>
+            <task name="\s60\app\videotelephony\vtuis\videotelui\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\telsrv_dom\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\telsrv_sdk\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\cbs\CbsServer\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\cbs\cbsui\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\convergedcallengine\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\networkhandling\networkhandlingengine\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\aiwdialdata\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\CallUI\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\dialutils\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\EnPolicy\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneclient\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\phoneclientserver\phoneserver\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satengine\SatServer\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satui\satapp\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\satui\satplugin\group">
+            </task>
+            <task name="\s60\mw\telephonyservices\utils\phoneparser\group">
+            </task>
+            <task name="\s60\app\telephony\tel_dom\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\Blacklist\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneui\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuicontrol\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuistates\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuiutils\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuiview\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\phoneuivoipextension\group">
+            </task>
+            <task name="\s60\app\telephony\phoneapp\silenceactionplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\PhoneCntFinder\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\audiohandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\callhandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\contacthandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\loghandling\group">
+            </task>
+            <task name="\s60\app\telephony\phoneengine\phonemodel\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\aiwcallimageplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\PsetNotesUi\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\pslncallimageplugin\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\telephonysettings\group">
+            </task>
+            <task name="\s60\app\telephony\phonesettings\SSSettings\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\dialer\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\BubbleManager\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\ConnectUtil\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\ServiceRequest\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\SFIUtils\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\Ussd\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\vmbx\group">
+            </task>
+            <task name="\s60\app\telephony\phoneuis\TelephonyDeviceMode\group">
+            </task>
+            <task name="\s60\app\videotelephony\videotel_dom\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoengine\PacketVideoEngineBinaries\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoplugins\DisplaySink\group">
+            </task>
+            <task name="\s60\app\videotelephony\packetvideoplugins\VideoSource\group">
+            </task>
+            <task name="\s60\app\videotelephony\vtengines\videoteleng\Group">
+            </task>
+            <task name="\s60\app\videotelephony\vtengines\videotelcomms\group">
+            </task>
+            <task name="\s60\app\videotelephony\vtuis\videotelui\group">
+            </task>
+        </task>
+    </build>
+</log>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/diamonds/tests/data/create-bom-log.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<diamonds-build>
+    <schema>10</schema>    
+    <stages>
+      <stage>    
+            <name>build</name>
+            <started>2009-02-03T01:17:52</started>
+            <finished>2009-02-03T01:17:52</finished>
+     </stage>
+    </stages>
+</diamonds-build>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/diamonds/tests/data/problemIndex.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,14859 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<problemIndex>
+   <category name="functionality">
+      <problem name="LeaveNoError" severity="medium">
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexserviceirsend\src\IRSSProvider.cpp">
+            118
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuiinfrared\src\irmtmui.cpp">
+            244
+         </file>
+      </problem>
+   </category>
+   <category name="performance">
+      <problem name="arraypassing" severity="medium">
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTServiceClient.cpp">
+            61
+            113
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSController.cpp">
+            69
+         </file>
+      </problem>
+      <problem name="eikonenvstatic" severity="medium">
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\lcstylustap\src\lcstylustap.cpp">
+            127
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNInqUI.cpp">
+            291
+            388
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintuiprovider\src\caiwimageprintIf.cpp">
+            57
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbuinotif\src\USBNotifier.cpp">
+            61
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNObexPinNotifier.cpp">
+            134
+            168
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNPBAPPinNotifier.cpp">
+            135
+            166
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidkbdsettings\src\bthidsettingview.cpp">
+            93
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilslaunchwaiter.cpp">
+            106
+            109
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNotifier.cpp">
+            82
+            507
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbui\USBClassChangeUIPlugin\src\USBClassChangeUIPluginView.cpp">
+            96
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUIMainView.cpp">
+            121
+         </file>
+      </problem>
+      <problem name="trapeleave" severity="medium">
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUIPairedDevicesView.cpp">
+            916
+            1282
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbuinotif\src\USBUINMain.cpp">
+            75
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNMain.cpp">
+            129
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\devmodel\src\btpairedmodel.cpp">
+            138
+            155
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNotifier.cpp">
+            841
+         </file>
+      </problem>
+      <problem name="userafter" severity="medium">
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUIPairedDevicesView.cpp">
+            1607
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\socketinitiator.cpp">
+            115
+            235
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthidconnection.cpp">
+            210
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthidsession.cpp">
+            253
+         </file>
+      </problem>
+   </category>
+   <category name="codingstandards">
+      <problem name="baddefines" severity="low">
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btrcc\btrccPluginImplUid.h">
+            23
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\expinc\BTAccPluginUid.h">
+            32
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsacpluginuid.h">
+            30
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudiostreamer\inc\btaudiostreamerdebug.h">
+            114
+            143
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\devmodel\inc\btdevmodel.h">
+            78
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\usb_watcher_api\inc\usbpersonalityids.h">
+            23
+            24
+            25
+            26
+            27
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintuiprovider\inc\aiwprintingprovideruid.h">
+            24
+            25
+         </file>
+      </problem>
+      <problem name="cleanup" severity="low">
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapSocketHandler.cpp">
+            88
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanserver\src\SrcsServiceManager.cpp">
+            86
+            257
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTServiceStarter.cpp">
+            87
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\dpstransaction.cpp">
+            58
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSBPPObjectRequest.cpp">
+            107
+            452
+            481
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTServiceClient.cpp">
+            118
+            332
+            334
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\manager\src\decode.cpp">
+            47
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\cusbglobalsystemstateobserver.cpp">
+            31
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSOPPController.cpp">
+            52
+            71
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapPlugin.cpp">
+            53
+            198
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsglobaldialog.cpp">
+            57
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanserver\src\SrcsSession.cpp">
+            175
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanserver\src\obexsm.cpp">
+            69
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSBPPObjectServer.cpp">
+            134
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNGenericInfoNotifier.cpp">
+            45
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\btaccDosListener.cpp">
+            43
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapRequestHandler.cpp">
+            57
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsmessagehandler.cpp">
+            184
+            209
+            336
+            524
+            553
+            639
+            644
+            650
+            654
+            853
+            922
+            928
+            934
+            940
+            1005
+            1076
+            1246
+            1266
+            1340
+            1376
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvacc.cpp">
+            33
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\mouse\src\mouse.cpp">
+            63
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\manager\src\shutdown.cpp">
+            40
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSBIPController.cpp">
+            93
+            302
+            340
+            404
+            434
+            467
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\btnpaireddevsettnotifier.cpp">
+            55
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicebtsend\src\BTSSProvider.cpp">
+            70
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidkbdsettings\src\bthidsettings.cpp">
+            61
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\BTAccFwConnection_dos.cpp">
+            66
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\pictbridge.cpp">
+            64
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNInqUI.cpp">
+            320
+            322
+            586
+            673
+            757
+            859
+            931
+            1144
+            1202
+            1224
+            1226
+            1241
+            1244
+            1288
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\src\nptpdatahandler.cpp">
+            672
+            725
+            1262
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irappgsplugin\src\irappgspluginview.cpp">
+            411
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNObexPinNotifier.cpp">
+            47
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNPBAPPinNotifier.cpp">
+            48
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNPwrNotifier.cpp">
+            45
+            143
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\src\usb\obexsmusbconnection.cpp">
+            87
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuibluetooth\src\btmtmui.cpp">
+            269
+            295
+            358
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapSimCardStatusNotifier.cpp">
+            58
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidkbdsettings\src\bthidcenrepwatcher.cpp">
+            42
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\btaccDosSender.cpp">
+            60
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irbearer\src\irstatemachine.cpp">
+            64
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanclient\src\ObexSMPlugin.cpp">
+            33
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\dpsxmlstring.cpp">
+            40
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\atext\src\main.cpp">
+            81
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\ecom\BtnotifWrapper.cpp">
+            134
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapServerState.cpp">
+            57
+            195
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintuiprovider\src\caiwprintingprovider.cpp">
+            117
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irbearer\src\irtimer.cpp">
+            54
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapHciExtensionMan.cpp">
+            74
+            249
+            362
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\src\ptptimer.cpp">
+            43
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvsdpquery.cpp">
+            41
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNGenericQueryNotifier.cpp">
+            55
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\src\ir\obexsmirdaconnection.cpp">
+            88
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTServiceParameterList.cpp">
+            76
+            169
+            244
+            307
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvaccfwconn.cpp">
+            73
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\src\bt\obexsmpasskey.cpp">
+            50
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidkbdsettings\src\bthidsettingview.cpp">
+            58
+            216
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\lcstylustap\src\lcstylustap.cpp">
+            71
+            87
+            102
+            164
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbmscpersonality\src\CUsbActiveMscHandlerMdrv.cpp">
+            78
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsuilayer.cpp">
+            175
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNAuthNotifier.cpp">
+            101
+            255
+            407
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\CUsbWatcherSession.cpp">
+            31
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsglobalprogressdialog.cpp">
+            66
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSUImageConverter.cpp">
+            73
+            162
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\CUsbActivePersonalityHandler.cpp">
+            79
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanserver\src\obexsmmain.cpp">
+            94
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\dpsstatemachine.cpp">
+            46
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\src\hidcollection.cpp">
+            48
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\CUsbDeviceLock.cpp">
+            74
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irbearer\src\iractivatewatcher.cpp">
+            55
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUIDeviceContainer.cpp">
+            608
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSUXmlParser.cpp">
+            66
+            130
+            171
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNotifier.cpp">
+            392
+            396
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irbearer\src\irremotelockwatcher.cpp">
+            58
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btbearer\src\btpluginprovider.cpp">
+            62
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilslaunchwaiter.cpp">
+            147
+            176
+            386
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btrfsplugin\src\btrfsplugin.cpp">
+            59
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\src\hidgeneric.cpp">
+            51
+            370
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\src\bt\obexsmbtconnection.cpp">
+            105
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\dpsfile.cpp">
+            41
+            113
+            128
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\keyboard\src\keyboard.cpp">
+            90
+            1306
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\src\hidparser.cpp">
+            138
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\CUsbActiveState.cpp">
+            73
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irbearer\src\irstatuswatcher.cpp">
+            53
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\src\hidfield.cpp">
+            36
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSBPPController.cpp">
+            76
+            377
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbuinotif\src\USBUINCableConnectedNotifier.cpp">
+            240
+            513
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexserviceirsend\src\IRClient.cpp">
+            108
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\CUsbPersonalityNotifier.cpp">
+            54
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanclient\src\usbobex.cpp">
+            34
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapSniffHandler.cpp">
+            74
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\src\ptptransport.cpp">
+            55
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irbearer\src\irbearer.cpp">
+            51
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapSecurityHandler.cpp">
+            64
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexserviceirsend\src\IRSSProvider.cpp">
+            70
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\dpsusbnotifier.cpp">
+            48
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btrcc\btrccplayerstarter.cpp">
+            283
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSBPPServerWait.cpp">
+            70
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNInqNotifier.cpp">
+            43
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\CUsbWatcher.cpp">
+            115
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNInquiryAO.cpp">
+            69
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthidserver.cpp">
+            661
+            1358
+            1395
+            1486
+            1491
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\hiddescriptorlist.cpp">
+            135
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbbasicpersonality\src\CUsbActiveBasicHandler.cpp">
+            56
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTServiceAPI.cpp">
+            61
+         </file>
+      </problem>
+      <problem name="driveletters" severity="low">
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidkbdsettings\data\BthidResource.rss">
+            1331
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\inc\btNotifDebug.h">
+            40
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintuiprovider\inc\imageprintuidebug.h">
+            38
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\inc\RUsbWatcher.h">
+            28
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\inc\ptpdef.h">
+            25
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudiostreamer\inc\btaudiostreamerdebug.h">
+            64
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\cusbdevconstarter.cpp">
+            23
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicebtsend\inc\BTSendingServiceDebug.h">
+            34
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanserver\inc\SrcsClSv.h">
+            52
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\inc\obexutilsdebug.h">
+            33
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexserviceirsend\inc\IrSendingServiceDebug.h">
+            34
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuiinfrared\inc\debug.h">
+            33
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthidserver.cpp">
+            48
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\inc\DunDebug.h">
+            39
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\inc\BTSUDebug.h">
+            34
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btrfsplugin\src\btrfsplugin.cpp">
+            27
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\inc\imageprintuidebug.h">
+            38
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanclient\inc\obexsmclient.h">
+            33
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuibluetooth\inc\btmtmuidebug.h">
+            33
+         </file>
+      </problem>
+      <problem name="enummembers" severity="low">
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSBPPObjectRequest.cpp">
+            51
+         </file>
+      </problem>
+      <problem name="enumnames" severity="low">
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSBPPObjectRequest.cpp">
+            51
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmac\btmsopenaudio.h">
+            28
+         </file>
+      </problem>
+      <problem name="forbiddenwords" severity="low">
+         <file path="Y:\LC_Domain\shortlinkconn\localconn_sdk\bluetooth_power_state_api\inc\btserversdkcrkeys.h">
+            29
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbremotepersonality\inc\cremotepersonalityhandler.h">
+            43
+            52
+            70
+            114
+            122
+            129
+            138
+            148
+            160
+            167
+            174
+            183
+            191
+            198
+            205
+            212
+            219
+            226
+            233
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\inc\ptpmsghandler.h">
+            35
+            55
+            63
+            70
+            77
+            84
+            94
+            101
+            108
+            116
+            124
+            132
+            139
+            146
+            153
+            160
+            167
+            179
+            188
+            196
+            205
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\locod\inc\locodserviceman.h">
+            38
+            51
+            76
+            91
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsacState.h">
+            45
+            56
+            63
+            71
+            80
+            87
+            95
+            104
+            111
+            120
+            186
+            194
+            206
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\btaudiomanplugin.h">
+            35
+            45
+            62
+            72
+            83
+            98
+            111
+            125
+            139
+            155
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\plugins\inc\bt\DunBtPlugin.h">
+            34
+            60
+            85
+            93
+            102
+            112
+            121
+            130
+            138
+            146
+            156
+            165
+            178
+            189
+            201
+            211
+            223
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuibluetooth\inc\btmtmui.h">
+            310
+            330
+            355
+            376
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\inc\DunDataWaiter.h">
+            32
+            55
+            65
+            74
+            83
+            91
+            105
+            116
+            125
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\plugins\inc\usb\DunUsbListen.h">
+            42
+            68
+            84
+            100
+            108
+            119
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\devmodel\inc\btregistryobserver.h">
+            37
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\bluetooth_local_variation_api\inc\btengdomaincrkeys.h">
+            176
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\inc\nptpstack.h">
+            42
+            49
+            65
+            85
+            95
+            103
+            112
+            121
+            129
+            141
+            149
+            157
+            165
+            173
+            181
+            189
+            197
+            207
+            216
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\inc\obexutilsentryhandler.h">
+            31
+            50
+            60
+            77
+            85
+            104
+            112
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmac\btmman.h">
+            46
+            60
+            70
+            78
+            86
+            95
+            104
+            113
+            122
+            131
+            139
+            160
+            169
+            177
+            186
+            195
+            203
+            212
+            221
+            230
+            246
+            254
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\inc\BTUIListedDevicesView.h">
+            36
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\bluetooth_engine_device_management_api\inc\btengdevman.h">
+            33
+            46
+            56
+            74
+            105
+            117
+            134
+            148
+            167
+            178
+            191
+            200
+            210
+            217
+            224
+            231
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbdevcon\inc\cusbdevcon.h">
+            44
+            55
+            63
+            71
+            78
+            88
+            95
+            102
+            109
+            116
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\inc\BTServiceStarter.h">
+            189
+            209
+            234
+            255
+            272
+            283
+            293
+            301
+            309
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\inc\DunSignalNotify.h">
+            30
+            52
+            62
+            72
+            81
+            90
+            98
+            112
+            120
+            128
+            138
+            150
+            159
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\inc\BTSController.h">
+            38
+            54
+            64
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdinterruptobserver.h">
+            28
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\lcstylustap\inc\lcstylustap.h">
+            30
+            40
+            47
+            54
+            68
+            74
+            84
+            91
+            97
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\inc\DunUpstream.h">
+            34
+            66
+            95
+            106
+            115
+            126
+            150
+            158
+            167
+            176
+            184
+            192
+            206
+            214
+            222
+            230
+            241
+            250
+            261
+            270
+            280
+            288
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsacActivePacketDropIoctl.h">
+            34
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btbearer\inc\btpluginprovider.h">
+            40
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\server\inc\DunServer.h">
+            43
+            76
+            101
+            111
+            121
+            130
+            141
+            156
+            172
+            186
+            197
+            207
+            221
+            235
+            245
+            256
+            269
+            279
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbuinotif\inc\USBUINCableConnectedNotifier.h">
+            46
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\bluetooth_engine_settings_api\inc\btengsettings.h">
+            38
+            49
+            59
+            75
+            85
+            95
+            110
+            121
+            131
+            141
+            154
+            163
+            181
+            189
+            202
+            211
+            219
+            229
+            246
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdbaseclass.h">
+            49
+            72
+            83
+            111
+            116
+            132
+            144
+            153
+            162
+            171
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btpsmplugin\inc\btengpsmplugin.h">
+            32
+            59
+            68
+            78
+            96
+            103
+            110
+            117
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\inc\eventmanager.h">
+            56
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmac\btmsdisconnect.h">
+            31
+            49
+            60
+            73
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\inc\imageprintuiappui.h">
+            63
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmac\btmscloseaudio.h">
+            31
+            50
+            57
+            66
+            75
+            85
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irbearer\inc\irbearer.h">
+            35
+            43
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanclient\inc\usbobex.h">
+            40
+            59
+            68
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\inc\nptpobject.h">
+            36
+            55
+            63
+            71
+            79
+            87
+            95
+            104
+            116
+            127
+            135
+            144
+            153
+            161
+            169
+            178
+            186
+            194
+            202
+            211
+            219
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmac\btmsidle.h">
+            31
+            56
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanclient\inc\ObexSMPlugin.h">
+            42
+            51
+            65
+            85
+            94
+            102
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btpbap\inc\debug.h">
+            46
+            57
+            68
+            91
+            116
+            141
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\inc\DunSignalCopy.h">
+            31
+            52
+            61
+            71
+            80
+            93
+            101
+            115
+            123
+            131
+            139
+            147
+            157
+            167
+            179
+            188
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\inc\BtuiPluginInterface.h">
+            57
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudiostreamer\inc\btaudiostreamer.h">
+            40
+            58
+            69
+            80
+            91
+            103
+            113
+            126
+            137
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\basrvaccstate.h">
+            43
+            50
+            117
+            125
+            140
+            149
+            157
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsacStateConfiguring.h">
+            29
+            53
+            63
+            74
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmac\btmsyncsock.h">
+            40
+            59
+            66
+            73
+            84
+            91
+            103
+            111
+            119
+            127
+            135
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmac\btmactiveobserver.h">
+            32
+            42
+            50
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbuinotif\inc\USBUINQueriesNotifier.h">
+            38
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\bluetooth_engine_discovery_api\inc\btengdiscovery.h">
+            45
+            103
+            116
+            136
+            163
+            184
+            200
+            220
+            243
+            252
+            262
+            281
+            303
+            330
+            348
+            364
+            375
+            391
+            404
+            417
+            433
+            454
+            474
+            486
+            496
+            511
+            526
+            536
+            545
+            553
+            563
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbremotepersonality\inc\csetpersonality.h">
+            32
+            43
+            51
+            58
+            65
+            74
+            81
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\inc\BTUIApp.h">
+            31
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\inc\ptpsession.h">
+            31
+            39
+            46
+            58
+            68
+            75
+            81
+            87
+            93
+            102
+            107
+            112
+            120
+            127
+            133
+            139
+            145
+            151
+            157
+            163
+            169
+            175
+            181
+            187
+            193
+            199
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\btengsrvsession.h">
+            41
+            51
+            64
+            83
+            92
+            101
+            108
+            115
+            123
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\inc\BTUIPairedDevicesView.h">
+            55
+            341
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmac\btmsctrl.h">
+            38
+            66
+            74
+            84
+            95
+            112
+            124
+            132
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\basrvpowercontrolagent.h">
+            50
+            58
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\devmodel\inc\btdevmodelbase.h">
+            33
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\usb_personality_plugin_api\inc\tusbpersonalityparams.h">
+            33
+            44
+            52
+            60
+            68
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\basrvaccstatedetach.h">
+            36
+            43
+            73
+            81
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\btengclient.h">
+            38
+            48
+            55
+            62
+            70
+            80
+            89
+            99
+            108
+            117
+            128
+            139
+            148
+            157
+            166
+            177
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengdiscovery\inc\btengsdpquery.h">
+            37
+            66
+            73
+            82
+            94
+            108
+            122
+            136
+            158
+            166
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbdevcon\inc\cstatemachine.h">
+            32
+            52
+            62
+            69
+            78
+            86
+            93
+            100
+            110
+            119
+            126
+            134
+            144
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\inc\nptpimagehandler.h">
+            37
+            52
+            60
+            76
+            89
+            98
+            107
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\inc\ptptransport.h">
+            84
+            94
+            103
+            110
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidkbdsettings\inc\bthidsettingcontainer.h">
+            34
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\basrvaccstatedisconnect.h">
+            35
+            42
+            55
+            63
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdcontrolhandler.h">
+            52
+            74
+            82
+            91
+            125
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanserver\inc\SrcsServiceManager.h">
+            39
+            47
+            77
+            90
+            102
+            118
+            126
+            134
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\inc\DunNetDataport.h">
+            34
+            63
+            74
+            86
+            97
+            107
+            116
+            130
+            157
+            169
+            180
+            190
+            205
+            213
+            221
+            230
+            238
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\devmodel\inc\btblockedmodel.h">
+            29
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\inc\DunAtUrcHandler.h">
+            34
+            59
+            67
+            75
+            90
+            101
+            110
+            120
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicddatahandler.h">
+            49
+            71
+            78
+            85
+            107
+            115
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengconnman\inc\btengpairinghandler.h">
+            41
+            62
+            72
+            85
+            95
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\btengactive.h">
+            40
+            50
+            77
+            87
+            103
+            111
+            119
+            126
+            133
+            144
+            152
+            160
+            169
+            181
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\basrvaccstatequery.h">
+            36
+            43
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanserver\inc\obexserviceman.h">
+            58
+            65
+            72
+            79
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsaController.h">
+            80
+            201
+            209
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\inc\DunChanMan.h">
+            37
+            74
+            105
+            169
+            179
+            193
+            223
+            231
+            239
+            248
+            263
+            272
+            281
+            290
+            306
+            329
+            337
+            347
+            357
+            369
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irbearer\inc\irtimer.h">
+            32
+            43
+            50
+            58
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbmscpersonality\inc\CUsbActiveMscHandlerMdrv.h">
+            114
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdusbplugin.h">
+            41
+            62
+            69
+            76
+            85
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\inc\hiddriveritem.h">
+            31
+            51
+            60
+            68
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\inc\rptp.h">
+            40
+            57
+            65
+            75
+            83
+            90
+            105
+            111
+            129
+            141
+            152
+            158
+            165
+            176
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmac\btmsopenaudio.h">
+            42
+            61
+            68
+            77
+            87
+            96
+            107
+            116
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\locod\commoninc\locodservicepluginobserver.h">
+            32
+            44
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\usb_watcher_api\inc\usbwatcher.h">
+            33
+            45
+            53
+            79
+            91
+            99
+            107
+            114
+            122
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsacStateStreaming.h">
+            29
+            53
+            62
+            72
+            82
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\inc\nptplistener.h">
+            41
+            58
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmac\btmrfcommsock.h">
+            33
+            48
+            56
+            65
+            75
+            82
+            90
+            98
+            105
+            113
+            121
+            130
+            138
+            161
+            171
+            181
+            190
+            199
+            208
+            217
+            237
+            245
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsacStateListening.h">
+            37
+            62
+            72
+            82
+            102
+            110
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\inc\cusbdevconstarter.h">
+            29
+            55
+            62
+            71
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\client\inc\dunactive.h">
+            32
+            42
+            50
+            60
+            97
+            116
+            125
+            136
+            145
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbosdescriptorhandler\inc\cosdescriptorhandler.h">
+            35
+            44
+            61
+            72
+            80
+            90
+            100
+            112
+            119
+            126
+            133
+            141
+            148
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\ptpclasscontroller\inc\ptpclasscontroller.h">
+            85
+            93
+            121
+            128
+            135
+            144
+            150
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\btengregistrycleaner.h">
+            56
+            66
+            105
+            113
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsacStateSuspended.h">
+            29
+            53
+            63
+            72
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanserver\inc\obexsm.h">
+            58
+            65
+            83
+            93
+            100
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\inc\DunTransUtils.h">
+            30
+            41
+            50
+            62
+            72
+            83
+            100
+            119
+            133
+            142
+            151
+            165
+            175
+            184
+            205
+            240
+            249
+            259
+            279
+            294
+            309
+            324
+            338
+            347
+            356
+            368
+            380
+            397
+            417
+            432
+            442
+            452
+            464
+            474
+            493
+            502
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbdevcon\inc\crequestshandler.h">
+            31
+            42
+            53
+            60
+            71
+            81
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\btengsrvpluginmgr.h">
+            43
+            64
+            72
+            79
+            89
+            97
+            104
+            112
+            121
+            132
+            143
+            164
+            173
+            182
+            191
+            200
+            215
+            225
+            233
+            242
+            250
+            258
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicebtsend\inc\BTSSSendListHandler.h">
+            35
+            53
+            68
+            76
+            89
+            96
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\server\inc\DunSession.h">
+            28
+            45
+            56
+            66
+            76
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\inc\DunDataPusher.h">
+            32
+            56
+            68
+            79
+            103
+            111
+            120
+            129
+            140
+            148
+            156
+            172
+            187
+            195
+            203
+            216
+            225
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\btengsrvbbconnectionmgr.h">
+            42
+            64
+            71
+            78
+            88
+            96
+            106
+            118
+            128
+            137
+            148
+            160
+            183
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\inc\nptplistcontrol.h">
+            35
+            53
+            61
+            70
+            78
+            86
+            94
+            102
+            110
+            118
+            126
+            136
+            149
+            158
+            166
+            180
+            194
+            203
+            211
+            223
+            231
+            239
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\server\inc\DunServerUtils.h">
+            32
+            43
+            53
+            63
+            75
+            89
+            109
+            126
+            136
+            148
+            159
+            191
+            201
+            211
+            223
+            237
+            255
+            272
+            282
+            294
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\plugins\inc\usb\DunUsbConfig.h">
+            37
+            47
+            56
+            68
+            94
+            102
+            112
+            120
+            136
+            152
+            161
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\inc\hidreportgenerator.h">
+            31
+            39
+            51
+            67
+            82
+            91
+            101
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\inc\DunTransporter.h">
+            112
+            162
+            173
+            188
+            198
+            206
+            218
+            228
+            242
+            346
+            371
+            401
+            410
+            419
+            429
+            438
+            449
+            468
+            484
+            493
+            504
+            515
+            525
+            535
+            547
+            566
+            584
+            599
+            617
+            628
+            646
+            656
+            664
+            672
+            680
+            692
+            704
+            713
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidengplugin\inc\bthidengplugin.h">
+            36
+            48
+            66
+            77
+            87
+            102
+            115
+            129
+            143
+            160
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irbearer\inc\iractivatewatcher.h">
+            38
+            49
+            57
+            65
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengconnman\inc\btengconnhandler.h">
+            41
+            61
+            72
+            82
+            93
+            104
+            115
+            126
+            137
+            147
+            155
+            166
+            177
+            185
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmac\btmslisten.h">
+            31
+            50
+            58
+            67
+            77
+            89
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\inc\nptpdatahandler.h">
+            38
+            45
+            63
+            71
+            79
+            88
+            102
+            116
+            126
+            136
+            152
+            161
+            170
+            186
+            195
+            207
+            221
+            238
+            247
+            255
+            263
+            271
+            279
+            287
+            295
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btpbap\inc\DisconnectHelper.h">
+            28
+            39
+            48
+            69
+            77
+            84
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\inc\DunSignalWaiter.h">
+            32
+            55
+            65
+            74
+            83
+            91
+            105
+            116
+            125
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdwriteobserver.h">
+            30
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\inc\hidreportroot.h">
+            42
+            55
+            71
+            85
+            97
+            106
+            117
+            151
+            162
+            178
+            194
+            210
+            222
+            232
+            242
+            250
+            262
+         </file>
+         <file path="Y:\LC_Domain_osext\shortlinksrv\shortlinksrv_plat\bluetooth_power_management_api\inc\btpm.h">
+            34
+            44
+            60
+            70
+            79
+            88
+            97
+            106
+         </file>
+         <file path="Y:\LC_Domain_osext\shortlinksrv\shortlinksrv_plat\bluetooth_audio_adaptation_api\inc\btaudiostreaminputbase.h">
+            35
+            43
+            53
+            69
+            77
+            94
+            107
+            119
+            132
+            145
+            157
+            169
+            182
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\inc\hiditem.h">
+            39
+            64
+            80
+            88
+            98
+            108
+            116
+            125
+            133
+            141
+            149
+            157
+            166
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\inc\BTUIDeviceContainer.h">
+            47
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\ptp_transport_api\inc\ptptransport.h">
+            84
+            94
+            103
+            110
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\basrvaccstateattached.h">
+            36
+            43
+            97
+            105
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irappgsplugin\inc\irappgsplugin.h">
+            41
+            58
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\inc\btuipluginman.h">
+            37
+            47
+            75
+            82
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\plugins\inc\ir\DunIrPlugin.h">
+            34
+            55
+            63
+            72
+            82
+            91
+            99
+            107
+            121
+            134
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\inc\hidfield.h">
+            49
+            78
+            86
+            94
+            102
+            110
+            118
+            126
+            134
+            142
+            150
+            158
+            166
+            174
+            182
+            190
+            198
+            206
+            214
+            222
+            230
+            238
+            246
+            254
+            262
+            270
+            278
+            286
+            294
+            302
+            311
+            320
+            328
+            337
+            345
+            353
+            362
+            371
+            379
+            388
+            397
+            406
+            415
+            424
+            433
+            442
+            451
+            460
+            469
+            478
+            487
+            496
+            505
+            514
+            523
+            532
+            541
+            550
+            559
+            569
+            579
+            589
+            599
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btbearer\inc\btpluginnotifier.h">
+            40
+            90
+            101
+            109
+            117
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudiostreamer\inc\btaudiostreamsender.h">
+            43
+            54
+            63
+            73
+            81
+            91
+            101
+            109
+            127
+            137
+            148
+            158
+            169
+            179
+            192
+            202
+            213
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\inc\BTUIMainView.h">
+            55
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdusbwriter.h">
+            50
+            71
+            88
+            98
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdusbreader.h">
+            46
+            69
+            80
+            94
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\inc\hidvalues.h">
+            103
+            123
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\inc\DunDownstream.h">
+            36
+            68
+            78
+            93
+            120
+            128
+            136
+            145
+            160
+            168
+            177
+            189
+            198
+            208
+            221
+            231
+            239
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbuinotif\inc\USBNotifier.h">
+            49
+            101
+            107
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmac\btmstate.h">
+            47
+            62
+            69
+            77
+            86
+            93
+            102
+            111
+            118
+            127
+            135
+            157
+            166
+            174
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\devmodel\inc\btpairedmodel.h">
+            46
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbdevcon\inc\cep0reader.h">
+            31
+            42
+            52
+            59
+            66
+            76
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\plugins\inc\bt\DunBtListen.h">
+            41
+            70
+            80
+            88
+            105
+            113
+            122
+            131
+            149
+            158
+            169
+            178
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\inc\nptpresponder.h">
+            48
+            55
+            64
+            75
+            83
+            92
+            109
+            118
+            128
+            136
+            144
+            152
+            165
+            175
+            190
+            203
+            213
+            223
+            231
+            238
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdusbconnector.h">
+            40
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsacStateAborting.h">
+            29
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmac\btmsaudio.h">
+            33
+            51
+            58
+            69
+            80
+            90
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\usb_personality_plugin_api\inc\cusbpersonalityplugin.h">
+            32
+            40
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\inc\hidconnectioninfo.h">
+            35
+            58
+            66
+            74
+            83
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\client\inc\dunplugin.h">
+            32
+            54
+            63
+            76
+            94
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\inc\DunAtCmdHandler.h">
+            38
+            72
+            82
+            90
+            101
+            124
+            132
+            141
+            149
+            157
+            171
+            180
+            189
+            201
+            210
+            220
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\inc\nptpdeviceinfo.h">
+            33
+            40
+            54
+            62
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irappgsplugin\inc\irappgspluginview.h">
+            59
+            87
+            95
+            103
+            112
+            119
+            128
+            135
+            143
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\plugins\inc\usb\DunUsbPlugin.h">
+            36
+            62
+            86
+            94
+            102
+            110
+            118
+            126
+            135
+            145
+            156
+            166
+            175
+            183
+            191
+            201
+            211
+            226
+            238
+            248
+            260
+            273
+            285
+            294
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\mouse\inc\mouse.h">
+            145
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\basrvaccstateattach.h">
+            35
+            42
+            70
+            78
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\ptp_transport_api\inc\ptpcallbacks.h">
+            32
+            39
+            48
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\inc\BTUIActive.h">
+            35
+            45
+            71
+            81
+            99
+            107
+            115
+            122
+            129
+            140
+            148
+            157
+            168
+            180
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengsettings\inc\btengsettingsnotify.h">
+            37
+            48
+            68
+            79
+            89
+            99
+            108
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmac\btmstempd.h">
+            31
+            61
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\inc\BTUIKeyWatcher.h">
+            35
+            60
+            71
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmac\btmactive.h">
+            33
+            50
+            57
+            65
+            76
+            84
+            92
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\obex_service_utils_api\inc\obexutilsmessagehandler.h">
+            173
+            189
+            197
+            214
+            226
+            236
+            246
+            247
+            254
+            262
+            445
+            458
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidengplugin\inc\genericactive.h">
+            33
+            43
+            51
+            64
+            85
+            92
+            100
+            113
+            121
+            129
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\ptp_server_api\inc\rptp.h">
+            40
+            57
+            65
+            75
+            83
+            90
+            105
+            111
+            129
+            141
+            152
+            158
+            165
+            176
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmac\btmsconnect.h">
+            37
+            63
+            71
+            83
+            94
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengdiscovery\inc\btengsdpattrparser.h">
+            36
+            57
+            70
+            82
+            91
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdpacketobserver.h">
+            31
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\locod\commoninc\locodserviceplugin.h">
+            37
+            54
+            70
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\usb_device_control_plugin_api\inc\cusbdevicecontrolplugin.h">
+            38
+            53
+            63
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\basrvaccman.h">
+            127
+            135
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\utils\inc\IRActive.h">
+            35
+            45
+            71
+            81
+            99
+            107
+            115
+            122
+            129
+            138
+            146
+            155
+            166
+            178
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\basrvactive.h">
+            32
+            42
+            50
+            64
+            88
+            95
+            103
+            114
+            122
+            130
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmac\btmsreconnect.h">
+            37
+            55
+            64
+            73
+            81
+            92
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\keyboard\inc\keyboard.h">
+            147
+            155
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\bluetooth_engine_plugin_api\inc\btengplugin.h">
+            37
+            56
+            76
+            98
+            111
+            128
+            138
+            149
+            164
+            177
+            191
+            206
+            222
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irbearer\inc\irstatemachine.h">
+            50
+            61
+            71
+            79
+            87
+            95
+            103
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdinterrupthandler.h">
+            48
+            68
+            76
+            85
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\btengsrvkeywatcher.h">
+            38
+            61
+            71
+            91
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\inc\ptpeventsender.h">
+            37
+            46
+            59
+            70
+            79
+            90
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmac\btmsockobserver.h">
+            30
+            39
+            47
+            56
+            64
+            72
+            80
+            92
+            100
+            108
+            116
+            124
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\inc\ptpserver.h">
+            40
+            49
+            55
+            62
+            68
+            75
+            82
+            91
+            98
+            105
+            115
+            122
+            128
+            134
+            141
+            147
+            154
+            160
+            167
+            174
+            181
+            188
+            196
+            205
+            213
+            221
+            228
+            235
+            242
+            255
+            264
+            270
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbdevcon\inc\cep0writer.h">
+            31
+            42
+            52
+            59
+            70
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\client\inc\dunclient.h">
+            34
+            46
+            56
+            64
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\locod\inc\locodservice.h">
+            36
+            44
+            56
+            66
+            78
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\atext\inc\genericactive.h">
+            33
+            43
+            51
+            59
+            71
+            92
+            99
+            107
+            120
+            128
+            136
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\inc\ptptimer.h">
+            29
+            36
+            41
+            47
+            52
+            57
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\btengsdpdbhandler.h">
+            34
+            44
+            57
+            68
+            80
+            90
+            101
+            108
+            115
+            126
+            137
+            148
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmac\btmsrfcomm.h">
+            33
+            61
+            73
+            86
+            96
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbdevcon\inc\cusbstatewatcher.h">
+            33
+            44
+            54
+            61
+            70
+            79
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\inc\ptpcallbacks.h">
+            32
+            39
+            48
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbuinotif\inc\USBUINQueriesNotifierMdrv.h">
+            35
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\locod\commoninc\locodbearerpluginparams.h">
+            34
+            43
+            52
+            60
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\usb_personality_plugin_api\inc\cusbpersonality.h">
+            91
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\inc\DunUtils.h">
+            30
+            40
+            49
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\btengserver.h">
+            49
+            56
+            65
+            90
+            112
+            121
+            129
+            137
+            145
+            153
+            161
+            169
+            177
+            184
+            192
+            200
+            208
+            215
+            225
+            243
+            256
+            272
+            280
+            288
+            296
+            304
+            312
+            320
+            328
+            336
+            345
+            355
+            368
+            378
+            387
+            399
+            409
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\basrvaccstateconnect.h">
+            35
+            42
+            60
+            68
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irbearer\inc\irstates.h">
+            31
+            60
+            79
+            97
+            115
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\inc\hidtranslate.h">
+            33
+            41
+            52
+            62
+            75
+            94
+            103
+            115
+            130
+            143
+            154
+            164
+            173
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btaudiostreaminputbase.h">
+            35
+            43
+            53
+            69
+            77
+            94
+            107
+            119
+            132
+            145
+            157
+            169
+            182
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanclient\inc\obexsmclient.h">
+            84
+            96
+            104
+            111
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanclient\inc\usbclientwrapper.h">
+            33
+            51
+            60
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\bluetooth_dosserver_audio_api\inc\btaudio4dos.h">
+            33
+            37
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\inc\imageprintuidocument.h">
+            38
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\btengpairobserver.h">
+            41
+            61
+            69
+            79
+            90
+            110
+            117
+            124
+            131
+            139
+            147
+            155
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\inc\imageprintuiapp.h">
+            36
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\btaudio4dosimpl.h">
+            32
+            36
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\inc\vMessageHandler.h">
+            10
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsacStateIdle.h">
+            29
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\inc\hidgeneric.h">
+            38
+            49
+            59
+            69
+            79
+            89
+            105
+            121
+            133
+            150
+            170
+            188
+            204
+            220
+            232
+            243
+            254
+            265
+            278
+            295
+            303
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\bluetooth_engine_connection_management_api\inc\btengconnman.h">
+            37
+            52
+            75
+            89
+            113
+            123
+            133
+            156
+            176
+            189
+            203
+            225
+            249
+            261
+            270
+            282
+            308
+            331
+            341
+            356
+            372
+            385
+            400
+            420
+            428
+            437
+            446
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\locod\inc\locodaemon.h">
+            36
+            44
+            68
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\inc\genericactive.h">
+            33
+            43
+            51
+            59
+            71
+            92
+            99
+            107
+            120
+            128
+            136
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicddataobserver.h">
+            30
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsacStateConnecting.h">
+            29
+            54
+            64
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\btengsrvstate.h">
+            52
+            99
+            109
+            119
+            132
+            142
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\locod\commoninc\locodbearerplugin.h">
+            34
+            47
+            59
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\inc\CUsbWatcher.h">
+            90
+            99
+            107
+            115
+            127
+            138
+            145
+            153
+            162
+            255
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmac\btmssniffm.h">
+            31
+            53
+            61
+            71
+            84
+            100
+            112
+            120
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudiostreamer\inc\btaudiostreamsendersbc.h">
+            39
+            54
+            63
+            73
+            85
+            95
+            105
+            116
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdusbpacketreader.h">
+            47
+            67
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\basrvactivenotifier.h">
+            36
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\locod\commoninc\locodbearerpluginobserver.h">
+            32
+            42
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbuinotif\inc\USBUIConnectionNotifier.h">
+            35
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanclient\inc\ObexSMRequester.h">
+            38
+            74
+            80
+            88
+            100
+            108
+            116
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irbearer\inc\irremotelockwatcher.h">
+            37
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsacActiveObserver.h">
+            32
+            42
+            50
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btpbap\inc\Pbapplugin.h">
+            32
+            57
+            68
+            80
+            96
+            110
+            125
+            141
+            157
+            174
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\inc\BTUIMainContainer.h">
+            33
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\inc\requestmanager.h">
+            94
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\inc\BTUIBlockedDevicesView.h">
+            42
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\inc\DunPlugin.h">
+            59
+            69
+            78
+            87
+            101
+            111
+            121
+            133
+            146
+            155
+            168
+            191
+            205
+            216
+            226
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\inc\nptpstorage.h">
+            35
+            43
+            62
+            70
+            78
+            86
+            94
+            102
+            110
+            119
+            133
+            142
+            151
+            159
+            167
+            175
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbobexclasscontroller\inc\CUsbObexClassController.h">
+            37
+            45
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbosdescriptorhandler\inc\cselectedpersonalityproperty.h">
+            31
+            42
+            50
+            58
+            68
+            75
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengdiscovery\inc\btengdevicesearch.h">
+            37
+            58
+            71
+            90
+            99
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsacactive.h">
+            33
+            53
+            60
+            68
+            79
+            87
+            95
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\inc\hidcollection.h">
+            39
+            78
+            86
+            94
+            102
+            110
+            118
+            129
+            139
+            147
+            155
+            163
+            171
+            179
+            187
+            197
+            205
+            213
+            223
+            233
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsacStateConfigured.h">
+            29
+            53
+            62
+            72
+            80
+            91
+            99
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\inc\hidparser.h">
+            152
+            167
+            242
+            267
+            276
+            294
+            305
+            316
+            328
+            342
+            357
+            372
+            386
+            396
+            408
+            422
+            436
+            451
+            461
+            477
+            490
+            499
+            511
+            521
+            531
+            540
+            549
+            559
+            568
+            577
+            586
+            595
+            604
+            613
+            622
+            631
+            640
+            649
+            658
+            667
+            676
+            685
+            694
+            703
+            712
+            721
+            730
+            739
+            748
+            757
+            766
+            776
+            784
+            792
+            800
+            812
+            821
+            831
+            839
+            847
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\locod\commoninc\locodservicepluginparams.h">
+            34
+            42
+            51
+            59
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\inc\hidinterfaces.h">
+            97
+            108
+            141
+            150
+            159
+            168
+            178
+            188
+            201
+            216
+            230
+            244
+            257
+            277
+            311
+            320
+            329
+            341
+            355
+            371
+            386
+            402
+            420
+            442
+            462
+            476
+            504
+            515
+            526
+            541
+            555
+            570
+            599
+            610
+            622
+            632
+            644
+            656
+            665
+            674
+            683
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\inc\DunNoteHandler.h">
+            33
+            54
+            62
+            70
+            84
+            92
+            100
+            113
+            122
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmac\btmsinuse.h">
+            34
+            46
+            68
+            76
+            85
+            93
+            101
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\inc\DunStream.h">
+            29
+            39
+            47
+            59
+            71
+            80
+            91
+            102
+            120
+            133
+            142
+            152
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsacStateConnected.h">
+            29
+            54
+            64
+            74
+            96
+            104
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irappgsplugin\inc\irkeywatcher.h">
+            34
+            58
+            69
+         </file>
+      </problem>
+      <problem name="ifassignments" severity="low">
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\CUsbPersonalityNotifier.cpp">
+            183
+            213
+            393
+         </file>
+      </problem>
+      <problem name="ifpreprocessor" severity="low">
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbmscpersonality\inc\CUsbActiveMscHandlerMdrv.h">
+            20
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\opp\inc\oppcontroller.h">
+            24
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btrcc\btrccPluginImplUid.h">
+            19
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdbaseclass.h">
+            20
+            202
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\inc\socketreader.h">
+            21
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\inc\hidgeneric.h">
+            20
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btpbap\inc\debug.h">
+            21
+            26
+            28
+            76
+            99
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmonobearer\bmbplugin.h">
+            20
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\inc\btnpbappinnotifier.h">
+            21
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\BTAccDosSender.h">
+            20
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanserver\inc\SrcsSecurityPolicy.h">
+            20
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\atext\inc\prjconfig.h">
+            26
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\atext\inc\atextpluginobserver.h">
+            21
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\bluetooth_local_variation_api\inc\btengdomaincrkeys.h">
+            20
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbremotepersonality\inc\debug.h">
+            33
+            47
+            68
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\inc\debug.h">
+            20
+            25
+            27
+            58
+            73
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmac\btmman.h">
+            64
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\atext\inc\debugconfig.h">
+            28
+            33
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\inc\BTServiceStarter.h">
+            21
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\atcodec\prjconfig.h">
+            26
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\inc\btninquiryao.h">
+            21
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdinterruptobserver.h">
+            20
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\inc\BTSUDebug.h">
+            21
+            25
+            27
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\ptp_transport_api\inc\ptptransport.h">
+            21
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmonocmdhandler\prjconfig.h">
+            26
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmonobearer\prjconfig.h">
+            26
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btpsmplugin\inc\btengpsmplugin.h">
+            20
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\bluetooth_engine_api\inc\btengconstants.h">
+            20
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\locod\inc\debugconfig.h">
+            28
+            33
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsacStateConnecting.h">
+            20
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\debugconfig.h">
+            28
+            33
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\inc\mptpobserver.h">
+            20
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\inc\prjconfig.h">
+            26
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\locod\inc\prjconfig.h">
+            26
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintuiprovider\inc\aiwprintingprovideruid.h">
+            20
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\inc\BTSController.h">
+            21
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdatatypes.h">
+            21
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanclient\inc\ObexSMPlugin.h">
+            20
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\opp\inc\debugconfig.h">
+            29
+            34
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\inc\debug.h">
+            20
+            25
+            27
+            58
+            73
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmonobearer\playercontrolistener.h">
+            20
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\basrvaccstate.h">
+            19
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsacStateConfiguring.h">
+            20
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmac\btmsyncsock.h">
+            19
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\lcstylustap\inc\debug.h">
+            20
+            26
+            28
+            50
+            65
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\atext\inc\atextsrv.h">
+            21
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\bluetooth_sap_connection_state_api\inc\BTSapInternalPSKeys.h">
+            1
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\btengprivatecrkeys.h">
+            20
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\inc\ir\debug.h">
+            36
+            52
+            74
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmonocmdhandler\BTMonoCdmaIncomingFlash.h">
+            21
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuiinfrared\inc\debug.h">
+            45
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\inc\debug.h">
+            33
+            49
+            71
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\bluetooth_dut_mode_api\inc\btengdomainpskeys.h">
+            20
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\atext\inc\atextsecpolicy.h">
+            21
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\common\debug.h">
+            20
+            26
+            28
+            50
+            65
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdreadobserver.h">
+            22
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanserver\inc\SrcsClSv.h">
+            60
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\inc\settingscontainer.h">
+            104
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\basrvaccstatedetach.h">
+            19
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanclient\inc\debug.h">
+            20
+            25
+            27
+            58
+            73
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\inc\nptpcodedefs.h">
+            25
+            77
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\inc\BTSapSecurityHandler.h">
+            22
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\inc\BTServiceAPI.h">
+            21
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\inc\debug.h">
+            43
+            51
+            62
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\inc\datasegmenter.h">
+            21
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irbearer\inc\irtestpskeys.h">
+            20
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmonocmdhandler\btmc_defs.h">
+            23
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\basrvaccstatedisconnect.h">
+            19
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\inc\BTSUImageConverter.h">
+            21
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmonobearer\bmbcmdlistener.h">
+            20
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\inc\prjconfig.h">
+            26
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\inc\BTSUDataConverter.h">
+            20
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\debug.h">
+            27
+            29
+            72
+            74
+            95
+            97
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\basrvaccstatequery.h">
+            19
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\bluetooth_sap_connection_state_api\inc\BTSapDomainPSKeys.h">
+            1
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbuinotif\inc\USBUINotifDebug.h">
+            24
+            30
+            56
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\bluetooth_dosserver_audio_api\inc\btaudio4dos.h">
+            21
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdusbplugin.h">
+            20
+            105
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\inc\BTSUXmlParser.h">
+            20
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\inc\BTConnectionTimer.h">
+            21
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\inc\BTSBPPController.h">
+            21
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\usb_secondary_display_api\inc\usbuinotifsecondarydisplay.h">
+            51
+            59
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\BTAccServer.h">
+            24
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmac\prjconfig.h">
+            26
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\inc\hiddriveritem.h">
+            21
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuibluetooth\inc\btmtmuidebug.h">
+            21
+            25
+            45
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbbasicpersonality\inc\debug.h">
+            33
+            49
+            71
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbdevcon\inc\debug.h">
+            33
+            47
+            68
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsacStateStreaming.h">
+            20
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\inc\BTSapRequestHandler.h">
+            23
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\inc\BTSOPPController.h">
+            21
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\inc\usb\debug.h">
+            36
+            52
+            74
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsacStateListening.h">
+            20
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\inc\btNotifDebug.h">
+            21
+            25
+            31
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btrcc\btrccplayerstarter.h">
+            21
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmac\btmconfig.h">
+            22
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\bluetooth_engine_plugin_api\inc\btengplugin.h">
+            21
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsacStateSuspended.h">
+            20
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\inc\BTSUPassKeyRequest.h">
+            21
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\atext\inc\atextsession.h">
+            25
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\common\inc\genericclient.h">
+            24
+            26
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbuinotif\inc\USBNotifier.h">
+            21
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsacSEPManager.h">
+            23
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\inc\bthidconnection.h">
+            21
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\opp\inc\debug.h">
+            20
+            25
+            27
+            58
+            73
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\inc\ptpcallbacks.h">
+            20
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdusbreader.h">
+            20
+            33
+            175
+            179
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\ptpclasscontroller\inc\ptpclasscontroller.h">
+            24
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\inc\hidreportgenerator.h">
+            19
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\inc\BTSUCapabilityResolver.h">
+            20
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\inc\BTSURefObjectResolver.h">
+            20
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\debugconfig.h">
+            29
+            35
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\inc\BTServiceParameterList.h">
+            20
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidengplugin\inc\bthidengplugin.h">
+            19
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\inc\obexservicemanprivatecrkeys.h">
+            20
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\debug.h">
+            20
+            26
+            28
+            50
+            65
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\lcstylustap\inc\debugconfig.h">
+            24
+            45
+            50
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\bip\inc\debug.h">
+            20
+            25
+            27
+            58
+            73
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btrcc\btrccVolumeLevelController.h">
+            21
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbmscpersonality\inc\debug.h">
+            33
+            49
+            71
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\inc\BTSapMessage.h">
+            22
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\inc\bthidclientsrv.h">
+            21
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmonobearer\debugconfig.h">
+            28
+            33
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\inc\imageprintuidebug.h">
+            23
+            29
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdwriteobserver.h">
+            22
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\inc\BTSapSniffHandler.h">
+            25
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconn_sdk\bluetooth_power_state_api\inc\btserversdkcrkeys.h">
+            21
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexserviceirsend\inc\IrSSProvider.h">
+            22
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdconstants.h">
+            21
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\basrvaccfwconn.h">
+            25
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\inc\hiditem.h">
+            20
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanclient\inc\prjconfig.h">
+            26
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\inc\BTServiceUtils.h">
+            20
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbosdescriptorhandler\inc\debug.h">
+            33
+            47
+            68
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmonocmdhandler\btmcprotocolstatus.h">
+            23
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\basrvaccstateattached.h">
+            19
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irappgsplugin\inc\irappgsplugin.h">
+            23
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsacStreamerController.h">
+            22
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdlogger.h">
+            21
+            34
+            50
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btpbap\inc\prjconfig.h">
+            25
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\basrvrvc.h">
+            19
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\at_command_handler_plugin_api\inc\atextpluginbase.h">
+            21
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\inc\BTSapPlugin.h">
+            23
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\inc\hidfield.h">
+            19
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicebtsend\inc\BTSSProvider.h">
+            22
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\bip\inc\prjconfig.h">
+            26
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexserviceirsend\inc\IrSendingServiceDebug.h">
+            21
+            25
+            27
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\inc\BTSapSocketHandler.h">
+            23
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btrcc\debugconfig.h">
+            40
+            45
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\common\atcodec.h">
+            21
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\ptp_transport_api\inc\ptpcallbacks.h">
+            20
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\inc\BTSBPPObjectRequest.h">
+            21
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\bluetooth_secondary_display_notification_api\inc\secondarydisplay\BTnotifSecondaryDisplayAPI.h">
+            20
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmonobearer\bmbserviceuid.h">
+            1
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdusbconnector.h">
+            20
+            109
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\BTAccSecurityPolicy.h">
+            23
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsacStateAborting.h">
+            20
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\inc\hidconnectioninfo.h">
+            20
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\inc\ir\obexsmirdaconnection.h">
+            21
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicebtsend\inc\BTSendingServiceDebug.h">
+            21
+            25
+            27
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\atext\inc\atextclientsrv.h">
+            21
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\basrvaccstateattach.h">
+            19
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btpbap\inc\debugconfig.h">
+            28
+            33
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmac\debugconfig.h">
+            28
+            33
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\expinc\BTAccParams.h">
+            25
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\expinc\BTAccPluginUid.h">
+            25
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btrcc\prjconfig.h">
+            26
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\inc\BTSBPPObjectServer.h">
+            21
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbui\inc\USBClassChangeUIDebug.h">
+            25
+            31
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmac\btmstempd.h">
+            19
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\inc\prjconfig.h">
+            26
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\debugconfig.h">
+            28
+            33
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\inc\debugconfig.h">
+            29
+            34
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\atcodec\debugconfig.h">
+            28
+            33
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdusbpacketreader.h">
+            21
+            35
+            108
+            112
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\expinc\AccessoryTypes_4dos.h">
+            24
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\inc\ptptransport.h">
+            21
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdpacketobserver.h">
+            22
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\basrvaccman.h">
+            19
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\dialup_connection_status_api\inc\dundomainpskeys.h">
+            23
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\server\inc\DunServerSecurityPolicy.h">
+            20
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdinterrupthandler.h">
+            20
+            124
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\btengsrvkeywatcher.h">
+            145
+            219
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdcontrolhandler.h">
+            20
+            40
+            189
+            193
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicddatahandler.h">
+            20
+            164
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\inc\btnotifier.h">
+            267
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\locod\inc\debug.h">
+            20
+            26
+            28
+            50
+            65
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\basrvpluginman.h">
+            23
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsacGavdpObserver.h">
+            23
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbui\USBClassChangeUIPlugin\inc\USBClassChangeUIPluginDebug.h">
+            24
+            30
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\common\debug.h">
+            20
+            26
+            28
+            50
+            65
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\client\inc\dunserverdef.h">
+            20
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdcontrolobserver.h">
+            20
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\prjconfig.h">
+            26
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\BTAccDosListener.h">
+            20
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\inc\obexutilsdebug.h">
+            21
+            25
+            45
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\common\inc\hiddebug.h">
+            27
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\inc\BTSBPPServerWait.h">
+            21
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdusbwriter.h">
+            20
+            38
+            176
+            180
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\opp\inc\prjconfig.h">
+            26
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\BTAccFwConnection_d.h">
+            24
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\inc\prjconfig.h">
+            26
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbuinotif\inc\USBUINQueriesNotifierMdrv.h">
+            21
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\inc\debugconfig.h">
+            28
+            33
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanserver\inc\debug.h">
+            36
+            52
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\bluetooth_dosserver_audio_api\inc\btaudio4dosdomainpskeys.h">
+            22
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\expinc\BTAccObserver.h">
+            23
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\btengserver.h">
+            23
+            93
+            221
+            251
+            516
+            528
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\basrvaccstateconnect.h">
+            19
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\inc\obexutilsglobalprogressdialog.h">
+            22
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\inc\hidtranslate.h">
+            19
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\BTAccFwIf.h">
+            23
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\inc\debugconfig.h">
+            28
+            33
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\inc\debug.h">
+            20
+            27
+            29
+            51
+            66
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\inc\BTServiceClient.h">
+            21
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmonocmdhandler\debugconfig.h">
+            28
+            33
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\inc\hidinterfaces.h">
+            21
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\basrvacc.h">
+            19
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\inc\BTNGenericInfoNotifier.h">
+            21
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsacStateIdle.h">
+            20
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\locod\inc\utils.h">
+            20
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsacGavdp.h">
+            23
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\obex_secondary_display_notification_api\inc\secondarydisplay\obexutilssecondarydisplayapi.h">
+            21
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintuiprovider\inc\imageprintuidebug.h">
+            23
+            29
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\inc\BTSapServerState.h">
+            24
+            31
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\inc\debug.h">
+            20
+            26
+            28
+            52
+            67
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicddataobserver.h">
+            21
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexserviceirsend\inc\IRClient.h">
+            21
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\prjconfig.h">
+            26
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicddatatypes.h">
+            21
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanclient\inc\debugconfig.h">
+            29
+            34
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsacStreamEndPoint.h">
+            23
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\prjconfig.h">
+            27
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\expinc\BTAccTypes.h">
+            23
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\BTAccInfo.h">
+            22
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\inc\BTSapSession.h">
+            23
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\inc\debugconfig.h">
+            28
+            33
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\bip\inc\debugconfig.h">
+            29
+            34
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\inc\BTSapHciExtensionMan.h">
+            23
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\inc\DunDebug.h">
+            20
+            27
+            29
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\inc\DunPlugin.h">
+            20
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\inc\hidparser.h">
+            19
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\expinc\BTAccPlugin.h">
+            25
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\atext\inc\debug.h">
+            20
+            26
+            28
+            50
+            65
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmac\btmsreconnect.h">
+            19
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\inc\hidcollection.h">
+            20
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsacStateConfigured.h">
+            20
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudiostreamer\inc\btaudiostreamerdebug.h">
+            20
+            26
+            40
+            59
+            84
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\btengprivatepskeys.h">
+            20
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\inc\socketwriter.h">
+            21
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\btaudio4dosimpl.h">
+            21
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\inc\BTSBIPController.h">
+            21
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\inc\BTSapSimCardStatusNotifier.h">
+            24
+            30
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\inc\bt\debug.h">
+            34
+            50
+            72
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsacStateConnected.h">
+            20
+         </file>
+      </problem>
+      <problem name="longlines" severity="low">
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSUCapabilityResolver.cpp">
+            178
+            267
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicdusbreader.cpp">
+            415
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudiostreamer\src\btaudiostreamsendersbc.cpp">
+            112
+            188
+         </file>
+      </problem>
+      <problem name="magicnumbers" severity="low">
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\src\nptpimagehandler.cpp">
+            318
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\atextagent.cpp">
+            102
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthiddevice.cpp">
+            72
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\src\bt\obexsmbtconnection.cpp">
+            192
+            195
+            197
+            199
+            201
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\src\nptpobject.cpp">
+            427
+            428
+            625
+            632
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmcprotocol.cpp">
+            867
+            872
+            875
+            1204
+            1214
+            1224
+            1234
+            1244
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNInqUI.cpp">
+            831
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNAuthNotifier.cpp">
+            70
+            74
+            75
+            79
+            82
+            87
+            184
+            419
+            619
+            630
+            631
+            638
+            639
+            640
+            647
+            650
+            651
+            667
+            672
+            674
+            699
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\bip\src\BIPController.cpp">
+            279
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\opp\src\oppcontroller.cpp">
+            191
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irappgsplugin\src\irappgspluginview.cpp">
+            411
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapMessage.cpp">
+            59
+            87
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\hiddescriptor.cpp">
+            92
+            98
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNPwrNotifier.cpp">
+            134
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\manager\src\mapping.cpp">
+            41
+            42
+            43
+            44
+            45
+            46
+            47
+            48
+            49
+            50
+            51
+            52
+            58
+            59
+            60
+            61
+            62
+            63
+            79
+            80
+            81
+            82
+            83
+            84
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapSession.cpp">
+            164
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\src\nptpstorage.cpp">
+            63
+            409
+            428
+            434
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuibluetooth\src\btmtmui.cpp">
+            269
+            283
+            286
+            295
+            358
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsglobalprogressdialog.cpp">
+            190
+            193
+            196
+            201
+            204
+            214
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicdinterrupthandler.cpp">
+            212
+            216
+            220
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapSocketStateListen.cpp">
+            65
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\btnumcmpnotifier.cpp">
+            137
+            156
+            218
+            314
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSUDataConverter.cpp">
+            61
+            75
+            91
+            105
+            117
+            121
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthidsession.cpp">
+            253
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexserviceirsend\src\IRClient.cpp">
+            165
+            166
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUIMainView.cpp">
+            135
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsuilayer.cpp">
+            175
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmcnumber.cpp">
+            103
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvaccstate.cpp">
+            146
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\vMessageHandler.cpp">
+            415
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNPinNotifier.cpp">
+            153
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\src\ptpservermain.cpp">
+            84
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidkbdsettings\src\layoututils.cpp">
+            41
+            44
+            47
+            50
+            53
+            56
+            59
+            62
+            65
+            68
+            71
+            96
+            99
+            124
+            127
+            130
+            133
+            136
+            139
+            142
+            145
+            148
+            151
+            154
+            180
+            183
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicdbaseclass.cpp">
+            156
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\src\nptpdeviceinfo.cpp">
+            199
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\btaccDosListener.cpp">
+            100
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\BTAccInfoCmdHandler.cpp">
+            90
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\btnssppasskeyentrynotifier.cpp">
+            132
+            151
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuibluetooth\src\btmtmuidata.cpp">
+            370
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuiinfrared\src\irmtmuidata.cpp">
+            398
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsdialog.cpp">
+            316
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStreamerController.cpp">
+            308
+            313
+            318
+            323
+            384
+            389
+            394
+            399
+            421
+            426
+            644
+            666
+            683
+            688
+            722
+            883
+            889
+            895
+            901
+            921
+            924
+            927
+            930
+            934
+            1062
+            1068
+            1074
+            1080
+            1100
+            1103
+            1106
+            1109
+            1113
+            1138
+            1144
+            1160
+            1178
+            1179
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsmessagehandler.cpp">
+            154
+            184
+            524
+            553
+            595
+            639
+            644
+            654
+            823
+            853
+            922
+            928
+            940
+            1005
+            1076
+            1112
+            1246
+            1266
+            1376
+            1482
+            1522
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmccallstatus.cpp">
+            287
+            291
+            297
+            302
+            363
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNInqNotifier.cpp">
+            181
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\mouse\src\mouse.cpp">
+            365
+            367
+            370
+            372
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengregistrycleaner.cpp">
+            211
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvaccman.cpp">
+            241
+            372
+            475
+            506
+            521
+            553
+            617
+            639
+            709
+            764
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTServiceParameterList.cpp">
+            169
+            307
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicdcontrolhandler.cpp">
+            322
+            371
+            440
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthidconnection.cpp">
+            210
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengsdpdbhandler.cpp">
+            128
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSBIPController.cpp">
+            302
+            404
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvaccfwconn.cpp">
+            106
+            131
+            190
+            207
+            224
+            240
+            255
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicddatahandler.cpp">
+            392
+            398
+            644
+            648
+            652
+            656
+            660
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthidserver.cpp">
+            1438
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\hiddescriptorlist.cpp">
+            81
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilslaunchwaiter.cpp">
+            176
+            288
+            338
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\RUsbWatcher.cpp">
+            62
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmrfcommsock.cpp">
+            229
+            251
+         </file>
+      </problem>
+      <problem name="membervariablecallld" severity="low">
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbuinotif\src\USBUINQueriesNotifierMdrv.cpp">
+            256
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNPinNotifier.cpp">
+            267
+            312
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNGenericQueryNotifier.cpp">
+            380
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNInqUI.cpp">
+            325
+            399
+            428
+            456
+            513
+            1170
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNAuthNotifier.cpp">
+            404
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\btnumcmpnotifier.cpp">
+            287
+            334
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\btnssppasskeyentrynotifier.cpp">
+            291
+            339
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNObexPinNotifier.cpp">
+            148
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNPBAPPinNotifier.cpp">
+            151
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\src\notes.cpp">
+            148
+            203
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsdialog.cpp">
+            142
+            176
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbuinotif\src\USBUINCableConnectedNotifier.cpp">
+            219
+            331
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNotifier.cpp">
+            441
+            569
+            722
+            865
+         </file>
+      </problem>
+      <problem name="multipledeclarations" severity="low">
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\btuipluginman.cpp">
+            130
+         </file>
+      </problem>
+      <problem name="namespace" severity="low">
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\inc\bthidprivatecrkeys.h">
+            63
+         </file>
+      </problem>
+      <problem name="nonconsttdesc" severity="low">
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsglobalprogressdialog.cpp">
+            175
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsmessagehandler.cpp">
+            1015
+         </file>
+      </problem>
+      <problem name="null" severity="low">
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTServiceStarter.cpp">
+            263
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNInqUI.cpp">
+            385
+            423
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNAuthNotifier.cpp">
+            146
+            531
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUIPairedDevicesView.cpp">
+            553
+            968
+            1278
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irappgsplugin\src\irappgspluginview.cpp">
+            343
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengdiscovery\src\btengdiscovery.cpp">
+            158
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSBPPObjectRequest.cpp">
+            155
+            159
+            197
+            201
+            234
+            422
+            463
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNPBAPPinNotifier.cpp">
+            95
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\devmodel\src\btdevmodelbase.cpp">
+            168
+            531
+            786
+            798
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSUPassKeyRequest.cpp">
+            113
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicdbaseclass.cpp">
+            561
+            565
+            569
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSUCapabilityResolver.cpp">
+            186
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNPwrNotifier.cpp">
+            89
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicdusbreader.cpp">
+            347
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\devmodel\src\btdevmodel.cpp">
+            44
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsglobalprogressdialog.cpp">
+            116
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSUImageConverter.cpp">
+            136
+            164
+            222
+            223
+            256
+            257
+            258
+            279
+            284
+            303
+            304
+            305
+            306
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\btnumcmpnotifier.cpp">
+            114
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengdiscovery\src\btengsdpquery.cpp">
+            316
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSBPPController.cpp">
+            165
+            182
+            352
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexserviceirsend\src\IRClient.cpp">
+            416
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNInqNotifier.cpp">
+            93
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\CUsbPersonalityNotifier.cpp">
+            183
+            213
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanserver\src\SrcsSession.cpp">
+            171
+            188
+            200
+            212
+            236
+            260
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNPinNotifier.cpp">
+            111
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSBPPObjectServer.cpp">
+            59
+            60
+            61
+            170
+            184
+            306
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexserviceirsend\src\IRSSProvider.cpp">
+            122
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSBPPServerWait.cpp">
+            88
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\btnssppasskeyentrynotifier.cpp">
+            108
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\src\BTUIAppUi.cpp">
+            108
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSUXmlParser.cpp">
+            100
+            147
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUIKeyWatcher.cpp">
+            66
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNotifier.cpp">
+            432
+            836
+            863
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsglobaldialog.cpp">
+            153
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNGenericQueryNotifier.cpp">
+            355
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\devmodel\src\btpairedmodel.cpp">
+            182
+            411
+            552
+            771
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTServiceParameterList.cpp">
+            142
+            181
+            321
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btrcc\btrccLinker.cpp">
+            373
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSBIPController.cpp">
+            480
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\btnpaireddevsettnotifier.cpp">
+            104
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicebtsend\src\BTSSProvider.cpp">
+            113
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNObexPinNotifier.cpp">
+            94
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmrfcommsock.cpp">
+            139
+            414
+         </file>
+      </problem>
+      <problem name="privateinheritance" severity="low">
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\BTAccInfoMainService.h">
+            35
+         </file>
+      </problem>
+      <problem name="resourcesonheap" severity="low">
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSUXmlParser.cpp">
+            109
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthidconnection.cpp">
+            161
+            168
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudiostreamer\src\btaudiostreamsender.cpp">
+            58
+            60
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthidserver.cpp">
+            167
+            168
+            1109
+            1166
+         </file>
+      </problem>
+      <problem name="stringliterals" severity="low">
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicdusbplugin.cpp">
+            60
+            68
+            79
+            88
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTServiceStarter.cpp">
+            70
+            74
+            94
+            99
+            127
+            138
+            176
+            180
+            191
+            233
+            259
+            304
+            315
+            331
+            346
+            354
+            362
+            367
+            377
+            403
+            408
+            417
+            426
+            435
+            443
+            454
+            471
+            480
+            495
+            498
+            516
+            525
+            596
+            609
+            622
+            642
+            680
+            682
+            691
+            702
+            712
+            783
+            791
+            792
+            811
+            821
+            827
+            847
+            868
+            879
+            889
+            899
+            936
+            947
+            950
+            961
+            991
+            1002
+            1004
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btpbap\inc\debug.h">
+            108
+            133
+            153
+            186
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengconnman\src\btengconnman.cpp">
+            57
+            242
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\dpsxmlparser.cpp">
+            41
+            52
+            54
+            63
+            65
+            75
+            78
+            81
+            90
+            93
+            97
+            108
+            112
+            117
+            124
+            169
+            184
+            194
+            198
+            209
+            216
+            232
+            240
+            251
+            256
+            267
+            271
+            278
+            287
+            292
+            297
+            308
+            311
+            323
+            334
+            337
+            340
+            350
+            353
+            356
+            366
+            369
+            372
+            382
+            385
+            388
+            399
+            402
+            405
+            414
+            417
+            419
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTServiceClient.cpp">
+            63
+            102
+            126
+            179
+            189
+            227
+            238
+            275
+            285
+            369
+            378
+            384
+            393
+            405
+            416
+            420
+            429
+            445
+            454
+            463
+            477
+            508
+            529
+            534
+            543
+            562
+            565
+            573
+            595
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmactive.cpp">
+            58
+            64
+            71
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapSocketStateSend.cpp">
+            37
+            40
+            50
+            57
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\manager\src\library.cpp">
+            51
+            71
+            75
+            82
+            86
+            96
+            103
+            111
+            118
+            123
+            129
+            136
+            138
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\inc\debug.h">
+            82
+            97
+            108
+            141
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStateListening.cpp">
+            86
+            201
+            206
+            223
+            229
+            301
+            313
+            321
+            328
+            348
+            356
+            389
+            402
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengconnman\src\btengpairinghandler.cpp">
+            100
+            170
+            178
+            207
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicebtsend\src\btsssendlisthandler.cpp">
+            80
+            91
+            100
+            110
+            118
+            128
+            134
+            141
+            147
+            166
+            175
+            190
+            199
+            204
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunNoteHandler.cpp">
+            55
+            57
+            66
+            75
+            84
+            87
+            93
+            98
+            108
+            111
+            116
+            122
+            142
+            144
+            153
+            156
+            165
+            168
+            192
+            201
+            226
+            236
+            240
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\dpsconnectnotifier.cpp">
+            39
+            52
+            54
+            63
+            65
+            74
+            82
+            124
+            126
+            135
+            137
+            146
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irbearer\src\irremotelockwatcher.cpp">
+            93
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanserver\src\SrcsSession.cpp">
+            61
+            123
+            148
+            176
+            186
+            201
+            215
+            237
+            246
+            261
+            269
+            279
+            338
+            357
+            361
+            371
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmsdisconnect.cpp">
+            45
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\manager\src\server.cpp">
+            43
+            67
+            101
+            109
+            218
+            227
+            238
+            247
+            268
+            275
+            282
+            289
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunDownstream.cpp">
+            53
+            55
+            86
+            89
+            94
+            101
+            114
+            124
+            127
+            132
+            139
+            146
+            156
+            169
+            178
+            186
+            191
+            196
+            216
+            221
+            245
+            249
+            256
+            264
+            268
+            277
+            283
+            288
+            292
+            299
+            309
+            316
+            324
+            335
+            361
+            385
+            405
+            409
+            414
+            421
+            435
+            446
+            454
+            464
+            479
+            489
+            504
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapRequestHandler.cpp">
+            42
+            67
+            81
+            93
+            152
+            165
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUIMainView.cpp">
+            311
+            592
+            612
+            617
+            636
+            637
+            686
+            737
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\dpsscriptsender.cpp">
+            40
+            53
+            55
+            64
+            66
+            75
+            109
+            124
+            141
+            144
+            153
+            155
+            164
+            167
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\mouse\src\mouse.cpp">
+            46
+            196
+            563
+            602
+            625
+            738
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\manager\src\client.cpp">
+            55
+            56
+            84
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicdusbreader.cpp">
+            61
+            73
+            83
+            99
+            108
+            118
+            131
+            136
+            151
+            163
+            185
+            196
+            210
+            220
+            227
+            238
+            243
+            248
+            257
+            270
+            277
+            284
+            286
+            288
+            293
+            304
+            349
+            371
+            372
+            390
+            391
+            397
+            424
+            425
+            430
+            440
+            451
+            463
+            470
+            474
+            486
+            495
+            506
+            512
+            513
+            524
+            525
+            527
+            539
+            554
+            555
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\inc\debug.h">
+            82
+            97
+            108
+            141
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapStateNotConnected.cpp">
+            40
+            57
+            63
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\client\src\dunplugin.cpp">
+            43
+            50
+            59
+            60
+            71
+            85
+            95
+            103
+            114
+            120
+            127
+            131
+            149
+            150
+            161
+            166
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmcoperator.cpp">
+            82
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\server\src\DunServerUtils.cpp">
+            78
+            86
+            94
+            105
+            120
+            130
+            137
+            140
+            152
+            156
+            166
+            170
+            173
+            175
+            180
+            188
+            192
+            199
+            203
+            216
+            227
+            239
+            243
+            256
+            260
+            266
+            281
+            288
+            291
+            293
+            304
+            308
+            326
+            337
+            349
+            355
+            364
+            367
+            378
+            382
+            387
+            390
+            396
+            397
+            407
+            408
+            419
+            423
+            428
+            431
+            437
+            438
+            445
+            451
+            453
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidkbdsettings\src\bthidsettings.cpp">
+            99
+            107
+            128
+            138
+            151
+            161
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\common\debug.h">
+            74
+            89
+            100
+            133
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbremotepersonality\src\csetpersonality.cpp">
+            33
+            60
+            71
+            111
+            151
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\dpsxmlstring.cpp">
+            69
+            73
+            77
+            81
+            85
+            89
+            95
+            99
+            103
+            107
+            111
+            115
+            119
+            123
+            135
+            139
+            143
+            147
+            160
+            164
+            168
+            179
+            183
+            187
+            191
+            195
+            199
+            203
+            207
+            211
+            215
+            219
+            223
+            227
+            231
+            235
+            239
+            243
+            247
+            251
+            255
+            259
+            263
+            267
+            271
+            275
+            279
+            283
+            287
+            291
+            295
+            299
+            303
+            307
+            311
+            315
+            319
+            323
+            327
+            331
+            335
+            339
+            343
+            347
+            351
+            355
+            359
+            363
+            367
+            371
+            375
+            379
+            383
+            387
+            391
+            395
+            399
+            403
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmonobearer\bmbplugin.cpp">
+            90
+            98
+            138
+            163
+            167
+            193
+            207
+            219
+            230
+            238
+            265
+            268
+            272
+            289
+            292
+            296
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNInqUI.cpp">
+            88
+            109
+            118
+            129
+            135
+            143
+            149
+            159
+            168
+            184
+            193
+            246
+            255
+            279
+            289
+            352
+            365
+            385
+            405
+            413
+            423
+            424
+            443
+            466
+            499
+            532
+            542
+            546
+            563
+            588
+            598
+            622
+            643
+            646
+            655
+            657
+            658
+            759
+            768
+            892
+            902
+            904
+            911
+            943
+            1034
+            1042
+            1069
+            1103
+            1108
+            1113
+            1121
+            1213
+            1255
+            1263
+            1268
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irappgsplugin\src\irappgspluginview.cpp">
+            286
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNObexPinNotifier.cpp">
+            92
+            115
+            125
+            175
+            185
+            194
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\devmodel\src\btdevmodelbase.cpp">
+            334
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacState.cpp">
+            223
+            228
+            334
+            340
+            404
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmcsignal.cpp">
+            95
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNPwrNotifier.cpp">
+            87
+            102
+            112
+            159
+            169
+            173
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengsrvstate.cpp">
+            239
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTConnectionTimer.cpp">
+            53
+            58
+            105
+            112
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbdevcon\src\cep0reader.cpp">
+            32
+            61
+            102
+            114
+            136
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\opp\src\oppcontroller.cpp">
+            130
+            187
+            247
+            379
+            384
+            392
+            427
+            447
+            451
+            483
+            509
+            513
+            521
+            549
+            566
+            591
+            602
+            613
+            621
+            675
+            923
+            931
+            936
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmslisten.cpp">
+            50
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\btnumcmpnotifier.cpp">
+            112
+            137
+            155
+            158
+            162
+            173
+            192
+            228
+            241
+            252
+            279
+            293
+            333
+            356
+            366
+            375
+            387
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbbasicpersonality\inc\debug.h">
+            74
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\src\hidreportroot.cpp">
+            86
+            89
+            155
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintuiprovider\src\caiwprintingprovider.cpp">
+            97
+            99
+            110
+            130
+            132
+            147
+            167
+            172
+            182
+            193
+            209
+            219
+            235
+            246
+            259
+            271
+            272
+            280
+            291
+            310
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmsrfcomm.cpp">
+            51
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbosdescriptorhandler\inc\debug.h">
+            71
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengregistrycleaner.cpp">
+            120
+            207
+            260
+            266
+            275
+            280
+            286
+            367
+            374
+            413
+            417
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNGenericQueryNotifier.cpp">
+            103
+            120
+            136
+            236
+            273
+            282
+            295
+            334
+            378
+            381
+            416
+            426
+            436
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\debug.h">
+            74
+            89
+            100
+            135
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapStateCardReaderStatus.cpp">
+            39
+            52
+            63
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbui\src\USBClassChangeUIAppui.cpp">
+            43
+            58
+            69
+            79
+            91
+            96
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbdevcon\src\cstatemachine.cpp">
+            41
+            57
+            98
+            118
+            136
+            141
+            154
+            171
+            186
+            211
+            225
+            233
+            257
+            273
+            300
+            314
+            325
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNAuthNotifier.cpp">
+            144
+            183
+            186
+            187
+            189
+            200
+            206
+            258
+            271
+            324
+            332
+            339
+            345
+            352
+            357
+            363
+            368
+            427
+            442
+            464
+            493
+            504
+            514
+            519
+            539
+            549
+            559
+            564
+            604
+            618
+            650
+            653
+            666
+            683
+            693
+            704
+            718
+            726
+            736
+            739
+            740
+            744
+            756
+            760
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\src\settingsview.cpp">
+            44
+            47
+            58
+            62
+            73
+            79
+            98
+            100
+            109
+            121
+            127
+            134
+            161
+            166
+            179
+            184
+            194
+            201
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\src\rptp.cpp">
+            38
+            67
+            78
+            88
+            108
+            120
+            143
+            155
+            166
+            168
+            178
+            180
+            192
+            196
+            206
+            208
+            220
+            229
+            231
+            243
+            250
+            252
+            267
+            271
+            282
+            284
+            294
+            298
+            308
+            312
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidkbdsettings\src\bthidsettingcontainer.cpp">
+            69
+            137
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\src\settingscontainer.cpp">
+            60
+            87
+            99
+            113
+            129
+            141
+            146
+            156
+            171
+            182
+            194
+            218
+            228
+            239
+            244
+            246
+            258
+            261
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\src\nptpstorage.cpp">
+            122
+            131
+            177
+            186
+            274
+            294
+            300
+            312
+            317
+            333
+            343
+            348
+            394
+            475
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunDataWaiter.cpp">
+            46
+            48
+            57
+            64
+            75
+            78
+            84
+            90
+            93
+            103
+            106
+            113
+            117
+            127
+            130
+            135
+            143
+            153
+            156
+            161
+            167
+            188
+            194
+            203
+            207
+            217
+            222
+            244
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbdevcon\src\cep0writer.cpp">
+            32
+            60
+            93
+            114
+            122
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmccallinghandler.cpp">
+            61
+            107
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\CUsbDeviceLock.cpp">
+            46
+            53
+            70
+            84
+            107
+            113
+            132
+            137
+            142
+            157
+            172
+            192
+            200
+            206
+            219
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\src\nptpimagehandler.cpp">
+            50
+            69
+            71
+            82
+            84
+            94
+            96
+            106
+            125
+            139
+            142
+            155
+            171
+            184
+            204
+            218
+            228
+            246
+            256
+            284
+            294
+            300
+            311
+            331
+            340
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuiinfrared\src\irmtmuidata.cpp">
+            43
+            54
+            57
+            72
+            85
+            98
+            157
+            169
+            185
+            206
+            228
+            250
+            272
+            295
+            372
+            397
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSUXmlParser.cpp">
+            49
+            53
+            76
+            80
+            98
+            118
+            134
+            145
+            165
+            174
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\dpsptpnotifier.cpp">
+            38
+            50
+            52
+            61
+            63
+            72
+            78
+            87
+            94
+            98
+            107
+            109
+            118
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\ptpclasscontroller\src\ptpclasscontroller.cpp">
+            75
+            103
+            113
+            128
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\devmodel\src\btpairedmodel.cpp">
+            368
+            454
+            644
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilslaunchwaiter.cpp">
+            205
+            210
+            218
+            233
+            247
+            251
+            259
+            270
+            286
+            327
+            395
+            397
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengclient.cpp">
+            48
+            55
+            61
+            72
+            117
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\inc\imageprintuidebug.h">
+            78
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStreamEndPoint.cpp">
+            107
+            119
+            132
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmonobearer\playercontrolistener.cpp">
+            56
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbdevcon\src\cusbdevcon.cpp">
+            37
+            51
+            65
+            69
+            73
+            77
+            95
+            120
+            124
+            128
+            132
+            136
+            140
+            144
+            148
+            152
+            168
+            177
+            186
+            195
+            204
+            213
+            229
+            237
+            258
+            262
+            276
+            296
+            319
+            334
+            341
+            352
+            366
+            381
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\CUsbActiveState.cpp">
+            47
+            50
+            92
+            98
+            125
+            135
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irbearer\src\irstatuswatcher.cpp">
+            78
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvaccstateconnect.cpp">
+            47
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\bip\inc\debug.h">
+            82
+            97
+            108
+            141
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbdevcon\src\crequestshandler.cpp">
+            37
+            53
+            72
+            101
+            117
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\locod\src\locodservice.cpp">
+            67
+            81
+            88
+            94
+            109
+            120
+            133
+            146
+            155
+            172
+            178
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexserviceirsend\src\IRClient.cpp">
+            61
+            95
+            150
+            192
+            231
+            242
+            305
+            317
+            346
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbbasicpersonality\src\CUsbActiveBasicHandler.cpp">
+            43
+            63
+            91
+            103
+            115
+            127
+            139
+            151
+            160
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapSniffHandler.cpp">
+            37
+            44
+            49
+            53
+            58
+            69
+            84
+            92
+            96
+            104
+            108
+            113
+            117
+            122
+            133
+            136
+            143
+            147
+            161
+            165
+            171
+            175
+            187
+            194
+            199
+            203
+            208
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvaccstate.cpp">
+            61
+            68
+            78
+            121
+            131
+            148
+            168
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapSecurityHandler.cpp">
+            44
+            74
+            86
+            99
+            105
+            129
+            140
+            174
+            178
+            184
+            189
+            219
+            247
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\src\BTUIAppUi.cpp">
+            167
+            190
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapStatePowerOff.cpp">
+            39
+            53
+            71
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\src\connectionmanager.cpp">
+            40
+            54
+            57
+            86
+            89
+            94
+            105
+            109
+            117
+            118
+            119
+            123
+            126
+            137
+            140
+            151
+            155
+            172
+            176
+            188
+            195
+            206
+            207
+            210
+            213
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapStateReset.cpp">
+            39
+            59
+            90
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\atext\inc\debug.h">
+            74
+            89
+            100
+            135
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUIRegistryWatcher.cpp">
+            124
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudiostreamer\inc\btaudiostreamerdebug.h">
+            87
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbuinotif\src\USBUINMain.cpp">
+            45
+            63
+            71
+            95
+            100
+            122
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengdevman\src\btengdevman.cpp">
+            56
+            170
+            195
+            228
+            240
+            344
+            349
+            360
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\dpsusbnotifier.cpp">
+            44
+            62
+            64
+            73
+            80
+            89
+            94
+            103
+            113
+            129
+            138
+            140
+            149
+            163
+            172
+            197
+            206
+            221
+            230
+            244
+            253
+            255
+            264
+            274
+            293
+            302
+            304
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunNetDataport.cpp">
+            50
+            58
+            69
+            71
+            82
+            86
+            91
+            98
+            105
+            117
+            120
+            123
+            131
+            137
+            138
+            150
+            165
+            169
+            170
+            181
+            195
+            214
+            222
+            229
+            232
+            241
+            246
+            252
+            258
+            264
+            267
+            276
+            284
+            291
+            299
+            302
+            312
+            316
+            320
+            330
+            334
+            339
+            344
+            346
+            351
+            353
+            356
+            365
+            369
+            382
+            384
+            389
+            391
+            395
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengsrvkeywatcher.cpp">
+            298
+            305
+            316
+            331
+            343
+            351
+            359
+            370
+            383
+            395
+            400
+            409
+            460
+            478
+            515
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\BTAccSession.cpp">
+            73
+            115
+            354
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbobexclasscontroller\src\CUsbObexClassController.cpp">
+            113
+            135
+            150
+            154
+            172
+            188
+            207
+            247
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\btaudiomanplugin.cpp">
+            128
+            163
+            292
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicdusbpacketreader.cpp">
+            61
+            71
+            81
+            91
+            100
+            104
+            111
+            114
+            116
+            127
+            135
+            144
+            147
+            159
+            160
+            162
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\manager\src\decode.cpp">
+            38
+            58
+            188
+            208
+            220
+            238
+            251
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapStateInit.cpp">
+            38
+            50
+            56
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\CUsbWatcherServer.cpp">
+            49
+            56
+            76
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvaccstatedetach.cpp">
+            47
+            75
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\cusbglobalsystemstateobserver.cpp">
+            74
+            98
+            102
+            122
+            128
+            149
+            159
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\cusbdevconstarter.cpp">
+            37
+            60
+            79
+            84
+            94
+            100
+            110
+            112
+            123
+            129
+            150
+            154
+            164
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNMain.cpp">
+            54
+            114
+            125
+            139
+            147
+            152
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\src\ptpstackstatelistener.cpp">
+            55
+            57
+            66
+            69
+            78
+            81
+            101
+            105
+            111
+            121
+            130
+            140
+            143
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSBPPObjectServer.cpp">
+            57
+            99
+            114
+            118
+            142
+            159
+            168
+            174
+            183
+            195
+            204
+            215
+            224
+            234
+            248
+            258
+            262
+            271
+            282
+            293
+            305
+            318
+            329
+            340
+            345
+            357
+            368
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengsrvbbconnectionmgr.cpp">
+            192
+            204
+            320
+            337
+            362
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\BTAccInfoCmdHandler.cpp">
+            68
+            90
+            107
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\src\eventmanager.cpp">
+            76
+            88
+            89
+            90
+            91
+            92
+            93
+            94
+            95
+            96
+            97
+            98
+            99
+            100
+            105
+            106
+            107
+            114
+            123
+            128
+            133
+            138
+            144
+            150
+            154
+            164
+            167
+            172
+            179
+            186
+            191
+            197
+            205
+            209
+            221
+            224
+            230
+            235
+            246
+            253
+            258
+            270
+            273
+            278
+            283
+            288
+            299
+            305
+            310
+            315
+            320
+            331
+            336
+            341
+            352
+            357
+            361
+            364
+            373
+            374
+            377
+            382
+            393
+            395
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\locod\src\locodaemon.cpp">
+            68
+            71
+            73
+            97
+            161
+            171
+            175
+            179
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsmessagehandler.cpp">
+            123
+            150
+            187
+            201
+            217
+            231
+            249
+            264
+            278
+            292
+            306
+            318
+            334
+            340
+            354
+            377
+            453
+            519
+            527
+            537
+            555
+            576
+            596
+            635
+            645
+            649
+            656
+            659
+            677
+            697
+            714
+            725
+            733
+            748
+            824
+            855
+            867
+            908
+            929
+            948
+            961
+            1007
+            1021
+            1031
+            1035
+            1052
+            1062
+            1078
+            1142
+            1153
+            1169
+            1209
+            1213
+            1224
+            1256
+            1275
+            1294
+            1304
+            1323
+            1333
+            1342
+            1352
+            1378
+            1399
+            1404
+            1419
+            1432
+            1444
+            1450
+            1518
+            1578
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmccallstatus.cpp">
+            61
+            419
+            423
+            453
+            475
+            547
+            574
+            662
+            681
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunSignalCopy.cpp">
+            45
+            47
+            56
+            66
+            76
+            79
+            85
+            91
+            94
+            105
+            108
+            114
+            120
+            123
+            135
+            138
+            154
+            163
+            169
+            179
+            182
+            198
+            203
+            204
+            207
+            213
+            219
+            229
+            232
+            245
+            250
+            270
+            272
+            281
+            289
+            298
+            311
+            320
+            325
+            329
+            334
+            339
+            343
+            348
+            353
+            363
+            368
+            372
+            377
+            382
+            386
+            391
+            396
+            401
+            407
+            412
+            416
+            421
+            425
+            434
+            440
+            449
+            455
+            464
+            477
+            487
+            492
+            509
+            511
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUIPairedDevicesView.cpp">
+            107
+            127
+            216
+            221
+            225
+            435
+            462
+            848
+            1065
+            1076
+            1097
+            1103
+            1147
+            1171
+            1193
+            1219
+            1261
+            1539
+            1650
+            1651
+            1652
+            1653
+            1668
+            1673
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintuiprovider\src\caiwimageprintIf.cpp">
+            108
+            121
+            125
+            138
+            148
+            159
+            167
+            179
+            194
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btrcc\btrccPlugin.cpp">
+            113
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmsaudio.cpp">
+            44
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapStatePowerOn.cpp">
+            39
+            59
+            85
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmsyncsock.cpp">
+            149
+            169
+            176
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\src\nptpdatahandler.cpp">
+            59
+            62
+            72
+            76
+            88
+            113
+            123
+            161
+            171
+            203
+            214
+            236
+            249
+            261
+            276
+            323
+            334
+            343
+            354
+            367
+            382
+            383
+            384
+            385
+            395
+            397
+            401
+            404
+            430
+            442
+            464
+            475
+            479
+            501
+            508
+            532
+            551
+            668
+            673
+            783
+            797
+            818
+            827
+            855
+            867
+            894
+            905
+            999
+            1011
+            1085
+            1129
+            1160
+            1210
+            1227
+            1239
+            1252
+            1253
+            1265
+            1276
+            1286
+            1294
+            1308
+            1318
+            1323
+            1344
+            1389
+            1546
+            1547
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\src\emptycontainer.cpp">
+            49
+            59
+            70
+            84
+            100
+            112
+            128
+            137
+            144
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacActivePacketDropIoctl.cpp">
+            68
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\bip\src\BIPImageHandler.cpp">
+            56
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbuinotif\inc\USBUINotifDebug.h">
+            107
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuibluetooth\src\btmtmui.cpp">
+            55
+            61
+            72
+            79
+            90
+            104
+            122
+            136
+            150
+            182
+            211
+            223
+            261
+            296
+            391
+            403
+            483
+            507
+            515
+            530
+            539
+            544
+            549
+            570
+            622
+            635
+            648
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\BTAccInfoRequester.cpp">
+            126
+            135
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapSimCardStatusNotifier.cpp">
+            45
+            76
+            86
+            98
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmstate.cpp">
+            146
+            155
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidkbdsettings\src\btkeyenumtextsettingitem.cpp">
+            59
+            94
+            101
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbuinotif\src\USBUIConnectionNotifier.cpp">
+            44
+            50
+            62
+            71
+            76
+            86
+            90
+            101
+            135
+            171
+            182
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsentryhandler.cpp">
+            81
+            96
+            110
+            118
+            131
+            146
+            160
+            168
+            182
+            191
+            202
+            207
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\manager\src\codestore.cpp">
+            49
+            70
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmcvolume.cpp">
+            63
+            67
+            77
+            93
+            121
+            129
+            186
+            206
+            230
+            249
+            258
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUIBlockedDevicesView.cpp">
+            68
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\ATCodec\atccommand.cpp">
+            209
+            214
+            261
+            264
+            454
+            483
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapState.cpp">
+            44
+            50
+            56
+            62
+            82
+            125
+            134
+            140
+            151
+            162
+            167
+            176
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudiostreamer\src\btaudiostreamsendersbc.cpp">
+            36
+            37
+            46
+            52
+            62
+            63
+            74
+            76
+            88
+            104
+            105
+            106
+            107
+            108
+            109
+            112
+            120
+            127
+            132
+            133
+            145
+            148
+            160
+            166
+            175
+            177
+            183
+            190
+            195
+            196
+            203
+            204
+            210
+            216
+            226
+            227
+            230
+            231
+            237
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengserver.cpp">
+            114
+            130
+            141
+            280
+            288
+            294
+            373
+            426
+            499
+            550
+            551
+            599
+            640
+            644
+            709
+            768
+            779
+            900
+            909
+            1095
+            1185
+            1193
+            1231
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapHciExtensionMan.cpp">
+            81
+            87
+            96
+            118
+            129
+            138
+            163
+            167
+            181
+            219
+            229
+            231
+            268
+            270
+            279
+            298
+            305
+            323
+            338
+            347
+            356
+            376
+            378
+            397
+            403
+            426
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\atext\src\atextsession.cpp">
+            71
+            176
+            257
+            318
+            331
+            366
+            424
+            429
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvsdpquery.cpp">
+            227
+            261
+            270
+            276
+            282
+            288
+            294
+            312
+            319
+            325
+            329
+            337
+            343
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmman.cpp">
+            90
+            95
+            170
+            190
+            259
+            272
+            282
+            296
+            314
+            327
+            359
+            385
+            418
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvaccstateattach.cpp">
+            47
+            88
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\src\bt\obexsmpasskey.cpp">
+            64
+            79
+            93
+            110
+            115
+            144
+            151
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbmscpersonality\inc\debug.h">
+            74
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\BTAccClient.cpp">
+            57
+            82
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapStateATR.cpp">
+            39
+            53
+            69
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\lcstylustap\src\lcstylustap.cpp">
+            125
+            165
+            178
+            201
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\RUsbWatcher.cpp">
+            60
+            73
+            85
+            96
+            108
+            119
+            131
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\btuipluginman.cpp">
+            120
+            136
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\client\src\dunclient.cpp">
+            35
+            44
+            74
+            94
+            99
+            109
+            110
+            122
+            137
+            143
+            147
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\inc\debug.h">
+            65
+            110
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicdinterrupthandler.cpp">
+            62
+            68
+            77
+            84
+            95
+            106
+            116
+            118
+            128
+            130
+            141
+            163
+            164
+            165
+            166
+            171
+            175
+            181
+            190
+            195
+            207
+            223
+            224
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\bip\src\BIPController.cpp">
+            182
+            213
+            500
+            508
+            579
+            583
+            629
+            636
+            657
+            663
+            722
+            733
+            744
+            752
+            1015
+            1020
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\inc\bt\debug.h">
+            75
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanserver\src\obexsmmain.cpp">
+            37
+            49
+            68
+            88
+            91
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\src\notes.cpp">
+            56
+            58
+            69
+            72
+            78
+            82
+            102
+            109
+            112
+            124
+            130
+            139
+            142
+            145
+            147
+            149
+            159
+            172
+            174
+            183
+            193
+            197
+            202
+            205
+            214
+            215
+            220
+            250
+            255
+            259
+            263
+            267
+            278
+            303
+            306
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\plugins\src\usb\DunUsbConfig.cpp">
+            48
+            50
+            74
+            77
+            85
+            93
+            104
+            114
+            117
+            124
+            134
+            137
+            143
+            168
+            175
+            198
+            203
+            210
+            216
+            220
+            231
+            238
+            245
+            283
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\devmodel\src\btregistryobserver.cpp">
+            122
+            160
+            183
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\inc\debug.h">
+            74
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irbearer\src\iractivatewatcher.cpp">
+            81
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btpsmplugin\src\btpsmplugin.cpp">
+            142
+            146
+            189
+            220
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbui\inc\USBClassChangeUIDebug.h">
+            84
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsaController.cpp">
+            72
+            85
+            124
+            141
+            183
+            197
+            223
+            242
+            245
+            262
+            270
+            293
+            312
+            315
+            335
+            354
+            357
+            417
+            440
+            507
+            511
+            516
+            521
+            526
+            622
+            634
+            647
+            667
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbosdescriptorhandler\src\cselectedpersonalityproperty.cpp">
+            31
+            47
+            54
+            76
+            90
+            103
+            125
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbremotepersonality\inc\debug.h">
+            71
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvaccman.cpp">
+            243
+            258
+            285
+            287
+            374
+            397
+            401
+            415
+            477
+            508
+            523
+            538
+            555
+            581
+            619
+            641
+            711
+            766
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btpbap\src\Pbapplugin.cpp">
+            74
+            80
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunUpstream.cpp">
+            52
+            54
+            88
+            93
+            107
+            110
+            118
+            124
+            134
+            137
+            142
+            147
+            157
+            161
+            170
+            175
+            183
+            194
+            223
+            228
+            255
+            259
+            266
+            270
+            281
+            286
+            291
+            294
+            301
+            311
+            324
+            333
+            336
+            345
+            356
+            383
+            407
+            426
+            432
+            443
+            451
+            456
+            467
+            474
+            484
+            491
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\locod\inc\debug.h">
+            74
+            89
+            100
+            133
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\src\imageprintuiappui.cpp">
+            59
+            96
+            126
+            143
+            154
+            158
+            166
+            170
+            182
+            192
+            193
+            194
+            197
+            202
+            207
+            211
+            219
+            220
+            221
+            222
+            230
+            233
+            240
+            247
+            250
+            253
+            262
+            268
+            273
+            276
+            281
+            294
+            295
+            299
+            303
+            308
+            317
+            322
+            328
+            334
+            339
+            343
+            348
+            352
+            356
+            359
+            367
+            372
+            381
+            386
+            391
+            394
+            406
+            416
+            417
+            421
+            432
+            437
+            441
+            446
+            451
+            457
+            460
+            465
+            470
+            476
+            480
+            485
+            490
+            500
+            510
+            513
+            519
+            525
+            531
+            536
+            547
+            556
+            565
+            574
+            591
+            605
+            619
+            626
+            636
+            653
+            663
+            675
+            680
+            689
+            704
+            714
+            722
+            723
+            734
+            747
+            753
+            758
+            771
+            793
+            804
+            814
+            833
+            834
+            836
+            845
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidengplugin\src\genericactive.cpp">
+            49
+            70
+            75
+            81
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\dpsxmlgenerator.cpp">
+            41
+            52
+            62
+            73
+            82
+            110
+            114
+            123
+            128
+            137
+            142
+            151
+            157
+            167
+            186
+            195
+            201
+            212
+            222
+            232
+            240
+            249
+            256
+            267
+            300
+            310
+            316
+            326
+            333
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicdusbconnector.cpp">
+            65
+            76
+            84
+            89
+            100
+            108
+            118
+            121
+            127
+            150
+            158
+            165
+            172
+            179
+            186
+            193
+            201
+            208
+            217
+            221
+            232
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunAtCmdHandler.cpp">
+            92
+            106
+            115
+            117
+            120
+            138
+            142
+            152
+            156
+            164
+            174
+            180
+            190
+            196
+            217
+            224
+            230
+            253
+            276
+            285
+            288
+            296
+            307
+            312
+            318
+            326
+            336
+            338
+            348
+            360
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbui\USBClassChangeUIPlugin\inc\USBClassChangeUIPluginDebug.h">
+            78
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\inc\ir\debug.h">
+            77
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\UsbWatcher.cpp">
+            67
+            83
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\src\emptyview.cpp">
+            45
+            47
+            57
+            60
+            71
+            75
+            86
+            92
+            103
+            115
+            117
+            129
+            134
+            144
+            151
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNotifierAccFw.cpp">
+            34
+            57
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\ATCodec\atcparam.cpp">
+            43
+            50
+            126
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunChanMan.cpp">
+            54
+            56
+            65
+            76
+            85
+            87
+            97
+            109
+            122
+            128
+            136
+            149
+            158
+            167
+            171
+            181
+            191
+            195
+            205
+            215
+            219
+            232
+            253
+            260
+            266
+            274
+            279
+            283
+            295
+            307
+            311
+            337
+            342
+            351
+            356
+            366
+            369
+            386
+            397
+            402
+            411
+            420
+            424
+            432
+            440
+            442
+            453
+            467
+            488
+            499
+            505
+            535
+            545
+            550
+            563
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTServiceAPI.cpp">
+            47
+            68
+            73
+            83
+            87
+            97
+            102
+            105
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\plugins\src\ir\DunIrPlugin.cpp">
+            45
+            47
+            65
+            68
+            75
+            83
+            87
+            98
+            103
+            106
+            117
+            122
+            125
+            135
+            140
+            146
+            151
+            160
+            172
+            195
+            204
+            220
+            231
+            234
+            239
+            249
+            256
+            263
+            270
+            277
+            282
+            285
+            299
+            303
+            307
+            309
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthidsession.cpp">
+            130
+            159
+            180
+            264
+            276
+            280
+            305
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudiostreamer\src\btaudiostreamsender.cpp">
+            34
+            36
+            45
+            48
+            51
+            54
+            61
+            70
+            75
+            85
+            108
+            119
+            121
+            131
+            136
+            143
+            165
+            175
+            177
+            187
+            190
+            198
+            207
+            213
+            214
+            229
+            233
+            241
+            244
+            257
+            270
+            274
+            277
+            286
+            300
+            302
+            313
+            322
+            326
+            329
+            332
+            340
+            347
+            356
+            361
+            365
+            374
+            376
+            377
+            415
+            420
+            428
+            430
+            440
+            451
+            452
+            457
+            460
+            477
+            483
+            485
+            490
+            495
+            511
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidkbdsettings\src\bthidcenrepwatcher.cpp">
+            52
+            59
+            79
+            84
+            94
+            106
+            116
+            126
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvaccstateattached.cpp">
+            61
+            154
+            171
+            403
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStateConnecting.cpp">
+            70
+            114
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\src\nptpdeviceinfo.cpp">
+            60
+            161
+            171
+            183
+            225
+            323
+            333
+            392
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\socketinitiator.cpp">
+            69
+            81
+            125
+            143
+            191
+            200
+            217
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\src\capabilitymanager.cpp">
+            42
+            59
+            70
+            98
+            110
+            113
+            120
+            126
+            127
+            129
+            131
+            143
+            158
+            168
+            174
+            179
+            186
+            191
+            194
+            205
+            210
+            220
+            225
+            235
+            242
+            251
+            272
+            274
+            283
+            309
+            312
+            322
+            326
+            331
+            337
+            342
+            348
+            357
+            374
+            377
+            415
+            423
+            424
+            435
+            442
+            445
+            457
+            465
+            466
+            477
+            484
+            487
+            498
+            505
+            506
+            516
+            524
+            533
+            538
+            550
+            564
+            565
+            568
+            574
+            588
+            589
+            592
+            599
+            613
+            614
+            617
+            623
+            643
+            653
+            672
+            679
+            684
+            688
+            697
+            712
+            729
+            745
+            748
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNInqNotifier.cpp">
+            63
+            66
+            75
+            91
+            110
+            120
+            126
+            136
+            146
+            149
+            153
+            162
+            164
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbuinotif\src\usbuinotifcrwatcher.cpp">
+            36
+            53
+            56
+            85
+            98
+            106
+            118
+            124
+            134
+            136
+            146
+            156
+            167
+            174
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSURefObjectResolver.cpp">
+            87
+            90
+            101
+            104
+            120
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicdbaseclass.cpp">
+            52
+            70
+            96
+            126
+            136
+            151
+            157
+            162
+            177
+            189
+            201
+            212
+            238
+            248
+            249
+            262
+            267
+            284
+            289
+            324
+            326
+            331
+            341
+            355
+            360
+            366
+            376
+            379
+            382
+            387
+            389
+            401
+            404
+            410
+            413
+            425
+            427
+            438
+            442
+            452
+            468
+            478
+            481
+            492
+            500
+            511
+            519
+            521
+            532
+            551
+            560
+            574
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmcphonestatus.cpp">
+            212
+            350
+            369
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUIViewsCommonUtils.cpp">
+            52
+            68
+            92
+            112
+            113
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmssniffm.cpp">
+            58
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbui\USBClassChangeUIPlugin\src\USBClassChangeUIPluginView.cpp">
+            49
+            59
+            72
+            82
+            94
+            122
+            131
+            171
+            197
+            242
+            256
+            274
+            283
+            293
+            303
+            309
+            424
+            428
+            439
+            455
+            466
+            497
+            509
+            549
+            562
+            588
+            598
+            608
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapSocketHandler.cpp">
+            60
+            68
+            98
+            113
+            124
+            169
+            192
+            213
+            225
+            234
+            243
+            256
+            312
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbui\USBClassChangeUIPlugin\src\USBClassChangeUIPluginCRWatcher.cpp">
+            40
+            57
+            60
+            89
+            102
+            110
+            122
+            128
+            138
+            140
+            150
+            160
+            171
+            178
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicdusbwriter.cpp">
+            62
+            74
+            84
+            98
+            114
+            136
+            147
+            153
+            157
+            177
+            178
+            179
+            188
+            189
+            190
+            203
+            213
+            222
+            223
+            224
+            225
+            235
+            240
+            245
+            252
+            258
+            271
+            282
+            286
+            288
+            292
+            295
+            337
+            351
+            352
+            353
+            354
+            399
+            411
+            413
+            414
+            418
+            419
+            420
+            424
+            428
+            434
+            440
+            443
+            447
+            457
+            460
+            470
+            477
+            487
+            488
+            492
+            507
+            510
+            519
+            532
+            554
+            564
+            567
+            571
+            574
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\src\imageprintuidocument.cpp">
+            47
+            52
+            55
+            65
+            71
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\dpstransaction.cpp">
+            54
+            69
+            78
+            82
+            91
+            101
+            110
+            111
+            123
+            132
+            142
+            158
+            167
+            187
+            234
+            243
+            259
+            264
+            290
+            293
+            300
+            303
+            349
+            352
+            359
+            365
+            375
+            395
+            415
+            422
+            442
+            455
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSBPPObjectRequest.cpp">
+            80
+            92
+            115
+            121
+            130
+            140
+            153
+            161
+            166
+            175
+            181
+            186
+            195
+            203
+            208
+            215
+            232
+            240
+            247
+            272
+            286
+            295
+            304
+            311
+            322
+            331
+            343
+            352
+            365
+            409
+            413
+            449
+            450
+            471
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\plugins\src\bt\DunBtPlugin.cpp">
+            46
+            48
+            58
+            61
+            66
+            84
+            87
+            93
+            105
+            115
+            120
+            123
+            134
+            139
+            142
+            152
+            196
+            205
+            208
+            224
+            234
+            245
+            255
+            263
+            268
+            278
+            286
+            291
+            303
+            314
+            318
+            345
+            349
+            359
+            367
+            377
+            384
+            391
+            398
+            405
+            410
+            413
+            429
+            439
+            446
+            470
+            476
+            484
+            493
+            500
+            520
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\src\nptpstack.cpp">
+            69
+            77
+            113
+            122
+            130
+            135
+            147
+            158
+            239
+            243
+            246
+            286
+            290
+            293
+            305
+            326
+            345
+            351
+            355
+            368
+            376
+            431
+            444
+            656
+            667
+            700
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbdevcon\src\cusbstatewatcher.cpp">
+            30
+            111
+            120
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\client\src\dunactive.cpp">
+            61
+            63
+            72
+            78
+            102
+            104
+            123
+            126
+            136
+            137
+            148
+            149
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmcbattery.cpp">
+            86
+            93
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\src\nptplistcontrol.cpp">
+            174
+            178
+            179
+            180
+            184
+            188
+            195
+            199
+            208
+            209
+            210
+            215
+            219
+            227
+            231
+            245
+            260
+            270
+            285
+            296
+            299
+            300
+            304
+            317
+            327
+            341
+            346
+            361
+            367
+            371
+            381
+            429
+            442
+            461
+            467
+            512
+            609
+            612
+            623
+            644
+            725
+            913
+            931
+            1006
+            1009
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvaccstatequery.cpp">
+            47
+            100
+            166
+            171
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNGenericInfoNotifier.cpp">
+            90
+            93
+            108
+            202
+            268
+            277
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\socketreader.cpp">
+            82
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStreamerController.cpp">
+            88
+            131
+            138
+            148
+            174
+            191
+            202
+            223
+            229
+            285
+            330
+            368
+            406
+            433
+            460
+            479
+            481
+            491
+            522
+            546
+            547
+            552
+            561
+            564
+            566
+            576
+            604
+            623
+            646
+            647
+            648
+            649
+            650
+            651
+            652
+            664
+            678
+            699
+            700
+            701
+            719
+            721
+            723
+            724
+            726
+            727
+            735
+            736
+            761
+            769
+            782
+            796
+            804
+            807
+            818
+            837
+            885
+            891
+            897
+            903
+            907
+            933
+            983
+            984
+            987
+            989
+            1003
+            1009
+            1013
+            1027
+            1033
+            1039
+            1045
+            1049
+            1064
+            1070
+            1076
+            1082
+            1086
+            1112
+            1140
+            1146
+            1150
+            1304
+            1315
+            1329
+            1332
+            1359
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\src\requestmanager.cpp">
+            54
+            63
+            102
+            105
+            114
+            115
+            125
+            126
+            132
+            137
+            142
+            147
+            152
+            157
+            161
+            167
+            170
+            182
+            185
+            189
+            194
+            206
+            208
+            217
+            241
+            252
+            258
+            264
+            268
+            279
+            292
+            307
+            313
+            318
+            325
+            331
+            339
+            355
+            359
+            364
+            368
+            376
+            379
+            384
+            397
+            401
+            406
+            410
+            435
+            439
+            449
+            455
+            460
+            465
+            468
+            479
+            495
+            507
+            517
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunAtUrcHandler.cpp">
+            57
+            64
+            73
+            76
+            83
+            93
+            96
+            102
+            125
+            131
+            151
+            156
+            161
+            169
+            188
+            190
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSBIPController.cpp">
+            79
+            96
+            129
+            149
+            157
+            162
+            172
+            185
+            196
+            207
+            217
+            255
+            264
+            308
+            315
+            324
+            350
+            414
+            445
+            478
+            494
+            503
+            538
+            550
+            672
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\lcstylustap\inc\debug.h">
+            74
+            89
+            100
+            133
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btrcc\btrccVolumeLevelController.cpp">
+            108
+            113
+            151
+            164
+            168
+            180
+            187
+            217
+            223
+            229
+            235
+            242
+            281
+            288
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\atext\src\genericactive.cpp">
+            49
+            70
+            75
+            77
+            82
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btbearer\src\btpluginnotifier.cpp">
+            67
+            69
+            77
+            151
+            162
+            170
+            184
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengsettings\src\btengsettings.cpp">
+            57
+            222
+            225
+            237
+            247
+            257
+            269
+            274
+            350
+            352
+            376
+            386
+            388
+            423
+            436
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbuinotif\src\USBNotifier.cpp">
+            49
+            65
+            83
+            92
+            110
+            120
+            131
+            142
+            156
+            164
+            174
+            176
+            199
+            210
+            220
+            232
+            238
+            245
+            255
+            262
+            273
+            287
+            290
+            300
+            303
+            305
+            308
+            310
+            312
+            317
+            320
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmcmobileline.cpp">
+            109
+            117
+            153
+            229
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\src\nptpobject.cpp">
+            48
+            60
+            136
+            138
+            148
+            157
+            167
+            169
+            179
+            188
+            223
+            240
+            268
+            286
+            311
+            318
+            320
+            401
+            406
+            420
+            442
+            452
+            454
+            474
+            480
+            484
+            492
+            505
+            608
+            619
+            622
+            633
+            663
+            676
+            678
+            682
+            686
+            688
+            691
+            695
+            704
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\server\src\DunServer.cpp">
+            42
+            52
+            58
+            82
+            98
+            113
+            123
+            127
+            138
+            142
+            153
+            155
+            165
+            169
+            172
+            176
+            187
+            194
+            198
+            214
+            223
+            241
+            250
+            257
+            261
+            265
+            269
+            273
+            276
+            281
+            293
+            310
+            313
+            318
+            321
+            331
+            350
+            361
+            373
+            376
+            377
+            389
+            401
+            404
+            408
+            412
+            413
+            425
+            437
+            440
+            444
+            453
+            457
+            458
+            469
+            473
+            479
+            490
+            492
+            503
+            515
+            518
+            525
+            533
+            539
+            542
+            543
+            554
+            558
+            561
+            572
+            576
+            579
+            595
+            607
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\debug.h">
+            77
+            85
+            100
+            128
+            136
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\src\ptpserver.cpp">
+            51
+            56
+            67
+            73
+            83
+            95
+            111
+            116
+            119
+            130
+            143
+            153
+            156
+            161
+            171
+            173
+            177
+            180
+            191
+            200
+            213
+            218
+            229
+            241
+            254
+            257
+            267
+            280
+            290
+            300
+            322
+            332
+            338
+            342
+            345
+            350
+            360
+            368
+            377
+            388
+            402
+            413
+            416
+            430
+            442
+            443
+            457
+            460
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\CUsbWatcher.cpp">
+            63
+            73
+            76
+            79
+            80
+            85
+            89
+            111
+            125
+            164
+            197
+            212
+            229
+            234
+            277
+            282
+            298
+            311
+            347
+            356
+            367
+            377
+            382
+            394
+            406
+            444
+            467
+            475
+            492
+            505
+            513
+            524
+            532
+            544
+            586
+            588
+            608
+            626
+            658
+            675
+            704
+            716
+            730
+            736
+            745
+            757
+            768
+            784
+            792
+            802
+            814
+            826
+            835
+            838
+            854
+            859
+            870
+            873
+            883
+            891
+            901
+            912
+            926
+            979
+            985
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\src\ptpmsghandler.cpp">
+            42
+            45
+            57
+            68
+            99
+            100
+            101
+            102
+            103
+            104
+            105
+            106
+            107
+            108
+            110
+            126
+            130
+            140
+            144
+            147
+            149
+            160
+            170
+            173
+            181
+            183
+            187
+            190
+            203
+            212
+            214
+            220
+            224
+            236
+            242
+            252
+            262
+            264
+            268
+            274
+            277
+            287
+            290
+            295
+            300
+            303
+            310
+            319
+            324
+            331
+            337
+            349
+            359
+            366
+            376
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStateConfiguring.cpp">
+            79
+            86
+            155
+            176
+            196
+            205
+            216
+            221
+            229
+            230
+            231
+            232
+            233
+            234
+            235
+            238
+            247
+            262
+            290
+            299
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbdevcon\inc\debug.h">
+            71
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapSocketStateCheckSecurity.cpp">
+            40
+            51
+            74
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunTransUtils.cpp">
+            75
+            80
+            89
+            109
+            118
+            133
+            148
+            155
+            160
+            168
+            173
+            177
+            189
+            196
+            201
+            204
+            217
+            224
+            229
+            232
+            244
+            251
+            256
+            259
+            271
+            278
+            283
+            286
+            295
+            300
+            307
+            320
+            330
+            335
+            342
+            352
+            362
+            367
+            373
+            386
+            396
+            408
+            419
+            428
+            431
+            447
+            453
+            457
+            464
+            474
+            477
+            483
+            492
+            504
+            613
+            629
+            634
+            667
+            677
+            718
+            733
+            737
+            743
+            752
+            764
+            780
+            784
+            795
+            799
+            805
+            811
+            816
+            841
+            852
+            856
+            863
+            869
+            874
+            898
+            909
+            915
+            920
+            925
+            949
+            960
+            964
+            969
+            975
+            980
+            983
+            998
+            1014
+            1020
+            1031
+            1041
+            1045
+            1056
+            1059
+            1071
+            1075
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\socketlistener.cpp">
+            79
+            89
+            125
+            158
+            173
+            182
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\dpsscriptreceiver.cpp">
+            39
+            52
+            55
+            64
+            66
+            75
+            82
+            115
+            131
+            146
+            149
+            158
+            160
+            169
+            173
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\ecom\BtnotifWrapper.cpp">
+            77
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\plugins\src\usb\DunUsbPlugin.cpp">
+            54
+            56
+            74
+            77
+            83
+            102
+            111
+            113
+            120
+            124
+            133
+            138
+            147
+            151
+            161
+            166
+            173
+            197
+            201
+            211
+            214
+            228
+            234
+            237
+            247
+            250
+            279
+            300
+            305
+            308
+            319
+            324
+            327
+            337
+            340
+            347
+            361
+            371
+            387
+            398
+            406
+            411
+            422
+            430
+            435
+            445
+            454
+            459
+            470
+            473
+            478
+            488
+            495
+            502
+            509
+            516
+            521
+            524
+            535
+            538
+            545
+            552
+            557
+            568
+            571
+            580
+            588
+            602
+            608
+            621
+            628
+            641
+            648
+            658
+            673
+            684
+            691
+            705
+            719
+            722
+            733
+            740
+            748
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapStateAPDU.cpp">
+            37
+            43
+            48
+            53
+            63
+            65
+            82
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irbearer\src\irtimer.cpp">
+            85
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSController.cpp">
+            44
+            54
+            59
+            71
+            73
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuibluetooth\src\btmtmuidata.cpp">
+            37
+            48
+            51
+            60
+            66
+            77
+            89
+            142
+            153
+            168
+            188
+            209
+            230
+            251
+            273
+            345
+            369
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuiinfrared\src\irmtmuidll.cpp">
+            38
+            49
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapStateConnect.cpp">
+            45
+            84
+            124
+            138
+            169
+            176
+            185
+            193
+            205
+            209
+            214
+            225
+            237
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicdcontrolhandler.cpp">
+            64
+            80
+            90
+            102
+            112
+            114
+            124
+            128
+            139
+            146
+            156
+            161
+            163
+            184
+            188
+            191
+            195
+            196
+            201
+            205
+            211
+            215
+            233
+            235
+            246
+            254
+            266
+            281
+            285
+            294
+            304
+            307
+            319
+            321
+            324
+            335
+            338
+            348
+            359
+            369
+            373
+            378
+            379
+            380
+            384
+            385
+            386
+            391
+            396
+            400
+            410
+            437
+            438
+            441
+            454
+            464
+            469
+            481
+            483
+            496
+            497
+            499
+            509
+            511
+            515
+            518
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usblocodplugin\src\usblcdactive.cpp">
+            77
+            83
+            93
+            98
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbmscpersonality\src\CUsbMscPersonalityTimer.cpp">
+            31
+            38
+            45
+            52
+            62
+            68
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacactive.cpp">
+            55
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmrfcommsock.cpp">
+            215
+            223
+            232
+            254
+            275
+            290
+            301
+            319
+            325
+            330
+            335
+            340
+            345
+            349
+            354
+            359
+            364
+            369
+            374
+            406
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvaccstatedisconnect.cpp">
+            40
+            61
+            65
+            116
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmcactive.cpp">
+            81
+            91
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\CUsbWatcherSession.cpp">
+            43
+            59
+            69
+            108
+            112
+            119
+            131
+            138
+            142
+            153
+            159
+            182
+            201
+            219
+            230
+            265
+            271
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvactive.cpp">
+            58
+            74
+            80
+            87
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSUPassKeyRequest.cpp">
+            44
+            49
+            58
+            63
+            72
+            80
+            90
+            99
+            112
+            123
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\BTAccServer.cpp">
+            174
+            184
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsglobalprogressdialog.cpp">
+            228
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSUImageConverter.cpp">
+            54
+            60
+            84
+            89
+            98
+            104
+            116
+            125
+            134
+            171
+            183
+            198
+            207
+            211
+            220
+            244
+            254
+            292
+            301
+            329
+            338
+            348
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\dpsstatemachine.cpp">
+            42
+            56
+            68
+            79
+            81
+            90
+            99
+            108
+            113
+            122
+            130
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStateConnected.cpp">
+            106
+            162
+            201
+            256
+            292
+            298
+            309
+            314
+            320
+            321
+            322
+            323
+            324
+            325
+            326
+            330
+            338
+            349
+            360
+            361
+            407
+            440
+            451
+            472
+            478
+            485
+            513
+            518
+            531
+            554
+            567
+            578
+            625
+            653
+            662
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudiostreamer\src\btaudiostreamer.cpp">
+            35
+            36
+            45
+            50
+            60
+            61
+            70
+            72
+            81
+            88
+            95
+            98
+            108
+            111
+            115
+            122
+            132
+            140
+            149
+            155
+            162
+            165
+            171
+            181
+            183
+            189
+            191
+            196
+            197
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilspropertynotifier.cpp">
+            33
+            38
+            54
+            65
+            74
+            77
+            82
+            86
+            97
+            106
+            116
+            123
+            126
+            128
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbuinotif\src\USBUINQueriesNotifierMdrv.cpp">
+            46
+            83
+            88
+            100
+            119
+            131
+            159
+            169
+            200
+            210
+            219
+            230
+            255
+            263
+            268
+            271
+            283
+            290
+            298
+            307
+            316
+            320
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapStateDisconnect.cpp">
+            39
+            52
+            62
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunTransporter.cpp">
+            52
+            54
+            64
+            76
+            87
+            90
+            94
+            106
+            118
+            130
+            133
+            137
+            147
+            148
+            164
+            167
+            174
+            180
+            196
+            202
+            208
+            214
+            219
+            228
+            238
+            241
+            255
+            264
+            269
+            276
+            284
+            291
+            296
+            306
+            311
+            324
+            329
+            341
+            347
+            355
+            366
+            372
+            382
+            387
+            394
+            402
+            409
+            413
+            424
+            429
+            436
+            443
+            447
+            464
+            473
+            484
+            499
+            509
+            521
+            529
+            538
+            550
+            558
+            573
+            578
+            588
+            596
+            607
+            617
+            621
+            647
+            652
+            661
+            665
+            677
+            687
+            707
+            716
+            722
+            726
+            736
+            739
+            759
+            765
+            771
+            774
+            785
+            789
+            803
+            806
+            810
+            821
+            825
+            828
+            838
+            841
+            847
+            850
+            860
+            874
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\layouts\inc\hidlayoutplugininterface.h">
+            94
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbremotepersonality\src\cremotepersonalityhandler.cpp">
+            89
+            115
+            127
+            143
+            157
+            172
+            177
+            220
+            238
+            250
+            256
+            267
+            273
+            281
+            300
+            331
+            344
+            352
+            368
+            383
+            392
+            398
+            413
+            419
+            454
+            460
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStateStreaming.cpp">
+            80
+            100
+            129
+            135
+            141
+            167
+            171
+            187
+            210
+            214
+            235
+            239
+            256
+            261
+            272
+            279
+            299
+            306
+            334
+            364
+            396
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\src\ir\obexsmirdaconnection.cpp">
+            55
+            59
+            66
+            72
+            75
+            84
+            103
+            136
+            142
+            154
+            161
+            167
+            180
+            182
+            196
+            205
+            219
+            231
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\src\ptpsession.cpp">
+            38
+            41
+            52
+            54
+            64
+            67
+            70
+            80
+            82
+            92
+            146
+            166
+            168
+            178
+            184
+            194
+            200
+            210
+            211
+            217
+            227
+            231
+            241
+            243
+            253
+            289
+            292
+            296
+            309
+            319
+            329
+            331
+            337
+            348
+            358
+            360
+            365
+            367
+            382
+            395
+            405
+            411
+            424
+            436
+            442
+            444
+            455
+            458
+            463
+            465
+            475
+            482
+            484
+            494
+            498
+            503
+            505
+            515
+            528
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthidconnection.cpp">
+            124
+            152
+            186
+            198
+            224
+            245
+            286
+            292
+            298
+            317
+            345
+            374
+            410
+            457
+            493
+            704
+            735
+            744
+            760
+            767
+            771
+            793
+            807
+            829
+            873
+            901
+            1057
+            1114
+            1144
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidengplugin\src\bthidengplugin.cpp">
+            170
+            204
+            285
+            347
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapStateIdle.cpp">
+            40
+            53
+            62
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapSocketStateListen.cpp">
+            40
+            61
+            69
+            79
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmsreconnect.cpp">
+            52
+            121
+            180
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvpluginman.cpp">
+            104
+            119
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\atextagent.cpp">
+            50
+            82
+            88
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\src\bt\obexsmbtconnection.cpp">
+            54
+            59
+            68
+            74
+            80
+            86
+            91
+            101
+            121
+            154
+            160
+            163
+            167
+            171
+            181
+            214
+            234
+            236
+            242
+            249
+            257
+            272
+            284
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmcprotocol.cpp">
+            192
+            203
+            327
+            334
+            341
+            388
+            397
+            763
+            770
+            775
+            880
+            1073
+            1098
+            1121
+            1148
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmonobearer\bmbcmdlistener.cpp">
+            58
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\dpsfile.cpp">
+            37
+            51
+            53
+            62
+            64
+            74
+            77
+            86
+            98
+            108
+            114
+            123
+            129
+            138
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\keyboard\src\keyboard.cpp">
+            65
+            74
+            100
+            128
+            148
+            187
+            199
+            276
+            354
+            366
+            379
+            388
+            407
+            444
+            475
+            493
+            504
+            524
+            583
+            584
+            593
+            598
+            605
+            638
+            669
+            670
+            695
+            725
+            810
+            834
+            885
+            898
+            942
+            961
+            1014
+            1022
+            1034
+            1047
+            1073
+            1075
+            1092
+            1160
+            1201
+            1227
+            1237
+            1242
+            1254
+            1280
+            1374
+            1392
+            1404
+            1417
+            1424
+            1436
+            1443
+            1466
+            1478
+            1486
+            1494
+            1502
+            1510
+            1518
+            1542
+            1552
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\src\notetimer.cpp">
+            37
+            60
+            62
+            81
+            93
+            98
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSBPPController.cpp">
+            60
+            88
+            125
+            139
+            144
+            153
+            176
+            192
+            199
+            208
+            218
+            224
+            233
+            254
+            263
+            275
+            284
+            301
+            310
+            325
+            329
+            338
+            354
+            387
+            394
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\CUsbPersonalityNotifier.cpp">
+            41
+            61
+            81
+            139
+            143
+            150
+            165
+            201
+            230
+            235
+            239
+            249
+            258
+            271
+            275
+            292
+            301
+            308
+            312
+            325
+            334
+            347
+            358
+            367
+            387
+            395
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\vMessageHandler.cpp">
+            46
+            56
+            89
+            100
+            144
+            159
+            174
+            222
+            249
+            353
+            370
+            394
+            417
+            437
+            512
+            522
+            614
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexserviceirsend\src\IRSSProvider.cpp">
+            107
+            115
+            124
+            152
+            158
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btrcc\btrccplayerstarter.cpp">
+            107
+            122
+            131
+            203
+            267
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\opp\inc\debug.h">
+            82
+            97
+            108
+            141
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengsrvpluginmgr.cpp">
+            171
+            253
+            262
+            273
+            367
+            390
+            407
+            413
+            439
+            460
+            482
+            496
+            527
+            545
+            555
+            592
+            618
+            679
+            717
+            751
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapSocketStateRecv.cpp">
+            42
+            58
+            59
+            70
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmsconnect.cpp">
+            58
+            141
+            162
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengdiscovery\src\btengdevicesearch.cpp">
+            197
+            218
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\inc\usb\debug.h">
+            77
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthidserver.cpp">
+            146
+            154
+            162
+            184
+            190
+            197
+            202
+            205
+            213
+            234
+            254
+            339
+            362
+            447
+            453
+            460
+            497
+            537
+            564
+            592
+            657
+            686
+            694
+            705
+            740
+            842
+            880
+            1052
+            1123
+            1180
+            1326
+            1401
+            1440
+            1512
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStateConfigured.cpp">
+            71
+            103
+            152
+            203
+            253
+            257
+            275
+            296
+            325
+            344
+            361
+            378
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmsopenaudio.cpp">
+            49
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanserver\src\SrcsServiceManager.cpp">
+            82
+            172
+            177
+            182
+            187
+            193
+            207
+            216
+            219
+            233
+            239
+            245
+            251
+            263
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbui\src\USBClassChangeUIDocument.cpp">
+            33
+            43
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSOPPController.cpp">
+            47
+            55
+            78
+            87
+            106
+            115
+            121
+            130
+            144
+            153
+            162
+            172
+            178
+            185
+            203
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunStream.cpp">
+            38
+            40
+            67
+            79
+            84
+            90
+            96
+            99
+            111
+            123
+            128
+            134
+            140
+            143
+            153
+            156
+            161
+            165
+            175
+            178
+            191
+            194
+            205
+            208
+            217
+            220
+            230
+            261
+            271
+            288
+            292
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\server\src\DunSession.cpp">
+            40
+            42
+            51
+            57
+            78
+            83
+            89
+            96
+            100
+            119
+            122
+            134
+            138
+            142
+            145
+            157
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\dpsoperation.cpp">
+            48
+            69
+            81
+            99
+            129
+            130
+            144
+            145
+            155
+            156
+            166
+            167
+            176
+            177
+            185
+            186
+            194
+            195
+            206
+            220
+            241
+            253
+            259
+            272
+            290
+            305
+            320
+            332
+            351
+            372
+            396
+            403
+            417
+            452
+            458
+            474
+            482
+            496
+            511
+            515
+            536
+            570
+            574
+            579
+            593
+            696
+            700
+            714
+            741
+            827
+            852
+            948
+            953
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunUtils.cpp">
+            34
+            39
+            45
+            48
+            58
+            62
+            68
+            71
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapPlugin.cpp">
+            63
+            108
+            138
+            172
+            208
+            229
+            240
+            251
+            272
+            326
+            355
+            370
+            381
+            392
+            403
+            414
+            426
+            438
+            456
+            466
+            478
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsglobaldialog.cpp">
+            85
+            108
+            152
+            166
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\inc\debug.h">
+            76
+            91
+            102
+            139
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\atext\src\atextclient.cpp">
+            56
+            177
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanserver\src\obexsm.cpp">
+            53
+            65
+            79
+            96
+            120
+            122
+            132
+            143
+            153
+            159
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\inc\debug.h">
+            75
+            90
+            101
+            110
+            143
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidclient\src\bthidclient.cpp">
+            48
+            179
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbui\USBClassChangeUIPlugin\src\USBClassChangeUIPluginContainer.cpp">
+            42
+            58
+            97
+            118
+            125
+            135
+            140
+            150
+            155
+            165
+            180
+            204
+            216
+            230
+            255
+            261
+            270
+            283
+            322
+            334
+            338
+            347
+            352
+            382
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmscloseaudio.cpp">
+            47
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\manager\src\shutdown.cpp">
+            35
+            46
+            59
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\btnpaireddevsettnotifier.cpp">
+            102
+            113
+            124
+            140
+            146
+            176
+            200
+            212
+            223
+            237
+            247
+            257
+            267
+            276
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irappgsplugin\src\irkeywatcher.cpp">
+            71
+            108
+            112
+            141
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicebtsend\src\BTSSProvider.cpp">
+            57
+            80
+            111
+            115
+            121
+            157
+            163
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuibluetooth\src\btmtmuidll.cpp">
+            38
+            49
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\pictbridge.cpp">
+            55
+            80
+            87
+            96
+            101
+            110
+            133
+            142
+            147
+            156
+            158
+            167
+            179
+            189
+            201
+            213
+            222
+            229
+            239
+            252
+            261
+            275
+            284
+            311
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanclient\inc\debug.h">
+            82
+            97
+            108
+            141
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengsrvsession.cpp">
+            108
+            249
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunSignalNotify.cpp">
+            45
+            47
+            56
+            66
+            77
+            80
+            86
+            92
+            95
+            106
+            109
+            115
+            121
+            124
+            134
+            137
+            148
+            153
+            163
+            166
+            171
+            176
+            177
+            190
+            200
+            203
+            208
+            214
+            235
+            241
+            250
+            256
+            265
+            270
+            274
+            279
+            284
+            288
+            293
+            298
+            303
+            309
+            314
+            318
+            323
+            327
+            336
+            361
+            370
+            383
+            393
+            415
+            417
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanclient\src\ObexSMClient.cpp">
+            59
+            71
+            75
+            101
+            105
+            145
+            159
+            161
+            239
+            249
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStateSuspended.cpp">
+            77
+            104
+            144
+            148
+            165
+            184
+            205
+            246
+            253
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunSignalWaiter.cpp">
+            46
+            48
+            57
+            65
+            76
+            79
+            85
+            91
+            94
+            104
+            107
+            114
+            118
+            128
+            131
+            136
+            143
+            153
+            156
+            161
+            167
+            188
+            194
+            203
+            208
+            218
+            223
+            243
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengdiscovery\src\btengdiscovery.cpp">
+            55
+            158
+            198
+            215
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvrvc.cpp">
+            67
+            68
+            81
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapSession.cpp">
+            41
+            46
+            113
+            121
+            132
+            142
+            151
+            166
+            172
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSUCapabilityResolver.cpp">
+            113
+            116
+            127
+            130
+            293
+            298
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacGavdp.cpp">
+            77
+            81
+            125
+            143
+            169
+            182
+            192
+            200
+            207
+            214
+            226
+            235
+            259
+            292
+            299
+            302
+            334
+            377
+            388
+            391
+            394
+            400
+            403
+            406
+            409
+            413
+            425
+            428
+            431
+            439
+            445
+            473
+            483
+            560
+            573
+            585
+            596
+            608
+            619
+            630
+            641
+            652
+            664
+            672
+            686
+            696
+            707
+            711
+            719
+            729
+            732
+            742
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmccallactive.cpp">
+            114
+            115
+            128
+            187
+            204
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStateIdle.cpp">
+            77
+            86
+            93
+            105
+            115
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irbearer\src\irstatemachine.cpp">
+            109
+            118
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvactivenotifier.cpp">
+            51
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\atext\src\main.cpp">
+            61
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\inc\btNotifDebug.h">
+            79
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNPinNotifier.cpp">
+            109
+            152
+            155
+            158
+            169
+            175
+            198
+            211
+            222
+            256
+            276
+            368
+            378
+            387
+            424
+            458
+            468
+            469
+            485
+            494
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapServerState.cpp">
+            67
+            89
+            106
+            117
+            160
+            190
+            205
+            223
+            242
+            252
+            266
+            273
+            290
+            301
+            312
+            331
+            346
+            357
+            380
+            406
+            425
+            445
+            458
+            517
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\locod\src\locodserviceman.cpp">
+            97
+            107
+            187
+            197
+            201
+            205
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\src\ptpeventsender.cpp">
+            42
+            56
+            67
+            79
+            82
+            101
+            112
+            117
+            126
+            129
+            133
+            140
+            151
+            169
+            181
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUIKeyWatcher.cpp">
+            73
+            78
+            123
+            137
+            148
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsdialog.cpp">
+            75
+            93
+            101
+            108
+            118
+            155
+            163
+            178
+            186
+            193
+            201
+            215
+            223
+            235
+            243
+            262
+            270
+            277
+            285
+            294
+            312
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicdlogger.cpp">
+            111
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\src\settingsitems.cpp">
+            111
+            144
+            156
+            161
+            165
+            179
+            197
+            228
+            248
+            276
+            293
+            308
+            312
+            314
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTServiceParameterList.cpp">
+            58
+            63
+            96
+            131
+            140
+            172
+            199
+            310
+            319
+            332
+            341
+            354
+            390
+            397
+            408
+            425
+            436
+            451
+            464
+            475
+            494
+            502
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStateAborting.cpp">
+            66
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuiinfrared\src\irmtmui.cpp">
+            91
+            104
+            123
+            151
+            187
+            217
+            233
+            241
+            330
+            355
+            429
+            442
+            509
+            525
+            570
+            583
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvaccfwconn.cpp">
+            108
+            133
+            192
+            209
+            226
+            242
+            257
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengconnman\src\btengconnhandler.cpp">
+            174
+            210
+            222
+            228
+            248
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidkbdsettings\src\bthidsettingview.cpp">
+            82
+            90
+            106
+            116
+            153
+            204
+            219
+            247
+            259
+            301
+            348
+            395
+            428
+            443
+            452
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\CUsbWatcherScheduler.cpp">
+            36
+            42
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmstempd.cpp">
+            43
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbosdescriptorhandler\src\cosdescriptorhandler.cpp">
+            88
+            113
+            124
+            137
+            142
+            160
+            180
+            190
+            204
+            213
+            223
+            238
+            244
+            253
+            258
+            272
+            290
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsuilayer.cpp">
+            52
+            78
+            89
+            99
+            110
+            119
+            140
+            151
+            177
+            195
+            221
+            234
+            249
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengsettings\src\btengsettingsnotify.cpp">
+            142
+            187
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdlogger.h">
+            40
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbmscpersonality\src\CUsbActiveMscHandlerMdrv.cpp">
+            58
+            88
+            113
+            116
+            150
+            165
+            179
+            192
+            212
+            245
+            287
+            297
+            323
+            332
+            337
+            349
+            359
+            364
+            380
+            384
+            395
+            433
+            436
+            442
+            449
+            466
+            472
+            498
+            504
+            512
+            519
+            525
+            538
+            559
+            569
+            577
+            585
+            593
+            604
+            609
+            621
+            633
+            639
+            645
+            660
+            686
+            699
+            714
+            729
+            746
+            790
+            805
+            816
+            840
+            847
+            860
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\CUsbActivePersonalityHandler.cpp">
+            59
+            99
+            151
+            188
+            210
+            219
+            236
+            263
+            288
+            303
+            311
+            321
+            332
+            342
+            354
+            370
+            376
+            384
+            400
+            422
+            433
+            493
+            524
+            557
+            569
+            584
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\genericactive.cpp">
+            49
+            70
+            75
+            81
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmsidle.cpp">
+            39
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvaccman_accfw_var.cpp">
+            49
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmsctrl.cpp">
+            60
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNotifier.cpp">
+            67
+            80
+            117
+            128
+            138
+            151
+            162
+            175
+            191
+            246
+            255
+            267
+            275
+            287
+            299
+            302
+            311
+            329
+            341
+            368
+            431
+            432
+            459
+            493
+            504
+            511
+            520
+            579
+            612
+            631
+            638
+            647
+            650
+            683
+            690
+            701
+            702
+            730
+            737
+            821
+            861
+            863
+            875
+            879
+            892
+            912
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintuiprovider\inc\imageprintuidebug.h">
+            78
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsdialogtimer.cpp">
+            46
+            50
+            82
+            87
+            96
+            102
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbui\USBClassChangeUIPlugin\src\USBClassChangeUIPluginModel.cpp">
+            57
+            69
+            80
+            93
+            98
+            109
+            126
+            141
+            145
+            152
+            157
+            166
+            171
+            178
+            188
+            191
+            226
+            228
+            240
+            261
+            269
+            298
+            309
+            324
+            358
+            363
+            374
+            380
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicddatahandler.cpp">
+            62
+            78
+            82
+            92
+            104
+            114
+            132
+            143
+            146
+            155
+            159
+            170
+            184
+            185
+            186
+            211
+            226
+            227
+            228
+            246
+            247
+            248
+            265
+            266
+            267
+            283
+            284
+            285
+            311
+            312
+            313
+            326
+            330
+            340
+            347
+            357
+            358
+            359
+            361
+            367
+            368
+            378
+            384
+            390
+            395
+            401
+            411
+            418
+            426
+            432
+            440
+            455
+            471
+            472
+            473
+            489
+            490
+            491
+            503
+            521
+            533
+            535
+            546
+            548
+            554
+            569
+            573
+            574
+            589
+            597
+            599
+            603
+            606
+            619
+            630
+            633
+            662
+            674
+            680
+            682
+            683
+            689
+            694
+            699
+            708
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\dpsstate.cpp">
+            45
+            56
+            62
+            73
+            97
+            102
+            113
+            114
+            143
+            154
+            163
+            198
+            215
+            226
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\src\ptptimer.cpp">
+            39
+            44
+            56
+            67
+            78
+            88
+            91
+            94
+            99
+            104
+            109
+            114
+            118
+            120
+            129
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\common\debug.h">
+            74
+            89
+            100
+            133
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\src\hidgeneric.cpp">
+            36
+            49
+            61
+            62
+            261
+            275
+            277
+            281
+            283
+            288
+            304
+            318
+            324
+            333
+            340
+            345
+            364
+            367
+            373
+            414
+            419
+            465
+            468
+            517
+            521
+            524
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\manager\src\session.cpp">
+            76
+            90
+            103
+            111
+            118
+            126
+            128
+            136
+            143
+            152
+            162
+            164
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\plugins\src\usb\DunUsbListen.cpp">
+            52
+            54
+            76
+            80
+            86
+            97
+            103
+            113
+            116
+            124
+            149
+            155
+            177
+            181
+            191
+            202
+            207
+            212
+            222
+            228
+            237
+            241
+            250
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNPBAPPinNotifier.cpp">
+            93
+            116
+            126
+            175
+            185
+            194
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapMessage.cpp">
+            193
+            197
+            202
+            211
+            226
+            233
+            240
+            252
+            263
+            280
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacSEPManager.cpp">
+            82
+            112
+            126
+            137
+            145
+            156
+            164
+            175
+            185
+            193
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\src\ptpservermain.cpp">
+            39
+            48
+            60
+            81
+            85
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\src\hidparser.cpp">
+            454
+            469
+            556
+            570
+            574
+            579
+            583
+            604
+            650
+            727
+            782
+            861
+            891
+            922
+            954
+            984
+            1020
+            1073
+            1110
+            1139
+            1163
+            1182
+            1202
+            1228
+            1252
+            1271
+            1294
+            1310
+            1335
+            1367
+            1408
+            1450
+            1472
+            1493
+            1514
+            1535
+            1557
+            1613
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\manager\src\mapping.cpp">
+            132
+            156
+            173
+            181
+            184
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunDataPusher.cpp">
+            45
+            47
+            71
+            74
+            78
+            88
+            91
+            95
+            106
+            109
+            119
+            130
+            133
+            143
+            146
+            152
+            156
+            166
+            169
+            176
+            186
+            190
+            200
+            218
+            231
+            241
+            242
+            265
+            271
+            294
+            297
+            303
+            318
+            322
+            332
+            340
+            344
+            355
+            396
+            406
+            410
+            415
+            417
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbuinotif\src\USBUINCableConnectedNotifier.cpp">
+            64
+            70
+            82
+            91
+            96
+            107
+            112
+            124
+            141
+            151
+            162
+            182
+            213
+            241
+            251
+            263
+            274
+            302
+            312
+            329
+            345
+            358
+            408
+            415
+            426
+            456
+            494
+            526
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmcnumber.cpp">
+            82
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\src\nptpresponder.cpp">
+            34
+            39
+            50
+            55
+            66
+            71
+            82
+            84
+            131
+            136
+            309
+            319
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSBPPServerWait.cpp">
+            52
+            57
+            87
+            92
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\btnssppasskeyentrynotifier.cpp">
+            106
+            132
+            150
+            153
+            158
+            169
+            190
+            196
+            215
+            237
+            250
+            264
+            265
+            329
+            365
+            375
+            384
+            404
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\plugins\src\bt\DunBtListen.cpp">
+            58
+            60
+            92
+            96
+            126
+            129
+            138
+            146
+            155
+            158
+            164
+            191
+            198
+            231
+            239
+            254
+            257
+            267
+            270
+            276
+            283
+            297
+            302
+            310
+            319
+            334
+            342
+            360
+            371
+            379
+            388
+            400
+            419
+            421
+            431
+            434
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\src\usb\obexsmusbconnection.cpp">
+            56
+            66
+            74
+            83
+            101
+            128
+            134
+            137
+            171
+            176
+            180
+            182
+            194
+            207
+            219
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvpowercontrolagent.cpp">
+            65
+            83
+            87
+            104
+            132
+            156
+            203
+            208
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btrcc\btrccLinker.cpp">
+            191
+            201
+            288
+            295
+            323
+            344
+            352
+            380
+            395
+            483
+            492
+            504
+            513
+            528
+            537
+            665
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengsdpdbhandler.cpp">
+            95
+            109
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNInquiryAO.cpp">
+            50
+            58
+            93
+            97
+            102
+            115
+            119
+            130
+            155
+            160
+            171
+            185
+            191
+            199
+            207
+            212
+            227
+            231
+            245
+            249
+            254
+            263
+            267
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengpairobserver.cpp">
+            171
+            197
+            203
+            217
+            278
+            304
+            311
+            356
+            402
+         </file>
+      </problem>
+      <problem name="struct" severity="low">
+         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\pictbridge_api\inc\dpsdefs.h">
+            239
+            407
+            459
+            468
+            477
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbremotepersonality\inc\cremotepersonalityhandler.h">
+            30
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\common\inc\genericserver.h">
+            32
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\inc\CUsbWatcher.h">
+            50
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\inc\BTServiceParameterList.h">
+            32
+            38
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\btengclientserver.h">
+            73
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\inc\BTServiceUtils.h">
+            79
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\inc\dpsparam.h">
+            37
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\inc\dpsdefs.h">
+            239
+            407
+            459
+            468
+            477
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\inc\BTSBPPObjectRequest.h">
+            126
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\inc\settingstables.h">
+            44
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\inc\devui_const.h">
+            48
+            82
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\pictbridge_api\inc\dpsparam.h">
+            37
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\bluetooth_notifier_internal_api\inc\btnotif.h">
+            89
+            95
+            102
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicddatatypes.h">
+            46
+            55
+            63
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdatatypes.h">
+            46
+            55
+            63
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\layouts\inc\layout.h">
+            177
+            218
+            310
+            321
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\manager\inc\mapping.h">
+            44
+            56
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\usb_notifier_api\inc\usbuinotif.h">
+            35
+            43
+            74
+         </file>
+      </problem>
+      <problem name="tclassdestructor" severity="low">
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\dpsxmlstring.cpp">
+            414
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\TUsbPersonalityParams.cpp">
+            40
+         </file>
+      </problem>
+      <problem name="variablenames" severity="low">
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuibluetooth\src\btmtmui.cpp">
+            251
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsmessagehandler.cpp">
+            1110
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSURefObjectResolver.cpp">
+            123
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthidsession.cpp">
+            272
+            330
+         </file>
+      </problem>
+      <problem name="voidparameter" severity="low">
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidengplugin\src\genericactive.cpp">
+            82
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengsrvkeywatcher.cpp">
+            479
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStateSuspended.cpp">
+            166
+            185
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengsettings\src\btengsettings.cpp">
+            381
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengsettings\src\btengsettingsnotify.cpp">
+            188
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacactive.cpp">
+            84
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengdiscovery\src\btengdiscovery.cpp">
+            412
+            414
+            428
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvactive.cpp">
+            88
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmactive.cpp">
+            72
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacState.cpp">
+            335
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\keyboard\src\keyboard.cpp">
+            1468
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacGavdp.cpp">
+            743
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\src\hidparser.cpp">
+            557
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengsrvstate.cpp">
+            144
+            145
+            241
+            242
+            243
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\CUsbWatcherServer.cpp">
+            58
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\BTAccServer.cpp">
+            103
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStateIdle.cpp">
+            116
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengconnman\src\btengpairinghandler.cpp">
+            172
+            173
+            209
+            210
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\bip\src\BIPController.cpp">
+            1035
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\opp\src\oppcontroller.cpp">
+            953
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\btnumcmpnotifier.cpp">
+            144
+            258
+            299
+            341
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengdiscovery\src\btengsdpquery.cpp">
+            252
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStateStreaming.cpp">
+            257
+            273
+            300
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmccallstatus.cpp">
+            424
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTServiceStarter.cpp">
+            838
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\atext\src\main.cpp">
+            72
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStateConfiguring.cpp">
+            156
+            263
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUIKeyWatcher.cpp">
+            138
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvaccstate.cpp">
+            150
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btbearer\src\btpluginnotifier.cpp">
+            78
+            185
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStateConnected.cpp">
+            532
+            568
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNPinNotifier.cpp">
+            141
+            282
+            320
+            327
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btpsmplugin\src\btpsmplugin.cpp">
+            221
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidkbdsettings\src\layoututils.cpp">
+            218
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvaccstateattached.cpp">
+            265
+            301
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengsrvbbconnectionmgr.cpp">
+            298
+            309
+            324
+            339
+            340
+            347
+            363
+            364
+            365
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btrcc\btrccplayerstarter.cpp">
+            150
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmman.cpp">
+            274
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btrcc\btrccVolumeLevelController.cpp">
+            304
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\btnssppasskeyentrynotifier.cpp">
+            139
+            271
+            305
+            359
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNAuthNotifier.cpp">
+            172
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengsrvpluginmgr.cpp">
+            192
+            224
+            362
+            385
+            432
+            434
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengconnman\src\btengconnman.cpp">
+            122
+            281
+            336
+            337
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengserver.cpp">
+            513
+            574
+            600
+            700
+            860
+            1372
+            1386
+            1389
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\atext\src\atextsession.cpp">
+            431
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvsdpquery.cpp">
+            263
+            294
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNotifier.cpp">
+            804
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengregistrycleaner.cpp">
+            208
+            209
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengdiscovery\src\btengdevicesearch.cpp">
+            198
+            219
+            220
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvpowercontrolagent.cpp">
+            110
+            116
+            198
+            199
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvmain.cpp">
+            65
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btrcc\btrccLinker.cpp">
+            202
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidengplugin\src\bthidengplugin.cpp">
+            103
+            110
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengconnman\src\btengconnhandler.cpp">
+            176
+            177
+            182
+            250
+            251
+            252
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthidserver.cpp">
+            340
+            348
+            354
+            355
+            462
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengdevman\src\btengdevman.cpp">
+            245
+            296
+            333
+            366
+            403
+            519
+            531
+            532
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidkbdsettings\src\bthidsettingview.cpp">
+            206
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStateConfigured.cpp">
+            276
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengpairobserver.cpp">
+            218
+            219
+            220
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengdiscovery\src\btengsdpattrparser.cpp">
+            150
+         </file>
+      </problem>
+   </category>
+   <category name="codereview">
+      <problem name="accessArrayElementWithoutCheck" severity="low">
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuibluetooth\src\btmtmui.cpp">
+            171
+            200
+            212
+            404
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNInqUI.cpp">
+            487
+            530
+            782
+            784
+            786
+            788
+            849
+            1083
+            1085
+            1087
+            1088
+            1306
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuiinfrared\src\irmtmui.cpp">
+            176
+            206
+            344
+            367
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuibluetooth\src\btmtmuidata.cpp">
+            132
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthidserver.cpp">
+            884
+            952
+            963
+            1004
+            1027
+            1314
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\BTAccInfo.cpp">
+            156
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuiinfrared\src\irmtmuidata.cpp">
+            147
+         </file>
+      </problem>
+      <problem name="accessArrayElementWithoutCheck2" severity="low">
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapSocketHandler.cpp">
+            114
+            135
+            247
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\src\nptplistcontrol.cpp">
+            188
+            199
+            219
+            231
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbmscpersonality\src\CUsbActiveMscHandlerMdrv.cpp">
+            313
+            482
+            736
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNAuthNotifier.cpp">
+            675
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\dpsxmlgenerator.cpp">
+            270
+            296
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\src\nptpdatahandler.cpp">
+            1246
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\dpstransaction.cpp">
+            148
+            446
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\dpsoperation.cpp">
+            118
+            119
+            120
+            123
+            125
+            127
+            128
+            129
+            130
+            138
+            139
+            140
+            142
+            144
+            145
+            151
+            152
+            153
+            155
+            156
+            163
+            164
+            165
+            166
+            167
+            172
+            173
+            175
+            176
+            177
+            182
+            183
+            184
+            185
+            186
+            191
+            192
+            193
+            194
+            195
+            199
+            200
+            234
+            310
+            316
+            345
+            349
+            351
+            352
+            355
+            360
+            361
+            362
+            370
+            371
+            372
+            373
+            374
+            380
+            381
+            382
+            388
+            389
+            390
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\dpsxmlparser.cpp">
+            167
+            192
+            227
+            245
+            295
+            297
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\devmodel\src\btdevmodelbase.cpp">
+            562
+            566
+            580
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbdevcon\src\cstatemachine.cpp">
+            349
+            377
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\keyboard\src\keyboard.cpp">
+            138
+            155
+            284
+            285
+            307
+            331
+            616
+            680
+            1183
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbuinotif\src\USBUINCableConnectedNotifier.cpp">
+            231
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\src\hidparser.cpp">
+            584
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuibluetooth\src\btmtmui.cpp">
+            287
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\BTAccInfoRequester.cpp">
+            131
+            132
+            133
+            134
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicebtsend\src\btsssendlisthandler.cpp">
+            130
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexserviceirsend\src\IRClient.cpp">
+            163
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irbearer\src\irstatemachine.cpp">
+            83
+            107
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\plugins\src\usb\DunUsbConfig.cpp">
+            96
+            260
+            272
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvaccstate.cpp">
+            190
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapServerState.cpp">
+            166
+            244
+            256
+            268
+            292
+            303
+            318
+            363
+            369
+            436
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\socketwriter.cpp">
+            161
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvaccstatequery.cpp">
+            134
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengsrvpluginmgr.cpp">
+            542
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\plugins\src\usb\DunUsbPlugin.cpp">
+            747
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStreamerController.cpp">
+            542
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsmessagehandler.cpp">
+            600
+            877
+            967
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbremotepersonality\src\cremotepersonalityhandler.cpp">
+            368
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\atext\src\atextsession.cpp">
+            267
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvsdpquery.cpp">
+            264
+            271
+            277
+            283
+            288
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\mouse\src\mouse.cpp">
+            99
+            112
+            276
+            329
+            357
+            385
+            409
+            720
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\src\requestmanager.cpp">
+            259
+            260
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\layouts\src\layout.cpp">
+            540
+            560
+            562
+            563
+            565
+            587
+            589
+            602
+            604
+            605
+            614
+            616
+            618
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvaccman.cpp">
+            106
+            133
+            149
+            301
+            483
+            513
+            544
+            560
+            702
+            706
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\src\settingsitems.cpp">
+            189
+            191
+            268
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\devmodel\src\btpairedmodel.cpp">
+            422
+            439
+            455
+            556
+            567
+            568
+            569
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTServiceParameterList.cpp">
+            394
+            395
+            417
+            418
+            419
+            420
+            421
+            422
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicdcontrolhandler.cpp">
+            423
+            432
+            458
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btrcc\btrccLinker.cpp">
+            131
+            142
+            152
+            166
+            181
+            192
+            213
+            241
+            313
+            325
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\hidsdpclient.cpp">
+            139
+            148
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicdbaseclass.cpp">
+            228
+            230
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNInquiryAO.cpp">
+            251
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintuiprovider\src\caiwimageprintIf.cpp">
+            139
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthidserver.cpp">
+            374
+         </file>
+      </problem>
+      <problem name="activestart" severity="low">
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\atext\src\main.cpp">
+            78
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuibluetooth\src\btmtmui.cpp">
+            337
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbdevcon\src\cusbdevcon.cpp">
+            384
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\manager\src\server.cpp">
+            176
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuiinfrared\src\irmtmui.cpp">
+            284
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanserver\src\obexsmmain.cpp">
+            89
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthidserver.cpp">
+            1514
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\server\src\DunServer.cpp">
+            54
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengserver.cpp">
+            116
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\UsbWatcher.cpp">
+            85
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\locod\src\locodmain.cpp">
+            70
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvmain.cpp">
+            71
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\src\ptpservermain.cpp">
+            83
+         </file>
+      </problem>
+      <problem name="activestop" severity="low">
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanserver\src\obexsm.cpp">
+            160
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\BTAccServer.cpp">
+            163
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\atext\src\atextsrv.cpp">
+            117
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\manager\src\shutdown.cpp">
+            79
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthidserver.cpp">
+            132
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengserver.cpp">
+            1373
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\server\src\DunServer.cpp">
+            173
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\src\ptptimer.cpp">
+            95
+         </file>
+      </problem>
+      <problem name="baseconstruct" severity="low">
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUIBlockedDevicesView.cpp">
+            66
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUIPairedDevicesView.cpp">
+            119
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irappgsplugin\src\irappgspluginview.cpp">
+            104
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidkbdsettings\src\bthidsettingview.cpp">
+            100
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidkbdsettings\src\bthidsettingcontainer.cpp">
+            39
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbui\USBClassChangeUIPlugin\src\USBClassChangeUIPluginView.cpp">
+            106
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUIMainView.cpp">
+            154
+            158
+         </file>
+      </problem>
+      <problem name="callActiveObjectWithoutCheckingOrStopping" severity="low">
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSUImageConverter.cpp">
+            241
+            289
+            326
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmonobearer\bmbplugin.cpp">
+            174
+            220
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbdevcon\src\cusbdevcon.cpp">
+            304
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\CUsbWatcher.cpp">
+            248
+            1005
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbmscpersonality\src\CUsbActiveMscHandlerMdrv.cpp">
+            486
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuibluetooth\src\btmtmui.cpp">
+            256
+            263
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicebtsend\src\btsssendlisthandler.cpp">
+            99
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTServiceAPI.cpp">
+            103
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmcprotocol.cpp">
+            1092
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsentryhandler.cpp">
+            94
+            144
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStateConnected.cpp">
+            156
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\src\nptpimagehandler.cpp">
+            214
+            243
+            276
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvaccstateattached.cpp">
+            150
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btrcc\btrccplayerstarter.cpp">
+            119
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\manager\src\server.cpp">
+            119
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapStateConnect.cpp">
+            67
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengserver.cpp">
+            647
+            1145
+            1262
+            1287
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStreamerController.cpp">
+            186
+            750
+            786
+            1207
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmccallstatus.cpp">
+            86
+            656
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengregistrycleaner.cpp">
+            127
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvpowercontrolagent.cpp">
+            63
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicdcontrolhandler.cpp">
+            392
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btrcc\btrccLinker.cpp">
+            407
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengdevman\src\btengdevman.cpp">
+            163
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmssniffm.cpp">
+            100
+            199
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStateConfigured.cpp">
+            146
+         </file>
+      </problem>
+      <problem name="commentcode" severity="low">
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\src\bt\obexsmbtconnection.cpp">
+            174
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\btengclientserver.h">
+            29
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanclient\src\ObexSMClient.cpp">
+            53
+            81
+            87
+            92
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmonocmdhandler\btmcprotocolstatus.h">
+            40
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengsettings\src\btengsettings.cpp">
+            342
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btsac\btsacStreamerController.h">
+            59
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\atext\src\atextclient.cpp">
+            29
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSBPPObjectRequest.cpp">
+            44
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapMessage.cpp">
+            79
+            86
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapRequestHandler.cpp">
+            123
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\devmodel\src\btdevmodelbase.cpp">
+            113
+            114
+            115
+            116
+            117
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbosdescriptorhandler\src\cosdescriptorhandler.cpp">
+            43
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidkbdsettings\src\bthidsettingcontainer.cpp">
+            116
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\keyboard\src\keyboard.cpp">
+            50
+            622
+            839
+            840
+            841
+            1238
+            1366
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\src\usb\obexsmusbconnection.cpp">
+            188
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbremotepersonality\src\cremotepersonalityhandler.cpp">
+            188
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsglobalprogressdialog.cpp">
+            162
+            165
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\opp\src\oppcontroller.cpp">
+            205
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\btengactive.h">
+            30
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\btnumcmpnotifier.cpp">
+            214
+            215
+            216
+            224
+            320
+            321
+            326
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthidsession.cpp">
+            112
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexserviceirsend\src\IRClient.cpp">
+            70
+            72
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidkbdsettings\inc\bthidsettingview.h">
+            149
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\btengsrvstate.h">
+            34
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmcnumber.cpp">
+            161
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanserver\src\SrcsSession.cpp">
+            360
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\btaccDosSender.cpp">
+            123
+            206
+            221
+            240
+            297
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStateConnected.cpp">
+            376
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanserver\src\obexsm.cpp">
+            31
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapServerState.cpp">
+            148
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\src\nptpimagehandler.cpp">
+            111
+            117
+            123
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\src\ptpstackstatelistener.cpp">
+            68
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengsrvbbconnectionmgr.cpp">
+            324
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\inc\BTSBPPObjectServer.h">
+            229
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\btaccDosListener.cpp">
+            75
+            110
+            121
+            132
+            154
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNInqUI.cpp">
+            1067
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\btnssppasskeyentrynotifier.cpp">
+            224
+            320
+            321
+            332
+            342
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\src\BTUIAppUi.cpp">
+            97
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\btengsrvpluginmgr.h">
+            34
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengsrvpluginmgr.cpp">
+            662
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStateConfiguring.cpp">
+            226
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\inc\btnauthnotifier.h">
+            133
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStreamerController.cpp">
+            33
+            1277
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\btengsrvbbconnectionmgr.h">
+            33
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\inc\nptpobject.h">
+            282
+            283
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvsdpquery.cpp">
+            68
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\mouse\src\mouse.cpp">
+            352
+            380
+            404
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\inc\btnssppasskeyentrynotifier.h">
+            65
+            74
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\ptpclasscontroller\inc\ptpclasscontroller.h">
+            152
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicdcontrolhandler.cpp">
+            189
+            314
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapStateNotConnected.cpp">
+            65
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthidconnection.cpp">
+            125
+            874
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSBIPController.cpp">
+            648
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmcphonestatus.cpp">
+            344
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irappgsplugin\src\irappgspluginview.cpp">
+            187
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicdusbwriter.cpp">
+            184
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidkbdsettings\src\bthidsettingview.cpp">
+            52
+            60
+            183
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\src\imageprintuiappui.cpp">
+            402
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengdiscovery\src\btengsdpattrparser.cpp">
+            25
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\BTAccFwConnection_dos.cpp">
+            127
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\src\eventmanager.cpp">
+            362
+            365
+         </file>
+      </problem>
+      <problem name="doubleSemiColon" severity="low">
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\src\ptpserver.cpp">
+            173
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\src\ir\obexsmirdaconnection.cpp">
+            161
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmsyncsock.cpp">
+            107
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbmscpersonality\src\CUsbActiveMscHandlerMdrv.cpp">
+            758
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvaccstatequery.cpp">
+            136
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irappgsplugin\src\irappgspluginview.cpp">
+            187
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapPlugin.cpp">
+            120
+         </file>
+      </problem>
+      <problem name="foff" severity="low">
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\src\ptptransport.cpp">
+            49
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\CUsbPersonalityPlugin.cpp">
+            36
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\src\hidinterfaces.cpp">
+            48
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\atext\src\atextpluginbase.cpp">
+            31
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbdevcon\src\crequestshandler.cpp">
+            65
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\src\hidgeneric.cpp">
+            72
+         </file>
+      </problem>
+      <problem name="forgottoputptroncleanupstack" severity="low">
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\devmodel\src\btdevmodel.cpp">
+            46
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUISap.cpp">
+            214
+            219
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmcprotocol.cpp">
+            392
+            722
+            730
+            738
+            745
+            752
+            759
+            774
+            785
+            794
+            803
+            812
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvaccstatequery.cpp">
+            154
+            181
+            185
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNInqUI.cpp">
+            1057
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanserver\src\SrcsServiceManager.cpp">
+            235
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\btnumcmpnotifier.cpp">
+            257
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\btnssppasskeyentrynotifier.cpp">
+            270
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsmessagehandler.cpp">
+            1027
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmcnumber.cpp">
+            109
+         </file>
+      </problem>
+      <problem name="friend" severity="low">
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\inc\BTUIMainContainer.h">
+            200
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\server\inc\DunServer.h">
+            82
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\inc\DunDownstream.h">
+            101
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\inc\dpsusbnotifier.h">
+            41
+            42
+            43
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\inc\dpsoperation.h">
+            32
+            95
+            131
+            158
+            171
+            197
+            223
+            267
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\inc\DunTransporter.h">
+            376
+            377
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\inc\hidparser.h">
+            156
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmonocmdhandler\btmccallstatus.h">
+            87
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\inc\btmac\btmsyncsock.h">
+            166
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\inc\btrcc\btrccLinker.h">
+            108
+            124
+            143
+            162
+            175
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\btengserver.h">
+            98
+            99
+            100
+            101
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\inc\hiddriveritem.h">
+            36
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbui\USBClassChangeUIPlugin\inc\USBClassChangeUIPluginContainer.h">
+            206
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\pictbridge_api\inc\dpsoperation.h">
+            32
+            95
+            131
+            158
+            171
+            197
+            223
+            267
+         </file>
+      </problem>
+      <problem name="intleaves" severity="low">
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\plugins\src\usb\DunUsbListen.cpp">
+            74
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\src\hidreporttranslator.cpp">
+            89
+            136
+            149
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNInqUI.cpp">
+            1040
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\bip\src\BIPController.cpp">
+            540
+            954
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\opp\src\oppcontroller.cpp">
+            402
+            868
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\devmodel\src\btdevmodelbase.cpp">
+            164
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\keyboard\src\keyboard.cpp">
+            1158
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbuinotif\src\USBUINCableConnectedNotifier.cpp">
+            169
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\src\hidparser.cpp">
+            187
+            419
+            624
+            685
+            739
+            848
+            889
+            920
+            952
+            1292
+            1333
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNotifierAccFw.cpp">
+            31
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuibluetooth\src\btmtmui.cpp">
+            481
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunChanMan.cpp">
+            227
+            291
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicdinterrupthandler.cpp">
+            139
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\BTAccInfoMainService.cpp">
+            59
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicdcontrolhandler.cpp">
+            408
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNotifierNonAccFw.cpp">
+            28
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNotifier.cpp">
+            339
+            518
+            859
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsuilayer.cpp">
+            65
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanserver\src\obexsm.cpp">
+            130
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapServerState.cpp">
+            378
+            404
+            423
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidkbdsettings\src\layoututils.cpp">
+            214
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuibluetooth\src\btmtmuidata.cpp">
+            74
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuiinfrared\src\irmtmuidata.cpp">
+            81
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengsrvpluginmgr.cpp">
+            233
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunTransporter.cpp">
+            659
+            818
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapHciExtensionMan.cpp">
+            136
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsmessagehandler.cpp">
+            114
+            668
+            689
+            1331
+            1458
+            1512
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbremotepersonality\src\cremotepersonalityhandler.cpp">
+            483
+            495
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUIMainView.cpp">
+            578
+            1020
+            1044
+            1371
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\mouse\src\mouse.cpp">
+            702
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbuinotif\src\USBUINQueriesNotifierMdrv.cpp">
+            227
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsdialog.cpp">
+            292
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicdusbreader.cpp">
+            438
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\devmodel\src\btpairedmodel.cpp">
+            119
+            800
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTServiceParameterList.cpp">
+            473
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUISap.cpp">
+            185
+            202
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\manager\inc\layoutmgr.h">
+            257
+            264
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicdbaseclass.cpp">
+            134
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuiinfrared\src\irmtmui.cpp">
+            440
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUIViewsCommonUtils.cpp">
+            76
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthidserver.cpp">
+            655
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilslaunchwaiter.cpp">
+            379
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\src\hidgeneric.cpp">
+            302
+         </file>
+      </problem>
+      <problem name="LFunctionCantLeave" severity="low">
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\lcstylustap\src\lcstylustap.cpp">
+            55
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanserver\src\SrcsServiceManager.cpp">
+            141
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicdusbplugin.cpp">
+            96
+            107
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbuinotif\src\USBUINQueriesNotifierMdrv.cpp">
+            81
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\BTAccSession.cpp">
+            351
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengactive.cpp">
+            46
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\server\src\DunSession.cpp">
+            76
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTServiceClient.cpp">
+            452
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanclient\src\ObexSMPlugin.cpp">
+            104
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStateListening.cpp">
+            84
+            165
+            397
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvaccstatedetach.cpp">
+            71
+            78
+            84
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbdevcon\src\cusbstatewatcher.cpp">
+            57
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbui\src\USBClassChangeUIAppui.cpp">
+            77
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicebtsend\src\btsssendlisthandler.cpp">
+            44
+            173
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\BTAccInfoMainService.cpp">
+            59
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\client\src\dunactive.cpp">
+            100
+            121
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunNoteHandler.cpp">
+            140
+            234
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\dpsconnectnotifier.cpp">
+            89
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapPlugin.cpp">
+            61
+            476
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNotifierNonAccFw.cpp">
+            28
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUIMainView.cpp">
+            507
+            564
+            1330
+            1340
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmcbattery.cpp">
+            127
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanserver\src\obexsm.cpp">
+            118
+            130
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSBPPObjectServer.cpp">
+            193
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidkbdsettings\src\layoututils.cpp">
+            214
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengsrvbbconnectionmgr.cpp">
+            296
+            307
+            318
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNGenericInfoNotifier.cpp">
+            74
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmsdisconnect.cpp">
+            43
+            51
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanclient\src\ObexSMRequester.cpp">
+            76
+            136
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\utils\src\iractive.cpp">
+            46
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\bip\src\BIPXMLWriter.cpp">
+            186
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUIMainContainer.cpp">
+            153
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\socketreader.cpp">
+            79
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunDownstream.cpp">
+            333
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbui\USBClassChangeUIPlugin\src\USBDeviceStateWatcher.cpp">
+            103
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapRequestHandler.cpp">
+            91
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStreamerController.cpp">
+            708
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmccallstatus.cpp">
+            224
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvacc.cpp">
+            267
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunSignalCopy.cpp">
+            268
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\mouse\src\mouse.cpp">
+            103
+            132
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\CUsbPersonalityNotifier.cpp">
+            39
+            78
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunAtUrcHandler.cpp">
+            149
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmscloseaudio.cpp">
+            88
+            117
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\manager\src\shutdown.cpp">
+            76
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\btnpaireddevsettnotifier.cpp">
+            83
+            122
+            129
+            260
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\client\src\dunplugin.cpp">
+            147
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmcoperator.cpp">
+            154
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btrcc\btrccVolumeLevelController.cpp">
+            257
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidkbdsettings\src\bthidsettings.cpp">
+            49
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvaccman_nonaccfw_var.cpp">
+            53
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmsaudio.cpp">
+            42
+            75
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\socketlistener.cpp">
+            121
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmsyncsock.cpp">
+            44
+            59
+            137
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengsrvsession.cpp">
+            48
+            91
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmcvolume.cpp">
+            81
+            197
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbuinotif\src\USBNotifier.cpp">
+            140
+            184
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irappgsplugin\src\irappgspluginview.cpp">
+            209
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNObexPinNotifier.cpp">
+            77
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\src\nptpobject.cpp">
+            82
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNPBAPPinNotifier.cpp">
+            78
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\devmodel\src\btdevmodelbase.cpp">
+            319
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\hiddescriptor.cpp">
+            65
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmcsignal.cpp">
+            131
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSUCapabilityResolver.cpp">
+            95
+            111
+            125
+            291
+            306
+            323
+            331
+            339
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNPwrNotifier.cpp">
+            72
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTConnectionTimer.cpp">
+            103
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\bip\src\BIPImageHandler.cpp">
+            88
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbdevcon\src\cep0reader.cpp">
+            99
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmccallactive.cpp">
+            181
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\BTAccInfoRequester.cpp">
+            53
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapSimCardStatusNotifier.cpp">
+            66
+            84
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmstate.cpp">
+            56
+            62
+            71
+            81
+            87
+            96
+            102
+            112
+            117
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\opp\src\oppcontroller.cpp">
+            756
+            779
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmslisten.cpp">
+            124
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\btnumcmpnotifier.cpp">
+            96
+            402
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStateConfiguring.cpp">
+            131
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\BTMonoCdmaIncomingFlash.cpp">
+            133
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbuinotif\src\USBUIConnectionNotifier.cpp">
+            84
+            145
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsentryhandler.cpp">
+            44
+            176
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvactivenotifier.cpp">
+            63
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\btaccDosSender.cpp">
+            219
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUIBlockedDevicesView.cpp">
+            336
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNPinNotifier.cpp">
+            93
+            440
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicebtsend\src\BTSSProvider.cpp">
+            55
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapServerState.cpp">
+            87
+            264
+            404
+            515
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\locod\src\locodserviceman.cpp">
+            62
+            175
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irbearer\src\irtimer.cpp">
+            83
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmsrfcomm.cpp">
+            82
+            97
+            107
+            157
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilslaunchwaiter.cpp">
+            203
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapHciExtensionMan.cpp">
+            136
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\src\ptpeventsender.cpp">
+            124
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\src\ptptimer.cpp">
+            86
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvsdpquery.cpp">
+            161
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\CUsbWatcher.cpp">
+            375
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmman.cpp">
+            79
+            382
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsdialog.cpp">
+            241
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNGenericQueryNotifier.cpp">
+            86
+            101
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTServiceParameterList.cpp">
+            473
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\common\src\timeouttimer.cpp">
+            62
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStateAborting.cpp">
+            64
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usblocodplugin\src\usblcdactive.cpp">
+            70
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbmscpersonality\src\CUsbMscPersonalityTimer.cpp">
+            50
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\src\bt\obexsmpasskey.cpp">
+            61
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\datasegmenter.cpp">
+            195
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\src\BTUIDocument.cpp">
+            44
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmrfcommsock.cpp">
+            381
+            411
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmstempd.cpp">
+            87
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicdinterrupthandler.cpp">
+            126
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNAuthNotifier.cpp">
+            128
+            562
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUIPairedDevicesView.cpp">
+            397
+            1326
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\CUsbWatcherSession.cpp">
+            64
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsdialogtimer.cpp">
+            94
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbremotepersonality\src\csetpersonality.cpp">
+            57
+            107
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidkbdsettings\src\bthidsettingcontainer.cpp">
+            99
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\src\ir\obexsmirdaconnection.cpp">
+            217
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapSession.cpp">
+            56
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUIActive.cpp">
+            43
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicdlogger.cpp">
+            45
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmsinuse.cpp">
+            38
+            64
+            69
+            74
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSUImageConverter.cpp">
+            205
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\bip\src\BIPController.cpp">
+            839
+            862
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\CUsbActivePersonalityHandler.cpp">
+            329
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUIKeyWatcher.cpp">
+            113
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbremotepersonality\src\cremotepersonalityhandler.cpp">
+            483
+            495
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbdevcon\src\cep0writer.cpp">
+            90
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanclient\src\usbclientwrapper.cpp">
+            41
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmccallinghandler.cpp">
+            154
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\plugins\src\usb\DunUsbConfig.cpp">
+            229
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\devmodel\src\btregistryobserver.cpp">
+            138
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\generichid\src\hidcollection.cpp">
+            56
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\CUsbDeviceLock.cpp">
+            166
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irbearer\src\iractivatewatcher.cpp">
+            63
+            79
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudiostreamer\src\btaudiostreamer.cpp">
+            58
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\src\nptpimagehandler.cpp">
+            133
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\socketwriter.cpp">
+            102
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmsidle.cpp">
+            37
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStateSuspended.cpp">
+            75
+            98
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\src\notes.cpp">
+            100
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbosdescriptorhandler\src\cselectedpersonalityproperty.cpp">
+            121
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUIDeviceContainer.cpp">
+            310
+            547
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmsctrl.cpp">
+            130
+            188
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\dpsptpnotifier.cpp">
+            85
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStateStreaming.cpp">
+            78
+            110
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNotifier.cpp">
+            160
+            231
+            915
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\ptpclasscontroller\src\ptpclasscontroller.cpp">
+            147
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\atext\src\atextsrv.cpp">
+            101
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irbearer\src\irremotelockwatcher.cpp">
+            66
+            88
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvaccman.cpp">
+            222
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\devmodel\src\btpairedmodel.cpp">
+            237
+            763
+            835
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthidconnection.cpp">
+            184
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunAtCmdHandler.cpp">
+            305
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunUpstream.cpp">
+            354
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidengplugin\src\bthidengplugin.cpp">
+            252
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicdcontrolhandler.cpp">
+            494
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbui\USBClassChangeUIPlugin\src\USBClassChangeUIPluginModel.cpp">
+            124
+            307
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irbearer\src\irstates.cpp">
+            69
+            90
+            116
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\dpsstate.cpp">
+            43
+            93
+            111
+            141
+            194
+            224
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmsreconnect.cpp">
+            50
+            83
+            109
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btrfsplugin\src\btrfsplugin.cpp">
+            68
+            75
+            79
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengdiscovery\src\btengsdpattrparser.cpp">
+            44
+            146
+            159
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmcprotocol.cpp">
+            155
+            1169
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSBPPController.cpp">
+            401
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmonobearer\bmbcmdlistener.cpp">
+            46
+            53
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\plugins\src\usb\DunUsbListen.cpp">
+            200
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmonobearer\playercontrolistener.cpp">
+            46
+            53
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbdevcon\src\cusbdevcon.cpp">
+            255
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacState.cpp">
+            79
+            89
+            99
+            127
+            137
+            147
+            366
+            384
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irbearer\src\irstatuswatcher.cpp">
+            61
+            73
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbmscpersonality\src\CUsbActiveMscHandlerMdrv.cpp">
+            110
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacActivePacketDropIoctl.cpp">
+            66
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUINonSap.cpp">
+            29
+            38
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbobexclasscontroller\src\CUsbObexClassController.cpp">
+            144
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengpairobserver.cpp">
+            266
+            295
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunDataPusher.cpp">
+            353
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\locod\src\locodservice.cpp">
+            209
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\src\imageprintuiappui.cpp">
+            123
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthidsession.cpp">
+            365
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudiostreamer\src\btaudiostreamsender.cpp">
+            311
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbbasicpersonality\src\CUsbActiveBasicHandler.cpp">
+            41
+            70
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\src\BTSapSniffHandler.cpp">
+            184
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmcnumber.cpp">
+            155
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvaccstate.cpp">
+            40
+            51
+            81
+            86
+            91
+            96
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\vMessageHandler.cpp">
+            69
+            425
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexserviceirsend\src\IRSSProvider.cpp">
+            55
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvaccstateattached.cpp">
+            59
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStateConnecting.cpp">
+            68
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btrcc\btrccplayerstarter.cpp">
+            77
+            105
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\socketinitiator.cpp">
+            168
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSBPPServerWait.cpp">
+            85
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\btnssppasskeyentrynotifier.cpp">
+            90
+            392
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\src\BTUIAppUi.cpp">
+            130
+            165
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengsrvpluginmgr.cpp">
+            59
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\btaccDosListener.cpp">
+            130
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmsconnect.cpp">
+            56
+            86
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNInqNotifier.cpp">
+            73
+            134
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\plugins\src\bt\DunBtListen.cpp">
+            369
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\src\usb\obexsmusbconnection.cpp">
+            205
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSURefObjectResolver.cpp">
+            68
+            85
+            99
+            178
+            186
+            203
+            211
+            219
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvpowercontrolagent.cpp">
+            120
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btpbap\src\DisconnectHelper.cpp">
+            93
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btrcc\btrccLinker.cpp">
+            189
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\CUsbActiveState.cpp">
+            87
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\src\sicdbaseclass.cpp">
+            509
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNInquiryAO.cpp">
+            128
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUIViewsCommonUtils.cpp">
+            61
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthidserver.cpp">
+            228
+            337
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\dpsusbnotifier.cpp">
+            228
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmssniffm.cpp">
+            110
+            122
+            228
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStateConfigured.cpp">
+            194
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\btmac\btmsopenaudio.cpp">
+            86
+            118
+            197
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbui\USBClassChangeUIPlugin\src\USBClassChangeUIPluginView.cpp">
+            596
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\cusbdevconstarter.cpp">
+            121
+            195
+         </file>
+      </problem>
+      <problem name="nonleavenew" severity="low">
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\dpsoperation.cpp">
+            87
+            105
+            110
+            333
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvpowercontrolagent.cpp">
+            34
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\CUsbPersonalityNotifier.cpp">
+            183
+            213
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\hidsdpclient.cpp">
+            300
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthidserver.cpp">
+            1109
+            1166
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengdevman\src\btengdevman.cpp">
+            158
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvrvc.cpp">
+            32
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengpairobserver.cpp">
+            92
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\src\BTUIMainView.cpp">
+            135
+         </file>
+      </problem>
+      <problem name="pragmaother" severity="low">
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\group\sicdusbplugin_UID_.cpp">
+            3
+            5
+         </file>
+      </problem>
+      <problem name="rfs" severity="low">
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\bip\src\BIPController.cpp">
+            550
+            617
+            685
+            714
+            958
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsuilayer.cpp">
+            153
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengsdpdbhandler.cpp">
+            358
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\opp\src\oppcontroller.cpp">
+            413
+            497
+            583
+            872
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicesendutils\src\BTSBIPController.cpp">
+            416
+            447
+            484
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunNoteHandler.cpp">
+            203
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilslaunchwaiter.cpp">
+            381
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsmessagehandler.cpp">
+            703
+            726
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\pictbridgeengine\src\pictbridge.cpp">
+            277
+         </file>
+      </problem>
+      <problem name="rssnames" severity="low">
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\data\phonecapability.rss">
+            19
+         </file>
+      </problem>
+      <problem name="stringsinresourcefiles" severity="low">
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\data\imageprintui.rss">
+            38
+            100
+            285
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\bip\data\101F8671.rss">
+            41
+            42
+            63
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\data\irapp.rss">
+            35
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\data\btrcc\10208978.rss">
+            43
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usblocodplugin\data\0x102823dd.rss">
+            45
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbmscpersonality\src\10274798.rss">
+            36
+            37
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\usbman.rss">
+            69
+            87
+            104
+            121
+            141
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\data\1020742B.rss">
+            38
+            39
+            40
+            54
+            61
+            68
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbuinotif\data\USBUINotif.rss">
+            123
+            126
+            129
+            132
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbbasicpersonality\src\10274797.rss">
+            38
+            39
+            48
+            49
+            50
+            58
+            59
+            60
+            67
+            68
+            69
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\keyboard\data\hidkeyboard.rss">
+            35
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexservicebtsend\data\101F86A2.rss">
+            46
+            60
+            61
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\data\10208970.rss">
+            41
+            43
+            50
+            67
+            68
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\src\ir\101F9695.rss">
+            43
+            44
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbui\data\USBClassChangeUI_reg.rss">
+            29
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irbearer\src\20002770.rss">
+            45
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbui\data\USBClassChangeUI.rss">
+            40
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\ptpclasscontroller\src\1020DF7C.rss">
+            36
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuibluetooth\data\btmtmui.rss">
+            53
+            61
+            69
+            77
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\ecom\101FD68F.rss">
+            39
+            40
+            41
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintui\data\imageprintui_reg.rss">
+            29
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\client\src\0x20002775.rss">
+            44
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\data\BTUI.rss">
+            43
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\data\200159E9.rss">
+            43
+            44
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidkbdsettings\data\bthidkbdsettings.rss">
+            35
+            36
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidkbdsettings\data\BthidResource.rss">
+            33
+            264
+            291
+            318
+            1331
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\imageprintuiprovider\data\1020E471.rss">
+            39
+            40
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\data\Btui_reg.rss">
+            29
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\opp\data\101F8636.rss">
+            41
+            42
+            63
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\data\btsac\10208973.rss">
+            42
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\src\usb\101F9693.rss">
+            43
+            44
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\data\10204DB2.rss">
+            19
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\src\bt\101f7c9d.rss">
+            43
+            44
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\data\irapp_reg.rss">
+            30
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\layouts\data\kbdlayout.rss">
+            35
+            41
+            47
+            53
+            59
+            65
+            71
+            77
+            83
+            89
+            95
+            101
+            107
+            113
+            119
+            125
+            131
+            137
+            143
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbui\USBClassChangeUIPlugin\data\1020E472.rss">
+            41
+            43
+            44
+            54
+            55
+            56
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbuinotif\data\102068DC.rss">
+            38
+            39
+            40
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexsendservices\obexserviceirsend\data\001F86A2.rss">
+            43
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbui\USBClassChangeUIPlugin\data\USBClassChangeUIPlugin.rss">
+            40
+            112
+            124
+            231
+            262
+            263
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btui\Ecom\data\BtuiViewResources.rss">
+            157
+            187
+            1031
+            1032
+            1033
+            1034
+            1037
+            1039
+            1042
+            1043
+            1059
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\irapp\irappgsplugin\data\10204DB0.rss">
+            36
+            37
+            38
+            44
+            45
+            46
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbobexclasscontroller\data\10281F29.rss">
+            35
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\lcstylustap\data\10204DAE.rss">
+            43
+            44
+            53
+            54
+            63
+            64
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\mouse\data\hidmouse.rss">
+            35
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbremotepersonality\src\10283307.rss">
+            37
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\data\200100C4.rss">
+            36
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\data\101f4689.rss">
+            41
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanclient\data\0x101F7C88.rss">
+            45
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbmscpersonality\src\usbms.rss">
+            23
+            24
+            25
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\data\Obexutils.rss">
+            338
+            488
+            489
+            490
+            491
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\mtmuiinfrared\data\irmtmui.rss">
+            44
+            52
+            60
+            68
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidengplugin\data\2001E308.rss">
+            42
+            43
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbosdescriptorhandler\src\10283305.rss">
+            37
+            38
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\data\10208970_nonaccfw.rss">
+            39
+            56
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\data\20002774.rss">
+            45
+         </file>
+      </problem>
+      <problem name="todocomments" severity="low">
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsap\inc\BTSap_Conn_State_SD.h">
+            37
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidkbdsettings\src\bthidsettingcontainer.cpp">
+            101
+         </file>
+      </problem>
+      <problem name="uids" severity="low">
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\group\UsbWatcherServer_pcsmtp.mmp">
+            27
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbuinotif\group\USBUINotifWrapper.mmp">
+            26
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbmscpersonality\group\UsbMscPersonality.mmp">
+            23
+         </file>
+      </problem>
+      <problem name="userWaitForRequest" severity="low">
+         <file path="Y:\LC_Domain\shortlinkconn\usbengines\usbwatcher\src\CUsbActivePersonalityHandler.cpp">
+            115
+            443
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsmessagehandler.cpp">
+            1093
+            1128
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\atext\src\atextclient.cpp">
+            176
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidclient\src\bthidclient.cpp">
+            178
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\client\src\dunclient.cpp">
+            60
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\opp\src\oppcontroller.cpp">
+            203
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\usbmscpersonality\src\CUsbActiveMscHandlerMdrv.cpp">
+            565
+            596
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsuilayer.cpp">
+            136
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanclient\src\ObexSMClient.cpp">
+            96
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthidconnection.cpp">
+            207
+            847
+            860
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\bip\src\BIPController.cpp">
+            289
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidengplugin\src\bthidengplugin.cpp">
+            72
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmcphonestatus.cpp">
+            349
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengsrvpluginmgr.cpp">
+            716
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpserver\src\rptp.cpp">
+            65
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengserver.cpp">
+            465
+            671
+            705
+            914
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\common\src\genericclient.cpp">
+            82
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\BTAccClient.cpp">
+            56
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengpairobserver.cpp">
+            302
+            310
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengclient.cpp">
+            64
+         </file>
+      </problem>
+      <problem name="worryingcomments" severity="low">
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\layouts\src\unitedstates.cpp">
+            69
+            95
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\layouts\src\su8intusenglish.cpp">
+            71
+            97
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\BTAccDosSender.h">
+            217
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\plugins\src\bt\DunBtPlugin.cpp">
+            220
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengconnman\src\btengpairinghandler.cpp">
+            28
+            94
+            100
+            137
+            164
+            201
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengdiscovery\src\btengsdpquery.cpp">
+            90
+            184
+            238
+            259
+            311
+            340
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengclient.cpp">
+            34
+            90
+            123
+            134
+            144
+            154
+            168
+            180
+            194
+            209
+            225
+            236
+            249
+            270
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanserver\src\SrcsSession.cpp">
+            280
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengsrvbbconnectionmgr.cpp">
+            28
+            30
+            32
+            141
+            293
+            304
+            315
+            331
+            370
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\btaccDosListener.cpp">
+            75
+            110
+            121
+            132
+            154
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\layouts\src\usinternational.cpp">
+            71
+            97
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunDownstream.cpp">
+            354
+            358
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilsmessagehandler.cpp">
+            229
+            1067
+            1202
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\mouse\src\mouse.cpp">
+            525
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\layouts\src\norwegian.cpp">
+            69
+            95
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\layouts\src\layout.cpp">
+            69
+            95
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunAtUrcHandler.cpp">
+            61
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\btnpaireddevsettnotifier.cpp">
+            208
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\src\BTMonoCmdHandler\btmcoperator.cpp">
+            94
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\layouts\src\french.cpp">
+            69
+            95
+            276
+            296
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\layouts\src\german.cpp">
+            69
+            95
+            261
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthiddevice.cpp">
+            82
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\bluetooth_secondary_display_notification_api\inc\secondarydisplay\BTnotifSecondaryDisplayAPI.h">
+            51
+            58
+            88
+            94
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengdiscovery\inc\btengsdpquery.h">
+            44
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\ptpstack\src\nptpdatahandler.cpp">
+            1154
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengdiscovery\src\btengdiscovery.cpp">
+            186
+            204
+            221
+            232
+            250
+            268
+            286
+            355
+            368
+            384
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\layouts\src\danish.cpp">
+            70
+            96
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\hiddescriptor.cpp">
+            108
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\btengactive.h">
+            29
+            30
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacGavdp.cpp">
+            211
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengsrvstate.cpp">
+            94
+            119
+            136
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\src\usb\obexsmusbconnection.cpp">
+            117
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\BTAccInfoRequester.cpp">
+            82
+            151
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexreceiveservices\opp\src\oppcontroller.cpp">
+            481
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\bluetooth_secondary_display_notification_api\inc\secondarydisplay\BtuiSecondaryDisplayAPI.h">
+            41
+            47
+            77
+            83
+            101
+            107
+            113
+            187
+            193
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStateConfiguring.cpp">
+            191
+            252
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunTransUtils.cpp">
+            501
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\socketlistener.cpp">
+            97
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\btaccDosSender.cpp">
+            206
+            221
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\ecom\BtnotifWrapper.cpp">
+            27
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\btengsrvpluginmgr.h">
+            33
+            34
+            315
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengserver.cpp">
+            320
+            408
+            421
+            473
+            504
+            521
+            594
+            626
+            655
+            715
+            785
+            811
+            851
+            926
+            975
+            988
+            1065
+            1226
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\btengsrvbbconnectionmgr.h">
+            32
+            33
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\src\ir\obexsmirdaconnection.cpp">
+            125
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengconnman\inc\btengconnhandler.h">
+            26
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengconnman\src\btengconnhandler.cpp">
+            115
+            148
+            209
+            217
+            219
+            221
+            249
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\layouts\src\portuguese.cpp">
+            69
+            95
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btmac\common\atcodec.h">
+            73
+            76
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\inc\bt\debug.h">
+            31
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\layouts\inc\layout.h">
+            185
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\obexservicemanserver\inc\debug.h">
+            33
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudiostreamer\src\btaudiostreamer.cpp">
+            86
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\layouts\src\italian.cpp">
+            69
+            95
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconn_dom\usb_secondary_display_api\inc\usbuinotifsecondarydisplay.h">
+            70
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengconnman\src\btengconnman.cpp">
+            104
+            116
+            127
+            139
+            151
+            163
+            174
+            285
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\layouts\src\su8usenglish.cpp">
+            71
+            97
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\BTNotifier.cpp">
+            352
+            359
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\inc\btnssppasskeyentrynotifier.h">
+            134
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthidconnection.cpp">
+            447
+            646
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunUpstream.cpp">
+            158
+            376
+            380
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbuis\usbui\USBClassChangeUIPlugin\src\USBClassChangeUIPluginModel.cpp">
+            360
+            376
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\layouts\src\dutch.cpp">
+            70
+            96
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\layouts\src\finnishswedish.cpp">
+            69
+            95
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\utils\src\obexutilslaunchwaiter.cpp">
+            151
+            173
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\src\basrvmain.cpp">
+            64
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\btengdiscovery\src\btengsdpattrparser.cpp">
+            21
+            25
+            84
+            143
+            156
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\layouts\src\unitedstatesdvorak.cpp">
+            69
+            95
+            195
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btaudioman\inc\BTAccDosListener.h">
+            172
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\src\bt\obexsmbtconnection.cpp">
+            140
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunAtCmdHandler.cpp">
+            153
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStateConnected.cpp">
+            438
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\inc\ir\debug.h">
+            33
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\layouts\src\spanish.cpp">
+            69
+            95
+            155
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\keyboard\src\keyboard.cpp">
+            396
+            892
+            1320
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\dun\utils\src\DunDataPusher.cpp">
+            380
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\usbclasses\sicdusbplugin\inc\sicdconstants.h">
+            29
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthidsession.cpp">
+            50
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\inc\btengsrvstate.h">
+            25
+            33
+            34
+            83
+            84
+            126
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btsac\src\btsac\btsacStateConnecting.cpp">
+            121
+            123
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\layouts\src\belgian.cpp">
+            70
+            96
+            156
+            169
+            176
+            304
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\btnotif\src\btnssppasskeyentrynotifier.cpp">
+            259
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bteng\src\btengsrvpluginmgr.cpp">
+            90
+            183
+            198
+            230
+            268
+            291
+            309
+            327
+            354
+            377
+            398
+            419
+            445
+            466
+            488
+            532
+            550
+            586
+            593
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\layouts\src\unitedkingdom.cpp">
+            69
+            95
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\hidsdpclient.cpp">
+            216
+            416
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\localconnectivityservice\obexserviceman\plugins\inc\usb\debug.h">
+            33
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\bthidserver.cpp">
+            1431
+         </file>
+         <file path="Y:\LC_Domain\shortlinkconn\bluetoothengine\bthid\bthidserver\src\hiddescriptorlist.cpp">
+            100
+         </file>
+      </problem>
+   </category>
+</problemIndex>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/diamonds/tests/src/com/nokia/helium/diamonds/tests/TestXMLMerger.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,221 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+package com.nokia.helium.diamonds.tests;
+
+import java.io.File;
+import java.io.BufferedWriter;
+import java.io.FileWriter;
+import java.io.FileReader;
+import java.io.Reader;
+import java.io.BufferedReader;
+import java.io.IOException;
+import com.nokia.helium.diamonds.XMLMerger;
+import com.nokia.helium.diamonds.XMLMerger.XMLMergerException;
+
+import org.junit.*;
+import static org.junit.Assert.*;
+import org.custommonkey.xmlunit.*;
+
+public class TestXMLMerger {
+    
+    @Before
+    public void setUp() {
+    }
+
+    @After
+    public void tearDown() {
+    }
+
+    
+    private File createTextFile(String content) throws IOException {
+        File temp = File.createTempFile("merge", ".xml");
+        temp.deleteOnExit();
+        BufferedWriter output = new BufferedWriter(new FileWriter(temp));
+        output.write(content);
+        output.close();
+        return temp;
+    }
+    
+    /**
+     * Simple merge with empty source.
+     * The result should be the same as the merged content.
+     * @throws Exception
+     */
+    @Test
+    public void test_simpleMergeNode() throws Exception {
+        File merge = createTextFile("<?xml version=\"1.0\"?>\n<root/>");
+        File toBeMerged = createTextFile("<?xml version=\"1.0\"?>\n<root>\n" +                 
+                "<section1/>\n" + 
+                "<section2/>\n"+ 
+                "<section3><subnode>text</subnode></section3>\n"+ 
+                "</root>");
+        XMLMerger merger = new XMLMerger(merge);
+        merger.merge(toBeMerged);
+        DifferenceListener differenceListener = new IgnoreTextAndAttributeValuesDifferenceListener();
+        Diff diff = new Diff(new ReaderNoSpaces(new FileReader(merge)), new ReaderNoSpaces(new FileReader(toBeMerged)));
+        diff.overrideDifferenceListener(differenceListener);
+        assertTrue("Test that 2 simple XML merge correctly  " + diff, diff.similar());
+    }
+
+    /**
+     * Test the merging of twice the same content.
+     * Result should be similar to the source.
+     * @throws Exception
+     */
+    @Test
+    public void test_mergeSameNode() throws Exception {
+        File merge = createTextFile("<?xml version=\"1.0\"?>\n<root>\n" +                 
+                "<section>\n" + 
+                "<subnode attr=\"1\">1</subnode>\n" + 
+                "</section>\n" + 
+                "</root>");
+        File toBeMerged = createTextFile("<?xml version=\"1.0\"?>\n<root>\n" +                 
+                "<section>\n" + 
+                "<subnode attr=\"1\">1</subnode>\n" + 
+                "</section>\n" + 
+                "</root>");
+        XMLMerger merger = new XMLMerger(merge);
+        merger.merge(toBeMerged);
+        DifferenceListener differenceListener = new IgnoreTextAndAttributeValuesDifferenceListener();
+        Diff diff = new Diff(new ReaderNoSpaces(new FileReader(merge)), new ReaderNoSpaces(new FileReader(toBeMerged)));
+        diff.overrideDifferenceListener(differenceListener);
+        assertTrue("Test that identity  " + diff, diff.similar());
+    }
+
+    /**
+     * Testing the merge of several files.
+     * @throws Exception
+     */
+    @Test
+    public void test_mergeWithSubNodeAndAttribute() throws Exception {
+        File merge = createTextFile("<?xml version=\"1.0\"?>\n<root/>");
+        File toBeMerged1 = createTextFile("<?xml version=\"1.0\"?>\n<root>\n" +                 
+                "<section>\n" + 
+                "<subnode attr=\"1\">1</subnode>\n" + 
+                "</section>\n" + 
+                "</root>");
+        File toBeMerged2 = createTextFile("<?xml version=\"1.0\"?>\n<root>\n" +                 
+                "<section>\n" + 
+                "<subnode attr=\"2\">2</subnode>\n" + 
+                "</section>\n" + 
+                "</root>");
+        File toBeMerged3 = createTextFile("<?xml version=\"1.0\"?>\n<root>\n" +                 
+                "<section>\n" + 
+                "<subnode attr=\"3\">3</subnode>\n" + 
+                "</section>\n" + 
+                "</root>");
+        File toBeMerged4 = createTextFile("<?xml version=\"1.0\"?>\n<root>\n" +                 
+                "<section>\n" +                 
+                "<subnode attr=\"4\">1</subnode>\n" + 
+                "</section>\n" + 
+                "</root>");
+        File expected = createTextFile("<?xml version=\"1.0\"?>\n<root>\n" +                 
+                "<section>\n" + 
+                "<subnode attr=\"1\">1</subnode>\n" + 
+                "<subnode attr=\"2\">2</subnode>\n" + 
+                "<subnode attr=\"3\">3</subnode>\n" + 
+                "<subnode attr=\"4\">1</subnode>\n" + 
+                "</section>\n" + 
+                "</root>");
+        XMLMerger merger = new XMLMerger(merge);
+        merger.merge(toBeMerged1);
+        merger.merge(toBeMerged2);
+        merger.merge(toBeMerged3);
+        merger.merge(toBeMerged4);
+        Diff diff = new Diff(new ReaderNoSpaces(new FileReader(merge)), new ReaderNoSpaces(new FileReader(expected)));
+        //System.out.println(readTextFile(merge.getAbsolutePath()));
+        assertTrue("test XML matches control skeleton XML " + diff, diff.similar());
+    }
+
+    /**
+     * Test the XMLMerger with xml file with no Root node.
+     */
+    @Test(expected=XMLMergerException.class)
+    public void test_mergeWithNoRootNode() throws Exception{
+		File merge = createTextFile("<?xml version=\"1.0\"?>\n");
+		XMLMerger merger = new XMLMerger(merge);
+	}
+    /**
+     * Test the XMLMerger with xml files with different root nodes to merge.
+     */
+    @Test(expected=XMLMergerException.class)
+    public void test_mergeWithDifferentRootNodes() throws Exception{
+		File merge = createTextFile("<?xml version=\"1.0\"?>\n<root/>");
+		File toBeMerged = createTextFile("<?xml version=\"1.0\"?>\n<root1/>\n");
+		XMLMerger merger = new XMLMerger(merge);
+		merger.merge(toBeMerged);
+	}
+    /**
+     * Test the XMLMerger with xml files with Wrong xml format
+     */
+    @Test(expected=XMLMergerException.class)
+    public void test_mergeWithWrongXML() throws Exception{
+        	File merge = createTextFile("<?xml version=\"1.0\"?>\n<root/>");
+        	File toBeMerged = createTextFile("<?xml version=\"1.0\"?>\n<root/><test/>\n");
+        	XMLMerger merger = new XMLMerger(merge);
+        	merger.merge(toBeMerged);
+	}
+
+    /**
+     * Load file content into a string. 
+     * @param fullPathFilename
+     * @return the file content as a string
+     * @throws IOException
+     */
+    public static String readTextFile(String fullPathFilename) throws IOException {
+        StringBuffer sb = new StringBuffer(1024);
+        BufferedReader reader = new BufferedReader(new FileReader(fullPathFilename));
+                
+        char[] chars = new char[1024];
+        int numRead = 0;
+        while ( (numRead = reader.read(chars)) > -1) {
+            sb.append(String.valueOf(chars));
+        }
+
+        reader.close();
+
+        return sb.toString();
+    }    
+    
+    public class ReaderNoSpaces extends BufferedReader {
+
+        private boolean skip = true; 
+        public ReaderNoSpaces(Reader in) throws Exception {
+            super(in);
+        }
+        
+        public int read(char[] cbuf, int off, int len) throws IOException {
+            int rlen = super.read(cbuf, off, len);
+            if (rlen < 0)
+                return rlen;
+            int w = off;
+            for (int i = off ; i < off + rlen ; i++) {
+                char c = cbuf[i];
+                if (c == '<')
+                    skip = false;
+                if (c == '>')
+                    skip = true;                
+                if (!(skip && (c == '\n' || c == '\t'|| c == ' '))) {
+                    cbuf[w++] = c;
+                }
+            }
+            return w - off;
+        }
+        
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/diamonds/tests/templates/apimetrics.xml.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,50 @@
+<#--
+============================================================================ 
+Name        : diamonds-api-metrics.xml.ftl 
+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:
+
+============================================================================
+--> 
+    <#if (doc)??>
+    <apis>
+        <count type="sdk"><@totalNoOfRelease type="sdk"/></count>
+        <count type="domain"><@totalNoOfRelease type="domain"/></count>
+        <count type="internal"><@totalNoOfRelease type="internal"/></count>
+        <count type="private"><@totalNoOfRelease type="private"/></count>
+    <illegal-apis>
+    <#list doc.api_dataset.api as illegal>
+        <#if illegal.release.@category == 'private'>
+            <api>${illegal.buildfiles.file.path}</api>
+        </#if>
+        <#if illegal.release.@category == 'internal'>
+            <api>${illegal.buildfiles.file.path}</api>
+        </#if>
+    </#list>
+    </illegal-apis>
+    </apis>
+    </#if>
+
+<#if (doc)?? >
+<#macro totalNoOfRelease type>
+    <#assign count = 0>
+<#list doc.api_dataset.api as apinode>
+        <#if apinode.release.@category == '${type}'>
+            <#assign count = count + 1>
+        </#if>
+    </#list>
+${count}</#macro>
+</#if>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/diamonds/tests/templates/build.xml.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,32 @@
+<#--
+============================================================================ 
+Name        : diamonds-build.ftl 
+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:
+
+============================================================================
+--> 
+    <build>
+        <category>${ant["build.family"]}</category>
+        <name>${ant["id"]}</name>
+        <#if ant?keys?seq_contains("diamonds.start.time")><started>${ant["diamonds.start.time"]}</started></#if>
+        <#if ant?keys?seq_contains("diamonds.end.time")><finished>${ant["diamonds.end.time"]}</finished></#if>
+        <creator>${ant["env.USERNAME"]}</creator>
+        <hostname>${ant["env.COMPUTERNAME"]}</hostname>
+        <product>${ant["name"]}</product>
+        <build_system>${ant["build.system"]}</build_system>
+        <#if ant?keys?seq_contains("env.NUMBER_OF_PROCESSORS")><processor_count>${ant["env.NUMBER_OF_PROCESSORS"]}</processor_count></#if>
+    </build>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/diamonds/tests/templates/codescanner.xml.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,42 @@
+  <#--
+============================================================================ 
+Name        : diamonds-faults.ftl 
+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:
+
+============================================================================
+--> 
+<#include "header.ftl">
+  <faults>
+    <#if (doc)?? >
+      <#--<total severity="codescanner_error"><@totalNoOfSeverity type="error"/></total>-->
+      <total severity="codescanner_warning"><@totalNoOfSeverity type="high"/></total>
+    </#if>
+  </faults>
+<#include "footer.ftl">
+
+<#macro totalNoOfSeverity type>
+  <#assign count = 0>
+<#if (doc)?? >
+<#list doc["problemIndex/category/problem[@severity='${type}']/file"] as problem>
+    <#list problem?split("\n") as lineNo>
+        <#if lineNo?matches(".*[0-9].*")>
+            <#assign count = count + 1>
+        </#if>
+    </#list>
+</#list>
+</#if>
+${count}</#macro>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/diamonds/tests/templates/diamonds_finish.xml.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,26 @@
+<#--
+============================================================================ 
+Name        : finish.xml.ftl 
+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:
+
+============================================================================
+-->
+<#include "header.ftl">
+  <build>
+    <#if ant?keys?seq_contains("diamonds.end.time")><finished>${ant["diamonds.end.time"]}</finished></#if>
+  </build>
+<#include "footer.ftl">
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/diamonds/tests/templates/diamonds_signal.xml.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,43 @@
+<#--
+============================================================================ 
+Name        : finish.xml.ftl 
+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:
+
+============================================================================
+-->
+<#include "header.ftl"> 
+  <signals>
+      <#assign diamondsignalname = ""/>
+      <#assign diamondkeys = diamondSignal?keys>
+      <#list diamondkeys as diamondkey>
+      <#if diamondkey?contains("diamond.signal.name")>
+      <#list diamondSignal[diamondkey]?split(".") as signalname>
+      <#assign diamondsignalname = signalname/>
+      </#list>
+      <signal>
+      <#list diamondkeys as diamondkey>
+      <#if diamondkey?contains("${diamondsignalname}")>
+          <#if diamondkey?contains("diamond.signal.name.${diamondsignalname}")><name>${diamondSignal[diamondkey]}</name></#if>
+          <#if diamondkey?contains("diamond.error.message.${diamondsignalname}")><message>${diamondSignal[diamondkey]}</message></#if>
+          <#if diamondkey?contains("diamond.time.stamp.${diamondsignalname}")><timestamp>${diamondSignal[diamondkey]}</timestamp></#if>
+      </#if>
+      </#list>
+      </signal>
+      </#if>
+      </#list>
+  </signals>
+<#include "footer.ftl"> 
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/diamonds/tests/templates/diamonds_stage.xml.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,30 @@
+<#--
+============================================================================ 
+Name        : stage.xml.ftl 
+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:
+
+============================================================================
+--> 
+<#include "header.ftl">
+    <stages>
+      <stage>    
+            <name>${ant["logical.stage"]}</name>
+            <#if ant?keys?seq_contains("stage.start.time")><started>${ant["stage.start.time"]}</started></#if>
+            <#if ant?keys?seq_contains("stage.end.time")><finished>${ant["stage.end.time"]}</finished></#if>
+     </stage>
+    </stages>
+<#include "footer.ftl">
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/diamonds/tests/templates/diamonds_start.xml.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,25 @@
+<#--
+============================================================================ 
+Name        : start.xml.ftl 
+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:
+
+============================================================================
+--> 
+<#include "header.ftl">
+<#include "build.xml.ftl">
+<#include "locations.ftl">    
+<#include "footer.ftl">
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/diamonds/tests/templates/diamonds_status.xml.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,26 @@
+<#--
+============================================================================ 
+Name        : finish.xml.ftl 
+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:
+
+============================================================================
+-->
+<#include "header.ftl"> 
+  <build>
+    <#if diamonds?keys?seq_contains("build.status")><status>${diamonds["build.status"]}</status></#if>
+  </build>
+<#include "footer.ftl"> 
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/diamonds/tests/templates/faults.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,26 @@
+<#--
+============================================================================ 
+Name        : faults.ftl 
+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:
+
+============================================================================
+--> 
+<#include "macro.ftl">
+  <#if doc?? >
+      <@printall type='error'/>
+  </#if>
+  
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/diamonds/tests/templates/footer.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,22 @@
+<#--
+============================================================================ 
+Name        : footer.ftl 
+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:
+
+============================================================================
+--> 
+</diamonds-build>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/diamonds/tests/templates/header.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,25 @@
+<#--
+============================================================================ 
+Name        : header.ftl 
+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:
+
+============================================================================
+-->
+<#include "macro.ftl">
+<?xml version="1.0" encoding="UTF-8"?>
+<diamonds-build>
+    <schema>${schema_version}</schema>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/diamonds/tests/templates/locations.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,45 @@
+<#--
+============================================================================ 
+Name        : diamonds-locations.ftl 
+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:
+
+============================================================================
+-->
+    <locations>
+    <#if ant?keys?seq_contains("release.grace.dir") &&  !(ant["release.grace.dir"]?contains("${"))>
+        <location>
+              <link>${ant["release.grace.dir"]}</link>
+              <description>GRACE server</description>
+           </location>
+    </#if>
+    <#if ant?keys?seq_contains("publish.dir.list")>
+        <#list ant["publish.dir.list"]?split(",") as path>
+            <#if !path?contains("${")>
+                <location>
+                      <link>${path}</link>
+                      <description>Shared drive</description>
+                   </location>
+               </#if>
+           </#list>
+    </#if>
+    <#if (ant?keys?seq_contains("publish.dir") && !ant["publish.dir"]?contains("${"))>
+            <location>
+                   <link>${ant["publish.dir"]}</link>
+                   <description>Shared drive</description>
+            </location>
+    </#if>
+    </locations>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/diamonds/tests/templates/macro.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,94 @@
+<#--
+============================================================================ 
+Name        : diamonds-macro.ftl 
+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:
+
+============================================================================
+--> 
+<#macro numberof regex type>
+    <#assign count = 0>
+<#if doc?? >
+    <#list doc.logSummary.log as lognode>
+        <#if lognode.@filename[0]?matches(regex)>
+            <#assign count = count + lognode.build[".//message[@priority='${type}']"]?size>
+        </#if>
+    </#list>
+</#if>
+${count}</#macro>
+<#macro printfaults regex type>
+</#macro>
+
+<#macro printcomponents regex>
+</#macro>
+<#macro printall type>
+    <#if doc?? >
+        <#assign componentname="">
+        <#assign components="">
+        <#assign componenterrors = 0>
+        <#assign totalerrors = 0>
+        <#assign totalwarnings = 0>
+        <#assign componentwarnings = 0>
+        <#assign ls=doc.logSummary["//task/task/@name"]?sort>
+        <!-- print all the fault info -->
+        <faults>
+        <#list ls as task>
+            <#assign currenttask=task?parent>
+            <#assign parenttask=currenttask?parent>
+            <#assign currentcomponentname="${task}">
+            <#if componentname == "">
+                <#assign componentname="${task?parent.@name}">
+                <#assign components="${componentname}">
+            </#if>
+            <#if componentname != currentcomponentname>
+            <component>
+                <name>${componentname}</name>
+                <total severity="error">${componenterrors}</total>
+                <total severity="warning">${componentwarnings}</total>
+            </component>
+                <#assign componentname=currentcomponentname>
+                <#assign components= components + ",${componentname}">
+                <#assign totalerrors = totalerrors + componenterrors>
+                <#assign totalwarnings = totalwarnings + componentwarnings>
+                <#assign componenterrors = 0>
+                <#assign componentwarnings = 0>
+            </#if>
+            <#assign componenterrors = componenterrors + currenttask[".//message[@priority='error']"]?size>
+            <#assign componentwarnings = componentwarnings + currenttask[".//message[@priority='warning']"]?size>
+        </#list>
+            <component>
+                <name>${componentname}</name>
+                <total severity="error">${componenterrors}</total>
+                <total severity="warning">${componentwarnings}</total>
+            </component>
+            <!-- print summary of the errors -->
+            <#assign totalerrors = totalerrors + componenterrors>
+            <#assign totalwarnings = totalwarnings + componentwarnings>
+            <total severity="error">${totalerrors}</total>      
+            <total severity="warning">${totalwarnings}</total>
+            <total severity="warning_rvct_other">${totalerrors}</total>
+            <!-- todo update to calculate the correct value -->
+            <total severity="warning_rvct_bad">${totalwarnings}</total>
+        </faults>
+        <components>
+        <!-- all components -->
+        <#list components?split(",") as component >
+            <component>${component}</component>
+        </#list>
+        </components>
+    </#if>
+</#macro>
+<#assign schema_version=13/>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/diamonds/tests/templates/tool.xml.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,30 @@
+<#--
+============================================================================ 
+Name        : diamonds-tool.ftl 
+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:
+
+============================================================================
+-->
+<#include "header.ftl">
+       <tools>
+         <tool>
+           <name>SymSEE</name>
+           <version>${ant["symsee.version"]}</version>
+         </tool>
+       </tools>
+<#include "footer.ftl">
+       
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/diamonds/tests/templates/validate-policy-log.xml.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,32 @@
+<#--
+============================================================================ 
+Name        : validate-policy-log.xml.ftl 
+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:
+
+============================================================================
+--> 
+<#include "macro.ftl">
+<#include "header.ftl">
+<schema>${schema_version}</schema>
+<policyvalidation>
+<#if (doc)??!""?keys?seq_contains('validatePolicy')>
+<#list doc['validatePolicy'].policyvalidation.error as error>
+      <error type="${error.@type}" message="${error.@message}" value="${error.@value}"/>
+</#list>
+</#if>
+</policyvalidation>
+<#include "footer.ftl">
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/diamonds/tests/test_diamonds.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,136 @@
+<?xml version="1.0"?>
+<!-- 
+============================================================================ 
+Name        : test_diamonds.ant.xml 
+Part of     : Helium AntLib
+
+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="test-diamonds" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
+    <description>Helium Antlib diamonds unittests.</description>
+    
+    <dirname property="project.dir" file="${ant.file.test-diamonds}" />
+    <target name="version">
+        <echo message="version target for diamonds to verify sending data to diamonds" />
+    </target>
+
+    <target name="diamonds" />
+
+    <target name="compile-target">
+        <echo message="verify the build stage with input source xml file" />
+    </target>
+
+    <target name="codescanner">
+        <echo message="target verification with input source xml file" />
+    </target>
+
+    <target name="create-bom-log">
+        <echo message="target without input file and just to send the data" />
+    </target>
+
+    <target name="invalid-target-input-file">
+        <echo message="target with invalid input source xml file" />
+    </target>
+
+    <target name="invalid-stage-input-file">
+        <echo message="stage with invalid input source xml file" />
+    </target>
+
+    <target name="invalid-template-file">
+        <echo message="target with invalid template-file" />
+    </target>
+
+    <target name="invalid-ant-properties-input">
+        <echo message="target with invalid ant properties input" />
+    </target>
+
+    <target name="non-existing-ant-properties">
+        <echo message="target with non-existing-ant-properties" />
+    </target>
+
+    <target name="invalid-diamonds-server-properties">
+        <echo message="target with invalid-diamonds-server-properties" />
+    </target>
+
+    <target name="defer-type">
+        <echo message="version target for diamonds to verify sending data to diamonds" />
+    </target>
+
+    <target name="test-defer-type">
+        <antcall target="defer-type" />
+    </target>
+
+    <target name="test-create-bom-log">
+        <antcall target="create-bom-log" />
+    </target>
+
+    <target name="test-codescanner">
+        <antcall target="codescanner" />
+    </target>
+
+    <target name="test-invalid-target-input-file">
+        <antcall target="invalid-target-input-file" />
+    </target>
+
+    <target name="test-invalid-stage-input-file">
+        <antcall target="invalid-target-input-file" />
+        <echo message="stage with invalid input source xml file" />
+    </target>
+
+    <target name="test-invalid-template-file">
+        <antcall target="invalid-template-file" />
+    </target>
+
+    <target name="test-invalid-ant-properties-input">
+        <antcall target="invalid-ant-properties-input" />
+    </target>
+
+    <target name="test-non-existing-ant-properties">
+        <antcall target="non-existing-ant-properties" />
+    </target>
+
+    <target name="test-invalid-diamonds-server-properties">
+        <antcall target="invalid-diamonds-server-properties" />
+        <echo message="target with invalid-diamonds-server-properties" />
+    </target>
+
+    <target name="test-compile-target">
+        <antcall target="compile-target" />
+    </target>
+
+    <target name="test-version">
+        <antcall target="version" />
+    </target>
+
+    <target name="test-buildid-set">
+        <echo>${diamonds.build.id}</echo>
+        <au:assertTrue>
+            <isset property="diamonds.build.id"/>
+        </au:assertTrue>
+    </target>
+
+    <target name="test-buildid-notset">
+        <au:assertFalse>
+            <isset property="diamonds.build.id"/>
+        </au:assertFalse>
+    </target>
+
+    <target name="test-all" depends="test-buildid-notset, diamonds, test-buildid-set, test-defer-type, test-version,
+        test-create-bom-log,test-codescanner,test-compile-target,test-invalid-diamonds-server-properties,
+        test-non-existing-ant-properties,test-invalid-ant-properties-input,test-invalid-template-file,
+        test-invalid-target-input-file,test-invalid-stage-input-file " />
+</project>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/imaker/build.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : build.xml 
+Part of     : Helium AntLib
+
+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="helium-imaker">
+    <description>Helium Antlib iMaker build file.</description>
+    
+    <import file="${builder.dir}/java/macros.ant.xml" />
+    <property name="name" value="imaker"/>
+    
+</project>
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/imaker/demo/build.bat	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,27 @@
+@echo off
+
+rem
+rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+rem All rights reserved.
+rem This component and the accompanying materials are made available
+rem under the terms of the License "Eclipse Public License v1.0"
+rem which accompanies this distribution, and is available
+rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+rem
+rem Initial Contributors:
+rem Nokia Corporation - initial contribution.
+rem
+rem Contributors:
+rem
+rem Description: 
+rem
+
+setlocal
+if not defined JAVA_6_HOME (
+set TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
+) ELSE  set TESTED_JAVA=%JAVA_6_HOME%
+if exist %TESTED_JAVA% (set JAVA_HOME=%TESTED_JAVA%)
+set OLDANT_ARGS=-lib %CD%\..\lib -lib %CD%\..\..\lib -lib  %CD%\..\..\bin\helium-core.jar -lib  %CD%\..\..\bin\helium-imaker.jar -lib %CD%\..\..\antlibs
+ant %*
+endlocal
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/imaker/demo/build.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : build.xml 
+Part of     : Helium AntLib
+
+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="helium-antlib-imaker-demo" xmlns:hlm="http://www.nokia.com/helium">
+    <description>Helium Antlib imaker demo.</description>
+
+    <taskdef resource="com/nokia/helium/imaker/ant/antlib.xml" uri="http://www.nokia.com/helium" />
+
+    <property name="epocroot" location="K:/" />
+    <property name="product" value="?product??" />
+    
+    <hlm:emakeEngine id="imaker.ec">
+        <arg value="--emake-annofile=${epocroot}/imaker.anno.xml"/>
+        <arg value="--emake-autodepend=1"/>
+        <arg value="--emake-annodetail=basic,history,file,waiting"/>                            
+    </hlm:emakeEngine>
+    <hlm:defaultEngine id="imaker.default"/>
+    
+    <property name="imaker.engine" value="default" />
+    
+    <target name="demo-imaker">
+        <hlm:imaker epocroot="${epocroot}" output="${epocroot}/imaker.log" verbose="true" engineRefid="imaker.${imaker.engine}">
+            <hlm:imakerconfigurationset>
+                <hlm:imakerconfiguration>
+                    <makefileset>
+                        <include name="**/${product}/*ui.mk" />
+                    </makefileset>
+                    <targetset>
+                        <include name="core" />
+                        <include name="langpack_01" />
+                    </targetset>
+                    <variableset>
+                        <variable name="USE_FOTI" value="1" />
+                        <variable name="USE_FOTA" value="1" />
+                    </variableset>
+                    <variablegroup>
+                        <variable name="TYPE" value="rnd" />
+                    </variablegroup>
+                    <variablegroup>
+                        <variable name="TYPE" value="subcon" />
+                    </variablegroup>
+                </hlm:imakerconfiguration>
+            </hlm:imakerconfigurationset>
+        </hlm:imaker>
+    </target>
+    
+</project>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/imaker/imaker.rst	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,111 @@
+.. index::
+  module: Configuring ROM creation
+
+========================
+Configuring ROM creation
+========================
+
+Called by ``build-roms`` target.
+
+.. index::
+   single: imakerconfigurationset type
+
+The imakerconfigurationset type
+-------------------------------
+
+Information on how to configure the properties is given below:
+
+The imakerconfigurationset supports imakerconfiguration nested elements.
+
+'''imakerconfiguration''' element:
+
+.. csv-table:: Ant properties to modify
+   :header: "Attribute", "Description", "Values"
+
+   "``regionalVariation``", "Enable regional variation switching. - Deprecated (always false)", "false"
+
+The imakerconfiguration supports three sub-types:
+
+.. csv-table:: Ant properties to modify
+   :header: "Sub-type", "Description"
+
+   "``makefileset``", "Defines the list of iMaker configuration to run image creation on."
+   "``targetset``", "List of regular expression used to match which target need to be executed."
+   "``variableset``", "List of variable to set when executing iMaker."
+
+
+Example of configuration:
+
+.. code-block:: xml
+
+   <hlm:imakerconfigurationset>
+      <hlm:imakerconfiguration regionalVariation="true">
+         <makefileset>
+            <include name="**/product_name/*ui.mk" />
+         </makefileset>
+         <targetset>
+            <include name="^core${r'$'}" />
+            <include name="langpack_\d+" />
+            <include name="^custvariant_.*${r'$'}" />
+            <include name="^udaerase${r'$'}" />
+         </targetset>
+         <variableset>
+            <variable name="USE_FOTI" value="0" />
+            <variable name="USE_FOTA" value="1" />
+            <variable name="TYPE" value="rnd" />
+         </variableset>
+      </hlm:imakerconfiguration>
+   </hlm:imakerconfigurationset>
+
+
+Other example using product list and variable group:
+
+.. code-block:: xml
+
+   <hlm:imakerconfigurationset>
+      <hlm:imakerconfiguration>
+         <hlm:product list="product_name" ui="true" failonerror="false" />
+         <targetset>
+            <include name="^core${r'$'}" />
+            <include name="langpack_\d+" />
+            <include name="^custvariant_.*${r'$'}" />
+            <include name="^udaerase${r'$'}" />
+         </targetset>
+         <variableset>
+            <variable name="USE_FOTI" value="0" />
+            <variable name="USE_FOTA" value="1" />
+         </variableset>
+         <variablegroup>
+            <variable name="TYPE" value="rnd" />
+         </variablegroup>
+         <variablegroup>
+            <variable name="TYPE" value="subcon" />
+         </variablegroup>
+         <variablegroup>
+            <variable name="TYPE" value="prd" />
+         </variablegroup>
+      </hlm:imakerconfiguration>
+   </hlm:imakerconfigurationset>
+
+
+.. index::
+   single: The iMaker Task
+
+How to configure the target
+---------------------------
+
+The target can be configured by defining an hlm:imakerconfigurationset element with the '''imaker.rom.config''' reference.
+
+.. code-block:: xml
+    
+    <hlm:imakerconfigurationset id="imaker.rom.config">
+    ...
+    </hlm:imakerconfigurationset>
+
+The other configurable element is the engine. The '''imaker.engine''' property defines the reference
+to the engine configuration to use for building the roms. Helium defines two engines by default:
+* imaker.engine.default: multithreaded engine (hlm:defaultEngine type)
+* imaker.engine.ec: ECA engine - cluster base execution (hlm:emakeEngine type)
+  
+If the property is not defined Helium will guess the best engine to used based on the build.system property.
+ 
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/imaker/ivy.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+============================================================================ 
+Name        : ivy.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:
+
+============================================================================  
+-->
+<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
+    <info
+        organisation="com.nokia.helium"
+        module="helium-imaker"
+        status="integration">
+  </info>
+  <dependencies>
+    <dependency name="helium-core" rev="latest.integration" conf="default" />
+  </dependencies>
+</ivy-module>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/imaker/src/com/nokia/helium/imaker/HelpConfigStreamConsumer.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,65 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+package com.nokia.helium.imaker;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.codehaus.plexus.util.cli.StreamConsumer;
+
+/**
+ * This class implements the help-config output parser for iMaker. 
+ * The list of configuration will be stored into an internal list 
+ * object. 
+ * 
+ */
+public class HelpConfigStreamConsumer implements StreamConsumer {
+    private List<String> configurations = new ArrayList<String>();
+    
+    /**
+     * {@inheritDoc}
+     * Only list starting with '/' and ending with '.mk' will be considered.
+     */
+    @Override
+    public void consumeLine(String line) {
+        line = line.trim();
+        if (line.startsWith("/") && line.endsWith(".mk")) {
+            configurations.add(line);
+        }
+    }
+    
+    /**
+     * Get the list of configurations as File objects.
+     * @return
+     */
+    public List<File> getConfigurations(File epocroot) {
+        List<File> confs = new ArrayList<File>();
+        for (String config : configurations) {
+            confs.add(new File(epocroot, config));
+        }
+        return confs; 
+    }
+    
+    /**
+     * Get the list of configuration as strings.
+     * @return the list of configurations
+     */
+    public List<String> getConfigurations() {
+        return configurations;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/imaker/src/com/nokia/helium/imaker/HelpTargetListStreamConsumer.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,52 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+package com.nokia.helium.imaker;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.codehaus.plexus.util.cli.StreamConsumer;
+
+/**
+ *  Helper class to parse the output form help-target-*-list. 
+ *
+ */
+public class HelpTargetListStreamConsumer implements StreamConsumer {
+
+    private List<String> targets = new ArrayList<String>();
+    
+    /**
+     * {@inheritDoc}
+     * iMaker targets should match the following patterns to be selected: [A-za-z0-9\\-_%]+.
+     */
+    @Override
+    public void consumeLine(String line) {
+        line = line.trim();
+        if (line.matches("^[A-za-z0-9\\-_%]+$")) {
+            targets.add(line);
+        }
+    }
+
+    /**
+     * Get the list of found targets.
+     * @return the target list.
+     */
+    public List<String> getTargets() {
+        return targets;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/imaker/src/com/nokia/helium/imaker/IMaker.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,190 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+package com.nokia.helium.imaker;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+
+
+import com.nokia.helium.core.plexus.CommandBase;
+import com.nokia.helium.core.plexus.StreamRecorder;
+
+import org.apache.log4j.Logger;
+
+/**
+ * This class implements a wrapper around iMaker.
+ * It helps to introspect:
+ *   <li> variables
+ *   <li> targets
+ *   <li> configurations
+ *
+ */
+public class IMaker extends CommandBase<IMakerException> {
+    private static final String TEMP_ROMBUILD_DIR = "epoc32/rombuild/temp";
+    private final Logger log = Logger.getLogger(getClass());
+    private File epocroot;
+
+    /**
+     * Create an iMaker wrapper class with a specific epocroot.
+     * @param epocroot
+     */
+    public IMaker(File epocroot) {
+        this.epocroot = epocroot;
+        
+    }
+    
+    /**
+     * Creates a temp working dir for the rom image creation.
+     * @return
+     * @throws IOException
+     */
+    public File createWorkDir() throws IMakerException {
+        try {
+            File tempRootDir = new File(getEpocroot(), TEMP_ROMBUILD_DIR);
+            tempRootDir.mkdirs();
+            File tempDir = File.createTempFile("helium-imaker", "", tempRootDir);
+            tempDir.delete();
+            tempDir.mkdirs();
+            return tempDir;
+        } catch (IOException e) {
+            throw new IMakerException(e.getMessage(), e);
+        }
+    }
+    
+    /**
+     * Epocroot location.
+     * @return the epocroot location
+     */
+    public File getEpocroot() {
+        return epocroot;
+    }
+
+    /**
+     * Get the iMaker version.
+     * @return the current iMaker version.
+     * @throws IMakerException is thrown in case of an iMaker execution error.
+     */
+    public String getVersion() throws IMakerException {
+        log.debug("getVersion");
+        String[] args = new String[1];
+        args[0] = "version";
+        StreamRecorder rec = new StreamRecorder();
+        execute(args, rec);
+        return rec.getBuffer().toString().trim();
+    }
+
+    /**
+     * Get the value of a particular variable from iMaker configuration.
+     * @param name the variable name
+     * @return the value or null if the variable does not exist.
+     * @throws IMakerException
+     */
+    public String getVariable(String name) throws IMakerException {
+        log.debug("getVariable: " + name);
+        String[] args = new String[1];
+        args[0] = "print-" + name;
+        PrintVarSteamConsumer consumer = new PrintVarSteamConsumer(name);
+        execute(args, consumer);
+        return consumer.getValue();
+    }
+
+    /**
+     * Get the value of a particular variable from iMaker configuration for a particular
+     * configuration.
+     * @param name the variable name
+     * @return the value or null if the variable does not exist.
+     * @throws IMakerException
+     */
+    public String getVariable(String name, File configuration) throws IMakerException {
+        log.debug("getVariable: " + name + " - " + configuration);
+        String[] args = new String[3];
+        args[0] = "-f";
+        args[1] = configuration.getAbsolutePath();
+        args[2] = "print-" + name;
+        PrintVarSteamConsumer consumer = new PrintVarSteamConsumer(name);
+        execute(args, consumer);
+        return consumer.getValue();
+    }
+
+    /**
+     * Get the list of available iMaker configurations.
+     * @return a list of configurations
+     * @throws IMakerException
+     */
+    public List<String> getConfigurations() throws IMakerException {
+        log.debug("getConfigurations");
+        String[] args = new String[1];
+        args[0] = "help-config";
+        HelpConfigStreamConsumer consumer = new HelpConfigStreamConsumer();
+        execute(args, consumer);
+        return consumer.getConfigurations();
+    }
+    
+    /**
+     * Get the a list of target supported by a specific configuration.  
+     * @param configuration the configuration to use
+     * @return the list of targets.
+     * @throws IMakerException
+     */
+    public List<String> getTargets(String configuration) throws IMakerException {
+        log.debug("getConfigurations");
+        String[] args = new String[3];
+        args[0] = "-f";
+        args[1] = configuration;
+        args[2] = "help-target-*-list";
+        HelpTargetListStreamConsumer consumer = new HelpTargetListStreamConsumer();
+        execute(args, consumer);
+        return consumer.getTargets();
+    }
+
+    /**
+     * Get the target list for the configuration.
+     * @param configuration a File object representing the configuration location.
+     * @return a list of targets.
+     * @throws IMakerException
+     */
+    public List<String> getTargets(File configuration) throws IMakerException {
+        return getTargets(configuration.getAbsolutePath());
+    }
+    
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    protected String getExecutable() {
+        return "imaker";
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public File getWorkingDir() {
+        return getEpocroot();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    protected void throwException(String message, Throwable t)
+            throws IMakerException {
+        throw new IMakerException(message, t);        
+    }
+    
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/imaker/src/com/nokia/helium/imaker/IMakerException.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,43 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+package com.nokia.helium.imaker;
+
+/**
+ * Exception raise by the iMaker framework.
+ *
+ */
+public class IMakerException extends Exception {
+
+    private static final long serialVersionUID = -6918895304070211899L;
+
+    /**
+     * An exception with message. 
+     * @param message
+     */
+    public IMakerException(String message) {
+        super(message);
+    }
+
+    /**
+     * An exception with message and cause.
+     * @param message
+     */
+    public IMakerException(String message, Throwable t) {
+        super(message, t);
+    }
+    
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/imaker/src/com/nokia/helium/imaker/PrintVarSteamConsumer.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,67 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+package com.nokia.helium.imaker;
+
+import org.codehaus.plexus.util.cli.StreamConsumer;
+
+/**
+ * Parsing iMaker printvar calls.
+ * Output from iMaker should match:
+ * NAME = `some content'
+ *
+ */
+public class PrintVarSteamConsumer implements StreamConsumer {
+
+    private String name;
+    private String value;
+    private boolean inParsing;
+    
+    /**
+     * Construct a PrintVarSteamConsumer for a variable named by name.
+     * @param name
+     */
+    public PrintVarSteamConsumer(String name) {
+        this.name = name;
+    }
+    
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void consumeLine(String line) {
+        String varPrefix = name + " = `";
+        if (!inParsing && line.startsWith(varPrefix)) {
+            value = line.substring(varPrefix.length());
+            inParsing = true;
+        } else if (inParsing) {
+            value += "\n" + line;
+        }
+        if (value != null && value.endsWith("'")) {
+            value = value.substring(0, value.length() - 1);
+            inParsing = false;
+        }
+    }
+    
+    /**
+     * Get the variable value returned by iMaker.
+     * @return the variable content return by iMaker.
+     */
+    public String getValue() {
+        return value;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/imaker/src/com/nokia/helium/imaker/ant/Command.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,148 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+package com.nokia.helium.imaker.ant;
+
+import java.util.ArrayList;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+
+/**
+ * Abstract a command call. The default command will be imaker.
+ * 
+ */
+public class Command {
+    // default command is iMaker
+    private String command = "imaker";
+    private List<String> args = new ArrayList<String>();
+    private Map<String, String> variables = new Hashtable<String, String>();
+    private String target = "";
+    
+    /**
+     * Get the target name.
+     * @return the target name.
+     */
+    public String getTarget() {
+        return target;
+    }
+
+    /**
+     * Set the command name
+     * @param target the command name.
+     */
+    public void setTarget(String target) {
+        this.target = target;
+    }
+
+    /**
+     * Get the command name.
+     * @return the command name.
+     */
+    public String getCommand() {
+        return command;
+    }
+
+    /**
+     * Set the command name 
+     * @param command the command name.
+     */
+    public void setCommand(String command) {
+        this.command = command;
+    }
+    
+    /**
+     * Set the list of arguments based on a list of String.
+     * @param args the arg list.
+     */
+    public void setArguments(List<String> args) {
+        this.args.clear();
+        this.args.addAll(args);
+    }
+    
+    /**
+     * Append an argument to the argument list.
+     * @param arg the argument to add.
+     */
+    public void addArgument(String arg) {
+        this.args.add(arg);
+    }
+    
+    /**
+     * Get the list of arguments.
+     * @return the list of arguments
+     */
+    public List<String> getArguments() {
+        return args;
+    }
+
+    /**
+     * Get the map of variables.
+     * @return a map representing variables for current object.
+     */
+    public Map<String, String> getVariables() {
+        return variables;
+    }
+
+    /**
+     * Set variables using vars set of variables.
+     * @param vars
+     */
+    public void setVariables(Map<String, String> vars) {
+        variables.clear();
+        variables.putAll(vars);
+    }
+
+    /**
+     * Add all the variables from vars.
+     * @param vars a set of variables
+     */
+    public void addVariables(Map<String, String> vars) {
+        variables.putAll(vars);
+    }
+
+    /**
+     * Add a variable to the command.
+     * @param name the variable name
+     * @param value the variable value
+     */
+    public void addVariable(String name, String value) {
+        variables.put(name, value);
+    }
+
+    /**
+     * Convert the current object as a command line string.
+     * The final string will be contains the data in the following
+     * order:
+     *   <li> command
+     *   <li> arguments
+     *   <li> variables
+     *   <li> target 
+     * @return
+     */
+    public String getCmdLine() {
+        String cmdLine = getCommand();
+        for (String arg : getArguments()) {
+            cmdLine += " " + arg;            
+        }
+        for (Entry<String, String> e : getVariables().entrySet()) {
+            cmdLine += " " + e.getKey() + "=" + e.getValue();            
+        }
+        cmdLine += " " + getTarget();
+        return cmdLine;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/imaker/src/com/nokia/helium/imaker/ant/Engine.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,45 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+package com.nokia.helium.imaker.ant;
+
+import java.util.List;
+
+import com.nokia.helium.imaker.IMakerException;
+import com.nokia.helium.imaker.ant.taskdefs.IMakerTask;
+
+/**
+ * Engine interface. Methods needed by the IMaker task to
+ * build the roms. 
+ *
+ */
+public interface Engine {
+    
+    /**
+     * Set the current IMakerTask.
+     * @param task the task instance.
+     */
+    void setTask(IMakerTask task);
+
+    /**
+     * Build the Commands.
+     * The sublist will be build in a serialize way,
+     * the content of each sublist will be built in parallel.
+     * @param cmdSet
+     * @throws IMakerException
+     */
+    void build(List<List<Command>> cmdSet) throws IMakerException;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/imaker/src/com/nokia/helium/imaker/ant/IMakerCommandSet.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,37 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+package com.nokia.helium.imaker.ant;
+
+import java.util.List;
+
+import com.nokia.helium.imaker.IMaker;
+
+/**
+ * This interface describes the API a configuration object should define.   
+ *
+ */
+public interface IMakerCommandSet {
+
+    /**
+     * Returns a list of command List.
+     * The sublist will be build sequentially. Their content can be built
+     * in parallel.
+     * @return a list of Command list
+     */
+    List<List<Command>> getCommands(IMaker imaker);
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/imaker/src/com/nokia/helium/imaker/ant/antlib.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : antlib.xml 
+Part of     : Helium AntLib
+
+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:
+
+============================================================================
+-->
+<antlib>
+    <!-- Task definition -->
+    <taskdef name="imaker" classname="com.nokia.helium.imaker.ant.taskdefs.IMakerTask" />
+
+
+    <!-- Type definition - configuration -->
+    <typedef name="imakerconfiguration" classname="com.nokia.helium.imaker.ant.types.Configuration"/>
+    <typedef name="imakerconfigurationset" classname="com.nokia.helium.imaker.ant.types.ConfigurationSet"/>
+    <typedef name="product" classname="com.nokia.helium.imaker.ant.types.Product"/>
+
+    <!-- Type definition - Engine -->
+    <typedef name="defaultEngine" classname="com.nokia.helium.imaker.ant.engines.JavaEngine" />
+    <typedef name="emakeEngine" classname="com.nokia.helium.imaker.ant.engines.EmakeEngine" />
+</antlib>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/imaker/src/com/nokia/helium/imaker/ant/engines/Emake.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,65 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+package com.nokia.helium.imaker.ant.engines;
+
+import java.io.File;
+
+import com.nokia.helium.core.plexus.CommandBase;
+import com.nokia.helium.imaker.IMakerException;
+
+/**
+ * Simple emake wrapper based on the CommandBase class.
+ *
+ */
+public class Emake extends CommandBase<IMakerException> {
+
+    private File workingDir = new File(".");
+    
+    /**
+     * @return emake.
+     */
+    @Override
+    protected String getExecutable() {
+        return "emake";
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    protected void throwException(String message, Throwable t) throws IMakerException {
+        throw new IMakerException(message, t);
+    }
+
+    /**
+     * Set the working directory where emake should be called.
+     * @param workingDir the working directory.
+     */
+    public void setWorkingDir(File workingDir) {
+        this.workingDir = workingDir;
+    }
+
+    /**
+     * Get the workingDir defined by the user.
+     * @return the working dir.
+     */
+    @Override
+    public File getWorkingDir() {
+        return workingDir;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/imaker/src/com/nokia/helium/imaker/ant/engines/EmakeEngine.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,250 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+package com.nokia.helium.imaker.ant.engines;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.FileNotFoundException;
+import java.io.OutputStreamWriter;
+import java.io.StringWriter;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.log4j.Logger;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.types.DataType;
+
+import com.nokia.helium.core.plexus.AntStreamConsumer;
+import com.nokia.helium.core.plexus.FileStreamConsumer;
+import com.nokia.helium.imaker.IMakerException;
+import com.nokia.helium.imaker.ant.Command;
+import com.nokia.helium.imaker.ant.Engine;
+import com.nokia.helium.imaker.ant.taskdefs.IMakerTask;
+
+import freemarker.cache.ClassTemplateLoader;
+import freemarker.cache.FileTemplateLoader;
+import freemarker.template.Configuration;
+import freemarker.template.Template;
+import freemarker.template.TemplateException;
+
+/**
+ *
+ * Simplest possible definition of the type, e.g:
+ * <pre>
+ * &lt;emakeEngine id="imaker.ec" /&gt;
+ * </pre>
+ * 
+ * Emake engine with some custom configuration.
+ * <pre> 
+ * &lt;emakeEngine id="imaker.ec" &gt;
+ *     &lt;arg value="--emake-annofile=imaker.anno.xml" /&gt;
+ * &lt;/emakeEngine&gt;
+ * </pre>
+ * 
+ * @ant.type name=emakeEngine category="imaker"
+ */
+public class EmakeEngine extends DataType implements Engine {
+    private Logger log = Logger.getLogger(getClass());
+    private IMakerTask task;
+    private List<Arg> customArgs = new ArrayList<Arg>(); 
+    private File template;
+    
+    /**
+     * Holder for emake custom args. 
+     */
+    public class Arg {
+        private String value;
+
+        /**
+         * Get the value of the argument.
+         * @return the argument
+         */
+        public String getValue() {
+            return value;
+        }
+
+        /**
+         * Define the additional command line parameter you want to add to emake
+         * invocation.
+         * @param value the additional command line parameter
+         * @ant.required
+         */
+        public void setValue(String value) {
+            this.value = value;
+        }
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void build(List<List<Command>> cmdSet) throws IMakerException {
+        File makefile = null;
+        try {
+            // Writing the makefile.
+            makefile = writeMakefile(cmdSet);
+            
+            // Running Emake
+            runEmake(makefile);
+        } finally {
+            if (makefile != null) {
+                makefile.delete();
+            }
+        }
+    }
+
+    /**
+     * Returns the jar file name containing this class
+     * @return a File object or null if not found.
+     * @throws IMakerException
+     */
+    protected File getJarFile() throws IMakerException {
+        URL url = this.getClass().getClassLoader().getResource(this.getClass().getName().replace('.', '/') + ".class");
+        if (url.getProtocol().equals("jar") && url.getPath().contains("!/")) {
+            String fileUrl = url.getPath().split("!/")[0];
+            try {
+                return new File(new URL(fileUrl).getPath());
+            } catch (MalformedURLException e) {
+                throw new IMakerException("Error determining the jar file where "
+                        + this.getClass().getName() + " is located.", e);
+            }
+        }
+        return null;
+    }
+    /**
+     * Run emake using defined makefile.
+     * @param makefile the makefile to build
+     * @throws IMakerException
+     */
+    private void runEmake(File makefile) throws IMakerException {
+        FileStreamConsumer output = null;
+        if (task.getOutput() != null) {
+            try {
+                output = new FileStreamConsumer(task.getOutput());
+            } catch (FileNotFoundException e) {
+                throw new IMakerException("Error creating the stream recorder: " + e.getMessage(), e);
+            }
+        }
+        try {
+            Emake emake = new Emake();
+            emake.setWorkingDir(task.getEpocroot());
+            List<String> args = new ArrayList<String>();
+            for (Arg arg : customArgs) {
+                if (arg.getValue() != null) {
+                    args.add(arg.getValue());
+                }
+            }
+            args.add("-f");
+            args.add(makefile.getAbsolutePath());
+            args.add("all");
+            if (task.isVerbose()) {
+                emake.addOutputLineHandler(new AntStreamConsumer(task));
+            }
+            emake.addErrorLineHandler(new AntStreamConsumer(task, Project.MSG_ERR));
+            if (output != null) {
+                emake.addOutputLineHandler(output);
+                emake.addErrorLineHandler(output);
+            }
+            emake.execute(args.toArray(new String[args.size()]));
+        } catch (IMakerException e) {
+            throw new IMakerException("Error executing emake: " + e.getMessage(), e);
+        } finally {
+            if (output != null) {
+                output.close();
+            }
+        }
+    }
+    
+    /**
+     * Create the Makefile based on the cmdSet build sequence. 
+     * @param cmdSet
+     * @return
+     * @throws IMakerException 
+     * @throws IOException
+     */
+    private File writeMakefile(List<List<Command>> cmdSet) throws IMakerException {
+        try {
+            Configuration cfg = new Configuration();
+            Template template = null;
+            if (this.template != null) {
+                if (!this.template.exists()) {
+                    throw new IMakerException("Could not find template file: " + this.template.getAbsolutePath());
+                }
+                task.log("Loading template: " + this.template.getAbsolutePath());
+                cfg.setTemplateLoader(new FileTemplateLoader(this.template.getParentFile()));
+                template = cfg.getTemplate(this.template.getName());
+            } else {
+                cfg.setTemplateLoader(new ClassTemplateLoader(this.getClass(), ""));
+                template = cfg.getTemplate("build_imaker_roms_signing.mk.ftl");
+            }
+            File makefile = File.createTempFile("helium-imaker", ".mk", task.getEpocroot());
+            makefile.deleteOnExit();
+            StringWriter out = new StringWriter();
+            Map<String, Object> data = new Hashtable<String, Object>();
+            data.put("cmdSets", cmdSet);
+            data.put("makefile", makefile.getAbsoluteFile());
+            data.put("java_home", System.getProperty("java.home"));
+            File jar = getJarFile();
+            if (jar != null) {
+                task.log("Using " + jar + " as the utility container, make sure the file is available under an emake root.");
+                data.put("java_utils_classpath", jar.getAbsolutePath());
+            }
+            template.process(data, out);
+            log.debug(out.getBuffer().toString());
+        
+            OutputStreamWriter output = new OutputStreamWriter(new FileOutputStream(makefile));
+            output.append(out.getBuffer().toString());
+            output.close();
+            return makefile;
+        } catch (IOException e) {
+           throw new IMakerException("Error generating the makefile: " + e.getMessage(), e);
+        } catch (TemplateException e) {
+            throw new IMakerException("Error while rendering the makefile template: " + e.getMessage(), e);
+        }
+    }
+    
+    /**
+     * Add custom parameters for the emake invocation.
+     * @return a new Arg object.
+     */
+    public Arg createArg() {
+        Arg arg = new Arg();
+        customArgs.add(arg);
+        return arg;
+    }
+    
+    
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void setTask(IMakerTask task) {
+        this.task = task;
+    }
+    
+    /**
+     * Defines an alternate template to use to generate the build sequence for emake.
+     * @ant.not-required
+     */
+    public void setTemplate(File template) {
+        this.template = template;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/imaker/src/com/nokia/helium/imaker/ant/engines/JavaEngine.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,194 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+package com.nokia.helium.imaker.ant.engines;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map.Entry;
+import java.util.concurrent.ArrayBlockingQueue;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.types.DataType;
+
+import com.nokia.helium.core.plexus.StreamRecorder;
+import com.nokia.helium.imaker.IMaker;
+import com.nokia.helium.imaker.IMakerException;
+import com.nokia.helium.imaker.ant.Command;
+import com.nokia.helium.imaker.ant.Engine;
+import com.nokia.helium.imaker.ant.taskdefs.IMakerTask;
+
+/**
+ * Engine purely based on Java. Parallelisation is
+ * implemented using multithreading.
+ * 
+ * <pre>
+ * &lt;defaultEngine id="imaker.default" threads="4" /&gt;
+ * </pre>
+ * 
+ * @ant.type name=defaultEngine category="imaker"
+ */
+public class JavaEngine extends DataType implements Engine {
+
+    private IMakerTask task;
+    private OutputStreamWriter output;
+    private int threads = 1;
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void setTask(IMakerTask task) {
+        this.task = task;
+    }
+    
+    /**
+     * Defines the number of iMaker jobs running in
+     * parallel. 
+     * @ant.not-required Default value is 1.
+     */
+    public void setThreads(int threads) {
+        this.threads = threads;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void build(List<List<Command>> cmds) throws IMakerException {
+        task.log("Building with Ant engine.");
+        if (threads <= 0) {
+            throw new BuildException("'threads' must be >= 0. (current value: " + threads + ")");
+        }
+        openLog();
+        // Do something with the configurations
+        for (List<Command> cmdlist : cmds) {
+            task.log("Building command list in parallel.");
+            if (cmdlist.size() > 0) {
+                ArrayBlockingQueue<Runnable> queue = new ArrayBlockingQueue<Runnable>(cmdlist.size());
+                ThreadPoolExecutor threadPool = new ThreadPoolExecutor(threads, threads, 10, TimeUnit.MILLISECONDS, queue);
+                task.log("Adding " + cmdlist.size() + " to queue.");
+                for (final Command cmd : cmdlist) {
+                    // Create a Runnable to wrap the image
+                    // building.
+                    threadPool.execute(new Runnable() {
+                        public void run() {
+                            try {
+                                buildCommand(cmd);
+                            } catch (IMakerException e) {
+                                task.log(e.getMessage(), Project.MSG_ERR);
+                            }
+                        }
+                    });
+                }
+                threadPool.shutdown();
+                try {
+                    while (!threadPool.isTerminated()) {
+                        threadPool.awaitTermination(100, TimeUnit.MILLISECONDS);
+                    }
+                } catch (InterruptedException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        closeLog();
+    }
+
+  
+    /**
+     * Build a Command.
+     * @param cmd
+     * @throws IMakerException
+     */
+    protected void buildCommand(Command cmd) throws IMakerException {
+        IMaker imaker = task.getIMaker();
+        StreamRecorder rec = new StreamRecorder();
+        imaker.addOutputLineHandler(rec);
+        imaker.addErrorLineHandler(rec);
+        
+        rec.consumeLine("-- " + cmd.getCmdLine());
+        rec.consumeLine("++ Started at " + new Date());
+        rec.consumeLine("+++ HiRes Start " + new Date().getTime());
+        
+        List<String> args = new ArrayList<String>();
+        args.addAll(cmd.getArguments());
+        // Setting the working dir for the image creation.
+        File tempDir = imaker.createWorkDir();
+        args.add("WORKDIR=" + tempDir.getAbsolutePath());
+        // Pushing custom variables
+        for (Entry<String, String> e : cmd.getVariables().entrySet()) {
+            if (e.getKey().equals("WORKDIR")) {
+                task.log("WORKDIR cannot be defined by the user, the value will be ignored.", Project.MSG_WARN);
+            } else {
+                args.add(e.getKey() + "=" + e.getValue());
+            }
+        }
+        // Setting the target
+        args.add(cmd.getTarget());                
+        try {
+            imaker.execute(args.toArray(new String[args.size()]));
+        } catch (IMakerException e) {
+            // logging iMaker execution error to the 
+            // task and the output log.
+            task.log(e.getMessage(), Project.MSG_ERR);
+            rec.consumeLine(e.getMessage());
+        } finally {
+            rec.consumeLine("+++ HiRes End " + new Date().getTime());
+            rec.consumeLine("++ Finished at " + new Date());
+        }
+        // writing data
+        writeLog(rec.getBuffer().toString());
+    }
+    
+    private void openLog() throws IMakerException {
+        if (task.getOutput() != null) {
+            try {
+                output = new OutputStreamWriter(new FileOutputStream(task.getOutput()));
+            } catch (FileNotFoundException e) {
+                throw new IMakerException(e.getMessage(), e);
+            }
+        }
+    }
+
+    private synchronized void writeLog(String str) throws IMakerException {
+        if (output != null) {
+            try {
+                output.write(str);
+            } catch (IOException e) {
+                throw new IMakerException(e.getMessage(), e);
+            }
+        }
+    }
+    
+    private void closeLog() throws IMakerException {
+        if (output != null) {
+            try {
+                output.close();
+            } catch (IOException e) {
+                throw new IMakerException(e.getMessage(), e);
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/imaker/src/com/nokia/helium/imaker/ant/engines/build_imaker_roms_signing.mk.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,128 @@
+<#--
+============================================================================ 
+Name        : build_imaker_roms_signing.mk.ftl 
+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:
+
+============================================================================
+-->
+############################################################################
+# Makefile generated by the emake engine 
+############################################################################
+
+# Are we using linux?
+USE_UNIX  := $(if $(findstring cmd.exe,$(SHELL))$(findstring mingw,$(call lcase,$(MAKE))),0,1)
+EXECUTOR_CLASS = com.nokia.helium.imaker.utils.ParallelExecutor
+
+# Path conversion macro
+true        = $(if $(filter-out 0,$(subst 0,0 ,$1)),1)
+iif         = $(if $(call true,$1),$2,$3)
+lcase       = $(call tr,$([A-Z]),$([a-z]),$1)
+pathconv    = $(call iif,$(USE_UNIX),$(subst \,/,$1),$(subst /,\,$1))
+
+# Some variables
+ROMBUILD_TEMPDIR=$(call pathconv,epoc32/rombuild/temp)
+
+
+$(ROMBUILD_TEMPDIR)/:
+	-mkdir $(ROMBUILD_TEMPDIR)
+
+<#assign cid=0>
+<#assign iid=0>
+<#assign deps="">
+<#list cmdSets as cmds>
+<#assign configdeps="">
+<#assign configimagedeps="">
+<#assign firstiid=iid>
+
+#pragma runlocal
+configuration_${cid}-dir: $(ROMBUILD_TEMPDIR)/config_${iid} <#if (cid>0)>configuration_${cid-1}</#if> <#if (cmds?size == 0)>;</#if>
+	$(call iif,$(USE_UNIX),touch,@echo off >) $(ROMBUILD_TEMPDIR)/command-dir-list-${cid}.txt
+    <#list cmds as cmd>
+        <#assign cmdline="">
+        <#list cmd.getArguments() as arg>
+            <#assign cmdline="${cmdline} ${arg}">
+        </#list>
+        <#assign vars=cmd.getVariables()>
+        <#list vars?keys as var>
+            <#assign cmdline="${cmdline} ${var}=${vars[var]}">
+        </#list>
+	@echo $(call iif,$(USE_UNIX),,cmd /c) ${cmd.getCommand()} WORKDIR=$(ROMBUILD_TEMPDIR)/config_${iid} ${cmdline} ${cmd.getTarget()}-dir >> $(ROMBUILD_TEMPDIR)/command-dir-list-${cid}.txt 
+<#assign iid=iid+1>
+    </#list>
+	-@${java_home}/bin/java -cp "${java_utils_classpath}" $(EXECUTOR_CLASS) $(ROMBUILD_TEMPDIR)/command-dir-list-${cid}.txt
+
+
+<#assign iid=firstiid>
+    <#list cmds as cmd>
+        <#assign cmdline="">
+        <#list cmd.getArguments() as arg>
+            <#assign cmdline="${cmdline} ${arg}">
+        </#list>
+        <#assign vars=cmd.getVariables()>
+        <#list vars?keys as var>
+            <#assign cmdline="${cmdline} ${var}=${vars[var]}">
+        </#list>
+#
+#  Building configuration ${iid}.
+#
+$(ROMBUILD_TEMPDIR)/config_${iid}/: $(ROMBUILD_TEMPDIR)
+	-mkdir $(call pathconv,$(ROMBUILD_TEMPDIR)/config_${iid})
+
+
+rom_${iid}-image: configuration_${cid}-dir
+	@echo -- ${cmd.getCmdLine()}-image
+	-@perl -e "print '++ Started at '.localtime().\"\n\""
+	-@python -c "import time; print '+++ HiRes Start ',time.time();"
+	-${cmd.getCommand()} WORKDIR=$(ROMBUILD_TEMPDIR)/config_${iid} ${cmdline} ${cmd.getTarget()}-image
+	-@python -c "import time; print '+++ HiRes End ',time.time();"
+	-@perl -e "print '++ Finished at '.localtime().\"\n\""
+
+<#assign configimagedeps="${configimagedeps} rom_${iid}-image">
+<#assign iid=iid+1>
+    </#list>
+
+configuration_${cid}-image: ${configimagedeps} ;
+
+<#assign iid=firstiid>
+#pragma runlocal
+configuration_${cid}-e2flash: configuration_${cid}-image
+	$(call iif,$(USE_UNIX),touch,@echo off >) $(ROMBUILD_TEMPDIR)/command-e2flash-list-${cid}.txt
+    <#list cmds as cmd>
+        <#assign cmdline="">
+        <#list cmd.getArguments() as arg>
+            <#assign cmdline="${cmdline} ${arg}">
+        </#list>
+        <#assign vars=cmd.getVariables()>
+        <#list vars?keys as var>
+            <#assign cmdline="${cmdline} ${var}=${vars[var]}">
+        </#list>
+	@echo $(call iif,$(USE_UNIX),,cmd /c) ${cmd.getCommand()} WORKDIR=$(ROMBUILD_TEMPDIR)/config_${iid} ${cmdline} ${cmd.getTarget()}-e2flash >> $(ROMBUILD_TEMPDIR)/command-e2flash-list-${cid}.txt 
+<#assign iid=iid+1>
+    </#list>
+	 -@${java_home}/bin/java -cp "${java_utils_classpath}" $(EXECUTOR_CLASS) $(ROMBUILD_TEMPDIR)/command-e2flash-list-${cid}.txt
+
+
+configuration_${cid}: <#if (cid>0)>configuration_${cid-1}</#if> configuration_${cid}-dir configuration_${cid}-image configuration_${cid}-e2flash ;
+
+
+<#assign deps="configuration_${cid}">        
+<#assign cid=cid+1>
+</#list>
+
+all: ${deps} ;
+
+# End of config
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/imaker/src/com/nokia/helium/imaker/ant/taskdefs/IMakerTask.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,286 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+package com.nokia.helium.imaker.ant.taskdefs;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.Task;
+import org.apache.tools.ant.types.DataType;
+
+import com.nokia.helium.core.plexus.AntStreamConsumer;
+import com.nokia.helium.imaker.IMaker;
+import com.nokia.helium.imaker.IMakerException;
+import com.nokia.helium.imaker.ant.Command;
+import com.nokia.helium.imaker.ant.Engine;
+import com.nokia.helium.imaker.ant.IMakerCommandSet;
+import com.nokia.helium.imaker.ant.engines.JavaEngine;
+
+/**
+ * The imaker task will allow you to efficiently use iMaker to 
+ * build rom images in parallel.
+ * 
+ * The task is actually base on two concepts:
+ * <ul>
+ *   <li> content configuration: what needs to be built.
+ *   <li> acceleration engine: how to build roms in an efficient way.
+ * </ul>
+ * 
+ * In the following example the task is configured to use the emake engine
+ * to accelerate the rom image creation and an <code>imakerconfiguration</code> configuration
+ * element to configure the content of the building:
+ *
+ * <pre>
+ *       &lt;hlm:emakeEngine id="imaker.ec" /&gt;
+ *       &lt;hlm:imaker epocroot="${epocroot}" 
+ *                      output="${epocroot}/imaker.log"
+ *                      engineRefid="imaker.ec"
+ *                      verbose="true"&gt;
+             &lt;hlm:imakerconfiguration&gt;
+ *                   &lt;makefileset&gt;
+ *                       &lt;include name="*&#42;/product/*ui.mk" /&gt;
+ *                   &lt;/makefileset&gt;
+ *                   &lt;targetset&gt;
+ *                       &lt;include name="core" /&gt;
+ *                       &lt;include name="langpack_01" /&gt;
+ *                   &lt;/targetset&gt;
+             &lt;/hlm:imakerconfiguration&gt;
+ *       &lt;/hlm:imaker&gt;
+ * </pre> 
+ * @ant.task name=imaker category=imaker
+ */
+public class IMakerTask extends Task {
+
+    private File epocroot;
+    private boolean verbose;
+    private boolean failOnError = true;
+    private List<IMakerCommandSet> commandSets = new ArrayList<IMakerCommandSet>();
+    private String engineRefId;
+    private AntStreamConsumer stdout = new AntStreamConsumer(this);
+    private AntStreamConsumer stderr = new AntStreamConsumer(this, Project.MSG_ERR);
+    private File output;
+    
+    /**
+     * Add iMaker Task compatible configuration. The task will 
+     * accept any Ant type implementing the IMakerCommandSet 
+     * interface like the <code>imakerconfiguration</code> type.
+     * 
+     * @param cmdSet an iMaker configuration which will defines
+     *               what needs to be built.
+     * 
+     * @ant.required
+     */
+    public void add(IMakerCommandSet cmdSet) {
+        commandSets.add(cmdSet);
+    }
+
+    /**
+     * Defines the reference id of the engine to use.
+     * @ant.not-required Default Java implementation will be used.
+     */
+    public void setEngineRefId(String engineRefId) {
+        this.engineRefId = engineRefId;
+    }
+
+    /**
+     * Retrieve the engine to be used. If the engineRefId
+     * attribute is not defined then the JavaEngine is used 
+     * as the default one.
+     * @return An instance of engine.
+     * @throws a BuildException if the engineRefId attribute doesn't define an Engine
+     * object.
+     */
+    protected Engine getEngine() {
+        if (engineRefId == null) {
+            log("Using default engine (Java threading)");
+            JavaEngine engine = new JavaEngine();
+            engine.setProject(getProject());
+            engine.setTask(this);
+            return engine;
+        } else {
+            try {
+                Engine engine = (Engine)this.getProject().getReference(engineRefId);
+                engine.setTask(this);
+                return engine;
+            } catch (ClassCastException e) {
+                throw new BuildException("Reference '" + engineRefId + "' is not referencing an Engine configuration.");
+            }
+        }
+    }
+    
+    /**
+     * Get current epocroot location (build environment).
+     * @return a File object.
+     */
+    public File getEpocroot() {
+        File epocroot = this.epocroot;
+        if (epocroot == null) {
+            epocroot = new File(System.getenv("EPOCROOT"));
+            if (epocroot == null) {
+                throw new BuildException("'epocroot' attribute has not been defined.");                
+            } else {
+                log("Using EPOCROOT: " + epocroot.getAbsolutePath());
+            }
+        }
+
+        if (!epocroot.exists() || !epocroot.isDirectory()) {
+            throw new BuildException("Invalid epocroot directory: " + epocroot);
+        }
+        return epocroot;
+    }
+
+    /**
+     * Defines the EPOCROOT location.
+     * @param epocroot
+     * @ant.not-required Will use EPOCROOT environment variable if not defined.
+     */
+    public void setEpocroot(File epocroot) {
+        this.epocroot = epocroot;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void execute() {
+        try {
+            // Simple way to verify if iMaker is installed under
+            // then environment.
+            IMaker imaker = getIMaker();
+            log("Using iMaker: " + imaker.getVersion());
+
+            // build the content.
+            build();
+        } catch (IMakerException e) {
+            if (shouldFailOnError()) {
+                throw new BuildException(e.getMessage(), e);
+            } else {
+                log(e.getMessage(),  Project.MSG_ERR);
+            }
+        }
+    }
+    
+    /**
+     * Should the task be verbose.
+     * @return  Returns true if the task should display all iMaker outputs.
+     */
+    public boolean isVerbose() {
+        return verbose;
+    }
+
+    /**
+     * Defines if the task should log all the output through Ant.
+     * by default only error/warnings are printed.
+     * @param verbose set the verbosity status.
+     * @ant.not-required Default is false.
+     */
+    public void setVerbose(boolean verbose) {
+        this.verbose = verbose;
+    }
+
+    /**
+     * Get the output filename.
+     * @return the output filename.
+     */
+    public File getOutput() {
+        return output;
+    }
+
+    /**
+     * Defined the output log filename.
+     * @param output
+     * @ant.not-required
+     */
+    public void setOutput(File output) {
+        this.output = output;
+    }
+
+    /**
+     * Concatenate all the configuration content and
+     * delegate the building to the engine.
+     * @throws IMakerException
+     */
+    protected void build() throws IMakerException {
+        List<List<Command>> cmds = new ArrayList<List<Command>>();
+        for (IMakerCommandSet cmdSet : commandSets) {
+            if (cmdSet instanceof DataType) {
+                DataType dataType = (DataType)cmdSet;
+                if (dataType.isReference()) {
+                    cmdSet = (IMakerCommandSet)dataType.getRefid().getReferencedObject();
+                }
+            }
+            cmds.addAll(cmdSet.getCommands(getIMaker()));
+        }
+        if (cmds.size() > 0) {
+            getEngine().build(cmds);
+        } else {
+            log("Nothing to build.");
+        }
+    }
+    
+    /**
+     * Get a configured IMaker instance. The created object
+     * is configured with output stream redirected to
+     * the task logging. Stderr is always redirected,
+     * stdout is only redirected if the task is configured
+     * to be verbose.
+     * 
+     * @return an IMaker instance.
+     */
+    public IMaker getIMaker() {
+        return getIMaker(verbose, true);
+    }
+
+    /**
+     * Get a configured IMaker instance. The created object
+     * is configured with output stream redirected to
+     * the task logging. Stderr is always redirected,
+     * the stdout will be configured by the verbose parameter.
+     * @param verbose enable stdout redirection to the task logging.
+     * @return an IMaker instance.
+     */
+    public IMaker getIMaker(boolean verbose, boolean verboseError) {
+        IMaker imaker = new IMaker(getEpocroot());
+        if (verbose) {
+            imaker.addOutputLineHandler(stdout);
+        }
+        if (verboseError) {
+            imaker.addErrorLineHandler(stderr);
+        }
+        return imaker;
+    }
+    
+    /**
+     * Defines if the task should fail in case of error.
+     * @ant.not-required Default is true
+     */
+    public void setFailOnError(boolean failOnError) {
+        this.failOnError = failOnError;
+    }
+    
+    /**
+     * Should the task should fail in case of error?
+     * @return true if the task should fail on error.
+     */
+    public boolean shouldFailOnError() {
+        return this.failOnError;
+    }
+        
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/imaker/src/com/nokia/helium/imaker/ant/types/Configuration.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,356 @@
+/*
+* Copyright (c) 2007-2008 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: 
+*
+*/
+ 
+package com.nokia.helium.imaker.ant.types;
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.DirectoryScanner;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.types.DataType;
+import org.apache.tools.ant.types.PatternSet;
+
+import com.nokia.helium.imaker.IMaker;
+import com.nokia.helium.imaker.IMakerException;
+import com.nokia.helium.imaker.ant.Command;
+import com.nokia.helium.imaker.ant.IMakerCommandSet;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.Vector;
+import java.util.regex.Pattern;
+
+/**
+ * The imakerconfiguration enables the build manager to configure his iMaker
+ * builds based on introspection.
+ *
+ * The makefileset element will configure the filtering of the "imaker help-config"
+ * command. Then for each of the configuration found the targetset elements will be used
+ * to filter the output from the "imaker -f <i>configuration.mk</i> help-target-*-list"
+ * command. Finally a set of command will be generated.
+ *
+ * Each command will then be configure using the set of variables defined by the variableset
+ * elements. Only the WORKDIR variable is under the task control to ensure call safety during the
+ * parallelization. 
+ * 
+ * The usage of the variablegroup will allow you to duplicate the common set of commands 
+ * and apply additional variables.    
+ *
+ * Example: 
+ * <pre>
+ *     &lt;imakerconfiguration regionalVariation="true"&gt;
+ *         &lt;makefileset&gt;
+ *             &lt;include name="*&#42;/product/*ui.mk"/&gt;
+ *         &lt;/makefileset&gt;
+ *         &lt;targetset&gt;
+ *             &lt;include name="^core$" /&gt;
+ *             &lt;include name="langpack_\d+" /&gt;
+ *             &lt;include name="^custvariant_.*$" /&gt;
+ *             &lt;include name="^udaerase$" /&gt;
+ *         &lt;/targetset&gt;
+ *         &lt;variableset&gt;
+ *             &lt;variable name="USE_FOTI" value="0"/&gt;
+ *             &lt;variable name="USE_FOTA" value="1"/&gt;
+ *         &lt;/variableset&gt;
+ *         &lt;variablegroup&gt;
+ *             &lt;variable name="TYPE" value="rnd"/&gt;
+ *         &lt;/variablegroup&gt;
+ *         &lt;variablegroup&gt;
+ *             &lt;variable name="TYPE" value="subcon"/&gt;
+ *         &lt;/variablegroup&gt;
+ *     &lt;/imakerconfiguration&gt;
+ * </pre>
+ *
+ * This configuration might produce the following calls :
+ * <pre>
+ * imaker -f /epoc32/rom/config/platform/product/image_conf_product_ui.mk TYPE=rnd USE_FOTI=0 USE_FOTA=1 core
+ * imaker -f /epoc32/rom/config/platform/product/image_conf_product_ui.mk TYPE=subcon USE_FOTI=0 USE_FOTA=1 core
+ * imaker -f /epoc32/rom/config/platform/product/image_conf_product_ui.mk TYPE=rnd USE_FOTI=0 USE_FOTA=1 langpack_01
+ * imaker -f /epoc32/rom/config/platform/product/image_conf_product_ui.mk TYPE=subcon USE_FOTI=0 USE_FOTA=1 langpack_01
+ * </pre>
+ * 
+ * @ant.type name="imakerconfiguration" category="imaker"
+ */
+public class Configuration extends DataType implements IMakerCommandSet {
+    
+    private Vector<PatternSet> makefiles = new Vector<PatternSet>();
+    private Vector<MakefileSelector> selectors = new Vector<MakefileSelector>();
+    private Vector<PatternSet> targets = new Vector<PatternSet>();
+    private Vector<VariableSet> variables = new Vector<VariableSet>();
+    private Vector<VariableGroup> variablegroups = new Vector<VariableGroup>();
+    private boolean regionalVariation;
+    
+    /**
+     * Create a makefileset element.
+     * Makefileset elements are based on regular Ant PatternSet.
+     * @return a PatternSet object.
+     */
+    public PatternSet createMakefileSet() {
+        PatternSet makefile =  new PatternSet();
+        makefiles.add(makefile);
+        return makefile;
+    }
+    
+    /**
+     * Get the list of makefileset element.
+     * @return a vector of PatternSet objects.
+     */
+    public Vector<PatternSet> getMakefileSet() {
+        return makefiles;
+    }
+    
+    /**
+     * Add a Makefile selector configuration (e.g: products)
+     * @param filter
+     */
+    public void add(MakefileSelector filter) {
+        selectors.add(filter);
+    }
+    
+    /**
+     * Create a targetset element.
+     * Targetset elements are based on regular Ant PatternSet.
+     * @return a PatternSet object.
+     */
+    public PatternSet createTargetSet() {
+        PatternSet target =  new PatternSet();
+        targets.add(target);
+        return target;
+    }
+    
+    /**
+     * Get the list of targetset.
+     * @return a vector of PatternSet objects.
+     */
+    public Vector<PatternSet> getTargetSet() {
+        return targets;
+    }
+
+    /**
+     * Create a VariableSet element.
+     * @return a VariableSet object.
+     */
+    public VariableSet createVariableSet() {
+        VariableSet var =  new VariableSet();
+        variables.add(var);
+        return var;
+    }
+        
+    /**
+     * Create a VariableSet element.
+     * @return a VariableSet object.
+     */
+    public VariableGroup createVariableGroup() {
+        VariableGroup var =  new VariableGroup();
+        variablegroups.add(var);
+        return var;
+    }
+        
+    /**
+     * Get the list of variableset.
+     * @return a vector of VariableSet objects.
+     */
+    public Vector<VariableSet> getVariableSet() {
+        return variables;
+    }
+
+    /**
+     * Enables the sorting of images per region. 
+     * @deprecated The usage of this feature is now ignored.
+     * @param value the state of the regional variation
+     * @ant.not-required Default is false - The usage of this feature is now ignored.
+     */
+    @Deprecated
+    public void setRegionalVariation(boolean value) {
+        log(this.getDataTypeName() + ": the usage of the regionalVariation attribute is now ignored.", Project.MSG_WARN);
+        regionalVariation = value;
+    }
+
+    /**
+     * Get the status of the regional variation enabling.
+     * @deprecated The usage of this feature is now ignored.
+     * @return returns true is the regional variation should be enabled.
+     */
+    public boolean getRegionalVariation() {
+        return regionalVariation;
+    }
+
+    /**
+     * Check if name is matching any of the pattern under patterns list.
+     * @param name the string to match
+     * @param patterns a list of PatternSet
+     * @return Returns true if name matches at least one pattern.
+     */
+    protected boolean isIncluded(String name, Vector<PatternSet> patterns) {
+        for (PatternSet patternSet : patterns) {
+            if (patternSet.isReference()) {
+                patternSet = (PatternSet) patternSet.getRefid().getReferencedObject();
+            }
+            String[] includes = patternSet.getIncludePatterns(getProject());
+            if (includes != null) {
+                for (String pattern : includes) {
+                    if (Pattern.matches(pattern, name)) {
+                        return true;
+                    }
+                }
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Check if name is matching any of the pattern under patterns list.
+     * @param name the string to match
+     * @param patterns a list of PatternSet
+     * @return Returns true if name matches at least one pattern.
+     */
+    protected boolean isExcluded(String name, Vector<PatternSet> patterns) {
+        for (PatternSet patternSet : patterns) {
+            if (patternSet.isReference()) {
+                patternSet = (PatternSet) patternSet.getRefid().getReferencedObject();
+            }
+            String[] excludes = patternSet.getExcludePatterns(getProject());
+            if (excludes != null) {
+                for (String pattern : excludes) {
+                    if (Pattern.matches(pattern, name)) {
+                        return true;
+                    }
+                }
+            }
+        }
+        return false;
+    }
+    
+    /**
+     * Get a configured matcher.
+     * @return a configured makefile matcher.
+     */
+    protected Matcher getMakefileMatcher() {
+        Matcher matcher = new Matcher();
+        List<String> includes = new ArrayList<String>(); 
+        List<String> excludes = new ArrayList<String>(); 
+        for (PatternSet patternSet : makefiles) {
+            if (patternSet.isReference()) {
+                patternSet = (PatternSet) patternSet.getRefid().getReferencedObject();
+            }
+            String[] patterns = patternSet.getIncludePatterns(getProject());
+            if (patterns != null) {
+                for (String pattern : patterns) {
+                    includes.add(pattern);
+                }
+            }
+            patterns = patternSet.getExcludePatterns(getProject());
+            if (patterns != null) {
+                for (String pattern : patterns) {
+                    excludes.add(pattern);
+                }
+            }
+        }    
+        matcher.setIncludes(includes.toArray(new String[includes.size()]));
+        matcher.setExcludes(excludes.toArray(new String[excludes.size()]));
+        return matcher;
+    }
+    
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public List<List<Command>> getCommands(IMaker imaker) {
+        List<List<Command>> cmdSet = new ArrayList<List<Command>>();
+        List<Command> cmds = new ArrayList<Command>();
+        // Let's add one fake group.
+        if (variablegroups.size() == 0) {
+            variablegroups.add(new VariableGroup());
+        }
+        try {
+            for (String configuration : getConfigurations(imaker.getConfigurations())) {
+                log("Including configuration: " + configuration);
+                for (String target : imaker.getTargets(configuration)) {
+                    if (isIncluded(target, targets) && !isExcluded(target, targets)) {
+                        log("Including target: " + target);
+                        for (VariableGroup group : variablegroups) {
+                            if (group.isReference()) {
+                                group = (VariableGroup)group.getRefid().getReferencedObject();
+                            }
+                            Command cmd = new Command();
+                            cmd.setCommand("imaker");
+                            cmd.addArgument("-f");
+                            cmd.addArgument(configuration);
+                            // Adding variables
+                            for (VariableSet vs : variables) {
+                                cmd.addVariables(vs.toMap());
+                            }
+                            // Adding variables from groups
+                            cmd.addVariables(group.toMap());
+                            cmd.setTarget(target);
+                            cmds.add(cmd);
+                        }
+                    }
+                }
+            }
+        } catch (IMakerException e) {
+            throw new BuildException(e.getMessage());
+        }
+        // adding all the commands.
+        if (cmds.size() > 0) {
+            cmdSet.add(cmds);
+        }
+        return cmdSet;
+    }
+    
+    /**
+     * Select which iMaker configuration should be built.
+     * @param configurations
+     * @return
+     */
+    protected Set<String> getConfigurations(List<String> configurations) {
+        Set<String> result = new HashSet<String>();
+        if (makefiles.size() > 0) {
+            Matcher matcher = getMakefileMatcher();
+            for (String configuration : configurations) {
+                if (matcher.match(configuration)) {
+                    result.add(configuration);
+                }
+            }
+        }
+        for (MakefileSelector selector : selectors) {
+            result.addAll(selector.selectMakefile(configurations));
+        }
+        return result;
+    }
+    
+    /**
+     * Matcher object to filter discovered configurations.
+     * iMaker configuration.
+     */
+    public class Matcher extends DirectoryScanner {
+        
+        /**
+         * Check is a particular configuration can
+         * is selected.
+         * @param path the string to match.
+         * @return return true is the path is selected.
+         */
+        public boolean match(String path) {
+            String vpath = path.replace('/', File.separatorChar).
+                replace('\\', File.separatorChar);
+            return isIncluded(vpath) && !isExcluded(vpath);
+        }
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/imaker/src/com/nokia/helium/imaker/ant/types/ConfigurationSet.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,95 @@
+/*
+* Copyright (c) 2007-2008 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: 
+*
+*/
+ 
+package com.nokia.helium.imaker.ant.types;
+
+import org.apache.tools.ant.types.DataType;
+
+import com.nokia.helium.imaker.IMaker;
+import com.nokia.helium.imaker.ant.Command;
+import com.nokia.helium.imaker.ant.IMakerCommandSet;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Vector;
+
+/**
+ * Set of iMaker configuration.
+ *
+ * <pre>
+ * &lt;hlm:imakerconfigurationset&gt;
+ *     &lt;imakerconfiguration regionalVariation="true"&gt;
+ *         &lt;makefileset&gt;
+ *             &lt;include name="*&#42;/product/*ui.mk"/&gt;
+ *         &lt;/makefileset&gt;
+ *         &lt;targetset&gt;
+ *             &lt;include name="^core$" /&gt;
+ *             &lt;include name="langpack_\d+" /&gt;
+ *             &lt;include name="^custvariant_.*$" /&gt;
+ *             &lt;include name="^udaerase$" /&gt;
+ *         &lt;/targetset&gt;
+ *         &lt;variableset&gt;
+ *             &lt;variable name="USE_FOTI" value="0"/&gt;
+ *             &lt;variable name="USE_FOTA" value="1"/&gt;
+ *         &lt;/variableset&gt;
+ *         &lt;variablegroup&gt;
+ *             &lt;variable name="TYPE" value="rnd"/&gt;
+ *             &lt;variable name="USE_FOTI" value="0"/&gt;
+ *             &lt;variable name="USE_FOTA" value="1"/&gt;
+ *         &lt;/variablegroup&gt;
+ *         &lt;variablegroup&gt;
+ *             &lt;variable name="TYPE" value="subcon"/&gt;
+ *             &lt;variable name="USE_FOTI" value="0"/&gt;
+ *             &lt;variable name="USE_FOTA" value="1"/&gt;
+ *         &lt;/variablegroup&gt;
+ *     &lt;/imakerconfiguration&gt;
+ * &lt;/hlm:imakerconfigurationset&gt;
+ * </pre>
+ * @ant.type name="imakerconfigurationset" category="imaker"
+ */
+public class ConfigurationSet extends DataType implements IMakerCommandSet {
+
+    private Vector<Configuration> configurations = new Vector<Configuration>();
+
+    /**
+     * This method create an iMaker Configuration element. 
+     */
+    public Configuration createImakerConfiguration() {
+        Configuration config = new Configuration();
+        configurations.add(config);
+        return config;
+    }
+
+    /**
+     * Get the list of iMaker configuration. 
+     */
+    public Vector<Configuration> getImakerConfiguration() {
+        return configurations;
+    }
+
+    @Override
+    public List<List<Command>> getCommands(IMaker imaker) {
+        List<List<Command>> cmdset = new ArrayList<List<Command>>();
+        for (Configuration config : configurations) {
+            if (config.isReference()) {
+                config = (Configuration) config.getRefid().getReferencedObject();
+            }
+            cmdset.addAll(config.getCommands(imaker));
+        }
+        return cmdset;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/imaker/src/com/nokia/helium/imaker/ant/types/MakefileSelector.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,34 @@
+/*
+* Copyright (c) 2007-2008 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: 
+*
+*/
+package com.nokia.helium.imaker.ant.types;
+
+import java.util.List;
+
+/**
+ * Interface used to extend the Makefile introspection of the
+ *  iMaker configuration.
+ *
+ */
+public interface MakefileSelector {
+
+    /**
+     * Select the configurations to be built based on the object settings.
+     * @param configuration
+     * @return a list of selected configuration from the input list.
+     */
+    List<String> selectMakefile(List<String> configurations);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/imaker/src/com/nokia/helium/imaker/ant/types/Product.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,123 @@
+/*
+* Copyright (c) 2007-2008 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: 
+*
+*/
+package com.nokia.helium.imaker.ant.types;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Vector;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.types.DataType;
+
+/**
+ * The product type will allow you to select iMaker makefile configuration based on
+ * the product name. The search will be done using the following template:
+ * image_conf_[product_name][_ui].mk
+ * 
+ * <pre>
+ * &lt;hlm:product list="product1,product2" ui="true" failonerror="false" /&gt;
+ * </pre>
+ * @ant.type name="hlm:product" category="imaker"
+ */
+public class Product extends DataType implements MakefileSelector {
+    private String list;
+    private boolean ui;
+    private boolean failOnError = true;
+
+    /**
+     * Defines a comma separated list of product names.
+     * @param name
+     */
+    public void setList(String list) {
+        this.list = list;
+    }
+    
+    /**
+     * Get the list of products
+     * @return an array of products
+     */
+    public String[] getNames() {
+        Vector<String> names = new Vector<String>();
+        for (String name : this.list.split(",")) {
+            name = name.trim();
+            if (name.length() > 0) {
+                names.add(name);
+            }
+        }
+        return names.toArray(new String[names.size()]);
+    }
+
+    public void setUi(boolean ui) {
+        this.ui = ui;
+    }
+
+    /**
+     * Define if we are looking for a ui configuration (will add _ui to the
+     * makefile name)
+     * @return
+     * @ant.not-required Default false
+     */
+    public boolean isUi() {
+        return ui;
+    }
+
+    /**
+     * Shall we fail the build in case of missing config?
+     * @param failOnError
+     * @ant.not-required Default true
+     */
+    public void setFailOnError(boolean failOnError) {
+        this.failOnError = failOnError;
+    }
+
+    /**
+     * Shall we fail the build in case of missing config. 
+     * @return a boolean
+     */
+    public boolean isFailOnError() {
+        return failOnError;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public List<String> selectMakefile(List<String> configurations) {
+        List<String> result = new ArrayList<String>();
+        for (String product : getNames()) {
+            String endOfString = "image_conf_" + product + (ui ? "_ui" : "") + ".mk";
+            boolean foundConfig = false;
+            for (String config : configurations) {
+                if (config.endsWith(endOfString)) {
+                    foundConfig = true;
+                    result.add(config);
+                    break;
+                }
+            }
+            if (!foundConfig) {
+                if (isFailOnError()) {
+                    throw new BuildException("Could not find a valid configuration for " + product);
+                } else {
+                    log("Could not find a valid configuration for " + product, Project.MSG_ERR);
+                }
+            }
+        }
+        return result;
+    }
+
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/imaker/src/com/nokia/helium/imaker/ant/types/Variable.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,78 @@
+/*
+* Copyright (c) 2007-2008 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: 
+*
+*/
+ 
+package com.nokia.helium.imaker.ant.types;
+
+import org.apache.tools.ant.types.DataType;
+import org.apache.tools.ant.BuildException;
+
+/**
+ * Configure a variable for iMaker.
+ * @ant.type name="variable" category="imaker"
+ */
+public class Variable extends DataType
+{
+    private String mName;
+    private String mValue;
+    
+    /**
+     * Set the name of the variable.
+     * @param name
+     */
+    public void setName(String name) {
+        mName = name;
+    }
+
+    
+    /**
+     * Get the name of the variable.
+     * @return name.
+     */
+    public String getName() {
+        return mName;
+    }
+
+    /**
+     * Set the value of the variable.
+     * @param value
+     */
+    public void setValue(String value) {
+        mValue = value;
+    }
+
+    
+    /**
+     * Get the value of the variable.
+     * @return value.
+     */
+    public String getValue() {
+        return mValue;
+    }
+
+    /**
+     * Validate if the configuration is defined properly.
+     * Throws BuildException in case of error.
+     */
+    public void validate() {
+        if (getName() == null) {
+            throw new BuildException("The variable element doesn't define a 'name' attribute.");
+        }
+        if (getValue() == null) {
+            throw new BuildException("The variable element doesn't define a 'value' attribute.");
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/imaker/src/com/nokia/helium/imaker/ant/types/VariableGroup.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,34 @@
+/*
+* Copyright (c) 2007-2008 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: 
+*
+*/
+package com.nokia.helium.imaker.ant.types;
+
+/**
+ * This type is a container for variable configuration.
+ * A set of command will be generated for each group
+ * present in the imakerconfiguration.
+ * 
+ * <pre>
+ * &lt;variablegroup&gt;
+ *     &lt;variable name="TYPE" value="rnd" /&gt;
+ * &lt;/variablegroup&gt;
+ * </pre>
+ * 
+ * @ant.type name=variablegroup category="imaker"
+ */
+public class VariableGroup extends VariableSet {
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/imaker/src/com/nokia/helium/imaker/ant/types/VariableSet.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,78 @@
+/*
+* Copyright (c) 2007-2008 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: 
+*
+*/
+ 
+package com.nokia.helium.imaker.ant.types;
+import org.apache.tools.ant.types.DataType;
+
+import java.util.Hashtable;
+import java.util.Map;
+import java.util.Vector;
+
+/**
+ * This type is a container for variable configuration.
+ * 
+ * <pre>
+ * &lt;variableset&gt;
+ *     &lt;variable name="TYPE" value="rnd" /&gt;
+ * &lt;/variableset&gt;
+ * </pre>
+ * 
+ * @ant.type name="variableset" category="imaker"
+ */
+public class VariableSet extends DataType {
+    
+    private Vector<Variable> variables = new Vector<Variable>();
+    
+    /**
+     * Creates a Variable object.
+     * @return a Variable object.
+     */
+    public Variable createVariable() {
+        Variable var =  new Variable();
+        add(var);
+        return var;
+    }
+    
+    /**
+     * Support the addition of a Variable object.
+     * @param a Variable object.
+     */
+    public void add(Variable var) {
+        variables.add(var);
+    }
+    
+    /**
+     * Get the list of Variable object.
+     * @return a vector of Variable objects
+     */
+    public Vector<Variable> getVariables() {
+        return variables;
+    }
+    
+    /**
+     * Convert the set of variable to a Map object.
+     * @return the content of that set into a Map object.
+     */
+    public Map<String, String> toMap() {
+        Map<String, String> data = new Hashtable<String, String>();
+        for (Variable var : variables) {
+            var.validate();
+            data.put(var.getName(), var.getValue());
+        }
+        return data;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/imaker/src/com/nokia/helium/imaker/utils/ParallelExecutor.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,134 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+package com.nokia.helium.imaker.utils;
+
+import java.io.BufferedReader;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.StringTokenizer;
+import java.util.concurrent.ArrayBlockingQueue;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+import java.util.Date;
+import java.text.SimpleDateFormat;
+
+/**
+ * Simple application which will execute each line from a text file
+ * as a command. All the command will be executed in parallel.
+ * Default number of threads is 4.
+ * 
+ * The implementation must not rely on any external dependencies except JVM and owning jar.
+ *
+ */
+public final class ParallelExecutor {
+    
+    /**
+     * Private constructor - not meant to be instantiated.
+     */
+    private ParallelExecutor() {
+    }
+    
+    /**
+     * Internal class holding a command to 
+     * execute.
+     *
+     */
+    private static class RunCommand implements Runnable {
+        private String cmdline;
+        
+        /**
+         * Default constructor
+         * @param cmdline the command to run
+         */
+        public RunCommand(String cmdline) {
+            this.cmdline = cmdline;
+        }
+        
+        /**
+         * Running command line and capturing the output.
+         */
+        @Override
+        public void run() {
+            StringTokenizer st = new StringTokenizer(cmdline);
+            String[] cmdArray = new String[st.countTokens()];
+            for (int i = 0; st.hasMoreTokens(); i++) {
+                cmdArray[i] = st.nextToken();
+            }
+            Process p;
+            try {
+                p = new ProcessBuilder(cmdArray).redirectErrorStream(true).start();
+                BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
+                String line;
+                StringBuffer buffer = new StringBuffer();
+                SimpleDateFormat df = new SimpleDateFormat("EEE MMM d HH:mm:ss yyyy");
+                
+                Date start = new Date();
+                buffer.append("++ Started at " + df.format(start) + "\n");
+                buffer.append("+++ HiRes Start " + start.getTime() / 1000 + "\n");
+                buffer.append("-- " + cmdline + "\n");
+                while ((line = in.readLine()) != null) {
+                    buffer.append(line + "\n");
+                }
+                Date end = new Date();
+                buffer.append("+++ HiRes End " + end.getTime() / 1000 + "\n");
+                buffer.append("++ Finished at " + df.format(end) + "\n");
+                synchronized (System.out) {
+                    System.out.print(buffer);
+                }
+            } catch (IOException e) {
+                System.err.println("ERROR: " + e.getMessage());
+            }
+        }
+    }
+    
+    /**
+     * This is the entry point of the application.
+     * It will only accept one file name as parameter.
+     * @param args a list of arguments.
+     */
+    public static void main(String[] args) {
+        if (args.length == 1) {
+            try {
+                List<String> cmds = new ArrayList<String>();
+                BufferedReader in = new BufferedReader(new FileReader(args[0]));
+                String line;
+                while ((line = in.readLine()) != null) {
+                    if (line.trim().length() > 0) {
+                        cmds.add(line);
+                    }
+                }
+                
+                final ArrayBlockingQueue<Runnable> queue = new ArrayBlockingQueue<Runnable>(cmds.size());
+                int numOfProcessor = Runtime.getRuntime().availableProcessors();
+                System.out.println("Number of threads: " + numOfProcessor);
+                ThreadPoolExecutor executor = new ThreadPoolExecutor(numOfProcessor, numOfProcessor, 100, TimeUnit.MILLISECONDS, queue);
+                for (String cmd : cmds) {
+                    executor.execute(new RunCommand(cmd));
+                }
+                executor.shutdown();
+            } catch (IOException e) {
+                System.err.println("ERROR: " + e.getMessage());
+            }
+        } else {
+            System.out.println("ParallelExecutor: nothing to execute.");
+        }
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/imaker/tests/antunit/test_emakeengine.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,155 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : test_emakeengine.ant.xml 
+Part of     : Helium AntLib
+
+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="helium-antlib-imaker-emakeengine-unittest" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
+    <description>Helium Antlib imaker unittests.</description>
+
+    <taskdef resource="com/nokia/helium/imaker/ant/antlib.xml" uri="http://www.nokia.com/helium"/>
+    <property name="epocroot" location="${basedir}/../epocroot_task" />
+    <property name="epocroot.temp" location="${epocroot}/temp" />
+
+    <!-- is called prior to the test -->
+    <target name="setUp">
+        <echo>-------------------------------------------------------------------------------</echo>
+        <delete dir="${epocroot.temp}" failonerror="false" />
+        <delete dir="${epocroot}/epoc32" failonerror="false" />
+        <mkdir dir="${epocroot.temp}" />
+    </target>
+
+    <!-- is called after the test, even if that caused an error -->
+    <target name="tearDown">
+        <delete dir="${epocroot.temp}" failonerror="false" />
+        <delete dir="${epocroot}/epoc32" failonerror="false" />
+        <echo>-------------------------------------------------------------------------------</echo>
+    </target>
+
+    <target name="test-imaker-defaultconfig">
+        <hlm:emakeEngine id="imaker.ec" />
+        <hlm:imaker epocroot="${epocroot}" 
+            output="${epocroot.temp}/output.log"
+            engineRefId="imaker.ec">
+            <hlm:imakerconfiguration>
+                <makefileset>
+                    <include name="**/product/*ui.mk" />
+                </makefileset>
+                <targetset>
+                    <include name="core" />
+                    <include name="langpack_\d+" />
+                </targetset>
+            </hlm:imakerconfiguration>
+        </hlm:imaker>
+        <au:assertFileExists file="${epocroot.temp}/output.log" />
+    </target>
+
+    <target name="test-imaker-defaultconfig-custom-args">
+        <hlm:emakeEngine id="imaker.ec">
+            <arg value="--autodepends=1" />
+        </hlm:emakeEngine>
+        <hlm:imaker epocroot="${epocroot}" 
+            output="${epocroot.temp}/output.log"
+            engineRefId="imaker.ec"
+            verbose="true">
+            <hlm:imakerconfiguration>
+                <makefileset>
+                    <include name="**/product/*ui.mk" />
+                </makefileset>
+                <targetset>
+                    <include name="core" />
+                    <include name="langpack_\d+" />
+                </targetset>
+            </hlm:imakerconfiguration>
+        </hlm:imaker>
+        <au:assertLogContains text="--autodepends=1" />
+        <au:assertFileExists file="${epocroot.temp}/output.log" />
+    </target>
+
+    <target name="test-imaker-defaultconfig-with-cust-missing-template">
+        <hlm:emakeEngine id="imaker.ec" template="missing.mk.ftl">
+            <arg value="--autodepends=1" />
+        </hlm:emakeEngine>
+        <au:expectfailure message="Could not find template file:">
+            <hlm:imaker epocroot="${epocroot}" 
+            	output="${epocroot.temp}/output.log"
+                engineRefId="imaker.ec"
+                verbose="true">
+                <hlm:imakerconfiguration>
+                    <makefileset>
+                        <include name="**/product/*ui.mk" />
+                    </makefileset>
+                    <targetset>
+                        <include name="core" />
+                        <include name="langpack_\d+" />
+                    </targetset>
+                </hlm:imakerconfiguration>
+            </hlm:imaker>
+        </au:expectfailure>
+        <au:assertFileDoesntExist file="${epocroot.temp}/output.log" />
+    </target>
+
+    <target name="test-imaker-defaultconfig-with-cust-invalid-template">
+        <hlm:emakeEngine id="imaker.ec" template="../emake_data/invalid.mk.ftl">
+            <arg value="--autodepends=1" />
+        </hlm:emakeEngine>
+        <au:expectfailure message="Error while rendering the makefile template:">
+            <hlm:imaker epocroot="${epocroot}" 
+                output="${epocroot.temp}/output.log"
+                engineRefId="imaker.ec"
+                verbose="true">
+                <hlm:imakerconfiguration>
+                    <makefileset>
+                        <include name="**/product/*ui.mk" />
+                    </makefileset>
+                    <targetset>
+                        <include name="core" />
+                        <include name="langpack_\d+" />
+                    </targetset>
+                </hlm:imakerconfiguration>
+            </hlm:imaker>
+        </au:expectfailure>
+        <au:assertLogContains text="invalid.mk.ftl" />
+        <au:assertFileDoesntExist file="${epocroot.temp}/output.log" />
+    </target>
+
+    <target name="test-imaker-defaultconfig-with-cust-template">
+        <hlm:emakeEngine id="imaker.ec" template="../emake_data/cust.mk.ftl">
+            <arg value="--autodepends=1" />
+        </hlm:emakeEngine>
+        <hlm:imaker epocroot="${epocroot}" 
+            output="${epocroot.temp}/output.log"
+            engineRefId="imaker.ec"
+            verbose="true">
+            <hlm:imakerconfiguration>
+                <makefileset>
+                    <include name="**/product/*ui.mk" />
+                </makefileset>
+                <targetset>
+                    <include name="core" />
+                    <include name="langpack_\d+" />
+                </targetset>
+            </hlm:imakerconfiguration>
+        </hlm:imaker>
+        <au:assertLogContains text="Loading template:" />
+        <au:assertLogContains text="cust.mk.ftl" />
+        <au:assertFileExists file="${epocroot.temp}/output.log" />
+    </target>
+
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/imaker/tests/antunit/test_imaker.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,280 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : test_imaker.ant.xml 
+Part of     : Helium AntLib
+
+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="helium-antlib-imaker-unittest" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
+    <description>Helium Antlib imaker unittests.</description>
+
+    <taskdef resource="com/nokia/helium/imaker/ant/antlib.xml" uri="http://www.nokia.com/helium"/>
+    <property name="epocroot" location="${basedir}/../epocroot_task" />
+    <property name="epocroot.temp" location="${epocroot}/temp" />
+
+    <!-- is called prior to the test -->
+    <target name="setUp">
+        <echo>-------------------------------------------------------------------------------</echo>
+        <delete dir="${epocroot.temp}" failonerror="false" />
+        <delete dir="${epocroot}/epoc32" failonerror="false" />
+        <mkdir dir="${epocroot.temp}" />
+    </target>
+
+    <!-- is called after the test, even if that caused an error -->
+    <target name="tearDown">
+        <delete dir="${epocroot.temp}" failonerror="false" />
+        <delete dir="${epocroot}/epoc32" failonerror="false" />
+        <echo>-------------------------------------------------------------------------------</echo>
+    </target>
+
+    <target name="test-imaker-noargs-noconfig">
+        <echo>Will fail because it can't find imaker.</echo>
+        <au:expectfailure>
+            <hlm:imaker />
+        </au:expectfailure>
+    </target>
+
+    <target name="test-imaker-epocroot">
+        <echo>Usin custom epocroot.</echo>
+        <hlm:imaker epocroot="${epocroot}" />
+    </target>
+
+    <target name="test-imaker-noargs">
+        <hlm:imaker epocroot="${epocroot}" output="${epocroot.temp}/output.log"/>
+        <au:assertFileDoesntExist file="${epocroot.temp}/output.log" />
+    </target>
+
+    <target name="test-imaker-empty-imakerconfigurationset">
+        <hlm:imaker epocroot="${epocroot}" output="${epocroot.temp}/output.log">
+            <hlm:imakerconfigurationset>
+            </hlm:imakerconfigurationset>
+        </hlm:imaker>
+        <au:assertFileDoesntExist file="${epocroot.temp}/output.log" />
+        <au:assertLogContains text="Nothing to build." />
+    </target>
+
+    <target name="test-imaker-empty-imakerconfiguration-accepted">
+        <hlm:imaker epocroot="${epocroot}" output="${epocroot.temp}/output.log">
+            <hlm:imakerconfiguration>
+            </hlm:imakerconfiguration>
+        </hlm:imaker>
+        <au:assertFileDoesntExist file="${epocroot.temp}/output.log" />
+        <au:assertLogContains text="Nothing to build." />
+    </target>
+
+    <target name="test-imaker-empty-imakerconfiguration">
+        <hlm:imaker epocroot="${epocroot}" output="${epocroot.temp}/output.log">
+            <hlm:imakerconfigurationset>
+                <hlm:imakerconfiguration>
+                </hlm:imakerconfiguration>
+            </hlm:imakerconfigurationset>
+        </hlm:imaker>
+        <au:assertFileDoesntExist file="${epocroot.temp}/output.log" />
+        <au:assertLogContains text="Nothing to build." />
+    </target>
+
+    <target name="test-imaker-imakerconfiguration-makefileset">
+        <hlm:imaker epocroot="${epocroot}" output="${epocroot.temp}/output.log">
+            <hlm:imakerconfigurationset>
+                <hlm:imakerconfiguration>
+                    <makefileset>
+                        <include name="**/product/*ui.mk" />
+                    </makefileset>
+                </hlm:imakerconfiguration>
+            </hlm:imakerconfigurationset>
+        </hlm:imaker>
+        <au:assertFileDoesntExist file="${epocroot.temp}/output.log" />
+        <au:assertLogContains text="Nothing to build." />
+    </target>
+    
+    <target name="test-imaker-imakerconfiguration-targetset">
+        <hlm:imaker epocroot="${epocroot}" output="${epocroot.temp}/output.log">
+            <hlm:imakerconfigurationset>
+                <hlm:imakerconfiguration>
+                    <makefileset>
+                        <include name="**/product/*ui.mk" />
+                    </makefileset>
+                    <targetset>
+                        <include name="core" />
+                        <include name="langpack_\d+" />
+                    </targetset>
+                </hlm:imakerconfiguration>
+            </hlm:imakerconfigurationset>
+        </hlm:imaker>
+        <au:assertFileExists file="${epocroot.temp}/output.log" />
+    </target>
+
+    <target name="test-imaker-imakerconfiguration-variableset">
+        <au:expectfailure message="The variable element doesn't define a 'name' attribute.">
+            <hlm:imaker epocroot="${epocroot}" output="${epocroot.temp}/output.log">
+                <hlm:imakerconfigurationset>
+                    <hlm:imakerconfiguration>
+                        <makefileset>
+                            <include name="**/product/*ui.mk" />
+                        </makefileset>
+                        <targetset>
+                            <include name="core" />
+                            <include name="langpack_\d+" />
+                        </targetset>
+                        <variableset>
+                            <variable />
+                        </variableset>
+                    </hlm:imakerconfiguration>
+                </hlm:imakerconfigurationset>
+            </hlm:imaker>
+        </au:expectfailure>
+        <au:assertFileDoesntExist file="${epocroot.temp}/output.log" />
+    </target>
+
+    <target name="test-imaker-imakerconfiguration-variablegroup">
+        <hlm:imaker epocroot="${epocroot}" output="${epocroot.temp}/output.log">
+            <hlm:imakerconfigurationset>
+                <hlm:imakerconfiguration>
+                    <makefileset>
+                        <include name="**/product/*ui.mk" />
+                    </makefileset>
+                    <targetset>
+                        <include name="core" />
+                        <include name="langpack_\d+" />
+                    </targetset>
+                    <variablegroup>
+                        <variable name="TYPE" value="rnd" />
+                    </variablegroup>
+                    <variablegroup>
+                        <variable name="TYPE" value="prd" />
+                    </variablegroup>
+                </hlm:imakerconfiguration>
+            </hlm:imakerconfigurationset>
+        </hlm:imaker>
+        <au:assertFileExists file="${epocroot.temp}/output.log" />
+    </target>
+
+    <target name="test-imaker-imakerconfiguration-variablegroup-refid">
+        <hlm:imakerconfigurationset id="config">
+            <hlm:imakerconfiguration>
+                <makefileset>
+                    <include name="**/product/*ui.mk" />
+                </makefileset>
+                <targetset>
+                    <include name="core" />
+                    <include name="langpack_\d+" />
+                </targetset>
+                <variablegroup>
+                    <variable name="TYPE" value="rnd" />
+                </variablegroup>
+                <variablegroup>
+                    <variable name="TYPE" value="prd" />
+                </variablegroup>
+            </hlm:imakerconfiguration>
+        </hlm:imakerconfigurationset>
+        <hlm:imaker epocroot="${epocroot}" output="${epocroot.temp}/output.log">
+            <hlm:imakerconfigurationset refid="config"/>
+        </hlm:imaker>
+        <au:assertFileExists file="${epocroot.temp}/output.log" />
+        <au:assertLogDoesntContain text="Nothing to build" />
+    </target>
+
+    <target name="test-imaker-imakerconfiguration-variablegroup-refid-subconfig">
+        <hlm:imakerconfiguration id="subconfig">
+            <makefileset>
+                <include name="**/product/*ui.mk" />
+            </makefileset>
+            <targetset>
+                <include name="core" />
+                <include name="langpack_\d+" />
+            </targetset>
+            <variablegroup>
+                <variable name="TYPE" value="rnd" />
+            </variablegroup>
+            <variablegroup>
+                <variable name="TYPE" value="prd" />
+            </variablegroup>
+        </hlm:imakerconfiguration>
+        <hlm:imakerconfigurationset id="config">
+            <hlm:imakerconfiguration refid="subconfig" />
+        </hlm:imakerconfigurationset>
+        <hlm:imaker epocroot="${epocroot}" output="${epocroot.temp}/output.log">
+            <hlm:imakerconfigurationset refid="config"/>
+        </hlm:imaker>
+        <au:assertFileExists file="${epocroot.temp}/output.log" />
+        <au:assertLogDoesntContain text="Nothing to build" />
+    </target>
+
+    <target name="test-imaker-imakerconfiguration-variablegroup-product">
+        <hlm:imaker epocroot="${epocroot}" output="${epocroot.temp}/output.log">
+            <hlm:imakerconfiguration>
+                <hlm:product list="product" ui="true" />
+                <targetset>
+                    <include name="core" />
+                    <include name="langpack_\d+" />
+                </targetset>
+                <variablegroup>
+                    <variable name="TYPE" value="rnd" />
+                </variablegroup>
+                <variablegroup>
+                    <variable name="TYPE" value="prd" />
+                </variablegroup>
+            </hlm:imakerconfiguration>
+        </hlm:imaker>
+        <au:assertFileExists file="${epocroot.temp}/output.log" />
+        <au:assertLogDoesntContain text="Nothing to build" />
+    </target>
+
+    <target name="test-imaker-imakerconfiguration-variablegroup-product-invalid">
+        <au:expectfailure message="Could not find a valid configuration for product_invalid">
+            <hlm:imaker epocroot="${epocroot}" output="${epocroot.temp}/output.log">
+                <hlm:imakerconfiguration>
+                    <hlm:product list="product_invalid" ui="true" />
+                    <targetset>
+                        <include name="core" />
+                        <include name="langpack_\d+" />
+                    </targetset>
+                    <variablegroup>
+                        <variable name="TYPE" value="rnd" />
+                    </variablegroup>
+                    <variablegroup>
+                        <variable name="TYPE" value="prd" />
+                    </variablegroup>
+                </hlm:imakerconfiguration>
+            </hlm:imaker>
+        </au:expectfailure>
+        <au:assertFileDoesntExist file="${epocroot.temp}/output.log" />
+    </target>
+
+    <target name="test-imaker-imakerconfiguration-variablegroup-product-invalid-notfail">
+        <hlm:imaker epocroot="${epocroot}" output="${epocroot.temp}/output.log">
+            <hlm:imakerconfiguration>
+                <hlm:product list="product_invalid" ui="true" failonerror="false" />
+                <targetset>
+                    <include name="core" />
+                    <include name="langpack_\d+" />
+                </targetset>
+                <variablegroup>
+                    <variable name="TYPE" value="rnd" />
+                </variablegroup>
+                <variablegroup>
+                    <variable name="TYPE" value="prd" />
+                </variablegroup>
+            </hlm:imakerconfiguration>
+        </hlm:imaker>
+        <au:assertFileDoesntExist file="${epocroot.temp}/output.log" />
+        <au:assertLogContains text="Could not find a valid configuration for product_invalid" />
+        <au:assertLogContains text="Nothing to build." />
+    </target>
+
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/imaker/tests/antunit/test_imaker_invalid.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : test_imaker_invalid.ant.xml 
+Part of     : Helium AntLib
+
+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="helium-antlib-imaker-invalid-unittest" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
+    <description>Helium Antlib imaker unittests.</description>
+
+    <taskdef resource="com/nokia/helium/imaker/ant/antlib.xml" uri="http://www.nokia.com/helium"/>
+    <property name="epocroot" location="${basedir}/../epocroot_invalid" />
+    <property name="epocroot.temp" location="${epocroot}/temp" />
+
+    <!-- is called prior to the test -->
+    <target name="setUp">
+        <echo>-------------------------------------------------------------------------------</echo>
+        <delete dir="${epocroot.temp}" failonerror="false" />
+        <delete dir="${epocroot}/epoc32" failonerror="false" />
+        <mkdir dir="${epocroot.temp}" />
+    </target>
+
+    <!-- is called after the test, even if that caused an error -->
+    <target name="tearDown">
+        <delete dir="${epocroot.temp}" failonerror="false" />
+        <delete dir="${epocroot}/epoc32" failonerror="false" />
+        <echo>-------------------------------------------------------------------------------</echo>
+    </target>
+
+    <target name="test-imaker-imakerconfiguration-targetset">
+        <au:expectfailure message="(return code: 1)">
+            <hlm:imaker epocroot="${epocroot}" output="${epocroot.temp}/output.log">
+                <hlm:imakerconfigurationset>
+                    <hlm:imakerconfiguration>
+                        <makefileset>
+                            <include name="**/product/*ui.mk" />
+                        </makefileset>
+                        <targetset>
+                            <include name="core" />
+                            <include name="langpack_\d+" />
+                        </targetset>
+                    </hlm:imakerconfiguration>
+                </hlm:imakerconfigurationset>
+            </hlm:imaker>
+        </au:expectfailure>
+        <au:assertFileDoesntExist file="${epocroot.temp}/output.log" />
+    </target>
+
+    <target name="test-imaker-imakerconfiguration-targetset-failonerror-false">
+        <hlm:imaker epocroot="${epocroot}" output="${epocroot.temp}/output.log" failonerror="false">
+            <hlm:imakerconfigurationset>
+                <hlm:imakerconfiguration>
+                    <makefileset>
+                        <include name="**/product/*ui.mk" />
+                    </makefileset>
+                    <targetset>
+                        <include name="core" />
+                        <include name="langpack_\d+" />
+                    </targetset>
+                </hlm:imakerconfiguration>
+            </hlm:imakerconfigurationset>
+        </hlm:imaker>
+        <au:assertLogContains text="*** No rule to make target" />
+        <au:assertFileDoesntExist file="${epocroot.temp}/output.log" />
+    </target>
+
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/imaker/tests/antunit/test_javaengine.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : test_javaengine.ant.xml 
+Part of     : Helium AntLib
+
+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="helium-antlib-imaker-javaengine-unittest" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
+    <description>Helium Antlib imaker unittests.</description>
+
+    <taskdef resource="com/nokia/helium/imaker/ant/antlib.xml" uri="http://www.nokia.com/helium"/>
+    <property name="epocroot" location="${basedir}/../epocroot_task" />
+    <property name="epocroot.temp" location="${epocroot}/temp" />
+
+    <!-- is called prior to the test -->
+    <target name="setUp">
+        <echo>-------------------------------------------------------------------------------</echo>
+        <delete dir="${epocroot.temp}" failonerror="false" />
+        <delete dir="${epocroot}/epoc32" failonerror="false" />
+        <mkdir dir="${epocroot.temp}" />
+    </target>
+
+    <!-- is called after the test, even if that caused an error -->
+    <target name="tearDown">
+        <delete dir="${epocroot.temp}" failonerror="false" />
+        <delete dir="${epocroot}/epoc32" failonerror="false" />
+        <echo>-------------------------------------------------------------------------------</echo>
+    </target>
+
+    <target name="test-imaker-defaultconfig">
+        <hlm:defaultEngine id="imaker.default" threads="1"/>
+        <hlm:imaker epocroot="${epocroot}" 
+            output="${epocroot.temp}/output.log"
+            engineRefId="imaker.default">
+            <hlm:imakerconfiguration>
+                <makefileset>
+                    <include name="**/product/*ui.mk" />
+                </makefileset>
+                <targetset>
+                    <include name="core" />
+                    <include name="langpack_\d+" />
+                </targetset>
+            </hlm:imakerconfiguration>
+        </hlm:imaker>
+        <au:assertFileExists file="${epocroot.temp}/output.log" />
+    </target>
+
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/imaker/tests/bld.sh	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,25 @@
+#!/bin/sh
+
+#
+# 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: 
+#
+
+if [ -f ~/.bashrc ] ; then
+    . ~/.bashrc
+fi
+
+export PATH=$PATH:.
+export OLDANT_ARGS="-lib ../lib -lib ../../lib -lib ../../core/lib -lib ../../bin/helium-core.jar -lib ../../bin/helium-imaker.jar -lib ../../antlibs"
+ant $*
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/imaker/tests/build.bat	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,31 @@
+@echo off
+
+rem
+rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+rem All rights reserved.
+rem This component and the accompanying materials are made available
+rem under the terms of the License "Eclipse Public License v1.0"
+rem which accompanies this distribution, and is available
+rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+rem
+rem Initial Contributors:
+rem Nokia Corporation - initial contribution.
+rem
+rem Contributors:
+rem
+rem Description: 
+rem
+
+setlocal
+if not defined JAVA_6_HOME (
+set TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
+) ELSE  set TESTED_JAVA=%JAVA_6_HOME%
+if exist %TESTED_JAVA% (set JAVA_HOME=%TESTED_JAVA%)
+call ant %*
+if "%ERRORLEVEL%" neq "0" (goto error)
+endlocal
+goto :eof
+
+:error
+endlocal
+if "%OS%"=="Windows_NT" color 00
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/imaker/tests/build.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : build.xml 
+Part of     : Helium AntLib
+
+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="helium-imaker" xmlns:au="antlib:org.apache.ant.antunit">
+    <description>Helium Antlib Sysdef unittests.</description>
+
+    
+    <import file="${builder.dir}/java/test-macros.ant.xml"/>
+
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/imaker/tests/emake_data/cust.mk.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,30 @@
+<#--
+============================================================================ 
+Name        : cust.mk.ftl 
+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:
+
+============================================================================
+-->
+java_home:${java_home}
+java_utils_classpath:${java_utils_classpath}
+makefile:${makefile}
+<#list cmdSets as cmds>
+Group:
+    <#list cmds as cmd>
+    + <#list cmd.getArguments() as arg>${arg} </#list>${cmd.getTarget()}
+    </#list>
+</#list>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/imaker/tests/emake_data/invalid.mk.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,31 @@
+<#--
+============================================================================ 
+Name        : invalid.mk.ftl 
+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:
+
+============================================================================
+-->
+java_home:${java_home}
+java_utils_classpath:${java_utils_classpath}
+makefile:${makefile}
+<#list cmdSets as cmds>
+Group:
+    <#list cmds as cmd>
+    + <#list cmd.getArguments() as arg>${arg} </#list>${cmd.getTarget()}
+    </#list>
+<#-- The next line is meant to be invalid! -->
+</list>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/imaker/tests/epocroot/imaker	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,18 @@
+#!/bin/sh
+#
+# 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: 
+#
+
+python imaker_mock.py $*
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/imaker/tests/epocroot/imaker.bat	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,19 @@
+@echo off
+
+rem
+rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+rem All rights reserved.
+rem This component and the accompanying materials are made available
+rem under the terms of the License "Eclipse Public License v1.0"
+rem which accompanies this distribution, and is available
+rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+rem
+rem Initial Contributors:
+rem Nokia Corporation - initial contribution.
+rem
+rem Contributors:
+rem
+rem Description: 
+rem
+
+@python imaker_mock.py %*
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/imaker/tests/epocroot/imaker_mock.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,69 @@
+#============================================================================ 
+#Name        : imaler_mock.py 
+#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:
+#===============================================================================
+
+import sys
+print "iMaker 09.24.01, 10-Jun-2009."
+
+if sys.argv.count("version"):
+    print ""
+    sys.exit(0)
+
+if sys.argv.count("help-target-*-list") and sys.argv.count("/epoc32/rom/config/platform/product/image_conf_invalid.mk"):
+    print """mingw_make: /epoc32/rom/config/platform/product/image_conf_invalid.mk: No such file or directory
+mingw_make: *** No rule to make target `/epoc32/rom/config/platform/product/image_conf_invalid.mk'.  Stop.
+*** Error: Command `\epoc32\tools\rom\imaker\mingw_make.exe -R --no-print-directory SHELL="C:\WINNT\system32\cmd.exe" -I
+ B:/epoc32/rom/config -f B:/epoc32/tools/rom/imaker/imaker.mk TIMESTAMP=2009102317302243    -f /epoc32/rom/config/platform/
+product/image_conf_invalid.mk  -f B:/epoc32/tools/rom/imaker/imaker.mk help-target-*-list' failed in `/'.
+"""
+    sys.exit(1)
+
+if sys.argv.count("help-config"):
+    print "Finding available configuration file(s):"
+    print "/epoc32/rom/config/platform/product/image_conf_product.mk"
+    print "/epoc32/rom/config/platform/product/image_conf_product_ui.mk"
+    print ""
+    sys.exit(0)
+
+if sys.argv.count("help-target-*-list"):
+    # start with some kind of warnings...
+    print "B:/epoc32/tools/rom/imaker/imaker_help.mk:55: memory_map_settings2.hrh: No such file or directory"
+    print "all"
+    print "core"
+    print "core-dir"
+    print "help-%-list"
+    print "langpack_01"
+    print ""
+    sys.exit(0)
+
+if sys.argv.count("-f") and sys.argv.count("print-VARIABLE"):
+    print "VARIABLE = `PRODUCT_VALUE'"
+    print ""
+    sys.exit(0)
+
+if sys.argv.count("print-VARIABLE"):
+    print "VARIABLE = `VALUE'"
+    print ""
+    sys.exit(0)
+
+if sys.argv.count("print-NOTEXISTSVARIABLE"):
+    print ""
+    sys.exit(0)
+
+print ""
+sys.exit(0)
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/imaker/tests/epocroot_invalid/imaker	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,18 @@
+#!/bin/sh
+#
+# 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: 
+#
+
+python imaker_mock.py $*
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/imaker/tests/epocroot_invalid/imaker.bat	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,19 @@
+@echo off
+
+rem
+rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+rem All rights reserved.
+rem This component and the accompanying materials are made available
+rem under the terms of the License "Eclipse Public License v1.0"
+rem which accompanies this distribution, and is available
+rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+rem
+rem Initial Contributors:
+rem Nokia Corporation - initial contribution.
+rem
+rem Contributors:
+rem
+rem Description: 
+rem
+
+@python imaker_mock.py %*
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/imaker/tests/epocroot_invalid/imaker_mock.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,28 @@
+#============================================================================ 
+#Name        : imaler_mock.py 
+#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:
+#===============================================================================
+
+import sys
+print "iMaker 09.24.01, 10-Jun-2009."
+sys.stderr.write("""mingw_make: /epoc32/rom/config/platform/product/image_conf_invalid.mk: No such file or directory
+mingw_make: *** No rule to make target `/epoc32/rom/config/platform/product/image_conf_invalid.mk'.  Stop.
+*** Error: Command `\epoc32\tools\rom\imaker\mingw_make.exe -R --no-print-directory SHELL="C:\WINNT\system32\cmd.exe" -I
+ B:/epoc32/rom/config -f B:/epoc32/tools/rom/imaker/imaker.mk TIMESTAMP=2009102317302243    -f /epoc32/rom/config/platform/
+product/image_conf_invalid.mk  -f B:/epoc32/tools/rom/imaker/imaker.mk help-target-*-list' failed in `/'.
+""")
+sys.exit(1)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/imaker/tests/epocroot_task/emake	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,18 @@
+#!/bin/sh
+#
+# 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: 
+#
+
+echo $*
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/imaker/tests/epocroot_task/emake.cmd	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,21 @@
+@echo off
+
+rem
+rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+rem All rights reserved.
+rem This component and the accompanying materials are made available
+rem under the terms of the License "Eclipse Public License v1.0"
+rem which accompanies this distribution, and is available
+rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+rem
+rem Initial Contributors:
+rem Nokia Corporation - initial contribution.
+rem
+rem Contributors:
+rem
+rem Description: 
+rem
+
+echo %*
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/imaker/tests/epocroot_task/imaker	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,18 @@
+#!/bin/sh
+#
+# 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: 
+#
+
+python imaker_mock.py $*
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/imaker/tests/epocroot_task/imaker.bat	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,19 @@
+@echo off
+
+rem
+rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+rem All rights reserved.
+rem This component and the accompanying materials are made available
+rem under the terms of the License "Eclipse Public License v1.0"
+rem which accompanies this distribution, and is available
+rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+rem
+rem Initial Contributors:
+rem Nokia Corporation - initial contribution.
+rem
+rem Contributors:
+rem
+rem Description: 
+rem
+
+@python imaker_mock.py %*
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/imaker/tests/epocroot_task/imaker_mock.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,167 @@
+#============================================================================ 
+#Name        : imaler_mock.py 
+#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:
+#===============================================================================
+
+import sys
+print "iMaker 09.24.01, 10-Jun-2009."
+
+if sys.argv.count("version"):
+    print ""
+    sys.exit(0)
+
+# two product supported by the mock
+if sys.argv.count("help-config"):
+    print "Finding available configuration file(s):"
+    print "/epoc32/rom/config/platform/product/image_conf_product.mk"
+    print "/epoc32/rom/config/platform/product/image_conf_product_ui.mk"
+    print ""
+    sys.exit(0)
+
+# List of targets
+if sys.argv.count("help-target-*-list"):
+    # start with some kind of warnings...
+    print "all"
+    print "core"
+    print "core-dir"
+    print "help-%-list"
+    print "langpack_01"
+    print ""
+    sys.exit(0)
+
+
+
+
+def print_log(log):
+    for line in log:
+        print line
+
+
+core_log = ["iMaker 09.42.01, 13-Oct-2009.", 
+"Generating content with ConE",
+"* Writing tmp2.oby - result of substitution phase",
+"* Writing tmp3.oby - result of reorganisation phase",
+"* Writing tmp4.oby - result of Plugin stage",
+"* Writing tmp5.oby - result of choosing language-specific files",
+"* Writing tmp7.oby - result of problem-suppression phase",
+"* Writing tmp8.oby - result of bitmap conversion phase",
+"* Removing previous image and logs...",
+"* Writing tmp9.oby - result of cleaning phase",
+"* Writing NAME_VERSION04_rnd.oby - final OBY file",
+"* Writing NAME_VERSION04_rnd.rom.oby - final OBY file",
+"* Writing NAME_VERSION04_rnd.dir - ROM directory listing",
+"-------------------------------------------------------------------------------",
+"Total duration: 01:42  Status: OK",
+"===============================================================================",
+]
+
+if sys.argv.count("core"):
+    print_log(core_log)
+    print ""
+    sys.exit(0)
+
+rof2_log = ["iMaker 09.42.01, 13-Oct-2009.", 
+"Generating content with ConE",
+"Variant target             USE_VARIANTBLD = `2'",
+"Variant directory          VARIANT_DIR    = `/output/release_flash_images/product/rnd/langpack/langpack_01/rofs2/temp/cone'",
+"Variant config makefile    VARIANT_MK     = `/output/release_flash_images/product/rnd/langpack/langpack_01/rofs2/temp/cone/language_variant.mk'",
+"Variant include directory  VARIANT_INCDIR = `/output/release_flash_images/product/rnd/langpack/langpack_01/rofs2/temp/cone/include'",
+"Variant SIS directory      VARIANT_SISDIR = -",
+"Variant operator cache dir VARIANT_OPCDIR = -",
+"Variant widget preinst dir VARIANT_WGZDIR = -",
+"Variant zip content dir    VARIANT_ZIPDIR = -",
+"Variant copy content dir   VARIANT_CPDIR  = `/output/release_flash_images/product/rnd/langpack/langpack_01/rofs2/temp/cone/content'",
+"Variant output directory   VARIANT_OUTDIR = `/output/release_flash_images/product/rnd/langpack/langpack_01/rofs2/variant'",
+"Generating oby(s) for Variant image creation",
+"Copying copy content directory",
+"Generating Feature manager file(s)",
+"Generating file(s) for ROFS2 image creation",
+"Generating language files for Language Package image creation",
+"Creating ROFS2 SOS image",
+"",
+"ROM_IMAGE[0] non-xip size=0x00000000 xip=0 compress=0 extension=0 composite=none uncompress=0", 
+"ROM_IMAGE[1] dummy1 size=0x10000000 xip=0 compress=0 extension=0 composite=none uncompress=0 ",
+"ROM_IMAGE[2] rofs2 size=0x10000000 xip=0 compress=0 extension=0 composite=none uncompress=0 ",
+"ROM_IMAGE[3] dummy3 size=0x10000000 xip=0 compress=0 extension=0 composite=none uncompress=0 ",
+"* Writing tmp2.oby - result of substitution phase",
+"* Writing tmp3.oby - result of reorganisation phase",
+"* Writing tmp4.oby - result of Plugin stage",
+"* Writing tmp5.oby - result of choosing language-specific files",
+"Created ecom-2-0.spi",
+"Created ecom-2-1.s06",
+"Created ecom-2-2.s15",
+"Created ecom-2-3.s07",
+"Created ecom-2-4.s08",
+"Created ecom-2-5.s09",
+"Created ecom-2-6.s01",
+"* Writing tmp6.oby - result of SPI stage",
+"override.pm: ------------------------------------------------------------------",
+"Handling overrides...Replace ROM_IMAGE[2] `data=\epoc32\data\Z\Resource\bootdata\languages.txt   resource\Bootdata\languages.txt' with `data=I:/output/release_flash_images/product/rnd/langpack/langpack_01/rofs2/NAME_VERSION04_rnd_rofs2_languages.txt  resource\Bootdata\languages.txt'",
+"Replace ROM_IMAGE[2] `data=\epoc32\data\Z\Resource\versions\lang.txt        resource\versions\lang.txt' with `data=I:/output/release_flash_images/product/rnd/langpack/langpack_01/rofs2/NAME_VERSION04_rnd_rofs2_lang.txt  resource\versions\lang.txt'",
+"Replace ROM_IMAGE[2] `data=\epoc32\data\Z\Resource\versions\langsw.txt        resource\versions\langsw.txt' with `data=I:/output/release_flash_images/product/rnd/langpack/langpack_01/rofs2/NAME_VERSION04_rnd_rofs2_langsw.txt  resource\versions\langsw.txt'",
+"override.pm: Duration: 1 seconds ----------------------------------------------",
+"obyparse.pm: ------------------------------------------------------------------",
+"Finding include hierarchy from tmp1.oby",
+"Found 730 different include files",
+"Finding SPI input files from tmp5.oby",
+"Found 103 SPI input files",
+"Reading UDEB files from /epoc32/rombuild/mytraces.txt",
+"Found 0 entries",
+"Finding ROM-patched components",
+"Found 0 ROM-patched components",
+"obyparse.pm: Duration: 2 seconds ----------------------------------------------",
+"* Writing tmp7.oby - result of problem-suppression phase",
+"* Writing tmp8.oby - result of bitmap conversion phase",
+"* Removing previous image and logs...",
+"* Writing tmp9.oby - result of cleaning phase",
+"* Writing NAME_VERSION04_rnd.oby - final OBY file",
+"* Writing NAME_VERSION04_rnd.rofs2.oby - final OBY file",
+"* Writing NAME_VERSION04_rnd.dir - ROM directory listing",
+"* Executing rofsbuild -slog -loglevel1     NAME_VERSION04_rnd.rofs2.oby",
+"The number of processors (4) is used as the number of concurrent jobs.",
+"",
+"ROFSBUILD - Rofs/Datadrive image builder V2.6.3",
+"Copyright (c) 1996-2009 Nokia Corporation.",
+"",
+"WARNING: Unknown keyword 'OM_IMAGE[0]'.  Line 31 ignored",
+"WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 2464 ignored",
+"WARNING: Unknown keyword 'OM_IMAGE[0]'.  Line 31 ignored",
+"WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 2464 ignored",
+"* rofsbuild failed",
+"",
+"*** Error: (S:ROFS2,C:1,B:1,K:0,V:1): Command `buildrom -loglevel1 -v -nosymbols -DFEATUREVARIANT=product -fm=/epoc32/include/s60regionalfeatures.xml -es60ibymacros -elocalise -oNAME_VERSION04_rnd.img I:/output/release_flash_images/product/rnd/langpack/langpack_01/rofs2/NAME_VERSION04_rnd_rofs2_master.oby' failed (1) in `/output/release_flash_images/product/rnd/langpack/langpack_01/rofs2'.",
+"===============================================================================",
+"Target: langpack_01  Duration: 01:40  Status: FAILED",
+"ConE output dir = `/output/release_flash_images/product/rnd/langpack/langpack_01/rofs2/temp/cone'",
+"ConE log file   = `/output/release_flash_images/product/rnd/langpack/langpack_01/rofs2/NAME_VERSION04_rnd_cone_langpack_01.log'",
+"ROFS2 dir       = `/output/release_flash_images/product/rnd/langpack/langpack_01/rofs2'",
+"ROFS2 symbols   = `/output/release_flash_images/product/rnd/langpack/langpack_01/rofs2/NAME_VERSION04_rnd.rofs2.symbol'",
+"ROFS2 flash     = `/output/release_flash_images/product/rnd/langpack/langpack_01/NAME_VERSION04_rnd.rofs2.fpsx'",
+"-------------------------------------------------------------------------------",
+"Total duration: 01:42  Status: FAILED",
+"===============================================================================",
+]
+
+if sys.argv.count("langpack_01"):
+    print_log(rof2_log)
+    sys.stderr.write("*** Error: (S:ROFS2,C:1,B:1,K:0,V:1): Command `buildrom -loglevel1 -v -nosymbols -DFEATUREVARIANT=product -fm=/epoc32/include/s60regionalfeatures.xml -es60ibymacros -elocalise -oNAME_VERSION04_rnd.img /output/release_flash_images/product/rnd/langpack/langpack_01/rofs2/NAME_VERSION04_rnd_rofs2_master.oby' failed (1) in `/output/release_flash_images/product/rnd/langpack/langpack_01/rofs2'.\n")
+    print ""
+    sys.exit(1)
+
+
+print ""
+sys.exit(0)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/imaker/tests/parallelexecutor_data/linux.txt	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,2 @@
+ls -l
+ls -l
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/imaker/tests/parallelexecutor_data/windows.txt	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,2 @@
+cmd /c dir
+cmd /c dir
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/imaker/tests/src/com/nokia/helium/imaker/tests/TestHelpConfigStreamConsumer.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,58 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+package com.nokia.helium.imaker.tests;
+
+import java.io.File;
+
+import org.junit.*;
+
+import com.nokia.helium.imaker.HelpConfigStreamConsumer;
+
+import static org.junit.Assert.*;
+
+/**
+ * Test the HelpTargetStreamConsumer.
+ *
+ */
+public class TestHelpConfigStreamConsumer {
+
+    /**
+     * Checking if the consumer is parsing correctly the output. 
+     */
+    @Test
+    public void introspectConfiguration() {
+        HelpConfigStreamConsumer consumer = new HelpConfigStreamConsumer();
+        consumer.consumeLine("iMaker 09.24.01, 10-Jun-2009.");
+        consumer.consumeLine("Finding available configuration file(s):");
+        consumer.consumeLine("/epoc32/rom/config/platform/product/image_conf_product.mk");
+        consumer.consumeLine("/epoc32/rom/config/platform/product/image_conf_product_ui.mk");
+        consumer.consumeLine("");
+        
+        // Verifying string output
+        String[] expected = new String[2];
+        expected[0] = "/epoc32/rom/config/platform/product/image_conf_product.mk";
+        expected[1] = "/epoc32/rom/config/platform/product/image_conf_product_ui.mk";
+        assertArrayEquals(expected, consumer.getConfigurations().toArray(new String[2]));
+
+        // Verifying the file output
+        File[] expectedFile = new File[2];
+        expectedFile[0] = new File(new File("."), "/epoc32/rom/config/platform/product/image_conf_product.mk");
+        expectedFile[1] = new File(new File("."), "/epoc32/rom/config/platform/product/image_conf_product_ui.mk");
+        assertArrayEquals(expectedFile, consumer.getConfigurations(new File(".")).toArray(new File[2]));
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/imaker/tests/src/com/nokia/helium/imaker/tests/TestIMaker.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,141 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+package com.nokia.helium.imaker.tests;
+
+import static org.junit.Assert.*;
+
+import java.io.File;
+import java.util.List;
+
+import org.junit.Test;
+
+import com.nokia.helium.imaker.IMaker;
+import com.nokia.helium.imaker.IMakerException;
+
+/**
+ * Testing IMaker class.
+ */
+public class TestIMaker {
+
+    private File epocroot = new File(System.getProperty("testdir"), "tests/epocroot");
+
+    /**
+     * Test the getVersion is retrieving the output from imaker correctly.
+     * @throws IMakerException
+     */
+    @Test
+    public void testGetVersion() throws IMakerException {
+        String expectedVersion = "iMaker 09.24.01, 10-Jun-2009.";
+        IMaker imaker = new IMaker(epocroot);
+        assertEquals(expectedVersion, imaker.getVersion());
+    }
+
+    /**
+     * Test the introspection of an existing variable.
+     * @throws IMakerException
+     */
+    @Test
+    public void testGetVariable() throws IMakerException {
+        IMaker imaker = new IMaker(epocroot);
+        assertEquals("VALUE", imaker.getVariable("VARIABLE"));
+    }
+    
+    /**
+     * Test the introspection of an existing variable.
+     * @throws IMakerException
+     */
+    @Test
+    public void testGetVariableFromConfiguration() throws IMakerException {
+        IMaker imaker = new IMaker(epocroot);
+        assertEquals("PRODUCT_VALUE", imaker.getVariable("VARIABLE", new File("/epoc32/rom/config/platform/product/image_conf_product.mk")));
+    }
+
+    /**
+     * Test the introspection of a non-existing variable.
+     * @throws IMakerException
+     */
+    @Test
+    public void testGetNotExistingVariable() throws IMakerException {
+        IMaker imaker = new IMaker(epocroot);
+        assertEquals(null, imaker.getVariable("NOTEXISTINGVARIABLE"));
+    }
+    
+    /**
+     * Test the introspection of existing configurations.
+     * @throws IMakerException
+     */
+    @Test
+    public void testGetConfigurations() throws IMakerException {
+        IMaker imaker = new IMaker(epocroot);
+        String[] expected = new String[2];
+        expected[0] = "/epoc32/rom/config/platform/product/image_conf_product.mk";
+        expected[1] = "/epoc32/rom/config/platform/product/image_conf_product_ui.mk";
+        assertArrayEquals(expected, imaker.getConfigurations().toArray(new String[2]));
+    }
+    
+    /**
+     * Test the introspection of existing target for a configuration.
+     * @throws IMakerException
+     */
+    @Test
+    public void testGetTargets() throws IMakerException {
+        IMaker imaker = new IMaker(epocroot);
+        List<String> targets = imaker.getTargets("/epoc32/rom/config/platform/product/image_conf_product.mk");
+        
+        String[] expected = new String[5];
+        expected[0] = "all";
+        expected[1] = "core";
+        expected[2] = "core-dir";
+        expected[3] = "help-%-list";
+        expected[4] = "langpack_01";
+        assertArrayEquals(expected, targets.toArray(new String[5]));
+    }
+
+    /**
+     * Test the introspection of existing target for a configuration using file
+     * object.
+     * @throws IMakerException
+     */
+    @Test
+    public void testGetTargetsFromFile() throws IMakerException {
+        IMaker imaker = new IMaker(epocroot);
+        List<String> targets = imaker.getTargets(new File("/epoc32/rom/config/platform/product/image_conf_product.mk"));
+        
+        String[] expected = new String[5];
+        expected[0] = "all";
+        expected[1] = "core";
+        expected[2] = "core-dir";
+        expected[3] = "help-%-list";
+        expected[4] = "langpack_01";
+        assertArrayEquals(expected, targets.toArray(new String[5]));
+    }
+    
+    /**
+     * Test the introspection of existing target for a configuration.
+     * @throws IMakerException
+     */
+    @Test
+    public void testGetTargetsWithInvalidProductConf() throws IMakerException {
+        IMaker imaker = new IMaker(epocroot);
+        try {
+            imaker.getTargets("/epoc32/rom/config/platform/product/image_conf_invalid.mk");
+            fail("We should catch a failure from iMaker.");
+        } catch(IMakerException e) {
+            // Exception should be raised
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/imaker/tests/src/com/nokia/helium/imaker/tests/TestParallelExecutor.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,53 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+package com.nokia.helium.imaker.tests;
+
+import java.io.File;
+import org.junit.Test;
+import com.nokia.helium.imaker.utils.ParallelExecutor;
+
+/**
+ * Basic testing of the ParallelExecutor
+ *
+ */
+public class TestParallelExecutor {
+	private File testdir = new File(System.getProperty("testdir"));
+	
+	/**
+	 * Nothing should happen.
+	 */
+	@Test
+	public void executionWithNoArgs() {
+		String args[] = new String[0];
+		ParallelExecutor.main(args);
+	}
+
+	/**
+	 * Will list current directory content twice.
+	 */
+	@Test
+	public void executionWithTextFile() {
+		String args[] = new String[1];
+        if (System.getProperty("os.name").toLowerCase().startsWith("win")) {
+        	args[0] = new File(testdir, "tests/parallelexecutor_data/windows.txt").getAbsolutePath();
+        } else {
+        	args[0] = new File(testdir, "tests/parallelexecutor_data/linux.txt").getAbsolutePath();
+        }
+		ParallelExecutor.main(args);
+	}
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/imaker/tests/src/com/nokia/helium/imaker/tests/TestPrintVarStreamConsumer.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,46 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+package com.nokia.helium.imaker.tests;
+
+import org.junit.*;
+
+import com.nokia.helium.imaker.PrintVarSteamConsumer;
+
+import static org.junit.Assert.*;
+
+public class TestPrintVarStreamConsumer {
+
+    @Test
+    public void readSimpleVar() {
+        PrintVarSteamConsumer consumer = new PrintVarSteamConsumer("WORKDIR");
+        consumer.consumeLine("iMaker 09.24.01, 10-Jun-2009.");
+        consumer.consumeLine("WORKDIR = `/.'");
+        consumer.consumeLine("");
+        assertEquals(consumer.getValue(), "/.");
+    }
+
+    @Test
+    public void readMultilineVar() {
+        PrintVarSteamConsumer consumer = new PrintVarSteamConsumer("LONGVAR");
+        consumer.consumeLine("iMaker 09.24.01, 10-Jun-2009.");
+        consumer.consumeLine("LONGVAR = `some text");
+        consumer.consumeLine("second line");
+        consumer.consumeLine("end of text'");
+        consumer.consumeLine("");
+        assertEquals(consumer.getValue(), "some text\nsecond line\nend of text");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/internaldata/bin/com/nokia/helium/internaldata/ant/antlib.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : antlib.xml 
+Part of     : Helium AntLib
+
+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:
+
+============================================================================
+-->
+<antlib>
+    <!-- Task definition -->
+    <taskdef name="hlmassertmessage" classname="com.nokia.helium.internaldata.ant.taskdefs.HlmAssertMessage"/>
+</antlib>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/internaldata/bin/com/nokia/helium/internaldata/ant/helium.antlib.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : libs.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="libs-internaldata" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
+    <description>
+        Ant task definition declarations.
+    </description>
+    <taskdef resource="com/nokia/helium/internaldata/ant/antlib.xml" uri="http://www.nokia.com/helium"/>
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/internaldata/build.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : build.xml 
+Part of     : Helium AntLib
+
+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="helium-internaldata">
+    <description>Helium Antlib internaldata build file.</description>
+    
+    <import file="${builder.dir}/java/macros.ant.xml"/>
+
+    <property name="name" value="internaldata"/>
+
+</project>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/internaldata/ivy.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+============================================================================ 
+Name        : ivy.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:
+
+============================================================================  
+-->
+<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
+    <info
+        organisation="com.nokia.helium"
+        module="helium-internaldata"
+        status="integration">
+  </info>
+  <dependencies>
+    <dependency name="helium-core" rev="latest.integration" conf="default" />
+    <dependency org="dom4j" name="dom4j" rev="latest.integration" conf="default" />
+  </dependencies>
+</ivy-module>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/internaldata/src/com/nokia/helium/internaldata/ant/antlib.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : antlib.xml 
+Part of     : Helium AntLib
+
+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:
+
+============================================================================
+-->
+<antlib>
+    <!-- Task definition -->
+    <taskdef name="hlmassertmessage" classname="com.nokia.helium.internaldata.ant.taskdefs.HlmAssertMessage"/>
+</antlib>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/internaldata/src/com/nokia/helium/internaldata/ant/helium.antlib.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : libs.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="libs-internaldata" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
+    <description>
+        Ant task definition declarations.
+    </description>
+    <taskdef resource="com/nokia/helium/internaldata/ant/antlib.xml" uri="http://www.nokia.com/helium"/>
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/internaldata/src/com/nokia/helium/internaldata/ant/listener/AssertNode.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,96 @@
+/*
+* Copyright (c) 2007-2008 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: 
+*
+*/
+ 
+package com.nokia.helium.internaldata.ant.listener;
+
+//import com.nokia.ant.taskdefs.HlmAssertMessage;
+import com.nokia.helium.internaldata.ant.taskdefs.HlmAssertMessage;
+/**
+ * Object to set end time for a task.
+ *
+ */
+public class AssertNode extends DataNode {
+
+    private String name;
+    
+    
+    // location
+    private String filename;
+    private String message;
+    private int line = -1;
+    private String assertName;
+    
+     public AssertNode(DataNode parent, HlmAssertMessage task) {
+        super(parent, task);
+        name = task.getTaskName();
+        this.setFilename(task.getLocation().getFileName());
+        this.setLine(task.getLocation().getLineNumber());
+        message = task.getMessage();
+        assertName = task.getAssertName();
+    }
+    /**
+     * Return the assert message
+     * @return
+     */
+     public String getMessage() {
+        return message;
+    }
+    /**
+     * Return the assert task name.
+     * @return
+     */
+    public String getName() {
+        return name;
+    } 
+    /**
+     * Return the assert name.
+     * @return
+     */
+    public String getAssertName() 
+    {
+        return assertName;
+    }
+    /**
+     * Return the path to file name.
+     * @return
+     */
+    public String getFilename() {
+        return filename;
+    }
+    /**
+     * Sets the path to file name.
+     * @param filename
+     */
+    public void setFilename(String filename) {
+        this.filename = filename;
+    }
+    /**
+     * Return the line number.
+     * @return
+     */
+    public int getLine() {
+        return line;
+    }
+    /**
+     * Sets the line number.
+     * @param line
+     */
+    public void setLine(int line) {
+        this.line = line;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/internaldata/src/com/nokia/helium/internaldata/ant/listener/BuildNode.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,49 @@
+/*
+* Copyright (c) 2007-2008 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: 
+*
+*/
+
+package com.nokia.helium.internaldata.ant.listener;
+
+import org.apache.tools.ant.Project;
+/**
+ * Keeps data for a build node.
+ *
+ */
+public class BuildNode extends DataNode {
+    
+    private boolean successful = true;
+    private String name;
+    
+    public BuildNode(DataNode parent, Project project) {
+        super(parent, project);
+        name = project.getName();
+    }
+
+    public String getName() {
+        if (name != null)
+            return name;
+        return "build";
+    } 
+
+    public boolean getSuccessful() {
+        return successful;
+    }
+
+    public void setSuccessful(boolean successful) {
+        this.successful = successful;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/internaldata/src/com/nokia/helium/internaldata/ant/listener/DataNode.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,171 @@
+/*
+* Copyright (c) 2007-2008 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: 
+*
+*/
+
+package com.nokia.helium.internaldata.ant.listener;
+import java.util.Iterator;
+import java.util.Vector;
+import java.util.Date;
+
+/**
+ * Data node object to iterate, keep timing, name, maintain parallel tasks for the node. 
+ *
+ */
+public abstract class DataNode {
+
+    // Job number management
+    private static long commonJobId;
+    private long jobId = commonJobId++;
+    // Parent node
+    private DataNode parent;
+    
+    // children nodes.
+    private Vector<DataNode> children = new Vector<DataNode>();
+    
+    
+    
+    // Statistics about the time.
+    private Date startTime;
+    private Date endTime;
+
+    // Get the thread id. this is important for parallel tasks.
+    private long threadId = Thread.currentThread().getId();
+    
+    // reference for the data.
+    private Object reference; 
+    
+    public DataNode(DataNode parent, Object reference) {
+        this.parent = parent;
+        if (parent != null) {
+            parent.add(this);
+        }
+        this.setStartTime(new Date());
+        this.setReference(reference);
+    }
+    
+    /**
+     * Method used to register a child to it's parent.
+     * @param child, the child to register.
+     */
+    public void add(DataNode child) {
+        children.add(child);
+    }
+
+    /**
+     * Return an iterator on this node children
+     * @return the iterator
+     */
+    public Iterator<DataNode> iterator() {
+        return children.iterator();
+    }
+
+    /**
+     * Method used to remove a node from it's parent
+     * @param child, the child to remove.
+     */
+    public void remove(DataNode child) {
+        children.remove(child);
+    }
+
+    /**
+     * Is the node containing any children.
+     * @return true is the node is empty
+     */
+    public boolean isEmpty() {
+        return children.isEmpty();
+    }
+    
+    /**
+     * Returns the parent node, or null if the root.
+     * @return a DataNode.
+     */
+    public DataNode getParent() {
+        return parent;
+    }
+
+    public Date getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(Date startTime) {
+        this.startTime = startTime;
+    }
+
+    /**
+     * Make is reliable: if end time doesn't exists let's use the start time.
+     */
+    public Date getEndTime() {
+        if (endTime != null)
+            return endTime;
+        else
+            return this.getStartTime();
+    }
+
+    public void setEndTime(Date endTime) {
+        this.endTime = endTime;
+    }
+    
+    /**
+     * Return the thread where the class has been created under.
+     * @return thread id as a long.
+     */
+    public long getThreadId() {
+        return this.threadId;
+    }
+
+    public Object getReference() {
+        return reference;
+    }
+
+    public void setReference(Object reference) {
+        this.reference = reference;
+    }
+    
+    public long getJobId() {
+        return jobId;
+    }
+
+    /**
+     * Find a node using its reference.
+     * @param reference object
+     * @return
+     */
+    public DataNode find(Object reference) {
+        if (this.reference == reference)
+            return this;        
+        for (Iterator<DataNode> i = children.iterator() ; i.hasNext() ; ) {
+            DataNode node = i.next();
+            DataNode result = node.find(reference);
+            if (result != null)
+                return result;
+        }
+        return null;
+    }
+    
+
+    /**
+     * Name of the node. 
+     * @return name of the node (e.g target name for targets)
+     */
+    public abstract String getName();
+    
+    /**
+     * Default string representation.
+     */
+    public String toString() {
+        return getName();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/internaldata/src/com/nokia/helium/internaldata/ant/listener/EmailDataSender.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,161 @@
+/*
+* Copyright (c) 2007-2008 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: 
+*
+*/
+
+package com.nokia.helium.internaldata.ant.listener;
+
+import java.util.Properties;
+import java.util.Hashtable;
+import java.util.zip.GZIPOutputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import javax.mail.*;
+import javax.mail.internet.*;
+import javax.naming.*;
+import javax.naming.directory.*;
+
+import javax.activation.DataHandler;
+import javax.mail.util.ByteArrayDataSource;
+
+import org.apache.log4j.Logger;
+
+/**
+ * Sends email of the internal data log in a zipped format.
+ *
+ */
+public class EmailDataSender {
+
+    
+    // The target address
+    public static final String TO_EMAIL = "helium.internaldata@nokia.com";
+    
+    // LDAP config
+    public static final String LDAP_URL = "ldap://nedi.europe.nokia.com:389/o=Nokia";
+
+    // Default SMTP server
+    public static final String SMTP_SERVER = "smtp.nokia.com";
+    
+    // Configured smtp server address
+    private String smtpServer;
+    // Logger
+    private Logger log = Logger.getLogger(EmailDataSender.class);
+    
+    
+    
+    
+    /**
+     * Set the smtp server address.
+     */
+    public void setSMTPServer(String address) {
+        smtpServer = address;
+    }
+
+    /**
+     * Get the smtp server address.
+     */
+    public String getSMTPServer() {
+        if (smtpServer != null)
+            return smtpServer;
+        return SMTP_SERVER;
+    }
+    
+    /**
+     * Sending the XML data through email.
+     */
+    public void sendData(String data) {     
+        try {
+            String email = getUserEmail();
+            Properties props = new Properties();
+            props.setProperty("mail.smtp.host", getSMTPServer());
+
+            Session mailSession = Session.getDefaultInstance(props, null);
+
+            MimeMessage message = new MimeMessage(mailSession);
+            message.setSubject("[HELIUM]: internal data");
+            
+            MimeMultipart multipart = new MimeMultipart("related");
+            
+            // first part  (the text html content)
+            BodyPart messageBodyPart = new MimeBodyPart();
+            String htmlText = "<H1>Internal data</H1>";
+            messageBodyPart.setContent(htmlText, "text/html");
+            multipart.addBodyPart(messageBodyPart); // add to the multipart
+
+            // second part (the data)
+            messageBodyPart = new MimeBodyPart();
+            ByteArrayDataSource dataSrc = gzip(data, "data.xml");
+            messageBodyPart.setFileName(dataSrc.getName());
+            messageBodyPart.setDataHandler(new DataHandler(dataSrc));
+            messageBodyPart.setHeader("Content-ID","<data>");
+            
+            multipart.addBodyPart(messageBodyPart); // add to the multipart
+            
+            message.setContent(multipart);
+            message.setFrom(new InternetAddress(email));
+            message.addRecipient(Message.RecipientType.TO, new InternetAddress(TO_EMAIL));
+            
+            log.debug("Sending data.");
+            Transport.send(message);
+        } catch (Exception e) {
+            // We are Ignoring the errors as no need to fail the build.
+            log.debug("Internal data failure: " + e.getMessage(), e);
+        }        
+    }
+
+    /**
+     * GZipping a string.
+     * @param data the content to be gzipped.
+     * @param filename the name for the file.
+     * @return a ByteArrayDataSource.
+     */
+    protected ByteArrayDataSource gzip(String data, String filename) throws IOException {
+        ByteArrayOutputStream out = new ByteArrayOutputStream();
+        GZIPOutputStream gz = new GZIPOutputStream(out);
+        gz.write(data.getBytes());
+        gz.close();
+        out.close();
+        ByteArrayDataSource dataSrc = new ByteArrayDataSource(out.toByteArray(), "application/x-gzip");
+        dataSrc.setName(filename + ".gz");
+        return dataSrc;
+    }
+
+    /**
+     * Getting user email.
+     * @returns the user email.
+     */
+    protected String getUserEmail() throws Exception {
+        String username = System.getProperty("user.name");
+
+        // Set up environment for creating initial context
+        Hashtable<String, String> env = new Hashtable<String, String>(11);
+        env.put(Context.INITIAL_CONTEXT_FACTORY,
+                "com.sun.jndi.ldap.LdapCtxFactory");
+        env.put(Context.PROVIDER_URL, LDAP_URL);
+
+        // Create initial context
+        DirContext ctx = new InitialDirContext(env);
+        SearchControls controls = new SearchControls();
+        controls.setSearchScope(SearchControls.SUBTREE_SCOPE);
+        NamingEnumeration<SearchResult> en = ctx.search("", "uid=" + username, controls);
+        if (en.hasMore()) {
+            SearchResult sr = (SearchResult) en.next();
+            String email = (String) sr.getAttributes().get("mail").get();
+            return email;
+        }
+        throw new Exception("Could not find user email in LDAP.");
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/internaldata/src/com/nokia/helium/internaldata/ant/listener/EndLessStack.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,97 @@
+/*
+* Copyright (c) 2007-2008 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: 
+*
+*/
+
+package com.nokia.helium.internaldata.ant.listener;
+
+import java.util.Stack;
+/**
+ * Object to keep the elements in a stack, it supports both pop and peek (return element is kept in the stack).
+ * 
+ * @param <E> The type applied to the stack.
+ */
+public class EndLessStack<E> extends Stack<E> {
+    public static final long serialVersionUID = -1L;
+    private E defaultElement;
+    
+    /**
+     * Create a stack with a defaultElement as the default element.
+     * @param defaultElement The default element to use.
+     */
+    public EndLessStack(E defaultElement) {
+        super();
+        this.defaultElement = defaultElement;
+    }
+
+    /**
+     * Create a stack with a null default element.
+     */
+    public EndLessStack() {
+        super();
+        this.defaultElement = null;
+    }
+
+    /**
+     * This return the top most element out from the stack.
+     * If the stack is empty it returns the defaultElement.
+     * @return element 
+     */
+    public E pop() {
+        E element = super.pop();
+        if (element != null)
+            return element;
+        return defaultElement;
+    }
+    
+    /** 
+     * Endless stack is never empty. 
+     */
+    public boolean empty() {
+        return false;
+    }
+    
+    /**
+     * This return the top most element from the stack.
+     * If the stack is empty it returns the defaultElement.
+     * The return element is kept in the stack.
+     * @return element 
+     */
+    public E peek() {
+        if (!super.empty()) {
+            E element = super.peek();
+            return element;
+        }
+        return defaultElement;
+    }
+
+    /**
+     * Get default element.
+     * This is the object which will get returned if the internal stack gets empty.
+     * @return element 
+     */
+    public Object getDefaultElement() {
+        return defaultElement;
+    }
+
+    /**
+     * Set default element.
+     * @return element 
+     */
+    public void setDefaultElement(E defaultElement) {
+        this.defaultElement = defaultElement;
+    }
+    
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/internaldata/src/com/nokia/helium/internaldata/ant/listener/Listener.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,207 @@
+/*
+* Copyright (c) 2007-2008 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: 
+*
+*/
+ 
+package com.nokia.helium.internaldata.ant.listener;
+
+import java.util.Hashtable;
+import java.util.Date;
+import com.nokia.helium.internaldata.ant.taskdefs.HlmAssertMessage;
+import org.apache.tools.ant.BuildEvent;
+import org.apache.tools.ant.BuildListener;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.SubBuildListener;
+import org.dom4j.Document;
+import org.apache.log4j.Logger;
+import java.lang.management.ManagementFactory;
+import java.lang.management.MemoryMXBean;
+import java.lang.management.MemoryUsage;
+
+/**
+ * Listener class for the Logger.
+ *
+ */
+public class Listener implements BuildListener, SubBuildListener {
+
+    // Logger for listener
+    private Logger log;
+        
+    // Root node.
+    private BuildNode buildNode;
+    
+    // Ant build Stack. Useful to associate with current parent.
+    private EndLessStack<DataNode> buildEventStack = new EndLessStack<DataNode>();
+    
+    // default list of properties to extract.
+    private String[] propList = {"os.name", "user.name", "build.name", "build.number", "build.id", "build.family", "build.system", "env.NUMBER_OF_PROCESSORS", "helium.version", "env.SYMSEE_VERSION", "diamonds.build.id"};
+
+    // Memory bean 
+    private MemoryMXBean mbean;
+    
+    public Listener() {
+        log = Logger.getLogger(Listener.class);
+        mbean = ManagementFactory.getMemoryMXBean();
+    }
+    
+    /**
+     * Method to call to trigger the data sending.
+     */
+    public void sendData(String smtpServer, BuildEvent event) {
+        if (buildNode != null) {
+            Document database = null;        
+            //TreeDumper dumper = new TreeDumper(buildNode);
+            //dumper.dump();
+            try {
+                log.debug("Creating the XML log.");
+                XMLRenderer writer = new XMLRenderer(buildNode, database, this.extractProperties(), event);
+                EmailDataSender sender = new EmailDataSender();
+                // Setting the server address.
+                sender.setSMTPServer(smtpServer);
+                log.debug("Sending the data.");
+                String xml = writer.toString();
+                log.debug(xml);
+                sender.sendData(xml);
+            } catch (Exception e) {
+                // We are Ignoring the errors as no need to fail the build.
+                log.debug("Error: error generating the InterData database XML.", e);
+            }
+        }
+    }
+
+    
+    
+    /**
+     * Extracting properties from the build.
+     * @return a hashtable containing relevant properties and their value.
+     */
+    @SuppressWarnings("unchecked")
+    private Hashtable<String, String> extractProperties() {
+        Hashtable<String, String> properties = new Hashtable<String, String>();
+        if (buildNode != null) {
+            Project project = (Project)buildNode.getReference();
+            Hashtable<String, String> projProps = project.getProperties();
+            for (int i = 0; i < propList.length; i++) {
+                if (projProps.containsKey(propList[i])) {
+                    properties.put(propList[i], projProps.get(propList[i]));
+                }
+            }
+        }
+        return properties;
+    }
+    
+    //-------------------------------------------------------------
+    //
+    // Implementing BuildListener and SubBuildListener interface
+    //
+    //-------------------------------------------------------------
+    public synchronized void buildFinished(BuildEvent event) {
+        log.debug("buildFinished");
+        if (buildNode != null) {
+            BuildNode node = (BuildNode)buildNode.find(event.getProject());
+            if (node != null) {
+                node.setEndTime(new Date());
+                node.setSuccessful(event.getException() == null);
+            }
+        }
+        String smtpServer = event.getProject().getProperty("email.smtp.server");
+        this.sendData(smtpServer, event);
+    }
+
+    public synchronized void buildStarted(BuildEvent event) {
+        if (buildNode == null) {
+            // Create data node for a build
+            buildNode = new BuildNode(null, event.getProject());
+            // Garbage collector for execution. 
+            buildEventStack.setDefaultElement(buildNode);
+        }
+    }
+
+    public synchronized void subBuildFinished(BuildEvent event) {
+        if (buildNode != null) {
+            BuildNode node = (BuildNode)buildNode.find(event.getProject());
+            if (node != null) {
+                node.setEndTime(new Date());
+                node.setReference(null);
+                node.setSuccessful(event.getException() == null);
+            } else {
+                log.debug("subBuildFinished - could not find subbuild.");
+            }
+            buildEventStack.pop();
+        }
+    }
+
+    public synchronized void subBuildStarted(BuildEvent event) {
+        DataNode parentNode = buildEventStack.peek();
+        if (parentNode != null) {
+            BuildNode node = new BuildNode(parentNode, event.getProject());
+            buildEventStack.push(node);
+        }
+    }
+
+    public void messageLogged(BuildEvent event) {
+        // Ignoring message logging.
+    }
+
+    public synchronized void targetFinished(BuildEvent event) {
+        if (buildNode != null) {
+            DataNode node = buildNode.find(event.getTarget());
+            if (node != null) {
+                node.setEndTime(new Date());
+                MemoryUsage mem = mbean.getHeapMemoryUsage();
+                TargetNode tnode = (TargetNode)node;
+                tnode.setEndUsedHeap(mem.getUsed());
+                tnode.setEndCommittedHeap(mem.getCommitted());
+                node.setReference(null);
+            } else {
+                log.debug("targetFinished - could not find target.");
+            }
+            buildEventStack.pop();
+        }
+    }
+
+    public synchronized void targetStarted(BuildEvent event) {
+        DataNode parentNode = buildEventStack.peek();
+        if (parentNode != null) {
+            TargetNode node = new TargetNode(parentNode, event.getTarget());
+            MemoryUsage mem = mbean.getHeapMemoryUsage();
+            node.setStartUsedHeap(mem.getUsed());
+            node.setStartCommittedHeap(mem.getCommitted());
+            buildEventStack.push(node);
+        } else {
+            log.debug("targetStarted - could not find parent.");
+        }
+    }
+
+    public synchronized void taskFinished(BuildEvent event) {
+        // Ignoring task information
+    }
+
+    public synchronized void taskStarted(BuildEvent event) {
+        // Ignoring task information
+    }
+    
+    public void addAssertTask(HlmAssertMessage assertTask) { 
+        if (buildNode != null) {
+            DataNode parentNode = buildNode.find(assertTask.getOwningTarget());
+            if (parentNode != null) {
+                new AssertNode(parentNode, assertTask);
+            } else {
+                new AssertNode(buildEventStack.peek(), assertTask);
+            }
+        }
+        
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/internaldata/src/com/nokia/helium/internaldata/ant/listener/TargetNode.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,98 @@
+/*
+* Copyright (c) 2007-2008 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: 
+*
+*/
+
+package com.nokia.helium.internaldata.ant.listener;
+
+import org.apache.tools.ant.Target;
+/**
+ * Object to keep trace for memory usage, based on start heap and end heap of a target.
+ *
+ */
+public class TargetNode extends DataNode {
+
+    private String name;
+
+    // location
+    private String filename;
+    private int line = -1;
+    
+    // Memory usage
+    private long startUsedHeap;
+    private long startCommittedHeap;
+    private long endUsedHeap;
+    private long endCommittedHeap;
+    
+    public TargetNode(DataNode parent, Target target) {
+        super(parent, target);
+        this.setFilename(target.getLocation().getFileName());
+        this.setLine(target.getLocation().getLineNumber());        
+        name = target.getName();
+    }
+
+    public String getName() {
+        return name;
+    } 
+
+    public String getFilename() {
+        return filename;
+    }
+
+    public void setFilename(String filename) {
+        this.filename = filename;
+    }
+
+    public int getLine() {
+        return line;
+    }
+
+    public void setLine(int line) {
+        this.line = line;
+    }
+
+    public long getStartUsedHeap() {
+        return startUsedHeap;
+    }
+
+    public void setStartUsedHeap(long startUsedHeap) {
+        this.startUsedHeap = startUsedHeap;
+    }
+
+    public long getStartCommittedHeap() {
+        return startCommittedHeap;
+    }
+
+    public void setStartCommittedHeap(long startCommittedHeap) {
+        this.startCommittedHeap = startCommittedHeap;
+    }
+
+    public long getEndUsedHeap() {
+        return endUsedHeap;
+    }
+
+    public void setEndUsedHeap(long endUsedHeap) {
+        this.endUsedHeap = endUsedHeap;
+    }
+
+    public long getEndCommittedHeap() {
+        return endCommittedHeap;
+    }
+
+    public void setEndCommittedHeap(long endCommittedHeap) {
+        this.endCommittedHeap = endCommittedHeap;
+    }
+    
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/internaldata/src/com/nokia/helium/internaldata/ant/listener/TreeDumper.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,45 @@
+/*
+* Copyright (c) 2007-2008 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: 
+*
+*/
+ 
+package com.nokia.helium.internaldata.ant.listener;
+
+import java.util.Iterator;
+/**
+ * Helper class to fix indentation of the xml.
+ *
+ */
+public class TreeDumper {
+    
+    private DataNode rootNode;
+    
+    public TreeDumper(DataNode root) {
+        this.rootNode = root;
+    }
+    
+    public void dump() {
+        dump(rootNode, "");
+    }
+
+    public void dump(DataNode root, String indent) {
+        System.out.println(indent + " + " + root);
+        for (Iterator<DataNode> i = root.iterator(); i.hasNext() ;) {
+            DataNode node = i.next();
+            dump(node, indent + "   ");
+        }
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/internaldata/src/com/nokia/helium/internaldata/ant/listener/XMLRenderer.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,235 @@
+/*
+* Copyright (c) 2007-2008 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: 
+*
+*/
+
+package com.nokia.helium.internaldata.ant.listener;
+
+import java.util.Iterator;
+import java.util.Vector;
+import java.util.Hashtable;
+import java.util.Enumeration;
+import java.io.ByteArrayOutputStream;
+
+import org.dom4j.Document;
+import org.dom4j.DocumentHelper;
+import org.dom4j.Element;
+import org.dom4j.io.XMLWriter;
+import org.dom4j.io.OutputFormat;
+
+import org.apache.tools.ant.BuildEvent;
+/**
+ * This xml render object does the following - 
+ * Generates target only for TargetNode type of node
+ * Creates the targets section.
+ * Generates task only for TargetNode type of node
+ * Creates the task section.
+ * Creates execution tree recursively, visiting the DataNodes.
+ * Creates the execution tree section.
+ * Creates the property section.
+ * Renders the build node into XML string. 
+ */
+public class XMLRenderer {
+
+    // Dump of properties
+    private Hashtable<String, String> properties;
+    // the toplevel node.
+    private BuildNode root;
+    // Helium content database. 
+    private Document database;
+    
+    // Deps hashes: helper to remove duplicates.
+    private Vector<String> targetList = new Vector<String>();
+    private Vector<String> assertList = new Vector<String>();
+    
+    public XMLRenderer(BuildNode root, Document database, Hashtable<String, String> properties, BuildEvent event) {
+        this.root = root; 
+        this.database = database;
+        this.properties = properties;
+    }
+
+    /**
+     * Generating target only for TargetNode type of node
+     * @param node
+     * @param targets
+     */
+    protected void createTarget(DataNode node, Element targets) {
+        if (node instanceof TargetNode) {
+            TargetNode targetNode = (TargetNode)node;            
+            if (!targetList.contains(targetNode.getName() + targetNode.getFilename())) {
+                targetList.add(targetNode.getName() + targetNode.getFilename());
+                Element target = targets.addElement("target");
+                target.addAttribute("id", "target@" + targetList.indexOf(targetNode.getName() + targetNode.getFilename()));
+                target.addAttribute("name", targetNode.getName());
+                target.addAttribute("file", targetNode.getFilename());
+                target.addAttribute("line", "" + targetNode.getLine());
+            }
+        }
+        for (Iterator<DataNode> i = node.iterator() ; i.hasNext() ; ) {
+            createTarget(i.next(), targets);
+        }
+    }
+
+    /**
+     * Creating the targets section.
+     * @param statistics
+     */
+    protected void createTargets(Element statistics) {
+        Element targets = statistics.addElement("targets");
+        if (root != null) {
+            createTarget(root, targets);
+        }
+    }
+    
+    /**
+     * Creating the assert section.
+     * @param statistics
+     */
+    protected void createAsserts(Element statistics) {
+        Element asserts = statistics.addElement("asserts");
+        if (root != null) {
+            createAssert(root, asserts);
+        }
+    }
+    
+    /**
+     * Generating assert only for TargetNode type of node
+     * @param node
+     * @param targets
+     */
+    protected void createAssert(DataNode node, Element targets) {
+        
+        if (node instanceof AssertNode) {
+            AssertNode assertNode = (AssertNode)node;
+            if (assertNode.getAssertName() != null) {
+                assertList.add(assertNode.getAssertName());
+                Element target = targets.addElement("assert");
+                target.addAttribute("id", "assert@" + assertList.indexOf(assertNode.getAssertName()));
+                target.addAttribute("name", assertNode.getAssertName());
+                target.addAttribute("file", assertNode.getFilename());
+                target.addAttribute("line", "" + assertNode.getLine());
+                target.addAttribute("message", "" + assertNode.getMessage());
+            }
+            
+        }
+        for (Iterator<DataNode> i = node.iterator() ; i.hasNext() ; ) {
+            createAssert(i.next(), targets);
+        }
+    }
+
+    /**
+     * Creating execution tree recursively, visiting the DataNodes.
+     * @param node
+     * @param tree
+     */
+    protected void createTree(DataNode node, Element tree) {
+        Element elt = null;
+        if (node instanceof BuildNode) {
+            BuildNode buildNode = (BuildNode)node;
+            elt = tree.addElement("build");
+            elt.addAttribute("name", buildNode.getName());            
+            elt.addAttribute("startTime", "" + buildNode.getStartTime().getTime());
+            elt.addAttribute("endTime", "" + buildNode.getEndTime().getTime());
+            elt.addAttribute("status", buildNode.getSuccessful() ? "successful" : "failed");            
+            elt.addAttribute("thread", "" + buildNode.getThreadId());            
+        } else if (node instanceof TargetNode) {
+            TargetNode targetNode = (TargetNode)node;
+            elt = tree.addElement("targetRef");
+            elt.addAttribute("reference", "target@" + targetList.indexOf(targetNode.getName() + targetNode.getFilename()));
+            elt.addAttribute("startTime", "" + targetNode.getStartTime().getTime());
+            elt.addAttribute("endTime", "" + targetNode.getEndTime().getTime());
+            elt.addAttribute("thread", "" + targetNode.getThreadId());
+            elt.addAttribute("startUsedHeap", "" + targetNode.getStartUsedHeap());
+            elt.addAttribute("startCommittedHeap", "" + targetNode.getStartCommittedHeap());
+            elt.addAttribute("endUsedHeap", "" + targetNode.getEndUsedHeap());
+            elt.addAttribute("endCommittedHeap", "" + targetNode.getEndCommittedHeap());
+        } else if (node instanceof AssertNode) {
+            AssertNode assertNode = (AssertNode)node;
+            if (assertNode.getAssertName() != null) {
+                elt = tree.addElement("assertRef");
+                elt.addAttribute("reference", "assert@" + assertList.indexOf(assertNode.getAssertName()));
+                elt.addAttribute("startTime", "" + assertNode.getStartTime().getTime());
+                elt.addAttribute("endTime", "" + assertNode.getEndTime().getTime());
+                elt.addAttribute("thread", "" + assertNode.getThreadId());
+            }
+        }
+        
+        if (elt != null) {
+            for (Iterator<DataNode> i = node.iterator() ; i.hasNext() ; ) {
+                createTree(i.next(), elt);
+            }
+        }
+    }
+    
+    /**
+     * Creating the execution tree section.
+     * @param statistics
+     */
+    protected void createExecutionTree(Element statistics) {
+        Element executionTree = statistics.addElement("executionTree");
+        if (root != null) {
+            createTree(root, executionTree);
+        }
+    }
+
+    /**
+     * Creating the property section.
+     * @param statistics
+     */
+    protected void createProperties(Element statistics) {
+        Element propertiesElt = statistics.addElement("properties");
+        if (properties != null) {
+            for (Enumeration<String> e = properties.keys(); e.hasMoreElements() ; ) {
+                String key = e.nextElement();
+                Element propertyElt = propertiesElt.addElement("property");
+                propertyElt.addAttribute("name", key);
+                propertyElt.addAttribute("value", properties.get(key));
+            }
+        }
+    }
+    
+    protected void insertDatabase(Element statistics) {
+        if (database != null) {
+            Element databaseElt = statistics.addElement("database");
+            databaseElt.add(database.getRootElement().detach());
+        }
+    }
+    
+    /**
+     * Rendering the build node into XML string. 
+     */
+    public String toString() {
+        // Creating the XML document
+        Document document = DocumentHelper.createDocument();
+        Element statistics = document.addElement( "statistics" );
+        statistics.addAttribute("version", "1.1");
+        
+        // Creating the document content.
+        insertDatabase(statistics);
+        createTargets(statistics);
+        createAsserts(statistics);
+        createExecutionTree(statistics);
+        createProperties(statistics);
+        try {
+            ByteArrayOutputStream output = new ByteArrayOutputStream(); 
+            XMLWriter out = new XMLWriter(output, OutputFormat.createPrettyPrint());
+            out.write(document);
+            return output.toString();
+        } catch (Exception exc) {
+            return document.asXML();            
+        }        
+    }
+    
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/internaldata/src/com/nokia/helium/internaldata/ant/taskdefs/HlmAssertMessage.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,87 @@
+/*
+* Copyright (c) 2007-2008 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: 
+*
+*/
+ 
+package com.nokia.helium.internaldata.ant.taskdefs;
+
+import org.apache.tools.ant.Task;
+import org.apache.tools.ant.BuildException;
+import com.nokia.helium.internaldata.*;
+import com.nokia.helium.internaldata.ant.listener.Listener;
+
+import javax.naming.*;
+import javax.naming.directory.*;
+
+/**
+ * Task to identify failing assert.
+ *
+ * Usage: &lt;hlm:hlmassertmessage assertName="hlm:assertPropertySet" message="Warning: @{message}"/&gt;
+ */
+
+public class HlmAssertMessage extends Task {
+    
+    private String message;
+    private String assertName;
+        
+    public void execute() {
+        
+        if (assertName == null)
+            throw new BuildException("'assertName' attribute is not defined");
+        if (message == null)
+            throw new BuildException("'message' attribute is not defined");
+        
+        for (int i = 0 ; i < getProject().getBuildListeners().size() ; i++) {
+            if (getProject().getBuildListeners().get(i) instanceof Listener) {
+                Listener listen = (Listener)getProject().getBuildListeners().get(i);
+                listen.addAssertTask(this);
+                break;
+            }
+        }
+    }
+    /**
+     * Returns assert name.
+     * @return
+     */
+    public String getAssertName() 
+    {
+        return assertName;
+    }
+    /**
+     * Set the assertname.
+     * @param assertName
+     */
+    public void setAssertName(String assertName) 
+    {
+        this.assertName = assertName;
+    }
+    /**
+     * Return the assert message.
+     * @return
+     */
+    public String getMessage() 
+    {
+        return message;
+    }
+    /**
+     * Set the assert message.
+     * @param message
+     */
+    public void setMessage(String message) 
+    {
+        this.message = message;
+    }
+    
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/internaldata/tests/bld.sh	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#
+# 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: 
+#
+
+if [ -f ~/.bashrc ] ; then
+    . ~/.bashrc
+fi
+ant $*
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/internaldata/tests/build.bat	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,31 @@
+@echo off
+
+rem
+rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+rem All rights reserved.
+rem This component and the accompanying materials are made available
+rem under the terms of the License "Eclipse Public License v1.0"
+rem which accompanies this distribution, and is available
+rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+rem
+rem Initial Contributors:
+rem Nokia Corporation - initial contribution.
+rem
+rem Contributors:
+rem
+rem Description: 
+rem
+
+setlocal
+if not defined JAVA_6_HOME (
+set TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
+) ELSE  set TESTED_JAVA=%JAVA_6_HOME%
+if exist %TESTED_JAVA% (set JAVA_HOME=%TESTED_JAVA%)
+call ant %*
+if "%ERRORLEVEL%" neq "0" (goto error)
+endlocal
+goto :eof
+
+:error
+endlocal
+if "%OS%"=="Windows_NT" color 00
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/internaldata/tests/build.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : build.xml 
+Part of     : Helium AntLib
+
+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="helium-internaldata" xmlns:au="antlib:org.apache.ant.antunit">
+    <description>Helium antlib internaldata tests.</description>
+
+    <import file="${builder.dir}/java/test-macros.ant.xml"/>
+
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/internaldata/tests/src/com/nokia/helium/internaldata/tests/TestEmailDataSender.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,69 @@
+/*
+* Copyright (c) 2007-2008 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: 
+*
+*/
+package com.nokia.helium.internaldata.tests;
+
+import static org.junit.Assert.assertFalse;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+
+
+import org.apache.log4j.Level;
+import org.apache.log4j.Logger;
+import org.apache.log4j.LogManager;
+import org.junit.Test;
+
+
+
+
+import com.nokia.helium.internaldata.ant.listener.EmailDataSender;
+
+public class TestEmailDataSender {
+	
+	@Test
+	public void testSendData(){
+		EmailDataSender emailDataSender = new EmailDataSender();
+		Logger log = Logger.getLogger(EmailDataSender.class);
+		log.setLevel(Level.DEBUG);
+		emailDataSender.sendData("Helium antlib internaldata junit test");	
+		LogManager.shutdown(); // to flush the log output to file
+		String fileContent = "";
+        String fileName = "hlm_debug.log";
+
+		try {
+			BufferedReader br = new BufferedReader(new FileReader(fileName));
+			String s;	
+				while((s = br.readLine()) != null) {
+					fileContent = fileContent + s;
+				}
+			br.close();
+		}
+		catch (Exception e){
+			System.out.println("File hlm_debug.log can not be read" + e.getMessage() + e);
+		}
+		// delete the debug log which we created
+	    File f = new File(fileName);
+		boolean success = f.delete();
+	    if (!success){
+	      throw new IllegalArgumentException("Delete: deletion failed");
+	    }
+		assertFalse(fileContent.contains("Internal data failure:"));
+	}		
+}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/internaldata/tests/src/com/nokia/helium/internaldata/tests/TestListener.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,95 @@
+/*
+* Copyright (c) 2007-2008 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: 
+*
+*/
+package com.nokia.helium.internaldata.tests;
+
+import static org.junit.Assert.assertFalse;
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+
+import org.apache.log4j.Level;
+import org.apache.log4j.LogManager;
+import org.apache.log4j.Logger;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.Target;
+import org.apache.tools.ant.taskdefs.Ant;
+import org.junit.Test;
+import com.nokia.helium.internaldata.ant.listener.Listener;
+
+public class TestListener {
+	
+	@Test
+	public void testInternaldataListener(){
+			try {				
+				// Create temp file.
+				File temp = File.createTempFile("subbuild_test", ".xml"); 
+				// Delete temp file when program exits. 
+				temp.deleteOnExit(); 
+				// Write to temp file 
+				BufferedWriter out = new BufferedWriter(new FileWriter(temp)); 
+				out.write("<project name=\"test-sub-build\" default=\"test-target2\"><target name=\"test-target2\" /></project>"); 
+				out.close(); 
+				// Creating a project to test build started and build finished				
+			 	Project project = new Project();
+			 	Logger log = Logger.getLogger(Listener.class);
+			 	log.setLevel(Level.DEBUG);
+		        project.addBuildListener(new Listener());
+		        project.fireBuildStarted();  	           
+		        project.init();
+		        project.setName("test-project");
+		        // Creating a target to test target started and finished.
+		        Target target1 = new Target();
+		        target1.setName("test-target");
+		        project.addTarget("test-target",target1);
+		        // Creating a sub-project to test sub-build started and sub-build finished
+		        Ant ant = new Ant();   		        
+		        ant.setProject(project);
+		        ant.setAntfile(temp.getAbsolutePath());		        
+	        
+		        target1.addTask(ant);
+		        project.executeTarget("test-target");
+		        project.fireBuildFinished(null);   
+				LogManager.shutdown(); // to flush the log output to file
+
+			} catch (Exception e) {
+				System.out.println("Error testing listener: " + e.getMessage() + e);
+			}
+	        String fileContent = "";
+	        String fileName = "hlm_debug.log";
+			try {
+				BufferedReader br = new BufferedReader(new FileReader(fileName));
+				String s;	
+				while((s = br.readLine()) != null) {
+					fileContent = fileContent + s;
+				}	
+				br.close();
+			}
+			catch (Exception e){
+				System.out.println("File hlm_debug.log can not be read" + e.getMessage() + e);
+			}
+			// delete the debug log which we created
+		    File f = new File(fileName);
+			boolean success = f.delete();
+		    if (!success){
+		      throw new IllegalArgumentException("Delete: deletion failed");
+		    }
+			assertFalse(fileContent.contains("Error: error generating the InterData database XML."));
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/internaldata/tests/test_HlmAssertMessage.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,37 @@
+<?xml version="1.0"?>
+<!-- 
+============================================================================ 
+Name        : test_HlmAssertMessage.ant.xml 
+Part of     : Helium AntLib
+
+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="helium-antlib-internaldata-hlmassertmessage-unittest" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
+    <description>Helium Antlib internal unittests.</description>
+    <taskdef resource="com/nokia/helium/internaldata/ant/antlib.xml" uri="http://www.nokia.com/helium"/>
+    <taskdef name="hlmassertmessage" classname="com.nokia.helium.internaldata.ant.taskdefs.HlmAssertMessage"/>
+    <target name="test-hlmAssertMessage-case-no-args">
+        <au:expectfailure expectedmessage="'assertName' attribute is not defined">
+            <hlmassertmessage/>
+        </au:expectfailure>
+    </target>
+    <target name="test-hlmAssertMessage-case-assert-name-set">
+        <au:expectfailure expectedmessage="'message' attribute is not defined">
+            <hlmassertmessage assertName="test"/>
+        </au:expectfailure>
+    </target>
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/jpa/bld.bat	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,39 @@
+@echo off
+
+rem
+rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+rem All rights reserved.
+rem This component and the accompanying materials are made available
+rem under the terms of the License "Eclipse Public License v1.0"
+rem which accompanies this distribution, and is available
+rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+rem
+rem Initial Contributors:
+rem Nokia Corporation - initial contribution.
+rem
+rem Contributors:
+rem
+rem Description: 
+rem
+
+setlocal
+if not defined JAVA_6_HOME (
+set TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
+) ELSE  set TESTED_JAVA=%JAVA_6_HOME%
+if exist %TESTED_JAVA% (set JAVA_HOME=%TESTED_JAVA%)
+
+REM Configure Ant 
+if not defined TESTED_ANT_HOME (
+set TESTED_ANT_HOME=C:\Apps\ant_1.7
+) 
+if exist %TESTED_ANT_HOME% (set ANT_HOME=%TESTED_ANT_HOME%)
+
+call java -cp ".\..\..\bin\helium-checktools.jar" com.nokia.helium.checktools.HeliumToolsCheckerMain -config ".\..\..\builder\helium.basic.tools.config"
+if "%ERRORLEVEL%" neq "0" (goto errorstop)
+
+ant -lib ../../builder/antlibs %*
+endlocal
+
+:errorstop
+@echo *** Build aborted with error
+exit /b 1
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/jpa/build.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : build.xml 
+Part of     : Helium AntLib
+
+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="helium-jpa">
+    <description>Helium Antlib JPA build file.</description>
+    <property name="name" value="jpa"/>
+    <property name="builder.dir" location="../../builder"/>
+    <property name="sf.source.root.dir" location="../../" />
+    <target name="compile" description="Compile class files">
+        <mkdir dir="${classes.dir}/META-INF" />
+        <copy todir="${classes.dir}/META-INF">
+            <fileset dir="${basedir}/src/META-INF"/>
+        </copy>
+        <runtarget target="build-macros.compile" />
+    </target>
+
+    <import file="${builder.dir}/java/macros.ant.xml"/>
+</project>
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/jpa/ivy.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+============================================================================ 
+Name        : ivy.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:
+
+============================================================================  
+-->
+<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
+    <info
+        organisation="com.nokia.helium"
+        module="helium-jpa"
+        status="integration" />
+        
+  <dependencies>
+    <dependency org="org.freemarker" name="freemarker" rev="2.3.13" conf="default" />
+    <dependency org="log4j" name="log4j" rev="1.2.9" conf="default" />
+    <dependency org="org.apache.commons" name="commons-io" rev="1.4" conf="default" />
+    <dependency org="net.sourceforge.fmpp" name="fmpp" rev="0.9.13" conf="default" />
+    <dependency org="eclipselink" name="eclipselink" rev="2.0.0" conf="default" />
+    <dependency org="javax.persistence" name="persistence" rev="2.0.0" conf="default" />
+    <dependency org="org.apache.derby" name="derby" rev="10.5" conf="default" />
+  </dependencies>
+</ivy-module>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/jpa/src/META-INF/persistence.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : persistence.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:
+
+============================================================================
+-->
+<persistence xmlns="http://java.sun.com/xml/ns/persistence"
+                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+                xsi:schemaLocation="http://java.sun.com/xml/ns/persistence persistence_2_0.xsd"
+                version="2.0">
+    <persistence-unit name="metadata" transaction-type="RESOURCE_LOCAL">
+        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
+          <properties>
+                <!-- <property name="eclipselink.logging.level" value="ALL" /> -->
+           </properties>
+            <class>com.nokia.helium.jpa.entity.metadata.LogFile</class>
+            <class>com.nokia.helium.jpa.entity.metadata.Priority</class>
+            <class>com.nokia.helium.jpa.entity.metadata.Component</class>
+            <class>com.nokia.helium.jpa.entity.metadata.Metadata</class>
+            <class>com.nokia.helium.jpa.entity.metadata.MetadataEntry</class>
+            <class>com.nokia.helium.jpa.entity.metadata.ComponentTime</class>
+            <class>com.nokia.helium.jpa.entity.metadata.WhatLogEntry</class>
+            <class>com.nokia.helium.jpa.entity.Version</class>
+    </persistence-unit>
+</persistence>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/jpa/src/com/nokia/helium/jpa/ORMCommitCount.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,74 @@
+
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+
+package com.nokia.helium.jpa;
+
+import org.apache.log4j.Logger;
+import javax.persistence.EntityManager;
+
+/**
+ * This class is used to keep track of number of objects
+ * remaining to be commited to the database.
+ */
+public class ORMCommitCount {
+
+    private static Logger log = Logger.getLogger(ORMCommitCount.class);
+
+    private static final int PERSISTANCE_COUNT_LIMIT = 1000;
+
+    private static EntityManager entityManager;
+
+    private int count;
+
+    /** Constructor.
+     */
+    public ORMCommitCount() {
+        count = PERSISTANCE_COUNT_LIMIT;
+    }
+
+    /**
+     * Reduce the commit count value by one.
+     */
+    public void decreaseCount() {
+        count --;
+    }
+
+    /**
+     * Reset to maximum limit
+     */
+    public void reset() {
+        count = PERSISTANCE_COUNT_LIMIT;
+    }
+
+    /**
+     * Returns whether the commit is required or not.
+     * @return if commit required returns true otherwise false.
+     */
+    public boolean isCommitRequired() {
+        return count == 0;
+    }
+
+    /**
+     * Returns whether if there are any data to commit
+     * @return true if any data there to commit, otherwise false.
+     */
+    public boolean isDatatoCommit() {
+        //log.debug("isDatatoCommit: " + (count < PERSISTANCE_COUNT_LIMIT));
+        return count < PERSISTANCE_COUNT_LIMIT;
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/jpa/src/com/nokia/helium/jpa/ORMEntityManager.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,255 @@
+/*
+ * Copyright (c) 2007-2008 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:
+ *
+ */
+
+package com.nokia.helium.jpa;
+
+import org.apache.log4j.Logger;
+import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
+import java.util.Hashtable;
+import javax.persistence.Persistence;
+import org.eclipse.persistence.config.PersistenceUnitProperties;
+import java.io.File;
+import org.apache.commons.io.FileUtils;
+import com.nokia.helium.jpa.entity.Version;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.Statement;
+import java.sql.ResultSet;
+import org.apache.tools.ant.BuildException;
+
+/**
+ * This class handles the generic ORM entity management.
+ */
+public class ORMEntityManager {
+
+    private static Logger log = Logger.getLogger(ORMEntityManager.class);
+
+    private EntityManager entityManager;
+
+    private ORMCommitCount commitCountObject;
+
+    /**  
+     * Constructor.
+     * @param urlPath path for which entity manager to be
+     * created.
+     */
+    @SuppressWarnings("unchecked")
+    public ORMEntityManager(String urlPath) throws Exception {
+        String name = "metadata";
+        Hashtable persistProperties = new Hashtable();
+        persistProperties.put("javax.persistence.jdbc.driver",
+                "org.apache.derby.jdbc.EmbeddedDriver");
+        persistProperties.put("javax.persistence.jdbc.url",
+               "jdbc:derby:" + urlPath);
+        persistProperties.put(
+                PersistenceUnitProperties.PERSISTENCE_CONTEXT_CLOSE_ON_COMMIT,
+                "false");
+        persistProperties.put(
+                PersistenceUnitProperties.PERSISTENCE_CONTEXT_REFERENCE_MODE,
+                "WEAK");
+        persistProperties.put(PersistenceUnitProperties.BATCH_WRITING,
+                "JDBC");
+        persistProperties.put("eclipselink.read-only", "true");
+        persistProperties.put(PersistenceUnitProperties.LOGGING_LEVEL, "warning");
+        File dbFile = new File(urlPath);
+        commitCountObject = new ORMCommitCount();
+        if (dbFile.exists()) {
+            try {
+                log.debug("checking db integrity for :" + urlPath);
+                if (!checkDatabaseIntegrity(urlPath)) {
+                    log.debug("db integrity failed cleaning up old db");
+                    try {
+                        log.debug("deleting the url path" + urlPath);
+                        FileUtils.forceDelete(dbFile);
+                        log.debug("successfully removed the urlpath" + urlPath);
+                    } catch (java.io.IOException iex) {
+                        log.debug("deleting the db directory failed", iex);
+                        throw new BuildException("failed deleting corrupted db", iex);
+                    }
+                } else {
+                    log.debug("db exists and trying to create entity manager");
+                    EntityManagerFactory factory =
+                        Persistence.createEntityManagerFactory(
+                            name,
+                            persistProperties);
+                    entityManager = factory.createEntityManager();
+                    entityManager.getTransaction().begin();
+                    return;
+                }
+            } catch (Exception ex) {
+                log.debug("Failed to open the database, might be corrupted, creating new db", ex);
+                try {
+                    FileUtils.deleteDirectory(dbFile);
+                } catch (java.io.IOException iex) {
+                    log.debug("deleting the db directory failed");
+                    throw iex;
+                }
+            }
+        }
+        log.debug("url path not exists" + urlPath + "creating it");
+        persistProperties.put("javax.persistence.jdbc.url",
+               "jdbc:derby:" + urlPath + ";create=true");
+        persistProperties.put(PersistenceUnitProperties.DDL_GENERATION,
+                "create-tables");
+        persistProperties.put(
+                PersistenceUnitProperties.DDL_GENERATION_MODE,
+                "database");
+        persistProperties.put(
+                PersistenceUnitProperties.PERSISTENCE_CONTEXT_CLOSE_ON_COMMIT,
+                "false");
+        persistProperties.put(
+                PersistenceUnitProperties.PERSISTENCE_CONTEXT_REFERENCE_MODE,
+                "WEAK");
+        persistProperties.put(PersistenceUnitProperties.BATCH_WRITING,
+                "JDBC");
+        persistProperties.put("eclipselink.read-only", "true");
+        EntityManagerFactory factory =
+            Persistence.createEntityManagerFactory(
+                name,
+                persistProperties);
+        entityManager = factory.createEntityManager();
+        entityManager.getTransaction().begin();
+        entityManager.persist(new Version());
+        entityManager.getTransaction().commit();
+        entityManager.clear();
+        entityManager.getTransaction().begin();
+    }
+
+    /**
+     * Helper function to get the entity manager.
+     * @return entity manager
+     */
+    public EntityManager getEntityManager() {
+        log.debug("ORMEntityManager: getEntityManager: " + entityManager);
+        return entityManager;
+    }
+
+    /**
+     * Helper function to get commit count object
+     * @return commit count object used for cached persisting.
+     */
+    public ORMCommitCount getCommitCountObject() {
+        return commitCountObject;
+    }
+
+    /**
+     * If Any data to be commited, then this function
+     * commits the data to the database.
+     */
+    public void commitToDB() {
+        log.debug("commitToDB");
+        if (entityManager.getTransaction().isActive()) {
+            if (commitCountObject.isDatatoCommit()) {
+                entityManager.getTransaction().commit();
+                commitCountObject.reset();
+                entityManager.clear();
+                entityManager.getTransaction().begin();
+            }
+        }
+    }
+
+    /**
+     * Finalizes the entity manager.
+     */
+    public void finalizeEntityManager() {
+        log.debug("finalizeEntitymanager:" + entityManager);
+        if (entityManager != null) {
+            log.debug("finalizeEntitymanager: isactive1");
+            if (entityManager.getTransaction().isActive()) {
+                log.debug("finalizeEntitymanager: isactive2");
+                try {
+                    entityManager.getTransaction().commit();
+                } catch (Exception ex) {
+                    log.debug("exception during commit", ex);
+                } finally {
+                    log.debug("cleaning up entity manager instance" + entityManager);
+                    if (commitCountObject != null) {
+                        commitCountObject.reset();
+                    }
+                    if (entityManager != null) {
+                        entityManager.clear();
+                        entityManager.close();
+                        entityManager = null;
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * Checks the database integrity.
+     * @param urlPath - database path to be connected to.
+     * @return boolean - true if db is valid false otherwise.
+     */
+    private boolean checkDatabaseIntegrity(String urlPath) {
+        boolean result = false;
+        loadDriver();
+        Connection connection = null;
+        try {
+            connection = DriverManager.getConnection("jdbc:derby:" + urlPath);
+            if (connection != null) {
+                Statement stmt = connection.createStatement();
+                ResultSet rs = stmt.executeQuery("select version from version");
+                int version = -1;
+                log.debug("result set executed");
+                if ( rs.next()) {
+                    version = rs.getInt(1);
+                }
+                log.debug("result set executed : " + version);
+                rs.close();
+                stmt.close();
+                if (version == Version.DB_VERSION) {
+                    result = true;
+                } else {
+                    DriverManager.getConnection("jdbc:derby:;shutdown= true");
+                }
+            }
+        } catch (Exception ex) {
+            log.debug("exception while checking database integrity: ", ex);
+            log.debug("shutting down embedded db");
+            try {
+                DriverManager.getConnection("jdbc:derby:;shutdown= true");
+            } catch (java.sql.SQLException sex) {
+                log.debug("normal exception during db shutdown");
+            }
+        } finally {
+            try {
+                log.debug("closing the connection");
+                if (connection != null) {
+                    connection.close();
+                }
+            } catch (java.sql.SQLException sex) {
+                log.debug("normal exception during db shutdown");
+            }
+            connection = null;
+        }
+        //shutdown unloads the driver, driver need to be loaded again.
+        return result;
+    }
+    private void loadDriver() {
+        try
+        {
+            Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
+        }
+        catch (java.lang.ClassNotFoundException e)
+        {
+            throw new BuildException("JDBC Driver could not be found");
+        }
+    }
+
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/jpa/src/com/nokia/helium/jpa/ORMReader.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,123 @@
+
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+
+package com.nokia.helium.jpa;
+
+
+import org.apache.log4j.Logger;
+import java.util.List;
+import javax.persistence.Query;
+
+/**
+ * This class provides an interface to read data from the 
+ * database using JPA.
+ */
+public class ORMReader {
+
+    private static Logger log = Logger.getLogger(ORMReader.class);
+    
+    private static final int READ_CACHE_LIMIT = 30000;
+
+    private ORMEntityManager manager;
+    
+    private int startPos;
+
+    /**Constructor:
+     * @param dbPath - path of the database to connect to.
+     */
+    public ORMReader(String dbPath) {
+        ORMUtil.initializeORM(dbPath);
+        manager = ORMUtil.getEntityManager(dbPath);
+    }
+
+    /**
+     * Executes native sql query and returns List of objects
+     * of return type mentioned by type.
+     * @param queryString - sql query to be executed.
+     * @param type - return type.
+     * @return List of objects of return type.
+     */
+    public List executeNativeQuery(String queryString, String type) {
+        int maxResults = READ_CACHE_LIMIT;
+        String queryWithSubSet = queryString + " OFFSET " + startPos +
+                " ROWS FETCH FIRST " + maxResults + " ROW ONLY";
+        Query query = null;
+        try {
+            query = manager.getEntityManager().createNativeQuery(queryWithSubSet,
+                    Class.forName(type));
+        } catch (Exception ex) {
+            log.debug("Exception during native query", ex);
+        }
+        query.setHint("eclipselink.maintain-cache", "false");
+        List results = query.getResultList();
+        int resultsSize = results.size();
+        if (resultsSize == 0 || resultsSize < READ_CACHE_LIMIT) {
+            startPos += resultsSize;
+        } else {
+            startPos += maxResults;
+        }
+        return results;
+    }
+
+    /**
+     * Executes sql query which results in single result.
+     * @param queryString - sql query to be executed.
+     * @param type - return type.
+     * @return an Object of return type.
+     */
+    public Object  executeSingleResult(String queryString, String type) {
+        log.debug("executeSingleResult: " + queryString);
+        Query query = manager.getEntityManager().createQuery(queryString);
+        query.setHint("eclipselink.persistence-context.reference-mode", "WEAK");
+        query.setHint("eclipselink.maintain-cache", "false");
+        query.setHint("eclipselink.read-only", "true");
+        Object obj = null;
+        try {
+            obj = query.getSingleResult();
+        } catch (javax.persistence.NoResultException nex) {
+            log.debug("no results:", nex);
+        } catch (javax.persistence.NonUniqueResultException nux) {
+            log.debug("more than one result returned:", nux);
+        }
+        return obj;
+    }
+
+    /**
+     * Executes query using JPQL.
+     * @param queryString - jpa query string
+     * @return List of objects read from database.
+     */
+    public List executeQuery (String queryString) {
+        int maxResults = READ_CACHE_LIMIT;
+        Query query = manager.getEntityManager().createQuery(queryString);
+        query.setHint("eclipselink.persistence-context.reference-mode", "WEAK");
+        query.setHint("eclipselink.maintain-cache", "false");
+        query.setHint("eclipselink.read-only", "true");
+        query.setFirstResult(startPos);
+        query.setMaxResults(maxResults);
+        List results = (List) query.getResultList();
+        int resultsSize = results.size();
+        log.debug("result size: " + resultsSize);
+        if (results.size() == 0 || resultsSize < READ_CACHE_LIMIT) {
+            startPos += resultsSize;
+        } else {
+            startPos += maxResults;
+        }
+        return results;
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/jpa/src/com/nokia/helium/jpa/ORMUtil.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,92 @@
+
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+
+package com.nokia.helium.jpa;
+
+import org.apache.log4j.Logger;
+import java.util.HashMap;
+import org.apache.tools.ant.BuildException;
+
+/**
+ * Utility class to communicate to the database using JPA entity
+ * manager.
+ */
+public final class ORMUtil {
+
+    private static Logger log = Logger.getLogger(ORMUtil.class);
+    
+    private static final int PERSISTANCE_COUNT_LIMIT = 1000;
+
+    private static final int READ_CACHE_LIMIT = 30000;
+
+    private static HashMap<String, ORMEntityManager> emMap = 
+        new HashMap<String, ORMEntityManager>();
+
+    private ORMUtil() {
+    }
+    
+    /**
+     * Initializes the entity manager and begins the transcations.
+     * @param urlPath - database path to be connected to.
+     */
+    public static synchronized void initializeORM(String urlPath) {
+        ORMEntityManager manager = emMap.get(urlPath);
+        log.debug("initializeORM: urlpath: " + urlPath);
+        if (manager == null) {
+            try {
+                manager = new ORMEntityManager(urlPath);
+                emMap.put(urlPath, manager);
+                log.debug("initializeORM: manager: " + manager);
+                log.debug("initializeORM: manager: " + manager.getEntityManager());
+            } catch ( Exception ex ) {
+                throw new BuildException("Entity Manager creation failure");
+            }
+        }
+    }
+
+    /**
+     * Helper Function to return the entity manager.
+     * @return entity manager created during initialization.
+     */
+    public static ORMEntityManager getEntityManager(String urlPath) {
+        log.debug("getEntityManager: urlpath: " + urlPath);
+        ORMEntityManager manager = emMap.get(urlPath);
+        if (manager != null) {
+            log.debug("getEntityManager: manager: " + manager);
+            log.debug("getEntityManager: manager.entityManager: " + manager.getEntityManager());
+            return manager;
+        } else {
+            log.debug("getEntityManager: manager: is null");
+            throw new BuildException("ORM entity manager is null");
+        }
+    }
+    
+    /**
+     * Finalize the entity manager and release all the objects.
+     */
+    public static void finalizeORM(String urlPath) {
+        ORMEntityManager manager = emMap.get(urlPath);
+        log.debug("finalizeORM: urlpath: " + urlPath);
+        if (manager != null) {
+            manager.finalizeEntityManager();
+            manager = null;
+            log.debug("finalizeORM: manager" + manager);
+            emMap.remove(urlPath);
+        }
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/jpa/src/com/nokia/helium/jpa/entity/Version.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,80 @@
+
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+package com.nokia.helium.jpa.entity;
+
+import javax.persistence.Entity;
+
+
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Column;
+import javax.persistence.Basic;
+
+
+/**
+ *  Entity Version to store the db version.
+ */
+@Entity
+public class Version {
+
+    public static final transient int DB_VERSION = 2;
+
+    
+    @Id
+    @GeneratedValue(strategy = GenerationType.SEQUENCE)
+    @Column(name = "VERSION_ID")
+    private int id;
+
+    //DB_VERSION to set as default if version changes
+    @Basic
+    @Column(unique = true, nullable = false)
+    private int version = DB_VERSION;
+
+    /**
+     *  Helper function to set the identifier for the log file.
+     *  @param identifier for the log file.
+     */
+    public void setId(int identifier) {
+        id = identifier;
+    }
+
+    /**
+     *  Helper function to get the identifier for the db schema version.
+     *  @return identifier for this log file.
+     */
+    public int getId() {
+        return id;
+    }
+
+    /**
+     *  Helper function to set the db schema version.
+     *  @param location of the log file.
+     */
+    public void setVersion(int ver) {
+        version = ver;
+    }
+
+    /**
+     *  Helper function to return the current db schema version.
+     *  @return path of the log file..
+     */
+    public int getVersion() {
+        return version;
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/jpa/src/com/nokia/helium/jpa/entity/metadata/Component.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,114 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+
+package com.nokia.helium.jpa.entity.metadata;
+
+
+import javax.persistence.Entity;
+import javax.persistence.CascadeType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.ManyToOne;
+import javax.persistence.Column;
+import javax.persistence.Basic;
+import javax.persistence.JoinColumn;
+
+
+/**
+ * Entity class to store the component information.
+ */
+@Entity
+public class Component {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.SEQUENCE)
+    @Column(name = "COMPONENT_ID")
+    private int id;
+
+    @Basic
+    @Column(nullable = false, length = 500)
+    private String component;
+
+    @Basic
+    @Column(name = "LOGPATH_ID", insertable = false, updatable = false)
+    private int logPathID;
+
+    @ManyToOne(cascade = CascadeType.REMOVE)
+    @JoinColumn(name = "LOGPATH_ID", referencedColumnName = "LOGPATH_ID")
+    private LogFile logFile;
+
+    @ManyToOne
+    private Metadata metadata;
+
+    /**
+     * Helper function to set the identifier.
+     * @param identifier to set the identifier for the component.
+     */
+    public void setId(int identifier) {
+        id = identifier;
+    }
+
+    /**
+     * Helper function to set the identifier.
+     * @return the identifier of the component.
+     */
+    public int getId() {
+        return id;
+    }
+
+    /**
+     * Helper function to set component name.
+     * @param cmp string to be set to.
+     */
+    public void setComponent(String cmp) {
+        component = cmp;
+    }
+
+    /**
+     * Helper function to set log file associated
+     * with this component.
+     * @param file associated file to this component.
+     */
+    public void setLogFile(LogFile file) {
+        logFile = file;
+    }
+
+    /**
+     * Helper function to return component string.
+     * @return component name of this component.
+     */
+    public String getComponent() {
+        return component;
+    }
+
+    /**
+     * Helper function to return log file associated with this component.
+     * @return component name of this component.
+     */
+    public LogFile getLogFile() {
+        return logFile;
+    }
+
+    /**
+     * Helper function to return logpath id.
+     * @return log path id associated with this component.
+     */
+    public int getLogPathID() {
+        return logPathID;
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/jpa/src/com/nokia/helium/jpa/entity/metadata/ComponentTime.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,82 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+
+package com.nokia.helium.jpa.entity.metadata;
+
+
+import javax.persistence.CascadeType;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.ManyToOne;
+import javax.persistence.Column;
+import javax.persistence.Basic;
+import javax.persistence.JoinColumn;
+
+
+/**
+ *  Entity component time to store the time taken for each
+ *  component to build.
+ */
+@Entity
+public class ComponentTime {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.SEQUENCE)
+    @Column(name = "COMPONENTTIME_ID")
+    private int id;
+
+    @Basic
+    private double componentTime;
+
+    @Basic
+    @Column(name = "COMPONENT_ID", insertable = false, updatable = false)
+    private int componentId;
+
+
+    @ManyToOne(cascade = CascadeType.REMOVE)
+    @JoinColumn(name = "COMPONENT_ID", referencedColumnName = "COMPONENT_ID")
+    
+    private Component component;
+
+    /**
+     *  Helper function to set the associated component.
+     *  @param cmpt for which the time to be recorded.
+     */
+    public void setComponent(Component cmpt) {
+        component = cmpt;
+    }
+
+
+    /**Helper function to return the time taken for this component
+     *  to build.
+     *  @return duration to build this component.
+     */
+    public double getDuration() {
+        return componentTime;
+    }
+
+    /**
+     *  Helper function to set the duration for this component to build.
+     *  @param duration to build this component.
+     */
+
+    public void setDuration(double duration) {
+        componentTime = duration;
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/jpa/src/com/nokia/helium/jpa/entity/metadata/LogFile.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,81 @@
+
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+package com.nokia.helium.jpa.entity.metadata;
+
+import javax.persistence.Entity;
+
+
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.ManyToOne;
+import javax.persistence.Column;
+import javax.persistence.Basic;
+
+
+/**
+ *  Entity LogFile to store the information about the log for
+ *  which the data to be written to database.
+ */
+@Entity
+public class LogFile {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.SEQUENCE)
+    @Column(name = "LOGPATH_ID")
+    private int id;
+
+    @Basic
+    @Column(unique = true, nullable = false, length = 500)
+    private String path;
+
+    @ManyToOne
+    private Metadata metadata;
+
+    /**
+     *  Helper function to set the identifier for the log file.
+     *  @param identifier for the log file.
+     */
+    public void setId(int identifier) {
+        id = identifier;
+    }
+
+    /**
+     *  Helper function to get the identifier for the log file.
+     *  @return identifier for this log file.
+     */
+    public int getId() {
+        return id;
+    }
+
+    /**
+     *  Helper function to set the path of the log file.
+     *  @param location of the log file.
+     */
+    public void setPath(String location) {
+        path = location;
+    }
+
+    /**
+     *  Helper function to get the path.
+     *  @return path of the log file..
+     */
+    public String getPath() {
+        return path;
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/jpa/src/com/nokia/helium/jpa/entity/metadata/Metadata.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,757 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+
+package com.nokia.helium.jpa.entity.metadata;
+
+import java.util.ArrayList;
+import javax.persistence.FlushModeType;
+import org.apache.log4j.Logger;
+import java.util.List;
+import javax.persistence.MapKeyColumn;
+import javax.persistence.Column;
+import javax.persistence.Basic;
+import javax.persistence.FetchType;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.OneToMany;
+import javax.persistence.EntityManager;
+import java.util.Hashtable;
+import javax.persistence.Query;
+import javax.persistence.CascadeType;
+import com.nokia.helium.jpa.ORMCommitCount;
+import com.nokia.helium.jpa.ORMEntityManager;
+
+/**
+ * Interface Class to store all the metadata information.
+ */
+
+@Entity
+public class Metadata {
+
+    private static Logger log = Logger.getLogger(Metadata.class);
+    
+    private static String[] priorityNames = {"FATAL", "ERROR", "WARNING", "INFO",
+        "REAMARK", "CRITICAL", "DEFAULT"};
+
+    private transient ORMEntityManager manager;
+
+    private transient String logPath;
+
+    @Basic
+    @Column(unique = true, nullable = false)
+    private String name;
+
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.SEQUENCE)
+    private int id;
+
+    @OneToMany(mappedBy = "metadata",
+            fetch = FetchType.LAZY, cascade = CascadeType.ALL)
+    private Hashtable<String, LogFile> logFiles;
+
+    @OneToMany(mappedBy = "metadata",
+            fetch = FetchType.LAZY, cascade = CascadeType.ALL)
+    @MapKeyColumn(name = "PRIORITY", insertable = false, updatable = false)
+    private Hashtable<String, Priority> priorities;
+
+
+    private Hashtable<String, Component> components;
+ 
+    private List<MetadataEntry> entries;
+
+    /**
+     * Default Constructor.
+     */
+    public Metadata() {
+    }
+
+    /** Constructor.
+     * @param nm - name to be looked for in the persistence.xml file
+     * for database information.
+     */
+    public Metadata(String nm) {
+        name = nm;
+    }
+
+    /** Constructor.
+     *  @param mgr - entity manager using which the data to be
+     *  written to database.
+     *  @param path - log path for which data to be written to.
+     */
+    public Metadata(ORMEntityManager mgr, String path) {
+        manager = mgr;
+        if (logPath == null) {
+            //System.out.println("addEntry logPath null");
+            logPath = path;
+            initializeLogPath();
+        }
+    }
+
+    /**
+     * Helper function to set the name of the JPA entity manager to
+     * be used.
+     * @param nm - name to be looked for in the persistence.xml file
+     * for database information.
+     */
+    public void setName(String nm) {
+        name = nm;
+    }
+
+    /**
+     * Helper function to get the name of the JPA entity manager to
+     * being used.
+     * @return nm - name to be looked for in the persistence.xml file
+     * for database information.
+     */
+    public String getName() {
+        return name;
+    }
+
+
+    /**
+     * Helper function to return the list of Logfiles stored
+     * in the database.
+     * @return Hash table of logpath with logfile object
+     * stored in the database.
+     */
+    public Hashtable<String, LogFile> getLogFiles() {
+        return logFiles;
+    }
+
+    /**
+     * Helper function to persist the components,
+     * in the database.
+     * @param componentsList of component name with component object.
+     * stored in the database.
+     */
+    public void setComponents(Hashtable<String, Component> componentsList) {
+        components = componentsList;
+    }
+
+    /**
+     * Helper function to persist logfile objects in the database.
+     * @param logFilesList logpath with logfile object.
+     */
+    public void setLogFiles(Hashtable<String, LogFile> logFilesList) {
+        logFiles = logFilesList;
+    }
+
+    public String getLogPath() {
+        return logPath;
+    }
+    /**
+     * Helper function to persist metadata entry lists in the db.
+     * @param entriesList List of entries to persist.
+     */
+    public void setEntries(List<MetadataEntry> entriesList) {
+        entries = entriesList;
+    }
+
+    /**
+     * Helper function to return the list of persisted entries currently
+     * in memory.
+     * @return list of metadata entries currently in memory.
+     */
+    public List<MetadataEntry> getEntries() {
+        return entries;
+    }
+
+    /**
+     * Helper function to set the logpath of the current entry.
+     * @param path logpath associated with this entry.
+     */
+    public void setLogPath(String path) {
+        logPath = path;
+    }
+
+    /**
+     * Helper function to set the priority list.
+     * @param prtList.
+     */
+    public void setPriorities(Hashtable<String, Priority> prtList) {
+        priorities = prtList;
+    }
+
+    /**
+     * Helper function to initialize the components currently in
+     * the database. This is cached in memory so that before persisting
+     * the cached info is checked for performance optmization.
+     * @param path - path associated with the component.
+     * @param logFile - logfile object associated with the component.
+     */
+    @SuppressWarnings("unchecked")
+    public void initComponents(String path, LogFile logFile) {
+        logPath = path;
+        components = new Hashtable<String, Component>();
+        if (logFile != null) {
+            //System.out.println("logfile id: " + logFile.getId());
+            List<Component> componentList =
+                (List<Component>) manager.getEntityManager().createQuery(
+                    "SELECT c FROM Component c WHERE c.logPathID = :pathId")
+            .setParameter("pathId", logFile.getId()).getResultList();
+            for (Component comp : componentList) {
+                components.put(comp.getComponent(), comp);
+            }
+        }
+    }
+
+    /**
+     * Initialize the priority table, caches in memory for
+     * performance.
+     */
+    @SuppressWarnings("unchecked")
+    public void initPriorities() {
+        priorities = new Hashtable<String, Priority>();
+        List<Priority> priorityList =
+            (List<Priority>) manager.getEntityManager().createQuery(
+                "SELECT p FROM Priority p")
+            .getResultList();
+        for (Priority priority : priorityList) {
+            //System.out.println("priority value: " + priority.getPriority());
+            priorities.put(priority.getPriority(), priority);
+        }
+    }
+
+    /**
+     * Load the required data to be cached from database.
+     * @param path - db path.
+     */
+    @SuppressWarnings("unchecked")
+    private void loadFromDB(String path) {
+        LogFile logFile = null;
+        logFiles = new Hashtable<String, LogFile>();
+        List<LogFile> logFilesList =
+            (List<LogFile>) manager.getEntityManager().createQuery(
+                "SELECT l FROM LogFile l").getResultList();
+        for (LogFile file : logFilesList) {
+            log.debug("getting logfile from db: " + file.getPath());
+            logFiles.put(file.getPath(), file);
+        }
+        //manager.getEntityManager().clear();
+        logFile = logFiles.get(path);
+        if (logFile == null) {
+            populateDB(path);
+        } else {
+            initComponents(path, logFile);
+            List<MetadataEntry> entriesList = new ArrayList<MetadataEntry>();
+            setEntries(entriesList);
+        }
+        initPriorities();
+    }
+
+    /**
+     * Internal function to persist an object into the database.
+     * @param obj - object to be stored in the data.
+     */
+    private void persist(Object obj) {
+        synchronized (manager) {
+            EntityManager em = manager.getEntityManager();
+            ORMCommitCount countObject = manager.getCommitCountObject();
+            //log.debug("object: " + obj);
+            //log.debug("object: " + em);
+            em.persist(obj);
+            countObject.decreaseCount();
+            if (countObject.isCommitRequired()) {
+                countObject.reset();
+                em.getTransaction().commit();
+                em.clear();
+                em.getTransaction().begin();
+            }
+        }
+    }
+
+    /**
+     * Internal function to populate the priorities into the cache.
+     */
+    private void populatePriorities() {
+        Hashtable<String, Priority> priorityList = new Hashtable<String, Priority>(); 
+        setPriorities(priorityList);
+        for (String priorityName : priorityNames) {
+            Priority priority = new Priority();
+            priority.setPriority(priorityName);
+            priorityList.put(priorityName, priority);
+            log.debug("populating priorities: " + priorityName);
+            persist(priority);
+        }
+    }
+
+    /**
+     * Internal function to load data from database.
+     * @param path - db path
+     */
+    private void populateDB(String path) {
+        setLogPath(path);
+        Hashtable<String, LogFile> logFileList =
+            new Hashtable<String, LogFile>();
+        //entityManager.merge(logFileList);
+        setLogFiles(logFileList);
+        log.debug("populatedb: " + path);
+        checkAndAddLogPath();
+        Hashtable<String, Component> componentsList =
+            new Hashtable<String, Component>();
+        //entityManager.merge(componentsList);
+        setComponents(componentsList);
+        List<MetadataEntry> entriesList = new ArrayList<MetadataEntry>();
+        setEntries(entriesList);
+    }
+
+    /**
+     * Internal function to cache the logpath for performance.
+     */
+    private void initializeLogPath() {
+        EntityManager em = manager.getEntityManager();
+        Query q = em.createQuery("select m from LogFile m");
+        name = "metadata";
+        if (q.getResultList().size() == 0) {
+            log.debug("query result: size" + q.getResultList().size());
+            populatePriorities();
+            populateDB(logPath);
+        } else {
+            log.debug("loading from db: " + logPath);
+            loadFromDB(logPath);
+        }
+        //em.clear();
+    }
+
+    /**
+     * Adds the log entry to the database.
+     * @param entry - logentry which is to be written to db.
+     */
+    public void addEntry(LogEntry entry) {
+
+        String comp = entry.getComponent();
+        Component component = null;
+        if (comp != null) {
+            component = checkAndAddComponent(comp);
+            float elapsedTime = entry.getElapsedTime();
+            String priority = entry.getPriorityText();
+            int lineNo = entry.getLineNumber();
+            String logText = entry.getText();
+            log.debug("elapsedTime: " + elapsedTime);
+            log.debug("comp: " + comp);
+            if (elapsedTime != -1) {
+                addElapsedTime(component, elapsedTime);
+            } else if (!priority.equals("default")) {
+                addMetadata(priority, component, lineNo, logText);
+            } else {
+                WhatEntry whatEntry = entry.getWhatEntry();
+                if (whatEntry != null) {
+                    List<WhatLogMember> members = whatEntry.getMembers(); 
+                    if (members != null) {
+                        for (WhatLogMember member : members) {
+                            if (member != null) {
+                                addWhatLogMember(component, member.getMember(),
+                                        member.getMemberExists());
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    
+    /**
+     * Internal function to add what log member to the database.
+     * @param component for which to record the elapsed time
+     * @param whatLogMember - an entry from whatlog output
+     * @param memberExists - is the whatlog entry exists in the file system.
+     */
+    private void addWhatLogMember(Component component,
+            String whatLogMember, boolean memberExists) {
+        //Todo: handle duplicate whatlog member entry
+        WhatLogEntry entry = new WhatLogEntry();
+        entry.setMember(whatLogMember);
+        entry.setMissing(!memberExists);
+        entry.setComponent(component);
+        persist(entry);
+    }
+
+    /**
+     * Internal function to add log path only if it is not already
+     * there in the cached entry from database.
+     * @return LogFile object related to the logpath.
+     */
+    private LogFile checkAndAddLogPath() {
+        LogFile logFile = logFiles.get(logPath);
+        log.debug("checkandaddlogpath:logpath" + logPath);
+        log.debug("checkandaddlogpath:logFile" + logFile);
+        if (logFile == null) {
+            logFile = new LogFile();
+            logFile.setPath(logPath);
+            persist(logFile);
+            logFiles.put(logPath, logFile);
+        }
+        return logFile;
+    }
+
+    /**
+     * Internal function to add elapsed tim to the database.
+     * @param component for which to record the elapsed time
+     * @param elapsedTime - time to be recorded.
+     */
+    private void addElapsedTime(Component component, double elapsedTime) {
+        ComponentTime componentTime = new ComponentTime();
+        componentTime.setComponent(component);
+        componentTime.setDuration(elapsedTime);
+        persist(componentTime);
+    }
+
+    /**
+     * Internal function to add component if not exist
+     * in the cached entries from database.
+     * @param comp - component Name to be added.
+     * @return either new component / existing component from cache.
+     */
+    private Component checkAndAddComponent(String comp) {
+        //System.out.println("checkAndAddComponent: comp: "+ comp);
+        Component component = components.get(comp);
+        if (component == null) {
+            component = new Component();
+            log.debug("checkandaddcomponent: logpath" + logPath);
+            log.debug("checkandaddcomponent: logpath" + logFiles);
+            component.setLogFile(logFiles.get(logPath));
+            component.setComponent(comp);
+            persist(component);
+            components.put(comp, component);
+        }
+        return component;
+    }
+
+    /**
+     * Function provides the Priority object for the string
+     * priority.
+     * @param prty - priority string
+     * @return Priority object for the prioirty string.
+     */
+    private Priority getPriority(String prty) {
+        Priority retValue = priorities.get(prty.toUpperCase());
+        if (retValue == null) {
+            retValue = priorities.get(priorityNames[0]);
+        }
+        log.debug("priority:getPriority: " + prty);
+        return retValue;
+    }
+
+    /**
+     * Internal function to add the entry to the database.
+     * priority.
+     * @param priority - Priority of the entry
+     * @param component - component info for the entry
+     * @param lineNo - line number at which the severity is captured.
+     * @param logText - text about the severity info to be recorded.
+     */
+    private void addMetadata(String priority, Component component,
+            int lineNo, String logText) {
+        MetadataEntry entry = new MetadataEntry();
+        log.debug("logfile : " + component.getLogFile().getPath());
+        entry.setLogFile(component.getLogFile());
+        entry.setComponent(component);
+        entry.setLineNumber(lineNo);
+        entry.setPriority(getPriority(priority));
+        log.debug("error text message: " + logText);
+        entry.setText(logText);
+        persist(entry);
+    }
+
+    /**
+     * Removes the entries for a particular log.
+     * priority.
+     */
+    public final void removeEntries() {
+        EntityManager em = manager.getEntityManager();
+        LogFile file = (LogFile)executeSingleQuery("select l from LogFile l where l.path like '%" + logPath + "'");
+        if ( file != null ) {
+            log.debug("removing entries for : " + file.getPath());
+            int pathId = file.getId();
+            removeEntries("DELETE FROM MetadataEntry AS m where m.COMPONENT_ID in (select COMPONENT_ID from Component where LOGPATH_ID= " + pathId + ")");
+            removeEntries("DELETE FROM ComponentTime AS ctime where ctime.COMPONENT_ID in (select COMPONENT_ID from Component where LOGPATH_ID= " + pathId + ")");
+            removeEntries("DELETE FROM WhatLogEntry AS wentry where wentry.COMPONENT_ID in (select COMPONENT_ID from Component where LOGPATH_ID= " + pathId + ")");
+            removeEntries("DELETE FROM Component AS c where c.LOGPATH_ID = " + pathId);
+            removeEntries("DELETE FROM LogFile AS l where l.LOGPATH_ID = " + pathId);
+            removeEntries("DELETE FROM LogFile l where l.LOGPATH_ID = " + pathId);
+        }
+    }
+
+    /**
+     * Internal function execute query which results in single record.
+     * @param queryString - query string for whcih the result to be obtained.
+     * @return object - record from the executed query.
+     */
+    private Object executeSingleQuery (String queryString) {
+        EntityManager em = manager.getEntityManager();
+        Query query = em.createQuery(queryString);
+        query.setHint("eclipselink.persistence-context.reference-mode", "WEAK");
+        query.setHint("eclipselink.maintain-cache", "false");
+        query.setHint("eclipselink.read-only", "true");
+        query.setFlushMode(FlushModeType.COMMIT);
+        Object obj = null;
+        try {
+            obj = query.getSingleResult();
+        } catch (javax.persistence.NoResultException nex) {
+            log.debug("no results:", nex);
+        } catch (javax.persistence.NonUniqueResultException nux) {
+            log.debug("more than one result returned:", nux);
+        }
+        return obj;
+    }
+
+    /**
+     * Internal function to remove the entries from db.
+     * @param queryString - query string for whcih the result to be obtained.
+     */
+    private void removeEntries(String queryString) {
+        EntityManager em = manager.getEntityManager();
+        Query query = em.createNativeQuery(queryString);
+        query.setHint("eclipselink.persistence-context.reference-mode", "WEAK");
+        query.setHint("eclipselink.maintain-cache", "false");
+        query.setFlushMode(FlushModeType.COMMIT);
+        try {
+            int deletedRecords = query.executeUpdate();
+            log.debug("total records deleted " + deletedRecords 
+                    + "for query:" + queryString);
+        } catch (javax.persistence.NoResultException nex) {
+            log.debug("no results:", nex);
+        } catch (javax.persistence.NonUniqueResultException nux) {
+            log.debug("more than one result returned:", nux);
+        }
+    }
+
+    /**
+     * Helper class to store the log entry , used to write to the database
+     * 
+     * @param databasePath The path to the database
+     */
+    public static class LogEntry
+    {
+        private String text;
+
+        private PriorityEnum priority;
+
+        private String component;
+        
+        private int lineNumber;
+        
+        private String logPath;
+        
+        private float elapsedTime;
+        
+        private String priroityText;
+        
+        private WhatEntry whatEntry;
+
+    /**
+     * Constructor for the helper class 
+     */
+        public LogEntry(String text, PriorityEnum priority, String component, 
+                String logPath, int lineNumber, 
+                float time, WhatEntry entry)
+        {
+            this.text = text;
+            this.priority = priority;
+            this.component = component;
+            this.lineNumber = lineNumber;
+            this.logPath = logPath.replace('\'', '/');
+            this.elapsedTime = time;
+            whatEntry = entry;
+        }
+
+    /**
+     * Constructor for the helper class 
+     */
+        public LogEntry(String text, PriorityEnum priority, String component, 
+                String logPath, int lineNumber)
+        {
+            this(text, priority, component, logPath, lineNumber, -1, null);
+        }
+
+
+    /**
+     * Constructor for the helper class.
+     */
+        public LogEntry(String text, String priorityTxt, String component, String logPath, 
+                int lineNumber, float time, WhatEntry entry) throws Exception
+        {
+            PriorityEnum prty = null;
+            String prtyText = priorityTxt.trim().toLowerCase();
+            priroityText =  prtyText;
+            if (prtyText.equals("error")) {
+                prty = PriorityEnum.ERROR;
+            } else if (prtyText.equals("warning")) {
+                prty = PriorityEnum.WARNING;
+            } else if (prtyText.equals("fatal")) {
+                prty = PriorityEnum.FATAL;
+            } else if (prtyText.equals("info")) {
+                prty = PriorityEnum.INFO;
+            } else if (prtyText.equals("remark")) {
+                prty = PriorityEnum.REMARK;
+            } else if (prtyText.equals("default")) {
+                prty = PriorityEnum.DEFAULT;
+            } else if (prtyText.equals("critical")) {
+                prty = PriorityEnum.CRITICAL;
+            } else {
+                log.debug("Error: priority " + prtyText + " is not acceptable by metadata and set to Error");
+                prty = PriorityEnum.ERROR;
+                priroityText =  "error";
+                //throw new Exception("priority should not be null");
+            }
+
+            this.logPath = logPath.replace('\\', '/');
+            this.text = text;
+            priority = prty;
+            this.component = component;
+            this.lineNumber = lineNumber;
+            this.elapsedTime = time;
+            whatEntry = entry;
+        }
+
+        public void setElapsedTime(float time) {
+            this.elapsedTime = time;
+        }
+    /**
+     * Helper function to return to getLogPath
+     * @
+     */
+
+        public String getLogPath()
+        {
+            return logPath;
+        }
+
+        
+        public int getLineNumber()
+        {
+            return lineNumber;
+        }
+        
+        public String getText()
+        {
+            return text;
+        }
+
+        public void setText(String text)
+        {
+            this.text = text;
+        }
+
+        public PriorityEnum getPriority()
+        {
+            return priority;
+        }
+
+        public String getPriorityText() {
+            return priroityText;
+        }
+
+        
+        public float getElapsedTime() {
+            return elapsedTime;
+        }
+
+        public void setPriority(PriorityEnum priority)
+        {
+            this.priority = priority;
+        }
+
+        public String getComponent()
+        {
+            return component;
+        }
+
+        public void setComponent(String component)
+        {
+            this.component = component;
+        }
+        
+        public WhatEntry getWhatEntry() {
+            return whatEntry;
+        }
+        
+    }
+
+    /** Levels of log entry types. */
+    public enum PriorityEnum
+    {
+        // The values assigned to these enums should match the 
+        // automatically assigned values created in the database table
+        FATAL(1), ERROR(2), WARNING(3), INFO(4), REMARK(5), DEFAULT(6), CRITICAL(7);
+        private final int value;
+        PriorityEnum(int value)
+        {
+            this.value = value;
+        }
+        public int getValue() {
+            return value;
+        }
+    
+        public  static PriorityEnum getPriorityEnum( int i ) {
+            final PriorityEnum[] values  = values();
+            return i >= 0 && i < values .length ? values[i] : FATAL;
+        }
+    };
+
+    /**
+     * Helper class to store the Component and output association.
+     */
+    public static class WhatEntry
+    {
+        private String component;
+        private List<WhatLogMember> members;
+
+    /**
+     * Constructor for the helper class 
+     */
+        public WhatEntry(String comp, List<WhatLogMember> mbrs)
+        {
+            component = comp;
+            members = mbrs;
+        }
+        
+        public String getComponent() {
+            return component;
+        }
+
+        public List<WhatLogMember> getMembers() {
+            return members;
+        }
+    }
+
+
+    /**
+     * Helper class to store the what log output into orm.
+     */
+    public static class WhatLogMember {
+        private String member;
+        private boolean memberExists;
+
+        public WhatLogMember(String mbr, boolean exists) {
+            member = mbr;
+            memberExists = exists;
+        }
+        
+        public String getMember() {
+            return member;
+        }
+        
+        public boolean getMemberExists() {
+            return memberExists;
+        }
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/jpa/src/com/nokia/helium/jpa/entity/metadata/MetadataEntry.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,171 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+
+package com.nokia.helium.jpa.entity.metadata;
+
+
+import javax.persistence.CascadeType;
+import javax.persistence.ManyToOne;
+import javax.persistence.Column;
+import javax.persistence.Basic;
+import javax.persistence.JoinColumn;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+
+/**
+ * Entity class which stores the the mapping of all the other tables
+ * along with actual error information.
+ */
+@Entity
+public class MetadataEntry {
+
+    /// Maximum size of the text we store in the metadata
+    public static final int TEXT_LENGTH = 500;
+
+    @Id
+    @Column(name = "ENTRY_ID")
+    @GeneratedValue(strategy = GenerationType.SEQUENCE)
+    private int id;
+
+    @Basic
+    private int lineNumber;
+
+    @Basic
+    @Column(length = TEXT_LENGTH)
+    private String text;
+
+    @Basic
+    @Column(name = "COMPONENT_ID", insertable = false, updatable = false)
+    private int componentId;
+
+    @Basic
+    @Column(name = "PRIORITY_ID", insertable = false, updatable = false)
+    private int priorityId;
+
+    @ManyToOne(cascade = CascadeType.REMOVE, optional = false)
+    @JoinColumn(name = "COMPONENT_ID", referencedColumnName = "COMPONENT_ID")
+    private Component component;
+
+    @ManyToOne(cascade = CascadeType.REMOVE, optional = false)
+    @JoinColumn(name = "PRIORITY_ID", referencedColumnName = "PRIORITY_ID")
+    private Priority priority;
+
+    @Column(name = "LOGPATH_ID", insertable = false, updatable = false)
+    private int logPathId;
+    
+    @ManyToOne(cascade = CascadeType.REMOVE, optional = false)
+    @JoinColumn(name = "LOGPATH_ID", referencedColumnName = "LOGPATH_ID")
+    private LogFile  logFile;
+    
+    /**
+     * Helper function to get the identifier of the metadata record
+     * which is being stored in the database.
+     *  @return id - identifier for the log record.
+     */
+    public int getId() {
+        return id;
+    }
+
+    /**
+     * Helper function to set the logfile associated to the metadata entry.
+     *  @param LogFile object associated to this entry.
+     */
+    public void setLogFile(LogFile file) {
+        logFile = file;
+    }
+
+    /**
+     * Helper function to set the priority object associated to this entry.
+     *  @param priority object associated to this entry.
+     */
+    public void setPriority(Priority prty) {
+        priority = prty;
+    }
+
+    /**
+     * Helper function to set the component object associated to this entry.
+     *  @param component object associated to this entry.
+     */
+    public void setComponent(Component cmpt) {
+        component = cmpt;
+    }
+
+    /**
+     * Helper function to set the identifier for this entry.
+     *  @param id identifier to be set for this entry.
+     */
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    /**
+     * Helper function to set the log text associated to this entry.
+     *  @param txt - text representing this log entry.
+     */
+    public void setText(String txt) {
+        // Let's trunk ourselves the text we are passing to the 
+        // storage.
+        if (txt.length() > TEXT_LENGTH) {
+            txt = txt.substring(0, TEXT_LENGTH);
+        }
+        text = txt;
+    }
+
+    /**
+     * Helper function to set the line number for this entry.
+     *  @param line number associated to this entry.
+     */
+    public void setLineNumber(int number) {
+        lineNumber = number;
+    }
+
+    /**
+     * Helper function to get the text message associated to this entry.
+     *  @return text message of this entry.
+     */
+    public String getText() {
+        return text;
+    }
+
+    /**
+     * Helper function to get line number of the error message associated
+     * with this object.
+     *  @return line number associated to this entry.
+     */
+    public int getLineNumber() {
+        return lineNumber;
+    }
+
+    /**
+     * Helper function to get the log path id of this entry.
+     *  @return log path id associated to this entry.
+     */
+    public int getLogPathId() {
+        return logPathId;
+    }
+
+    /**
+     * Helper function to set the logpath id associated to this entry.
+     *  @param id logpath id of this entry.
+     */
+    public void setLogPathId(int id) {
+        logPathId = id;
+    }
+
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/jpa/src/com/nokia/helium/jpa/entity/metadata/MetadataUtil.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,124 @@
+
+/*
+ * Copyright (c) 2007-2008 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:
+ *
+ */
+package com.nokia.helium.jpa.entity.metadata;
+
+import java.util.HashMap;
+import com.nokia.helium.jpa.ORMEntityManager;
+import com.nokia.helium.jpa.ORMUtil;
+import org.apache.log4j.Logger;
+
+/**
+ * Utility class for writing metadata information to db
+ * using JPA.
+ */
+public final class MetadataUtil {
+
+    private static Logger log = Logger.getLogger(MetadataUtil.class);
+    
+    private static Metadata metadata;
+    
+    private static HashMap<String, Metadata> metadataMap = new HashMap<String, Metadata>();
+    
+    private static Object mutexObject = new Object();
+    
+
+    private MetadataUtil() {
+
+    }
+
+    /**
+     * Initialize the orm, calls ORMUtil initialize function to create
+     * entity manager and commit count objects.
+     * @param urlPath - url path for which the connection needs to be
+     * initialized.
+     */
+    public static void initializeORM(String urlPath) {
+        synchronized (mutexObject) {
+            ORMUtil.initializeORM(urlPath);
+        }
+    }
+
+    /**
+     * Finalize the orm, calls ORMUtil finalize function to close
+     * entity manager.
+     */
+    public static void finalizeORM(String urlPath) {
+        synchronized (mutexObject) {
+            log.debug("finalizing orm");
+            ORMUtil.finalizeORM(urlPath);
+        }
+    }
+
+    /**
+     * Finalize the orm, calls ORMUtil finalize function to close
+     * entity manager.
+     */
+    public static void finalizeMetadata(String logPath) {
+        synchronized (mutexObject) {
+            log.debug("finalizing metadata");
+            metadataMap.remove(logPath);
+        }
+    }
+
+    /**
+     * Adding entry to the database.
+     * @param priority - priority of the log data to be added
+     * @param comp - component for which the details to be added
+     * @param lineNo - line number at which the severity happened.
+     * @param logText - text message of the error.
+     * @param logPath - log file path where the error happened.
+     * @param elapsedTime - time durartion for building the component.
+     */
+    public static void addEntry(String urlPath, Metadata.LogEntry entry) {
+        synchronized (mutexObject) {
+            metadata = getMetadata(entry.getLogPath(), urlPath);
+            metadata.addEntry(entry);
+        }
+    }
+
+    /**
+     * Remove entry from the database for specific log file.
+     * @param urlPath - db path
+     * @param logPath - log file for which all the entries to be removed.
+     */
+    public static void removeEntries(String urlPath, String logPath) {
+        synchronized (mutexObject) {
+            metadata = getMetadata(logPath, urlPath);
+            metadata.removeEntries();
+            finalizeMetadata(logPath);
+        }
+    }
+
+    /**
+     * Returns the metadata associated with the log path, if metadata doesn't 
+     * exists in the cache, creates it.
+     * @param urlPath - db path
+     * @param logPath - log file for which all the entries to be removed.
+     */
+    private static Metadata getMetadata(String logPath, String urlPath) {
+        ORMEntityManager manager = ORMUtil.getEntityManager(urlPath);
+        metadata = metadataMap.get(logPath);
+        if (metadata == null) {
+            log.debug("initializing metadatamap for logpath" + logPath);
+            metadata = new Metadata(manager, logPath);
+            
+            metadataMap.put(logPath, metadata);
+        }
+        return metadata;
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/jpa/src/com/nokia/helium/jpa/entity/metadata/Priority.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,87 @@
+
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+package com.nokia.helium.jpa.entity.metadata;
+
+
+import javax.persistence.Entity;
+//import org.apache.tools.ant.BuildException;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.ManyToOne;
+import javax.persistence.Column;
+import javax.persistence.Basic;
+
+/**
+ * Entity Class stores the priority.
+ */
+@Entity
+public class Priority {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.SEQUENCE)
+    @Column(name = "PRIORITY_ID")
+    private int id;
+
+    @Basic
+    @Column(name = "PRIORITY")
+    private String priority;
+
+    @ManyToOne
+    private Metadata metadata;
+
+    /**
+     * Default constructor.
+     */
+    public Priority() {
+
+    }
+
+    /**
+     * Helper function to set the priority string.
+     * @param prty - priority string to be stored for this
+     * priority object.
+     */
+    public void setPriority(String prty) {
+        priority = prty;
+    }
+
+    /*
+     * Helper function to get the priority of the priority object
+     * @return priority string of this priority object.
+     */
+    public String getPriority() {
+        return priority;
+    }
+
+    /*
+     * Set the identifier of this priority object in the db.
+     * @param id for this priority in the db
+     */
+    public void setId(int identifier) {
+        id = identifier;
+    }
+
+    /*
+     * Gets the identifier of the priority object.
+     * @return id of this priority object.
+     */
+    public int getId() {
+        return id;
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/jpa/src/com/nokia/helium/jpa/entity/metadata/WhatLogEntry.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,116 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+
+package com.nokia.helium.jpa.entity.metadata;
+
+
+import javax.persistence.CascadeType;
+import javax.persistence.Entity;
+
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.ManyToOne;
+import javax.persistence.Column;
+import javax.persistence.Basic;
+import javax.persistence.JoinColumn;
+
+
+/**
+ * Entity class to store the component information.
+ */
+@Entity
+public class WhatLogEntry {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.SEQUENCE)
+    @Column(name = "WHATLOG_ENTRY_ID")
+    private int id;
+
+    @Basic
+    @Column(name = "COMPONENT_ID", insertable = false, updatable = false)
+    private int componentID;
+
+    @Basic
+    @Column(name = "MEMBER", nullable = false)
+    private String member;
+
+    @Basic
+    @Column(name = "MISSING")
+    private boolean missing;
+
+    @ManyToOne(cascade = CascadeType.REMOVE)
+    @JoinColumn(name = "COMPONENT_ID", referencedColumnName = "COMPONENT_ID")
+    private Component component;
+
+    /**
+     * Helper function to set the identifier.
+     * @param identifier to set the identifier for the component.
+     */
+    public void setId(int identifier) {
+        id = identifier;
+    }
+
+    /**
+     * Helper function to set the identifier.
+     * @return the identifier of the component.
+     */
+    public int getId() {
+        return id;
+    }
+
+    /**
+     * Helper function to set component name.
+     * @param cmp string to be set to.
+     */
+    public void setComponent(Component cmp) {
+        component = cmp;
+    }
+
+    /**
+     * Helper function to set log file associated
+     * with this component.
+     * @param file associated file to this component.
+     */
+    public void setMember(String mbr) {
+        member = mbr;
+    }
+
+    /**
+     * Helper function to return component string.
+     * @return component name of this component.
+     */
+    public Component getComponent() {
+        return component;
+    }
+
+    /**
+     * Helper function to return log file associated with this component.
+     * @return component name of this component.
+     */
+    public String getMember() {
+        return member;
+    }
+
+    public void setMissing(boolean nonexistance) {
+        missing = nonexistance;
+    }
+
+    public boolean getMissing() {
+        return missing;
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/jpa/src/log4j.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : libs.ant.xml 
+Part of     : Helium Antlib
+
+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:
+
+============================================================================
+-->
+<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
+<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
+
+    <appender name="ASYNC" class="org.apache.log4j.AsyncAppender">
+            <appender-ref ref="FILE"/>
+            <appender-ref ref="CONSOLE"/>
+    </appender>
+
+    <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
+        <layout class="org.apache.log4j.PatternLayout">
+               <param name="ConversionPattern" 
+                            value="%d{HH:mm:ss,SSS}  %-2p - %m  %n"/>
+        </layout>
+    <filter class="org.apache.log4j.varia.LevelMatchFilter">
+      <param name="LevelToMatch" value="DEBUG" />
+      <param name="AcceptOnMatch" value="false" />
+    </filter>
+    </appender>
+
+
+    <appender name="FILE" class="org.apache.log4j.RollingFileAppender">
+        <param name="File" value="hlm_debug.log"/>
+        <param name="MaxFileSize" value="1024KB"/>
+        <param name="append" value="true"/>
+        <layout class="org.apache.log4j.PatternLayout">
+               <param name="ConversionPattern" 
+                            value="%d{HH:mm:ss,SSS}  %-2p - %m  %n"/>
+        </layout>
+    <filter class="org.apache.log4j.varia.LevelMatchFilter">
+      <param name="LevelToMatch" value="DEBUG" />
+      <param name="AcceptOnMatch" value="true" />
+    </filter>
+
+    <filter class="org.apache.log4j.varia.DenyAllFilter"/>
+
+    </appender>
+
+  <logger name="com.nokia" additivity="false">
+      <level value="DEBUG" />
+    <appender-ref ref="ASYNC" />
+  </logger>
+
+    <root>
+        <priority value="DEBUG"/>
+        <appender-ref ref="CONSOLE"/>
+    </root>
+</log4j:configuration>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/logging/bld.bat	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,39 @@
+@echo off
+
+rem
+rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+rem All rights reserved.
+rem This component and the accompanying materials are made available
+rem under the terms of the License "Eclipse Public License v1.0"
+rem which accompanies this distribution, and is available
+rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+rem
+rem Initial Contributors:
+rem Nokia Corporation - initial contribution.
+rem
+rem Contributors:
+rem
+rem Description: 
+rem
+
+setlocal
+if not defined JAVA_6_HOME (
+set TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
+) ELSE  set TESTED_JAVA=%JAVA_6_HOME%
+if exist %TESTED_JAVA% (set JAVA_HOME=%TESTED_JAVA%)
+
+REM Configure Ant 
+if not defined TESTED_ANT_HOME (
+set TESTED_ANT_HOME=C:\Apps\ant_1.7
+) 
+if exist %TESTED_ANT_HOME% (set ANT_HOME=%TESTED_ANT_HOME%)
+
+call java -cp ".\..\..\bin\helium-checktools.jar" com.nokia.helium.checktools.HeliumToolsCheckerMain -config ".\..\..\builder\helium.basic.tools.config"
+if "%ERRORLEVEL%" neq "0" (goto errorstop)
+
+ant -lib ../../builder/antlibs %*
+endlocal
+
+:errorstop
+@echo *** Build aborted with error
+exit /b 1
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/logging/build.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : build.xml 
+Part of     : Helium AntLib
+
+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="helium-logging">
+    <description>Helium Antlib logging.</description>
+    
+    <property name="builder.dir" location="../../builder"/>
+    <property name="sf.source.root.dir" location="../../" />
+    <import file="${builder.dir}/java/macros.ant.xml"/>
+    <property name="name" value="logging"/>
+
+</project>
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/logging/ivy.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+============================================================================ 
+Name        : ivy.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:
+
+============================================================================  
+-->
+<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
+    <info
+        organisation="com.nokia.helium"
+        module="helium-logging"
+        status="integration">
+  </info>
+  <dependencies>
+    <dependency org="org.freemarker" name="freemarker" rev="2.3.13" conf="default" />
+    <dependency org="log4j" name="log4j" rev="1.2.9" conf="default" />
+    <dependency name="helium-core" rev="latest.integration" conf="default" />
+  </dependencies>
+</ivy-module>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/logging/logging.rst	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,103 @@
+===================
+Configuring Logging
+===================
+
+Features
+========
+
+* Will be initiated by the ANT Listener.
+* Logging will starts whenever build starts.
+* Helium logging framework offers you to configure the ant logging system for different stages of builds.
+* You can log the build process into seperate ant log files for each stage.
+* You can configure the log system to log different level of information (ex: debug, vebose, error).
+
+Configuration
+=============
+
+We can configure the stages for which helium should log the build process.
+
+    * Stages
+       
+       * Stages are like preparation, compilation, postbuild etc.. for which we need to log build process. 
+       * Stages will have attributes for start and end targets.
+       * Stages will specify from which target we need log the build process and at which target we need to end logging build process.
+       
+       .. csv-table:: 
+          :header: "Attribute", "Description", "Required"
+   
+              "id", "Name of Stage (preparation, compilation)","Yes"
+              "starttarget", "Name of target to start logging.","Yes"
+              "endtarget", "Name of target to end logging.","Yes"
+      
+    * Stagerecord 
+
+       * Will record/log the build process from start target to end target mentioned in the Stage type.
+       * Need provide attributes like output log file, loglevel.
+       * Supports passwordfilterset datatype. If we need to filter any passwords from specific stage log files.
+       
+       .. csv-table:: 
+          :header: "Attribute", "Description", "Required"
+   
+              "id", "ID for stage record entry.", "Yes"
+              "defaultoutput", "File to record main ant log file" "Yes (should not have stagerefid attribute if stage record has defaultoutput)"
+              "stagerefid", "Stage reference ID. Exactly as given in the Stage", "Yes"
+              "output", "File to record the build process.", "Yes"
+              "loglevel", "Loglevel to record type of information. ex: debug, info, vebose", "No, Default it will be info"
+              "append", "To append the logging into existing file.", "No, Default it will be false"
+
+Example
+-------
+.. code-block:: xml
+    
+        <hlm:stage id="preparation" starttarget="prep" endtarget="prep"/>
+        <hlm:stage id="compilation" starttarget="compile-main" endtarget="compile-main"/>
+        
+        <hlm:stagerecord id="stage.default" defaultoutput="${build.log.dir}/${build.id}_main.ant.log" loglevel="info" append="true"/>
+        <hlm:stagerecord id="stage.preparation" stagerefid="preparation" output="${build.log.dir}/${build.id}_prep.ant.log" loglevel="info" append="true"/>
+        <hlm:stagerecord id="stage.compilation" stagerefid="compilation" output="${build.log.dir}/${build.id}_compile.ant.log" loglevel="info" append="true"/>
+
+logreplace Task (hlm:logreplace)
+================================
+
+* LogReplace task will filter out the string from stage logging files.
+* If we need to filter out any user passwords and specific word which should n't be logged can passed to stage logging through this task.
+* Specified string will be filtered out from all the stages logging files.
+* It will not be filtered our by hlm:record task. To filter out the same need to passed to hlm:record task through recorderfilterset or recordfilter.
+
+Example
+-------
+This example will filter out unix password value from all the stage logging files.
+
+.. code-block:: xml
+
+        <hlm:logreplace regexp="${unix.password}"/>
+
+Record Task (hlm:record)
+========================
+
+* Behaviour is same ANT record task with some addon features.
+* Filerts the logging messages which are passed through the filters to hlm:record task.
+* Will stops the logging happening by listener for any stages and resumes to stage logging once hlm:record task  finishes.
+* Will take the backup of the file.
+
+Example
+-------
+
+Below example
+    * Will sets one recoderfilteset.
+    * Will record the given target/tasks into ${build.id}_stagetest.log file by filtering the regexp mentioned in the recorderfilterset and recordfilter.
+
+.. code-block:: xml
+    
+        <hlm:recordfilterset id="recordfilter.config">
+            <hlm:recordfilter category="info" regexp="ERROR" />
+        </hlm:recordfilterset>
+        
+        <hlm:record name="${build.log.dir}/${build.id}_stagetest.log" action="start" loglevel="info" backup="true">
+            <hlm:recordfilterset refid="recordfilter.config"/>
+            <hlm:recordfilter category="unix" regexp="${unix.password}" />
+        </hlm:record>
+        
+        ... Call tasks you would like to record the output  ...
+        
+        <hlm:record name="${build.log.dir}/${build.id}_stagetest.log" action="stop" append="true" backup="true"/>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/logging/src/com/nokia/helium/logger/ant/antlib.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : antlib.xml 
+Part of     : Helium AntLib
+
+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:
+
+============================================================================
+-->
+<antlib>
+    <!-- Task definition -->
+    <taskdef name="record" classname="com.nokia.helium.logger.ant.taskdefs.LogRecorder"/>
+    <taskdef name="logreplace" classname="com.nokia.helium.logger.ant.taskdefs.LogReplace"/>
+    <taskdef name="triggerlogger" classname="com.nokia.helium.logger.ant.taskdefs.TriggerLogger"/>
+    
+    <!-- Type definition -->
+    <typedef name="stagerecord" classname="com.nokia.helium.logger.ant.types.StageLogging"/>
+    <typedef name="stage" classname="com.nokia.helium.logger.ant.types.Stage"/>
+    <typedef name="stagesummary" classname="com.nokia.helium.logger.ant.types.StageSummary"/>
+    <typedef name="recordfilterset" classname="com.nokia.helium.logger.ant.types.RecordFilterSet"/>
+    
+</antlib>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/logging/src/com/nokia/helium/logger/ant/helium.antlib.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : helium.antlib.xml 
+Part of     : Helium Antlib 
+
+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="libs-logging" xmlns:hlm="http://www.nokia.com/helium">
+    <description>
+        Ant task definition declarations.
+    </description>    
+    <taskdef resource="com/nokia/helium/logger/ant/antlib.xml" uri="http://www.nokia.com/helium" />
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/logging/src/com/nokia/helium/logger/ant/listener/AntLoggingHandler.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,635 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+package com.nokia.helium.logger.ant.listener;
+
+import java.io.File;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Enumeration;
+import java.util.Hashtable;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Vector;
+
+import org.apache.tools.ant.BuildEvent;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.Target;
+import org.apache.tools.ant.Task;
+import org.apache.tools.ant.types.LogLevel;
+import org.apache.tools.ant.BuildException;
+import org.apache.log4j.Logger;
+
+import com.nokia.helium.logger.ant.types.StageLogging;
+import com.nokia.helium.logger.ant.types.Stage;
+
+
+    /**
+     * Ant logging class for each Stage. 
+     * 
+     *
+     */
+public class AntLoggingHandler implements Handler {
+    private static Hashtable<File, RecorderEntry> recorderEntries = new Hashtable<File, RecorderEntry>();
+    private Map<String, Stage> stagesMapping ;
+    private Map<String, StageLogging> stageRecordMap;
+    private HashMap<String, Vector<Target>> depStartTargetMap;
+    private HashMap<String, Target> stageStartTargetMap;
+    private HashMap<File, Boolean> fileCreatedMap;
+    private boolean isStageRecordingHappening;
+    private boolean loggingStarted;
+    private boolean isStageInformationInited;
+    private boolean isDefaultStageStarted;
+    private int loglevel = -1;
+    private VerbosityLevelChoices antLogLevel;
+    private Logger log = Logger.getLogger(AntLoggingHandler.class);
+    private String currentStageName;
+    private Project project;
+    
+    /**
+     * AntLoggingHandler constructor.
+     * @param proj
+     */
+    public AntLoggingHandler(Project proj) {
+        project = proj;
+        antLogLevel = new VerbosityLevelChoices();
+        stagesMapping = new HashMap<String, Stage>();
+        stageRecordMap = new HashMap<String, StageLogging>();
+        depStartTargetMap = new HashMap<String, Vector<Target>>();
+        stageStartTargetMap = new HashMap<String, Target>();
+        fileCreatedMap = new HashMap<File, Boolean>();
+    }
+
+    /** Return the project associated to this Handler.
+     * @return a project instance
+     */
+    public Project getProject() {
+        return project;
+    }
+    
+    /**
+     * {@inheritDoc}
+     */
+    public void handleTargetFinished(BuildEvent event) {
+        //log.debug("Finished target [" + event.getTarget().getName() + "]");
+        if (isEndTarget(event.getTarget().getName()) && getIsStageRecordingHappening() && (getLoggingStarted())) {
+            log.debug("Stopping stage logging for  [" + currentStageName + "] for target [" + event.getTarget().getName() + "]");
+            stopLog(currentStageName, "default");
+            startLog("default");
+            currentStageName = null;
+        }
+    }
+    
+    /**
+     * {@inheritDoc}
+     */
+    public void handleTargetStarted(BuildEvent event) {
+        
+        //log.debug("Started target [" + event.getTarget().getName() + "]");
+        if (!this.isStageInformationInited) {
+            initStagesInformation(event.getProject());
+            this.isStageInformationInited = true;
+        }
+        
+        if (this.isStageInformationInited && getLoggingStarted() && !this.isDefaultStageStarted) {
+            startLog("default");
+            this.isDefaultStageStarted = true;
+        }
+        
+        if (currentStageName == null && !getIsStageRecordingHappening() && (getLoggingStarted())) {
+            String stageName = isStageValid(event.getTarget(), event.getProject());
+            if (stageName != null) {
+                log.debug("Started stage logging for  [" + stageName + "] for target [" + event.getTarget().getName() + "]" );
+                stopLog("default", stageName);
+                startLog(stageName);
+                currentStageName = stageName;
+            }
+        }
+    }
+    
+    /**
+     * {@inheritDoc}
+     */
+    public void handleBuildStarted(BuildEvent event) {
+        // Nothing to do
+    }
+    
+    /**
+     * {@inheritDoc}
+     */
+    public void handleBuildFinished(BuildEvent event) {
+        if (this.isDefaultStageStarted && getLoggingStarted()) {
+            stopLog("default", null, event);
+        }
+        this.cleanup();
+    }
+    
+        
+    /**
+     * Returns recorder entry for logging current build process.
+     * @param name
+     * @param proj
+     * @return
+     */
+    protected RecorderEntry getRecorder(File name) {
+        RecorderEntry entry = recorderEntries.get(name);
+        if (entry == null) {
+            // create a recorder entry
+            entry = new RecorderEntry(name);
+            recorderEntries.put(name, entry);
+        }
+        return entry;
+    }
+    
+    
+    /**
+     * Sets the level to which this recorder entry should log to.
+     * @param level the level to set.
+     * @see VerbosityLevelChoices
+     */
+    public void setLoglevel(VerbosityLevelChoices level) {
+        loglevel = level.getLevel();
+    }
+    
+    /**
+     * A list of possible values for the <code>setLoglevel()</code> method.
+     * Possible values include: error, warn, info, verbose, debug.
+     */
+    public static class VerbosityLevelChoices extends LogLevel {
+    }
+    
+    /**
+     * To clean recorder entries.
+     */
+    private void cleanup() {
+        log.debug("Cleaning up recorder entries of stagerecord");
+        recorderEntries.clear();
+        
+    }
+    
+    
+    /**
+     * To get current date and time.
+     * @return
+     */
+    private String getDateTime() {
+        DateFormat dateFormat = new SimpleDateFormat("EE yyyy/MM/dd HH:mm:ss:SS aaa");
+        Date date = new Date();
+        return dateFormat.format(date);
+    } 
+    
+    /**
+     * To get the current stage running.
+     * @return
+     */
+    public String getCurrentStageName() {
+        return this.currentStageName;
+    }
+    
+    /**
+     * To do the logging actions depending on hlm:record actions.
+     * @param stageName
+     * @param action
+     * @param message
+     * @param task
+     */
+    public void doLoggingAction(String stageName, boolean action, String message, Task task, Target target) {
+        String time = getDateTime();
+        File fileName;
+        if (stageName.equalsIgnoreCase("default")) {
+            fileName = stageRecordMap.get("default").getDefaultOutput();
+        } else {
+            fileName = stageRecordMap.get(stageName).getOutput();
+        }
+        
+        if (fileName.exists()) {
+            for (Map.Entry<File, RecorderEntry> entry : recorderEntries.entrySet() ) {
+                if (fileName.equals(entry.getKey()) && (getRecorderEntry(fileName) != null) && (fileCreatedMap.get(fileName))) {
+                    RecorderEntry recorderEntry = getRecorderEntry(fileName);
+                    recorderEntry.addLogMessage(message + " logging into " + fileName + " from " + task.getTaskName() + " task at " + time);
+                    log.debug(message + " logging into " + fileName + " from " + task.getTaskName() + " task at " + time);
+                    recorderEntry.setRecordState(action);
+                    break;
+                }
+            }
+        }
+    }
+    
+    
+    /**
+     * Called by LogReplace task to find and replace any property values which are not updated.
+     * @param regExp
+     */
+    public void addRegExp (String regExp) {
+        if (!regExp.equals("")) {
+            for (Map.Entry<File, RecorderEntry> entry : recorderEntries.entrySet() ) {
+                RecorderEntry recorderEntry = entry.getValue();
+                recorderEntry.addRegexp(regExp);
+            }
+        }
+    }
+    
+    /**
+     * To initialize stages information.
+     * @param proj
+     */
+    
+    @SuppressWarnings("unchecked")
+    private void initStagesInformation(Project proj) {
+        log.debug("initStagesInformation: project: " + proj.getName());
+        Hashtable<String, Object> references = proj.getReferences(); 
+        Enumeration<String> keyEnum = references.keys();
+        validateDefaultStage(references);
+        while (keyEnum.hasMoreElements()) {
+            String key = keyEnum.nextElement();
+            if (references.get(key) instanceof Stage) {
+                Stage tempStage = (Stage)references.get(key);
+                validateStageInformation(key, tempStage);
+                log.debug("Found  stage [" + key + "] for recording");
+                stagesMapping.put(key, (Stage)references.get(key));
+                getStageRecordInformation(proj, key);
+                initDependentTargetMap(proj, key, tempStage.getStartTarget(), tempStage.getEndTarget());
+            }
+        }
+    }
+    
+    /**
+     * To initialize stage record information.
+     * @param proj
+     * @param stageKey
+     */
+    @SuppressWarnings("unchecked")
+    private void getStageRecordInformation(Project proj, String stageKey) {
+        Hashtable<String, Object> references = proj.getReferences();
+        matchStageName(references, stageKey);
+        Enumeration<String> keyEnum = references.keys();
+        while (keyEnum.hasMoreElements()) {
+            String key = keyEnum.nextElement();
+            if (references.get(key) instanceof StageLogging) {
+                StageLogging tempStageLogging = (StageLogging)references.get(key);
+                if ((tempStageLogging.getStageRefID() != null) && (tempStageLogging.getStageRefID().equals(stageKey))) {
+                    validateStageLogging(key, tempStageLogging);
+                    stageRecordMap.put(stageKey, tempStageLogging);
+                    return;
+                }
+            }
+        }
+    }
+    
+    /**
+     * To start logging for respective stage.
+     * @param stageName
+     */
+    private void startLog(String stageName) {
+        
+        File fileName ;
+        String message ;
+        String time = getDateTime();
+        StageLogging stageLogging = null;
+        log.debug("Starting logging for [" + stageName + "]");
+        if (stageName.equals("default")) {
+            fileName = stageRecordMap.get("default").getDefaultOutput();
+            stageLogging = stageRecordMap.get("default");
+            message = "Starting logging into " + fileName + " at " + time;
+        } else {
+            fileName = stageRecordMap.get(stageName).getOutput();
+            stageLogging = stageRecordMap.get(stageName);
+            this.isStageRecordingHappening = true;
+            message = "Starting logging for " + stageName + " into " + fileName + " at " + time;
+        }
+        if (getRecorderEntry(fileName) != null) {
+            RecorderEntry recorderEntry = getRecorderEntry(fileName);
+            if (isFilePresent(recorderEntry, fileName, stageLogging)) {
+                recorderEntry.setRecordState(true);
+                recorderEntry.addLogMessage(message);
+            }
+        }
+    }
+    
+    /**
+     * To check is the file created.
+     * @param recorderEntry
+     * @param fileName
+     * @param stageLogging
+     * @return
+     */
+    private boolean isFilePresent(RecorderEntry recorderEntry, File fileName, StageLogging stageLogging) {
+        log.debug("isFilePresent? " + fileName);
+        if (!fileCreatedMap.get(fileName)) {
+            if (!fileName.getParentFile().exists()) {
+                log.debug("Creating dir: " + fileName.getParentFile());
+                fileName.getParentFile().mkdirs();
+            }
+            if (fileName.exists()) {
+                long timestamp = System.currentTimeMillis();
+                StatusAndLogListener.getStatusAndLogListener().getProject().log("Backing up of " + fileName + " into " + fileName + "." + timestamp);
+                fileName.renameTo(new File(fileName.getAbsoluteFile() + "." + timestamp));
+            }
+            recorderEntry.openFile(stageLogging.getAppend());
+            fileCreatedMap.put(fileName, true);
+            return true;
+        } else {
+            return true;
+        }
+        
+    }
+    
+    /**
+     * To stop logging for respective stage.
+     * @param stopStageName
+     * @param startStageName
+     */
+    private void stopLog(String stopStageName, String startStageName) {
+        stopLog(stopStageName, startStageName, null);
+    }
+    
+    /**
+     * To stop logging for respective stage.
+     * @param stopStageName
+     * @param startStageName
+     * @param event
+     */
+    private void stopLog(String stopStageName, String startStageName, BuildEvent event) {
+        
+        File fileName ;
+        String message ;
+        String time = getDateTime();
+        log.debug("Stopping logging for [" + stopStageName + "]");
+        if (stopStageName.equals("default")) {
+            fileName = stageRecordMap.get("default").getDefaultOutput();
+            message = "Stopping logging into " + fileName + " at " + time;
+            if (startStageName != null )
+                message = message + "\nStarting logging into " + stageRecordMap.get(startStageName).getOutput();
+        } else {
+            fileName = stageRecordMap.get(stopStageName).getOutput();
+            this.isStageRecordingHappening = false;
+            message = "Stopping logging for " + stopStageName + " into " + fileName + " at " + time;
+            if (startStageName != null )
+                message = message + "\nResuming logging into " + stageRecordMap.get("default").getDefaultOutput();
+        }
+        if (getRecorderEntry(fileName) != null) {
+            RecorderEntry recorderEntry = getRecorderEntry(fileName);
+            if (event != null) {
+                recorderEntry.handleBuildFinished(event);
+            } else {
+                recorderEntry.addLogMessage(message);
+                recorderEntry.setRecordState(false);
+            }
+        }
+    }
+    
+    
+    /**
+     * To register into recorder entry.
+     * @param fileName
+     * @param stageLogging
+     * @param proj
+     */
+    private void registerRecorderEntry (File fileName, StageLogging stageLogging, Project proj) {
+        log.debug("Registering recorderentry for log file [" + fileName + "]");
+        RecorderEntry recorderEntry = getRecorder(fileName);
+        antLogLevel.setValue(stageLogging.getLogLevel());
+        this.setLoglevel(antLogLevel);
+        recorderEntry.setMessageOutputLevel(loglevel);
+        recorderEntry.setEmacsMode(false);
+        recorderEntry.setRecordState(false);
+        fileCreatedMap.put(fileName, false);
+    }
+    
+    /**
+     * To check is the stage valid for given start and end targets.
+     * @param target
+     * @param proj
+     * @return
+     */
+    private String isStageValid(Target target, Project proj) {
+        
+        if (!proj.getName().equals(StatusAndLogListener.getStatusAndLogListener().getProject().getName()) && (StatusAndLogListener.getStatusAndLogListener().getProject().getName() != null )) {
+            initSubProjectDependentTarget(proj);
+        }
+        for (Map.Entry<String, Stage> entry : stagesMapping.entrySet() ) {
+            Stage stage = entry.getValue();
+            if (stage.getStartTarget().equals(target.getName()) && validateStageTargets(proj, stage.getStartTarget(), stage.getEndTarget())) {
+                log.debug("Found stage [" + entry.getKey() + "] for target [" + target.getName() + "]");
+                return entry.getKey();
+            } 
+            if (stageStartTargetMap.get(entry.getKey()) != null) {
+                if (stageStartTargetMap.get(entry.getKey()).getName().equals(target.getName())) {
+                    log.debug("Found stage [" + entry.getKey() + "] for dependent target [" + target.getName() + "]");
+                    return entry.getKey();
+                }
+            } else if (isDependentTarget(target, entry.getKey())) {
+                log.debug("Found stage [" + entry.getKey() + "] for dependent target [" + target.getName() + "]");
+                return entry.getKey();
+            }
+        }
+        return null;
+    }
+    
+    /**
+     * To check, is the given target is end target for any stages.
+     * @param targetName
+     * @return
+     */
+    
+    private boolean isEndTarget(String targetName) {
+        if (stagesMapping.get(currentStageName) != null) {
+            return stagesMapping.get(currentStageName).getEndTarget().equals(targetName);
+        }
+        return false;
+    }
+    
+    /**
+     * To validate is the endtarget and starttarget are present in the current project.
+     * @param proj
+     * @param startTarget
+     * @param endTarget
+     * @return
+     */
+    
+    @SuppressWarnings("unchecked")
+    private boolean validateStageTargets(Project proj, String startTarget, String endTarget) {
+        
+        Hashtable<String, String> antTargets = proj.getTargets();
+        return antTargets.containsKey(startTarget) && antTargets.containsKey(endTarget);
+    }
+    
+    /**
+     * To check is recording is happening for any stages. 
+     * @return
+     */
+    private boolean getIsStageRecordingHappening() {
+        return this.isStageRecordingHappening;
+    }
+    
+    
+    /**
+     * Is the given target is dependent target to start the stage.
+     * @param target
+     * @param stageName
+     * @return
+     */
+    private boolean isDependentTarget(Target target, String stageName) {
+
+        if (depStartTargetMap.get(stageName) != null) {
+            for (Target depTarget : depStartTargetMap.get(stageName)) {
+                if (depTarget.getName().equals(target.getName())) {
+                    depStartTargetMap.remove(stageName);
+                    stageStartTargetMap.put(stageName, depTarget);
+                    return true;
+                }
+            }
+        }
+        
+        return false;
+    }
+    
+    /**
+     * To initialize the dependent target and stages mapping.
+     * @param proj
+     * @param stageKey
+     * @param startTarget
+     * @param endTarget
+     */
+    @SuppressWarnings("unchecked")
+    private void initDependentTargetMap(Project proj, String stageKey, String startTarget, String endTarget) {
+        Vector<Target> arrayList = null;
+        if (validateStageTargets(proj, startTarget, endTarget)) {
+            arrayList = proj.topoSort(startTarget, proj.getTargets(), false);
+            log.debug("Target dependency for " + startTarget);
+            for (Target target : arrayList) {
+                log.debug("       Start Target : " + target.getName());
+            }
+            if (arrayList != null && arrayList.size() > 1) {
+                depStartTargetMap.put(stageKey, arrayList);
+            }
+        }
+
+    }
+    
+    /**
+     * To init dependent targets for subproject.
+     * @param proj
+     */
+    private void initSubProjectDependentTarget(Project proj) {
+        
+        for (Map.Entry<String, Stage> entry : stagesMapping.entrySet() ) {
+            if (depStartTargetMap.get(entry.getKey()) == null) {
+                initDependentTargetMap(proj, entry.getKey(), entry.getValue().getStartTarget(), entry.getValue().getEndTarget());
+            }
+        }
+    }
+    
+    /**
+     * To validate stage information.
+     * @param stageKey
+     * @param stage
+     */
+    private void validateStageInformation(String stageKey, Stage stage) {
+        
+        if (stage.getStartTarget() == null ) {
+            throw new BuildException("'starttarget' for stage '" + stageKey + "' should not be null.");
+        }
+        
+        if (stage.getEndTarget() == null ) {
+            throw new BuildException("'endtarget' for stage '" + stageKey + "' should not be null.");
+        }
+    }
+    
+    /**
+     * To validate each stagelogging data type.
+     * @param stagerefid
+     * @param stageLogging
+     */
+    private void validateStageLogging(String stagerefid, StageLogging stageLogging) {
+        
+        if (stageLogging.getOutput() == null) {
+            throw new BuildException ("'output' attribute for stagelogging '" + stagerefid + "' should not be null." );
+        }
+        registerRecorderEntry(stageLogging.getOutput(), stageLogging, StatusAndLogListener.getStatusAndLogListener().getProject());
+    }
+    
+    /**
+     * To validate default stage.
+     * @param stageRecord
+     */
+    private void validateDefaultStage(Hashtable<String, Object> stageRecord) {
+        
+        Enumeration<String> keyEnum = stageRecord.keys();
+        while (keyEnum.hasMoreElements()) {
+            String key = keyEnum.nextElement();
+            if (stageRecord.get(key) instanceof StageLogging) {
+                StageLogging tempStageLogging = (StageLogging)stageRecord.get(key);
+                if ((tempStageLogging.getStageRefID() == null) && (tempStageLogging.getDefaultOutput() != null )) {
+                    stageRecordMap.put("default", tempStageLogging);
+                    registerRecorderEntry(tempStageLogging.getDefaultOutput(), tempStageLogging, StatusAndLogListener.getStatusAndLogListener().getProject());
+                    return;
+                }
+            }
+        }
+        throw new BuildException("There should be one default stagerecord datatype.");
+    }
+    
+    /**
+     * To validate respective stagelogging for stage datatype.
+     * @param stageRecord
+     * @param stageKey
+     */
+    private void matchStageName(Hashtable<String, Object> stageRecord, String stageKey) {
+        
+        Enumeration<String> keyEnum = stageRecord.keys();
+        while (keyEnum.hasMoreElements()) {
+            String key = keyEnum.nextElement();
+            if (stageRecord.get(key) instanceof StageLogging) {
+                StageLogging tempStageLogging = (StageLogging)stageRecord.get(key);
+                if ((tempStageLogging.getStageRefID() != null) && (tempStageLogging.getStageRefID().equals(stageKey))) {
+                    return;
+                }
+            }
+        }
+        throw new BuildException("there is no stagelogging datatype matching for stage '" + stageKey + "'");
+    }
+    
+    /**
+     * To retrun recorderEntry of respective file.
+     * @param filename
+     * @return
+     */
+    private RecorderEntry getRecorderEntry(File filename) {
+        return recorderEntries.get(filename);
+    }
+    
+    /**
+     * Is recording started.
+     * @return
+     */
+    public boolean getLoggingStarted() {
+        return loggingStarted;
+    }
+
+    /**
+     * Set to recording started.
+     * @param loggingStarted
+     */
+    public void setLoggingStarted(boolean loggingStarted) {
+        this.loggingStarted = loggingStarted;
+    }
+    
+    
+    
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/logging/src/com/nokia/helium/logger/ant/listener/BuildEventHandler.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,43 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+package com.nokia.helium.logger.ant.listener;
+
+import org.apache.tools.ant.BuildEvent;
+
+/**
+ * <code>Handler</code> is an interface which is used to handle the build events
+ * which are of importance for ant logging and build stage summary display.
+ * 
+ *
+ */
+public interface BuildEventHandler {
+
+   /**
+    * Method to handle build start events.
+    * 
+    * @param event is the build event to be handled. 
+    */
+    void handleBuildStarted( BuildEvent event );
+
+   /**
+    * Method to handle build finish events.
+    * 
+    * @param event is the build event to be handled. 
+    */
+    void handleBuildFinished( BuildEvent event );
+    
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/logging/src/com/nokia/helium/logger/ant/listener/BuildStatusReport.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,142 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+package com.nokia.helium.logger.ant.listener;
+
+import static com.nokia.helium.logger.ant.listener.StageSummaryHandler.FAILED;
+import static com.nokia.helium.logger.ant.listener.StageSummaryHandler.PASSED;
+
+/**
+ * <code>BuildStatusReport</code> is a simple java bean used to hold information pertaining
+ * to various build stages.
+ * 
+ */
+public class BuildStatusReport {
+
+    private String phaseName;
+    private String startTime;
+    private String duration;
+    private String reason;
+    private String status;
+
+    /**
+     * Create an instance of {@link BuildStatusReport}.
+     * 
+     * @param phaseName is the name of the Phase
+     * @param startTime is the start time of the Phase
+     * @param duration is the duration of the Phase
+     * @param reason is the cause of build failure, if any
+     */
+    public BuildStatusReport(String phaseName, String startTime,
+            String duration, String reason) {
+        this.phaseName = phaseName;
+        this.startTime = startTime;
+        this.duration = duration;
+        this.reason = (reason != null && !reason.isEmpty()) ? reason : "N/A";
+        this.status = (reason != null && !reason.isEmpty()) ? FAILED : PASSED; 
+    }
+
+    /**
+     * Get the Build Phase name.
+     * 
+     * @return the Build Phase name.
+     */
+    public String getPhaseName() {
+        return phaseName;
+    }
+
+    /**
+     * Set the Build Phase name.
+     * 
+     * @param phaseName is the phase name to set.
+     */
+    public void setPhaseName(String phaseName) {
+        this.phaseName = phaseName;
+    }
+
+    /**
+     * Get the start time of this Phase.
+     * 
+     * @return the start time of this Phase.
+     */
+    public String getStartTime() {
+        return startTime;
+    }
+
+    /**
+     * Set the start time of this Phase.
+     * 
+     * @param startTime is the start time to set.
+     */
+    public void setStartTime(String startTime) {
+        this.startTime = startTime;
+    }
+
+    /**
+     * Get the duration of this Phase.
+     * 
+     * @return the duration of this Phase.
+     */
+    public String getDuration() {
+        return duration;
+    }
+
+    /**
+     * Set the duration of this Phase.
+     * 
+     * @param duration the duration to set.
+     */
+    public void setDuration(String duration) {
+        this.duration = duration;
+    }
+
+    /**
+     * Get the reason for build failure.
+     * 
+     * @return the reason for build failure.
+     */
+    public String getReason() {
+        return reason;
+    }
+
+    /**
+     * Set the reason for build failure.
+     * 
+     * @param reason is the reason for build failure.
+     */
+    public void setReason(String reason) {
+        this.reason = reason;
+    }
+
+    /**
+     * Get the build status.
+     * 
+     * @return the build status.
+     */
+    public String getStatus() {
+        return status;
+    }
+
+    /**
+     * Set the build status.
+     * 
+     * @param status is the build status to set.
+     */
+    public void setStatus(String status) {
+        this.status = status;
+    }
+    
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/logging/src/com/nokia/helium/logger/ant/listener/Handler.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,30 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+package com.nokia.helium.logger.ant.listener;
+
+
+/**
+ * <code>Handler</code> is an interface which is used to handle the build events
+ * which are of importance for ant logging and build stage summary display.
+ * 
+ *
+ */
+public interface Handler extends BuildEventHandler, TargetEventHandler {
+
+   
+    
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/logging/src/com/nokia/helium/logger/ant/listener/MessageEventHandler.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,34 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+package com.nokia.helium.logger.ant.listener;
+
+import org.apache.tools.ant.BuildEvent;
+
+/**
+ * This interface defines the methods called
+ * while Ant message are logged.
+ *
+ */
+public interface MessageEventHandler {
+    
+    /**
+     * Method to handle SubBuild Started  events.
+     * @param event
+     */
+    void handleMessageLogged( BuildEvent event );
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/logging/src/com/nokia/helium/logger/ant/listener/RecorderEntry.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,432 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+package com.nokia.helium.logger.ant.listener;
+
+import java.io.PrintStream;
+
+import org.apache.log4j.Logger;
+import org.apache.tools.ant.BuildEvent;
+import org.apache.tools.ant.DefaultLogger;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.util.StringUtils;
+import org.apache.tools.ant.BuildException;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.Vector;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * This is a class that represents a recorder. This is the listener to the
+ * build process.
+ *
+ * @since Ant 1.4
+ */
+public class RecorderEntry implements BuildEventHandler, TargetEventHandler, TaskEventHandler, MessageEventHandler {
+
+    //////////////////////////////////////////////////////////////////////
+    // ATTRIBUTES
+
+    /** The name of the file associated with this recorder entry.  */
+    private File filename;
+    /** The state of the recorder (recorder on or off).  */
+    private boolean record = true;
+    /** The current verbosity level to record at.  */
+    private int loglevel = Project.MSG_INFO;
+    /** The output PrintStream to record to.  */
+    private PrintStream out;
+    /** The start time of the last know target.  */
+    private long targetStartTime;
+    /** Strip task banners if true.  */
+    private boolean emacsMode;
+    
+    private Pattern pattern;
+    
+    private Vector<String> logRegExps = new Vector<String>();
+    private Logger log = Logger.getLogger(getClass());
+
+    
+    //////////////////////////////////////////////////////////////////////
+    // CONSTRUCTORS / INITIALIZERS
+
+    /**
+     * @param name The name of this recorder (used as the filename).
+     */
+    public RecorderEntry(File name) {
+        targetStartTime = System.currentTimeMillis();
+        filename = name;
+    }
+
+    //////////////////////////////////////////////////////////////////////
+    // ACCESSOR METHODS
+
+    /**
+     * @return the name of the file the output is sent to.
+     */
+    public File getFilename() {
+        return filename;
+    }
+
+    /**
+     * Turns off or on this recorder.
+     *
+     * @param state true for on, false for off, null for no change.
+     */
+    public void setRecordState(boolean state) {
+         flush();
+         record = state;
+    }
+
+    /**
+     * Get the current state of the recorder
+     * @param state
+     */
+    public boolean getRecordState() {
+        return record;
+    }
+    
+    /**
+     * To set the regexp to filter the logging.
+     * @param regexp
+     */
+    public void addRegexp(String regexp) {
+        logRegExps.add(regexp);
+    }
+    
+    /**
+     * To clear all regexp set.
+     */
+    public void resetRegExp() { 
+        logRegExps.clear();
+    }
+
+    /**
+     * @see org.apache.tools.ant.BuildListener#buildStarted(BuildEvent)
+     */
+    /** {@inheritDoc}. */
+    public void handleBuildStarted(BuildEvent event) {
+        log("> BUILD STARTED", Project.MSG_DEBUG);
+    }
+
+    /**
+     * @see org.apache.tools.ant.BuildListener#buildFinished(BuildEvent)
+     */
+    /** {@inheritDoc}. */
+    public void handleBuildFinished(BuildEvent event) {
+        log.debug("< BUILD FINISHED");
+
+        if (record && out != null) {
+            Throwable error = event.getException();
+
+            if (error == null) {
+                out.println(StringUtils.LINE_SEP + "BUILD SUCCESSFUL");
+            } else {
+                out.println(StringUtils.LINE_SEP + "BUILD FAILED"
+                            + StringUtils.LINE_SEP);
+                error.printStackTrace(out);
+            }
+        }
+        cleanup();
+    }
+
+    /**
+     * Cleans up any resources held by this recorder entry at the end
+     * of a subbuild if it has been created for the subbuild's project
+     * instance.
+     *
+     * @param event the buildFinished event
+     *
+     * @since Ant 1.6.2
+     */
+    public void handleSubBuildFinished(BuildEvent event) {
+        log("< SUBBUILD FINISHED", Project.MSG_DEBUG);
+        // let's keep the logging ongoing, even if sub-build finishes.
+    }
+
+    /**
+     * Empty implementation to satisfy the BuildListener interface.
+     *
+     * @param event the buildStarted event
+     *
+     * @since Ant 1.6.2
+     */
+    public void handleSubBuildStarted(BuildEvent event) {
+        log("< SUBBUILD STARTED", Project.MSG_DEBUG);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void handleTargetStarted(BuildEvent event) {
+        log(">> TARGET STARTED -- " + event.getTarget(), Project.MSG_DEBUG);
+        log(StringUtils.LINE_SEP + event.getTarget().getName() + ":",
+            Project.MSG_INFO);
+        targetStartTime = System.currentTimeMillis();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void handleTargetFinished(BuildEvent event) {
+        log("<< TARGET FINISHED -- " + event.getTarget(), Project.MSG_DEBUG);
+
+        String time = formatTime(System.currentTimeMillis() - targetStartTime);
+
+        log(event.getTarget() + ":  duration " + time, Project.MSG_VERBOSE);
+        flush();
+    }
+
+    /**
+     * @see org.apache.tools.ant.BuildListener#taskStarted(BuildEvent)
+     */
+    /** {@inheritDoc}. */
+    public void handleTaskStarted(BuildEvent event) {
+        log(">>> TASK STARTED -- " + event.getTask(), Project.MSG_DEBUG);
+    }
+
+    /**
+     * @see org.apache.tools.ant.BuildListener#taskFinished(BuildEvent)
+     */
+    /** {@inheritDoc}. */
+    public void handleTaskFinished(BuildEvent event) {
+        log("<<< TASK FINISHED -- " + event.getTask(), Project.MSG_DEBUG);
+        flush();
+    }
+
+    /**
+     * @see org.apache.tools.ant.BuildListener#messageLogged(BuildEvent)
+     */
+    /** {@inheritDoc}. */
+    public void handleMessageLogged(BuildEvent event) {
+        log("--- MESSAGE LOGGED", Project.MSG_DEBUG);
+
+        StringBuffer buf = new StringBuffer();
+
+        if (event.getTask() != null) {
+            String name = event.getTask().getTaskName();
+
+            if (!emacsMode) {
+                String label = "[" + name + "] ";
+                int size = DefaultLogger.LEFT_COLUMN_SIZE - label.length();
+
+                for (int i = 0; i < size; i++) {
+                    buf.append(" ");
+                }
+                buf.append(label);
+            }
+        }
+        String messgeToUpdate = filterMessage(event.getMessage());
+        buf.append(messgeToUpdate);
+        log(buf.toString(), event.getPriority());
+    }
+    
+    
+    /**
+     * To replace regExp matching with ****.
+     * @param message
+     * @return
+     */
+    private String filterMessage(String message) {
+        for (String regExp : logRegExps) {
+            pattern = Pattern.compile(regExp);
+            if (pattern != null) {
+                Matcher match = pattern.matcher(message);
+                message = match.replaceAll("********");
+            }
+        }
+        return message;
+    }
+
+
+    /**
+     * The thing that actually sends the information to the output.
+     *
+     * @param mesg The message to log.
+     * @param level The verbosity level of the message.
+     */
+    private void log(String msg, int level) {
+        if (record && (level <= loglevel) && out != null) {
+            out.println(msg);
+        }
+    }
+
+    private void flush() {
+        if (record && out != null) {
+            out.flush();
+        }
+    }
+
+    /**
+     * @see BuildLogger#setMessageOutputLevel(int)
+     */
+    /** {@inheritDoc}. */
+    public void setMessageOutputLevel(int level) {
+        if (level >= Project.MSG_ERR && level <= Project.MSG_DEBUG) {
+            loglevel = level;
+        }
+    }
+
+    /**
+     * @see BuildLogger#setOutputPrintStream(PrintStream)
+     */
+    /** {@inheritDoc}. */
+    public void setOutputPrintStream(PrintStream output) {
+        closeFile();
+        out = output;
+    }
+
+
+    /**
+     * @see BuildLogger#setEmacsMode(boolean)
+     */
+    /** {@inheritDoc}. */
+    public void setEmacsMode(boolean emacsMode) {
+        this.emacsMode = emacsMode;
+    }
+
+
+    /**
+     * @see BuildLogger#setErrorPrintStream(PrintStream)
+     */
+    /** {@inheritDoc}. */
+    public void setErrorPrintStream(PrintStream err) {
+        setOutputPrintStream(err);
+    }
+
+
+    private static String formatTime(long millis) {
+        // CheckStyle:MagicNumber OFF
+        long seconds = millis / 1000;
+        long minutes = seconds / 60;
+
+
+        if (minutes > 0) {
+            return Long.toString(minutes) + " minute"
+                 + (minutes == 1 ? " " : "s ")
+                 + Long.toString(seconds % 60) + " second"
+                 + (seconds % 60 == 1 ? "" : "s");
+        } else {
+            return Long.toString(seconds) + " second"
+                 + (seconds % 60 == 1 ? "" : "s");
+        }
+        // CheckStyle:MagicNumber ON
+    }
+    
+    
+    /**
+     * Registering ourselves to the StatusAndLogListener.
+     */
+    public void register() {
+        StatusAndLogListener l = StatusAndLogListener.getStatusAndLogListener();
+        if (l != null) {
+            this.log.debug("register");
+            synchronized (l) {
+                l.register((BuildEventHandler)this);
+                l.register((TargetEventHandler)this);
+                l.register((TaskEventHandler)this);
+                l.register((MessageEventHandler)this);
+            }
+        }
+    }
+
+    /**
+     * Unregistering ourselves from the StatusAndLogListener.
+     */
+    public void unregister() {
+        StatusAndLogListener l = StatusAndLogListener.getStatusAndLogListener();
+        if (l != null) {
+            this.log.debug("unregister");
+            synchronized (l) {
+                l.remove((MessageEventHandler)this);
+                l.remove((TaskEventHandler)this);
+                l.remove((TargetEventHandler)this);
+                l.remove((BuildEventHandler)this);
+            }
+        }
+    }
+    
+
+    /**
+     * @since 1.6.2
+     */
+    public void cleanup() {
+        closeFile();
+    }
+
+    /**
+     * Closes the file associated with this recorder.
+     * Used by Recorder.
+     * @since 1.6.3
+     */
+    public void closeFile() {
+        this.log.debug("closeFile.");                
+        if (out != null) {
+            out.close();
+            out = null;
+            unregister();
+        }
+    }
+    
+    /**
+     * Initially opens the file associated with this recorder.
+     * Used by Recorder.
+     * @param append Indicates if output must be appended to the logfile or that
+     * the logfile should be overwritten.
+     * @throws BuildException
+     * @since 1.6.3
+     */
+    public void openFile(boolean append) {
+        openFileImpl(append);
+    }
+    
+    /**
+     * Re-opens the file associated with this recorder.
+     * Used by Recorder.
+     * @throws BuildException
+     * @since 1.6.3
+     */
+    public void reopenFile() {
+        openFileImpl(true);
+    }
+    
+    private void openFileImpl(boolean append) {
+        if (out == null) {
+            this.log.debug("openFileImpl: " + filename);
+            try {
+                out = new PrintStream(new FileOutputStream(filename, append));
+                register();
+            } catch (IOException ioe) {
+                throw new BuildException("Problems opening file using a "
+                                         + "recorder entry: " + ioe.getMessage(), ioe);
+            }
+        }
+    }
+    
+    /**
+     * To add user message into log file.
+     * @param message
+     */
+    public void addLogMessage(String message) {
+        out.println(StringUtils.LINE_SEP + message);
+        
+    }
+    
+    
+    
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/logging/src/com/nokia/helium/logger/ant/listener/StageSummaryHandler.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,450 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+package com.nokia.helium.logger.ant.listener;
+
+import java.io.File;
+import java.io.StringWriter;
+import java.text.DateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.apache.tools.ant.BuildEvent;
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.Target;
+import org.apache.tools.ant.util.DateUtils;
+
+import com.nokia.helium.logger.ant.types.Stage;
+import com.nokia.helium.logger.ant.types.StageSummary;
+
+import freemarker.cache.FileTemplateLoader;
+import freemarker.template.Configuration;
+import freemarker.template.Template;
+
+/**
+ * <code>StageStatusHandler</code> is the handler class responsible for
+ * displaying the summary of the various configured build stages at the end of
+ * build process.
+ * 
+ */
+public class StageSummaryHandler implements Handler {
+
+    public static final String PASSED = "PASSED";
+    public static final String FAILED = "FAILED";
+
+    private Logger log = Logger.getLogger(getClass());
+    private boolean displaySummary;
+    private boolean lookup4Stages;
+    private boolean summarize;
+
+    private List<BuildStatusReport> statusReports;
+    private HashSet<String> completedStages;
+    private Hashtable<String, Stage> currentStages;
+    private Hashtable<String, Long> currentStagesStartTime;
+    private Hashtable<String, Stage> stages;
+    private File template;
+
+    /**
+     * Create an instance of {@link StageSummaryHandler}
+     * 
+     */
+    public StageSummaryHandler() {
+        this.statusReports = new ArrayList<BuildStatusReport>();
+        this.completedStages = new HashSet<String>();
+        this.currentStages = new Hashtable<String, Stage>();
+        this.currentStagesStartTime = new Hashtable<String, Long>();
+        log.debug("StageStatusHandler instantiated");
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void handleBuildStarted(BuildEvent event) {
+
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void handleBuildFinished(BuildEvent event) {
+        if (summarize && !currentStages.isEmpty()) {
+            Long currTime = getCurrentTime();
+            String reason = getReason(event.getException());
+            Map<String, Stage> tempStages = new Hashtable<String, Stage>(
+                    currentStages);
+            for (String stageName : tempStages.keySet()) {
+                endCurrentStage(stageName, tempStages.get(stageName), reason,
+                        currTime);
+            }
+
+        }
+        if (summarize && displaySummary) {
+            generateSummary(event.getProject());
+            displaySummary = false;
+            log.debug("Stage Summary generation completed");
+        }
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void handleTargetStarted(BuildEvent event) {
+        Project project = event.getProject();
+        if (!summarize) {
+            StageSummary stageSummary = getStageSummary(project);
+            summarize = stageSummary != null
+                    && stageSummary.getTemplate() != null;
+            lookup4Stages = summarize;
+            template = stageSummary.getTemplate();
+            log.debug("Is Project configured to display Stage Summary ? "
+                    + summarize);
+        }
+
+        if (lookup4Stages) {
+            log.debug("Loading stages....");
+            parseStages(event.getProject());
+            log.debug("Total no of stages loaded = " + stages.size());
+            lookup4Stages = false;
+        }
+
+        log.debug("Handling target - " + event.getTarget().getName());
+        if (summarize) {
+            Long currTime = getCurrentTime();
+            TreeMap<String, Stage> result = searchNewStage(event);
+            if (result != null && result.size() == 1) {
+                String stageName = result.firstKey();
+                Stage stage = result.get(stageName);
+                startNewStage(stageName, stage, currTime);
+            }
+        }
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void handleTargetFinished(BuildEvent event) {
+        String currentTarget = event.getTarget().getName();
+        Long currTime = getCurrentTime();
+        String reason = getReason(event.getException());
+        if (summarize && !currentStages.isEmpty()) {
+            TreeMap<String, Stage> result = getCurrentStageToEnd(currentTarget);
+            if (!result.isEmpty()) {
+                String stageName = result.firstKey();
+                Stage stage = result.get(stageName);
+                endCurrentStage(stageName, stage, reason, currTime);
+            }
+        }
+    }
+
+    private TreeMap<String, Stage> getCurrentStageToEnd(String target) {
+        TreeMap<String, Stage> result = new TreeMap<String, Stage>();
+        for (String stageName : currentStages.keySet()) {
+            Stage stage = currentStages.get(stageName);
+            if (stage.isEndTarget(target)) {
+                result.put(stageName, stage);
+                break;
+            }
+        }
+        return result;
+    }
+
+    /**
+     * Method returns the configured {@link StageSummary}.
+     * 
+     * @param project
+     *            is the project to lookup for stageSummary.
+     * @return the {@link StageSummary}.
+     */
+    @SuppressWarnings("unchecked")
+    private StageSummary getStageSummary(Project project) {
+        StageSummary stageSummary = null;
+        int count = 0;
+        Hashtable<String, Object> references = project.getReferences();
+        for (Enumeration<String> en = references.keys(); en.hasMoreElements();) {
+            Object object = references.get(en.nextElement());
+            if (object instanceof StageSummary) {
+                count++;
+                if (count > 1) {
+                    raiseException("Multiple entries of 'hlm:stagesummary' found in "
+                            + "stages_config.ant.xml.");
+                }
+                stageSummary = (StageSummary) object;
+            }
+        }
+        return stageSummary;
+    }
+
+    /**
+     * Raise a {@link BuildException} with the specified error message.
+     * 
+     * @param message
+     *            is the error message to display.
+     */
+    private void raiseException(String message) {
+        throw new BuildException(message);
+    }
+
+    /**
+     * Start the given stage as a new build stage.
+     * 
+     * @param stageName
+     *            is the name of the new stage.
+     * @param newStage
+     *            is the build stage to start as new.
+     * @param startTime
+     *            is the start time of the given build stage.
+     */
+    private void startNewStage(String stageName, Stage newStage, Long startTime) {
+        if (!currentStages.containsKey(stageName)) {
+            this.currentStages.put(stageName, newStage);
+            this.currentStagesStartTime.put(stageName, startTime);
+            log.debug("New stage [" + stageName + "] started at "
+                    + getTimestamp(startTime));
+        }
+    }
+
+    /**
+     * End the current stage.
+     * 
+     * @param reason
+     *            is the reason for build failure if any.
+     * @param currTime
+     *            is the end time of the current stage.
+     */
+    private void endCurrentStage(String currentStageName, Stage currentStage,
+            String reason, Long currTime) {
+        if (currentStage != null) {
+            BuildStatusReport report = constructBuildStatusReport(
+                    currentStageName, currentStagesStartTime
+                            .get(currentStageName), currTime, reason);
+            statusReports.add(report);
+            displaySummary = true;
+            log.debug("Stage [" + currentStageName + "] finished at "
+                    + getTimestamp(currTime));
+            reset(currentStageName);
+        }
+    }
+
+    /**
+     * Reset the build stage variables to default.
+     */
+    private void reset(String stageName) {
+        this.currentStages.remove(stageName);
+        this.currentStagesStartTime.remove(stageName);
+        this.completedStages.add(stageName);
+    }
+
+    /**
+     * Search for the new Stage based on the given build event.
+     * 
+     * @param event
+     *            is the build event fired.
+     * @return a map with Stage Name and stage, if the build event marks the
+     *         start of a configured Stage.
+     */
+    private TreeMap<String, Stage> searchNewStage(BuildEvent event) {
+        TreeMap<String, Stage> result = new TreeMap<String, Stage>();
+        String target = event.getTarget().getName();
+        for (String stageName : stages.keySet()) {
+            Stage stage = stages.get(stageName);
+            if (!completedStages.contains(stageName)
+                    && isStartingTarget(target, event.getProject(), stage)) {
+                result.put(stageName, stage);
+                break;
+            }
+        }
+        return result;
+    }
+
+    /**
+     * Return whether the given target is a starting target of the given stage.
+     * 
+     * @param targetName
+     *            is the target to check.
+     * @param project
+     *            is the project to lookup for target
+     * @param stage
+     *            is the stage to check.
+     * @return
+     */
+    @SuppressWarnings("unchecked")
+    private boolean isStartingTarget(String targetName, Project project,
+            Stage stage) {
+        boolean bool = false;
+        if (project.getTargets().containsKey(stage.getStartTarget())) {
+            Vector<Target> dependencies = project.topoSort(stage
+                    .getStartTarget(), project.getTargets(), false);
+            if (!dependencies.isEmpty()) {
+                Target target = dependencies.firstElement();
+                bool = target.getName().equals(targetName);
+            }
+        }
+        return bool;
+    }
+
+    /**
+     * Parse and cache the stages configured.
+     * 
+     * @param project
+     *            is the project to lookup for stages.
+     */
+    @SuppressWarnings("unchecked")
+    private void parseStages(Project project) {
+        stages = new Hashtable<String, Stage>();
+        Hashtable<String, Object> references = project.getReferences();
+        for (Enumeration<String> en = references.keys(); en.hasMoreElements();) {
+            String key = en.nextElement();
+            Object value = references.get(key);
+            if (value instanceof Stage) {
+                validateStageInformation(key, (Stage)value);
+                stages.put(key, (Stage) value);
+            }
+        }
+    }
+
+    /**
+     * Return the reason for build failure in String format.
+     * 
+     * @param th
+     *            is the cause of build failure if any.
+     * @return String representing the build failure.
+     */
+    private String getReason(Throwable th) {
+        return (th != null) ? th.getMessage() : "";
+    }
+
+    /**
+     * Return the current time in milliseconds.
+     * 
+     * @return the current time in milliseconds.
+     */
+    private Long getCurrentTime() {
+        return System.currentTimeMillis();
+    }
+
+    /**
+     * Generate build summary.
+     * 
+     */
+    private void generateSummary(Project project) {
+        if (template != null) {
+            try {
+                Configuration cfg = new Configuration();
+                log.debug("Basedir: " + template.getParentFile());
+                cfg.setTemplateLoader(new FileTemplateLoader(template.getParentFile()));
+                Template templ = cfg.getTemplate(template.getName());
+                StringWriter writer = new StringWriter();
+                templ.process(getTemplateData(), writer);
+                project.log(writer.toString());
+            } catch (freemarker.core.InvalidReferenceException ivx) {
+                project.log("Invalid reference in config: ", ivx,
+                        Project.MSG_WARN);
+            } catch (freemarker.template.TemplateException e2) {
+                project.log("TemplateException: ", e2, Project.MSG_WARN);
+            } catch (java.io.IOException e) {
+                project.log("I/O Error during template conversion: " + e.toString(),
+                        Project.MSG_WARN);
+            }
+        }
+    }
+
+    /**
+     * Return the data-model to be merged with the template.
+     * 
+     * @return a Map representing template data-model.
+     */
+    private Map<String, Object> getTemplateData() {
+        Map<String, Object> templateMap = new HashMap<String, Object>();
+        templateMap.put("statusReports", new ArrayList<BuildStatusReport>(
+                statusReports));
+        return templateMap;
+    }
+
+    /**
+     * Get the given date as String format.
+     * 
+     * @param date
+     *            is the date to be formatted as String.
+     * @return given date formated as String
+     */
+    private String getTimestamp(long date) {
+        Date dt = new Date(date);
+        DateFormat formatter = DateFormat.getDateTimeInstance(DateFormat.SHORT,
+                DateFormat.SHORT);
+        String finishTime = formatter.format(dt);
+        return finishTime;
+    }
+
+    /**
+     * Get the time duration for the given start and end times in String format.
+     * 
+     * @param startTime
+     *            is the start time.
+     * @param endTime
+     *            is the end time.
+     * @return
+     */
+    private String getTimeElapsed(Long startTime, Long endTime) {
+        long timeElapsed = endTime - startTime;
+        return DateUtils.formatElapsedTime(timeElapsed);
+    }
+
+    /**
+     * Construct an instance of {@link BuildStatusReport} with the given
+     * details.
+     * 
+     * @param phaseName
+     *            is the name of the Phase.
+     * @param startTime
+     *            is the start time of the given Phase
+     * @param endTime
+     *            is the end time of given phase
+     * @param reason
+     *            is the cause of failure
+     * @return
+     */
+    private BuildStatusReport constructBuildStatusReport(String phaseName,
+            Long startTime, Long endTime, String reason) {
+        return new BuildStatusReport(phaseName, getTimestamp(startTime),
+                getTimeElapsed(startTime, endTime), reason);
+    }
+    
+    /**
+     * To validate stage information.
+     * @param stageKey
+     * @param stage
+     */
+    private void validateStageInformation(String stageKey, Stage stage) {
+        
+        if (stage.getStartTarget() == null ) {
+            throw new BuildException("'starttarget' for stage '" + stageKey + "' should not be null.");
+        }
+        
+        if (stage.getEndTarget() == null ) {
+            throw new BuildException("'endtarget' for stage '" + stageKey + "' should not be null.");
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/logging/src/com/nokia/helium/logger/ant/listener/StatusAndLogListener.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,367 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+package com.nokia.helium.logger.ant.listener;
+
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.apache.tools.ant.BuildEvent;
+import org.apache.tools.ant.BuildListener;
+import org.apache.tools.ant.SubBuildListener;
+import org.apache.tools.ant.Project;
+
+/**
+ * <code>StatusAndLogListener</code> implements {@link BuildListener} and
+ * listens to build events in particularly for activities such as ant logging
+ * and displaying build stage summary at the end of build process.
+ * 
+ */
+public class StatusAndLogListener implements BuildListener, SubBuildListener {
+    private static StatusAndLogListener self;
+    
+    private Vector<BuildEventHandler> buildHandlers = new Vector<BuildEventHandler>();
+    private Vector<TargetEventHandler> targetHandlers = new Vector<TargetEventHandler>();
+    private Vector<TaskEventHandler> taskHandlers = new Vector<TaskEventHandler>();
+    private Vector<MessageEventHandler> messageHandlers = new Vector<MessageEventHandler>();
+    private Vector<SubBuildEventHandler> subBuildHandlers = new Vector<SubBuildEventHandler>();
+    private Project project;
+    private Logger log = Logger.getLogger(getClass());
+
+    /**
+     * Default constructor
+     */
+    public StatusAndLogListener() {
+        self = this;
+    }
+
+    /**
+     * Signals that the last target has finished. This event will still be fired
+     * if an error occurred during the build.
+     * 
+     * @param event
+     *            An event with any relevant extra information. Must not be
+     *            <code>null</code>.
+     * 
+     * @see BuildEvent#getException()
+     */
+    public synchronized void buildStarted(BuildEvent event) {
+        project = event.getProject();
+        for (BuildEventHandler handler : buildHandlers) {
+            handler.handleBuildStarted(event);
+        }
+        
+    }
+    /**
+     * Signals that a build has started. This event is fired before any targets
+     * have started.
+     * 
+     * @param event
+     *            An event with any relevant extra information. Must not be
+     *            <code>null</code>.
+     */
+    public synchronized void buildFinished(BuildEvent event) {
+        for ( BuildEventHandler handler : buildHandlers ) {
+            handler.handleBuildFinished( event );
+        }
+    }
+    
+
+    /**
+     * Signals that a target is starting.
+     * 
+     * @param event
+     *            An event with any relevant extra information. Must not be
+     *            <code>null</code>.
+     * 
+     * @see BuildEvent#getTarget()
+     */
+    public synchronized void targetStarted(BuildEvent event) {
+        for (TargetEventHandler handler : targetHandlers) {
+            handler.handleTargetStarted(event);
+        }
+    }
+
+    /**
+     * Signals that a target has finished. This event will still be fired if an
+     * error occurred during the build.
+     * 
+     * @param event
+     *            An event with any relevant extra information. Must not be
+     *            <code>null</code>.
+     * 
+     * @see BuildEvent#getException()
+     */
+    public synchronized void targetFinished(BuildEvent event) {
+        for (TargetEventHandler handler : targetHandlers) {
+            handler.handleTargetFinished(event);
+        }
+    }
+
+    /**
+     * Signals that a task is starting.
+     * 
+     * @param event
+     *            An event with any relevant extra information. Must not be
+     *            <code>null</code>.
+     * 
+     * @see BuildEvent#getTask()
+     */
+    public synchronized void taskStarted(BuildEvent event) {
+        for (TaskEventHandler handler : taskHandlers) {
+            handler.handleTaskStarted(event);
+        }
+    }
+
+    /**
+     * Signals that a task has finished. This event will still be fired if an
+     * error occurred during the build.
+     * 
+     * @param event
+     *            An event with any relevant extra information. Must not be
+     *            <code>null</code>.
+     * 
+     * @see BuildEvent#getException()
+     */
+    public synchronized void taskFinished(BuildEvent event) {
+        for (TaskEventHandler handler : taskHandlers) {
+            handler.handleTaskFinished(event);
+        }
+    }
+    
+    /**
+     * Signals that a subbuild has started. This event is fired before any targets have started. 
+     * @param event
+     */
+    public synchronized void subBuildStarted(BuildEvent event) {
+        for (SubBuildEventHandler handler : subBuildHandlers) {
+            handler.handleSubBuildStarted(event);
+        }
+    }
+    
+    /**
+     * Signals that the last target has finished. This event will still be fired if an error occurred during the build. 
+     * @param event
+     */
+    
+    public synchronized void subBuildFinished(BuildEvent event) {
+        for (SubBuildEventHandler handler : subBuildHandlers) {
+            handler.handleSubBuildStarted(event);
+        }
+    }
+    
+    
+
+    /**
+     * Signals a message logging event.
+     * 
+     * @param event
+     *            An event with any relevant extra information. Must not be
+     *            <code>null</code>.
+     * 
+     * @see BuildEvent#getMessage()
+     * @see BuildEvent#getException()
+     * @see BuildEvent#getPriority()
+     */
+    public synchronized void messageLogged(BuildEvent event) {
+        for (MessageEventHandler handler : messageHandlers) {
+            handler.handleMessageLogged(event);
+        }
+    }
+
+    /**
+     * Register the given handler.
+     * 
+     * @param handler
+     *            is the handler to register
+     */
+    public synchronized void register ( Handler handler ) {
+        Vector<BuildEventHandler> tmpBuildHandlers = new Vector<BuildEventHandler>(buildHandlers);
+        tmpBuildHandlers.add( handler );
+        buildHandlers = tmpBuildHandlers;
+        Vector<TargetEventHandler> tmpTargetHandlers = new Vector<TargetEventHandler>(targetHandlers);
+        tmpTargetHandlers.add( handler );
+        targetHandlers  = tmpTargetHandlers;
+    }
+    
+    /**
+     * Register the given handler.
+     * 
+     * @param handler
+     *            is the handler to register
+     */
+    public synchronized void remove ( Handler handler ) {
+        Vector<BuildEventHandler> tmpBuildHandlers = new Vector<BuildEventHandler>(buildHandlers);
+        tmpBuildHandlers.remove( handler );
+        buildHandlers = tmpBuildHandlers;
+        Vector<TargetEventHandler> tmpTargetHandlers = new Vector<TargetEventHandler>(targetHandlers);
+        tmpTargetHandlers.remove( handler );
+        targetHandlers  = tmpTargetHandlers;
+    }
+
+    /**
+     * Register the given handler.
+     * 
+     * @param handler
+     *            is the handler to register
+     */
+    public synchronized void register ( BuildEventHandler handler ) {
+        Vector<BuildEventHandler> tmp = new Vector<BuildEventHandler>(buildHandlers);
+        tmp.add( handler );
+        buildHandlers = tmp;
+    }
+    
+    /**
+     * Remove the given handler.
+     * 
+     * @param handler
+     *            is the handler to register
+     */
+    public synchronized void remove ( BuildEventHandler handler ) {
+        Vector<BuildEventHandler> tmp = new Vector<BuildEventHandler>(buildHandlers);
+        tmp.remove( handler );
+        buildHandlers = tmp;
+    }
+    
+    /**
+     * Register the given handler.
+     * 
+     * @param handler
+     *            is the handler to register
+     */
+    public synchronized void register ( TargetEventHandler handler ) {
+        Vector<TargetEventHandler> tmp = new Vector<TargetEventHandler>(targetHandlers);
+        tmp.add( handler );
+        targetHandlers  = tmp;
+    }
+    
+    /**
+     * Remove the given handler.
+     * 
+     * @param handler
+     *            is the handler to register
+     */
+    public synchronized void remove ( TargetEventHandler handler ) {
+        Vector<TargetEventHandler> tmp = new Vector<TargetEventHandler>(targetHandlers);
+        tmp.remove( handler );
+        targetHandlers  = tmp;
+    }
+    
+    
+    /**
+     * Register the given SubBuildEventHandler.
+     * 
+     * @param handler
+     *            is the handler to register
+     */
+    public synchronized void register ( SubBuildEventHandler handler ) {
+        Vector<SubBuildEventHandler> tmp = new Vector<SubBuildEventHandler>(subBuildHandlers);
+        tmp.add( handler );
+        subBuildHandlers  = tmp;
+    }
+
+    /**
+     * Remove the given SubBuildEventHandler.
+     * 
+     * @param handler
+     *            is the handler to register
+     */
+    public synchronized void remove ( SubBuildEventHandler handler ) {
+        Vector<SubBuildEventHandler> tmp = new Vector<SubBuildEventHandler>(subBuildHandlers);
+        tmp.remove( handler );
+        subBuildHandlers  = tmp;
+    }
+
+    /**
+     * Register the given MessageEventHandler.
+     * 
+     * @param handler
+     *            is the handler to register
+     */
+    public synchronized void register ( MessageEventHandler handler ) {
+        Vector<MessageEventHandler> tmp = new Vector<MessageEventHandler>(messageHandlers);
+        tmp.add( handler );
+        messageHandlers  = tmp;
+    }
+    
+    /**
+     * Remove the given MessageEventHandler.
+     * 
+     * @param handler
+     *            is the handler to register
+     */
+    public synchronized void remove ( MessageEventHandler handler ) {
+        Vector<MessageEventHandler> tmp = new Vector<MessageEventHandler>(messageHandlers);
+        tmp.remove( handler );
+        messageHandlers  = tmp;
+    }
+
+    /**
+     * Register the given TaskEventHandler.
+     * 
+     * @param handler
+     *            is the handler to register
+     */
+    public synchronized void register ( TaskEventHandler handler ) {
+        Vector<TaskEventHandler> tmp = new Vector<TaskEventHandler>(taskHandlers);
+        tmp.add( handler );
+        taskHandlers  = tmp;
+    }
+    
+    /**
+     * Remove the given TaskEventHandler.
+     * 
+     * @param handler
+     *            is the handler to register
+     */
+    public synchronized void remove ( TaskEventHandler handler ) {
+        Vector<TaskEventHandler> tmp = new Vector<TaskEventHandler>(taskHandlers);
+        tmp.remove( handler );
+        taskHandlers  = tmp;
+    }
+
+
+    /**
+     * Return root project.
+     * @return
+     */
+    public Project getProject() {
+      return project;   
+    }
+    
+    /**
+     * Get the main StatusAndLogListener.
+     * @return
+     */
+    public static StatusAndLogListener getStatusAndLogListener() {
+        return self;
+    }
+    
+    /**
+     * Check and return required type handler.
+     * @param handlerType
+     * @return
+     */
+    public synchronized Handler getHandler(Class<?> handlerType) {
+        for (BuildEventHandler handler : buildHandlers) {
+            if (handlerType.isInstance(handler)) {
+                return (Handler)handler;
+            }
+        }
+        return null;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/logging/src/com/nokia/helium/logger/ant/listener/SubBuildEventHandler.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,41 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+package com.nokia.helium.logger.ant.listener;
+
+import org.apache.tools.ant.BuildEvent;
+
+/**
+ * <code>SubBuildEventHandler</code> is an interface which is used to handle
+ * the sub-build events which are of importance for ant logging and build
+ * stage summary display.
+ *
+ */
+public interface SubBuildEventHandler {
+
+    /**
+     * Method to handle SubBuild Started  events.
+     * @param event
+     */
+    void handleSubBuildStarted( BuildEvent event );
+    
+    /**
+     * Method to handle SubBuild Finished  events.
+     * @param event
+     */
+    void handleSubBuildFinished( BuildEvent event );
+    
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/logging/src/com/nokia/helium/logger/ant/listener/TargetEventHandler.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,44 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+package com.nokia.helium.logger.ant.listener;
+
+import org.apache.tools.ant.BuildEvent;
+
+/**
+ * <code>Handler</code> is an interface which is used to handle the build events
+ * which are of importance for ant logging and build stage summary display.
+ * 
+ *
+ */
+public interface TargetEventHandler {
+
+   /**
+     * Method to handle Target started Event
+     * 
+     * @param event
+     */
+    
+    void handleTargetStarted( BuildEvent event );
+  
+   /**
+    * Method to handle target finish events.
+    * 
+    * @param event is the build event to be handled. 
+    */
+    void handleTargetFinished( BuildEvent event );
+   
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/logging/src/com/nokia/helium/logger/ant/listener/TaskEventHandler.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,43 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+package com.nokia.helium.logger.ant.listener;
+
+import org.apache.tools.ant.BuildEvent;
+
+/**
+ * <code>Handler</code> is an interface which is used to handle the build events
+ * which are of importance for ant logging and build stage summary display.
+ * 
+ *
+ */
+public interface TaskEventHandler {
+
+   /**
+    * Method to handle Task Finished events.
+    * 
+    * @param event is the build event to be handled. 
+    */
+    void handleTaskFinished( BuildEvent event );
+
+   /**
+    * Method to handle Task Started( events.
+    * 
+    * @param event is the build event to be handled. 
+    */
+    void handleTaskStarted( BuildEvent event );
+    
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/logging/src/com/nokia/helium/logger/ant/taskdefs/LogRecorder.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,368 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+
+
+package com.nokia.helium.logger.ant.taskdefs;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Hashtable;
+import java.util.Vector;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.apache.tools.ant.BuildEvent;
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.Task;
+import org.apache.tools.ant.types.EnumeratedAttribute;
+import org.apache.tools.ant.types.LogLevel;
+
+import com.nokia.helium.logger.ant.listener.AntLoggingHandler;
+import com.nokia.helium.logger.ant.listener.Handler;
+import com.nokia.helium.logger.ant.listener.RecorderEntry;
+import com.nokia.helium.logger.ant.listener.StatusAndLogListener;
+import com.nokia.helium.logger.ant.types.RecordFilter;
+import com.nokia.helium.logger.ant.types.RecordFilterSet;
+
+/**
+ * For recording ant logging output.
+ *  
+ * <pre>
+ *      &lt;hlm:record name="${build.log.dir}/${build.id}_test.log" action="start" append="false" backup="true" loglevel="info"&gt;
+ *           &lt;hlm:recordfilterset refid="recordfilter.config"/&gt;
+ *           &lt;hlm:recordfilter category="info" regexp="^INFO:" /&gt;
+ *      &lt;/hlm:record&gt;
+ *      
+ * </pre>
+ * 
+ * @ant.task name="Record" category="Logging".
+ *
+ */
+
+public class LogRecorder extends Task implements Handler {
+    
+    private static Hashtable<File, RecorderEntry> recorderEntries = new Hashtable<File, RecorderEntry>();
+    private File fileName;
+    private boolean append ;
+    private Boolean start ;
+    private boolean backup;
+    private String backupProperty;
+    private int loglevel = -1;
+    private boolean emacsMode ;
+    private Vector<RecordFilter> recordFilters = new Vector<RecordFilter>();
+    private Vector<RecordFilterSet> recordFilterSet = new Vector<RecordFilterSet>();
+    private Vector<String> regExpList = new Vector<String>();
+    
+    
+    /**
+     * Run by the task.
+     */
+    public void execute () {
+        if (StatusAndLogListener.getStatusAndLogListener() == null) {
+            log("The StatusAndLogListener is not available.", Project.MSG_WARN);
+            return;
+        }
+        AntLoggingHandler antLoggingHandler  = (AntLoggingHandler)StatusAndLogListener.getStatusAndLogListener().getHandler(AntLoggingHandler.class);
+        
+        /* To validate attributes passed. */
+        validateAttributes();
+        
+        /* to add regular filters */
+        addAllRecordFilters();
+        
+        
+        /* Init password/record filter and replace any unset properties */
+        initAndReplaceProperties();
+        
+        //Create the root folder path.
+        if (this.start && this.start.booleanValue() && this.backup) {
+            if (fileName.exists()) {
+                File backupFile;
+                try {
+                    backupFile = File.createTempFile(fileName.getName(), null, fileName.getParentFile());
+                    backupFile.delete();
+                    log("Backing up " + fileName + " as " + backupFile);
+                    if (!fileName.renameTo(backupFile)) {
+                        log("Error renaming the backup file.", Project.MSG_ERR);
+                    }
+                    if (backupFile.exists() && backupProperty != null) {
+                        getProject().setNewProperty(backupProperty, backupFile.getAbsolutePath());
+                    }
+                } catch (IOException e) {
+                    log("Error creating the backup file: " + e, Project.MSG_ERR);
+                }
+            }    
+        }
+        if (!fileName.getParentFile().exists()) {
+            fileName.getParentFile().mkdirs();
+        }
+
+        RecorderEntry recorder = getRecorder(fileName, getProject());
+        // set the values on the recorder
+        recorder.setMessageOutputLevel(loglevel);
+        recorder.setEmacsMode(emacsMode);
+        if (start != null) {
+            if (start.booleanValue()) {
+                if (antLoggingHandler != null) {
+                    if (antLoggingHandler.getCurrentStageName() != null) {
+                        antLoggingHandler.doLoggingAction(antLoggingHandler.getCurrentStageName(), false, "Stopping", this, getOwningTarget());
+                    } else {
+                        antLoggingHandler.doLoggingAction("default", false, "Stopping", this, getOwningTarget());
+                    }
+                }
+                recorder.reopenFile();
+                recorder.setRecordState(start.booleanValue());
+            } else {
+                recorder.setRecordState(start.booleanValue());
+                recorder.closeFile();
+                if (antLoggingHandler != null) {
+                    if (antLoggingHandler.getCurrentStageName() != null) {
+                        antLoggingHandler.doLoggingAction(antLoggingHandler.getCurrentStageName(), true, "Starting", this, getOwningTarget());
+                    } else {
+                        antLoggingHandler.doLoggingAction("default", true, "Starting", this, getOwningTarget());
+                    }
+                }
+            }
+        }
+        
+    }
+    /**
+     * To Validate is the fileName set for recording.
+     */
+    private void validateAttributes() {
+        if (fileName == null) {
+            throw new BuildException("filename attribute should be specified for helium recorder task.");
+        }
+        
+    }
+
+    /**
+     * Set the file name to record.
+     * @param fileName
+     * @ant.required
+     */
+    public void setName(File fileName) {
+        this.fileName = fileName;
+    }
+    
+    /**
+     * Return the fileName.
+     * @return
+     */
+    public File getName() {
+        return this.fileName;
+    }
+    
+    /**
+     * Set the append parameter.
+     * @param append
+     * @ant.not-required Default is false
+     */
+    public void setAppend(boolean append) {
+        this.append = append;
+    }
+    
+    
+    
+    /**
+     * Enable backup of 
+     * @param backup 
+     * @ant.not-required
+     */
+    public void setBackup(boolean backup) {
+        this.backup = backup;
+    }
+
+    /**
+     * Name of the property that will contains the backed up log.
+     * @param property a property name.
+     * @ant.not-required Only works if backup is true.
+     */
+    public void setBackupProperty(String property) {
+        this.backupProperty = property;
+    }
+    
+    /**
+     * Set logLevel to log the information.
+     * @param level
+     * @ant.not-required
+     */
+    public void setLoglevel(VerbosityLevelChoices level) {
+        loglevel = level.getLevel();
+    }
+    
+    /**
+     * Set the EmacsMode.
+     * @param emacsMode
+     * @ant.not-required
+     */
+    public void setEmacsMode(boolean emacsMode) {
+        this.emacsMode = emacsMode;
+    }
+    
+    /**
+     * Return the emacsMode.
+     * @return
+     */
+    public boolean getEmacsMode() {
+        return this.emacsMode;
+    }
+    
+    /**
+     * create the type of recorderfilter.
+     * @param logFilter
+     */
+    public void addRecordFilter(RecordFilter logFilter) {
+        if (!recordFilters.contains(logFilter)) {
+            recordFilters.add(logFilter);
+        }
+    }
+    
+    /**
+     * Create the type of recoderfilterset
+     * @param logFilterSet
+     */
+    public void addRecordFilterSet(RecordFilterSet logFilterSet) {
+        if (!recordFilterSet.contains(logFilterSet)) {
+            recordFilterSet.add(logFilterSet);
+        }
+    }
+    
+    /**
+     * Set the action of stop/start.
+     * @param action
+     * @ant.not-required
+     */
+    public void setAction(ActionChoices action) {
+        if (action.getValue().equalsIgnoreCase("start")) {
+            start = Boolean.TRUE;
+        } else {
+            start = Boolean.FALSE;
+        }
+    }
+    
+    /**
+     * To get the action state of current recorder.
+     * @return
+     */
+    public boolean getAction() {
+        return start.booleanValue();
+    }
+    
+    
+    /**
+     * A list of possible values for the <code>setAction()</code> method.
+     * Possible values include: start and stop.
+     */
+    public static class ActionChoices extends EnumeratedAttribute {
+        private static final String[] VALUES = {"start", "stop"};
+
+        /**
+         * @see EnumeratedAttribute#getValues()
+         */
+        /** {@inheritDoc}. */
+        public String[] getValues() {
+            return VALUES;
+        }
+    }
+    
+    /**
+     * To set the verbosity levels
+     * 
+     *
+     */
+    public static class VerbosityLevelChoices extends LogLevel {
+    }
+    
+    
+    /**
+     * To register the recorder entry
+     */
+    protected RecorderEntry getRecorder(File name, Project proj) {
+        RecorderEntry entry = recorderEntries.get(name);
+        if (entry == null) {
+            // create a recorder entry
+            entry = new RecorderEntry(name);
+            for (String regExp : regExpList) {
+                if (!regExp.equals("")) {
+                    String pattern = Pattern.quote(regExp);
+                    entry.addRegexp(pattern);
+                }
+            }
+            entry.openFile(append);
+            recorderEntries.put(fileName, entry);
+        }
+        return entry;
+    }
+    
+    /**
+     * Get all the recorderfilters from recorderfilterset refid.
+     */
+    public void addAllRecordFilters() {
+        for (RecordFilterSet recFilterSet : recordFilterSet ) {
+            recordFilters.addAll(recFilterSet.getAllFilters());
+        }
+    }
+    
+    public void handleBuildFinished(BuildEvent event) {
+        // TODO Auto-generated method stub
+
+    }
+
+    public void handleBuildStarted(BuildEvent event) {
+        // TODO Auto-generated method stub
+
+    }
+
+    public void handleTargetFinished(BuildEvent event) {
+        // TODO Auto-generated method stub
+    }
+
+    public void handleTargetStarted(BuildEvent event) {
+        // TODO Auto-generated method stub
+
+    }
+    
+    /**
+     * To init password and record filters. 
+     * Replace with values if any property values are unset.
+     */
+    public void initAndReplaceProperties() {
+        
+        Pattern pattern = null; 
+        Matcher match = null;
+        for (RecordFilter recordFilter : recordFilters) { 
+            if (recordFilter.getRegExp() == null) {
+                throw new BuildException("\"regexp\" attribute should not have null value for recordfilter");
+            }
+            if (recordFilter.getRegExp() != null) {
+                pattern = Pattern.compile("\\$\\{(.*)}");
+                match = pattern.matcher(recordFilter.getRegExp());
+                if (match.find()) {
+                    regExpList.add(getProject().replaceProperties(recordFilter.getRegExp()));
+                } else {
+                    regExpList.add(recordFilter.getRegExp());
+                }
+            }
+        }
+    }
+    
+    
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/logging/src/com/nokia/helium/logger/ant/taskdefs/LogReplace.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,79 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+package com.nokia.helium.logger.ant.taskdefs;
+
+import java.util.regex.Pattern;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.Task;
+
+import com.nokia.helium.logger.ant.listener.AntLoggingHandler;
+import com.nokia.helium.logger.ant.listener.StatusAndLogListener;
+
+/**
+ * To replace the property values with real values if the properties are not set at the begining of the build.
+ * 
+ * pre>
+ *      &lt;hlm:logreplace regexp="${property.not.set}"/&gt;
+ * </pre>
+ * 
+ * @ant.task name="logreplace" category="Logging".
+ */
+public class LogReplace extends Task {
+    
+    private String regExp;
+    
+    /**
+     * Run by the task.
+     */
+    
+    public void execute () {
+        if (StatusAndLogListener.getStatusAndLogListener() == null) {
+            this.log("The StatusAndLogListener is not available.", Project.MSG_WARN);
+            return;
+        }
+
+        AntLoggingHandler antLoggingHandler  = (AntLoggingHandler)StatusAndLogListener.getStatusAndLogListener().getHandler(AntLoggingHandler.class);
+        
+        if (regExp == null ) {
+            throw new BuildException ("'regexp' attribute should not be null.");
+        }
+        
+        if (antLoggingHandler != null) {
+            String pattern = Pattern.quote(regExp);
+            antLoggingHandler.addRegExp(pattern);
+        }
+    }
+
+    /**
+     * @param regExp the regExp to set
+     * @ant.required
+     */
+    public void setRegExp(String regExp) {
+        this.regExp = regExp;
+    }
+
+    /**
+     * @return the regExp
+     */
+    public String getRegExp() {
+        return regExp;
+    }
+    
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/logging/src/com/nokia/helium/logger/ant/taskdefs/TriggerLogger.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,53 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+package com.nokia.helium.logger.ant.taskdefs;
+
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.Task;
+
+import com.nokia.helium.logger.ant.listener.AntLoggingHandler;
+import com.nokia.helium.logger.ant.listener.StatusAndLogListener;
+import org.apache.log4j.Logger;
+
+/**
+ * This task is used to start the helium logging listener.
+ * @ant.task name="triggerlogger" category="Logging"
+ */
+public class TriggerLogger extends Task {
+    
+    private Logger log = Logger.getLogger(TriggerLogger.class);
+    
+    public void execute() {
+        log.debug("Registering Ant logging to StatusAndLogListener listener");
+        if (StatusAndLogListener.getStatusAndLogListener() == null) {
+            this.log("The StatusAndLogListener is not available.", Project.MSG_WARN);
+            return;
+        }
+        AntLoggingHandler antLoggingHandler = (AntLoggingHandler)StatusAndLogListener.getStatusAndLogListener().getHandler(AntLoggingHandler.class);
+        if (antLoggingHandler != null ) {
+            if (!antLoggingHandler.getLoggingStarted()) {
+                log.debug("Starting Logging using 'AntLoggingHandler' first time.");
+                antLoggingHandler.setLoggingStarted(true);
+            } else {
+                log.debug("'AntLoggingHandler' is already started logging.");
+            }
+        } else {
+            log.debug("Could not find the AntLoggingHandler instance.");
+        }
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/logging/src/com/nokia/helium/logger/ant/types/RecordFilter.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,76 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+package com.nokia.helium.logger.ant.types;
+
+import org.apache.tools.ant.types.DataType;
+
+/**
+ * Recorder Filter will be used to filter the ant logging output.
+ * 
+ *  To get the lines which matches the regular expression.
+ *  
+ * <pre>
+ *      &lt;hlm:recordfilter category="info" regexp="ERROR"/&gt;
+ *      &lt;hlm:recordfilter category="warn" regexp="^WARN"/&gt;
+ * </pre>
+ * 
+ * @ant.task name="Recordfilter" category="Logging".
+ *
+ */
+
+public class RecordFilter extends DataType {
+    
+    private String category;
+    private String regExp;
+    
+    
+    /**
+     * Set category.
+     * @param category
+     * @ant.not-required
+     */
+    public void setCategory(String category) {
+        this.category = category;
+    }
+    
+    /**
+     * Return the category.
+     * @return
+     */
+    public String  getCategory() {
+        return this.category;
+    }
+    
+    /**
+     * Sets the regExp.
+     * @param regExp
+     * @ant.required
+     */
+    public void setRegExp(String regExp) {
+        this.regExp = regExp;
+    }
+    
+    
+    /**
+     * get the regExp.
+     * @return
+     */
+    public String  getRegExp() {
+        return this.regExp;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/logging/src/com/nokia/helium/logger/ant/types/RecordFilterSet.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,87 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+package com.nokia.helium.logger.ant.types;
+
+import java.util.Vector;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.types.DataType;
+import org.apache.tools.ant.types.Reference;
+
+/**
+ * Recorder Filter set will be used to group the recorder filters to filter ant logging output.
+ * 
+ *  To get the lines which matches the regular expression.
+ *  
+ * <pre>
+ *      &lt;hlm:recordfilterset id="recordfilter.config"&gt;
+ *          &lt;hlm:recordfilter category="error" regexp="Hello" /&gt;
+ *          &lt;hlm:recordfilter category="warning" regexp="echo" /&gt;
+ *          &lt;hlm:recordfilter category="info" regexp="ERROR" /&gt;
+ *      &lt;/hlm:recordfilterset>
+ *      
+ * </pre>
+ * 
+ * @ant.task name="Recordfilterset" category="Logging".
+ *
+ */
+
+public class RecordFilterSet extends DataType {
+    
+    private Vector<RecordFilter> recordFilters = new Vector<RecordFilter>();
+    
+    public RecordFilterSet() {
+    }
+    
+    /**
+     * Add the recordefilter type into recordfilterset.
+     * @param logFilter
+     */
+    public void addRecordFilter(RecordFilter logFilter) {
+        if (!recordFilters.contains(logFilter)) {
+            recordFilters.add(logFilter);
+        }
+    }
+    
+    
+    /**
+     * return all the recorderfilters associated with current recorderfilterset.
+     * @return
+     */
+    public Vector<RecordFilter> getAllFilters() {
+        Vector<RecordFilter> allFilters = new Vector<RecordFilter>();
+        if (recordFilters.size() > 0) {
+            allFilters.addAll(recordFilters);
+            return allFilters;
+        }
+        Reference refId = getRefid();
+        Object filterSetObject = null;
+        if (refId != null) {
+            try {
+                filterSetObject = refId.getReferencedObject();
+            } catch ( Exception ex) {
+                throw new BuildException("Reference id of the record filter is not valid. " + ex.getMessage(), ex);
+            }
+            if (filterSetObject != null && filterSetObject instanceof RecordFilterSet) {
+                allFilters.addAll(((RecordFilterSet)filterSetObject).getAllFilters());
+                return allFilters;
+            }
+        }
+        return allFilters;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/logging/src/com/nokia/helium/logger/ant/types/Stage.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,106 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+package com.nokia.helium.logger.ant.types;
+
+import org.apache.tools.ant.types.DataType;
+
+
+/**
+ * A <code>Stage</code> is a Data type which stores Stage information.
+ * 
+ * <p>
+ * A Stage is defined by setting three attributes name, start and end targets, both should be a
+ * valid target name in the project.
+ * 
+ * <p>
+ * Usage:
+ * 
+ * <pre>
+ *      &lt;hlm:stage id="preparation" starttarget="stagetest" endtarget="stagetest"/&gt;              
+ * </pre>
+ *  
+ * @ant.task name="stage" category="Logging"
+ * 
+ */
+public class Stage extends DataType {
+
+    private String startTarget;
+    private String endTarget;
+
+    public Stage() {
+        
+    }
+    /**
+     * Get the starting point of this {@link Stage}.
+     * 
+     * @return the starting point of this {@link Stage}.
+     */
+    public String getStartTarget() {
+        return this.startTarget;
+    }
+
+    /**
+     * Set the starting target.
+     * 
+     * @param start
+     *            is the starting point to set.
+     * @ant.required
+     */
+    public void setStartTarget(String startTarget) {
+        this.startTarget = startTarget;
+    }
+
+    /**
+     * Get the end point of this {@link Stage}.
+     * 
+     * @return the end point of this {@link Stage}.
+     * 
+     */
+    public String getEndTarget() {
+        return this.endTarget;
+    }
+
+    /**
+     * Set the end target.
+     * 
+     * @param end
+     *            is the end point to set.
+     * @ant.required
+     */
+    public void setEndTarget(String endTarget) {
+        this.endTarget = endTarget;
+    }
+    
+    /**
+     * Check is the start target set to current target. 
+     * @param target
+     * @return
+     */
+    public boolean isStartTarget ( String target ) {
+        return this.startTarget.equals( target );
+    }
+    
+    /** Check is the end target set to current target.
+     * 
+     * @param target
+     * @return
+     */
+    public boolean isEndTarget ( String target ) {
+        return this.endTarget.equals( target );
+    }
+    
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/logging/src/com/nokia/helium/logger/ant/types/StageLogging.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,161 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+package com.nokia.helium.logger.ant.types;
+
+import java.io.File;
+
+import org.apache.tools.ant.types.DataType;
+import com.nokia.helium.logger.ant.listener.AntLoggingHandler;
+import com.nokia.helium.logger.ant.listener.StatusAndLogListener;
+import org.apache.log4j.Logger;
+
+/**
+ * A 'StageRecord' is a Data type which stores attributes for stage recording/logging.
+ * 
+ * 
+ * Usage:
+ * <pre>
+ * &lt;hlm:stagerecord id="record.default" defaultoutput="${build.log.dir}/${build.id}_main.ant.log" loglevel="info" append="false"/&gt;
+ *      
+ *                  
+ * &lt;hlm:stagerecord id="record.prep"  
+ *                  stagerefid="preparation" 
+ *                  output="${build.log.dir}/${build.id}_prep.ant.log" 
+ *                  loglevel="info"
+ *                  append="false"/&gt;
+ *                                  
+ * </pre>
+ * 
+ * 
+ * @ant.task name="stagerecord" category="Logging"
+ */
+public class StageLogging extends DataType {
+    
+    private static boolean isAntLoggerRegistered;
+    private String logLevel = "info";
+    private File logFile;
+    private File defaultLogFile;
+    private boolean append = true;
+    private String stageRefId;
+    private Logger log = Logger.getLogger(getClass());
+    
+    /**
+     * Constructor which will register the logging handler
+     */
+    public StageLogging () {
+        if (!isAntLoggerRegistered && StatusAndLogListener.getStatusAndLogListener() != null) {
+            log.debug("Registering stage record to the StatusAndLogListener listener");
+            StatusAndLogListener.getStatusAndLogListener().register(new AntLoggingHandler(getProject()));
+            isAntLoggerRegistered = true;
+        }
+    }
+    
+    /**
+     * Sets output log file name.
+     * @param output the file to log into
+     * @ant.required
+     */
+    
+    public void setOutput(File output) {
+        this.logFile = output;
+    }
+    
+    /**
+     * Returns output log file name.
+     * @return
+     */
+    
+    public File getOutput() {
+        return this.logFile;
+    }
+    
+    /**
+     * Sets log level for respective stage.
+     * @param logLevel
+     * @ant.not-required
+     */
+    
+    public void setLogLevel(String logLevel) {
+        this.logLevel = logLevel;
+    }
+    
+    /**
+     * Returns log level of respective stage.
+     * @return
+     */
+    
+    public String getLogLevel() {
+        return this.logLevel;
+    }
+    
+    /**
+     * Get the name of this StageRefID.
+     * 
+     * @return name of the Phase.
+     */
+    public String getStageRefID() {
+        return this.stageRefId;
+    }
+
+    /**
+     * Set the name of the StageRefID.
+     * 
+     * @param name
+     *            is the name to set.
+     * @ant.required
+     */
+    public void setStageRefId(String name) {
+        this.stageRefId = name;
+    }
+    
+    /**
+     * Return default ant log file name.
+     * @return
+     */
+    public File getDefaultOutput() {
+        return this.defaultLogFile;
+    }
+
+   /**
+    * Set the default ant log name.
+    * @param name
+    * @ant.required
+    */
+    public void setDefaultOutput(File name) {
+        this.defaultLogFile = name;
+    }
+    
+    /**
+     * Set append value.
+     * @param append
+     * @ant.not-required Default is true
+     */
+    public void setAppend(boolean append) {
+        this.append = append;
+    }
+    
+    /**
+     * Return the append value.
+     * @param append
+     * @return
+     */
+    public boolean getAppend() {
+        return this.append;
+    }
+    
+     
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/logging/src/com/nokia/helium/logger/ant/types/StageSummary.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,73 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+package com.nokia.helium.logger.ant.types;
+
+import java.io.File;
+
+import org.apache.log4j.Logger;
+import org.apache.tools.ant.types.DataType;
+
+import com.nokia.helium.logger.ant.listener.StageSummaryHandler;
+import com.nokia.helium.logger.ant.listener.StatusAndLogListener;
+
+/**
+ * <code>StageSummary</code> is a Data type when set a build summary is 
+ * displayed at the end of build process.
+ * 
+ * <pre>
+ * Usage:
+ *       &lt;hlm:stagesummary id=&quot;stage.summary&quot; 
+ *          template=&quot;${template.dir}\build_stages_summary.txt.ftl&quot;/&gt;
+ * </pre>
+ * 
+ * @ant.task name="stagesummary" category="Logging"
+ * 
+ */
+public class StageSummary extends DataType {
+
+    private static boolean isStageSummaryHandlerRegistered;
+    private File template;
+    private Logger log = Logger.getLogger(getClass());
+
+    public StageSummary () {
+        if ( !isStageSummaryHandlerRegistered && StatusAndLogListener.getStatusAndLogListener() != null) {
+            log.debug("Registering stage summary to the StatusAndLogListener listener");
+            StatusAndLogListener.getStatusAndLogListener().register( new StageSummaryHandler() );
+            isStageSummaryHandlerRegistered = true;
+        }
+    }
+    
+    /**
+     * Get the template used for displaying build stage summary.
+     * 
+     * @return the template to display build stage summary.
+     */
+    public File getTemplate () {
+        return template;
+    }
+
+    /**
+     * Set the template to be used for displaying build stage summary.
+     * 
+     * @param template
+     *            the template to set
+     * @ant.required           
+     */
+    public void setTemplate ( File template ) {
+        this.template = template;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/logging/src/templates/build_stages_summary.txt.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,35 @@
+<#--
+============================================================================ 
+Name        : build_stages_summary.txt.ftl 
+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:
+
+============================================================================
+--> 
+
+*** BUILD STAGE SUMMARY ***
+
+<#assign count = 0>
+<#list statusReports as report>
+<#assign count = count + 1>
+${count}) ${report["phaseName"]}
+${""?left_pad(2)} Start Time : ${report["startTime"]}
+${""?left_pad(2)} Duration   : ${report["duration"]}
+${""?left_pad(2)} Status     : ${report["status"]}
+<#if  report["status"] == "FAILED">
+${""?left_pad(2)} Reason     : ${report["reason"]}
+</#if>
+</#list>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/logging/tests/antunit/run-scenario.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : test_signaltask.ant.xml 
+Part of     : Helium AntLib
+
+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="run-scenario" >
+    <description>Helium Antlib logger macro.</description>
+
+    <target name="setUp">    
+        <tempfile property="temp.dir" suffix=".dir" />
+        <mkdir dir="${temp.dir}" />
+    </target>
+    
+    <target name="tearDown">
+        <delete dir="${temp.dir}" />
+    </target>
+    
+    <macrodef name="runScenario">
+        <attribute name="scenario" />
+        <attribute name="target" />
+        <sequential>
+            <exec osfamily="windows" executable="cmd" dir="${file.run-scenario}/../../scenarii/@{scenario}" failonerror="true">
+                <env key="ANT_ARGS" value="${env.ANT_ARGS} -listener com.nokia.helium.logger.ant.listener.StatusAndLogListener" />
+                <arg line="/c ..\build.bat @{target}" />
+                <arg value="-Dant.executor.class=com.nokia.helium.core.ant.HeliumExecutor" />
+                <arg value="-Dtemp.dir=${temp.dir}" />
+            </exec>
+            <exec osfamily="unix" executable="../bld.sh" dir="${file.run-scenario}/../../scenarii/@{scenario}" failonerror="true">
+                <env key="ANT_ARGS" value="${env.ANT_ARGS} -listener com.nokia.helium.logger.ant.listener.StatusAndLogListener" />
+                <arg line="@{target}" />
+                <arg value="-Dant.executor.class=com.nokia.helium.core.ant.HeliumExecutor" />
+                <arg value="-Dtemp.dir=${temp.dir}" />
+            </exec>
+        </sequential>
+    </macrodef>
+
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/logging/tests/antunit/test_recorder.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : test_signaltask.ant.xml 
+Part of     : Helium AntLib
+
+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="test-recorder" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
+    <description>Helium Antlib logger unittests.</description>
+    <property environment="env" />
+    <import file="run-scenario.ant.xml" />
+    
+    <target name="test-recorder">
+        <runScenario scenario="logger" target="test-recorder" />
+    </target>
+
+    <target name="test-recorder-append">
+        <runScenario scenario="logger" target="test-recorder-append" />
+    </target>
+
+    <target name="test-recorder-append-antcall">
+        <runScenario scenario="logger" target="test-recorder-append-antcall" />
+    </target>
+
+    <target name="test-recorder-backup">
+        <runScenario scenario="logger" target="test-recorder-backup" />
+    </target>
+    
+    <target name="test-recorder-filtering">
+        <runScenario scenario="logger" target="test-recorder-filtering" />
+    </target>
+    
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/logging/tests/antunit/test_stageslogging.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : test_signaltask.ant.xml 
+Part of     : Helium AntLib
+
+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="test-stage" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
+    <description>Helium Antlib Signal unittests.</description>
+    <import file="run-scenario.ant.xml" />
+    <property environment="env"/>
+ 
+    <target name="test-scenario-valid-build">
+        <runScenario scenario="valid_build" target="build" />
+    </target>
+
+    <target name="test-override-scenario">
+        <runScenario scenario="override_scenario" target="build" />
+        <au:assertFileDoesntExist file="${temp.dir}/main.ant.log" />
+        <au:assertFileDoesntExist file="${temp.dir}/stage2.ant.log" />
+        <au:assertFileExists file="${temp.dir}/main_override.ant.log" />
+        <au:assertFileExists file="${temp.dir}/stage1.ant.log" />
+        <au:assertFileExists file="${temp.dir}/stage2_override.ant.log" />
+
+        <loadfile property="main.log" srcFile="${temp.dir}/main_override.ant.log" />
+        <au:assertTrue message="main_override.ant.log content is invalid: Main log start step1">
+            <contains string="${main.log}" substring="Main log start step1" />
+        </au:assertTrue>
+        <au:assertTrue message="main_override.ant.log content is invalid: Main log start step2">
+            <contains string="${main.log}" substring="Main log start step2" />
+        </au:assertTrue>
+        <au:assertTrue message="main_override.ant.log content is invalid: Main log start step3">
+            <contains string="${main.log}" substring="Main log start step3" />
+        </au:assertTrue>
+        <au:assertTrue message="main_override.ant.log content is invalid: Main log start step4">
+            <contains string="${main.log}" substring="Main log start step4" />
+        </au:assertTrue>
+        <au:assertTrue message="main_override.ant.log content is invalid: Main log start step5">
+            <contains string="${main.log}" substring="Main log start step5" />
+        </au:assertTrue>
+        
+        <loadfile property="stage1.log" srcFile="${temp.dir}/stage1.ant.log" />
+        <au:assertTrue message="stage1.ant.log content is invalid: In stage1">
+            <contains string="${stage1.log}" substring="In stage1 (1)" />
+        </au:assertTrue>
+        <au:assertTrue message="stage1.ant.log content is invalid: In stage1">
+            <contains string="${stage1.log}" substring="In stage1 (2)" />
+        </au:assertTrue>
+        <loadfile property="stage2.log" srcFile="${temp.dir}/stage2_override.ant.log" />
+        <au:assertTrue message="stage2.ant.log content is invalid: In stage1">
+            <contains string="${stage2.log}" substring="In stage2 (1)" />
+        </au:assertTrue>
+        <au:assertTrue message="stage2.ant.log content is invalid: In stage1">
+            <contains string="${stage2.log}" substring="In stage2 (2)" />
+        </au:assertTrue>
+    </target>
+
+    <target name="test-build-failure">
+        <au:expectfailure>
+            <runScenario scenario="build_failure" target="build" />
+        </au:expectfailure>
+        <au:assertFileExists file="${temp.dir}/main.ant.log" />
+        <au:assertFileExists file="${temp.dir}/stage1.ant.log" />
+        <au:assertFileExists file="${temp.dir}/stage2.ant.log" />
+        <loadfile property="main.log" srcFile="${temp.dir}/main.ant.log" />
+        <au:assertTrue message="main.ant.log content is invalid: Main log start step1">
+            <contains string="${main.log}" substring="Main log start step1" />
+        </au:assertTrue>
+        <au:assertTrue message="main.ant.log content is invalid: Main log start step2">
+            <contains string="${main.log}" substring="Main log start step2" />
+        </au:assertTrue>
+        <au:assertTrue message="main.ant.log content is invalid: Main log start step3">
+            <contains string="${main.log}" substring="Main log start step3" />
+        </au:assertTrue>
+        <au:assertTrue message="main.ant.log content is invalid: Main log start step4">
+            <not>
+                <contains string="${main.log}" substring="Main log start step4" />
+            </not>
+        </au:assertTrue>
+        <au:assertTrue message="main.ant.log content is invalid: Main log start step5">
+            <not>
+                <contains string="${main.log}" substring="Main log start step5" />
+            </not>
+        </au:assertTrue>
+        <au:assertTrue message="main.ant.log content is invalid: BUILD FAILED">
+            <contains string="${main.log}" substring="BUILD FAILED" />
+        </au:assertTrue>
+
+        
+        <loadfile property="stage1.log" srcFile="${temp.dir}/stage1.ant.log" />
+        <au:assertTrue message="stage1.ant.log content is invalid: In stage1">
+            <contains string="${stage1.log}" substring="In stage1 (1)" />
+        </au:assertTrue>
+        <au:assertTrue message="stage1.ant.log content is invalid: In stage1">
+            <contains string="${stage1.log}" substring="In stage1 (2)" />
+        </au:assertTrue>
+        <loadfile property="stage2.log" srcFile="${temp.dir}/stage2.ant.log" />
+        <au:assertTrue message="stage2.ant.log content is invalid: In stage1">
+            <contains string="${stage2.log}" substring="In stage2 (1)" />
+        </au:assertTrue>
+        <au:assertTrue message="stage2.ant.log content is invalid: In stage1">
+            <not>
+                <contains string="${stage2.log}" substring="In stage2 (2)" />
+            </not>
+        </au:assertTrue>
+    </target>
+    
+    <target name="test-backup-scenario">
+        <runScenario scenario="override_scenario" target="build" />
+        <runScenario scenario="override_scenario" target="build" />
+        
+        <au:assertLogContains text="Backing up of"/>
+        <au:assertFileDoesntExist file="${temp.dir}/main.ant.log" />
+        <au:assertFileDoesntExist file="${temp.dir}/stage2.ant.log" />
+        <au:assertFileExists file="${temp.dir}/main_override.ant.log" />
+        <au:assertFileExists file="${temp.dir}/stage1.ant.log" />
+        <au:assertFileExists file="${temp.dir}/stage2_override.ant.log" />
+    </target>
+
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/logging/tests/bld.sh	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,23 @@
+#!/bin/bash
+
+#
+# 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: 
+#
+
+if [ -f ~/.bashrc ] ; then
+	. ~/.bashrc
+fi
+export TEMP="/tmp/$USER"
+ant $*
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/logging/tests/build.bat	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,25 @@
+@echo off
+
+rem
+rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+rem All rights reserved.
+rem This component and the accompanying materials are made available
+rem under the terms of the License "Eclipse Public License v1.0"
+rem which accompanies this distribution, and is available
+rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+rem
+rem Initial Contributors:
+rem Nokia Corporation - initial contribution.
+rem
+rem Contributors:
+rem
+rem Description: 
+rem
+
+setlocal
+if not defined JAVA_6_HOME (
+set TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
+) ELSE  set TESTED_JAVA=%JAVA_6_HOME%
+if exist %TESTED_JAVA% (set JAVA_HOME=%TESTED_JAVA%)
+ant %*
+endlocal
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/logging/tests/build.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : build.xml 
+Part of     : Helium AntLib
+
+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="helium-antlib-unittest" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
+    <description>Helium Antlib Logging unittests.</description>
+
+    <import file="${builder.dir}/java/test-macros.ant.xml"/>
+    <target name="unittest" depends="antunit" />
+    <taskdef resource="net/sf/antcontrib/antlib.xml"/>
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/logging/tests/build_stages_summary.txt.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,35 @@
+<#--
+============================================================================ 
+Name        : build_stages_summary.txt.ftl 
+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:
+
+============================================================================
+--> 
+
+*** BUILD STAGE SUMMARY ***
+
+<#assign count = 0>
+<#list statusReports as report>
+<#assign count = count + 1>
+${count}) ${report["phaseName"]}
+${""?left_pad(2)} Start Time : ${report["startTime"]}
+${""?left_pad(2)} Duration   : ${report["duration"]}
+${""?left_pad(2)} Status     : ${report["status"]}
+<#if  report["status"] == "FAILED">
+${""?left_pad(2)} Reason     : ${report["reason"]}
+</#if>
+</#list>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/logging/tests/prep-ccm-get-input.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : prep-ccm-get-input.ant.xml 
+Part of     : Helium AntLib
+
+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="prep-ccm-get-input" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
+    <description>Helium Antlib Logging unittests.</description>
+        
+    
+    <property environment="env"/>
+    
+    
+    <target name="prep-ccm-get-input" depends="get-synergy-password">
+        
+        <echo>synergy.password=${synergy.password}</echo>
+        <antcall target="prep">
+            <param name="display" value="Inside prep target for second time"/>
+        </antcall>
+        <hlm:record name="${build.log.dir}/${build.id}_init.log" action="start" loglevel="info">
+            <hlm:recordfilter category="synergy" regexp="${synergy.password}" />
+        </hlm:record>
+        <echo>synergy.password=${synergy.password}</echo>
+        
+        <hlm:record name="${build.log.dir}/${build.id}_init.log" action="stop" append="true" />
+        <antcall target="ccm-get-input"/>
+        
+    </target>
+    
+    <target name="prep">
+        <echo> Hello... Inside Prep target ${display}</echo>
+    </target>
+    
+    <target name="ccm-get-input">
+        <echo> Hello... Inside ccm-get-input target </echo>
+    </target>
+    
+    <target name="get-synergy-password">
+        <property name="synergy.password" value="ccmpassword"/>
+        <hlm:logreplace regexp="${synergy.password}"/>
+        <echo>synergy.password=${synergy.password}</echo>
+    </target>
+    
+
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/logging/tests/scenarii/bld.sh	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#
+# 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: 
+#
+
+if [ -f ~/.bashrc ] ; then
+	. ~/.bashrc
+fi
+ant $*
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/logging/tests/scenarii/build.bat	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,31 @@
+@echo off
+
+rem
+rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+rem All rights reserved.
+rem This component and the accompanying materials are made available
+rem under the terms of the License "Eclipse Public License v1.0"
+rem which accompanies this distribution, and is available
+rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+rem
+rem Initial Contributors:
+rem Nokia Corporation - initial contribution.
+rem
+rem Contributors:
+rem
+rem Description: 
+rem
+
+setlocal
+if not defined JAVA_6_HOME (
+set TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
+) ELSE  set TESTED_JAVA=%JAVA_6_HOME%
+if exist %TESTED_JAVA% (set JAVA_HOME=%TESTED_JAVA%)
+call ant %*
+if "%ERRORLEVEL%" neq "0" (goto error)
+endlocal
+goto :eof
+
+:error
+endlocal
+if "%OS%"=="Windows_NT" color 00
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/logging/tests/scenarii/build_failure/build.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : build.xml 
+Part of     : Helium AntLib
+
+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="helium-antlib-unittestvalid-build" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
+    <description>Helium Antlib Logging unittests.</description>
+    <property environment="env"/>
+    <property name="step1" value="1" />
+    <property name="step2" value="1" />
+        
+    <taskdef resource="com/nokia/helium/logger/ant/antlib.xml" uri="http://www.nokia.com/helium" />
+    
+    <hlm:stage id="stage1" starttarget="stage1" endtarget="stage1" />
+    <hlm:stage id="stage2" starttarget="stage2" endtarget="stage2" />
+    
+    <hlm:stagerecord id="record.default" defaultoutput="${temp.dir}/main.ant.log" loglevel="info" />
+    <hlm:stagerecord id="record.stage1"  stagerefid="stage1" output="${temp.dir}/stage1.ant.log" loglevel="info" />
+    <hlm:stagerecord id="record.stage2"  stagerefid="stage2" output="${temp.dir}/stage2.ant.log" loglevel="info" />
+
+    <target name="start-ant-log">
+        <hlm:triggerlogger/> 
+    </target>
+
+    <target name="build" depends="start-ant-log">
+        <echo>Main log start step1</echo>
+        <antcall target="stage1" />
+        <echo>Main log start step2</echo>
+        <antcall target="stage2" />
+        <echo>Main log start step3</echo>
+        <antcall target="stage1">
+            <param name="step1" value="2" />
+        </antcall>
+        <fail message="Testing build failure" />
+        <echo>Main log start step4</echo>
+        <antcall target="stage2">
+            <param name="step2" value="2" />
+        </antcall>
+        <echo>Main log start step5</echo>
+    </target>
+
+    <target name="stage1">
+        <echo>In stage1 (${step1})</echo>
+    </target>
+
+    <target name="stage2">
+        <echo>In stage2 (${step2})</echo>
+    </target>
+    
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/logging/tests/scenarii/logger/build.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : build.xml 
+Part of     : Helium AntLib
+
+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="test-recorder" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
+    <description>Helium Antlib logger unittests.</description>
+    
+    <target name="test-recorder">
+        <echo message="something to be not be recorded" />
+        <hlm:record name="${temp.dir}/record.log" action="start" />
+        <echo message="something to be recorded" />
+        <hlm:record name="${temp.dir}/record.log" action="stop" />
+        <echo message="something to be not be recorded" />
+ 
+        <loadfile property="message" srcFile="${temp.dir}/record.log" />
+        <au:assertTrue message="message not recorded">
+            <contains string="${message}" substring="something to be recorded" />
+        </au:assertTrue>
+    </target>
+
+    <target name="test-recorder-backup">
+        <echo message="something to be not be recorded" />
+        <hlm:record name="${temp.dir}/record.log" action="start" />
+        <echo message="something to be recorded 1st" />
+        <hlm:record name="${temp.dir}/record.log" action="stop" />
+        
+        <echo message="something to be not be recorded" />
+        <hlm:record name="${temp.dir}/record.log" action="start" backup="true" />
+        <echo message="something to be recorded 2nd" />
+        <hlm:record name="${temp.dir}/record.log" action="stop" />
+        
+        <echo message="something to be not be recorded" />
+        <hlm:record name="${temp.dir}/record.log" action="start" backup="true" backupProperty="backup.log"/>
+        <echo message="something to be recorded 3rd" />
+        <hlm:record name="${temp.dir}/record.log" action="stop" />
+        <echo message="something to be not be recorded" />
+ 
+        <au:assertFileExists file="${backup.log}" />
+        <au:assertFileExists file="${temp.dir}/record.log" />
+        <loadfile property="message" srcFile="${temp.dir}/record.log" />
+        <au:assertTrue message="3rd message should be recorded">
+            <contains string="${message}" substring="something to be recorded 3rd" />
+        </au:assertTrue>
+        <au:assertFalse message="1st message should not be recorded">
+            <contains string="${message}" substring="something to be recorded 1st" />
+        </au:assertFalse>
+        <au:assertFalse message="2nd message should not be recorded">
+            <contains string="${message}" substring="something to be recorded 2nd" />
+        </au:assertFalse>
+    </target>
+
+    <target name="test-recorder-append">
+        <echo message="something to be not be recorded" />
+        <hlm:record name="${temp.dir}/record.log" action="start" />
+        <echo message="something to be recorded" />
+        <hlm:record name="${temp.dir}/record.log" action="stop" />
+        <echo message="something to be not be recorded" />
+        <hlm:record name="${temp.dir}/record.log" action="start" append="true" />
+        <echo message="something else to be recorded" />
+        <hlm:record name="${temp.dir}/record.log" action="stop" />
+        <echo message="something to be not be recorded" />
+ 
+        <loadfile property="message" srcFile="${temp.dir}/record.log" />
+        <au:assertTrue message="message not recorded">
+            <contains string="${message}" substring="something to be recorded" />
+        </au:assertTrue>
+        <au:assertTrue message="second message not recorded">
+            <contains string="${message}" substring="something else to be recorded" />
+        </au:assertTrue>
+    </target>
+
+    <target name="antcall-record">
+        <hlm:record name="${temp.dir}/record.log" action="start" append="true" />
+        <echo message="${message}" />
+        <hlm:record name="${temp.dir}/record.log" action="stop" />        
+    </target>
+    
+    <target name="test-recorder-append-antcall">
+        <echo message="Antcall: something to be not be recorded" />
+        <antcall target="antcall-record">
+            <param name="message" value="something to be recorded" />
+        </antcall>
+        <echo message="Antcall: something to be not be recorded" />
+        <antcall target="antcall-record">
+            <param name="message" value="something else to be recorded" />
+        </antcall>
+        <echo message="Antcall: something to be not be recorded" />
+ 
+        <loadfile property="message" srcFile="${temp.dir}/record.log" />
+        <echo>${message}</echo>
+        <au:assertTrue message="Antcall: message not recorded">
+            <contains string="${message}" substring="something to be recorded" />
+        </au:assertTrue>
+        <au:assertTrue message="Antcall: second message not recorded">
+            <contains string="${message}" substring="something else to be recorded" />
+        </au:assertTrue>
+    </target>
+
+    <target name="test-recorder-filtering">
+        <hlm:record name="${temp.dir}/record.log" action="start" >
+            <hlm:recordfilter category="unix" regexp="badtext" />
+        </hlm:record>
+        <echo>Some sensitive test output badtext</echo>
+        <hlm:record name="${temp.dir}/record.log" action="stop"/>
+        <loadfile srcfile="${temp.dir}/record.log" property="message"/>
+        <au:assertTrue>
+            <contains string="${message}" substring="Some sensitive test output ********"/>
+        </au:assertTrue>
+    </target>
+
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/logging/tests/scenarii/override_scenario/build.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : build.xml 
+Part of     : Helium AntLib
+
+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="helium-antlib-unittestvalid-build" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
+    <description>Helium Antlib Logging unittests.</description>
+    <property environment="env"/>
+    <property name="step1" value="1" />
+    <property name="step2" value="1" />
+        
+    <taskdef resource="com/nokia/helium/logger/ant/antlib.xml" uri="http://www.nokia.com/helium" />
+    
+    <hlm:stage id="stage1" starttarget="stage1" endtarget="stage1" />
+    <hlm:stage id="stage2" starttarget="stage2" endtarget="stage2" />
+    
+    <hlm:stagerecord id="record.default" defaultoutput="${temp.dir}/main.ant.log" loglevel="info" append="true"/>
+    <hlm:stagerecord id="record.stage1"  stagerefid="stage1" output="${temp.dir}/stage1.ant.log" loglevel="info" append="false"/>
+    <hlm:stagerecord id="record.stage2"  stagerefid="stage2" output="${temp.dir}/stage2.ant.log" loglevel="info" append="false"/>
+
+    <!-- Overriding the configuration -->
+    <hlm:stagerecord id="record.default" defaultoutput="${temp.dir}/main_override.ant.log" loglevel="info" append="true"/>
+    <hlm:stagerecord id="record.stage2"  stagerefid="stage2" output="${temp.dir}/stage2_override.ant.log" loglevel="info" append="true"/>
+
+    <target name="start-ant-log">
+        <hlm:triggerlogger/> 
+    </target>
+
+    <target name="build" depends="start-ant-log">
+        <echo>Main log start step1</echo>
+        <antcall target="stage1" />
+        <echo>Main log start step2</echo>
+        <antcall target="stage2" />
+        <echo>Main log start step3</echo>
+        <antcall target="stage1">
+            <param name="step1" value="2" />
+        </antcall>
+        <echo>Main log start step4</echo>
+        <antcall target="stage2">
+            <param name="step2" value="2" />
+        </antcall>
+        <echo>Main log start step5</echo>
+    </target>
+
+    <target name="stage1">
+        <echo>In stage1 (${step1})</echo>
+    </target>
+
+    <target name="stage2">
+        <echo>In stage2 (${step2})</echo>
+    </target>
+    
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/logging/tests/scenarii/valid_build/build.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,259 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : build.xml 
+Part of     : Helium AntLib
+
+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="helium-antlib-unittestvalid-build" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
+    <description>Helium Antlib Logging unittests.</description>
+    <property environment="env"/>
+
+    <property name="stages.test.dir" location="${temp.dir}" />
+    <property name="template.dir" location="../src/templates" />
+    
+    <property name="build.log.dir" location="${stages.test.dir}/logs"/>
+    <property name="build.cache.log.dir" location="${stages.test.dir}/logs"/>
+    <property name="build.id" value="ant-logging-test"/>
+    <property name="build.log" value="${stages.test.dir}/logs/${build.id}_test.log"/>
+    <property name="display" value="Message for testing"/>
+    <import file="stages_config.ant.xml" />
+    
+    <target name="build">
+        <antcall target="test-stages"/>
+    </target>
+    
+    
+    <target name="run-stages">
+        <antcall target="start-ant-log"/>
+        <antcall target="para-test7"/>
+        <hlm:record name="${build.log.dir}/${build.id}_recorder.log" action="start" loglevel="info" backup="false">
+            <hlm:recordfilterset refid="recordfilter.config"/>
+            <hlm:recordfilter category="unix" regexp="${unix.password}" />
+            <hlm:recordfilter category="synergy" regexp="synergy" />
+        </hlm:record>
+        <antcall target="para-test7"/>
+        <echo> chekcsyn value = synergy </echo>
+        <hlm:record name="${build.log.dir}/${build.id}_recorder.log" action="stop" append="true" />
+        
+        <antcall target="hello-test"/>
+        <antcall target="compile-dfs"/>
+        <antcall target="para-test7"/>
+        <antcall target="compile-nonhw"/>
+        
+        <antcall target="start-end"/>
+        
+        <ant antfile="prep-ccm-get-input.ant.xml" target="prep-ccm-get-input">
+            <property name="display" value="First time i am going in"/>
+        </ant> 
+        
+        <antcall target="parallel-test"/>
+    </target>
+    
+    <target name="compile" depends="creatbom,get-password"/>
+    
+    
+    <hlm:recordfilterset id="recordfilter.config">
+        <hlm:recordfilter category="info" regexp="ERROR" />
+    </hlm:recordfilterset>
+    
+    <target name="temp">
+        <echo> Inside the temp target </echo>
+    </target>
+    
+    <target name="compile-dfs">
+        <antcall target="compile">
+            <param name="display" value="First time in compile target"/>
+        </antcall>
+    </target>
+    <target name="compile-nonhw" >
+        <antcall target="compile">
+            <param name="display" value="second time in compile target"/>
+        </antcall>
+    </target>
+    
+    <target name="hello-test" depends="temp,get-password">
+        
+        <hlm:record name="${build.log.dir}/${build.id}_stagetest.log" action="start" loglevel="info">
+            <hlm:recordfilterset refid="recordfilter.config"/>
+            <hlm:recordfilter category="unix" regexp="${unix.password}" />
+            <hlm:recordfilter category="synergy" regexp="synergy" />
+        </hlm:record>
+        
+        <antcall target="stagetest">
+            <param name="display" value="Inside stage test for second time grace INFO"/>
+        </antcall>
+        
+        <hlm:record name="${build.log.dir}/${build.id}_stagetest.log" action="stop" append="true" />
+        
+        <property name="ats.password" value="password"/>
+        <hlm:logreplace regexp="${ats.password}"/>
+        <echo>ats-password = ${ats.password}</echo>
+        
+        <antcall target="hello"/>
+        
+    </target>
+    
+    <target name="stagetest" >
+        <echo> Hello... inside stagetest target ${display}</echo>
+    </target>
+    
+    <target name="creatbom">
+        <echo> Hello... inside creatbom target ${display}</echo>
+    </target>
+    
+    <target name="hello">
+        <echo> Hello... inside hello target ${display} </echo>
+    </target>
+    
+    <target name="recorder">
+        <echo> Hello... inside recorder target </echo>
+    </target>
+    
+    <target name="get-password">
+        <echo> Inside the get-password target </echo>
+        <property name="unix.password" value="something"/>
+        <hlm:logreplace regexp="${unix.password}"/>
+    </target>
+    
+    <target name="start-ant-log">
+        <hlm:triggerlogger/> 
+    </target>
+    
+    <target name="start" depends="recorder,hello">
+        <antcall target="temp"/>
+    </target>
+    
+    
+    <target name="end" depends="creatbom">
+        <antcall target="temp"/>
+    </target>
+    
+    <target name="start-end" depends="start">
+        <echo> Ended start-end target</echo>
+        <antcall target="end"/>
+    </target>
+    
+    
+    <target name="parallel-test">
+        <parallel>
+            <sequential>
+                <antcall target="para-test4"/>
+                <antcall target="para-test-record"/>
+            </sequential>
+            <antcall target="para-test7"/>
+            <antcall target="paratest"/>
+        </parallel>
+    </target>
+    
+    <target name="paratest" depends="para-test1,para-test2,para-test3"/>
+        
+    <target name="paratestrecord" depends="para-test5,para-test6"/>
+    
+    
+    <target name="para-test1">
+        <echo>Inside para-test1 </echo>
+    </target>
+    
+    <target name="para-test2">
+        <echo>Inside para-test2 </echo>
+    </target>
+    
+    <target name="para-test3">
+        <echo>Inside para-test3 </echo>
+    </target>
+    
+    <target name="para-test-record">
+        <hlm:record name="${build.log.dir}/${build.id}_paratestrecord.log" action="start" loglevel="info"/>
+        <antcall target="paratestrecord"/>
+        <hlm:record name="${build.log.dir}/${build.id}_paratestrecord.log" append="true" action="stop" loglevel="info"/>
+    </target>
+    
+    <target name="para-test4">
+        <echo>Inside para-test4 </echo>
+    </target>
+    
+    <target name="para-test5">
+        <echo>Inside para-test5 </echo>
+    </target>
+    
+    <target name="para-test6">
+        <echo>Inside para-test6 </echo>
+    </target>
+    
+    <target name="para-test7">
+        <echo>Inside para-test7 </echo>
+    </target>
+
+    
+    <target name="test-stages" depends="clean-up,run-stages">    
+        <au:assertFileExists file="${build.log.dir}/${build.id}_main.ant.log"/>
+        <au:assertFileExists file="${build.log.dir}/${build.id}_prep.ant.log"/>
+        <au:assertFileExists file="${build.log.dir}/${build.id}_compile.ant.log"/>
+        <au:assertFileExists file="${build.log.dir}/${build.id}_stagetest.log"/>
+        <au:assertFileExists file="${build.log.dir}/${build.id}_post.ant.log"/>
+        <au:assertFileExists file="${build.log.dir}/${build.id}_init.log"/>
+        <au:assertFileExists file="${build.log.dir}/${build.id}_recorder.log"/>
+        <au:assertFileExists file="${build.log.dir}/${build.id}_startend.ant.log"/>
+        
+        <loadfile srcfile="${build.log.dir}/${build.id}_stagetest.log" property="recordfilter.task.log">
+            <filterchain>
+                <linecontainsregexp>
+                    <regexp pattern="ERROR"/>
+                </linecontainsregexp>
+            </filterchain>
+        </loadfile>
+        <au:assertTrue message="record task is not doing the record filtering">
+            <not>
+                <isset property="recordfilter.task.log"/>
+            </not>
+        </au:assertTrue>
+        
+        <loadfile srcfile="${build.log.dir}/${build.id}_stagetest.log" property="passwordfilter.task.log">
+            <filterchain>
+                <linecontainsregexp>
+                    <regexp pattern="synergy"/>
+                </linecontainsregexp>
+            </filterchain>
+        </loadfile>
+        <au:assertTrue message="record task is not doing the password filtering">
+            <not>
+                <isset property="passwordfilter.task.log"/>
+            </not>
+        </au:assertTrue>
+        
+        <loadfile srcfile="${build.log.dir}/${build.id}_stagetest.log" property="passwordfilter.log">
+            <filterchain>
+                <linecontainsregexp>
+                    <regexp pattern="something"/>
+                </linecontainsregexp>
+            </filterchain>
+        </loadfile>
+        <au:assertTrue message="record task is not doing the password filtering">
+            <not>
+                <isset property="passwordfilter.log"/>
+            </not>
+        </au:assertTrue>
+    
+    </target>
+    
+    <target name="clean-up">
+        <delete dir="${build.log.dir}"/>
+    </target>
+
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/logging/tests/scenarii/valid_build/build_stages_summary.txt.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,35 @@
+<#--
+============================================================================ 
+Name        : build_stages_summary.txt.ftl 
+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:
+
+============================================================================
+--> 
+
+*** BUILD STAGE SUMMARY ***
+
+<#assign count = 0>
+<#list statusReports as report>
+<#assign count = count + 1>
+${count}) ${report["phaseName"]}
+${""?left_pad(2)} Start Time : ${report["startTime"]}
+${""?left_pad(2)} Duration   : ${report["duration"]}
+${""?left_pad(2)} Status     : ${report["status"]}
+<#if  report["status"] == "FAILED">
+${""?left_pad(2)} Reason     : ${report["reason"]}
+</#if>
+</#list>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/logging/tests/scenarii/valid_build/prep-ccm-get-input.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : prep-ccm-get-input.ant.xml 
+Part of     : Helium AntLib
+
+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="prep-ccm-get-input" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
+    <description>Helium Antlib Logging unittests.</description>
+        
+    
+    <property environment="env"/>
+    
+    
+    <target name="prep-ccm-get-input" depends="get-synergy-password">
+        
+        <echo>synergy.password=${synergy.password}</echo>
+        <antcall target="prep">
+            <param name="display" value="Inside prep target for second time"/>
+        </antcall>
+        <hlm:record name="${build.log.dir}/${build.id}_init.log" action="start" loglevel="info">
+            <hlm:recordfilter category="synergy" regexp="${synergy.password}" />
+        </hlm:record>
+        <echo>synergy.password=${synergy.password}</echo>
+        
+        <hlm:record name="${build.log.dir}/${build.id}_init.log" action="stop" append="true" />
+        <antcall target="ccm-get-input"/>
+        
+    </target>
+    
+    <target name="prep">
+        <echo> Hello... Inside Prep target ${display}</echo>
+    </target>
+    
+    <target name="ccm-get-input">
+        <echo> Hello... Inside ccm-get-input target </echo>
+    </target>
+    
+    <target name="get-synergy-password">
+        <property name="synergy.password" value="ccmpassword"/>
+        <hlm:logreplace regexp="${synergy.password}"/>
+        <echo>synergy.password=${synergy.password}</echo>
+    </target>
+    
+
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/logging/tests/scenarii/valid_build/stages_config.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : stages_config.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="stages-config" xmlns:hlm="http://www.nokia.com/helium">
+    <description>
+    Definitions of helium stages. 
+    </description>
+    
+    <taskdef resource="com/nokia/helium/logger/ant/antlib.xml" uri="http://www.nokia.com/helium" />
+    
+    <dirname property="logging.test.project.dir" file="${ant.file.stages-config}" />
+    
+    <hlm:stagesummary id="stage.summary" template="build_stages_summary.txt.ftl" />
+
+    <hlm:stage id="preparation" starttarget="hello-test" endtarget="hello-test"/>
+    <hlm:stage id="compile" starttarget="compile" endtarget="compile"/>
+    <hlm:stage id="post" starttarget="prep-ccm-get-input" endtarget="prep-ccm-get-input"/>
+    <hlm:stage id="startend" starttarget="start" endtarget="end"/>
+    <hlm:stage id="paralleltest" starttarget="paratest" endtarget="paratest"/>
+    
+    <hlm:stagerecord id="record.default" defaultoutput="${build.log.dir}/${build.id}_main.ant.log" loglevel="info" append="false"/>
+    
+    <hlm:stagerecord id="record.prep"  stagerefid="preparation" output="${build.log.dir}/${build.id}_prep.ant.log" loglevel="info" append="false"/>
+    
+    <hlm:stagerecord id="record.compile"  stagerefid="compile" output="${build.log.dir}/${build.id}_compile.ant.log" loglevel="info" append="false"/>
+    
+    <hlm:stagerecord id="record.post"  stagerefid="post" output="${build.log.dir}/${build.id}_post.ant.log" loglevel="info" append="false"/>
+    
+    <hlm:stagerecord id="record.startend"  stagerefid="startend" output="${build.log.dir}/${build.id}_startend.ant.log" loglevel="info" append="false"/>
+    
+    <hlm:stagerecord id="record.paralleltest"  stagerefid="paralleltest" output="${build.log.dir}/${build.id}_paralleltest.ant.log" loglevel="info" append="false"/>
+    
+    
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/logging/tests/stages_config.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : stages_config.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="stages-config" xmlns:hlm="http://www.nokia.com/helium">
+    <description>
+    Definitions of helium stages. 
+    </description>
+    
+    <taskdef resource="com/nokia/helium/logger/ant/antlib.xml" uri="http://www.nokia.com/helium" />
+    
+    <dirname property="logging.test.project.dir" file="${ant.file.stages-config}" />
+    
+    <hlm:stagesummary id="stage.summary" template="${logging.test.project.dir}\build_stages_summary.txt.ftl" />
+
+    <hlm:stage id="preparation" starttarget="hello-test" endtarget="hello-test"/>
+    <hlm:stage id="compile" starttarget="compile" endtarget="compile"/>
+    <hlm:stage id="post" starttarget="prep-ccm-get-input" endtarget="prep-ccm-get-input"/>
+    <hlm:stage id="startend" starttarget="start" endtarget="end"/>
+    <hlm:stage id="paralleltest" starttarget="paratest" endtarget="paratest"/>
+    
+    <hlm:stagerecord id="record.default" defaultoutput="${build.log.dir}/${build.id}_main.ant.log" loglevel="info" append="false"/>
+    
+    <hlm:stagerecord id="record.prep"  stagerefid="preparation" output="${build.log.dir}/${build.id}_prep.ant.log" loglevel="info" append="false"/>
+    
+    <hlm:stagerecord id="record.compile"  stagerefid="compile" output="${build.log.dir}/${build.id}_compile.ant.log" loglevel="info" append="false"/>
+    
+    <hlm:stagerecord id="record.post"  stagerefid="post" output="${build.log.dir}/${build.id}_post.ant.log" loglevel="info" append="false"/>
+    
+    <hlm:stagerecord id="record.startend"  stagerefid="startend" output="${build.log.dir}/${build.id}_startend.ant.log" loglevel="info" append="false"/>
+    
+    <hlm:stagerecord id="record.paralleltest"  stagerefid="paralleltest" output="${build.log.dir}/${build.id}_paralleltest.ant.log" loglevel="info" append="false"/>
+    
+    
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/bld.bat	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,39 @@
+@echo off
+
+rem
+rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+rem All rights reserved.
+rem This component and the accompanying materials are made available
+rem under the terms of the License "Eclipse Public License v1.0"
+rem which accompanies this distribution, and is available
+rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+rem
+rem Initial Contributors:
+rem Nokia Corporation - initial contribution.
+rem
+rem Contributors:
+rem
+rem Description: 
+rem
+
+setlocal
+if not defined JAVA_6_HOME (
+set TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
+) ELSE  set TESTED_JAVA=%JAVA_6_HOME%
+if exist %TESTED_JAVA% (set JAVA_HOME=%TESTED_JAVA%)
+
+REM Configure Ant 
+if not defined TESTED_ANT_HOME (
+set TESTED_ANT_HOME=C:\Apps\ant_1.7
+) 
+if exist %TESTED_ANT_HOME% (set ANT_HOME=%TESTED_ANT_HOME%)
+
+call java -cp ".\..\..\bin\helium-checktools.jar" com.nokia.helium.checktools.HeliumToolsCheckerMain -config ".\..\..\builder\helium.basic.tools.config"
+if "%ERRORLEVEL%" neq "0" (goto errorstop)
+
+ant -lib ../../builder/antlibs %*
+endlocal
+
+:errorstop
+@echo *** Build aborted with error
+exit /b 1
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/build.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : build.xml 
+Part of     : Helium AntLib
+
+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="helium-metadata">
+    <description>Helium Antlib metadata build file.</description>
+    <property name="builder.dir" location="../../builder"/>
+    <property name="sf.source.root.dir" location="../../" />
+    <import file="${builder.dir}/java/macros.ant.xml"/>
+
+    <property name="name" value="metadata"/>
+
+</project>
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/ivy.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+============================================================================ 
+Name        : ivy.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:
+
+============================================================================  
+-->
+<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
+    <info
+        organisation="com.nokia.helium"
+        module="helium-metadata"
+        status="integration">
+  </info>
+  <dependencies>
+    <dependency name="helium-core" rev="latest.integration" conf="default" />
+    <dependency name="helium-jpa" rev="latest.integration" conf="default" />
+    <dependency org="org.sqlite" name="sqlitejdbc" rev="latest.integration" conf="default" />
+    <dependency org="bsh" name="bsh" rev="latest.integration" conf="default" />
+  </dependencies>
+</ivy-module>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/metadata.rst	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,152 @@
+.. index::
+  module: Configuring Metadata
+
+====================
+Configuring Metadata
+====================
+
+.. contents::
+
+This document describes the purpose of metadata and how is being used in helium and
+how it can be used by the customer.
+
+Overview
+========
+
+Metadata is process to find the errors, warnings from the output log differnt section of the build
+and store it to the database, which could be used during each stage of the build to process efficiently
+and send details to diamonds, used for signaling, and generating summary file.
+
+
+Metadata Details
+================
+
+1. Metadatarecord : Which is used to store the errors, warnings information to the database
+
+    1.1. It takes the metadatainput (the type of log parsing to be used), currently supported parsing are
+       
+       a. sbsmetadatainput - sbs log processing (based on xml processing)
+       
+       b. textmetadatainput - general text log processing (based on text processing)
+       
+       c. policylogmetadatainput - policy log output processing (based on xml processing)
+       
+       d. antlogmetadatainput - ant log output processing (based on text processing)
+       
+       e. abldlogmetadatainput - abld log output processing (based on text processing)
+       
+       Please see ant doc for more details on metadatarecord.
+
+   1.2 It takes the fileset containing list of log files
+   
+   1.3 It takes the metadata filter, list of regular expression for searching strings.
+   
+Metadata Filters
+================
+
+This document describes the usage of metadata filter to change the severity level during different stages of the build.
+
+Overview
+--------
+
+Metadata filters are set of regular expressions used to match the text of the build output and process the errors, categorize it,
+and used to generate the output for diamonds, summary file, email output. Predefined set of ids are defined for each stage of the
+build. For example for raptor compilation filter is defined as below,
+
+The default definition of filterset.sbs is
+
+.. code-block:: xml
+
+    <hlm:metadatafilterset id="filterset.sbs">
+        <metadatafilterset refid="filterset.common" />
+    </hlm:metadatafilterset>
+
+
+which is using the common definition which is,
+
+.. code-block:: xml
+
+    <hlm:metadatafilterset id="filterset.common">
+        <metadatafilterset filterfile="${helium.dir}/config/metadata_regex.csv" />
+    </hlm:metadatafilterset>
+
+
+The complete list of predefined ids for various stages of the build are defined in this file,
+
+helium/config/metadata_filter_config_default.xml
+
+Each ID can be overridden to provide additional regular expression to control the results of the build for different stages.
+
+Two ways to add the regular expressions
+---------------------------------------
+
+ - Adding more than one regular expression
+
+Define your own csv file and override it in your configuration as below (add this after importing helium.ant.xml file),
+
+.. code-block:: xml
+
+    <hlm:metadatafilterset id="filterset.sbs">
+        <metadatafilterset filterfile="${s60.config}/config/metadata_regex.csv" />
+    </hlm:metadatafilterset>
+
+ - Adding just one regular expression
+
+This can be done as below,
+
+.. code-block:: xml
+
+    <hlm:metadatafilterset id="filterset.sbs">
+      <metadatafilter priority="error" regex=".*Error\s*:\s+.*" description="sbs compilation error" />
+      <metadatafilterset filterfile="${helium.dir}/config/metadata_regex.csv" />
+    </hlm:metadatafilterset>
+
+Note
+----
+
+1. The order of metadatafilter / metadatafilterset is important, so the first one takes precedence than the second one.
+
+2. Order is also preserved in the csv file, the expressions which are defined first get precedence than the later one.
+
+3. All the regular expressions are JAVA patterns.
+         
+
+Usage in Helium
+===============
+
+Different build stages were processed and identified the type of output and added the metadatarecord
+task for each build stage and captured the output in the database. And after storing it, using fmpp 
+template the error information from database are processed to send to diamonds, raised signal accordingly.
+
+Usage
+=====
+
+Examples:
+    SBS comilation output in db:
+
+.. code-block:: xml
+    
+    <hlm:metadatarecord database="${metadata.dbfile}">
+        <hlm:sbsmetadatainput cleanLogFile="${sbs.clean.log.file}">
+            <fileset casesensitive="false" file="${sbs.log.file}"/>
+            <metadatafilterset refid="filterset.sbs" />
+        </hlm:sbsmetadatainput>
+    </hlm:metadatarecord>
+
+This example is to process sbs output. The metadatainput is sbsmetadatainput to process the sbs log file, takes the sbs.log.file
+uses the regular expression defined by filterset.sbs
+
+.. code-block:: xml
+
+    <hlm:metadatarecord database="${metadata.dbfile}">
+        <hlm:abldmetadatainput>
+            <fileset casesensitive="false" file="${build.log.dir}/${build.id}${cmaker.log.label}.export.cmaker.log" />
+            <metadatafilterset refid="filterset.compile" />
+        </hlm:abldmetadatainput>
+    </hlm:metadatarecord>
+
+This example process the cmaker output as abld output log. It takes abldmetadatainput as metadatainput
+and the logfile as ${build.log.dir}/${build.id}${cmaker.log.label}.export.cmaker.log and the regular
+expression is used from the reference filterset.compile.
+
+Similarly any of the log output file can be easily processed in a similar way.
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/src/com/nokia/helium/metadata/MetaDataInput.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2007-2008 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:
+ *
+ */
+
+package com.nokia.helium.metadata;
+
+import java.util.Iterator;
+import com.nokia.helium.jpa.entity.metadata.Metadata;
+
+
+
+/**
+ * Interface to add any plugins to write the database. Two ways to get
+ * the data, either the entire data could written by calling getEntries() method
+ * or using Iterator for large amount of entries to be written to the database. 
+ */
+public interface MetaDataInput {
+    
+    /**
+     * 
+     *  @param fileSet fileset to be added
+     * 
+     */
+    Iterator<Metadata.LogEntry> iterator();
+    
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/src/com/nokia/helium/metadata/ORMFMPPLoader.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,269 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+package com.nokia.helium.metadata;
+
+import java.io.File;
+import java.util.List;
+import java.util.Map;
+import java.util.ArrayList;
+import fmpp.Engine;
+import fmpp.tdd.DataLoader;
+import freemarker.template.TemplateCollectionModel;
+import freemarker.template.TemplateModel;
+import freemarker.template.TemplateHashModel;
+import freemarker.template.TemplateSequenceModel;
+import freemarker.template.SimpleScalar;
+import freemarker.template.SimpleNumber;
+import freemarker.template.TemplateModelIterator;
+import com.nokia.helium.jpa.ORMReader;
+import org.apache.log4j.Logger;
+import freemarker.ext.beans.BeanModel;
+import freemarker.ext.beans.BeansWrapper;
+import freemarker.ext.beans.ArrayModel;
+
+
+/**
+ * Utility class to access the data from the database and used by FMPP
+ * templates.
+ */
+public class ORMFMPPLoader implements DataLoader {
+    //private ResultSet rs;
+    private static final int READ_LIMIT = 20000;
+
+    private static Logger log = Logger.getLogger(ORMFMPPLoader.class);
+
+    private ORMReader reader;
+
+
+    /**
+     * @see fmpp.tdd.DataLoader#load(fmpp.Engine, java.util.List)
+     */
+    public Object load(Engine engine, List args) throws Exception {
+        //log.debug("args.size:" + args.size());
+        java.util.ListIterator iter = args.listIterator();
+        int argsSize = args.size();
+        if (argsSize < 1) {
+            throw new Exception("Input DB path should be provided to load into FMPP.");
+        }
+
+        
+        /*
+         * QueryModel (which supports hash, sequence, containers)
+         * arg[0] - dbpath
+         *  
+         */
+        return new ORMQueryModeModel((String) (args.get(0)));
+    }
+
+    private class ORMQueryModeModel implements TemplateHashModel {
+
+        private String dbPath;
+        public ORMQueryModeModel(String path) {
+            File actualPath = new File(path);
+            String fileName = actualPath.getName();
+            dbPath = new File(actualPath.getParent(), fileName.toLowerCase()).getPath();
+        }
+        
+        /*
+         * Gets the template model for the corresponding query
+         * @param query for which the model is returned.
+         * @return returns the template model for the query 
+         */
+        public QueryTemplateModel get(String mode) {
+            String retType = null;
+            String actualMode = mode;
+            //log.debug("mode: " + mode);
+            if (mode.startsWith("native")) {
+                String [] splitString = mode.split(":");
+                if (splitString.length == 2 ) {
+                    actualMode = splitString[0]; 
+                    retType = splitString[1];
+                    //log.debug("actualMode " + actualMode);
+                    //log.debug("retType " + retType);
+                }
+            }
+            
+            return new QueryTemplateModel(dbPath, actualMode, retType);
+        }
+        
+        public boolean isEmpty() {
+            return false;
+        }
+    }
+
+    /*
+     * Internal class to handle the sql query and returns the data in either
+     * hash or sequence or containers.
+     */
+    private class QueryTemplateModel implements TemplateHashModel {
+
+        private String dbPath;
+        
+        private String queryMode;
+        
+        private String returnType;
+        
+        private TemplateModel resultObject;
+        
+        public QueryTemplateModel(String path, String mode, String retType) {
+            dbPath = path;
+            queryMode = mode;
+            returnType = retType;
+        }
+
+        public TemplateModel get(String query) {
+            //log.debug("QueryTemplateModel: query" + query);
+            if (queryMode.equals("jpasingle")) {
+                //log.debug("query executing with single result mode");
+                resultObject = getModel((new ORMReader(dbPath)).executeSingleResult(query, returnType));
+            } else {
+                //log.debug("query executing with multiple result mode");
+                resultObject = new ORMQueryModel(new ORMReader(dbPath), query, queryMode, returnType); 
+            }
+            return resultObject;
+        }
+        
+        private TemplateModel getModel(Object result) {
+            return new ORMSequenceModel(result);
+        }
+
+        public boolean isEmpty() {
+            //log.debug("query hash isempty:");
+            return false;
+        }
+    }
+    
+    private class ORMSequenceModel implements TemplateSequenceModel {
+        private List ormList = new ArrayList();
+
+        @SuppressWarnings("unchecked")
+        public ORMSequenceModel(Object obj) {
+            ormList.add(obj);
+        }
+        public int size() {
+            return ormList.size();
+        }
+
+        public TemplateModel get(int index) {
+            //log.debug("ORMSequenceModel.get: index: " + index);
+            if (index < ormList.size()) {
+                Object obj = ormList.get(index);
+                if (obj instanceof String) {
+                    return new SimpleScalar((String)obj);
+                } else if (obj instanceof Number) {
+                    return new SimpleNumber((Number)obj);
+                } else if (obj == null) {
+                    return null;
+                } else {
+                    return new ORMObjectModel(obj);
+                }
+            }
+            return null;
+        }
+    }
+    
+    private class ORMQueryModel implements TemplateCollectionModel 
+         {
+        
+        private ORMReader ormReader;
+        private String queryType;
+        private String query;
+        private String returnType;
+
+        public ORMQueryModel (ORMReader reader, String queryString, String type, String retType) {
+            ormReader = reader;
+            queryType = type;
+            query = queryString;
+            returnType = retType;
+            //log.debug("ORMQueryModel: query" + query);
+        }
+        
+        /*
+         * Provides data via collection interface.
+         * @return the iterator model from which the data is accessed.
+         */
+        public TemplateModelIterator iterator() {
+            //log.debug("iterator constructor called");
+            return new ORMTemplateModelIterator(ormReader, query, queryType, returnType);
+        }
+        
+    }
+
+    /*
+     * Internal Iterator class which provides data as collection. 
+     */
+    private class ORMTemplateModelIterator implements TemplateModelIterator {
+        
+        private String query;
+        private List<Map<String, Object>> rowList;
+        private int currentOffsetIndex;
+        private String returnType;
+        private boolean nativeQuery;
+        private ORMReader ormReader;
+        
+        public ORMTemplateModelIterator(ORMReader reader, String queryString, String type, String retType) {
+            ormReader = reader;
+            query = queryString;
+            returnType = retType;
+            if (type.startsWith("native")) {
+                nativeQuery = true;
+            }
+            //log.debug("ORMTemplateModelIterator: query" + query);
+        }
+
+        /**
+         * {@inheritDoc}
+         */
+        @SuppressWarnings("unchecked")
+        public TemplateModel next() {
+            //log.debug("ORMTemplateModelIterator: next");
+            if (rowList != null) {
+                Object toRet = rowList.remove(0);
+                if (toRet != null && toRet.getClass().isArray()) {
+                    return new ArrayModel(toRet, new BeansWrapper());
+                }
+                return new ORMObjectModel(toRet);
+            }
+            return new ORMObjectModel(null);
+        }
+        
+        /**
+         * {@inheritDoc}
+         */
+        @SuppressWarnings("unchecked")
+        public boolean hasNext() {
+            if (rowList == null) {
+                    if (nativeQuery) {
+                        rowList = ormReader.executeNativeQuery(query, returnType);
+                    } else {
+                        rowList = ormReader.executeQuery(query);
+                    }
+            }
+            if (rowList == null) {
+                return false;
+            }
+            return rowList.size() != 0;
+        }
+    }
+    
+    private class ORMObjectModel extends BeanModel {
+        public ORMObjectModel(Object obj) {
+            super(obj, new BeansWrapper());
+        }
+        
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/src/com/nokia/helium/metadata/SQLFMPPLoader.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,257 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+package com.nokia.helium.metadata;
+
+import java.util.List;
+import java.util.Map;
+
+import fmpp.Engine;
+import fmpp.tdd.DataLoader;
+import freemarker.template.TemplateCollectionModel;
+import freemarker.template.TemplateModel;
+import freemarker.template.TemplateHashModel;
+import freemarker.template.TemplateSequenceModel;
+import freemarker.template.TemplateHashModelEx;
+import freemarker.template.SimpleHash;
+import freemarker.template.SimpleCollection;
+import freemarker.template.SimpleSequence;
+import freemarker.template.SimpleScalar;
+import freemarker.template.TemplateModelIterator;
+import com.nokia.helium.metadata.db.MetaDataDb;
+import org.apache.log4j.Logger;
+
+
+/**
+ * Utility class to access the data from the database and used by FMPP
+ * templates.
+ */ 
+public class SQLFMPPLoader implements DataLoader {
+    
+    //private ResultSet rs;
+    private static final int READ_LIMIT = 5000;
+
+    private static Logger log = Logger.getLogger(MetaDataDb.class);
+
+    private MetaDataDb metadataDb;
+
+
+    /**
+     * @see fmpp.tdd.DataLoader#load(fmpp.Engine, java.util.List)
+     */
+    public Object load(Engine engine, List args) throws Exception {
+        //log.debug("args.size:" + args.size());
+        java.util.ListIterator iter = args.listIterator();
+        int argsSize = args.size();
+        if (argsSize < 1) {
+            throw new Exception("Input DB path should be provided to load into FMPP.");
+        }
+
+        /* arg[0] - dbpath
+         */
+        metadataDb = new MetaDataDb((String) (args.get(0)));
+        
+        /*
+         * QueryModel (which supports hash, sequence, containers)
+         *  
+         */
+        return new QueryModel();
+    }
+
+    /*
+     * Internal class to handle the sql query and returns the data in either
+     * hash or sequence or containers.
+     */
+    private class QueryModel implements TemplateHashModel {
+
+        /*
+         * Gets the template model for the corresponding query
+         * @param query for which the model is returned.
+         * @return returns the template model for the query 
+         */
+        public TemplateModel get(String query) {
+            //log.debug("QueryModel:" + query);
+            return new QueryTemplateModel(query);
+        }
+
+        /*
+         * This model will not be empty as new object is returned. So false is returned.
+         */
+        public boolean isEmpty() {
+            return false;
+        }
+    }
+
+    /*
+     * Template model makes request to metadata db class to get the data and present it
+     * based on hash, sequence or containers.
+     * Todo: avoid the calling of checkAndReadData for each of the function.
+     */    
+    private class QueryTemplateModel implements TemplateCollectionModel, TemplateHashModelEx,
+        TemplateSequenceModel {
+        
+        private Map<String, List<String>> indexMap;
+        private String query;
+        private boolean isDataRead;
+
+        /*
+         * Constructor for the query model
+         * @param query for which the template model needs to be returned.
+         */
+        public QueryTemplateModel(String query) {
+            //log.debug("query in SQLTemplateModel" + query);
+            this.query = query;
+        }
+
+        /*
+         * HashModel interface. When the template requests as hash then 
+         * @param query for which the template model needs to be returned.
+         */
+        public TemplateModel get(String key) {
+            checkAndReadData();
+            //log.debug("QueryModel:" + key);
+            List<String> dataList = indexMap.get(key);
+            //log.debug("datalist size" + dataList.size());
+            if (dataList.size() ==  1 ) {
+                return new SimpleScalar((String)dataList.get(0));
+            }
+            return new SimpleSequence(dataList);
+        }
+
+        /*
+         * Read the data from database if it is not done already. Used
+         * by hash and sequence model only. 
+         */
+        private void checkAndReadData() {
+            if (!isDataRead) {
+                //log.debug("isDataRead:" + isDataRead);
+                isDataRead = true;
+                indexMap = metadataDb.getIndexMap(query); 
+            }
+            //log.debug("indexmap size" + indexMap.size());
+        }
+
+        /*
+         * HashModel interface. When the template requests as hash then 
+         * data is read from memory and the keys are returned.
+         * @return the keys of the primary key data (currently column 1) 
+         * read from db
+         */
+        public TemplateCollectionModel keys() {
+            checkAndReadData();
+            return new SimpleCollection(indexMap.keySet());
+        }
+
+        /*
+         * Return the size of the records read from db
+         * @return the size of the db records.
+         */
+        public int size() {
+            checkAndReadData();
+            return indexMap.size();
+            
+        }
+
+        /*
+         * Gets the record on a particular index
+         * @return the record as hash model.
+         */
+        public TemplateModel get(int index) {
+            List<Map<String, Object>> rowList = metadataDb.getRecords(query);
+            return new SimpleHash(rowList.get(index));
+        }
+
+        /*
+         * Gets the record on a particular index
+         * @return the record as hash model.
+         */
+        public boolean isEmpty() {
+            checkAndReadData();
+            return indexMap == null;
+        }
+
+        /*
+         * Gets the record on a particular index
+         * @return the record as hash model.
+         */
+        public TemplateCollectionModel values() {
+            checkAndReadData();
+            return new SimpleCollection(indexMap.values());
+        }
+
+        /*
+         * Provides data via collection interface.
+         * @return the iterator model from which the data is accessed.
+         */
+        public TemplateModelIterator iterator() {
+            //log.debug("iterator constructor called");
+            return new SQLTemplateModelIterator(query);
+        }
+    }
+
+    /*
+     * Internal Iterator class which provides data as collection. 
+     */
+    private class SQLTemplateModelIterator implements TemplateModelIterator {
+        
+        private String query;
+        private List<Map<String, Object>> rowList;
+        private int currentOffsetIndex;
+        private int count;
+        private boolean finished;
+        
+        public SQLTemplateModelIterator(String query) {
+            this.query = query;
+        }
+        public TemplateModel next() {
+            SimpleHash simpleHash = null;
+            try {
+                //log.debug("checking any more element");
+                if (rowList != null && (count >= rowList.size())) {
+                    finished = true;
+                }
+                //log.debug("next:count:" + count);
+                simpleHash = new SimpleHash(rowList.get(count));
+                count ++;
+                return simpleHash;
+            } catch (Exception ex) {
+                // We are Ignoring the errors as no need to fail the build.
+                log.debug("Iteration exception", ex);
+            }
+            return null;
+        }
+
+        public boolean hasNext() {
+            if (rowList == null ||  READ_LIMIT <= count) {
+                if (!finished) {
+                    //log.debug("Getting records");
+                    rowList = metadataDb.getRecords(query, READ_LIMIT, currentOffsetIndex * READ_LIMIT);
+                    count = 0;
+                    //log.debug("rowList.size : " + rowList.size());
+                    if (rowList.size() == 0) {
+                        finished = true;
+                    }
+                    currentOffsetIndex ++;
+                }
+            }
+            int rowListSize = rowList.size(); 
+            if (rowListSize < READ_LIMIT && rowListSize == count) {
+                finished = true;
+            }
+            return !finished;
+        }
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/src/com/nokia/helium/metadata/ant/antlib.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : antlib.xml 
+Part of     : Helium AntLib
+
+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:
+
+============================================================================
+-->
+<antlib>
+    <!-- Task definition -->
+    <taskdef name="metadatarecord" classname="com.nokia.helium.metadata.ant.taskdefs.MetaDataRecord"/>
+    <taskdef name="metadatadelete" classname="com.nokia.helium.metadata.ant.taskdefs.MetaDataDelete"/>
+    <!-- Type definition -->
+    <typedef name="textmetadatainput" classname="com.nokia.helium.metadata.ant.types.TextLogMetaDataInput"/>
+    <typedef name="antmetadatainput" classname="com.nokia.helium.metadata.ant.types.AntLogMetaDataInput"/>
+    <typedef name="abldmetadatainput" classname="com.nokia.helium.metadata.ant.types.AbldLogMetaDataInput"/>
+    <typedef name="sbsmetadatainput" classname="com.nokia.helium.metadata.ant.types.SBSLogMetaDataInput"/>
+    <typedef name="policymetadatainput" classname="com.nokia.helium.metadata.ant.types.PolicyLogMetaDataInput"/>
+    <typedef name="metadatafilterset" classname="com.nokia.helium.metadata.ant.types.MetaDataFilterSet"/>
+    <typedef name="metadatafilter" classname="com.nokia.helium.metadata.ant.types.MetaDataFilter"/>
+    
+    <typedef name="metadataHasSeverity" classname="com.nokia.helium.metadata.ant.conditions.MetaDataLogCondition"/>
+    <typedef name="metadataCountSeverity" classname="com.nokia.helium.metadata.ant.taskdefs.MetaDataLogCount"/>
+</antlib>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/src/com/nokia/helium/metadata/ant/conditions/MetaDataLogCondition.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,116 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+
+package com.nokia.helium.metadata.ant.conditions;
+
+import java.io.File;
+import com.nokia.helium.jpa.ORMReader;
+import com.nokia.helium.jpa.entity.metadata.Metadata;
+import org.apache.tools.ant.BuildException;
+import com.nokia.helium.core.ant.types.ConditionType;
+
+/**
+ * This class implements a Ant Condition which report true if it finds any
+ * matching severity inside a database for an XML log.
+ * 
+ * Example:
+ * <pre>
+ * &lt;target name=&quot;fail-on-build-error&quot;&gt;
+ *   &lt;fail message=&quot;The build contains errors&quot;&gt;
+ *     &lt;hlm:metadataHasSeverity log=&quot;my.log&quot; db=&quot;my.db&quot; severity=&quot;error&quot;/&gt;
+ *   &lt;/fail&gt;
+ * &lt;/target&gt;
+ * </pre>
+ * 
+ * The condition will eval as true if the my.db contains error stored for my.log file.
+ * 
+ * @ant.type name="metadataHasSeverity" category="Metadata"
+ */
+public class MetaDataLogCondition extends ConditionType {
+
+    // The severity to count
+    private String severity;
+    private String logFile;
+    private File fileName;
+    
+    /**
+     * Sets which severity will be counted.
+     * 
+     * @param severity
+     * @ant.required
+     */
+    public void setSeverity(String severity) {
+        this.severity = severity;
+    }
+
+    public void setDb(File file) {
+        fileName = file;
+    }
+    
+    public void setLog(String log) {
+        logFile = log;
+    }
+
+    /**
+     * Get the number of a particular severity.
+     * 
+     * @return the number of a particular severity.
+     */
+    public int getSeverity() {
+        if (fileName == null || !fileName.exists() || logFile == null) {
+            //this.log("Error: Log file does not exist " + fileName);
+            return -1;
+        }
+        if (severity == null)
+            throw new BuildException("'severity' attribute is not defined");
+
+        //this.log("Looking for severity '" + severity + "' under '" + fileName.getAbsolutePath() + "'");
+        
+        Metadata.PriorityEnum prty = null;
+        if (severity.equalsIgnoreCase("ERROR")) {
+            prty = Metadata.PriorityEnum.ERROR;
+        } else if (severity.equalsIgnoreCase("WARNING")) {
+            prty = Metadata.PriorityEnum.WARNING;
+        } else if (severity.equalsIgnoreCase("FATAL")) {
+            prty = Metadata.PriorityEnum.FATAL;
+        } else if (severity.equalsIgnoreCase("INFO")) {
+            prty = Metadata.PriorityEnum.INFO;
+        } else if (severity.equalsIgnoreCase("REMARK")) {
+            prty = Metadata.PriorityEnum.REMARK;
+        }
+        else
+            throw new BuildException("'severity' attribute is not valid");
+
+        String query = "select Count(m.id) from MetadataEntry m JOIN  m.logFile  as l JOIN m.priority as p where l.path like '%" + logFile + "' and UPPER(p.priority) like '%" + severity.toUpperCase() + "'";
+        Number number = (Number) (new ORMReader(fileName.getAbsolutePath())).executeSingleResult(query, null);
+        return number.intValue();
+    }
+
+    /**
+     * This method open the defined file and count the number of message tags
+     * with their severity attribute matching the configured one.
+     * 
+     * @return if true if message with the defined severity have been found.
+     */
+    public boolean eval() {
+        int severity = getSeverity();
+        if (severity < 0) {
+            return false;
+        }
+        return severity > 0;
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/src/com/nokia/helium/metadata/ant/taskdefs/MetaDataDelete.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,130 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+
+package com.nokia.helium.metadata.ant.taskdefs;
+
+import org.apache.tools.ant.types.FileSet;
+
+import org.apache.tools.ant.DirectoryScanner;
+import org.apache.tools.ant.Task;
+import java.util.Vector;
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.log4j.Logger;
+import com.nokia.helium.metadata.db.*;
+
+/**
+ * This task provide a way to delete the data from db for a log file set.
+ * 
+ * <pre>
+ * Example 1:
+ * &lt;metadadelete database=&quot;compile_log.db&quot;&gt;
+ *     &lt;fileset casesensitive=&quot;false&quot; file=&quot;sbs.log.file&quot;/&gt
+ * &lt;/metadadelete&gt;
+ * </pre>
+ * 
+ * @ant.task name="metadatadelete" category="Metadata"
+ */
+public class MetaDataDelete extends Task {
+
+    private static Logger log = Logger.getLogger(MetaDataDelete.class);
+
+    private String database;
+    
+    private boolean failOnError = true;
+
+    private Vector<FileSet> fileSetList = new Vector<FileSet>();
+
+    /**
+     * Helper function to set the database parameter
+     * 
+     * @ant.required
+     */
+    public void setDatabase(String dbFile) {
+        database = dbFile;
+    }
+
+    public void setFailOnError(String failNotify) {
+        if (failNotify.equals("false")) {
+            failOnError = false;
+        }
+    }
+
+    /**
+     * Updates the list of filelist from the input fileset.
+     *  @param fileSetList input fileset list
+     *  @return the matched files including the base dir. 
+     */
+    private List<String> getFileListFromFileSet() {
+        List<String> fileList = new ArrayList<String>();
+        for (FileSet fs : fileSetList) {
+            DirectoryScanner ds = fs.getDirectoryScanner(getProject());
+            String[] includedFiles = ds.getIncludedFiles();
+            for ( String file : includedFiles ) {
+                fileList.add(file);
+                log.debug("includedfiles: " + file);
+            }
+        }
+        log.debug("fileList.size" + fileList.size());
+        return fileList;
+    }
+
+    /**
+     * Adds the fileset (list of input log files to be processed).
+     *  @param fileSet fileset to be added
+     * 
+     */
+    public void add(FileSet fileSet) {
+        fileSetList.add(fileSet);
+    }   
+
+    /**
+     * Helper function to get the database
+     * 
+     */
+    public String getDatabase() {
+        return database;
+    }
+
+    
+    @Override
+    public void execute() {
+        /*
+        MetaDataDb metadataDb = null;
+        try {
+            log.debug("Initializing DB: " + database + "to delete");
+            log("time before removing entries from db" + new Date());
+            metadataDb = new MetaDataDb(database);
+            metadataDb.removeEntries(getFileListFromFileSet());
+            log("time after removing entries from db" + new Date());
+        } catch (BuildException ex1) {
+            if (failOnError) {
+                throw ex1;
+            }
+        } catch (Exception ex) {
+            if (failOnError) {
+                throw new BuildException("Failed during writing data to db");
+            }
+        } finally {
+            log.debug("finalizing DB: " + database);
+            if (metadataDb != null) {
+                metadataDb.finalizeDB();
+            }
+        }
+        */
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/src/com/nokia/helium/metadata/ant/taskdefs/MetaDataLogCount.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,89 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+
+package com.nokia.helium.metadata.ant.taskdefs;
+
+import java.io.File;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Task;
+import com.nokia.helium.metadata.ant.conditions.MetaDataLogCondition;
+
+/**
+ * This class sets a property to the number of matching severity inside a Metadata db for a log.
+ * Example:
+ * <pre>
+ *     &lt;hlm:metadataCountSeverity severity=&quot;error&quot; log=&quot;*_fixslashes_raptor.log&quot; db=&quot;${build.log.dir}/metadata.db&quot; property=&quot;fixslashes.error&quot;/&gt;
+ * </pre>
+
+ * @ant.task name="metadataCountSeverity" category="Metadata"
+ */
+public class MetaDataLogCount extends Task {
+
+    private File fileName;
+    private String logFile;
+    private String severity;
+    private String property;
+
+    /**
+     * File to be parsed.
+     * 
+     * @param filename
+     * @ant.required
+     */
+    public void setDb(File filename) {
+        fileName = filename;
+    }
+    
+    public void setLog(String log) {
+        logFile = log;
+    }
+    
+    /**
+     * Defines the severity name to be counted.
+     * 
+     * @param severity
+     * @ant.required
+     */
+    public void setSeverity(String severity) {
+        this.severity = severity;
+    }
+
+    /**
+     * Name of the property to be set.
+     * @param property the property name
+     * @ant.required
+     */
+    public void setProperty(String property) {
+        this.property = property;
+    }
+    
+    /**
+     *  Execute the task. Set the property with number of severities.  
+     * @throws BuildException
+     */
+    public void execute() {
+        if (property == null)
+            throw new BuildException("'property' attribute is not defined");
+        
+        MetaDataLogCondition cond = new MetaDataLogCondition();
+        cond.setDb(fileName);
+        cond.setLog(logFile);
+        cond.setSeverity(severity);
+        getProject().setNewProperty(property, "" + cond.getSeverity());
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/src/com/nokia/helium/metadata/ant/taskdefs/MetaDataRecord.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,158 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+
+package com.nokia.helium.metadata.ant.taskdefs;
+
+import com.nokia.helium.metadata.MetaDataInput;
+import com.nokia.helium.jpa.entity.metadata.Metadata;
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Task;
+import java.util.Vector;
+import java.util.Iterator;
+import org.apache.log4j.Logger;
+import com.nokia.helium.metadata.db.*;
+import java.util.Date;
+
+/**
+ * This task provide a way to record the data in the Database.
+ * 
+ * <pre>
+ * Example 1:
+ * &lt;metadatarecord database=&quot;compile_log.db&quot;&gt;
+ *     &lt;sbsmetadatainput&gt;
+ *     &lt;fileset casesensitive=&quot;false&quot; file=&quot;sbs.log.file&quot;/&gt
+ *         &lt;metadatafiltelistref refid=&quot;compilation&quot;/&gt;
+ *     &lt;/sbsmetadatainput&gt;
+ * &lt;/metadatarecord&gt;
+ * 
+ * Example 2:
+ * 
+ * &lt;metadatarecord database=&quot;metadata.db&quot;&gt;
+ *     &lt;antmetadatainput&gt;
+ *     &lt;fileset casesensitive=&quot;false&quot; file=&quot;${build.id}_ant_build.log&quot;/&gt
+ *         &lt;metadatafiltelistref refid=&quot;compilation&quot;/&gt;
+ *     &lt;/antmetadatainput&gt;
+ * &lt;/metadatarecord&gt;
+
+ * </pre>
+ * 
+ * @ant.task name="metadatarecord" category="Metadata"
+ */
+public class MetaDataRecord extends Task {
+
+    private static Logger log = Logger.getLogger(MetaDataRecord.class);
+
+    private String database;
+    
+    private boolean failOnError = true;
+    
+    private Vector<MetaDataInput> metadataList = new Vector<MetaDataInput>();
+
+    /**
+     * Helper function to set the database parameter
+     * 
+     * @ant.required
+     */
+    public void setDatabase(String dbFile) {
+        database = dbFile;
+    }
+
+    public void setFailOnError(String failNotify) {
+        if (failNotify.equals("false")) {
+            failOnError = false;
+        }
+    }
+    /**
+     * Helper function to get the database
+     * 
+     */
+    public String getDatabase() {
+        return database;
+    }
+
+    /**
+     * Helper function to return the metadatalist
+     *  @return build metadata object
+     * 
+     */
+    public Vector<MetaDataInput> getMetaDataList() throws Exception {
+        if (metadataList.isEmpty()) {
+            throw new Exception("metadata list is empty");
+        }
+        return metadataList;
+    }
+
+    /**
+     * Helper function to add the metadatalist
+     *  @param build metadata list to add
+     * 
+     */
+    public void add(MetaDataInput interf) {
+        metadataList.add(interf);
+    }
+
+    
+    @Override
+    public void execute() {
+        ORMMetadataDB ormDB = null;
+        try {
+            log.debug("Getting Contents to write to db: " + database);
+            log.debug("Initializing DB: " + database);
+            log.debug("initializing ORM db");
+            ormDB = new ORMMetadataDB(database);
+            log.debug("Parsing the input and writing to DB");
+            Date before = new Date();
+            log("Time before recording to db: " + before);
+            for ( MetaDataInput metadataInput : metadataList ) {
+                boolean removed = false;
+                String logPath = null;
+                Iterator<Metadata.LogEntry> inputIterator = metadataInput.iterator();
+                while (inputIterator.hasNext()) {
+                    Metadata.LogEntry logEntry = inputIterator.next();
+                    if (!removed) {
+                        logPath = logEntry.getLogPath();
+                        ormDB.removeEntries(logPath);
+                        removed = true;
+                    }
+                    //initializes the metadata if none exists
+                    ormDB.addLogEntry(logEntry);
+                }
+                if ( logPath != null) {
+                    ormDB.finalizeMetadata(logPath);
+                }
+            }
+            Date after = new Date();
+            log("Time after recording to db: " + after);
+            log("Elapsed time: " + (after.getTime() - before.getTime()) + " ms");
+            log.debug("Successfully writen to DB");
+        } catch (BuildException ex1) {
+            log.debug("BuildException during writing to db: ", ex1);
+            if (failOnError) {
+                throw ex1;
+            }
+        } catch (Exception ex) {
+            log.debug("exception during writing to db: ", ex);
+            if (failOnError) {
+                throw new BuildException("Failed during writing data to db.", ex);
+            }
+        } finally {
+            if (ormDB != null) {
+                ormDB.finalizeDB();
+            }
+        }
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/src/com/nokia/helium/metadata/ant/types/AbldLogMetaDataInput.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,152 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+
+package com.nokia.helium.metadata.ant.types;
+
+import java.io.*;
+import org.apache.tools.ant.BuildException;
+import java.util.*;
+import org.apache.log4j.Logger;
+import java.util.regex.Pattern;
+import java.util.regex.Matcher;
+
+/**
+ * This Type is to specify and use the abld logparser type to parse and store the data.
+ *
+ * <pre>
+ * &lt;hlm:metadatafilterset id="abld.metadata.filter"&gt;
+ *    &lt;metadatafilterset filterfile="common.csv" /&gt;
+ * &lt;/hlm:metadatafilterset&gt;
+ * 
+ * &lt;hlm:abldmetadatainput&gt;
+ *    &lt;fileset dir="${project.dir}/../data/"&gt;
+ *        &lt;include name="*_compile*.log"/&gt;
+ *    &lt;/fileset&gt;
+ *    &lt;metadatafilterset refid="abld.metadata.filter" /&gt;
+ * &lt;/hlm:antmetadatainput&gt;
+ * </pre>
+ * 
+ * @ant.task name="abldmetadatainput" category="Metadata"
+ */
+public class AbldLogMetaDataInput extends TextLogMetaDataInput {
+
+    private Logger log = Logger.getLogger(AbldLogMetaDataInput.class);
+    
+    private Pattern abldFinishedPattern = Pattern.compile("^===\\s+.+\\s+finished.*");
+    private Pattern abldStartedPattern = Pattern.compile("^===\\s+(.+)\\s+started.*");
+    private Pattern abldComponentPattern = Pattern.compile("^===\\s+(.+?)\\s+==\\s+(.+)");
+    
+
+    private String currentComponent;
+    
+    private boolean entryCreated;
+
+    private boolean recordText;
+    
+    public AbldLogMetaDataInput() {
+    }
+
+    /**
+     * Function to check from the input stream if is there any entries available.
+     * @return true if there are any entry available otherwise false.
+     */
+    public boolean isEntryCreated(File currentFile) {
+        String exceptions = "";
+        int lineNumber = getLineNumber(); 
+        BufferedReader currentReader = getCurrentReader();
+        log.debug("Getting next set of log entries for Abld Input");
+        try {
+            if (currentReader == null) {
+                lineNumber = 0;
+                setLineNumber(lineNumber);
+                log.debug("Current abld log file name:" + currentFile);
+                log.debug("Processing file: " + currentFile);
+                currentReader = new BufferedReader(new FileReader(currentFile));
+                setCurrentReader(currentReader);
+            }
+            String logText = null;
+            while ((logText = currentReader.readLine()) != null) {
+                lineNumber ++;
+                setLineNumber(lineNumber);
+                logText = logText.replaceFirst("'^\\s*\\[.+?\\]\\s*", "");
+                if (logText.startsWith("++ Finished at")) {
+                    if (currentComponent != null && !entryCreated) {
+                        addEntry("DEFAULT", currentComponent, currentFile.toString(), 
+                                0, "" );
+                        entryCreated = true;
+                        recordText = false;
+                        return true;
+                    }
+                    entryCreated = false;
+                } else if (logText.startsWith("=== ")) {
+                    Matcher finishMatch = abldFinishedPattern.matcher(logText);
+                    if (finishMatch.matches()) {
+                        if (currentComponent != null && !entryCreated) {
+                            addEntry("DEFAULT", currentComponent, currentFile.toString(), 
+                                    0, "" );
+                            entryCreated = true;
+                            recordText = false;
+                            return true;
+                        }
+                        entryCreated = false;
+                    } else {
+                        Matcher componentMatch = abldComponentPattern.matcher(logText);
+                        if (componentMatch.matches()) {
+                            currentComponent = componentMatch.group(2);
+                            recordText = true;
+                        }
+
+                        Matcher startMatch = abldStartedPattern.matcher(logText);
+                        if (startMatch.matches()) {
+                            currentComponent = startMatch.group(1);
+                            recordText = true;
+                        }
+                    }
+                } else {
+                    if (recordText) {
+                        String severity = getSeverity(logText);
+                        if (severity != null) {
+                            entryCreated = true; 
+                            addEntry(severity, currentComponent, currentFile.toString(), 
+                                    lineNumber, logText );
+                            return true;
+                        }
+                    }
+                }
+            }
+            currentReader.close();
+            currentReader = null;
+            setCurrentReader(currentReader);
+        } catch (Exception ex) {
+            log.debug("Exception in AbldLogMetadata", ex);
+           try {
+               currentReader.close();
+           } catch ( IOException iex) {
+               // We are Ignoring the errors as no need to fail the build. 
+               log.debug("Exception in closing reader", iex);
+           }
+           currentReader = null;
+           setCurrentReader(null);
+           exceptions = exceptions + ex.getMessage() + "\n";
+           return false;
+        }
+        if (!exceptions.equals("")) {
+            throw new BuildException(exceptions);
+        }
+        return false;
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/src/com/nokia/helium/metadata/ant/types/AntLogMetaDataInput.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,129 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+
+package com.nokia.helium.metadata.ant.types;
+
+import java.io.*;
+import org.apache.tools.ant.BuildException;
+import java.util.*;
+import org.apache.log4j.Logger;
+import java.util.regex.Pattern;
+import java.util.regex.Matcher;
+
+/**
+ * This Type is to specify and use the ant logparser type to parse and store the data.
+ *
+ * <pre>
+ * &lt;hlm:metadatafilterset id="ant.metadata.filter"&gt;
+ *    &lt;metadatafilterset filterfile="${project.dir}/../data/common.csv" /&gt;
+ * &lt;/hlm:metadatafilterset&gt;
+ * 
+ * &lt;hlm:antmetadatainput&gt;
+ *    &lt;fileset dir="${project.dir}/../data/"&gt;
+ *        &lt;include name="*zip*.log"/&gt;
+ *    &lt;/fileset&gt;
+ *    &lt;metadatafilterset refid="ant.metadata.filter" /&gt;
+ * &lt;/hlm:antmetadatainput&gt;
+ * </pre>
+ * 
+ * @ant.task name="antmetadatainput" category="Metadata"
+ */
+public class AntLogMetaDataInput extends TextLogMetaDataInput {
+
+    private Logger log = Logger.getLogger(AntLogMetaDataInput.class);
+    
+    private Pattern antTargetPattern = Pattern.compile("^([^\\s=\\[\\]]+):$");
+    
+    private String currentComponent;
+    
+    private boolean entryCreated;
+    
+    /**
+     * Constructor
+     */
+    public AntLogMetaDataInput() {
+    }
+
+    /**
+     * Function to check from the input stream if is there any entries available.
+     * @return true if there are any entry available otherwise false.
+     */
+    public boolean isEntryCreated(File currentFile) {
+        String exceptions = "";
+        int lineNumber = getLineNumber(); 
+        BufferedReader currentReader = getCurrentReader();
+        try {
+            if (currentReader == null) {
+                setLineNumber(0);
+                log.debug("Current Text log file name:" + currentFile);
+                log.debug("Processing file: " + currentFile);
+                currentReader = new BufferedReader(new FileReader(currentFile));
+                setCurrentReader(currentReader);
+            }
+            String logText = "";
+            while ((logText = currentReader.readLine()) != null) {
+                Matcher match = antTargetPattern.matcher(logText); 
+                if (match.matches()) {
+                    if (currentComponent != null && !entryCreated) {
+                        addEntry("DEFAULT", currentComponent, currentFile.toString(), 
+                                0, "" );
+                        entryCreated = true;
+                        return true;
+                    }
+                    entryCreated = false;
+                    currentComponent = match.group(1);
+                }
+                logText = logText.replaceFirst("^[ ]*\\[.+?\\][ ]*", "");
+                String severity = getSeverity(logText);
+                if (severity != null) {
+                    entryCreated = true;
+                    // If there is no current component which means
+                    // it is a redirected output, using file name as comp name
+                    if (currentComponent == null ) {
+                        currentComponent = currentFile.getName();
+                    }
+                    addEntry(severity, currentComponent, currentFile.toString(), 
+                            lineNumber, logText );
+                    logText = "";
+                    return true;
+                }
+            }
+            currentReader.close();
+            currentReader = null;
+            setCurrentReader(currentReader);
+            if (isAdditionalEntry()) {
+                return true;
+            }
+        } catch (Exception ex) {
+            log.debug("Exception in AntLogMetadata", ex);
+            try {
+                currentReader.close();
+            } catch ( IOException iex) {
+                // We are Ignoring the errors as no need to fail the build.
+                log.debug("Exception in closing reader", iex);
+                currentReader = null;
+                setCurrentReader(null);
+                exceptions = exceptions + ex.getMessage() + "\n";
+                return false;
+            }
+        }
+        if (!exceptions.equals("")) {
+            throw new BuildException(exceptions);
+        }
+        return false;
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/src/com/nokia/helium/metadata/ant/types/LogMetaDataInput.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,386 @@
+/*
+ * Copyright (c) 2007-2008 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:
+ *
+ */
+
+package com.nokia.helium.metadata.ant.types;
+
+import com.nokia.helium.metadata.MetaDataInput;
+
+import org.apache.tools.ant.BuildException;
+import com.nokia.helium.jpa.entity.metadata.Metadata;
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Vector;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Hashtable;
+import java.util.regex.Pattern;
+import org.apache.tools.ant.types.FileSet;
+import org.apache.tools.ant.DirectoryScanner;
+import org.apache.log4j.Logger;
+import org.apache.tools.ant.types.DataType;
+
+/**
+ * Abstract base class to provide common functionality for the log parsing.
+ */
+public abstract class LogMetaDataInput extends DataType implements
+    MetaDataInput {
+
+    private static final String DEFAULT_COMPONENT_NAME = "general";
+
+    private static Logger log = Logger.getLogger(LogMetaDataInput.class);
+    
+    private Vector<FileSet> fileSetList = new Vector<FileSet>();
+
+    private int currentFileIndex;
+    
+    private boolean entryAddedForLog;
+
+    private List<File> fileList;
+    private Vector<MetaDataFilterSet> metadataFilterSets = new Vector<MetaDataFilterSet>();
+    private Vector<MetaDataFilter> completeFilterList;
+
+    private Iterator<Metadata.LogEntry> metadataInputIterator = new MetaDataInputIterator();
+
+    private List<Metadata.LogEntry> logEntries = new ArrayList<Metadata.LogEntry>();
+    
+    
+    /**
+     * Adds the fileset (list of input log files to be processed).
+     *  @param fileSet fileset to be added
+     * 
+     */
+    public void add(FileSet fileSet) {
+        fileSetList.add(fileSet);
+    }   
+    
+    /**
+     * Adds the fileset (list of input log files to be processed).
+     *  @param fileSet fileset to be added
+     * 
+     */
+    public void add(MetaDataFilterSet metadataFilterSet) {
+        metadataFilterSets.add(metadataFilterSet);
+    } 
+
+    /**
+     * Helper function called by ant to create the new filter
+     */
+    public MetaDataFilterSet createMetaDataFilterSet() {
+        MetaDataFilterSet filterSet =  new MetaDataFilterSet();
+        add(filterSet);
+        return filterSet;
+    }
+
+    /**
+     * Helper function to return all the filters associated with this metadata input
+     * @return all the filters merged based on the order of definition.
+     */
+    private Vector<MetaDataFilter> getCompleteFilters()throws Exception {
+        Vector<MetaDataFilter> allFilter = new Vector<MetaDataFilter>();
+        for (MetaDataFilterSet filterSet : metadataFilterSets) {
+            allFilter.addAll(filterSet.getAllFilters());
+        }
+        return allFilter;
+    }
+
+    /**
+     * Updates the list of filelist from the input fileset.
+     *  @param fileSetList input fileset list
+     *  @return the matched files including the base dir. 
+     */
+    private List<File> getFileListFromFileSet() {
+        fileList = new ArrayList<File>();
+        for (FileSet fs : fileSetList) {
+            DirectoryScanner ds = fs.getDirectoryScanner(getProject());
+            String[] includedFiles = ds.getIncludedFiles();
+            for ( String file : includedFiles ) {
+                fileList.add(new File(ds.getBasedir(), file));
+                log.debug("includedfiles: " + file);
+            }
+        }
+        log.debug("fileList.size" + fileList.size());
+        return fileList;
+    }
+
+    /**
+     * Internal function to get the entry
+     * @return the top most entry in the list.
+     */
+    private Metadata.LogEntry getEntry()throws Exception {
+        if (logEntries != null && logEntries.size() > 0) {
+            return logEntries.remove(0);
+        } else {
+            throw new Exception("No entries found");
+        }
+    }
+
+    /**
+     * Helper function to return the file list of the metadata input
+     * @return file list of this metadata input.
+     */
+    protected List<File> getFileList() {
+        return fileList;
+    }
+
+    protected File getCurrentFile() {
+        List<File> fileList = getFileList();
+        return fileList.get(currentFileIndex); 
+    }
+
+    /**
+     * Function to check from the input stream if is there any entries available. Implemented by the sub classes.
+     * @return true if there are any entry available otherwise false.
+     */
+    
+    boolean isEntryAvailable() throws Exception {
+        try {
+            int fileListSize = getFileList().size();
+            while (currentFileIndex < fileListSize) {
+                boolean entryCreated = false;
+                File currentFile = getCurrentFile();
+                entryCreated = isEntryCreated(currentFile);
+                if (entryCreated) {
+                    if (!entryAddedForLog) {
+                        entryAddedForLog = true;
+                    }
+                    return entryCreated;
+                }
+                if (!entryAddedForLog) {
+                    // If no entry, then logfile is added to the database.
+                    addEntry("default", "general",
+                            getCurrentFile().toString(), -1, "", -1, null);
+                    entryAddedForLog = true;
+                    return true;
+                }
+                if (isAdditionalEntry()) {
+                    return true;
+                }
+                currentFileIndex ++;
+            }
+        } catch (Exception ex1 ) {
+            log.info("Exception processing stream: " + ex1.getMessage());
+            log.debug("exception while parsing the stream", ex1);
+            throw ex1;
+        }
+        return false;
+    }
+
+    /**
+     * Function to check from the input stream if is there any entries available.
+     * @param file for which the contents needs to be parsed for errors
+     * @return true if there are any entry available otherwise false.
+     */
+    abstract boolean isEntryCreated(File currentFile) throws Exception;
+
+    /**
+     * Function to check if is there any additional entry. This is being used for example during streaming
+     * recorded and at the end of streaming use the recorded data to add any additional entry. Used by
+     * @return true if there are any additional entries which are to be recorded in the database.
+     */
+    protected boolean isAdditionalEntry() {
+        return false;
+    }
+
+    /**
+     * Returns the severity matches for the log text
+     * @param log text for which the severity needs to be identified.
+     * @return the severity of the input text
+     */
+    protected String getSeverity(String logText) throws Exception {
+        try {
+            if (completeFilterList == null) {
+                completeFilterList = getCompleteFilters();
+            }
+            for ( MetaDataFilter filter : completeFilterList) {
+                Pattern pattern = filter.getPattern();
+                if ((pattern.matcher(logText)).matches()) {
+                    return filter.getPriority();
+                }
+            }
+        } catch (Exception ex) {
+            log.debug("Exception while getting severity", ex);
+            throw ex;
+        }
+        return null;
+    }
+
+
+    /**
+     * Helper function to store the entry which will be added to the database
+     * @param priority for the entry
+     * @param component of the entry
+     * @param logpath of the entry
+     * @param lineNo of the entry
+     * @param log text message of the entry
+     */
+    protected void addEntry(String priority, String component, String logPath, int lineNo, 
+            String logText) throws Exception {
+        addEntry(priority, component, logPath, lineNo, logText, -1, null);
+    }
+    
+
+    /**
+     * Helper function to store the entry which will be added to the database
+     * @param priority for the entry
+     * @param component of the entry
+     * @param logpath of the entry
+     * @param lineNo of the entry
+     * @param log text message of the entry
+     * @param elapsedTime of the component
+     */
+    protected void addEntry(String priority, String component, String logPath, int lineNo, 
+            String logText, float elapsedTime, Metadata.WhatEntry whatEntry) throws Exception {
+        //log.debug("adding entry to the list");
+        File logPathFile = new File(logPath.trim());
+        String baseDir = logPathFile.getParent();
+        //Note: Always the query should be in "/" format only, compatible for both linux / windows
+        String uniqueLogPath = baseDir + "/" +  logPathFile.getName();
+        Metadata.LogEntry entry = new Metadata.LogEntry(
+                logText, priority, 
+                component, uniqueLogPath, lineNo, elapsedTime, whatEntry);
+        logEntries.add(entry);
+    }
+    
+    /**
+     * Looks for the text which matches the filter regular expression and adds the entries to the database.
+     * @param logTextInfo text message to be searched with filter regular expressions
+     * @param priority for the entry
+     * @param currentComponent of the logtextInfo
+     * @param logpath fo;e fpr wjocj tje text info has to be looked for with filter expression
+     * @param lineNumber of the text message
+     */
+    protected boolean findAndAddEntries(String logTextInfo, String currentComponent, 
+            String logPath, int lineNumber) throws Exception {
+        return findAndAddEntries(logTextInfo, currentComponent, logPath, lineNumber, null);
+    }
+
+    /**
+     * Looks for the text which matches the filter regular expression and adds the entries to the database.
+     * @param logTextInfo text message to be searched with filter regular expressions
+     * @param priority for the entry
+     * @param currentComponent of the logtextInfo
+     * @param logpath fo;e fpr wjocj tje text info has to be looked for with filter expression
+     * @param lineNumber of the text message
+     * @param stat object to capture statistics about the parsing.
+     */
+    protected boolean findAndAddEntries(String logTextInfo, String currentComponent, 
+            String logPath, int lineNumber, Statistics stat) throws Exception {
+        boolean entryAdded = false; 
+        String[] logText = logTextInfo.split("\n");
+        String severity = null;
+        for (int i = 0; i < logText.length; i++) {
+            severity = getSeverity(logText[i]);
+            if (severity != null) {
+                addEntry(severity, currentComponent, logPath, 
+                        i + lineNumber, logText[i]);
+                if (stat != null) {
+                    stat.incrementSeverity(severity);
+                }
+                entryAdded = true;
+            }
+        }
+        return entryAdded;
+    }
+    
+    /**
+     * Log text are processed based on iterator. When ever the entry is found the entry is returned
+     * and the function is called again for further entries.
+     * @return the iterator object for the metadata input.
+     */
+    public Iterator<Metadata.LogEntry> iterator() {
+        return metadataInputIterator;
+    }
+
+    /**
+     * Class to process the files as stream and add the entries todb
+     */
+    public class MetaDataInputIterator implements Iterator<Metadata.LogEntry> {
+        public boolean hasNext() {
+            if (fileList == null) {
+                fileList = getFileListFromFileSet();
+                if (fileList.isEmpty()) {
+                    throw new BuildException(" No input found.");
+                }
+            }
+            if (logEntries.size() > 0) {
+                return true;
+            }
+            boolean retValue = false;
+            try {
+                retValue = isEntryAvailable();
+            } catch ( Exception ex) {
+                throw new BuildException("Exception while analysing errors from the log:", ex);
+            }
+            return retValue;
+        }
+
+        /**
+         * Helper function to remove  entries if any
+         */
+        public void remove() {
+        }
+        
+
+        /**
+         * Gets the next entry, which has been identified
+         * @return log entry to be added to the database.
+         */
+        public Metadata.LogEntry next() {
+            Metadata.LogEntry entry = null;
+            try {
+                entry = getEntry();
+            } catch (Exception ex) {
+                log.debug("Exception while getting entry: ", ex);
+            }
+            return entry;
+        }
+    }
+    
+    /**
+     * This class capture statistics about the number of severity counted when 
+     * parsing, the log.
+     */
+    public class Statistics {
+        private Map<String, Integer> statistics = new Hashtable<String, Integer>();
+        
+        /**
+         * Increment the severity counter by 1.
+         */
+        public void incrementSeverity(String severity) {
+            severity = severity.toLowerCase();
+            if (statistics.get(severity) == null) {
+                statistics.put(severity, new Integer(1));
+            } else {
+                statistics.put(severity, new Integer(statistics.get(severity).intValue() + 1));
+            }
+        }
+        
+        /**
+         * Get the severity counter.
+         * @return the number of message with the mentioned severity.
+         */
+        public int getSeveriry(String severity) {
+            severity = severity.toLowerCase();
+            if (statistics.get(severity) == null) {
+                return 0;
+            } else {
+                return statistics.get(severity).intValue();
+            }
+        }
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/src/com/nokia/helium/metadata/ant/types/MetaDataFilter.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,116 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+ 
+package com.nokia.helium.metadata.ant.types;
+
+import org.apache.tools.ant.types.DataType;
+import org.apache.log4j.Logger;
+import java.util.regex.Pattern;
+
+
+/**
+ * This class provides filter input to the metadata task.
+ * <pre>
+ * &lt;metadatafilter priority=&quot;error&quot; regex=&quot;&quot; description=&quot;&quot; /&gt;
+ * </pre>
+ * @ant.task name="metadatafilter" category="Metadata"
+ */
+public class MetaDataFilter extends DataType
+{
+
+    private Logger log = Logger.getLogger(MetaDataFilter.class);
+
+    private String priority;
+    private String regex;
+    private String description;
+    private Pattern pattern;
+    
+
+    /**
+     * Helper function called by ant to set the priority type
+     * @param priority type of priority for this input.
+     */
+    public void setPriority(String prty) throws Exception {
+        if (prty == null || prty.trim().length() == 0) {
+            throw new Exception(" Invalid Priority");
+        }
+        priority = prty;
+    }
+
+    /**
+     * Helper function to return the priority type
+     * @return priority type
+     */
+    public String getPriority() {
+        return priority;
+    }
+
+    /**
+     * Helper function called by ant to set the regex
+     * @param regx regular expression of the filter
+     */
+    public void setRegex(String regx) throws Exception {
+        if (regx == null || regx.trim().length() == 0) {
+            throw new Exception(" Invalid Regular expression");
+        }
+        regex = regx;
+        createPattern(regx);
+    }
+
+    /**
+     * Helper function to return the regex type
+     * @return regular expression of this filter
+     */
+    public String getRegex() {
+        return regex;
+    }    
+
+    /**
+     * Helper function called by ant to set the description type
+     * @param desc description associated with filter.
+     */
+    public void setDescription(String desc) {
+        description = desc;
+    }
+
+    /**
+     * Helper function to return the description associated with regular expression
+     * @return description associated with regex.
+     */
+    public String getDescription() {
+        return description;
+    }
+    
+    /**
+     * Internal function to create the pattern
+     * @regex for which the pattern is created.
+     */
+    private void createPattern(String regex) {
+        pattern = Pattern.compile(regex);
+    }
+    
+    /**
+     * Helper function to return the pattern
+     * @return the pattern of this filter.
+     */
+    public Pattern getPattern() {
+        return pattern;
+    }
+}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/src/com/nokia/helium/metadata/ant/types/MetaDataFilterSet.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,225 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+ 
+package com.nokia.helium.metadata.ant.types;
+
+import java.io.*;
+import java.util.*;
+import org.apache.tools.ant.types.Reference;
+import org.apache.tools.ant.types.DataType;
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Project;
+import org.apache.log4j.Logger;
+import fmpp.models.CsvSequence;
+import freemarker.template.TemplateSequenceModel;
+
+
+/**
+ * This type contains set of filters to be used by the metadatarecord. Two options:
+ * <pre>
+ * Example 1:
+ * &lt;metadatafilterset id=&quot;common&quot; filterfile=&quot;filters.csv&quot; /&gt;
+ * 
+ * Example 2:
+ * &lt;metadatafilterset id=&quot;common&quot;/&gt;
+ *   &lt;metadatafilter priority=&quot;error&quot; regex=&quot;^make(?:\[\d+\])?:\s+.*\s+not\s+remade&quot; description=&quot;make error&quot; />
+ *   &lt;metadatafilter priority=&quot;error&quot;regex=&quot;&quot; description=&quot;&quot; /&gt; 
+ * &lt;metadatafilterset/&gt;
+ *
+ * Example 3:
+ * &lt;metadatafilterset refid=&quot;common&quot; /&gt;
+ * </pre>
+ * @ant.task name="metadatafilterset" category="Metadata"
+ */
+public class MetaDataFilterSet extends DataType
+{
+    private Vector<MetaDataFilter> filters = new Vector<MetaDataFilter>();
+    
+    private Vector<MetaDataFilterSet> filterSets = new Vector<MetaDataFilterSet>();
+    
+    private String filterFile;
+    
+    private Logger log = Logger.getLogger(MetaDataFilterSet.class);
+
+    /**
+     * Helper function called by ant to set the FilterFile
+     * @param FilterFile the csv file used by the filterset
+     */
+    public void setFilterFile(String file) throws Exception {
+        filterFile = file;
+        addCSVFromFile(file);
+    }
+
+    /**
+     * Helper function called to get FilterFile.
+     * @return filterfile used by this filterset
+     */
+    public String getFilterFile() {
+        return filterFile;
+    }
+
+    /**
+     * Helper function called to get filterlist.
+     * FilterSet can contain nested filterset, individual filter.
+     * Individual filter is created as nestedFilterSet and appended so that
+     * the precedence is maintained.
+     * @return All filters
+     */
+    public Vector<MetaDataFilter> getAllFilters()throws Exception {
+        Vector<MetaDataFilter> allFilters = new Vector<MetaDataFilter>();
+        //First look for filters associated with this set.
+        if (filters.size() > 0) {
+            allFilters.addAll(filters);
+            return allFilters;
+        }
+        // Then filters as reference in filterset
+        Reference refId = getRefid();
+        Object filterSetObject = null;
+        if (refId != null) {
+            try {
+                filterSetObject = refId.getReferencedObject();
+            } catch ( Exception ex) {
+                log.debug("Reference id of the metadata filter is not valid.", ex); 
+                throw new BuildException("Reference id of the metadata filter is not valid " + ex.getMessage(), ex);
+            }
+            if (filterSetObject != null && filterSetObject instanceof MetaDataFilterSet) {
+                allFilters.addAll(((MetaDataFilterSet)filterSetObject).getAllFilters());
+                return allFilters;
+            }
+            log.debug("Filterset object is not instance of MetaDataFilterSet");
+            throw new Exception ("Filterset object is not instance of MetaDataFilterSet");
+        }
+        // Add any nested filtersets
+        for (MetaDataFilterSet filterSet : filterSets) {
+            allFilters.addAll(filterSet.getAllFilters());
+        }
+        
+        return removeInvalidFilters(allFilters);
+    }
+
+    /**
+     * Helper function called to remove any invalid filters
+     * @return only the valid filters
+     */
+    private Vector<MetaDataFilter> removeInvalidFilters(Vector<MetaDataFilter> filterList) {
+        ListIterator<MetaDataFilter> iter = filterList.listIterator();
+        while (iter.hasNext()) {
+            MetaDataFilter filter = iter.next();
+            String priority = filter.getPriority();
+            String regEx = filter.getRegex();
+            if (priority == null || regEx == null) {
+                log("Warning: some filter is invalid removing it", Project.MSG_WARN);
+                iter.remove();
+            }
+        }
+        return filterList;
+        
+    }
+    
+    /**
+     * Helper function called by ant to create the new filter
+     */
+    public MetaDataFilter createMetaDataFilter() {
+        MetaDataFilter filter =  new MetaDataFilter();
+        add(filter);
+        return filter;
+    }
+
+    /**
+     * Helper function to add the created filter
+     * @param filter to be added to the filterset
+     */
+    public void add(MetaDataFilter filter) {
+        MetaDataFilterSet filterSet = createMetaDataFilterSet();
+        filterSet.getFilterList().add(filter);
+    }
+
+     Vector<MetaDataFilter> getFilterList() {
+         return filters;
+     }
+
+     /**
+     * Helper function called by ant to create the new filter
+     */
+    public MetaDataFilterSet createMetaDataFilterSet() {
+        MetaDataFilterSet filterSet =  new MetaDataFilterSet();
+        add(filterSet);
+        return filterSet;
+    }
+
+    /**
+     * Helper function to add the created filter
+     * @param filter to be added to the filterset
+     */
+    public void add(MetaDataFilterSet filterSet) {
+        if (filterSet != null) {
+            filterSets.add(filterSet);
+        }
+    }
+
+    /**
+     * Helper function to add the filters from the csv files
+     * @param csv file path from which the filters needs to be added.
+     */
+    private void addCSVFromFile(String csvPath) throws Exception {
+        CsvSequence csvs = new CsvSequence();
+        csvs.setSeparator(',');
+        log.debug("filter file: " + filterFile);
+        try {
+            csvs.load(new FileReader(new File(filterFile)));
+        } catch (java.io.FileNotFoundException fex) {
+            log.debug("Metadata CSV file not found:", fex);
+            throw fex;
+        } catch (fmpp.util.StringUtil.ParseException pex) {
+            log.debug("FMPP not able parse the Metadata CSV file. ", pex);
+            throw pex;
+        } catch (java.io.IOException iex) {
+            log.debug("Metadata I/O Exception. " + iex.getMessage(), iex);
+            throw iex;
+        }
+        int size = 0;
+        try {
+                log.debug("filter CSV record size: " + csvs.size());
+                size = csvs.size();
+            } catch (Exception ex) {
+                // We are Ignoring the errors as no need to fail the build.
+                log.debug("Exception in processing csv file " + filterFile, ex);
+            }
+            for (int i = 0; i < size; i++) {
+                try {
+                    TemplateSequenceModel model = (TemplateSequenceModel) csvs
+                    .get(i);
+                    int modelSize = model.size();
+                    if (modelSize != 3 ) {
+                        log.debug("Metadata CSV file filter file format is invalid. It has row size " + size);
+                        throw new Exception("Metadata CSV file filter file format is invalid. It has row size " + size);
+                    }
+                    MetaDataFilter filter = new MetaDataFilter();
+                    filter.setPriority(model.get(0).toString());
+                    filter.setRegex(model.get(1).toString());
+                    filter.setDescription(model.get(2).toString());
+                    filters.add(filter);
+                } catch (Exception ex) {
+                    // We are Ignoring the errors as no need to fail the build.
+                    log.debug("Exception in processing Metadate csv file " + filterFile, ex);
+                }
+            }
+    }
+}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/src/com/nokia/helium/metadata/ant/types/MetadataSource.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,88 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+package com.nokia.helium.metadata.ant.types;
+
+import com.nokia.helium.core.LogSource;
+import com.nokia.helium.metadata.db.MetaDataDb;
+import org.apache.log4j.Logger;
+import java.io.File;
+import java.util.List;
+import java.util.Map;
+import java.io.BufferedWriter;
+import java.io.FileWriter;
+
+/**
+ * This type define an input source that will be communicated to the notifiers.
+ * Not used, deprecated and an xml and html file is generated for signal modules.
+ * @ant.type name="metadatasource" category="Metadata"
+ * @deprecated
+ * 
+ */
+public class MetadataSource extends LogSource {
+
+    private static Logger logger = Logger.getLogger(MetadataSource.class);
+
+    private String db;
+    private String log;
+    
+    public void setDb(String db) {
+        this.db = db;
+    }
+    
+    public String getDb() {
+        return db;
+    }
+    
+    public void setLog(String log) {
+        this.log = log;
+    }
+    
+    public String getLog() {
+        return log;
+    }
+    
+    public File getFilename()
+    {
+        MetaDataDb mdb = new MetaDataDb(db);
+
+        String sql = "select * from metadata INNER JOIN logfiles ON logfiles.id=metadata.logpath_id INNER JOIN priority ON priority.id=metadata.priority_id where priority='ERROR' and path like '%" + log + "'";
+        
+        List<Map<String, Object>> records = mdb.getRecords(sql);
+        
+        try {
+            File temp = File.createTempFile("templog.", ".xml");
+            temp.deleteOnExit();
+            BufferedWriter output = new BufferedWriter(new FileWriter(temp));
+            output.write("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<log filename=\"" + log + "\">\n<build>\n");
+            
+            for (Map<String, Object> map : records)
+            {
+                output.write("<message priority=\"error\"><![CDATA[" + map.get("data") + "]]></message>\n");
+            }
+            
+            output.write("</build>\n</log>");
+            output.close();
+            
+            return temp;
+        } catch (Exception ex) {
+            logger.info("Exception generating xml file for metadata");
+            logger.debug("Exception in metadata source", ex);
+        }
+        return null;
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/src/com/nokia/helium/metadata/ant/types/PolicyLogMetaDataInput.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,137 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+
+package com.nokia.helium.metadata.ant.types;
+
+import java.util.*;
+import org.apache.log4j.Logger;
+import javax.xml.stream.XMLStreamReader;
+import java.util.regex.Pattern;
+
+
+/**
+ * This Type is to specify and use the policy logparsertype to 
+ * parse and store the data based on xmlstreamreader.
+ * <pre>
+ * &lt;hlm:metadatafilterset id="policy.metadata.filter"&gt;
+ *    &lt;metadatafilterset filterfile="common.csv" /&gt;
+ * &lt;/hlm:metadatafilterset&gt;
+ * 
+ * &lt;hlm:policymetadatainput&gt;
+ *    &lt;fileset dir="${project.dir}/../data/"&gt;
+ *        &lt;include name="*validate*policy*.log"/&gt;
+ *    &lt;/fileset&gt;
+ *    &lt;metadatafilterset refid="policy.metadata.filter" /&gt;
+ * &lt;/hlm:policymetadatainput&gt;
+ * </pre>
+ * @ant.task name="policymetadatainput" category="Metadata"
+ */
+public class PolicyLogMetaDataInput extends XMLLogMetaDataInput {
+
+    private Logger log = Logger.getLogger(XMLLogMetaDataInput.class);
+    
+    private Map<String, String> currentAttributeMap;
+    
+
+    /**
+     * Constructor
+     */
+    public PolicyLogMetaDataInput() {
+    }
+    
+
+    /**
+     * Helper function to return the attributes of the stream reader
+     * @returns the attributes as a map.
+     */
+    private Map<String, String> getAttributes(XMLStreamReader streamReader) {
+        int count = streamReader.getAttributeCount() ;
+        if (count > 0 ) {
+            Map<String, String> attributesMap = new HashMap<String, String>();
+            for (int i = 0 ; i < count ; i++) {
+                attributesMap.put(streamReader.getAttributeLocalName(i), 
+                        streamReader.getAttributeValue(i));
+            }
+            return attributesMap;
+        }
+        return null;
+    }
+
+   
+    /**
+     * Function to process the start event of xml stream callback.
+     * @param streamReader: the input stream reader which contains the xml data to be parsed for recording data.
+     * @return true if there are any element to be added to the database.
+     */
+    boolean startElement (XMLStreamReader streamReader) {
+        String tagName = streamReader.getLocalName();
+        if (tagName.equalsIgnoreCase("error")) {
+            currentAttributeMap = getAttributes(streamReader);
+        }
+        return false;
+    }
+
+    /**
+     * Function to process the end event of xml stream callback.
+     * @param streamReader: the input stream reader which contains the xml data to be parsed for recording data.
+     * @return true if there are any element to be added to the database.
+     */
+    boolean endElement(XMLStreamReader streamReader) throws Exception {
+        boolean retValue = false;
+        try {
+            String tagName = streamReader.getLocalName();
+            String priority = "ERROR";
+            log.debug("endElement: " + tagName);
+            if (tagName.equalsIgnoreCase("error")) {
+                log.debug("tagName matches error");
+                String errorType = currentAttributeMap.get("type");
+                log.debug("errorType:" + errorType);
+                if (errorType.equals("unknownstatus")) {
+                    addEntry(priority, "CSV validation", getCurrentFile().toString(), -1, currentAttributeMap.get("message") + 
+                            currentAttributeMap.get("value"));
+                    retValue = true;
+                } else if (errorType.equals("A") || errorType.equals("B") 
+                        || errorType.equals("C") || errorType.equals("D")) {
+                    int flags = Pattern.CASE_INSENSITIVE | Pattern.DOTALL ;
+                    Pattern pattern = Pattern.compile("([\\\\/][^\\\\/]+?)$", flags);
+                    addEntry(priority, "Issues", getCurrentFile().toString(), -1, 
+                            errorType + "Found incorrect value for" + 
+                            pattern.matcher(currentAttributeMap.get("message")).replaceAll(""));
+                    retValue = true;
+                } else if (errorType.equals("missing")) {
+                    addEntry(priority, "Missing", getCurrentFile().toString(), -1, currentAttributeMap.get("message"));
+                    retValue = true;
+                } else if (errorType.equals("invalidencoding")) {
+                    addEntry(priority, "Incorrect policy files", getCurrentFile().toString(), -1,  currentAttributeMap.get("message"));
+                    retValue = true;
+                }
+            }
+        } catch (Exception ex) {
+            log.debug("exception in endelement",ex);
+            throw ex;
+        }
+        return retValue;
+    }
+    
+     /* Function to process the characters event of xml stream callback.
+     * @param streamReader: the input stream reader which contains the xml data to be parsed for recording data.
+     * @return true if there are any element to be added to the database.
+     */
+    boolean characters (XMLStreamReader streamReader) {
+        return false;
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/src/com/nokia/helium/metadata/ant/types/SBSLogMetaDataInput.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,958 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+
+package com.nokia.helium.metadata.ant.types;
+
+import java.io.*;
+import java.util.*;
+import java.util.regex.Pattern;
+import java.util.regex.Matcher;
+import org.apache.log4j.Logger;
+import javax.xml.stream.XMLStreamReader;
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.events.XMLEvent;
+import com.nokia.helium.jpa.entity.metadata.Metadata;
+
+/**
+ * This Type is to specify and use the sbs logparsertype to 
+ * parse and store the data based on xmlstreamreader.
+ * <pre>
+ * &lt;hlm:metadatafilterset id="sbs.metadata.filter"&gt;
+ *    &lt;metadatafilterset filterfile="common.csv" /&gt;
+ * &lt;/hlm:metadatafilterset&gt;
+ * 
+ * &lt;hlm:sbsmetadatainput cleanLogFile="cleanlog.file" &gt
+ *    &lt;fileset dir="${project.dir}/../data/"&gt;
+ *        &lt;include name="*compile.log"/&gt;
+ *    &lt;/fileset&gt;
+ *    &lt;metadatafilterset refid="sbs.metadata.filter" /&gt;
+ * &lt;/hlm:sbsmetadatainput&gt;
+ * </pre>
+ * @ant.task name="sbsmetadatainput" category="Metadata"
+ */
+public class SBSLogMetaDataInput extends XMLLogMetaDataInput {
+
+
+    private static final String DRIVE_LETTER_REGEX = "(([a-z]|[A-Z]):(\\\\|/))(.*)(/bld\\.inf)";
+    
+    private static final String FAILED_STATUS_MESSAGE = "ERROR: recipe exit status is failed.";
+
+    private Logger log = Logger.getLogger(SBSLogMetaDataInput.class);
+
+    private String currentComponent;
+    
+    private float currentElapsedTime;
+    
+    private String logTextInfo = "";
+    
+    private String recipeStatus = "ok";
+    
+    private HashMap<String, List <CategoryEntry>> generalTextEntries = new HashMap<String, List <CategoryEntry>>();
+    
+    private CategorizationHandler categorizationHandler;
+
+    private WhatLogHandler whatLogHandler;
+
+    private List<SpecialRegex> specialRegexPatternList = new ArrayList<SpecialRegex>();
+
+    private int lineNumber;
+    
+    private boolean inMainDataSection;
+
+    private boolean categorizationCompleted;
+
+    private boolean recordText;
+    
+    private File cleanLogFile;
+    
+    private HashMap<String, TimeEntry> componentTimeMap = new HashMap<String, TimeEntry>();
+
+    private File whatLogFile;
+    /**
+     * Constructor
+     */
+    public SBSLogMetaDataInput() {
+        specialRegexPatternList.add(new SpecialRegex("(make.exe|make): \\*\\*\\* No rule to make target.*needed by `(.*)'.*", 2));
+        specialRegexPatternList.add(new SpecialRegex("(make.exe|make): \\*\\*\\* \\[(.*)\\].*", 2));
+    }
+    
+    
+    /**
+     * Removes the bld inf and the drive letter from the text
+     * @param text in which the bld.inf and drive letter to be removed
+     * @return updated string.
+     */
+    static String removeDriveAndBldInf(String text) {
+        Matcher matcher = (Pattern.compile(DRIVE_LETTER_REGEX)).matcher(text);
+        if (matcher.matches()) {
+            return matcher.group(4);
+        } else {
+            return text;
+        }
+    }
+
+    /**
+     * Removes the bld inf and the drive letter from the text
+     * @param text in which the bld.inf and drive letter to be removed
+     * @return updated string.
+     */
+    static String getComponent(XMLStreamReader streamReader) {
+        String currentComponent = getAttribute("bldinf", streamReader);
+        if ( currentComponent != null && currentComponent.equals("")) {
+            return null;
+        }
+        if (currentComponent != null ) {
+            currentComponent = removeDriveAndBldInf(currentComponent);
+        }
+        return currentComponent;
+    }
+
+    /**
+     * Generic function to return the attribute value of an attribute from stream
+     * @param attribute for which the value from xml stream to be returned.
+     * @return the attribute value of an attribute.
+     */
+    static String getAttribute(String attribute, XMLStreamReader streamReader) {
+        int count = streamReader.getAttributeCount() ;
+        for (int i = 0 ; i < count ; i++) {
+            if ( streamReader.getAttributeLocalName(i).equals(attribute) ) {
+                return streamReader.getAttributeValue(i);
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Helper function to set the clean log file.
+     * @param logFile which is the clean log file to process for additional categories
+     */
+    public void setCleanLogFile(File logFile) {
+        cleanLogFile = logFile;
+    }
+
+    /**
+     * Helper function to set the clean log file.
+     * @param logFile which is the what log file to process for missing
+     * components
+     */
+    public void setWhatLogFile(File logFile) {
+        whatLogFile = logFile;
+    }
+
+    /**
+     * Function to process the characters event of xml stream callback.
+     * @param streamReader: the input stream reader which contains the xml data to be parsed for recording data.
+     * @return true if there are any element to be added to the database.
+     */
+    public boolean characters (XMLStreamReader streamReader) throws Exception {
+        HashMap<String, Integer> toProcess = new HashMap<String, Integer>(); 
+        if (recordText) {
+            logTextInfo += streamReader.getText();
+        } else {
+            if (inMainDataSection) {
+                String cdataText = streamReader.getText().trim();
+                String [] textList = cdataText.split("\n");
+                int i = 0;
+                for (String text : textList) {
+                    boolean added = false;
+                    if (text.trim().equals("")) {
+                        continue;
+                    }
+                    for (SpecialRegex specialRegex : specialRegexPatternList) {
+                        Matcher matcher = specialRegex.getRegexPattern().matcher(text); 
+                        int groupPosition = specialRegex.getGroupPosition();
+                        List <CategoryEntry> entryList  = null;
+                        if (matcher.matches()) {
+                            String componentName = matcher.group(groupPosition).toLowerCase();
+                            CategoryEntry newEntry = new CategoryEntry(text, componentName ,
+                                    "error", streamReader.getLocation().getLineNumber(), getCurrentFile().toString());
+                            entryList = generalTextEntries.get(componentName); 
+                            if ( entryList == null) {
+                                entryList = new ArrayList<CategoryEntry>();
+                                generalTextEntries.put(componentName, entryList);
+                            }
+                            entryList.add(newEntry);
+                            added = true;
+                            break;
+                        }
+                    }
+                    if (!added) {
+                        toProcess.put(text.trim(), streamReader.getLocation().getLineNumber() + i);
+                    }
+                    i++;
+               }
+                boolean entryCreated = false;
+                //Check for any general errors.
+                for (String textString : toProcess.keySet()) {
+                    boolean created = findAndAddEntries(textString, "general",
+                        getCurrentFile().toString(), toProcess.get(textString));
+                    if (created && !entryCreated ) {
+                        entryCreated = true;
+                    }
+                }
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Function to process the start event of xml stream callback.
+     * @param streamReader: the input stream reader which contains the xml data to be parsed for recording data.
+     * @return true if there are any element to be added to the database.
+     */
+    public boolean startElement (XMLStreamReader streamReader) throws Exception {
+        try {
+            String tagName = streamReader.getLocalName();
+            if (tagName.equalsIgnoreCase("buildlog")) {
+                log.debug("starting with buildlog");
+                inMainDataSection  = true;
+            }
+            if (tagName.equalsIgnoreCase("recipe") ) {
+                lineNumber = streamReader.getLocation().getLineNumber();
+                currentComponent = getComponent(streamReader);
+                recordText = true;
+                inMainDataSection = false;
+                recipeStatus = "ok";
+            } if (tagName.equalsIgnoreCase("status") ) {
+                String exit = streamReader.getAttributeValue(null, "exit");
+                recipeStatus = (exit != null) ? exit : "ok";
+            } else if (tagName.equalsIgnoreCase("error")
+                    || tagName.equalsIgnoreCase("warning")) {
+                lineNumber = streamReader.getLocation().getLineNumber();
+                currentComponent = getComponent(streamReader);
+                recordText = true;
+                inMainDataSection = false;
+            } else if (tagName.equalsIgnoreCase("whatlog") ) {
+                currentComponent = getComponent(streamReader);
+                inMainDataSection = false;
+            } else if (tagName.equalsIgnoreCase("time")) {
+                inMainDataSection = false;
+                currentElapsedTime = Float.valueOf(getAttribute("elapsed", streamReader)).floatValue();
+                log.debug("currentElapsedTime:" + currentElapsedTime);
+                if (currentComponent != null) {
+                    TimeEntry timeObject = componentTimeMap.get(currentComponent);
+                    log.debug("currentComponent:" + currentComponent);
+                    if (timeObject == null) {
+                        timeObject = new TimeEntry(currentElapsedTime, getCurrentFile().toString());
+                        componentTimeMap.put(currentComponent, timeObject);
+                        log.debug("creating to new time object");
+                    } else  {
+                        timeObject.addElapsedTime(currentElapsedTime);
+                        log.debug("adding it to existing time object");
+                    }
+                }
+            /*} else if (tagName.equalsIgnoreCase("status")) {
+                if ( getAttribute("exit", streamReader).equals("failed")) {
+                    if (currentComponent == null) {
+                        currentComponent = "general";
+                    }
+                    addEntry("error", currentComponent, getCurrentFile().toString(),
+                            streamReader.getLocation().getLineNumber(),
+                            FAILED_STATUS_MESSAGE);
+                }*/
+            } else if (tagName.equalsIgnoreCase("clean")) {
+                inMainDataSection = false;
+            } else if (tagName.equalsIgnoreCase("info")) {
+                inMainDataSection = false;
+            }
+        } catch (Exception ex) {
+            log.debug("exception in startelement", ex);
+            throw ex;
+        }
+        return false;
+    }
+
+    /**
+     * Checks whether is there any additional entry. During log parsing, all the text which are not part of any tag
+     * and are part of CDATA are recorded in a list and checked in this function for any matching errors and processed
+     * for their categorization.
+     * @return true if there are any element to be added to the database.
+     */
+    public boolean isAdditionalEntry() {
+        try { 
+            if (!componentTimeMap.isEmpty()) {
+                Set<String> componentSet = componentTimeMap.keySet();
+                for (String component : componentSet) {
+                    
+                    TimeEntry entry = componentTimeMap.get(component);
+                    addEntry("default", component, entry.getFilePath(), -1, 
+                            null, entry.getElapsedTime(), null);
+                    componentTimeMap.remove(component);
+                    return true;
+                }
+            }
+            if (!categorizationCompleted) {
+                if (cleanLogFile != null) {
+                    if (categorizationHandler == null ) {
+                        log.info("initializing categorization handler");
+                        categorizationHandler = 
+                            new CategorizationHandler(cleanLogFile, generalTextEntries);
+                    }
+                }
+                if (categorizationHandler != null && categorizationHandler.hasNext()) {
+                    try {
+                        CategoryEntry entry = categorizationHandler.getNext();
+                        if (entry != null) {
+                            addEntry(entry.getSeverity(), entry.getCategory(), entry.getLogFile(), 
+                                    entry.getLineNumber(), entry.getText());
+                            return true;
+                        }
+                    } catch (Exception ex) {
+                        log.debug("Exception during categorization handler", ex);
+                        return false;
+                    }
+                }
+                categorizationCompleted = true;
+            }
+            if (whatLogFile != null && whatLogHandler == null ) {
+                log.info("initializing whatLogHandler");
+                whatLogHandler = 
+                    new WhatLogHandler(whatLogFile);
+            }
+            if (whatLogHandler != null ) {
+                whatLogHandler.resetMembers();
+                if (whatLogHandler.hasNext()) {
+                    Metadata.WhatEntry entry = whatLogHandler.getNext();
+                    log.debug("Processing for what log handler ");
+                    if (entry != null ) {
+                        addEntry("default", entry.getComponent(), whatLogHandler.getLogFile(), 
+                                whatLogHandler.getLineNumber(), "what log info", -1,  entry);
+                        log.debug("adding entry for what log handler");
+                        return true;
+                    }
+                }
+            }
+        } catch (Exception ex) {
+            log.debug("Exception in finding additional entry", ex);
+        }
+        return false;
+    }
+
+    /**
+     * Function to process the end event of xml stream callback.
+     * @param streamReader: the input stream reader which contains the xml data to be parsed for recording data.
+     * @return true if there are any element to be added to the database.
+     */
+    public boolean endElement(XMLStreamReader streamReader) throws Exception {
+        try {
+            String tagName = streamReader.getLocalName();
+            if (tagName.equalsIgnoreCase("recipe")) {
+                inMainDataSection = true;
+                recordText = false;
+                if (logTextInfo != null) {
+                    if (currentComponent == null) {
+                        currentComponent = "general";
+                    }
+                    Statistics stat = new Statistics();
+                    boolean entryCreated = findAndAddEntries(logTextInfo, currentComponent,
+                            getCurrentFile().toString(), lineNumber, stat);
+                    if (stat.getSeveriry("error") == 0 && recipeStatus.equals("failed")) {
+                        addEntry("error", currentComponent, getCurrentFile().toString(), 
+                                lineNumber, FAILED_STATUS_MESSAGE);
+                        entryCreated = true;
+                    }
+                    logTextInfo = "";
+                    recipeStatus = "ok";
+                    return entryCreated;
+                }
+            } else if (tagName.equalsIgnoreCase("error")
+                    || tagName.equalsIgnoreCase("warning")) {
+                inMainDataSection = true;
+                recordText = false;
+                if (currentComponent == null) {
+                    currentComponent = "general";
+                }
+                addEntry(tagName, currentComponent, getCurrentFile().toString(), lineNumber, 
+                        logTextInfo);
+                logTextInfo = "";
+                return true;
+            } else if (tagName.equalsIgnoreCase("whatlog") ) {
+                inMainDataSection = true;
+                addEntry("default", currentComponent, getCurrentFile().toString(), -1, 
+                        "");
+                return true;
+            } else if (tagName.equalsIgnoreCase("clean")) {
+                inMainDataSection = true;                
+            } else if (tagName.equalsIgnoreCase("info")) {
+                inMainDataSection = true;
+            }
+        } catch (Exception ex) {
+            log.debug("Exception while processing for sbs metadata input", ex);
+            throw ex;
+        }
+        return false;
+    }
+}
+
+class SpecialRegex {
+    private Pattern regexPattern;
+    private int groupPosition;
+
+    public SpecialRegex(String exp, int pos) {
+        regexPattern = Pattern.compile(exp);
+        groupPosition = pos;
+    }
+    
+    public Pattern getRegexPattern() {
+        return regexPattern;
+    }
+    
+    public int getGroupPosition() {
+        return groupPosition;
+    }
+}
+
+
+/* This class stores the temporary Time entry which is being recorded for each data
+ * at the end of the build and during isAdditionalEntry function, the time for the component
+ * is updated in the database.
+ */
+class TimeEntry {
+    
+    private float elapsedTime;
+    private String filePath;
+    
+    /**
+     * Constructor to store the elapsedTime and the path which are to be updated to the database.
+     * @param elapsedTime: time duration of the component.
+     * @path of the component.
+     */
+    public TimeEntry(float time, String path) {
+        elapsedTime = time;
+        filePath = path;
+    }
+    
+
+    /**
+     * Helper function to add time to the previous elapsed time.
+     * @param time to be added to the elapsed timet.
+     */
+    public void addElapsedTime(float time) {
+        elapsedTime += time;
+    }
+    
+    /**
+     * Helper function to return the elapsed time
+     * @return elapsed time of this time entry.
+     */
+    public float getElapsedTime() {
+        return elapsedTime;
+    }
+
+    /**
+     * Helper function to return the file path of this entry
+     * @return path of this time entry.
+     */
+    public String getFilePath() {
+        return filePath;
+    }
+}
+/* This class stores the temporary category entry which is processed during
+ * at the end of the build and categorized and written to the database.
+ */
+class CategoryEntry {
+
+    private String text;
+    private int lineNumber;
+    private String fileName;
+    private String severity;
+    private String category;
+
+
+    /**
+     * Constructor of the category entry
+     * @param txt - text message of the entry
+     * @param ctgry - category of the entry
+     * @param svrty - severity of this entry
+     * @param lnNo - line number of this entry
+     * @param flName - name of the file being processed.
+     * @return path of this time entry.
+     */
+    public CategoryEntry(String txt, String ctgry, 
+            String svrty, int lnNo, String flName) {
+        text = txt;
+        lineNumber = lnNo;
+        fileName = flName;
+        severity = svrty;
+        category = "general";
+        if (ctgry != null) {
+            category = ctgry;
+        }
+    }
+    
+    /**
+     * Helper function to set the category
+     * @param set the category
+     */
+    void setCategory(String ctgry) {
+        category = ctgry;
+    }
+    
+    /**
+     * Helper function to return the category
+     * @return the category of this entry.
+     */
+    String getCategory() {
+        return category;
+    }
+
+    /**
+     * Returns the logfile of this entry
+     * @return logfile of this entry
+     */
+    String getLogFile() {
+        return fileName;
+    }
+
+    /**
+     * Helper function returns the severity of this entry
+     * @return severity of this entry
+     */
+    String getSeverity() {
+        return severity;
+    }
+
+    /**
+     * Helper function returns the line number of this entry
+     * @return the line number of this entry.
+     */
+    
+    int getLineNumber() {
+        return lineNumber;
+    }
+
+    /**
+     * Helper function returns the text message of this entry
+     * @return text message of this entry
+     */
+    String getText() {
+        return text;
+    }
+
+}
+
+/* This class handles the categorization of scanlog errors based on the clean log output
+ * from raptor.
+ */
+ class CategorizationHandler {
+       
+    private String currentComponent;
+    private boolean isInFileTag;
+    
+    private HashMap<String, List <CategoryEntry>> categoryList;
+
+    private List<CategoryEntry> currentList;
+
+    private XMLInputFactory xmlInputFactory;
+
+    private XMLStreamReader xmlStreamReader;
+
+    private Logger log = Logger.getLogger(CategorizationHandler.class);
+
+    /**
+     * Constructor
+     * @param clean log file input using which the CDATA text are categorized
+     * @param list of entries to be categorized
+     */
+    public CategorizationHandler(File cleanLogFile, HashMap<String, List <CategoryEntry>> ctgMap) {
+        categoryList = ctgMap;
+        if (cleanLogFile != null ) {
+            try {
+                xmlInputFactory = XMLInputFactory.newInstance();
+                xmlStreamReader = xmlInputFactory.createXMLStreamReader(cleanLogFile.toString(), 
+                    new BufferedInputStream(new FileInputStream(cleanLogFile)));
+            } catch ( Exception ex) {
+                log.debug("exception while initializing stax processor",ex);
+            }
+        }
+    }
+
+    /**
+     * Checks whether is there any entry (by checking for categorization of the recorded CDATA text)
+     * @return true if there any entry that are being categorized.
+     */
+    public boolean hasNext() {
+        boolean generalEntriesStatus = categoryList != null && !categoryList.isEmpty();
+        boolean currentListStatus = currentList != null && ! currentList.isEmpty();
+        return generalEntriesStatus || currentListStatus;
+    }
+
+    /**
+     * Process the start element event of XML Stream from clean log.
+     * @param streamReader clean log xml stream reader to be processed
+     * @return true if there are any entry to be added.
+     */
+    public boolean startElement(XMLStreamReader streamReader) throws Exception {
+        String tagName = streamReader.getLocalName();
+        if (tagName.equals("clean")) {
+            currentComponent = getCategory(streamReader);
+            if (currentComponent != null) {
+                currentComponent = SBSLogMetaDataInput.removeDriveAndBldInf(currentComponent);
+            }
+        }
+        if (tagName.equals("file")) {
+            isInFileTag = true;
+        }
+        return false;
+    }
+
+    /**
+     * Process the end element event of XML Stream from clean log.
+     * @param streamReader clean log xml stream reader to be processed
+     * @return true if there are any entry to be added.
+     */
+    public boolean endElement (XMLStreamReader streamReader) throws Exception {
+        String tagName = streamReader.getLocalName();
+        if (tagName.equals("file")) {
+            isInFileTag = false;
+        }
+        return false;
+    }
+
+    /**
+     * Internal function to find bld inf from the component 
+     * @param streamReader clean log xml stream reader to be processed
+     * @return the bld.inf attribute.
+     */
+    private String getCategory(XMLStreamReader streamReader) {
+        int count = streamReader.getAttributeCount() ;
+        for (int i = 0 ; i < count ; i++) {
+            if ( streamReader.getAttributeLocalName(i).equals("bldinf") ) {
+                return streamReader.getAttributeValue(i);
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Internal function to find the CDATA text of the file attribute.
+     * @param streamReader clean log xml stream reader to be processed
+     * @return the CDATA text of <file> tag.
+     */
+    private String characters(XMLStreamReader xmlStreamReader) {
+        if (isInFileTag) {
+            return xmlStreamReader.getText().toLowerCase();
+        }
+        return null;
+    }
+
+    /**
+     * Gets the entry which matches the input path. For each line of <file> tag attribute, the entry list
+     * is compared with that and if there is any match, then it returns the entry from the list, which
+     * is being mtached.
+     * @param path for which matching entry is looked for.
+     * @return entry which matched the path from the clean log file.
+     */
+    private List<CategoryEntry> getEntry(String path) {
+        Set<String> categorySet = categoryList.keySet();
+        for (String key : categorySet) {
+        if (path.toLowerCase().equals(key)) {
+
+                List<CategoryEntry> entry = categoryList.get(key);
+                categoryList.remove(key);
+                return entry;
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Internal function to update the category entries of the list.
+     * @param categoryList for which the category.
+     * @param category which is to be updated to the list.
+     */
+    private void updateCategoryEntries(List<CategoryEntry> categoryList, String category) {
+        for (CategoryEntry entry : categoryList) {
+            entry.setCategory(category);
+        }
+    }
+
+    /**
+     * Gets the next entry from the stream based on categorization.
+     * @return the category entry which is identified as categorized entry.
+     */
+    public CategoryEntry getNext() throws Exception {
+        try {
+            if (currentList != null && !currentList.isEmpty()) {
+                CategoryEntry entry = currentList.get(0);
+                currentList.remove(0);
+                return entry;
+            }
+            if (xmlStreamReader != null ) {
+                while (xmlStreamReader.hasNext()) {
+                    int eventType = xmlStreamReader.next();
+                    switch (eventType) {
+                    case XMLEvent.START_ELEMENT:
+                        startElement(xmlStreamReader);
+                        break;
+                    case XMLEvent.END_ELEMENT:
+                        endElement(xmlStreamReader);
+                        break;
+                    case XMLEvent.CHARACTERS:
+                        String path = characters(xmlStreamReader);
+                        if (path != null ) {
+                            currentList = getEntry(path);
+                            if (currentList != null && !currentList.isEmpty()) {
+                                if (currentComponent != null) {
+                                    updateCategoryEntries(currentList, currentComponent);
+                                    CategoryEntry entry = (CategoryEntry)currentList.remove(0);
+                                    return entry;
+                                }
+                            }
+                        }
+                        break;
+                    default:
+                        break;
+                    }
+                }
+                if (xmlStreamReader != null) {
+                    close();
+                }
+            }
+            Set<String> categorySet = categoryList.keySet();
+            for (String key : categorySet) {
+                currentList = categoryList.remove(key);
+                if (currentList != null && !currentList.isEmpty()) {
+                    updateCategoryEntries(currentList, "general");
+                    CategoryEntry entry = (CategoryEntry)currentList.remove(0);
+                    return entry;
+                }
+            }
+        } catch ( Exception ex) {
+            log.debug("exception in categorization",ex);
+            throw ex;
+        }
+        return null;
+    }
+    /**
+     * Internal function to close the clean log file stream
+     */
+    private void close() {
+        try {
+            if (xmlStreamReader != null) {
+                xmlStreamReader.close();
+                xmlStreamReader = null;
+            }
+        } catch (Exception ex) {
+            log.debug("exception while closing xml stream",ex);
+        }
+        
+    }
+}
+ 
+ /* This class handles the categorization of scanlog errors based on the clean log output
+  * from raptor.
+  */
+  class WhatLogHandler {
+
+     //Todo : handle for linux later
+     private static final String MEMBER_REGEX = "^[a-zA-Z]:\\S+$";
+
+     private String currentComponent;
+     
+     private Metadata.WhatEntry currentEntry;
+
+     private boolean inWhatLog;
+
+     private boolean entryAdded;
+
+     private Pattern memberPattern;
+
+     private List<Metadata.WhatLogMember> members = new ArrayList<Metadata.WhatLogMember>();
+
+     private XMLInputFactory xmlInputFactory;
+
+     private XMLStreamReader xmlStreamReader;
+     
+     private File whatLogFile;
+
+     private Logger log = Logger.getLogger(WhatLogHandler.class);
+     
+     /**
+      * Constructor
+      * @param clean log file input using which the CDATA text are categorized
+      * @param list of entries to be categorized
+      */
+     public WhatLogHandler(File logFile) {
+         whatLogFile = logFile;
+         log.debug("what log file: " + whatLogFile);
+         memberPattern = Pattern.compile(MEMBER_REGEX);
+         if (whatLogFile != null ) {
+             try {
+                 xmlInputFactory = XMLInputFactory.newInstance();
+                 xmlStreamReader = xmlInputFactory.createXMLStreamReader(whatLogFile.toString(), 
+                     new BufferedInputStream(new FileInputStream(whatLogFile)));
+             } catch ( Exception ex) {
+                 log.debug("exception while initializing stax processor",ex);
+             }
+         }
+     }
+
+     public String getLogFile() {
+         return whatLogFile.toString();
+     }
+     
+     public void resetMembers() {
+         members.clear();
+     }
+
+     public int getLineNumber() {
+         if (xmlStreamReader != null) {
+             log.debug("what log file line number: " + xmlStreamReader.getLocation().getLineNumber());
+             return xmlStreamReader.getLocation().getLineNumber();
+         }
+         return -1;
+     }
+
+     /**
+      * Process the startelement event of XML Stream from clean log.
+      * @param streamReader clean log xml stream reader to be processed
+      * @return true if there are any entry to be added.
+      */
+     public boolean startElement(XMLStreamReader streamReader) throws Exception {
+         String tagName = streamReader.getLocalName();
+         if (tagName.equals("whatlog")) {
+             currentComponent = SBSLogMetaDataInput.getComponent(streamReader);
+             log.debug("what log file current component: " + currentComponent);
+             if (currentComponent != null) {
+                 currentComponent = SBSLogMetaDataInput.removeDriveAndBldInf(currentComponent);
+             }
+             inWhatLog = true;
+         } else if (tagName.equals("export")) {
+             String text = SBSLogMetaDataInput.getAttribute("destination", streamReader);
+             log.debug("what log file in export: text: " + text);
+             if (text != null) {
+                 String member = SBSLogMetaDataInput.removeDriveAndBldInf(text);
+                 boolean exists = (new File(member)).exists();
+                 members.add(new Metadata.WhatLogMember(member, exists));
+             }
+         }
+         return false;
+     }
+
+     /**
+      * Process the endelement event of XML Stream from clean log.
+      * @param streamReader clean log xml stream reader to be processed
+      * @return true if there are any entry to be added.
+      */
+     public boolean endElement (XMLStreamReader streamReader) throws Exception {
+         String tagName = streamReader.getLocalName();
+         if (tagName.equals("whatlog")) {
+             log.debug("what log file in entry found returning true:");
+             inWhatLog = false;
+             if (members != null && !members.isEmpty()) {
+                 return true;
+             }
+         }
+         return false;
+     }
+
+     /**
+      * Internal function to find the CDATA text of the file attribute.
+      * @param streamReader clean log xml stream reader to be processed
+      * @return the CDATA text of <file> tag.
+      */
+     private String characters(XMLStreamReader xmlStreamReader) {
+         if (inWhatLog) {
+             String fullText = xmlStreamReader.getText();
+             String[] textList = fullText.split("\n");
+             for (String text : textList) {
+                 String member = getMember(text);
+                 if (member != null) {
+                     boolean exists = (new File(member)).exists();
+                     String actualText = SBSLogMetaDataInput.removeDriveAndBldInf(member);
+                     members.add(new Metadata.WhatLogMember(actualText, exists));
+                 }
+             }
+         }
+         return null;
+     }
+     
+     private String getMember(String text) {
+         if (memberPattern.matcher(text).matches()) {
+             return text;
+         } else {
+             return null;
+         }
+     }
+     
+     public Metadata.WhatEntry getNext() {
+         return currentEntry;
+     }
+
+     /**
+      * Gets the next entry from the stream based on categorization.
+      * @return the category entry which is identified as categorized entry.
+      */
+     public boolean hasNext() throws Exception {
+         try {
+             boolean entryAvailable = false;
+             if (xmlStreamReader != null ) {
+                 while (xmlStreamReader.hasNext()) {
+                     int eventType = xmlStreamReader.next();
+                     switch (eventType) {
+                     case XMLEvent.START_ELEMENT:
+                         startElement(xmlStreamReader);
+                         break;
+                     case XMLEvent.END_ELEMENT:
+                         entryAvailable = endElement(xmlStreamReader);
+                         if (entryAvailable) {
+                             if (members != null && ! members.isEmpty()) {
+                                 currentEntry = new Metadata.WhatEntry (currentComponent, members);
+                                 if (!entryAdded) {
+                                     entryAdded = true;
+                                 }
+                                 return true;
+                             }
+                         }
+                         break;
+                     case XMLEvent.CHARACTERS:
+                         characters(xmlStreamReader);
+                         break;
+                     default:
+                         break;
+                     }
+                 }
+                 if (!entryAdded) {
+                     currentEntry = new Metadata.WhatEntry ("general", null);
+                     entryAdded = true;
+                     return true;
+                 }
+                 if (xmlStreamReader != null) {
+                     close();
+                 }
+             }
+         } catch ( Exception ex) {
+             log.debug("exception in categorization",ex);
+             throw ex;
+         }
+         return false;
+     }
+     /**
+      * Internal function to close the clean log file stream
+      */
+     private void close() {
+         try {
+             if (xmlStreamReader != null) {
+                 xmlStreamReader.close();
+                 xmlStreamReader = null;
+             }
+         } catch (Exception ex) {
+             log.debug("exception while closing xml stream",ex);
+         }
+     }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/src/com/nokia/helium/metadata/ant/types/TextLogMetaDataInput.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,148 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+
+package com.nokia.helium.metadata.ant.types;
+
+import java.io.*;
+import java.util.*;
+import org.apache.log4j.Logger;
+
+/**
+ * This Type is to specify and use the text logparser type to parse and store the data.
+ *
+ * <pre>
+ * &lt;hlm:metadatafilterset id="text_log_metadata_input"&gt;
+ *    &lt;metadatafilterset filterfile="${project.dir}/../data/common.csv" /&gt;
+ * &lt;/hlm:metadatafilterset&gt;
+ * 
+ * &lt;hlm:textmetadatainput&gt;
+ *    &lt;fileset dir="${project.dir}/../data/"&gt;
+ *        &lt;include name="*_fixslashes*.log"/&gt;
+ *    &lt;/fileset&gt;
+ *    &lt;metadatafilterset refid="text_log_metadata_input" /&gt;
+ * &lt;/hlm:textmetadatainput&gt;
+ * </pre>
+ * 
+ * @ant.task name="textmetadatainput" category="Metadata"
+ */
+public class TextLogMetaDataInput extends LogMetaDataInput {
+
+    private Logger log = Logger.getLogger(TextLogMetaDataInput.class);
+    
+    private int lineNumber;
+    
+    private BufferedReader currentReader;
+
+    /**
+     * Constructor
+     */
+    public TextLogMetaDataInput() {
+        
+    }
+
+    /**
+     * Helper function to set the line number
+     * @param lineNo to be set for the entry
+     */
+    protected void setLineNumber(int lineNo) {
+        lineNumber = lineNo;
+    }
+
+    /**
+     * Helper function to return the line number of this entry.
+     * @return line number of the entry.
+     */
+    protected int getLineNumber() {
+        return lineNumber;
+    }
+
+    /**
+     * Helper function to set the reader of this stream
+     * @param reader to process the stream.
+     */
+    protected void setCurrentReader(BufferedReader reader) {
+        currentReader = reader;
+    }
+
+    /**
+     * Function to check if is there any additionaly entry. This is being used for example during streaming
+     * recorded and at the end of streaming use the recorded data to add any additional entry. Used by
+     * @return true if there are any additional entries which are to be recorded in the database.
+     */
+    public boolean isAdditionalEntry() {
+        return false;
+    }
+
+    /**
+     * Helper function to return the lbuffer reader for the current meta data input
+     * @return buffer reader object for the current metadata input.
+     */
+    protected BufferedReader getCurrentReader() {
+        return currentReader;
+    }
+
+    public boolean isEntryCreated(File currentFile) throws Exception {
+        String exceptions = "";
+        try {
+            if (currentReader == null) {
+                lineNumber = 0;
+                log.debug("Current Text log file name:" + currentFile);
+                log.debug("Processing file: " + currentFile);
+                currentReader = new BufferedReader(new FileReader(currentFile));
+            }
+            String logText = null;
+            while ((logText = currentReader.readLine()) != null) {
+                logText = logText.replaceFirst("^[ ]*\\[.+?\\][ ]*", "");
+                String severity = getSeverity(logText);
+                if (severity != null) {
+                    addEntry(severity, currentFile.getName(), currentFile.toString(), 
+                            lineNumber, logText );
+                    lineNumber ++;
+                    return true;
+                }
+            }
+            currentReader.close();
+            currentReader = null;
+            if (isAdditionalEntry()) {
+                return true;
+            }
+        } catch (Exception ex) {
+            log.debug("Exception in TextLogMetadata", ex);
+            try {
+                currentReader.close();
+                currentReader = null;
+            } catch (Exception ex1) {
+                // We are Ignoring the errors as no need to fail the build.
+                log.debug("Exception in TextLogMetadata", ex1);
+                try {
+                    currentReader.close();
+                } catch ( IOException iex) {
+                 // We are Ignoring the errors as no need to fail the build.
+                    log.debug("Exception in closing reader", iex);
+                }
+                currentReader = null;
+                exceptions = exceptions + ex.getMessage() + "\n";
+                return false;
+            }
+        }
+        if (!exceptions.equals("")) {
+            throw new Exception(exceptions);
+        }
+        
+        return false;
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/src/com/nokia/helium/metadata/ant/types/XMLLogMetaDataInput.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,137 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+
+package com.nokia.helium.metadata.ant.types;
+
+import java.io.*;
+import java.util.*;
+import org.apache.log4j.Logger;
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamReader;
+import javax.xml.stream.events.XMLEvent;
+
+
+/**
+ * This Type abstract base class for all the types based on
+ * XML processing.
+ */
+abstract class XMLLogMetaDataInput extends LogMetaDataInput {
+
+    private Logger log = Logger.getLogger(XMLLogMetaDataInput.class);
+
+    private XMLInputFactory xmlInputFactory;
+
+    private XMLStreamReader xmlStreamReader;
+    
+    private boolean inParsing;
+    
+
+    /**
+     * Constructor
+     */
+    public XMLLogMetaDataInput() {
+        try {
+            inParsing = true;
+            xmlInputFactory = XMLInputFactory.newInstance();
+            xmlInputFactory.setProperty(XMLInputFactory.IS_REPLACING_ENTITY_REFERENCES,Boolean.TRUE);
+            xmlInputFactory.setProperty(XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES,Boolean.FALSE);
+            xmlInputFactory.setProperty(XMLInputFactory.IS_COALESCING , Boolean.TRUE);
+        } catch (Exception ex) {
+         // We are Ignoring the errors as no need to fail the build.
+            log.debug("Exception while initializing stax processing",ex);
+        }
+    }
+    
+    /**
+     * Closes the xml stream
+     */
+    private void close() {
+        try {
+            if (xmlStreamReader != null) {
+                xmlStreamReader.close();
+                xmlStreamReader = null;
+            }
+        } catch (Exception ex) {
+         // We are Ignoring the errors as no need to fail the build.
+            log.debug("Exception while closing xml stream", ex);
+        }
+        
+    }
+
+    /**
+     * Function to check from the input stream if is there any entries available.
+     * @param file for which the contents needs to be parsed for errors
+     * @return true if there are any entry available otherwise false.
+     */
+    boolean isEntryCreated(File currentFile) throws Exception {
+        boolean entryCreated = false;
+        if (inParsing ) {
+            if (xmlStreamReader == null) {
+                log.debug("Processing file: " + currentFile);
+                xmlStreamReader = xmlInputFactory.createXMLStreamReader(
+                        currentFile.toString(), new BufferedInputStream(new FileInputStream(currentFile)));
+            }
+            int eventType = xmlStreamReader.getEventType();
+            while (xmlStreamReader.hasNext()) {
+                eventType = xmlStreamReader.next();
+                switch (eventType) {
+                case XMLEvent.START_ELEMENT:
+                    entryCreated = startElement(xmlStreamReader);
+                    break;
+                case XMLEvent.END_ELEMENT:
+                    entryCreated = endElement(xmlStreamReader);
+                    break;
+                case XMLEvent.CHARACTERS:
+                    entryCreated = characters(xmlStreamReader);
+                    break;
+                default:
+                    break;
+                }
+                if ( entryCreated) {
+                    return true; 
+                }
+            }
+            if (xmlStreamReader != null) {
+                close();
+            }
+            inParsing = false;
+        }
+        return false;
+    }
+
+
+    /**
+     * Function implemented by the subclasses to process the start event of xml stream callback.
+     * @param streamReader: the input stream reader which contains the xml data to be parsed for recording data.
+     * @return true if there are any element to be added to the database.
+     */
+    abstract boolean startElement (XMLStreamReader streamReader) throws Exception ;
+
+    /**
+     * Function implemented by the subclasses to process the end event of xml stream callback.
+     * @param streamReader: the input stream reader which contains the xml data to be parsed for recording data.
+     * @return true if there are any element to be added to the database.
+     */
+    abstract boolean endElement(XMLStreamReader streamReader) throws Exception;
+
+    /**
+     * Function implemented by the subclasses to process the characters event of xml stream callback.
+     * @param streamReader: the input stream reader which contains the xml data to be parsed for recording data.
+     * @return true if there are any element to be added to the database.
+     */
+    abstract boolean characters (XMLStreamReader streamReader) throws Exception;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/src/com/nokia/helium/metadata/db/MetaDataDb.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,619 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+package com.nokia.helium.metadata.db;
+
+import java.io.File;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.sql.ResultSet;
+import java.sql.ResultSetMetaData;
+
+import org.apache.log4j.Logger;
+import org.apache.tools.ant.BuildException;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+
+/**
+ * A database for storing metadata about build log information.
+ */
+public class MetaDataDb
+{
+    private static Logger log = Logger.getLogger(MetaDataDb.class);
+
+    private static final String DRIVER_CLASS_NAME = "org.sqlite.JDBC";
+
+    private static final String URL_PREFIX = "jdbc:sqlite:/";
+
+    private static final int LOG_ENTRY_CACHE_LIMIT = 500;
+
+    private static final int DB_SCHEMA_VERSION = 1;
+
+
+    private static final String[] INIT_TABLES = {
+        "CREATE TABLE schema (version INTEGER default " + DB_SCHEMA_VERSION + ")", 
+        "CREATE TABLE metadata (priority_id INTEGER, component_id INTEGER, line_number INTEGER, data TEXT, logpath_id INTEGER)", 
+        "CREATE TABLE component (id INTEGER PRIMARY KEY,component TEXT, logPath_id INTEGER, UNIQUE (logPath_id,component))", 
+        "CREATE TABLE priority (id INTEGER PRIMARY KEY,priority TEXT)", 
+        "CREATE TABLE logfiles (id INTEGER PRIMARY KEY, path TEXT)",
+        "CREATE TABLE componenttime (cid INTEGER PRIMARY KEY, time DOUBLE default 0, UNIQUE (cid))"
+    };
+
+    private static final String INSERT_METADATA_ENTRY = "INSERT INTO metadata VALUES(?, ?, ?, ?, ?)";
+    private static final String INSERT_LOGENTRY = "INSERT or IGNORE INTO logfiles VALUES(?, ?)";
+    private static final String INSERT_PRIORITYENTRY = "INSERT INTO priority VALUES(?, ?)";
+    private static final String INSERT_COMPONENTENTRY = "INSERT or IGNORE INTO component VALUES(?, ?, ?) ";;
+    private static final String INSERT_COMPONENT_TIME = "INSERT or IGNORE INTO componenttime VALUES(?, ?)";
+    
+    private String dbPath;
+
+    private String url;
+
+    private boolean statementsInitialized;
+
+    private Connection connection;
+
+    private Connection readConnection;
+
+    private PreparedStatement insertMetaDataEntryStmt;
+    private PreparedStatement insertLogEntryStmt;
+    private PreparedStatement insertComponentStmt;
+    private PreparedStatement insertComponentTimeStmt;
+    
+    private int entryCacheSize;
+
+    /**
+     * Opens or creates a database and initialises the tables.
+     * 
+     * @param databasePath The path to the database
+     */
+    public MetaDataDb(String databasePath)
+    {
+        dbPath = databasePath;
+        url = URL_PREFIX + dbPath;
+        try
+        {
+            Class.forName(DRIVER_CLASS_NAME);
+        }
+        catch (java.lang.ClassNotFoundException e)
+        {
+            throw new BuildException("JDBC Driver could not be found");
+        }
+        
+        synchronized (MetaDataDb.class) {
+            // See if the database needs to be initialized
+            boolean initializeDatabase = false;
+            File dbFile = new File(dbPath);
+            if (!dbFile.exists())
+            {
+                initializeDatabase = true;
+            } else {
+                try {
+                    log.debug("checking for schema version of db");
+                    initializeConnection();
+                    Statement stmt = connection.createStatement();
+                    ResultSet rs = stmt.executeQuery("select version from schema");
+                    int version = -1;
+                    if ( rs.next()) {
+                        version = rs.getInt(1);
+                    }
+                    rs.close();
+                    stmt.close();
+                    log.debug("schema version of db:" + version);
+                    if (version != DB_SCHEMA_VERSION) {
+                        log.debug("Schema Not matched deleting db file");
+                        dbFile.delete();
+                        initializeDatabase = true;
+                    }
+                    finalizeConnection();
+                } catch (SQLException ex) {
+                    try {
+                        finalizeConnection();
+                    } catch (SQLException ex1) {
+                        throw new BuildException("Exception while finalizing Metadata database. ", ex1);
+                    }
+                    // We are Ignoring the errors as no need to fail the build.
+                    log.debug("Exception checking schema for db", ex);
+                    dbFile.delete();
+                    initializeDatabase = true;
+                }
+            }
+            try
+            {
+                initializeConnection();
+                connection.setAutoCommit(false);
+                if (initializeDatabase)
+                {
+                    Statement statement = connection.createStatement();
+                    //statement.setQueryTimeout(60);
+                    // Create tables
+                    for (int i = 0; i < INIT_TABLES.length; i++)
+                    {
+                        statement.addBatch(INIT_TABLES[i]);
+                    }
+    
+                    // Fill out the priority table
+                    Priority[] priorityValues = Priority.values();
+                    for (int i = 0; i < priorityValues.length; i++)
+                    {
+                        statement.addBatch("INSERT INTO priority (priority) VALUES (\""
+                                + priorityValues[i] + "\")");
+                    }
+                    statement.addBatch("INSERT INTO schema (version) VALUES (\"" + DB_SCHEMA_VERSION + " \")");
+                    statement.addBatch("create unique index logfile_unique_1 on logfiles (path)");
+    
+                    int[] returnCodes = statement.executeBatch();
+                    connection.commit();
+                    connection.setAutoCommit(false);
+                    statement.close();
+                    finalizeConnection();
+                }
+            }
+            catch (SQLException e)
+            {
+                throw new BuildException("Problem while initializing Metadata database. ", e);
+            }
+        }
+    }    
+
+    /** Levels of log entry types. */
+    public enum Priority
+    {
+        // The values assigned to these enums should match the 
+        // automatically assigned values created in the database table
+        FATAL(1), ERROR(2), WARNING(3), INFO(4), REMARK(5), DEFAULT(6), CRITICAL(7);
+        private final int value;
+        Priority(int value)
+        {
+            this.value = value;
+        }
+        public int getValue() {
+            return value;
+        }
+
+        public  static Priority getPriorityEnum( int i ) {
+            final Priority[] values  = values();
+            return i >= 0 && i < values .length ? values[i] : FATAL;
+        }
+    };
+
+
+    /**
+     * Helper class to store the log entry , used to write to the database
+     * 
+     * @param databasePath The path to the database
+     */
+    public static class LogEntry
+    {
+        private String text;
+
+        private Priority priority;
+
+        private String component;
+        
+        private int lineNumber;
+        
+        private String logPath;
+        
+        private float elapsedTime;
+        
+        private String priroityText;
+
+    /**
+     * Constructor for the helper class 
+     */
+        public LogEntry(String text, Priority priority, String component, 
+                String logPath, int lineNumber, float time)
+        {
+            this.text = text;
+            this.priority = priority;
+            this.component = component;
+            this.lineNumber = lineNumber;
+            this.logPath = logPath;
+            this.elapsedTime = time;
+        }
+
+    /**
+     * Constructor for the helper class 
+     */
+        public LogEntry(String text, Priority priority, String component, 
+                String logPath, int lineNumber)
+        {
+            this(text, priority, component, logPath, lineNumber, -1);
+        }
+
+    /**
+     * Constructor for the helper class 
+     */
+        public LogEntry(String text, String priorityTxt, String component, String logPath, 
+                int lineNumber, float time) throws Exception
+        {
+            Priority prty = null;
+            String prtyText = priorityTxt.trim().toLowerCase();
+            priroityText =  prtyText;
+            if (prtyText.equals("error")) {
+                prty = Priority.ERROR;
+            } else if (prtyText.equals("warning")) {
+                prty = Priority.WARNING;
+            } else if (prtyText.equals("fatal")) {
+                prty = Priority.FATAL;
+            } else if (prtyText.equals("info")) {
+                prty = Priority.INFO;
+            } else if (prtyText.equals("remark")) {
+                prty = Priority.REMARK;
+            } else if (prtyText.equals("default")) {
+                prty = Priority.DEFAULT;
+            } else if (prtyText.equals("critical")) {
+                prty = Priority.CRITICAL;
+            } else {
+                log.debug("Error: priority " + prtyText + " is not acceptable by metadata and set to Error");
+                prty = Priority.ERROR;
+                priroityText =  "error";
+                //throw new Exception("priority should not be null");
+            }
+
+            this.logPath = logPath;
+            this.text = text;
+            priority = prty;
+            
+            this.component = component;
+            this.lineNumber = lineNumber;
+            this.elapsedTime = time;
+        }
+
+    /**
+     * Constructor for the helper class 
+     */
+        public LogEntry(String text, String priorityTxt, String component, String logPath, 
+                int lineNumber) throws Exception
+        {
+            this(text, priorityTxt, component, logPath, lineNumber, -1);
+        }
+
+    /**
+     * Helper function to return to getLogPath
+     * @
+     */
+
+        public String getLogPath()
+        {
+            return logPath;
+        }
+
+        
+        public int getLineNumber()
+        {
+            return lineNumber;
+        }
+        
+        public String getText()
+        {
+            return text;
+        }
+
+        public void setText(String text)
+        {
+            this.text = text;
+        }
+
+        public Priority getPriority()
+        {
+            return priority;
+        }
+
+        public String getPriorityText() {
+            return priroityText;
+        }
+        
+        public double getElapsedTime() {
+            return elapsedTime;
+        }
+
+        public void setPriority(Priority priority)
+        {
+            this.priority = priority;
+        }
+
+        public String getComponent()
+        {
+            return component;
+        }
+
+        public void setComponent(String component)
+        {
+            this.component = component;
+        }
+
+    }
+
+    public void initializeConnection() throws SQLException {
+        new File(dbPath).getParentFile().mkdirs();
+        connection = DriverManager.getConnection(url);
+    }
+
+
+    public void finalizeStatements() throws SQLException {
+        if (statementsInitialized) {
+            if ( entryCacheSize > 0) {
+                entryCacheSize = 0;
+                writeLogDataToDB();
+            }
+            insertLogEntryStmt.close();
+            insertComponentStmt.close();
+            insertMetaDataEntryStmt.close();
+        }
+    }
+    
+    private void finalizeConnection() throws SQLException {
+        if (connection != null) {
+            connection.close();
+        }
+    }
+
+    public void finalizeDB() {
+        try {
+            synchronized (MetaDataDb.class) {
+                finalizeStatements();
+                finalizeConnection();
+            }
+        } catch (SQLException ex) {
+            // We are Ignoring the errors as no need to fail the build.
+            log.debug("Exception while finalizing the Metadata database. ", ex);
+        }
+    }
+    
+    /*
+     *  Todo: Further Optimize to merge with getRecords and also use
+     *  primary key instead of the first column as index. 
+     */
+    //Note: Always the query should be in "/" format only
+    public Map<String, List<String>> getIndexMap(String query) {
+        Map<String, List<String>> indexMap = new LinkedHashMap<String, List<String>>();
+        try {
+            initializeConnection();
+            Statement stmt = connection.createStatement();
+            ResultSet rs = stmt.executeQuery(query);
+            ResultSetMetaData rsmd = rs.getMetaData();
+            int numberOfColumns = rsmd.getColumnCount();
+            if (rs.isBeforeFirst()) {
+                while (rs.next()) {
+                    List<String> dataList = new ArrayList<String>();
+                    String key = null;
+                    for (int i = 1; i <= numberOfColumns; i++) {
+                        String data = null;
+                        int type = rsmd.getColumnType(i);
+                        if (type == java.sql.Types.INTEGER ) {
+                            data = "" + rs.getInt(i);
+                        } else if (type == java.sql.Types.DOUBLE ) {
+                            data = "" + rs.getDouble(i);
+                        } else {
+                            data = rs.getString(i);
+                        }
+                        if ( i == 1) {
+                            key = data;
+                        } else {
+                            dataList.add(data);
+                        }
+                    }
+                    indexMap.put(key, dataList);
+                }
+            }
+            stmt.close();
+            finalizeConnection();
+        } catch (Exception ex) {
+            // We are Ignoring the errors as no need to fail the build.
+            log.debug("Warning: Exception while getting the index map", ex);
+        }
+        return indexMap;
+    }
+
+    //Note: Always the query should be in "/" format only
+    public List<Map<String, Object>> getRecords(String query) {
+        List<Map<String, Object>> rowList = new ArrayList<Map<String, Object>>();
+        try {
+            initializeConnection();
+            Statement stmt = connection.createStatement();
+            ResultSet rs = stmt.executeQuery(query);
+            ResultSetMetaData rsmd = rs.getMetaData();
+
+            int numberOfColumns = rsmd.getColumnCount();
+            List<String> columnNames = new ArrayList<String>();
+            for (int i = 1; i <= numberOfColumns; i++) {
+                columnNames.add(rsmd.getColumnName(i));
+            }
+            if (rs.isBeforeFirst()) {
+                while (rs.next()) {
+                    Map<String, Object> recordMap = new LinkedHashMap<String, Object>();
+                    for (int i = 1; i <= numberOfColumns; i++) {
+                        int type = rsmd.getColumnType(i);
+                        String columnName = columnNames.get(i - 1);
+                        if (type == java.sql.Types.INTEGER ) {
+                            Integer data = new Integer(rs.getInt(i));
+                            recordMap.put(columnName, data);
+                        } else {
+                            String data = rs.getString(i);
+                            recordMap.put(columnName, data );
+                        }
+                    }
+                    rowList.add(recordMap);
+                }
+            }
+            stmt.close();
+            finalizeConnection();
+        } catch (Exception ex) {
+            // We are Ignoring the errors as no need to fail the build.
+            log.warn("Warning: Exception while getting the record details", ex);
+        }
+        return rowList;
+    }
+
+    public List<Map<String, Object>> getRecords(String query, int recordLimit, int offsetValue) {
+        String updatedQuery = query + " limit " + recordLimit + " offset " 
+            + offsetValue + ";";
+        return getRecords(updatedQuery);
+    }
+
+    /*
+     * Two ways to update the metadata table for log id and component id.
+     * 1. Get the last inserted record for metadata and update the individual
+     * id by multiple update calls.
+     * 2. Get all the ids and insert the record in metadata table. In this case
+     * all the ids should be present in respective table before te insertion is
+     * happened. The main reason why is done with 2. approach is that
+     * while executing prepared statement, the getGeneratedKey() (which returns
+     * the last inserted record, function cannot be executed during batch execution.
+     * @param entries - entries for which the log and component table needs to be updated.
+     */
+    private void updateIndexTables(LogEntry entry) throws SQLException
+    {
+        connection.setAutoCommit(false);
+        insertLogEntryStmt.setNull(1, 4);
+        insertLogEntryStmt.setString(2, entry.getLogPath());
+        insertLogEntryStmt.addBatch();
+        insertLogEntryStmt.executeBatch();
+        connection.commit();
+        readConnection = DriverManager.getConnection(url);
+        readConnection.setAutoCommit(false);
+        Statement stmt = readConnection.createStatement();
+        ResultSet rs = stmt.executeQuery("select id from logfiles where path='" +
+                entry.getLogPath().trim() + "'");
+        int logPathId = 0;
+        if ( rs.next()) {
+            logPathId = rs.getInt(1);
+        }
+        stmt.close();
+        readConnection.close();
+        insertComponentStmt.setNull(1, 4);
+        insertComponentStmt.setString(2, entry.getComponent());
+        insertComponentStmt.setInt(3, logPathId);
+        insertComponentStmt.addBatch();
+        insertComponentStmt.executeBatch();
+        connection.commit();
+        insertLogEntryStmt.clearBatch();
+        insertComponentStmt.clearBatch();
+    }
+
+    private void writeLogDataToDB() throws SQLException {
+        insertMetaDataEntryStmt.executeBatch();
+        connection.commit();
+        insertMetaDataEntryStmt.clearBatch();
+    }
+    
+    public void removeLog(String log) throws Exception
+    {
+        initializeConnection();
+        Statement stmt = connection.createStatement();
+        stmt.executeUpdate("DELETE FROM metadata WHERE logpath_id IN (SELECT id from metadata, logfiles WHERE logfiles.id=metadata.logpath_id and logfiles.path='" + log + "')");
+        stmt.close();
+    }
+    
+    public void removeEntries(List<String> logPathList) throws Exception {
+        initializeConnection();
+        Statement stmt = connection.createStatement();
+        for (String logPath : logPathList) {
+            log.debug("logpath for delete: " + logPath);
+            log.debug("logpath delete query1 " + "DELETE FROM metadata WHERE logpath_id IN (SELECT id from logfiles WHERE path like '" + logPath + "')");
+            stmt.executeUpdate("DELETE FROM metadata WHERE logpath_id IN (SELECT id from logfiles WHERE path like '%" + logPath + "%')");
+            log.debug("logpath for delete2: " + "DELETE FROM component_time WHERE cid IN (select id from component where logpath_id in (select id from logfiles where path like '%" + logPath + "%'))");
+            stmt.executeUpdate("DELETE FROM componenttime WHERE cid IN (select id from component where logpath_id in (select id from logfiles where path like '%" + logPath + "%'))");
+            log.debug("logpath for delete3: " + "DELETE FROM component WHERE logpath_id IN (select id from logfiles where path like '%" + logPath + "%')");
+            stmt.executeUpdate("DELETE FROM component WHERE logpath_id IN (select id from logfiles where path like '%" + logPath + "%')");
+            log.debug("logpath for delete: " + "DELETE FROM logfiles WHERE path like ('%" + logPath + "%')");
+            stmt.executeUpdate("DELETE FROM logfiles WHERE path like ('%" + logPath + "%')");
+        }
+        stmt.close();
+        finalizeConnection();
+    }
+    
+    public void addLogEntry(LogEntry entry) throws Exception
+    {
+       synchronized (MetaDataDb.class) {
+            try {
+                if (!statementsInitialized) {
+                    log.debug("Initializing statements for JDBC");
+                    initializeConnection();
+                    insertMetaDataEntryStmt = connection.prepareStatement(INSERT_METADATA_ENTRY);
+                    insertLogEntryStmt = connection.prepareStatement(INSERT_LOGENTRY);
+                    insertComponentStmt = connection.prepareStatement(INSERT_COMPONENTENTRY);
+                    insertComponentTimeStmt = connection.prepareStatement(INSERT_COMPONENT_TIME);
+                    statementsInitialized = true;
+                }
+                connection.setAutoCommit(false);
+                updateIndexTables(entry);
+                double time = entry.getElapsedTime();
+                int logPathId = 0;
+                int componentId = 0;
+                Statement stmt = null;
+                ResultSet rs = null;
+                if ((time != -1) || entry.getPriority() != Priority.DEFAULT) {
+                    readConnection = DriverManager.getConnection(url);
+                    stmt = readConnection.createStatement();
+                    rs = stmt.executeQuery("select id from logfiles where path='" +
+                            entry.getLogPath().trim() + "'");
+                    if ( rs.next()) {
+                        logPathId = rs.getInt(1);
+                    }
+                    rs.close();
+                    stmt.close();
+                    insertMetaDataEntryStmt.setInt(5, logPathId);
+                    stmt = readConnection.createStatement();
+                    rs = stmt.executeQuery("select id from component where component='" + 
+                            entry.getComponent() + "' and logpath_id='" + logPathId + "'");
+                    if ( rs.next()) {
+                        componentId = rs.getInt(1);
+                    }
+                    rs.close();
+                    stmt.close();
+                }
+                if (time != -1) {
+                    connection.setAutoCommit(false);
+                    insertComponentTimeStmt.setInt(1, componentId);
+                    insertComponentTimeStmt.setDouble(2, 0);
+                    insertComponentTimeStmt.addBatch();
+                    insertComponentTimeStmt.executeBatch();
+                    connection.commit();
+                    insertComponentTimeStmt.clearBatch();
+                    stmt = readConnection.createStatement();
+                    stmt.executeUpdate("UPDATE componenttime SET time= (time  + " + time + 
+                        ") WHERE cid = " + componentId );
+                    stmt.close();
+                    readConnection.close();
+                }
+                if ( entry.getPriority() != Priority.DEFAULT) {
+                    insertMetaDataEntryStmt.setInt(1, entry.getPriority().getValue());
+                    insertMetaDataEntryStmt.setInt(2, componentId);
+                    insertMetaDataEntryStmt.setInt(3, entry.getLineNumber());
+                    insertMetaDataEntryStmt.setString(4, entry.getText());
+                    insertMetaDataEntryStmt.addBatch();
+                    entryCacheSize ++;
+                    if (entryCacheSize >= LOG_ENTRY_CACHE_LIMIT) {
+                        writeLogDataToDB();
+                        entryCacheSize = 0;
+                    }
+                }
+            } catch (SQLException ex) {
+                throw new BuildException("Exception while writing the records into Metadata DB", ex);
+            } catch (Exception ex1) {
+                throw new BuildException("Exception while writing the records into Metadata DB", ex1);
+            }
+        }
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/src/com/nokia/helium/metadata/db/ORMMetadataDB.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,68 @@
+/*
+ * Copyright (c) 2007-2008 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:
+ *
+ */
+
+package com.nokia.helium.metadata.db;
+
+
+import com.nokia.helium.jpa.entity.metadata.MetadataUtil;
+import java.io.File;
+import org.apache.log4j.Logger;
+import com.nokia.helium.jpa.entity.metadata.Metadata;
+
+/**
+ * Database class to write the contents to the database.
+ */
+public class ORMMetadataDB {
+
+    private static Logger log = Logger.getLogger(ORMMetadataDB.class);
+
+    private static final int LOG_ENTRY_CACHE_LIMIT = 500;
+
+    private static final int DB_SCHEMA_VERSION = 1;
+
+    private String dbPath;
+    
+    public ORMMetadataDB(String databasePath) {
+        log.debug("initializing ORMMetadataDB: dbPath: " + databasePath);
+        //mainly for dragonfly server
+        File actualPath = new File(databasePath);
+        String fileName = actualPath.getName();
+        dbPath = new File(actualPath.getParent(), fileName.toLowerCase()).getPath();
+        MetadataUtil.initializeORM(dbPath);
+    }
+
+    public void addLogEntry(Metadata.LogEntry entry) {
+        //log.debug("addLogEntry : priority : " + entry.getPriorityText());
+        //log.debug("addLogEntry : component : " + entry.getComponent());
+        //log.debug("addLogEntry : line number : " + entry.getLineNumber());
+        //log.debug("addLogEntry : text : " + entry.getText());
+            MetadataUtil.addEntry(dbPath, entry);
+    }
+
+    public void removeEntries(String logPath) {
+        MetadataUtil.removeEntries(dbPath, logPath);
+    }
+
+    public void finalizeMetadata(String logPath) {
+        MetadataUtil.finalizeMetadata(logPath);
+    }
+
+    public void finalizeDB() {
+        MetadataUtil.finalizeORM(dbPath);
+    }
+
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/src/templates/build_status.xml.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,35 @@
+<#--
+============================================================================ 
+Name        : email.html.ftl 
+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:
+
+============================================================================
+-->
+<?xml version="1.0" encoding="utf-8"?>
+<build-status>
+    <#assign table_info = pp.loadData('com.nokia.helium.metadata.SQLFMPPLoader',
+        "${dbPath}") >
+<#assign priority_table = table_info['select * from priority'] >
+<#assign priority_ids = priority_table?keys>
+
+<#list priority_ids as priority>
+    <#assign priority_count = table_info['select count(data) as COUNT from metadata where priority_id = ${priority} and logpath_id in (select id from logfiles where path like \'%${logfile}%\')'][0]['COUNT'] >
+    <#if (priority_count >= 0)>
+        <${priority_table['${priority}']?lower_case} count= "${priority_count}">
+    </#if>
+</#list>
+</build-status>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/src/templates/cc_summary.html.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,119 @@
+<#--
+============================================================================ 
+Name        : cc_summary.html.ftl 
+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:
+
+============================================================================
+-->
+
+    <#assign table_info = pp.loadData('com.nokia.helium.metadata.SQLFMPPLoader',
+        "${dbPath}") >
+ 
+<h1>${ant['build.id']}</h1>
+
+<#if ant?keys?seq_contains('publish')>
+    <#if ant?keys?seq_contains('publish.dir.list')>
+        <h2>Publish locations</h2>
+        <p>
+        <#list ant['publish.dir.list']?split(',') as site>
+          <a href="${site}">${site}</a></br>
+        </#list>
+        </p>
+    <#else>
+        <#if ant?keys?seq_contains('publish.dir')>
+        <h2>Publish locations</h2>
+        <p><a href="${ant['publish.dir']}">${ant['publish.dir']}</a></p>
+        </#if>
+    </#if>
+</#if>
+
+<#assign ccm_logpath_table = table_info['select * from logfiles where path like \'%_ccm_get_input.log%\''] >
+
+<#assign logpath_id = ccm_logpath_table?keys>
+<#list logpath_id as logpath>
+<#assign metadata_ccm_records = table_info['select * from metadata where logpath_id = ${logpath} and (priority_id = (select id from priority where priority=\'ERROR\')  or priority_id = (select id from priority where priority=\'WARNING\'))'] >
+<h2>Synergy errors</h2>
+    <p>
+    <#list metadata_ccm_records as recordentry>
+        ${recordentry['data']}
+    </#list>
+    </p>
+</#list>
+
+<h2>Build errors</h2>
+<#assign compile_logpath_table = table_info['select * from logfiles where (path like \'%_compile.log\'  and path not like \'%_clean_compile.log\')'] >
+<#assign colors = {'error': 'FF0000', 'critical': 'FF7000', 'warning': 'FFF000', 'remark': '0000FF'}/>
+
+<table border="1" cellpadding="0" cellspacing="0" width="100%">
+<tr>
+    <th width="55%">Component</th>
+    <th width="15%">Errors</th>
+    <th width="15%">Criticals</th>
+    <th width="15%">Warnings</th>
+    <th width="15%">Notes</th>
+</tr>
+<#assign logpath_id = compile_logpath_table?keys>
+<#list logpath_id as logpath>
+    <#assign component_table = table_info['select id, component from component where logPath_id=${logpath}'] >
+    <#assign component_ids = component_table?keys?sort >
+
+<#list component_ids as component_id>
+<tr>
+<td>"${component_table['${component_id}']}"</td>
+    <#list colors?keys as type>
+        <#assign count = "${table_info['select count(data) as COUNT from metadata where logpath_id=${logpath} and (priority_id = (select id from priority where priority like \"${type}\"))'][0]['COUNT']}" >
+        <#if ( count?number &gt; 0)>
+<td align="center" bgcolor="#${colors[type]}">${count}</td>
+        <#else>
+<td align="center">0</td>
+        </#if>
+    </#list>
+</tr>
+</#list>
+</#list>
+</table>
+
+<#assign rom_logpath_table = table_info['select * from logfiles where (path like \'%roms.log\')'] >
+<#assign logpath_id = rom_logpath_table?keys>
+<#list logpath_id as logpath>
+    <#assign romlog_table = table_info['select * from metadata where logpath_id = ${logpath}'] >
+    <h2>ROMs ${rom_logpath_table['${logpath}']}</h2>
+        <p>
+    <#list romlog_table as recordentry>
+        ${recordentry['data']}<br/>
+    </#list>
+        </p>
+</#list>
+
+<#assign policy_logpath_table = table_info['select * from logfiles where (path like \'%validate_policy.xml\')'] >
+<#assign logpath_id = policy_logpath_table?keys>
+<#list logpath_id as logpath>
+    <#assign policy_table = table_info['select * from metadata where logpath_id = ${logpath}'] >
+        <h2>Distribution Policy validation</h2>
+        <p>
+        <#list policy_table as recordentry>
+            ${recordentry['data']}<br/>
+        </#list>
+        </p>
+</#list>
+
+<#if ant?keys?seq_contains('diamonds.build.id')>
+<p>
+<h2>ATS Test Results</h2>
+    <a href="http://${ant['diamonds.host']}${ant['diamonds.build.id']}#tab=4" >http://${ant['diamonds.host']}${ant['diamonds.build.id']}#tab=4 </a>
+</p>
+</#if>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/src/templates/cc_summary_metadata.html.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,119 @@
+<#--
+============================================================================ 
+Name        : cc_summary.html.ftl 
+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:
+
+============================================================================
+-->
+
+    <#assign table_info = pp.loadData('com.nokia.helium.metadata.SQLFMPPLoader',
+        "${dbPath}") >
+ 
+<h1>${ant['build.id']}</h1>
+
+<#if ant?keys?seq_contains('publish')>
+    <#if ant?keys?seq_contains('publish.dir.list')>
+        <h2>Publish locations</h2>
+        <p>
+        <#list ant['publish.dir.list']?split(',') as site>
+          <a href="${site}">${site}</a></br>
+        </#list>
+        </p>
+    <#else>
+        <#if ant?keys?seq_contains('publish.dir')>
+        <h2>Publish locations</h2>
+        <p><a href="${ant['publish.dir']}">${ant['publish.dir']}</a></p>
+        </#if>
+    </#if>
+</#if>
+
+<#assign ccm_logpath_table = table_info['select * from logfiles where path like \'%_ccm_get_input.log%\''] >
+
+<#assign logpath_id = ccm_logpath_table?keys>
+<#list logpath_id as logpath>
+<#assign metadata_ccm_records = table_info['select * from metadata where logpath_id = ${logpath} and (priority_id = (select id from priority where priority=\'ERROR\')  or priority_id = (select id from priority where priority=\'WARNING\'))'] >
+<h2>Synergy errors</h2>
+    <p>
+    <#list metadata_ccm_records as recordentry>
+        ${recordentry['data']}
+    </#list>
+    </p>
+</#list>
+
+<h2>Build errors</h2>
+<#assign compile_logpath_table = table_info['select * from logfiles where (path like \'%_compile.log\'  and path not like \'%_clean_compile.log\')'] >
+<#assign colors = {'error': 'FF0000', 'critical': 'FF7000', 'warning': 'FFF000', 'remark': '0000FF'}/>
+
+<table border="1" cellpadding="0" cellspacing="0" width="100%">
+<tr>
+    <th width="55%">Component</th>
+    <th width="15%">Errors</th>
+    <th width="15%">Criticals</th>
+    <th width="15%">Warnings</th>
+    <th width="15%">Notes</th>
+</tr>
+<#assign logpath_id = compile_logpath_table?keys>
+<#list logpath_id as logpath>
+    <#assign component_table = table_info['select id, component from component where logPath_id=${logpath}'] >
+    <#assign component_ids = component_table?keys?sort >
+
+<#list component_ids as component_id>
+<tr>
+<td>"${component_table['${component_id}']}"</td>
+    <#list colors?keys as type>
+        <#assign count = "${table_info['select count(data) as COUNT from metadata where logpath_id=${logpath} and (priority_id = (select id from priority where priority like \"${type}\"))'][0]['COUNT']}" >
+        <#if ( count?number &gt; 0)>
+<td align="center" bgcolor="#${colors[type]}">${count}</td>
+        <#else>
+<td align="center">0</td>
+        </#if>
+    </#list>
+</tr>
+</#list>
+</#list>
+</table>
+
+<#assign rom_logpath_table = table_info['select * from logfiles where (path like \'%roms.log\')'] >
+<#assign logpath_id = rom_logpath_table?keys>
+<#list logpath_id as logpath>
+    <#assign romlog_table = table_info['select * from metadata where logpath_id = ${logpath}'] >
+    <h2>ROMs ${rom_logpath_table['${logpath}']}</h2>
+        <p>
+    <#list romlog_table as recordentry>
+        ${recordentry['data']}<br/>
+    </#list>
+        </p>
+</#list>
+
+<#assign policy_logpath_table = table_info['select * from logfiles where (path like \'%validate_policy.xml\')'] >
+<#assign logpath_id = policy_logpath_table?keys>
+<#list logpath_id as logpath>
+    <#assign policy_table = table_info['select * from metadata where logpath_id = ${logpath}'] >
+        <h2>Distribution Policy validation</h2>
+        <p>
+        <#list policy_table as recordentry>
+            ${recordentry['data']}<br/>
+        </#list>
+        </p>
+</#list>
+
+<#if ant?keys?seq_contains('diamonds.build.id')>
+<p>
+<h2>ATS Test Results</h2>
+    <a href="http://${ant['diamonds.host']}${ant['diamonds.build.id']}#tab=4" >http://${ant['diamonds.host']}${ant['diamonds.build.id']}#tab=4 </a>
+</p>
+</#if>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/src/templates/diamonds_faults.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,54 @@
+<#--
+============================================================================ 
+Name        : macro.ftl 
+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:
+
+============================================================================
+--> 
+<#setting number_format="0">
+
+    <#assign table_info = pp.loadData('com.nokia.helium.metadata.SQLFMPPLoader',
+        "${dbPath}") >
+    <#assign priority_table = table_info['select * from priority'] >
+    <#assign logpath_table = table_info['select * from logfiles'] >
+    <#assign priority_ids = priority_table?keys>
+    <#assign logpath_id = logpath_table?keys>
+    <#assign components = table_info['select component from component where logPath_id=(select id from logfiles where path=\'${logpath}\')'] >
+    <faults>
+        <total severity="error">${table_info['select count(data) as COUNT from metadata where priority_id=(select id from priority where priority=\'ERROR\') and logpath_id=(select id from logfiles where path=\'${logpath}\')'][0]['COUNT']}</total>
+        <total severity="warning">${table_info['select count(data) as COUNT from metadata where priority_id=(select id from priority where priority=\'WARNING\') and logpath_id=(select logpath_id from logfiles where path=\'${logpath}\')'][0]['COUNT']}</total>
+        <total severity="warning_rvct_other">${table_info['select count(data) as COUNT from metadata where priority_id=(select id from priority where priority=\'WARNING\') and logpath_id=(select logpath_id from logfiles where path=\'${logpath}\')'][0]['COUNT']}</total>
+        <!-- todo update to calculate the correct value -->
+        <total severity="warning_rvct_bad">${table_info['select count(data) as COUNT from metadata where priority_id=(select id from priority where priority=\'REMARK\')'][0]['COUNT']}</total>
+    <#list components as component>
+        <component>
+            <name>${component['component']}</name>
+            <total severity="error">${table_info['select count(data) as COUNT from metadata where priority_id=(select id from priority where priority=\'ERROR\') and logpath_id=(select logpath_id from logfiles where path=\'${logpath}\')'][0]['COUNT']}</total>
+            <total severity="warning">${table_info['select count(data) as COUNT from metadata where priority_id=(select id from priority where priority=\'WARNING\') and logpath_id=(select logpath_id from logfiles where path=\'${logpath}\')'][0]['COUNT']}</total>
+            <total severity="critical">${table_info['select count(data) as COUNT from metadata where priority_id=(select id from priority where priority=\'REMARK\') and logpath_id=(select logpath_id from logfiles where path=\'${logpath}\')'][0]['COUNT']}</total>
+        </component>
+    </#list>
+
+    
+    </faults>
+    <components>
+    <#list components as component>
+    <!-- all components -->
+        <component>${component['component']}</component>
+    </#list>
+    </components>
+<#assign schema_version=10/>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/src/templates/diamonds_macro.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,52 @@
+<#--
+============================================================================ 
+Name        : macro.ftl 
+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:
+
+============================================================================
+--> 
+<#setting number_format="0">
+
+    <#assign table_info = pp.loadData('com.nokia.helium.metadata.SQLFMPPLoader',
+        "${dbPath}") >
+    <#assign priority_table = table_info['select * from priority'] >
+    <#assign logpath_table = table_info['select * from logfiles'] >
+    <#assign priority_ids = priority_table?keys>
+    <#assign logpath_id = logpath_table?keys>
+    <#assign components = table_info['select component from component where logPath_id=(select id from logfiles where path=\'${logpath}\')'] >
+    <faults>
+        <total severity="error">${table_info['select count(data) as COUNT from metadata where priority_id=(select id from priority where priority=\'ERROR\') and logpath_id=(select id from logfiles where path=\'${logpath}\')'][0]['COUNT']}</total>
+        <total severity="warning">${table_info['select count(data) as COUNT from metadata where priority_id=(select id from priority where priority=\'WARNING\') and logpath_id=(select logpath_id from logfiles where path=\'${logpath}\')'][0]['COUNT']}</total>
+        <total severity="warning_rvct_other">${table_info['select count(data) as COUNT from metadata where priority_id=(select id from priority where priority=\'WARNING\') and logpath_id=(select logpath_id from logfiles where path=\'${logpath}\')'][0]['COUNT']}</total>
+        <!-- todo update to calculate the correct value -->
+        <total severity="warning_rvct_bad">${table_info['select count(data) as COUNT from metadata where priority_id=(select id from priority where priority=\'REMARK\')'][0]['COUNT']}</total>
+    <#list components as component>
+        <component>
+            <name>${component['component']}</name>
+            <total severity="error">${table_info['select count(data) as COUNT from metadata where priority_id=(select id from priority where priority=\'ERROR\') and logpath_id=(select logpath_id from logfiles where path=\'${logpath}\')'][0]['COUNT']}</total>
+            <total severity="warning">${table_info['select count(data) as COUNT from metadata where priority_id=(select id from priority where priority=\'WARNING\') and logpath_id=(select logpath_id from logfiles where path=\'${logpath}\')'][0]['COUNT']}</total>
+            <total severity="critical">${table_info['select count(data) as COUNT from metadata where priority_id=(select id from priority where priority=\'REMARK\') and logpath_id=(select logpath_id from logfiles where path=\'${logpath}\')'][0]['COUNT']}</total>
+        </component>
+    </#list>
+    </faults>
+    <components>
+    <#list components as component>
+    <!-- all components -->
+        <component>${component['component']}</component>
+    </#list>
+    </components>
+<#assign schema_version=10/>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/src/templates/email_new.html.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,114 @@
+<#--
+============================================================================ 
+Name        : email.html.ftl 
+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:
+
+============================================================================
+-->
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html>
+  <head>
+  <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+    <title>
+      Build result e-mail from ${ant["env.COMPUTERNAME"]}.
+    </title>
+    <style type="text/css">
+        body{font-family:Verdana; font-size:10pt; line-height:1.1em; padding: 10px 10px; background-color:#E4F0F4;}
+        h1{
+          font-size:14pt;
+          color:#000;
+          padding: 20px 15px;
+              margin:0;
+         }
+        h2{font-size:12pt;}
+        h5{
+          font-size:10pt;
+          background-color:#8495BA;
+          color:#fff;
+          heigth:20pt;
+          padding: 5px 15px;
+          border-left:2px solid #5A6FA0;
+          border-bottom:2px solid #5A6FA0;
+          border-top:2px solid #98A6C6;
+          border-right:2px solid #98A6C6;
+          margin:0;
+         }
+ 
+  
+        p {
+          font-size:10pt;
+          padding: 0em 1em 1em 1em;
+          margin: 0 1em 0.5em 1em;
+          border-right:1px solid #5A6FA0;
+          border-top:0;
+          border-bottom:1px solid #98A6C6;
+          border-left:1px solid #98A6C6;
+          background-color:#CDE4EB;
+          white-space:normal;
+        }
+ 
+        .data{color:#00F;}
+        .okmessage{color:#24A22D;font-weight:bold; display:block; margin-bottom: 1em;padding-top: 1em;}
+        .errormessage{color:#F00;font-weight:bold; display:block; margin-bottom: 1em;padding-top: 1em;}
+ 
+        span.items{text-indent:-1em; padding-left: 1em; display:block; word-wrap:normal;}
+
+        span.bold{font-weight:bold; display:block; padding: 1em 0;}
+        p.maintext{padding-top: 1em;}
+        p.logfolder{color:#000;font-weight:bold; padding-top: 1em;}
+        p.distrib{font-weight:bold;}
+ 
+ 
+        a:link,a:visited{color:#00E;}
+        
+    </style>
+  </head>
+  <body>
+      <!-- The title -->
+      <div id="buildname">
+        <h1>This is an e-mail notification that a build has been completed on ${ant["env.COMPUTERNAME"]}</h1>
+      </div>
+
+    <#assign table_info = pp.loadData('com.nokia.helium.metadata.SQLFMPPLoader',
+        "${dbPath}") >
+
+<#assign error_count = table_info['select count(data) as COUNT from metadata where priority_id in (select id from priority where priority like \'ERROR\') and logpath_id in (select id from logfiles where path like \'%${logfile}%\')'][0]['COUNT'] >
+    <!-- section -->
+    <#macro create_section title type>
+           <div id="foldername">
+               <h5>${title}</h5>
+               <p class="maintext">
+                   <!-- content span -->
+                   <span class="${type}"><#nested></span>
+               </p>
+           </div>
+       </#macro>
+<#if (error_count > 0)>
+        <span class="errormessage">
+            ${logfile}...FAIL<br/>
+    <#list table_info['select * from metadata where priority_id in (select id from priority where priority like \'ERROR\') and logpath_id in (select id from logfiles where path like \'%${logfile}%\')'] as recordentry >
+            <ul>
+            ${recordentry['data']}<br/>
+            </ul>
+    </#list>
+        </span>
+<#else>
+    <span class="okmessage">${logfile}...OK<br/></span>
+</#if>
+</body>
+</html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/src/templates/general_category.txt.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,36 @@
+<#--
+============================================================================ 
+Name        : summary.html.ftl 
+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:
+
+============================================================================
+--> 
+
+    <#assign table_info = pp.loadData('com.nokia.helium.metadata.SQLFMPPLoader',
+        "${dbPath}") >
+
+
+
+<#assign logpath_table = table_info['select * from logfiles'] >
+<#assign logpath_id = logpath_table?keys>
+<#list logpath_id as logpath>
+    <#assign component_table = table_info['select id, component from component where logPath_id=${logpath}'] >
+    <#assign component_ids = component_table?keys?sort >
+    <#list component_ids as component_id >
+        component : ${component_table['${component_id}']} : logfile : ${logpath_table['${logpath}']}
+    </#list>
+</#list

>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/src/templates/macro/expand3.js	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,71 @@
+function __ToggleNode( divNode )
+{
+  var cntNode = document.getElementById(divNode.id.replace(/Img(.+)/, 'Content$1'));
+  
+  if(!cntNode) return;
+  
+  if(cntNode.style.display == 'none')
+  {
+    cntNode.style.display = 'block';
+    divNode.style.background = divNode.style.background.replace(/open./, 'close.');
+  }
+  else
+  {
+    cntNode.style.display = 'none';
+    divNode.style.background = divNode.style.background.replace(/close./, 'open.');
+  }
+  
+  return cntNode;
+}
+
+function __UpdateNode( divNode, dsp )
+{
+	var cntNode = document.getElementById(divNode.id.replace(/Img(.+)/, 'Content$1'));
+	
+	if(!cntNode) return;
+	
+	cntNode.style.display = dsp;
+	if(dsp == 'block')
+		divNode.style.background = divNode.style.background.replace(/open./, 'close.');
+	else
+		divNode.style.background = divNode.style.background.replace(/close./, 'open.');
+	
+	return cntNode;
+}
+
+function __ToggleChilds( divNode )
+{
+	var cntNode = __ToggleNode(divNode);
+	if(!cntNode) return;
+	var childs  = cntNode.getElementsByTagName('div');
+	
+	for(var i = 0; i != childs.length; ++i)
+		if(/Img/.test(childs[i].id))
+			__ToggleChilds(childs[i]);
+}
+
+function __UpdateChilds( divNode, dsp )
+{
+	var cntNode = __UpdateNode(divNode, dsp);
+	if(!cntNode) return;
+	var childs  = cntNode.getElementsByTagName('span');
+	
+	for(var i = 0; i != childs.length; ++i)
+		if(/Img/.test(childs[i].id))
+			__UpdateChilds(childs[i], dsp);
+}
+
+function ToggleNode( id )
+{ __ToggleNode(document.getElementById(id)); }
+
+function ShowContent( id )
+{ __UpdateNode(document.getElementById(id), 'block'); }
+
+function HideContent( id )
+{ __UpdateNode(document.getElementById(id), 'none'); }
+
+function ShowChilds( id )
+{ __UpdateChilds(document.getElementById(id), 'block'); }
+
+function HideChilds( id )
+{ __UpdateChilds(document.getElementById(id), 'none'); }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/src/templates/macro/log3.css	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,97 @@
+/* Main components */
+/*-------------------------------------------------------------------------------------------------------------------------*/
+BODY { font-family: "Nokia Sans Regular", Tahoma; font-size: x-small; margin: 0em; padding: 0em; background: #EEEEFF; }
+A { color: #000000; text-decoration: none; }
+#mb, #s_mb { margin: 5px; padding: 0px; background: #DADAEE; border: 1px solid #2161B5; }
+.mc, .s_mc { margin: 3px; padding: 3px 2px; background: #FFFFFF; border: 1px solid #2161B5; }
+.mc h1, .s_mc h1 { padding-left: 5px; margin: 3px 0px; font-weight: bold; color: #2161B5; font-size: x-small; border-bottom: 1px solid #2161B5; }
+.s_tag { font-size: x-small; font-weight: bold; padding: 0px 5px 3px 5px; }
+.s_val { font-size: x-small }
+
+/* Header */
+/*-------------------------------------------------------------------------------------------------------------------------*/
+#h_wrapper { }
+.h_elmt { color: #0036CC; padding: 5px; margin: 10px; }
+.h_title { font-family: "Nokia Large", "Tahoma"; font-size: xx-large; font-weight: bold; }
+.h_subtitle { font-size: x-small; font-weight: normal; }
+
+/* Footer */
+/*-------------------------------------------------------------------------------------------------------------------------*/
+#f_wrapper { }
+.f_elmt { font-weight: normal; color: #0036CC; padding: 5px; margin: 10px 15px; border-top: solid 1px #0036CC; }
+.f_title { font-size: x-small; padding: 0px; margin: 0px; }
+.f_subtitle { font-size: xx-small; padding: 0px; margin: 0px; }
+
+/* Color cross images */
+/*-------------------------------------------------------------------------------------------------------------------------*/
+.cr_r, .cr_b, .cr_y { padding-left: 19px; padding-bottom: 2px; }
+.cr_r { background: url(../img/icons/delete_red.gif) no-repeat; }
+.cr_b { background: url(../img/icons/delete_blue.gif) no-repeat; }
+.cr_y { background: url(../img/icons/delete_yellow.gif) no-repeat; }
+
+/* Color check images */
+/*-------------------------------------------------------------------------------------------------------------------------*/
+.ch_g, .ch_b { padding-left: 19px; padding-bottom: 2px; }
+.ch_g { background: url(../img/icons/check_green.gif) no-repeat; }
+.ch_b { background: url(../img/icons/check_blue.gif) no-repeat; }
+
+/* Element icons */
+/*-------------------------------------------------------------------------------------------------------------------------*/
+.icn_dir, .icn_cpp, .icn_hpp, .icn_txt, .icn_inf, .icn_bin, .icn_xml, .icn_prj, .icn_mmp, .icn_iby, .icn_oby, .icn_spt, .icn_doc, .icn_xls, .icn_rss
+{ padding-left: 23px; padding-bottom: 2px; }
+.icn_dir { background: url(../img/icons/dir.gif) no-repeat; }
+.icn_cpp { background: url(../img/icons/cpp.gif) no-repeat; }
+.icn_hpp { background: url(../img/icons/hpp.gif) no-repeat; }
+.icn_txt { background: url(../img/icons/txt.gif) no-repeat; }
+.icn_inf { background: url(../img/icons/inf.gif) no-repeat; }
+.icn_bin { background: url(../img/icons/bin.gif) no-repeat; }
+.icn_xml { background: url(../img/icons/xml.gif) no-repeat; }
+.icn_prj { background: url(../img/icons/prj.gif) no-repeat; }
+.icn_mmp { background: url(../img/icons/mmp.gif) no-repeat; }
+.icn_iby { background: url(../img/icons/iby.gif) no-repeat; }
+.icn_oby { background: url(../img/icons/oby.gif) no-repeat; }
+.icn_spt { background: url(../img/icons/spt.gif) no-repeat; }
+.icn_doc { background: url(../img/icons/doc.gif) no-repeat; }
+.icn_xls { background: url(../img/icons/xls.gif) no-repeat; }
+.icn_rss { background: url(../img/icons/rss.gif) no-repeat; }
+
+/* Message counts */
+/*-------------------------------------------------------------------------------------------------------------------------*/
+.count_fatal_error, .count_error, .count_warning, .count_remark, .count_note, .count_default { text-align: center; padding: 0px 20px; width: 200px; }
+.gbl_count_fatal_error, .gbl_count_error, .gbl_count_warning, .gbl_count_remark, .gbl_count_note, .gbl_count_default, .count_critical, .gbl_count_critical , .count_info, .gbl_count_info{ text-align: center; padding: 0px 20px; margin: 0px 2px; }
+.count_fatal_error, .gbl_count_fatal_error { color: #EB320A; border: 1px solid #EB320A; background: #F5C2B9; }
+.count_error, .gbl_count_error { color: #EB320A; border: 1px solid #EB320A; background: #FFCC00; }
+.count_critical, .gbl_count_critical { color: #FF3200; border: 1px solid #FF3200; background: #FFF476; }
+.count_warning, .gbl_count_warning { color: #FFBA00; border: 1px solid #FFBA00; background: #FFF476; }
+.count_remark, .gbl_count_remark { color: #4EBE2C; border: 1px solid #4EBE2C; background: #EDEFFF; }
+.count_note, .gbl_count_note { color: #2161B5; border: 1px solid #2161B5; background: #EDEFFF; }
+.count_info, .gbl_count_info { color: #2161B5; border: 1px solid #2161B5; background: #EDEFFF; }
+.count_default, .gbl_count_default { color: #DADADA; border: 1px solid #DADADA; background: #FFFFFF; }
+
+/* Node components */
+/*-------------------------------------------------------------------------------------------------------------------------*/
+.node_head { padding: 1px 0px 2px 0px; }
+.node_title { padding-left: 19px; }
+.node_info { float: right; margin-top: -18px; padding: 1px 0px; }
+.node_content { padding: 2px 0px 2px 3px; margin-bottom: 3px; border-top: 1px solid #EDEDED; border-bottom: 1px solid #EDEDED;border-left: 1px solid #EDEDED; }
+.node_action { font-size: xx-small; color: #999999; }
+
+/* C++ components */
+/*-------------------------------------------------------------------------------------------------------------------------*/
+.code_sample { font-family: Anonymous, "Courier New"; font-size: x-small; padding: 3px 6px; border: 1px solid #BABABA; background: #EDEDED; }
+.code_kwd { color: #0000FF; }
+.code_smb { color: #AA11FF; }
+.code_pp  { color: #44AA11; }
+.code_cmt { color: #767676; }
+
+/* Error highlight */
+/*-------------------------------------------------------------------------------------------------------------------------*/
+.code_fatal_error { background-color: #F5C2B9; }
+.code_error { background-color: #FFCC00; }
+.code_critical { background-color: #FFDD00; }
+.code_warning { background-color: #FFF476; }
+
+/* Formatting components */
+/*-------------------------------------------------------------------------------------------------------------------------*/
+.separator { margin-top: 5px; }
+.t_wrapper { width: 100%; }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/src/templates/macro/logger.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,107 @@
+<#--
+============================================================================ 
+Name        : logger.ftl 
+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:
+
+============================================================================
+--> 
+
+<#macro helium_logger_html_head>
+    <style type="text/css">
+        <#include "log3.css"/>
+    </style>
+    <script type="text/javascript">
+        <#include "expand3.js"/>
+    </script>
+</#macro>
+
+
+<#global helium_node_id = 0>
+
+
+<#macro helium_logger_header title subtitle="">
+    <div id="h_wrapper">
+        <div class="h_elmt">
+              <div class="h_title">${title}</div>
+              <div class="h_subtitle">${subtitle}</div>
+        </div>
+      </div>
+</#macro>
+
+
+<!-- Renders a main body of content -->
+<#macro helium_logger_content title>
+    <#assign helium_node_id = helium_node_id + 1>
+    <div id="mb">
+        <div class="mc">
+            <h1>${title}</h1>                                   
+            <div class="node_head"></div>
+                <div id="Content${helium_node_id}">
+                    <div class="node_content">
+                        <#nested>
+                    </div>
+                </div>      
+            </div>      
+        </div>      
+    </div>
+</#macro>
+
+
+<#macro helium_logger_print type>
+    <#if type == "">
+        <code><#nested></code><br/>
+    <#else>
+        <code class="code_${type}"><#nested></code><br/>
+    </#if>
+</#macro>
+
+<#macro helium_message_box nodeid type count>
+    <#if (count > 0)>
+        <a href="javascript:ToggleNode('Img${nodeid}')">
+            <span class="node_${type}">
+                <span class="count_${type}">${count} ${type}s</span>
+            </span>
+        </a>
+    </#if>
+</#macro>
+
+<#macro helium_logger_node_head nodeid title>
+    <div class="node_head">                    
+        <a href="javascript:ToggleNode('Img${nodeid}')">
+            <span id="Img${nodeid}">
+                <span class="node_action">[X]</span><span class="node_title">${title}</span>
+            </span>
+        </a>
+        <a href="javascript:ShowChilds('Img${nodeid}')">
+                <span class="node_action">[Show All]</span>
+        </a>
+        <a href="javascript:HideChilds('Img${nodeid}')">
+                <span class="node_action">[Hide All]</span>
+        </a>        
+        <!-- error reporting managenent -->
+        <#nested>
+    </div>
+</#macro>
+
+
+<#macro helium_logger_node_content nodeid>
+    <div id="Content${nodeid}" style="display:none">
+        <div class="node_content">
+            <#nested>
+        </div>
+    </div>
+</#macro>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/src/templates/readdata.xml.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,77 @@
+<#--
+============================================================================ 
+Name        : bmd.macros.xml.ftl 
+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:
+
+============================================================================
+-->
+
+<#macro helium_scanlog_entry >
+    <style type="text/css">
+        <#include "log3.css"/>
+    </style>
+    <script type="text/javascript">
+        <#include "expand3.js"/>
+    </script>
+</#macro>
+
+    <#assign table_info = pp.loadData('com.nokia.helium.metadata.SQLFMPPLoader',
+        "${dbPath}") >
+<html>
+<body>
+<h1>Summary</h1>
+<table>
+<#assign priority_table = table_info['select * from priority'] >
+<#assign component_table = table_info['select id, component from component'] >
+<#assign logpath_table = table_info['select * from logfiles'] >
+<#assign priority_ids = priority_table?keys>
+<tr><td>Total&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
+<#assign quotes='\'' />
+<#list priority_ids as priority>
+<td>${priority_table['${priority}']}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+${table_info['select count(data) as COUNT from metadata where priority_id=${priority}'][0]['COUNT']}</td>
+</#list>
+</tr>
+</table>
+<h1>Listing based on Priority</h1>
+<table>
+<#list priority_ids as priority>
+<tr><td>priority_id:${priority}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
+<tr><td>&nbsp;</td></tr>
+<tr><td><h3>${priority_table['${priority}']}</h3></td></tr>
+
+<#list table_info['select * from metadata where priority_id=${priority}'] as recordentry >
+<tr><td>logtext:${recordentry['data']}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
+<td>lineNo:${recordentry['line_number']}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td></tr>
+</#list>
+</#list>
+</table>
+<h1>Listing based on Component</h1>
+<table>
+<#assign component_ids = component_table?keys>
+<#list component_ids as component>
+<tr><td>&nbsp;</td></tr>
+<tr><td><h3>${component_table['${component}']}</h3></td></tr>
+<#list table_info['select * from metadata where component_id=${component} order by priority_id'] as recordentry >
+<tr><td>priority:${priority_table["${recordentry['priority_id']}"]}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
+<td>logtext:${recordentry['data']}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
+<td>lineNo:${recordentry['line_number']}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td></tr>
+</#list>
+</#list>
+</table>
+</body>
+</html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/src/templates/scan2.html.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,162 @@
+<#--
+============================================================================ 
+Name        : scan2.html.ftl 
+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:
+
+============================================================================
+-->
+
+<#macro print_component_summary component href_c_id >
+<#assign href_id = 0>
+<#assign component_time_list = table_info['jpasingle']['select t.componentTime from ComponentTime t where  t.componentId =${component.id}']>
+
+<#if component_time_list[0]?? >
+    <#assign time = component_time_list[0]?number>
+<#else>
+    <#assign time = 0>
+</#if>
+<tr>
+<#assign hours = (time /(60 * 60))?floor>
+<#assign minutes_secs = (time % (60 * 60))?floor>
+<#assign minutes = (minutes_secs / 60)?floor>
+<#assign seconds = (minutes_secs % 60)?floor>
+    <td>${component.component}</td>
+<#--write each of the component tables information -->
+<td align="center">${hours?string("00")}:${minutes?string("00")}:${seconds?string("00")}</td>
+<#list color_list?keys as priority>
+    <#assign count =  table_info['jpasingle']['select count(m.id) from MetadataEntry as m JOIN  m.priority as p JOIN m.component as c where UPPER(p.priority) like \'%${priority?upper_case}%\' and c.id=${component.id}'][0] >
+    <#if count &gt; 0>
+        <#assign color = color_list['${priority}']>
+        <td align="center" bgcolor="${color}"><a href="#section${priority}${href_c_id}">${count}</a></td>
+    <#else>
+        <td align="center">${count}</td>
+    </#if>
+    <#assign href_id = href_id + 1>
+</#list>
+</tr>
+</#macro>
+
+<#macro print_list_text priority component href_id>
+<#assign count =  table_info['jpasingle']['select count(m.id) from MetadataEntry as m JOIN m.priority as p JOIN m.component as c where  UPPER(p.priority) like \'%${priority?upper_case}%\' and c.id=${component.id}'][0] >
+<#if count?? && count?number &gt; 0>
+<#if "${component.component}" != "general">
+        <h3><a name="section${href_id}">${component.component}(${count})</a></h3>
+    <#else>
+        <h3><a name="section${href_id}">Uncategorized(${count})</a></h3>
+    </#if>
+</#if>
+<#list table_info['native:com.nokia.helium.jpa.entity.metadata.MetadataEntry']['select * from metadataentry INNER JOIN component ON component.component_id=metadataentry.component_id INNER JOIN priority ON priority.priority_id=metadataentry.priority_id where component.component_id=${component.id} and UPPER(priority.priority) like \'%${priority?upper_case}%\''] as entry >
+${logfile}:${entry.lineNumber}>${entry.text}<br />
+</#list>
+</#macro>
+
+<#macro add_severity_count severity, color, count>
+    <#if count &gt; 0>
+<td width="12%%" align="center" bgcolor="${color}"><a href="#${severity}">${count}</a></td>
+    <#else>
+    <td align="center">${count}</td>
+    </#if>
+</#macro>
+
+<#-- end of macros code starts here -->
+
+
+<#if (doc)??>
+    <#assign logfile = "${doc.sbsinfo.logfile.@name}" >
+    <#assign time = "${doc.sbsinfo.duration.@time}" >
+
+    <#assign table_info = pp.loadData('com.nokia.helium.metadata.ORMFMPPLoader',
+        "${dbPath}") >
+<#-- overall summary -->
+<#assign logpath_id_list = table_info['jpasingle']['select l.id from LogFile l where l.path like \'%${logfile}\''] >
+<#if logpath_id_list[0]?? >
+<#assign logpath_id = logpath_id_list[0] > 
+</#if>
+<html>
+<head><title>${logfile}</title></head>
+<body>
+<h2>Overall</h2>
+<table border="1" cellpadding="0" cellspacing="0" width="100%%">
+<tr>
+    <th width="22%%">&nbsp;</th>
+    <th width="11%%">Time</th>
+    <th width="11%%">Errors</th>
+    <th width="11%%">Warnings</th>
+    <th width="11%%">Critical</th>
+    <th width="23%%">Migration Notes</th>
+    <th width="11%%">Info</th>
+</tr>
+<tr>
+<#-- need to create variables for the items tobe displayed in the comment title Overall_Total
+doing this the long winded way because I could not find a way to add items to a hash in a loop -->
+<#assign color_list={'error': 'FF0000', 'warning': 'FFF000', 'critical': 'FF7000', 'remark': 'FFCCFF', 'info': 'FFFFFF'}>
+<#assign priority_ids = color_list?keys>
+<td width="22%%">Total</td>
+<td width="12%%" align="center">${time}</td>
+<#list priority_ids as priority>
+    <@add_severity_count severity='${priority}' color=color_list['${priority}'] 
+        count = table_info['jpasingle']['select Count(m.id) from MetadataEntry m JOIN m.priority p where m.logPathId=${logpath_id} and UPPER(p.priority) like \'%${priority?upper_case}%\''][0] />
+</#list>
+</tr>
+</table>
+<#-- Summary for each component -->
+<h1>${logfile}</h1>
+<h2>By Component</h2>
+    <table border="1" cellpadding="0" cellspacing="0" width="100%%">
+        <tr>
+            <th width="50%%">Component</th>
+            <th width="9%%">Time</th>
+            <th width="9%%">Errors</th>
+            <th width="9%%">Warnings</th>
+            <th width="9%%">Criticals</th>
+            <th width="9%%">Notes</th>
+            <th width="9%%">Info</th>
+        </tr>
+
+<#assign c_id = 0>
+<#assign general_component_list = table_info['jpasingle']['select c from Component c where LOWER(c.component) like \'%general%\' and c.logPathID=${logpath_id}']>
+<#if general_component_list[0]?? >
+<#assign general_component = general_component_list[0] >
+<@print_component_summary component=general_component  href_c_id="${c_id}"/>
+<#assign c_id = c_id + 1>
+</#if>
+<#list table_info['jpa']['select c from Component c where c.logPathID=${logpath_id} and LOWER(c.component) not like \'%general%\' ORDER BY c.component'] as componentEntry>
+<@print_component_summary component=componentEntry href_c_id="${c_id}"/>
+<#assign c_id = c_id + 1>
+
+</#list>
+</table>
+
+<#-- Individual components status -->
+<#list priority_ids as p_id>
+<#assign p_count = table_info['jpasingle']['select Count(m.id) from MetadataEntry m JOIN m.priority as p where m.logPathId=${logpath_id} and UPPER(p.priority) like \'%${p_id?upper_case}%\''][0]>
+<#if p_count &gt; 0>
+    <h3><a>${p_id} Details By Component</a></h3>
+</#if>
+<#assign href_cid = 0>
+<#if general_component??>
+    <@print_list_text priority="${p_id}" component=general_component href_id="${p_id}${href_cid}" /> 
+    <#assign href_cid = href_cid + 1>
+</#if>
+<#list table_info['jpa']['select c from Component c where c.logPathID=${logpath_id} and LOWER(c.component) not like \'%general%\' ORDER BY c.component'] as componentEntry>
+    <@print_list_text priority="${p_id}" component=componentEntry href_id="${p_id}${href_cid}" />
+    <#assign href_cid = href_cid + 1>
+</#list>
+</#list>
+</body>
+</html>
+</#if>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/src/templates/summary.html.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,122 @@
+<#--
+============================================================================ 
+Name        : summary.html.ftl 
+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:
+
+============================================================================
+--> 
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html>
+
+
+<#include "/@macro/logger.ftl"/>
+
+    <#assign table_info = pp.loadData('com.nokia.helium.metadata.ORMFMPPLoader',
+        "${dbPath}") >
+
+<head>
+    <title>
+<#if loginfo?? >
+<#assign mykey=loginfo.info.id>
+<#if (conv[mykey])?exists>
+${loginfo.info.id}
+</#if>
+build summary</title>
+    <@helium_logger_html_head/>
+</head>
+</#if>
+<body>
+
+
+<!--
+    Processing the Helium log summary.
+-->
+<#macro logentry text, severity>
+    <#assign conv={"error": "error", "warning": "warning"}>
+    <#if (conv['${severity}'])?exists>
+        <@helium_logger_print type="${conv[\"${severity}\"]}">${text}</@helium_logger_print>
+    <#else>
+        <@helium_logger_print type="">${text}</@helium_logger_print>
+    </#if>
+</#macro>
+
+<#macro logfile_severity logname, priority, count, helium_node_id>
+    <@helium_message_box nodeid="${helium_node_id}" type="${priority}"  count="${count}"?number />
+</#macro>
+
+
+<#macro logfile_entry_detail text, priority, helium_node_id>
+    <@logentry "${text}", "${priority?lower_case}" />
+</#macro>
+
+<!-- Call the macros to render the log contents. -->
+<#assign mykey=loginfo>
+<#if (conv[mykey])?exists>
+<@helium_logger_header title="${loginfo.info.id} build"/>
+
+<@helium_logger_content title="Build overview">
+    Time started: ${loginfo.info.startTime}<br/>
+    Build machine: ${loginfo.info.machine}<br/>
+    Is published?: ${loginfo.info.publish.status}<br/>
+    <#if loginfo.info.publish.status?string == true?string>
+        Published location: ${loginfo.info.publish.location}</br>
+    </#if>
+</@helium_logger_content>
+</#if>
+
+<@helium_logger_content title="Errors and warnings details">
+<#list table_info['jpa']['select l from LogFile l'] as logentry>
+    <#assign helium_node_id = helium_node_id + 1>
+    <#-- -->
+    <@helium_logger_node_head nodeid="${helium_node_id}" title="${logentry.path}">
+        <#list table_info['jpa']['select p from Priority p where p.priority not like \'%DEFAULT%\''] as priority>
+        <#assign count = table_info['jpasingle']['select Count(m.id) from MetadataEntry m where m.priorityId = ${priority.id} and m.logPathId=${logentry.id}'][0]>
+            <@logfile_severity "${logentry.path}", "${priority.priority?lower_case}", 
+                "${count}", 
+                "${helium_node_id}" />
+        </#list>
+    </@helium_logger_node_head>
+    <@helium_logger_node_content nodeid="${helium_node_id}">
+        <#list table_info['jpa']['select c from Component c where c.logPathID=${logentry.id}'] as component>
+            <#assign helium_node_id = helium_node_id + 1>
+            <@helium_logger_node_head nodeid="${helium_node_id}" title="${component.component}">
+                <#list table_info['jpa']['select p from Priority p where p.priority not like \'%DEFAULT%\''] as priority>
+                    <@logfile_severity "${component.id}", "${priority.priority}", 
+                            table_info['jpasingle']['select Count(m.id) from MetadataEntry m where m.priorityId=${priority.id} and m.componentId = ${component.id}'][0], 
+                            "${helium_node_id}" />
+                </#list>
+            </@helium_logger_node_head>
+            <@helium_logger_node_content nodeid="${helium_node_id}">
+                <#list table_info['jpa']['select p from Priority p'] as priority>
+                <#list table_info['native:com.nokia.helium.jpa.entity.metadata.MetadataEntry']['select * from metadataentry where metadataentry.component_id=${component.id} and metadataentry.priority_id = ${priority.id}'] as entry >
+                    <#if entry.text??>
+                    <#-- <#if sublog?node_name == "logfile"> --> 
+                        <@logfile_entry_detail "${entry.text}", "${priority.priority}", "${helium_node_id}" />
+                    </#if>
+                    <#-- <#elseif sublog?node_name == "log">
+                        <@antlognode sublog/>
+                    </#if> -->
+                </#list>
+            </#list>
+            </@helium_logger_node_content>
+        </#list>
+    </@helium_logger_node_content>
+</#list>
+</@helium_logger_content>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/tests/bld.sh	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,24 @@
+#!/bin/bash
+
+#
+# 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: 
+#
+
+if [ -f ~/.bashrc ] ; then
+    . ~/.bashrc
+fi
+
+export COMPUTERNAME=fasbs01
+ant -Dant.executor.class="com.nokia.helium.core.ant.HeliumExecutor" $*
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/tests/build.bat	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,31 @@
+@echo off
+
+rem
+rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+rem All rights reserved.
+rem This component and the accompanying materials are made available
+rem under the terms of the License "Eclipse Public License v1.0"
+rem which accompanies this distribution, and is available
+rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+rem
+rem Initial Contributors:
+rem Nokia Corporation - initial contribution.
+rem
+rem Contributors:
+rem
+rem Description: 
+rem
+
+setlocal
+if not defined JAVA_6_HOME (
+set TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
+) ELSE  set TESTED_JAVA=%JAVA_6_HOME%
+if exist %TESTED_JAVA% (set JAVA_HOME=%TESTED_JAVA%)
+call ant %*
+if "%ERRORLEVEL%" neq "0" (goto error)
+endlocal
+goto :eof
+
+:error
+endlocal
+if "%OS%"=="Windows_NT" color 00
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/tests/build.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : build.xml 
+Part of     : Helium AntLib
+
+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="helium-metadata" xmlns:au="antlib:org.apache.ant.antunit">
+    <description>Helium Antlib metadata tests.</description>
+    <import file="${builder.dir}/java/test-macros.ant.xml"/>
+  
+    <dirname property="metadata.unitest.dir" file="${ant.file.helium-antlib-metadata-unittest}" />
+    <property environment="env" />
+    <import file="../../../../nokia/companyproperties.ant.xml" optional="true"/>
+    <import file="../../../../../extensions/nokia/external/helium-nokia-antlib/companyproperties.ant.xml" optional="true"/>
+    <property name="metadata.output.dir" location="${diamonds.unitest.dir}/output" />
+    <property name="metadata.template.dir" location="${diamonds.unitest.dir}/../src/templates" />
+</project>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/tests/data/IDO_lcdo_tb92-ci_MCL.92.64_ant_build.log	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,129 @@
+zip-binaries:
+   [length] t:\output\temp_build_files\IDO_lcdo_tb92-ci_MCL.92.64_nonhw_binaries_includefile.txt does not exist
+
+ats-test:
+log file not exists
+log file not exists
+
+ats-aste:
+log file not exists
+log file not exists
+
+ido-zip-wa:
+     [echo] Zipping wa
+      [zip] Building zip: t:\output\src\IDO_lcdo_tb92-ci_MCL.92.64_sources.zip
+
+build-log-extracts:
+Converting t:\output\logs\IDO_lcdo_tb92-ci_MCL.92.64.sysdef_GenxmlMerge.log...
+Converting t:\output\logs\IDO_lcdo_tb92-ci_MCL.92.64__armv5_winscw_armv5.test_dfs_build.sbs_ant_output.log...
+Extracted log is uptodate: t:\output\logs\IDO_lcdo_tb92-ci_MCL.92.64__armv5_winscw_armv5.test_dfs_build_compile.log
+Converting t:\output\logs\IDO_lcdo_tb92-ci_MCL.92.64_ant_build.log...
+Converting t:\output\logs\IDO_lcdo_tb92-ci_MCL.92.64_bom.log...
+Extracted log is uptodate: t:\output\logs\IDO_lcdo_tb92-ci_MCL.92.64_ccm_get_input.log
+Extracted log is uptodate: t:\output\logs\IDO_lcdo_tb92-ci_MCL.92.64_validate-policy.log
+
+log-merge:
+[dependset] Warning: t:\output\logs\IDO_lcdo_tb92-ci_MCL.92.64_bom.log.xml modified in the future.
+     [echo] Merging all *.log.xml files
+     [echo] Inserting t:\output\logs\IDO_lcdo_tb92-ci_MCL.92.64.sysdef_GenxmlMerge.log.xml into summary.
+     [echo] Inserting t:\output\logs\IDO_lcdo_tb92-ci_MCL.92.64__armv5_winscw_armv5.test_dfs_build.sbs_ant_output.log.xml into summary.
+     [echo] Inserting t:\output\logs\IDO_lcdo_tb92-ci_MCL.92.64__armv5_winscw_armv5.test_dfs_build_compile.log.xml into summary.
+     [echo] Inserting t:\output\logs\IDO_lcdo_tb92-ci_MCL.92.64_ant_build.log.xml into summary.
+     [echo] Inserting t:\output\logs\IDO_lcdo_tb92-ci_MCL.92.64_bom.log.xml into summary.
+     [echo] Inserting t:\output\logs\IDO_lcdo_tb92-ci_MCL.92.64_ccm_get_input.log.xml into summary.
+     [echo] Inserting t:\output\logs\IDO_lcdo_tb92-ci_MCL.92.64_info.log.xml into summary.
+     [echo] Inserting t:\output\logs\IDO_lcdo_tb92-ci_MCL.92.64_validate-policy.log.xml into summary.
+
+render-log-summary:
+     [fmpp] File processed.
+
+build-log-summary:
+
+prep-publish:
+
+ido-publish-sites:
+   [script] Publishing \\vagrp006\GROUPS5\SP_IDO\LCDo\CI_builds
+   [script] execute
+      [IDO] data.drive.letter is already defined to E
+      [IDO] Build.drive: t:, the drive exists: true
+      [IDO] Build drive substing skipped
+      [IDO] data.drive.letter is already defined to E
+      [IDO] Category folder name: idos
+      [IDO] Type: ido
+      [IDO] Updated build.family to ido_lcdo_tb92-ci_sbs-ec_sbs-ec
+[IDO] Using S60 version: tb92
+Trying to override old definition of task http://www.nokia.com/helium:diskspaceMacro
+Trying to override old definition of task http://www.nokia.com/helium:diskspaceMacro
+
+prep-publish:
+    [mkdir] Created dir: \\vagrp006\GROUPS5\SP_IDO\LCDo\CI_builds\tb92-ci\MCL.92.64
+
+publish:
+     [copy] Copying 26 files to \\vagrp006\GROUPS5\SP_IDO\LCDo\CI_builds\tb92-ci\MCL.92.64
+     [echo] ERROR: There are 5214 changes in the publish directory. Uploading the changes again...
+
+ido-recopy:
+      [IDO] data.drive.letter is already defined to E
+      [IDO] Build.drive: t:, the drive exists: true
+      [IDO] Build drive substing skipped
+      [IDO] data.drive.letter is already defined to E
+      [IDO] Category folder name: idos
+      [IDO] Type: ido
+      [IDO] Updated build.family to ido_lcdo_tb92-ci_sbs-ec_sbs-ec
+[IDO] Using S60 version: tb92
+Trying to override old definition of task http://www.nokia.com/helium:diskspaceMacro
+Trying to override old definition of task http://www.nokia.com/helium:diskspaceMacro
+
+ido-create-ado-mapping:
+[hlm:referenceToFileMacro] Creating t:\output\temp_build_files\null903042207.txt using system.definition.files
+[hlm:referenceToFileMacro] E:\Build_E\idoconfiguration\running\common\sysdefs\build.sysdef.xml
+[hlm:referenceToFileMacro] E:\Build_E\ido_wa\IDO_lcdo_tb92-ci\LC_Domain\LC_Domain\btservices\layers.sysdef.xml
+[hlm:referenceToFileMacro] E:\Build_E\ido_wa\IDO_lcdo_tb92-ci\LC_Domain\LC_Domain\printing\layers.sysdef.xml
+[hlm:referenceToFileMacro] E:\Build_E\ido_wa\IDO_lcdo_tb92-ci\LC_Domain\LC_Domain\remoteconn\layers.sysdef.xml
+[hlm:referenceToFileMacro] E:\Build_E\ido_wa\IDO_lcdo_tb92-ci\LC_Domain\LC_Domain\usbservices\layers.sysdef.xml
+[hlm:referenceToFileMacro] E:\Build_E\ido_wa\IDO_lcdo_tb92-ci\LC_Domain_osext\LC_Domain_osext\btaudioadaptation_stub\layers.sysdef.xml
+[hlm:referenceToFileMacro] E:\Build_E\ido_wa\IDO_lcdo_tb92-ci\LC_Domain_osext\LC_Domain_osext\shortlinksrv\layers.sysdef.xml
+[hlm:referenceToFileMacro] E:\Build_E\ido_wa\IDO_lcdo_tb92-ci\SystemSW_Domain_OSExt\SystemSW_Domain_OSExt\devicesrv\layers.sysdef.xml
+
+ido-prep-copy:
+     [fmpp] File processed.
+
+all:
+   [delete] Deleting directory t:\sf\app\printing_old
+   [delete] Deleting directory t:\sf\mw\btservices_old
+   [delete] Deleting directory t:\sf\mw\usbservices_old
+   [delete] Deleting directory t:\sf\mw\remoteconn_old
+   [delete] Deleting directory t:\sf\os\devicesrv_old
+   [delete] Deleting directory t:\sf\adaptation\stubs\btaudioadaptation_stub_old
+   [delete] Deleting directory t:\sf\os\shortlinksrv_old
+     [fmpp] File processed.
+
+all:
+    [mkdir] Created dir: t:\sf\app\printing
+    [mkdir] Created dir: t:\sf\adaptation\stubs\btaudioadaptation_stub
+    [mkdir] Created dir: t:\sf\os\shortlinksrv
+    [mkdir] Created dir: t:\sf\mw\remoteconn
+    [mkdir] Created dir: t:\sf\os\devicesrv
+    [mkdir] Created dir: t:\sf\mw\btservices
+    [mkdir] Created dir: t:\sf\mw\usbservices
+     [copy] Copying 30 files to t:\sf\adaptation\stubs\btaudioadaptation_stub
+     [copy] Copying 359 files to t:\sf\os\shortlinksrv
+     [copy] Copying 496 files to t:\sf\app\printing
+     [copy] Copying 1584 files to t:\sf\mw\remoteconn
+     [copy] Copying 2341 files to t:\sf\mw\btservices
+     [copy] Copying 1767 files to t:\sf\mw\usbservices
+     [copy] Copying 6833 files to t:\sf\os\devicesrv
+
+IDO-additions.final:
+Deferred failure: Yes
+
+BUILD FAILED
+
+compileSignal: Expected result was 0, actual result was 1 : compile-signal
+E:\Build_E\idoconfiguration\running\common\ido-additions.ant.xml:110: if=pending.failure
+	at com.nokia.helium.core.ant.HeliumExecutor.executeTargets(HeliumExecutor.java:98)
+	at org.apache.tools.ant.Project.executeTargets(Project.java:1181)
+	at org.apache.tools.ant.Main.runBuild(Main.java:698)
+	at org.apache.tools.ant.Main.startAnt(Main.java:199)
+	at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257)
+	at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/tests/data/all_regex_type.log	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<buildlog sbs_version="2.5.3 [2009-03-12 release]" xmlns="http://symbian.com/xml/build/log" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symbian.com/xml/build/log http://symbian.com/xml/build/log/1_0.xsd">
+<info>sbs: version 2.5.3 [2009-03-12 release]
+</info>
+<info>SBS_HOME E:/Build_E/ido-config-df/sbs</info>
+<info>Set-up E:/Build_E/ido-config-df/sbs/sbs_init.xml</info>
+<warning>E:/build_e/sbs_2.8.4/sbs/win32/mingw/bin/cpp.exe: </warning>
+<info>Command-line-arguments -s z:\output/build/canonical_system_definition_build.xml -k -c armv5 -j 4 -m z:\output\logs/ido_imm_mcl_devlon70_robot_5.1.005__armv5_multiple_thread_build_Makefile --filters=FilterHeliumLog -f z:\output\logs/ido_imm_mcl_devlon70_robot_5.1.005__armv5_multiple_thread_build_compile.log</info>
+<recipe name='resourcedependencies' target='z:/epoc32/build/camera/c_87f62b1af2e7d874/gscameraplugin_dll/gscameraplugin_resource_plugins_27.rpp.d' host='fawec012' layer='app_layer' component='' bldinf='z:/sf/app/camera/group/bld.inf' mmp='z:/sf/app/camera/camerauis/cameraapp/generic/GsCamcorderPlugin/group/gscameraplugin.mmp' config='armv5_udeb' platform='' phase='RESOURCE_DEPS' source=''>
+<![CDATA[
+mingw_make.exe: error
+test FATAL ERROR(S):abcd
+): Missing file:
+abcd FLEXlm error:
+ABLD ERROR: 1234
+BLDMAKE ERROR: 43543
+test FATAL ERROR 
+fatal error U1077 error occured
+test warning U4010
+Warning:
+WARNING:
+LINK : warning
+REMARK: 
+:10: warning: cannot find matching deallocation function
+INFO:
+make[10]: ***abcd
+make[10]: abcd not remade because of errors
+error: ((Internal fault)):
+ERROR,error: ((Internal fault):)$,
+ error given more than once in the same rule
+ERROR: build error
+ERROR EC95940: ec error
+Errors caused tool to abort. asdfasdf
+test no rule to make target
+ERROR,.*no rule to make.*,
+ERROR	testing
+100) : WARNING: TEST123
+MAKEDEF WARNING: TEST
+TEST 123 \\(10) : Warning: (400)
+BLDMAKE WARNING: bldm warning
+MAKEDEF WARNING: make warning
+atest(100) : warning C aasdfa
+testas 100: warning: test123
+usage Usage Warning: warn1
+abcd mwld.exe: abcd
+Command line warning abcd
+anything ERROR: bad relocation: test123
+10 warning in component1
+EventType: Error Source: SweepNTabcde
+WARNING,.EventType:\s+Error\s+Source:\s+SweepNT.*,
+WARN	test
+anything Command line warning D4025 : test
+REMARK: test remark anything
+EventType: Error Source: GNU Make.
+abcd :10: warning: cannot find matching deallocation function 100:note abcd
+INFO: any info match
+"abcd" 
+line 100+: Warning:', : warning 30:,
+"abcd , line 100: Error: 100abcd:. abcd
+line 10: Warning:\', r\': warning 10: abcd
+"abcd, line 100: Warning: 100 abcd: abcd",
+]]><time start='1238421421.153697000' elapsed='0.171' />
++ RV=0
++ set +x
+<status exit='ok' attempt='1' />
+</recipe>
+</buildlog>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/tests/data/build_whatlog.log	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<buildlog sbs_version="2.12.3 [2010-02-23 symbian build system 007900c31eef]" xmlns="http://symbian.com/xml/build/log" xmlns:progress="http://symbian.com/xml/build/log/progress" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symbian.com/xml/build/log http://symbian.com/xml/build/log/1_0.xsd">
+<whatlog bldinf='G:/sf/mw/svgt/group/bld.inf' mmp='' config=''>
+<export destination='G:/epoc32/include/platform/mw/SVGImageLoadingObserver.h' source='G:/sf/mw/svgt/svgt_plat/svgt_api/inc/SVGImageLoadingObserver.h'/>
+<resource>G:/epoc32/include/hrv_gain_mappings.rsg</resource>
+<build>G:/epoc32/release/armv5/urel/ekeyb.dll</build>
+</whatlog>
+<whatlog bldinf='G:/sf/os/deviceplatformrelease/locfiles/group/set14/bld.inf' mmp='' config=''>
+<archive zipfile='G:/sf/os/deviceplatformrelease/locfiles/data/65.zip'>
+<member>G:/epoc32/include/platform/loc/65/101f6dd6_65.loc</member>
+<member>G:/epoc32/include/platform/loc/65/101f6dd7_65.loc</member>
+</archive>
+</whatlog>
+</buildlog>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/tests/data/build_whatlog.whatlog.log	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,167 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<buildlog sbs_version="2.12.3 [2010-02-23 symbian build system 007900c31eef]" xmlns="http://symbian.com/xml/build/log" xmlns:progress="http://symbian.com/xml/build/log/progress" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symbian.com/xml/build/log http://symbian.com/xml/build/log/1_0.xsd">
+<info>sbs: version 2.12.3 [2010-02-23 symbian build system 007900c31eef]
+</info>
+<info>SBS_HOME C:/apps/sbs</info>
+<info>Set-up C:/apps/sbs/sbs_init.xml</info>
+<info>Command-line-arguments -s G:\output\build\canonical_system_definition_dfs_build_export.xml --filters=FilterMetadataLog -k --logfile G:\output\logs\compile/92_7952_201006_32_dfs_build_export.log --makefile=G:\output\logs/makefile/92_7952_201006_32_dfs_build_export --export-only -e emake --mo=--emake-emulation=gmake --mo=--emake-annofile=#MAKEFILE#.emake.anno --mo=--emake-class=DFS_7x01-64 --mo=--emake-annodetail=basic,history,file,waiting --mo=--case-sensitive=0 --mo=--emake-root=G:/;\;C:\apps;E:\build_e\wbernard\hudson\workspace\TB92-64bit\helium-svn\helium;C:\apps\sbs</info>
+<info>Current working directory G:\</info>
+<info>Environment /S=BHTEST001</info>
+<info>Environment ABLD_TOOLSMOD_COMPATIBILITY_MODE=alpha</info>
+<info>Environment ALLUSERSPROFILE=C:\Documents and Settings\All Users</info>
+<info>Environment APTLMHOST=@oupelic4.emea.nsn-net.net</info>
+<info>Environment ARMLMD_LICENSE_FILE=8224@trelic01;8224@salmg01;28747@saslmg04;</info>
+<info>Environment ARMROOT=\</info>
+<info>Environment ARMV5VER=:ARM/Thumb C/C++ Compiler, RVCT2.2 [Build 686]</info>
+<info>Environment BASE=E:\build_e\wbernard\hudson</info>
+<info>Environment CLUSTERLOG=C:\ETPWIN\Cluster\cluster.log</info>
+<info>Environment CMTHOME=C:\APPS\cmt</info>
+<info>Environment COMMONPROGRAMFILES=C:\Program Files (x86)\Common Files</info>
+<info>Environment COMMONPROGRAMFILES(X86)=C:\Program Files (x86)\Common Files</info>
+<info>Environment COMMONPROGRAMW6432=C:\Program Files\Common Files</info>
+<info>Environment COMPUTERNAME=TRWEC090</info>
+<info>Environment COMSPEC=C:\ETPWIN\system32\cmd.exe</info>
+<info>Environment COPYCMD=/y</info>
+<info>Environment CTCHOME=C:\APPS\ctc</info>
+<info>Environment CTC_AGENT_DEBUG=*</info>
+<info>Environment CYGWIN=nontsec nosmbntsec</info>
+<info>Environment DERBY_HOME=C:\APPS\jdk_1.6.0_11\JavaDB</info>
+<info>Environment EMAKEFLAGS=--emake-reg-roots=-\HKEY_CLASSES_ROOT</info>
+<info>Environment EMAKE_CM=trwec001</info>
+<info>Environment EMAKE_EMULATION=symbian</info>
+<info>Environment EMAKE_ROOT=\;C:\apps</info>
+<info>Environment EPOCROOT=\</info>
+<info>Environment EXECUTOR_NUMBER=3</info>
+<info>Environment FLEXLM_BATCH=1</info>
+<info>Environment FLEXLM_TIMEOUT=900000</info>
+<info>Environment FP_NO_HOST_CHECK=NO</info>
+<info>Environment HELIUM_CACHE_DIR=e:\ec_temp\helium\wbernard</info>
+<info>Environment HELIUM_HOME=E:\build_e\wbernard\hudson\workspace\TB92-64bit\helium-svn\helium</info>
+<info>Environment HOME=h:\</info>
+<info>Environment HOSTPLATFORM=win 32</info>
+<info>Environment HOSTPLATFORM_DIR=win32</info>
+<info>Environment INCLUDE=C:\APPS\MSVC6\VC98\ATL\Include\;C:\APPS\MSVC6\VC98\MFC\Include\;C:\APPS\MSVC6\VC98\Include\</info>
+<info>Environment JAVA_1_3_1_HOME=C:\apps\j2sdk_1.3.1_06</info>
+<info>Environment JAVA_5_HOME=C:\APPS\jdk_1.5.0_17</info>
+<info>Environment JAVA_6_HOME=C:\APPS\jdk_1.6.0_11</info>
+<info>Environment JAVA_HOME=C:\APPS\jdk_1.6.0_11</info>
+<info>Environment LIB=C:\APPS\MSVC6\VC98\MFC\Lib\;C:\APPS\MSVC6\VC98\Lib\</info>
+<info>Environment MSDEVDIR=C:\APPS\MSVC6\Common\MSDev98</info>
+<info>Environment MWCSYM2INCLUDES=C:\APPS\carbide\x86Build\Symbian_Support\MSL\MSL_C\MSL_Common\Include;C:\APPS\carbide\x86Build\Symbian_Support\MSL\MSL_C\MSL_Win32\Include;C:\APPS\carbide\x86Build\Symbian_Support\MSL\MSL_C\MSL_X86;C:\APPS\carbide\x86Build\Symbian_Support\MSL\MSL_C++\MSL_Common\Include;C:\APPS\carbide\x86Build\Symbian_Support\MSL\MSL_Extras\MSL_Common\Include;C:\APPS\carbide\x86Build\Symbian_Support\MSL\MSL_Extras\MSL_Win32\Include;C:\APPS\carbide\x86Build\Symbian_Support\Win32-x86 Support\Headers\Win32 SDK</info>
+<info>Environment MWSYM2LIBRARIES=C:\APPS\carbide\x86Build\Symbian_Support\Win32-x86 Support\Libraries\Win32 SDK;C:\APPS\carbide\x86Build\Symbian_Support\Runtime\Runtime_x86\Runtime_Win32\Libs</info>
+<info>Environment MWSYM2LIBRARYFILES=MSL_All_MSE_Symbian_D.lib;gdi32.lib;user32.lib;kernel32.lib;</info>
+<info>Environment NODE_NAME=trwec090</info>
+<info>Environment NUMBER_OF_PROCESSORS=12</info>
+<info>Environment OS=Windows_NT</info>
+<info>Environment PATH=C:\apps\sbs\win32\mingw\bin;C:\apps\sbs\win32\cygwin\bin;C:\apps\sbs\win32\bin;c:\apps\actperl\bin\;c:\apps\rvct22_686\bin;c:\apps\atool;\epoc32\tools;\epoc32\gcc\bin;c:\apps\ue;c:\apps\ccm65\bin;c:\apps\carbide\x86Build\Symbian_Tools\Command_Line_Tools;C:\Program Files\HP\NCU;c:\ECloud\i686_win32\bin;C:\Program Files (x86)\Windows Resource Kits\Tools\;C:\ETPWIN\system32;C:\ETPWIN;C:\ETPWIN\System32\Wbem;C:\ETPWIN\sysWOW64;C:\PROGRA~2\PuTTY;C:\APPS\MSVC6\Common\Tools\WinNT;C:\APPS\MSVC6\Common\MSDev98\Bin;C:\APPS\MSVC6\Common\Tools;C:\APPS\MSVC6\VC98\bin;C:\EESP\System32;C:\APPS\pclint;C:\APPS\cmt\;C:\APPS\ctc;C:\APPS\prevent\bin;C:\APPS\cltools;C:\APPS\symrec;C:\APPS\7zip;C:\APPS\understand\bin\pc-win95;C:\APPS\unzip;C:\APPS\jdk_1.6.0_11\bin;C:\apps\mercurial;C:\APPS\ant_1.7\bin;C:\Program Files\subversion;C:\APPS\sbs\bin;C:\APPS\actpython\.;C:\APPS\blocks\bin;C:\APPS\codescanner;C:\APPS\symdec;C:\APPS\bc;\epoc32\gcc_mingw\bin;C:\ETPWIN\system32\WindowsPowerShell\v1.0;C:\APPS\MSVC6\VC98\Bin\;C:\APPS\MSVC6\Common\Tools\;C:\APPS\MSVC6\Common\MSDev98\Bin\;\epoc32\tools;\epoc32\gcc\bin;\epoc32\tools\build;\epoc32\rombuild;E:\build_e\wbernard\hudson\workspace\TB92-64bit\helium-svn\helium\extensions\nokia\external\unxutils;E:\build_e\wbernard\hudson\workspace\TB92-64bit\helium-svn\helium\extensions\nokia\external\Subversion\bin;E:\build_e\wbernard\hudson\workspace\TB92-64bit\helium-svn\helium\extensions\nokia\external\graphviz\bin;C:\APPS\ctc</info>
+<info>Environment PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.py;.pyw;.PSC1</info>
+<info>Environment PERL=C:\APPS\actperl\bin\perl.exe</info>
+<info>Environment PERL5LIB=E:\build_e\wbernard\hudson\workspace\TB92-64bit\helium-svn\helium\tools\common\packages</info>
+<info>Environment PID=6932</info>
+<info>Environment PROCESSOR_ARCHITECTURE=x86</info>
+<info>Environment PROCESSOR_ARCHITEW6432=AMD64</info>
+<info>Environment PROCESSOR_IDENTIFIER=AMD64 Family 16 Model 8 Stepping 0, AuthenticAMD</info>
+<info>Environment PROCESSOR_LEVEL=16</info>
+<info>Environment PROCESSOR_REVISION=0800</info>
+<info>Environment PROGRAMFILES=C:\Program Files (x86)</info>
+<info>Environment PROGRAMFILES(X86)=C:\Program Files (x86)</info>
+<info>Environment PROGRAMW6432=C:\Program Files</info>
+<info>Environment PROMPT=$P$G</info>
+<info>Environment PSMODULEPATH=C:\ETPWIN\system32\WindowsPowerShell\v1.0\Modules\</info>
+<info>Environment PYTHONPATH=C:\apps\sbs\win32\python264</info>
+<info>Environment PYTHONVERSION=2.6</info>
+<info>Environment RVCT22BIN=C:\APPS\rvct22_686\bin</info>
+<info>Environment RVCT22INC=C:\APPS\rvct22_686\include</info>
+<info>Environment RVCT22LIB=C:\APPS\rvct22_686\lib</info>
+<info>Environment RVCT22_ASMOPT=--licretry --fastlicense --sitelicense</info>
+<info>Environment RVCT22_CCOPT=--licretry --fastlicense --sitelicense</info>
+<info>Environment RVCT22_LINKOPT=--licretry --fastlicense --sitelicense</info>
+<info>Environment SBS_CLEAN_LOG_FILE=G:\output\logs\compile/92_7952_201006_32_dfs_build_export.log.clean.log</info>
+<info>Environment SBS_HOME=C:\apps\sbs</info>
+<info>Environment SBS_PYTHON=C:\APPS\actpython\python.exe</info>
+<info>Environment SYMSEE_VERSION=11.2.0</info>
+<info>Environment SYSTEMDRIVE=C:</info>
+<info>Environment SYSTEMROOT=C:\ETPWIN</info>
+<info>Environment TEAM=helium_tampere64.92</info>
+<info>Environment TEMP=e:\ec_temp</info>
+<info>Environment TESTED_ANT=C:\APPS\ant_1.7</info>
+<info>Environment TESTED_JAVA=C:\APPS\jdk_1.6.0_11</info>
+<info>Environment TMP=e:\ec_temp</info>
+<info>Environment TMPDIR=e:\ec_tmpdir</info>
+<info>Environment WINDIR=C:\ETPWIN</info>
+<info>Environment WORKSPACE=E:\build_e\wbernard\hudson\workspace\TB92-64bit</info>
+<info>Environment _JAVACMD=C:\APPS\jdk_1.6.0_11\bin\java.exe</info>
+<info>Environment _USE_CLASSPATH=no</info>
+<info>Environment __CYGWIN__=C:\apps\sbs\win32\cygwin</info>
+<info>Environment __MINGW__=C:\apps\sbs\win32\mingw</info>
+<info>Environment __PYTHON__=C:\APPS\actpython\python.exe</info>
+<info>Duplicate alias 'make' (the one from 'G:/epoc32/sbs_config\s60_sbs_config.xml' will override the one in 'C:/apps/sbs/lib/config\make.xml')</info>
+<info>Duplicate alias 'emake' (the one from 'G:/epoc32/sbs_config\s60_sbs_config.xml' will override the one in 'C:/apps/sbs/lib/config\make.xml')</info>
+<info>Buildable configuration 'armv5_urel'</info>
+<info>Buildable configuration 'armv5_udeb'</info>
+<info>Buildable configuration 'winscw_udeb'</info>
+<info>Buildable configuration 'winscw_urel'</info>
+<info>System Definition file G:/output/build/canonical_system_definition_dfs_build_export.xml</info>
+<info>Found 372 bld.inf references in G:/output/build/canonical_system_definition_dfs_build_export.xml within 10 layers:</info>
+<info>	ncp_layer, mw_layer, os_layer, bldfirst_mw_layer, bldfirst_app_layer, app_layer, tools_layer, addon_layer, unit_test_layer, complementary_layer</info>
+<info>Found 95 bld.inf references in layer "ncp_layer"</info>
+<info>Found 112 bld.inf references in layer "mw_layer"</info>
+<info>Found 25 bld.inf references in layer "os_layer"</info>
+<info>Found 2 bld.inf references in layer "bldfirst_mw_layer"</info>
+<info>Found 1 bld.inf references in layer "bldfirst_app_layer"</info>
+<info>Found 98 bld.inf references in layer "app_layer"</info>
+<info>Found 3 bld.inf references in layer "tools_layer"</info>
+<info>Found 30 bld.inf references in layer "addon_layer"</info>
+<info>Found 0 bld.inf references in layer "unit_test_layer"</info>
+<info>Found 6 bld.inf references in layer "complementary_layer"</info>
+<info>Toolcheck cache G:/epoc32/build/toolcheck_cache_.tmp ignored - environment changed
+</info>
+<info>OS version "vtb92sf" determined from file "G:/epoc32/data/buildinfo.txt"</info>
+<info>applying the OS variant to the configuration "armv5_urel".</info>
+<info>'armv5_urel' uses variant hrh file 'G:/epoc32/include/feature_settings.hrh'</info>
+<info>OS version "vtb92sf" determined from file "G:/epoc32/data/buildinfo.txt"</info>
+<info>applying the OS variant to the configuration "armv5_udeb".</info>
+<info>'armv5_udeb' uses variant hrh file 'G:/epoc32/include/feature_settings.hrh'</info>
+<info>OS version "vtb92sf" determined from file "G:/epoc32/data/buildinfo.txt"</info>
+<info>applying the OS variant to the configuration "winscw_udeb".</info>
+<info>'winscw_udeb' uses variant hrh file 'G:/epoc32/include/feature_settings.hrh'</info>
+<info>OS version "vtb92sf" determined from file "G:/epoc32/data/buildinfo.txt"</info>
+<info>applying the OS variant to the configuration "winscw_urel".</info>
+<info>'winscw_urel' uses variant hrh file 'G:/epoc32/include/feature_settings.hrh'</info>
+<info>Processing G:/sf/mw/svgt/group/bld.inf</info>
+<info>Copied G:/sf/mw/svgt/svgt_plat/svgt_api/inc/SVGImageLoadingObserver.h to G:/epoc32/include/platform/mw/SVGImageLoadingObserver.h</info>
+<info>Copied G:/sf/mw/svgt/svgt_plat/svgt_api/inc/SVGEngineInterfaceImpl.h to G:/epoc32/include/platform/mw/SVGEngineInterfaceImpl.h</info>
+<info>Copied G:/sf/mw/svgt/svgt_plat/svgt_api/inc/SvgListener.h to G:/epoc32/include/platform/mw/SVGListener.h</info>
+<info>Copied G:/sf/mw/svgt/svgt_plat/svgt_api/inc/SVGErrorImpl.h to G:/epoc32/include/platform/mw/SVGErrorImpl.h</info>
+<info>Copied G:/sf/mw/svgt/svgt_plat/svgt_api/inc/SvgJavaInterfaceImpl.h to G:/epoc32/include/platform/mw/SvgJavaInterfaceImpl.h</info>
+<info>Copied G:/sf/mw/svgt/svgt_plat/svgt_api/inc/SVGHyperlinkListener.h to G:/epoc32/include/platform/mw/SVGHyperlinkListener.h</info>
+<info>Copied G:/sf/mw/svgt/svgt_plat/svgt_api/inc/SVGAnimationListener.h to G:/epoc32/include/platform/mw/SVGAnimationListener.h</info>
+<info>Copied G:/sf/mw/svgt/svgt_plat/svgt_api/inc/SVGRequestObserver.h to G:/epoc32/include/platform/mw/SVGRequestObserver.h</info>
+<info>Copied G:/sf/mw/svgt/svgt_plat/svgt_api/inc/SVGRendererId.h to G:/epoc32/include/platform/mw/SVGRendererId.h</info>
+<info>Copied G:/sf/mw/svgt/svgt_plat/nvg_api/inc/nvg.h to G:/epoc32/include/platform/mw/nvg.h</info>
+<info>Copied G:/sf/mw/svgt/svgt_plat/nvg_api/inc/MVGImageBinder.h to G:/epoc32/include/platform/mw/MVGImageBinder.h</info>
+<info>Copied G:/sf/mw/svgt/svgt_plat/nvg_api/inc/NVGIcon.h to G:/epoc32/include/platform/mw/NVGIcon.h</info>
+<info>Copied G:/sf/mw/svgt/svgtopt/rom/SVGEngine.iby to G:/epoc32/rom/include/core/mw/SVGEngine.iby</info>
+<info>Copied G:/sf/mw/svgt/svgtopt/rom/SvgtPluginEcom.iby to G:/epoc32/rom/include/core/mw/SvgtPluginEcom.iby</info>
+<info>Copied G:/sf/mw/svgt/svgtopt/rom/nvgdecoder.iby to G:/epoc32/rom/include/core/mw/NVGDecoder.iby</info>
+<info>Copied G:/sf/mw/svgt/svgtopt/rom/NVGDecoder_SW.iby to G:/epoc32/rom/include/core/mw/NVGDecoder_SW.iby</info>
+<info>Copied G:/sf/mw/svgt/svgtopt/rom/VGRenderer.iby to G:/epoc32/rom/include/core/mw/VGRenderer.iby</info>
+<whatlog bldinf='G:/sf/mw/svgt/group/bld.inf' mmp='' config=''>
+<export destination='G:/epoc32/include/platform/mw/SVGImageLoadingObserver.h' source='G:/sf/mw/svgt/svgt_plat/svgt_api/inc/SVGImageLoadingObserver.h'/>
+<resource>G:/epoc32/include/hrv_gain_mappings.rsg</resource>
+<build>G:/epoc32/release/armv5/urel/ekeyb.dll</build>
+</whatlog>
+<clean bldinf='G:/sf/os/deviceplatformrelease/locfiles/group/set14/bld.inf' mmp='' config=''>
+<zipmarker>G:/epoc32/build/G__sf_os_deviceplatformrelease_locfiles_data_65.zipG__epoc32_include_platform_loc.unzipped</zipmarker>
+</clean>
+<whatlog bldinf='G:/sf/os/deviceplatformrelease/locfiles/group/set14/bld.inf' mmp='' config=''>
+<archive zipfile='G:/sf/os/deviceplatformrelease/locfiles/data/65.zip'>
+<member>G:/epoc32/include/platform/loc/65/101f6dd6_65.loc</member>
+<member>G:/epoc32/include/platform/loc/65/101f6dd7_65.loc</member>
+</archive>
+</whatlog>
+<info>The make-engine exited successfully.</info>
+<info>Run time 999 seconds</info>
+<info>Created/Updated toolcheck cache: G:/epoc32/build/toolcheck_cache_.tmp
+</info>
+</buildlog>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/tests/data/categorization.log	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<buildlog sbs_version="2.9.2 [2009-09-21 sf release]" xmlns="http://symbian.com/xml/build/log" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symbian.com/xml/build/log http://symbian.com/xml/build/log/1_0.xsd">
+<recipe name='compile' target='X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/urel/srchuiresultview.o' host='' layer='app_layer' component='' bldinf='X:/sf/app/organizer/group/bld.inf' mmp='X:/sf/app/organizer/searchui/searchapp/plugins/resultviewerplugin/group/srchuiresviewplugin.mmp' config='armv5_urel.product' platform='armv5' phase='ALL' source='X:/sf/app/organizer/searchui/searchapp/plugins/resultviewerplugin/src/srchuiresultview.cpp'>
+<![CDATA[
++ C:/APPS/rvct22_616/bin/armcc.exe -O2 --dwarf2 --dllimport_runtime --exceptions --exceptions_unwind --diag_suppress 161,611,654,997,1152,1300,1464,1488,2523,6318,6331 --diag_error 1267 --cpu 5T --enum_is_int -Ono_known_library --fpmode ieee_no_fenv --export_all_vtbl --memaccess -UL41 --no_vfe --apcs /inter -c --thumb -D__MARM_THUMB__ --fpu softvfp --cpp -D__MARM_INTERWORK__ -D__SUPPORT_CPP_EXCEPTIONS__ -D_UNICODE -D__SYMBIAN32__ -D__ARMCC__ -D__EPOC32__ -D__MARM__ -D__EABI__ '-D__PRODUCT_INCLUDE__="X:/epoc32/include/feature_settings.hrh"' -D__MARM_ARMV5__ -D__ARMCC_2__ -D__ARMCC_2_2__ -DNDEBUG -D__DLL__ --preinclude X:/epoc32/include/rvct/rvct.h -JX:/sf/app/organizer/searchui/searchapp/plugins/resultviewerplugin/src -JX:/sf/app/organizer/searchui/searchapp/plugins/resultviewerplugin/inc -JX:/sf/app/organizer/searchui/searchapp/inc -JX:/sf/app/organizer/searchui/searchapp/SrchUICommon/inc -JX:/epoc32/ -JX:/epoc32/include/config/platform -JX:/epoc32/include/baseport -JX:/epoc32/include -JX:/epoc32/include/ecom -JX:/epoc32/include -JX:/epoc32/include/mw -JX:/epoc32/include/platform/mw -JX:/epoc32/include/platform -JX:/epoc32/include/app -JX:/epoc32/include/platform/app -JX:/epoc32/include/platform/loc -JX:/epoc32/include/platform/mw/loc -JX:/epoc32/include/platform/app/loc -JX:/epoc32/include/platform/loc/sc -JX:/epoc32/include/platform/mw/loc/sc -JX:/epoc32/include/platform/app/loc/sc --depend_format=unix --depend X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/urel/srchuiresultview.o.d -o X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/urel/srchuiresultview.o X:/sf/app/organizer/searchui/searchapp/plugins/resultviewerplugin/src/srchuiresultview.cpp
+"X:\sf\app\organizer\searchui\searchapp\plugins\resultviewerplugin\src\srchuiresultview.cpp", line 339: Error:  #20: identifier "KSEARCH_HLP_SINGLE_RE" is undefined
+          	helpContext.iContext = KSEARCH_HLP_SINGLE_RE; // add correct help context when available
+          	                       ^
+X:\sf\app\organizer\searchui\searchapp\plugins\resultviewerplugin\src\srchuiresultview.cpp: 0 warnings, 1 error
+
+]]><time start='1253718692.38008' elapsed='1.094' />
+<status exit='failed' code='1' attempt='3' />
+</recipe>
+make: *** [X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultview.o] Error 1
+<clean bldinf='X:/sf/app/organizer/group/bld.inf' mmp='X:/sf/app/organizer/searchui/searchapp/plugins/resultviewerplugin/group/srchuiresviewplugin.mmp' config='armv5_udeb.product'>
+<file>X:/epoc32/release/armv5/udeb/srchuiresviewplugin.dll</file>
+<file>"X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresviewplugin{000a0000}.def"</file>
+<file>"X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresviewplugin{000a0000}.dso"</file>
+<file>X:/epoc32/release/armv5/udeb/srchuiresviewplugin.dll.sym</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresviewplugin_udeb_objects.via</file>
+<file>X:/epoc32/release/armv5/udeb/srchuiresviewplugin.dll.map</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultview.o.d</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultcontainer.o.d</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultmodel.o.d</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/proxy.o.d</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultview.o</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultcontainer.o</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultmodel.o</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/proxy.o</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultview.o</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultcontainer.o</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultmodel.o</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/proxy.o</file>
+<file>X:/epoc32/release/armv5.product/udeb/srchuiresviewplugin.dll</file>
+<file>X:/epoc32/release/armv5.product/udeb/srchuiresviewplugin.dll.sym</file>
+<file>X:/epoc32/release/armv5.product/udeb/srchuiresviewplugin.dll.map</file>
+<dir>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5</dir>
+<dir>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5</dir>
+<dir>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb</dir>
+<dir>X:/epoc32/release/armv5/udeb</dir>
+<dir>X:/epoc32/release/armv5/lib</dir>
+<dir>X:/epoc32/release/armv5/lib</dir>
+<dir>X:/epoc32/release/armv5.product/udeb</dir>
+</clean>
+</buildlog>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/tests/data/categorization_clean.log	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<buildlog sbs_version="2.9.2 [2009-09-21 sf release]" xmlns="http://symbian.com/xml/build/log" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symbian.com/xml/build/log http://symbian.com/xml/build/log/1_0.xsd">
+<clean bldinf='X:/sf/app/organizer/group/bld.inf' mmp='X:/sf/app/organizer/searchui/searchapp/plugins/resultviewerplugin/group/srchuiresviewplugin.mmp' config='armv5_udeb.product'>
+<file>X:/epoc32/release/armv5/udeb/srchuiresviewplugin.dll</file>
+<file>"X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresviewplugin{000a0000}.def"</file>
+<file>"X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresviewplugin{000a0000}.dso"</file>
+<file>X:/epoc32/release/armv5/udeb/srchuiresviewplugin.dll.sym</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresviewplugin_udeb_objects.via</file>
+<file>X:/epoc32/release/armv5/udeb/srchuiresviewplugin.dll.map</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultview.o.d</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultcontainer.o.d</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultmodel.o.d</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/proxy.o.d</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultview.o</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultcontainer.o</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultmodel.o</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/proxy.o</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultview.o</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultcontainer.o</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultmodel.o</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/proxy.o</file>
+<file>X:/epoc32/release/armv5.product/udeb/srchuiresviewplugin.dll</file>
+<file>X:/epoc32/release/armv5.product/udeb/srchuiresviewplugin.dll.sym</file>
+<file>X:/epoc32/release/armv5.product/udeb/srchuiresviewplugin.dll.map</file>
+<dir>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5</dir>
+<dir>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5</dir>
+<dir>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb</dir>
+<dir>X:/epoc32/release/armv5/udeb</dir>
+<dir>X:/epoc32/release/armv5/lib</dir>
+<dir>X:/epoc32/release/armv5/lib</dir>
+<dir>X:/epoc32/release/armv5.product/udeb</dir>
+</clean>
+</buildlog>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/tests/data/categorization_failed_empty_recipe.log	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<buildlog sbs_version="2.9.2 [2009-09-21 sf release]" xmlns="http://symbian.com/xml/build/log" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symbian.com/xml/build/log http://symbian.com/xml/build/log/1_0.xsd">
+<recipe name='compile' target='X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/urel/srchuiresultview.o' host='' layer='app_layer' component='' bldinf='X:/sf/app/organizer/group/bld.inf' mmp='X:/sf/app/organizer/searchui/searchapp/plugins/resultviewerplugin/group/srchuiresviewplugin.mmp' config='armv5_urel.product' platform='armv5' phase='ALL' source='X:/sf/app/organizer/searchui/searchapp/plugins/resultviewerplugin/src/srchuiresultview2.cpp'>
+<![CDATA[
+]]><time start='1253718692.38008' elapsed='1.094' />
+<status exit='failed' code='1' attempt='3' />
+</recipe>
+make: *** [X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/urel/srchuiresultview.o] Error 1
+<clean bldinf='X:/sf/app/organizer/group/bld.inf' mmp='X:/sf/app/organizer/searchui/searchapp/plugins/resultviewerplugin/group/srchuiresviewplugin.mmp' config='armv5_udeb.product'>
+<file>X:/epoc32/release/armv5/udeb/srchuiresviewplugin.dll</file>
+<file>"X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresviewplugin{000a0000}.def"</file>
+<file>"X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresviewplugin{000a0000}.dso"</file>
+<file>X:/epoc32/release/armv5/udeb/srchuiresviewplugin.dll.sym</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresviewplugin_udeb_objects.via</file>
+<file>X:/epoc32/release/armv5/udeb/srchuiresviewplugin.dll.map</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultview.o.d</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultcontainer.o.d</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultmodel.o.d</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/proxy.o.d</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultview.o</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultcontainer.o</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultmodel.o</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/proxy.o</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultview.o</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultcontainer.o</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultmodel.o</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/proxy.o</file>
+<file>X:/epoc32/release/armv5.product/udeb/srchuiresviewplugin.dll</file>
+<file>X:/epoc32/release/armv5.product/udeb/srchuiresviewplugin.dll.sym</file>
+<file>X:/epoc32/release/armv5.product/udeb/srchuiresviewplugin.dll.map</file>
+<dir>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5</dir>
+<dir>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5</dir>
+<dir>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb</dir>
+<dir>X:/epoc32/release/armv5/udeb</dir>
+<dir>X:/epoc32/release/armv5/lib</dir>
+<dir>X:/epoc32/release/armv5/lib</dir>
+<dir>X:/epoc32/release/armv5.product/udeb</dir>
+</clean>
+</buildlog>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/tests/data/categorization_failed_error_in_recipe.log	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<buildlog sbs_version="2.9.2 [2009-09-21 sf release]" xmlns="http://symbian.com/xml/build/log" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symbian.com/xml/build/log http://symbian.com/xml/build/log/1_0.xsd">
+<recipe name='compile' target='X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/urel/srchuiresultview.o' host='' layer='app_layer' component='' bldinf='X:/sf/app/organizer/group/bld.inf' mmp='X:/sf/app/organizer/searchui/searchapp/plugins/resultviewerplugin/group/srchuiresviewplugin.mmp' config='armv5_urel.product' platform='armv5' phase='ALL' source='X:/sf/app/organizer/searchui/searchapp/plugins/resultviewerplugin/src/srchuiresultview2.cpp'>
+<![CDATA[
+ERROR: only this error should be counted 
+]]><time start='1253718692.38008' elapsed='1.094' />
+<status exit='failed' code='1' attempt='3' />
+</recipe>
+make: *** [X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/urel/srchuiresultview.o] Error 1
+<clean bldinf='X:/sf/app/organizer/group/bld.inf' mmp='X:/sf/app/organizer/searchui/searchapp/plugins/resultviewerplugin/group/srchuiresviewplugin.mmp' config='armv5_udeb.product'>
+<file>X:/epoc32/release/armv5/udeb/srchuiresviewplugin.dll</file>
+<file>"X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresviewplugin{000a0000}.def"</file>
+<file>"X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresviewplugin{000a0000}.dso"</file>
+<file>X:/epoc32/release/armv5/udeb/srchuiresviewplugin.dll.sym</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresviewplugin_udeb_objects.via</file>
+<file>X:/epoc32/release/armv5/udeb/srchuiresviewplugin.dll.map</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultview.o.d</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultcontainer.o.d</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultmodel.o.d</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/proxy.o.d</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultview.o</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultcontainer.o</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultmodel.o</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/proxy.o</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultview.o</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultcontainer.o</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultmodel.o</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/proxy.o</file>
+<file>X:/epoc32/release/armv5.product/udeb/srchuiresviewplugin.dll</file>
+<file>X:/epoc32/release/armv5.product/udeb/srchuiresviewplugin.dll.sym</file>
+<file>X:/epoc32/release/armv5.product/udeb/srchuiresviewplugin.dll.map</file>
+<dir>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5</dir>
+<dir>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5</dir>
+<dir>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb</dir>
+<dir>X:/epoc32/release/armv5/udeb</dir>
+<dir>X:/epoc32/release/armv5/lib</dir>
+<dir>X:/epoc32/release/armv5/lib</dir>
+<dir>X:/epoc32/release/armv5.product/udeb</dir>
+</clean>
+</buildlog>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/tests/data/common.csv	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,45 @@
+priority,regex,description
+FATAL,.*mingw_make\.exe.*,
+ERROR,.*\): Missing file:.*, 
+ERROR,^(?:(?:\s*\d+\)\s*)|(?:\s*\*\*\*\s*))ERROR:.*,
+ERROR,.*Error:\s+.*,
+ERROR,.*is not recognized as an internal or external command.*,
+ERROR,^MISSING:.*,
+ERROR,.*FLEXlm error:.*,
+ERROR,.*(ABLD|BLDMAKE) ERROR:.*,
+ERROR,.*FATAL ERROR\(S\):.*,
+ERROR,.*fatal error U1077.*,
+ERROR,.*warning U4010,
+ERROR,^make(?:\[\d+\])?\: \*\*\*.*,
+ERROR,^make(?:\[\d+\])?:\s+.*\s+not\s+remade.*,
+ERROR,error: ((Internal fault):)$,
+ERROR,Exception: [A-Z0-9_]+.*,
+ERROR,.*target .* given more than once in the same rule.*,
+ERROR,^ERROR:.*,
+ERROR,^ERROR EC\d+:.*,
+ERROR,Errors caused tool to abort..*,
+ERROR,.*no rule to make.*,
+ERROR,^ERROR\t.*,
+REMARK,.*[Ww]arning:?\s+(#111-D|#1166-D|#117-D|#128-D|#1293-D|#1441-D|#170-D|#174-D|#175-D|#185-D|#186-D|#223-D|#231-D|#257-D|#284-D|#368-D|#414-D|#430-D|#47-D|#514-D|#546-D|#68-D|#69-D|#830-D|#940-D|#836-D|A1495E|L6318W|C2874W|C4127|C4355|C4530|C4702|C4786|LNK4049).*,
+WARNING,^(\d+\))?\s.*WARNING:.*,
+WARNING,^MAKEDEF WARNING:.*,
+WARNING,.*\\\\(?)\(\d+\)\s:\sWarning:\s\(\d+\),
+WARNING,^(BLDMAKE |MAKEDEF )?WARNING:.*,
+WARNING,.*\(\d+\) : warning C.*,
+WARNING,.*\d+: warning:.*,
+WARNING,.*Usage Warning:.*,
+WARNING,.*mwld.exe:.*,
+WARNING,^Command line warning.*,
+WARNING,.*ERROR: bad relocation:.*,
+WARNING,^(\d+) warning.*,
+WARNING,.*EventType:\s+Error\s+Source:\s+SweepNT.*,
+WARNING,^WARN\t.*,
+WARNING,.*LINK : warning.*,
+REMARK,.*Command line warning D4025 : .*,
+REMARK,^REMARK: .*,
+REMARK,^EventType:\s+Error\s+Source:\s+GNU\s+Make.*,
+REMARK,".*:\d+: warning: cannot find matching deallocation function""r""((:\d+)*: note: ).*",
+INFO,^INFO:.*,
+ERROR,"\""(.*)\"" , line (\d+): (Error: +(.\d+.*?):.*)$",
+WARNING,"line \d+: Warning:', r':\s+warning\s+\w+:.*",
+WARNING,"\""(.*)\""\, line (\d+): (Warning: +(?!A1495E)(.\d+.*?):.*)$",
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/tests/data/dp.log	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,9 @@
+INFO:dp:*******************************************
+INFO:dp:*                                         *
+INFO:dp:*       Data package 2.0 creation         *
+INFO:dp:*                 iCreatorDP              *
+INFO:dp:*                    v0.8.7                 *
+INFO:dp:*                                         *
+INFO:dp:*******************************************
+ERROR:dp:${${product.list}.dp.wa}/Setting_files does not exist
+Result: 1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/tests/data/ido_abs_mcl_devlon70_robot_MCL.70.500_fixslashes_raptor.log	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,36 @@
+
+No changes to P:\sf\mw\svgt\svgtopt\SVG\SVGRecog\Group\SvgRecog.MMP
+ERROR: P:\sf\mw\svgt\svgt_plat\svgt_api\tsrc\group\Bld.inf: #1: // to the same name in \epoc32\include
+ERROR: P:\sf\mw\svgt\svgt_plat\svgt_api\tsrc\group\Bld.inf: #1: \agnmodel\inc\AGMCOMON.H
+ERROR: P:\sf\mw\svgt\svgt_plat\svgt_api\tsrc\group\Bld.inf: #1: \agnmodel\group\agnmodel.mmp
+ERROR: P:\sf\mw\svgt\svgt_plat\svgt_api\tsrc\group\Bld.inf: #1: \agnmodel\group\agsvexe.mmp
+PRINT ONLY -> Writing P:\sf\mw\svgt\svgt_plat\svgt_api\tsrc\group\Bld.inf
+No changes to P:\sf\mw\svgt\svgt_plat\svgt_api\tsrc\group\svgtmodule.mmp
+ERROR: P:\sf\mw\classicui\uifw\AvKon\odeconf\group\odeconf.mmp: #1: SOURCEPATH		..\src
+ERROR: P:\sf\mw\classicui\uifw\AvKon\odeconf\group\odeconf.mmp: #1: SOURCEPATH		..\data
+ERROR: P:\sf\mw\classicui\uifw\AvKon\odeconf\group\odeconf.mmp: #1: TARGETPATH      resource\apps
+ERROR: P:\sf\mw\classicui\uifw\AvKon\odeconf\group\odeconf.mmp: #1: TARGETPATH 	    \private\10003a3f\apps
+ERROR: P:\sf\mw\classicui\uifw\AvKon\odeconf\group\odeconf.mmp: #1: USERINCLUDE	   ..\inc
+PRINT ONLY -> Writing P:\sf\mw\classicui\uifw\AvKon\odeconf\group\odeconf.mmp
+No changes to P:\sf\mw\classicui\uifw\AvKon\odeconf\inc\odeconf.hrh
+ERROR: P:\sf\app\homescreen\idlehomescreen\hsplugins\organizer\aiagendaplugin2\inc\aicalendarplugin2constants.hrh: #1: _LIT( KAICal2ArabicSummaryLocationSeparator, " \x060c" );
+ERROR: P:\sf\app\homescreen\idlehomescreen\hsplugins\organizer\aiagendaplugin2\inc\aicalendarplugin2constants.hrh: #1:  * \x0009 horizontal tab
+ERROR: P:\sf\app\homescreen\idlehomescreen\hsplugins\organizer\aiagendaplugin2\inc\aicalendarplugin2constants.hrh: #1:  * \x000a new line
+ERROR: P:\sf\app\homescreen\idlehomescreen\hsplugins\organizer\aiagendaplugin2\inc\aicalendarplugin2constants.hrh: #1:  * \x000b line tabulation (vertical
+ERROR: P:\sf\app\homescreen\idlehomescreen\hsplugins\organizer\aiagendaplugin2\inc\aicalendarplugin2constants.hrh: #1:  * \x000c form feed
+ERROR: P:\sf\app\homescreen\idlehomescreen\hsplugins\organizer\aiagendaplugin2\inc\aicalendarplugin2constants.hrh: #1:  * \x000d carriage return
+ERROR: P:\sf\app\homescreen\idlehomescreen\hsplugins\organizer\aiagendaplugin2\inc\aicalendarplugin2constants.hrh: #1:  * \x2028 line separator
+ERROR: P:\sf\app\homescreen\idlehomescreen\hsplugins\organizer\aiagendaplugin2\inc\aicalendarplugin2constants.hrh: #1:  * \x2029 paragraph separator
+ERROR: P:\sf\app\homescreen\idlehomescreen\hsplugins\organizer\aiagendaplugin2\inc\aicalendarplugin2constants.hrh: #1: "\x0009\x000A\x000B\x000C\x000D\x2028\x2029" );
+PRINT ONLY -> Writing P:\sf\app\homescreen\idlehomescreen\hsplugins\organizer\aiagendaplugin2\inc\aicalendarplugin2constants.hrh
+No changes to P:\sf\app\homescreen\idlehomescreen\hsplugins\organizer\aiagendaplugin2\inc\aicalendarplugin2uids.hrh
+No changes to P:\sf\app\homescreen\idlehomescreen\hsplugins\organizer\aiagendaplugin2\inc\calendar.hrh
+No changes to P:\sf\app\homescreen\idlehomescreen\hsplugins\organizer\aiagendaplugin2\inc\CalendarVariant.hrh
+ERROR: P:\sf\mw\inputmethods\textinput\peninputgenerichwr\inc\peninputhwrarabic.hrh: #1: _LIT(KStandardPuncExclamatoryPoint, "\x0021");
+ERROR: P:\sf\mw\inputmethods\textinput\peninputgenerichwr\inc\peninputhwrarabic.hrh: #1: _LIT(KStandardPuncDotPoint, "\x002E");
+ERROR: P:\sf\mw\inputmethods\textinput\peninputgenerichwr\inc\peninputhwrarabic.hrh: #1: _LIT(KArabicPuncComma, "\x060C");
+ERROR: P:\sf\mw\inputmethods\textinput\peninputgenerichwr\inc\peninputhwrarabic.hrh: #1: _LIT(KArabicPuncSemicolon, "\x061B");
+ERROR: P:\sf\mw\inputmethods\textinput\peninputgenerichwr\inc\peninputhwrarabic.hrh: #1: _LIT(KArabicPuncQuestion, "\x061F");
+ERROR: P:\sf\mw\inputmethods\textinput\peninputgenerichwr\inc\peninputhwrarabic.hrh: #1: _LIT(KArabicPuncWaw, "\x0648");
+PRINT ONLY -> Writing P:\sf\mw\inputmethods\textinput\peninputgenerichwr\inc\peninputhwrarabic.hrh
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/tests/data/ido_abs_mcl_devlon70_robot_MCL.70.500_info.log	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<info>
+                <id>ido_abs_mcl_devlon70_robot_MCL.70.500</id>
+                <number>500</number>
+                <startTime>2009-04-25T19:31:43</startTime>
+                <machine>FASYM011</machine>
+                <publish>
+                    <status>true</status>
+                    <location>\\fasamba\dfs\r1120_isis\NT\Build_and_Release\IDO_Statistics\ABS_Domain\Releases</location>
+                </publish>
+            </info>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/tests/data/ido_abs_tb92-nightly_5.2.58_validate_policy.log	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,81 @@
+<?xml version="1.0"?>
+<policyvalidation>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\screensaver\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\screensaver\scrsaver\scrsaverplugins\ScreenSaverAnimPlugin\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\screensaver\scrsaver\scrsaverplugins\ScreenSaverGifAnimPlugin\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\screensaver\scrsaver\scrsaverplugins\SlideshowPlugin\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\applicationinterworkingfw\ServiceHandler\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_plat\alarm_api\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_plat\extended_notifiers_api\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_pub\aiw_criteria_api\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_pub\aiw_generic_parameter_api\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_pub\aiw_service_handler_api\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_pub\buttons_api\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_pub\common_file_dialogs_api\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_pub\context_pane_api\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_pub\dialogs_api\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_pub\document_handler_api\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_pub\editors_api\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_pub\form_api\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_pub\grids_api\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_pub\hierarchical_lists_api\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_pub\indicators_api\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_pub\information_preview_popup_api\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_pub\lists_api\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_pub\navigation_pane_api\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_pub\notes_api\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_pub\notifiers_api\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_pub\options_menu_api\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_pub\popups_api\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_pub\screen_saver_api\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_pub\scroller_api\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_pub\setting_pages_api\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_pub\sounds_api\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_pub\status_pane_api\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_pub\tabs_api\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_pub\title_pane_api\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_pub\title_pane_touch_observer_api\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_pub\tsrc\bc\apps\bctestlauncher\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\CommonAdapter\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\commonuis\CommonDialogs\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\commonuis\CommonUi\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\psln\Doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\uifw\AknGlobalUI\avkonstartupextplg\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\uifw\AknGlobalUI\Doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\uifw\AvKon\akncompamode\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\uifw\AvKon\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\uifw\AvKon\tsrc\bc\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\uifw\AvKon\tsrc\bc\script\codetest_script\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\uifw\EikStd\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\svgt\svgtopt\Doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\svgt\svgtopt\VGRenderer\Doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\uiresources\layouts\cdl\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\uiresources\pictographs\AknPictograph\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\uiresources\skins\AknSkins\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\uiresources\uigraphics\AknIcon\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\uiresources\uiresources_pub\pictograph_api\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\uiresources\uiresources_pub\skins_api\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\hapticsservices\tactilefeedback\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\graphicsuis\svgtviewer\SvgtViewerPlugin\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\helps\csxhelp\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\uiaccelerator\uiacceltk\hitchcock\coretoolkit\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\uiaccelerator\uiacceltk\hitchcock\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\uiaccelerator\uiacceltk\hitchcock\Tracer\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\uitools\svgtencoder\svgtenc\standalone\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\ocrsrv\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\inputmethods\fep\aknfep\peninputplugins\peninputimeplugincn\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\inputmethods\inputmethods_pub\ptiengine_iti_api\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\inputmethods\textinput\peninputarc\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\inputmethods\textinput\peninputarc\utils\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\inputmethods\textinput\peninputcommonctrls\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\inputmethods\textinput\peninputhwrboxcn\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\inputmethods\textinput\ptienginev2\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\dictionary\userdict\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\textandloc\charconvfw\Charconvplugin\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\textandloc\charconvfw\Findutil\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\textandloc\charconvfw\gamerecognizer\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\textandloc\charconvfw\JPLangUtil\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\textandloc\charconvfw\Localizer\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\textandloc\charconvfw\SortUtil\doc" value="None"/>
+    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\textandloc\textandloc_pub\directory_localizer_api\doc" value="None"/>
+</policyvalidation>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/tests/data/log-with-same-root-name.log	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,1 @@
+ERROR: from log-with-same-root-name.log
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/tests/data/log-with-same-root-name.log.log	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,1 @@
+ERROR: from log-with-same-root-name.log.log
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/tests/data/metadata_regex.csv	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,59 @@
+priority,regex,description
+CRITICAL,.*Error:.*mingw_make\.exe.*,
+ERROR,.*\): Missing file:.*, 
+ERROR,(?:(?:\s*\d+\)\s*)|(?:\s*\*\*\*\s*))ERROR:.*,
+ERROR,.*is not recognized as an internal or external command.*,
+ERROR,MISSING:.*,
+ERROR,.*FLEXlm error:.*,
+ERROR,.*(ABLD|BLDMAKE) ERROR:.*,
+ERROR,ERROR:.*,
+ERROR,.*FATAL ERROR\(S\):.*,
+ERROR,.*fatal error C1001: INTERNAL COMPILER ERROR.*,
+ERROR,.*fatal error U1077.*,
+ERROR,.*warning U4010.*,
+ERROR,make\s*(?:\[\d+\])\s*?\:\s*\*\*\*.*,
+ERROR,make(?:\[\d+\])?\:.*\s+not\s+remade.*,
+ERROR,make\s*:\s*\*\*\*.*\s*[Nn]o rule.*,
+ERROR,.*Exception: STATUS_ACCESS_VIOLATION.*,
+ERROR,error: ((Internal fault):)$,
+ERROR,(?i).*\s*elf2e32\s*:\s*Error\s*:\s*,
+ERROR,.*[Nn]o such file or directory$,
+ERROR,Exception: [A-Z0-9_]+.*,
+ERROR,.*target .* given more than once in the same rule.*,
+ERROR,ERROR EC\d+:.*,
+ERROR,Errors caused tool to abort..*,
+ERROR,ERROR\t.*,
+ERROR,.*Traceback \(most recent call last\).*,
+ERROR,Application encountered an unexpected error\.\s*Stopping\.\s*,
+ERROR,Unable to write dump file .+,
+ERROR,Unable to connect to CM: .*,
+ERROR,.*: Incorrect slash in .*,
+ERROR,.*: Incorrect case for epoc32 tree in .*,
+ERROR,.*: Incorrect case versus exclusion list in .*,
+ERROR,The system cannot find the path specified.*,
+CRITICAL,.*[Ww]arning:?\s+(#111-D|#1166-D|#117-D|#128-D|#1293-D|#1441-D|#170-D|#174-D|#175-D|#185-D|#186-D|#223-D|#231-D|#257-D|#284-D|#368-D|#414-D|#430-D|#47-D|#514-D|#546-D|#68-D|#69-D|#830-D|#940-D|#836-D|A1495E|L6318W|C2874W|C4127|C4355|C4530|C4702|C4786|LNK4049).*,
+WARNING,(\d+\))?\s.*WARNING:.*,
+WARNING,MAKEDEF WARNING:.*,
+WARNING,.*\\\\(?)\(\d+\)\s:\sWarning:\s\(\d+\),
+WARNING,(BLDMAKE |MAKEDEF )?WARNING:.*,
+WARNING,.*\(\d+\) : warning C.*,
+WARNING,.*\d+: warning:.*,
+WARNING,.*Usage Warning:.*,
+WARNING,.*mwld.exe:.*,
+WARNING,Command line warning.*,
+WARNING,.*ERROR: bad relocation:.*,
+WARNING,(\d+) warning.*,
+WARNING,.*EventType:\s+Error\s+Source:\s+SweepNT.*,
+WARNING,WARN\t.*,
+WARNING,.*LINK : warning.*,
+WARNING,(?i).*\s*elf2e32\s*:\s*Warning\s*:\s*,
+REMARK,.*Command line warning D4025 : .*,
+REMARK,REMARK: .*,
+REMARK,EventType:\s+Error\s+Source:\s+GNU\s+Make.*,
+REMARK,".*:\d+: warning: cannot find matching deallocation function""r""((:\d+)*: note: ).*",
+INFO,INFO:.*,
+ERROR,"\""(.*)\"" , line (\d+): (Error: +(.\d+.*?):.*)",
+WARNING,"line \d+: Warning:', r':\s+warning\s+\w+:.*",
+WARNING,"\""(.*)\""\, line (\d+): (Warning: +(?!A1495E)(.\d+.*?):.*)",
+WARNING,Warning\s*:\s*.*,
+ERROR,.*Error\s*:\s*.*,
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/tests/data/metadata_regex_compile.csv	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,16 @@
+priority,regex,description
+ERROR,.*target pattern contains no.*,
+ERROR,.*mixed implicit and static pattern rules.*,
+ERROR,.*multiple target patterns.*,
+ERROR,.*missing target pattern.*,
+ERROR,.*insufficient arguments to function.*,
+ERROR,.*Unterminated variable reference.*,
+ERROR,.*Recursive variable.*references itself (eventually).*,
+ERROR,.*Circular.*dependency dropped.*,
+ERROR,.*Makefile.*was not found.*,
+ERROR,.*No targets specified and no makefile found.*,
+ERROR,.*missing rule before commands.*,
+ERROR,.*commands commence before first target.*,
+ERROR,.*missing separator.*,  
+WARNING,.*warning: jobserver unavailable:.*,
+WARNING,.*warning: -jN forced in submake:.*,
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/tests/data/noerror.log	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<buildlog sbs_version="2.9.2 [2009-09-21 sf release]" xmlns="http://symbian.com/xml/build/log" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symbian.com/xml/build/log http://symbian.com/xml/build/log/1_0.xsd">
+</buildlog>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/tests/data/parser_error.log	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<buildlog sbs_version="2.9.2 [2009-09-21 sf release]" xmlns="http://symbian.com/xml/build/log" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symbian.com/xml/build/log http://symbian.com/xml/build/log/1_0.xsd">
+<recipe name='compile' target='X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/urel/srchuiresultview.o' host='' layer='app_layer' component='' bldinf='X:/sf/app/organizer/group/bld.inf' mmp='X:/sf/app/organizer/searchui/searchapp/plugins/resultviewerplugin/group/srchuiresviewplugin.mmp' config='armv5_urel.product' platform='armv5' phase='ALL' source='X:/sf/app/organizer/searchui/searchapp/plugins/resultviewerplugin/src/srchuiresultview.cpp'>
+<![CDATA[
++ C:/APPS/rvct22_616/bin/armcc.exe -O2 --dwarf2 --dllimport_runtime --exceptions --exceptions_unwind --diag_suppress 161,611,654,997,1152,1300,1464,1488,2523,6318,6331 --diag_error 1267 --cpu 5T --enum_is_int -Ono_known_library --fpmode ieee_no_fenv --export_all_vtbl --memaccess -UL41 --no_vfe --apcs /inter -c --thumb -D__MARM_THUMB__ --fpu softvfp --cpp -D__MARM_INTERWORK__ -D__SUPPORT_CPP_EXCEPTIONS__ -D_UNICODE -D__SYMBIAN32__ -D__ARMCC__ -D__EPOC32__ -D__MARM__ -D__EABI__ '-D__PRODUCT_INCLUDE__="X:/epoc32/include/feature_settings.hrh"' -D__MARM_ARMV5__ -D__ARMCC_2__ -D__ARMCC_2_2__ -DNDEBUG -D__DLL__ --preinclude X:/epoc32/include/rvct/rvct.h -JX:/sf/app/organizer/searchui/searchapp/plugins/resultviewerplugin/src -JX:/sf/app/organizer/searchui/searchapp/plugins/resultviewerplugin/inc -JX:/sf/app/organizer/searchui/searchapp/inc -JX:/sf/app/organizer/searchui/searchapp/SrchUICommon/inc -JX:/epoc32/ -JX:/epoc32/include/config/platform -JX:/epoc32/include/baseport -JX:/epoc32/include -JX:/epoc32/include/ecom -JX:/epoc32/include -JX:/epoc32/include/mw -JX:/epoc32/include/platform/mw -JX:/epoc32/include/platform -JX:/epoc32/include/app -JX:/epoc32/include/platform/app -JX:/epoc32/include/platform/loc -JX:/epoc32/include/platform/mw/loc -JX:/epoc32/include/platform/app/loc -JX:/epoc32/include/platform/loc/sc -JX:/epoc32/include/platform/mw/loc/sc -JX:/epoc32/include/platform/app/loc/sc --depend_format=unix --depend X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/urel/srchuiresultview.o.d -o X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/urel/srchuiresultview.o X:/sf/app/organizer/searchui/searchapp/plugins/resultviewerplugin/src/srchuiresultview.cpp
+"X:\sf\app\organizer\searchui\searchapp\plugins\resultviewerplugin\src\srchuiresultview.cpp", line 339: Error:  #20: identifier "KSEARCH_HLP_SINGLE_RE" is undefined
+          	helpContext.iContext = KSEARCH_HLP_SINGLE_RE; // add correct help context when available
+          	                       ^
+X:\sf\app\organizer\searchui\searchapp\plugins\resultviewerplugin\src\srchuiresultview.cpp: 0 warnings, 1 error
+
+]]><time start='1253718692.38008' elapsed='1.094' />
+<error>
+<status exit='failed' code='1' attempt='3' />
+</recipe>
+make: *** [X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/urel/srchuiresultview.o] Error 1
+<clean bldinf='X:/sf/app/organizer/group/bld.inf' mmp='X:/sf/app/organizer/searchui/searchapp/plugins/resultviewerplugin/group/srchuiresviewplugin.mmp' config='armv5_udeb.product'>
+<file>X:/epoc32/release/armv5/udeb/srchuiresviewplugin.dll</file>
+<file>"X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresviewplugin{000a0000}.def"</file>
+<file>"X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresviewplugin{000a0000}.dso"</file>
+<file>X:/epoc32/release/armv5/udeb/srchuiresviewplugin.dll.sym</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresviewplugin_udeb_objects.via</file>
+<file>X:/epoc32/release/armv5/udeb/srchuiresviewplugin.dll.map</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultview.o.d</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultcontainer.o.d</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultmodel.o.d</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/proxy.o.d</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultview.o</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultcontainer.o</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultmodel.o</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/proxy.o</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultview.o</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultcontainer.o</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultmodel.o</file>
+<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/proxy.o</file>
+<file>X:/epoc32/release/armv5.product/udeb/srchuiresviewplugin.dll</file>
+<file>X:/epoc32/release/armv5.product/udeb/srchuiresviewplugin.dll.sym</file>
+<file>X:/epoc32/release/armv5.product/udeb/srchuiresviewplugin.dll.map</file>
+<dir>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5</dir>
+<dir>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5</dir>
+<dir>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb</dir>
+<dir>X:/epoc32/release/armv5/udeb</dir>
+<dir>X:/epoc32/release/armv5/lib</dir>
+<dir>X:/epoc32/release/armv5/lib</dir>
+<dir>X:/epoc32/release/armv5.product/udeb</dir>
+</clean>
+</buildlog>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/tests/data/receipe_lengthy_warn.log	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,182 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<buildlog sbs_version="2.5.3 [2009-03-12 release]" xmlns="http://symbian.com/xml/build/log" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symbian.com/xml/build/log http://symbian.com/xml/build/log/1_0.xsd">
+<info>sbs: version 2.5.3 [2009-03-12 release]
+</info>
+<info>SBS_HOME E:/Build_E/ido-config-df/sbs</info>
+<info>Set-up E:/Build_E/ido-config-df/sbs/sbs_init.xml</info>
+<info>Command-line-arguments -s z:\output/build/canonical_system_definition_build.xml -k -c armv5 -j 4 -m z:\output\logs/ido_imm_mcl_devlon70_robot_5.1.005__armv5_multiple_thread_build_Makefile --filters=FilterHeliumLog -f z:\output\logs/ido_imm_mcl_devlon70_robot_5.1.005__armv5_multiple_thread_build_compile.log</info>
+<recipe name='win32compile2object' target='x:/epoc32/build/opensrv/c_672cbe451a1cdf8d/libgabble-convenience_dll/winscw/urel/gabble-connection.o' host='fawec103' layer='sf' component='opensrv' bldinf='x:/sf/mw/opensrv/group/bld.inf' mmp='x:/sf/mw/opensrv/telepathygabble/group/libgabble-convenience.mmp' config='winscw_urel' platform='winscw' phase='ALL' source='x:/sf/mw/opensrv/telepathygabble/src/gabble-connection.c'>
+<![CDATA[
++ mwccsym2.exe -c -align 4 -warnings on -w nohidevirtual,nounusedexpr -msgstyle gcc -enum int -str pool -exc ms -trigraphs on -cwd source -O4,s -runtime staticmulti -wchar_t off -nostdinc -gccdepends -MD -d __SYMBIAN32__ -d __CW32__ -d __WINS__ -d __WINSCW__ -d __SUPPORT_CPP_EXCEPTIONS__ -d _UNICODE -d SYMBIAN -d HAVE_CONFIG_H -d HAVE_ERRNO_H -d VERBOSE -d EMULATOR -d NDEBUG -d __DLL__ -i- -i x:/sf/mw/opensrv/telepathygabble/inc -i x:/sf/mw/opensrv/loudmouth/inc -i x:/epoc32/include -i x:/epoc32/include -i x:/epoc32/include/mw -i x:/epoc32/include/platform/mw -i x:/epoc32/include/platform -i x:/epoc32/include/platform/loc -i x:/epoc32/include/platform/mw/loc -i x:/epoc32/include/platform/loc/sc -i x:/epoc32/include/platform/mw/loc/sc -i x:/epoc32/include/stdapis -i x:/epoc32/include/stdapis/glib-2.0 -i x:/epoc32/include/stdapis/glib-2.0/glib -i x:/epoc32/include/stdapis/glib-2.0/gObject -i x:/epoc32/include/stdapis/openssl -i x:/epoc32/include/stdapis/stlport -i x:/epoc32/include/stdapis/dbus-1.0 -i x:/epoc32/include/stdapis/dbus-1.0/dbus -include bldvariant.hrh -o x:/epoc32/build/opensrv/c_672cbe451a1cdf8d/libgabble-convenience_dll/winscw/urel/gabble-connection.o x:/sf/mw/opensrv/telepathygabble/src/gabble-connection.c
+epoc32\include\e32def.h:315: warning: macro 'TRUE' redefined
+epoc32\include\e32def.h:315: warning: (included from:
+epoc32\include\e32def.h:315: warning:   X:\epoc32\include\stdapis\pthread.h:40
+epoc32\include\e32def.h:315: warning:   X:\epoc32\include\stdapis\glib-2.0\glibconfig.h:46
+epoc32\include\e32def.h:315: warning:   X:\epoc32\include\stdapis\glib-2.0\glib\gtypes.h:30
+epoc32\include\e32def.h:315: warning:   X:\epoc32\include\stdapis\glib-2.0\glib\galloca.h:31
+epoc32\include\e32def.h:315: warning:   X:\epoc32\include\stdapis\glib-2.0\glib.h:43
+epoc32\include\e32def.h:315: warning:   X:\epoc32\include\stdapis\glib-2.0\gobject\gtype.h:28
+epoc32\include\e32def.h:315: warning:   X:\epoc32\include\stdapis\glib-2.0\gobject\gboxed.h:28
+epoc32\include\e32def.h:315: warning:   X:\epoc32\include\stdapis\glib-2.0\glib-object.h:25
+epoc32\include\e32def.h:315: warning:   X:\epoc32\include\stdapis\dbus-1.0\dbus\dbus-glib.h:27
+epoc32\include\e32def.h:315: warning:   X:\sf\mw\opensrv\telepathygabble\src\gabble-connection.c:23)
+epoc32\include\stdapis\glib-2.0\glib\gmacros.h:163: warning:     (location of previous definition)
+epoc32\include\e32def.h:326: warning: macro 'FALSE' redefined
+epoc32\include\e32def.h:326: warning: (included from:
+epoc32\include\e32def.h:326: warning:   X:\epoc32\include\stdapis\pthread.h:40
+epoc32\include\e32def.h:326: warning:   X:\epoc32\include\stdapis\glib-2.0\glibconfig.h:46
+epoc32\include\e32def.h:326: warning:   X:\epoc32\include\stdapis\glib-2.0\glib\gtypes.h:30
+epoc32\include\e32def.h:326: warning:   X:\epoc32\include\stdapis\glib-2.0\glib\galloca.h:31
+epoc32\include\e32def.h:326: warning:   X:\epoc32\include\stdapis\glib-2.0\glib.h:43
+epoc32\include\e32def.h:326: warning:   X:\epoc32\include\stdapis\glib-2.0\gobject\gtype.h:28
+epoc32\include\e32def.h:326: warning:   X:\epoc32\include\stdapis\glib-2.0\gobject\gboxed.h:28
+epoc32\include\e32def.h:326: warning:   X:\epoc32\include\stdapis\glib-2.0\glib-object.h:25
+epoc32\include\e32def.h:326: warning:   X:\epoc32\include\stdapis\dbus-1.0\dbus\dbus-glib.h:27
+epoc32\include\e32def.h:326: warning:   X:\sf\mw\opensrv\telepathygabble\src\gabble-connection.c:23)
+epoc32\include\stdapis\glib-2.0\glib\gmacros.h:159: warning:     (location of previous definition)
+sf\mw\opensrv\telepathygabble\inc\gabble-connection-glue.h:85: warning: variable / argument 'invocation_hint' is not used in function
+sf\mw\opensrv\telepathygabble\inc\gabble-connection-glue.h:132: warning: variable / argument 'return_value' is not used in function
+sf\mw\opensrv\telepathygabble\inc\gabble-connection-glue.h:132: warning: variable / argument 'invocation_hint' is not used in function
+sf\mw\opensrv\telepathygabble\inc\gabble-connection-glue.h:182: warning: variable / argument 'invocation_hint' is not used in function
+sf\mw\opensrv\telepathygabble\inc\gabble-connection-glue.h:233: warning: variable / argument 'invocation_hint' is not used in function
+sf\mw\opensrv\telepathygabble\inc\gabble-connection-glue.h:280: warning: variable / argument 'invocation_hint' is not used in function
+sf\mw\opensrv\telepathygabble\inc\gabble-connection-glue.h:331: warning: variable / argument 'invocation_hint' is not used in function
+sf\mw\opensrv\telepathygabble\inc\gabble-connection-glue.h:380: warning: variable / argument 'invocation_hint' is not used in function
+sf\mw\opensrv\telepathygabble\inc\gabble-connection-glue.h:429: warning: variable / argument 'invocation_hint' is not used in function
+sf\mw\opensrv\telepathygabble\inc\gabble-connection-glue.h:476: warning: variable / argument 'return_value' is not used in function
+sf\mw\opensrv\telepathygabble\inc\gabble-connection-glue.h:476: warning: variable / argument 'invocation_hint' is not used in function
+sf\mw\opensrv\telepathygabble\inc\gabble-connection-glue.h:522: warning: variable / argument 'return_value' is not used in function
+sf\mw\opensrv\telepathygabble\inc\gabble-connection-glue.h:522: warning: variable / argument 'invocation_hint' is not used in function
+sf\mw\opensrv\telepathygabble\inc\gabble-connection-glue.h:566: warning: variable / argument 'invocation_hint' is not used in function
+sf\mw\opensrv\telepathygabble\inc\gabble-connection-glue.h:611: warning: variable / argument 'invocation_hint' is not used in function
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:197: warning: illegal empty declaration
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:197: warning: illegal empty declaration
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:430: warning: illegal implicit conversion from 'int' to
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:430: warning: '@enum$4028gabble_connection_c'
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:597: warning: illegal implicit conversion from 'int' to
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:597: warning: '@enum$4028gabble_connection_c'
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:630: warning: illegal implicit conversion from 'int' to
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:630: warning: '@enum$2379gabble_connection_c'
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:638: warning: illegal implicit conversion from 'int' to
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:638: warning: '@enum$2379gabble_connection_c'
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:646: warning: illegal implicit conversion from 'int' to
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:646: warning: '@enum$2379gabble_connection_c'
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:656: warning: illegal implicit conversion from 'int' to
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:656: warning: '@enum$2379gabble_connection_c'
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:663: warning: illegal implicit conversion from 'int' to
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:663: warning: '@enum$2379gabble_connection_c'
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:672: warning: illegal implicit conversion from 'int' to
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:672: warning: '@enum$2379gabble_connection_c'
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:681: warning: illegal implicit conversion from 'int' to
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:681: warning: '@enum$2379gabble_connection_c'
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:689: warning: illegal implicit conversion from 'int' to
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:689: warning: '@enum$2379gabble_connection_c'
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:697: warning: illegal implicit conversion from 'int' to
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:697: warning: '@enum$2379gabble_connection_c'
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:705: warning: illegal implicit conversion from 'int' to
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:705: warning: '@enum$2379gabble_connection_c'
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:713: warning: illegal implicit conversion from 'int' to
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:713: warning: '@enum$2379gabble_connection_c'
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:723: warning: illegal implicit conversion from 'int' to
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:723: warning: '@enum$2379gabble_connection_c'
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:731: warning: illegal implicit conversion from 'int' to
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:731: warning: '@enum$2379gabble_connection_c'
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:741: warning: illegal implicit conversion from 'int' to
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:741: warning: '@enum$2379gabble_connection_c'
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:751: warning: illegal implicit conversion from 'int' to
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:751: warning: '@enum$2379gabble_connection_c'
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:760: warning: illegal implicit conversion from 'int' to
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:760: warning: '@enum$2379gabble_connection_c'
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:769: warning: illegal implicit conversion from 'int' to
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:769: warning: '@enum$2379gabble_connection_c'
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:779: warning: illegal implicit conversion from 'int' to
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:779: warning: '@enum$2379gabble_connection_c'
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:789: warning: illegal implicit conversion from 'int' to
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:789: warning: '@enum$2379gabble_connection_c'
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:799: warning: illegal implicit conversion from 'int' to
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:799: warning: '@enum$2379gabble_connection_c'
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:809: warning: illegal implicit conversion from 'int' to
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:809: warning: '@enum$2379gabble_connection_c'
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:819: warning: illegal implicit conversion from 'int' to
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:819: warning: '@enum$2379gabble_connection_c'
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:829: warning: illegal implicit conversion from 'int' to
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:829: warning: '@enum$2379gabble_connection_c'
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:839: warning: illegal implicit conversion from 'int' to
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:839: warning: '@enum$2379gabble_connection_c'
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:848: warning: illegal implicit conversion from 'int' to
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:848: warning: '@enum$2379gabble_connection_c'
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:860: warning: illegal implicit conversion from 'int' to
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:860: warning: '@enum$2645gabble_connection_c'
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:869: warning: illegal implicit conversion from 'int' to
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:869: warning: '@enum$2645gabble_connection_c'
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:878: warning: illegal implicit conversion from 'int' to
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:878: warning: '@enum$2645gabble_connection_c'
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:887: warning: illegal implicit conversion from 'int' to
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:887: warning: '@enum$2645gabble_connection_c'
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:896: warning: illegal implicit conversion from 'int' to
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:896: warning: '@enum$2645gabble_connection_c'
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:905: warning: illegal implicit conversion from 'int' to
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:905: warning: '@enum$2645gabble_connection_c'
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:1273: warning: variable / argument 'handler' is not used in function
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:1273: warning: variable / argument 'connection' is not used in function
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:1304: warning: variable / argument 'where_the_object_was' is not used in function
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:1851: warning: variable / argument 'user_data' is not used in function
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:1904: warning: variable / argument 'factory' is not used in function
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:1956: warning: variable / argument 'factory' is not used in function
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:2003: warning: variable / argument 'cache' is not used in function
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:2500: warning: variable / argument 'handler' is not used in function
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:2500: warning: variable / argument 'connection' is not used in function
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:2584: warning: variable / argument 'handler' is not used in function
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:2617: warning: variable / argument 'handler' is not used in function
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:2653: warning: variable / argument 'lmssl' is not used in function
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:2919: warning: variable / argument 'disco' is not used in function
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:2919: warning: variable / argument 'request' is not used in function
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:2919: warning: variable / argument 'node' is not used in function
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:3059: warning: variable / argument 'status' is not used in function
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:3059: warning: variable / argument 'parms' is not used in function
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:3092: warning: illegal implicit conversion from 'int' to
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:3092: warning: '@enum$4893gabble_connection_c'
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:3137: warning: variable / argument 'cache' is not used in function
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:3170: warning: illegal implicit conversion from 'int' to
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:3170: warning: '@enum$4893gabble_connection_c'
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:3170: warning: illegal implicit conversion from 'int' to
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:3170: warning: '@enum$4893gabble_connection_c'
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:3320: warning: variable / argument 'error' is not used in function
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:3647: warning: variable / argument 'error' is not used in function
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:3766: warning: illegal implicit conversion from 'unsigned int' to
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:3766: warning: '@enum$4009gabble_connection_c'
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:3778: warning: illegal implicit conversion from 'unsigned int' to
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:3778: warning: '@enum$4009gabble_connection_c'
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:3819: warning: illegal implicit conversion from 'unsigned int' to
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:3819: warning: '@enum$4009gabble_connection_c'
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:3836: warning: illegal implicit conversion from 'unsigned int' to
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:3836: warning: '@enum$4009gabble_connection_c'
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:3992: warning: illegal implicit conversion from 'unsigned int' to
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:3992: warning: '@enum$4009gabble_connection_c'
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:4004: warning: illegal implicit conversion from 'unsigned int' to
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:4004: warning: '@enum$4009gabble_connection_c'
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:4123: warning: variable / argument 'manager' is not used in function
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:4123: warning: variable / argument 'handle' is not used in function
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:4123: warning: variable / argument 'vcard' is not used in function
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:4123: warning: variable / argument 'error' is not used in function
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:4373: warning: illegal implicit conversion from 'unsigned int' to
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:4373: warning: '@enum$4009gabble_connection_c'
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:4558: warning: variable / argument 'disco' is not used in function
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:4558: warning: variable / argument 'request' is not used in function
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:4558: warning: variable / argument 'jid' is not used in function
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:4558: warning: variable / argument 'node' is not used in function
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:4643: warning: variable / argument 'context' is not used in function
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:4703: warning: illegal implicit conversion from 'unsigned int' to
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:4703: warning: '@enum$4009gabble_connection_c'
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:4720: warning: illegal implicit conversion from 'unsigned int' to
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:4720: warning: '@enum$4009gabble_connection_c'
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:4963: warning: variable / argument 'time' is not used in function
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:5039: warning: illegal implicit conversion from 'int' to
+sf\mw\opensrv\telepathygabble\src\gabble-connection.c:5039: warning: '@enum$4229gabble_connection_c'
++ E:/build_e/sbs_272/sbs/win32/cygwin/bin/sed.exe 's#\\\\\(.\)#/\1#g;s#/ #\\\ #g;s#\([A-Za-z]:\)\\\\#\1/#g;1,1s#.*: .* \(.\)\?$#    x:/epoc32/build/opensrv/c_672cbe451a1cdf8d/libgabble-convenience_dll/winscw/urel/gabble-connection.o: x:/sf/mw/opensrv/telepathygabble/src/gabble-connection.c \1#' x:/epoc32/build/opensrv/c_672cbe451a1cdf8d/libgabble-convenience_dll/winscw/urel/gabble-connection.dep
+]]><time start='1245768194.876303000' elapsed='1.140' />
++ RV=0
++ set +x
+<status exit='ok' attempt='1' />
+</recipe>
+</buildlog>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/tests/data/sample_abld.log	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,488 @@
+
+x:\>set
+ALLUSERSPROFILE=C:\Documents and Settings\All Users
+ANT_ARGS=-lib "E:\BUILD_E\ido-config-cc-svn\helium-4.0.x_lat\helium\external\helium-antlib\bin" -lib "E:\BUILD_E\ido-config-cc-svn\helium-4.0.x_lat\helium\tools\common\java\lib" -lib "E:\BUILD_E\ido-config-cc-svn\helium-4.0.x_lat\helium\external\antlibs" -lib "E:\BUILD_E\ido-config-cc-svn\helium-4.0.x_lat\helium\external\antlibs\internal" -lib "E:\BUILD_E\ido-config-cc-svn\helium-4.0.x_lat\helium\external\jep_1.6_2.5" -logger com.nokia.ant.HeliumLogger   -listener com.nokia.helium.diamonds.ant.HeliumListener  -listener com.nokia.ant.listener.internaldata.Listener  -Dant.executor.class=com.nokia.helium.core.ant.HeliumExecutor  -listener com.nokia.ant.listener.TracingLogger
+ANT_CMD_LINE_ARGS=-Dhelium.dir "E:\BUILD_E\ido-config-cc-svn\helium-4.0.x_lat\helium" -listener nokia.ant.XmlLogger -DXmlLogger.file E:\BUILD_E\ido-config-cc-svn\cruisecontrol/../robot/log.xml -Dcclastbuildtimestamp 20090702114112 "-Dcvstimestamp=2009-07-02 12:11:44 GMT" -Dbuildforced false -Dcclastgoodbuildtimestamp 20090606000000 -Dcctimestamp 20090702131144 -Dlabel build.33 -Dprojectname ido_abs_tb92-nightly -Dlastbuildsuccessful false -Dbuild.system ec-helium -Dconfiguration.dir E:\BUILD_E\ido-config-cc-svn\cruisecontrol/../idos/abs/branches/tb92-nightly -Dbuild.drive x: -Ds60.grace.cache E:\BUILD_E\ido-config-cc-svn\build/ido_abs_tb92-nightly_grace_cache.txt -Dskip.codescanner true -Dcc.output.dir E:\BUILD_E\ido-config-cc-svn\build -buildfile E:\BUILD_E\ido-config-cc-svn\cruisecontrol/config/wrapper.xml test-publish-prop ido-build
+ANT_HOME=C:\APPS\ant_1.7
+ANT_OPTS=-Xmx896M -Dlog4j.configuration=com/nokia/log4j.xml
+APPDATA=C:\Documents and Settings\varamana\Application Data
+APTLMHOST=@oupelic4.emea.nsn-net.net
+ARMLMD_LICENSE_FILE=8224@falic01.europe.nokia.com;8224@salmg01.nmp.nokia.com;
+ARMROOT=\
+ARMV5VER=:ARM/Thumb C/C++ Compiler, RVCT2.2 [Build 593]
+CCDIR=E:\BUILD_E\ido-config-cc-svn\helium-4.0.x_lat\helium\external\CruiseControl\
+CC_BAT=E:\BUILD_E\ido-config-cc-svn\helium-4.0.x_lat\helium\external\CruiseControl\real_cruisecontrol.bat
+CC_OPTS= -Ddashboard.config=E:\BUILD_E\ido-config-cc-svn\build\helium-dashboard-config.xml -Xms512m -Xmx1024m
+CLASSPATH=e:\BUILD_E\ido-config-cc-svn\helium-4.0.x_lat\helium\external\CruiseControl\lib;%CLASSPATH%
+CLIENTNAME=4GBD01728
+ClusterLog=C:\EESP\Cluster\cluster.log
+CMTHOME=C:\APPS\cmt
+CommonProgramFiles=C:\Program Files\Common Files
+COMPUTERNAME=FASYM011
+ComSpec=C:\EESP\system32\cmd.exe
+COPYCMD=/y
+CRUISE_PATH=C:\Apps\j2sdk_1.6.0_02\lib\tools.jar
+CTCHOME=C:\APPS\ctc
+DERBY_HOME=C:\APPS\j2sdk_1.6.0_02\JavaDB
+DIAMONDS_ANT_ARGS= -listener com.nokia.helium.diamonds.ant.HeliumListener
+EMAKEFLAGS=--no-print-directory --emake-volatile=.def,.info,.class,.mmp --emake-reg-roots=-\HKEY_CLASSES_ROOT
+EMAKE_CM=fawec001
+EMAKE_EMULATION=symbian
+EMAKE_ROOT=\;c:\apps
+EPOCROOT=\
+EXEC="C:\Apps\j2sdk_1.6.0_02\bin\java"  -Ddashboard.config=E:\BUILD_E\ido-config-cc-svn\build\helium-dashboard-config.xml -Xms512m -Xmx1024m -Djmx.remote.x.server.connection.timeout=-1 -Djmx.remote.x.client.connection.check.period=0 -jar "E:\BUILD_E\ido-config-cc-svn\helium-4.0.x_lat\helium\external\CruiseControl\lib\cruisecontrol-launcher.jar" -webapppath E:\BUILD_E\ido-config-cc-svn\helium-4.0.x_lat\helium\external\CruiseControl/webapps/cruisecontrol -dashboard E:\BUILD_E\ido-config-cc-svn\helium-4.0.x_lat\helium\external\CruiseControl/webapps/dashboard -webport 8080 -rmiport 1099
+FILTERWHAT_FILE=\output\logs\about_what.log
+FLEXLM_BATCH=1
+FLEXLM_TIMEOUT=900000
+FP_NO_HOST_CHECK=NO
+HELIUM_CACHE_DIR=C:\DOCUME~1\varamana\LOCALS~1\Temp\2\helium\varamana
+HELIUM_HOME=E:\BUILD_E\ido-config-cc-svn\helium-4.0.x_lat\helium
+HLM_ENABLE_MEM_TRACING=1
+HLM_MEM_TRACING_ANT_ARGS= -listener com.nokia.ant.listener.TracingLogger
+HOME=h:\
+HOMEDRIVE=C:
+HOMEPATH=\Documents and Settings\varamana
+include=C:\apps\msvc6\VC98\ATL\INCLUDE;C:\apps\msvc6\VC98\INCLUDE;C:\apps\msvc6\VC98\MFC\INCLUDE;C:\apps\msvc6\VC98\atl\include;C:\apps\msvc6\VC98\mfc\include;C:\apps\msvc6\VC98\include
+INTERNAL_DATA_ANT_ARGS= -listener com.nokia.ant.listener.internaldata.Listener
+JAVA_1_3_1_HOME=C:\APPS\j2sdk_1.3.1_06
+JAVA_HOME=C:\Apps\j2sdk_1.6.0_02
+JAVA_PATH="C:\Apps\j2sdk_1.6.0_02\bin\java"
+JEP_HOME=E:\BUILD_E\ido-config-cc-svn\helium-4.0.x_lat\helium\external\jep_1.6_2.5
+LAUNCHER=E:\BUILD_E\ido-config-cc-svn\helium-4.0.x_lat\helium\external\CruiseControl\lib\cruisecontrol-launcher.jar
+lib=C:\apps\msvc6\VC98\LIB;C:\apps\msvc6\VC98\MFC\LIB;C:\apps\msvc6\VC98\mfc\lib;C:\apps\msvc6\VC98\lib
+LIBDIR=E:\BUILD_E\ido-config-cc-svn\helium-4.0.x_lat\helium\external\CruiseControl\lib
+LM_LICENSE_FILE=C:\APPS\licenses\emea.dat;1700@saslmg02.nmp.nokia.com;C:\APPS\licenses\PCLint.dat;6969@saslmg04.nmp.nokia.com;
+LOGONSERVER=\\CAWDC101
+MSDevDir=C:\apps\msvc6\Common\msdev98
+MSVCDir=C:\apps\msvc6\VC98
+MSVC_ENV_BAT=c:\APPS\msvc6\VC98\Bin\VCVARS32.BAT
+MWCSym2Includes=C:\APPS\carbide\x86Build\Symbian_Support\MSL\MSL_C\MSL_Common\Include;C:\APPS\carbide\x86Build\Symbian_Support\MSL\MSL_C\MSL_Win32\Include;C:\APPS\carbide\x86Build\Symbian_Support\MSL\MSL_C\MSL_X86;C:\APPS\carbide\x86Build\Symbian_Support\MSL\MSL_C++\MSL_Common\Include;C:\APPS\carbide\x86Build\Symbian_Support\MSL\MSL_Extras\MSL_Common\Include;C:\APPS\carbide\x86Build\Symbian_Support\MSL\MSL_Extras\MSL_Win32\Include;C:\APPS\carbide\x86Build\Symbian_Support\Win32-x86 Support\Headers\Win32 SDK
+MWSym2Libraries=C:\APPS\carbide\x86Build\Symbian_Support\Win32-x86 Support\Libraries\Win32 SDK;C:\APPS\carbide\x86Build\Symbian_Support\Runtime\Runtime_x86\Runtime_Win32\Libs
+MWSym2LibraryFiles=MSL_All_MSE_Symbian_D.lib;gdi32.lib;user32.lib;kernel32.lib;
+NOKIA_LICENSE_FILE=C:\APPS\licenses\emea.dat;
+NUMBER_OF_PROCESSORS=4
+OS=Windows_NT
+Path=C:\apps\msvc6\Common\msdev98\BIN;C:\apps\msvc6\VC98\BIN;C:\apps\msvc6\Common\TOOLS\WINNT;C:\apps\msvc6\Common\TOOLS;e:\BUILD_E\ido-config-cc-svn\sbs\bin;e:\BUILD_E\slick-svn\bin;c:\ECloud\i686_win32\bin;C:\Program Files\HP\NCU;c:\apps\actperl\bin\;c:\apps\rvct22_593\bin;c:\apps\atool;\epoc32\tools;\epoc32\gcc\bin;c:\apps\ue;c:\apps\ccm65\bin;c:\apps\carbide\x86build\symbian_tools\command_line_tools;c:\apps\symdec;c:\apps\actpython\.;C:\Symbian\SITK\stat\bin;C:\Symbian\SITK;C:\Symbian\SITK\edgd\bin\;C:\Symbian\SITK\cbr;C:\Symbian\SITK\ucc\bin;C:\Symbian\SITK\ucc\SyncService\bin;C:\Symbian\SITK\ucc\TestDriverService\bin;C:\Symbian\SITK\sqlite-db-creator;C:\Symbian\SITK\testdriver\product;C:\Symbian\SITK\imgcheck;C:\Symbian\SITK\SystemModelGenerator;C:\Symbian\SITK/sbs/bin;;c:\program files\hp\ncu;c:\program files\windows resource kits\tools\;c:\eesp\system32;c:\eesp\system32\wbem;c:\apps\msvc6\common\tools\winnt;c:\apps\msvc6\common\msdev98\bin;c:\apps\msvc6\vc98\bin;c:\progra~1\winzip;c:\apps\wget;c:\apps\ant_1.7\bin;c:\apps\understand\bin\pc-win95;c:\etpwin\system32;c:\etpwin\system32\wbem;c:\apps\sbs\bin;c:\apps\pclint;c:\apps\cltools;c:\apps\codescanner;c:\apps\symrec;c:\apps\gracecli\bin;c:\apps\7zip;c:\apps\ctc;c:\apps\unzip;c:\apps\bc;c:\apps\cmt\;c:\apps\j2sdk_1.6.0_02;E:\BUILD_E\ido-config-cc-svn\helium-4.0.x_lat\helium\external\jep_1.6_2.5;\epoc32\tools;\epoc32\gcc\bin;\epoc32\tools\build;\epoc32\rombuild;E:\BUILD_E\ido-config-cc-svn\helium-4.0.x_lat\helium\tools\common\bin;E:\BUILD_E\ido-config-cc-svn\helium-4.0.x_lat\helium\external\unxutils;E:\BUILD_E\ido-config-cc-svn\helium-4.0.x_lat\helium\external\filedisk;E:\BUILD_E\ido-config-cc-svn\helium-4.0.x_lat\helium\external\info-zip;E:\BUILD_E\ido-config-cc-svn\helium-4.0.x_lat\helium\external\Subversion\bin;E:\BUILD_E\ido-config-cc-svn\helium-4.0.x_lat\helium\external\graphviz\bin;E:\BUILD_E\ido-config-cc-svn\helium-4.0.x_lat\helium\external\LSC_5.2;\tools;\tools\ncp_tools;C:\APPS\ctc;C:\EESP\system32;C:\EESP;C:\EESP\System32\Wbem\;C:\EESP\system32;C:\EESP;C:\EESP\System32\Wbem;C:\ETPWIN\system32;C:\ETPWIN;C:\ETPWIN\System32\Wbem
+PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.py;.pyw
+PERL=C:\APPS\actperl\bin\perl.exe
+PERL5LIB=E:\BUILD_E\ido-config-cc-svn\helium-4.0.x_lat\helium\tools\common\packages
+PID=8296
+ppd_tools=\tools\
+PROCESSOR_ARCHITECTURE=x86
+PROCESSOR_IDENTIFIER=x86 Family 15 Model 5 Stepping 10, AuthenticAMD
+PROCESSOR_LEVEL=15
+PROCESSOR_REVISION=050a
+ProgramFiles=C:\Program Files
+PROMPT=$P$G
+PYTHONPATH=E:\BUILD_E\ido-config-cc-svn\helium-4.0.x_lat\helium\external\python\lib\2.5;E:\BUILD_E\ido-config-cc-svn\helium-4.0.x_lat\helium\tools\common\python\lib;e:\BUILD_E\ido-config-cc-svn\sbs\python
+RVCT22BIN=C:\APPS\rvct22_593\bin
+RVCT22INC=C:\APPS\rvct22_593\include
+RVCT22LIB=C:\APPS\rvct22_593\lib
+RVCT22_ASMOPT=--licretry --fastlicense --sitelicense
+RVCT22_CCOPT=--licretry --fastlicense --sitelicense
+RVCT22_LINKOPT=--licretry --fastlicense --sitelicense
+SBS_HOME=e:\BUILD_E\ido-config-cc-svn\sbs
+SESSIONNAME=RDP-Tcp#22
+SIGNALING_ANT_ARGS= -Dant.executor.class=com.nokia.helium.core.ant.HeliumExecutor
+SITK_PATHS=C:\Symbian\SITK\stat\bin;C:\Symbian\SITK;C:\Symbian\SITK\edgd\bin\;C:\Symbian\SITK\cbr;C:\Symbian\SITK\ucc\bin;C:\Symbian\SITK\ucc\SyncService\bin;C:\Symbian\SITK\ucc\TestDriverService\bin;C:\Symbian\SITK\sqlite-db-creator;C:\Symbian\SITK\testdriver\product;C:\Symbian\SITK\imgcheck;C:\Symbian\SITK\SystemModelGenerator;C:\Symbian\SITK/sbs/bin;
+spp_tools=\tools\
+SYMBIANBUILD_DEPENDENCYOFF=1
+SYMSEE_VERSION=9.1.0
+SystemDrive=C:
+SystemRoot=C:\EESP
+TEAM=xxxxxx
+TEMP=C:\DOCUME~1\varamana\LOCALS~1\Temp\2
+TESTED_ANT=C:\APPS\ant_1.7
+TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
+TMP=C:\DOCUME~1\varamana\LOCALS~1\Temp\2
+USERDNSDOMAIN=noe.nokia.com
+USERDOMAIN=NOE
+USERNAME=varamana
+USERPROFILE=C:\Documents and Settings\varamana
+windir=C:\EESP
+_JAVACMD=C:\Apps\j2sdk_1.6.0_02\bin\java.exe
+_USE_CLASSPATH=yes
+
+x:\>emake --emake-build-label=ido_abs_tb92-nightly_5.2.33.dfs_build --emake-class=default --emake-priority=normal --emake-maxagents=0 --emake-job-limit=0 --emake-mem-limit=1000000000 --emake-history=merge --emake-annodetail=basic,history,file,waiting --emake-annofile=x:\output\logs\ido_abs_tb92-nightly_5.2.33.dfs_build.emake.anno.xml --emake-historyfile=x:/emake.data --emake-debug=g --emake-logfile=x:\output\logs\ido_abs_tb92-nightly_5.2.33.dfs_build.emake.g.dlog --emake-root=\;c:\apps;E:\BUILD_E\ido-config-cc-svn\helium-4.0.x_lat\helium --emake-autodepend=1 -k -i -f x:/dfs_build.make LOGBUILDTIME="" VERBOSE="" SAVESPACE="" dfs_build 
+WARNING EC1137: Unrecognized option '--no-print-directory' in EMAKEFLAGS.
+Starting build: 50896
+WARNING EC1137: Unrecognized option '--no-print-directory' in EMAKEFLAGS.
+===-------------------------------------------------
+=== dfs_build
+===-------------------------------------------------
+=== dfs_build started Thu Jul  2 13:13:58 2009
+emake -f dfs_build.make dfs_build-bldmake_bldfiles
+make[1]: Entering directory `x:/'
+=== dfs_build == \sf/os/graphics/group
+-- bldmake bldfiles 
+++ Started at Thu Jul  2 13:13:58 2009
++++ HiRes Start 1246536838.91662
+cd \sf/os/graphics/group && bldmake bldfiles   -keepgoing   
++++ HiRes End 1246536840.97909
+++ Finished at Thu Jul  2 13:14:01 2009
+=== dfs_build == \sf/os/textandloc/group
+-- bldmake bldfiles 
+++ Started at Thu Jul  2 13:13:58 2009
++++ HiRes Start 1246536839.05724
+cd \sf/os/textandloc/group && bldmake bldfiles   -keepgoing   
+WARNING: Should install MSVC6 Service Pack 3
+WARNING: Should install MSVC6 Service Pack 3
+WARNING: Should install MSVC6 Service Pack 3
+WARNING: Should install MSVC6 Service Pack 3
+WARNING: Should install MSVC6 Service Pack 3
+WARNING: Should install MSVC6 Service Pack 3
+WARNING: Should install MSVC6 Service Pack 3
+WARNING: Should install MSVC6 Service Pack 3
+WARNING: Should install MSVC6 Service Pack 3
+WARNING: Should install MSVC6 Service Pack 3
+WARNING: Should install MSVC6 Service Pack 3
+WARNING: Should install MSVC6 Service Pack 3
+WARNING: Should install MSVC6 Service Pack 3
+WARNING: Should install MSVC6 Service Pack 3
+WARNING: Should install MSVC6 Service Pack 3
+WARNING: Should install MSVC6 Service Pack 3
+WARNING: Should install MSVC6 Service Pack 3
+WARNING: Should install MSVC6 Service Pack 3
++++ HiRes End 1246536842.55719
+++ Finished at Thu Jul  2 13:14:02 2009
+make[1]: Leaving directory `x:/'
+emake -f dfs_build.make dfs_build-abld_export
+make[1]: Entering directory `x:/'
+=== dfs_build == \sf/os/graphics/group
+-- abld export 
+++ Started at Thu Jul  2 13:14:02 2009
++++ HiRes Start 1246536843.01031
+cd \sf/os/graphics/group && abld export   -keepgoing   
+  emake -r  -k -f "\EPOC32\BUILD\sf\os\graphics\group\EXPORT.make" EXPORT VERBOSE=-s KEEPGOING=-k
+make[2]: Entering directory `X:/sf/os/graphics/group'
+copy "\sf\os\graphics\graphics_plat\openvg_binding_api\inc\vg\vgcontext.h" "\epoc32\include\platform\vg\vgcontext.h"
+        1 file(s) copied.
+copy "\sf\os\graphics\graphics_plat\openvg_binding_api\inc\vg\vgcontext_symbian.h" "\epoc32\include\platform\vg\vgcontext_symbian.h"
+        1 file(s) copied.
+copy "\sf\os\graphics\graphics_plat\m3g_core_api\inc\M3G\m3g_core.h" "\epoc32\include\platform\M3G\m3g_core.h"
+        1 file(s) copied.
+copy "\sf\os\graphics\graphicsaccelaration\3d_opengl_es_1_1\group\opengles_nokia.iby" "\epoc32\rom\include\opengles_nokia.iby"
+        1 file(s) copied.
+copy "\sf\os\graphics\graphicsaccelaration\2d_openvg_1_1\rom\openvg_nokia.iby" "\epoc32\rom\include\core\os\openvg_nokia.iby"
+        1 file(s) copied.
+copy "\sf\os\graphics\graphicsaccelaration\egl\group\egl_sw_gce.iby" "\epoc32\rom\include\egl_sw_gce.iby"
+        1 file(s) copied.
+copy "\sf\os\graphics\graphicsaccelaration\egl\group\egl_sw_nongce.iby" "\epoc32\rom\include\egl_sw_nongce.iby"
+        1 file(s) copied.
+copy "\sf\os\graphics\graphicsaccelaration\egl\implementation\products\egl\3.0\include\eglInternalApi.h" "\epoc32\include\platform\eglInternalApi.h"
+        1 file(s) copied.
+copy "\sf\os\graphics\graphicsaccelaration\egl\implementation\products\egl\3.0\include\oglcontextapi.h" "\epoc32\include\platform\oglContextApi.h"
+        1 file(s) copied.
+copy "\sf\os\graphics\graphicsaccelaration\egl\implementation\products\egl\3.0\include\ovgContextApi.h" "\epoc32\include\platform\ovgContextApi.h"
+        1 file(s) copied.
+copy "\sf\os\graphics\graphicsaccelaration\egl\implementation\products\egl\3.0\include\EGL\eglWrapper.h" "\epoc32\include\platform\EGL\eglWrapper.h"
+        1 file(s) copied.
+copy "\sf\os\graphics\graphicsaccelaration\egl\implementation\products\egl\3.0\src\symbian\eglsymbianpaniccodes.h" "\epoc32\include\platform\eglsymbianpaniccodes.h"
+        1 file(s) copied.
+copy "\sf\os\graphics\graphicsaccelaration\egl\implementation\libs\hg\3.1\hgDefs.h" "\epoc32\include\platform\hgDefs.h"
+        1 file(s) copied.
+copy "\sf\os\graphics\graphicsaccelaration\egl\implementation\libs\hg\3.1\hgPublicDefs.h" "\epoc32\include\platform\hgPublicDefs.h"
+        1 file(s) copied.
+copy "\sf\os\graphics\graphicsaccelaration\vgi\rom\libvgi.iby" "\epoc32\rom\include\core\os\libvgi.iby"
+        1 file(s) copied.
+copy "\sf\os\graphics\m3g\m3gcore11\rom\m3gcore.iby" "\epoc32\rom\include\core\os\m3gcore.iby"
+        1 file(s) copied.
+make[2]: Leaving directory `X:/sf/os/graphics/group'
++++ HiRes End 1246536843.8853
+++ Finished at Thu Jul  2 13:14:03 2009
+=== dfs_build == \sf/os/textandloc/group
+-- abld export 
+++ Started at Thu Jul  2 13:14:02 2009
++++ HiRes Start 1246536843.04156
+cd \sf/os/textandloc/group && abld export   -keepgoing   
+  emake -r  -k -f "\EPOC32\BUILD\sf\os\textandloc\group\EXPORT.make" EXPORT VERBOSE=-s KEEPGOING=-k
+make[2]: Entering directory `X:/sf/os/textandloc/group'
+Creating \sf\os\textandloc\inc
+copy "\sf\os\textandloc\textandloc_plat\findutil_api\inc\FindUtil.h" "\epoc32\include\platform\FindUtil.h"
+        1 file(s) copied.
+copy "\sf\os\textandloc\textandloc_plat\japanese_language_utilities_api\inc\jplangutil.h" "\epoc32\include\platform\mw\jplangutil.h"
+        1 file(s) copied.
+copy "\sf\os\textandloc\textandloc_plat\character_conversion_nonpublic_api\inc\JapaneseCharConv.h" "\epoc32\include\platform\JapaneseCharConv.h"
+        1 file(s) copied.
+copy "\sf\os\textandloc\textandloc_plat\sortutil_api\inc\SortUtil.h" "\epoc32\include\platform\SortUtil.h"
+        1 file(s) copied.
+copy "\sf\os\textandloc\textandloc_pub\character_conversion_api\inc\GBK.H" "\epoc32\include\GBK.H"
+        1 file(s) copied.
+copy "\sf\os\textandloc\textandloc_pub\character_conversion_api\inc\JISX0208.H" "\epoc32\include\JISX0208.H"
+        1 file(s) copied.
+copy "\sf\os\textandloc\textandloc_pub\character_conversion_api\inc\GB2312.H" "\epoc32\include\GB2312.H"
+        1 file(s) copied.
+copy "\sf\os\textandloc\textandloc_pub\character_conversion_api\inc\CharacterSetConverter.h" "\epoc32\include\CharacterSetConverter.h"
+        1 file(s) copied.
+copy "\sf\os\textandloc\textandloc_pub\character_conversion_api\inc\CONVDATA.H" "\epoc32\include\CONVDATA.H"
+        1 file(s) copied.
+copy "\sf\os\textandloc\textandloc_pub\character_conversion_api\inc\JISX0201.H" "\epoc32\include\JISX0201.H"
+        1 file(s) copied.
+copy "\sf\os\textandloc\textandloc_pub\character_conversion_api\inc\UTF.H" "\epoc32\include\UTF.H"
+        1 file(s) copied.
+copy "\sf\os\textandloc\textandloc_pub\character_conversion_api\inc\JISX0212.H" "\epoc32\include\JISX0212.H"
+        1 file(s) copied.
+copy "\sf\os\textandloc\textandloc_pub\character_conversion_api\inc\CharacterSetConverter.inl" "\epoc32\include\CharacterSetConverter.inl"
+        1 file(s) copied.
+copy "\sf\os\textandloc\textandloc_pub\character_conversion_api\inc\BIG5.H" "\epoc32\include\BIG5.H"
+        1 file(s) copied.
+copy "\sf\os\textandloc\textandloc_pub\character_conversion_api\inc\CONVNAMES.H" "\epoc32\include\CONVNAMES.H"
+        1 file(s) copied.
+copy "\sf\os\textandloc\textandloc_pub\character_conversion_api\inc\CHARCONV.H" "\epoc32\include\CHARCONV.H"
+        1 file(s) copied.
+copy "\sf\os\textandloc\textandloc_pub\character_conversion_api\inc\SHIFTJIS.H" "\epoc32\include\SHIFTJIS.H"
+        1 file(s) copied.
+copy "\sf\os\textandloc\textandloc_pub\character_conversion_plugin_provider_api\inc\CONVUTILS.H" "\epoc32\include\CONVUTILS.H"
+        1 file(s) copied.
+copy "\sf\os\textandloc\textandloc_pub\character_conversion_plugin_provider_api\inc\CONVGENERATEDCPP.H" "\epoc32\include\CONVGENERATEDCPP.H"
+        1 file(s) copied.
+copy "\sf\os\textandloc\textandloc_pub\directory_localizer_api\inc\DirectoryLocalizer.rh" "\epoc32\include\mw\DirectoryLocalizer.rh"
+        1 file(s) copied.
+copy "\sf\os\textandloc\textandloc_pub\directory_localizer_api\inc\CDirectoryLocalizer.h" "\epoc32\include\mw\CDirectoryLocalizer.h"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\localizer\rom\DirectoryLocalizer.iby" "\epoc32\rom\include\core\mw\directorylocalizer.iby"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\localizer\rom\DirectoryLocalizerResources.iby" "\epoc32\rom\include\language\mw\directorylocalizerresources.iby"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\localizer\loc\DirectoryLocalizer.loc" "\epoc32\include\platform\mw\loc\sc\directorylocalizer.loc"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\Win1250.snm" "\epoc32\release\winscw\udeb\z\Resource\charconv\Win1250.snm"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\Win1251.snm" "\epoc32\release\winscw\udeb\z\Resource\charconv\Win1251.snm"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\Win1252.snm" "\epoc32\release\winscw\udeb\z\Resource\charconv\Win1252.snm"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\Win1253.snm" "\epoc32\release\winscw\udeb\z\Resource\charconv\Win1253.snm"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\Win1254.snm" "\epoc32\release\winscw\udeb\z\Resource\charconv\Win1254.snm"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\Win1255.snm" "\epoc32\release\winscw\udeb\z\Resource\charconv\Win1255.snm"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\Win1256.snm" "\epoc32\release\winscw\udeb\z\Resource\charconv\Win1256.snm"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\Win1257.snm" "\epoc32\release\winscw\udeb\z\Resource\charconv\Win1257.snm"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\Win874.snm" "\epoc32\release\winscw\udeb\z\Resource\charconv\Win874.snm"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\TIS_620.snm" "\epoc32\release\winscw\udeb\z\Resource\charconv\TIS_620.snm"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\KOI8U.snm" "\epoc32\release\winscw\udeb\z\Resource\charconv\KOI8U.snm"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\KOI8R.snm" "\epoc32\release\winscw\udeb\z\Resource\charconv\KOI8R.snm"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\Win1258.snm" "\epoc32\release\winscw\udeb\z\Resource\charconv\Win1258.snm"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\iscii.snm" "\epoc32\release\winscw\udeb\z\Resource\charconv\iscii.snm"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\EUCKR.snm" "\epoc32\release\winscw\udeb\z\Resource\charconv\EUCKR.snm"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\iso2022kr.snm" "\epoc32\release\winscw\udeb\z\Resource\charconv\iso2022kr.snm"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\ksc5601.snm" "\epoc32\release\winscw\udeb\z\Resource\charconv\ksc5601.snm"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\Win1250.snm" "\epoc32\data\z\Resource\charconv\Win1250.snm"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\Win1251.snm" "\epoc32\data\z\Resource\charconv\Win1251.snm"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\Win1252.snm" "\epoc32\data\z\Resource\charconv\Win1252.snm"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\Win1253.snm" "\epoc32\data\z\Resource\charconv\Win1253.snm"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\Win1254.snm" "\epoc32\data\z\Resource\charconv\Win1254.snm"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\Win1255.snm" "\epoc32\data\z\Resource\charconv\Win1255.snm"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\Win1256.snm" "\epoc32\data\z\Resource\charconv\Win1256.snm"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\Win1257.snm" "\epoc32\data\z\Resource\charconv\Win1257.snm"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\Win874.snm" "\epoc32\data\z\Resource\charconv\Win874.snm"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\TIS_620.snm" "\epoc32\data\z\Resource\charconv\TIS_620.snm"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\KOI8U.snm" "\epoc32\data\z\Resource\charconv\KOI8U.snm"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\KOI8R.snm" "\epoc32\data\z\Resource\charconv\KOI8R.snm"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\Win1258.snm" "\epoc32\data\z\Resource\charconv\Win1258.snm"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\iscii.snm" "\epoc32\data\z\Resource\charconv\iscii.snm"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\EUCKR.snm" "\epoc32\data\z\Resource\charconv\EUCKR.snm"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\iso2022kr.snm" "\epoc32\data\z\Resource\charconv\iso2022kr.snm"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\ksc5601.snm" "\epoc32\data\z\Resource\charconv\ksc5601.snm"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconvplugin\rom\CharConvPlugin.iby" "\epoc32\rom\include\core\mw\charconvplugin.iby"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconvplugin\rom\CharConvPluginPictograph.IBY" "\epoc32\rom\include\core\mw\charconvpluginpictograph.iby"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconvplugin\rom\CharConvPluginPictograph_Variant.iby" "\epoc32\rom\include\customer\mw\charconvpluginpictograph_Variant.iby"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconvplugin\rom\CharConvPlugin_Variant.IBY" "\epoc32\rom\include\customer\mw\charconvplugin_Variant.iby"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\findutil\rom\Findutil.iby" "\epoc32\rom\include\core\mw\findutil.iby"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\findutil\rom\Findutil_Variant.iby" "\epoc32\rom\include\customer\mw\findutil_Variant.iby"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\numbergrouping\rom\NumberGrouping.iby" "\epoc32\rom\include\core\mw\numbergrouping.iby"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\numbergrouping\conf\numbergrouping.confml" "\epoc32\rom\config\confml_data\s60\numbergrouping.confml"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\numbergrouping\conf\numbergrouping_101F8775.crml" "\epoc32\rom\config\confml_data\s60\numbergrouping_101F8775.crml"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\gamerecognizer\rom\GameRecognizer.iby" "\epoc32\rom\include\core\mw\gamerecognizer.iby"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\jplangutil\rom\JPLangUtil.iby" "\epoc32\rom\include\core\mw\jplangutil.iby"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\sortutil\rom\Sortutil.iby" "\epoc32\rom\include\core\mw\sortutil.iby"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\sortutil\rom\SortUtil_Variant.iby" "\epoc32\rom\include\customer\mw\sortutil_Variant.iby"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\aknjapanesereading\rom\AknJapaneseReading.iby" "\epoc32\rom\include\core\mw\aknjapanesereading.iby"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\group\CNVTOOL.BAT" "\epoc32\tools\CNVTOOL.BAT"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\group\SNMTOOL.BAT" "\epoc32\tools\SNMTOOL.BAT"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\group\CHARCONV.BAT" "\epoc32\tools\CHARCONV.BAT"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\group\CHARCONV.PL" "\epoc32\tools\CHARCONV.PL"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\group\CNVTOOL.PL" "\epoc32\tools\CNVTOOL.PL"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\group\SNMTOOL.PL" "\epoc32\tools\SNMTOOL.PL"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\group\PARSER.PM" "\epoc32\tools\PARSER.PM"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\group\WRITER.PM" "\epoc32\tools\WRITER.PM"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\group\UTF.PM" "\epoc32\tools\UTF.PM"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\group\CHARCONV_EXE.IPR" "\epoc32\engdoc\tools\CHARCONV_EXE.IPR"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\group\CHARCONV_PERLTOOLS.IPR" "\epoc32\engdoc\tools\CHARCONV_PERLTOOLS.IPR"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\group\CNVAPI.RTF" "\epoc32\engdoc\charconv\CNVAPI.RTF"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\group\CNVTOOL.RTF" "\epoc32\engdoc\charconv\CNVTOOL.RTF"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\group\SNMTOOL.RTF" "\epoc32\engdoc\charconv\SNMTOOL.RTF"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\group\AUTODETECT.RTF" "\epoc32\engdoc\charconv\AUTODETECT.RTF"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\data\generateddat\big5.dat" "\epoc32\tools\charconv\big5.dat"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\data\generateddat\cp1252.dat" "\epoc32\tools\charconv\cp1252.dat"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\data\generateddat\gb12345.dat" "\epoc32\tools\charconv\gb12345.dat"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\data\generateddat\gb2312.dat" "\epoc32\tools\charconv\gb2312.dat"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\data\generateddat\gbk.dat" "\epoc32\tools\charconv\gbk.dat"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\data\generateddat\iso88591.dat" "\epoc32\tools\charconv\iso88591.dat"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\data\generateddat\iso885910.dat" "\epoc32\tools\charconv\iso885910.dat"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\data\generateddat\iso885913.dat" "\epoc32\tools\charconv\iso885913.dat"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\data\generateddat\iso885914.dat" "\epoc32\tools\charconv\iso885914.dat"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\data\generateddat\iso885915.dat" "\epoc32\tools\charconv\iso885915.dat"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\data\generateddat\iso88592.dat" "\epoc32\tools\charconv\iso88592.dat"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\data\generateddat\iso88593.dat" "\epoc32\tools\charconv\iso88593.dat"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\data\generateddat\iso88594.dat" "\epoc32\tools\charconv\iso88594.dat"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\data\generateddat\iso88595.dat" "\epoc32\tools\charconv\iso88595.dat"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\data\generateddat\iso88596.dat" "\epoc32\tools\charconv\iso88596.dat"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\data\generateddat\iso88597.dat" "\epoc32\tools\charconv\iso88597.dat"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\data\generateddat\iso88598.dat" "\epoc32\tools\charconv\iso88598.dat"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\data\generateddat\iso88599.dat" "\epoc32\tools\charconv\iso88599.dat"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\data\generateddat\shiftjis.dat" "\epoc32\tools\charconv\shiftjis.dat"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\data\generateddat\shiftjisdirectmap.dat" "\epoc32\tools\charconv\shiftjisdirectmap.dat"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\data\generateddat\gsm7_turkish_single.dat" "\epoc32\tools\charconv\gsm7_turkish_single.dat"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\data\generateddat\turkish_locking_gsm7ext.dat" "\epoc32\tools\charconv\turkish_locking_gsm7ext.dat"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\data\generateddat\turkish_locking_single.dat" "\epoc32\tools\charconv\turkish_locking_single.dat"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\include\PictographObserver.h" "\sf\os\textandloc\inc\PictographObserver.h"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\include\CnvPictographShared.h" "\sf\os\textandloc\inc\CnvPictographShared.h"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\include\CnvShiftJisDirectmap.h" "\sf\os\textandloc\inc\CnvShiftJisDirectmap.h"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\data\snm\basic.snm" "\epoc32\release\winscw\udeb\z\Resource\charconv\basic.snm"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\data\snm\basic.snm" "\epoc32\data\z\Resource\charconv\basic.snm"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\rom\CHARCONV.IBY" "\epoc32\rom\include\core\mw\charconv.iby"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\rom\CHARCONV_CHINESE_SIMPLFIED.IBY" "\epoc32\rom\include\customer\mw\charconv_chinese_simplfied.iby"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\rom\CHARCONV_CHINESE_TRADITIONAL.IBY" "\epoc32\rom\include\customer\mw\charconv_chinese_traditional.iby"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\rom\CHARCONV_CODEPAGE.iby" "\epoc32\rom\include\core\mw\charconv_codepage.iby"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\rom\CHARCONV_ISO8859X.IBY" "\epoc32\rom\include\core\mw\charconv_iso8859x.iby"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\rom\CHARCONV_JAPANESE.IBY" "\epoc32\rom\include\customer\mw\charconv_japanese.iby"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\rom\Charconv_Pictographs_Variant.Iby" "\epoc32\rom\include\customer\mw\charconv_pictographs_variant.iby"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\rom\charconv_gsm7_turkish_Variant.iby" "\epoc32\rom\include\customer\mw\charconv_gsm7_turkish_Variant.iby"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\rom\charconv_gsm7_turkish_Variant.iby" "\epoc32\rom\include\charconv_gsm7_turkish_Variant.iby"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\rom\CHARCONV.IBY" "\epoc32\rom\include\charconv.iby"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\rom\CharConv_All_Plugins.iby" "\epoc32\rom\include\charconv_all_plugins.iby"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\rom\CHARCONV_CHINESE_SIMPLFIED.IBY" "\epoc32\rom\include\charconv_chinese_simplfied.iby"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\rom\CHARCONV_CHINESE_TRADITIONAL.IBY" "\epoc32\rom\include\charconv_chinese_traditional.iby"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\rom\CHARCONV_JAPANESE.IBY" "\epoc32\rom\include\charconv_japanese.iby"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\rom\CHARCONV_CODEPAGE.iby" "\epoc32\rom\include\charconv_codepage.iby"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\rom\CHARCONV_ISO8859X.IBY" "\epoc32\rom\include\charconv_iso8859x.iby"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\charconv\ongoing\rom\charconv_gsm7_turkish.iby" "\epoc32\rom\include\charconv_gsm7_turkish.iby"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\inlinetext\inc\inlinetextbase.h" "\epoc32\include\platform\mw\inlinetextbase.h"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\inlinetext\inc\inlinetextcompositesource.h" "\epoc32\include\platform\mw\inlinetextcompositesource.h"
+        1 file(s) copied.
+copy "\sf\os\textandloc\charconvfw\inlinetext\inc\inlinetextnomatchesindicatorsource.h" "\epoc32\include\platform\mw\inlinetextnomatchesindicatorsource.h"
+        1 file(s) copied.
+make[2]: Leaving directory `X:/sf/os/textandloc/group'
++++ HiRes End 1246536844.10405
+++ Finished at Thu Jul  2 13:14:04 2009
+make[1]: Leaving directory `x:/'
+emake -f dfs_build.make dfs_build-abld_makefile-tools
+make[1]: Entering directory `x:/'
+=== dfs_build == \sf/os/graphics/group
+-- abld makefile 
+++ Started at Thu Jul  2 13:14:05 2009
++++ HiRes Start 1246536845.63642
+cd \sf/os/graphics/group && abld makefile   -keepgoing   tools
+This project does not support platform or  program "TOOLS"
++++ HiRes End 1246536847.1364
+++ Finished at Thu Jul  2 13:14:07 2009
+=== dfs_build == \sf/os/textandloc/group
+-- abld makefile 
+++ Started at Thu Jul  2 13:14:05 2009
++++ HiRes Start 1246536845.6208
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/tests/data/very_long_warning.log	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,2 @@
+INFO: The next line contains a very long warning.
+C:\APPS\MSVC6\VC98\Include\utility(21) : warning C4503: 'pair<class std::_Tree<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const ,class MifConvArgument<class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > > >,struct std::map<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class MifConvArgument<class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > >,struct std::less<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class std::allocator<class MifConvArgument<class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > > > >::_Kfn,struct std::less<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class std::allocator<class MifConvArgument<class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > > > >::iterator,bool>::pair<class std::_Tree<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const ,class MifConvArgument<class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > > >,struct std::map<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class MifConvArgument<class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > >,struct std::less<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class std::allocator<class MifConvArgument<class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > > > >::_Kfn,struct std::less<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class std::allocator<class MifConvArgument<class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > > > >::iterator,bool>' : decorated name length exceeded, name was truncated
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/tests/data/whatlog_result.ini.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,26 @@
+<#--
+============================================================================ 
+Name        : whatlog_result.ini.ftl
+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:
+
+============================================================================
+-->
+<#assign table_info = pp.loadData('com.nokia.helium.metadata.ORMFMPPLoader', "${dbPath}") >
+number.of.logs=${table_info['jpasingle']['select count(l.path) path from LogFile l'][0]}
+number.of.whatlog.entries=${table_info['jpasingle']['select count(e) from WhatLogEntry e'][0]}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/tests/functionality/func_add_test.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,352 @@
+<?xml version="1.0"?>
+<!-- 
+============================================================================ 
+Name        : func_add_test.ant.xml 
+Part of     : Helium AntLib
+
+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="test-metadata-regex" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
+    <description>Helium Antlib metadata unittests.</description>
+    
+    <dirname property="project.dir" file="${ant.file.test-metadata-regex}" />
+
+    <path id="lib.path">
+        <fileset dir="${project.dir}/../../../../bin" includes="*.jar"/>
+    </path>
+    
+    <taskdef resource="com/nokia/helium/metadata/ant/antlib.xml" classpathref="lib.path" uri="http://www.nokia.com/helium" />
+    <taskdef name="fmpp" classname="fmpp.tools.AntTask" classpathref="lib.path" onerror="report"/>
+
+
+    <hlm:metadatafilterset id="all-regex-filterfile">
+        <metadatafilterset filterfile="${project.dir}/../data/metadata_regex.csv" />
+    </hlm:metadatafilterset>
+
+    <target name="s60-clean-log">
+        <delete file="${project.dir}/../output/log_s60_filterfile.sqlite" failonerror="false"/>
+        <echo message="all regular expression validation" />
+        <echo message="database:${project.dir}/../output/log_s60_filterfile.sqlite" />
+        <hlm:metadatarecord database="${project.dir}/../output/log_s60_filterfile.sqlite">
+            <hlm:sbsmetadatainput>
+                <fileset dir="${project.dir}/../data/">
+                    <include  name="mcl_7952_200950_wk50_02_dfs_build_sf_armv5.log"/>
+                </fileset>
+                <metadatafilterset refid="all-regex-filterfile" />
+            </hlm:sbsmetadatainput>
+        </hlm:metadatarecord>
+    </target>
+
+
+    <hlm:metadatafilterset id="text_log_metadata_input">
+        <metadatafilterset filterfile="${project.dir}/../data/common.csv" />
+    </hlm:metadatafilterset>
+
+
+    <target name="log-metadata-input">
+        <delete file="${project.dir}/../output/log_text_metadata_input.sqlite" failonerror="false" />
+        <echo message="text log metadata input validation" />
+        <echo message="database:${project.dir}/../output/log_text_metadata_input.sqlite" />
+        <parallel>
+            <hlm:metadatarecord database="${project.dir}/../output/log_text_metadata_input.sqlite">
+                <hlm:sbsmetadatainput>
+                    <fileset dir="${project.dir}/../data/">
+                        <include  name="mcl_7952_201002_wk02_010_dfs_build_sf_tools.log"/>
+                    </fileset>
+                    <metadatafilterset refid="text_log_metadata_input" />
+                </hlm:sbsmetadatainput>
+            </hlm:metadatarecord>
+            <!--
+            <hlm:metadatarecord database="${project.dir}/../output/log_text_metadata_input.sqlite">
+                <hlm:textmetadatainput>
+                    <fileset dir="${project.dir}/../data/">
+                        <include  name="pf_5250_2009_wk50_TUE.roms_part1.log"/>
+                    </fileset>
+                    <metadatafilterset refid="text_log_metadata_input" />
+                </hlm:textmetadatainput>
+            </hlm:metadatarecord>
+            -->
+        </parallel>
+    </target>
+
+    <target name="log-metadata-read">
+        <delete file="${project.dir}/../output/log_text_metadata_input.sqlite" failonerror="false" />
+        <echo message="text log metadata input validation" />
+        <echo message="database:${project.dir}/../output/log_text_metadata_input.sqlite" />
+        <parallel>
+            <hlm:metadataread database="${project.dir}/../output/log_text_metadata_input.sqlite">
+                <fileset dir="${project.dir}/../data/">
+                    <include  name="pf_5250_2009_wk50_TUE.roms.log"/>
+                </fileset>
+            </hlm:metadataread>
+            
+            <hlm:metadataread database="${project.dir}/../output/log_text_metadata_input.sqlite">
+                <fileset dir="${project.dir}/../data/">
+                    <include  name="pf_5250_2009_wk50_TUE.roms1.log"/>
+                </fileset>
+            </hlm:metadataread>
+        </parallel>
+    </target>
+
+    <target name="parallel-record_test">
+        <!-- <delete file="${project.dir}/../output/s60_parallel.sqlite" failonerror="false" /> -->
+        <!-- 
+        <parallel>
+            <sequential>
+                <echo message="sbs parallel input validation" />
+                <echo message="database:${project.dir}/../output/s60_parallel.db" />
+                <hlm:metadatarecord database="${project.dir}/../output/s60_parallel.sqlite">
+                    <hlm:sbsmetadatainput>
+                        <fileset dir="${project.dir}/../data/">
+                            <include  name="*s60_1.log"/>
+                        </fileset>
+                        <metadatafilterset refid="text_log_metadata_input" />
+                    </hlm:sbsmetadatainput>
+                </hlm:metadatarecord>
+            </sequential>
+            <sequential>
+                <echo message="sbs parallel input validation" />
+                <echo message="database:${project.dir}/../output/s60_parallel.sqlite" />
+                <hlm:metadatarecord database="${project.dir}/../output/s60_parallel.sqlite">
+                    <hlm:sbsmetadatainput>
+                        <fileset dir="${project.dir}/../data/">
+                            <include  name="*s60_2.log"/>
+                        </fileset>
+                        <metadatafilterset refid="text_log_metadata_input" />
+                    </hlm:sbsmetadatainput>
+                </hlm:metadatarecord>
+            </sequential>
+            <sequential>
+                <echo message="sbs parallel input validation" />
+                <echo message="database:${project.dir}/../output/s60_parallel.sqlite" />
+                <hlm:metadatarecord database="${project.dir}/../output/s60_parallel.sqlite">
+                    <hlm:sbsmetadatainput>
+                        <fileset dir="${project.dir}/../data/">
+                            <include  name="*s60_3.log"/>
+                        </fileset>
+                        <metadatafilterset refid="text_log_metadata_input" />
+                    </hlm:sbsmetadatainput>
+                </hlm:metadatarecord>
+            </sequential>
+        </parallel> -->
+        <fmpp sourceFile="${project.dir}/../../src/templates/scan2.html.ftl"
+                     outputfile="${project.dir}/../output/s60_scan2.html">
+            <freemarkerLinks expandProperties="yes">
+                macro: ${project.dir}/../../src/templates
+            </freemarkerLinks>
+            <data expandProperties="yes">
+                dbPath: ${project.dir}/../output/s60_parallel.sqlite
+                doc: xml(${project.dir}/../data/s60_info.xml)
+                ant: antProperties()
+            </data>
+        </fmpp>
+        <hlm:generateBuildStatus dbfile="${project.dir}/../output/s60_parallel.sqlite" output-dir="${env.TEMP}" file="test-scanlog-metadata-1.log"/>
+    </target>
+
+
+    <target name="all-s60-logs">
+        <delete file="${project.dir}/../output/all_s60_logs_db" failonerror="false" />
+        <echo message="all s60 logs being processed" />
+        <hlm:metadatarecord database="${project.dir}/../output/all_s60_logs_db">
+            <hlm:sbsmetadatainput>
+                <fileset dir="${project.dir}/../data/s60_logs/logs/compile">
+                    <include  name="92_7952_RAPTOR_201004_wk04_02_dfs_build_export.log"/>
+                    <include  name="92_7952_RAPTOR_201004_wk04_02.qt_tools2_compile.log"/>
+                    <include  name="92_7952_RAPTOR_201004_wk04_02_dfs_build_ncp_dfs_variants.log"/>
+                    <include  name="92_7952_RAPTOR_201004_wk04_02_dfs_build_ncp_tools.log"/>
+                    <include  name="92_7952_RAPTOR_201004_wk04_02_dfs_build_sf_dfs_variants.log"/>
+                    <include  name="92_7952_RAPTOR_201004_wk04_02_dfs_build_sf_tools.log"/>
+                    <include  name="92_7952_RAPTOR_201004_wk04_02_s60_bldmelast_arm9e.log"/>
+                </fileset>
+                <metadatafilterset refid="all-regex-filterfile" />
+            </hlm:sbsmetadatainput>
+        </hlm:metadatarecord>
+    </target>
+
+    <target name="all-ido-logs">
+        <delete file="${project.dir}/../output/all_ido_logs.sqlite" failonerror="false" />
+        <echo message="text log metadata input validation" />
+        <hlm:metadatarecord database="${project.dir}/../output/all_ido_logs.sqlite">
+            <hlm:textmetadatainput>
+                <fileset dir="${project.dir}/../data/ido_logs">
+                    <include  name="*.log"/>
+                    <exclude name="*_ant_*.log"/>
+                </fileset>
+                <metadatafilterset refid="text_log_metadata_input" />
+            </hlm:textmetadatainput>
+            <hlm:antmetadatainput>
+                <fileset dir="${project.dir}/../data/ido_logs">
+                    <include  name="*_ant_*.log"/>
+                </fileset>
+                <metadatafilterset refid="text_log_metadata_input" />
+            </hlm:antmetadatainput>
+        </hlm:metadatarecord>
+    </target>
+
+    <target name="abld-ido-logs">
+        <delete file="${project.dir}/../output/abld_ido_logs.sqlite" failonerror="false" />
+        <echo message="text log metadata input validation" />
+        <hlm:metadatarecord database="${project.dir}/../output/abld_ido_logs.sqlite">
+            <hlm:abldmetadatainput>
+                <fileset dir="${project.dir}/../data/ido_abld_logs">
+                    <include  name="*_compile*.log"/>
+                </fileset>
+                <metadatafilterset refid="text_log_metadata_input" />
+            </hlm:abldmetadatainput>
+        </hlm:metadatarecord>
+    </target>
+
+    <target name="test-old-schema">
+        <copy file="${project.dir}/../output/old_schema_log.sqlite" 
+            tofile="${project.dir}/../output/old_schema_log.sqlite_bak" />
+        <echo message="text log metadata input validation" />
+        <hlm:metadatarecord database="${project.dir}/../output/old_schema_log.sqlite">
+            <hlm:abldmetadatainput>
+                <fileset dir="${project.dir}/../data">
+                    <include  name="sample_abld.log"/>
+                </fileset>
+                <metadatafilterset refid="text_log_metadata_input" />
+            </hlm:abldmetadatainput>
+        </hlm:metadatarecord>
+
+        <delete file="${project.dir}/../output/old_schema_log.sqlite" />
+        <copy file="${project.dir}/../output/old_schema_log.sqlite_bak" 
+            tofile="${project.dir}/../output/old_schema_log.sqlite"
+            failonerror="false" />
+        
+    </target>
+
+    <target name="ant-ido-logs">
+        <delete file="${project.dir}/../output/ant_ido_logs.sqlite" failonerror="false" />
+        <echo message="text log metadata input validation" />
+        <hlm:metadatarecord database="${project.dir}/../output/ant_ido_logs.sqlite">
+            <hlm:antmetadatainput>
+                <fileset dir="${project.dir}/../data/ido_logs">
+                    <include  name="*_ant_*.log"/>
+                </fileset>
+                <metadatafilterset refid="text_log_metadata_input" />
+            </hlm:antmetadatainput>
+        </hlm:metadatarecord>
+    </target>
+
+    <target name="readdata">
+        <delete file="${project.dir}/../output/readdata.html" failonerror="false" />
+        <fmpp sourceFile="${project.dir}/../../src/templates/readdata.xml.ftl"
+                     outputfile="${project.dir}/../output/readdata.html">
+            <freemarkerLinks expandProperties="yes">
+                macro: ${project.dir}/../../src/templates
+            </freemarkerLinks>
+            <data expandProperties="yes">
+                dbPath: ${project.dir}/../output/log_text_metadata_input.sqlite
+                ant: antProperties()
+            </data>
+        </fmpp>
+    </target>
+
+    <target name="readormdata">
+        <delete file="${project.dir}/../output/readdata.html" failonerror="false" />
+        <fmpp sourceFile="${project.dir}/../../src/templates/readormdata.xml.ftl"
+                     outputfile="${project.dir}/../output/readdata.html">
+            <freemarkerLinks expandProperties="yes">
+                macro: ${project.dir}/../../src/templates
+            </freemarkerLinks>
+            <data expandProperties="yes">
+                dbPath: ${project.dir}/../output/log_text_metadata_input.sqlite
+                logFile: mcl_7952_201002_wk02_010_dfs_build_sf_tools.log
+                ant: antProperties()
+            </data>
+        </fmpp>
+    </target>
+
+    <target name="generatescanlog">
+        <delete file="${project.dir}/../output/scan2.html" failonerror="false" />
+        <fmpp sourceFile="${project.dir}/../../src/templates/scan2.html.ftl"
+                     outputfile="${project.dir}/../output/scan2.html">
+            <freemarkerLinks expandProperties="yes">
+                macro: ${project.dir}/../../src/templates
+            </freemarkerLinks>
+            <data expandProperties="yes">
+                dbPath: ${project.dir}/../output/ido_gsdo_tb92-release_9.0.2735_metadata.sqlite
+                doc: xml(${project.dir}/../output/ido_gsdo_tb92-release_9.0.2735_tools_dfs_build_clean.log.info.xml)
+                ant: antProperties()
+            </data>
+        </fmpp>
+    </target>
+
+    <target name="generatebuildstatus">
+        <delete file="${project.dir}/../output/build_status.xml" failonerror="false" />
+        <fmpp sourceFile="${project.dir}/../../src/templates/build_status.xml.ftl"
+                     outputfile="${project.dir}/../output/build_status.xml">
+            <freemarkerLinks expandProperties="yes">
+                macro: ${project.dir}/../../src/templates
+            </freemarkerLinks>
+            <data expandProperties="yes">
+                dbPath: ${project.dir}/../output/all_s60_logs_db
+                doc: xml(${project.dir}/../output/log_text_metadata_input.xml)
+                ant: antProperties()
+            </data>
+        </fmpp>
+    </target>
+
+
+    <target name="generate-diamond-faults">
+        <delete file="${project.dir}/../output/diamonds_faults.xml" failonerror="false" />
+        <fmpp sourceFile="${project.dir}/../../src/templates/diamonds_faults.ftl"
+                     outputfile="${project.dir}/../output/diamonds_faults.xml">
+            <freemarkerLinks expandProperties="yes">
+                macro: ${project.dir}/../../src/templates
+            </freemarkerLinks>
+            <data expandProperties="yes">
+                dbPath: ${project.dir}/../output/all_s60_logs_db
+                doc: xml(${project.dir}/../output/log_text_metadata_input.xml)
+                ant: antProperties()
+            </data>
+        </fmpp>
+    </target>
+
+
+    <target name="generate-summary">
+        <delete file="${project.dir}/../output/summary.html" failonerror="false" />
+        <fmpp sourceFile="${project.dir}/../../src/templates/summary_metadata.html.ftl"
+                     outputfile="${project.dir}/../output/summary.html">
+            <freemarkerLinks expandProperties="yes">
+                macro: ${project.dir}/../../src/templates/macro
+            </freemarkerLinks>
+            <data expandProperties="yes">
+                dbPath: ${project.dir}/../output/all_s60_logs_db
+                loginfo: xml(${project.dir}/../output/log_text_metadata_input.xml)
+                ant: antProperties()
+            </data>
+        </fmpp>
+    </target>
+
+    <target name="generate-cc-summary">
+        <property name="build.id" value="100.test" />
+        <delete file="${project.dir}/../output/cc-summary.html" failonerror="false" />
+        <fmpp sourceFile="${project.dir}/../../src/templates/cc_summary.html.ftl"
+                     outputfile="${project.dir}/../output/cc-summary.html">
+            <freemarkerLinks expandProperties="yes">
+                macro: ${project.dir}/../../src/templates/macro
+            </freemarkerLinks>
+            <data expandProperties="yes">
+                dbPath: ${project.dir}/../output/all_ido_logs.sqlite
+                loginfo: xml(${project.dir}/../data/ido_logs/IDO_lcdo_tb92-ci_MCL.92.64_info.log.xml)
+                ant: antProperties()
+            </data>
+        </fmpp>
+    </target>
+</project>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/tests/functionality/test_regex.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,595 @@
+<?xml version="1.0"?>
+<!-- 
+============================================================================ 
+Name        : test_regex.ant.xml 
+Part of     : Helium AntLib
+
+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="test-metadata-regex" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
+    <description>Helium Antlib metadata unittests.</description>
+
+    <property environment="env" />
+    
+    <dirname property="project.dir" file="${ant.file.test-metadata-regex}" />
+    
+    <taskdef resource="com/nokia/helium/metadata/ant/antlib.xml" uri="http://www.nokia.com/helium" />
+    <taskdef name="fmpp" classname="fmpp.tools.AntTask" onerror="report"/>
+
+    <property name="metadata-filterfile" value="${project.dir}/../data/common.csv"/>
+    <property name="metadata-log-files" value="${project.dir}/../data/*.log"/>
+    
+    <hlm:metadatafilterset id="all-regex-filterfile">
+        <metadatafilterset filterfile="${metadata-filterfile}" />
+    </hlm:metadatafilterset>
+
+    <!-- Test categorization for sbs scanlog
+    -->
+    <target name="test-categorization">
+        <delete dir="${project.dir}/../output/categorization_db" failonerror="false" />
+        <echo message="categorization validation" />
+        <hlm:metadatarecord database="${project.dir}/../output/categorization_db">
+            <hlm:sbsmetadatainput cleanLogFile="${project.dir}/../data/categorization_clean.log">
+                <fileset dir="${project.dir}/../data/">
+                    <include  name="categorization.log"/>
+                </fileset>
+                <metadatafilterset refid="all-regex-filterfile" />
+            </hlm:sbsmetadatainput>
+        </hlm:metadatarecord>
+        <hlm:metadataCountSeverity severity="error" log="categorization.log" db="${project.dir}/../output/categorization_db" property="cleanlog_errors"/>
+        <au:assertTrue>
+            <equals arg1="${cleanlog_errors}" arg2="2"/>
+        </au:assertTrue>
+    </target>
+    <!-- Test parser error
+    -->
+    <target name="test-parser-error">
+        <delete dir="${project.dir}/../output/parser_error_db" failonerror="false" />
+        <au:expectfailure>
+            <hlm:metadatarecord database="${project.dir}/../output/parser_error_db">
+                <hlm:sbsmetadatainput>
+                    <fileset dir="${project.dir}/../data/">
+                        <include  name="parser_error.log"/>
+                    </fileset>
+                    <metadatafilterset refid="all-regex-filterfile" />
+                </hlm:sbsmetadatainput>
+            </hlm:metadatarecord>
+        </au:expectfailure>
+    </target>
+    <!-- Test parser error
+    -->
+    <target name="test-parser-error-keepgoing">
+        <delete dir="${project.dir}/../output/parser_error_db" failonerror="false" />
+        <hlm:metadatarecord database="${project.dir}/../output/parser_error_db" failonerror="false">
+            <hlm:sbsmetadatainput>
+                <fileset dir="${project.dir}/../data/">
+                    <include  name="parser_error.log"/>
+                </fileset>
+                <metadatafilterset refid="all-regex-filterfile" />
+            </hlm:sbsmetadatainput>
+        </hlm:metadatarecord>
+    </target>
+    <!-- Test categorization without cleanLogFile
+    -->
+    <target name="test-categorization-nocleanlog">
+        <delete dir="${project.dir}/../output/categorization_no_clean_db" failonerror="false" />
+        <echo message="categorization validation" />
+        <hlm:metadatarecord database="${project.dir}/../output/categorization_no_clean_db">
+            <hlm:sbsmetadatainput>
+                <fileset dir="${project.dir}/../data/">
+                    <include  name="categorization.log"/>
+                </fileset>
+                <metadatafilterset refid="all-regex-filterfile" />
+            </hlm:sbsmetadatainput>
+        </hlm:metadatarecord>
+        <hlm:metadataCountSeverity severity="error" log="categorization.log" db="${project.dir}/../output/categorization_no_clean_db" property="nocleanlog_errors"/>
+        <au:assertTrue>
+            <equals arg1="${nocleanlog_errors}" arg2="1"/>
+        </au:assertTrue>
+    </target>
+    
+    <target name="test-categorization-nocleanlog-failed-empty-recipe">
+        <delete dir="${project.dir}/../output/log-entry-failed-empty-recipe_db" failonerror="false" />
+        <echo message="categorization validation" />
+        <hlm:metadatarecord database="${project.dir}/../output/log-entry-failed-empty-recipe_db">
+            <hlm:sbsmetadatainput>
+                <fileset dir="${project.dir}/../data/">
+                    <include  name="categorization_failed_empty_recipe.log"/>
+                </fileset>
+                <metadatafilterset refid="all-regex-filterfile" />
+            </hlm:sbsmetadatainput>
+        </hlm:metadatarecord>
+        <hlm:metadataCountSeverity severity="error" log="categorization_failed_empty_recipe.log" db="${project.dir}/../output/log-entry-failed-empty-recipe_db" property="empty_nocleanlog_errors"/>
+        <au:assertTrue>
+            <equals arg1="${empty_nocleanlog_errors}" arg2="1"/>
+        </au:assertTrue>
+    </target>
+
+    <target name="test-categorization-nocleanlog-failed-error-in-recipe">
+        <delete dir="${project.dir}/../output/log-entry-failed-error-in-recipe_db" failonerror="false" />
+        <echo message="categorization validation" />
+        <hlm:metadatarecord database="${project.dir}/../output/log-entry-failed-error-in-recipe_db">
+            <hlm:sbsmetadatainput>
+                <fileset dir="${project.dir}/../data/">
+                    <include  name="categorization_failed_error_in_recipe.log"/>
+                </fileset>
+                <metadatafilterset refid="all-regex-filterfile" />
+            </hlm:sbsmetadatainput>
+        </hlm:metadatarecord>
+        <hlm:metadataCountSeverity severity="error" log="categorization_failed_error_in_recipe.log" db="${project.dir}/../output/log-entry-failed-error-in-recipe_db" property="empty_nocleanlog_errors"/>
+        <au:assertTrue>
+            <equals arg1="${empty_nocleanlog_errors}" arg2="1"/>
+        </au:assertTrue>
+    </target>
+
+<!-- 
+    <target name="test-log-entry-for-no-errors">
+        <delete dir="${project.dir}/../output/log-entry-for-no-error_db" failonerror="false" />
+        <echo message="categorization validation" />
+        <hlm:metadatarecord database="${project.dir}/../output/log-entry-for-no-error_db">
+            <hlm:sbsmetadatainput>
+                <fileset dir="${project.dir}/../data/">
+                    <include  name="noerror.log"/>
+                </fileset>
+                <metadatafilterset refid="all-regex-filterfile" />
+            </hlm:sbsmetadatainput>
+        </hlm:metadatarecord>
+        <fmpp sourceFile="${project.dir}/../../src/templates/general_category.txt.ftl"
+                     outputfile="${project.dir}/../output/general_category.txt">
+            <freemarkerLinks expandProperties="yes">
+                macro: ${project.dir}/../../src/templates/macro
+            </freemarkerLinks>
+            <data expandProperties="yes">
+                dbPath: ${project.dir}/../output/log-entry-for-no-error_db
+                ant: antProperties()
+            </data>
+        </fmpp>
+        <au:assertFileExists file="${project.dir}/../output/general_category.txt" message="Error in test cases"/>
+        <loadfile property="logEntry"
+              srcFile="${project.dir}/../output/general_category.txt"/>
+        <au:assertMatches string="${logEntry}" pattern="component : general : logfile : " 
+                     casesensitive="false"/>
+    </target>
+    -->
+    <!-- Check for all the regular expression defined in the filter file,
+    The log file contains text for matching regular expression.
+    -->
+    <target name="test-all-regex-filterfile">
+        <property name="metadata-read-db" value="${project.dir}/../output/log_all_filterfile_db"/>
+        <delete dir="${metadata-read-db}" failonerror="false"/>
+        <echo message="all regular expression validation" />
+        <echo message="database:${metadata-read-db}" />
+        <!-- do some checks that files are present and raise asserts if not present-->
+        <au:assertFileExists file="${metadata-filterfile}" message="${metadata-filterfile} filter file does not exist"/>
+        <mkdir dir="${project.dir}/../output"/>
+        
+        <hlm:metadatarecord database="${metadata-read-db}">
+            <hlm:sbsmetadatainput>
+                <fileset dir="${project.dir}/../data/">
+                    <include  name="*regex*.log"/>
+                </fileset>
+                <metadatafilterset refid="all-regex-filterfile" />
+            </hlm:sbsmetadatainput>
+        </hlm:metadatarecord>
+        <!-- check we have created the DB file-->
+        <au:assertTrue>
+            <available type="dir" file="${metadata-read-db}" />
+        </au:assertTrue>
+    </target>
+
+    <!-- To verify some lengthy text for recipe tag from 
+    sbs metadata input.
+    -->
+    <target name="test-recipe-lengthy-text">
+        <property name="metadata-read-db" value="${project.dir}/../output/log_lengthy_text_db"/>
+        <au:assertFileExists file="${metadata-filterfile}" message="${metadata-filterfile} filter file does not exist"/>
+        <delete dir="${metadata-read-db}" failonerror="false"/>
+        <echo message="all regular expression validation" />
+        <echo message="database:${metadata-read-db}" />
+        <hlm:metadatarecord database="${metadata-read-db}">
+            <hlm:sbsmetadatainput>
+                <fileset dir="${project.dir}/../data/">
+                    <include  name="receipe*.log"/>
+                </fileset>
+                <metadatafilterset refid="all-regex-filterfile" />
+            </hlm:sbsmetadatainput>
+        </hlm:metadatarecord>
+        <au:assertTrue>
+            <available type="dir" file="${metadata-read-db}" />
+        </au:assertTrue>
+    </target>
+
+    <!--modify the errors so regex=".*warning U4010" description="mingw error" is no longer 
+    an error but a warning-->
+    <hlm:metadatafilterset id="all-regex-combined">
+        <metadatafilter priority="WARNING" regex=".*warning U4010" description="mingw error" />
+        <metadatafilterset filterfile="${metadata-filterfile}" />
+    </hlm:metadatafilterset>
+
+    <property name="metadata-all-db" value="${project.dir}/../output/log_all_combined_db"/>
+
+    <target name="test-all-regex-combined">
+        <property name="metadata-read-db" value="${project.dir}/../output/log_all_combined_db"/>
+        <delete dir="${metadata-read-db}" failonerror="false" />
+        <echo message="all regular expression validation" />
+        <echo message="database:${metadata-read-db}" />
+        <au:assertFileExists file="${metadata-filterfile}" message="${metadata-filterfile} filter file does not exist"/>
+        <mkdir dir="${project.dir}/../output"/>
+
+        <hlm:metadatarecord database="${metadata-read-db}">
+            <hlm:sbsmetadatainput>
+                <fileset dir="${project.dir}/../data/">
+                    <include  name="*regex*.log"/>
+                </fileset>
+                <metadatafilterset refid="all-regex-combined" />
+            </hlm:sbsmetadatainput>
+        </hlm:metadatarecord>
+        <au:assertTrue>
+            <available type="dir" file="${metadata-read-db}" />
+        </au:assertTrue>
+    </target>
+
+
+    <property name="metadata-error-db" value="${project.dir}/../output/log_error_combined_db"/>
+    <!--create an invalid priority type, so contains message invalid 
+    priority and set to error as priority -->
+    <hlm:metadatafilterset id="all-regex-combined-error">
+        <metadatafilter priority="INCORRECT" regex=".*warning U4010" description="test error handling so incorrect priority" />
+        <metadatafilterset filterfile="${metadata-filterfile}" />
+    </hlm:metadatafilterset>
+    <!--create an invalid priority type, which contains warning invalid priority 
+    and continues with other data. 
+    -->
+    <target name="test-all-regex-combined-error">
+        <property name="metadata-read-db" value="${project.dir}/../output/log_error_combined_db"/>
+        <delete dir="${metadata-read-db}" failonerror="false" />
+        <echo message="all regular expression validation" />
+        <echo message="database:${metadata-read-db}" />
+        <au:assertFileExists file="${metadata-filterfile}" message="${metadata-filterfile} filter file does not exist"/>
+        <mkdir dir="${project.dir}/../output"/>
+
+        <hlm:metadatarecord database="${metadata-read-db}" >
+            <hlm:sbsmetadatainput>
+                <fileset dir="${project.dir}/../data/">
+                    <include  name="*regex*.log"/>
+                </fileset>
+                <metadatafilterset refid="all-regex-combined-error" />
+            </hlm:sbsmetadatainput>
+        </hlm:metadatarecord>
+        <!-- no need to check the DB file not present as it won't be-->
+    </target>
+    <!--try to add a different different filter type but not add the parameter so has an error-->
+    <hlm:metadatafilterset id="all-regex-combined-no-priority">
+        <metadatafilter regex=".*warning U4010" description="test error handling so incorrect priority" />
+        <metadatafilterset filterfile="${metadata-filterfile}" />
+    </hlm:metadatafilterset>
+    <!--try to add a different different filter type but not add the parameter so has an error-->
+    <target name="test-all-regex-combined-no-priority">
+        <property name="metadata-read-db" value="${project.dir}/../output/log_error_combined_db"/>
+        <delete dir="${metadata-read-db}" failonerror="false" />
+        <echo message="all regular expression validation" />
+        <echo message="database:${metadata-read-db}" />
+        <au:assertFileExists file="${metadata-filterfile}" message="${metadata-filterfile} filter file does not exist"/>
+        <mkdir dir="${project.dir}/../output"/>
+
+        <hlm:metadatarecord database="${metadata-read-db}">
+            <hlm:sbsmetadatainput>
+                <fileset dir="${project.dir}/../data/">
+                    <include  name="*regex*.log"/>
+                </fileset>
+                <metadatafilterset refid="all-regex-combined-no-priority" />
+            </hlm:sbsmetadatainput>
+        </hlm:metadatarecord>
+        <!-- no need to check the DB file not present as it won't be-->
+    </target>
+    
+
+    <!--try to add a different different filter type but not add the parameter so has an error-->
+    <hlm:metadatafilterset id="all-regex-combined-no-regex">
+        <metadatafilter priority="INCORRECT" description="test error handling so incorrect priority" />
+        <metadatafilter priority="WARNING" description="test error handling so incorrect priority" />
+        <metadatafilterset filterfile="${metadata-filterfile}" />
+    </hlm:metadatafilterset>
+
+    <!--try to add a different different filter type but not add the parameter so has an error-->
+    <target name="test-all-regex-combined-no-regex">
+        <property name="metadata-read-db" value="${project.dir}/../output/log_error_combined_db"/>
+        <delete dir="${metadata-read-db}" failonerror="false" />
+        <echo message="all regular expression validation" />
+        <echo message="database:${metadata-read-db}" />
+        <au:assertFileExists file="${metadata-filterfile}" message="${metadata-filterfile} filter file does not exist"/>
+        <mkdir dir="${project.dir}/../output"/>
+
+        <hlm:metadatarecord database="${metadata-read-db}">
+            <hlm:sbsmetadatainput>
+                <fileset dir="${project.dir}/../data/">
+                    <include  name="*regex*.log"/>
+                </fileset>
+                <metadatafilterset refid="all-regex-combined-no-regex" />
+            </hlm:sbsmetadatainput>
+        </hlm:metadatarecord>
+        <!-- no need to check the DB file not present as it won't be-->
+    </target>
+    <hlm:metadatafilterset id="text_log_metadata_input">
+        <metadatafilterset filterfile="${project.dir}/../data/common.csv" />
+    </hlm:metadatafilterset>
+
+    <target name="test-text_log_metadata_input">
+        <property name="metadata-read-db" value="${project.dir}/../output/log_text_metadata_input_db"/>
+        <delete dir="${metadata-read-db}" failonerror="false" />
+        <echo message="text log metadata input validation" />
+        <echo message="database:${metadata-read-db}" />
+        <au:assertFileExists file="${metadata-filterfile}" message="${metadata-filterfile} filter file does not exist"/>
+        <mkdir dir="${project.dir}/../output"/>
+
+        <hlm:metadatarecord database="${metadata-read-db}">
+            <hlm:textmetadatainput>
+                <fileset dir="${project.dir}/../data/">
+                    <include  name="*_fixslashes*.log"/>
+                </fileset>
+                <metadatafilterset refid="text_log_metadata_input" />
+            </hlm:textmetadatainput>
+        </hlm:metadatarecord>
+        <au:assertTrue>
+            <available type="dir" file="${metadata-read-db}" />
+        </au:assertTrue>
+    </target>
+
+    <hlm:metadatafilterset id="abld_log_metadata_input">
+        <metadatafilter priority="WARNING" regex=".*warning U4010" description="mingw error" />
+        <metadatafilterset filterfile="${project.dir}/../data/common.csv" />
+    </hlm:metadatafilterset>
+
+
+    <target name="test-abld_log_metadata_input">
+        <property name="metadata-read-db" value="${project.dir}/../output/log_abld_metadata_input_db"/>
+        <delete dir="${project.dir}/../output/log_abld_metadata_input_db" failonerror="false" />
+        <echo message="abld log metadata input validation" />
+        <echo message="database:${metadata-read-db}" />
+        <au:assertFileExists file="${metadata-filterfile}" message="${metadata-filterfile} filter file does not exist"/>
+        <mkdir dir="${project.dir}/../output"/>
+
+        <hlm:metadatarecord database="${metadata-read-db}">
+            <hlm:abldmetadatainput>
+                <fileset dir="${project.dir}/../data/">
+                    <include  name="*sample_abld.log"/>
+                </fileset>
+                <metadatafilterset refid="abld_log_metadata_input" />
+            </hlm:abldmetadatainput>
+        </hlm:metadatarecord>
+        <au:assertTrue>
+            <available type="dir" file="${metadata-read-db}" />
+        </au:assertTrue>
+    </target>
+
+
+    <target name="test-policy_metadata_input">
+        <property name="metadata-read-db" value="${project.dir}/../output/log_policy_metadata_input_db"/>
+        <delete dir="${metadata-read-db}" failonerror="false" />
+        <echo message="policy metadata input validation" />
+        <echo message="database:${metadata-read-db}" />
+        <au:assertFileExists file="${metadata-filterfile}" message="${metadata-filterfile} filter file does not exist"/>
+        <mkdir dir="${project.dir}/../output"/>
+
+        <hlm:metadatarecord database="${metadata-read-db}">
+            <hlm:policymetadatainput>
+                <fileset dir="${project.dir}/../data/">
+                    <include  name="*policy*.log"/>
+                </fileset>
+            </hlm:policymetadatainput>
+        </hlm:metadatarecord>
+        <au:assertTrue>
+            <available type="dir" file="${metadata-read-db}" />
+        </au:assertTrue>
+    </target>
+
+    <hlm:metadatafilterset id="ant_log_metadata_input">
+        <metadatafilterset filterfile="${project.dir}/../data/common.csv" />
+    </hlm:metadatafilterset>
+
+
+    <target name="test-ant_log_metadata_input">
+        <property name="metadata-read-db" value="${project.dir}/../output/log_ant_metadata_input_db"/>
+        <delete dir="${metadata-read-db}" failonerror="false" />
+        <echo message="ant log metadata input validation" />
+        <echo message="database:${metadata-read-db}" />
+        <au:assertFileExists file="${metadata-filterfile}" message="${metadata-filterfile} filter file does not exist"/>
+        <mkdir dir="${project.dir}/../output"/>
+
+        <hlm:metadatarecord database="${metadata-read-db}">
+            <hlm:antmetadatainput>
+                <fileset dir="${project.dir}/../data/">
+                    <include  name="*ant*.log"/>
+                </fileset>
+                <metadatafilterset refid="ant_log_metadata_input" />
+            </hlm:antmetadatainput>
+        </hlm:metadatarecord>
+        <au:assertTrue>
+            <available type="dir" file="${metadata-read-db}" />
+        </au:assertTrue>
+    </target>
+
+    <property name="metadata-read-ftl" value="${project.dir}/../../src/templates/readdata.xml.ftl"/>
+    <property name="metadata-read-output" value="${project.dir}/../output/readdata.html"/>
+<!-- 
+    <target name="test-readdata" depends="test-text_log_metadata_input" >
+        <property name="metadata-template-dir" value="${project.dir}/../../src/templates/" />
+        <property name="metadata-output-dir" value="${project.dir}/../output" />
+        <property name="metadata-read-ftl" value="${metadata-template-dir}/readdata.xml.ftl"/>
+        <property name="metadata-read-db" value="${metadata-output-dir}/log_text_metadata_input_db"/>
+        <property name="metadata-read-output" value="${metadata-output-dir}/readdata.html"/>
+        <delete file="${metadata-read-output}" failonerror="false" />
+        <au:assertFileExists file="${metadata-read-db}" message="${metadata-read-db} DB file was not created"/>
+        <fmpp sourceFile="${metadata-template-dir}/readdata.xml.ftl"
+                     outputfile="${metadata-output-dir}/readdata.html">
+            <freemarkerLinks expandProperties="yes">
+                macro: ${project.dir}/../../src/templates
+            </freemarkerLinks>
+            <data expandProperties="yes">
+                dbPath: ${metadata-read-db}
+                ant: antProperties()
+            </data>
+        </fmpp>
+        <fmpp sourceFile="${metadata-template-dir}/build_status.xml.ftl"
+                     outputfile="${metadata-output-dir}/build_status.xml">
+            <freemarkerLinks expandProperties="yes">
+                macro: ${project.dir}/../../src/templates
+            </freemarkerLinks>
+            <data expandProperties="yes">
+                dbPath: ${metadata-read-db}
+                logfile: ido_abs_mcl_devlon70_robot_MCL.70.500_fixslashes_raptor.log
+                ant: antProperties()
+            </data>
+        </fmpp>
+        <fmpp sourceFile="${metadata-template-dir}/email_new.html.ftl"
+                     outputfile="${metadata-output-dir}/build_status.html">
+            <freemarkerLinks expandProperties="yes">
+                macro: ${project.dir}/../../src/templates
+            </freemarkerLinks>
+            <data expandProperties="yes">
+                dbPath: ${metadata-read-db}
+                logfile: ido_abs_mcl_devlon70_robot_MCL.70.500_fixslashes_raptor.log
+                ant: antProperties()
+            </data>
+        </fmpp>
+        <au:assertFileExists file="${metadata-read-output}" message="${metadata-read-output} DB file was not created"/>
+    </target>
+-->
+
+    <target name="test-generate-summary" depends="test-text_log_metadata_input">
+        <property name="metadata-summary-ftl" value="${project.dir}/../../src/templates/summary.html.ftl"/>
+        <property name="metadata-summary-output" value="${project.dir}/../output/summary.html"/>
+        <property name="metadata-output-dir" value="${project.dir}/../output/" />
+        <delete file="${metadata-summary-output}" failonerror="false" />
+        <property name="metadata-read-db" value="${metadata-output-dir}/log_text_metadata_input_db"/>
+        
+        <fmpp sourceFile="${metadata-summary-ftl}"
+                     outputfile="${metadata-summary-output}">
+            <freemarkerLinks expandProperties="yes">
+                macro: ${project.dir}/../../src/templates/macro
+            </freemarkerLinks>
+            <data expandProperties="yes">
+                dbPath: ${metadata-read-db}
+                loginfo: xml(${project.dir}/../data/ido_abs_mcl_devlon70_robot_MCL.70.500_info.log)
+                ant: antProperties()
+            </data>
+        </fmpp>
+        <!-- check we have created the files -->
+        <au:assertTrue>
+            <available type="dir" file="${metadata-read-db}" />
+        </au:assertTrue>
+        <au:assertFileExists file="${metadata-summary-output}" message="${metadata-summary-output} summary output file was not created"/>
+    </target>
+    
+    <target name="test-countseverity">
+        <delete dir="${project.dir}/../output/dp_db" failonerror="false" />
+
+        <hlm:metadatarecord database="${project.dir}/../output/dp_db">
+            <hlm:textmetadatainput>
+                <fileset dir="${project.dir}/../data/">
+                    <include  name="*_fixslashes*.log"/>
+                </fileset>
+                <metadatafilterset refid="text_log_metadata_input" />
+            </hlm:textmetadatainput>
+        </hlm:metadatarecord>
+
+        <hlm:metadataCountSeverity severity="error" log="_fixslashes_raptor.log" db="${project.dir}/../output/dp_db" property="errors"/>
+        <echo message="${errors}" />
+        <au:assertTrue>
+            <equals arg1="${errors}" arg2="24"/>
+        </au:assertTrue>
+        <au:assertTrue>
+            <hlm:metadataHasSeverity severity="error" log="_fixslashes_raptor.log" db="${project.dir}/../output/dp_db" />
+        </au:assertTrue>
+        <au:assertFalse>
+            <hlm:metadataHasSeverity severity="fatal" log="_fixslashes_raptor.log" db="${project.dir}/../output/dp_db" />
+        </au:assertFalse>
+        
+    </target>
+    
+    <target name="test-very-long-warning">
+        <delete dir="${project.dir}/../output/very_long_warning_db" failonerror="false" />
+
+        <hlm:metadatarecord database="${project.dir}/../output/very_long_warning_db">
+            <hlm:textmetadatainput>
+                <fileset dir="${project.dir}/../data/">
+                    <include  name="very_long_warning.log"/>
+                </fileset>
+                <metadatafilterset>
+                    <metadatafilter priority="INFO" regex="^INFO:" description="info" />
+                    <metadatafilter priority="WARNING" regex=".*warning C4503:.*" description="warning" />
+                </metadatafilterset>
+            </hlm:textmetadatainput>
+        </hlm:metadatarecord>
+
+        <hlm:metadataCountSeverity severity="warning" log="very_long_warning.log" db="${project.dir}/../output/very_long_warning_db" property="warnings"/>
+        <echo message="test-very-long-warning: ${warnings}" />
+        <au:assertTrue>
+            <equals arg1="${warnings}" arg2="1"/>
+        </au:assertTrue>
+    </target>
+
+    <target name="test-whatlog-parsing">
+        <delete dir="${project.dir}/../output/whatlog_db" failonerror="false" />
+
+        <hlm:metadatarecord database="${project.dir}/../output/whatlog_db">
+            <hlm:sbsmetadatainput whatLogFile="${project.dir}/../data/build_whatlog.whatlog.log">
+                <fileset dir="${project.dir}/../data/">
+                    <include  name="build_whatlog.log"/>
+                </fileset>
+                <metadatafilterset>
+                    <metadatafilter priority="INFO" regex="^INFO:" description="info" />
+                    <metadatafilter priority="ERROR" regex="^ERROR:" description="error" />
+                    <metadatafilter priority="WARNING" regex=".*warning C4503:.*" description="warning" />
+                </metadatafilterset>
+            </hlm:sbsmetadatainput>
+        </hlm:metadatarecord>
+        <fmpp sourceFile="${project.dir}/../data/whatlog_result.ini.ftl"
+                     outputfile="${project.dir}/../output/whatlog_result.ini">
+            <data expandProperties="yes">
+                dbPath: ${project.dir}/../output/whatlog_db
+                ant: antProperties()
+            </data>
+        </fmpp>
+        <property file="${project.dir}/../output/whatlog_result.ini" />
+        <au:assertTrue message="Invalid number of logs">
+            <equals arg1="${number.of.logs}" arg2="2" />
+        </au:assertTrue>
+        <au:assertTrue message="Invalid number of whatlog entries">
+            <equals arg1="${number.of.whatlog.entries}" arg2="5" />
+        </au:assertTrue>
+    </target>
+
+    <target name="test-log-with-same-root-name">
+        <delete dir="${project.dir}/../output/log-with-same-root-name_db" failonerror="false"/>
+        <hlm:metadatarecord database="${project.dir}/../output/log-with-same-root-name_db">
+            <hlm:textmetadatainput>
+                <fileset dir="${project.dir}/../data/">
+                    <include name="log-with-same-root-name.log*"/>
+                </fileset>
+                <metadatafilterset>
+                    <metadatafilter priority="ERROR" regex="^ERROR:.*" description="error" />
+                </metadatafilterset>
+            </hlm:textmetadatainput>
+        </hlm:metadatarecord>
+        <hlm:metadataCountSeverity severity="error" log="log-with-same-root-name.log" db="${project.dir}/../output/log-with-same-root-name_db" property="log-with-same-root-name.log.error"/>
+        <au:assertTrue message="We should only find 1 error">
+            <equals arg1="${log-with-same-root-name.log.error}" arg2="1"/>
+        </au:assertTrue>
+    </target>
+
+</project>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/tests/output.txt	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,1336 @@
+Buildfile: functionality\test_regex.ant.xml
+
+test-readdata:
+     [fmpp] args.size:1
+     [fmpp] arg-list:E:\Build_E\eclipse_fasym013\helium-antlib-trunk\sf\metadata\tests\functionality/../output/log_all_filterfile.db
+     [fmpp] QueryModel:select * from priority
+     [fmpp] query in SQLTemplateModelselect * from priority
+     [fmpp] QueryModel:select * from component
+     [fmpp] query in SQLTemplateModelselect * from component
+     [fmpp] QueryModel:select * from logpath
+     [fmpp] query in SQLTemplateModelselect * from logpath
+     [fmpp] isDataRead:false
+     [fmpp] sql queryselect * from priority
+     [fmpp] data:0
+     [fmpp] data:''
+     [fmpp] data:1
+     [fmpp] data:ERROR
+     [fmpp] data:2
+     [fmpp] data:WARNING
+     [fmpp] data:3
+     [fmpp] data:CRITICAL
+     [fmpp] data:4
+     [fmpp] data:REMARK
+     [fmpp] indexmap size5
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:3
+     [fmpp] datalist size1
+     [fmpp] QueryModel:select count(logText) as COUNT from metadata_table where priority_id=3
+     [fmpp] query in SQLTemplateModelselect count(logText) as COUNT from metadata_table where priority_id=3
+     [fmpp] isDataRead:false
+     [fmpp] sql queryselect count(logText) as COUNT from metadata_table where priority_id=3
+     [fmpp] data:2
+     [fmpp] indexmap size1
+     [fmpp] sql queryselect count(logText) as COUNT from metadata_table where priority_id=3
+     [fmpp] columnName:COUNT
+     [fmpp] resultSet MetaData column Count=1
+     [fmpp] adding records
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:2
+     [fmpp] datalist size1
+     [fmpp] QueryModel:select count(logText) as COUNT from metadata_table where priority_id=2
+     [fmpp] query in SQLTemplateModelselect count(logText) as COUNT from metadata_table where priority_id=2
+     [fmpp] isDataRead:false
+     [fmpp] sql queryselect count(logText) as COUNT from metadata_table where priority_id=2
+     [fmpp] data:36
+     [fmpp] indexmap size1
+     [fmpp] sql queryselect count(logText) as COUNT from metadata_table where priority_id=2
+     [fmpp] columnName:COUNT
+     [fmpp] resultSet MetaData column Count=1
+     [fmpp] adding records
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:1
+     [fmpp] datalist size1
+     [fmpp] QueryModel:select count(logText) as COUNT from metadata_table where priority_id=1
+     [fmpp] query in SQLTemplateModelselect count(logText) as COUNT from metadata_table where priority_id=1
+     [fmpp] isDataRead:false
+     [fmpp] sql queryselect count(logText) as COUNT from metadata_table where priority_id=1
+     [fmpp] data:32
+     [fmpp] indexmap size1
+     [fmpp] sql queryselect count(logText) as COUNT from metadata_table where priority_id=1
+     [fmpp] columnName:COUNT
+     [fmpp] resultSet MetaData column Count=1
+     [fmpp] adding records
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] QueryModel:select count(logText) as COUNT from metadata_table where priority_id=0
+     [fmpp] query in SQLTemplateModelselect count(logText) as COUNT from metadata_table where priority_id=0
+     [fmpp] isDataRead:false
+     [fmpp] sql queryselect count(logText) as COUNT from metadata_table where priority_id=0
+     [fmpp] data:0
+     [fmpp] indexmap size1
+     [fmpp] sql queryselect count(logText) as COUNT from metadata_table where priority_id=0
+     [fmpp] columnName:COUNT
+     [fmpp] resultSet MetaData column Count=1
+     [fmpp] adding records
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:4
+     [fmpp] datalist size1
+     [fmpp] QueryModel:select count(logText) as COUNT from metadata_table where priority_id=4
+     [fmpp] query in SQLTemplateModelselect count(logText) as COUNT from metadata_table where priority_id=4
+     [fmpp] isDataRead:false
+     [fmpp] sql queryselect count(logText) as COUNT from metadata_table where priority_id=4
+     [fmpp] data:12
+     [fmpp] indexmap size1
+     [fmpp] sql queryselect count(logText) as COUNT from metadata_table where priority_id=4
+     [fmpp] columnName:COUNT
+     [fmpp] resultSet MetaData column Count=1
+     [fmpp] adding records
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:3
+     [fmpp] datalist size1
+     [fmpp] QueryModel:select * from metadata_table where priority_id=3
+     [fmpp] query in SQLTemplateModelselect * from metadata_table where priority_id=3
+     [fmpp] iterator constructor called
+     [fmpp] checking any more element
+     [fmpp] getting records
+     [fmpp] sql queryselect * from metadata_table where priority_id=3 limit 5000 offset 0;
+     [fmpp] columnName:component_id
+     [fmpp] columnName:priority_id
+     [fmpp] columnName:logText
+     [fmpp] columnName:lineNumber
+     [fmpp] columnName:logname_id
+     [fmpp] resultSet MetaData column Count=5
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] next:count:0
+     [fmpp] logtext:next:mingw_make.exe: error
+     [fmpp] checking any more element
+     [fmpp] isDataRead:false
+     [fmpp] sql queryselect * from component
+     [fmpp] data:0
+     [fmpp] data:z:/sf/app/camera/group/bld.inf
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:1
+     [fmpp] logtext:next:mingw_make.exe: error
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:2
+     [fmpp] datalist size1
+     [fmpp] QueryModel:select * from metadata_table where priority_id=2
+     [fmpp] query in SQLTemplateModelselect * from metadata_table where priority_id=2
+     [fmpp] iterator constructor called
+     [fmpp] checking any more element
+     [fmpp] getting records
+     [fmpp] sql queryselect * from metadata_table where priority_id=2 limit 5000 offset 0;
+     [fmpp] columnName:component_id
+     [fmpp] columnName:priority_id
+     [fmpp] columnName:logText
+     [fmpp] columnName:lineNumber
+     [fmpp] columnName:logname_id
+     [fmpp] resultSet MetaData column Count=5
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] next:count:0
+     [fmpp] logtext:next:WARNING:
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:1
+     [fmpp] logtext:next:LINK : warning
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:2
+     [fmpp] logtext:next::10: warning: cannot find matching deallocation function
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:3
+     [fmpp] logtext:next:100) : WARNING: TEST123
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:4
+     [fmpp] logtext:next:MAKEDEF WARNING: TEST
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:5
+     [fmpp] logtext:next:TEST 123 \\(10) : Warning: (400)
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:6
+     [fmpp] logtext:next:BLDMAKE WARNING: bldm warning
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:7
+     [fmpp] logtext:next:MAKEDEF WARNING: make warning
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:8
+     [fmpp] logtext:next:atest(100) : warning C aasdfa
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:9
+     [fmpp] logtext:next:testas 100: warning: test123
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:10
+     [fmpp] logtext:next:usage Usage Warning: warn1
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:11
+     [fmpp] logtext:next:abcd mwld.exe: abcd
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:12
+     [fmpp] logtext:next:Command line warning abcd
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:13
+     [fmpp] logtext:next:anything ERROR: bad relocation: test123
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:14
+     [fmpp] logtext:next:10 warning in component1
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:15
+     [fmpp] logtext:next:EventType: Error Source: SweepNTabcde
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:16
+     [fmpp] logtext:next:WARN	test
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:17
+     [fmpp] logtext:next:abcd :10: warning: cannot find matching deallocation function 100:note abcd
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:18
+     [fmpp] logtext:next:WARNING:
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:19
+     [fmpp] logtext:next:LINK : warning
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:20
+     [fmpp] logtext:next::10: warning: cannot find matching deallocation function
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:21
+     [fmpp] logtext:next:100) : WARNING: TEST123
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:22
+     [fmpp] logtext:next:MAKEDEF WARNING: TEST
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:23
+     [fmpp] logtext:next:TEST 123 \\(10) : Warning: (400)
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:24
+     [fmpp] logtext:next:BLDMAKE WARNING: bldm warning
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:25
+     [fmpp] logtext:next:MAKEDEF WARNING: make warning
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:26
+     [fmpp] logtext:next:atest(100) : warning C aasdfa
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:27
+     [fmpp] logtext:next:testas 100: warning: test123
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:28
+     [fmpp] logtext:next:usage Usage Warning: warn1
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:29
+     [fmpp] logtext:next:abcd mwld.exe: abcd
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:30
+     [fmpp] logtext:next:Command line warning abcd
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:31
+     [fmpp] logtext:next:anything ERROR: bad relocation: test123
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:32
+     [fmpp] logtext:next:10 warning in component1
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:33
+     [fmpp] logtext:next:EventType: Error Source: SweepNTabcde
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:34
+     [fmpp] logtext:next:WARN	test
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:35
+     [fmpp] logtext:next:abcd :10: warning: cannot find matching deallocation function 100:note abcd
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:1
+     [fmpp] datalist size1
+     [fmpp] QueryModel:select * from metadata_table where priority_id=1
+     [fmpp] query in SQLTemplateModelselect * from metadata_table where priority_id=1
+     [fmpp] iterator constructor called
+     [fmpp] checking any more element
+     [fmpp] getting records
+     [fmpp] sql queryselect * from metadata_table where priority_id=1 limit 5000 offset 0;
+     [fmpp] columnName:component_id
+     [fmpp] columnName:priority_id
+     [fmpp] columnName:logText
+     [fmpp] columnName:lineNumber
+     [fmpp] columnName:logname_id
+     [fmpp] resultSet MetaData column Count=5
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] next:count:0
+     [fmpp] logtext:next:test FATAL ERROR(S):abcd
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:1
+     [fmpp] logtext:next:): Missing file:
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:2
+     [fmpp] logtext:next:abcd FLEXlm error:
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:3
+     [fmpp] logtext:next:ABLD ERROR: 1234
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:4
+     [fmpp] logtext:next:BLDMAKE ERROR: 43543
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:5
+     [fmpp] logtext:next:fatal error U1077 error occured
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:6
+     [fmpp] logtext:next:test warning U4010
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:7
+     [fmpp] logtext:next:make[10]: ***abcd
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:8
+     [fmpp] logtext:next:make[10]: abcd not remade because of errors
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:9
+     [fmpp] logtext:next:ERROR: build error
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:10
+     [fmpp] logtext:next:ERROR EC95940: ec error
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:11
+     [fmpp] logtext:next:Errors caused tool to abort. asdfasdf
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:12
+     [fmpp] logtext:next:test no rule to make target
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:13
+     [fmpp] logtext:next:ERROR,.*no rule to make.*,
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:14
+     [fmpp] logtext:next:ERROR	testing
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:15
+     [fmpp] logtext:next:"abcd , line 100: Error: 100abcd:. abcd
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:16
+     [fmpp] logtext:next:test FATAL ERROR(S):abcd
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:17
+     [fmpp] logtext:next:): Missing file:
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:18
+     [fmpp] logtext:next:abcd FLEXlm error:
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:19
+     [fmpp] logtext:next:ABLD ERROR: 1234
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:20
+     [fmpp] logtext:next:BLDMAKE ERROR: 43543
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:21
+     [fmpp] logtext:next:fatal error U1077 error occured
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:22
+     [fmpp] logtext:next:test warning U4010
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:23
+     [fmpp] logtext:next:make[10]: ***abcd
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:24
+     [fmpp] logtext:next:make[10]: abcd not remade because of errors
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:25
+     [fmpp] logtext:next:ERROR: build error
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:26
+     [fmpp] logtext:next:ERROR EC95940: ec error
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:27
+     [fmpp] logtext:next:Errors caused tool to abort. asdfasdf
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:28
+     [fmpp] logtext:next:test no rule to make target
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:29
+     [fmpp] logtext:next:ERROR,.*no rule to make.*,
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:30
+     [fmpp] logtext:next:ERROR	testing
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:31
+     [fmpp] logtext:next:"abcd , line 100: Error: 100abcd:. abcd
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] QueryModel:select * from metadata_table where priority_id=0
+     [fmpp] query in SQLTemplateModelselect * from metadata_table where priority_id=0
+     [fmpp] iterator constructor called
+     [fmpp] checking any more element
+     [fmpp] getting records
+     [fmpp] sql queryselect * from metadata_table where priority_id=0 limit 5000 offset 0;
+     [fmpp] columnName:component_id
+     [fmpp] columnName:priority_id
+     [fmpp] columnName:logText
+     [fmpp] columnName:lineNumber
+     [fmpp] columnName:logname_id
+     [fmpp] resultSet MetaData column Count=5
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:4
+     [fmpp] datalist size1
+     [fmpp] QueryModel:select * from metadata_table where priority_id=4
+     [fmpp] query in SQLTemplateModelselect * from metadata_table where priority_id=4
+     [fmpp] iterator constructor called
+     [fmpp] checking any more element
+     [fmpp] getting records
+     [fmpp] sql queryselect * from metadata_table where priority_id=4 limit 5000 offset 0;
+     [fmpp] columnName:component_id
+     [fmpp] columnName:priority_id
+     [fmpp] columnName:logText
+     [fmpp] columnName:lineNumber
+     [fmpp] columnName:logname_id
+     [fmpp] resultSet MetaData column Count=5
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] next:count:0
+     [fmpp] logtext:next:REMARK: 
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:1
+     [fmpp] logtext:next:INFO:
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:2
+     [fmpp] logtext:next:anything Command line warning D4025 : test
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:3
+     [fmpp] logtext:next:REMARK: test remark anything
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:4
+     [fmpp] logtext:next:EventType: Error Source: GNU Make.
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:5
+     [fmpp] logtext:next:INFO: any info match
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:6
+     [fmpp] logtext:next:REMARK: 
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:7
+     [fmpp] logtext:next:INFO:
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:8
+     [fmpp] logtext:next:anything Command line warning D4025 : test
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:9
+     [fmpp] logtext:next:REMARK: test remark anything
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:10
+     [fmpp] logtext:next:EventType: Error Source: GNU Make.
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] next:count:11
+     [fmpp] logtext:next:INFO: any info match
+     [fmpp] checking any more element
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] indexmap size1
+     [fmpp] indexmap size1
+     [fmpp] QueryModel:0
+     [fmpp] datalist size1
+     [fmpp] QueryModel:select * from metadata_table where component_id=0 order by priority_id
+     [fmpp] query in SQLTemplateModelselect * from metadata_table where component_id=0 order by priority_id
+     [fmpp] iterator constructor called
+     [fmpp] checking any more element
+     [fmpp] getting records
+     [fmpp] sql queryselect * from metadata_table where component_id=0 order by priority_id limit 5000 offset 0;
+     [fmpp] columnName:component_id
+     [fmpp] columnName:priority_id
+     [fmpp] columnName:logText
+     [fmpp] columnName:lineNumber
+     [fmpp] columnName:logname_id
+     [fmpp] resultSet MetaData column Count=5
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] adding records
+     [fmpp] next:count:0
+     [fmpp] logtext:next:test FATAL ERROR(S):abcd
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:1
+     [fmpp] datalist size1
+     [fmpp] next:count:1
+     [fmpp] logtext:next:): Missing file:
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:1
+     [fmpp] datalist size1
+     [fmpp] next:count:2
+     [fmpp] logtext:next:abcd FLEXlm error:
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:1
+     [fmpp] datalist size1
+     [fmpp] next:count:3
+     [fmpp] logtext:next:ABLD ERROR: 1234
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:1
+     [fmpp] datalist size1
+     [fmpp] next:count:4
+     [fmpp] logtext:next:BLDMAKE ERROR: 43543
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:1
+     [fmpp] datalist size1
+     [fmpp] next:count:5
+     [fmpp] logtext:next:fatal error U1077 error occured
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:1
+     [fmpp] datalist size1
+     [fmpp] next:count:6
+     [fmpp] logtext:next:test warning U4010
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:1
+     [fmpp] datalist size1
+     [fmpp] next:count:7
+     [fmpp] logtext:next:make[10]: ***abcd
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:1
+     [fmpp] datalist size1
+     [fmpp] next:count:8
+     [fmpp] logtext:next:make[10]: abcd not remade because of errors
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:1
+     [fmpp] datalist size1
+     [fmpp] next:count:9
+     [fmpp] logtext:next:ERROR: build error
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:1
+     [fmpp] datalist size1
+     [fmpp] next:count:10
+     [fmpp] logtext:next:ERROR EC95940: ec error
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:1
+     [fmpp] datalist size1
+     [fmpp] next:count:11
+     [fmpp] logtext:next:Errors caused tool to abort. asdfasdf
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:1
+     [fmpp] datalist size1
+     [fmpp] next:count:12
+     [fmpp] logtext:next:test no rule to make target
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:1
+     [fmpp] datalist size1
+     [fmpp] next:count:13
+     [fmpp] logtext:next:ERROR,.*no rule to make.*,
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:1
+     [fmpp] datalist size1
+     [fmpp] next:count:14
+     [fmpp] logtext:next:ERROR	testing
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:1
+     [fmpp] datalist size1
+     [fmpp] next:count:15
+     [fmpp] logtext:next:"abcd , line 100: Error: 100abcd:. abcd
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:1
+     [fmpp] datalist size1
+     [fmpp] next:count:16
+     [fmpp] logtext:next:test FATAL ERROR(S):abcd
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:1
+     [fmpp] datalist size1
+     [fmpp] next:count:17
+     [fmpp] logtext:next:): Missing file:
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:1
+     [fmpp] datalist size1
+     [fmpp] next:count:18
+     [fmpp] logtext:next:abcd FLEXlm error:
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:1
+     [fmpp] datalist size1
+     [fmpp] next:count:19
+     [fmpp] logtext:next:ABLD ERROR: 1234
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:1
+     [fmpp] datalist size1
+     [fmpp] next:count:20
+     [fmpp] logtext:next:BLDMAKE ERROR: 43543
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:1
+     [fmpp] datalist size1
+     [fmpp] next:count:21
+     [fmpp] logtext:next:fatal error U1077 error occured
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:1
+     [fmpp] datalist size1
+     [fmpp] next:count:22
+     [fmpp] logtext:next:test warning U4010
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:1
+     [fmpp] datalist size1
+     [fmpp] next:count:23
+     [fmpp] logtext:next:make[10]: ***abcd
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:1
+     [fmpp] datalist size1
+     [fmpp] next:count:24
+     [fmpp] logtext:next:make[10]: abcd not remade because of errors
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:1
+     [fmpp] datalist size1
+     [fmpp] next:count:25
+     [fmpp] logtext:next:ERROR: build error
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:1
+     [fmpp] datalist size1
+     [fmpp] next:count:26
+     [fmpp] logtext:next:ERROR EC95940: ec error
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:1
+     [fmpp] datalist size1
+     [fmpp] next:count:27
+     [fmpp] logtext:next:Errors caused tool to abort. asdfasdf
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:1
+     [fmpp] datalist size1
+     [fmpp] next:count:28
+     [fmpp] logtext:next:test no rule to make target
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:1
+     [fmpp] datalist size1
+     [fmpp] next:count:29
+     [fmpp] logtext:next:ERROR,.*no rule to make.*,
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:1
+     [fmpp] datalist size1
+     [fmpp] next:count:30
+     [fmpp] logtext:next:ERROR	testing
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:1
+     [fmpp] datalist size1
+     [fmpp] next:count:31
+     [fmpp] logtext:next:"abcd , line 100: Error: 100abcd:. abcd
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:1
+     [fmpp] datalist size1
+     [fmpp] next:count:32
+     [fmpp] logtext:next:WARNING:
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:2
+     [fmpp] datalist size1
+     [fmpp] next:count:33
+     [fmpp] logtext:next:LINK : warning
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:2
+     [fmpp] datalist size1
+     [fmpp] next:count:34
+     [fmpp] logtext:next::10: warning: cannot find matching deallocation function
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:2
+     [fmpp] datalist size1
+     [fmpp] next:count:35
+     [fmpp] logtext:next:100) : WARNING: TEST123
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:2
+     [fmpp] datalist size1
+     [fmpp] next:count:36
+     [fmpp] logtext:next:MAKEDEF WARNING: TEST
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:2
+     [fmpp] datalist size1
+     [fmpp] next:count:37
+     [fmpp] logtext:next:TEST 123 \\(10) : Warning: (400)
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:2
+     [fmpp] datalist size1
+     [fmpp] next:count:38
+     [fmpp] logtext:next:BLDMAKE WARNING: bldm warning
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:2
+     [fmpp] datalist size1
+     [fmpp] next:count:39
+     [fmpp] logtext:next:MAKEDEF WARNING: make warning
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:2
+     [fmpp] datalist size1
+     [fmpp] next:count:40
+     [fmpp] logtext:next:atest(100) : warning C aasdfa
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:2
+     [fmpp] datalist size1
+     [fmpp] next:count:41
+     [fmpp] logtext:next:testas 100: warning: test123
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:2
+     [fmpp] datalist size1
+     [fmpp] next:count:42
+     [fmpp] logtext:next:usage Usage Warning: warn1
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:2
+     [fmpp] datalist size1
+     [fmpp] next:count:43
+     [fmpp] logtext:next:abcd mwld.exe: abcd
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:2
+     [fmpp] datalist size1
+     [fmpp] next:count:44
+     [fmpp] logtext:next:Command line warning abcd
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:2
+     [fmpp] datalist size1
+     [fmpp] next:count:45
+     [fmpp] logtext:next:anything ERROR: bad relocation: test123
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:2
+     [fmpp] datalist size1
+     [fmpp] next:count:46
+     [fmpp] logtext:next:10 warning in component1
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:2
+     [fmpp] datalist size1
+     [fmpp] next:count:47
+     [fmpp] logtext:next:EventType: Error Source: SweepNTabcde
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:2
+     [fmpp] datalist size1
+     [fmpp] next:count:48
+     [fmpp] logtext:next:WARN	test
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:2
+     [fmpp] datalist size1
+     [fmpp] next:count:49
+     [fmpp] logtext:next:abcd :10: warning: cannot find matching deallocation function 100:note abcd
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:2
+     [fmpp] datalist size1
+     [fmpp] next:count:50
+     [fmpp] logtext:next:WARNING:
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:2
+     [fmpp] datalist size1
+     [fmpp] next:count:51
+     [fmpp] logtext:next:LINK : warning
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:2
+     [fmpp] datalist size1
+     [fmpp] next:count:52
+     [fmpp] logtext:next::10: warning: cannot find matching deallocation function
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:2
+     [fmpp] datalist size1
+     [fmpp] next:count:53
+     [fmpp] logtext:next:100) : WARNING: TEST123
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:2
+     [fmpp] datalist size1
+     [fmpp] next:count:54
+     [fmpp] logtext:next:MAKEDEF WARNING: TEST
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:2
+     [fmpp] datalist size1
+     [fmpp] next:count:55
+     [fmpp] logtext:next:TEST 123 \\(10) : Warning: (400)
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:2
+     [fmpp] datalist size1
+     [fmpp] next:count:56
+     [fmpp] logtext:next:BLDMAKE WARNING: bldm warning
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:2
+     [fmpp] datalist size1
+     [fmpp] next:count:57
+     [fmpp] logtext:next:MAKEDEF WARNING: make warning
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:2
+     [fmpp] datalist size1
+     [fmpp] next:count:58
+     [fmpp] logtext:next:atest(100) : warning C aasdfa
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:2
+     [fmpp] datalist size1
+     [fmpp] next:count:59
+     [fmpp] logtext:next:testas 100: warning: test123
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:2
+     [fmpp] datalist size1
+     [fmpp] next:count:60
+     [fmpp] logtext:next:usage Usage Warning: warn1
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:2
+     [fmpp] datalist size1
+     [fmpp] next:count:61
+     [fmpp] logtext:next:abcd mwld.exe: abcd
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:2
+     [fmpp] datalist size1
+     [fmpp] next:count:62
+     [fmpp] logtext:next:Command line warning abcd
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:2
+     [fmpp] datalist size1
+     [fmpp] next:count:63
+     [fmpp] logtext:next:anything ERROR: bad relocation: test123
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:2
+     [fmpp] datalist size1
+     [fmpp] next:count:64
+     [fmpp] logtext:next:10 warning in component1
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:2
+     [fmpp] datalist size1
+     [fmpp] next:count:65
+     [fmpp] logtext:next:EventType: Error Source: SweepNTabcde
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:2
+     [fmpp] datalist size1
+     [fmpp] next:count:66
+     [fmpp] logtext:next:WARN	test
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:2
+     [fmpp] datalist size1
+     [fmpp] next:count:67
+     [fmpp] logtext:next:abcd :10: warning: cannot find matching deallocation function 100:note abcd
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:2
+     [fmpp] datalist size1
+     [fmpp] next:count:68
+     [fmpp] logtext:next:mingw_make.exe: error
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:3
+     [fmpp] datalist size1
+     [fmpp] next:count:69
+     [fmpp] logtext:next:mingw_make.exe: error
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:3
+     [fmpp] datalist size1
+     [fmpp] next:count:70
+     [fmpp] logtext:next:REMARK: 
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:4
+     [fmpp] datalist size1
+     [fmpp] next:count:71
+     [fmpp] logtext:next:INFO:
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:4
+     [fmpp] datalist size1
+     [fmpp] next:count:72
+     [fmpp] logtext:next:anything Command line warning D4025 : test
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:4
+     [fmpp] datalist size1
+     [fmpp] next:count:73
+     [fmpp] logtext:next:REMARK: test remark anything
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:4
+     [fmpp] datalist size1
+     [fmpp] next:count:74
+     [fmpp] logtext:next:EventType: Error Source: GNU Make.
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:4
+     [fmpp] datalist size1
+     [fmpp] next:count:75
+     [fmpp] logtext:next:INFO: any info match
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:4
+     [fmpp] datalist size1
+     [fmpp] next:count:76
+     [fmpp] logtext:next:REMARK: 
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:4
+     [fmpp] datalist size1
+     [fmpp] next:count:77
+     [fmpp] logtext:next:INFO:
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:4
+     [fmpp] datalist size1
+     [fmpp] next:count:78
+     [fmpp] logtext:next:anything Command line warning D4025 : test
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:4
+     [fmpp] datalist size1
+     [fmpp] next:count:79
+     [fmpp] logtext:next:REMARK: test remark anything
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:4
+     [fmpp] datalist size1
+     [fmpp] next:count:80
+     [fmpp] logtext:next:EventType: Error Source: GNU Make.
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:4
+     [fmpp] datalist size1
+     [fmpp] next:count:81
+     [fmpp] logtext:next:INFO: any info match
+     [fmpp] checking any more element
+     [fmpp] indexmap size5
+     [fmpp] QueryModel:4
+     [fmpp] datalist size1
+     [fmpp] File processed.
+
+BUILD SUCCESSFUL
+Total time: 1 second
Binary file buildframework/helium/external/helium-antlib/java/metadata/tests/output/all_ido_logs.db has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/tests/output1.txt	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,84 @@
+Buildfile: functionality\test_regex.ant.xml
+
+test-readdata:
+     [fmpp] args.size:6
+     [fmpp] arg-list:E:\Build_E\eclipse_fasym013\helium-antlib-trunk\sf\metadata\tests\output\log_all_filterfile.db
+     [fmpp] arg-list:LOG_ALL_FILTERFILE
+     [fmpp] arg-list:10
+     [fmpp] arg-list:-1
+     [fmpp] arg-list:where priority='WARNING'
+     [fmpp] arg-list:true
+     [fmpp] offset-1
+     [fmpp] recordLimit10
+     [fmpp] Initializing the db
+     [fmpp] updating queries
+     [fmpp] adding table details
+     [fmpp] adding record size
+     [fmpp] updateQuery:-1
+     [fmpp] sqlquery:SELECT COUNT(*) AS COUNT FROM LOG_ALL_FILTERFILE where priority='WARNING'
+     [fmpp] record count:36
+     [fmpp] recordcount:36
+     [fmpp] updatequery:10
+     [fmpp] maxoffset:4
+     [fmpp] iterator constructor called
+     [fmpp] checking any more element
+     [fmpp] SQLTemplateModelIterator:offset:0
+     [fmpp] adding table details
+     [fmpp] adding record size
+     [fmpp] updateQuery:0
+     [fmpp] adding records
+     [fmpp] actual query:where priority='WARNING'
+     [fmpp] sql querySELECT * from LOG_ALL_FILTERFILE where priority='WARNING' limit 10 offset 0;
+     [fmpp] no. of columns from query result:3
+     [fmpp] record size in getRecords:10
+     [fmpp] actual query:where priority='WARNING'
+     [fmpp] sql querySELECT * from LOG_ALL_FILTERFILE where priority='WARNING' limit 10 offset 0;
+     [fmpp] no. of columns from query result:3
+     [fmpp] record size in getRecords:10
+     [fmpp] checking any more element
+     [fmpp] SQLTemplateModelIterator:offset:10
+     [fmpp] adding table details
+     [fmpp] adding record size
+     [fmpp] updateQuery:10
+     [fmpp] adding records
+     [fmpp] actual query:where priority='WARNING'
+     [fmpp] sql querySELECT * from LOG_ALL_FILTERFILE where priority='WARNING' limit 10 offset 10;
+     [fmpp] no. of columns from query result:3
+     [fmpp] record size in getRecords:10
+     [fmpp] actual query:where priority='WARNING'
+     [fmpp] sql querySELECT * from LOG_ALL_FILTERFILE where priority='WARNING' limit 10 offset 10;
+     [fmpp] no. of columns from query result:3
+     [fmpp] record size in getRecords:10
+     [fmpp] checking any more element
+     [fmpp] SQLTemplateModelIterator:offset:20
+     [fmpp] adding table details
+     [fmpp] adding record size
+     [fmpp] updateQuery:20
+     [fmpp] adding records
+     [fmpp] actual query:where priority='WARNING'
+     [fmpp] sql querySELECT * from LOG_ALL_FILTERFILE where priority='WARNING' limit 10 offset 20;
+     [fmpp] no. of columns from query result:3
+     [fmpp] record size in getRecords:10
+     [fmpp] actual query:where priority='WARNING'
+     [fmpp] sql querySELECT * from LOG_ALL_FILTERFILE where priority='WARNING' limit 10 offset 20;
+     [fmpp] no. of columns from query result:3
+     [fmpp] record size in getRecords:10
+     [fmpp] checking any more element
+     [fmpp] SQLTemplateModelIterator:offset:30
+     [fmpp] adding table details
+     [fmpp] adding record size
+     [fmpp] updateQuery:30
+     [fmpp] adding records
+     [fmpp] actual query:where priority='WARNING'
+     [fmpp] sql querySELECT * from LOG_ALL_FILTERFILE where priority='WARNING' limit 10 offset 30;
+     [fmpp] no. of columns from query result:3
+     [fmpp] record size in getRecords:6
+     [fmpp] actual query:where priority='WARNING'
+     [fmpp] sql querySELECT * from LOG_ALL_FILTERFILE where priority='WARNING' limit 10 offset 30;
+     [fmpp] no. of columns from query result:3
+     [fmpp] record size in getRecords:6
+     [fmpp] checking any more element
+     [fmpp] File processed.
+
+BUILD SUCCESSFUL
+Total time: 0 seconds
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/tests/test_metadata.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : test_metadata.ant.xml 
+Part of     : Helium AntLib
+
+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="test-metadata" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
+    <description>Helium antlib metadata tests.</description>
+
+    <taskdef resource="com/nokia/helium/metadata/ant/antlib.xml" uri="http://www.nokia.com/helium" />
+    <taskdef name="fmpp" classname="fmpp.tools.AntTask" onerror="report"/>
+
+    <target name="check-metadata">
+        <hlm:metadatarecord srcfile="${basedir}\data\gensis.txt" database="${basedir}\out.sqlite">
+            <fileset dir="data" includes="gensis.txt"/>
+            <hlm:textlogparser>
+                <!-- Single set defined by csv file 
+                <hlm:metadatafilterset filterFile="${basedir}\data\common.csv"/>-->
+                <!-- Set defined by nested single filter and another nested set -->
+                <hlm:metadatafilterset>
+                    <hlm:metadatafilter priority="error" regex=".*Warning: Could not find file.*" description="Test pattern for missing file."/>
+                    <!--<hlm:metadatafilterset>
+                        <hlm:metadatafilter priority="warning" regex="File not found" description="Test pattern for missing file."/>
+                    </hlm:metadatafilterset>-->
+                </hlm:metadatafilterset>
+            </hlm:textlogparser>
+        </hlm:metadatarecord>
+        <!--<au:assertLogContains text="Successfully executed codescanner"/>
+        <au:assertLogContains text="Output format: xml,html"/>
+        <au:assertFileExists file="${codescanner.output.dir}/problemIndex.xml"/>-->
+    </target>
+    
+    
+    <target name="render-scanlog">
+        <property name="build.logs.dir" value="${bmd.test.project.dir}/test_bmd" />
+        <fmpp sourceFile="${basedir}/../src/templates/readdata.xml.ftl"
+                      outputFile="${basedir}/readdata.xml">
+            <freemarkerLinks expandProperties="yes">
+                macro: ${basedir}/../src/templates
+            </freemarkerLinks>
+            <data>
+                templatedir: "${basedir}/src/templates"
+                template: "components_status.xml.ftl"
+                dbPath: "tests/out.sqlite"
+                countOnly: "true"
+                tableName: "out"
+                queryString: "where priority='WARNING' or priority='error'"
+                limit: "500"
+                ant: antProperties()
+            </data>
+        </fmpp>
+    </target>
+
+</project>
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/metadata/tests/test_validity.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,67 @@
+<?xml version="1.0"?>
+<!-- 
+============================================================================ 
+Name        : test_diamonds.ant.xml 
+Part of     : Helium AntLib
+
+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="test-metadata-validity" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
+    <description>Helium Antlib diamonds unittests.</description>
+    
+    <dirname property="project.dir" file="${ant.file.test-metadata-validity}" />
+
+    <taskdef resource="com/nokia/helium/metadata/ant/antlib.xml" uri="http://www.nokia.com/helium" />
+    <taskdef name="fmpp" classname="fmpp.tools.AntTask"  onerror="report"/>
+
+    <!--
+    <hlm:metadatafilterset id="all-regex-filterfile">
+        <metadatafilterset filterfile="${project.dir}/../data/common.csv" />
+    </hlm:metadatafilterset>
+
+    <target name="test-all-regex-filterfile">
+        <echo message="all regular expression validation" />
+        <echo message="database:${project.dir}/../output/log_all_filterfile.sqlite" />
+        <hlm:metadatarecord database="${project.dir}/../output/log_all_filterfile.sqlite">
+            <fileset dir="${project.dir}/../data/">
+                <include  name="all*.log"/>
+            </fileset>
+           <hlm:saxlogparser>
+                <metadatafilterset refid="all-regex-filterfile" />
+           </hlm:saxlogparser>
+        </hlm:metadatarecord>
+    </target>
+
+    <hlm:metadatafilterset id="all-regex-combined">
+        <metadatafilter priority="WARNING" regex=".*warning U4010" description="mingw error" />
+        <metadatafilterset filterfile="${project.dir}/../data/common.csv" />
+    </hlm:metadatafilterset>
+
+    <target name="test-all-regex-combined">
+        <echo message="all regular expression validation" />
+        <echo message="database:${project.dir}/../output/log_all_combined.sqlite" />
+        <hlm:metadatarecord database="${project.dir}/../output/log_all_combined.sqlite">
+            <fileset dir="${project.dir}/../data/">
+                <include  name="all*.log"/>
+            </fileset>
+            <hlm:saxlogparser>
+                <metadatafilterset refid="all-regex-combined" />
+            </hlm:saxlogparser>
+        </hlm:metadatarecord>
+    </target>
+    -->
+</project>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/quality/bld.bat	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,39 @@
+@echo off
+
+rem
+rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+rem All rights reserved.
+rem This component and the accompanying materials are made available
+rem under the terms of the License "Eclipse Public License v1.0"
+rem which accompanies this distribution, and is available
+rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+rem
+rem Initial Contributors:
+rem Nokia Corporation - initial contribution.
+rem
+rem Contributors:
+rem
+rem Description: 
+rem
+
+setlocal
+if not defined JAVA_6_HOME (
+set TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
+) ELSE  set TESTED_JAVA=%JAVA_6_HOME%
+if exist %TESTED_JAVA% (set JAVA_HOME=%TESTED_JAVA%)
+
+REM Configure Ant 
+if not defined TESTED_ANT_HOME (
+set TESTED_ANT_HOME=C:\Apps\ant_1.7
+) 
+if exist %TESTED_ANT_HOME% (set ANT_HOME=%TESTED_ANT_HOME%)
+
+call java -cp ".\..\..\bin\helium-checktools.jar" com.nokia.helium.checktools.HeliumToolsCheckerMain -config ".\..\..\builder\helium.basic.tools.config"
+if "%ERRORLEVEL%" neq "0" (goto errorstop)
+
+ant -lib ../../builder/antlibs %*
+endlocal
+
+:errorstop
+@echo *** Build aborted with error
+exit /b 1
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/quality/build.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : build.xml 
+Part of     : Helium AntLib
+
+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="helium-quality">
+    <description>Helium Antlib Quality build file.</description>
+    
+    <property name="builder.dir" location="../../builder"/>
+    <property name="sf.source.root.dir" location="../../" />
+    <import file="${builder.dir}/java/macros.ant.xml" />
+    <property name="name" value="quality"/>
+
+</project>
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/quality/coverity.rst	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,64 @@
+.. index::
+  module: Coverity Prevent Tool.
+
+========================
+Coverity Prevent Tool
+========================
+
+.. contents::
+
+This document describes requirements and how to run coverity prevent tool with sbs builds using helium. 
+
+Introduction
+-----------------
+- Coverity Prevent analyzes source code to find defects early in the development cycle, reducing the risks associated with coding. Included with Prevent are workflow tools that track and manage defects from initial discovery through final resolution.
+- With high precision, Coverity Prevent analyzes source code and detects critical software defects in the following categories:
+
+    * Quality
+    
+        Coverity Prevent detects bugs at compile-time that can cause run-time crashes. For example: memory leaks, use-after-free errors, and illegal pointer accesses.
+        
+    * Security 
+    
+        Early during development, Coverity Prevent can detect the security vulnerabilities that hackers can exploit and help you eliminate serious problems, such as denial of service, data or memory corruption, and privilege escalation. Vulnerabilities detected can include buffer overruns, integer overflows, format string errors, and SQL injection attacks.
+        
+    * Concurrency 
+    
+        Coverity Prevent can detect errors in multi-threaded programs that, given the complexity of concurrent programming, can be extremely difficult to track down or reproduce. Detected defects include potential deadlocks or misuse of locks.
+        
+Implmentation
+-----------------
+
+- Coverity command can be run using the <hlm:coverity> task.
+- Coverity task will validate is the command passed to task is starts with "cov-" and then it will run the command.
+- Coverity command options can passed through the datatypes "<hlm:coverityoptions>" or "<hlm:arg>".
+- Below example shows how parameters can be passed to coverity command.
+
+   
+.. code-block:: xml
+        
+        <hlm:coverity command="cov-link" dir="${build.drive}/">
+            <hlm:arg name="--dir" value="${coverity.inter.dir}"/>
+            <hlm:arg name="--collect" value=""/>
+            <hlm:arg name="-of" value="${coverity.link.dir}/all.link"/>
+        </hlm:coverity >
+        
+.. code-block:: xml
+        
+        <hlm:coverityoptions id="coverity.analyze.options">
+            <hlm:arg name="--dir" value="${coverity.analyze.dir}"/>
+            <hlm:arg name="--all" value=""/>
+            <hlm:arg name="--symbian" value=""/>
+            <hlm:arg name="--append" value=""/>
+            <hlm:arg name="--enable-callgraph-metrics" value=""/>
+        </hlm:coverityoptions>
+        
+        <hlm:coverity command="cov-analyze" dir="${build.drive}/">
+            <hlm:coverityoptions refid="coverity.analyze.options"/>
+        </hlm:coverity >
+
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/quality/demo/build.bat	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,27 @@
+@echo off
+
+rem
+rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+rem All rights reserved.
+rem This component and the accompanying materials are made available
+rem under the terms of the License "Eclipse Public License v1.0"
+rem which accompanies this distribution, and is available
+rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+rem
+rem Initial Contributors:
+rem Nokia Corporation - initial contribution.
+rem
+rem Contributors:
+rem
+rem Description: 
+rem
+
+setlocal
+if not defined JAVA_6_HOME (
+set TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
+) ELSE  set TESTED_JAVA=%JAVA_6_HOME%
+if exist %TESTED_JAVA% (set JAVA_HOME=%TESTED_JAVA%)
+set OLDANT_ARGS=-lib %CD%\..\lib  -lib  %CD%\..\..\bin\helium-quality.jar -lib %CD%\..\..\antlibs
+ant %*
+endlocal
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/quality/demo/build.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : build.xml 
+Part of     : Helium AntLib
+
+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="helium-antlib-quality-demo" xmlns:hlm="http://www.nokia.com/helium">
+    <description>Helium Antlib quality demo.</description>
+
+    <taskdef resource="com/nokia/helium/quality/ant/antlib.xml" uri="http://www.nokia.com/helium" />
+
+    <property name="codescanner.output.dir" location="./cs" />
+    <property name="codescanner.output.type" value="html" />
+    <property name="codescanner.config" location="./codescanner_config.xml" />
+    <path id="src.path">
+        <pathelement path="../tests/data/src" />
+        <pathelement path="../tests/data/src2" />
+    </path>
+
+    <target name="demo-codescanner">
+        <hlm:codescanner dest="${codescanner.output.dir}" format="${codescanner.output.type}" configuration="${codescanner.config}">
+            <path refid="src.path" />
+        </hlm:codescanner>
+    </target>
+
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/quality/demo/codescanner_config.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,172 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : codescanner_config.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:
+
+============================================================================
+-->
+<!-- This is a configuration file for Codescanner from Mobile Innovation Ltd. -->
+<codescannerConfig>
+    <sources>
+        <!-- source files matching any of the exclude patterns below will not be scanned -->
+
+        <!-- binary files -->
+        <exclude>.*\.jpg</exclude>
+        <exclude>.*\.wav</exclude>
+        <exclude>.*\.au</exclude>
+        <exclude>.*\.bmp</exclude>
+        <exclude>.*\.wbmp</exclude>
+        <exclude>.*\.gif</exclude>
+        <exclude>.*\.tif</exclude>
+        <exclude>.*\.exe</exclude>
+        <exclude>.*\.mp3</exclude>
+        <exclude>.*\.mpg</exclude>
+        <exclude>.*\.avi</exclude>
+        <exclude>.*\.raw</exclude>
+        <exclude>.*\.mbm</exclude>
+        <exclude>.*\.doc</exclude>
+        <exclude>.*\.xls</exclude>
+        <exclude>.*\.rtf</exclude>
+        <exclude>.*\.png</exclude>
+        <exclude>.*\.wmf</exclude>
+        <exclude>.*\\exclude.txt</exclude>
+
+        <!-- typical test directory names -->
+        <exclude>.*\\ts_.*</exclude>
+        <exclude>.*\\tsrc\\.*</exclude>
+        <exclude>.*\\test\\.*</exclude>
+        <exclude>.*\\.svn\\.*</exclude>
+    </sources>
+    <scripts>
+        <!-- Every element in this section corresponds to a Codescanner script -->
+        <!-- Every element has the following common attributes: -->
+        <!--    enable="true" or "false" -->
+        <!-- Some scripts have additional attributes or elements. -->
+
+        <accessArrayElementWithoutCheck enable="true"/>
+        <accessArrayElementWithoutCheck2 enable="true"/>
+        <activestart enable="true"/>
+        <activestop enable="true"/>
+        <arraypassing enable="true"/>
+        <arrayptrcleanup enable="true"/>
+        <assertdebuginvariant enable="true"/>
+        <baddefines enable="true"/>
+        <baseconstruct enable="true"/>
+        <callActiveObjectWithoutCheckingOrStopping enable="true"/>
+        <changenotification enable="true"/>
+        <cleanup enable="true"/>
+        <commentcode enable="true"/>
+        <connect enable="true"/>
+        <ConnectAndDontCloseMemberVariable enable="true"/>
+        <constnames enable="true"/>
+        <consttdescptr enable="true"/>
+        <controlornull enable="true"/>
+        <ctltargettype enable="true"/>
+        <debugrom enable="true"/>
+        <declarename enable="true"/>
+        <deleteMemberVariable enable="true"/>
+        <destructor enable="true"/>
+        <doubleSemiColon enable="true"/>
+        <driveletters enable="true"/>
+        <eikbuttons enable="true"/>
+        <eikonenvstatic enable="true"/>
+        <enummembers enable="true"/>
+        <enumnames enable="true"/>
+        <exportinline enable="true"/>
+        <exportpurevirtual enable="true"/>
+        <externaldriveletters enable="true"/>
+        <foff enable="true"/>
+        <forbiddenwords enable="true">
+            <!-- the following regular expression specifies the forbidden words detected by this script -->
+            <wordsRE>bad words</wordsRE>
+        </forbiddenwords>
+        <forgottoputptroncleanupstack enable="true"/>
+        <friend enable="true"/>
+        <goto enable="true"/>
+        <ifassignments enable="true"/>
+        <ifpreprocessor enable="true"/>
+        <intleaves enable="true"/>
+        <jmp enable="true"/>
+        <leave enable="true"/>
+        <LeaveNoError enable="true"/>
+        <leavingoperators enable="true"/>
+        <LFunctionCantLeave enable="true"/>
+        <!-- the length attribute specifies the largest number of characters permitted by this script -->
+        <longlines enable="true" length="160" />
+        <magicnumbers enable="true"/>
+        <mclassdestructor enable="true"/>
+        <memberlc enable="true"/>
+        <membervariablecallld enable="true"/>
+        <missingcclass enable="true"/>
+        <mmpsourcepath enable="true"/>
+        <multilangrsc enable="true"/>
+        <multipledeclarations enable="true"/>
+        <multipleinheritance enable="true"/>
+        <mydocs enable="true"/>
+        <namespace enable="true"/>
+        <newlreferences enable="true"/>
+        <noleavetrap enable="true"/>
+        <nonconsthbufc enable="true"/>
+        <nonconsttdesc enable="true"/>
+        <nonleavenew enable="true"/>
+        <nonunicodeskins enable="true"/>
+        <null enable="true"/>
+        <open enable="true"/>
+        <pointertoarrays enable="true"/>
+        <pragmadisable enable="true"/>
+        <pragmamessage enable="true"/>
+        <pragmaother enable="true"/>
+        <privateinheritance enable="true"/>
+        <pushaddrvar enable="true"/>
+        <pushmember enable="true"/>
+        <readresource enable="true"/>
+        <resourcesonheap enable="true"/>
+        <returndescriptoroutofscope enable="true"/>
+        <rfs enable="true"/>
+        <rssnames enable="true"/>
+        <stringliterals enable="true"/>
+        <stringsinresourcefiles enable="true"/>
+        <struct enable="true"/>
+        <tcclasses enable="true"/>
+        <tclassdestructor enable="true"/>
+        <todocomments enable="true"/>
+        <trapcleanup enable="true"/>
+        <trapeleave enable="true"/>
+        <traprunl enable="true"/>
+        <trspassing enable="true"/>
+        <uids enable="true"/>
+        <uncompressedaif enable="true"/>
+        <uncompressedbmp enable="true"/>
+        <unicodesource enable="true"/>
+        <userafter enable="true"/>
+        <userfree enable="true"/>
+        <userWaitForRequest enable="true"/>
+        <variablenames enable="true"/>
+        <voidparameter enable="true"/>
+        <worryingcomments enable="true">
+            <!-- the following regular expression specifies the worrying comments detected by this script -->
+            <worryRE>\!|\?|[Zz]{3}|kludge|workaround|\scrap|hack</worryRE>
+        </worryingcomments>
+    </scripts>
+    <severities>
+        <low enable="true"/>
+    </severities>
+    <categories>
+        <codereview enable="true"/>
+    </categories>
+</codescannerConfig>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/quality/ivy.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+============================================================================ 
+Name        : ivy.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:
+
+============================================================================  
+-->
+<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
+    <info
+        organisation="com.nokia.helium"
+        module="helium-quality"
+        status="integration">
+  </info>
+  <dependencies>
+    <dependency name="helium-core" rev="latest.integration" conf="default" />
+  </dependencies>
+</ivy-module>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/quality/src/com/nokia/helium/quality/ant/antlib.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : antlib.xml 
+Part of     : Helium AntLib
+
+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:
+
+============================================================================
+-->
+<antlib>
+    <!-- Task definition -->
+    <taskdef name="codescanner" classname="com.nokia.helium.quality.ant.taskdefs.CodeScanner" onerror="ignore"/>
+    <taskdef name="coverity" classname="com.nokia.helium.quality.ant.taskdefs.Coverity" onerror="ignore"/>
+    
+    <!-- Type definition -->
+    <typedef name="coverityoptions" classname="com.nokia.helium.core.ant.types.VariableSet"/>
+    <typedef name="arg" classname="com.nokia.helium.core.ant.types.Variable"/>
+</antlib>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/quality/src/com/nokia/helium/quality/ant/helium.antlib.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : helium.antlib.xml 
+Part of     : Helium Antlib 
+
+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="libs-quality" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
+    <description>
+        Ant task definition declarations.
+    </description>    
+    <taskdef resource="com/nokia/helium/quality/ant/antlib.xml" uri="http://www.nokia.com/helium"/>
+</project>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/quality/src/com/nokia/helium/quality/ant/taskdefs/CodeScanner.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,239 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+
+package com.nokia.helium.quality.ant.taskdefs;
+
+import java.io.*;
+import java.util.Vector;
+
+import org.apache.tools.ant.Task;
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.types.Path;
+import org.apache.tools.ant.taskdefs.ExecTask;
+
+/**
+ * This task executes codescanner - and writes the results to the output directory.
+ * Codescanner parses C++ code and flags any inconsistencies or errors in output files. 
+ * Configuration files are used to determine what passes and fails the checking e.g. maximum length of lines,
+ * whether 'C' type comments are allowed as well as C++ comments, does it adhere to the company coding 
+ * guidelines and much more. Every person writing any C++ code 
+ * should run codescanner on their code to ensure it follows the coding guidelines. The output logs 
+ * should have no errors and preferably no warnings before the code should be checked into SCM, e.g. synergy or SVN.
+ *
+ * Below is an example of how to use the target to run codescanner.
+ *
+ * <pre>
+ * &lt;property name="codescanner.output.dir" location="./cs" /&gt;
+ * &lt;property name="codescanner.output.type" value="html" /&gt;
+ * &lt;property name="codescanner.config" location="./codescanner_config.xml" /&gt;
+ *
+ * &lt;hlm:codescanner dest="${codescanner.output.dir}"
+ *      format="${codescanner.output.type}"
+ *      failonerror="true"
+ *      configuration="${codescanner.config}"&gt;
+ *      &lt;path refid="src.path"/&gt;
+ *  &lt;/hlm:codescanner&gt;
+ *  &lt;au:assertLogContains text="Successfully executed codescanner"/&gt;
+ *  &lt;au:assertLogContains text="Output format: xml,html"/&gt;
+ *  &lt;au:assertFileExists file="${codescanner.output.dir}/problemIndex.xml"/&gt;
+ * </pre>
+ * 
+ * @ant.task name="codescanner" category="Quality"
+ */
+public class CodeScanner extends Task {
+    private Vector<Path> paths = new Vector<Path>();
+    private File configuration;
+    private String dest;
+    private String format = "xml,html";
+    private boolean auto;
+    private File log;
+    private boolean failonerror;
+
+    /**
+     * This defines if the task should fails in case of error while 
+     * executing codescanner.
+     * 
+     * @param failonerror
+     * @ant.not-required Default is false for backward compatibility.
+     */
+    public void setFailonerror(boolean failonerror) {
+        this.failonerror = failonerror;
+    }
+
+    /**
+     * Add path datatype to the task.
+     * 
+     * @param path
+     */
+    public void add(Path path) {
+        paths.add(path);
+    }
+
+    /**
+     * Get dest attribute.
+     * 
+     */
+    public String getDest() {
+        return this.dest;
+    }
+
+    /**
+     * Set dest attribute.
+     * 
+     * @param dest
+     * @ant.required
+     */
+    public void setDest(String dest) {
+        this.dest = dest;
+    }
+
+    /**
+     * Get format attribute.
+     * 
+     */
+    public String getFormat() {
+        return this.format;
+    }
+
+    /**
+     * Set format attribute.
+     * 
+     * @param format
+     * @ant.not-required Default is xml,html
+     */
+    public void setFormat(String format) {
+        this.format = format;
+    }
+
+    /**
+     * Get configuration attribute.
+     * 
+     */
+    public File getConfiguration() {
+        return this.configuration;
+    }
+
+    /**
+     * Set configuration attribute.
+     * 
+     * @param configuration
+     * @ant.required
+     */
+    public void setConfiguration(File configuration) {
+        this.configuration = configuration;
+    }
+
+    /**
+     * Set auto attribute.
+     * 
+     * @param auto
+     * @ant.not-required Default is false.
+     */
+    public void setAuto(boolean auto) {
+        this.auto = auto;
+    }
+
+    /**
+     * Set log attribute.
+     * 
+     * @param log
+     * @ant.not-required
+     */
+    public void setLog(File log) {
+        this.log = log;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void execute() {
+        // creating the exec subtask
+        String osType = System.getProperty("os.name");
+        if (!osType.toLowerCase().startsWith("win")) {
+            this.log("CODESCANNER: run in windows only");
+            return;
+        }
+        ExecTask task = new ExecTask();
+        task.setProject(getProject());
+        task.setTaskName(this.getTaskName());
+        task.setFailonerror(failonerror);
+        task.setExecutable("codescanner");
+        task.setDir(new File("."));
+        if (dest == null) {
+            throw new BuildException("'dest' attribute must be defined");
+        }
+        if (configuration != null) {
+            if (!configuration.exists()) {
+                throw new BuildException("Could not find the file "
+                        + configuration);
+            } else {
+                task.createArg().setValue("-c");
+                task.createArg().setValue(configuration.getAbsolutePath());
+            }
+        } else {
+            throw new BuildException(
+                    "'configuration' attribute must be defined");
+        }
+        if (!format.contains("xml")) {
+           setFormat("xml," + format);
+        }
+        this.log("Output format: " + format);
+        // -t off
+        task.createArg().setValue("-t");
+        task.createArg().setValue(auto ? "on" : "off");
+
+        // -l log
+        if (log != null) {
+            this.log("Output log: " + log.getAbsolutePath());
+            task.createArg().setValue("-l");
+            task.createArg().setValue(log.getAbsolutePath());
+        }
+
+        // -o type
+        task.createArg().setValue("-o");
+        task.createArg().setValue(format);
+        if (paths.isEmpty()) {
+            throw new BuildException("No input directory defined");
+        }
+        // Getting the list of source dir to scan
+        Vector<String> srcs = new Vector<String>();
+        for (Path path : paths) {
+            if (path.isReference()) {
+                path = (Path) path.getRefid().getReferencedObject();
+            }
+            for (String apath : path.list()) {
+                srcs.add(apath);
+            }
+        }
+        for (int i = 0; i < srcs.size(); i++) {
+            if (i != srcs.size() - 1) {
+                task.createArg().setValue("-i");
+                task.createArg().setValue(srcs.elementAt(i));
+            } else {
+                task.createArg().setValue(srcs.elementAt(i));
+                task.createArg().setValue(dest.toString());
+            }
+        }
+        // output path
+        this.log("Output dir " + dest);
+
+        // Run codescanner
+        task.execute();
+        this.log("Successfully executed codescanner");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/quality/src/com/nokia/helium/quality/ant/taskdefs/Coverity.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,198 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+package com.nokia.helium.quality.ant.taskdefs;
+
+import java.io.File;
+import java.util.Vector;
+import java.util.Map.Entry;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Task;
+import org.apache.tools.ant.taskdefs.ExecTask;
+
+import com.nokia.helium.core.ant.types.Variable;
+import com.nokia.helium.core.ant.types.VariableSet;
+
+/**
+ * To run the coverity commands.
+ * 
+ *  
+ * <pre>
+ *      &lt;hlm:coverity command="cov-link" dir="${build.drive}/"&gt;
+                    &lt;hlm:arg name="--dir" value="${coverity.output.dir}/intermidiate"/&gt;
+                    &lt;hlm:arg name="--compile-arg" value="armv5"/&gt;
+                    &lt;hlm:arg name="--output" value="${coverity.output.dir}/coveritylink/armv5.link"/&gt;
+                    &lt;hlm:arg name="${coverity.output.dir}/coveritylink/all.link" value=""/&gt;
+                &lt;/hlm:coverity &gt;
+ *      
+ * </pre>
+ * 
+ * @ant.task name="coverity" category="Quality".
+ *
+ */
+  
+ 
+public class Coverity extends Task {
+    
+    private String command;
+    private boolean failOnError;
+    private boolean execute = true;
+    private String dir;
+    private Vector<VariableSet> coverityOptions = new Vector<VariableSet>();
+    private Vector<Variable> coverityArgs = new Vector<Variable>();
+    
+    
+    public void execute() {
+        
+        validateParameters();
+        
+        runCommand(command);
+        
+    }
+    
+    
+
+    /**
+     * To run the command passed into coverity tsask.
+     * @param command
+     */
+    private void runCommand(String command) {
+        
+        String commandString = command;
+        if (!command.startsWith("cov-")) {
+            throw new BuildException("Coverity task can run only coverity prevent tool commands.");
+        }
+        
+        ExecTask task = new ExecTask();
+        task.setProject(getProject());
+        task.setTaskName(this.getTaskName());
+        task.setFailonerror(failOnError);
+        task.setExecutable(command);
+        task.setDir(new File(this.dir));
+        
+        for (VariableSet coverityArg : coverityOptions) {
+            for (Entry<String, Variable> entry : coverityArg.getVariablesMap().entrySet() ) {
+                task.createArg().setValue(entry.getKey());
+                task.createArg().setValue(entry.getValue().getValue());
+                commandString = commandString + " " + entry.getKey() + " " + entry.getValue().getValue();
+            }
+        }
+        
+        for (Variable coverityArg : coverityArgs) {
+            task.createArg().setValue(coverityArg.getName());
+            task.createArg().setValue(coverityArg.getValue());
+            commandString = commandString + " " + coverityArg.getName() + " " + coverityArg.getValue();
+        }
+        
+        try {
+            log("run command: " + commandString);
+            if (execute) {
+                task.execute();
+            }
+        } catch (BuildException be) {
+            if (failOnError) {
+                throw new BuildException("exception during coverity command '" + command + "' execution:", be);
+            }
+        }
+        
+    }
+
+
+
+    /**
+     * To validate the parameters passed into coverity task.
+     */
+    private void validateParameters() {
+        
+        if (command == null) {
+            throw new BuildException("'command' parameter should not be null for coverity task.");
+        }
+        
+    }
+
+
+
+    /**
+     * @param command the command to set
+     * @ant.required
+     */
+    public void setCommand(String command) {
+        this.command = command;
+    }
+
+    /**
+     * @return the command
+     */
+    public String getCommand() {
+        return command;
+    }
+    
+    /**
+     * @param failOnError the failOnError to set
+     *  @ant.not-required
+     */
+    public void setFailOnError(boolean failOnError) {
+        this.failOnError = failOnError;
+    }
+
+    /**
+     * @return the dir
+     */
+    public String getDir() {
+        return dir;
+    }
+
+    /**
+     * @param dir the dir to set
+     *  @ant.not-required
+     */
+    public void setDir(String dir) {
+        this.dir = dir;
+    }
+
+    /**
+     * @param execute the execute to set
+     */
+    public void setExecute(boolean execute) {
+        this.execute = execute;
+    }
+
+
+
+    /**
+     * To read the coverity arguments for coverity commands.
+     * @param variableArg
+     */
+    public void addCoverityOptions(VariableSet coverityArg) {
+        if (!coverityOptions.contains(coverityArg)) {
+            coverityOptions.add(coverityArg);
+        }
+    }
+    
+    /**
+     * To read the individual arguments.
+     * @param coverityArg
+     */
+    public void addArg(Variable coverityArg) {
+        if (!coverityArgs.contains(coverityArg)) {
+            coverityArgs.add(coverityArg);
+        }
+    }
+    
+    
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/quality/tests/bld.sh	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#
+# 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: 
+#
+
+if [ -f ~/.bashrc ] ; then
+    . ~/.bashrc
+fi
+ant $*
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/quality/tests/build.bat	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,31 @@
+@echo off
+
+rem
+rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+rem All rights reserved.
+rem This component and the accompanying materials are made available
+rem under the terms of the License "Eclipse Public License v1.0"
+rem which accompanies this distribution, and is available
+rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+rem
+rem Initial Contributors:
+rem Nokia Corporation - initial contribution.
+rem
+rem Contributors:
+rem
+rem Description: 
+rem
+
+setlocal
+if not defined JAVA_6_HOME (
+set TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
+) ELSE  set TESTED_JAVA=%JAVA_6_HOME%
+if exist %TESTED_JAVA% (set JAVA_HOME=%TESTED_JAVA%)
+call ant %*
+if "%ERRORLEVEL%" neq "0" (goto error)
+endlocal
+goto :eof
+
+:error
+endlocal
+if "%OS%"=="Windows_NT" color 00
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/quality/tests/build.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : build.xml 
+Part of     : Helium AntLib
+
+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="helium-quality" xmlns:au="antlib:org.apache.ant.antunit">
+    <description>Helium antlib quality tests.</description>
+    
+    <import file="${builder.dir}/java/test-macros.ant.xml"/>
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/quality/tests/codescanner_config.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,172 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : codescanner_config.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:
+
+============================================================================
+-->
+<!-- This is a configuration file for Codescanner from Mobile Innovation Ltd. -->
+<codescannerConfig>
+    <sources>
+        <!-- source files matching any of the exclude patterns below will not be scanned -->
+
+        <!-- binary files -->
+        <exclude>.*\.jpg</exclude>
+        <exclude>.*\.wav</exclude>
+        <exclude>.*\.au</exclude>
+        <exclude>.*\.bmp</exclude>
+        <exclude>.*\.wbmp</exclude>
+        <exclude>.*\.gif</exclude>
+        <exclude>.*\.tif</exclude>
+        <exclude>.*\.exe</exclude>
+        <exclude>.*\.mp3</exclude>
+        <exclude>.*\.mpg</exclude>
+        <exclude>.*\.avi</exclude>
+        <exclude>.*\.raw</exclude>
+        <exclude>.*\.mbm</exclude>
+        <exclude>.*\.doc</exclude>
+        <exclude>.*\.xls</exclude>
+        <exclude>.*\.rtf</exclude>
+        <exclude>.*\.png</exclude>
+        <exclude>.*\.wmf</exclude>
+        <exclude>.*\\exclude.txt</exclude>
+
+        <!-- typical test directory names -->
+        <exclude>.*\\ts_.*</exclude>
+        <exclude>.*\\tsrc\\.*</exclude>
+        <exclude>.*\\test\\.*</exclude>
+        <exclude>.*\\\.svn\\.*</exclude>
+    </sources>
+    <scripts>
+        <!-- Every element in this section corresponds to a Codescanner script -->
+        <!-- Every element has the following common attributes: -->
+        <!--    enable="true" or "false" -->
+        <!-- Some scripts have additional attributes or elements. -->
+
+        <accessArrayElementWithoutCheck enable="true"/>
+        <accessArrayElementWithoutCheck2 enable="true"/>
+        <activestart enable="true"/>
+        <activestop enable="true"/>
+        <arraypassing enable="true"/>
+        <arrayptrcleanup enable="true"/>
+        <assertdebuginvariant enable="true"/>
+        <baddefines enable="true"/>
+        <baseconstruct enable="true"/>
+        <callActiveObjectWithoutCheckingOrStopping enable="true"/>
+        <changenotification enable="true"/>
+        <cleanup enable="true"/>
+        <commentcode enable="true"/>
+        <connect enable="true"/>
+        <ConnectAndDontCloseMemberVariable enable="true"/>
+        <constnames enable="true"/>
+        <consttdescptr enable="true"/>
+        <controlornull enable="true"/>
+        <ctltargettype enable="true"/>
+        <debugrom enable="true"/>
+        <declarename enable="true"/>
+        <deleteMemberVariable enable="true"/>
+        <destructor enable="true"/>
+        <doubleSemiColon enable="true"/>
+        <driveletters enable="true"/>
+        <eikbuttons enable="true"/>
+        <eikonenvstatic enable="true"/>
+        <enummembers enable="true"/>
+        <enumnames enable="true"/>
+        <exportinline enable="true"/>
+        <exportpurevirtual enable="true"/>
+        <externaldriveletters enable="true"/>
+        <foff enable="true"/>
+        <forbiddenwords enable="true">
+            <!-- the following regular expression specifies the forbidden words detected by this script -->
+            <wordsRE>bad words</wordsRE>
+        </forbiddenwords>
+        <forgottoputptroncleanupstack enable="true"/>
+        <friend enable="true"/>
+        <goto enable="true"/>
+        <ifassignments enable="true"/>
+        <ifpreprocessor enable="true"/>
+        <intleaves enable="true"/>
+        <jmp enable="true"/>
+        <leave enable="true"/>
+        <LeaveNoError enable="true"/>
+        <leavingoperators enable="true"/>
+        <LFunctionCantLeave enable="true"/>
+        <!-- the length attribute specifies the largest number of characters permitted by this script -->
+        <longlines enable="true" length="160" />
+        <magicnumbers enable="true"/>
+        <mclassdestructor enable="true"/>
+        <memberlc enable="true"/>
+        <membervariablecallld enable="true"/>
+        <missingcclass enable="true"/>
+        <mmpsourcepath enable="true"/>
+        <multilangrsc enable="true"/>
+        <multipledeclarations enable="true"/>
+        <multipleinheritance enable="true"/>
+        <mydocs enable="true"/>
+        <namespace enable="true"/>
+        <newlreferences enable="true"/>
+        <noleavetrap enable="true"/>
+        <nonconsthbufc enable="true"/>
+        <nonconsttdesc enable="true"/>
+        <nonleavenew enable="true"/>
+        <nonunicodeskins enable="true"/>
+        <null enable="true"/>
+        <open enable="true"/>
+        <pointertoarrays enable="true"/>
+        <pragmadisable enable="true"/>
+        <pragmamessage enable="true"/>
+        <pragmaother enable="true"/>
+        <privateinheritance enable="true"/>
+        <pushaddrvar enable="true"/>
+        <pushmember enable="true"/>
+        <readresource enable="true"/>
+        <resourcesonheap enable="true"/>
+        <returndescriptoroutofscope enable="true"/>
+        <rfs enable="true"/>
+        <rssnames enable="true"/>
+        <stringliterals enable="true"/>
+        <stringsinresourcefiles enable="true"/>
+        <struct enable="true"/>
+        <tcclasses enable="true"/>
+        <tclassdestructor enable="true"/>
+        <todocomments enable="true"/>
+        <trapcleanup enable="true"/>
+        <trapeleave enable="true"/>
+        <traprunl enable="true"/>
+        <trspassing enable="true"/>
+        <uids enable="true"/>
+        <uncompressedaif enable="true"/>
+        <uncompressedbmp enable="true"/>
+        <unicodesource enable="true"/>
+        <userafter enable="true"/>
+        <userfree enable="true"/>
+        <userWaitForRequest enable="true"/>
+        <variablenames enable="true"/>
+        <voidparameter enable="true"/>
+        <worryingcomments enable="true">
+            <!-- the following regular expression specifies the worrying comments detected by this script -->
+            <worryRE>\!|\?|[Zz]{3}|kludge|workaround|\scrap|hack</worryRE>
+        </worryingcomments>
+    </scripts>
+    <severities>
+        <low enable="true"/>
+    </severities>
+    <categories>
+        <codereview enable="true"/>
+    </categories>
+</codescannerConfig>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/quality/tests/data/src/helloworld.cpp	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,4 @@
+int main (int argc, char **argv) {
+	return 0;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/quality/tests/data/src2/helloworld.cpp	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,4 @@
+int main (int argc, char **argv) {
+	return 0;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/quality/tests/test_codescanner.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : test_serializepath.ant.xml 
+Part of     : Helium AntLib
+
+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="test-quality" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
+    <description>Helium antlib core serializepath tests.</description>
+
+    <taskdef resource="com/nokia/helium/quality/ant/antlib.xml" uri="http://www.nokia.com/helium" />
+    <property name="codescanner.output.dir" location="./cs"/>
+    <property name="codescanner.output.type" value="html"  />
+    <property name="codescanner.config" location="${basedir}/codescanner_config.xml"  />
+    <path id="src.path">
+        <pathelement path="./data" />
+    </path>
+
+    <condition property="do.codescanner.test">
+        <os family="windows" />
+    </condition>
+
+    <!-- is called prior to the test -->
+    <target name="setUp">
+        <delete dir="${codescanner.output.dir}" failonerror="false" />
+        <mkdir dir="${codescanner.output.dir}" />
+    </target>
+
+    <!-- is called after the test, even if that caused an error -->
+    <target name="tearDown">
+        <delete dir="${codescanner.output.dir}" failonerror="false" />
+    </target>
+
+    <target name="test-codescanner-linux" unless="do.codescanner.test">
+        <echo message="Codescanner supported only for windows" />
+    </target>
+
+    <!--
+     **************************************************************
+     ** test codescanner only for windows
+     **************************************************************
+    -->
+
+    <target name="test-codescanner" if="do.codescanner.test">
+        <hlm:codescanner dest="${codescanner.output.dir}"
+            format="${codescanner.output.type}"
+            configuration="${codescanner.config}">
+            <path refid="src.path"/>
+        </hlm:codescanner>
+        <au:assertLogContains text="Successfully executed codescanner"/>
+        <au:assertLogContains text="Output format: xml,html"/>
+        <au:assertLogContains text="data\src\exclude.txt"/>
+        <au:assertLogContains text="data\src2\exclude.txt"/>
+        <au:assertFileExists file="${codescanner.output.dir}/problemIndex.xml"/>
+    </target>
+
+    <!--
+     **************************************************************
+     ** test noargs
+     **************************************************************
+    -->
+    <target name="test-norargs" if="do.codescanner.test">
+        <au:expectfailure expectedMessage="'dest' attribute must be defined">
+            <hlm:codescanner/>
+        </au:expectfailure>
+    </target>
+
+    <!--
+     **************************************************************
+     ** test noconf
+     **************************************************************
+    -->
+    <target name="test-noconf" if="do.codescanner.test">
+        <au:expectfailure expectedMessage="'configuration' attribute must be defined">
+            <hlm:codescanner dest="${codescanner.output.dir}"/>
+        </au:expectfailure>
+    </target>
+
+    
+    <!--
+     **************************************************************
+     ** test noconf
+     **************************************************************
+    -->
+    <target name="test-codescanner-two-inputs" if="do.codescanner.test">
+        <path id="src.path.two.path">
+            <pathelement path="./data/src" />
+            <pathelement path="./data/src2" />
+        </path>
+        <hlm:codescanner dest="${codescanner.output.dir}"
+            format="${codescanner.output.type}"
+            configuration="${codescanner.config}">
+            <path refid="src.path.two.path"/>
+        </hlm:codescanner>
+        <au:assertLogContains text="Successfully executed codescanner"/>
+        <au:assertLogContains text="Output format: xml,html"/>
+        <au:assertLogContains text="data\src\exclude.txt"/>
+        <au:assertLogContains text="data\src2\exclude.txt"/>
+        <au:assertFileExists file="${codescanner.output.dir}/problemIndex.xml"/>
+    </target>
+</project>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/quality/tests/test_coverity.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,115 @@
+<?xml version="1.0"?>
+<!-- 
+============================================================================ 
+Name        : test_coverity.ant.xml 
+Part of     : Helium AntLib
+
+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="test-quality" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
+    <description>Helium Antlib coverity unittests.</description>
+
+    <taskdef resource="com/nokia/helium/quality/ant/antlib.xml" uri="http://www.nokia.com/helium" />
+    
+    <dirname property="test.coverity.dir" file="${ant.file.test-quality}/test"/>
+    <property name="working.dir" value="${test.coverity.dir}" />
+    <property name="build.drive" value="${test.coverity.dir}" />
+    
+    <dirname property="project.dir" file="${ant.file.test-quality}" />
+    
+    <hlm:coverityoptions id="coverity.config.options">
+        <arg name="--template" value=""/>
+        <arg name="--comptype" value="armcc"/>
+        <arg name="--compiler" value="armcc.exe"/>
+        <arg name="--config" value="${test.coverity.dir}/config/coverity_config.xml"/>
+    </hlm:coverityoptions>
+    
+    <hlm:coverityoptions id="coverity.analyze.options">
+        <hlm:arg name="--all" value=""/>
+        <hlm:arg name="--symbian" value=""/>
+        <hlm:arg name="--append" value=""/>
+        <hlm:arg name="--enable-callgraph-metrics" value=""/>
+        <hlm:arg name="--dir" value="${test.coverity.dir}/analyze"/>
+    </hlm:coverityoptions>
+    
+    <hlm:coverityoptions id="coverity.emit.options">
+        <arg name="--replay" value=""/>
+        <arg name="--replay-processes" value="4"/>
+        <arg name="--config" value="${test.coverity.dir}/config/coverity_config.xml"/>
+        <arg name="--dir" value="${test.coverity.dir}/analyze"/>
+    </hlm:coverityoptions>
+
+    <target name="test-coverity-command">
+        <au:expectfailure>
+            <hlm:coverity command="-configure" dir="${build.drive}/">
+                <hlm:coverityoptions refid="coverity.config.options"/>
+            </hlm:coverity >
+        </au:expectfailure>
+    </target>
+    
+    <target name="test-coverity-config">
+        <hlm:coverity command="cov-configure" dir="${build.drive}/" execute="false">
+            <hlm:coverityoptions refid="coverity.config.options"/>
+        </hlm:coverity >
+        <au:assertLogContains text="cov-configure"/>
+        <au:assertLogContains text="--comptype armcc"/>
+        <au:assertLogContains text="--template"/>
+    </target>
+    
+    <target name="test-coverity-link">
+        <hlm:coverity command="cov-link" dir="${build.drive}/" execute="false">
+            <hlm:arg name="--collect" value=""/>
+            <hlm:arg name="-of" value="${test.coverity.dir}/all.link"/>
+            <hlm:arg name="--dir" value="${test.coverity.dir}"/>
+        </hlm:coverity >
+        <au:assertLogContains text="cov-link"/>
+        <au:assertLogContains text="--collect"/>
+        <au:assertLogContains text="-of"/>
+    </target>
+    
+    <target name="test-coverity-analyze">
+        <hlm:coverity command="cov-analyze" dir="${build.drive}/" execute="false">
+            <hlm:coverityoptions refid="coverity.analyze.options"/>
+        </hlm:coverity >
+        <au:assertLogContains text="cov-analyze"/>
+        <au:assertLogContains text="--symbian"/>
+        <au:assertLogContains text="--append"/>
+        <au:assertLogContains text="--enable-callgraph-metrics"/>
+    </target>
+    
+    <target name="test-coverity-emit">
+        <hlm:coverity command="cov-build" dir="${build.drive}/" execute="false">
+            <hlm:coverityoptions refid="coverity.emit.options"/>
+        </hlm:coverity >
+        <au:assertLogContains text="cov-build"/>
+        <au:assertLogContains text="--replay-processes 4"/>
+        <au:assertLogContains text="--replay"/>
+    </target>
+    
+    
+    
+    
+    
+    
+    
+    
+    
+
+    
+
+</project>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sbs/bld.bat	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,39 @@
+@echo off
+
+rem
+rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+rem All rights reserved.
+rem This component and the accompanying materials are made available
+rem under the terms of the License "Eclipse Public License v1.0"
+rem which accompanies this distribution, and is available
+rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+rem
+rem Initial Contributors:
+rem Nokia Corporation - initial contribution.
+rem
+rem Contributors:
+rem
+rem Description: 
+rem
+
+setlocal
+if not defined JAVA_6_HOME (
+set TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
+) ELSE  set TESTED_JAVA=%JAVA_6_HOME%
+if exist %TESTED_JAVA% (set JAVA_HOME=%TESTED_JAVA%)
+
+REM Configure Ant 
+if not defined TESTED_ANT_HOME (
+set TESTED_ANT_HOME=C:\Apps\ant_1.7
+) 
+if exist %TESTED_ANT_HOME% (set ANT_HOME=%TESTED_ANT_HOME%)
+
+call java -cp ".\..\..\bin\helium-checktools.jar" com.nokia.helium.checktools.HeliumToolsCheckerMain -config ".\..\..\builder\helium.basic.tools.config"
+if "%ERRORLEVEL%" neq "0" (goto errorstop)
+
+ant -lib ../../builder/antlibs %*
+endlocal
+
+:errorstop
+@echo *** Build aborted with error
+exit /b 1
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sbs/build.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : build.xml 
+Part of     : Helium AntLib
+
+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="helium-sbs">
+    <description>Helium Antlib sbs build file.</description>
+    
+    <property name="builder.dir" location="../../builder"/>
+    <property name="sf.source.root.dir" location="../../" />
+    <import file="${builder.dir}/java/macros.ant.xml"/>
+    
+    <property name="name" value="sbs"/>
+
+</project>
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sbs/ivy.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+============================================================================ 
+Name        : ivy.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:
+
+============================================================================  
+-->
+<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
+    <info
+        organisation="com.nokia.helium"
+        module="helium-sbs"
+        status="integration">
+  </info>
+  <dependencies>
+    <dependency name="helium-core" rev="latest.integration" conf="default" />
+    <dependency org="dom4j" name="dom4j" rev="latest.integration" conf="default" />
+  </dependencies>
+</ivy-module>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sbs/sbs.rst	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,249 @@
+.. index::
+  module: Configuring Raptor (SBS)
+
+========================
+Configuring Raptor (SBS)
+========================
+
+.. contents::
+
+This document describes requirements and how to run sbs builds using helium. Now it is 
+possible to pass directly pass all the raptor input directly and there are no mapping of
+raptor parameter specific to helium.
+
+
+SBS Requirements
+-----------------
+
+Before starting the build, SBS needs to be updated for s60 related changes, please follow the instructions from the link below,
+
+`How to Build Raptor <http://s60wiki.nokia.com/S60Wiki/How_To_Build_With_Raptor>`_
+
+1. SBS_HOME environment variable needs to be set
+2. PATH environment variable needs to be updated with SBS related exe::
+
+   path(SBS_HOME\\BIN;SBS_HOME\\win32\\mingw\\bin;SBS_HOME\\win32\\msys\\bin)
+
+3. RVCT requirement for raptor is 22_686 or higher, in IDO config / product config batch file the env variable needs to be set to `HLM_RVCT_VERSION=22_686`
+
+For Example: ::
+
+ set HELIUM_HOME=E:\Build_E\ec_test\helium-trunk\helium
+ set PATH=e:\svn\bin;E:\sbs\bin;c:\apps\actpython;%PATH%
+ set SBS_HOME=E:\sbs
+ set MWSym2Libraries=%MWSym2Libraries%;C:\APPS\carbide\x86Build\Symbian_Support\Runtime\Runtime_x86\Runtime_Win32\Libs
+ set TEAM=site_name
+   
+(Note: For IDOs, these environment variables are set automatically, for S60 option is proposed).
+
+Required SBS input for Helium
+------------------------------
+
+SBS Input consists of SBSInput and SBSBuild types:
+
+1. SBSInput - SBS Input stores the list of raptor arguments both the sbs options and
+sbs make options. Nested sbs input option is also possible, for details please see the 
+antdoclet information for sbsInput.
+
+2. SBSBuild - SBS Build is the collection of SBSInput. Each SBSInput refering within
+SBSBuild corresponds to a single invocation of raptor with the corresponding sbs arguments
+refered within the sbsInput. Each sbsInput refered within SBSBuild roughly corresponds to
+the abld commands associated with corresponding abld configurations. <configuration> </configuration>
+is corresponds ot SBSBuild. This is there only for backward compatibility and will be removed
+once the mighration is completed for schema 3.0, in which case, abld mapping of configuration
+is not required and sbsInput could be directly used. Example is as below,
+
+.. code-block:: xml
+
+    <hlm:sbsbuild id="sbs.dfs_build_export">
+        <sbsInput refid="dfs_build_export_input" />
+    </hlm:sbsbuild> 
+
+
+1. To run using SBS mode (schema 1.4.0)
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+List of SBSInput one to one mapping with corresponding abld commands mapped for a configuration.
+    
+example is below,
+
+.. code-block:: xml
+
+    <!-- tools common sbs options -->
+    <hlm:sbsoptions id="commonSBS">
+        <arg line="-k" />
+        <arg name="--filters" value="FilterMetadataLog"/>
+    </hlm:sbsoptions>
+
+    <hlm:sbsoptions id="exportSBS">
+        <argset refid="commonSBS" />
+        <arg line="--export-only" />
+    </hlm:sbsoptions>
+
+    <!-- sbs input for export -->
+    <hlm:sbsinput id="export-sbs">
+        <sbsoptions refid="exportSBS" />
+    </hlm:sbsinput>
+    
+    <hlm:sbsbuild id="sbs.dfs_build_export">
+        <sbsInput refid="dfs_build_export_input" />
+    </hlm:sbsbuild> 
+
+Assuming there is a dfs_build_export schema configuration 1.4.0 system definition file.
+Then there should be a corresponding <hlm:sbsbuild> type defined prefixing with sbs
+as sbs.dfs_build_export as above which contains a reference to sbsinput. The sbsInput
+contains actual raptor commands equivalent to abld commands to be executed for that
+configuration, in this case it is referring exportSBS, which in turn referring to commonsbs
+so finally the command generated would be 
+
+.. code-block:: xml
+
+    sbs -k --filters=FilterMetadataLog --export-only
+
+This command is executed for all the componentes specified in the dfs_build_export
+configuration.
+
+No change from the configuration is required, except the new raptor input needs to be imported.
+
+2. To run using SBS mode (schema 3.0.0) - partial support
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+For schema 3.0, required inputs are,
+ a. sbs arguments
+ b. package definition files
+ c. filters to filter the component
+ d. patternset - specifying specific set of layers to be executed.
+
+Note: Filters are not supported yet.
+ 
+As raptor doesn't support schema 3.0 directly, the schema 3.0 is downgraded to
+2.0 schema, then it is joined / merged with symbian / nokia system definition.
+Finally calling raptor commands with the raptor input.
+
+The minimum required input for schema 3.0 is, sbsinput.
+
+.. code-block:: xml
+
+    <!-- sbs input for export -->
+    <hlm:sbsinput id="export-sbs">
+        <sbsoptions refid="exportSBS" />
+    </hlm:sbsinput>
+
+When building for raptor just the export-sbs needs to be passed as the argument to 
+compile-main target as below,
+
+.. code-block:: xml
+
+    <antcall target="compile-main" inheritRefs="true">
+        <param name="sbs.inputs.list" value="export-sbs,armv5-build"/>
+    </antcall>
+
+Which will execute each sbs input from the list as a separate sbs call and execute it. Schema 3.0
+is very basic and is only intended for internal testing / validation.
+
+Customizing raptor input
+------------------------
+
+Different scenario the user might need to provide the raptor inputs, (required to map raptor 
+commands for abld configuration which is not there in the default raptor input xml file, 
+want to override the default raptor input to pass additional parameters), below section covers
+how these can be customized.
+
+Mapping raptor commands for new configuration from system definition file (1.4.0)
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+First step is to identify the abld commands executed by the new configuration. Correspondingly the
+raptor commands need to be identified for that. Then need to check from the common raptor input 
+is there any input which can be reused. If any raptor input could be re-usable, the just refering
+that input and adding additional arguments would provide the exact raptor command arguments to be
+executed.
+
+
+For example, if the new configuration for which the raptor command input is to be created is,
+os, which is not there in the default raptor input, then abld commands executed are 
+(to be simpoer - bldmake, export, tools_rel, winscw, armv5). The corresponding raptor input would
+be
+
+
+.. code-block:: xml
+
+    <hlm:sbsinput id="build_input_os_export">
+        <sbsInput refid="export-${build.system}" />
+        <sbsOptions>
+            <arg name="--logfile" value="${compile.log.dir}/${build.id}_export_os_build.log" />
+            <arg name="--makefile" value="${temp.build.dir}/${build.id}_export_os_build" />
+        </sbsOptions>
+    </hlm:sbsinput>
+
+    <hlm:sbsinput id="build_input_os_tools">
+        <sbsInput refid="tools-${build.system}" />
+        <sbsOptions>
+            <arg name="--logfile" value="${compile.log.dir}/${build.id}_tools_rel_os_build.log" />
+            <arg name="--makefile" value="${temp.build.dir}/${build.id}_tools_rel_os_build" />
+        </sbsOptions>
+    </hlm:sbsinput>
+
+    <hlm:sbsinput id="build_input_os_winscw">
+        <sbsInput refid="winscw-${build.system}" />
+        <sbsOptions>
+            <arg name="--logfile" value="${compile.log.dir}/${build.id}_winscw_os_build.log" />
+            <arg name="--makefile" value="${temp.build.dir}/${build.id}_winscw_os_build" />
+        </sbsOptions>
+    </hlm:sbsinput>
+
+
+    <hlm:sbsinput id="build_input_os_armv5">
+        <sbsInput refid="armv5-${build.system}" />
+        <sbsOptions>
+            <arg name="--logfile" value="${compile.log.dir}/${build.id}_armv5_os_build.log" />
+            <arg name="--makefile" value="${temp.build.dir}/${build.id}_armv5_os_build" />
+        </sbsOptions>
+    </hlm:sbsinput>
+
+The default raptor input for each build target (tools, winscw, armv5) are reused here and just the
+log file names are changed.
+
+Next the sequence of command execution needs to be defined for the corresponding os confoguration as below.
+
+.. code-block:: xml
+
+    <hlm:sbsbuild id="sbs.os">
+        <sbsInput refid="build_input_os_export" />
+        <sbsInput refid="build_input_os_tools" />
+        <sbsInput refid="build_input_os_winscw" />
+        <sbsInput refid="build_input_os_armv5" />
+    </hlm:sbsbuild>
+
+For configuration name os in the system definition file, it will take the list of raptor input
+as defined with sbs.os, then it will execute each sbsinput as separate sbs calls with the arguments
+extracted from the corresponding reference id.
+
+Overriding default raptor arguments
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+In case the default argument is not enough for the user requirements, this could be overriden by
+redefining the reference of a particular sbsoptions will provide the user to change the arguments.
+
+For example, if the user just wants to pass debug flag for armv5 raptor inputs, the raptor input 
+
+.. code-block:: xml
+
+    <!-- Mainbuild common sbs options -->
+    <hlm:sbsoptions id="armv5CommonSBS">
+        <argset refid="commonSBS" />
+        <arg line="-c armv5" />
+    </hlm:sbsoptions>
+
+
+could be redefined as below in the user configuration,
+
+.. code-block:: xml
+
+    <!-- Mainbuild common sbs options -->
+    <hlm:sbsoptions id="armv5CommonSBS">
+        <argset refid="commonSBS" />
+        <arg line="-c armv5" />
+        <arg line="-d" />
+    </hlm:sbsoptions>
+
+This would add the debug flag in all the raptor configuration which is using armv5CommonSBS.
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sbs/sbscoverity.rst	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,70 @@
+.. index::
+  module: Configuring Coverity Prevent Tool with raptor build.
+
+========================
+Configuring Coverity Prevent Tool with raptor build (SBS)
+========================
+
+.. contents::
+
+This document describes requirements and how to run coverity prevent tool with sbs builds using helium. 
+
+Requirements
+-----------------
+
+Please go through "Configuring Raptor (SBS)" before proceeding into this document.
+
+
+Implementation
+-----------------
+- Coverity prevent tool commands are integrated with SBS task. 
+- Before starting the build we need to setup the property enabled.coverity=true to enable the coverity prevent tool with build.
+- Coverity task extends the "sbstask", so what ever the arguments we pass for sbstask will remain same for coverity tool also.
+- For example 
+
+.. code-block:: xml
+        
+        <hlm:coveritybuild  sbsinput="@{sbs.input}" 
+                            sysdeffile="${build.drive}/output/build/canonical_system_definition_${sysdef.configuration}.xml"
+                            layerpatternsetref="${sbs.patternset}" 
+                            workingdir="${build.drive}/" 
+                            execute="true"
+                            failonerror="false"
+                            outputlog="${sbs.log.file}" 
+                            cleanlog = "${sbs.clean.log}"
+                            erroroutput="${sbs.log.file}.sbs_error.log"
+                            statslog="${sbs.log.file}.info.xml">
+                <hlm:coverityoptions refid="coverity.build.options"/>
+        </hlm:coveritybuild>
+     
+- In above example coverity prevent tool is integrated with sbs using task "coveritybuild".
+- This task is slightly difference from sbstask as it accepts the coverity tool parameters required while running coverity tool.
+- In the above example we have mentioned "coverity.build.options" which are required for cov-build command.
+- coverityoptions datatype will follow below syntax.
+
+.. code-block:: xml
+        
+        <hlm:coverityoptions id="coverity.build.options">
+            <arg name="--config" value="${coverity.config.dir}/coverity_config.xml"/>
+            <arg name="--dir" value="${coverity.inter.dir}"/>
+            <arg name="--auto-diff" value=""/>
+            <arg name="--preprocess-first" value=""/>
+            <arg name="--record-only" value=""/>
+        </hlm:coverityoptions>
+
+- Internally "coveritybuild" task will run the "cov-build" with parameters passed with "<hlm:coverityoptions>" datatype and sbs commands.
+- Above arguments are passed by default in helium. If it is required to remove/change the default parameters (by helium)into cov-build, we need to override the datatype "coverityoptions".
+
+- Command resulted for above example is shown below with "@{sbs.input} = dfs_build_input_armv5".
+
+    | cov-build.exe --auto-diff  --record-only  --config Y:\output\coverity/config/coverity_config.xml 
+    | --preprocess-first  --dir Y:\output\coverity/intermidiate sbs -s Y:\output\build\canonical_system_definition_dfs_build.xml 
+    | -c armv5 --filters=FilterMetadataLog -k --logfile Y:\output\logs\compile/ido_helloworld_tb92_blr_ci_9.2.30_armv5_dfs_build.log 
+    | --makefile=Y:\output\logs\compile/ido_helloworld_tb92_blr_ci_9.2.30_armv5_dfs_build
+    
+Note: 
+--------------------
+- Helium also supports other coverity tool commands. Please refer to section to "Coverity Prevent Tool" section.
+- Coverity tool prevent tool can't run with emake. emake options are disabled with <hlm:coveritybuild> task if "build.system=sbs-ec".
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sbs/sbsctc.rst	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,70 @@
+.. index::
+  module: Configuring CTC for SBS
+
+=======================
+Configuring CTC for SBS
+=======================
+
+The following commands will generate mon.sym files in the root of your build area which are sent to the ATS server to generate coverage information.
+
+Clean components:
+
+hlm compile-main -Dbuild.drive=z: -Dsysdef.configurations.list=build_ctc_clean -Dbuild.system=sbs
+
+Build for CTC:
+
+hlm compile-main -Dbuild.drive=z: -Dsysdef.configurations.list=build_ctc -Dsbs.build.ctc=true -Dbuild.system=sbs
+
+Ant configuration:
+
+.. code-block:: xml
+        
+    <hlm:sbsoptions id="commonSBS">
+        <arg line="-k" />
+        <arg name="--filters" value="FilterMetadataLog"/>
+    </hlm:sbsoptions>
+    
+    <hlm:sbsoptions id="armv5_CTC_SBS">
+            <argset refid="commonSBS" />
+            <arg line="-c armv5_udeb" />
+    </hlm:sbsoptions>
+    
+    <hlm:sbsinput id="armv5-ctc-sbs">
+        <sbsoptions refid="armv5_CTC_SBS" />
+    </hlm:sbsinput>
+
+    <hlm:sbsinput id="build_ctc_input_armv5">
+        <sbsInput refid="armv5-ctc-${build.system}" />
+        <sbsOptions>
+            <arg name="--logfile" value="${compile.log.dir}/${build.id}_armv5_build_ctc.log" />
+        </sbsOptions>
+    </hlm:sbsinput>
+
+    <hlm:sbsbuild id="sbs.build_ctc">
+        <sbsInput refid="build_ctc_input_armv5" />
+    </hlm:sbsbuild>
+
+    <hlm:sbsoptions id="cleanCommon">
+            <arg line="REALLYCLEAN" />
+            <arg line="-c armv5" />
+    </hlm:sbsoptions>
+
+    <hlm:sbsoptions id="armv5Clean">
+        <argset refid="cleanCommon" />
+    </hlm:sbsoptions>
+
+    <hlm:sbsinput id="armv5-sbs-clean">
+        <sbsoptions refid="armv5Clean" />
+    </hlm:sbsinput>
+    
+    <hlm:sbsinput id="build_input_clean_armv5">
+        <sbsInput refid="armv5-${build.system}-clean" />
+        <sbsOptions>
+            <arg name="--logfile" value="${compile.log.dir}/${build.id}_armv5_build_clean.log" />
+            <arg name="--makefile" value="${compile.log.dir}/${build.id}_armv5_build_clean" />
+        </sbsOptions>
+    </hlm:sbsinput>
+
+    <hlm:sbsbuild id="sbs.build_ctc_clean">
+        <sbsInput refid="build_input_clean_armv5" />
+    </hlm:sbsbuild> 
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sbs/src/com/nokia/helium/sbs/SAXSysdefParser.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,94 @@
+/*
+* Copyright (c) 2007-2008 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: 
+*
+*/
+ 
+package com.nokia.helium.sbs;
+
+import org.dom4j.Document;
+import org.apache.tools.ant.BuildException;
+import org.dom4j.Element;
+import org.dom4j.Attribute;
+import org.dom4j.ElementPath;
+import org.dom4j.ElementHandler;
+import org.dom4j.io.SAXReader;
+import org.apache.log4j.Logger;
+
+import java.io.*;
+import java.util.*;
+
+/**
+ * Parses the sysdef config file and extracts the available configurations
+ */
+public class SAXSysdefParser {
+    private File sysdefFile;
+    private String configs = "";
+    private List<String> layers;
+    private boolean initialized;
+    private Logger log = Logger.getLogger(SAXSysdefParser.class);
+
+    /**
+     * Constructor
+     * @param fileName - name of the sysdef file to parse
+     */
+    public SAXSysdefParser(File fileName) {
+        
+        sysdefFile = fileName;
+    }
+    
+    public List<String> getLayers() {
+        if (!initialized ) {
+            initialized = true;
+            parseConfig("layer");
+            if (layers == null) {
+                throw new BuildException("No layers found from sysdef");
+            }
+        }
+        return layers;
+    }
+
+    /**
+     * Constructor
+     * @return list of available configurations that can be built.
+     */    
+     public void parseConfig(String nodeToGet) {
+        layers = new ArrayList<String>();
+        SAXReader reader = new SAXReader();
+            reader.addHandler( "/SystemDefinition/systemModel/" + nodeToGet,
+                new ElementHandler() {
+                    public void onStart(ElementPath path) {
+                    }
+                    public void onEnd(ElementPath path) {
+                        Element row = path.getCurrent();
+                        Iterator itr = row.attributeIterator();
+                        while (itr.hasNext())
+                        {
+                            Attribute child = (Attribute) itr.next();
+                            String attrName = child.getQualifiedName();
+                            if (attrName.equals("name")) {
+                                layers.add((String)child.getValue());
+                            }
+                        }
+                        row.detach();
+                    }
+                }
+            );
+        try {
+            Document doc = reader.read(sysdefFile);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sbs/src/com/nokia/helium/sbs/SBSCommandBase.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,103 @@
+/*
+* Copyright (c) 2007-2008 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:
+*
+*/
+package com.nokia.helium.sbs;
+
+import java.io.File;
+import java.util.HashMap;
+
+import com.nokia.helium.core.plexus.CommandBase;
+
+/**
+ * Simple SBS wrapper based on the CommandBase class.
+ *
+ */
+public class SBSCommandBase extends CommandBase<SBSException> {
+
+    private File workingDir;
+    
+    private String cleanLogPath;
+
+    private String whatLogPath;
+
+    private String  executable = "sbs";
+    
+    /**
+     * @return sbs.
+     */
+    @Override
+    protected String getExecutable() {
+        return executable;
+    }
+    
+    
+
+    /**
+     * @param executable the executable to set
+     */
+    public void setExecutable(String executable) {
+        this.executable = executable;
+    }
+
+
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    protected void throwException(String message, Throwable t) throws SBSException {
+        throw new SBSException(message, t);
+    }
+
+    /**
+     * Set the working directory where emake should be called.
+     * @param workingDir the working directory.
+     */
+    public void setWorkingDir(File workingDir) {
+        this.workingDir = workingDir;
+    }
+
+    /**
+     * Get the workingDir defined by the user.
+     * @return the working dir.
+     */
+    @Override
+    public File getWorkingDir() {
+        return workingDir;
+    }
+
+    public void setCleanLogFilePath(String path) {
+        cleanLogPath = path;
+    }
+
+    public void setWhatLogFilePath(String path) {
+        whatLogPath = path;
+    }
+
+    /**
+     * Executes the command using as argline, instead of argument.
+     * @param argLine, argline to execute.
+     */
+    public void execute(String argLine) throws SBSException {
+        HashMap<String, String> envMap = new HashMap<String, String>();
+        envMap.put("PYTHONPATH", "");
+        if ( cleanLogPath != null) {
+            envMap.put("SBS_CLEAN_LOG_FILE", cleanLogPath);
+            envMap.put("SBS_WHAT_LOG_FILE", whatLogPath);
+        }
+        executeCmdLine(argLine, envMap, null);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sbs/src/com/nokia/helium/sbs/SBSException.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,41 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+package com.nokia.helium.sbs;
+
+/**
+ * Exception raise by the SBS Modules.
+ *
+ */
+public class SBSException extends Exception {
+
+    /**
+     * An exception with message. 
+     * @param message
+     */
+    public SBSException(String message) {
+        super(message);
+    }
+
+    /**
+     * An exception with message and cause.
+     * @param message
+     */
+    public SBSException(String message, Throwable t) {
+        super(message, t);
+    }
+    
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sbs/src/com/nokia/helium/sbs/ant/SBSBuildList.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,79 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+
+package com.nokia.helium.sbs.ant;
+
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.BuildException;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.HashMap;
+import com.nokia.helium.sbs.ant.types.*;
+import com.nokia.helium.sbs.ant.taskdefs.*;
+import org.apache.log4j.Logger;
+
+/**
+ * This is the final class to store the sbs build list across the ant configurations.
+ */
+public final class SBSBuildList {
+
+    private static HashMap<Object, SBSBuild> sbsBuildMap;
+
+    private static Logger log = Logger.getLogger(SBSBuildList.class);
+
+    private SBSBuildList() {
+    }
+    
+    /**
+     *  Provides the list of sbsinput for the given configuration name. Process
+     *  all the sbs input and returns the sbsinputlist for matchin configuration name
+     *  from the ant xml file.
+     * @param project, ant project for whcih the sbs config needs to be searched for.
+     * @param buildName - name of the configuration for which the sbs input list needs
+     * to be obtained.
+     * @return list of sbs input for which the raptor needs to be executed one after another.
+     */
+    public static List<SBSInput> getSBSInputList(Project project, String buildName) {
+        if (sbsBuildMap == null) {
+            initialize(project);
+        }
+        SBSBuild sbsBuild = sbsBuildMap.get(buildName);
+        if (sbsBuild == null) {
+            throw new BuildException("Config name : " + buildName + " is not valid");
+        }
+        List<SBSInput> retList = null;
+        if (sbsBuild != null) {
+            retList = sbsBuild.getSBSInputList();
+        }
+        return retList;
+    }
+
+    /**
+     *  Internal function to initialize the sbsbuild configuration to the hashmap.
+     * @param project, ant project for whcih the sbs config needs to be searched for.
+     */
+    private static void initialize(Project project) {
+        Hashtable references = project.getReferences();
+        sbsBuildMap = new HashMap<Object, SBSBuild>();
+        for (Object key : references.keySet()) {
+            Object sbsBuildObject = references.get(key);
+            if ( sbsBuildObject != null && sbsBuildObject instanceof SBSBuild) {
+                sbsBuildMap.put(key, (SBSBuild)sbsBuildObject);
+            }
+        }
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sbs/src/com/nokia/helium/sbs/ant/antlib.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : antlib.xml 
+Part of     : Helium AntLib
+
+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:
+
+============================================================================
+-->
+<antlib>
+    <!-- Task definition -->
+    <taskdef name="sbstask" classname="com.nokia.helium.sbs.ant.taskdefs.SBSTask"/>
+    <taskdef name="ctctask" classname="com.nokia.helium.sbs.ant.taskdefs.CTCTask"/>
+    <taskdef name="coveritybuild" classname="com.nokia.helium.sbs.ant.taskdefs.SBSCoverity"/>
+    <taskdef name="getsbsinputs" classname="com.nokia.helium.sbs.ant.taskdefs.GetSBSInputs"/>
+    <!-- Type definition -->
+    <typedef name="sbsbuild" classname="com.nokia.helium.sbs.ant.types.SBSBuild"/>
+    <typedef name="sbsinput" classname="com.nokia.helium.sbs.ant.types.SBSInput"/>
+    <typedef name="sbsmakeoptions" classname="com.nokia.helium.sbs.ant.types.SBSMakeOptions"/>
+    <typedef name="sbsoptions" classname="com.nokia.helium.core.ant.types.VariableSet"/>
+    <typedef name="coverityoptions" classname="com.nokia.helium.core.ant.types.VariableSet"/>
+</antlib>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sbs/src/com/nokia/helium/sbs/ant/taskdefs/CTCTask.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,53 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+package com.nokia.helium.sbs.ant.taskdefs;
+
+/**
+ * This task is to execute the CTCWrap command with the list of sbs parameters
+ * using sbsinput type. Based on the raptor input list of additional log file path
+ * used needs to be set, so that the scanlog, additional log files are generated 
+ * properly.
+ * 
+ * <pre>
+ * &lt;ctctask sbsinput=&quot;sbs.input&quot; sysdefFile=&quot;system.def.file&quot;
+ *      workingDir=&quot;build.drive&quot; failOnError=&quot;false&quot; 
+ *      cleanLog=&quot;sbs.log.file.clean.log&quot; 
+ *      failOnError=&quot;false&quot; 
+ *      errorfile=&quot;path to error file&quot;/&gt;
+ * </pre>
+ * 
+ * @ant.task name="ctctask" category="SBS"
+ */
+public class CTCTask extends SBSTask {
+    
+    private String instrumentType = "m";
+    
+    public CTCTask() {
+        super();
+        getSbsCmd().setExecutable("ctcwrap");
+    }
+    
+    public void setInstrumentType(String i)
+    {
+        instrumentType = i;
+    }
+    
+    protected String getSBSCmdLine() {
+        return "-i " + instrumentType + " sbs" + super.getSBSCmdLine();
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sbs/src/com/nokia/helium/sbs/ant/taskdefs/GetSBSInputs.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,91 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+
+package com.nokia.helium.sbs.ant.taskdefs;
+
+import java.util.List;
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Task;
+import com.nokia.helium.sbs.ant.types.*;
+import com.nokia.helium.sbs.ant.*;
+import org.apache.log4j.Logger;
+
+/**
+ * This task provide a way to get the list of sbs command input for a particular
+ * configuration from abld. For every abld command mentioned for a configuration 
+ * from schema 1.4.0, there should be a corresponding sbsinput and for all
+ * abld commands in the sysdef configuration a corresponding sbsbuild command has
+ * to be there. And using this task the list of sbs commands are extracted and executed 
+ * one after another. This is only for backward compatibility, once the sysdef config
+ * is migrated to 3.0, this task would be deprecated.
+ * 
+ * This is internal task and should not be used outside helium.
+ * 
+ * <pre>
+ * Example 1:
+ * &lt;getsbsinputs config=&quot;sysdef.configuration&quot;
+ *      outputProperty=&quot;sbs.internal.list&quot;/&gt;
+ * </pre>
+ * 
+ * @ant.task name="getsbsinputs" category="SBS"
+ */
+
+public class GetSBSInputs extends Task {
+
+    private Logger log = Logger.getLogger(GetSBSInputs.class);
+    private String configName;
+    private String outputProperty;
+    
+    /**
+     *  Helper function to set the configuration name for
+     *  which the sbs commands to be extracted.
+     * @param name of the configuration for which sbs commands to be obtained.
+     */
+    public void setConfig(String name) {
+        configName = name;
+    }
+
+    /**
+     *  Helper function to retrive the sbs input list (list of sbs commands
+     *  to be executed one after another). The list is provided with comma
+     *  separated values.
+     * @param property name of the property where the sbs input list to be stored.
+     */
+    public void setOutputProperty(String property) {
+        outputProperty = property;
+    }
+
+    /**
+     *  Execute the task. Finds the list of sbsinput and store it in
+     *  outputproperty with comma separated values.
+     * @throws BuildException
+     */
+    public void execute() {
+        if (configName == null) {
+            throw new BuildException("configInput is not defined");
+        }
+        List<SBSInput> sbsInputList = SBSBuildList.getSBSInputList(getProject(), configName);
+        StringBuffer inputs = new StringBuffer();
+        for (SBSInput input : sbsInputList) {
+            if (inputs.length() > 0) {
+                inputs.append(",");
+            }
+            inputs.append(input.getRefid().getRefId());
+            getProject().setProperty(outputProperty,inputs.toString());
+        }
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sbs/src/com/nokia/helium/sbs/ant/taskdefs/SBSCoverity.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,130 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+package com.nokia.helium.sbs.ant.taskdefs;
+
+import java.util.Date;
+import java.util.Vector;
+import java.util.Map.Entry;
+
+import org.apache.tools.ant.BuildException;
+
+import com.nokia.helium.core.ant.types.Variable;
+import com.nokia.helium.core.ant.types.VariableSet;
+import com.nokia.helium.core.plexus.AntStreamConsumer;
+import com.nokia.helium.sbs.SBSCommandBase;
+import com.nokia.helium.sbs.plexus.CoverityErrorStreamConsumer;
+
+import org.apache.log4j.Logger;
+
+
+/**
+ * This task is to execute the cov-build command with the list of sbs parameters
+ * using sbsinput type. Based on the raptor input list of additional log file path
+ * used needs to be set, so that the scanlog, additional log files are generated 
+ * properly.
+ * 
+ * <pre>
+ * Example 1:
+ * 
+ * &lt;coveritybuild sbsinput=&quot;sbs.input&quot; sysdefFile=&quot;system.def.file&quot;
+ *      workingDir=&quot;build.drive&quot; failOnError=&quot;false&quot; 
+ *      cleanLog=&quot;sbs.log.file.clean.log&quot; 
+ *      failOnError=&quot;false&quot; 
+ *      errorfile=&quot;path to error file&quot;/&gt;
+ * </pre>
+ * 
+ * @ant.task name="coveritybuild" category="SBS"
+ */
+public class SBSCoverity extends SBSTask {
+        
+    private Vector<VariableSet> coverityOptions = new Vector<VariableSet>();
+    private Logger log = Logger.getLogger(SBSCoverity.class);
+    private Date startTime;
+    private Date endTime;
+    
+    public void execute() {
+        
+        validateParameter();
+        // Disabling the emake options as sbs will not output emake output.
+        setAddMakeOptions(false);
+        CoverityErrorStreamConsumer coverityErrorConsumer = null;
+        SBSCommandBase sbsCmd = new SBSCommandBase();
+        sbsCmd.setWorkingDir(getWorkingDir());
+        if (getCleanLog() != null) {
+            sbsCmd.setCleanLogFilePath(getCleanLog());
+        }
+        
+        try {
+            log.debug("error stream file : " + getErrorOutput());
+            sbsCmd.addOutputLineHandler(new AntStreamConsumer(this));
+            if (getErrorOutput() == null) {
+                log.debug("redirecting error to Antstream");
+                sbsCmd.addErrorLineHandler(new AntStreamConsumer(this));
+            } else {
+                coverityErrorConsumer = new CoverityErrorStreamConsumer(getErrorOutput());
+                log.debug("redirecting error to file stream");
+                sbsCmd.addErrorLineHandler(coverityErrorConsumer);
+            }
+        } catch (java.io.FileNotFoundException ex) {
+            log.info("file path: " + getErrorOutput() + "Not valid" );
+        }
+        
+        StringBuffer coverityCmdOptions = new StringBuffer();
+        
+        sbsCmd.setExecutable("cov-build");
+        String coverityConfig = "";
+        for (VariableSet coverityArg : coverityOptions) {
+            for (Entry<String, Variable> entry : coverityArg.getVariablesMap().entrySet() ) {
+                coverityConfig = coverityConfig +  entry.getKey() + " " + entry.getValue().getValue() + " ";
+            }
+        }
+        
+        coverityCmdOptions.append(coverityConfig + "sbs" + getSBSCmdLine());
+        startTime = new Date();
+        try {
+            log("cov-build commands: " + coverityCmdOptions.toString());
+            if (getExecute()) {
+                sbsCmd.execute(coverityCmdOptions.toString());
+            }
+        } catch (Exception ex) {
+            log.debug("Exception occured during 'cov-build' execution", ex);
+            if (getFailOnError()) {
+                throw new BuildException("exception during 'cov-build' execution", ex);
+            }
+        } finally {
+            //Called to update the error stream, better would be the commandbase
+            //handling the closing of streams in case of exceptions.
+            if (coverityErrorConsumer != null) {
+                coverityErrorConsumer.close();
+            }
+        }
+        endTime = new Date();
+        updateSBSLogStatistics(getStatsLog(), getOutputLog(), startTime, endTime);
+    }
+    
+    /**
+     * To read the coverity arguments for cov-build command.
+     * @param coverityArg
+     */
+    public void addCoverityOptions(VariableSet coverityArg) {
+        if (!coverityOptions.contains(coverityArg)) {
+            coverityOptions.add(coverityArg);
+        }
+    }
+    
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sbs/src/com/nokia/helium/sbs/ant/taskdefs/SBSTask.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,597 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+
+package com.nokia.helium.sbs.ant.taskdefs;
+
+import java.util.List;
+import org.w3c.dom.*;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.transform.*;
+import javax.xml.transform.dom.*;
+import javax.xml.transform.stream.*;
+import java.io.FileWriter;
+import java.text.DecimalFormat;
+import java.util.Date;
+import com.nokia.helium.core.plexus.AntStreamConsumer;
+import java.io.File;
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Task;
+import com.nokia.helium.core.ant.types.Variable;
+import com.nokia.helium.core.ant.types.VariableSet;
+import com.nokia.helium.sbs.ant.types.*;
+import org.apache.log4j.Logger;
+import org.apache.tools.ant.types.PatternSet;
+import com.nokia.helium.sbs.SAXSysdefParser;
+import com.nokia.helium.sbs.SBSCommandBase;
+import com.nokia.helium.sbs.SBSException;
+import java.util.ArrayList;
+import java.util.Hashtable;
+import com.nokia.helium.sbs.plexus.SBSErrorStreamConsumer;
+import java.util.Collection;
+
+/**
+ * This task is to execute the actual sbs commands with the list of sbs parameters
+ * using sbsinput type. Based on the raptor input list of additional log file path
+ * used needs to be set, so that the scanlog, additional log files are generated 
+ * properly.
+ * 
+ * <pre>
+ * Example 1:
+ * 
+ * &lt;sbstask sbsinput=&quot;sbs.input&quot; sysdefFile=&quot;system.def.file&quot;
+ *      layerPatternSetRef=&quot;sbs.patternset&quot; errorOutput=&quot;sbs.log.file.error.log&quot;
+ *      workingDir=&quot;build.drive&quot; failOnError=&quot;false&quot; outputLog=&quot;sbs.log.file&quot;
+ *      cleanLog=&quot;sbs.log.file.clean.log&quot; statsLog=&quot;sbs.log.file.info.xml&quot; /&gt;
+ * </pre>
+ * 
+ * @ant.task name="sbstask" category="SBS"
+ */
+public class SBSTask extends Task {
+
+    private Logger log = Logger.getLogger(SBSTask.class);
+    private String sbsInputName;
+    private String layerPatternSetRef;
+    private File sysDefFile;
+    private File workingDir;
+    private File errorFile;
+    private String logSuffix;
+    private String cleanLog;
+    private String whatLog;
+    private String outputLogName;
+    private File statsLog;
+    private boolean executeCmd = true;
+    private boolean failOnError = true;
+    private boolean addMakeOptions = true;
+    private Date startTime;
+    private Date endTime;
+    private SBSCommandBase sbsCmd = new SBSCommandBase();
+    
+    public SBSCommandBase getSbsCmd() { return sbsCmd; }
+
+    /**
+     *  Helper function to set the clean log file. The cleanlog file captures the 
+     *  clean output from raptor and stores into a separate log. This is being used
+     *  to backtrace the error information to associate the components. The clean log 
+     *  contains the list of files has to be cleaned by the raptor command for a
+     *  specific components. An environment varialbe is set which is used by 
+     *  filterMetadata plugin to store the clean log file in python. 
+     * @param logPath, path of the clean log file.
+     */
+    public void setCleanLog(String logPath) {
+        cleanLog = logPath;
+    }
+
+    /**
+     *  Helper function to set the what log file. The what log file captures the 
+     *  what output from raptor and stores into a separate log. This is being used
+     *  to backtrace the error information to associate the components. The clean log 
+     *  contains the list of files has to be cleaned by the raptor command for a
+     *  specific components. An environment varialbe is set which is used by 
+     *  filterMetadata plugin to store the clean log file in python. 
+     * @param logPath, path of the clean log file.
+     */
+    public void setWhatLog(String logPath) {
+        whatLog = logPath;
+    }
+
+    /**
+     * To get the whatlog value.
+     * @return
+     */
+    public String getWhatLog() {
+        return whatLog;
+    }
+
+    /**
+     * To get the cleanlog value.
+     * @return
+     */
+    public String getCleanLog() {
+        return cleanLog;
+    }
+
+    /**
+     *  Helper function to set the output log file name. Path of the output log
+     *  where the raptor command output to be stored. This would be obtained from
+     *  sbsinput, if the raptor argument --logfile set.
+     * @param logName, name of the logfile to store the raptor output.
+     */
+    public void setOutputLog(String logName) {
+        outputLogName = logName;
+    }
+    
+    /**
+     * To get the output log.
+     * @return
+     */
+    public String getOutputLog() {
+        return outputLogName ;
+    }
+    
+    
+
+    /**
+     *  Helper function to set the statistics info of the raptor command. The
+     *  stats file contains how long the build being executed, the log file for
+     *  which the stats is obtained. Used during scanlog generation from template file.
+     *  Once ORM is working an additional table could be created which stores the 
+     *  statistics information, in which case, there won't be the need for the
+     *  statistics file.
+     * @param log name of the logfile to store the raptor command statistics information.
+     */
+    public void setStatsLog(File log) {
+        statsLog = log;
+    }
+    
+    /**
+     *  To get the status log file.
+     * @return
+     */
+    public File getStatsLog() {
+        return statsLog ;
+    }
+    
+    
+    
+
+    /**
+     *  Helper function to set the sbsinput name for which the sbs to be executed.
+     *  The sbsinput contains the raptor parameter both the sbs options and sbs make options.
+     * @param inputName name of the sbs input which contains the list of sbs parameters.
+     */
+    public void setSBSInput(String inputName) {
+        sbsInputName = inputName;
+    }
+    
+    /**
+     * To get the sbs name.
+     * @return
+     */
+    public String getSBSInput() {
+        return sbsInputName ;
+    }
+    
+    
+
+    /**
+     *  Helper function to set the sbs error log file path. The error log file contains
+     *  the errors captured from the raptor error stream and processed separately.
+     * @param file path of the error output to be stored for the raptor command execution.
+     */
+    public void setErrorOutput(File file) {
+        errorFile = file;
+    }
+    
+    /**
+     * To get the error output file.
+     * @return
+     */
+    public File getErrorOutput() {
+        return errorFile ;
+    }
+
+    /**
+     *  Helper function to set the sysdef file path. System definition file contains
+     *  the full list of components to be build with the sbs input. For 1.4.0 schema
+     *  the sysdef file should be already filtered for the corresponding abld configuration
+     *  and the sysdef file associated here contains only layers for which the sbs command
+     *  needs to be executed with sbsinput arguments. 
+     * @param file sysdef file path.
+     */
+    public void setSysDefFile(File file) {
+        sysDefFile = file;
+    }
+    
+    /**
+     * To get the sysdef file.
+     * @return
+     */
+    public File getSysDefFile() {
+        return sysDefFile ;
+    }
+    
+
+    /**
+     *  Helper function to set the log suffix.
+     *  @param suffix logfile suffix.
+     */
+    public void setLogSuffix(String suffix) {
+        logSuffix = suffix;
+    }
+    
+    /**
+     * To get the logsuffix.
+     * @return
+     */
+    public String getLogSuffix() {
+        return logSuffix ;
+    }
+
+    /**
+     *  Patternset is used to filter the layers from the sysdef file for which the sbs
+     *  commands need to be executed instead of all the layers in the system definition files.
+     *  This is useful for example in order to execute only the test layer, a patter set could
+     *  contain test*, then all the layers begining with test are matched and passed as 
+     *  raptor input.
+     *  @param id patternset id, for which the patterns to be filtered.
+     */
+    public void setLayerPatternSetRef(String id) {
+        layerPatternSetRef = id;
+    }
+    
+    /**
+     * 
+     * To get the layer pattern set. 
+     * @return
+     */
+    public String getLayerPatternSetRef() {
+        return layerPatternSetRef ;
+    }
+
+    /**
+     * Helper function to set the current working directory. This would be mostly the
+     * root of the build area.
+     *  @param dir root of the build area location from which to execute the raptor commands.
+     */
+    public void setWorkingDir(File dir) {
+        workingDir = dir;
+    }
+    
+    /**
+     * To get the working dir.
+     * @return
+     */
+    public File getWorkingDir() {
+        return workingDir ;
+    }
+    
+
+
+    /**
+     * Helper function to execute the actual commands or just print the commands and 
+     * not execute the actual commands.
+     *  @param execute true / false if true print and execute the commands, otherwise just
+     *  print the commands.
+     */
+    public void setExecute(boolean execute) {
+        executeCmd = execute;
+    }
+    
+    /**
+     * To get execute value.
+     * @return
+     */
+    public boolean getExecute() {
+        return executeCmd ;
+    }
+
+    /**
+     * Helper function to set whether to fail the build or not. 
+     *
+     * @param failBuild true / false - true to fail the build otherwise false.
+     */
+    public void setFailOnError(boolean failBuild) {
+        failOnError = failBuild;
+    }
+    
+    /**
+     * To get the failonError value.
+     * @return
+     */
+    public boolean getFailOnError() {
+        return failOnError ;
+    }
+
+    /**
+     * @param addMakeOptions the addMakeOptions to set
+     */
+    protected void setAddMakeOptions(boolean addMakeOptions) {
+        this.addMakeOptions = addMakeOptions;
+    }
+
+    /**
+     *  Execute the sbs commands from sbsinput.  
+     * @throws BuildException
+     */
+    public void execute() {
+        SBSErrorStreamConsumer sbsErrorConsumer = null;
+        validateParameter();
+        sbsCmd.setWorkingDir(workingDir);
+        if (cleanLog != null) {
+            sbsCmd.setCleanLogFilePath(cleanLog);
+        }
+        if (whatLog != null) {
+            sbsCmd.setWhatLogFilePath(whatLog);
+        }
+        try {
+            log.debug("error stream file : " + errorFile);
+            sbsCmd.addOutputLineHandler(new AntStreamConsumer(this));
+            if (errorFile == null) {
+                log.debug("redirecting error to Antstream");
+                sbsCmd.addErrorLineHandler(new AntStreamConsumer(this));
+            } else {
+                sbsErrorConsumer = new SBSErrorStreamConsumer(errorFile);
+                log.debug("redirecting error to file stream");
+                sbsCmd.addErrorLineHandler(sbsErrorConsumer);
+            }
+        } catch (java.io.FileNotFoundException ex) {
+            log.info("file path: " + errorFile + "Not valid" );
+        }
+        
+        startTime = new Date();
+        try {
+            log("sbs commands: " + getSBSCmdLine());
+            if (executeCmd) {
+                sbsCmd.execute(getSBSCmdLine());
+            }
+        } catch (SBSException sex) {
+            log.debug("SBS exception occured during sbs execution", sex);
+            if (failOnError) {
+                throw new BuildException("exception during SBS execution", sex);
+            }
+        } catch (Exception ex) {
+            log.debug("Exception occured during sbs execution", ex);
+            if (failOnError) {
+                throw new BuildException("exception during SBS execution", ex);
+            }
+        } finally {
+            //Called to update the error stream, better would be the commandbase
+            //handling the closing of streams in case of exceptions.
+            if (sbsErrorConsumer != null) {
+                sbsErrorConsumer.close();
+            }
+        }
+        endTime = new Date();
+        if (statsLog != null) {
+            updateSBSLogStatistics(statsLog, outputLogName, startTime, endTime);
+        }
+    }
+
+    /**
+     * Internal function to get the filtered layers by
+     * processing the system definition file with list of matched layers. 
+     * 
+     * @return list of filtered layers from the sysdef file for which
+     * the raptor commands to be executed.
+     */
+    private List<String> getFilteredLayers() {
+        List<String> filteredLayers = null;
+        if (layerPatternSetRef != null) {
+            Hashtable references = getProject().getReferences();
+            Object layerPatternSetObject = references.get(layerPatternSetRef); 
+            if ( layerPatternSetObject != null && ! (layerPatternSetObject instanceof PatternSet)) {
+                throw new BuildException("Layer Pattern set is not of type PatternSet");
+            }
+            if (layerPatternSetObject != null) {
+                PatternSet layerPatternSet = (PatternSet) layerPatternSetObject;
+                SAXSysdefParser sysDefParser = new SAXSysdefParser(sysDefFile);
+                List<String> fullLayerList = sysDefParser.getLayers(); 
+                filteredLayers = new ArrayList<String>();
+                String[] includes = layerPatternSet.getIncludePatterns(getProject());
+                String[] excludes = layerPatternSet.getExcludePatterns(getProject());
+                if (includes == null && excludes == null) {
+                    throw new BuildException("No patterns specified");
+                }
+                for (String layer : fullLayerList) {
+                    if (includes == null) {
+                        if (!isExcluded(layer, excludes)) {
+                            filteredLayers.add(layer);
+                        }
+                        continue;
+                    }
+                    if (isIncluded(layer, includes) ) {
+                        if (!isExcluded(layer, excludes)) {
+                            filteredLayers.add(layer);
+                        }
+                    }
+                }
+            }
+        }
+        return filteredLayers;
+    }
+
+    /**
+     * Update the raptor build statistics by generating an xml file containing
+     * the build time and the log file name, used to generate the scanlog. 
+     * @param infoFileName
+     * @param logFileName
+     * @param startTime
+     * @param endTime
+     */
+    protected void updateSBSLogStatistics(File infoFileName, String logFileName, Date startTime, Date endTime) {
+
+        try {
+            DocumentBuilderFactory sbsInfo = DocumentBuilderFactory.newInstance();
+            DocumentBuilder docBuilder = sbsInfo.newDocumentBuilder();
+            Document doc = docBuilder.newDocument();
+            Element root = doc.createElement("sbsinfo");
+            doc.appendChild(root);
+            Element child = doc.createElement("logfile");
+            child.setAttribute("name", logFileName);
+            root.appendChild(child);
+
+            long timeDiff = (endTime.getTime() - startTime.getTime()) / 1000;
+            child = doc.createElement("durationlong");
+            child.setAttribute("time", "" + timeDiff);
+            root.appendChild(child);
+            child = doc.createElement("duration");
+            int hours = (int) (timeDiff / 3600);
+            int minutesSeconds = (int)(timeDiff % 3600);
+            int minutes = minutesSeconds / 60;
+            int seconds = minutesSeconds % 60;
+            DecimalFormat decimalFormat =  new DecimalFormat();
+            decimalFormat.setMinimumIntegerDigits(2);
+            String duration = decimalFormat.format(hours) + "H:" +  
+                    decimalFormat.format(minutes) +  "M:"  + decimalFormat.format(seconds) + "S";
+            //Todo: handle if the time difference is greater than 24 hours
+            child.setAttribute("time", duration);
+            root.appendChild(child);
+            Transformer transformer = TransformerFactory.newInstance().newTransformer();
+            transformer.setOutputProperty(OutputKeys.INDENT, "yes");
+            FileWriter sbsWriter = new FileWriter(infoFileName);
+            StreamResult result = new StreamResult(sbsWriter);
+            DOMSource sbsSource = new DOMSource(doc);
+            transformer.transform(sbsSource, result);
+        } catch (Exception ex) {
+            log.debug("exception while xml writing sbs log info", ex);
+        }
+        
+    }
+
+
+    /**
+     * Internal function to find the included layer patterns. 
+     *
+     * @param text - layer name to be compared with
+     * @param includes - compare the layer name with the includes list.
+     * @return true if the text containing layer name to be included.
+     */
+    private boolean isIncluded(String text, String[] includes) {
+        if (includes != null) {
+            for (String pattern : includes) {
+                if (text.matches(pattern)) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Internal function to find the excluded layer patterns. 
+     *
+     * @param text - layer name to be compared with
+     * @param excludes - compare the layer name with the excludes list.
+     * @return true if the text containing layer name to be excluded.
+     */
+    private boolean isExcluded(String text, String[] excludes) {
+        if (excludes != null) {
+            for (String pattern : excludes) {
+                if (text.matches(pattern)) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+    
+    
+    /**
+     * To Validate the parameters passed.
+     */
+    protected void validateParameter() {
+        
+        if (getSBSInput() == null) {
+            throw new BuildException("'sbsInputName' is not defined");
+        }
+        if (getSysDefFile() == null) {
+            throw new BuildException("'System Definition' file is missing");
+        }
+        if (getWorkingDir() == null) {
+            throw new BuildException("'workingDir' must be set");
+        }
+        if (getOutputLog() == null) {
+            throw new BuildException("'OutputLog' must be set");
+        }
+        
+    }
+    
+    /**
+     * To get the SBS command line parameters.
+     * @return
+     */
+    protected String getSBSCmdLine() {
+        
+        List <String> filteredLayers = getFilteredLayers();
+        
+        Object refObject = getProject().getReferences().get(sbsInputName);
+        if (refObject == null) {
+            throw new BuildException("invalid sbs input reference: " + sbsInputName);
+        }
+        if ( refObject != null && ! (refObject instanceof SBSInput)) {
+            throw new BuildException("sbs input name " + sbsInputName + "is not valid");
+        }
+        SBSInput sbsInput = (SBSInput)refObject;
+        StringBuffer cmdOptions = new StringBuffer();
+        VariableSet sbsOptions = sbsInput.getFullSBSOptions();
+        cmdOptions.append(" -s " + sysDefFile);
+        Collection<Variable> variableList = sbsOptions.getVariables(); 
+        if (sbsOptions != null ) {
+           if (variableList.isEmpty()) {
+               throw new BuildException("sbsoptions cannot be empty for input: " + sbsInputName);
+           }
+        }
+        for (Variable variable : variableList) {
+            if (variable.getParameter().startsWith("--logfile")) {
+                cmdOptions.append(" --logfile " + getOutputLog());
+            } else {
+                cmdOptions.append(" " + variable.getParameter());
+            }
+        }
+        SBSMakeOptions sbsMakeOptions = sbsInput.getFullSBSMakeOptions();
+        variableList = null;
+        if (sbsMakeOptions != null && addMakeOptions) {
+            cmdOptions.append(" -e " + sbsMakeOptions.getEngine());
+            String ppThreads = sbsMakeOptions.getPPThreads();
+            if (ppThreads != null) {
+                cmdOptions.append(" -j " + ppThreads);
+            }
+            variableList = sbsMakeOptions.getVariables(); 
+            //if (variableList.isEmpty()) {
+            //    throw new BuildException("sbs make options cannot be empty for input: " + sbsInputName);
+            //}
+            for (Variable variable : variableList) {
+                cmdOptions.append(" --mo=");
+                cmdOptions.append(variable.getParameter());
+            }
+        }
+        if (filteredLayers != null) {
+            if (filteredLayers.isEmpty()) {
+                log("Warning: No matching layers to build from system definition file, skipped");
+                return null;
+            } else {
+                for (String layer : filteredLayers) {
+                    cmdOptions.append(" -l " + layer);
+                }
+            }
+        }
+        return cmdOptions.toString();
+        
+    }
+    
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sbs/src/com/nokia/helium/sbs/ant/types/SBSBuild.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,112 @@
+/*
+* Copyright (c) 2007-2008 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: 
+*
+*/
+ 
+package com.nokia.helium.sbs.ant.types;
+
+import org.apache.tools.ant.types.DataType;
+import org.apache.tools.ant.BuildException;
+import java.util.Vector;
+import java.util.List;
+import java.util.ArrayList;
+import org.apache.tools.ant.types.Reference;
+import org.apache.log4j.Logger;
+
+
+/**
+ * This class provides user the option to store the one to one
+ * mapping with raptor configuration. This is mainly there for backward
+ * compatibility with schema 1.4.0 and would be deprecated in the future
+ * when migrated to schema 3.0.0
+ * 
+ * <pre>
+ * sbsbuild takes only sbsinput reference id. Each reference id contains 
+ * list of raptor commands matching corresponding abld commands for a 
+ * particular configuration in the system definition file schema 1.4.0.
+ * 
+ * Example 1:
+ * 
+ * &lt;sbsbuild id=&quot;sbs.dfs_build_ncp&quot;&gt;
+ *      &lt;sbsinput refid=&quot;dfs_build_ncp_input&quot;/&gt;
+ * &lt;/sbsbuild&gt;
+ * </pre>
+
+ * @ant.type name="arg" category="SBS"
+ * @ant.type name="makeOption" category="SBS"
+ */
+public class SBSBuild extends DataType
+{
+    private static Logger log = Logger.getLogger(SBSBuild.class);
+
+    private String name;
+
+    private Vector<SBSInput> sbsInputList = new Vector<SBSInput>();
+
+
+    public SBSBuild() {
+    }
+    
+    /**
+     * Set the name of the variable.
+     * @param name
+     */
+    public void setName(String nm) {
+        name = nm;
+    }
+
+    /**
+     * Gets the name of the build input.
+     * @param name
+     */
+    public String getName() {
+        return name;
+    }
+    
+    /**
+     * Creates an empty variable element and adds 
+     * it to the variables list
+     * @return empty Variable pair
+     */
+    public SBSInput createSBSInput() {
+        SBSInput input =  new SBSInput();
+        sbsInputList.add(input);
+        return input;
+    }
+
+    /**
+     * Gets the list of sbs input list for this build configuration. 
+     * it to the variables list
+     * @return empty Variable pair
+     */
+    public List<SBSInput> getSBSInputList() {
+        List<SBSInput> inputList = new ArrayList<SBSInput>();
+        Reference refId = getRefid();
+        Object sbsInputObject = null;
+        if (refId != null) {
+            try {
+                sbsInputObject = refId.getReferencedObject();
+            } catch ( Exception ex) {
+                //log.info("Reference id of sbsinput list is not valid");
+                throw new BuildException("Reference id (" + refId.getRefId() + ") of sbsinput list is not valid");
+            }
+            if (sbsInputObject != null && sbsInputObject instanceof SBSInput) {
+                inputList.add((SBSInput)sbsInputObject);
+            }
+        }
+        inputList.addAll(sbsInputList);
+        return inputList;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sbs/src/com/nokia/helium/sbs/ant/types/SBSInput.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,320 @@
+/*
+* Copyright (c) 2007-2008 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: 
+*
+*/
+ 
+package com.nokia.helium.sbs.ant.types;
+
+import com.nokia.helium.core.ant.types.VariableSet;
+import com.nokia.helium.core.ant.VariableIFImpl;
+import java.util.Collection;
+import com.nokia.helium.core.ant.types.Variable;
+import org.apache.tools.ant.BuildException;
+import java.util.Vector;
+import org.apache.tools.ant.types.Reference;
+import org.apache.log4j.Logger;
+
+/**
+ * Helper class to store the variable set (list of variables
+ * with name / value pair)
+ *
+ *   &lt;hlm:sbsinput id=&quot;export-sbs-ec&quot;&gt;
+ *       &lt;sbsoptions refid=&quot;exportSBS&quot; /&gt;
+ *       &lt;sbsmakeoptions refid=&quot;exportSBSEC&quot; /&gt;
+ *   &lt;/hlm:sbsinput&gt;
+ * 
+ * @ant.type name="sbsinput" category="SBS"
+ */
+public class SBSInput extends VariableIFImpl {
+    
+    private static Logger log = Logger.getLogger(SBSInput.class);
+    
+    private Vector<VariableSet> sbsOptions = new Vector<VariableSet>();
+    private Vector<SBSMakeOptions> sbsMakeOptions = new Vector<SBSMakeOptions>();
+    private Vector<SBSInput> sbsInputList = new Vector<SBSInput>();
+    
+    /**
+     * Constructor
+     */
+    public SBSInput() {
+    }    
+
+    /**
+     * Creates an empty variable element and adds 
+     * it to the variables list
+     * @return empty Variable pair
+     */
+    public VariableSet createSBSOptions() {
+        SBSInput sbsInput = new SBSInput();
+        VariableSet varSet =  new VariableSet();
+        sbsInput.addSBSOptions(varSet);
+        sbsInputList.add(sbsInput);
+        return varSet;
+    }
+
+    /**
+     * Adds sbs options to variableset. Called by ant
+     * whenever the varSet is added to current sbs options. 
+     * @param varSet, variable set to be added to current sbs options.
+     */
+    public void addSBSOptions(VariableSet varSet) {
+        sbsOptions.add(varSet);
+    }
+    
+    /**
+     * Creates an empty sbs make options and add it
+     * sbs make options list
+     * @return empty Variable pair
+     */
+    public VariableSet createSBSMakeOptions() {
+        SBSInput sbsInput = new SBSInput();
+        SBSMakeOptions varSet =  new SBSMakeOptions();
+        sbsInput.addSBSMakeOptions(varSet);
+        sbsInputList.add(sbsInput);
+        return varSet;
+    }
+
+    /**
+     * Adds sbs make options to variableset. Called by ant
+     * whenever the make option is added to current sbs options. 
+     * @param varSet, variable set to be added to current sbs options.
+     */
+    public void addSBSMakeOptions(SBSMakeOptions varSet) {
+        sbsMakeOptions.add(varSet);
+    }
+
+    /**
+     * Creates a new sbsinput type for the current, and the created
+     * sbs input is only containing refid of sbs options / sbs makeoptions.
+     * @return empty sbsinput type.
+     */
+    public SBSInput createSBSInput() {
+        SBSInput sbsInput = new SBSInput();
+        sbsInputList.add(sbsInput);
+        return sbsInput;
+    }
+
+    /**
+     * Helper function to provide the sbs options associated with this
+     * sbsinput.
+     * @return sbs options associated with this sbs input.
+     */
+    public Vector<VariableSet> getSBSOptions() {
+        return sbsOptions;
+    }
+
+    /**
+     * Helper function to provide the sbs make options associated with this
+     * sbsinput.
+     * @return sbs make options associated with this sbs input.
+     */
+    public Vector<SBSMakeOptions> getSBSMakeOptions() {
+        return sbsMakeOptions;
+    }
+
+    /**
+     * Internal function to validate the sbsinput and throw exception
+     * if the input is not valid.
+     */
+    private void validateInput() {
+        if (getRefid() != null && (!sbsMakeOptions.isEmpty() || !sbsOptions.isEmpty())) {
+            throw new BuildException("SBSInput with refid should not have sbsoptions / sbsmakeoptions");
+        }
+    }
+
+    /**
+     * Internal function to recursively gothrough the sbs options refered by
+     * this sbsinput and provides the complete list of variables associated with
+     * this input.
+     * @return collection of variableset associatied with this sbsinput.
+     */
+    private Vector<VariableSet> getSBSOptions(SBSInput sbsInput) {
+        Vector<VariableSet> fullList = null;
+        sbsInput.validateInput();
+        Reference refId = sbsInput.getRefid();
+        Object sbsInputObject = null;
+        if (refId != null) {
+            try {
+                sbsInputObject = refId.getReferencedObject();
+            } catch ( Exception ex) {
+                //log.info("Reference id of sbsinput list is not valid");
+                throw new BuildException("Reference id (" + refId.getRefId() + ") of sbsinput list is not valid");
+            }
+            if (sbsInputObject != null && sbsInputObject instanceof SBSInput) {
+                VariableSet options = ((SBSInput)sbsInputObject).getFullSBSOptions();
+                if (options != null ) {
+                    if (fullList == null) {
+                        fullList = new Vector<VariableSet>();
+                    }
+                    fullList.add(options);
+                }
+            }
+        }
+        Vector<VariableSet> optionsList = sbsInput.getSBSOptions();
+        if (optionsList != null ) {
+            if (fullList == null) {
+                fullList = new Vector<VariableSet>();
+            }
+            fullList.addAll(optionsList);
+        }
+        return fullList;
+    }
+
+    /**
+     * Internal function to recursively gothrough the sbs make options refered by
+     * this sbsinput and provides the complete list of sbs make options associated 
+     * with this input.
+     * @return collection of sbs make options associatied with this sbsinput.
+     */
+    private Vector<SBSMakeOptions> getSBSMakeOptions(SBSInput sbsInput) {
+        Vector<SBSMakeOptions> sbsMakeOptionsList = null;
+        Reference refId = sbsInput.getRefid();
+        Object sbsInputObject = null;
+        if (refId != null) {
+            try {
+                sbsInputObject = refId.getReferencedObject();
+            } catch ( Exception ex) {
+               throw new BuildException("Reference id (" + refId.getRefId() + ") of sbsinput list is not valid");
+            }
+            if (sbsInputObject != null && sbsInputObject instanceof SBSInput) {
+                SBSMakeOptions options = ((SBSInput)sbsInputObject).getFullSBSMakeOptions(); 
+                if (options != null ) {
+                    if (sbsMakeOptionsList == null) {
+                        sbsMakeOptionsList = new Vector<SBSMakeOptions>();
+                    }
+                    sbsMakeOptionsList.add(options);
+                }
+            }
+        }
+        Vector<SBSMakeOptions> options = sbsInput.getSBSMakeOptions();
+        if (options != null) {
+            if (sbsMakeOptionsList == null) {
+                sbsMakeOptionsList = new Vector<SBSMakeOptions>();
+            }
+            sbsMakeOptionsList.addAll(options);
+        }
+        return sbsMakeOptionsList;
+    }
+
+    /**
+     * Internal function to recursively gothrough the sbs make options refered by
+     * this sbsinput and provides the complete list of sbs make options associated 
+     * with this input.
+     * @return collection of sbs make options associatied with this sbsinput.
+     */
+    public VariableSet getFullSBSOptions() {
+        Vector<VariableSet> fullList = null;
+        VariableSet resultSet = null;
+        Vector<VariableSet> currentOptions = getSBSOptions(this);
+        if (currentOptions != null && !currentOptions.isEmpty()) {
+            if (fullList == null ) {
+                fullList = new Vector<VariableSet>();
+            }
+            fullList.addAll(currentOptions);
+        }
+        for (SBSInput sbsInput : sbsInputList) {
+            Vector<VariableSet> options = getSBSOptions(sbsInput);
+            if (options != null && !options.isEmpty()) {
+                if (fullList == null ) {
+                    fullList = new Vector<VariableSet>();
+                }
+                fullList.addAll(options);
+            }
+        }
+        if (fullList != null) {
+            for (VariableSet varSet : fullList) {
+                for (Variable var : varSet.getVariables()) {
+                    if (resultSet == null) {
+                        resultSet = new VariableSet();
+                    }
+                    resultSet.add(var);
+                }
+            }
+        }
+        return resultSet;
+    }
+
+    /**
+     * Internal function to recursively gothrough the sbs make options refered by
+     * this sbsinput and provides the complete list of sbs make options associated 
+     * with this input.
+     * @return collection of sbs make options associatied with this sbsinput.
+     */
+    public SBSMakeOptions getFullSBSMakeOptions() {
+        Vector<SBSMakeOptions> sbsMakeOptionsList = null;
+        SBSMakeOptions resultSet = null;
+        Vector<SBSMakeOptions> currentOptions = getSBSMakeOptions(this);
+        if (currentOptions != null && !currentOptions.isEmpty()) {
+            if (sbsMakeOptionsList == null ) {
+                sbsMakeOptionsList = new Vector<SBSMakeOptions>();
+            }
+            sbsMakeOptionsList.addAll(currentOptions);
+        }
+        for (SBSInput sbsInput : sbsInputList) {
+            Vector<SBSMakeOptions> options = getSBSMakeOptions(sbsInput);
+            if (options != null && !options.isEmpty()) {
+                if (sbsMakeOptionsList == null ) {
+                    sbsMakeOptionsList = new Vector<SBSMakeOptions>();
+                }
+                sbsMakeOptionsList.addAll(options);
+            }
+        }
+        if (sbsMakeOptionsList != null ) {
+            String engine = null;
+            String ppThreads = null;
+            for (SBSMakeOptions varSet : sbsMakeOptionsList) {
+                String currentEngine = varSet.getEngine();
+                String currentThread = varSet.getPPThreads();
+                if (currentEngine != null) {
+                    if (engine == null) {
+                        engine = currentEngine;
+                        if (resultSet == null ) {
+                            resultSet = new SBSMakeOptions();
+                        }
+                        resultSet.setEngine(currentEngine);
+                    } else {
+                        if (!engine.equals(currentEngine) ) {
+                            throw new BuildException("inheriting engine types mismatch: " + engine + " != " + currentEngine);
+                        }
+                    }
+                }
+                if (resultSet == null ) {
+                    resultSet = new SBSMakeOptions();
+                }
+                if (ppThreads == null && currentThread != null) {
+                    ppThreads = currentThread;
+                    resultSet.setPPThreads(ppThreads);
+                }
+                for (Variable var : varSet.getVariables()) {
+                    resultSet.add(var);
+                }
+            }
+        }
+        return resultSet;
+    }
+    
+    /**
+     * Helper function to return the collection of variabes associated with this
+     * @return collection of sbs options associatied with this sbsinput.
+     */
+    public Collection<Variable> getVariables() {
+        Collection<Variable> varList = null;
+        VariableSet  options = getFullSBSOptions();
+        if (options != null) {
+            varList = options.getVariables();
+        }
+        return varList;
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sbs/src/com/nokia/helium/sbs/ant/types/SBSMakeOptions.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,168 @@
+/*
+* Copyright (c) 2007-2008 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: 
+*
+*/
+ 
+package com.nokia.helium.sbs.ant.types;
+
+import com.nokia.helium.core.ant.types.VariableSet;
+import org.apache.log4j.Logger;
+import org.apache.tools.ant.types.Reference;
+import org.apache.tools.ant.BuildException;
+import java.util.List;
+
+/**
+ * Helper class to store the variable set (list of variables
+ * with name / value pair) for sbsmakeoptions inheriting from argSet.
+
+ *  * &lt;sbsbuild id=&quot;sbs.dfs_build_ncp&quot;&gt;
+ *      &lt;sbsinput refid=&quot;dfs_build_ncp_input&quot;/&gt;
+ * &lt;/sbsbuild&gt;
+
+ *   &lt;hlm:sbsmakeoptions id=&quot;commonEMakeOptions&quot; engine=&quot;emake&quot;&gt;
+ *       &lt;arg name=&quot;--emake-emulation&quot; value="gmake" /&gt;
+ *       &lt;arg name=&quot;--emake-annodetail&quot; value=&quot;basic,history,waiting&quot; /&gt;
+ *       &lt;arg name=&quot;--emake-class&quot; value=&quot;${ec.build.class}&quot; /&gt;
+ *       &lt;arg name=&quot;--emake-historyfile&quot; value=&quot;${build.log.dir}/ec_history/raptor_clean.emake.data&quot; /&gt;
+ *       &lt;arg name=&quot;--case-sensitive&quot; value=&quot;0&quot; /&gt;
+ *       &lt;arg name=&quot;--emake-root&quot; value=&quot;${build.drive}/;${env.EMAKE_ROOT};${helium.dir};${env.SBS_HOME}&quot; /&gt;
+ *   &lt;/hlm:sbsmakeoptions&gt;
+ * 
+ * @ant.type name="sbsMakeOptions" category="SBS"
+ */
+public class  SBSMakeOptions extends VariableSet {
+
+    private static Logger log = Logger.getLogger(SBSMakeOptions.class);
+
+    private String engine;
+
+    private String ppThreads;
+
+    
+    private boolean initialized;
+    /**
+     * Constructor
+     */
+    public SBSMakeOptions() {
+    }    
+
+    /**
+     * Helper function called by ant to create the new sbs make options
+     */
+    public SBSMakeOptions createSBSMakeOptions() {
+        SBSMakeOptions options =  new SBSMakeOptions();
+        add(options);
+        return options;
+    }
+
+    /**
+     * Helper function to add the created varset
+     * @param filter to be added to the varset
+     */
+    public void add(SBSMakeOptions option) {
+        super.add(option);
+    }
+
+    /**
+     * Sets the engine type for this options 
+     * @param engine for which the make options are used
+     */
+    public void setEngine(String engineName) {
+        engine = engineName;
+    }
+
+    /**
+     * Sets the ppthreads (no. bldinfs to process) 
+     * @param ppBlock no. bldinfs to process per block
+     */
+    public void setPPThreads(String ppBlock) {
+        ppThreads = ppBlock;
+    }
+
+    /**
+     * Returns the ppthreads required for parallel parsing support from raptor
+     * available from 2.11.2 of raptor for parallel builds. 
+     * @return the no. of threads to be used for parallel parsing the makefile.
+     */
+    public String getPPThreads() {
+        if (ppThreads == null) {
+            if (!initialized) {
+                initializeAll();
+                initialized = true;
+            }
+        }
+        return ppThreads;
+    }
+
+    /**
+     * Returns the engine name 
+     * @return type of make engine
+     */
+    public String getEngine() {
+        if (engine == null) {
+            if (!initialized) {
+                initializeAll();
+                initialized = true;
+            }
+            if (engine == null) {
+                throw new BuildException("engine should not be null");
+            }
+        }
+        return engine;
+    }
+
+    /**
+     * Initializes all the variableset associated with this options. First
+     * initializes the current object and then the objects embedded within this
+     * input. 
+     */
+    private void initializeAll() {
+        Object sbsInputObject = null;
+        List<VariableSet> varSets = getVariableSets();
+        initialize(this);
+        for (VariableSet varSet : varSets) {
+            initialize(varSet);
+        }
+    }
+
+    /**
+     * Initializes individual variable set 
+     */
+    private void initialize(VariableSet varSet) {
+        SBSMakeOptions makeOptions = null;
+        Reference refId = varSet.getRefid();
+        if (refId != null) {
+            try {
+                makeOptions = (SBSMakeOptions)refId.getReferencedObject();
+                if (makeOptions != null) {
+                    String refEngine = makeOptions.getEngine();
+                    String threads = makeOptions.getPPThreads();
+                    if (engine != null && !(engine.equals(refEngine))) {
+                        throw new BuildException(" Config's engine type " + engine + " not matching with reference : " 
+                                + refId.getRefId() + ": engine: " + refEngine);
+                    }
+                    if (ppThreads == null && threads != null) {
+                        ppThreads = threads;
+                    }
+                    if (engine == null) {
+                        engine = refEngine;
+                    }
+                }
+            } catch ( Exception ex) {
+                throw new BuildException(ex.getMessage());
+            }
+        }
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sbs/src/com/nokia/helium/sbs/plexus/CoverityErrorStreamConsumer.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,67 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+package com.nokia.helium.sbs.plexus;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import com.nokia.helium.core.plexus.FileStreamConsumer;
+import org.apache.log4j.Logger;
+
+
+/**
+ * Record a stream into a file. 
+ *
+ */
+public class CoverityErrorStreamConsumer extends FileStreamConsumer {
+    
+    private Logger log = Logger.getLogger(CoverityErrorStreamConsumer.class);
+    /**
+     * @param output
+     * @throws FileNotFoundException
+     */
+    public CoverityErrorStreamConsumer(File output) throws FileNotFoundException {
+        super(output);
+    }
+    
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public synchronized void consumeLine(String line) {
+        try {
+            Pattern pattern = Pattern.compile("ERROR", Pattern.CASE_INSENSITIVE);
+            Matcher match = pattern.matcher(line);
+            if (match.find()) {
+                BufferedWriter writer = getWriter();
+                writer.write("[SBSCoverity:] Error:" + line);
+                writer.newLine();
+            }
+            
+        } catch (IOException e) {
+            log.error("Error while writing to file: " + e.getMessage(), e);
+        }
+    }
+    
+    
+    
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sbs/src/com/nokia/helium/sbs/plexus/SBSErrorStreamConsumer.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,57 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+package com.nokia.helium.sbs.plexus;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.BufferedWriter;
+
+import org.apache.log4j.Logger;
+import com.nokia.helium.core.plexus.FileStreamConsumer;
+
+/**
+ * Record a stream into a file. 
+ *
+ */
+public class SBSErrorStreamConsumer extends FileStreamConsumer {
+    private Logger log = Logger.getLogger(SBSErrorStreamConsumer.class);
+    
+    /**
+     * Create a FileStreamConsumer which will record content to 
+     * the output file.
+     * @param output the file to write the output to.
+     * @throws FileNotFoundException if an error occur while opening the file.
+     */
+    public SBSErrorStreamConsumer(File output) throws FileNotFoundException {
+        super(output);
+    }
+    
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public synchronized void consumeLine(String line) {
+        try {
+            BufferedWriter writer = getWriter();
+            writer.write("[SBSTASK:] Error:" + line);
+            writer.newLine();
+        } catch (IOException e) {
+            log.error("Error while writing to file: " + e.getMessage(), e);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sbs/tests/bld.sh	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#
+# 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: 
+#
+
+if [ -f ~/.bashrc ] ; then
+    . ~/.bashrc
+fi
+ant $*
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sbs/tests/build.bat	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,31 @@
+@echo off
+
+rem
+rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+rem All rights reserved.
+rem This component and the accompanying materials are made available
+rem under the terms of the License "Eclipse Public License v1.0"
+rem which accompanies this distribution, and is available
+rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+rem
+rem Initial Contributors:
+rem Nokia Corporation - initial contribution.
+rem
+rem Contributors:
+rem
+rem Description: 
+rem
+
+setlocal
+if not defined JAVA_6_HOME (
+set TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
+) ELSE  set TESTED_JAVA=%JAVA_6_HOME%
+if exist %TESTED_JAVA% (set JAVA_HOME=%TESTED_JAVA%)
+call ant %*
+if "%ERRORLEVEL%" neq "0" (goto error)
+endlocal
+goto :eof
+
+:error
+endlocal
+if "%OS%"=="Windows_NT" color 00
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sbs/tests/build.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : build.xml 
+Part of     : Helium AntLib
+
+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="helium-sbs" xmlns:au="antlib:org.apache.ant.antunit">
+    <description>Helium Antlib sbs tests.</description>
+    <import file="${builder.dir}/java/test-macros.ant.xml"/>
+  
+    <dirname property="sbs.unitest.dir" file="${ant.file.helium-antlib-sbs-unittest}" />
+    <property environment="env" />
+    <import file="../../../../nokia/companyproperties.ant.xml" optional="true"/>
+    <import file="../../../../../extensions/nokia/external/helium-nokia-antlib/companyproperties.ant.xml" optional="true"/>
+</project>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sbs/tests/sbs_default_config.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,190 @@
+<?xml version="1.0"?>
+<!-- 
+============================================================================ 
+Name        : test_diamonds.ant.xml 
+Part of     : Helium AntLib
+
+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="sbs-default-config" xmlns:hlm="http://www.nokia.com/helium">
+    <description>Helium Antlib default sbs configuration.</description>
+    
+    <dirname property="project.dir" file="${ant.file.sbs-default-config}" />
+
+    <taskdef resource="com/nokia/helium/sbs/ant/antlib.xml" uri="http://www.nokia.com/helium" />
+    <taskdef resource="com/nokia/helium/core/ant/antlib.xml" uri="http://www.nokia.com/helium" />
+
+    <hlm:sbsbuild id="pf_7952">
+        <sbsInput refid="mainbuild-sbs-ec" >
+            <sbsOptions>
+                <arg line="-f armv5.log" />
+            </sbsOptions>
+        </sbsInput>
+    </hlm:sbsbuild>
+    
+    <hlm:sbsbuild id="sf_build">
+        <sbsInput refid="tools-sbs" />
+        <sbsInput refid="mainbuild-sbs" />
+    </hlm:sbsbuild>
+    
+    <!-- In future migrationg to 3.0 schema <sbsbuild> would also to handle layers and filters 
+        and also to include / exclude layers to be built 
+    -->
+
+    <!-- Common make options for particular engine values of it could be overridden by referencing it-->
+    <hlm:sbsmakeoptions id="commonEMakeOptions" engine="emake">
+        <arg name="--emake-emulation" value="gmake" />
+        <arg name="--emake-annodetail" value="basic,history,waiting" />
+        <arg name="--emake-class" value="${ec.build.class}" />
+        <arg name="--emake-historyfile" value="${ec.historyfile.dir}/raptor_clean.emake.data" />
+        <arg name="--case-sensitive" value="0" />
+    </hlm:sbsmakeoptions>
+        
+    <hlm:sbsmakeoptions id="commonGmakeOptions" engine="gmake" />
+
+    <hlm:sbsmakeoptions id="commonPVMGmakeOptions" engine="pvmgmake" />
+        
+    <!-- Tools specific make options inheriting the commone make option-->
+    <hlm:sbsmakeoptions id="toolsmake-sbs-ec">
+        <sbsmakeoptions refid="commonEMakeOptions" />
+        <arg name="--emake-maxagents" value="1" />
+    </hlm:sbsmakeoptions>
+            
+    <!-- Main build make option directly refering to common emake option -->
+    <hlm:sbsmakeoptions id="mainbuildmake-sbs-ec" engine="emake">
+        <sbsmakeoptions refid="commonEMakeOptions" />
+    </hlm:sbsmakeoptions>
+        
+    <!-- sbs input consists of sbs options and sbs make options, the sbs options remains same for all
+    the build system, the make options varies
+     -->
+    <hlm:sbsinput id="tools-sbs">
+        <sbsoptions>
+            <arg line="-c tools_rel -c tools2_rel" />
+            <arg name="-j" value="1" />
+        </sbsoptions>
+    </hlm:sbsinput>
+
+    <!-- sbs input for main build.
+     -->
+    <hlm:sbsinput id="mainbuild-sbs">
+        <sbsoptions>
+            <arg line="-c winscw -c armv5" />
+            <arg line="-f winscw.log" />
+        </sbsoptions>
+    </hlm:sbsinput>
+
+    <hlm:sbsinput id="mainbuild-sbs-ec">
+        <sbsoptions>
+            <arg line="-c winscw -c armv5" />
+            <arg line="-f winscw.log" />
+        </sbsoptions>
+        <sbsmakeoptions refid="mainbuildmake-sbs-ec" />
+    </hlm:sbsinput>
+
+    <!-- Main build make option directly refering to common emake option -->
+    <hlm:sbsmakeoptions id="common-inherit-ec-without-engine">
+        <arg name="--emake-emulation" value="gmake" />
+        <arg name="--emake-annodetail" value="basic,history,waiting" />
+        <arg name="--emake-class" value="${ec.build.class}" />
+        <arg name="--emake-historyfile" value="${ec.historyfile.dir}/raptor_clean.emake.data" />
+    </hlm:sbsmakeoptions>
+
+    <hlm:sbsmakeoptions id="common-inherit-ec-with-engine" engine="emake">
+        <arg name="--emake-emulation" value="gmake" />
+        <arg name="--emake-annodetail" value="basic,history,waiting" />
+        <arg name="--emake-class" value="${ec.build.class}" />
+        <arg name="--emake-historyfile" value="${ec.historyfile.dir}/raptor_clean.emake.data" />
+    </hlm:sbsmakeoptions>
+
+    <hlm:sbsmakeoptions id="common-inherit-ec-all-options" engine="emake">
+        <arg name="--emake-cm" value="fawec012" />
+        <arg name="--emake-root" value="X:\;c:\devtools " />
+        <arg name="--emake-emulation" value="gmake" />
+        <arg name="--emake-annodetail" value="basic,history,waiting" />
+        <arg name="--emake-annofile" value="c:\logs\emake.anno.xml" />
+        <arg name="--emake-class" value="${ec.build.class}" />
+        <arg name="--emake-historyfile" value="${ec.historyfile.dir}/raptor_clean.emake.data" />
+        <arg name="--emake-maxagents" value="1" />
+        <arg name="--emake-debug" value="c" />
+        <arg name="--emake-logfile" value="emake.c.dlog" />
+    </hlm:sbsmakeoptions>
+
+    <hlm:sbsinput id="engine-inherit1-sbs-ec">
+        <sbsoptions>
+            <arg line="-c winscw -c armv5" />
+            <arg line="-f winscw.log" />
+        </sbsoptions>
+        <sbsmakeoptions refid="common-inherit-ec-without-engine" />
+    </hlm:sbsinput>
+
+    <hlm:sbsinput id="engine-inherit2-sbs-ec">
+        <sbsoptions>
+            <arg line="-c winscw -c armv5" />
+            <arg line="-f winscw.log" />
+        </sbsoptions>
+        <sbsmakeoptions refid="common-inherit-ec-with-engine" />
+    </hlm:sbsinput>
+
+    <hlm:sbsinput id="engine-inherit3-sbs-ec">
+        <sbsoptions>
+            <arg line="-c winscw -c armv5" />
+        </sbsoptions>
+        <sbsmakeoptions refid="common-inherit-ec-with-engine" engine="ec-helium" />
+    </hlm:sbsinput>
+
+    <hlm:sbsinput id="engine-inherit4-sbs-ec">
+        <sbsoptions>
+            <arg line="-c winscw -c armv5" />
+            <arg line="-f winscw.log" />
+        </sbsoptions>
+        <sbsmakeoptions refid="common-inherit-ec-all-options" />
+    </hlm:sbsinput>
+
+    <hlm:sbsbuild id="inherit1">
+        <sbsInput refid="engine-inherit1-sbs-ec" >
+            <sbsOptions>
+                <arg line="-f armv5.log" />
+            </sbsOptions>
+        </sbsInput>
+    </hlm:sbsbuild>
+
+    <hlm:sbsbuild id="inherit2">
+        <sbsInput refid="engine-inherit2-sbs-ec" >
+            <sbsOptions>
+                <arg line="-f armv5.log" />
+            </sbsOptions>
+        </sbsInput>
+    </hlm:sbsbuild>
+
+    <hlm:sbsinput id="inherit3_sbs_input"> 
+        <sbsInput refid="engine-inherit3-sbs-ec" />
+        <sbsoptions>
+            <arg line="-f armv5.log" />
+        </sbsoptions>
+    </hlm:sbsinput>
+
+    <hlm:sbsbuild id="inherit3">
+        <sbsinput refid="inherit3_sbs_input" />
+    </hlm:sbsbuild>
+
+    <hlm:sbsbuild id="inherit4">
+        <sbsInput refid="engine-inherit4-sbs-ec" >
+        </sbsInput>
+    </hlm:sbsbuild>
+
+</project>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sbs/tests/test.sysdef.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,170 @@
+<?xml version="1.0"?>
+<!-- 
+============================================================================ 
+Name        : test.sysdef.xml 
+Part of     : Helium AntLib
+
+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:
+
+============================================================================
+-->
+<!DOCTYPE SystemDefinition [
+ <!ELEMENT SystemDefinition (systemModel?, build?)>
+ <!ATTLIST SystemDefinition
+  name CDATA #REQUIRED
+  schema CDATA #REQUIRED>
+ <!ELEMENT systemModel (layer+)>
+ <!ELEMENT layer (logicalset* | module*)*>
+ <!ATTLIST layer
+  name CDATA #REQUIRED
+  levels CDATA #IMPLIED
+  span CDATA #IMPLIED>
+ <!ELEMENT logicalset (logicalsubset* | module* | unit* | package* | prebuilt*)*>
+ <!ATTLIST logicalset 
+  name CDATA #REQUIRED
+  levels CDATA #IMPLIED  
+  span CDATA #IMPLIED
+  level CDATA #IMPLIED>
+ <!ELEMENT logicalsubset (module* | unit* | package* | prebuilt*)*>
+ <!ATTLIST logicalsubset name CDATA #REQUIRED>
+ <!ELEMENT module (component* | unit* | package* | prebuilt*)*>
+ <!ATTLIST module
+  name CDATA #REQUIRED
+  level CDATA #IMPLIED>
+ <!ELEMENT component (unit* | package* | prebuilt*)*>
+ <!ATTLIST component name CDATA #REQUIRED>
+ <!ELEMENT unit EMPTY>
+ <!ATTLIST unit
+  unitID ID #REQUIRED
+  name CDATA #REQUIRED
+  mrp CDATA #REQUIRED
+  filter CDATA #IMPLIED
+  bldFile CDATA #REQUIRED
+  priority CDATA #IMPLIED
+  contract CDATA #IMPLIED>
+ <!ELEMENT package EMPTY>
+ <!ATTLIST package
+  name CDATA #REQUIRED
+  mrp CDATA #REQUIRED
+  filter CDATA #IMPLIED
+  contract CDATA #IMPLIED>
+ <!ELEMENT prebuilt EMPTY>
+ <!ATTLIST prebuilt
+  name CDATA #REQUIRED
+  version CDATA #REQUIRED
+  late (Y|N) #IMPLIED
+  filter CDATA #IMPLIED
+  contract CDATA #IMPLIED>
+ <!ELEMENT build (option* | target+ | targetList+ | unitList+ | configuration+)*>
+ <!ELEMENT unitList (unitRef+)>
+ <!ATTLIST unitList
+  name ID #REQUIRED
+  description CDATA #REQUIRED>
+ <!ELEMENT unitRef EMPTY>
+ <!ATTLIST unitRef unit IDREF #REQUIRED>
+ <!ELEMENT targetList EMPTY>
+ <!ATTLIST targetList
+  name ID #REQUIRED
+  description CDATA #REQUIRED
+  target IDREFS #REQUIRED>
+ <!ELEMENT target EMPTY>
+ <!ATTLIST target
+  name ID #REQUIRED
+  abldTarget CDATA #REQUIRED
+  description CDATA #REQUIRED>
+ <!ELEMENT option EMPTY>
+ <!ATTLIST option
+  name ID #REQUIRED
+  abldOption CDATA #REQUIRED
+  description CDATA #REQUIRED
+  enable (Y | N | y | n) #REQUIRED>
+ <!ELEMENT configuration (unitListRef+ | layerRef+ | task+)*>
+ <!ATTLIST configuration
+  name ID #REQUIRED
+  description CDATA #REQUIRED
+  filter CDATA #REQUIRED>
+ <!ELEMENT task ( unitListRef* , (buildLayer | specialInstructions))>
+ <!ELEMENT unitListRef EMPTY>
+ <!ATTLIST unitListRef unitList IDREF #REQUIRED>
+ <!ELEMENT layerRef EMPTY>
+ <!ATTLIST layerRef layerName CDATA #REQUIRED>
+ <!ELEMENT buildLayer EMPTY>
+ <!ATTLIST buildLayer
+  command CDATA #REQUIRED
+  targetList IDREFS #IMPLIED
+  unitParallel (Y | N | y | n) #REQUIRED
+  targetParallel (Y | N | y | n) #IMPLIED>
+ <!ELEMENT specialInstructions EMPTY>
+ <!ATTLIST specialInstructions
+  name CDATA #REQUIRED
+  cwd CDATA #REQUIRED
+  command CDATA #REQUIRED>
+ <!ENTITY layer_real_source_path "/sf/os/mm" >
+]>
+<SystemDefinition name="test_model" schema="1.4.0">
+    <systemModel>
+        <layer name="include_layer_set">
+            <module name="multimedia_mdf">
+                <unit name="mmdevicefw" unitID="sos.mmdevicefw" bldFile="sf\os\mm\mmdevicefw\mdf\group" mrp="sf\os\mm\mmdevicefw\mdf\group\multimedia_mdf.mrp"/>
+            </module>
+            <module name="multimedia_testframework">
+                <unit name="mmtestfw" unitID="sos.mmtestfw" bldFile="sf\os\mm\mmtestenv\mmtestfw\group" mrp="sf\os\mm\mmtestenv\mmtestfw\group\multimedia_testframework_source.mrp"/>
+            </module>
+        </layer>
+        <layer name="exclude_layer_set">
+            <module name="mmimg_component_test_rom">
+                <unit name="mdfunittest" unitID="sos.mdfunittest" bldFile="sf\os\mm\mmdevicefw\mdfunittest\codecapi\audio\tsrc\group" mrp="" filter="mmimg_component_test_rom"/>
+            </module>
+        </layer>
+        <layer name="include_exclude_matcher">
+            <module name="mmimg_component_test_rom">
+                <unit name="mdfunittest" unitID="sos.mdfunittest" bldFile="sf\os\mm\mmdevicefw\mdfunittest\codecapi\audio\tsrc\group" mrp="" filter="mmimg_component_test_rom"/>
+            </module>
+        </layer>
+        <layer name="include_exclude_non-matcher">
+            <module name="mmimg_component_test_rom">
+                <unit name="mdfunittest" unitID="sos.mdfunittest" bldFile="sf\os\mm\mmdevicefw\mdfunittest\codecapi\audio\tsrc\group" mrp="" filter="mmimg_component_test_rom"/>
+            </module>
+        </layer>
+
+        <layer name="api_test_layer">
+          <module name="camera_api_tests">
+          	<unit unitID="imm.camera.camcorder_ui_constants_api" mrp="" bldFile="sf/app/camera/camera_plat/camcorder_ui_constants_api/tsrc/group"  name="camcorder_ui_constants_api"  />
+          </module>
+          <module name="active_palette_2_api_tests">
+          	<unit unitID="imm.camera.active_palette_2_api" mrp="" bldFile="sf/app/camera/camera_plat/active_palette_2_api/tsrc/group"  name="active_palette_2_api"  />
+          </module>
+        </layer>
+        
+        <layer name="unit_test_layer">
+          <module name="camera_unit_tests">
+          </module>
+        </layer>
+
+        <layer name="use_layer_real_Def_layer">
+          <module name="gallery">
+            <unit unitID="imm.gallery" mrp="" bldFile="&layer_real_source_path;/group" name="gallery" />
+          </module>
+        </layer>
+        
+        <layer name="use_no_name_layer">
+          <module name="noNameLayer">
+            <unit unitID="nomrp.gallery" name="gallery" />
+            <unit unitID="noname.gallery" mrp="" bldFile="&layer_real_source_path;/group" />
+          </module>
+        </layer>
+
+  </systemModel>
+</SystemDefinition>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sbs/tests/test_sbs_coverity.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,106 @@
+<?xml version="1.0"?>
+<!-- 
+============================================================================ 
+Name        : test_sbs_coverity.ant.xml 
+Part of     : Helium AntLib
+
+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="test-sbs-input" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
+    <description>Helium Antlib sbs unittests.</description>
+
+    <taskdef resource="com/nokia/helium/core/ant/antlib.xml" uri="http://www.nokia.com/helium"/>
+    <taskdef resource="com/nokia/helium/sbs/ant/antlib.xml" uri="http://www.nokia.com/helium"/>
+    <taskdef name="getVariableValue" classname="com.nokia.helium.core.ant.taskdefs.GetValueFromVariableSet"/>
+    <dirname property="test.sbs.dir" file="${ant.file.test-sbs-input}"/>
+    <property name="working.dir" value="${test.sbs.dir}" />
+    
+    <dirname property="project.dir" file="${ant.file.test-sbs-input}" />
+
+    <property name="build.system" value="sbs" />
+
+    <import file="${project.dir}/sbs_default_config.ant.xml" />
+    
+    <hlm:coverityoptions id="coverity.build.options">
+        <arg name="--config" value="${test.sbs.dir}/coverity_config.xml"/>
+        <arg name="--dir" value="${test.sbs.dir}"/>
+        <arg name="--auto-diff" value=""/>
+        <arg name="--preprocess-first" value=""/>
+        <arg name="--record-only" value=""/>
+    </hlm:coverityoptions>
+
+    <target name="test-coverity-7952">
+        <hlm:getsbsinputs config="pf_7952" outputProperty="sbs-inputs"/>
+        <hlm:coveritybuild outputLog="tmp" sbsinput="${sbs-inputs}" sysdefFile="test.sysdef.xml" 
+            workingDir="${working.dir}" execute="false">
+            <hlm:coverityoptions refid="coverity.build.options"/>
+        </hlm:coveritybuild>
+        <au:assertLogContains text="--auto-diff  --record-only"/>
+        <au:assertLogContains text="cov-build"/>
+        <au:assertLogContains text="-c armv5"/>
+    </target>
+
+    <target name="test-coverity-without-sysdef">
+        <property name="build.system" value="sbs" />
+        <au:expectfailure>
+            <hlm:getsbsinputs config="pf_7952" outputProperty="sbs-inputs"/>
+            <hlm:coveritybuild outputLog="tmp" sbsinput="pf_7952" workingDir="${working.dir}" execute="false">
+                <hlm:coverityoptions refid="coverity.build.options"/>
+            </hlm:coveritybuild>
+        </au:expectfailure>
+    </target>
+
+    <target name="test-coverity-without-working-dir">
+        <property name="build.system" value="sbs" />
+        <au:expectfailure>
+            <hlm:getsbsinputs config="pf_7952" outputProperty="sbs-inputs"/>
+            <hlm:coveritybuild outputLog="tmp" sbsinput="${sbs-inputs}" sysdefFile="test.sysdef.xml" execute="false" >
+                <hlm:coverityoptions refid="coverity.build.options"/>
+            </hlm:coveritybuild>
+        </au:expectfailure>
+    </target>
+
+    <target name="test-coverity-sbs">
+        <property name="build.system" value="sbs" />
+        <hlm:getsbsinputs config="pf_7952" outputProperty="sbs-inputs"/>
+        <hlm:coveritybuild outputLog="tmp" sbsinput="${sbs-inputs}" sysdefFile="test.sysdef.xml" 
+            workingDir="${working.dir}" execute="false">
+            <hlm:coverityoptions refid="coverity.build.options"/>
+        </hlm:coveritybuild>
+        <au:assertLogContains text="--auto-diff  --record-only"/>
+        <au:assertLogContains text="cov-build"/>
+        <au:assertLogContains text="-c armv5"/>
+    </target>
+
+    <target name="test-coverity-sbs-ec">
+        <property name="build.system" value="sbs-ec" />
+        <hlm:getsbsinputs config="pf_7952" outputProperty="sbs-inputs"/>
+        <hlm:coveritybuild outputLog="tmp" sbsinput="${sbs-inputs}" sysdefFile="test.sysdef.xml" 
+            workingDir="${working.dir}" execute="false">
+            <hlm:coverityoptions refid="coverity.build.options"/>
+        </hlm:coveritybuild>
+        <au:assertLogContains text="cov-build"/>
+        <au:assertLogContains text="-c armv5"/>
+        <au:assertLogContains text="--auto-diff  --record-only"/>
+        <au:assertLogDoesntContain text="-e emake"/>
+        <au:assertLogDoesntContain text="--mo=--emake-annodetail=basic,history,waiting"/>
+         
+    </target>
+
+
+</project>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sbs/tests/test_sbs_input.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,270 @@
+<?xml version="1.0"?>
+<!-- 
+============================================================================ 
+Name        : test_sbs_input.ant.xml 
+Part of     : Helium AntLib
+
+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="test-sbs-input" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
+    <description>Helium Antlib sbs unittests.</description>
+
+    <taskdef resource="com/nokia/helium/core/ant/antlib.xml" uri="http://www.nokia.com/helium"/>
+    <taskdef resource="com/nokia/helium/sbs/ant/antlib.xml" uri="http://www.nokia.com/helium"/>
+    <taskdef name="getVariableValue" classname="com.nokia.helium.core.ant.taskdefs.GetValueFromVariableSet"/>
+    <dirname property="test.sbs.dir" file="${ant.file.test-sbs-input}"/>
+    <property name="working.dir" value="${test.sbs.dir}" />
+    <patternset id="includeLayerPatternSet" >
+        <include name="include_layer_.*"/>
+    </patternset>
+
+    <patternset id="includeNoneExistantLayerPatternSet" >
+        <include name="nonexistant_nclude_layer_.*"/>
+    </patternset>
+
+    <patternset id="emptySet" />
+
+    <patternset id="excludeLayerPatternSet" >
+        <exclude name="exclude_layer_.*" />
+    </patternset>
+
+    <patternset id="incExcludeLayerPatternSet" >
+        <include name="include_exclude_.*" />
+        <exclude name="include_exclude_non-matcher.*" />
+    </patternset>
+
+    <patternset id="includeSomeNoneExistantLayerPatternSet" >
+        <include name="include_exclude_.*" />
+        <exclude name="include_exclude_non-matcher.*" />
+        <include name="nonexistant_nclude_layer_.*"/>
+    </patternset>
+
+    <patternset id="includeUnitLayerPatternSet" >
+        <include name="api_test_layer" />
+    </patternset>
+
+    <patternset id="includeDefLayerPatternSet" >
+        <include name="use_layer_real_Def_layer" />
+    </patternset>
+
+    <patternset id="includeNoNameLayerPatternSet" >
+        <include name="use_no_name_layer" />
+    </patternset>
+
+    <dirname property="project.dir" file="${ant.file.test-sbs-input}" />
+
+    <property name="build.system" value="sbs" />
+
+    <import file="${project.dir}/sbs_default_config.ant.xml" />
+
+    <target name="test-7952">
+        <hlm:getsbsinputs config="pf_7952" outputProperty="sbs-inputs"/>
+        <hlm:sbstask outputLog="tmp" sbsinput="${sbs-inputs}" sysdefFile="test.sysdef.xml" 
+            workingDir="${working.dir}" execute="false"/>
+    </target>
+
+    <target name="test-without-sysdef">
+        <property name="build.system" value="sbs" />
+        <au:expectfailure>
+            <hlm:getsbsinputs config="pf_7952" outputProperty="sbs-inputs"/>
+            <hlm:sbstask outputLog="tmp" sbsinput="pf_7952" workingDir="${working.dir}" execute="false"/>
+        </au:expectfailure>
+    </target>
+
+    <target name="test-without-working-dir">
+        <property name="build.system" value="sbs" />
+        <au:expectfailure>
+            <hlm:getsbsinputs config="pf_7952" outputProperty="sbs-inputs"/>
+            <hlm:sbstask outputLog="tmp" sbsinput="${sbs-inputs}" sysdefFile="test.sysdef.xml" execute="false" />
+        </au:expectfailure>
+    </target>
+
+    <target name="test-sbs">
+        <property name="build.system" value="sbs" />
+        <hlm:getsbsinputs config="pf_7952" outputProperty="sbs-inputs"/>
+        <hlm:sbstask outputLog="tmp" sbsinput="${sbs-inputs}" sysdefFile="test.sysdef.xml" 
+            workingDir="${working.dir}" execute="false"/>
+    </target>
+
+    <target name="test-sbs-ec">
+        <property name="build.system" value="sbs-ec" />
+        <hlm:getsbsinputs config="pf_7952" outputProperty="sbs-inputs"/>
+        <hlm:sbstask outputLog="tmp" sbsinput="${sbs-inputs}" sysdefFile="test.sysdef.xml" 
+            workingDir="${working.dir}" execute="false"/>
+    </target>
+
+    <target name="test-all-layers">
+        <property name="build.system" value="sbs" />
+        <hlm:getsbsinputs config="pf_7952" outputProperty="sbs-inputs"/>
+        <hlm:sbstask outputLog="tmp" sbsinput="${sbs-inputs}" sysdefFile="test.sysdef.xml" 
+            workingDir="${working.dir}" execute="false"/>
+    </target>
+
+    <target name="test-include-layers">
+        <property name="build.system" value="sbs" />
+        <hlm:getsbsinputs config="pf_7952" outputProperty="sbs-inputs"/>
+        <hlm:sbstask outputLog="tmp" sbsinput="${sbs-inputs}" sysdefFile="test.sysdef.xml" 
+            layerPatternSetRef="includeLayerPatternSet" workingDir="${working.dir}"
+            execute="false"/>
+        <au:assertLogContains text="sbs" />
+        <au:expectfailure>
+            <au:assertLogContains text="-l exclude_layer_set" />
+        </au:expectfailure>
+        <au:expectfailure>
+            <au:assertLogContains text="-l include_exclude_matcher" />
+        </au:expectfailure>
+        <au:expectfailure>
+            <au:assertLogContains text="-l include_exclude_non-matcher" />
+        </au:expectfailure>
+    </target>
+
+    <target name="test-exclude-layers">
+        <property name="build.system" value="sbs-ec" />
+        <hlm:getsbsinputs config="pf_7952" outputProperty="sbs-inputs"/>
+        <hlm:sbstask outputLog="tmp" sbsinput="${sbs-inputs}" sysdefFile="test.sysdef.xml" 
+            layerPatternSetRef="excludeLayerPatternSet" 
+            workingDir="${working.dir}" execute="false"/>
+        <au:assertLogContains text="-l include_layer_set" />
+        <au:assertLogContains text="-l include_exclude_matcher" />
+        <au:assertLogContains text="-l include_exclude_non-matcher" />
+    </target>
+
+    <target name="test-nonexistant-layers">
+        <property name="build.system" value="sbs" />
+        <hlm:getsbsinputs config="pf_7952" outputProperty="sbs-inputs"/>
+        <hlm:sbstask outputLog="tmp" sbsinput="${sbs-inputs}" sysdefFile="test.sysdef.xml" 
+            layerPatternSetRef="includeNoneExistantLayerPatternSet" workingDir="${working.dir}"
+            execute="false"/>
+        <au:assertLogContains text="No matching layer" />
+    </target>
+
+    <target name="test-nonexistant-with-some-layers">
+        <property name="build.system" value="sbs" />
+        <hlm:getsbsinputs config="pf_7952" outputProperty="sbs-inputs"/>
+        <hlm:sbstask outputLog="tmp" sbsinput="${sbs-inputs}" sysdefFile="test.sysdef.xml" 
+            layerPatternSetRef="includeSomeNoneExistantLayerPatternSet" workingDir="${working.dir}"
+            execute="false"/>
+        <au:expectfailure>
+            <au:assertLogContains text="-l exclude_layer_set" />
+        </au:expectfailure>
+        <au:assertLogContains text="-l include_exclude_matcher" />
+        <au:expectfailure>
+            <au:assertLogContains text="-l include_exclude_non-matcher" />
+        </au:expectfailure>
+    </target>
+
+    <target name="test-include-unitID-layers">
+        <property name="build.system" value="sbs" />
+        <hlm:getsbsinputs config="pf_7952" outputProperty="sbs-inputs"/>
+        <hlm:sbstask outputLog="tmp" sbsinput="${sbs-inputs}" sysdefFile="test.sysdef.xml" 
+            layerPatternSetRef="includeUnitLayerPatternSet" workingDir="${working.dir}"
+            execute="false"/>
+        <au:assertLogContains text="sbs" />
+        <au:assertLogContains text="-l api_test_layer" />
+    </target>
+
+    <target name="test-include-exclude-layers">
+        <property name="build.system" value="sbs" />
+        <hlm:getsbsinputs config="pf_7952" outputProperty="sbs-inputs"/>
+        <hlm:sbstask outputLog="tmp" sbsinput="${sbs-inputs}" sysdefFile="test.sysdef.xml" 
+            layerPatternSetRef="incExcludeLayerPatternSet" 
+            workingDir="${working.dir}" execute="false"/>
+        <au:assertLogContains text="-l include_exclude_matcher" />
+    </target>
+
+    <target name="test-empty-pattern-set">
+        <property name="build.system" value="sbs-ec" />
+        <au:expectfailure>
+            <hlm:getsbsinputs config="pf_7952" outputProperty="sbs-inputs"/>
+            <hlm:sbstask outputLog="tmp" config="${sbs-inputs}" sysdefFile="test.sysdef.xml" 
+                layerPatternSetRef="emptySet" 
+                workingDir="${working.dir}" execute="false"/>
+        </au:expectfailure>
+    </target>
+
+    <target name="test-engine-inheritence1">
+        <property name="build.system" value="sbs-ec" />
+        <au:expectfailure>
+            <hlm:getsbsinputs config="inherit1" outputProperty="sbs-inputs"/>
+            <hlm:sbstask outputLog="tmp" sbsinput="${sbs-inputs}" sysdefFile="test.sysdef.xml" 
+                workingDir="${working.dir}" execute="false"/>
+        </au:expectfailure>
+    </target>
+
+    <target name="test-engine-inheritence2">
+        <property name="build.system" value="sbs-ec" />
+        <hlm:getsbsinputs config="inherit2" outputProperty="sbs-inputs"/>
+        <hlm:sbstask outputLog="tmp" sbsinput="${sbs-inputs}" sysdefFile="test.sysdef.xml" workingDir="${working.dir}" execute="false"/>
+        <au:assertLogContains text="-e emake" />
+    </target>
+
+    <target name="test-engine-inheritence3">
+        <property name="build.system" value="sbs-ec" />
+        <au:expectfailure>
+            <hlm:getsbsinputs config="inherit3" outputProperty="sbs-inputs"/>
+            <hlm:sbstask outputLog="tmp" sbsinput="${sbs-inputs}" sysdefFile="test.sysdef.xml" 
+                workingDir="${working.dir}" execute="false"/>
+        </au:expectfailure>
+    </target>
+
+    <target name="test-engine-inheritence4">
+        <property name="build.system" value="sbs-ec" />
+        <hlm:getsbsinputs config="inherit4" outputProperty="sbs-inputs"/>
+        <hlm:sbstask outputLog="tmp" sbsinput="${sbs-inputs}" sysdefFile="test.sysdef.xml" workingDir="${working.dir}" execute="false"/>
+        <au:assertLogContains text="-e emake" />
+        <au:assertLogContains text="logfile" />
+    </target>
+
+    <target name="test-getinputs">
+        <property name="build.system" value="sbs-ec" />
+        <hlm:getsbsinputs config="inherit3" outputProperty="sbs-inputs"/>
+        <echo message="sbs-inputs: ${sbs-inputs}" />
+        <getVariableValue name="-f" property="sbs.log.file">
+            <hlm:sbsinput refid="${sbs-inputs}" />
+        </getVariableValue>
+        <echo message="${sbs-inputs}" />
+    </target>
+
+    <target name="test-include-def-layer">
+        <property name="build.system" value="sbs" />
+        <hlm:getsbsinputs config="pf_7952" outputProperty="sbs-inputs"/>
+        <hlm:sbstask outputLog="tmp" sbsinput="${sbs-inputs}" sysdefFile="test.sysdef.xml" 
+            layerPatternSetRef="includeDefLayerPatternSet" workingDir="${working.dir}"
+            execute="false"/>
+        <au:assertLogContains text="sbs" />
+    </target>
+
+    <target name="test-include-error-layer">
+        <property name="build.system" value="sbs" />
+        <hlm:getsbsinputs config="pf_7952" outputProperty="sbs-inputs"/>
+        <hlm:sbstask outputLog="tmp" sbsinput="${sbs-inputs}" sysdefFile="test.sysdef.xml" 
+            layerPatternSetRef="includeNoNameLayerPatternSet" workingDir="${working.dir}"
+            execute="false"/>
+        <au:assertLogContains text="-l use_no_name_layer" />
+    </target>
+
+    <target name="test-ctc">
+        <property name="build.system" value="sbs" />
+        <hlm:getsbsinputs config="pf_7952" outputProperty="sbs-inputs"/>
+        <hlm:ctctask outputLog="tmp" sbsinput="${sbs-inputs}" sysdefFile="test.sysdef.xml" 
+            layerPatternSetRef="includeNoNameLayerPatternSet" workingDir="${working.dir}"
+            execute="false"/>
+        <au:assertLogContains text="-i m sbs" />
+    </target>
+
+</project>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/build.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : build.xml 
+Part of     : Helium AntLib
+
+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="helium-scm">
+    <description>Helium Antlib SCM.</description>
+    
+    <import file="${builder.dir}/java/macros.ant.xml"/>
+    
+    <property name="name" value="scm"/>
+    
+</project>
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/demo/build.bat	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,25 @@
+@echo off
+
+rem
+rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+rem All rights reserved.
+rem This component and the accompanying materials are made available
+rem under the terms of the License "Eclipse Public License v1.0"
+rem which accompanies this distribution, and is available
+rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+rem
+rem Initial Contributors:
+rem Nokia Corporation - initial contribution.
+rem
+rem Contributors:
+rem
+rem Description: 
+rem
+
+setlocal
+if not defined JAVA_6_HOME (
+set TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
+) ELSE  set TESTED_JAVA=%JAVA_6_HOME%
+if exist %TESTED_JAVA% (set JAVA_HOME=%TESTED_JAVA%)
+ant -lib ..\..\bin -lib ..\..\lib -lib ..\lib %*
+endlocal
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/demo/build.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,409 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : build.xml 
+Part of     : Helium AntLib
+
+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="demo" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
+    <description>Helium Antlib SCM demo.</description>
+
+    <taskdef name="scm" classname="com.nokia.helium.scm.ant.taskdefs.ScmTask" uri="http://www.nokia.com/helium" />
+    <typedef name="latestTag" classname="com.nokia.helium.scm.ant.types.LatestTag" uri="http://www.nokia.com/helium" />
+    <typedef name="tagSet" classname="com.nokia.helium.scm.ant.types.TagSet" uri="http://www.nokia.com/helium" />
+
+    <target name="setup">
+        <delete dir="./temp" failonerror="false" />
+        <unzip src="hg_test1.zip" dest="./temp" />
+        <unzip src="hg_test2.zip" dest="./temp" />
+        <unzip src="hg_test3.zip" dest="./temp" />
+        <property name="test1.dir" location="./temp/test1" />
+        <property name="test2.dir" location="./temp/test2" />
+        <property name="test3.dir" location="./temp/test3" />
+    </target>
+
+    <target name="get-status">
+        <hlm:scm verbose="true" scmUrl="scm:hg:${ant.file.demo}/../temp/test1">
+            <hlm:status>
+                <fileset dir="${ant.file.demo}/../temp/test1">
+                    <include name="**" />
+                    <exclude name="**/.hg/**" />
+                </fileset>
+            </hlm:status>
+        </hlm:scm>
+    </target>
+
+    <target name="demo-status">
+        <antcall target="get-status" />
+        <echo file="${ant.file.demo}/../temp/test1/not_in_repo.txt">Not in repo</echo>
+        <antcall target="get-status" />
+        <hlm:scm verbose="true" scmUrl="scm:hg:${ant.file.demo}/../temp/test1">
+            <hlm:add>
+                <fileset dir="${ant.file.demo}/../temp/test1">
+                    <include name="**" />
+                    <exclude name="**/.hg/**" />
+                </fileset>
+            </hlm:add>
+        </hlm:scm>
+        <antcall target="get-status" />
+    </target>
+
+    <target name="demo-diff" depends="setup">
+        <echo file="${ant.file.demo}/../temp/test1/not_in_repo.txt">Not in repo</echo>
+        <hlm:scm verbose="true" scmUrl="scm:hg:${ant.file.demo}/../temp/test1">
+            <hlm:add>
+                <fileset dir="${ant.file.demo}/../temp/test1">
+                    <include name="**" />
+                    <exclude name="**/.hg/**" />
+                </fileset>
+            </hlm:add>
+        </hlm:scm>
+
+        <hlm:scm verbose="true" scmUrl="scm:hg:${ant.file.demo}/../temp/test1">
+            <hlm:diff>
+                <fileset dir="${ant.file.demo}/../temp/test1">
+                    <include name="**" />
+                    <exclude name="**/.hg/**" />
+                </fileset>
+            </hlm:diff>
+        </hlm:scm>
+    </target>
+
+
+    <!--DEMO "checkout" -->
+    <target name="demo-checkout" depends="setup">
+        <property name="temp.dir" location="${ant.file.demo}/../temp" />
+        <hlm:scm verbose="true" scmUrl="scm:hg:${temp.dir}/test3">
+            <!--Clone-->
+            <hlm:checkout baseDir="${temp.dir}/clones/clone" />
+
+            <!--Clone to revision '0'-->
+            <hlm:checkout baseDir="${temp.dir}/clones/clone_rev_0">
+                <hlm:revision name="0" />
+            </hlm:checkout>
+
+            <!--Clone to revision '1'-->
+            <hlm:checkout baseDir="${temp.dir}/clones/clone_rev_1">
+                <hlm:revision name="1" />
+            </hlm:checkout>
+        </hlm:scm>
+    </target>
+
+    <target name="demo-all" depends="setup">
+        <mkdir dir="${ant.file.demo}/../temp/cloned" />
+        <echo file="${ant.file.demo}/../temp/test1/not_in_repo.txt">Not in repo</echo>
+        <echo file="${ant.file.demo}/../temp/test1/not_in_repo2.txt">Not in repo2</echo>
+
+        <hlm:scm verbose="false" scmUrl="scm:hg:${test1.dir}">
+            <hlm:checkout baseDir="${ant.file.demo}/../temp/cloned" />
+            <hlm:add>
+                <fileset dir="${ant.file.demo}/../temp/test1">
+                    <include name="not_in_repo.txt" />
+                </fileset>
+            </hlm:add>
+            <hlm:checkin message="Adding not_in_repo.txt...">
+                <fileset dir="${ant.file.demo}/../temp/test1">
+                    <include name="not_in_repo.txt" />
+                </fileset>
+            </hlm:checkin>
+            <hlm:tag baseDir="${ant.file.demo}/../temp/test1" name="1.0.0" />
+            <hlm:add>
+                <fileset dir="${ant.file.demo}/../temp/test1">
+                    <include name="not_in_repo2.txt" />
+                </fileset>
+            </hlm:add>
+            <hlm:checkin message="Adding not_in_repo2.txt...">
+                <fileset dir="${ant.file.demo}/../temp/test1">
+                    <include name="not_in_repo2.txt" />
+                </fileset>
+            </hlm:checkin>
+            <hlm:tag baseDir="${ant.file.demo}/../temp/test1" name="1.0.1" />
+        </hlm:scm>
+
+
+        <hlm:scm verbose="false" scmUrl="scm:hg:${ant.file.demo}/../temp/cloned">
+            <hlm:pull baseDir="${ant.file.demo}/../temp/cloned" />
+            <hlm:update baseDir="${ant.file.demo}/../temp/cloned" />
+            <hlm:tags baseDir="${ant.file.demo}/../temp/cloned" reference="cloned.tags" />
+            <hlm:update baseDir="${ant.file.demo}/../temp/cloned">
+                <hlm:latestTag pattern="1.0.*">
+                    <hlm:tagSet refid="cloned.tags" />
+                </hlm:latestTag>
+            </hlm:update>
+        </hlm:scm>
+
+        <hlm:scm verbose="true" scmUrl="scm:hg:${ant.file.demo}/../temp/cloned">
+            <hlm:remove message="Nothing to remove...">
+                <fileset dir="${ant.file.demo}/../temp/cloned">
+                    <include name="*.txt" />
+                </fileset>
+            </hlm:remove>
+        </hlm:scm>
+
+    </target>
+
+    <target name="demo-export" depends="setup">
+        <mkdir dir="${ant.file.demo}/../temp/export" />
+
+        <hlm:scm verbose="false" scmUrl="scm:hg:${ant.file.demo}/../temp/test2">
+            <hlm:export baseDir="${ant.file.demo}/../temp/test2" destPath="${ant.file.demo}/../temp/export">
+                <tag name="2" />
+            </hlm:export>
+        </hlm:scm>
+    </target>
+
+    <!--DEMO "Tagging" -->
+    <target name="demo-tag" depends="setup">
+        <property name="temp.dir" location="${ant.file.demo}/../temp" />
+
+        <hlm:scm verbose="true" scmUrl="scm:hg:${temp.dir}/test1">
+            <hlm:checkout baseDir="${temp.dir}/tag" />
+        </hlm:scm>
+
+        <echo file="${temp.dir}/tag/newfile.txt">newly added</echo>
+
+        <hlm:scm verbose="false" scmUrl="scm:hg:${temp.dir}/tag">
+            <hlm:add>
+                <fileset dir="${temp.dir}/tag">
+                    <include name="*.txt" />
+                </fileset>
+            </hlm:add>
+            <hlm:checkin message="Adding files .....">
+                <fileset dir="${temp.dir}/tag">
+                    <include name="*.txt" />
+                </fileset>
+            </hlm:checkin>
+
+            <hlm:tag baseDir="${temp.dir}/tag" name="tag_0.1" level="local" />
+            <hlm:tag baseDir="${temp.dir}/tag" name="tag_0.2" />
+
+        </hlm:scm>
+    </target>
+
+    <!--DEMO "Branch" -->
+    <target name="demo-branch" depends="setup">
+        <property name="temp.dir" location="${ant.file.demo}/../temp" />
+
+        <hlm:scm verbose="true" scmUrl="scm:hg:${temp.dir}/test1">
+            <hlm:checkout baseDir="${temp.dir}/branch" revision="0" />
+        </hlm:scm>
+
+        <echo file="${temp.dir}/branch/newfile.txt">newly added</echo>
+        <echo file="${temp.dir}/branch/newfile2.txt">newly added</echo>
+        <echo file="${temp.dir}/branch/newfile3.txt">newly added</echo>
+
+        <hlm:scm verbose="false" scmUrl="scm:hg:${temp.dir}/branch">
+            <hlm:branch baseDir="${temp.dir}/branch" name="test_0.1" />
+            <hlm:add>
+                <fileset dir="${temp.dir}/branch">
+                    <include name="*.txt" />
+                </fileset>
+            </hlm:add>
+            <hlm:checkin message="Adding files .....">
+                <fileset dir="${temp.dir}/branch">
+                    <include name="*.txt" />
+                </fileset>
+            </hlm:checkin>
+        </hlm:scm>
+    </target>
+
+    <!--DEMO "update" -->
+    <target name="demo-update" depends="setup">
+        <property name="temp.dir" location="${ant.file.demo}/../temp" />
+
+        <!--Create the first revision -->
+        <echo file="${temp.dir}/test1/not_in_repo1.txt">Not in repo1</echo>
+        <hlm:scm verbose="true" scmUrl="scm:hg:${temp.dir}/test1">
+            <hlm:add>
+                <fileset dir="${temp.dir}/test1">
+                    <include name="not_in_repo1.txt" />
+                    <exclude name="**/.hg/**" />
+                </fileset>
+            </hlm:add>
+        </hlm:scm>
+        <hlm:scm verbose="true" scmUrl="scm:hg:${temp.dir}/test1">
+            <hlm:checkin message="Adding not_in_repo1.txt...">
+                <fileset dir="${temp.dir}/test1">
+                    <include name="not_in_repo1.txt" />
+                </fileset>
+            </hlm:checkin>
+        </hlm:scm>
+
+        <!--Create the second revision -->
+        <echo file="${temp.dir}/test1/not_in_repo2.txt">Not in repo2</echo>
+        <hlm:scm verbose="true" scmUrl="scm:hg:${temp.dir}/test1">
+            <hlm:add>
+                <fileset dir="${temp.dir}/test1">
+                    <include name="not_in_repo2.txt" />
+                    <exclude name="**/.hg/**" />
+                </fileset>
+            </hlm:add>
+        </hlm:scm>
+        <hlm:scm verbose="true" scmUrl="scm:hg:${temp.dir}/test1">
+            <hlm:checkin message="Adding not_in_repo2.txt...">
+                <fileset dir="${temp.dir}/test1">
+                    <include name="not_in_repo2.txt" />
+                </fileset>
+            </hlm:checkin>
+        </hlm:scm>
+
+        <!-- Update to first revision -->
+        <hlm:scm verbose="true" scmUrl="scm:hg:${temp.dir}/test1">
+            <hlm:update baseDir="${temp.dir}/test1">
+                <hlm:revision name="0" />
+            </hlm:update>
+        </hlm:scm>
+
+    </target>
+
+    <!--DEMO "Change Log" -->
+    <target name="demo-changelog" depends="setup">
+        <property name="temp.dir" location="${ant.file.demo}/../temp" />
+
+        <hlm:scm verbose="true" scmUrl="scm:hg:${temp.dir}/test1">
+            <hlm:checkout baseDir="${temp.dir}/changelog" />
+            <hlm:tag baseDir="${temp.dir}/changelog" name="tag_0.2" />
+            <hlm:branch baseDir="${temp.dir}/changelog" name="test_0.1" />
+        </hlm:scm>
+
+        <echo file="${temp.dir}/changelog/newfile.txt">newly added</echo>
+        <echo file="${temp.dir}/changelog/newfile2.txt">newly added</echo>
+        <echo file="${temp.dir}/changelog/newfile3.txt">newly added</echo>
+
+        <hlm:scm verbose="false" scmUrl="scm:hg:${temp.dir}/changelog">
+            <hlm:add>
+                <fileset dir="${temp.dir}/changelog">
+                    <include name="*.txt" />
+                </fileset>
+            </hlm:add>
+            <hlm:checkin message="Adding files .....">
+                <fileset dir="${temp.dir}/changelog">
+                    <include name="*.txt" />
+                </fileset>
+            </hlm:checkin>
+            <hlm:changelog basedir="${temp.dir}/changelog" startVersion="0" />
+        </hlm:scm>
+
+        <echo file="${temp.dir}/changelog/newfile4.txt">newly added</echo>
+        <echo file="${temp.dir}/changelog/newfile5.txt">newly added</echo>
+        <echo file="${temp.dir}/changelog/newfile6.txt">newly added</echo>
+
+        <hlm:scm verbose="false" scmUrl="scm:hg:${temp.dir}/changelog">
+            <hlm:add>
+                <fileset dir="${temp.dir}/changelog">
+                    <include name="*.txt" />
+                </fileset>
+            </hlm:add>
+            <hlm:checkin message="Adding files .....">
+                <fileset dir="${temp.dir}/changelog">
+                    <include name="*.txt" />
+                </fileset>
+            </hlm:checkin>
+            <!--hlm:changelog baseDir="${temp.dir}/changelog" numDays='1' /-->
+            <!--hlm:changelog baseDir="${temp.dir}/changelog" startDate="20090317 18:49:31" endDate="20090323 24:49:31" datePattern="yyyyMMdd HH:mm:ss" /-->
+            <!--hlm:changelog basedir="${temp.dir}/changelog" startVersion="0" /-->
+            <hlm:changelog basedir="${temp.dir}/changelog" startVersion="1" endVersion="2"/>
+            <!--hlm:changelog basedir="${temp.dir}/changelog" startVersion="1" endVersion="2" logOutput="xml" /-->
+        </hlm:scm>
+    </target>
+    
+    <!--DEMO "info" -->
+    <target name="demo-info" depends="setup">
+        <property name="temp.dir" location="${ant.file.demo}/../temp" />
+
+        <hlm:scm verbose="true" scmUrl="scm:hg:${temp.dir}/test1">
+            <hlm:checkout baseDir="${temp.dir}/info" />            
+        </hlm:scm>
+
+        <echo file="${temp.dir}/info/newfile.txt">newly added</echo>
+        <echo file="${temp.dir}/info/newfile2.txt">newly added</echo>
+        <echo file="${temp.dir}/info/newfile3.txt">newly added</echo>
+
+        <hlm:scm verbose="false" scmUrl="scm:hg:${temp.dir}/info">
+            <hlm:add>
+                <fileset dir="${temp.dir}/info">
+                    <include name="*.txt" />
+                </fileset>
+            </hlm:add>
+            <hlm:checkin message="Adding files .....">
+                <fileset dir="${temp.dir}/info">
+                    <include name="*.txt" />
+                </fileset>
+            </hlm:checkin>
+            <hlm:info baseDir="${ant.file.demo}/../temp/info"/>
+        </hlm:scm>
+    </target>
+      
+    <!--DEMO "failonerror-false" -->
+    <target name="demo-failonerror-false" depends="setup">
+        <property name="temp.dir" location="${ant.file.demo}/../temp" />        
+        <hlm:scm verbose="true" scmUrl="scm:hg:${temp.dir}/test1">
+            <hlm:checkout baseDir="${temp.dir}/tag" />
+        </hlm:scm>        
+        <echo file="${temp.dir}/tag/newfile.txt">newly added</echo>        
+        <hlm:scm verbose="false" scmUrl="scm:hg:${temp.dir}/tag" failonerror="false">
+            <hlm:add>
+                <fileset dir="${temp.dir}/tag">
+                    <include name="*.txt" />
+                </fileset>
+            </hlm:add>
+            <hlm:checkin message="Adding files .....">
+                <fileset dir="${temp.dir}/tag">
+                    <include name="*.txt" />
+                </fileset>
+            </hlm:checkin>            
+            <!-- Build should continue as failonerror="false" -->
+            <hlm:tag baseDir="${temp.dir}/tag" name="tag_0.2"/>
+            <hlm:tag baseDir="${temp.dir}/tag" name="tag_0.2"/>            
+        </hlm:scm>        
+        <echo> Build continue.... </echo>        
+    </target>
+    
+    <!--DEMO "failonerror-true" -->
+    <target name="demo-failonerror-true" depends="setup">
+        <property name="temp.dir" location="${ant.file.demo}/../temp" />
+        <hlm:scm verbose="true" scmUrl="scm:hg:${temp.dir}/test1">
+            <hlm:checkout baseDir="${temp.dir}/tag" />
+        </hlm:scm>
+        <echo file="${temp.dir}/tag/newfile.txt">newly added</echo>    
+        <hlm:scm verbose="false" scmUrl="scm:hg:${temp.dir}/tag" failonerror="true">
+            <hlm:add>
+                <fileset dir="${temp.dir}/tag">
+                    <include name="*.txt" />
+                </fileset>
+            </hlm:add>
+            <hlm:checkin message="Adding files .....">
+                <fileset dir="${temp.dir}/tag">
+                    <include name="*.txt" />
+                </fileset>
+            </hlm:checkin>            
+            <!-- Build should fail as failonerror="true" -->
+            <hlm:tag baseDir="${temp.dir}/tag" name="tag_0.3"/>
+            <hlm:tag baseDir="${temp.dir}/tag" name="tag_0.3"/>
+        </hlm:scm>
+    </target>
+    
+    
+    <target name="demo-init" depends="setup">
+        <property name="temp.dir" location="${ant.file.demo}/../temp" />
+        <hlm:scm verbose="true" scmUrl="scm:hg:${temp.dir}/new">
+            <hlm:init />
+        </hlm:scm>
+    </target>
+
+</project>
Binary file buildframework/helium/external/helium-antlib/java/scm/demo/hg_test1.zip has changed
Binary file buildframework/helium/external/helium-antlib/java/scm/demo/hg_test2.zip has changed
Binary file buildframework/helium/external/helium-antlib/java/scm/demo/hg_test3.zip has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/ivy.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+============================================================================ 
+Name        : ivy.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:
+
+============================================================================  
+-->
+<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
+    <info
+        organisation="com.nokia.helium"
+        module="helium-scm"
+        status="integration">
+  </info>
+  <dependencies>
+    <dependency name="helium-core" rev="latest.integration" conf="default" />
+    <dependency org="dom4j" name="dom4j" rev="latest.integration" conf="default" />
+    <dependency org="org.apache.maven" name="maven-scm-api" rev="latest.integration" conf="default" />
+    <dependency org="org.apache.maven" name="maven-scm-provider-hg" rev="latest.integration" conf="default" />
+    <dependency org="org.apache.maven" name="maven-scm-provider-svn-commons" rev="latest.integration" conf="default" />
+    <dependency org="org.apache.maven" name="maven-scm-provider-synergy" rev="latest.integration" conf="default" />
+  </dependencies>
+</ivy-module>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/helium/scm/ant/antlib.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : antlib.xml 
+Part of     : Helium AntLib
+
+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:
+
+============================================================================
+-->
+<antlib>
+    <!-- Task definition -->
+    <taskdef name="scm" classname="com.nokia.helium.scm.ant.taskdefs.ScmTask" onerror="ignore"/>
+    <!-- Type definition -->
+    <typedef name="latestTag" classname="com.nokia.helium.scm.ant.types.LatestTag"/>
+    <typedef name="tagSet" classname="com.nokia.helium.scm.ant.types.TagSet"/>
+</antlib>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/helium/scm/ant/helium.antlib.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : helium.antlib.xml 
+Part of     : Helium Antlib 
+
+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="libs-scm" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
+    <description>
+        Ant task definition declarations.
+    </description>    
+    <taskdef resource="com/nokia/helium/scm/ant/antlib.xml" uri="http://www.nokia.com/helium"/>
+</project>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/helium/scm/ant/taskdefs/AddAction.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+
+package com.nokia.helium.scm.ant.taskdefs;
+
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.command.add.AddScmResult;
+import org.apache.maven.scm.manager.ScmManager;
+import org.apache.maven.scm.repository.ScmRepository;
+import org.apache.tools.ant.BuildException;
+
+/**
+ * Adding a set of files into SCM control.
+ *
+ * <pre>
+ * &lt;hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1"&gt;
+ *   &lt;hlm:add&gt;
+ *      &lt;fileset dir="${repo.dir}/test1"&gt;
+ *         &lt;include name="**" /&gt;
+ *         &lt;exclude name="** /.${repo.type}/**" /&gt;
+ *      &lt;/fileset&gt;
+ *   &lt;/hlm:add&gt;
+ * &lt;/hlm:scm&gt;
+ *
+ * </pre>
+ * 
+ * @ant.type name="add" category="SCM"
+ */
+public class AddAction extends BaseDirectoryScmAction {
+
+    /**
+     * {@inheritDoc}
+     * @throws ScmException 
+     */
+    @Override
+    public void execute(ScmRepository repository) throws ScmException {
+        ScmManager scmManager = getTask().getScmManager();
+
+        AddScmResult result = scmManager.add(repository, getScmFileSet());
+
+        if (!result.isSuccess()) {
+            throw new BuildException("SCM add action failed.");
+        }
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/helium/scm/ant/taskdefs/BaseDirectoryScmAction.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,88 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+
+package com.nokia.helium.scm.ant.taskdefs;
+
+import java.io.File;
+import java.util.ArrayList;
+
+import org.apache.maven.scm.ScmFileSet;
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.DirectoryScanner;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.types.FileSet;
+
+/**
+ * Handles configuration of directory-based SCM task commands.
+ */
+public abstract class BaseDirectoryScmAction extends ScmAction {
+    private String basedir;
+
+    /**
+     * Only one fileset is valid because all the SCM commands work on just one
+     * Sdirectory.
+     */
+    private FileSet fileSet;
+
+    /**
+     * Get the basedir.
+     * 
+     * @return the basedir attribute as a string.
+     */
+    public String getBasedir() {
+        if (fileSet != null) {
+            return fileSet.getDir(getProject()).getAbsolutePath();
+        }
+        return basedir;
+    }
+
+    /**
+     * Location of the current checkout in most of the case.
+     * 
+     * @param basedir
+     *            the directory to use on the local machine
+     * 
+     * @ant.required
+     */
+    public void setBasedir(String basedir) {
+        this.basedir = basedir;
+    }
+
+    public void addFileset(FileSet set) {
+        fileSet = set;
+    }
+
+    public ScmFileSet getScmFileSet() {
+        ArrayList<File> files = new ArrayList<File>();
+        if (fileSet == null) {
+            if (basedir == null) {
+                throw new BuildException(
+                        "Need a fileset or basedir attribute to be defined.");
+            }
+            return new ScmFileSet(new File(basedir));
+        }
+        DirectoryScanner scanner = fileSet.getDirectoryScanner(getTask()
+                .getProject());
+        String[] fileNames = scanner.getIncludedFiles();
+        for (String fileName : fileNames) {
+            log("ScmFileSet: adding " + fileName, Project.MSG_DEBUG);
+            files.add(new File(fileName));
+        }
+        ScmFileSet scmFileSet = new ScmFileSet(fileSet.getDir(), files);
+        return scmFileSet;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/helium/scm/ant/taskdefs/BranchAction.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,77 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+
+package com.nokia.helium.scm.ant.taskdefs;
+
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.command.branch.BranchScmResult;
+import org.apache.maven.scm.manager.ScmManager;
+import org.apache.maven.scm.repository.ScmRepository;
+import org.apache.tools.ant.BuildException;
+
+/**
+ * This action will create new branch using a specific name.
+ *
+ * <pre>
+ * &lt;hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1"&gt;
+ *    &lt;hlm:branch baseDir="${repo.dir}/test1" name="test branch 1.0" /&gt;
+ * &lt;/hlm:scm&gt;
+ * </pre>
+ *
+ * @ant.type name="branch" category="SCM"
+ */
+public class BranchAction extends BaseDirectoryScmAction {
+
+    private String name;
+
+    /**
+     * Sets the branch name
+     * 
+     * @param name
+     * @ant.required
+     */
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void execute(ScmRepository repository) {
+
+        if (name == null)
+            throw new BuildException("'name' attribute is not defined.");
+
+        ScmManager scmManager = getTask().getScmManager();
+        BranchScmResult result;
+
+        try {
+            result = scmManager.branch(repository, getScmFileSet(), name);
+            if (!result.isSuccess()) {
+                throw new BuildException("SCM branch action error: "
+                        + result.getProviderMessage());
+            }
+            getTask().log(
+                    "Branch '" + name + "' has been created successfully.");
+        } catch (ScmException e) {
+            throw new BuildException("SCM Branch action failed: "
+                    + e.toString());
+        }
+
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/helium/scm/ant/taskdefs/ChangelogAction.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,254 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+
+package com.nokia.helium.scm.ant.taskdefs;
+
+import java.util.Date;
+import java.text.SimpleDateFormat;
+import java.util.Iterator;
+import java.io.*;
+
+import org.dom4j.Document;
+import org.dom4j.Element;
+import org.dom4j.io.SAXReader;
+
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.ScmRevision;
+import org.apache.maven.scm.ChangeSet;
+import org.apache.maven.scm.command.changelog.ChangeLogScmResult;
+import org.apache.maven.scm.command.changelog.ChangeLogSet;
+import org.apache.maven.scm.manager.ScmManager;
+import org.apache.maven.scm.repository.ScmRepository;
+import org.apache.tools.ant.BuildException;
+
+/**
+ * Get change log within a date range i.e startDate and endDate; 
+ * OR get change log of a number of days i.e numDays
+ * OR get change log within a range of starVersion and endVersion
+ * Parameters either startDate="20090317 18:49:31" endDate="20090318 24:49:31" datePattern="yyyyMMdd HH:mm:ss"
+ * Or numDays='1'
+ * Or startVersion="1" endVersion="2"
+ * Add logOutput="xml" to output log in xml format
+ * 
+ * <pre>
+ * &lt;hlm:scm verbose="false" scmUrl="scm:hg:${repo.dir}/changelog"&gt;
+ *     &lt;hlm:changelog basedir="${repo.dir}/changelog" startVersion="1" endVersion="2"/&gt;
+ *     &lt;hlm:changelog baseDir="${repo.dir}/changelog" numDays='1' /&gt;
+ * &lt;/hlm:scm&gt;
+ * </pre>
+ *
+ * @ant.type name="changelog" category="SCM"
+ */
+public class ChangelogAction extends BaseDirectoryScmAction {
+
+    private String startDate;
+
+    private String endDate;
+
+    private String datePattern;
+
+    private String logOutput;
+    
+    private int numDays;
+
+    private String startVersion;
+
+    private String endVersion;
+    private File xmlbom;
+
+
+    /**
+     * Start version
+     * 
+     * @ant.not-required
+     */
+    public void setStartVersion(String startVersion) {
+        this.startVersion = startVersion;
+    }
+
+    /**
+     * End version
+     * 
+     * @ant.not-required
+     */
+    public void setEndVersion(String endVersion) {
+        this.endVersion = endVersion;
+    }
+
+    /**
+     * Start date
+     * 
+     * @ant.not-required
+     */
+    public void setStartDate(String startDate) {
+        this.startDate = startDate;
+    }
+
+    /**
+     * End date
+     * 
+     * @ant.not-required
+     */
+    public void setEndDate(String endDate) {
+        this.endDate = endDate;
+    }
+
+    /**
+     * Number of days
+     * 
+     * @ant.not-required
+     */
+    public void setNumDays(int numDays) {
+        this.numDays = numDays;
+    }
+
+    /**
+     * Date pattern default is EEE MMM dd HH:mm:ss yyyy Z
+     * 
+     * @ant.not-required
+     */
+    public void setDatePattern(String datePattern) {
+        this.datePattern = datePattern;
+    }
+
+    /**
+     * Output pattern default is log output, to get xml output set logoutput=xml
+     * 
+     * @ant.not-required
+     */    
+    public void setLogOutput(String logOutput)
+    {
+        this.logOutput = logOutput;
+    }
+    
+    /**
+     * File for xml output of changeset list
+     * 
+     * @ant.not-required
+     */ 
+    public void setXmlbom(File xmlbom)
+    {
+        this.xmlbom = xmlbom;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @SuppressWarnings("unchecked")
+    @Override
+    public void execute(ScmRepository repository) throws ScmException
+    {
+        ScmManager scmManager = getTask().getScmManager();
+        ScmRevision startRevision = new ScmRevision(startVersion);
+        ScmRevision endRevision = new ScmRevision(endVersion);
+
+        ChangeLogScmResult result;
+        Date start = null;
+        Date end = null;
+
+        if (numDays == 0 && (startDate != null || endDate != null) )
+        {
+            try {
+                SimpleDateFormat format = new SimpleDateFormat(datePattern);
+                start = format.parse(startDate);
+                end = format.parse(endDate);
+             }
+             catch (Exception e)
+             {
+                 throw new ScmException("Date Format not supported:" + e.getMessage());
+             }
+         }
+         else 
+         {
+             start = null;
+             end = null;
+         }
+        try
+        {
+        if (startVersion == null)
+            result = scmManager.changeLog(repository, getScmFileSet(), start, end, numDays, null, datePattern);
+        else
+            result = scmManager.changeLog(repository, getScmFileSet(), startRevision, endRevision, datePattern);
+        } catch (ScmException e) {
+            throw new BuildException(
+                    "Execution of SCM changelog action failed.");
+        }
+        if (!result.isSuccess()) {
+            throw new BuildException("SCM changelog command unsuccessful.");
+        }
+        // Output changelog information
+        ChangeLogSet changelogSet = result.getChangeLog();
+        if (logOutput != null && logOutput.equals("xml"))
+        {
+            getTask().log(changelogSet.toXML());
+        }
+        else if (xmlbom != null)
+        {
+            String output = "";
+            for (Object o : changelogSet.getChangeSets())
+            {
+                String revision = "";
+                ChangeSet c = (ChangeSet)o;
+                for (String x : c.toString().split("\n"))
+                {
+                    if (x.contains("revision:"))
+                        revision = x.replace("revision:", "");
+                }
+                
+                output = output + "<task><id>" + revision + "</id><synopsis>" + c.getComment() + "</synopsis><completed>" + new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss").format(c.getDate()) + "</completed></task>";
+            }
+            String[] path = getTask().getScmUrl().split("/");
+            String xml = "<bom><build>untitled</build><content>\n";
+            String thisproject = "<project>" + "<name>" + path[path.length - 1] + "</name>" + "<baseline>" + getTask().getScmUrl() + "</baseline>" + "<database>mercurial</database>" + output + "</project>\n";
+            xml = xml + thisproject;
+            try {
+                if (xmlbom.exists())
+                {
+                    SAXReader xmlReader = new SAXReader();
+                    Document antDoc = xmlReader.read(xmlbom);
+                    for (Iterator iterator = antDoc.selectNodes("//project").iterator(); iterator.hasNext();)
+                    {
+                        boolean equal = false;
+                        Element e = (Element) iterator.next();
+                        for (Iterator iterator2 = antDoc.selectNodes("//baseline").iterator(); iterator2.hasNext();)
+                        {
+                              Element e2 = (Element) iterator2.next();
+                              if (e2.getText().equals(getTask().getScmUrl()))
+                                  equal = true;
+                        }
+                        if (!equal)
+                            xml = xml + e.asXML() + "\n";
+                    }
+                }
+                xml = xml + "</content></bom>";
+                
+                FileWriter fstream = new FileWriter(xmlbom);
+                BufferedWriter out = new BufferedWriter(fstream);
+                out.write(xml);
+                out.close();
+            } catch (Exception e) { e.printStackTrace(); }
+        }
+        else
+        {
+            Iterator iterator = changelogSet.getChangeSets().iterator();
+            while (iterator.hasNext())
+            {
+                getTask().log(iterator.next().toString());
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/helium/scm/ant/taskdefs/CheckinAction.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,77 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+
+package com.nokia.helium.scm.ant.taskdefs;
+
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.command.checkin.CheckInScmResult;
+import org.apache.maven.scm.manager.ScmManager;
+import org.apache.maven.scm.repository.ScmRepository;
+import org.apache.tools.ant.BuildException;
+
+/**
+ * Check in a specific set of files to the repository.
+ *
+ * <pre>
+ * &lt;hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
+ *    &lt;hlm:checkin message="Adding not_in_repo.txt..."&gt;
+ *        &lt;fileset dir="${repo.dir}/test1"&gt;
+ *            &lt;include name="not_in_repo.txt" /&gt;
+ *            &lt;exclude name="** /.${repo.type}/**" / &gt;
+ *        &lt;/fileset &gt;
+ *    &lt;/hlm:checkin &gt;
+ * &lt;/hlm:scm&gt;
+ * </pre>
+ * 
+ * @ant.type name="checkin" category="SCM"
+ */
+public class CheckinAction extends BaseDirectoryScmAction {
+    private String message;
+
+    public String getMessage() {
+        return message;
+    }
+
+    /**
+     * @param message
+     *            the message associated to the commit.
+     * @ant.required
+     */
+    public void setMessage(String message) {
+        this.message = message;
+    }
+
+    @Override
+    public void execute(ScmRepository repository) throws ScmException {
+        ScmManager scmManager = getTask().getScmManager();
+
+        if (message == null)
+            throw new BuildException(
+                    "'message attribute has not been defined.'");
+
+        CheckInScmResult result;
+        try {
+            result = scmManager.checkIn(repository, getScmFileSet(), message);
+        } catch (ScmException e) {
+            throw new BuildException("SCM checkin action failed.");
+        }
+
+        if (!result.isSuccess()) {
+            throw new BuildException("SCM checkin action failed.");
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/helium/scm/ant/taskdefs/CheckoutAction.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,107 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+
+package com.nokia.helium.scm.ant.taskdefs;
+
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.command.checkout.CheckOutScmResult;
+import org.apache.maven.scm.manager.ScmManager;
+import org.apache.maven.scm.repository.ScmRepository;
+import org.apache.tools.ant.BuildException;
+import org.apache.maven.scm.ScmRevision;
+import org.apache.maven.scm.ScmTag;
+
+import com.nokia.helium.scm.ant.types.Tag;
+import com.nokia.helium.scm.ant.types.Revision;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Checkout the defined project. Depending on the kind of repository used this
+ * can mean for example the cloning of a repository in the case of Mercurial or the copying of 
+ * a repository in the case of SVN.
+ *
+ * <pre>
+ * &lt;hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test3"&gt;
+ *     &lt;hlm:checkout baseDir="${repo.dir}/cloned" /&gt;
+ * &lt;/hlm:scm&gt;
+ * </pre>
+ *
+ * @ant.type name="checkout" category="SCM"
+ */
+public class CheckoutAction extends BaseDirectoryScmAction {
+    private List<Tag> tags = new ArrayList<Tag>();
+    private List<Revision> revisions = new ArrayList<Revision>();
+
+    public Tag createTag() {
+        Tag tag = new Tag();
+        add(tag);
+        return tag;
+    }
+
+    public void add(Tag tag) {
+        tags.add(tag);
+    }
+
+    public Revision createRevision() {
+        Revision revision = new Revision();
+        add(revision);
+        return revision;
+    }
+
+    public void add(Revision revision) {
+        revisions.add(revision);
+    }
+
+    @Override
+    public void execute(ScmRepository repository) throws ScmException {
+        ScmManager scmManager = getTask().getScmManager();
+
+        if (tags.size() > 1)
+            throw new ScmException(
+                    "You can only specify one tag nested element.");
+
+        if (revisions.size() > 1)
+            throw new ScmException(
+                    "You can only specify one revision nested element.");
+
+        if ((tags.size() == 1) && (revisions.size() == 1)) {
+            throw new ScmException(
+                    "You can not specify nested element 'revision' and 'tag' together.");
+        }
+
+        CheckOutScmResult result;
+        try {
+            if (tags.size() == 1) {
+                result = scmManager.checkOut(repository, getScmFileSet(),
+                        new ScmTag(tags.get(0).getName()));
+            } else if (revisions.size() == 1) {
+                result = scmManager.checkOut(repository, getScmFileSet(),
+                        new ScmRevision(revisions.get(0).getName()));
+            } else {
+                result = scmManager.checkOut(repository, getScmFileSet());
+            }
+        } catch (ScmException e) {
+            throw new BuildException("SCM checkout action failed: " + e);
+        }
+
+        if (!result.isSuccess()) {
+            throw new BuildException("SCM checkout action failed.");
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/helium/scm/ant/taskdefs/DiffAction.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,85 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+
+package com.nokia.helium.scm.ant.taskdefs;
+
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.ScmRevision;
+import org.apache.maven.scm.command.diff.DiffScmResult;
+import org.apache.maven.scm.manager.ScmManager;
+import org.apache.maven.scm.repository.ScmRepository;
+import org.apache.tools.ant.BuildException;
+
+/**
+ * Display the difference of the working copy with the latest copy in the
+ * configured scm url.
+ *
+ * <pre>
+ * &lt;hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1"&gt;
+ *    &lt;hlm:diff&gt;
+ *        &lt;fileset dir="${repo.dir}/test1"&gt;
+ *            &lt;include name="**" /&gt;
+ *            &lt;exclude name="** /.${repo.type}/**" /&gt;
+ *        &lt;/fileset&gt;
+ *    &lt;/hlm:diff&gt;
+ * &lt;/hlm:scm&gt;
+ * </pre>
+ *
+ * @ant.type name="diff" category="SCM"
+ */
+public class DiffAction extends BaseDirectoryScmAction {
+    private String startVersion;
+    private String endVersion;
+
+    public String getStartVersion() {
+        return startVersion;
+    }
+
+    public void setStartVersion(String startVersion) {
+        this.startVersion = startVersion;
+    }
+
+    public String getEndVersion() {
+        return endVersion;
+    }
+
+    public void setEndVersion(String endVersion) {
+        this.endVersion = endVersion;
+    }
+
+    @Override
+    public void execute(ScmRepository repository) throws ScmException {
+
+        ScmManager scmManager = getTask().getScmManager();
+        DiffScmResult result;
+
+        try {
+            result = scmManager.diff(repository, getScmFileSet(),
+                    new ScmRevision(startVersion), new ScmRevision(endVersion));
+        } catch (ScmException e) {
+            throw new BuildException("SCM diff action failed." + e.getMessage());
+        }
+
+        if (!result.isSuccess()) {
+            throw new BuildException("SCM diff action failed."
+                    + result.getProviderMessage());
+        }
+
+        // Output diff information
+        log(result.getPatch());
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/helium/scm/ant/taskdefs/ExportAction.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,119 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+
+package com.nokia.helium.scm.ant.taskdefs;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.ScmTag;
+import org.apache.maven.scm.command.export.ExportScmResult;
+import org.apache.maven.scm.manager.ScmManager;
+import org.apache.maven.scm.repository.ScmRepository;
+import org.apache.tools.ant.BuildException;
+
+import com.nokia.helium.scm.ant.types.Tag;
+
+/**
+ * Get a snapshot of a particular revision into a folder.
+ *
+ * <pre>
+ * &lt;hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test2"&gt;
+ *    &lt;hlm:export basedir="${repo.dir}/test2" destpath="${repo.dir}/export" /&gt;
+ * &lt;/hlm:scm&gt;
+ * </pre>
+ *
+ * @ant.type name="export" category="SCM"
+ */
+public class ExportAction extends BaseDirectoryScmAction {
+
+    private File destPath;
+    private List<Tag> tags = new ArrayList<Tag>();
+
+    /**
+     * Create a tag sub-element.
+     * @return the tag element.
+     */
+    public Tag createTag() {
+        Tag tag = new Tag();
+        add(tag);
+        return tag;
+    }
+
+    /**
+     * Add a tag.
+     * @param tag
+     */
+    public void add(Tag tag) {
+        tags.add(tag);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void execute(ScmRepository repository) throws ScmException {
+        ScmManager scmManager = getTask().getScmManager();
+
+        if (getDestPath() == null)
+            throw new ScmException("destPath attribute has not been provided.");
+
+        if (tags.size() > 1)
+            throw new ScmException(
+                    "You can only specify one tag nested element.");
+
+        ExportScmResult result;
+        try {
+            if (tags.size() == 0) {
+                getTask().log(
+                        "Exporting " + getScmFileSet().getBasedir() + " under "
+                                + getDestPath().getAbsolutePath() + ".");
+                result = scmManager.export(repository, getScmFileSet(),
+                        getDestPath().getAbsolutePath());
+            } else {
+                String t = tags.get(0).getName();
+                getTask().log(
+                        "Exporting revision " + t + " of "
+                                + getScmFileSet().getBasedir() + " under "
+                                + getDestPath().getAbsolutePath() + ".");
+                result = scmManager.export(repository, getScmFileSet(),
+                        new ScmTag(t), getDestPath().getAbsolutePath());
+            }
+        } catch (ScmException e) {
+            throw new BuildException("SCM export action failed: " + e);
+        }
+        if (!result.isSuccess()) {
+            throw new BuildException("SCM export action failed: "
+                    + result.getProviderMessage());
+        }
+        // Dump created files.
+        for (Object file : result.getExportedFiles().toArray()) {
+            getTask().log(file.toString());
+        }
+    }
+
+    public File getDestPath() {
+        return destPath;
+    }
+
+    public void setDestPath(File destPath) {
+        this.destPath = destPath;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/helium/scm/ant/taskdefs/InfoAction.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,64 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+
+package com.nokia.helium.scm.ant.taskdefs;
+
+import java.io.File;
+
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.repository.ScmRepository;
+import org.apache.tools.ant.BuildException;
+
+import com.nokia.maven.scm.command.info.InfoScmResult;
+import com.nokia.maven.scm.manager.ExtendedScmManager;
+
+/**
+ * This action will display the global revision id for the repository.
+ *
+ * <pre>
+ * &lt;hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1"&gt;
+ *    &lt;hlm:checkout baseDir="${repo.dir}/info" /&gt;
+ *    &lt;hlm:info baseDir="${repo.dir}/info"/&gt;
+ * &lt;/hlm:scm&gt;
+ * </pre>
+ *
+ * @ant.type name="info" category="SCM"
+ */ 
+public class InfoAction extends BaseDirectoryScmAction {
+
+    
+    @Override
+    public void execute(ScmRepository repository) throws ScmException {
+        InfoScmResult result;
+        try {
+            ExtendedScmManager scmManager = (ExtendedScmManager) getTask()
+                    .getScmManager();
+            result = scmManager.info(repository, new File(this.getBasedir()));
+            
+            if (!result.isSuccess()) {
+                throw new BuildException("SCM tags action error: "
+                        + result.getProviderMessage());
+            }
+            getTask().log(result.getRevision());
+            
+        } catch (ScmException e) {
+            throw new BuildException("SCM info action failed: "
+                    + e.getMessage());
+        }
+
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/helium/scm/ant/taskdefs/InitAction.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+
+package com.nokia.helium.scm.ant.taskdefs;
+
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.manager.ScmManager;
+import org.apache.maven.scm.provider.ScmProvider;
+import org.apache.maven.scm.repository.ScmRepository;
+
+import com.nokia.maven.scm.provider.ScmProviderExt;
+
+/**
+ * Create a new repository. In the following example the new_repo mercurial repository 
+ * will be created under /some/path/. E.g:
+ * 
+ * <pre>
+ * &lt;hlm:scm verbose="true" scmUrl="scm:hg:/some/path/new_repo"&gt;
+ *     &lt;hlm:checkout baseDir="scm:hg:/some/path/new_repo" /&gt;
+ * &lt;/hlm:scm&gt;
+ * </pre>
+ * 
+ * @ant.type name="init" category="SCM"
+ */
+public class InitAction extends BaseDirectoryScmAction {
+    
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void execute(ScmRepository repository) throws ScmException {
+        ScmManager scmManager = getTask().getScmManager();
+        ScmProvider provider = scmManager.getProviderByUrl(getTask().getScmUrl());
+
+        getTask().log("InitAction: " + repository);
+        ScmProviderExt providerExt = (ScmProviderExt) provider;
+        providerExt.init(repository);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/helium/scm/ant/taskdefs/PullAction.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+
+package com.nokia.helium.scm.ant.taskdefs;
+
+import java.io.File;
+
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.repository.ScmRepository;
+import org.apache.tools.ant.BuildException;
+
+import com.nokia.maven.scm.command.pull.PullScmResult;
+import com.nokia.maven.scm.manager.ExtendedScmManager;
+
+/**
+ * Retrieve a set of changes from a remote database. This action is only
+ * supported in distributed SCM such as Mercurial or Git.
+ * 
+ * @ant.type name="pull" category="SCM"
+ */
+public class PullAction extends BaseDirectoryScmAction {
+    @Override
+    public void execute(ScmRepository repository) throws ScmException {
+        PullScmResult result;
+        try {
+            ExtendedScmManager scmManager = (ExtendedScmManager) getTask()
+                    .getScmManager();
+            result = scmManager.pull(repository, new File(this.getBasedir()));
+            if (!result.isSuccess()) {
+                throw new BuildException("SCM pull action error: "
+                        + result.getProviderMessage());
+            }
+        } catch (ScmException e) {
+            throw new BuildException("SCM pull action failed: "
+                    + e.getMessage());
+        }
+
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/helium/scm/ant/taskdefs/RemoveAction.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,76 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+
+package com.nokia.helium.scm.ant.taskdefs;
+
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.command.remove.RemoveScmResult;
+import org.apache.maven.scm.manager.ScmManager;
+import org.apache.maven.scm.repository.ScmRepository;
+import org.apache.tools.ant.BuildException;
+
+/**
+ * Remove a set of file(s) from SCM control.
+ * 
+ * <pre>
+ * &lt;hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1"&gt;
+ *    &lt;hlm:remove message="Nothing to remove..."&gt;
+ *        &lt;fileset dir="${repo.dir}/test1"&gt;
+ *            &lt;include name="not_in_repo.txt" /&gt;
+ *        &lt;/fileset&gt;
+ *    &lt;/hlm:remove&gt;
+ * &lt;/hlm:scm&gt;
+ * </pre>
+ *
+ * @ant.type name="remove" category="SCM"
+ */
+public class RemoveAction extends BaseDirectoryScmAction {
+    private String message;
+
+    public String getMessage() {
+        return message;
+    }
+
+    /**
+     * @param message
+     *            the message associated to the change
+     * @ant.required
+     */
+    public void setMessage(String message) {
+        this.message = message;
+    }
+
+    @Override
+    public void execute(ScmRepository repository) throws ScmException {
+        if (message == null)
+            throw new BuildException("message attribute has not been defined.");
+        // if (getBasedir() == null)
+        // throw new BuildException("basedir attribute has not been defined.");
+
+        ScmManager scmManager = getTask().getScmManager();
+        RemoveScmResult result;
+        try {
+            result = scmManager.remove(repository, getScmFileSet(), message);
+        } catch (ScmException e) {
+            throw new BuildException("SCM remove action failed: " + e);
+        }
+
+        if (!result.isSuccess()) {
+            throw new BuildException("SCM remove action failed.");
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/helium/scm/ant/taskdefs/ScmAction.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,69 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+
+package com.nokia.helium.scm.ant.taskdefs;
+
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.repository.ScmRepository;
+import org.apache.tools.ant.ProjectComponent;
+
+/**
+ * Abstract class which implements common setting between
+ * ScmAction implementations.
+ * 
+ * Any implementing action must implement the execute method as
+ * a execution of the action. The owning task should be used
+ * to log message to the user.  
+ */
+public abstract class ScmAction extends ProjectComponent {
+    private ScmTask scmtask;
+
+    /**
+     * @return the task
+     */
+    public ScmTask getTask() {
+        return scmtask;
+    }
+
+    /**
+     * @param task
+     *            the task to set
+     */
+    public void setTask(ScmTask task) {
+        this.scmtask = task;
+    }
+
+    /**
+     * Get the action name based on the classname.
+     * @return the lowercase class name. 
+     */
+    public String getName() {
+        String className = getClass().getName();
+        String commandName = className
+                .substring(className.lastIndexOf('.') + 1).toLowerCase();
+        return commandName;
+    }
+
+    /**
+     * This method needs to be implemented by your subclass.
+     * It is executed during the Task execute to achieve
+     * the relevant action.
+     * @param repository
+     * @throws ScmException
+     */
+    public abstract void execute(ScmRepository repository) throws ScmException;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/helium/scm/ant/taskdefs/ScmTask.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,249 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+
+package com.nokia.helium.scm.ant.taskdefs;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.maven.scm.manager.NoSuchScmProviderException;
+import org.apache.maven.scm.manager.ScmManager;
+import org.apache.maven.scm.repository.ScmRepository;
+import org.apache.maven.scm.repository.ScmRepositoryException;
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Task;
+
+import com.nokia.maven.scm.manager.BasicExtendedScmManager;
+import com.nokia.maven.scm.manager.ExtendedScmManager;
+import com.nokia.maven.scm.provider.hg.HgScmProviderExt;
+
+/**
+ * This provides Ant support for a range of common SCM operations. They should work on 
+ * any Maven based SCM e.g. SVN, Mercurial, synergy.  The
+ * underlying SCM tool is defined by the URL format.
+ *
+ * <pre>
+ * &lt;hlm:scm verbose="true" scmUrl="scm:hg:${pkg_detail.source}"&gt;
+ *    &lt;hlm:checkout basedir="${build.drive}${pkg_detail.dst}"/&gt;
+ *    &lt;hlm:tags basedir="${build.drive}${pkg_detail.dst}" reference="hg.tags.id${refid}"/&gt;
+ *    &lt;hlm:update basedir="${build.drive}${pkg_detail.dst}"&gt;
+ *        &lt;hlm:latestTag pattern="${pkg_detail.tag}"&gt;
+ *            &lt;hlm:tagSet refid="hg.tags.id${refid}" /&gt;
+ *        &lt;/hlm:latestTag&gt;
+ *    &lt;/hlm:update&gt;
+ * &lt;/hlm:scm&gt;
+ * </pre>
+ * 
+ * @ant.task name="scm" category="SCM"
+ */
+public class ScmTask extends Task {
+
+    private ExtendedScmManager scmManager;
+
+    private String username;
+
+    private String password;
+
+    private String scmUrl;
+
+    private String basedir;
+
+    private List<ScmAction> actions = new ArrayList<ScmAction>();
+
+    private boolean verbose;
+    
+    private boolean failonerror = true;
+    
+
+    public ScmTask() {
+        setTaskName("scm");
+
+        scmManager = new BasicExtendedScmManager();
+
+        // Add all SCM providers we want to use
+        scmManager.setScmProvider("hg", new HgScmProviderExt());
+    }
+
+    public ScmManager getScmManager() {
+        return scmManager;
+    }
+
+    /**
+     * Set if the task should use verbose output on Maven SCM framework.
+     * 
+     * @param value
+     * @ant.not-required Default is false
+     */
+    public void setVerbose(boolean value) {
+        verbose = value;
+    }
+
+    /**
+     * Set the username, this field is required while user requires to be
+     * authenticated.
+     * 
+     * @param username
+     *            The user login
+     * @ant.not-required
+     */
+    public void setUsername(String username) {
+        this.username = username;
+    }
+
+    /**
+     * Set the password, this field is required while user requires to be
+     * authenticated.
+     * 
+     * @param password
+     *            The user password
+     * @ant.not-required
+     */
+    public void setPassword(String password) {
+        this.password = password;
+    }
+    
+    /**
+     * Set if the build should keep going while any exception.
+     * 
+     * @param failonerror
+     * @ant.not-required Default is true
+     */
+    public void setFailonerror(boolean failonerror) {
+        this.failonerror = failonerror;
+    }
+
+    public String getScmUrl() {
+        return scmUrl;
+    }
+
+    /**
+     * Sets the SCM URL so the task knows what repository to use.
+     * 
+     * @param scmUrl
+     *            The URL to connect to
+     * @ant.required
+     */
+    public void setScmUrl(String scmUrl) {
+        this.scmUrl = scmUrl;
+    }
+
+    /**
+     * Add an SCM add action.
+     * 
+     * @param action
+     *            The add action.
+     * @ant.optional
+     */
+    public void addAdd(AddAction action) {
+        addAction(action);
+    }
+
+    public void addChangelog(ChangelogAction action) {
+        addAction(action);
+    }
+
+    public void addBranch(BranchAction action) {
+        addAction(action);
+    }
+
+    public void addCheckin(CheckinAction action) {
+        addAction(action);
+    }
+
+    public void addCheckout(CheckoutAction action) {
+        addAction(action);
+    }
+
+    public void addDiff(DiffAction action) {
+        addAction(action);
+    }
+
+    public void addRemove(RemoveAction action) {
+        addAction(action);
+    }
+
+    public void addStatus(StatusAction action) {
+        addAction(action);
+    }
+
+    public void addUpdate(UpdateAction action) {
+        addAction(action);
+    }
+
+    public ScmAction[] getActions() {
+        return (ScmAction[]) actions.toArray(new ScmAction[0]);
+    }
+
+    // Additional actions not supported by the core Maven API
+
+    public void addPull(PullAction action) {
+        addAction(action);
+    }
+
+    public void addTag(TagAction action) {
+        addAction(action);
+    }
+
+    public void addTags(TagsAction action) {
+        addAction(action);
+    }
+    
+    public void addInfo(InfoAction action) {
+        addAction(action);
+    }
+
+    public void addInit(InitAction action) {
+        addAction(action);
+    }
+
+    public void addExport(ExportAction action) {
+        addAction(action);
+    }
+
+    private void addAction(ScmAction action) {
+        action.setTask(this);
+        actions.add(action);
+    }
+
+    public void add(ScmAction action) {
+        addAction(action);
+    }
+
+    @Override
+    public final void execute() {        
+        try {
+            log("scm url: " + scmUrl);
+            ScmRepository repository = scmManager.makeScmRepository(scmUrl);
+            // Process all scm commands
+            for (ScmAction action : actions) {
+                action.execute(repository);
+            }
+        } catch (NoSuchScmProviderException ex) {
+            throw new BuildException("Could not find a provider.");
+        } catch (ScmRepositoryException ex) {
+            throw new BuildException(
+                    "Error while connecting to the repository: " + ex.getMessage());
+        } catch (Exception e) {
+          if ( failonerror ) {
+            e.printStackTrace();
+            throw new BuildException(e.getMessage());
+            }
+          else {
+            e.printStackTrace();
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/helium/scm/ant/taskdefs/StatusAction.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,57 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+
+package com.nokia.helium.scm.ant.taskdefs;
+
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.command.status.StatusScmResult;
+import org.apache.maven.scm.manager.ScmManager;
+import org.apache.maven.scm.repository.ScmRepository;
+import org.apache.tools.ant.BuildException;
+
+/**
+ * Status will execute status action on the relevant repository, and reports
+ * basedir, or a specific set of file status.
+ *
+ * <pre>
+ * &lt;hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1"&gt;
+ *    &lt;hlm:status&gt;
+ *       &lt;fileset dir="${repo.dir}/test1"&gt;
+ *          &lt;include name="**" /&gt;
+ *          &lt;exclude name="** /.${repo.type}/**" /&gt;
+ *       &lt;/fileset&gt;
+ *    &lt;/hlm:status&gt;
+ * &lt;/hlm:scm &gt;
+ * </pre>
+ * 
+ * @ant.type name="status" category="SCM"
+ */
+public class StatusAction extends BaseDirectoryScmAction {
+
+    @Override
+    public void execute(ScmRepository repository) throws ScmException {
+        ScmManager scmManager = getTask().getScmManager();
+
+        StatusScmResult result = scmManager.status(repository, getScmFileSet());
+
+        if (!result.isSuccess()) {
+            throw new BuildException("SCM status action failed: "
+                    + result.getProviderMessage());
+        }
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/helium/scm/ant/taskdefs/TagAction.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,98 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+
+package com.nokia.helium.scm.ant.taskdefs;
+
+import java.io.File;
+
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.command.tag.TagScmResult;
+import org.apache.maven.scm.repository.ScmRepository;
+import org.apache.tools.ant.BuildException;
+
+import com.nokia.maven.scm.manager.ExtendedScmManager;
+
+/**
+ * This action will tag current repository revision using a specific name.
+ * 
+ * <pre>
+ * &lt;hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1"&gt;
+ *     &lt;hlm:tag baseDir="${repo.dir}/test1" name="0.0.1" /&gt;
+ * &lt;/hlm:scm&gt;
+ * </pre>
+ *
+ * @ant.type name="tag" category="SCM"
+ */
+public class TagAction extends BaseDirectoryScmAction {
+    private String name;
+    private String level = "normal";
+
+    /**
+     * String that will be used to tag the current revision.
+     * 
+     * @param name
+     *            Name of the tag
+     * @ant.required
+     */
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    /**
+     * String that will be used to determine tag types, eg. local.
+     * 
+     * @param level
+     *            Level of the tag eg.local
+     * @ant.not-required
+     */
+    public void setLevel(String level) {
+        this.level = level;
+    }
+
+    @Override
+    public void execute(ScmRepository repository) throws ScmException {
+        TagScmResult result;
+
+        if (name == null)
+            throw new BuildException("'name' attribute is not defined.");
+
+        if (getBasedir() == null)
+            throw new BuildException("'basedir' attribute is not defined.");
+
+        try {
+            ExtendedScmManager scmManager = (ExtendedScmManager) getTask()
+                    .getScmManager();
+            if (level.equals(new String("local"))) {
+                result = scmManager.tag(repository, new ScmFileSet(new File(
+                        getBasedir())), name, level);
+            } else {
+                result = scmManager.tag(repository, new ScmFileSet(new File(
+                        getBasedir())), name);
+            }
+
+            if (!result.isSuccess()) {
+                throw new BuildException("SCM tag action error: "
+                        + result.getProviderMessage());
+            }
+            getTask().log("Tag '" + name + "' has been created successfully.");
+        } catch (ScmException e) {
+            throw new BuildException("SCM tag action failed: " + e.toString());
+        }
+
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/helium/scm/ant/taskdefs/TagsAction.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,92 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+
+package com.nokia.helium.scm.ant.taskdefs;
+
+import java.io.File;
+import java.util.List;
+
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.ScmTag;
+import org.apache.maven.scm.repository.ScmRepository;
+import org.apache.tools.ant.BuildException;
+
+import com.nokia.helium.scm.ant.types.TagSet;
+import com.nokia.maven.scm.command.tags.TagsScmResult;
+import com.nokia.maven.scm.manager.ExtendedScmManager;
+
+/**
+ * This action will tag current repository revision using a specific name.
+ * 
+ * <pre>
+ * &lt;hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1"&gt;
+ *     &lt;hlm:tags baseDir="${repo.dir}/test1" reference="my.tags" /&gt;
+ * &lt;/hlm:scm&gt;
+ * </pre>
+ *
+ * @ant.type name="tags" category="SCM"
+ */
+public class TagsAction extends BaseDirectoryScmAction {
+
+    private String reference;
+
+    /**
+     * Defines the id of the result type generated by the query.
+     * @param reference the name of the reference to use.
+     * @ant.not-required Only log result by default.
+     */
+    public void setReference(String reference) {
+        this.reference = reference;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void execute(ScmRepository repository) throws ScmException {
+        TagsScmResult result;
+        try {
+            ExtendedScmManager scmManager = (ExtendedScmManager) getTask()
+                    .getScmManager();
+            result = scmManager.tags(repository, new File(this.getBasedir()));
+            if (!result.isSuccess()) {
+                throw new BuildException("SCM tags action error: "
+                        + result.getProviderMessage());
+            }
+
+            // Creating a TagSet
+            List<ScmTag> tags = result.getTags();
+            TagSet tagSet = new TagSet();
+            tagSet.setProject(getProject());
+            getTask().log("Tag list:");
+            for (ScmTag tag : tags) {
+                tagSet.createTag().setName(tag.getName());
+                getTask().log(" * " + tag.getName());
+            }
+            // Creating new reference
+            if (reference != null) {
+                getTask().log("Creating reference: " + reference);
+                getProject().addReference(reference, tagSet);
+            }
+
+        } catch (ScmException e) {
+            throw new BuildException("SCM tags action failed: "
+                    + e.getMessage());
+        }
+
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/helium/scm/ant/taskdefs/UpdateAction.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,101 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+
+package com.nokia.helium.scm.ant.taskdefs;
+
+import java.util.List;
+
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.ScmFile;
+import org.apache.maven.scm.ScmTag;
+import org.apache.maven.scm.command.update.UpdateScmResult;
+import org.apache.maven.scm.manager.ScmManager;
+import org.apache.maven.scm.repository.ScmRepository;
+import org.apache.tools.ant.BuildException;
+import org.apache.maven.scm.ScmRevision;
+
+import com.nokia.helium.scm.ant.types.Tag;
+import com.nokia.helium.scm.ant.types.Revision;
+
+/**
+ * Update the defined project for a specific revision or tag.
+ * 
+ * <pre>
+ * &lt;hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1"&gt;
+ *     &lt;hlm:update basedir="${repo.dir}/test1" /&gt;
+ * &lt;/hlm:scm&gt;
+ *</pre>
+ *
+ * @ant.type name="update" category="SCM"
+ */
+public class UpdateAction extends BaseDirectoryScmAction {
+
+    private Tag tag;
+    private Revision revision;
+
+    public void add(Tag tag) {
+        this.tag = tag;
+    }
+
+    public Tag createTag() {
+        this.tag = new Tag();
+        return this.tag;
+    }
+
+    public void add(Revision revision) {
+        this.revision = revision;
+    }
+
+    public Revision createRevision() {
+        this.revision = new Revision();
+        return this.revision;
+    }
+
+    @Override
+    @SuppressWarnings("unchecked")
+    public void execute(ScmRepository repository) throws ScmException {
+        ScmManager scmManager = getTask().getScmManager();
+
+        UpdateScmResult result;
+        try {
+            if (tag != null) {
+                result = scmManager.update(repository, getScmFileSet(),
+                        new ScmTag(tag.getName()));
+            } else if (revision != null) {
+                result = scmManager.update(repository, getScmFileSet(),
+                        new ScmRevision(revision.getName()));
+            } else {
+                result = scmManager.update(repository, getScmFileSet());
+            }
+
+            if (!result.isSuccess()) {
+                throw new BuildException("SCM update action error: "
+                        + result.getProviderMessage());
+            }
+
+            List<ScmFile> files = result.getUpdatedFiles();
+            for (ScmFile scmFile : files) {
+                getTask().log(scmFile.toString());
+            }
+        } catch (RuntimeException e) {
+            throw new BuildException("SCM update action failed: "
+                    + e.getMessage());
+        }
+
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/helium/scm/ant/types/LatestTag.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,186 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+
+package com.nokia.helium.scm.ant.types;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Project;
+
+/**
+ * The latestTag element will help you to find the latest revision based
+ * on a pattern.
+ * 
+ *  <pre>
+ *  &lt;latestTag name="1.0.*"&gt;
+ *     &lt;tagSet id="set.of.tags"/&gt;
+ *  latestTag
+ *  </pre>
+ * 
+ * @ant.type name="latestTag" category="SCM"
+ */
+public class LatestTag extends Tag {
+
+    private String pattern;
+    private List<TagSet> tagSets = new ArrayList<TagSet>();
+    
+    /**
+     * Defines the pattern.
+     * @ant.required
+     */
+    public void setPattern(String pattern) {
+        this.pattern = pattern;
+    }
+    
+    /**
+     * Add a set of release to search the latest release in.
+     * @param tagSet
+     */
+    public void add(TagSet tagSet) {
+        tagSets.add(tagSet);
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public String getName() {
+        if (pattern == null)
+            throw new BuildException("'pattern' attribute has not been defined.");
+
+        List<Tag> tags = getCleanedList();
+        Collections.sort(tags, new TagComparator<Tag>(getPattern()));
+        
+        if (tags.isEmpty())
+            throw new BuildException("No tag found.");
+
+        getProject().log("Latest tag: " + tags.get(0).getName());
+        return tags.get(0).getName();
+    }
+
+    /**
+     * Get a reduce set of tags, only tag matching the pattern will be
+     * included.
+     * @return the reduce list of tags.
+     */
+    protected List<Tag> getCleanedList() {
+        Pattern pVer = getPattern();
+        List<Tag> tags = new ArrayList<Tag>();
+        for (Tag tag : getTags()) {
+            if (pVer.matcher(tag.getName()).matches()) {
+                tags.add(tag);
+            }
+        }
+        return tags;
+    }
+    
+    /**
+     * Get the pattern as a regular expression.
+     * '*' will be transformed into (\d+) (which means only numbers
+     *  will be considered). Other character will be quoted.
+     * For example:
+     * 1.0.* => 1\.0\.(\d+)
+     * 
+     * @return the transformed pattern.
+     */
+    protected Pattern getPattern() {
+        // Quoting the current pattern
+        getProject().log("pattern: " + pattern, Project.MSG_DEBUG);
+        String qVer = pattern.replaceAll("([.\\:_()])", "\\\\$1");
+        getProject().log("quoted: " + qVer, Project.MSG_DEBUG);
+        // Replacing quoted \* into \d+
+        qVer = qVer.replaceAll("\\*", "(\\\\d+)");        
+        qVer = "^" + qVer + "$";
+        getProject().log("final: " + qVer, Project.MSG_DEBUG);
+        return Pattern.compile(qVer);
+    }
+    
+    /**
+     * Get the list of tags, from the tagSets. 
+     * @return a list of Tags objects.
+     */
+    protected List<Tag> getTags() {
+        List<Tag> tags = new ArrayList<Tag>();
+        for (TagSet ts : tagSets) {
+            if (ts.isReference()) {
+                ts = (TagSet)ts.getRefid().getReferencedObject(getProject());
+            }
+            for (Tag tag : ts.getTags()) {
+                tags.add(tag);
+            }
+        }
+        return tags;
+    }
+    
+    /**
+     * This class implements the comparator interface, which will help to
+     * order the tag compare to the pattern. For example:
+     * 1.0.2 > 1.0.1 (for pattern 1.0.*)
+     * 1.1.1 > 1.0.2 (for pattern 1.*.*)
+     *
+     * @param <T> A Tag kind of class.
+     */
+    public class TagComparator<T extends Tag> implements Comparator<T> {
+        
+        // Pattern to match for the comparison
+        private Pattern pVer;
+        
+        /**
+         * Configure the Comparator with the pattern.
+         * @param pattern
+         */
+        public TagComparator(Pattern pattern) {
+            pVer = pattern;
+        }
+        
+        /**
+         * {@inheritDoc}
+         */
+        @Override
+        public int compare(T o1, T o2) {
+            getProject().log("Comparing: " + o1.getName() + ">" + o2.getName(), Project.MSG_DEBUG);
+            
+            if (o1.getName().equals(o2.getName()))
+                return 0;
+            Matcher m1 = pVer.matcher(o1.getName());
+            Matcher m2 = pVer.matcher(o2.getName());
+            m1.matches();
+            m2.matches();
+            int max = (m1.groupCount() > m2.groupCount()) ? m2.groupCount() : m1.groupCount();            
+            int i = 1;
+            while (i <= max) {
+                int i1 = Integer.decode(m1.group(i)).intValue();
+                int i2 = Integer.decode(m2.group(i)).intValue();
+                getProject().log("Comparing index " + i + ": " + i1 + " < " + i2, Project.MSG_DEBUG);
+                if (i1 != i2) {
+                    return i2 - i1;
+                }
+                i++;
+            }
+            return 0;
+        }
+    }
+    
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/helium/scm/ant/types/Revision.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,54 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+
+package com.nokia.helium.scm.ant.types;
+
+import org.apache.tools.ant.types.DataType;
+
+/**
+ * The revision element store a particular revision id. 
+
+ *  <pre>
+ *  &lt;revision name="release_1.0" /&gt;
+ *  </pre>
+ *
+ */
+public class Revision extends DataType {
+
+    private String name;
+    
+    /**
+    * Sets the revision name  
+     *  
+     * @param name 
+     * @ant.required 
+     */
+     
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    /**
+     * Get the revision.
+     * @return the revision.
+     */
+    public String getName() {
+        return name;
+    }
+    
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/helium/scm/ant/types/Tag.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,53 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+
+package com.nokia.helium.scm.ant.types;
+
+import org.apache.tools.ant.types.DataType;
+
+/**
+ * The tag type store the value of a desired SCM tag.
+ * 
+ *  <pre>
+ *  &lt;tag name="release_1.0" /&gt;
+ *  </pre>
+ *
+ */
+public class Tag extends DataType {
+
+    private String name;
+    
+    /**
+    * Sets the tag name  
+     *  
+     * @param name
+     * @ant.required 
+     */
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    /**
+     * Get the tag value.
+     * @return the tag value
+     */
+    public String getName() {
+        return name;
+    }
+    
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/helium/scm/ant/types/TagSet.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,69 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+
+package com.nokia.helium.scm.ant.types;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.tools.ant.types.DataType;
+
+/**
+ * This tagSet type is a container of tag elements.
+ * 
+ * Example:
+ *  <pre>
+ *  &lt;tagSet&gt;
+ *      &lt;tag name="release_1.0" /&gt;
+ *      &lt;tag name="release_1.0.1" /&gt;
+ *  &lt;7tagSet&gt;
+ *  </pre>
+ *  
+ * @ant.type name="tagSet" category="SCM"
+ */
+public class TagSet extends DataType {
+
+    private List<Tag> tags = new ArrayList<Tag>();
+    
+    /**
+     * Add a Tag element.
+     * @param tag
+     */
+    public void add(Tag tag) {
+        tags.add(tag);
+    }
+    
+    /**
+     * Create and add a Taf element.
+     * @return the newly created Tag.
+     */
+    public Tag createTag() {
+        Tag tag = new Tag();
+        tags.add(tag);
+        return tag;
+    }
+
+    /**
+     * Get the list of tags.
+     * @return the list of stored tag elements.
+     */
+    public List<Tag> getTags() {
+        return new ArrayList<Tag>(tags);
+    }
+    
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/maven/scm/command/info/AbstractInfoCommand.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,41 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+ 
+package com.nokia.maven.scm.command.info;
+
+import org.apache.maven.scm.CommandParameters;
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.command.AbstractCommand;
+import org.apache.maven.scm.provider.ScmProviderRepository;
+
+/**
+ * The 'hg info' command.
+ */
+public abstract class AbstractInfoCommand extends AbstractCommand
+{
+    
+    public InfoScmResult executeCommand(ScmProviderRepository repository, ScmFileSet fileSet,
+            CommandParameters parameters) throws ScmException
+    {
+        return executeInfoCommand(repository, fileSet, parameters);
+    }
+    
+    protected abstract InfoScmResult executeInfoCommand(ScmProviderRepository repository, ScmFileSet fileSetCommand, CommandParameters parameters) throws ScmException;
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/maven/scm/command/info/InfoScmResult.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,46 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+
+package com.nokia.maven.scm.command.info;
+
+import org.apache.maven.scm.ScmResult;
+
+/**
+ * A result provided by the 'hg info' command.
+ */
+public class InfoScmResult extends ScmResult {
+    private String scmRevision = new String();
+    
+    public InfoScmResult(String commandLine, String providerMessage,
+            String commandOutput, boolean success) {
+        super(commandLine, providerMessage, commandOutput, success);
+    }
+
+    public InfoScmResult(String commandLine, String providerMessage,
+            String commandOutput, boolean success,
+            String scmRevision) {
+        super(commandLine, providerMessage, commandOutput, success);        
+        this.scmRevision = scmRevision;
+        }
+    
+    public String getRevision() {
+        return scmRevision;
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/maven/scm/command/init/InitScmResult.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,36 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+
+package com.nokia.maven.scm.command.init;
+
+import org.apache.maven.scm.ScmResult;
+
+/**
+ * Class to store the result of the init command.  
+ *
+ */
+public class InitScmResult extends ScmResult {
+    
+    /**
+     * {@inheritDoc}
+     */
+    public InitScmResult(String commandLine, String providerMessage,
+            String commandOutput, boolean success) {
+        super(commandLine, providerMessage, commandOutput, success);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/maven/scm/command/pull/AbstractPullCommand.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,59 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+ 
+package com.nokia.maven.scm.command.pull;
+
+import org.apache.maven.scm.CommandParameter;
+import org.apache.maven.scm.CommandParameters;
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.ScmResult;
+import org.apache.maven.scm.ScmTag;
+import org.apache.maven.scm.ScmVersion;
+import org.apache.maven.scm.command.AbstractCommand;
+import org.apache.maven.scm.provider.ScmProviderRepository;
+
+/**
+ * Abstract class to representing a pull command.
+ * This functionality is mainly targeted for distributed 
+ * repository like Git or Mercurial.  
+ */
+public abstract class AbstractPullCommand extends AbstractCommand
+{
+    
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public ScmResult executeCommand(ScmProviderRepository repository, ScmFileSet fileSet,
+            CommandParameters parameters) throws ScmException
+    {
+        return executePullCommand(repository, fileSet, parameters.getScmVersion(CommandParameter.SCM_VERSION, new ScmTag("tip")));
+    }
+    
+    /**
+     * Implements the pull functionality.
+     * @param repository the reporsitory.
+     * @param fileSet
+     * @param scmVersion what revision to pull.
+     * @return
+     * @throws ScmException
+     */
+    protected abstract PullScmResult executePullCommand(ScmProviderRepository repository, ScmFileSet fileSet, ScmVersion scmVersion) throws ScmException;
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/maven/scm/command/pull/PullScmResult.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,35 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+ 
+package com.nokia.maven.scm.command.pull;
+
+import org.apache.maven.scm.ScmResult;
+
+/**
+ * 
+ *
+ */
+public class PullScmResult extends ScmResult
+{
+    public PullScmResult( String commandLine, String providerMessage, String commandOutput, boolean success )
+    {
+        super( commandLine, providerMessage, commandOutput, success );
+    }
+}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/maven/scm/command/tags/AbstractTagsCommand.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,54 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+ 
+package com.nokia.maven.scm.command.tags;
+
+import org.apache.maven.scm.CommandParameters;
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.command.AbstractCommand;
+import org.apache.maven.scm.provider.ScmProviderRepository;
+
+/**
+ * Abstract class representing a tags command. 
+ * Tags consist in retrieving existing tags for a particular repository.
+ * 
+ */
+public abstract class AbstractTagsCommand extends AbstractCommand
+{
+    /**
+     * {@inheritDoc} 
+     */
+    public TagsScmResult executeCommand(ScmProviderRepository repository, ScmFileSet fileSet,
+            CommandParameters parameters) throws ScmException
+    {
+        return executeTagsCommand(repository, fileSet, parameters);
+    }
+    
+    
+    /**
+     * Execute the tags operation on the repository.
+     * @param repository the repository to use for the action
+     * @param fileSetCommand 
+     * @param parameters
+     * @return a TagsScmResult representing the output of the command.
+     * @throws ScmException
+     */
+    protected abstract TagsScmResult executeTagsCommand(ScmProviderRepository repository, ScmFileSet fileSetCommand, CommandParameters parameters) throws ScmException;
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/maven/scm/command/tags/TagsScmResult.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,73 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+
+package com.nokia.maven.scm.command.tags;
+
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.List;
+
+import org.apache.maven.scm.ScmResult;
+import org.apache.maven.scm.ScmTag;
+
+/**
+ *  Class to store the result from the tags operation.
+ *
+ */
+public class TagsScmResult extends ScmResult {
+    private List<ScmTag> scmVersions = new ArrayList<ScmTag>();
+
+    /**
+     * Default constructor.
+     * @param commandLine
+     * @param providerMessage
+     * @param commandOutput
+     * @param success
+     */
+    public TagsScmResult(String commandLine, String providerMessage,
+            String commandOutput, boolean success) {
+        super(commandLine, providerMessage, commandOutput, success);
+    }
+
+    /**
+     * This constructor stores also the ScmTag retrieved.
+     * @param commandLine
+     * @param providerMessage
+     * @param commandOutput
+     * @param success
+     * @param scmVersions
+     */
+    public TagsScmResult(String commandLine, String providerMessage,
+            String commandOutput, boolean success,
+            Enumeration<ScmTag> scmVersions) {
+        super(commandLine, providerMessage, commandOutput, success);
+        while (scmVersions.hasMoreElements()) {
+            ScmTag scmVersion = scmVersions.nextElement();
+            this.scmVersions.add(scmVersion);
+        }
+    }
+
+    /**
+     * Get the list of tags from the command.
+     * @return
+     */
+    public List<ScmTag> getTags() {
+        return scmVersions;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/maven/scm/manager/BasicExtendedScmManager.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,88 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+
+package com.nokia.maven.scm.manager;
+
+import java.io.File;
+
+import org.apache.maven.scm.CommandParameters;
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.manager.BasicScmManager;
+import org.apache.maven.scm.repository.ScmRepository;
+
+import com.nokia.maven.scm.command.pull.PullScmResult;
+import com.nokia.maven.scm.command.tags.TagsScmResult;
+import com.nokia.maven.scm.command.info.InfoScmResult;
+import com.nokia.maven.scm.provider.ScmProviderExt;
+
+/**
+ * Extended SCM manager which implements the additional functionalities
+ * defined by the ExtendedScmManager.
+ *
+ */
+public class BasicExtendedScmManager extends BasicScmManager implements
+        ExtendedScmManager {
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public PullScmResult pull(ScmRepository repository, File path)
+            throws ScmException {
+        try {
+            ScmProviderExt provider = (ScmProviderExt) this
+                    .getProviderByRepository(repository);
+            return provider.pull(repository, path);
+        } catch (ClassCastException exc) {
+            throw new ScmException("The " + repository.getProvider().toString()
+                    + " does not support extended functionalities.");
+        }
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public TagsScmResult tags(ScmRepository repository, File path) throws ScmException {
+        try {
+            ScmProviderExt provider = (ScmProviderExt) this
+                    .getProviderByRepository(repository);
+            return provider.tags(repository, new ScmFileSet(path), new CommandParameters());
+        } catch (ClassCastException exc) {
+            throw new ScmException("The " + repository.getProvider().toString()
+                    + " does not support extended functionalities.");
+        }
+    }
+    
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public InfoScmResult info(ScmRepository repository, File path) throws ScmException {
+        try {
+            ScmProviderExt provider = (ScmProviderExt) this
+                    .getProviderByRepository(repository);
+            return provider.info(repository, new ScmFileSet(path), new CommandParameters());
+        } catch (ClassCastException exc) {
+            throw new ScmException("The " + repository.getProvider().toString()
+                    + " does not support extended functionalities.");
+        }
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/maven/scm/manager/ExtendedScmManager.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,70 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+
+package com.nokia.maven.scm.manager;
+
+import java.io.File;
+
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.manager.ScmManager;
+import org.apache.maven.scm.repository.ScmRepository;
+
+import com.nokia.maven.scm.command.pull.PullScmResult;
+import com.nokia.maven.scm.command.tags.TagsScmResult;
+import com.nokia.maven.scm.command.info.InfoScmResult;
+
+/**
+ * Extended verison of the Maven ScmManager
+ */
+public interface ExtendedScmManager extends ScmManager
+{
+    String ROLE = ExtendedScmManager.class.getName();
+
+    /**
+     * Download changes from remote repository.
+     *
+     * @param repository  the source control system
+     * @param path     location of your local copy
+     * @return
+     * @throws ScmException if any
+     */
+    PullScmResult pull(ScmRepository repository, File path)
+        throws ScmException;
+
+    /**
+     * Get the tag list.
+     *
+     * @param repository  the source control system
+     * @param path     location of your local copy
+     * @return
+     * @throws ScmException if any
+     */
+    TagsScmResult tags(ScmRepository repository, File path)
+        throws ScmException;
+
+    /**
+     * Get the global revision number for the repository.
+     *
+     * @param repository  the source control system
+     * @param path     location of your local copy
+     * @return
+     * @throws ScmException if any
+     */
+    InfoScmResult info(ScmRepository repository, File path)
+        throws ScmException;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/maven/scm/provider/ScmProviderExt.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,79 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+
+package com.nokia.maven.scm.provider;
+
+import java.io.File;
+
+import org.apache.maven.scm.CommandParameters;
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.ScmResult;
+import org.apache.maven.scm.repository.ScmRepository;
+
+import com.nokia.maven.scm.command.pull.PullScmResult;
+import com.nokia.maven.scm.command.tags.TagsScmResult;
+import com.nokia.maven.scm.command.info.InfoScmResult;
+
+/**
+ * This interface describe additional functionalities provider could implement 
+ * compare to the default ScmProvider interface
+ *  
+ */
+public interface ScmProviderExt {
+
+    /**
+     * Create a new repository.
+     * @param repository the repository to create.
+     * @return ScmResult result.
+     * @throws ScmException
+     */
+    ScmResult init(ScmRepository repository) throws ScmException;
+
+    /**
+     * Pull changes, this function is target for distributed SCM file Hg or Git.
+     * @param repository
+     * @param path the location of the checkout.
+     * @return a PullScmResult result object.
+     * @throws ScmException
+     */
+    PullScmResult pull(ScmRepository repository, File path)
+            throws ScmException;
+
+    /**
+     * Get a list of tags from a repository.
+     * @param repository the repository
+     * @param fileSet
+     * @param parameters
+     * @return a TagsScmResult with the list of tags if successful.
+     * @throws ScmException
+     */
+    TagsScmResult tags(ScmRepository repository, ScmFileSet fileSet, CommandParameters parameters)
+            throws ScmException;
+
+    /**
+     * Get information about current revision.
+     * @param repository
+     * @param fileSet
+     * @param parameters
+     * @return a InfoScmResult with current revision if successful.
+     * @throws ScmException
+     */
+    InfoScmResult info(ScmRepository repository, ScmFileSet fileSet, CommandParameters parameters)
+            throws ScmException;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/maven/scm/provider/hg/HgScmProviderExt.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,245 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+
+package com.nokia.maven.scm.provider.hg;
+
+import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+
+import com.nokia.maven.scm.provider.hg.command.log.HgChangeLogCommand;
+import org.apache.maven.scm.command.changelog.ChangeLogScmResult;
+
+import org.apache.log4j.Logger;
+import org.apache.maven.scm.CommandParameters;
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.ScmResult;
+import org.apache.maven.scm.command.checkout.CheckOutScmResult;
+import org.apache.maven.scm.command.export.ExportScmResult;
+import org.apache.maven.scm.command.remove.RemoveScmResult;
+import org.apache.maven.scm.command.branch.BranchScmResult;
+import org.apache.maven.scm.command.update.UpdateScmResult;
+import org.apache.maven.scm.command.tag.TagScmResult;
+import org.apache.maven.scm.provider.ScmProviderRepository;
+import org.apache.maven.scm.provider.hg.HgScmProvider;
+import org.apache.maven.scm.repository.ScmRepository;
+import org.apache.maven.scm.repository.ScmRepositoryException;
+
+import com.nokia.maven.scm.command.pull.PullScmResult;
+import com.nokia.maven.scm.command.tags.TagsScmResult;
+import com.nokia.maven.scm.command.info.InfoScmResult;
+import com.nokia.maven.scm.provider.ScmProviderExt;
+import com.nokia.maven.scm.provider.hg.command.init.HgInitCommand;
+import com.nokia.maven.scm.provider.hg.command.pull.HgPullCommand;
+import com.nokia.maven.scm.provider.hg.command.remove.HgRemoveCommand;
+import com.nokia.maven.scm.provider.hg.command.tags.HgTagsCommand;
+import com.nokia.maven.scm.provider.hg.command.info.HgInfoCommand;
+import com.nokia.maven.scm.provider.hg.command.update.HgUpdateCommand;
+import com.nokia.maven.scm.provider.hg.command.checkout.HgCheckOutCommand;
+import com.nokia.maven.scm.provider.hg.command.export.HgExportCommand;
+import com.nokia.maven.scm.provider.hg.command.branch.HgBranchCommand;
+import com.nokia.maven.scm.provider.hg.command.tag.HgTagCommand;
+import com.nokia.maven.scm.provider.hg.repository.HgScmProviderRepository;
+
+/**
+ * The SCM provider for Mercurial (hg).
+ */
+public class HgScmProviderExt extends HgScmProvider implements ScmProviderExt {
+
+    private static Logger log = Logger.getLogger(HgScmProviderExt.class);
+    
+    public ScmResult init(ScmRepository repository) throws ScmException {
+        log.info("HgScmProviderExt.init()");
+
+        HgInitCommand command = new HgInitCommand();
+
+        return command.executeInitCommand(repository.getProviderRepository());
+    }
+
+    @Override
+    public CheckOutScmResult checkout(ScmProviderRepository repository,
+            ScmFileSet fileSet, CommandParameters parameters)
+            throws ScmException {
+
+        HgCheckOutCommand command = new HgCheckOutCommand();
+        command.setLogger(getLogger());
+        return (CheckOutScmResult) command.executeCommand(repository, fileSet,
+                parameters);
+    }
+
+    @Override
+    public ChangeLogScmResult changelog(ScmProviderRepository repository,
+            ScmFileSet fileSet, CommandParameters parameters)
+            throws ScmException {
+
+        HgChangeLogCommand command = new HgChangeLogCommand();
+        command.setLogger(getLogger());
+        return (ChangeLogScmResult) command.executeCommand(repository, fileSet,
+                parameters);
+    }
+
+    public PullScmResult pull(ScmRepository repository, File path)
+            throws ScmException {
+        HgPullCommand command = new HgPullCommand();
+        command.setLogger(getLogger());
+        return (PullScmResult) command.executeCommand(repository
+                .getProviderRepository(), new ScmFileSet(path),
+                new CommandParameters());
+    }
+
+    @Override
+    public UpdateScmResult update(ScmProviderRepository repository,
+            ScmFileSet fileSet, CommandParameters parameters)
+            throws ScmException {
+        HgUpdateCommand command = new HgUpdateCommand();
+        command.setLogger(getLogger());
+        return (UpdateScmResult) command.executeCommand(repository, fileSet,
+                parameters);
+    }
+
+    public TagsScmResult tags(ScmRepository repository, ScmFileSet fileSet,
+            CommandParameters parameters) throws ScmException {
+        HgTagsCommand command = new HgTagsCommand();
+        command.setLogger(getLogger());
+        return (TagsScmResult) command.executeCommand(repository
+                .getProviderRepository(), fileSet, parameters);
+    }
+    
+    public InfoScmResult info(ScmRepository repository, ScmFileSet fileSet,
+            CommandParameters parameters) throws ScmException {
+        HgInfoCommand command = new HgInfoCommand();
+        command.setLogger(getLogger());
+        return (InfoScmResult) command.executeCommand(repository
+                .getProviderRepository(), fileSet, parameters);
+    }
+
+    @Override
+    public RemoveScmResult remove(ScmProviderRepository repository,
+            ScmFileSet fileSet, CommandParameters parameters)
+            throws ScmException {
+        HgRemoveCommand command = new HgRemoveCommand();
+        command.setLogger(getLogger());
+        return (RemoveScmResult) command.execute(repository, fileSet,
+                parameters);
+    }
+
+    protected BranchScmResult branch(ScmProviderRepository repository,
+            ScmFileSet fileSet, CommandParameters parameters)
+            throws ScmException {
+        HgBranchCommand command = new HgBranchCommand();
+        command.setLogger(getLogger());
+        return (BranchScmResult) command.execute(repository, fileSet,
+                parameters);
+    }
+
+    protected ExportScmResult export(ScmProviderRepository repository,
+            ScmFileSet fileSet, CommandParameters parameters)
+            throws ScmException {
+        HgExportCommand command = new HgExportCommand();
+        command.setLogger(getLogger());
+        return (ExportScmResult) command.execute(repository, fileSet,
+                parameters);
+    }
+
+    @Override
+    public TagScmResult tag(ScmProviderRepository repository,
+            ScmFileSet fileSet, CommandParameters parameters)
+            throws ScmException {
+        HgTagCommand command = new HgTagCommand();
+        command.setLogger(getLogger());
+        return (TagScmResult) command.execute(repository, fileSet, parameters);
+    }
+
+    /* From official implementation */
+    private final class HgUrlParserResult {
+        private List<String> messages = new ArrayList<String>();
+        private ScmProviderRepository repository;
+        
+        public List<String> getMessages() {
+            return messages;
+        }
+        
+        public void setMessages(List<String> messages) {
+            this.messages = messages;
+        }
+        
+        public ScmProviderRepository getRepository() {
+            return repository;
+        }
+        
+        public void setRepository(ScmProviderRepository repository) {
+            this.repository = repository;
+        }
+        
+    }
+
+    private HgUrlParserResult parseScmUrl(String scmSpecificUrl) {
+        HgUrlParserResult result = new HgUrlParserResult();
+
+        URL url = null;
+        log.debug("HgScmProviderExt:parseScmUrl:" + scmSpecificUrl);
+        // try if it is an URL
+        try {
+            url = new URL(scmSpecificUrl);
+            HgScmProviderRepository repo = new HgScmProviderRepository(
+                    "file://localhost/");
+            repo.configure(url);
+            result.repository = repo;
+        } catch (MalformedURLException e) {
+            log.debug("HgScmProviderExt:parseScmUrl:MalformedURLException:"
+                    + e.getMessage());
+            // if the url is invalid then try a simple file. 
+            try {
+                result.setRepository(new HgScmProviderRepository(scmSpecificUrl));
+            } catch (Throwable et) {
+                log.debug("HgScmProviderExt:parseScmUrl:Throwable:"
+                        + et.getMessage());
+                result.getMessages().add("The filename provided is not valid: "
+                        + et.getMessage());
+                return result;
+            }
+        }
+        return result;
+    }
+
+    /**
+     * Overriding default implementation.
+     */
+    public List<String> validateScmUrl(String scmSpecificUrl, char delimiter) {
+        HgUrlParserResult result = parseScmUrl(scmSpecificUrl);
+        return result.messages;
+    }
+
+    /**
+     * Overriding default implementation.
+     */
+    public ScmProviderRepository makeProviderScmRepository(
+            String scmSpecificUrl, char delimiter)
+            throws ScmRepositoryException {
+        HgUrlParserResult result = parseScmUrl(scmSpecificUrl);
+
+        if (result.messages.size() > 0) {
+            throw new ScmRepositoryException("The scm url is invalid.",
+                    result.messages);
+        }
+        return result.repository;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/maven/scm/provider/hg/VersionChangeSet.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,178 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+ 
+package com.nokia.maven.scm.provider.hg;
+
+
+import org.apache.maven.scm.ChangeSet;
+import org.apache.maven.scm.ScmVersion;
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.ChangeFile;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * A version changeset.
+ */
+public class VersionChangeSet extends ChangeSet
+{
+
+    private static final String DATE_PATTERN = "yyyy-MM-dd";
+    private static final String TIME_PATTERN = "HH:mm:ss";
+    private List<ScmVersion> scmVersionList;
+
+    /**
+     * Constructor used when attributes aren't available until later
+     */
+    public VersionChangeSet()
+    {
+        super();
+        scmVersionList = new ArrayList<ScmVersion>();
+    }
+
+    /**
+    * Setter for ScmVersion
+    */
+    public void setScmVersion(ScmVersion scmVersion) throws ScmException
+    {
+        scmVersionList.add(scmVersion);
+    }
+    
+    /**
+     * Getter for ChangeFile list.
+     *
+     * @return List of ScmVersion list.
+    */
+    public List<ScmVersion> getScmVersion()
+    {
+        return scmVersionList;
+    }
+    
+    /**
+    * Added tbranch\tag\revision and changed format to match "hg log --verbose" output. 
+    * File version has been removed, showing only file name
+    * @return String to output the VersionChangeSet result
+    */
+    @SuppressWarnings("unchecked")
+    @Override
+    public String toString()
+    {
+        String result = "";
+        for (ScmVersion versions : getScmVersion()) {
+           if (!versions.getName().equals("")) 
+           {
+               result += versions.getType().toLowerCase() + ":" + versions.getName() + "\n";
+            }
+        }
+        if (getAuthor() != null)
+            result += "user:" + getAuthor() + "\n";
+        if (getDate() != null)
+            result += "date:" + getDate() + "\n";
+        List<ChangeFile> files = getFiles();
+        if ( files.size() != 0 )
+        {
+            result += "files:";
+            for ( ChangeFile changeFile : files )
+            {
+                result += changeFile.getName() + " ";
+            }
+        }
+        if (!getComment().equals(""))
+            result += "\ndescription:" + getComment() + "\n";
+        return result;
+    }
+    
+     /**
+     * Provide the changelog entry as an XML snippet.
+     *
+     * @return a changelog-entry in xml format
+     * @task make sure comment doesn't contain CDATA tags - MAVEN114
+     */
+
+    @SuppressWarnings("unchecked")
+    @Override
+    public String toXML()
+    {
+        StringBuffer buffer = new StringBuffer();
+
+        buffer.append( "\t<changelog-entry>\n" );
+
+        if ( getDate() != null )
+        {
+            buffer.append( "\t\t<date pattern=\"" + getDateFormatted() + "\">" )
+                .append( getDateFormatted() )
+                .append( "</date>\n" )
+                .append( "\t\t<time pattern=\"" + TIME_PATTERN + "\">" )
+                .append( getTimeFormatted() )
+                .append( "</time>\n" );
+        }
+
+        for (ScmVersion versions : getScmVersion()) {
+           if (!versions.getName().equals("")) 
+           {
+               buffer.append("\t\t<" + versions.getType().toLowerCase() + ">\n")
+                     .append("\t\t\t<name>")
+                     .append(versions.getName())
+                     .append("</name>\n");
+               buffer.append("\t\t</" + versions.getType().toLowerCase() + ">\n");
+            }
+        }
+
+        buffer.append( "\t\t<author><![CDATA[" )
+            .append( getAuthor() )
+            .append( "]]></author>\n" );
+        
+        List<ChangeFile> changeFiles = getFiles();
+        for ( ChangeFile changeFile :  changeFiles)
+        {
+            buffer.append( "\t\t<file>\n" )
+                .append( "\t\t\t<name>" )
+                .append( escapeValue( changeFile.getName() ) )
+                .append( "</name>\n" )
+                .append( "\t\t\t<revision>" )
+                .append( changeFile.getRevision() )
+                .append( "</revision>\n" );
+            buffer.append( "\t\t</file>\n" );
+        }
+        buffer.append( "\t\t<msg><![CDATA[" )
+            .append( removeCDataEnd( getComment() ) )
+            .append( "]]></msg>\n" );
+        buffer.append( "\t</changelog-entry>\n" );
+
+        return buffer.toString();
+    }
+
+     /**
+     * remove a <code>]]></code> from comments (replace it with <code>] ] ></code>).
+     *
+     * @param message The message to modify
+     * @return a clean string
+     */
+
+    private String removeCDataEnd( String message )
+    {
+        // check for invalid sequence ]]>
+        int endCdata;
+        while ( message != null && ( message.indexOf( "]]>" ) ) > -1 )
+        {
+            endCdata = message.indexOf( "]]>" );
+            message = message.substring( 0, endCdata ) + "] ] >" + message.substring( endCdata + 3, message.length() );
+        }
+        return message;
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/maven/scm/provider/hg/command/branch/HgBranchCommand.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,56 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+package com.nokia.maven.scm.provider.hg.command.branch;
+
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.ScmResult;
+import org.apache.maven.scm.command.branch.AbstractBranchCommand;
+import org.apache.maven.scm.command.branch.BranchScmResult;
+import org.apache.maven.scm.provider.ScmProviderRepository;
+import org.apache.maven.scm.provider.hg.HgUtils;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Branch command to create a new branch
+ */
+public class HgBranchCommand
+    extends AbstractBranchCommand    
+{
+    /** {@inheritDoc} */
+    protected ScmResult executeBranchCommand( ScmProviderRepository repository, ScmFileSet fileSet, String name, String message )
+        throws ScmException
+    {
+        // Create command
+        File workingDir = fileSet.getBasedir();
+        List<String> branchCmd = new ArrayList<String>();
+        
+        //branch command
+        branchCmd.add("branch");
+        branchCmd.add(name);
+        
+        ScmResult branchResult = HgUtils.execute(workingDir, branchCmd.toArray(new String[branchCmd.size()]));
+
+        return new BranchScmResult(branchResult.getCommandLine(),
+                    branchResult.getProviderMessage(), branchResult
+                            .getCommandOutput(), branchResult.isSuccess());
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/maven/scm/provider/hg/command/checkout/HgCheckOutCommand.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,46 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+
+package com.nokia.maven.scm.provider.hg.command.checkout;
+
+import org.apache.maven.scm.provider.ScmProviderRepository;
+import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.command.checkout.CheckOutScmResult;
+import org.apache.maven.scm.ScmResult;
+import org.apache.maven.scm.ScmVersion;
+import org.apache.maven.scm.ScmException;
+
+/**
+ */
+public class HgCheckOutCommand
+    extends org.apache.maven.scm.provider.hg.command.checkout.HgCheckOutCommand
+{
+    /** {@inheritDoc} */
+    protected CheckOutScmResult executeCheckOutCommand( ScmProviderRepository repo, ScmFileSet fileSet,
+                                                        ScmVersion scmVersion )
+        throws ScmException
+    {
+           CheckOutScmResult result = super.executeCheckOutCommand(repo, fileSet, scmVersion);
+           if (result.getCheckedOutFiles().size() == 0 && !result.isSuccess() && result.getProviderMessage().contains("locate failed with exit code: 1.")) {
+               getLogger().info("Fixing locate calls which returns 1 when no files are found.");
+               result = new CheckOutScmResult(result.getCheckedOutFiles(), new ScmResult(result.getCommandLine(), result.getProviderMessage(), result.getCommandOutput(), true));
+           }
+           return result;
+    }
+       
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/maven/scm/provider/hg/command/export/HgExportCommand.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,94 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+
+package com.nokia.maven.scm.provider.hg.command.export;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.ScmResult;
+import org.apache.maven.scm.ScmVersion;
+import org.apache.maven.scm.command.export.AbstractExportCommand;
+import org.apache.maven.scm.command.export.ExportScmResult;
+import org.apache.maven.scm.provider.ScmProviderRepository;
+import org.apache.maven.scm.provider.hg.HgUtils;
+
+/**
+ * Implements the export command base on the Mercurial archiving functionality.
+ *
+ */
+public class HgExportCommand extends AbstractExportCommand {
+    @Override
+    protected ExportScmResult executeExportCommand(
+            ScmProviderRepository repository, ScmFileSet fileSet,
+            ScmVersion version, String outputDir) throws ScmException {
+        File workingDir = fileSet.getBasedir();
+        File outputDirFile = new File(outputDir);
+        if (!outputDirFile.isDirectory()) {
+            throw new ScmException("Could not find directory: " + outputDirFile);
+        }
+        if (outputDirFile.list().length > 0) {
+            throw new ScmException("Output directory must be empty.");
+        }
+
+        // Create command
+        List<String> exportCmd = new ArrayList<String>();
+        exportCmd.add("archive");
+        exportCmd.add("--no-decode");
+        exportCmd.add("-t");
+        exportCmd.add("files");
+
+        // Which revision
+        exportCmd.add("-r");
+        exportCmd.add((version != null) ? version.getName() : "tip");
+
+        // Target dir
+        exportCmd.add(outputDirFile.getAbsolutePath());
+
+        getLogger().debug(
+                "hg:export:workingDir: " + workingDir.getAbsolutePath());
+        getLogger().debug(
+                "hg:export:outputDir: " + outputDirFile.getAbsolutePath());
+        ScmResult exportResult = HgUtils.execute(workingDir, exportCmd
+                .toArray(new String[exportCmd.size()]));
+
+        if (!exportResult.isSuccess()) {
+            return new ExportScmResult(exportResult.getCommandLine(),
+                    exportResult.getProviderMessage(), exportResult
+                            .getCommandOutput(), exportResult.isSuccess());
+        }
+
+        return new ExportScmResult(exportResult.getCommandLine(),
+                getFiles(outputDirFile));
+    }
+
+    protected List<String> getFiles(File dir) {
+        List<String> files = new ArrayList<String>();
+        for (File f : dir.listFiles()) {
+            if (f.isFile()) {
+                files.add(f.getAbsolutePath());
+            } else if (f.isDirectory()) {
+                files.addAll(getFiles(f));
+            }
+        }
+        return files;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/maven/scm/provider/hg/command/info/HgInfoCommand.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,63 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+
+package com.nokia.maven.scm.provider.hg.command.info;
+
+import java.io.File;
+
+import org.apache.maven.scm.CommandParameters;
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.ScmResult;
+import org.apache.maven.scm.provider.ScmProviderRepository;
+import org.apache.maven.scm.provider.hg.HgUtils;
+import org.apache.maven.scm.provider.hg.command.HgCommandConstants;
+
+import com.nokia.maven.scm.command.info.AbstractInfoCommand;
+import com.nokia.maven.scm.command.info.InfoScmResult;
+
+/**
+ * 'hg info' command implementation.
+ */
+public class HgInfoCommand extends AbstractInfoCommand
+{
+    @Override
+    protected InfoScmResult executeInfoCommand(ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters) throws ScmException {
+
+        File workingDir = fileSet.getBasedir();
+        // Update branch
+        String[] updateCmd = new String[] {
+            HgCommandConstants.REVNO_CMD
+        };
+        
+        HgInfoConsumer consumer = new HgInfoConsumer( getLogger() );
+        
+        ScmResult infoResult = HgUtils.execute(consumer , getLogger(), workingDir, updateCmd );
+
+        if ( !infoResult.isSuccess() )
+        {
+            return new InfoScmResult(infoResult.getCommandLine(), infoResult.getProviderMessage(), infoResult.getCommandOutput(), infoResult.isSuccess() );
+        }
+        
+        this.getLogger().info(infoResult.getCommandOutput());
+        return new InfoScmResult(infoResult.getCommandLine(), infoResult.getProviderMessage(), infoResult.getCommandOutput(), infoResult.isSuccess(), consumer.getRevision());
+        
+    }
+}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/maven/scm/provider/hg/command/info/HgInfoConsumer.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,49 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+package com.nokia.maven.scm.provider.hg.command.info;
+
+import org.apache.maven.scm.provider.hg.command.HgConsumer;
+import org.apache.maven.scm.log.ScmLogger;
+import org.apache.maven.scm.ScmFileStatus;
+
+/**
+ * Consumer of 'hg info' command output.
+ */
+public class HgInfoConsumer
+    extends HgConsumer
+{
+    private String scmRevision = new String();
+    public HgInfoConsumer( ScmLogger logger )
+    {
+        super( logger );
+    }
+
+    /** {@inheritDoc} */
+    public void doConsume( ScmFileStatus status, String trimmedLine )
+    {
+        String[] tagging = trimmedLine.split(" ");
+        if (tagging.length == 2) {
+            this.scmRevision = tagging[0];            
+            }
+    }
+    
+    public String getRevision()
+    {
+        return scmRevision;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/maven/scm/provider/hg/command/init/HgInitCommand.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,77 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+
+package com.nokia.maven.scm.provider.hg.command.init;
+
+import java.io.File;
+
+import org.apache.log4j.Logger;
+import org.apache.maven.scm.CommandParameters;
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.ScmResult;
+import org.apache.maven.scm.command.AbstractCommand;
+import org.apache.maven.scm.command.Command;
+import org.apache.maven.scm.provider.ScmProviderRepository;
+import org.apache.maven.scm.provider.hg.HgUtils;
+import org.apache.maven.scm.provider.hg.command.HgCommandConstants;
+import com.nokia.maven.scm.provider.hg.repository.HgScmProviderRepository;
+
+import com.nokia.maven.scm.command.init.InitScmResult;
+
+/**
+ * 'hg init' command implementation.
+ */
+public class HgInitCommand extends AbstractCommand implements Command {
+    
+    private static Logger log = Logger.getLogger(HgInitCommand.class);
+
+    @Override
+    protected ScmResult executeCommand(ScmProviderRepository repository,
+            ScmFileSet basedir, CommandParameters args) throws ScmException {
+        return executeInitCommand(repository);
+    }
+
+    public InitScmResult executeInitCommand(ScmProviderRepository repository)
+            throws ScmException {
+        // Get the directory in which to create a new repository. Only local
+        // filesystems supported.
+        log.info("executeInitCommand: " + repository);
+        HgScmProviderRepository hgRepo = (HgScmProviderRepository) repository;
+        String uri = hgRepo.getURI();
+        log.info(uri);
+        File hgRepoDir = new File(uri);
+        File hgRepoRootDir = hgRepoDir.getParentFile();
+
+        if (!hgRepoRootDir.exists()) {
+            boolean workingDirReady = hgRepoRootDir.mkdirs();
+            if (!workingDirReady) {
+                throw new ScmException("Could not initiate test branch at: "
+                        + hgRepoRootDir);
+            }
+        }
+
+        // Create and run the command
+        String[] initCmd = new String[] { HgCommandConstants.INIT_CMD, hgRepoDir.getName()};
+        ScmResult result = HgUtils.execute(hgRepoRootDir, initCmd);
+        return new InitScmResult(result.getCommandLine(),
+                result.getProviderMessage(),
+                result.getCommandOutput(),
+                result.isSuccess());
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/maven/scm/provider/hg/command/log/HgChangeLogCommand.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,97 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+package com.nokia.maven.scm.provider.hg.command.log;
+
+
+import com.nokia.maven.scm.provider.hg.VersionChangeSet;
+
+import org.apache.maven.scm.ScmBranch;
+import org.apache.maven.scm.ScmVersion;
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.ScmResult;
+import org.apache.maven.scm.command.Command;
+import org.apache.maven.scm.command.changelog.AbstractChangeLogCommand;
+import org.apache.maven.scm.command.changelog.ChangeLogScmResult;
+import org.apache.maven.scm.command.changelog.ChangeLogSet;
+import org.apache.maven.scm.provider.ScmProviderRepository;
+import org.apache.maven.scm.provider.hg.HgUtils;
+import org.apache.maven.scm.provider.hg.command.HgCommandConstants;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 'hg changelog' command.
+ */
+public class HgChangeLogCommand
+    extends AbstractChangeLogCommand
+    implements Command
+{
+    /** {@inheritDoc} */
+    @SuppressWarnings("unchecked")
+    @Override
+    protected ChangeLogScmResult executeChangeLogCommand( ScmProviderRepository scmProviderRepository,
+                                                          ScmFileSet fileSet, Date startDate, Date endDate,
+                                                          ScmBranch branch, String datePattern )
+        throws ScmException
+    {
+        String[] cmd = new String[] { HgCommandConstants.LOG_CMD, HgCommandConstants.VERBOSE_OPTION };
+        com.nokia.maven.scm.provider.hg.command.log.HgChangeLogConsumer consumer = new com.nokia.maven.scm.provider.hg.command.log.HgChangeLogConsumer( getLogger(), datePattern );
+        ScmResult result = HgUtils.execute( consumer, getLogger(), fileSet.getBasedir(), cmd );
+
+        List<VersionChangeSet> logEntries = consumer.getModifications();
+        List<VersionChangeSet> inRangeAndValid = new ArrayList<VersionChangeSet>();
+        startDate = startDate == null ? new Date( 0 ) : startDate; // From 1. Jan 1970
+        endDate = endDate == null ? new Date() : endDate; // Upto now
+
+        for ( VersionChangeSet logEntry : logEntries )
+        {
+            if ( logEntry.getFiles().size() > 0 )
+            {
+                if ( !logEntry.getDate().before( startDate ) && !logEntry.getDate().after( endDate ) )
+                {
+                    inRangeAndValid.add( logEntry );
+                }
+            }
+        }
+
+        ChangeLogSet changeLogSet = new ChangeLogSet( inRangeAndValid, startDate, endDate );
+        return new ChangeLogScmResult( changeLogSet, result );
+    }
+    
+    /** {@inheritDoc} */
+    @SuppressWarnings("unchecked")
+    @Override
+    protected ChangeLogScmResult executeChangeLogCommand( ScmProviderRepository repository, ScmFileSet fileSet,
+                                                      ScmVersion startVersion, ScmVersion endVersion,
+                                                      String datePattern )
+        throws ScmException
+    {
+        String param = "" + startVersion.getName() + ":" + ((endVersion.getName() != null) ? endVersion.getName() : "");
+        String[] cmd = new String[] { HgCommandConstants.LOG_CMD, HgCommandConstants.VERBOSE_OPTION, HgCommandConstants.REVISION_OPTION, param};
+        com.nokia.maven.scm.provider.hg.command.log.HgChangeLogConsumer consumer = new com.nokia.maven.scm.provider.hg.command.log.HgChangeLogConsumer( getLogger(), datePattern );
+        ScmResult result = HgUtils.execute( consumer, getLogger(), fileSet.getBasedir(), cmd );
+        List<VersionChangeSet> logEntries = consumer.getModifications();
+        Date startDate = new Date( 0 ); // From 1. Jan 1970
+        Date endDate = new Date(); // Upto now
+        ChangeLogSet changeLogSet = new ChangeLogSet(logEntries,startDate,endDate);
+        return new ChangeLogScmResult( changeLogSet, result );
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/maven/scm/provider/hg/command/log/HgChangeLogConsumer.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,217 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+
+package com.nokia.maven.scm.provider.hg.command.log;
+
+import com.nokia.maven.scm.provider.hg.VersionChangeSet;
+
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.ScmTag;
+import org.apache.maven.scm.ScmBranch;
+import org.apache.maven.scm.ScmRevision;
+import org.apache.maven.scm.ChangeFile;
+import org.apache.maven.scm.ScmFileStatus;
+import org.apache.maven.scm.log.ScmLogger;
+import org.apache.maven.scm.provider.hg.command.HgConsumer;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.text.SimpleDateFormat;
+
+/**
+ * Consumer of 'hg changelog' command output.
+ */
+public class HgChangeLogConsumer extends HgConsumer {
+
+    private static final String TIME_PATTERN = "EEE MMM dd HH:mm:ss yyyy Z";
+
+    private static final String REVNO_TAG = "changeset: ";
+
+    private static final String TAG_BRANCH = "branch: ";
+
+    private static final String TAG_TAG = "tag: ";
+
+    private static final String AUTHOR_TAG = "user: ";
+
+    private static final String TIME_STAMP_TOKEN = "date: ";
+
+    private static final String MESSAGE_TOKEN = "description:";
+
+    private static final String MERGED_TOKEN = "merged: ";
+
+    private static final String FILES_TOKEN = "files: ";
+
+    private String prevLine = "";
+
+    private String prevPrevLine = "";
+
+    private ArrayList<VersionChangeSet> logEntries = new ArrayList<VersionChangeSet>();
+
+    private VersionChangeSet currentChange;
+
+    private VersionChangeSet lastChange;
+
+    private boolean isMergeEntry;
+
+    private String currentRevision;
+
+    private String currentTag; // don't know what to do with this
+
+    private String currentBranch;
+
+    private String userDatePattern;
+
+    private boolean spoolingComments;
+
+    private List<String> currentComment;
+
+    public HgChangeLogConsumer(ScmLogger logger, String userDatePattern) {
+        super(logger);
+        this.userDatePattern = userDatePattern;
+    }
+
+    public List<VersionChangeSet> getModifications() {
+        return logEntries;
+    }
+
+    /** {@inheritDoc} */
+    public void consumeLine(String line) {
+
+        // override default behavior which tries to pick through things for
+        // some standard messages. that
+        // does not apply here
+        doConsume(null, line);
+    }
+
+    /** {@inheritDoc} */
+    public void doConsume(ScmFileStatus status, String line) {
+        String tmpLine = line;
+        // If current status == null then this is a new entry
+        // If the line == "" and previous line was "", then this is also a new
+        // entry
+        if ((line.equals("") && (prevLine.equals("") && prevPrevLine.equals("")))
+                || currentComment == null) {
+            if (currentComment != null) {
+                StringBuffer comment = new StringBuffer();
+                int i = 0;
+                for (String eachComment : currentComment) {
+                    comment.append(eachComment);
+                    if (i + 1 < currentComment.size() - 1) {
+                        comment.append('\n');
+                    }
+                    i += 1;
+                }
+                currentChange.setComment(comment.toString());
+            }
+
+            spoolingComments = false;
+
+            // If last entry was part a merged entry
+            if (isMergeEntry && lastChange != null) {
+                String comment = lastChange.getComment();
+                comment += "\n[MAVEN]: Merged from "
+                        + currentChange.getAuthor();
+                comment += "\n[MAVEN]:    " + currentChange.getDateFormatted();
+                comment += "\n[MAVEN]:    " + currentChange.getComment();
+                lastChange.setComment(comment);
+            }
+
+            // Init a new changeset
+            currentChange = new VersionChangeSet();
+            currentChange.setFiles(new ArrayList<ChangeFile>());
+            logEntries.add(currentChange);
+
+            // Reset member vars
+            currentComment = new ArrayList<String>();
+            currentRevision = "";
+            isMergeEntry = false;
+        }
+
+        if (spoolingComments) {
+            currentComment.add(line);
+        } else if (line.startsWith(MESSAGE_TOKEN)) {
+            spoolingComments = true;
+        } else if (line.startsWith(MERGED_TOKEN)) {
+            // This is part of lastChange and is not a separate log entry
+            isMergeEntry = true;
+            logEntries.remove(currentChange);
+            if (logEntries.size() > 0) {
+                lastChange = logEntries.get(logEntries
+                        .size() - 1);
+            } else {
+                getLogger().warn("First entry was unexpectedly a merged entry");
+                lastChange = null;
+            }
+        } else if (line.startsWith(REVNO_TAG)) {
+            tmpLine = line.substring(REVNO_TAG.length()).trim();
+            currentRevision = tmpLine;
+            try {
+                currentChange.setScmVersion(new ScmRevision(tmpLine));
+            } catch (ScmException se) {
+                getLogger().warn(se.getMessage());
+            }
+        } else if (line.startsWith(TAG_TAG)) {
+            tmpLine = line.substring(TAG_TAG.length()).trim();
+            currentTag = tmpLine;
+            try {
+                currentChange.setScmVersion(new ScmTag(tmpLine));
+            } catch (ScmException se) {
+                getLogger().warn(se.getMessage());
+            }
+        } else if (line.startsWith(TAG_BRANCH)) {
+            tmpLine = line.substring(TAG_BRANCH.length()).trim();
+            currentBranch = tmpLine;
+            try {
+                currentChange.setScmVersion(new ScmBranch(tmpLine));
+            } catch (ScmException se) {
+                getLogger().warn(se.getMessage());
+            }
+        } else if (line.startsWith(AUTHOR_TAG)) {
+            tmpLine = line.substring(AUTHOR_TAG.length());
+            tmpLine = tmpLine.trim();
+            currentChange.setAuthor(tmpLine);
+        } else if (line.startsWith(TIME_STAMP_TOKEN)) {
+            tmpLine = line.substring(TIME_STAMP_TOKEN.length()).trim();
+            Date date = null;
+            try {
+                SimpleDateFormat format = new SimpleDateFormat(TIME_PATTERN);
+                date = format.parse(tmpLine);
+                currentChange.setDate(date);
+            } catch (Exception e) {
+                getLogger().warn(
+                        "Consumer Change Log Date Format not supported:"
+                                + e.getMessage());
+            }
+        } else if (line.startsWith(FILES_TOKEN)) {
+            tmpLine = line.substring(FILES_TOKEN.length()).trim();
+            String[] files = tmpLine.split(" ");
+            for (String eachFile : files) {
+                ChangeFile changeFile = new ChangeFile(eachFile, currentRevision);
+                currentChange.addFile(changeFile);
+            }
+        } else {
+            if (!line.equals("")) {
+                getLogger().warn("Could not figure out: " + line);
+            }
+        }
+
+        // record previous line
+        prevLine = line;
+        prevPrevLine = prevLine;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/maven/scm/provider/hg/command/pull/HgPullCommand.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,63 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+
+package com.nokia.maven.scm.provider.hg.command.pull;
+
+import java.io.File;
+
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.ScmResult;
+import org.apache.maven.scm.ScmVersion;
+import org.apache.maven.scm.provider.ScmProviderRepository;
+import org.apache.maven.scm.provider.hg.HgUtils;
+import org.apache.maven.scm.provider.hg.command.HgCommandConstants;
+import org.apache.maven.scm.provider.hg.command.HgConsumer;
+
+import com.nokia.maven.scm.command.pull.AbstractPullCommand;
+import com.nokia.maven.scm.command.pull.PullScmResult;
+
+/**
+ * 'hg pull' command.
+ */
+public class HgPullCommand extends AbstractPullCommand
+{
+
+    @Override
+    protected PullScmResult executePullCommand(ScmProviderRepository repository,
+            ScmFileSet fileSet, ScmVersion scmVersion) throws ScmException {
+
+        File workingDir = fileSet.getBasedir();
+
+        // Update branch
+        String[] updateCmd = new String[] {
+            HgCommandConstants.PULL_CMD,
+        };
+        ScmResult pullResult = HgUtils.execute( new HgConsumer( getLogger() ), getLogger(), workingDir, updateCmd );
+
+        if ( !pullResult.isSuccess() )
+        {
+            return new PullScmResult(pullResult.getCommandLine(), pullResult.getProviderMessage(), pullResult.getCommandOutput(), pullResult.isSuccess() );
+        }
+        
+        this.getLogger().info(pullResult.getCommandOutput());
+        return new PullScmResult(pullResult.getCommandLine(), pullResult.getProviderMessage(), pullResult.getCommandOutput(), pullResult.isSuccess() );
+    }
+}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/maven/scm/provider/hg/command/remove/HgRemoveCommand.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,58 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* Portion Copyright (c) 2007-2008 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.*/
+
+package com.nokia.maven.scm.provider.hg.command.remove;
+
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.ScmResult;
+import org.apache.maven.scm.command.Command;
+import org.apache.maven.scm.command.remove.AbstractRemoveCommand;
+import org.apache.maven.scm.command.remove.RemoveScmResult;
+import org.apache.maven.scm.provider.ScmProviderRepository;
+import org.apache.maven.scm.provider.hg.HgUtils;
+import org.apache.maven.scm.provider.hg.command.HgCommandConstants;
+import org.apache.maven.scm.provider.hg.command.remove.HgRemoveConsumer;
+
+import java.io.File;
+
+/**
+ * Branch version of the remove command, to fix the command line generation.
+ */
+public class HgRemoveCommand
+    extends AbstractRemoveCommand
+    implements Command
+{
+    /** {@inheritDoc} */
+    protected ScmResult executeRemoveCommand( ScmProviderRepository repository, ScmFileSet fileSet, String message )
+        throws ScmException
+    {
+
+        String[] command = new String[] { HgCommandConstants.REMOVE_CMD };
+        command = HgUtils.expandCommandLine( command, fileSet );
+
+        File workingDir = fileSet.getBasedir();
+        HgRemoveConsumer consumer = new HgRemoveConsumer( getLogger(), workingDir );
+
+        ScmResult result = HgUtils.execute( consumer, getLogger(), workingDir, command );
+        return new RemoveScmResult( consumer.getRemovedFiles(), result );
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/maven/scm/provider/hg/command/tag/HgTagCommand.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,137 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* Portion Copyright (c) 2007-2008 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.*/
+
+package com.nokia.maven.scm.provider.hg.command.tag;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.ScmFile;
+import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.ScmFileStatus;
+import org.apache.maven.scm.ScmResult;
+import org.apache.maven.scm.command.Command;
+import org.apache.maven.scm.command.tag.AbstractTagCommand;
+import org.apache.maven.scm.command.tag.TagScmResult;
+import org.apache.maven.scm.provider.ScmProviderRepository;
+import org.apache.maven.scm.provider.hg.HgUtils;
+import org.apache.maven.scm.provider.hg.command.HgCommandConstants;
+import org.apache.maven.scm.provider.hg.command.HgConsumer;
+import org.apache.maven.scm.provider.hg.command.inventory.HgListConsumer;
+import org.apache.maven.scm.provider.hg.command.tag.HgTagConsumer;
+import org.apache.maven.scm.provider.hg.repository.HgScmProviderRepository;
+import org.codehaus.plexus.util.StringUtils;
+
+/**
+ * Tag
+ * 
+ * @author <a href="mailto:ryan@darksleep.com">ryan daum</a>
+ * @version $Id: HgTagCommand.java 686566 2008-08-16 21:52:46Z olamy $
+ */
+public class HgTagCommand extends AbstractTagCommand implements Command {
+    /** {@inheritDoc} */
+    @SuppressWarnings("unchecked")
+    protected ScmResult executeTagCommand(
+            ScmProviderRepository scmProviderRepository, ScmFileSet fileSet,
+            String tag, String level) throws ScmException {
+        if (tag == null || StringUtils.isEmpty(tag.trim())) {
+            throw new ScmException("tag must be specified");
+        }
+
+        if (fileSet.getFileList().size() != 0) {
+            throw new ScmException(
+                    "This provider doesn't support tagging subsets of a directory");
+        }
+
+        File workingDir = fileSet.getBasedir();
+
+        // build the command
+        String[] tagCmd;
+        if (level.equals(new String("local"))) {
+            tagCmd = new String[] { HgCommandConstants.TAG_CMD, "--local",
+                    HgCommandConstants.MESSAGE_OPTION,
+                    "[maven-scm] copy for tag " + tag, tag };
+        } else {
+            tagCmd = new String[] { HgCommandConstants.TAG_CMD,
+                    HgCommandConstants.MESSAGE_OPTION,
+                    "[maven-scm] copy for tag " + tag, tag };
+        }
+        // keep the command about in string form for reporting
+        StringBuffer cmd = joinCmd(tagCmd);
+
+        HgTagConsumer consumer = new HgTagConsumer(getLogger());
+        ScmResult result = HgUtils.execute(consumer, getLogger(), workingDir,
+                tagCmd);
+        HgScmProviderRepository repository = (HgScmProviderRepository) scmProviderRepository;
+        if (result.isSuccess()) {
+            // now push
+            // Push to parent branch if any
+            if (!repository.getURI().equals(
+                    fileSet.getBasedir().getAbsolutePath())) {
+                String[] pushCmd = new String[] { HgCommandConstants.PUSH_CMD,
+                        repository.getURI() };
+                result = HgUtils.execute(new HgConsumer(getLogger()),
+                        getLogger(), fileSet.getBasedir(), pushCmd);
+            }
+        } else {
+            throw new ScmException("Error while executing command "
+                    + cmd.toString());
+        }
+
+        // do an inventory to return the files tagged (all of them)
+        String[] listCmd = new String[] { HgCommandConstants.INVENTORY_CMD };
+        HgListConsumer listconsumer = new HgListConsumer(getLogger());
+        result = HgUtils.execute(listconsumer, getLogger(), fileSet
+                .getBasedir(), listCmd);
+        if (result.isSuccess()) {
+            List<ScmFile> files = listconsumer.getFiles();
+            ArrayList<ScmFile> fileList = new ArrayList<ScmFile>();
+            for (ScmFile scmFile : files) {
+                
+                if (!scmFile.getPath().endsWith(".hgtags")) {
+                    fileList
+                            .add(new ScmFile(scmFile.getPath(), ScmFileStatus.TAGGED));
+                }
+            }
+
+            return new TagScmResult(fileList, result);
+        } else {
+            throw new ScmException("Error while executing command "
+                    + cmd.toString());
+        }
+    }
+
+    private StringBuffer joinCmd(String[] cmds) {
+        StringBuffer result = new StringBuffer();
+        int i = 0;
+        for (String cmd : cmds) {
+            String s = cmd;
+            result.append(s);
+            if (i < cmds.length - 1) {
+                result.append(" ");
+            }
+            i += 1;
+        }
+        return result;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/maven/scm/provider/hg/command/tags/HgTagsCommand.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,60 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+
+package com.nokia.maven.scm.provider.hg.command.tags;
+
+import java.io.File;
+
+import org.apache.maven.scm.CommandParameters;
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.ScmResult;
+import org.apache.maven.scm.provider.ScmProviderRepository;
+import org.apache.maven.scm.provider.hg.HgUtils;
+
+import com.nokia.maven.scm.command.tags.AbstractTagsCommand;
+import com.nokia.maven.scm.command.tags.TagsScmResult;
+
+/**
+ * 'hg tags' command.
+ */
+public class HgTagsCommand extends AbstractTagsCommand
+{
+
+    @Override
+    protected TagsScmResult executeTagsCommand(ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters) throws ScmException {
+
+        File workingDir = fileSet.getBasedir();
+        // Update branch
+        String[] updateCmd = new String[] {
+            "tags",
+        };
+        HgTagsConsumer consumer = new HgTagsConsumer( getLogger() );
+        ScmResult tagsResult = HgUtils.execute(consumer , getLogger(), workingDir, updateCmd );
+
+        if ( !tagsResult.isSuccess() )
+        {
+            return new TagsScmResult(tagsResult.getCommandLine(), tagsResult.getProviderMessage(), tagsResult.getCommandOutput(), tagsResult.isSuccess() );
+        }
+        
+        this.getLogger().info(tagsResult.getCommandOutput());
+        return new TagsScmResult(tagsResult.getCommandLine(), tagsResult.getProviderMessage(), tagsResult.getCommandOutput(), tagsResult.isSuccess(), consumer.getTags());
+    }
+}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/maven/scm/provider/hg/command/tags/HgTagsConsumer.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,60 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+package com.nokia.maven.scm.provider.hg.command.tags;
+
+import org.apache.maven.scm.provider.hg.command.HgConsumer;
+import org.apache.maven.scm.log.ScmLogger;
+import org.apache.maven.scm.ScmFileStatus;
+import org.apache.maven.scm.ScmRevision;
+import org.apache.maven.scm.ScmTag;
+
+import java.util.Enumeration;
+import java.util.Hashtable;
+
+/**
+ */
+public class HgTagsConsumer
+    extends HgConsumer
+{
+
+    private Hashtable<ScmTag, ScmRevision> tagMapping = new Hashtable<ScmTag, ScmRevision>();
+
+    public HgTagsConsumer( ScmLogger logger )
+    {
+        super( logger );
+    }
+
+    /** {@inheritDoc} */
+    public void doConsume( ScmFileStatus status, String trimmedLine )
+    {
+        String[] tagging = trimmedLine.split("\\s+");
+        if (tagging.length == 2) {
+            tagMapping.put(new ScmTag( tagging[0] ), new ScmRevision( tagging[1] ));
+        }
+    }
+
+    public Enumeration<ScmTag> getTags()
+    {
+        return tagMapping.keys();
+    }
+
+    public Hashtable<ScmTag, ScmRevision> getMapping()
+    {
+        return tagMapping;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/maven/scm/provider/hg/command/update/HgUpdateCommand.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,102 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+
+package com.nokia.maven.scm.provider.hg.command.update;
+
+import org.apache.maven.scm.provider.ScmProviderRepository;
+import org.apache.maven.scm.provider.hg.HgUtils;
+import org.apache.maven.scm.provider.hg.command.HgCommandConstants;
+import org.apache.maven.scm.provider.hg.command.HgConsumer;
+import org.apache.maven.scm.provider.hg.command.diff.HgDiffConsumer;
+import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.command.update.UpdateScmResult;
+import org.apache.maven.scm.command.update.UpdateScmResultWithRevision;
+import org.apache.maven.scm.ScmFile;
+import org.apache.maven.scm.ScmFileStatus;
+import org.apache.maven.scm.ScmResult;
+import org.apache.maven.scm.ScmVersion;
+import org.apache.maven.scm.ScmException;
+import org.codehaus.plexus.util.StringUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import java.io.File;
+
+/**
+ */
+public class HgUpdateCommand extends
+        org.apache.maven.scm.provider.hg.command.update.HgUpdateCommand {
+
+    /** {@inheritDoc} */
+    @SuppressWarnings("unchecked")
+    protected UpdateScmResult executeUpdateCommand(ScmProviderRepository repo,
+            ScmFileSet fileSet, ScmVersion tag) throws ScmException {
+        File workingDir = fileSet.getBasedir();
+
+        // Find changes from last revision
+        int previousRevision = HgUtils.getCurrentRevisionNumber(getLogger(),
+                workingDir);
+        // Update branch
+        String[] updateCmd = new String[] {
+                "update",
+                HgCommandConstants.REVISION_OPTION,
+                tag != null && !StringUtils.isEmpty(tag.getName()) ? tag
+                        .getName() : "tip" };
+        ScmResult updateResult = HgUtils.execute(new HgConsumer(getLogger()),
+                getLogger(), workingDir, updateCmd);
+
+        if (!updateResult.isSuccess()) {
+            return new UpdateScmResult(null, null, updateResult);
+        }
+
+        // Find changes from last revision
+        int currentRevision = HgUtils.getCurrentRevisionNumber(getLogger(),
+                workingDir);
+        List<ScmFile> updatedFiles = new ArrayList<ScmFile>();
+        List changes = new ArrayList();
+        String[] diffCmd = null;
+        if (currentRevision == 0) {
+            diffCmd = new String[] { HgCommandConstants.DIFF_CMD,
+                    "-c", "" + currentRevision};
+        } else {
+            diffCmd = new String[] { HgCommandConstants.DIFF_CMD,
+                    HgCommandConstants.REVISION_OPTION, "" + previousRevision,
+                    HgCommandConstants.REVISION_OPTION, "" + currentRevision};
+        }
+        HgDiffConsumer diffConsumer = new HgDiffConsumer(getLogger(),
+                    workingDir);
+        updateResult = HgUtils.execute(diffConsumer, getLogger(),
+                workingDir, diffCmd);
+
+        // Now translate between diff and update file status
+        List<ScmFile> diffFiles = diffConsumer.getChangedFiles();
+        Map diffChanges = diffConsumer.getDifferences();
+        for (ScmFile diffFile : diffFiles) {
+            changes.add(diffChanges.get(diffFile.getPath()));
+            if (diffFile.getStatus() == ScmFileStatus.MODIFIED) {
+                updatedFiles.add(new ScmFile(diffFile.getPath(), ScmFileStatus.PATCHED));
+            } else {
+                updatedFiles.add(diffFile);
+            }
+        }
+        return new UpdateScmResultWithRevision(updatedFiles, changes, String
+                .valueOf(currentRevision), updateResult);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/src/com/nokia/maven/scm/provider/hg/repository/HgScmProviderRepository.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,81 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+package com.nokia.maven.scm.provider.hg.repository;
+
+import java.net.URL;
+
+/**
+ * Custom implementation use to patch official hg implementation. It uses the
+ * URL class for the URL parsing rather than using custom parsing.
+ */
+public class HgScmProviderRepository extends
+        org.apache.maven.scm.provider.hg.repository.HgScmProviderRepository {
+    private URL orgUrl;
+    private String url;
+
+    /**
+     * Default constructor.
+     */
+    public HgScmProviderRepository(String url) {
+        super(url);
+        this.url = url;
+    }
+
+    /**
+     * This method is used to do the actual repository settings.
+     * 
+     * @param url
+     *            the url which points to the repo.
+     */
+    public void configure(URL url) {
+        orgUrl = url;
+        setHost(url.getHost());
+        if (url.getUserInfo() != null) {
+            String[] info = url.getUserInfo().split(":");
+            if (info.length == 2) {
+                setUser(info[0]);
+                setPassword(info[1]);
+            }
+        }
+        if (url.getPort() != -1) {
+            setPort(url.getPort());
+        }
+    }
+
+    public String getURI() {
+        return (orgUrl != null) ? orgUrl.toString() : url;
+    }
+
+    /**
+     * @return A message if the repository as an invalid URI, null if the URI
+     *         seems fine.
+     */
+    public String validateURI() {
+        return null;
+    }
+
+    /** {@inheritDoc} */
+    public String toString() {
+        if (orgUrl != null) {
+            return "Hg Repository Interpreted from: " + orgUrl + ":\nProtocol: "
+                + orgUrl.getProtocol() + "\nHost: " + getHost() + "\nPort: "
+                + getPort() + "\nUsername: " + getUser() + "\nPassword: "
+                + getPassword() + "\nPath: " + orgUrl.getPath();
+        }
+        return "Hg Repository Interpreted from: " + url;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/tests/abstract_unittest_scmtask.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,696 @@
+<?xml version="1.0"?>
+<!-- 
+============================================================================ 
+Name        : abstract_unittest_scmtask.ant.xml 
+Part of     : Helium AntLib
+
+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="abstract-unittest-scmtask" xmlns:hlm="http://www.nokia.com/helium" xmlns:au="antlib:org.apache.ant.antunit">
+    <description>Helium Antlib SCM abtract unittests.</description>
+    
+    <property name="repo.type" value="hg" />
+    <property name="temp.dir" location="${ant.file.abstract-unittest-scmtask}/../temp" />
+    <property name="repo.dir" location="${temp.dir}/repo/${repo.type}" />
+
+    <!-- Defining the features -->
+    <taskdef name="scm" classname="com.nokia.helium.scm.ant.taskdefs.ScmTask" uri="http://www.nokia.com/helium" />
+    <typedef name="latestTag" classname="com.nokia.helium.scm.ant.types.LatestTag" uri="http://www.nokia.com/helium" />
+    <typedef name="tagSet" classname="com.nokia.helium.scm.ant.types.TagSet" uri="http://www.nokia.com/helium" />
+
+
+    <target name="setUp">
+        <delete dir="${temp.dir}" failonerror="false" />
+        <mkdir dir="${temp.dir}" />
+        <mkdir dir="${repo.dir}" />
+        <unzip src="./data/${repo.type}_test1.zip" dest="${repo.dir}" />
+        <unzip src="./data/${repo.type}_test2.zip" dest="${repo.dir}" />
+        <unzip src="./data/${repo.type}_test3.zip" dest="${repo.dir}" />
+    </target>
+
+    <target name="tearDown">
+        <delete dir="${temp.dir}" />
+    </target>
+
+    <!--
+     **************************************************************
+     ** STATUS
+     **************************************************************
+    -->
+    <target name="test-status">
+        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
+            <hlm:status>
+                <fileset dir="${repo.dir}/test1">
+                    <include name="**" />
+                    <exclude name="**/.${repo.type}/**" />
+                </fileset>
+            </hlm:status>
+        </hlm:scm>
+        <echo file="${repo.dir}/test1/not_in_repo.txt">Not in repo</echo>
+        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
+            <hlm:status>
+                <fileset dir="${repo.dir}/test1">
+                    <include name="**" />
+                    <exclude name="**/.${repo.type}/**" />
+                </fileset>
+            </hlm:status>
+        </hlm:scm>
+        <au:assertLogContains text="[not_in_repo.txt:unknown]" />
+    </target>
+
+    <!--
+     **************************************************************
+     ** DIFF
+     **************************************************************
+    -->
+    <target name="test-diff">
+        <echo file="${repo.dir}/test1/not_in_repo.txt">Not in repo</echo>
+        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
+            <hlm:add>
+                <fileset dir="${repo.dir}/test1">
+                    <include name="**" />
+                    <exclude name="**/.${repo.type}/**" />
+                </fileset>
+            </hlm:add>
+        </hlm:scm>
+        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
+            <hlm:diff>
+                <fileset dir="${repo.dir}/test1">
+                    <include name="**" />
+                    <exclude name="**/.${repo.type}/**" />
+                </fileset>
+            </hlm:diff>
+        </hlm:scm>
+        <au:assertLogContains text="+Not in repo" />
+    </target>
+
+
+    <!--
+     **************************************************************
+     ** ADD
+     **************************************************************
+    -->
+    <target name="test-add">
+        <echo file="${repo.dir}/test1/not_in_repo.txt">Not in repo</echo>
+        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
+            <hlm:add>
+                <fileset dir="${repo.dir}/test1">
+                    <include name="**" />
+                    <exclude name="**/.${repo.type}/**" />
+                </fileset>
+            </hlm:add>
+        </hlm:scm>
+        <au:assertLogContains text="[not_in_repo.txt:added]" />
+    </target>
+
+    <!--
+     **************************************************************
+     ** CHECKOUT
+     **************************************************************
+    -->
+    <target name="test-checkout-tip">
+        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test3">
+            <hlm:checkout baseDir="${repo.dir}/cloned" />
+        </hlm:scm>
+        <au:assertLogContains text="hg clone -r tip" />
+        <au:assertFileExists file="${repo.dir}/cloned/revision0.txt" />
+        <au:assertFileExists file="${repo.dir}/cloned/revision1.txt" />
+    </target>
+
+    <target name="test-checkout-revision">
+        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test3">
+            <hlm:checkout baseDir="${repo.dir}/cloned">
+                <revision name="1" />
+            </hlm:checkout>
+        </hlm:scm>
+        <au:assertLogContains text="hg clone -r 1" />
+        <au:assertFileExists file="${repo.dir}/cloned/revision0.txt" />
+        <au:assertFileDoesntExist file="${repo.dir}/cloned/revision2.txt" />
+    </target>
+
+    <target name="test-checkout-revision-error">
+        <au:expectfailure>
+            <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test3">
+                <hlm:checkout baseDir="${repo.dir}/cloned" revision="3" />
+            </hlm:scm>
+        </au:expectfailure>
+    </target>
+
+    <!--
+     **************************************************************
+     ** CHECKIN
+     **************************************************************
+    -->
+    <target name="test-checkin-message-missing" depends="test-add">
+        <au:expectfailure>
+            <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
+                <hlm:checkin>
+                    <fileset dir="${repo.dir}/test1">
+                        <include name="not_in_repo.txt" />
+                        <exclude name="**/.${repo.type}/**" />
+                    </fileset>
+                </hlm:checkin>
+            </hlm:scm>
+        </au:expectfailure>
+    </target>
+
+    <target name="test-checkin" depends="test-add">
+        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
+            <hlm:checkin message="Adding not_in_repo.txt...">
+                <fileset dir="${repo.dir}/test1">
+                    <include name="not_in_repo.txt" />
+                    <exclude name="**/.${repo.type}/**" />
+                </fileset>
+            </hlm:checkin>
+        </hlm:scm>
+    </target>
+
+
+    <!--
+     **************************************************************
+     ** TAGGING
+     **************************************************************
+    -->
+
+    <target name="test-tag-name-missing" depends="test-checkin">
+        <au:expectfailure>
+            <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
+                <hlm:tag baseDir="${repo.dir}/test1" />
+            </hlm:scm>
+        </au:expectfailure>
+    </target>
+
+    <target name="test-tag-basedir-missing" depends="test-checkin">
+        <au:expectfailure>
+            <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
+                <hlm:tag name="1.0.0" />
+            </hlm:scm>
+        </au:expectfailure>
+    </target>
+
+    <target name="test-tag" depends="setUp">
+        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
+            <hlm:tag baseDir="${repo.dir}/test1" name="0.0.1" />
+        </hlm:scm>
+        <au:assertLogContains text="Tag '0.0.1' has been created successfully" />
+    </target>
+
+    <target name="test-tag-local" depends="setUp">
+        <echo file="${repo.dir}/test1/newfile.txt">newly added</echo>
+        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
+            <hlm:add>
+                <fileset dir="${repo.dir}/test1">
+                    <include name="*.txt" />
+                </fileset>
+            </hlm:add>
+            <hlm:checkin message="Adding files .....">
+                <fileset dir="${repo.dir}/test1">
+                    <include name="*.txt" />
+                </fileset>
+            </hlm:checkin>
+            <hlm:tag baseDir="${repo.dir}/test1" name="0.0.2" level="local" />
+        </hlm:scm>
+        <au:assertLogContains text="Tag '0.0.2' has been created successfully" />
+    </target>
+
+    <!--
+     **************************************************************
+     ** Remove
+     **************************************************************
+    -->
+    <target name="test-remove-message-missing" depends="test-checkin">
+        <au:expectfailure>
+            <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
+                <hlm:remove />
+            </hlm:scm>
+        </au:expectfailure>
+    </target>
+
+    <target name="test-remove-nothing" depends="test-checkin">
+        <au:expectfailure>
+            <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
+                <hlm:remove message="Nothing to remove..." />
+            </hlm:scm>
+        </au:expectfailure>
+    </target>
+
+    <target name="test-remove" depends="test-checkin">
+        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
+            <hlm:remove message="Nothing to remove...">
+                <fileset dir="${repo.dir}/test1">
+                    <include name="not_in_repo.txt" />
+                </fileset>
+            </hlm:remove>
+        </hlm:scm>
+        <au:assertFileDoesntExist file="${repo.dir}/test1/not_in_repo.txt" />
+    </target>
+
+
+    <!--
+     **************************************************************
+     ** Update
+     **************************************************************
+    -->
+    <target name="test-update-noarg" depends="test-checkin">
+        <au:expectfailure>
+            <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
+                <hlm:update />
+            </hlm:scm>
+        </au:expectfailure>
+    </target>
+
+    <target name="test-update-basedir" depends="test-checkin">
+        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
+            <hlm:update basedir="${repo.dir}/test1" />
+        </hlm:scm>
+    </target>
+
+    <target name="test-update-empty-repo">
+        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/new">
+            <hlm:init />
+        </hlm:scm>
+        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/new">
+            <hlm:update basedir="${repo.dir}/new" />
+        </hlm:scm>
+    </target>
+        
+    <target name="test-update-basedir-tag" depends="test-checkin">
+        <echo file="${repo.dir}/test1/not_in_repo2.txt">Not in repo2</echo>
+        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
+            <hlm:add>
+                <fileset dir="${repo.dir}/test1">
+                    <include name="**" />
+                    <exclude name="**/.${repo.type}/**" />
+                </fileset>
+            </hlm:add>
+        </hlm:scm>
+        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
+            <hlm:checkin message="Adding not_in_repo2.txt...">
+                <fileset dir="${repo.dir}/test1">
+                    <include name="not_in_repo2.txt" />
+                </fileset>
+            </hlm:checkin>
+        </hlm:scm>
+        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
+            <hlm:update basedir="${repo.dir}/test1">
+                <hlm:tag name="0" />
+            </hlm:update>
+        </hlm:scm>
+        <au:assertFileDoesntExist file="${repo.dir}/test1/not_in_repo2.txt" />
+    </target>
+
+    <target name="test-update-basedir-revision" depends="test-checkin">
+        <echo file="${repo.dir}/test1/not_in_repo2.txt">Not in repo2</echo>
+        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
+            <hlm:add>
+                <fileset dir="${repo.dir}/test1">
+                    <include name="**" />
+                    <exclude name="**/.${repo.type}/**" />
+                </fileset>
+            </hlm:add>
+        </hlm:scm>
+        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
+            <hlm:checkin message="Adding not_in_repo2.txt...">
+                <fileset dir="${repo.dir}/test1">
+                    <include name="not_in_repo2.txt" />
+                </fileset>
+            </hlm:checkin>
+        </hlm:scm>
+        <echo file="${repo.dir}/test1/not_in_repo3.txt">Not in repo3</echo>
+        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
+            <hlm:add>
+                <fileset dir="${repo.dir}/test1">
+                    <include name="**" />
+                    <exclude name="**/.${repo.type}/**" />
+                </fileset>
+            </hlm:add>
+        </hlm:scm>
+        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
+            <hlm:checkin message="Adding not_in_repo3.txt...">
+                <fileset dir="${repo.dir}/test1">
+                    <include name="not_in_repo3.txt" />
+                </fileset>
+            </hlm:checkin>
+        </hlm:scm>
+        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
+            <hlm:update basedir="${repo.dir}/test1">
+                <hlm:revision name="0" />
+            </hlm:update>
+        </hlm:scm>
+        <au:assertFileDoesntExist file="${repo.dir}/test1/not_in_repo3.txt" />
+    </target>
+
+    <!--
+     **************************************************************
+     ** EXPORT
+     **************************************************************
+    -->
+    <target name="test-export-noarg">
+        <au:expectfailure>
+            <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test2">
+                <hlm:export />
+            </hlm:scm>
+        </au:expectfailure>
+    </target>
+
+    <target name="test-export-basedir">
+        <au:expectfailure>
+            <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test2">
+                <hlm:export basedir="${repo.dir}/test2" />
+            </hlm:scm>
+        </au:expectfailure>
+    </target>
+
+    <target name="test-export-basedir-destPath">
+        <mkdir dir="${repo.dir}/export" />
+        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test2">
+            <hlm:export basedir="${repo.dir}/test2" destpath="${repo.dir}/export" />
+        </hlm:scm>
+    </target>
+
+    <target name="test-export-basedir-destPath-tag-rev1">
+        <mkdir dir="${repo.dir}/export" />
+        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test2">
+            <hlm:export basedir="${repo.dir}/test2" destpath="${repo.dir}/export">
+                <tag name="1" />
+            </hlm:export>
+        </hlm:scm>
+        <au:assertFileDoesntExist file="${repo.dir}/export/file3.txt" />
+    </target>
+
+    <target name="test-export-basedir-destPath-tag-rev2">
+        <mkdir dir="${repo.dir}/export" />
+        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test2">
+            <hlm:export basedir="${repo.dir}/test2" destpath="${repo.dir}/export">
+                <tag name="2" />
+            </hlm:export>
+        </hlm:scm>
+        <au:assertFileExists file="${repo.dir}/export/file3.txt" />
+    </target>
+
+    <target name="test-export-basedir-destPath-invalid-tag">
+        <mkdir dir="${repo.dir}/export" />
+        <au:expectfailure>
+            <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test2">
+                <hlm:export basedir="${repo.dir}/test2" destpath="${repo.dir}/export">
+                    <tag name="1.0.0" />
+                </hlm:export>
+            </hlm:scm>
+        </au:expectfailure>
+    </target>
+
+    <target name="test-export-basedir-destPath-2tags">
+        <mkdir dir="${repo.dir}/export" />
+        <au:expectfailure>
+            <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test2">
+                <hlm:export basedir="${repo.dir}/test2" destpath="${repo.dir}/export">
+                    <tag name="1" />
+                    <tag name="2" />
+                </hlm:export>
+            </hlm:scm>
+        </au:expectfailure>
+    </target>
+
+    <!--
+     **************************************************************
+     ** Branch
+     **************************************************************
+    -->
+    <target name="test-branch-name-missing">
+        <au:expectfailure>
+            <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
+                <hlm:branch />
+            </hlm:scm>
+        </au:expectfailure>
+    </target>
+
+    <target name="test-branch-basedir-missing">
+        <au:expectfailure>
+            <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
+                <hlm:branch name="test branch" />
+            </hlm:scm>
+        </au:expectfailure>
+    </target>
+
+    <target name="test-branch" depends="setUp">
+        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
+            <hlm:branch baseDir="${repo.dir}/test1" name="test branch 1.0" />
+        </hlm:scm>
+        <au:assertLogContains text="Branch 'test branch 1.0' has been created successfully." />
+    </target>
+
+    <!--
+     **************************************************************
+     ** Changelog
+     **************************************************************
+    -->
+    <target name="test-changelog-basedir-missing">
+        <au:expectfailure>
+            <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
+                <hlm:changelog />
+            </hlm:scm>
+        </au:expectfailure>
+    </target>
+
+    <target name="test-changelog" depends="setUp">
+
+        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
+            <hlm:checkout baseDir="${repo.dir}/changelog" />
+            <hlm:tag baseDir="${repo.dir}/changelog" name="tag_0.2" />
+            <hlm:branch baseDir="${repo.dir}/changelog" name="test_0.1" />
+        </hlm:scm>
+
+        <echo file="${repo.dir}/changelog/newfile.txt">newly added</echo>
+        <echo file="${repo.dir}/changelog/newfile2.txt">newly added</echo>
+        <echo file="${repo.dir}/changelog/newfile3.txt">newly added</echo>
+
+        <hlm:scm verbose="false" scmUrl="scm:${repo.type}:${repo.dir}/changelog">
+            <hlm:add>
+                <fileset dir="${repo.dir}/changelog">
+                    <include name="*.txt" />
+                </fileset>
+            </hlm:add>
+            <hlm:checkin message="Adding files .....">
+                <fileset dir="${repo.dir}/changelog">
+                    <include name="*.txt" />
+                </fileset>
+            </hlm:checkin>
+            <hlm:changelog baseDir="${repo.dir}/changelog" numDays='1' />
+        </hlm:scm>
+
+        <au:assertLogContains text="tag:tip" />
+        <au:assertLogContains text="branch:test_0.1" />
+        <au:assertLogContains text="files:newfile.txt newfile2.txt newfile3.txt" />
+        
+        <echo file="${repo.dir}/changelog/newfile4.txt">newly added</echo>
+        <echo file="${repo.dir}/changelog/newfile5.txt">newly added</echo>
+        <echo file="${repo.dir}/changelog/newfile6.txt">newly added</echo>
+
+        <hlm:scm verbose="false" scmUrl="scm:hg:${repo.dir}/changelog">
+            <hlm:add>
+                <fileset dir="${repo.dir}/changelog">
+                    <include name="*.txt" />
+                </fileset>
+            </hlm:add>
+            <hlm:checkin message="Adding files .....">
+                <fileset dir="${repo.dir}/changelog">
+                    <include name="*.txt" />
+                </fileset>
+            </hlm:checkin>
+            <hlm:changelog basedir="${repo.dir}/changelog" startVersion="2" />
+        </hlm:scm>
+        <au:assertLogContains text="revision:2:" />
+        
+        <hlm:scm verbose="false" scmUrl="scm:hg:${repo.dir}/changelog">
+            <hlm:changelog basedir="${repo.dir}/changelog" startVersion="1" endVersion="2"/>
+        </hlm:scm>
+        <au:assertLogContains text="revision:1:" />
+        <au:assertLogContains text="revision:2:" />
+        
+        <hlm:scm verbose="false" scmUrl="scm:hg:${repo.dir}/changelog">
+            <hlm:changelog basedir="${repo.dir}/changelog" xmlbom="${repo.dir}/bom.xml"/>
+        </hlm:scm>
+        <au:assertFileExists file="${repo.dir}/bom.xml" />
+    </target>
+    
+    <!--
+     **************************************************************
+     ** Info
+     **************************************************************
+    -->
+    <target name="test-info-basedir-missing">
+        <au:expectfailure>
+            <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
+                <hlm:info />
+            </hlm:scm>
+        </au:expectfailure>
+    </target>
+
+    <target name="test-info-command" depends="setUp">
+        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">            
+            <hlm:checkout baseDir="${repo.dir}/info" /> 
+            <hlm:info baseDir="${repo.dir}/info"/>
+        </hlm:scm>
+
+        <au:assertLogContains text="hg id" />
+    </target>
+    
+    <target name="test-info-command-result" depends="setUp">
+        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">            
+            <hlm:checkout baseDir="${repo.dir}/info" /> 
+            <hlm:info baseDir="${repo.dir}/info"/>
+        </hlm:scm>
+
+        <au:assertLogContains text="00000000000" />
+    </target>
+    
+    <target name="test-info-command-result-failur" depends="setUp">
+        <au:expectfailure>
+            <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">            
+                <hlm:checkout baseDir="${repo.dir}/info" /> 
+                <hlm:info baseDir="${repo.dir}/info"/>
+            </hlm:scm>
+            <au:assertLogContains text="00000000001" />
+        </au:expectfailure>
+    </target>
+    
+    <!--
+     **************************************************************
+     ** Keep Going (faile on error)
+     **************************************************************
+    -->
+    <target name="test-keepgoing-false" depends="setUp">
+        <echo file="${repo.dir}/test1/newfile.txt">newly added</echo>
+        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1" failonerror="false">
+            <hlm:add>
+                <fileset dir="${repo.dir}/test1">
+                    <include name="*.txt" />
+                </fileset>
+            </hlm:add>
+            <hlm:checkin message="Adding files .....">
+                <fileset dir="${repo.dir}/test1">
+                    <include name="*.txt" />
+                </fileset>
+            </hlm:checkin>
+            <hlm:tag baseDir="${repo.dir}/test1" name="0.0.2" />
+            <hlm:tag baseDir="${repo.dir}/test1" name="0.0.2" />            
+        </hlm:scm>
+        <echo> Build Continue... </echo>
+        <au:assertLogContains text="Build Continue..." />
+    </target>
+    
+    <target name="test-keepgoing-true" depends="setUp">
+        <au:expectfailure>
+            <echo file="${repo.dir}/test1/newfile.txt">newly added</echo>
+            <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1" failonerror="true">
+                <hlm:add>
+                    <fileset dir="${repo.dir}/test1">
+                        <include name="*.txt" />
+                    </fileset>
+                </hlm:add>
+                <hlm:checkin message="Adding files .....">
+                    <fileset dir="${repo.dir}/test1">
+                        <include name="*.txt" />
+                    </fileset>
+                </hlm:checkin>
+                <hlm:tag baseDir="${repo.dir}/test1" name="0.0.3" />
+                <hlm:tag baseDir="${repo.dir}/test1" name="0.0.3" />
+            </hlm:scm>
+        </au:expectfailure>
+    </target>
+    
+    <target name="test-keepgoing-true-default" depends="setUp">
+        <au:expectfailure>
+            <echo file="${repo.dir}/test1/newfile.txt">newly added</echo>
+            <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
+                <hlm:add>
+                    <fileset dir="${repo.dir}/test1">
+                        <include name="*.txt" />
+                    </fileset>
+                </hlm:add>
+                <hlm:checkin message="Adding files .....">
+                    <fileset dir="${repo.dir}/test1">
+                        <include name="*.txt" />
+                    </fileset>
+                </hlm:checkin>
+                <hlm:tag baseDir="${repo.dir}/test1" name="0.0.3" />
+                <hlm:tag baseDir="${repo.dir}/test1" name="0.0.3" />
+            </hlm:scm>
+        </au:expectfailure>
+    </target>
+
+    
+    <!--
+     **************************************************************
+     ** Init
+     **************************************************************
+     -->
+    <target name="test-init">
+        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/new">
+            <hlm:init />
+        </hlm:scm>
+        <au:assertFileExists file="${repo.dir}/new" />
+    </target>
+
+    
+    <!--
+     **************************************************************
+     ** Pull
+     **************************************************************
+     -->
+    <target name="test-pull">
+        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
+            <hlm:checkout baseDir="${repo.dir}/pull" />
+        </hlm:scm>
+        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
+            <hlm:tag baseDir="${repo.dir}/test1" name="tag_0.2" />
+        </hlm:scm>
+        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/pull">
+            <hlm:pull baseDir="${repo.dir}/pull" />
+            <hlm:changelog baseDir="${repo.dir}/pull" numDays="1" />
+        </hlm:scm>
+        <au:assertLogContains text="files:.hgtags" />
+        <au:assertLogContains text="description:[maven-scm] copy for tag tag_0.2" />
+    </target>
+    
+    <!--
+     **************************************************************
+     ** Tags
+     **************************************************************
+     -->
+    <target name="test-tags">
+        <echo file="${repo.dir}/test1/content.txt">content...</echo>
+        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
+            <hlm:add>
+                <fileset dir="${repo.dir}/test1">
+                    <include name="*.txt" />
+                </fileset>
+            </hlm:add>
+            <hlm:checkin message="Adding files .....">
+                <fileset dir="${repo.dir}/test1">
+                    <include name="*.txt" />
+                </fileset>
+            </hlm:checkin>            
+            <hlm:tag baseDir="${repo.dir}/test1" name="tag_0.1" />
+            <hlm:tags baseDir="${repo.dir}/test1" />
+        </hlm:scm>
+        <au:assertLogContains text=" * tag_0.1" />
+        <au:assertLogContains text=" * tip" />
+    </target>
+    
+    
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/tests/bld.sh	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#
+# 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: 
+#
+
+if [ -f ~/.bashrc ] ; then
+    . ~/.bashrc
+fi
+ant $*
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/tests/build.bat	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,31 @@
+@echo off
+
+rem
+rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+rem All rights reserved.
+rem This component and the accompanying materials are made available
+rem under the terms of the License "Eclipse Public License v1.0"
+rem which accompanies this distribution, and is available
+rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+rem
+rem Initial Contributors:
+rem Nokia Corporation - initial contribution.
+rem
+rem Contributors:
+rem
+rem Description: 
+rem
+
+setlocal
+if not defined JAVA_6_HOME (
+set TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
+) ELSE  set TESTED_JAVA=%JAVA_6_HOME%
+if exist %TESTED_JAVA% (set JAVA_HOME=%TESTED_JAVA%)
+call ant %*
+if "%ERRORLEVEL%" neq "0" (goto error)
+endlocal
+goto :eof
+
+:error
+endlocal
+if "%OS%"=="Windows_NT" color 00
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/tests/build.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : build.xml 
+Part of     : Helium AntLib
+
+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="helium-scm" xmlns:au="antlib:org.apache.ant.antunit">
+    <description>Helium Antlib SCM unittests.</description>
+
+    <import file="${builder.dir}/java/test-macros.ant.xml"/>
+</project>
Binary file buildframework/helium/external/helium-antlib/java/scm/tests/data/hg_test1.zip has changed
Binary file buildframework/helium/external/helium-antlib/java/scm/tests/data/hg_test2.zip has changed
Binary file buildframework/helium/external/helium-antlib/java/scm/tests/data/hg_test3.zip has changed
Binary file buildframework/helium/external/helium-antlib/java/scm/tests/data/svn_test1.zip has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/scm/tests/test_hg_scmtask.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<!-- 
+============================================================================ 
+Name        : test_hg_scmtask.ant.xml 
+Part of     : Helium AntLib
+
+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="test-hg-scmtask" xmlns:hlm="http://www.nokia.com/helium" xmlns:au="org.apache.ant.antunit">
+    <description>Helium Antlib SCM Mercurial unittest.</description>
+
+    <property name="repo.type" value="hg" />
+
+    <import file="abstract_unittest_scmtask.ant.xml"/>
+
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/signaling/build.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : build.xml 
+Part of     : Helium AntLib
+
+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="helium-signaling">
+    <description>Helium Antlib signaling.</description>
+    
+    
+    <property name="name" value="signaling"/>
+    
+    <import file="${builder.dir}/java/macros.ant.xml"/>
+    
+</project>
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/signaling/demo/build.bat	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,27 @@
+@echo off
+
+rem
+rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+rem All rights reserved.
+rem This component and the accompanying materials are made available
+rem under the terms of the License "Eclipse Public License v1.0"
+rem which accompanies this distribution, and is available
+rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+rem
+rem Initial Contributors:
+rem Nokia Corporation - initial contribution.
+rem
+rem Contributors:
+rem
+rem Description: 
+rem
+
+setlocal
+if not defined JAVA_6_HOME (
+set TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
+) ELSE  set TESTED_JAVA=%JAVA_6_HOME%
+if exist %TESTED_JAVA% (set JAVA_HOME=%TESTED_JAVA%)
+set OLDANT_ARGS=-lib %CD%\..\lib -lib %CD%\..\..\lib -lib  %CD%\..\..\bin\helium-core.jar -lib  %CD%\..\..\bin\helium-signaling.jar -lib %CD%\..\..\antlibs
+ant %*
+endlocal
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/signaling/demo/build.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : build.xml 
+Part of     : Helium AntLib
+
+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="helium-antlib-signal-demo" xmlns:hlm="http://www.nokia.com/helium">
+    <description>Helium Antlib signal demo.</description>
+
+    <taskdef resource="com/nokia/helium/signal/ant/antlib.xml" uri="http://www.nokia.com/helium" />
+
+    <!-- Fail now signal -->
+    <hlm:notifierList id="testSignalNotifiers">
+        <hlm:executeTaskNotifier>
+            <echo>Signal name:   ${signal.name}</echo>
+            <echo>Signal status: ${signal.status}</echo>
+            <echo>Notifier input: ${signal.notifier.inputs}</echo>
+        </hlm:executeTaskNotifier>
+    </hlm:notifierList>
+
+    <hlm:signalInput id="testSignalInput" failBuild="never">
+        <hlm:notifierListRef refid="testSignalNotifiers" />
+        <notifierInput file="build.xml" />
+    </hlm:signalInput>
+
+    <target name="demo-signal">
+        <hlm:signal name="testSignal">
+            <hlm:signalInput refid="testSignalInput">
+                <notifierInput file="build.bat" />
+            </hlm:signalInput>
+        </hlm:signal>
+    </target>
+    
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/signaling/ivy.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+============================================================================ 
+Name        : ivy.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:
+
+============================================================================  
+-->
+<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
+    <info
+        organisation="com.nokia.helium"
+        module="helium-signaling"
+        status="integration" />
+        
+  <dependencies>
+    <dependency name="helium-core" rev="latest.integration" conf="default" />
+  </dependencies>
+</ivy-module>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/signaling/signaling.rst	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,181 @@
+=====================
+Configuring Signaling
+=====================
+
+Helium signaling framework offers you a simplest way to control 
+failures on build flow, and provides you an easy way to get reporting on
+some crucial steps of your build.
+
+
+The configuration
+-----------------
+
+The signaling configuration is divided on three parts:
+
+   * the signalListenerConfig: defines the signal
+   * the signalInput: defines what to do when a signal is raised
+   * the notifierList: defines a set of notifiers
+
+signalListenerConfig
+....................
+
+This part of the configuration is not targeted to be overridden by the build manager.
+
+The following example defines a custom signal named as **customSignal**.
+The default configuration must reference a default signalInput configuration using a nested inputRef element,
+so the signaling framework knows how to behave when a signal is raised.
+
+.. code-block:: xml
+
+    <hlm:signalListenerConfig id="customSignal" target="target-name" message="target-name triggered a signal">
+        <signalNotifierInput>
+            <signalInput refid="signalInputId" />
+            <notifierInput file="some/file/to/notify.html" />
+        </signalNotifierInput>
+        <hlm:targetCondition>
+            </available file="some-file.txt" />
+        </hlm:targetCondition>
+    </hlm:signalListenerConfig>
+ 
+A signal will then be triggered each time the **target-name** completed. The signalInput will then defined how it should be handled.
+
+Other way to trigger a signal is by using the signal task:
+ 
+.. code-block:: xml
+
+    <hlm:signal name="customSignal" result="1">
+        <signalNotifierInput>
+            <signalInput refid="signalInputId" />
+            <notifierInput file="some/file/to/notify.html" />
+        </signalNotifierInput>
+    </hlm:signal>
+    
+
+signalInput
+...........
+
+This Ant type defines what a signal should do when it is raised. The failbuild attribute defines
+if a build failure should be:
+
+    * failing the build now (value: now)
+    * deferred at the end of the build (value: defer)
+    * ignored (value: never)
+   
+Then the configuration will accept a reference to a notifierList using the notifierListRef element.
+
+Example of configurations
+
+.. code-block:: xml
+
+    <hlm:signalInput id="customSignalInput" failbuild="now">
+        <hlm:notifierListRef refid="customNotifier" />
+    </hlm:signalInput>
+  
+This will run all notifier from the customNotifier configuration then fail the build.
+
+.. code-block:: xml
+
+    <hlm:signalInput id="customSignalInput" failbuild="defer"/>
+
+This will defer the failure at the end of the build, no notifier will be run.
+
+notifierList
+............
+
+The notifierList Ant type allows the user to configure a set of Notifier (e.g Email, execute task):
+
+The following example configures a notifier list that will send an email and run few echo task to print
+some information.
+
+.. code-block:: xml
+
+    <hlm:notifierList id="customNotifier">
+        <hlm:emailNotifier templateSrc="${helium.dir}/tools/common/templates/log/email_new.html.ftl"
+                           title="[signal] ${signal.name}" smtp="smtp.server.address"
+                           ldap="ldap://ldap.server.address:389"
+                           notifyWhen="always"/>
+        <hlm:executeTaskNotifier>
+            <echo>defaultSignalAlwaysNotifier: Signal: ${signal.name}</echo>
+            <echo>defaultSignalAlwaysNotifier: Status: ${signal.status}</echo>
+        </hlm:executeTaskNotifier>
+    </hlm:notifierList>
+
+Detailed documentation of the notifier interface could be found `here <../../helium-antlib/index.html>`_.
+
+
+Example: configuring compileSignal
+----------------------------------
+
+In this example we will configure the compileSignal to behave this way:
+
+   * send an email to additional users e.g: user@foo.com, user@bar.com
+   * defer the build failure.
+
+You configuration should contains (e.g build.xml)
+
+.. code-block:: xml
+
+   <?xml version="1.0"?>
+   <project name="mybuild">
+      ...
+      <import file="${helium.dir}/helium.ant.xml"/>
+      ...
+      
+      <hlm:notifierList id="myCustomNotifierList">
+          <hlm:emailNotifier templateSrc="${helium.dir}/tools/common/templates/log/email_new.html.ftl"
+                title="[signal] My build goes wrong: ${signal.name}"
+                smtp="${email.smtp.server}"
+                ldap="${email.ldap.server}"
+                notifyWhen="fail"
+                additionalrecipients="user@foo.com,user@bar.com"/>
+      </hlm:notifierList>
+      
+      <hlm:signalInput id="compileSignalInput" failbuild="defer">
+         <hlm:notifierListRef refid="myCustomNotifierList" />
+      </hlm:signalInput>
+
+   </project>
+
+   
+A custom notifierList has been created with **myCustomNotifierList** as reference ID. It defines
+a emailNotifier which uses the default email template under Helium (${helium.dir}/tools/common/templates/log/email_new.html.ftl).
+It also set the title of you email to be "[signal] My build goes wrong: ${signal.name}" (signal.name property will be replace by the signal name raised).
+**notifyWhen** attribute will make the notifier to send a notification only on build failure.
+Finally the two additional email addresses will be set using the **additionalrecipients** attribute. 
+
+We then need to link the signal configuration and our custom the notifier list. The signalInput element is use to achieve that. 
+It must be defined using the same reference ID (see reference overriding howto) as the one in the Helium configuration, the naming convention for this is: **<signal_name>Input**.
+Its **failbuild** attribute is set to **defer** which will configure the build to keepgoing, and fail at the end of the build flow.
+Finally an embedded notifierListRef element will reference our custom notifier list: **myCustomNotifierList**.
+
+While failing the signaling framework will execute all notifier defined and then store internally the build failure so it can raise it again at the end of the execution.
+    
+
+Example: Report specific errors not included by default
+-------------------------------------------------------
+
+Target prep-work-area has extra log extraction added and output xml is read by a new signal.
+
+.. code-block:: xml
+
+   <hlm:signalInput id="prepWorkAreaSignalInputWarn" failbuild="defer">
+       <hlm:notifierListRef refid="defaultSignalFailNotifier" />
+   </hlm:signalInput>
+   
+   <hlm:signalListenerConfig id="prepWorkAreaSignalWarn" target="prep-work-area" message="Warnings happened during Preparing Work Area">
+        <signalNotifierInput>
+            <signalInput refid="prepWorkAreaSignalInputWarn" />
+            <notifierInput file="${build.log.dir}/${build.id}_ccm_get_input.log2.xml" />
+        </signalNotifierInput>
+       <hlm:targetCondition> 
+           <hlm:hasSeverity severity="error" file="${build.log.dir}/${build.id}_ccm_get_input.log2.xml"/>
+       </hlm:targetCondition>
+   </hlm:signalListenerConfig>
+
+   <target name="prep-work-area" depends="ccmgetinput.prep-work-area">
+       <hlm:logextract file="${prep.log.dir}/${build.id}_ccm_get_input.log" outputfile="${build.log.dir}/${build.id}_ccm_get_input.log2.xml">
+           <recordfilterset>
+               <recordfilter category="error" regexp=".*Explicitly specified but not included" />
+           </recordfilterset>
+       </hlm:logextract>
+   </target>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/signaling/signalingCreateANewSignal.rst	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,114 @@
+==========================================
+Configuring Signaling: Create a new signal
+==========================================
+
+This document will help you implementing a new signal in your configuration.  
+
+Use case
+--------
+You have one target named **custom-action** which
+should generate an artifact in some know location, and you would like the build to continue as far 
+as possible even if that artifact is missing, but being informed during the build it is not going as expected. 
+
+
+Base configuration
+------------------
+
+The following code snippet will be the base configuration for this exercise.   
+
+build.xml
+
+.. code-block:: xml
+
+   <?xml version="1.0" ?>
+   <project name="config" default="test" xmlns:hlm="http://www.nokia.com/helium"> 
+      <property environment="env"/>
+      <import file="${helium.dir}/helium_preinclude.ant.xml"/>
+
+      <!-- Location of the artifact -->    
+      <property name="artifact" location="artifact.txt"/>
+            
+      <import file="${helium.dir}/helium.ant.xml"/>
+
+      <!-- The target -->
+      <target name="custom-action">
+         <delete failonerror="false" file="${artifact}"/>
+         <if>
+            <istrue value="${create.artifact}"/>
+            <then>
+               <echo file="${artifact}">My artifact</echo>
+            </then>
+         </if>
+      </target>
+      
+      <target name="custom-dummy">
+        <echo message="Dummy action"/>
+      </target>
+   
+   </project>   
+
+
+
+To declare a new signal to the framework you need to define a new signalListenerConfig reference.
+You also need to create a signalInput configuration to define your signal behaviour.
+
+.. code-block:: xml
+ 
+   <hlm:signalInput id="customActionSignalInput" failbuild="defer"/>
+   
+   <hlm:signalListenerConfig id="customActionSignal" target="custom-action" message="custom-action target ended.">
+      <signalNotifierInput>
+          <signalInput refid="customActionSignalInput" />
+          <notifierInput file="${artifact}" />
+      </signalNotifierInput>
+      <hlm:targetCondition>
+         <not><available file="${artifact}"/></not>            
+      </hlm:targetCondition>
+   </hlm:signalListenerConfig>
+
+
+The signalListenerConfig defines which target to listen and raise signal for. The target name is defined through the **target** attribute.
+Then the nested **targetCondition** element is used to configure how the signal should be triggered.
+This element accepts any nested `Ant conditions <http://ant.apache.org/manual/CoreTasks/conditions.html>`_.
+In this case the signal will get raised only if the file is not present after the execution of the **custom-action** target.
+
+The framework then uses the defined signalInput from the signalNotifierInput configuration to know how to behave when the signal is raised. In the previous example it will
+simply keep running and fail the build at the end. Then files defined by the nested notifierInput will be passed to the notifier.
+
+The execution of the **custom-action custom-dummy** build sequence will happen entirely even if the artifact is not 
+created properly, then fail the build mentioning the faulty target::
+
+   > hlm custom-action custom-dummy
+   Internal data listening enabled.
+   Buildfile: build.xml
+        [echo]  Using build drive X:
+   
+   custom-action:
+   18:21:14,503  INFO - Signal customActionSignal will be deferred.
+   
+   custom-dummy:
+        [echo] Dummy action
+   
+   BUILD FAILED
+   customActionSignal: custom-action target ended. : custom-action
+   
+   
+   Total time: 2 seconds
+
+
+If you enable the artifact creation then the build will proceed successfully::
+
+   >hlm custom-action custom-dummy -Dcreate.artifact=true
+   Internal data listening enabled.
+   Buildfile: build.xml
+        [echo]  Using build drive X:
+   
+   custom-action:
+   
+   custom-dummy:
+        [echo] Dummy action
+   
+   BUILD SUCCESSFUL
+   Total time: 2 seconds
+
+   
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/signaling/src/com/nokia/helium/signal/Notifier.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,56 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+
+package com.nokia.helium.signal;
+
+import java.util.List;
+import org.apache.tools.ant.Project;
+import com.nokia.helium.signal.ant.types.NotifierInput;
+
+/**
+ * This interface describe what method a Notifier needs to implement.
+ * 
+ */
+public interface Notifier {
+
+    /**
+     * Setting the project.
+     * 
+     * @param project
+     */
+    void setProject(Project project);
+
+    /**
+     * Sends the data to the requested sender list with specified notifier
+     * 
+     * @param signalName is the name of the signal that has been raised.
+     * @param failStatus indicates whether to fail the build or not
+     * @param notifierInput contains signal notifier info
+     * @param message is the message from the signal that has been raised.           
+     */
+    void sendData(String signalName, boolean failStatus,
+            NotifierInput notifierInput, String message );
+
+    /**
+     * Sends the data to the requested sender list with specified notifier
+     * 
+     * @deprecated
+     */    
+    void sendData(String signalName, boolean failStatus,
+            List<String> fileList);
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/signaling/src/com/nokia/helium/signal/SignalExceptionMessage.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,50 @@
+/*
+* Copyright (c) 2007-2008 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:To print the message on the shell in case of build fails for deffered Signals. 
+*
+*/
+ 
+package com.nokia.helium.signal;
+
+
+import org.apache.tools.ant.Project;
+import com.nokia.helium.core.ant.HlmExceptionHandler;
+import org.apache.log4j.Logger;
+
+/**
+ * Class to check the signal is present in the deferred and now signal list.
+ * Print the message on the shell "Build completed with errors and warnings".
+ * 
+ */
+
+public class SignalExceptionMessage implements HlmExceptionHandler {
+    private Logger log = Logger.getLogger(SignalExceptionMessage.class);
+    
+    /**
+     * Implements the Exception method to print the build completed message.
+     * @param project
+     * @param module
+     * @param e
+     */
+    public void handleException(Project project, String module, Exception e) {
+        
+        if (SignalStatusList.getDeferredSignalList().hasSignalInList()) {
+            log.info("Build completed with errors and warnings.");
+        }
+        
+        if (SignalStatusList.getNowSignalList().hasSignalInList()) {
+            log.info("Build completed with errors and warnings.");
+        }
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/signaling/src/com/nokia/helium/signal/SignalNeverFailMessage.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,49 @@
+/*
+* Copyright (c) 2007-2008 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: To print the message on the shell in case of build has errors
+* is user sets failbuild status to never in signal configuration file.
+*
+*/
+ 
+package com.nokia.helium.signal;
+
+
+import org.apache.tools.ant.Project;
+import com.nokia.helium.core.ant.types.*;
+import org.apache.log4j.Logger;
+
+/**
+ * Class to check the signal is present in the never signal list.
+ * Print the message on the shell "Build completed with errors and warnings".
+ * 
+ */
+public class SignalNeverFailMessage extends HlmPostDefImpl
+{
+    private Logger log = Logger.getLogger(SignalNeverFailMessage.class); 
+    
+    /**
+     * Override execute method to print build completed message.
+     * @param prj
+     * @param module
+     * @param targetNames
+     */
+    
+    public void execute(Project prj, String module, String[] targetNames) {
+        
+        if (SignalStatusList.getNeverSignalList().hasSignalInList()) {
+            log.info("Build completed with errors and warnings.");
+        }
+        
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/signaling/src/com/nokia/helium/signal/SignalStatus.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,89 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+
+package com.nokia.helium.signal;
+
+import java.util.Date;
+
+/**
+ * Signal data holder;
+ */
+public class SignalStatus {
+
+    // Signal attributes.
+    private String name;
+    private String message;
+    private String targetName;
+    private Date signalTimeStamp;
+
+    /**
+     * Deferred signal holder.
+     * 
+     * @param signalName
+     *            name of the signal been raised
+     * @param message
+     *            message for the user
+     * @param targetName
+     *            current target.
+     */
+    public SignalStatus(String signalName, String message, String targetName, Date signalDateAndTime) {
+        this.name = signalName;
+        this.message = message;
+        this.targetName = targetName;
+        this.signalTimeStamp = signalDateAndTime;
+        
+    }
+    /**
+     * Returns the signal message.
+     * @return
+     */
+    public String getMessage() {
+        return message;
+    }
+
+    /**
+     * Returns signal name.
+     * @return
+     */
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * Returns target name.
+     * @return
+     */
+    public String getTargetName() {
+        return targetName;
+    }
+    
+    /**
+     * Returns signal date and time.
+     * @return
+     */
+    public Date getTimestamp() {
+        return signalTimeStamp;
+    }
+    
+    /**
+     * Converts signal status object to string.
+     */
+    public String toString() {
+        return name + ": " + message + " : " + targetName;
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/signaling/src/com/nokia/helium/signal/SignalStatusList.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,119 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+package com.nokia.helium.signal;
+
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+
+/**
+ * This class implements at storage for SignalStatus object.
+ * It cannot be instantiated, it must be used through the typed list:
+ * getDeferredSignalList, getNowSignalList, getNeverSignalList
+ *
+ */
+public final class SignalStatusList {
+    
+    private static SignalStatusList deferSignalList = new SignalStatusList();
+    private static SignalStatusList nowSignalList = new SignalStatusList();
+    private static SignalStatusList neverSignalList = new SignalStatusList();
+
+    private Vector<SignalStatus> signals = new Vector<SignalStatus>();
+    
+    private Logger log = Logger.getLogger(this.getClass());
+    
+    
+    private SignalStatusList() { }
+    
+    /**
+     * Get the list of stored SignalStatus object.
+     * @return a Vector of SignalStatus instances.
+     */
+    public Vector<SignalStatus>getSignalStatusList() {
+        return new Vector<SignalStatus>(signals);
+    }
+    
+    /**
+     * Add a SignalStatus object to the list.
+     * 
+     * @param status
+     *            a signal
+     */
+    public void addSignalStatus(SignalStatus status) {
+        log.debug("SignalStatusList:addSignalStatus:msg:" + status);
+        signals.add(status);
+    }
+
+    /**
+     * Converts the error list into a user readable message.
+     * 
+     * @return the error message.
+     */
+    public String getErrorMsg() {
+        StringBuffer statusBuffer = new StringBuffer();
+        for (SignalStatus signalStatus : signals) {
+            statusBuffer.append(signalStatus);
+            statusBuffer.append("\n");
+        }
+        log.debug("getErrorMsg:msg:" + statusBuffer.toString());
+        return statusBuffer.toString();
+    }
+
+    /**
+     * Check if it has any pending signals stored.
+     * 
+     * @return true if any signal are pending.
+     */
+    public boolean hasSignalInList() {
+        log.debug("asDeferMsgInList:size:"
+                + signals.size());
+        return signals.size() > 0;
+    }
+
+    /**
+     * Clear all deferred signals.
+     */
+    public void clearStatusList() {
+        log.debug("clearStatusList:size1:"
+                + signals.size());
+        signals.clear();
+        log.debug("clearStatusList:size2:"
+                + signals.size());
+    }
+    
+    /*
+     * Returns the deferred signal list.
+     */
+    public static SignalStatusList getDeferredSignalList() {
+        return deferSignalList;
+    }
+    
+    /*
+     * Returns the now signal list.
+     */
+    public static SignalStatusList getNowSignalList() {
+        return nowSignalList;
+    }
+    
+    /*
+     * Returns the never signal list.
+     */
+    public static SignalStatusList getNeverSignalList() {
+        return neverSignalList;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/signaling/src/com/nokia/helium/signal/ant/SignalList.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,289 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+
+package com.nokia.helium.signal.ant;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.taskdefs.condition.Condition;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.Target;
+import com.nokia.helium.signal.Notifier;
+import com.nokia.helium.signal.SignalStatus;
+import com.nokia.helium.signal.SignalStatusList;
+import com.nokia.helium.signal.ant.types.SignalListenerConfig;
+import com.nokia.helium.signal.ant.types.SignalInput;
+import com.nokia.helium.signal.ant.types.SignalNotifierInput;
+import com.nokia.helium.signal.ant.types.NotifierInput;
+import com.nokia.helium.signal.ant.types.SignalNotifierList;
+import com.nokia.helium.signal.ant.types.TargetCondition;
+
+import java.util.ArrayList;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.Vector;
+import java.util.HashMap;
+import java.util.Date;
+import java.util.Enumeration;
+import org.apache.log4j.Logger;
+
+/**
+ * Helper class to store the list of notifiers.
+ */
+public class SignalList {
+
+    // default id list name
+    public static final String DEFAULT_NOTIFIER_LIST_REFID = "defaultSignalInput";
+
+
+    private Hashtable<String, SignalListenerConfig> signalListenerConfigs = new Hashtable<String, SignalListenerConfig>();
+
+    private HashMap<String, List<SignalListenerConfig>> targetsMap = new HashMap<String, List<SignalListenerConfig>>();
+
+    private Project project;
+
+    private Logger log = Logger.getLogger(this.getClass());
+
+     /**
+     * Constructor
+     */
+    @SuppressWarnings("unchecked")
+    public SignalList(Project project) {
+        this.project = project;
+        Hashtable<String, Object> references = project.getReferences();
+        Enumeration<String> keyEnum = references.keys();
+        while (keyEnum.hasMoreElements()) {
+            String key = keyEnum.nextElement();
+            if (references.get(key) instanceof SignalListenerConfig) {
+                log.debug("SignalList: Found reference: " + key);
+                SignalListenerConfig config = (SignalListenerConfig) references
+                        .get(key);
+                config.setConfigId(key);
+                signalListenerConfigs.put(key, config);
+                String targetName = config.getTargetName();
+                List<SignalListenerConfig> list;
+                if (targetsMap.get(targetName) == null) {
+                    list = new ArrayList<SignalListenerConfig>();
+                } else {
+                    list = targetsMap.get(targetName);
+                }
+                list.add(config);
+                targetsMap.put(targetName, list);
+            }
+        }
+    }
+
+    public Project getProject() {
+        return project;
+    }
+
+    /**
+     * Returns the list of SignalListenerConfig discovered.
+     * @return a Vector of SignalList objects.
+     */
+    public Vector<SignalListenerConfig> getSignalListenerConfigList() {
+        return new Vector<SignalListenerConfig>(signalListenerConfigs.values());
+    }
+
+    /**
+     * Check if targetName is defined is defined by a targetCondition.
+     * @param targetName the target name
+     * @return a boolean, true if found, false otherwise.
+     */
+    public boolean isTargetInSignalList(String targetName) {
+        return targetsMap.get(targetName) != null;
+    }
+
+    /**
+     * Return the list of SignalListenerConfig defining a target.
+     * @param targetName
+     * @return
+     */
+    public List<SignalListenerConfig> getSignalListenerConfig(String targetName) {
+        return targetsMap.get(targetName);
+    }
+
+    protected void sendNotifications(Vector<Notifier> notifierList, String signalName, String errorMessage ) {
+        sendNotifications( notifierList, signalName, false, null, errorMessage );
+    }
+
+    public void processForSignal(Project prj, SignalNotifierInput signalNotifierInput, String signalName, String targetName, 
+            String errorMessage, boolean failBuild) {
+        SignalInput signalInput = signalNotifierInput.getSignalInput();
+        Vector<Notifier> notifierList = signalInput.getSignalNotifierList();
+        if (notifierList == null) {
+            Object obj = (Object) prj
+                    .getReference(DEFAULT_NOTIFIER_LIST_REFID);
+            if (obj instanceof SignalNotifierList) {
+                notifierList = ((SignalNotifierList) obj)
+                        .getNotifierList();
+            }
+        }
+        NotifierInput notifierInput = signalNotifierInput.getNotifierInput();
+        sendNotifications(notifierList, signalName, failBuild,
+                notifierInput, errorMessage );
+        if (failBuild) {
+            String failStatus = "now";
+            if (signalInput != null) {
+                failStatus = signalInput.getFailBuild();
+            } else {
+                log.debug("Could not find config for signal: " + signalName);
+            }
+            if (failStatus == null || failStatus.equals("now")) {
+                log.debug("Adding now signal. Signal name is " + signalName);
+                SignalStatusList.getNowSignalList().addSignalStatus(new SignalStatus(signalName,
+                        errorMessage, targetName, new Date()));
+                throw new BuildException(new SignalStatus(signalName,
+                        errorMessage, targetName, new Date()).toString());
+            } else if (failStatus.equals("defer")) {
+                log.debug("Adding deffer signal. Signal " + signalName + " will be deferred.");
+                SignalStatusList.getDeferredSignalList().addSignalStatus(new SignalStatus(
+                        signalName, errorMessage, targetName, new Date()));
+            } else if (failStatus.equals("never")) {
+                log.debug("Adding never signal. Signal name is " + signalName);
+                SignalStatusList.getNeverSignalList().addSignalStatus(new SignalStatus(signalName,
+                        errorMessage, targetName, new Date()));
+            } else if (!failStatus.equals("never")) {
+                SignalStatusList.getNowSignalList().addSignalStatus(new SignalStatus(signalName,
+                        errorMessage, targetName, new Date()));
+                throw new BuildException(new SignalStatus(signalName,
+                        errorMessage, targetName, new Date()).toString());
+            } else {
+                log.info("Signal " + signalName
+                        + " set to be ignored by the configuration.");
+            }
+        }
+    }
+    /**
+     * Send notification using the notification list.
+     * 
+     * @param notifierList
+     */
+    protected void sendNotifications(Vector<Notifier> notifierList, String signalName,
+            boolean failStatus, NotifierInput notifierInput, String errorMessage ) {
+        if (notifierList == null) {
+            return;
+        }
+        for (Notifier notifier : notifierList) {
+            if (notifier != null) {
+                notifier.sendData(signalName, failStatus, notifierInput, errorMessage );
+            }
+        }
+    }
+
+    public boolean checkAndNotifyFailure(Target target, Project prj) {
+        String targetName = target.getName();
+        String signalName = "unknown";
+        boolean retValue = false;
+        
+        if (isTargetInSignalList(targetName)) {
+            retValue = true;
+            for (SignalListenerConfig config : getSignalListenerConfig(targetName))
+            {
+                TargetCondition targetCondition = config
+                        .getTargetCondition();
+                String errorMessage = null;
+                log.debug("targetcondition:" + targetCondition);
+                Condition condition = null;
+                if (targetCondition != null) {
+                    condition = getFailureCondition(targetCondition);
+                }
+                errorMessage = config.getErrorMessage();
+                String refid = config.getConfigId();
+                log.debug("refid:" + refid);
+                Object  configCurrent = prj.getReference(refid);
+                if (configCurrent != null && configCurrent instanceof SignalListenerConfig) {
+                    signalName = refid;
+                }
+                processForSignal(prj, config.getSignalNotifierInput(), signalName, 
+                        targetName, errorMessage, condition != null);
+                log.debug("checkAndNotifyFailure: SignalName: " + signalName);
+            }
+        }
+        return retValue;
+    }
+    
+    private Condition getFailureCondition(TargetCondition targetCondition) {
+        Condition retCondition = null;
+        Vector<Condition> conditionList = targetCondition.getConditions();
+        for (Condition condition : conditionList) {
+            log.debug("getFailureCondition:" + condition.eval());
+            if (condition.eval()) {
+                retCondition = condition;
+                break;
+            }
+        }
+        return retCondition;
+    }
+
+    /**
+     * Send signal notification by running configured notifiers.
+     * 
+     * @param targetName
+     */
+    public void sendSignal(String signalName, boolean failStatus)
+    {
+        log.debug("Sending signal for:" + signalName);
+        if (project.getReference(DEFAULT_NOTIFIER_LIST_REFID) != null) {
+            // sending using default settings
+            sendNotify(((SignalInput) project
+                    .getReference(DEFAULT_NOTIFIER_LIST_REFID))
+                    .getSignalNotifierList(), signalName, failStatus,null);
+        }
+    }
+
+    protected void sendNotify(Vector<Notifier> notifierList, String signalName) {
+        sendNotify(notifierList, signalName, false, null);
+    }
+
+    /**
+     * Send notification using the notification list.
+     * 
+     * @param notifierList
+     */
+    @SuppressWarnings("deprecation")
+    protected void sendNotify(Vector<Notifier> notifierList, String signalName,
+            boolean failStatus, List<String> fileList) {
+        if (notifierList == null) {
+            return;
+        }
+        for (Notifier notifier : notifierList) {
+            if (notifier != null) {
+                notifier.sendData(signalName, failStatus, fileList);
+            }
+        }
+    }
+
+    /**
+     * Handle the signal, either fail now, or defer the failure.
+     * 
+     * @param targetName
+     *            , target where the failure happened.
+     * @param errMsg
+     *            , the error message
+     */
+    public void fail(String signalName, String targetName, String errorMessage)
+    {
+        String failStatus = "now";
+        log.debug("Could not find config for signal: " + signalName);
+        log.debug("failStatus: " + failStatus);
+        log.debug("Adding now signal. Signal name is " + signalName);
+        SignalStatusList.getNowSignalList().addSignalStatus(new SignalStatus(signalName,
+            errorMessage, targetName, new Date()));
+        throw new BuildException(new SignalStatus(signalName,
+            errorMessage, targetName, new Date()).toString());
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/signaling/src/com/nokia/helium/signal/ant/SignalListener.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,118 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+
+package com.nokia.helium.signal.ant;
+
+import org.apache.tools.ant.BuildListener;
+
+import org.apache.tools.ant.BuildEvent;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.BuildException;
+import org.apache.log4j.Logger;
+
+/**
+ * Listener class that can connect to Ant and log information regarding to build
+ * times, number of errors and such. Data is sent to Diamonds server, where it
+ * is processed further.
+ * 
+ * This class is listening all build related events. It catches the build
+ * start-finish, target start-finish events of Ant and gather build start-end
+ * time, errors/warnings and store in BuildData class. Stored data will be
+ * exported to XML and uploaded to Diamonds server after each specific target.
+ * For example after target "create-bom" this class will upload all BOM data to
+ * Diamonds.
+ * 
+ * 
+ */
+public class SignalListener implements BuildListener {
+
+    public static final String MODULE_NAME = "signaling";
+    
+    private boolean initialized;
+
+    private SignalList signalList;
+
+    private Project project;
+
+    private Logger log = Logger.getLogger(this.getClass());
+
+    /**
+     * Ant call this function when build start.
+     */
+    public void buildStarted(BuildEvent event) {
+        project = event.getProject();
+    }
+
+    /**
+     * Triggered when a target starts.
+     */
+    public void targetStarted(BuildEvent event) {
+        if (project == null) {
+            project = event.getProject();
+        }
+    }
+
+    private void initialize() {
+        signalList = new SignalList(project);
+        //signalList1 = new SignalList(project);
+    }
+
+    /**
+     * Triggered when a target finishes.
+     */
+    public void targetFinished(BuildEvent event) {
+        if (!initialized) {
+            log.debug("Signaling: Initializing Signaling");
+            initialize();
+            initialized = true;
+        }
+        log.debug("Signaling:targetFinished:sendsignal: " + event.getTarget());
+        try {
+            //boolean status = signalList1.checkAndNotifyFailure(event.getTarget(),event.getProject());
+            //if (!status) {
+            signalList.checkAndNotifyFailure(event.getTarget(),event.getProject());
+            //}
+        } catch (Exception e) {
+            throw new BuildException(e.getMessage(), e);
+        }
+    }
+
+    /**
+     * Triggered when the build finishes.
+     */
+    public void buildFinished(BuildEvent event) {
+    }
+
+    /**
+     * Triggered when a task starts.
+     */
+    public void taskStarted(BuildEvent event) {
+    }
+
+    /**
+     * Triggered when a task finishes.
+     */
+    public void taskFinished(BuildEvent event) {
+    }
+
+    /**
+     * Triggered when a build message is logged.
+     */
+    public void messageLogged(BuildEvent event) {
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/signaling/src/com/nokia/helium/signal/ant/antlib.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : antlib.xml 
+Part of     : Helium AntLib
+
+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:
+
+============================================================================
+-->
+<antlib>
+    <!-- Task definition -->
+    <taskdef name="signal" classname="com.nokia.helium.signal.ant.taskdefs.Signal"/>
+    <taskdef name="clearDeferredFailures" classname="com.nokia.helium.signal.ant.taskdefs.ClearDeferredFailures"/>
+    
+    <!-- Type definition -->
+    <typedef name="hasDeferredFailure" classname="com.nokia.helium.signal.ant.conditions.DeferredFailureCondition"/>
+    <typedef name="signalInput" classname="com.nokia.helium.signal.ant.types.SignalInput"/> 
+    <typedef name="signalNotifierInput" classname="com.nokia.helium.signal.ant.types.SignalNotifierInput"/> 
+    <typedef name="signalListenerConfig" classname="com.nokia.helium.signal.ant.types.SignalListenerConfig"/>
+    <typedef name="notifierList" classname="com.nokia.helium.signal.ant.types.SignalNotifierList"/>
+    <typedef name="emailNotifier" classname="com.nokia.helium.signal.ant.types.EMAILNotifier"/>
+    <typedef name="infoNotifier" classname="com.nokia.helium.signal.ant.types.InfoNotifier"/>
+    <typedef name="executeTaskNotifier" classname="com.nokia.helium.signal.ant.types.ExecuteTaskNotifier"/>
+    <typedef name="xmlsource" classname="com.nokia.helium.signal.ant.types.XmlSource"/>
+</antlib>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/signaling/src/com/nokia/helium/signal/ant/conditions/DeferredFailureCondition.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,84 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+
+package com.nokia.helium.signal.ant.conditions;
+
+import org.apache.tools.ant.taskdefs.condition.Condition;
+import com.nokia.helium.signal.SignalStatus;
+import com.nokia.helium.signal.SignalStatusList;
+
+import org.apache.tools.ant.ProjectComponent;
+
+/**
+ * The hasDeferredFailure condition allows you to know if any diferred failure are pending,
+ * or simply if a specific kind of failure has been deferred.
+ *
+ * Check for any pending failure, e.g: 
+ * <pre>
+ * &lt;condition property="pending.failure"&gt;
+ *     &lt;hlm:hasDeferredFailure/&gt;
+ * &lt;/condition&gt;
+ * </pre>
+
+ * Check for a particular pending failure e.g:
+ * <pre>
+ * &lt;condition property="pending.compile.failure"&gt;
+ *     &lt;hlm:hasDeferredFailure name="compileSignal"/&gt;
+ * &lt;/condition&gt;
+ * </pre>
+ * @ant.type name="hasDeferredFailure" category="Signaling"
+ * 
+ */
+public class DeferredFailureCondition extends ProjectComponent implements
+        Condition {
+
+    private String name;
+
+    /**
+     * Set the signal name.
+     * @ant.not-required Ignored by default
+     */
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    /**
+     * Evaluate to true if name is not defined and has any pending failure. Or
+     * if name is defined and has any pending failure with that particular
+     * signal name.
+     */
+    public boolean eval() {
+        if (name != null) {
+            getProject().log("Has deferred " + name + " failure?");
+            for (SignalStatus signal : SignalStatusList.getDeferredSignalList().getSignalStatusList()) {
+                if (signal.getName().equals(name)) {
+                    getProject().log("Failure " + name + " found.");
+                    return true;
+                }
+            }
+        } else {
+            getProject().log(
+                    "Deferred failure: "
+                            + ((SignalStatusList.getDeferredSignalList().hasSignalInList()) ? "Yes"
+                                    : "No"));
+            return SignalStatusList.getDeferredSignalList().hasSignalInList();
+        }
+        return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/signaling/src/com/nokia/helium/signal/ant/helium.antlib.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : libs.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="libs-signal" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
+    <description>
+        Ant task definition declarations.
+    </description>
+    <taskdef resource="com/nokia/helium/core/ant/antlib.xml" uri="http://www.nokia.com/helium"/>
+    <taskdef resource="com/nokia/helium/signal/ant/antlib.xml" uri="http://www.nokia.com/helium"/>
+
+    <typedef name="signalstatusdef" classname="com.nokia.helium.signal.ant.types.SignalStatusDef" uri="http://www.nokia.com/helium"/>
+    <typedef name="exceptionsignal" classname="com.nokia.helium.signal.ant.types.SignalExceptionHandler" uri="http://www.nokia.com/helium"/>
+    <typedef name="buildfailmessage" classname="com.nokia.helium.signal.SignalExceptionMessage" uri="http://www.nokia.com/helium"/>
+    <typedef name="buildneverfailmessage" classname="com.nokia.helium.signal.SignalNeverFailMessage" uri="http://www.nokia.com/helium"/>
+
+    <hlm:deflist id="helium-signaling.list">
+        <hlm:listenerdef classname="com.nokia.helium.signal.ant.SignalListener" />
+        <hlm:signalstatusdef/>
+        <hlm:exceptionsignal/>
+        <hlm:buildfailmessage/>
+        <hlm:buildneverfailmessage/>
+    </hlm:deflist>
+</project>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/signaling/src/com/nokia/helium/signal/ant/taskdefs/ClearDeferredFailures.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,40 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+
+package com.nokia.helium.signal.ant.taskdefs;
+
+import org.apache.tools.ant.Task;
+import com.nokia.helium.signal.SignalStatusList;
+
+/**
+ * This class implements a task that clear all pending failure. It is quite
+ * useful for testing.
+ * @ant.task name="clearDeferredFailures" category="Signaling"
+ */
+public class ClearDeferredFailures extends Task {
+
+    /**
+     * Does the cleaning.
+     */
+    @Override
+    public void execute() {
+        log("Clearing all pending failures.");
+        SignalStatusList.getDeferredSignalList().clearStatusList();
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/signaling/src/com/nokia/helium/signal/ant/taskdefs/Signal.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,172 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+
+package com.nokia.helium.signal.ant.taskdefs;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Task;
+import org.apache.tools.ant.Target;
+import java.util.Vector;
+import com.nokia.helium.signal.ant.SignalList;
+import com.nokia.helium.signal.ant.types.SignalNotifierInput;
+
+/**
+ * This task provide a way to raise a signal.
+ * If the provided result is different from 0 then the mentioned signal
+ * is raised.
+ * 
+ * You can emit a signal based from the signal task, its behavior will get defined by the
+ * nested signalInput element. e.g:
+ * <pre>
+ * &lt;target name=&quot;raise-signal&quot;&gt;
+ *   &lt;-- Some computation that sets result property --&gt;
+ *   &lt;property name=&quot;result&quot; value=&quot;1&quot;/&gt;
+ *   
+ *   &lt;hlm:signal name=&quot;compileSignal&quot; result=&quot;${result}&quot;&gt;
+ *       &lt;-- Let's refer to some existing signal input configuration --&gt;
+ *       &lt;hlm:signalInput refid=&quot;testDeferredSignalInput&quot; /&gt;
+ *   &lt;/hlm:signal&gt;
+ * &lt;/target&gt;
+ * </pre>
+ * 
+ * The execution of the <code>signal</code> task will behave depending on the <code>compileSignal</code> configuration,
+ * if not defined the build will fail.
+ * 
+ * @ant.task name="signal" category="Signaling"
+ */
+public class Signal extends Task {
+
+    private String name;
+    private String message;
+    private Integer result;
+
+    private Vector<SignalNotifierInput> signalNotifierInputs = new Vector<SignalNotifierInput>();
+    
+    public String getMessage() {
+        return message;
+    }
+
+    /**
+     * Helper function called by ant to create the new signalinput
+     */
+    public SignalNotifierInput createSignalNotifierInput() {
+        SignalNotifierInput input =  new SignalNotifierInput();
+        add(input);
+        return input;
+    }
+
+    public SignalNotifierInput getSignalNotifierInput() {
+        return (SignalNotifierInput)signalNotifierInputs.elementAt(0);
+    }
+    /**
+     * Helper function to add the created signalinput
+     * @param filter to be added to the filterset
+     */
+    public void add(SignalNotifierInput input) {
+        signalNotifierInputs.add(input);
+    }
+    
+    
+    /**
+     * Error message.
+     * 
+     * @ant.not-required
+     */
+    public void setMessage(String message) {
+        this.message = message;
+    }
+
+
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * Signal name to emit.
+     * 
+     * @ant.required
+     */
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    /**
+     * integer value representing the number of errors.
+     * 
+     * @ant.required
+     */
+    public void setResult(int result) {
+        this.result = new Integer(result);
+    }
+
+    @Override
+    public void execute() {
+        if (name == null)
+            throw new BuildException("'name' attribute is not defined.");
+        if (result == null) {
+            result = new Integer(0);
+        }
+
+        SignalList signalList = new SignalList(getProject());
+        boolean failStatus = result.intValue() != 0; 
+        if (failStatus) {
+            // keep same message as earlier.
+            log(name
+                    + ": "
+                    + name
+                    + " signal failed. Expected result was 0, actual result was "
+                    + result);
+
+            if (message == null) {
+                message = "Expected result was 0, actual result was " + result;
+            }
+        }
+        
+        // notify the user
+        String targetName = "signalExceptionTarget";  
+        Target target = this.getOwningTarget();
+        if (target != null) {
+            targetName = target.getName();
+        }
+
+        if (signalNotifierInputs.isEmpty()) {          
+            Object config = getProject().getReference(name);
+            if (config == null) {
+                throw new BuildException("Could not find signal config for signal name: " + name);
+            }
+            signalList.sendSignal(getName(), result.intValue() != 0);
+            if (result.intValue() != 0) {
+                // keep same message as earlier.
+                log(name
+                        + ": "
+                        + name
+                        + " signal failed. Expected result was 0, actual result was "
+                        + result);
+
+                if (message == null) {
+                    message = "Expected result was 0, actual result was " + result;
+                }
+                signalList.fail(getName(), this.getOwningTarget().getName(), message);
+            }
+            
+        } else {
+            signalList.processForSignal(getProject(), getSignalNotifierInput(), getName(),
+                targetName, message, failStatus);
+        }
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/signaling/src/com/nokia/helium/signal/ant/types/EMAILNotifier.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,332 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+
+package com.nokia.helium.signal.ant.types;
+
+import com.nokia.helium.core.EmailDataSender;
+import java.util.Iterator;
+import com.nokia.helium.core.PropertiesSource;
+import com.nokia.helium.core.TemplateInputSource;
+import com.nokia.helium.core.XMLTemplateSource;
+import com.nokia.helium.signal.Notifier;
+import com.nokia.helium.signal.ant.SignalListener;
+import com.nokia.helium.core.TemplateProcessor;
+import com.nokia.helium.core.HlmAntLibException;
+import java.util.List;
+import java.util.Hashtable;
+import java.util.ArrayList;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.types.DataType;
+import org.apache.log4j.Logger;
+import java.io.File;
+
+/**
+ * The emailNotifier provides you an easy way to send a you and email containing
+ * the summary of a build failure.
+ * 
+ * @ant.type name="emailNotifier" category="Signaling"
+ */
+public class EMAILNotifier extends DataType implements Notifier {
+
+    private Logger log = Logger.getLogger(EmailDataSender.class);
+    private TemplateProcessor templateProcessor = new TemplateProcessor();
+    private File defaultTemplate;
+    private File templateSrc; // Deprecated    
+    private String title;
+    private String smtp;
+    private String ldap;
+    private String rootdn;
+    private String notifyWhen = "never";
+    private String from;
+    private String additionalRecipients;
+
+    /**
+     * Rendering the template, and sending the result through email.
+     * @deprecated
+     * @param signalName
+     *            - Name of the signal that has been raised.
+     */
+    @SuppressWarnings("unchecked")
+    public void sendData(String signalName, boolean failStatus,
+            List<String> fileList) {
+        if (notifyWhen != null
+                && (notifyWhen.equals("always") || (notifyWhen.equals("fail") && failStatus)
+                        || (notifyWhen.equals("pass") && !failStatus))) {
+            if (templateSrc == null) {
+                throw new HlmAntLibException(SignalListener.MODULE_NAME,
+                        "templateSrc attribute has not been defined.");
+            }
+
+            if (title == null) {
+                throw new HlmAntLibException(SignalListener.MODULE_NAME,
+                        "title attribute has not been defined.");
+            }
+
+            if (smtp == null) {
+                throw new HlmAntLibException(SignalListener.MODULE_NAME,
+                        "smtp attribute has not been defined.");
+            }
+
+            if (ldap == null) {
+                throw new HlmAntLibException(SignalListener.MODULE_NAME,
+                        "ldap attribute has not been defined.");
+            }
+
+            log.debug("Sending data by e-mail.");
+            File emailOutputFile;
+            try {
+                emailOutputFile = File.createTempFile("helium_", "email.html");
+                emailOutputFile.deleteOnExit();
+                log.debug("sending data by e-mail:outputDir: "
+                        + emailOutputFile.getAbsolutePath());
+
+                List<TemplateInputSource> sourceList = new ArrayList<TemplateInputSource>();
+                sourceList.add(new PropertiesSource("ant", getProject()
+                        .getProperties()));
+                Iterator iter = fileList.iterator();
+                String sourceBaseName = "doc";
+                int count = 0;
+                while (iter.hasNext()) {
+                    String srcFile = (String) iter.next();
+                    sourceList.add(new XMLTemplateSource(sourceBaseName + count, 
+                            new File(srcFile)));
+                    count++;
+                }
+                Hashtable<String, String> signalProperties = new Hashtable<String, String>();
+                signalProperties.put("signal.name", signalName);
+                signalProperties.put("signal.status", "" + failStatus);
+                sourceList.add(new PropertiesSource("signaling",
+                        signalProperties));
+
+                templateProcessor.convertTemplate(templateSrc, emailOutputFile,
+                        sourceList);
+                EmailDataSender emailSender;
+                if (rootdn != null)
+                {
+                    String[] to = null;
+                    if (additionalRecipients != null)
+                    {
+                        to = additionalRecipients.split(",");
+                    }
+                    emailSender = new EmailDataSender(to, smtp, ldap, rootdn);
+                }
+                else
+                {
+                    emailSender = new EmailDataSender(
+                        additionalRecipients, smtp, ldap);
+                }
+                if (from != null)
+                {
+                    emailSender.setFrom(from);
+                }
+                log.debug("EmailNotifier:arlist: " + additionalRecipients);
+                Project subProject = getProject().createSubProject();
+                subProject.setProperty("signal.name", signalName);
+                subProject.setProperty("signal.status", "" + failStatus);
+                emailSender.addCurrentUserToAddressList();
+                emailSender.sendData("signaling", emailOutputFile
+                        .getAbsolutePath(), "application/html", subProject
+                        .replaceProperties(title), null);
+            } catch (Exception e) {
+                log.debug("EmailNotifier:exception: ", e);
+            }
+        }
+    }
+            
+    
+    /**
+     * Rendering the template, and sending the result through email.
+     * 
+     * @param signalName - is the name of the signal that has been raised.
+     * @param failStatus - indicates whether to fail the build or not
+     * @param notifierInput - contains signal notifier info
+     * @param message - is the message from the signal that has been raised. 
+     */
+
+    @SuppressWarnings("unchecked")
+    public void sendData(String signalName, boolean failStatus,
+            NotifierInput notifierInput, String message ) {
+        if (notifyWhen != null
+                && (notifyWhen.equals("always") || (notifyWhen.equals("fail") && failStatus)
+                        || (notifyWhen.equals("pass") && !failStatus))) {
+            if (title == null) {
+                throw new HlmAntLibException(SignalListener.MODULE_NAME,
+                        "title attribute has not been defined.");
+            }
+
+            if (smtp == null) {
+                throw new HlmAntLibException(SignalListener.MODULE_NAME,
+                        "smtp attribute has not been defined.");
+            }
+
+            if (ldap == null) {
+                throw new HlmAntLibException(SignalListener.MODULE_NAME,
+                        "ldap attribute has not been defined.");
+            }
+            
+            String smtpUpdated = getProject().replaceProperties(smtp);
+            String ldapUpdated = getProject().replaceProperties(ldap);
+            String rootdnUpdated = getProject().replaceProperties(rootdn);
+            String additionalRecipientsUpdated = getProject().replaceProperties(additionalRecipients);
+
+            log.debug("Sending data by e-mail.");
+                EmailDataSender emailSender;
+                if (rootdnUpdated != null)
+                {
+                    String[] to = null;
+                    if (additionalRecipientsUpdated != null)
+                    {
+                        to = additionalRecipientsUpdated.split(",");
+                    }
+                    emailSender = new EmailDataSender(to, smtpUpdated, ldapUpdated, rootdnUpdated);
+                }
+                else
+                {
+                    emailSender = new EmailDataSender(
+                        additionalRecipientsUpdated, smtpUpdated, ldapUpdated);
+                }
+                if (from != null)
+                {
+                    emailSender.setFrom(from);
+                }
+                log.debug("EmailNotifier:arlist: " + additionalRecipientsUpdated);
+                Project subProject = getProject().createSubProject();
+                subProject.setProperty("signal.name", signalName);
+                subProject.setProperty("signal.status", "" + failStatus);
+                subProject.setProperty("signal.message", "" + message);
+                
+                emailSender.addCurrentUserToAddressList();
+                String filePath = "";
+                File fileToSend = null;
+                if (notifierInput != null) {
+                    fileToSend = notifierInput.getFile(".*.html");
+                    if (fileToSend != null) {
+                        filePath = fileToSend.toString();
+                    }
+                    
+                } 
+                if (fileToSend == null) {
+                    File emailOutputFile;
+                    try {
+                        emailOutputFile = File.createTempFile("helium_", "email.html");
+                        emailOutputFile.deleteOnExit();
+                        log.debug("sending data by e-mail:outputDir: "
+                                + emailOutputFile.getAbsolutePath());
+
+                        List<TemplateInputSource> sourceList = new ArrayList<TemplateInputSource>();
+                        sourceList.add(new PropertiesSource("ant", getProject()
+                                .getProperties()));
+                        Hashtable<String, String> signalProperties = new Hashtable<String, String>();
+                        signalProperties.put("signal.name", signalName);
+                        signalProperties.put("signal.status", "" + failStatus);
+                        signalProperties.put("signal.message", "" + message);
+                        sourceList.add(new PropertiesSource("signaling",
+                                signalProperties));
+
+                        templateProcessor.convertTemplate(defaultTemplate, emailOutputFile,
+                                sourceList);
+                        filePath = emailOutputFile.toString();
+                    } catch (Exception e) {
+                        log.debug("EmailNotifier:exception: ", e);
+                    }
+                }
+                emailSender.sendData("signaling", filePath, 
+                        "application/html", subProject
+                        .replaceProperties(title), null);
+        }
+    }
+
+    /**
+     * Set when the notifier should emit the massage. Possible values are: never, always, fail, pass.
+     * @ant.not-required Default is never.
+     */
+    public void setNotifyWhen(String ntfyWhen) {
+        notifyWhen = ntfyWhen;
+    }
+
+    public String getNotifyWhen() {
+        return notifyWhen;
+    }
+
+    /**
+     * Define the template source file to use while rendering the message.
+     * 
+     * @ant.required
+     */
+    public void setDefaultTemplate(File template) {
+        this.defaultTemplate = template;
+    }
+
+    /**
+     * Define the template source file to use while rendering the message.
+     * @deprecated
+     * @ant.required
+     */
+    public void setTemplateSrc(File template) {
+        this.templateSrc = template;
+    }
+    
+    /**
+     * The title of the email.
+     * 
+     * @ant.required
+     */
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    /**
+     * The STMP server address.
+     * 
+     * @ant.required
+     */
+    public void setSmtp(String smtp) {
+        this.smtp = smtp;
+    }
+    
+    /**
+     * Who the email is sent from.
+     * 
+     * @ant.not-required
+     */
+    public void setFrom(String from) {
+        this.from = from;
+    }
+
+    /**
+     * Comma separated list of additional email addresses.
+     * 
+     * @ant.not-required
+     */
+    public void setAdditionalRecipients(String ar) {
+        this.additionalRecipients = ar;
+    }
+
+    /**
+     * The LDAP server URL.
+     * 
+     * @ant.required
+     */
+    public void setLdap(String ldap) {
+        this.ldap = ldap;
+    }
+    
+    public void setRootdn(String rootdn) {
+        this.rootdn = rootdn;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/signaling/src/com/nokia/helium/signal/ant/types/ExecuteTaskNotifier.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,114 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+
+package com.nokia.helium.signal.ant.types;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.BuildListener;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.Task;
+import org.apache.tools.ant.TaskContainer;
+import org.apache.tools.ant.types.DataType;
+
+import com.nokia.helium.signal.Notifier;
+
+/**
+ * This notifier allows you to execute a task sequence when a specific signal
+ * is raised.
+ * 
+ * Task are executed in a subproject, and the 'signal.name' property is set
+ * to the emit signal name. The 'signal.status' property will contains the 
+ * status of the signal. Finally the 'signal.notifier.inputs' property will
+ * contains the list of NotifierInput passed to this Notifier.
+ * 
+ * If an error occur during the execution of the task sequence it will get ignored.
+ * 
+ * E.g:
+ * <pre>
+ * &lt;hlm:executeTaskNotifier&gt;
+ *    &lt;echo&gt;Something goes wrong, signal ${signal.name} has been raised.&lt;/echo&gt;
+ * &lt;/hlm:executeTaskNotifier&gt;
+ * </pre>
+ * 
+ * @ant.type name="executeTaskNotifier" category="Signaling"
+ */
+@SuppressWarnings("deprecation")
+public class ExecuteTaskNotifier extends DataType implements Notifier,
+        TaskContainer {
+
+    private Logger log = Logger.getLogger(ExecuteTaskNotifier.class);
+    private List<Task> tasks = new ArrayList<Task>();
+
+    /**
+     * Method executes a series of given tasks on raising of the specified signal.
+     * 
+     * @param signalName is the name of the signal that has been raised.
+     * @param failStatus indicates whether to fail the build or not
+     * @param notifierInput contains signal notifier info
+     * @param message is the message from the signal that has been raised.           
+     */
+    @SuppressWarnings("unchecked")
+    public void sendData(String signalName, boolean failStatus,
+            NotifierInput notifierInput, String message ) {
+        try {
+            // Configure the project
+            Project prj = getProject().createSubProject();
+            prj.initProperties();
+            prj.setInputHandler(getProject().getInputHandler());
+            for (BuildListener bl : (Vector<BuildListener>)getProject().getBuildListeners()) {
+                prj.addBuildListener(bl);
+            }
+            getProject().copyUserProperties(prj);
+            
+            
+            prj.setProperty("signal.name", signalName);
+            prj.setProperty("signal.status", "" + failStatus);
+            prj.setProperty("signal.message", message );
+            // Converting the list of inputs into a string.
+            String inputs = "";
+            if (notifierInput != null) {
+                inputs += notifierInput.getFile().toString();
+            }
+            prj.setProperty("signal.notifier.inputs", inputs);
+            for (Task task : tasks) {
+                log.debug("Executing task: " + task.getTaskName());
+                task.setProject(prj);
+                task.perform();
+            }
+        } catch (BuildException e) {
+            // We are Ignoring the errors as no need to fail the build.
+            log.debug(e.toString(), e);
+        }
+    }
+
+    @Override
+    public void addTask(Task task) {
+        log.debug("Adding task: " + task.getTaskName());
+        tasks.add(task);
+    }
+
+    @Override
+    public void sendData(String signalName, boolean failStatus, List fileList) {        
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/signaling/src/com/nokia/helium/signal/ant/types/FailBuildEnum.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,37 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+package com.nokia.helium.signal.ant.types;
+
+import org.apache.tools.ant.types.EnumeratedAttribute;
+
+/**
+ * Enum class for the failbuild attribute.
+ */
+public class FailBuildEnum extends EnumeratedAttribute {
+
+    /**
+     * @return the list of allowed values.
+     */
+    @Override
+    public String[] getValues() {
+        String[] values = new String[3];
+        values[0] = "now";
+        values[1] = "defer";
+        values[2] = "never";
+        return values;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/signaling/src/com/nokia/helium/signal/ant/types/InfoNotifier.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) 2007-2008 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:  
+ *
+ */
+
+package com.nokia.helium.signal.ant.types;
+
+import com.nokia.helium.signal.Notifier;
+import org.apache.tools.ant.types.DataType;
+import org.apache.log4j.Logger;
+import java.util.List;
+import java.io.File;
+
+/**
+ * The InfoNotifier provides you an easy way to inform the
+ * user about the log file where the build failed.
+ * @ant.type name="infoNotifier" category="Signaling"
+ */
+public class InfoNotifier extends DataType implements Notifier {
+
+    private Logger log = Logger.getLogger(InfoNotifier.class);
+    /**
+     * Rendering the template, and sending the result through email.
+     * @deprecated
+     * @param signalName
+     *            - Name of the signal that has been raised.
+     */
+    @SuppressWarnings("unchecked")
+    public void sendData(String signalName, boolean failStatus,
+            List<String> fileList) {
+    }
+    
+    /**
+     * Rendering the template, and sending the result through email.
+     * 
+     * @param signalName - is the name of the signal that has been raised.
+     * @param failStatus - indicates whether to fail the build or not
+     * @param notifierInput - contains signal notifier info
+     * @param message - is the message from the signal that has been raised. 
+     */
+
+    @SuppressWarnings("unchecked")
+    public void sendData(String signalName, boolean failStatus,
+            NotifierInput notifierInput, String message ) {
+        File logFile = notifierInput.getFile(".*.log");
+        log.error("Error in log file: " + logFile);
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/signaling/src/com/nokia/helium/signal/ant/types/NotifierInput.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,128 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+ 
+package com.nokia.helium.signal.ant.types;
+
+
+import java.io.File;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Vector;
+import org.apache.tools.ant.types.DataType;
+import org.apache.tools.ant.types.FileSet;
+import org.apache.tools.ant.DirectoryScanner;
+import org.apache.log4j.Logger;
+
+/**
+ * Helper class to store the signal notifier info.
+ */
+public class NotifierInput extends DataType
+{
+
+    private File file;
+
+    //Different notifier could choose specific file
+    private String pattern = ".html";
+
+    private Vector<FileSet> fileSetList = new Vector<FileSet>();
+
+    private Logger log = Logger.getLogger(this.getClass());
+
+    /**
+     * Adds the fileset (list of input log files to be processed).
+     *  @param fileSet fileset to be added
+     * 
+     */
+    public void add(FileSet fileSet) {
+        fileSetList.add(fileSet);
+    }   
+
+    public File getFile() {
+        return getFile(pattern);
+    }
+    
+    /**
+     * Return a file from the input fileset.
+     *  @param pattern pattern to match from the input fileset
+     *  @return the matched files including the base dir. 
+     */
+    public File getFile(String pattern) {
+        File fileToReturn = null;
+        if (file != null) {
+            if (file.toString().matches(pattern)) {
+                fileToReturn = file;
+            }
+            return fileToReturn;
+        }
+        for (FileSet fs : fileSetList) {
+            DirectoryScanner ds = fs.getDirectoryScanner(getProject());
+            String[] includedFiles = ds.getIncludedFiles();
+            for ( String filePath : includedFiles ) {
+                if (filePath.matches(pattern)) {
+                    fileToReturn = new File(ds.getBasedir(), filePath);
+                    log.debug("matched file for pattern: " + pattern + ":" + fileToReturn);
+                    break;
+                }
+            }
+        }
+        return fileToReturn;
+    }
+
+    /**
+     * Returns the list of filelist from the input fileset.
+     *  @param pattern pattern to match from the input fileset
+     *  @return the matched files including the base dir. 
+     */
+    public List<File> getFileList(String pattern) {
+        List<File> fileList = new ArrayList<File>();
+        for (FileSet fs : fileSetList) {
+            DirectoryScanner ds = fs.getDirectoryScanner(getProject());
+            String[] includedFiles = ds.getIncludedFiles();
+            for ( String filePath : includedFiles ) {
+                if (filePath.matches(pattern)) {
+                    fileList.add(new File(ds.getBasedir(), filePath));
+                }
+            }
+        }
+        return fileList;
+    }
+
+    /**
+     * Helper function called by ant to set the input file.
+     * @param inputFile input file for notifier
+     */
+    public void setFile(File inputFile) {
+        file = inputFile;
+    }
+
+    /**
+     * Helper function called by ant to get the file
+     * @return the input file for notifier.
+     */
+    public String getPattern() {
+        return pattern ;
+    }
+
+    /**
+     * Helper function called by ant to get the file
+     * @return the input file for notifier.
+     */
+    public void setPattern(String ptn) {
+        pattern = ptn;
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/signaling/src/com/nokia/helium/signal/ant/types/SMSNotifier.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,54 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+ 
+package com.nokia.helium.signal.ant.types;
+
+
+import org.apache.tools.ant.types.DataType;
+import com.nokia.helium.signal.Notifier;
+import java.util.List;
+
+/**
+ * Defines a signal notification via SMS.
+ */
+public class SMSNotifier extends DataType implements Notifier {
+
+    public SMSNotifier() {
+    }
+    /**
+     * Sends the data to the requested sender list with specified notifier
+     * 
+     * @param signalName is the name of the signal that has been raised.
+     * @param failStatus indicates whether to fail the build or not
+     * @param notifierInput contains signal notifier info
+     * @param message is the message from the signal that has been raised.           
+     */
+    public void sendData(String signalName, boolean failStatus,
+            NotifierInput notifierInput, String message ) {
+    }
+
+    /**
+     * Sends the data to the requested sender list with specified notifier
+     * 
+     * @deprecated
+     *    sends the data to the list of requested user.
+     */
+    public void sendData(String signalName, boolean failStatus,
+            List<String> fileList) {
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/signaling/src/com/nokia/helium/signal/ant/types/SignalExceptionHandler.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,48 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+ 
+package com.nokia.helium.signal.ant.types;
+import net.sf.antcontrib.logic.RunTargetTask;
+import org.apache.tools.ant.Project;
+import com.nokia.helium.core.ant.HlmExceptionHandler;
+import com.nokia.helium.signal.ant.taskdefs.*;
+import com.nokia.helium.signal.ant.SignalListener;
+import org.apache.log4j.Logger;
+
+
+/**
+ * Class to store the status of the signal of a particular target.
+ */
+public class SignalExceptionHandler implements HlmExceptionHandler
+{
+    private Logger log = Logger.getLogger(SignalListener.class);
+    
+    /**
+     * This post action will fail the build if any pending failure exists. 
+     * @throws BuildException
+     */
+    public void handleException(Project project, String module, Exception e) {
+        String exceptionTarget = project.getProperty("exceptions.target");
+        if (exceptionTarget != null) {
+            RunTargetTask runTargetTask = new RunTargetTask();
+            runTargetTask.setProject(project);
+            runTargetTask.setTarget(exceptionTarget);
+            runTargetTask.execute();
+        }
+   }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/signaling/src/com/nokia/helium/signal/ant/types/SignalInput.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,135 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+ 
+package com.nokia.helium.signal.ant.types;
+
+
+import java.util.Vector;
+
+import org.apache.tools.ant.types.DataType;
+import com.nokia.helium.core.ant.types.ReferenceType;
+import org.apache.log4j.Logger;
+
+import com.nokia.helium.signal.Notifier;
+
+import org.apache.tools.ant.BuildException;
+
+/**
+ * SignalInput class which is a type to store input for signals
+ * Signals..
+ * &lt;targetCondition&gt;
+ *    &lt;hasSeverity severity="error" file="${build.cache.log.dir}/signals/prep_work_status.xml" /&gt;
+ * &lt;/targetCondition&gt;
+ * 
+ */
+public class SignalInput extends DataType
+{
+    private Vector<ReferenceType> notifierListRef = new Vector<ReferenceType>();
+
+    private Vector<NotifierInput> notifierInputList = new Vector<NotifierInput>();
+
+    // By default it is configured to fail the build.
+    private String failBuild = "now";
+
+    private Logger log = Logger.getLogger(SignalInput.class);
+
+    
+    /**
+     * Helper function called by ant to set the failbuild type
+     * @param failBuild type of failure for this input.
+     */
+    public void setFailBuild(FailBuildEnum failInput) {
+        failBuild = failInput.getValue();
+    }
+
+    /**
+     * Helper function called by ant to set the failbuild type
+     * @param failBuild type of failure for this input.
+     */
+    public String getFailBuild() {
+        return failBuild;
+    }
+
+    /**
+     * Helper function called by ant to create a new notifier for
+     * this input.
+     * @return ReferenceType created ReferenceType.
+     */    
+    public NotifierInput createNotifierInput() {
+        NotifierInput notifierInput =  new NotifierInput();
+        add(notifierInput);
+        return notifierInput;
+    }
+
+    /**
+     * Adds the created notifier to the list
+     * @param ReferenceType notifier to be added to the list.
+     */    
+    public void add(NotifierInput notifierInput) {
+        if (notifierInput != null) {
+            notifierInputList.add(notifierInput);
+        }
+    }
+    
+    /**
+     * Helper function called by ant to create a new notifier for
+     * this input.
+     * @return ReferenceType created ReferenceType.
+     */    
+    public ReferenceType createNotifierListRef() {
+        ReferenceType notifierRef =  new ReferenceType();
+        add(notifierRef);
+        return notifierRef;
+    }
+
+    /**
+     * Adds the created notifier to the list
+     * @param ReferenceType notifier to be added to the list.
+     */    
+    public void add(ReferenceType notifier) {
+        if (notifier != null) {
+            notifierListRef.add(notifier);
+        }
+    }
+    
+    public Vector<NotifierInput> getNotifierInput() {
+        return notifierInputList;
+    }
+    
+    /**
+     * Gets the NotifierList associated with this input. If the
+     * notifier list reference is empty then it throws exception. 
+     * @return List of notifier associated with this input.
+     * @throws HlmAntLibException
+     */    
+    public Vector<Notifier> getSignalNotifierList() {
+        Vector<Notifier> notifierList = null;
+        if (notifierListRef != null) {
+            log.debug("getSignalNotifierList:list.size:" + notifierListRef.size());
+            for (ReferenceType notifierRef : notifierListRef) {
+                Object obj = notifierRef.getReferencedObject();
+                if (obj instanceof SignalNotifierList) {
+                    notifierList = ((SignalNotifierList)obj).getNotifierList();
+                    break;
+                }
+            }
+            return notifierList;
+        }
+        throw new BuildException("No signal notifierlist reference defined.");
+    }    
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/signaling/src/com/nokia/helium/signal/ant/types/SignalListenerConfig.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,182 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+ 
+package com.nokia.helium.signal.ant.types;
+
+import org.apache.tools.ant.types.DataType;
+import java.util.Vector;
+
+/**
+ * This Ant type defines a signal input for listener based signals.
+ *
+ * E.g:
+ * <pre>
+ * &lt;hlm:signalListenerConfig id="prepSignal" target="prep-signal-test" message="some-target-name triggered a signal" &gt;
+ *    &lt;hlm:targetCondition  &gt;
+ *         &lt;/available file="some-file.txt" /&gt;
+ *    &lt;/hlm:targetCondition&gt;
+ *      &lt;signalInput refid="prepSignalInput" &gt;
+ *           &lt;notifierInput file = "${build.cache.log.dir}/signals/${build.id}_prep_status.html" /&gt;
+ *      &lt;/signalInput&gt;
+ *    
+ * &lt;/hlm:signalListenerConfig&gt;
+ * </pre>
+ *
+ * @ant.type name="signalListenerConfig" category="Signaling"
+ */
+
+public class SignalListenerConfig extends DataType
+{
+   
+    private Vector<SignalNotifierInput> signalNotifierInputs = new Vector<SignalNotifierInput>();
+
+    private String target;
+    
+    private String errMsg;
+
+    private Vector<TargetCondition> targetConditions = new Vector<TargetCondition>();
+        
+    private String configID;
+
+    public String getTargetName() {
+        return target;
+    }
+    
+    public String getErrorMessage() {
+        return errMsg;
+    }
+
+    /**
+     * Helper function to store the Name of the target for which
+     * the signal to be processed. 
+     * @param targetName to be stored.
+     */    
+    public void setTarget(String targetName) {
+        target = targetName;
+    }
+
+    /**
+     * Helper function to store the error message of
+     * @param errorMessage to be displayed after failure.
+     */        
+    public void setMessage(String errorMessage) {
+        errMsg = errorMessage;
+    }
+
+
+    /**
+     * Helper function called by ant to create the new signalinput
+     */
+    public SignalNotifierInput createSignalNotifierInput() {
+        SignalNotifierInput input =  new SignalNotifierInput();
+        add(input);
+        return input;
+    }
+
+    /**
+     * Helper function to add the created signalinput
+     * @param filter to be added to the filterset
+     */
+    public void add(SignalNotifierInput input) {
+        signalNotifierInputs.add(input);
+    }
+
+
+    /**
+     * Creates type target condition of type TargetCondition.
+     * @return ReferenceType which is created and stored by the config.
+     */
+    public TargetCondition createTargetCondition() {
+        TargetCondition condition =  new TargetCondition();
+        add(condition);
+        return condition;
+    }
+
+    /**
+     * Helper function to store the config id
+     * @param config id to store.
+     */    
+    public void setConfigId(String confID) {
+        configID = confID;
+    }
+
+    /**
+     * Helper function to return the config id
+     * @return The configuration id
+     */   
+    public String getConfigId() {
+        return configID;
+    }
+
+    /**
+     * Adds the TargetCondition reference to the container.
+     * @param TargetCondition to be added to the container, to be processed during signaling.
+     */    
+    public void add(TargetCondition condition) {
+        if (condition != null) {
+            targetConditions.add(condition);
+        }
+    }    
+
+    /**
+     * Helper function to return the Targetcondition matching the target name.
+     * @param String name of the target for which the targetcondition is returned,
+     */    
+    public TargetCondition getTargetCondition() {
+        if (targetConditions.isEmpty()) {
+            return null;
+        }
+        return targetConditions.get(0);
+    }
+
+    /**
+     * Helper function to return the Targetcondition matching the target name.
+     * @param String name of the target for which the targetcondition is returned,
+     */    
+    public SignalNotifierInput getSignalNotifierInput() {
+        if (signalNotifierInputs.isEmpty()) {
+            return null;
+        }
+        return signalNotifierInputs.get(0);
+    }
+
+    /**
+     * Helper function to return the complete target name set of the config.
+     * @return Set, full set of target names referred by this config.
+     * @throws HlmAntLibException
+     */    
+    //public Set<String> getTargetNameSet() {
+    //    if (targetConditionsMap.isEmpty()) {
+    //        initializeTargetConditionsMap();
+    //    }
+    //    return targetConditionsMap.keySet();
+    //}
+
+    /**
+     * Initializes the TargetConditionsMap, mapping target name with corresponding targetcondition
+     * for fast lookup. 
+     */    
+    //private void initializeTargetConditionsMap() {
+    //    for (TargetCondition condition : targetConditions) {
+    //        String name = condition.getName();
+    //        if (name != null) {
+    //            targetConditionsMap.put(name, condition);
+    //        }
+    //    }
+    //}
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/signaling/src/com/nokia/helium/signal/ant/types/SignalNotifierInput.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,112 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+ 
+package com.nokia.helium.signal.ant.types;
+
+
+import java.util.Vector;
+
+import org.apache.tools.ant.types.DataType;
+
+import org.apache.tools.ant.BuildException;
+
+
+/**
+ * SignalInput class which is a type to store input for signals
+ * Signals..
+ * &lt;targetCondition&gt;
+ *    &lt;hasSeverity severity="error" file="${build.cache.log.dir}/signals/prep_work_status.xml" /&gt;
+ * &lt;/targetCondition&gt;
+ * 
+ */
+public class SignalNotifierInput extends DataType
+{
+    private Vector<SignalInput> signalInputs = new Vector<SignalInput>();
+
+    private Vector<NotifierInput> notifierInputList = new Vector<NotifierInput>();
+
+    /**
+     * Helper function called by ant to create a new notifier for
+     * this input.
+     * @return ReferenceType created ReferenceType.
+     */    
+    public NotifierInput createNotifierInput() {
+        NotifierInput notifierInput =  new NotifierInput();
+        add(notifierInput);
+        return notifierInput;
+    }
+
+    /**
+     * Adds the created notifier to the list
+     * @param ReferenceType notifier to be added to the list.
+     */    
+    public void add(NotifierInput notifierInput) {
+        if (notifierInput != null) {
+            notifierInputList.add(notifierInput);
+        }
+    }
+
+    /**
+     * Helper function to add the created signalinput
+     * @param filter to be added to the filterset
+     */
+    public void add(SignalInput input) {
+        signalInputs.add(input);
+    }
+
+    /**
+     * Helper function called by ant to create the new signalinput
+     */
+    public SignalInput createSignalInput() {
+        SignalInput input =  new SignalInput();
+        add(input);
+        return input;
+    }
+
+    public NotifierInput getNotifierInput() {
+        NotifierInput input = null;
+        if (notifierInputList.size() > 1) {
+            throw new BuildException("One and only signal input can be defined");
+        }
+        if (!notifierInputList.isEmpty()) {
+            input = notifierInputList.elementAt(0);
+        }
+        return input;
+    }
+
+    /**
+     * Gets the signal input of this config.
+     * @return signal input stored in the config, by dereferencing the input ref. 
+     */    
+    public SignalInput getSignalInput() {
+        if (signalInputs.isEmpty()) {
+            throw new BuildException("No signal input in signal config, failed: ");
+        }
+        if (signalInputs.size() > 1) {
+            throw new BuildException("One and only signal input can be defined");
+        }
+
+        Object refObject =  signalInputs.elementAt(0).getRefid().getReferencedObject();
+        if (refObject == null) {
+            throw new BuildException("Signal Input Reference not exists");
+        }
+        
+        SignalInput signalInput = (SignalInput)refObject;
+        return signalInput;
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/signaling/src/com/nokia/helium/signal/ant/types/SignalNotifierList.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,65 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+ 
+package com.nokia.helium.signal.ant.types;
+
+import org.apache.tools.ant.types.DataType;
+import org.apache.tools.ant.BuildException;
+import com.nokia.helium.signal.Notifier;
+
+
+import java.util.Vector;
+
+    
+/**
+ * Helper class to store the list of notifiers.
+ *
+ * Example:
+ * <pre>
+ *   &lt;hlm:notifierList id="defaultSignalFailNotifier"&gt;
+ *       &lt;hlm:emailNotifier templateSrc="${helium.dir}/tools/common/templates/log/email_new.html.ftl" title="[signal] ${signal.name}"
+ *          smtp="${email.smtp.server}" ldap="${email.ldap.server}" notifyWhen="fail"&gt;
+ *       &lt;/hlm:emailNotifier&gt;
+ *   &lt;/hlm:notifierList&gt;
+ * </pre>
+ * @ant.task name="notifierList" category="Signaling" 
+ */
+public class SignalNotifierList extends DataType {
+
+    private Vector<Notifier> notifierlist = new Vector<Notifier>();
+    
+    /**
+     * Adding a Notifier.
+     * @param notifier
+     */
+    public void add(Notifier notifier) {
+        notifierlist.add(notifier);
+    }
+            
+    /**
+     * Returns the list of variables available in the VariableSet 
+     * @return variable list
+     * @throws HlmAntLibException
+     */
+    public Vector<Notifier> getNotifierList() {
+        if (notifierlist.isEmpty()) {
+            throw new BuildException(" Signal notifierlist is empty.");
+        }
+        return notifierlist;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/signaling/src/com/nokia/helium/signal/ant/types/SignalStatusDef.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,45 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+ 
+package com.nokia.helium.signal.ant.types;
+
+import org.apache.tools.ant.Project;
+import com.nokia.helium.core.ant.types.*;
+import org.apache.tools.ant.BuildException;
+import com.nokia.helium.signal.*;
+import com.nokia.helium.signal.ant.SignalListener;
+import org.apache.log4j.Logger;
+
+
+/**
+ * Class to store the status of the signal of a particular target.
+ */
+public class SignalStatusDef extends HlmPostDefImpl
+{
+    private Logger log = Logger.getLogger(SignalListener.class);
+    
+    /**
+     * This post action will fail the build if any pending failure exists. 
+     * @throws BuildException
+     */
+    public void execute(Project prj, String module, String[] targetNames) {
+        if (SignalStatusList.getDeferredSignalList().hasSignalInList()) {
+            throw new BuildException(SignalStatusList.getDeferredSignalList().getErrorMsg());
+        }
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/signaling/src/com/nokia/helium/signal/ant/types/TargetCondition.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,96 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+ 
+package com.nokia.helium.signal.ant.types;
+
+import org.apache.tools.ant.types.DataType;
+import java.util.Vector;
+import org.apache.tools.ant.taskdefs.condition.Condition;
+
+/**
+ * TargetCondition class which is a type to store the condition for generating
+ * Signals..
+ * &lt;targetCondition&gt;
+ *    &lt;hasSeverity severity="error" file="${build.cache.log.dir}/signals/prep_work_status.xml" /&gt;
+ * &lt;/targetCondition&gt;
+ */
+public class TargetCondition extends DataType {
+
+    private String name;
+    
+    private String errMsg;
+    
+    private Vector<Condition> conditionList = new Vector<Condition>();
+    
+    /**
+     * Constructor
+     */
+    public TargetCondition() {
+    }
+
+    /**
+     * Helper function to store the Name of the target for which
+     * the signal to be processed. 
+     * @param targetName to be stored.
+     */    
+    public void setName(String targetName) {
+        name = targetName;
+    }
+
+    /**
+     * Helper function to store the error message of
+     * @param errorMessage to be displayed after failure.
+     */        
+    public void setMessage(String errorMessage) {
+        errMsg = errorMessage;
+    }
+    
+    /**
+     * Add a given variable to the list 
+     * @param condition variable to add
+     */
+    public void add(Condition condition) {
+        conditionList.add(condition);
+    }
+
+    /**
+     * Gets the list of conditions to be checked for the signal config. 
+     * @return conditions variable for this configuration.
+     */
+    public Vector<Condition> getConditions() {
+        return conditionList;
+    }    
+    /**
+     * Helper function to return the Name of the target for which
+     * the signal to be processed. 
+     * @return name of the target of this targetcondition.
+     * @deprecated
+     */        
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * Helper function to return the error message of this target condition.
+     * @return error message of this target condition.
+     * @deprecated
+     */        
+    public String getMessage() {
+        return errMsg;
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/signaling/src/com/nokia/helium/signal/ant/types/XmlSource.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,51 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+ 
+package com.nokia.helium.signal.ant.types;
+
+
+import java.io.File;
+
+import com.nokia.helium.core.LogSource;
+
+/**
+ * This type define an input source that will be communicated to the notifiers.
+ *
+ * @ant.type name="xmlsource" category="Signaling"
+ * 
+ */
+public class XmlSource extends LogSource {
+    private File fileName;
+
+    public File getFilename() {
+        if (fileName.exists()) {
+            return fileName;
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * The filename of the input source.
+     * 
+     * @ant.required
+     */
+    public void setFilename(File filename) {
+        this.fileName = filename;
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/signaling/src/templates/email.html.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,113 @@
+<#--
+============================================================================ 
+Name        : email.html.ftl 
+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:
+
+============================================================================
+--> 
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html>
+  <head>
+  <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+    <title>
+      Build result e-mail from ${ant["env.COMPUTERNAME"]}.
+    </title>
+    <style type="text/css">
+        body{font-family:Verdana; font-size:10pt; line-height:1.1em; padding: 10px 10px; background-color:#E4F0F4;}
+        h1{
+          font-size:14pt;
+          color:#000;
+          padding: 20px 15px;
+              margin:0;
+         }
+        h2{font-size:12pt;}
+        h5{
+          font-size:10pt;
+          background-color:#8495BA;
+          color:#fff;
+          heigth:20pt;
+          padding: 5px 15px;
+          border-left:2px solid #5A6FA0;
+          border-bottom:2px solid #5A6FA0;
+          border-top:2px solid #98A6C6;
+          border-right:2px solid #98A6C6;
+          margin:0;
+         }
+ 
+  
+        p {
+          font-size:10pt;
+          padding: 0em 1em 1em 1em;
+          margin: 0 1em 0.5em 1em;
+          border-right:1px solid #5A6FA0;
+          border-top:0;
+          border-bottom:1px solid #98A6C6;
+          border-left:1px solid #98A6C6;
+          background-color:#CDE4EB;
+          white-space:normal;
+        }
+ 
+        .data{color:#00F;}
+        .okmessage{color:#24A22D;font-weight:bold; display:block; margin-bottom: 1em;padding-top: 1em;}
+        .errormessage{color:#F00;font-weight:bold; display:block; margin-bottom: 1em;padding-top: 1em;}
+ 
+        span.items{text-indent:-1em; padding-left: 1em; display:block; word-wrap:normal;}
+
+        span.bold{font-weight:bold; display:block; padding: 1em 0;}
+        p.maintext{padding-top: 1em;}
+        p.logfolder{color:#000;font-weight:bold; padding-top: 1em;}
+        p.distrib{font-weight:bold;}
+ 
+ 
+        a:link,a:visited{color:#00E;}
+        
+    </style>
+  </head>
+  <body>
+      <!-- The title -->
+      <div id="buildname">
+        <h1>This is an e-mail notification that a build has been completed on ${ant["env.COMPUTERNAME"]}</h1>
+      </div>
+
+    <!-- section -->
+    <#macro create_section title type>
+           <div id="foldername">
+               <h5>${title}</h5>
+               <p class="maintext">
+                   <!-- content span -->
+                   <span class="${type}"><#nested></span>
+               </p>
+           </div>
+       </#macro>
+
+<#list doc.logSummary.log as lognode>
+    <#if (lognode.build[".//message[@priority='error']"]?size > 0)>
+        <span class="errormessage">
+            <#if (lognode.@filename[0])?exists>${lognode.@filename[0]}...FAIL<br/></#if>                    
+            <ul>
+            <#list lognode.build[".//message[@priority='error']"] as message>
+                ${message}<br/>
+            </#list>
+            </ul>
+        </span>
+    <#else>
+        <span class="okmessage"><#if (lognode.@filename[0])?exists>${lognode.@filename[0]}...OK<br/></#if></span>
+    </#if>
+</#list>
+</body>
+</html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/signaling/src/templates/email_default.html.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,88 @@
+<#--
+============================================================================ 
+Name        : email.html.ftl 
+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:
+
+============================================================================
+--> 
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html>
+  <head>
+  <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+    <title>
+      Build result e-mail from ${ant["env.COMPUTERNAME"]}.
+    </title>
+    <style type="text/css">
+        body{font-family:Verdana; font-size:10pt; line-height:1.1em; padding: 10px 10px; background-color:#E4F0F4;}
+        h1{
+          font-size:14pt;
+          color:#000;
+          padding: 20px 15px;
+              margin:0;
+         }
+        h2{font-size:12pt;}
+        h5{
+          font-size:10pt;
+          background-color:#8495BA;
+          color:#fff;
+          heigth:20pt;
+          padding: 5px 15px;
+          border-left:2px solid #5A6FA0;
+          border-bottom:2px solid #5A6FA0;
+          border-top:2px solid #98A6C6;
+          border-right:2px solid #98A6C6;
+          margin:0;
+         }
+ 
+  
+        p {
+          font-size:10pt;
+          padding: 0em 1em 1em 1em;
+          margin: 0 1em 0.5em 1em;
+          border-right:1px solid #5A6FA0;
+          border-top:0;
+          border-bottom:1px solid #98A6C6;
+          border-left:1px solid #98A6C6;
+          background-color:#CDE4EB;
+          white-space:normal;
+        }
+ 
+        .data{color:#00F;}
+        .okmessage{color:#24A22D;font-weight:bold; display:block; margin-bottom: 1em;padding-top: 1em;}
+        .errormessage{color:#F00;font-weight:bold; display:block; margin-bottom: 1em;padding-top: 1em;}
+ 
+        span.items{text-indent:-1em; padding-left: 1em; display:block; word-wrap:normal;}
+
+        span.bold{font-weight:bold; display:block; padding: 1em 0;}
+        p.maintext{padding-top: 1em;}
+        p.logfolder{color:#000;font-weight:bold; padding-top: 1em;}
+        p.distrib{font-weight:bold;}
+ 
+ 
+        a:link,a:visited{color:#00E;}
+        
+    </style>
+  </head>
+  <body>
+      <!-- The title -->
+      <div id="buildname">
+        <h1>This is an e-mail notification that a build has been completed on ${ant["env.COMPUTERNAME"]}</h1>
+      </div>
+      <span class="okmessage">${signaling['signal.name']} is finished.</span>
+    </body>
+</html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/signaling/src/templates/email_subject.txt.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,22 @@
+<#--
+============================================================================ 
+Name        : email_subject.txt.ftl 
+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:
+
+============================================================================
+--> 
+${ant["build.id"]}:${ant["env.COMPUTERNAME"]}: ${signalname} alert
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/signaling/tests/bld.sh	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+#
+# 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: 
+#
+
+if [ -f ~/.bashrc ] ; then
+    . ~/.bashrc
+fi
+ant -Dant.executor.class="com.nokia.helium.core.ant.HeliumExecutor"  $*
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/signaling/tests/build.bat	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,32 @@
+@echo off
+
+rem
+rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+rem All rights reserved.
+rem This component and the accompanying materials are made available
+rem under the terms of the License "Eclipse Public License v1.0"
+rem which accompanies this distribution, and is available
+rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+rem
+rem Initial Contributors:
+rem Nokia Corporation - initial contribution.
+rem
+rem Contributors:
+rem
+rem Description: 
+rem
+
+setlocal
+if not defined JAVA_6_HOME (
+set TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
+) ELSE  set TESTED_JAVA=%JAVA_6_HOME%
+if exist %TESTED_JAVA% (set JAVA_HOME=%TESTED_JAVA%)
+call ant -Dant.executor.class=com.nokia.helium.core.ant.HeliumExecutor -Dskip.diamonds=true %*
+if "%ERRORLEVEL%" neq "0" (goto error)
+endlocal
+goto :eof
+
+:error
+endlocal
+if "%OS%"=="Windows_NT" color 00
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/signaling/tests/build.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : build.xml 
+Part of     : Helium AntLib
+
+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="helium-signaling" xmlns:au="antlib:org.apache.ant.antunit">
+    <description>Helium Antlib signaling tests.</description>
+    <import file="${builder.dir}/java/test-macros.ant.xml"/>
+
+    <property environment="env" />
+    <dirname property="signaling.test.project.dir" file="${ant.file.helium-antlib-signaling-unittest}" />
+    <property name="build.summary.file" location="${signaling.test.project.dir}/test_signal/data/ido_tedo_mcl_devlon52_ec_MCL.52.105_summary.log.xml" />
+    <property name="build.id" value="test_new_hlm"/>
+  
+    <import file="${signaling.test.project.dir}/test_signal/signaling_test.ant.xml" />
+    
+    <target name="unittest" depends="unittest-signaling,test-macros.unittest" />
+
+    <target name="unittest-signaling">
+        <antcall target="test-all" />
+    </target>
+
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/signaling/tests/src/com/nokia/helium/signaling/tests/TestEmailSender.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,57 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+
+package com.nokia.helium.signaling.tests;
+
+import org.junit.*;
+import static org.junit.Assert.*;
+import java.io.*;
+import java.util.*;
+import com.nokia.helium.signal.ant.types.*;
+import org.apache.tools.ant.Project;
+
+public class TestEmailSender {
+    
+    @Before
+    public void setUp() {
+    }
+
+    @After
+    public void tearDown() {
+    }
+    
+    /**
+     * @throws Exception
+     */
+    @Test
+    public void test_simpleMergeNode() throws Exception {
+        EMAILNotifier en = new EMAILNotifier();
+        Project p = new Project();
+        p.setNewProperty("user.name", "test");
+        en.setProject(p);
+        en.setNotifyWhen("always");
+        en.setTitle("test");
+        en.setSmtp("test");
+        en.setLdap("test");
+        NotifierInput input = new NotifierInput();
+        input.setFile(new File(System.getProperty("testdir") + "/tests/test_signal/data/test.log_status.html"));
+        en.sendData("test", true, input, "Test Message");
+    }
+
+   
+
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/signaling/tests/test_signal/data/test.log_status.html	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html>
+  <head>
+  <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+    <title>
+      Build result e-mail from FASYM013.
+    </title>
+    <style type="text/css">
+        body{font-family:Verdana; font-size:10pt; line-height:1.1em; padding: 10px 10px; background-color:#E4F0F4;}
+        h1{
+          font-size:14pt;
+          color:#000;
+          padding: 20px 15px;
+              margin:0;
+         }
+        h2{font-size:12pt;}
+        h5{
+          font-size:10pt;
+          background-color:#8495BA;
+          color:#fff;
+          heigth:20pt;
+          padding: 5px 15px;
+          border-left:2px solid #5A6FA0;
+          border-bottom:2px solid #5A6FA0;
+          border-top:2px solid #98A6C6;
+          border-right:2px solid #98A6C6;
+          margin:0;
+         }
+ 
+  
+        p {
+          font-size:10pt;
+          padding: 0em 1em 1em 1em;
+          margin: 0 1em 0.5em 1em;
+          border-right:1px solid #5A6FA0;
+          border-top:0;
+          border-bottom:1px solid #98A6C6;
+          border-left:1px solid #98A6C6;
+          background-color:#CDE4EB;
+          white-space:normal;
+        }
+ 
+        .data{color:#00F;}
+        .okmessage{color:#24A22D;font-weight:bold; display:block; margin-bottom: 1em;padding-top: 1em;}
+        .errormessage{color:#F00;font-weight:bold; display:block; margin-bottom: 1em;padding-top: 1em;}
+ 
+        span.items{text-indent:-1em; padding-left: 1em; display:block; word-wrap:normal;}
+
+        span.bold{font-weight:bold; display:block; padding: 1em 0;}
+        p.maintext{padding-top: 1em;}
+        p.logfolder{color:#000;font-weight:bold; padding-top: 1em;}
+        p.distrib{font-weight:bold;}
+ 
+ 
+        a:link,a:visited{color:#00E;}
+        
+    </style>
+  </head>
+  <body>
+      <!-- The title -->
+      <div id="buildname">
+        <h1>This is an e-mail notification that a build has been completed on FASYM013</h1>
+      </div>
+
+    <!-- section -->
+        <span class="errormessage">
+            test.log...FAIL<br/>
+            <ul>
+            ERROR: an error<br/>
+            </ul>
+        </span>
+</body>
+</html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/signaling/tests/test_signal/email.html.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,113 @@
+<#--
+============================================================================ 
+Name        : email.html.ftl 
+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:
+
+============================================================================
+--> 
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html>
+  <head>
+  <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+    <title>
+      Build result e-mail from ${ant["env.COMPUTERNAME"]}.
+    </title>
+    <style type="text/css">
+        body{font-family:Verdana; font-size:10pt; line-height:1.1em; padding: 10px 10px; background-color:#E4F0F4;}
+        h1{
+          font-size:14pt;
+          color:#000;
+          padding: 20px 15px;
+              margin:0;
+         }
+        h2{font-size:12pt;}
+        h5{
+          font-size:10pt;
+          background-color:#8495BA;
+          color:#fff;
+          heigth:20pt;
+          padding: 5px 15px;
+          border-left:2px solid #5A6FA0;
+          border-bottom:2px solid #5A6FA0;
+          border-top:2px solid #98A6C6;
+          border-right:2px solid #98A6C6;
+          margin:0;
+         }
+ 
+  
+        p {
+          font-size:10pt;
+          padding: 0em 1em 1em 1em;
+          margin: 0 1em 0.5em 1em;
+          border-right:1px solid #5A6FA0;
+          border-top:0;
+          border-bottom:1px solid #98A6C6;
+          border-left:1px solid #98A6C6;
+          background-color:#CDE4EB;
+          white-space:normal;
+        }
+ 
+        .data{color:#00F;}
+        .okmessage{color:#24A22D;font-weight:bold; display:block; margin-bottom: 1em;padding-top: 1em;}
+        .errormessage{color:#F00;font-weight:bold; display:block; margin-bottom: 1em;padding-top: 1em;}
+ 
+        span.items{text-indent:-1em; padding-left: 1em; display:block; word-wrap:normal;}
+
+        span.bold{font-weight:bold; display:block; padding: 1em 0;}
+        p.maintext{padding-top: 1em;}
+        p.logfolder{color:#000;font-weight:bold; padding-top: 1em;}
+        p.distrib{font-weight:bold;}
+ 
+ 
+        a:link,a:visited{color:#00E;}
+        
+    </style>
+  </head>
+  <body>
+      <!-- The title -->
+      <div id="buildname">
+        <h1>This is an e-mail notification that a build has been completed on ${ant["env.COMPUTERNAME"]}</h1>
+      </div>
+
+    <!-- section -->
+    <#macro create_section title type>
+           <div id="foldername">
+               <h5>${title}</h5>
+               <p class="maintext">
+                   <!-- content span -->
+                   <span class="${type}"><#nested></span>
+               </p>
+           </div>
+       </#macro>
+
+<#list doc.logSummary.log as lognode>
+    <#if (lognode.build[".//message[@priority='error']"]?size > 0)>
+        <span class="errormessage">
+            <#if (lognode.@filename[0])?exists>${lognode.@filename[0]}...FAIL<br/></#if>                    
+            <ul>
+            <#list lognode.build[".//message[@priority='error']"] as message>
+                ${message}<br/>
+            </#list>
+            </ul>
+        </span>
+    <#else>
+        <span class="okmessage"><#if (lognode.@filename[0])?exists>${lognode.@filename[0]}...OK<br/></#if></span>
+    </#if>
+</#list>
+</body>
+</html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/signaling/tests/test_signal/example.html.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,22 @@
+<#--
+============================================================================ 
+Name        : email.html.ftl 
+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:
+
+============================================================================
+--> 
+${ant['user.name']}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/signaling/tests/test_signal/signaling_test.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,272 @@
+<?xml version="1.0"?>
+<!-- 
+============================================================================ 
+Name        : test_signaling.ant.xml 
+Part of     : Helium AntLib
+
+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="test-signaling" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
+    <description>
+        Test all the helium signals
+    </description>
+
+    <dirname property="project.dir.signaling" file="${ant.file.test-signaling}" />
+
+    <taskdef resource="com/nokia/helium/core/ant/antlib.xml" uri="http://www.nokia.com/helium" />
+    <import file="test_signaling_config.ant.xml" />
+
+    <property name="build.summary.file" location="${project.dir.signaling}/data/ido_tedo_mcl_devlon52_ec_MCL.52.105_summary.log.xml" />
+
+    <target name="target-valid-config1">
+        <echo message="valid configuration1" />
+    </target>
+
+    <target name="target-valid-config2">
+        <echo message="valid configuration2" />
+    </target>
+
+    <target name="target-valid-config3">
+        <echo message="valid configuration3" />
+    </target>
+
+    <target name="target-valid-config4">
+        <echo message="valid configuration4" />
+    </target>
+
+    <target name="target-valid-config5">
+        <echo message="valid configuration5" />
+    </target>
+
+    <target name="target-invalid-config1">
+        <echo message="invalid configuration1" />
+    </target>
+
+    <target name="target-invalid-config2">
+        <echo message="invalid configuration2" />
+    </target>
+
+    <target name="target-invalid-config3">
+        <echo message="invalid configuration3" />
+    </target>
+
+    <target name="target-invalid-config4">
+        <echo message="invalid configuration4" />
+    </target>
+
+    <target name="target-invalid-config5">
+        <echo message="invalid configuration5" />
+    </target>
+
+    <target name="target-invalid-config6">
+        <echo message="invalid configuration6" />
+    </target>
+
+    <target name="target-invalid-config7">
+        <echo message="invalid configuration7" />
+    </target>
+
+    <target name="target-invalid-config8">
+        <echo message="invalid configuration8" />
+    </target>
+
+    <target name="target-invalid-config9">
+        <echo message="invalid configuration9" />
+    </target>
+
+    <target name="test-case1">
+        <echo message="testing config without signal input" />
+        <antcall target="target-valid-config1" inheritRefs="true"/>
+    </target>
+
+    <target name="test-case2">
+        <echo message="testing config without signal input" />
+        <antcall target="target-valid-config2" inheritRefs="true" />
+    </target>
+
+    <target name="test-case3">
+        <echo message="testing config without signal input" />
+        <antcall target="target-valid-config3" inheritRefs="true" />
+    </target>
+
+    <target name="test-case4">
+        <echo message="testing config without signal input" />
+        <antcall target="target-valid-config4" inheritRefs="true" />
+    </target>
+
+    <target name="test-case5">
+        <echo message="testing config without signal input" />
+        <antcall target="target-valid-config5" inheritRefs="true" />
+    </target>
+
+    <target name="test-case6">
+        <echo message="testing config without signal input" />
+        <au:expectfailure>
+            <antcall target="target-invalid-config1" inheritRefs="true" />
+        </au:expectfailure>
+    </target>
+
+    <target name="test-case7">
+        <echo message="testing when the named target is not exists, so signal" />
+        <antcall target="target-invalid-config2" inheritRefs="true" />
+    </target>
+
+    <target name="test-case8">
+        <!-- This test case is not valid anymore, now the attribute validation is done 
+    	     at Ant parsing level -->
+        <!--echo message="testing config without signal input" />
+        <au:expectfailure>
+            <antcall target="target-invalid-config3" inheritRefs="true" />
+        </au:expectfailure-->
+    </target>
+
+    <target name="test-case9">
+        <echo message="testing config without signal input" />
+        <au:expectfailure>
+            <antcall target="target-invalid-config4" inheritRefs="true" />
+        </au:expectfailure>
+    </target>
+
+    <target name="test-case10">
+        <echo message="testing config without signal input" />
+        <au:expectfailure>
+            <antcall target="target-invalid-config5" inheritRefs="true" />
+        </au:expectfailure>
+    </target>
+
+    <target name="test-case11">
+        <echo message="testing config without signal input" />
+        <au:expectfailure>
+            <antcall target="target-invalid-config6" inheritRefs="true" />
+        </au:expectfailure>
+    </target>
+
+    <target name="test-signal-exception">
+        <property name="exceptions.target" value="final-exception-target"/>
+        <echo message="signal exception target" />
+        <fail message="fail for signal exception" />
+    </target>
+
+    <target name="final-exception-target">
+        <echo message="final-exception-target executed" />
+    </target>
+    
+    <target name="test-case12">
+        <echo message="testing config without signal input" />
+        <au:expectfailure>
+            <antcall target="target-invalid-config7" inheritRefs="true" />
+        </au:expectfailure>
+    </target>
+
+    <target name="test-case13">
+        <echo message="testing config without signal input" />
+        <au:expectfailure>
+            <antcall target="target-invalid-config8" inheritRefs="true" />
+        </au:expectfailure>
+    </target>
+
+    <target name="test-case14">
+        <echo message="testing config without signal input" />
+        <au:expectfailure>
+            <antcall target="target-invalid-config9" inheritRefs="true" />
+        </au:expectfailure>
+    </target>
+
+    <!-- functionality testing -->
+    <target name="fail-now-false-condition">
+        <echo message="fail-now-false-condition target: configured to fail now - false condition" />
+    </target>
+
+    <target name="fail-now-true-condition">
+        <echo message="fail-now-true-condition target: configured to fail now - true condition" />
+    </target>
+
+    <target name="fail-no-condition">
+        <echo message="fail-now-false-condition target: configured to fail now - true condition" />
+    </target>
+
+    <target name="fail-defer-false-condition">
+        <echo message="fail-defer-false-condition target: configured to fail later - false condition" />
+    </target>
+
+    <target name="fail-defer-true-condition">
+        <echo message="${number.of.errors}" />
+        <echo message="fail-defer-true-condition target: configured to fail later - true condition" />
+    </target>
+
+    <target name="fail-never-false-condition">
+        <echo message="fail-never-false-condition target: configured to fail never - false condition" />
+    </target>
+
+    <target name="fail-never-true-condition">
+        <echo message="fail-never-true-condition target: configured to fail never - true condition" />
+    </target>
+
+    <target name="test-fail-now-false-condition">
+        <antcall target="fail-now-false-condition" inheritRefs="true" />
+    </target>
+
+    <target name="compile-signal-test">
+        <au:expectfailure>
+            <echo message="compile-signal failure test" />
+        </au:expectfailure>
+    </target>
+
+    <target name="test-compile-signal-test">
+        <au:expectfailure>
+            <antcall target="compile-signal-test" inheritRefs="true" />
+        </au:expectfailure>
+    </target>
+
+    <target name="test-fail-now-true-condition">
+        <au:expectfailure>
+            <antcall target="fail-now-true-condition" inheritRefs="true" />
+        </au:expectfailure>
+    </target>
+
+    <target name="test-fail-no-condition" >
+        <antcall target="fail-no-condition" inheritRefs="true" />
+    </target>
+
+    <target name="test-fail-defer-false-condition">
+        <antcall target="fail-defer-false-condition" inheritRefs="true" />
+    </target>
+
+    <target name="test-fail-defer-true-condition">
+        <antcall target="fail-defer-true-condition" inheritRefs="true"/>
+        <au:assertTrue>
+            <hlm:hasDeferredFailure name="inputFailDefer"/>
+        </au:assertTrue>
+        <hlm:clearDeferredFailures/>
+    </target>
+
+    <target name="test-fail-never-false-condition">
+        <antcall target="fail-never-false-condition" inheritRefs="true" />
+    </target>
+
+    <target name="test-fail-never-true-condition">
+        <antcall target="fail-never-true-condition" inheritRefs="true" />
+    </target>
+
+
+    <target name="test-all" depends="test-fail-all, test-case-all,test-compile-signal-test" />
+    <target name="test-fail-all" depends="test-fail-now-false-condition, test-fail-now-true-condition,
+                test-fail-no-condition,test-fail-defer-false-condition, test-fail-defer-true-condition,
+                test-fail-never-false-condition, fail-never-false-condition, fail-never-true-condition" />
+    <target name="test-case-all" depends="test-case1, test-case2, test-case3, test-case4, test-case5, test-case6,
+                test-case7,test-case8,test-case9,test-case10,test-case11,test-case12,test-case13,test-case14" />
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/signaling/tests/test_signal/test_hasdeferredfailure.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : test_hasdeferredfailure.ant.xml 
+Part of     : Helium AntLib
+
+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="test-hasdeferredfailure" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
+
+    <description>
+        Test deferred failure signal
+    </description>
+
+    <taskdef resource="com/nokia/helium/core/ant/antlib.xml" uri="http://www.nokia.com/helium"/>
+    <taskdef resource="com/nokia/helium/signal/ant/antlib.xml" uri="http://www.nokia.com/helium"/>
+
+    <dirname property="project.dir.signalhasdefer" file="${ant.file.test-signaltask}" />
+    <property name="build.summary.file" location="${project.dir.signalhasdefer}/data/ido_tedo_mcl_devlon52_ec_MCL.52.105_summary.log.xml" />
+
+    <property environment="env" />
+    <property name="email.input.file" location="${signaling.test.project.dir}/test_signal/ido_tedo_mcl_devlon52_ec_MCL.52.105_summary.log.xml" />
+
+    <!-- Deferred signal -->
+    <hlm:notifierList id="testDeferredSignalNotifiers">
+        <hlm:executeTaskNotifier>
+            <echo>Signal: ${signal.name}</echo>
+        </hlm:executeTaskNotifier>
+    </hlm:notifierList>
+
+    <hlm:signalInput id="testDeferredSignalInput" failBuild="defer">
+        <hlm:notifierListRef refid="testDeferredSignalNotifiers"/>
+    </hlm:signalInput>
+
+    <!-- Fail now signal -->
+    <hlm:notifierList id="testSignalNotifiers">
+        <hlm:executeTaskNotifier>
+            <echo>Signal: ${signal.name}</echo>
+        </hlm:executeTaskNotifier>
+    </hlm:notifierList>
+
+    <hlm:signalInput id="testSignalInput" failBuild="now">
+        <hlm:notifierListRef refid="testSignalNotifiers"/>
+    </hlm:signalInput>
+
+    <!-- is called prior to the test -->
+    <target name="setUp">
+        <!-- cleaning deferred pending failures. -->
+        <hlm:clearDeferredFailures/>
+    </target>
+
+    <!-- is called after the test, even if that caused an error -->
+    <target name="tearDown">
+        <!-- cleaning deferred pending failures. -->
+        <hlm:clearDeferredFailures/>
+    </target>
+
+    <target name="test-no-pending-failure">
+        <au:assertFalse>
+            <hlm:hasDeferredFailure/>
+        </au:assertFalse>
+    </target>
+
+    <target name="raise-signal">
+        <!-- This raise a  testSignal. -->
+        <hlm:signal name="testDeferredSignal" result="1" >
+            <signalNotifierInput>
+                <hlm:signalInput refid="testDeferredSignalInput" />
+            </signalNotifierInput>
+        </hlm:signal>
+    </target>
+
+    <target name="test-pending-failure" depends="raise-signal">
+        <au:assertTrue>
+            <hlm:hasDeferredFailure/>
+        </au:assertTrue>
+    </target>
+
+    <target name="test-pending-failure-named" depends="raise-signal">
+        <au:assertTrue>
+            <hlm:hasDeferredFailure name="testDeferredSignal"/>
+        </au:assertTrue>
+    </target>
+
+    <target name="test-pending-failure-named-missing" depends="raise-signal">
+        <au:assertFalse>
+            <hlm:hasDeferredFailure name="testFooSignal"/>
+        </au:assertFalse>
+    </target>
+
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/signaling/tests/test_signal/test_signaling_config.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,335 @@
+<?xml version="1.0"?>
+<!-- 
+============================================================================ 
+Name        : test_signaling.ant.xml 
+Part of     : Helium AntLib
+
+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="test-signaling-config" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
+    <description>
+        signalInput and notifierList test configuration
+    </description>
+    <dirname property="project.dir.signaling" file="${ant.file.test-signaling-config}" />
+
+    <property name="build.summary.file" location="${project.dir.signaling}/data/ido_tedo_mcl_devlon52_ec_MCL.52.105_summary.log.xml" />
+    <taskdef resource="org/apache/tools/ant/types/conditions/antlib.xml" />
+    <taskdef resource="com/nokia/helium/signal/ant/antlib.xml" uri="http://www.nokia.com/helium" />
+
+    <hlm:notifierList id="defaultsignalnotifier">
+        <hlm:executeTaskNotifier>
+            <echo>Signal: ${signal.name}</echo>
+        </hlm:executeTaskNotifier>
+        <hlm:emailNotifier defaultTemplate="${project.dir.signaling}/email_default.html.ftl" title="[signal] ${signal.name}" smtp="${email.smtp.server}" ldap="${email.ldap.server}" from="I_EXT_HELIUM@nokia.com" />
+    </hlm:notifierList>
+
+    <hlm:notifierList id="compilesignalnotifier">
+        <hlm:executeTaskNotifier>
+            <echo>Signal: ${signal.name}</echo>
+        </hlm:executeTaskNotifier>
+        <hlm:emailNotifier defaultTemplate="${project.dir.signaling}/email_default.html.ftl" title="[signal] ${signal.name}" smtp="${email.smtp.server}" ldap="${email.ldap.server}" />
+    </hlm:notifierList>
+
+
+    <hlm:signalInput id="compilesignalinput" failbuild="now">
+        <hlm:notifierListRef refid="compilesignalnotifier" />
+    </hlm:signalInput>
+
+    <property name="number.of.errors" value="4" />
+
+    <hlm:signalInput id="fotasignalinput" failbuild="defer" />
+
+    <hlm:signalInput id="validSignalInput" failbuild="defer">
+        <hlm:notifierListRef refid="defaultsignalnotifier" />
+    </hlm:signalInput>
+
+    <hlm:signalListenerConfig id="compileSignal" target="compile-signal-test" message="Errors happened during compilation">
+        <signalNotifierInput>
+            <signalInput refid="compilesignalinput" />
+        </signalNotifierInput>
+        <targetCondition >
+            <not>
+                <equals arg1="0" arg2="${number.of.errors}" />
+            </not>
+        </targetCondition>
+    </hlm:signalListenerConfig>
+
+    <hlm:signalInput id="publishsignalinput" failbuild="never" />
+
+    <hlm:signalInput id="input-fail-build-now" failbuild="now" />
+
+    <hlm:signalInput id="input-fail-build-defer" failbuild="defer" />
+    <hlm:signalInput id="input-fail-build-never" failbuild="never" />
+
+    <hlm:signalListenerConfig id="fotaSignal" target="fota" message="Fota execution finished">
+        <signalNotifierInput>
+            <signalInput refid="fotasignalinput" />
+        </signalNotifierInput>
+        <targetCondition  />
+    </hlm:signalListenerConfig>
+
+    <hlm:signalListenerConfig id="publishSignal" target="publish" message="Errors due to publish">
+        <signalNotifierInput>
+            <signalInput refid="publishsignalinput" />
+        </signalNotifierInput>
+        <targetCondition  />
+    </hlm:signalListenerConfig>
+    <!--hlm:signallist id="all-signals">
+        <hlm:notifierlistref refid="defaultsignalnotifier" />
+        <hlm:configref refid="compileSignal" />
+        <hlm:configref refid="fotaSignal" />
+    </hlm:signallist-->
+
+    <!--Invalid configurations -->
+    <hlm:notifierList id="invalid-notifier1" />
+
+    <hlm:notifierList id="invalid-notifier2">
+        <!--hlm:notifier type="test" senderlist="${env.username}" /-->
+    </hlm:notifierList>
+
+    <hlm:notifierList id="invalid-notifier3">
+        <!--hlm:notifier type="email" /-->
+    </hlm:notifierList>
+
+    <hlm:notifierList id="invalid-notifier4">
+        <!--hlm:notifier senderlist="${env.username}" /-->
+    </hlm:notifierList>
+
+
+    <hlm:signalInput id="invalid-input2" failbuild="never">
+        <hlm:notifierListRef refid="noreference" />
+    </hlm:signalInput>
+
+    <hlm:signalInput id="invalid-input3" failbuild="never">
+        <hlm:notifierListRef refid="invalid-notifier1" />
+    </hlm:signalInput>
+
+    <hlm:signalInput id="invalid-input4" failbuild="never">
+        <hlm:notifierListRef refid="invalid-notifier2" />
+    </hlm:signalInput>
+
+    <hlm:signalInput id="invalid-input5" failbuild="never">
+        <hlm:notifierListRef refid="invalid-notifier3" />
+    </hlm:signalInput>
+
+    <hlm:signalInput id="invalid-input6" failbuild="never">
+        <hlm:notifierListRef refid="invalid-notifier4" />
+    </hlm:signalInput>
+
+    <hlm:signalListenerConfig id="noreferenceSignal" target="target-invalid-config1" message="Errors happened during compilation">
+        <signalNotifierInput>
+            <hlm:signalInput refid="noreference" />
+        </signalNotifierInput>
+        <targetCondition>
+            <not>
+                <equals arg1="0" arg2="${number.of.errors}" />
+            </not>
+        </targetCondition>
+    </hlm:signalListenerConfig>
+
+    <hlm:signalListenerConfig id="noTarget" target="no-target" message="Errors happened during compilation" >
+        <targetCondition />
+    </hlm:signalListenerConfig>
+
+    <hlm:signalListenerConfig id="invalidInputSignal" target="target-invalid-config4" message="Errors happened during compilation">
+        <!-- <hlm:signalInput refid="invalid-input2" /> -->
+        <targetCondition >
+            <not>
+                <equals arg1="0" arg2="${number.of.errors}" />
+            </not>
+        </targetCondition>
+    </hlm:signalListenerConfig>
+
+    <hlm:signalListenerConfig id="invalidInput3" target="target-invalid-config5" message="Errors happened during compilation">
+        <signalNotifierInput>
+            <signalInput refid="invalid-input3" />
+        </signalNotifierInput>
+        <targetCondition >
+            <not>
+                <equals arg1="0" arg2="${number.of.errors}" />
+            </not>
+        </targetCondition>
+    </hlm:signalListenerConfig>
+
+    <hlm:signalListenerConfig id="invalidInput4" target="target-invalid-config6" message="Errors happened during compilation">
+        <signalNotifierInput>
+            <signalInput refid="invalid-input4" />
+        </signalNotifierInput>
+        <targetCondition >
+            <not>
+                <equals arg1="0" arg2="${number.of.errors}" />
+            </not>
+        </targetCondition>
+    </hlm:signalListenerConfig>
+
+    <hlm:signalListenerConfig id="invalidInput5" target="target-invalid-config7" message="Errors happened during compilation">
+        <signalNotifierInput>
+            <signalInput refid="invalid-input5" />
+        </signalNotifierInput>
+
+        <targetCondition >
+            <not>
+                <equals arg1="0" arg2="${number.of.errors}" />
+            </not>
+        </targetCondition>
+    </hlm:signalListenerConfig>
+
+    <hlm:signalListenerConfig id="invalidInput6" target="target-invalid-config8" message="Errors happened during compilation">
+        <signalNotifierInput>
+            <signalInput refid="invalid-input6" />
+        </signalNotifierInput>
+        <targetCondition >
+            <not>
+                <equals arg1="0" arg2="${number.of.errors}" />
+            </not>
+        </targetCondition>
+    </hlm:signalListenerConfig>
+
+    <hlm:signalListenerConfig id="invalidInput7" target="target-invalid-config9" message="Errors happened during compilation">
+        <signalNotifierInput>
+            <signalInput refid="invalid-input7" />
+        </signalNotifierInput>
+        <targetCondition >
+            <not>
+                <equals arg1="0" arg2="${number.of.errors}" />
+            </not>
+        </targetCondition>
+    </hlm:signalListenerConfig>
+
+    <hlm:signalListenerConfig id="validInput" target="test-valid-config1">
+        <targetCondition >
+        </targetCondition>
+    </hlm:signalListenerConfig>
+
+    <hlm:signalListenerConfig id="validSignal1" target="target-valid-config2" message="Errors during testing">
+        <signalNotifierInput>
+            <signalInput refid="validSignalInput" />
+        </signalNotifierInput>
+        <targetCondition>
+            <hlm:hasSeverity severity="error" file="${build.summary.file}" />
+        </targetCondition>
+    </hlm:signalListenerConfig>
+
+    <hlm:signalListenerConfig id="validSignal2" target="target-valid-config3" message="Errors during testing">
+        <signalNotifierInput>
+            <signalInput refid="validSignalInput" />
+        </signalNotifierInput>
+
+        <targetCondition >
+            <!-- <xml severity="error" file="./data/helium_minibuild_ido_compile.log.xml" /> -->
+        </targetCondition>
+    </hlm:signalListenerConfig>
+
+    <hlm:signalListenerConfig id="validSignal3" target="target-valid-config4" message="Errors during testing">
+        <signalNotifierInput>
+            <signalInput refid="validSignalInput" />
+        </signalNotifierInput>
+        <targetCondition >
+            <!-- <not><equals arg1="0" arg2="${number.of.error}"/></not> -->
+        </targetCondition>
+    </hlm:signalListenerConfig>
+
+    <hlm:signalListenerConfig id="validSignal4" target="target-valid-config5" message="Errors during testing">
+        <signalNotifierInput>
+            <signalInput refid="validSignalInput" />
+        </signalNotifierInput>
+        <targetCondition >
+            <!--<not><equals arg1="0" arg2="0"/></not> -->
+        </targetCondition>
+    </hlm:signalListenerConfig>
+
+    <hlm:signalListenerConfig id="validSignal5" target="fail-now-false-condition" message="Errors during testing">
+        <signalNotifierInput>
+            <signalInput refid="input-fail-build-now" />
+        </signalNotifierInput>
+        <targetCondition>
+            <not>
+                <equals arg1="0" arg2="0" />
+            </not>
+        </targetCondition>
+    </hlm:signalListenerConfig>
+
+    <hlm:signalListenerConfig id="validSignal6" target="fail-now-true-condition" message="Errors during testing">
+        <signalNotifierInput>
+            <signalInput refid="input-fail-build-now" />
+        </signalNotifierInput>
+        <targetCondition >
+            <not>
+                <equals arg1="0" arg2="${number.of.errors}" />
+            </not>
+        </targetCondition>
+    </hlm:signalListenerConfig>
+
+    <hlm:signalListenerConfig id="failNow" target="fail-no-condition" message="Errors during testing" >
+        <signalNotifierInput>
+            <signalInput refid="input-fail-build-never" />
+        </signalNotifierInput>
+        <targetCondition />
+    </hlm:signalListenerConfig>
+
+    <hlm:signalListenerConfig id="failbuildDefer" target="fail-defer-false-condition" message="Errors during testing">
+        <signalNotifierInput>
+            <signalInput refid="input-fail-build-defer" />
+        </signalNotifierInput>
+        <targetCondition >
+            <not>
+                <equals arg1="0" arg2="0" />
+            </not>
+        </targetCondition>
+    </hlm:signalListenerConfig>
+
+    <hlm:signalListenerConfig id="inputFailDefer" target="fail-defer-true-condition" message="Errors during testing">
+        <signalNotifierInput>
+            <signalInput refid="input-fail-build-defer" />
+        </signalNotifierInput>
+        <targetCondition>
+            <not>
+                <equals arg1="0" arg2="${number.of.errors}" />
+            </not>
+        </targetCondition>
+    </hlm:signalListenerConfig>
+
+    <hlm:signalListenerConfig id="inputFailNever1" target="fail-defer-never-condition" message="Errors during testing">
+        <signalNotifierInput>
+            <signalInput refid="input-fail-build-never" />
+        </signalNotifierInput>
+
+        <targetCondition>
+            <not>
+                <equals arg1="0" arg2="0" />
+            </not>
+        </targetCondition>
+    </hlm:signalListenerConfig>
+
+    <hlm:signalListenerConfig id="failbuildNever2" target="fail-never-true-condition" message="Errors during testing">
+        <signalNotifierInput>
+            <signalInput refid="input-fail-build-never" />
+        </signalNotifierInput>
+
+        <targetCondition  >
+            <not>
+                <equals arg1="0" arg2="${number.of.errors}" />
+            </not>
+        </targetCondition>
+    </hlm:signalListenerConfig>
+
+    <target name="test-wrong-type">
+        <au:expectfailure>
+            <hlm:signalInput id="invalid-input1" failbuild="wrong-type" />
+        </au:expectfailure>
+    </target>
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/signaling/tests/test_signal/test_signaltask.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,139 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : test_signaltask.ant.xml 
+Part of     : Helium AntLib
+
+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="test-signaltask" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
+    <description>Helium Antlib Signal unittests.</description>
+    <dirname property="project.dir.signaltask" file="${ant.file.test-signaltask}" />
+    <taskdef resource="com/nokia/helium/core/ant/antlib.xml" uri="http://www.nokia.com/helium" />
+    <taskdef resource="com/nokia/helium/signal/ant/antlib.xml" uri="http://www.nokia.com/helium" />
+    <property environment="env" />
+    <property name="build.summary.file" location="${project.dir.signaltask}/data/ido_tedo_mcl_devlon52_ec_MCL.52.105_summary.log.xml" />
+
+    <!-- Deferred signal -->
+    <hlm:notifierList id="testDeferredSignalNotifiers">
+        <hlm:executeTaskNotifier>
+            <echo>Signal: ${signal.name}</echo>
+        </hlm:executeTaskNotifier>
+    </hlm:notifierList>
+
+    <hlm:signalInput id="testDeferredSignalInput" failBuild="defer">
+        <hlm:notifierListRef refid="testDeferredSignalNotifiers" />
+    </hlm:signalInput>
+
+    <!-- Fail now signal -->
+    <hlm:notifierList id="testSignalNotifiers">
+        <hlm:executeTaskNotifier>
+            <echo>Signal: ${signal.name}</echo>
+        </hlm:executeTaskNotifier>
+    </hlm:notifierList>
+
+    <hlm:signalInput id="testSignalInput" failBuild="now">
+        <hlm:notifierListRef refid="testSignalNotifiers" />
+    </hlm:signalInput>
+
+    <!-- is called prior to the test -->
+    <target name="setUp">
+        <!-- cleaning deferred pending failures. -->
+        <hlm:clearDeferredFailures />
+    </target>
+
+    <!-- is called after the test, even if that caused an error -->
+    <target name="tearDown">
+        <!-- cleaning deferred pending failures. -->
+        <hlm:clearDeferredFailures />
+    </target>
+
+    <target name="raise-deferred-failure">
+        <!-- This raise a  testSignal. -->
+        <hlm:signal name="testDeferredSignal" result="1" message="message">
+            <signalNotifierInput>
+                <hlm:signalInput refid="testDeferredSignalInput" />
+            </signalNotifierInput>
+        </hlm:signal>
+    </target>
+
+    <target name="raise-failure-now">
+        <!-- This raise a  testSignal. -->
+        <hlm:signal name="testSignal" result="1" message="message">
+            <signalNotifierInput>
+                <hlm:signalInput refid="testSignalInput" />
+            </signalNotifierInput>
+        </hlm:signal>
+    </target>
+
+    <target name="raise-no-failure">
+        <!-- This raise a  testSignal. -->
+        <hlm:signal name="testSignal" result="0" message="message">
+            <signalNotifierInput>
+                <hlm:signalInput refid="testSignalInput" />
+            </signalNotifierInput>
+        </hlm:signal>
+    </target>
+
+    <target name="test-raise-no-failure" depends="raise-no-failure" />
+
+    <target name="test-raise-failure-now">
+        <!-- Should fail the build now -->
+        <au:expectfailure>
+            <antcall target="raise-failure-now" />
+        </au:expectfailure>
+    </target>
+
+    <target name="test-raise-deferred-failure">
+        <!-- This will not fail the build -->
+        <antcall target="raise-deferred-failure" />
+    </target>
+
+    <target name="test-raise-deferred-now-failure">
+        <!-- This will not fail the build -->
+        <antcall target="raise-deferred-failure" />
+        <!-- But next one should. -->
+        <au:expectfailure expectedMessage="testSignal: message : raise-failure-now">
+            <antcall target="raise-failure-now" />
+        </au:expectfailure>
+    </target>
+
+    <target name="test-no-args">
+        <!-- This raise a  testSignal. -->
+        <au:expectfailure expectedMessage="'name' attribute is not defined.">
+            <hlm:signal />
+        </au:expectfailure>
+    </target>
+
+    <target name="test-name-args-not-existing">
+        <au:expectfailure expectedMessage="Could not find signal config for signal name: testNonExistingSignal">
+            <hlm:signal name="testNonExistingSignal" />
+        </au:expectfailure>
+    </target>
+
+    <target name="test-too-many-nested-element">
+        <au:expectfailure expectedMessage="One and only signal input can be defined">
+            <hlm:signal name="testNonExistingSignal">
+                <signalNotifierInput>
+                    <hlm:signalInput refid="testSignalInput" />
+                    <hlm:signalInput refid="testSignalInput" />
+                </signalNotifierInput>
+            </hlm:signal>
+        </au:expectfailure>
+    </target>
+
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sysdef/build.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : build.xml 
+Part of     : Helium AntLib
+
+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="helium-sysdef">
+    <description>Helium Antlib Sydef.</description>
+    
+    <import file="${builder.dir}/java/macros.ant.xml"/>
+    
+    <property name="name" value="sysdef"/>
+    
+</project>
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sysdef/demo/build.bat	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,27 @@
+@echo off
+
+rem
+rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+rem All rights reserved.
+rem This component and the accompanying materials are made available
+rem under the terms of the License "Eclipse Public License v1.0"
+rem which accompanies this distribution, and is available
+rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+rem
+rem Initial Contributors:
+rem Nokia Corporation - initial contribution.
+rem
+rem Contributors:
+rem
+rem Description: 
+rem
+
+setlocal
+if not defined JAVA_6_HOME (
+set TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
+) ELSE  set TESTED_JAVA=%JAVA_6_HOME%
+if exist %TESTED_JAVA% (set JAVA_HOME=%TESTED_JAVA%)
+set OLDANT_ARGS=-lib %CD%\..\lib  -lib  %CD%\..\..\bin\helium-sysdef.jar -lib %CD%\..\..\antlibs
+ant %*
+endlocal
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sysdef/demo/build.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : build.xml 
+Part of     : Helium AntLib
+
+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="helium-antlib-sysdef-demo" xmlns:hlm="http://www.nokia.com/helium">
+    <description>Helium Antlib sysdef demo.</description>
+
+    <taskdef resource="com/nokia/helium/sysdef/ant/antlib.xml" uri="http://www.nokia.com/helium" />
+    <property name="epocroot" location="data" />
+
+    <target name="demo-join">
+        <hlm:joinSysdef epocroot="${epocroot}" srcfile="${epocroot}/root/system_definition_layer1.xml" destfile="${epocroot}/layer1.sysdef.xml" />
+        <hlm:joinSysdef epocroot="${epocroot}" srcfile="${epocroot}/root/system_definition_layer2.xml" destfile="${epocroot}/layer2.sysdef.xml" />
+        <hlm:mergeSysdef epocroot="${epocroot}" destfile="${epocroot}/full_model.sysdef.xml" srcfile="${epocroot}/layer1.sysdef.xml" downstreamfile="${epocroot}/layer2.sysdef.xml" />
+        <hlm:downgradeSysdef epocroot="${epocroot}" srcfile="${epocroot}/full_model.sysdef.xml" destfile="${epocroot}/downgraded_model.sysdef.xml"/>
+    </target>
+
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sysdef/demo/data/layer1/package1/package_definition.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : package_definition.xml 
+Part of     : Helium AntLib
+
+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:
+
+============================================================================
+-->
+<SystemDefinition schema="3.0.0">
+  <package id="package1" name="Package 1" levels="demo">
+    <collection id="collection" name="Collection" level="demo">
+      <component id="component" name="Component" purpose="development">
+        <unit bldFile="collection/component/group" mrp=""/>
+      </component>
+    </collection>
+  </package>
+</SystemDefinition>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sysdef/demo/data/layer1/package2/package_definition.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : package_definition.xml 
+Part of     : Helium AntLib
+
+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:
+
+============================================================================
+-->
+<SystemDefinition schema="3.0.0" xmlns:qt="http://qt.nokia.com">
+  <package id="package2" name="Package 2" levels="demo">
+    <collection id="collection2" name="Collection 2" level="demo">
+      <component id="component2" name="Component 2" purpose="development">
+        <unit bldFile="collection2/component2/group" mrp="" qt:proFile="foo.pro" />
+      </component>
+    </collection>
+  </package>
+</SystemDefinition>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sysdef/demo/data/layer2/package3/package_definition.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : package_definition.xml 
+Part of     : Helium AntLib
+
+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:
+
+============================================================================
+-->
+<SystemDefinition schema="3.0.0" xmlns:qt="http://qt.nokia.com">
+  <package id="package3" name="Package 3" levels="demo">
+    <collection id="collection3" name="Collection 3" level="demo">
+      <component id="component3" name="Component 3" purpose="development">
+        <unit bldFile="collection3/component3/group" mrp="" />
+      </component>
+    </collection>
+  </package>
+</SystemDefinition>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sysdef/demo/data/layer2/package4/package_definition.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : package_definition.xml 
+Part of     : Helium AntLib
+
+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:
+
+============================================================================
+-->
+<SystemDefinition schema="3.0.0">
+  <package id="package4" name="Package 4" levels="demo">
+    <collection id="collection4" name="Collection 4" level="demo">
+      <component id="component4" name="Component 4" purpose="development">
+        <unit bldFile="collection4/component4/group" mrp=""/>
+      </component>
+    </collection>
+  </package>
+</SystemDefinition>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sysdef/demo/data/layer3/package5/package_definition.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : package_definition.xml 
+Part of     : Helium AntLib
+
+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:
+
+============================================================================
+-->
+<SystemDefinition schema="3.0.0" xmlns:qt="http://qt.nokia.com">
+  <package id="package5" name="Package 5" levels="demo">
+    <!-- the xml syntax of this file is voluntarly wrong. -->
+    <collection id="collection5" name="Collection 5" level="demo" />
+      <component id="component5" name="Component 5" purpose="development">
+        <unit bldFile="collection5/component5/group" mrp="" />
+      </component>
+    </collection>
+  </package>
+</SystemDefinition>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sysdef/demo/data/root/system_definition_layer1.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,131 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : package_definition.xml 
+Part of     : Helium AntLib
+
+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:
+
+============================================================================
+-->
+<!DOCTYPE SystemDefinition [
+<!ELEMENT SystemDefinition ( systemModel | layer | package | collection | component)>
+<!ATTLIST SystemDefinition
+  schema CDATA #REQUIRED
+  id-namespace CDATA "http://www.symbian.org/system-definition"
+>
+<!-- this DTD describes schema="3.0.0" --> 
+
+<!-- all relative paths are relative to this file
+	all absolute paths are relative to the environment variable specified by the root attribute, or SRCROOT if not.  -->
+
+<!-- Container for metadata
+	meta, if present, should always be the first element in the parent 
+	 -->
+<!ELEMENT meta ANY>
+<!ATTLIST meta
+  href		CDATA #IMPLIED
+  type	CDATA "auto"
+  rel	CDATA "Generic"
+>
+
+<!-- systemModel element has name but no ID -->
+<!ELEMENT systemModel (meta*, layer+)>
+<!ATTLIST systemModel
+  name CDATA #IMPLIED
+>
+
+<!-- All items from layer down to component should have either @href or at least one valid child item.
+	Anything else will be considered a placeholder
+	-->
+
+<!ELEMENT layer (meta*, (package | collection)*)  >
+<!ATTLIST layer
+  id ID #REQUIRED
+  name CDATA #IMPLIED
+  href		CDATA #IMPLIED
+  levels NMTOKENS #IMPLIED
+  span CDATA #IMPLIED
+  before NMTOKEN #IMPLIED
+>
+
+<!ELEMENT package (meta*,  (package | collection)*)>
+ <!-- Nested packages are for backwards compatibility only -->
+<!ATTLIST package
+  id ID #REQUIRED
+  name CDATA #IMPLIED
+  version CDATA #IMPLIED
+  tech-domain CDATA #IMPLIED
+  href	 CDATA #IMPLIED
+  levels NMTOKENS #IMPLIED
+  span CDATA #IMPLIED
+  level NMTOKEN #IMPLIED
+  before NMTOKEN #IMPLIED  
+>
+
+<!ELEMENT collection (meta*, (component* ))>
+<!ATTLIST collection
+  id ID #REQUIRED
+  name CDATA #IMPLIED
+  href		CDATA #IMPLIED
+  level NMTOKEN #IMPLIED
+  before NMTOKEN #IMPLIED  
+>
+
+<!ELEMENT component (meta*, unit*)>
+<!-- contains units or is a placeholder -->
+<!ATTLIST component
+  id ID #REQUIRED
+  name CDATA #IMPLIED
+  href		CDATA #IMPLIED
+  deprecated CDATA #IMPLIED
+  introduced CDATA #IMPLIED
+  target  ( device | desktop | other ) "device"
+  purpose ( optional | mandatory | development ) "optional"  
+  class NMTOKENS #IMPLIED
+  filter CDATA #IMPLIED
+  before NMTOKEN #IMPLIED  
+  origin-model CDATA #IMPLIED
+>
+<!--
+	"filter" attribute is deprecated
+	"origin-model" attribute is only to be inserted by tools when merging models
+ 	recommended class values are: doc, config, plugin, tool, api -->
+
+<!ELEMENT unit EMPTY >
+<!ATTLIST unit
+  mrp CDATA #IMPLIED
+  bldFile CDATA #IMPLIED
+  base CDATA #IMPLIED
+  root CDATA #IMPLIED
+  version NMTOKEN #IMPLIED
+  prebuilt NMTOKEN #IMPLIED
+  late (yes|no) #IMPLIED
+  filter CDATA #IMPLIED
+  priority CDATA #IMPLIED
+>
+<!-- filter and priority are deprecated 
+	"root" attribute will usually be inserted by tools when merging models, although it can be set manually-->
+
+<!ENTITY layer_real_source_path "/sf/os/mm" >
+]>
+<SystemDefinition schema="3.0.0">
+  <systemModel name="Demo">
+    <layer id="layer1">
+      <package id="package1" href="../layer1/package1/package_definition.xml"/>
+      <package id="package2" href="../layer1/package2/package_definition.xml"/>
+    </layer>
+  </systemModel>
+</SystemDefinition>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sysdef/demo/data/root/system_definition_layer2.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : package_definition.xml 
+Part of     : Helium AntLib
+
+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:
+
+============================================================================
+-->
+<!DOCTYPE SystemDefinition [
+<!ELEMENT SystemDefinition ( systemModel | layer | package | collection | component)>
+<!ATTLIST SystemDefinition
+  schema CDATA #REQUIRED
+  id-namespace CDATA "http://www.symbian.org/system-definition"
+>
+<!-- this DTD describes schema="3.0.0" --> 
+
+<!-- all relative paths are relative to this file
+	all absolute paths are relative to the environment variable specified by the root attribute, or SRCROOT if not.  -->
+
+<!-- Container for metadata
+	meta, if present, should always be the first element in the parent 
+	 -->
+<!ELEMENT meta ANY>
+<!ATTLIST meta
+  href		CDATA #IMPLIED
+  type	CDATA "auto"
+  rel	CDATA "Generic"
+>
+
+<!-- systemModel element has name but no ID -->
+<!ELEMENT systemModel (meta*, layer+)>
+<!ATTLIST systemModel
+  name CDATA #IMPLIED
+>
+
+<!-- All items from layer down to component should have either @href or at least one valid child item.
+	Anything else will be considered a placeholder
+	-->
+
+<!ELEMENT layer (meta*, (package | collection)*)  >
+<!ATTLIST layer
+  id ID #REQUIRED
+  name CDATA #IMPLIED
+  href		CDATA #IMPLIED
+  levels NMTOKENS #IMPLIED
+  span CDATA #IMPLIED
+  before NMTOKEN #IMPLIED
+>
+
+<!ELEMENT package (meta*,  (package | collection)*)>
+ <!-- Nested packages are for backwards compatibility only -->
+<!ATTLIST package
+  id ID #REQUIRED
+  name CDATA #IMPLIED
+  version CDATA #IMPLIED
+  tech-domain CDATA #IMPLIED
+  href	 CDATA #IMPLIED
+  levels NMTOKENS #IMPLIED
+  span CDATA #IMPLIED
+  level NMTOKEN #IMPLIED
+  before NMTOKEN #IMPLIED  
+>
+
+<!ELEMENT collection (meta*, (component* ))>
+<!ATTLIST collection
+  id ID #REQUIRED
+  name CDATA #IMPLIED
+  href		CDATA #IMPLIED
+  level NMTOKEN #IMPLIED
+  before NMTOKEN #IMPLIED  
+>
+
+<!ELEMENT component (meta*, unit*)>
+<!-- contains units or is a placeholder -->
+<!ATTLIST component
+  id ID #REQUIRED
+  name CDATA #IMPLIED
+  href		CDATA #IMPLIED
+  deprecated CDATA #IMPLIED
+  introduced CDATA #IMPLIED
+  target  ( device | desktop | other ) "device"
+  purpose ( optional | mandatory | development ) "optional"  
+  class NMTOKENS #IMPLIED
+  filter CDATA #IMPLIED
+  before NMTOKEN #IMPLIED  
+  origin-model CDATA #IMPLIED
+>
+<!--
+	"filter" attribute is deprecated
+	"origin-model" attribute is only to be inserted by tools when merging models
+ 	recommended class values are: doc, config, plugin, tool, api -->
+
+<!ELEMENT unit EMPTY >
+<!ATTLIST unit
+  mrp CDATA #IMPLIED
+  bldFile CDATA #IMPLIED
+  base CDATA #IMPLIED
+  root CDATA #IMPLIED
+  version NMTOKEN #IMPLIED
+  prebuilt NMTOKEN #IMPLIED
+  late (yes|no) #IMPLIED
+  filter CDATA #IMPLIED
+  priority CDATA #IMPLIED
+>
+<!-- filter and priority are deprecated 
+	"root" attribute will usually be inserted by tools when merging models, although it can be set manually-->
+]>
+<SystemDefinition schema="3.0.0">
+  <systemModel name="Demo2">
+    <layer id="layer2" name="layer2" levels="demo">
+      <package id="package3" href="../layer2/package3/package_definition.xml"/>
+      <package id="package4" href="../layer2/package4/package_definition.xml"/>
+    </layer>
+  </systemModel>
+</SystemDefinition>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sysdef/demo/data/root/system_definition_layer3.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : package_definition.xml 
+Part of     : Helium AntLib
+
+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:
+
+============================================================================
+-->
+<!DOCTYPE SystemDefinition [
+<!ELEMENT SystemDefinition ( systemModel | layer | package | collection | component)>
+<!ATTLIST SystemDefinition
+  schema CDATA #REQUIRED
+  id-namespace CDATA "http://www.symbian.org/system-definition"
+>
+<!-- this DTD describes schema="3.0.0" --> 
+
+<!-- all relative paths are relative to this file
+	all absolute paths are relative to the environment variable specified by the root attribute, or SRCROOT if not.  -->
+
+<!-- Container for metadata
+	meta, if present, should always be the first element in the parent 
+	 -->
+<!ELEMENT meta ANY>
+<!ATTLIST meta
+  href		CDATA #IMPLIED
+  type	CDATA "auto"
+  rel	CDATA "Generic"
+>
+
+<!-- systemModel element has name but no ID -->
+<!ELEMENT systemModel (meta*, layer+)>
+<!ATTLIST systemModel
+  name CDATA #IMPLIED
+>
+
+<!-- All items from layer down to component should have either @href or at least one valid child item.
+	Anything else will be considered a placeholder
+	-->
+
+<!ELEMENT layer (meta*, (package | collection)*)  >
+<!ATTLIST layer
+  id ID #REQUIRED
+  name CDATA #IMPLIED
+  href		CDATA #IMPLIED
+  levels NMTOKENS #IMPLIED
+  span CDATA #IMPLIED
+  before NMTOKEN #IMPLIED
+>
+
+<!ELEMENT package (meta*,  (package | collection)*)>
+ <!-- Nested packages are for backwards compatibility only -->
+<!ATTLIST package
+  id ID #REQUIRED
+  name CDATA #IMPLIED
+  version CDATA #IMPLIED
+  tech-domain CDATA #IMPLIED
+  href	 CDATA #IMPLIED
+  levels NMTOKENS #IMPLIED
+  span CDATA #IMPLIED
+  level NMTOKEN #IMPLIED
+  before NMTOKEN #IMPLIED  
+>
+
+<!ELEMENT collection (meta*, (component* ))>
+<!ATTLIST collection
+  id ID #REQUIRED
+  name CDATA #IMPLIED
+  href		CDATA #IMPLIED
+  level NMTOKEN #IMPLIED
+  before NMTOKEN #IMPLIED  
+>
+
+<!ELEMENT component (meta*, unit*)>
+<!-- contains units or is a placeholder -->
+<!ATTLIST component
+  id ID #REQUIRED
+  name CDATA #IMPLIED
+  href		CDATA #IMPLIED
+  deprecated CDATA #IMPLIED
+  introduced CDATA #IMPLIED
+  target  ( device | desktop | other ) "device"
+  purpose ( optional | mandatory | development ) "optional"  
+  class NMTOKENS #IMPLIED
+  filter CDATA #IMPLIED
+  before NMTOKEN #IMPLIED  
+  origin-model CDATA #IMPLIED
+>
+<!--
+	"filter" attribute is deprecated
+	"origin-model" attribute is only to be inserted by tools when merging models
+ 	recommended class values are: doc, config, plugin, tool, api -->
+
+<!ELEMENT unit EMPTY >
+<!ATTLIST unit
+  mrp CDATA #IMPLIED
+  bldFile CDATA #IMPLIED
+  base CDATA #IMPLIED
+  root CDATA #IMPLIED
+  version NMTOKEN #IMPLIED
+  prebuilt NMTOKEN #IMPLIED
+  late (yes|no) #IMPLIED
+  filter CDATA #IMPLIED
+  priority CDATA #IMPLIED
+>
+<!-- filter and priority are deprecated 
+	"root" attribute will usually be inserted by tools when merging models, although it can be set manually-->
+]>
+<SystemDefinition schema="3.0.0">
+  <systemModel name="Demo2">
+    <layer id="layer2" name="layer3" levels="demo">
+      <package id="package5" href="../layer2/package5/package_definition.xml"/>
+    </layer>
+  </systemModel>
+</SystemDefinition>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sysdef/demo/data/root/system_model.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : package_definition.xml 
+Part of     : Helium AntLib
+
+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:
+
+============================================================================
+-->
+<!DOCTYPE SystemDefinition [
+<!ELEMENT SystemDefinition ( systemModel | layer | package | collection | component)>
+<!ATTLIST SystemDefinition
+  schema CDATA #REQUIRED
+  id-namespace CDATA "http://www.symbian.org/system-definition"
+>
+<!-- this DTD describes schema="3.0.0" --> 
+
+<!-- all relative paths are relative to this file
+	all absolute paths are relative to the environment variable specified by the root attribute, or SRCROOT if not.  -->
+
+<!-- Container for metadata
+	meta, if present, should always be the first element in the parent 
+	 -->
+<!ELEMENT meta ANY>
+<!ATTLIST meta
+  href		CDATA #IMPLIED
+  type	CDATA "auto"
+  rel	CDATA "Generic"
+>
+
+<!-- systemModel element has name but no ID -->
+<!ELEMENT systemModel (meta*, layer+)>
+<!ATTLIST systemModel
+  name CDATA #IMPLIED
+>
+
+<!-- All items from layer down to component should have either @href or at least one valid child item.
+	Anything else will be considered a placeholder
+	-->
+
+<!ELEMENT layer (meta*, (package | collection)*)  >
+<!ATTLIST layer
+  id ID #REQUIRED
+  name CDATA #IMPLIED
+  href		CDATA #IMPLIED
+  levels NMTOKENS #IMPLIED
+  span CDATA #IMPLIED
+  before NMTOKEN #IMPLIED
+>
+
+<!ELEMENT package (meta*,  (package | collection)*)>
+ <!-- Nested packages are for backwards compatibility only -->
+<!ATTLIST package
+  id ID #REQUIRED
+  name CDATA #IMPLIED
+  version CDATA #IMPLIED
+  tech-domain CDATA #IMPLIED
+  href	 CDATA #IMPLIED
+  levels NMTOKENS #IMPLIED
+  span CDATA #IMPLIED
+  level NMTOKEN #IMPLIED
+  before NMTOKEN #IMPLIED  
+>
+
+<!ELEMENT collection (meta*, (component* ))>
+<!ATTLIST collection
+  id ID #REQUIRED
+  name CDATA #IMPLIED
+  href		CDATA #IMPLIED
+  level NMTOKEN #IMPLIED
+  before NMTOKEN #IMPLIED  
+>
+
+<!ELEMENT component (meta*, unit*)>
+<!-- contains units or is a placeholder -->
+<!ATTLIST component
+  id ID #REQUIRED
+  name CDATA #IMPLIED
+  href		CDATA #IMPLIED
+  deprecated CDATA #IMPLIED
+  introduced CDATA #IMPLIED
+  target  ( device | desktop | other ) "device"
+  purpose ( optional | mandatory | development ) "optional"  
+  class NMTOKENS #IMPLIED
+  filter CDATA #IMPLIED
+  before NMTOKEN #IMPLIED  
+  origin-model CDATA #IMPLIED
+>
+<!--
+	"filter" attribute is deprecated
+	"origin-model" attribute is only to be inserted by tools when merging models
+ 	recommended class values are: doc, config, plugin, tool, api -->
+
+<!ELEMENT unit EMPTY >
+<!ATTLIST unit
+  mrp CDATA #IMPLIED
+  bldFile CDATA #IMPLIED
+  base CDATA #IMPLIED
+  root CDATA #IMPLIED
+  version NMTOKEN #IMPLIED
+  prebuilt NMTOKEN #IMPLIED
+  late (yes|no) #IMPLIED
+  filter CDATA #IMPLIED
+  priority CDATA #IMPLIED
+>
+<!-- filter and priority are deprecated 
+	"root" attribute will usually be inserted by tools when merging models, although it can be set manually-->
+]>
+<SystemDefinition schema="3.0.0">
+  <systemModel name="multimedia">
+    <layer id="mw" name="mw" levels="middleware framework">
+      <package id="mmmw" href="file:///i:/sf/mw/mmmw/package_definition.xml"/>
+      <!--<package id="mm" href="i:/sf/os/mm/package_definition.xml"/>-->
+    </layer>
+  </systemModel>
+</SystemDefinition>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sysdef/demo/data/sf/os/buildtools/bldsystemtools/buildsystemtools/filter-module.xsl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,110 @@
+<?xml version="1.0"?>
+ <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exslt="http://exslt.org/common"  exclude-result-prefixes="exslt">
+	<xsl:output method="xml" indent="yes"/>
+
+
+<!-- filters can only return hide or show -->
+
+<!-- filter-only =  item's @filter can only have items from the list
+	anything with no filters passes
+-->
+<xsl:template match="filter-only" mode="filter"><xsl:param name="item"/>
+	<xsl:if test="$item[@filter]">
+		<xsl:variable name="this" select="."/>
+		<xsl:variable name="my-filters">
+			<xsl:call-template name="filter-list">
+				<xsl:with-param name="f" select="$item/parent::component/@filter"/>
+			</xsl:call-template>
+			<xsl:call-template name="filter-list">
+				<xsl:with-param name="f" select="$item/@filter"/>
+			</xsl:call-template>
+		</xsl:variable>
+		<xsl:variable name="match">
+			<xsl:for-each select="exslt:node-set($my-filters)/*">
+				<xsl:if test="not($this/*[name()=name(current())  and @v=current()/@v])">x</xsl:if>
+			</xsl:for-each>
+		</xsl:variable>
+		<xsl:if test="$match!=''">hide</xsl:if>
+	</xsl:if>
+</xsl:template>
+
+
+
+<!-- filter-has =  item's @filter must have all filters in the list. ie it can have any other filters, but these must all be present	
+-->
+<xsl:template match="filter-has" mode="filter"><xsl:param name="item"/>
+	<xsl:if test="$item[(self::component or self::unit)  and not(unit/@filter or self::unit[not(../unit[@filter])])]">
+		<xsl:variable name="my-filters">
+			<xsl:call-template name="filter-list">
+				<xsl:with-param name="f" select="$item/parent::component/@filter"/>
+			</xsl:call-template>
+			<xsl:call-template name="filter-list">
+				<xsl:with-param name="f" select="$item/@filter"/>
+			</xsl:call-template>
+		</xsl:variable>
+		<xsl:variable name="match">
+			<xsl:for-each select="*">
+				<!-- 	if(f in this) {return true}  else if(!f in this) {return false} else {return !(f is positive)} -->
+				<xsl:choose>
+					<xsl:when test="exslt:node-set($my-filters)/*[name()=name(current()) and @v=current()/@v]"/> <!-- filter in item -->
+					<xsl:when test="exslt:node-set($my-filters)/*[name()!=name(current()) and @v=current()/@v]">x</xsl:when> <!-- !filter in item -->
+					<xsl:when test="self::filter">x</xsl:when> <!-- !(filter is positive) -->
+				</xsl:choose>
+			</xsl:for-each>
+		</xsl:variable>
+		<xsl:if test="$match!=''">hide</xsl:if>
+	</xsl:if>
+</xsl:template>
+
+<xsl:template match="filter-with" mode="filter"><xsl:param name="item"/>
+	<xsl:if test="$item[(self::component or self::unit)  and not(unit/@filter or self::unit[not(../unit[@filter])])]">
+		<xsl:variable name="my-filters">
+			<xsl:call-template name="filter-list">
+				<xsl:with-param name="f" select="$item/parent::component/@filter"/>
+			</xsl:call-template>
+			<xsl:call-template name="filter-list">
+				<xsl:with-param name="f" select="$item/@filter"/>
+			</xsl:call-template>
+		</xsl:variable>
+		<xsl:variable name="match">
+			<xsl:for-each select="*">
+				<xsl:if test="exslt:node-set($my-filters)/*[name()!=name(current()) and @v=current()/@v]">x</xsl:if> <!-- !filter in item -->
+			</xsl:for-each>
+		</xsl:variable>
+		<xsl:if test="$match!=''">hide</xsl:if>
+	</xsl:if>
+</xsl:template>
+
+
+
+<xsl:template name="filter-item"> <xsl:param name="f"/>
+	<!-- create an element for a given filter. If the filter's empty make nothing -->
+	<xsl:choose>
+		<xsl:when test="$f=''"/>
+		<xsl:when test="starts-with($f,'!')">
+				<not v="{substring($f,2)}"/>
+		</xsl:when>
+		<xsl:otherwise>
+				<filter v="{$f}"/>
+		</xsl:otherwise>
+	</xsl:choose>
+</xsl:template>
+
+<xsl:template name="filter-list"><xsl:param name="f"/>
+	<!-- turn a filter list into a set of elements (<filter> or <not>) with the attribute "v" containing the "absolute value" of the filter
+		filter="A,B,!C" becomes  <filter v="A"/><filter v="B"/><not v="C"/> 
+	  -->
+	<xsl:choose>
+		<xsl:when test="contains($f,',')">
+			<xsl:call-template name="filter-item"><xsl:with-param name="f" select="normalize-space(substring-before($f,','))"/></xsl:call-template>
+			<xsl:call-template name="filter-list">
+				<xsl:with-param name="f" select="substring-after($f,',')"/>
+			</xsl:call-template>
+		</xsl:when>
+		<xsl:otherwise>
+			<xsl:call-template name="filter-item"><xsl:with-param name="f" select="normalize-space($f)"/></xsl:call-template>
+		</xsl:otherwise>
+	</xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet> 
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sysdef/demo/data/sf/os/buildtools/bldsystemtools/buildsystemtools/filtersysdef.xsl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+ <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exslt="http://exslt.org/common"  exclude-result-prefixes="exslt">
+	<xsl:output method="xml" indent="yes"/>
+
+<!-- create a stand-alone sysdef from a linked set of fragments -->
+
+<xsl:param name="path">/os/deviceplatformrelease/foundation_system/system_model/system_definition.xml</xsl:param>
+
+<xsl:param name="filter-type">only</xsl:param> <!-- only, has or with -->
+
+<xsl:param name="filter"/> <!-- comma-separated list -->
+
+
+<xsl:template match="/*">
+	<xsl:apply-templates select="." mode="join"/>
+</xsl:template>
+
+
+<xsl:template match="/SystemDefinition[systemModel]">
+
+	<xsl:variable name="f">
+		<xsl:element name="filter-{$filter-type}">
+			<xsl:call-template name="filter-list">
+				<xsl:with-param name="f" select="$filter"/>
+			</xsl:call-template>
+		</xsl:element>
+	</xsl:variable>
+
+<xsl:apply-templates select="." mode="join">
+	<xsl:with-param name="filename" select="$path"/>
+	<xsl:with-param name="data" select="exslt:node-set($f)/*"/>
+</xsl:apply-templates>
+</xsl:template>
+
+
+
+<xsl:include href="joinsysdef-module.xsl"/>
+<xsl:include href="filter-module.xsl"/>
+
+</xsl:stylesheet>	
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sysdef/demo/data/sf/os/buildtools/bldsystemtools/buildsystemtools/joinsysdef-module.xsl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,402 @@
+<?xml version="1.0"?>
+<!-- 
+============================================================================ 
+Name        : joinsysdef-module.xsl 
+Part of     : Helium AntLib
+
+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:
+
+============================================================================
+-->
+ <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exslt="http://exslt.org/common" exclude-result-prefixes="exslt">
+	<!-- save SF namespace as a constant to avoid the risk of typos-->
+ <xsl:variable name="defaultns">http://www.symbian.org/system-definition</xsl:variable>
+ 
+<!-- create a stand-alone sysdef from a linked set of fragments -->
+
+<xsl:template match="/*" mode="join">
+	<xsl:message terminate="yes">Cannot process this document</xsl:message>
+</xsl:template>
+
+
+<xsl:template match="/SystemDefinition[@schema='3.0.0' and count(*)=1]" mode="join">
+	<xsl:param name="origin" select="/.."/>
+	<xsl:param name="root"/>
+	<xsl:param name="filename"/>
+	<xsl:param name="namespaces"/>
+	<xsl:choose>
+		<xsl:when test="$origin">	<!-- this sysdef fragment was linked from a parent sysdef -->
+			<xsl:for-each select="*"> <!-- can be only one -->
+				<xsl:variable name="upid"><xsl:apply-templates select="$origin/@id" mode="my-id"/></xsl:variable>		<!-- namespaceless ID of this in parent doc -->
+				<xsl:variable name="id"><xsl:apply-templates select="@id" mode="my-id"/></xsl:variable>						<!-- namespaceless ID of this here -->
+				<xsl:variable name="upns"><xsl:apply-templates select="$origin/@id" mode="my-namespace"/></xsl:variable>	<!-- ID's namespace in parent doc -->
+				<xsl:variable name="ns"><xsl:apply-templates select="@id" mode="my-namespace"/></xsl:variable>	<!-- ID's namespace -->
+				<xsl:if test="$id!=$upid or $ns!=$upns">
+					<xsl:message terminate="yes">Linked ID "<xsl:value-of select="$id"/>" (<xsl:value-of select="$ns"/>) must match linking document "<xsl:value-of select="$upid"/>" (<xsl:value-of select="$upns"/>)</xsl:message>
+				</xsl:if>
+				<!-- copy any attributes not already defined (parent doc overrides child doc)-->
+				<xsl:for-each select="@*">
+					<xsl:variable name="n" select="name()"/>
+					<xsl:choose>
+						<xsl:when test="$n='id'"/> <!-- never copy this, always set -->
+						<xsl:when test="$origin/@*[name()=$n]"> <!-- don't copy if already set -->
+							<xsl:message>Cannot set "<xsl:value-of select="$n"/>", already set</xsl:message>
+						</xsl:when>
+						<xsl:when test="$n='before'">
+							<!-- ensure ns is correct (if any future attribtues will ever use an ID, process it here too)-->
+							<xsl:apply-templates select="." mode="join">
+								<xsl:with-param name="namespaces" select="$namespaces"/>
+							</xsl:apply-templates>
+						</xsl:when> 
+						<xsl:otherwise><xsl:copy-of select="."/></xsl:otherwise> <!-- just copy anything else -->
+					</xsl:choose>
+				</xsl:for-each>
+				<xsl:copy-of select="../namespace::*[not(.=$namespaces)]"/> <!-- set any namespaces not already set (they should all alreayd be, but some XSLT processors are quirky) -->
+				<xsl:apply-templates select="*|comment()" mode="join">
+					<xsl:with-param name="root" select="$root"/>
+					<xsl:with-param name="filename" select="$filename"/>
+					<xsl:with-param name="namespaces" select="$namespaces | ../namespace::*[not(.=$namespaces)]"/>
+				</xsl:apply-templates>
+			</xsl:for-each>
+		</xsl:when>
+		<xsl:when test="function-available('exslt:node-set')">
+			<!--try to put all namespaces in root element -->
+			<xsl:variable name="nss">
+				<!-- contains node set of namespaces to add to root element.
+					May panic if there are too many single-letter namespaces and this can't create a new one -->
+				<xsl:call-template name="needed-namespaces">
+					<xsl:with-param name="foundns">
+						<xsl:apply-templates select="//*[(self::component or self::collection or self::package or self::layer) and @href]" mode="scan-for-namespaces"/>
+					</xsl:with-param>
+				</xsl:call-template>
+			</xsl:variable>
+			<xsl:variable name="ns" select="@id-namespace | namespace::* | exslt:node-set($nss)/*"/>
+			<xsl:copy><xsl:copy-of select="@*"/>
+				<xsl:for-each select="exslt:node-set($nss)/*"> <!-- add namespace definitions -->
+					<xsl:attribute name="xmlns:{name()}">
+						<xsl:value-of select="."/>
+					</xsl:attribute>
+				</xsl:for-each>
+				<xsl:apply-templates select="*|comment()" mode="join">
+					<xsl:with-param name="namespaces" select="$ns"/>
+					<xsl:with-param name="root" select="$root"/>
+					<xsl:with-param name="filename" select="$filename"/>
+				</xsl:apply-templates>
+			</xsl:copy>
+		</xsl:when>
+		<xsl:otherwise> <!-- can't handle node-set() so put the namespaces in the document instead of the root -->
+			<xsl:variable name="ns" select="@id-namespace | namespace::*"/>
+			<xsl:copy><xsl:copy-of select="@*"/>
+				<xsl:apply-templates select="*|comment()" mode="join">
+					<xsl:with-param name="namespaces" select="$ns"/>
+					<xsl:with-param name="root" select="$root"/>
+					<xsl:with-param name="filename" select="$filename"/>
+				</xsl:apply-templates>
+			</xsl:copy>
+		</xsl:otherwise>
+	</xsl:choose>
+</xsl:template>
+
+<xsl:template match="*" mode="scan-for-namespaces"/> <!-- just in case of errors, consider replacing by terminate -->
+<xsl:template match="*[@href and not(self::meta)]" mode="scan-for-namespaces">
+	<!-- produce a list of namespace-prefix namespace pairs separated by newlines, in reverse order found in documents 
+		reverse order so we can try to use the first namespace prefix defined if it's available-->
+	<xsl:for-each select="document(@href,.)/*">
+		<xsl:apply-templates select="//*[(self::component or self::collection or self::package or self::layer) and @href]" mode="scan-for-namespaces"/>
+		<xsl:for-each select="//namespace::* | @id-namespace">
+			<xsl:value-of select="concat(name(),' ',.,'&#xa;')"/>
+		</xsl:for-each>
+	</xsl:for-each>			
+</xsl:template>
+
+<xsl:template name="needed-namespaces">
+	<xsl:param name="foundns"/>
+	<xsl:param name="usedpre"/>
+	<xsl:variable name="line" select="substring-before($foundns,'&#xa;')"/> <!-- always has trailing newline -->
+	<xsl:variable name="name" select="substring-after($line,' ')"/> <!-- namespace prefix -->
+	<xsl:variable name="remainder" select="substring-after($foundns,'&#xa;')"/>
+	<xsl:variable name="newprefix">
+		<xsl:if test="not(contains(concat('&#xa;',$remainder),concat('&#xa;',$line,'&#xa;'))) and
+			not(//namespace::*[.=$name] or @id-namespace[.=$name] or (not(@id-namespace) and $defaultns=$name))">
+					<xsl:apply-templates select="." mode="ns-prefix">
+						<xsl:with-param name="ns" select="$name"/>
+						<xsl:with-param name="pre" select="substring-before($line,' ')"/>
+						<xsl:with-param name="dontuse" select="$usedpre"/>
+					</xsl:apply-templates>
+		</xsl:if>
+	</xsl:variable>
+	<xsl:if test="$newprefix!=''">
+		<!-- can treat this as if it were a namespace node -->
+		<xsl:element name="{$newprefix}">
+			<xsl:value-of select="$name"/>
+		</xsl:element>
+	</xsl:if>
+	<xsl:if test="$remainder!=''">
+		<xsl:call-template name="needed-namespaces">
+			<xsl:with-param name="foundns" select="$remainder"/>
+			<xsl:with-param name="usedpre" select="concat($usedpre,' ',$newprefix,' ')"/>
+		</xsl:call-template>
+	</xsl:if>
+</xsl:template>
+
+<xsl:template match="/SystemDefinition" mode="ns-prefix">
+	<!-- should be able to replace this with mechanism that uses the XSLT processor's own ability to generate namespaces -->
+	<xsl:param name="ns"/>
+	<xsl:param name="pre"/>
+	<xsl:param name="dontuse"/>
+	<xsl:param name="chars">ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz</xsl:param>
+	<xsl:variable name="name" select="substring(substring-after($ns,'http://www.'),1,1)"/>
+	<xsl:choose>
+		<xsl:when test="$pre!='' and $pre!='id-namespace' and not(//namespace::*[name()=$pre]) and not(contains($dontuse,concat(' ',$pre,' ')))">
+			<xsl:value-of select="$pre"/>
+		</xsl:when>
+		<xsl:when test="$ns='' and $chars=''">
+			<xsl:message terminate="yes">Cannot create namespace prefix for downstream default namespace</xsl:message>
+		</xsl:when>
+		<xsl:when test="$name!='' and not(contains($dontuse,concat(' ',$name,' ')))"><xsl:value-of select="$name"/></xsl:when>
+		<xsl:when test="namespace::*[name()=substring($chars,1,1)] or contains($dontuse,concat(' ',substring($chars,1,1),' '))">
+			<xsl:apply-templates mode="ns-prefix">
+				<xsl:with-param name="chars" select="substring($chars,2)"/>
+			</xsl:apply-templates>
+		</xsl:when>
+		<xsl:otherwise>
+			<xsl:value-of select="substring($chars,1,1)"/>
+		</xsl:otherwise>
+	</xsl:choose>
+</xsl:template>
+
+
+<xsl:template match="unit" mode="join">	<xsl:param name="root"/><xsl:param name="filename"/>
+	<xsl:element name="{name()}">
+		<xsl:apply-templates select="@*" mode="join">
+			<xsl:with-param name="root" select="$root"/>
+			<xsl:with-param name="filename" select="$filename"/>
+		</xsl:apply-templates>
+	</xsl:element>
+</xsl:template>
+
+<!-- copy metadata verbatim
+	Should add mechanism to selectively include or filter metadata sections -->
+<xsl:template match="meta" priority="2">
+	<xsl:element name="{name()}">
+		<xsl:apply-templates select="@*" mode="join"/>
+		<xsl:choose>
+			<xsl:when test="@href">
+				<xsl:copy-of select="document(@href,.)/*"/> 
+			</xsl:when>
+			<xsl:otherwise>
+				<xsl:copy-of select="*|comment()"/>
+			</xsl:otherwise>
+		</xsl:choose>
+	</xsl:element>
+</xsl:template>
+
+<xsl:template match="*" mode="join">	<xsl:param name="root"/><xsl:param name="filename"/><xsl:param name="namespaces"/>
+	<xsl:element name="{name()}"> <!-- use this instead of <copy> so xalan doesn't add extra wrong namespaces -->
+		<xsl:apply-templates select="@*" mode="join">
+			<xsl:with-param name="namespaces" select="$namespaces"/>
+		</xsl:apply-templates>
+		
+		<xsl:choose>
+			<xsl:when test="@href">
+				<xsl:variable name="origin" select="."/>
+				<xsl:apply-templates select="document(@href,.)/*" mode="join">
+					<xsl:with-param name="origin" select="$origin"/>
+					<xsl:with-param name="namespaces" select="$namespaces"/>
+					<xsl:with-param name="filename">
+						<xsl:call-template name="joinpath">
+							<xsl:with-param name="file" select="$filename"/>
+							<xsl:with-param name="rel" select="$origin/@href"/>
+						</xsl:call-template>					
+					</xsl:with-param>
+					<xsl:with-param name="root">
+							<xsl:value-of select="$root"/>/<xsl:call-template name="lastbefore">
+							<xsl:with-param name="string" select="$origin/@href"/>
+						</xsl:call-template>
+					</xsl:with-param>
+				</xsl:apply-templates> 
+			</xsl:when>
+			<xsl:otherwise>
+				<xsl:apply-templates select="*|comment()" mode="join">
+					<xsl:with-param name="root" select="$root"/>
+					<xsl:with-param name="filename" select="$filename"/>
+					<xsl:with-param name="namespaces" select="$namespaces"/>
+				</xsl:apply-templates>
+			</xsl:otherwise>
+		</xsl:choose>
+	</xsl:element>
+</xsl:template>
+
+<xsl:template match="@mrp[starts-with(.,'/')] | @bldFile[starts-with(.,'/')] | @base[starts-with(.,'/')]" mode="join">
+	<xsl:copy-of select="."/>
+</xsl:template>
+
+<xsl:template match="@mrp|@bldFile|@base" mode="join">	<xsl:param name="root"/><xsl:param name="filename"/>
+	<xsl:attribute name="{name()}">
+		<xsl:call-template name="joinpath">
+			<xsl:with-param name="file" select="$filename"/>
+			<xsl:with-param name="rel" select="."/>
+		</xsl:call-template>	
+	</xsl:attribute>	
+</xsl:template>
+
+
+<xsl:template match="@href" mode="join"/>
+
+<xsl:template match="@*" mode="my-namespace"> <!-- the namespace of an ID -->
+	<xsl:choose>
+		<xsl:when test="contains(.,':')">
+			<xsl:value-of select="ancestor::*/namespace::*[name()=substring-before(current(),':')]"/>
+		</xsl:when>
+		<xsl:when test="/SystemDefinition/@id-namespace">
+			<xsl:value-of select="/SystemDefinition/@id-namespace"/>
+		</xsl:when>
+		<xsl:otherwise>
+			<xsl:value-of select="$defaultns"/>
+		</xsl:otherwise>
+	</xsl:choose>
+</xsl:template>
+
+
+<xsl:template match="@*" mode="my-id"> <!-- the ID with namespace prefix removed -->
+	<xsl:choose>
+		<xsl:when test="contains(.,':')">
+			<xsl:value-of select="substring-after(.,':')"/>
+		</xsl:when>
+		<xsl:otherwise>
+			<xsl:value-of select="."/>
+		</xsl:otherwise>
+	</xsl:choose>
+</xsl:template>
+
+
+
+<xsl:template match="@id|@before" mode="join">
+	<xsl:param name="namespaces"/>
+	<!-- this will change the namespace prefixes for all IDs to match the root document -->
+	<xsl:variable name="ns">
+		<xsl:apply-templates select="." mode="my-namespace"/>
+	</xsl:variable>
+	<xsl:if test="$ns=''">
+		<xsl:message terminate="yes">Could not find namespace for <xsl:value-of select="."/>
+		</xsl:message>
+	</xsl:if>
+	<xsl:variable name="prefix" select="name($namespaces[.=$ns])"/>
+	<xsl:attribute name="{name()}">
+	<xsl:choose>
+		<xsl:when test="$prefix = 'id-namespace' or  (not($namespaces[name()='id-prefix']) and $ns=$defaultns)"/> <!-- it's the default namespace, no prefix -->
+		<xsl:when test="$prefix='' and contains(.,':')">
+			<!-- complex: copy id and copy namespace (namespace should be copied already)-->
+			<xsl:value-of select="."/>
+		</xsl:when>
+		<xsl:when test="$prefix='' and $ns=$defaultns"/> <!-- no prefix and it's the default --> 
+		<xsl:when test="$prefix!=''">			<!-- just change the prefix -->
+			<xsl:value-of select="concat($prefix,':')"/>
+		</xsl:when>
+		<xsl:otherwise>
+		<xsl:message terminate="yes">Error</xsl:message>
+		</xsl:otherwise>
+	</xsl:choose>
+		<xsl:apply-templates select="." mode="my-id"/>
+	</xsl:attribute>
+</xsl:template>
+
+
+
+<xsl:template match="@*|comment()" mode="join"><xsl:copy-of select="."/></xsl:template>
+
+
+<!-- path handling follows -->
+
+ <xsl:template name="lastbefore"><xsl:param name="string"/><xsl:param name="substr" select="'/'"/>
+        <xsl:if test="contains($string,$substr)">
+                <xsl:value-of select="substring-before($string,$substr)"/>
+                <xsl:if test="contains(substring-after($string,$substr),$substr)">
+	                <xsl:value-of select="$substr"/>
+	              </xsl:if>
+        <xsl:call-template name="lastbefore">
+                <xsl:with-param name="string" select="substring-after($string,$substr)"/>
+                <xsl:with-param name="substr" select="$substr"/>
+        </xsl:call-template>
+        </xsl:if>
+</xsl:template>
+
+ <xsl:template name="joinpath"><xsl:param name="file"/><xsl:param name="rel"/>
+        <xsl:call-template name="reducepath">
+        <xsl:with-param name="file">
+	        <xsl:call-template name="lastbefore">
+	                <xsl:with-param name="string" select="$file"/>
+	        </xsl:call-template>
+	        <xsl:text>/</xsl:text>
+	        <xsl:value-of select="$rel"/>
+	       </xsl:with-param>
+	      </xsl:call-template>
+ </xsl:template>
+
+<xsl:template name="reducepath"><xsl:param name="file"/>
+	<xsl:call-template name="reducedotdotpath">
+    	<xsl:with-param name="file">
+			<xsl:call-template name="reducedotpath">
+		    	<xsl:with-param name="file" select="$file"/>
+		    </xsl:call-template>
+		</xsl:with-param>
+	</xsl:call-template>
+</xsl:template>
+
+<xsl:template name="reducedotdotpath"><xsl:param name="file"/>
+	<xsl:choose>
+		<xsl:when test="starts-with($file,'../')">
+			<xsl:text>../</xsl:text>
+			<xsl:call-template name="reducedotdotpath">
+        		<xsl:with-param name="file" select="substring($file,4)"/>
+			</xsl:call-template>
+		</xsl:when>
+		<xsl:when test="contains($file,'/../')">							
+			<xsl:call-template name="reducepath">
+        		<xsl:with-param name="file">
+			        <xsl:call-template name="lastbefore">
+			                <xsl:with-param name="string" select="substring-before($file,'/../')"/>
+			        </xsl:call-template>
+			        <xsl:text>/</xsl:text>
+					<xsl:value-of select="substring-after($file,'/../')"/>
+				</xsl:with-param>
+			</xsl:call-template>
+		</xsl:when>
+		<xsl:otherwise><xsl:value-of select="$file"/></xsl:otherwise>
+	</xsl:choose>
+ </xsl:template>
+
+<xsl:template name="reducedotpath"><xsl:param name="file"/>
+	<xsl:choose>	
+		<xsl:when test="starts-with($file,'./')">
+			<xsl:call-template name="reducedotpath">
+        		<xsl:with-param name="file" select="substring($file,3)"/>
+			</xsl:call-template>
+		</xsl:when>
+		<xsl:when test="contains($file,'/./')">
+			<xsl:call-template name="reducepath">
+        		<xsl:with-param name="file">
+	                <xsl:value-of select="substring-before($file,'/./')"/>
+			        <xsl:text>/</xsl:text>
+					<xsl:value-of select="substring-after($file,'/./')"/>
+				</xsl:with-param>
+			</xsl:call-template>
+		</xsl:when>
+		<xsl:otherwise><xsl:value-of select="$file"/></xsl:otherwise>
+	</xsl:choose>
+ </xsl:template>
+
+
+</xsl:stylesheet>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sysdef/demo/data/sf/os/buildtools/bldsystemtools/buildsystemtools/joinsysdef.xsl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,45 @@
+<?xml version="1.0"?>
+<!-- 
+============================================================================ 
+Name        : joinsysdef.xsl 
+Part of     : Helium AntLib
+
+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:
+
+============================================================================
+-->
+ <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+ 	<xsl:output method="xml" indent="yes"/>
+<!-- create a stand-alone sysdef from a linked set of fragments -->
+
+<xsl:param name="path">/os/deviceplatformrelease/foundation_system/system_model/system_definition.xml</xsl:param>
+
+<xsl:template match="/*">
+	<xsl:apply-templates select="." mode="join"/>
+</xsl:template>
+
+
+<xsl:template match="/SystemDefinition[systemModel]">
+<xsl:apply-templates select="." mode="join">
+	<xsl:with-param name="filename" select="$path"/>
+</xsl:apply-templates>
+</xsl:template>
+
+
+
+
+<xsl:include href="joinsysdef-module.xsl"/>
+
+</xsl:stylesheet>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sysdef/demo/data/sf/os/buildtools/bldsystemtools/buildsystemtools/mergesysdef-module.xsl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,513 @@
+<!-- 
+============================================================================ 
+Name        : mergesysdef-module.xsl 
+Part of     : Helium AntLib
+
+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:
+
+============================================================================
+-->
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exslt="http://exslt.org/common"  exclude-result-prefixes="exslt">
+	
+<!--  this merge only two files according to the 3.0.0 rules. Old syntax not supported. Must be converetd before calling -->
+<xsl:variable name="defaultns">http://www.symbian.org/system-definition</xsl:variable>
+
+<xsl:template match="/SystemDefinition[starts-with(@schema,'2.') or starts-with(@schema,'1.')]" priority="2" mode="merge-models">
+	<xsl:message terminate="yes">Syntax <xsl:value-of select="@schema"/> not supported</xsl:message>
+</xsl:template>
+<xsl:template match="/SystemDefinition[not(systemModel)]" priority="2" mode="merge-models">
+	<xsl:message terminate="yes">Can only merge stand-alone system models</xsl:message>
+</xsl:template>
+
+<!-- stuff for dealing with namespaces -->
+
+
+<xsl:template match="node()|@*" mode="translate-namespaces"><xsl:copy-of select="."/></xsl:template>
+<!-- don't translate meta or unit tags, just copy verbatim -->
+<xsl:template match="meta|unit" mode="translate-namespaces" priority="2">
+<xsl:element name="{name()}">
+<xsl:copy-of select="@*|*|comment()"/>
+</xsl:element>
+</xsl:template>
+
+<xsl:template match="*" mode="translate-namespaces"><xsl:param name="nsdoc"/>
+<xsl:element name="{name()}">
+<xsl:apply-templates select="@*|node()" mode="translate-namespaces">
+	<xsl:with-param name="nsdoc" select="$nsdoc"/>
+</xsl:apply-templates>
+</xsl:element>
+</xsl:template>
+
+
+<xsl:template match="@id|@before" mode="translate-namespaces"><xsl:param name="nsdoc"/>
+	<xsl:attribute name="{name()}">
+		<xsl:variable name="id">
+			<xsl:choose>
+				<xsl:when test="contains(.,':')">
+					<xsl:value-of select="substring-after(.,':')"/>
+				</xsl:when>
+				<xsl:otherwise>
+					<xsl:value-of select="."/>
+				</xsl:otherwise>
+			</xsl:choose>
+		</xsl:variable>
+		<xsl:variable name="ns">
+			<xsl:choose>
+				<xsl:when test="contains(.,':')">
+					<xsl:value-of select="ancestor-or-self::*/namespace::*[name()=substring-before(current()/.,':')]"/>
+				</xsl:when>
+				<xsl:when test="/SystemDefinition/@id-namespace">
+					<xsl:value-of select="/SystemDefinition/@id-namespace"/>
+				</xsl:when>
+				<xsl:otherwise>
+					<xsl:value-of select="$defaultns"/>
+				</xsl:otherwise>
+			</xsl:choose>
+		</xsl:variable>
+		<xsl:choose>
+			<xsl:when test="not($nsdoc/@id-namespace) and $defaultns=$ns">
+				<xsl:value-of select="$id"/>
+			</xsl:when>
+			<xsl:when test="$nsdoc/@id-namespace=$ns">
+				<xsl:value-of select="$id"/>
+			</xsl:when>
+			<xsl:when test="$nsdoc/namespace::*[.=$ns]">
+				<xsl:value-of select="concat(name($nsdoc/namespace::*[.=$ns]),':',$id)"/>
+			</xsl:when>
+			<xsl:when test="/SystemDefinition/@id-namespace=$ns">
+				<xsl:variable name="myns">
+					<xsl:apply-templates mode="ns-prefix" select="$nsdoc">
+						<xsl:with-param name="ns" select="$ns"/>
+					</xsl:apply-templates>
+				</xsl:variable>			
+				<xsl:value-of select="concat($myns,':',$id)"/>
+			</xsl:when>
+			<xsl:otherwise> <!-- some namespace that needed to be defined --> 
+			<xsl:message>"<xsl:value-of select="$ns"/>" for <xsl:value-of select="$id"/></xsl:message>
+				<xsl:value-of select="."/>					
+			</xsl:otherwise>
+		</xsl:choose>		
+	</xsl:attribute>
+</xsl:template>
+
+<xsl:template match="/SystemDefinition" mode="ns-prefix">
+	<xsl:param name="ns"/> <!-- the namespace URI -->
+	<xsl:param name="pre"/> <!-- the preferred prefix to use if possbile -->
+	<xsl:param name="dontuse"/> <!-- space prefixed, separated and terminated list of namespace prefixes to not use -->
+	<xsl:param name="chars">ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz</xsl:param> <!-- single letter namespace prefixes to try -->
+	<xsl:variable name="name" select="substring(substring-after($ns,'http://www.'),1,1)"/>
+	<xsl:choose>
+		<xsl:when test="$pre!='' and $pre!='id-namespace' and not(//namespace::*[name()=$pre]) and not(contains($dontuse,concat(' ',$pre,' ')))">
+			<xsl:value-of select="$pre"/>
+		</xsl:when>
+		<xsl:when test="$ns='' and $chars=''">
+			<xsl:message terminate="yes">Cannot create namespace prefix for downstream default namespace</xsl:message>
+		</xsl:when>
+		<xsl:when test="$name!='' and not(contains($dontuse,concat(' ',$name,' ')))"><xsl:value-of select="$name"/></xsl:when>
+		<xsl:when test="namespace::*[name()=substring($chars,1,1)] or contains($dontuse,concat(' ',substring($chars,1,1),' '))">
+			<xsl:apply-templates mode="ns-prefix">
+				<xsl:with-param name="chars" select="substring($chars,2)"/>
+			</xsl:apply-templates>
+		</xsl:when>
+		<xsl:otherwise>
+			<xsl:value-of select="substring($chars,1,1)"/>
+		</xsl:otherwise>
+	</xsl:choose>
+</xsl:template>
+
+
+<!--  need to make sure this handles <meta> correctly -->
+
+<xsl:template match="/SystemDefinition" mode="merge-models">
+	<xsl:param name="other"/>	<!-- the downstream SystemDefinition this is merged with -->
+	<xsl:param name="up" select="systemModel"/>	<!-- the element containing the origin @name used for any component from "this" model. -->
+	<xsl:param name="down" select="$other/systemModel"/> <!-- the element containing origin @name used for any component from $other model. -->
+	
+	<!-- do some testing -->
+ 	<xsl:if test="$other[starts-with(@schema,'2.') or starts-with(@schema,'1.')]">
+		<xsl:message terminate="yes">Syntax <xsl:value-of select="$other/@schema"/> not supported</xsl:message>
+	</xsl:if>
+	<xsl:if test="not($other/systemModel)">
+		<xsl:message terminate="yes">Can only merge stand-alone system models</xsl:message>
+	</xsl:if>
+	 
+	<xsl:copy>
+		<xsl:copy-of  select="@*"/> <!--  use attributes from origin model -->
+		<xsl:variable name="namespaces">
+			<xsl:copy> <!-- needs <copy> so the processor doesn't lose the namespaces -->
+				<!--copy namespaces as needed -->
+				
+				<xsl:copy-of select="namespace::*[name()!='xml']"/> <!-- all upstream namespaces -->
+
+				<xsl:variable name="cur" select="."/>
+				<xsl:for-each select="$other/namespace::*"> <!-- all namespaces in downstream not already in upstream -->
+					<xsl:if test="not((. = $cur/@id-namespace) or (not($cur/@id-namespace) and .= $defaultns) or  $cur/namespace::*[.=current()])">
+							<!-- namespace in downstream not in upstream doc -->
+							<xsl:variable name="newprefix">
+								 <!-- test to see if the ns prefix already exists -->
+								<xsl:apply-templates select="$cur" mode="ns-prefix">
+									<xsl:with-param name="ns" select="."/>
+									<xsl:with-param name="pre" select="name()"/>
+								</xsl:apply-templates>
+							</xsl:variable>
+							<xsl:copy/>
+					</xsl:if>   
+				</xsl:for-each>
+				
+					<xsl:if test="not(($other/@id-namespace = @id-namespace) or (not($other/@id-namespace) and not(@id-namespace)) or (not(@id-namespace) and $other/@id-namespace = $defaultns) or namespace::*[.=$other/@id-namespace])">  
+						<!-- default namespace in downstream not in upstream doc -->
+						<!-- need to make created ns a bit more intelligent -->
+						<xsl:attribute name="bar" namespace="{$other/@id-namespace}">
+							<xsl:value-of select="$other/@id-namespace"/>
+						</xsl:attribute>
+				</xsl:if>
+			</xsl:copy>
+		</xsl:variable>
+
+		
+		<!-- copy the namespaces to currently open element (the root one) -->
+		<xsl:copy-of select="namespace::*"/>
+		<xsl:for-each select="$other/namespace::*[.!=current()/namespace::*]"><xsl:copy/></xsl:for-each>
+		<xsl:for-each select="exslt:node-set($namespaces)/*/namespace::*"><xsl:copy/></xsl:for-each>
+	<!-- translate all IDs in downstream doc to use namespaces from upstream doc  
+		This is so much easier than having to propigate this info around while creating the doc-->
+	<xsl:variable name="otherdoc">
+		<xsl:apply-templates mode="translate-namespaces" select="$other">
+			<xsl:with-param name="nsdoc" select="exslt:node-set($namespaces)/* | ."/>
+		</xsl:apply-templates>
+	</xsl:variable>
+		<xsl:apply-templates mode="merge-models">
+			<xsl:with-param name="other" select="exslt:node-set($otherdoc)/*"/>
+			<xsl:with-param name="up" select="$up"/>
+			<xsl:with-param name="down" select="$down"/>
+		</xsl:apply-templates>
+	
+	</xsl:copy>
+</xsl:template>
+
+<xsl:template match="systemModel" mode="merge-models">
+	<xsl:param name="other"/>	<!-- the parent of the downstream systemModel this is merged with -->
+	<xsl:param name="up"/>
+	<xsl:param name="down"/>
+	<xsl:copy><xsl:copy-of  select="@*"/>
+		<!--  copy metas and comments in between meta. Do not try to merge metadata between models -->
+			<xsl:copy-of select="meta | $other/systemModel/meta | comment()[following-sibling::meta]"/>	
+		<xsl:apply-templates mode="merge-models">
+			<xsl:with-param name="other" select="$other/systemModel"/>
+			<xsl:with-param name="up" select="$up"/>
+			<xsl:with-param name="down" select="$down"/>
+		</xsl:apply-templates>
+	</xsl:copy>
+</xsl:template>
+
+<xsl:template match="@*|*|comment()" mode="merge-models"><xsl:copy-of select="."/></xsl:template>
+
+
+<xsl:template match="meta|comment()[following-sibling::meta]" mode="merge-models"/>
+	<!-- copy elesewhere, not here so that metas always appear first-->
+
+
+
+<!-- merge levels attribute via std rules -->
+<xsl:template match="layer/@levels|package/@levels" mode="merge-models">
+	<xsl:param name="other"/><!-- the element contains the other @levels -->
+	<xsl:choose>
+		<!--  if they are the same, or not specified in the other,  just copy -->
+		<xsl:when test=".=$other/@levels or not($other/@levels)"><xsl:copy-of select="."/></xsl:when>
+		<xsl:when test="contains(concat(' ',normalize-space(.),' '),concat(' ',normalize-space($other/@levels),' '))">
+			<!--upstream completely contains downstream, just copy --> 
+			<xsl:copy-of select="."/>
+		</xsl:when>
+		<xsl:when test="contains(concat(' ',normalize-space($other/@levels),' '),concat(' ',normalize-space(.),' '))">
+			<!--  If this is contained is other, then use other-->
+			<xsl:copy-of select="$other/@levels"/>
+		</xsl:when>
+		<xsl:when test="contains($other/@levels,'+')">
+			<!-- if other uses + syntax, then pre/append -->
+			<xsl:variable name="lev">
+				<xsl:value-of select="substring-before($other/@levels,'+')"/>
+				<xsl:value-of select="concat(' ',.,' ')"/>
+				<xsl:value-of select="substring-after($other/@levels,'+')"/>
+			</xsl:variable>
+			<xsl:attribute name="levels"><xsl:value-of select="normalize-space($lev)"/></xsl:attribute>
+		</xsl:when>
+		<xsl:otherwise> <!--  if they differ, use the origin's levels -->
+			<xsl:message>Note: levels differ "<xsl:value-of select="."/>" vs "<xsl:value-of select="$other/@levels"/>"</xsl:message>
+			<xsl:copy-of select="."/>
+		</xsl:otherwise>
+	</xsl:choose>
+</xsl:template>
+
+<xsl:template name="copy-sorted-content">
+	<xsl:param name="base"/>
+	<xsl:param name="to-sort"/>
+	<xsl:param name="start"/>
+	<xsl:param name="end"/>
+	<xsl:param name="down"/>
+	<xsl:param name="remainder" select="/.."/>
+
+	<xsl:choose>
+		<xsl:when test="not($to-sort)"/>  <!-- nothing left to copy. stop -->
+		<xsl:when test="not($base)"/>  <!-- reached end. stop -->
+		<xsl:when test="$base[1]/@id=$end/following-sibling::*[1]/@id"/> <!-- passed $end. Stop -->
+		<xsl:when test="$base[1]/@id = $to-sort[1]/@id">  <!-- both lists start with same item -->
+			<xsl:if test="$base[1]/@id!=$end/@id"> <!-- not at end, so keep going -->
+				<xsl:call-template name="copy-sorted-content">
+					<xsl:with-param name="base" select="$base[position() != 1]"/>
+					<xsl:with-param name="to-sort" select="$to-sort[position() != 1]"/>
+					<xsl:with-param name="remainder" select="$remainder"/>
+					<xsl:with-param name="start" select="$start"/>
+					<xsl:with-param name="end" select="$end"/>
+					<xsl:with-param name="down" select="$down"/>
+				</xsl:call-template>		
+			</xsl:if>
+		</xsl:when>	
+		<xsl:when test="$remainder[@id = $base[1]/@id]"> <!-- left over item is in $base -->
+			<xsl:call-template name="copy-sorted-content">
+				<xsl:with-param name="base" select="$base[position() != 1]"/>
+				<xsl:with-param name="to-sort" select="$to-sort"/>
+				<xsl:with-param name="remainder" select="$remainder[@id != $base[1]/@id]"/>
+				<xsl:with-param name="start" select="$start"/>
+				<xsl:with-param name="end" select="$end"/>
+				<xsl:with-param name="down" select="$down"/>
+			</xsl:call-template>		
+		</xsl:when>
+		<xsl:when test="not($base[@id = $to-sort[1]/@id])"> <!-- in to-sort, but not base -->		
+			<xsl:if test="$base[1]/@id=$end/@id  and not($base[@id=$to-sort[1]/@before])">
+			 	<!-- if at end, then this needs to be copied
+					don't copy if the before ID is found in $base	-->
+				<xsl:apply-templates mode="merge-copy-of" select="$to-sort[1]">
+					<xsl:with-param name="origin" select="$down"/>
+					<xsl:with-param name="root" select="$end/ancestor::systemModel"/>
+				</xsl:apply-templates>
+			</xsl:if>			
+		<xsl:call-template name="copy-sorted-content">
+			<xsl:with-param name="base" select="$base"/>
+			<xsl:with-param name="to-sort" select="$to-sort[position() != 1]"/>
+			<xsl:with-param name="remainder" select="$remainder"/>
+			<xsl:with-param name="start" select="$start"/>
+			<xsl:with-param name="end" select="$end"/>
+			<xsl:with-param name="down" select="$down"/>
+		</xsl:call-template>		
+		</xsl:when>	
+		<xsl:when test="not($to-sort[@id = $base[1]/@id])"> <!-- in base, but not to-sort -->		
+		<xsl:call-template name="copy-sorted-content">
+			<xsl:with-param name="base" select="$base[position() != 1]"/>
+			<xsl:with-param name="to-sort" select="$to-sort"/>
+			<xsl:with-param name="remainder" select="$remainder"/>
+			<xsl:with-param name="start" select="$start"/>
+			<xsl:with-param name="end" select="$end"/>
+			<xsl:with-param name="down" select="$down"/>
+		</xsl:call-template>		
+		</xsl:when>	
+		<xsl:when test="$base[@id = $to-sort[1]/@id]"> <!-- is in base, but not 1st one-->
+			<xsl:call-template name="copy-sorted-content">
+				<xsl:with-param name="base" select="$base"/>
+				<xsl:with-param name="to-sort" select="$to-sort[position() != 1] "/>
+				<xsl:with-param name="remainder" select="$remainder | $to-sort[1]"/>
+				<xsl:with-param name="start" select="$start"/>
+				<xsl:with-param name="end" select="$end"/>
+				<xsl:with-param name="down" select="$down"/>
+			</xsl:call-template>
+		</xsl:when>	
+	</xsl:choose>
+</xsl:template>
+
+<xsl:template match="layer | package | collection | component" mode="merge-models">
+	<xsl:param name="other"/>	<!-- the downstream item of the parent's rank that contains a potential items this is merged with -->
+	<xsl:param name="up"/>
+	<xsl:param name="down"/>
+	<xsl:variable name="this" select="."/>	<!-- current item -->
+	
+	<!-- match = this item in the downstream model -->	
+	<xsl:variable name="match" select="$other/*[@id=current()/@id]"/>
+	
+	<!-- prev = the previous item before the current one (no metas, only named items)-->
+	<xsl:variable name="prev" select="preceding-sibling::*[@id][1]"/> 
+
+	<!-- copy all items between this and prev  that are solely in the downstream model -->	 		
+
+	<xsl:choose>
+		<xsl:when test="$match and (not($prev) or $other/*[@id= $prev/@id] )">
+			<xsl:call-template name="copy-sorted-content">
+				<xsl:with-param name="base" select="../*[@id]"/>
+				<xsl:with-param name="to-sort" select="$other/*[@id]"/>
+				<xsl:with-param name="start" select="$prev"/>
+				<xsl:with-param name="end" select="."/>
+				<xsl:with-param name="down" select="$down"/>
+			</xsl:call-template>
+		</xsl:when>
+	<xsl:when test="not($match/preceding-sibling::*[@id=$this/../*/@id]) and $other/*[@id= current()/@id]/preceding-sibling::*[@id and not(@before)]">
+		<!-- if this is the first item in other that's also in this, then put all new items from other here -->
+		<xsl:apply-templates mode="merge-copy-of" select="$match/preceding-sibling::*[@id and not(@before)]">
+			<xsl:with-param name="origin" select="$down"/>
+			<xsl:with-param name="root" select="$this/ancestor::systemModel"/>	
+		</xsl:apply-templates>
+	</xsl:when>
+	</xsl:choose>
+
+ 	<!-- just copy anything identified as being before this, assume they're all ok -->
+	<xsl:apply-templates mode="merge-copy-of" select="$other/*[@before=current()/@id]">
+		<xsl:with-param name="remove-before" select="1"/>
+		<xsl:with-param name="origin" select="$down"/>
+		<xsl:with-param name="root" select="$this/ancestor::systemModel"/>	
+	</xsl:apply-templates>
+
+	
+	<xsl:copy>
+		<xsl:apply-templates select="@*" mode="merge-models"> <!-- copy upstream attributes -->
+			<xsl:with-param name="other" select="$match"/>
+		</xsl:apply-templates>
+		
+		<xsl:if test="self::component and not(@origin-model) and $up/@name">
+			<!-- insert origin-model and optional root for components only -->
+			<xsl:attribute name="origin-model">
+				<xsl:value-of select="$up/@name"/>
+			</xsl:attribute>
+			<xsl:if test="not(@root)">
+				<xsl:copy-of select="$up/@root"/>
+			</xsl:if>
+		</xsl:if>
+		
+		<xsl:for-each select="$match/@*">  <!-- copy downstream attributes, only if not set on upstream -->
+			<xsl:if test="not($this/@*[name()=name(current())])"><xsl:copy-of select="."/></xsl:if>
+		</xsl:for-each>
+		
+		<xsl:choose>
+			<xsl:when test="self::component">
+				<!-- copy all units, metas and comments from this
+					copy all metas in the merged component
+					copy any new comments in the merged component (not duplicates)
+					if there are no units in the this, copy all units in the merged component
+					if there are units in this, copy only the versioned units in the merged component (only those versions not already specified) -->
+				<xsl:copy-of select="*|comment() | $match/meta |$match/unit[not($this/unit)] | $match/unit[$this/unit and @version[.!=$this/unit/@version]] | $match/comment()[.!=$this/comment()]"/>				
+			</xsl:when>
+			<xsl:otherwise>
+
+				<!--  copy metas and comments in between meta. Do not try to merge metadata between models -->
+				<xsl:copy-of select="meta | $match/meta | comment()[following-sibling::meta]"/>
+				
+				<xsl:apply-templates mode="merge-models">
+					<xsl:with-param name="other" select="$match"/>
+					<xsl:with-param name="up" select="$up"/>
+					<xsl:with-param name="down" select="$down"/>
+				</xsl:apply-templates>
+				<!--  don't copy if explicitly or implicitly placed already-->
+				<xsl:for-each select="$match/*[not(@before) and not(following-sibling::*[@id=$this/*/@id])]">
+					<xsl:if test="not($this/*[@id=current()/@id])">
+						<xsl:apply-templates mode="merge-copy-of" select=".">
+							<xsl:with-param name="origin" select="$down"/>
+							<xsl:with-param name="root" select="$this/ancestor::systemModel"/>			
+						</xsl:apply-templates>
+					</xsl:if>
+				</xsl:for-each>
+			</xsl:otherwise>
+		</xsl:choose>
+	</xsl:copy>
+	
+	<xsl:if test="self::layer and not(following-sibling::layer)">
+		<!-- for the last layer, tack on any remaining layers -->
+		<xsl:apply-templates mode="merge-copy-of" select="$other/layer[not(@before) and not(following-sibling::*[@id=$this/../layer/@id]) and not(@id=$this/@id)]">
+			<xsl:with-param name="origin" select="$down"/>
+			<xsl:with-param name="root" select="$this/ancestor::systemModel"/>			
+		</xsl:apply-templates>		
+	</xsl:if>
+</xsl:template>
+
+
+
+<xsl:template match="*" mode="merge-copy-of">
+	<xsl:param name="remove-before" select="0"/> <!-- set to true if any before attribute is to be removed -->
+	<xsl:param name="origin"/>	<!--the element containing the @name to use the origin-model attribute  -->
+	<xsl:param name="root"/> 	<!--the systemModel element in the upstream doc  -->
+
+	<xsl:choose>
+		<!-- this might slow things down, consider making optional -->
+		<xsl:when test="not(self::layer) and count($root/descendant::*[name()=name(current()/..) and @id!=current()/../@id]/*[@id=current()/@id])">
+			<xsl:message>Warning: <xsl:value-of select="name()"/> "<xsl:value-of select="@id"/>" moved in downstream model. Ignoring moved <xsl:value-of select="name()"/>
+				<xsl:text>&#xa;</xsl:text>
+			</xsl:message>
+		</xsl:when>
+		<xsl:otherwise>
+			<!-- save all content in a variable to test to see if it's got any problems (ie been removed due to errors)-->
+			<xsl:variable name="content">
+				<xsl:apply-templates select="*|comment()" mode="merge-copy-of">
+					<xsl:with-param name="origin" select="$origin"/>
+					<xsl:with-param name="root" select="$root"/>
+				</xsl:apply-templates>
+			</xsl:variable>
+			<xsl:choose>
+				<!-- if all elements in this have been deleted, throw out this element -->
+				<xsl:when test="not(exslt:node-set($content)/*) and *">
+					<xsl:message>Warning: All content in downstream <xsl:value-of select="name()"/> "<xsl:value-of select="@id"/>" is invalid. Ignoring <xsl:value-of select="name()"/>
+						<xsl:text>&#xa;</xsl:text>
+					</xsl:message>
+				</xsl:when>
+				<xsl:otherwise>
+					<xsl:copy>
+						<xsl:choose>
+							<xsl:when test="$remove-before">
+								<xsl:copy-of select="@*[name()!='before']"/>
+							</xsl:when>
+							<xsl:otherwise><xsl:copy-of select="@*"/></xsl:otherwise>
+						</xsl:choose>
+						<xsl:copy-of select="exslt:node-set($content)"/>
+					</xsl:copy>
+				</xsl:otherwise>
+			</xsl:choose>					
+		</xsl:otherwise>
+	</xsl:choose>
+</xsl:template>
+
+
+<xsl:template match="comment()|@*" mode="merge-copy-of">
+	<xsl:copy-of select="."/>
+</xsl:template>
+
+<xsl:template match="component" mode="merge-copy-of">
+	<xsl:param name="remove-before" select="0"/> <!-- set to true if any before attribute is to be removed -->
+	<xsl:param name="origin"/>	<!--the element containing the @name to use the origin-model attribute  -->
+	<xsl:param name="root"/> 	<!--the systemModel element in the upstream doc  -->
+	
+	<xsl:choose>
+		<!-- this might slow things down, consider making optional -->
+		<xsl:when test="$root/descendant::collection[@id!=current()/../@id]/component[@id=current()/@id]">
+			<xsl:message>Warning: <xsl:value-of select="name()"/> "<xsl:value-of select="@id"/>" moved in downstream model. Ignoring moved <xsl:value-of select="name()"/>
+				<xsl:text>&#xa;</xsl:text>
+			</xsl:message>
+		</xsl:when>
+		<xsl:otherwise>
+			<xsl:copy>
+				<xsl:choose>
+					<xsl:when test="$remove-before">
+						<xsl:copy-of select="@*[name()!='before']"/>
+					</xsl:when>
+					<xsl:otherwise><xsl:copy-of select="@*"/></xsl:otherwise>
+				</xsl:choose>
+				<xsl:if test="not(@origin-model) and $origin/@name">
+					<xsl:attribute name="origin-model">
+						<xsl:value-of select="$origin/@name"/>
+					</xsl:attribute>
+					<xsl:if test="not(@root)">
+						<xsl:copy-of select="$origin/@root"/>
+					</xsl:if>
+				</xsl:if>
+				<xsl:copy-of select="*|comment()"/>
+			</xsl:copy>
+		</xsl:otherwise>
+	</xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sysdef/demo/data/sf/os/buildtools/bldsystemtools/buildsystemtools/mergesysdef.xsl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,107 @@
+<!-- 
+============================================================================ 
+Name        : mergesysdef.xsl 
+Part of     : Helium AntLib
+
+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:
+
+============================================================================
+-->
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exslt="http://exslt.org/common">
+	<xsl:output method="xml" indent="yes"/>
+	<xsl:param name="Downstream">mcl/System_Definition_Template.xml</xsl:param>
+	 <xsl:key name="origin" match="component" use="@origin-model"/>
+
+<!-- only supports 3.x syntax and only operates on stand-alone models -->
+
+<xsl:variable name="downstream" select="document($Downstream,.)/SystemDefinition"/>
+<xsl:param name="upname">
+	<xsl:choose>
+		<xsl:when test="$downstream[starts-with(@schema,'2.') or starts-with(@schema,'1.')  or not(systemModel)]">
+			<xsl:message terminate="yes">Syntax <xsl:value-of select="@schema"/> not supported</xsl:message>
+		</xsl:when>
+		<xsl:when test="/SystemDefinition/systemModel/@name=$downstream/systemModel/@name">
+			<xsl:apply-templates mode="origin-term" select="/*">
+				<xsl:with-param name="root">Upstream</xsl:with-param>
+			</xsl:apply-templates>
+			</xsl:when>
+		<xsl:otherwise><xsl:value-of select="/SystemDefinition/systemModel/@name"/></xsl:otherwise>
+	</xsl:choose>
+</xsl:param>
+
+<xsl:param name="downname">
+	<xsl:choose>
+		<xsl:when test="/SystemDefinition/systemModel/@name=$downstream/systemModel/@name">
+			<xsl:apply-templates mode="origin-term" select="$downstream">	
+				<xsl:with-param name="root">Downstream</xsl:with-param>
+			</xsl:apply-templates>
+			</xsl:when>
+		<xsl:otherwise><xsl:value-of select="$downstream/systemModel/@name"/></xsl:otherwise>
+	</xsl:choose>
+</xsl:param>
+
+<xsl:template mode="origin-term" match="*">
+	<xsl:param name="root"/>
+	<xsl:param name="index"/>
+	<xsl:choose>
+		<xsl:when test="not(key('origin',concat($root,$index)))">
+			<xsl:value-of select="concat($root,$index)"/>
+		</xsl:when>
+		<xsl:when test="$index=''">
+			<xsl:apply-templates mode="origin-term" select=".">	
+				<xsl:with-param name="root" select="$root"/>
+				<xsl:with-param name="index" select="1"/>
+			</xsl:apply-templates>
+		</xsl:when>
+		<xsl:otherwise>
+			<xsl:apply-templates mode="origin-term" select=".">	
+				<xsl:with-param name="root" select="$root"/>
+				<xsl:with-param name="index" select="$index + 1"/>
+			</xsl:apply-templates>		
+		</xsl:otherwise>
+	</xsl:choose>
+</xsl:template>
+
+
+<!--  this merge only two files according to the 3.0.0 rules. Old syntax not supported. Must be converetd before calling -->
+
+
+
+<xsl:template match="/*">
+	<xsl:variable name="upmodel">
+		<sysdef name="{$upname}"/>
+	</xsl:variable>
+	<xsl:variable name="downmodel">
+		<sysdef name="{$downname}"/>
+	</xsl:variable>
+	
+	<xsl:choose>
+		<xsl:when test="function-available('exslt:node-set')">
+			<xsl:apply-templates mode="merge-models" select=".">
+				<xsl:with-param name="other" select="$downstream"/>
+				<xsl:with-param name="up" select="exslt:node-set($upmodel)/sysdef"/>
+				<xsl:with-param name="down" select="exslt:node-set($downmodel)/sysdef"/>
+			</xsl:apply-templates>
+		</xsl:when>
+		<xsl:otherwise> <!-- no node set funcion, so don't bother setting the names -->
+			<xsl:apply-templates mode="merge-models" select=".">
+				<xsl:with-param name="other" select="$downstream"/>
+			</xsl:apply-templates> 		
+		</xsl:otherwise>
+	</xsl:choose>
+</xsl:template>
+
+<xsl:include href="mergesysdef-module.xsl"/>
+</xsl:stylesheet>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sysdef/demo/data/sf/os/buildtools/bldsystemtools/buildsystemtools/sysdefdowngrade.xsl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,397 @@
+<?xml version="1.0"?>
+<!-- 
+============================================================================ 
+Name        : sysdefdowngrade.xsl 
+Part of     : Helium AntLib
+
+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:
+
+============================================================================
+-->
+ <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+	<xsl:output method="xml" indent="yes"/>
+	
+	<xsl:param name="Path">os/deviceplatformrelease/foundation_system/system_model</xsl:param>
+	<!-- $Path is the location of the root system definition XML file. Must not end in /
+		This is used to compute the absolute paths the 2.0 syntax needs-->
+	<xsl:param name="Root"/> <!-- space separated list of root variables in the form "VAR1=value1 VAR=value2" --> 
+	<xsl:variable name="root" select="concat(' ',$Root,' ')"/> <!-- sort of hack to allow absolute paths in downgraded output -->
+	<xsl:variable name="srcroot" select="substring-before(substring-after($root,' SRCROOT='),' ')"/> <!-- the default path prefix -->
+
+<xsl:template match="/*">
+	<xsl:message terminate="yes">Cannot process this document</xsl:message>
+</xsl:template>
+
+<!-- can only handle 3.0.0 to 2.0.1 transforms
+	Assumes only packages are using href
+ -->
+<xsl:template match="/SystemDefinition[@schema='3.0.0']"> 
+	<!-- process root system definition or package definition-->
+	<xsl:call-template name="DTD"/> <!-- insert 2.0.01 DTD -->
+  <SystemDefinition name="{*/@name}" schema="2.0.1">
+  	<xsl:apply-templates select="*|comment()"/>
+  </SystemDefinition>
+</xsl:template>
+
+<xsl:template match="/SystemDefinition[@schema='3.0.0' and systemModel]"> 
+	<xsl:call-template name="DTD"/> <!-- insert 2.0.01 DTD -->
+  <SystemDefinition name="{systemModel/@name}" schema="2.0.1">
+  	<xsl:apply-templates select="*|comment()"/>
+  </SystemDefinition>
+</xsl:template>
+
+<xsl:template match="/SystemDefinition/package[@href]" priority="2">
+	<xsl:message terminate="yes">Package definition cannot link another package</xsl:message>
+</xsl:template>
+
+<xsl:template match="/SystemDefinition/package" priority="1">
+	<!-- process package definition file--> 
+  <systemModel>
+  	<layer name="anonymous"> <!-- fake layer -->
+		<block>
+			<xsl:apply-templates mode="copy" select="@id|@name|@span|@level|@levels"/><!--  valid attribuites for 2.0 -->
+		  	<xsl:apply-templates select="*|comment()">
+		  		<xsl:with-param name="path" select="concat($Path,'/')"/> <!-- need to keep tack of where the current document is -->
+		  	</xsl:apply-templates>			
+		</block>  
+   	</layer>
+  </systemModel>
+</xsl:template>
+
+
+
+<xsl:template match="/"><xsl:apply-templates select="*"/></xsl:template>
+<xsl:template match="@*|comment()"><xsl:copy-of select="."/></xsl:template> 
+	<!-- comments are copied verbatim. Attribtues are copied by default -->
+
+<xsl:template match="systemModel">
+	<systemModel>
+  	<xsl:apply-templates select="*|comment()"> <!-- no attributes -->
+  		<xsl:with-param name="path" select="$Path"/> <!-- need to keep tack of where the current document is -->
+  	</xsl:apply-templates>
+	</systemModel>
+</xsl:template>
+
+<xsl:template mode="copy" match="@*">
+	<xsl:copy-of select="."/>
+</xsl:template>
+
+<xsl:template mode="copy" match="@id"> <!-- id in 3.0 is name in 2.0 -->
+	<xsl:attribute name="name"><xsl:value-of select="."/></xsl:attribute>
+</xsl:template>
+
+<xsl:template mode="copy" match="@name">  <!-- name in 3.0 is long-name in 2.0.1 -->
+	<xsl:if test=".!=../@id"> <!-- don't bother if it will be the same as name -->
+		<xsl:attribute name="long-name"><xsl:value-of select="."/></xsl:attribute>
+	</xsl:if>
+</xsl:template>
+	
+<xsl:template match="layer"><xsl:param name="path"/>
+	<layer>
+		<xsl:apply-templates mode="copy" select="@id|@name|@span|@levels"/> <!--  valid attribuites for 2.0 -->
+		<xsl:apply-templates select="*|comment()"> 
+			<xsl:with-param name="path" select="$path"/> 
+		</xsl:apply-templates>
+	</layer>
+</xsl:template>
+
+<xsl:template match="layer/package"><!-- translates to block -->
+	<xsl:param name="path"/>
+	<block>
+		<xsl:apply-templates mode="copy" select="@id|@name|@span|@level|@levels"/><!--  valid attribuites for 2.0 -->
+		<xsl:choose>
+			<xsl:when test="@href">
+				<xsl:variable name="this" select="."/>
+				<xsl:for-each select="document(@href,.)/SystemDefinition/*">
+					<xsl:variable name="my-id"><xsl:apply-templates mode="normalize-id" select="@id"/></xsl:variable>
+					<xsl:variable name="other-id"><xsl:apply-templates mode="normalize-id" select="$this/@id"/></xsl:variable>
+					<xsl:if test="$my-id != $other-id">
+						<xsl:message terminate="yes">Error: IDs do not match: <xsl:value-of select="$my-id"/> vs <xsl:value-of select="$other-id"/></xsl:message>
+					</xsl:if>
+					<xsl:if test="@name and @name!=@id and not($this/@name and $this/@name=$this/@id)">
+						<!-- set long-name only if name is different from the id and not set in child doc -->
+						<xsl:attribute name="long-name"><xsl:value-of select="@name"/></xsl:attribute>
+					</xsl:if>						
+					<xsl:for-each select="@span|@levels|@level">
+						<!-- copy only if not set in child doc -->
+						<xsl:if test="not(this/@*[name()=name(current())])">
+							<xsl:copy-of select="."/>
+						</xsl:if>
+					</xsl:for-each>
+					<xsl:apply-templates select="*|comment()">
+	  					<xsl:with-param name="path">
+	  						<xsl:call-template name="normpath">
+	  							<xsl:with-param name="path" select="concat($path,'/',$this/@href)"/>
+	  						</xsl:call-template>
+	  					</xsl:with-param> 
+	  				</xsl:apply-templates>
+				</xsl:for-each>
+			</xsl:when>
+			<xsl:otherwise>
+				<xsl:apply-templates select="*|comment()">
+  					<xsl:with-param name="path" select="$path"/> 
+  				</xsl:apply-templates>
+			</xsl:otherwise>
+		</xsl:choose>
+	</block>
+</xsl:template>
+
+<xsl:template match="package/package">	<!-- translates to subblock --><xsl:param name="path"/>
+	<subblock>
+		<xsl:apply-templates mode="copy" select="@id|@name"/>
+		<xsl:apply-templates select="*|comment()">
+			<xsl:with-param name="path" select="$path"/> 
+		</xsl:apply-templates>
+	</subblock>
+</xsl:template>
+
+<xsl:template match="package/package/pacakge"> <!-- cannot nest this deep --><xsl:param name="path"/>
+	<xsl:message>Excessive nesting of packages: Ignoring <xsl:value-of select="@id"/></xsl:message>
+	<xsl:apply-templates select="*|comment()">
+		<xsl:with-param name="path" select="$path"/> 
+	</xsl:apply-templates>
+</xsl:template>
+
+
+<xsl:template match="collection"><xsl:param name="path"/>
+	<collection>
+		<xsl:apply-templates mode="copy" select="@id|@name|@level"/>
+		<xsl:apply-templates select="*|comment()">
+			<xsl:with-param name="path" select="$path"/> 
+		</xsl:apply-templates>
+	</collection>
+</xsl:template>
+
+
+<xsl:template match="component"><xsl:param name="path"/>
+	<component>
+		<xsl:apply-templates mode="copy" select="@id|@name|@deprecated|@introduced|@filter|@purpose"/>
+		<xsl:if test="contains(concat(' ',@class,' '),' plugin ')">
+			<xsl:attribute name="plugin">Y</xsl:attribute>
+		</xsl:if>
+		<xsl:call-template name="class">
+			<xsl:with-param name="remove">plugin</xsl:with-param>
+			<xsl:with-param name="add">
+				<xsl:if test="not(*) and comment()">placeholder</xsl:if>
+				<xsl:if test="@target='desktop'"> PC</xsl:if>
+			</xsl:with-param>
+		</xsl:call-template>
+	  	<xsl:apply-templates select="*|comment()">
+			<xsl:with-param name="path" select="$path"/> 
+		</xsl:apply-templates>
+	</component>
+</xsl:template>
+
+<xsl:template match="unit[@base and not(@mrp or @bldFile)]"/>
+
+<xsl:template match="unit"><xsl:param name="path"/>
+	<unit>
+		<xsl:apply-templates select="@mrp|@bldFile|@late">
+			<xsl:with-param name="path" select="$path"/> 
+		</xsl:apply-templates>
+		<xsl:copy-of select="@filter|@root[not(contains($root,concat(' ',.,'=')))]|@version|@prebuilt|@priority"/>
+	</unit>
+</xsl:template>
+
+<xsl:template match="unit/@late"> <!-- 2.0 uses Y/N, 3.0 uses yes/no -->
+	<xsl:attribute name="{name()}">
+		<xsl:choose>
+			<xsl:when test=".='yes'">Y</xsl:when>
+			<xsl:when test=".='no'">N</xsl:when>
+		</xsl:choose>
+	</xsl:attribute>
+</xsl:template>
+
+<xsl:template match="@mrp|@bldFile"><xsl:param name="path"/>
+	<xsl:attribute name="{name()}">
+		<xsl:choose>
+			<xsl:when test="../@root">
+				<xsl:variable name="pre" select="substring-before(substring-after($root,concat(' ',../@root,'=')),' ')"/>
+				<xsl:if test="$pre!=''"><xsl:value-of select="concat($pre,'/')"/></xsl:if>
+			</xsl:when>
+			<xsl:when test="$srcroot!=''">
+				<xsl:value-of select="concat($srcroot,'/')"/>
+			</xsl:when>
+		</xsl:choose>
+		<xsl:choose>
+		<xsl:when test="starts-with(.,'/')"> <!-- keep absolute paths verbatim (barring the leading / ) -->
+			<xsl:value-of select="substring-after(.,'/')"/>
+		</xsl:when>
+		<xsl:otherwise>	
+			<xsl:call-template name="normpath">
+  				<xsl:with-param name="path">
+  					<xsl:call-template name="before">
+						<xsl:with-param name="text" select="$path"/>
+					</xsl:call-template>
+					<xsl:value-of select="."/>
+  				</xsl:with-param>
+  			</xsl:call-template>
+		</xsl:otherwise>
+	</xsl:choose>
+	</xsl:attribute>
+</xsl:template>
+
+<xsl:template match="meta"/> <!-- strip all meta tags -->
+
+<xsl:template match="meta[info/@contract]"> <!-- except contract -->
+	<xsl:copy-of select="info/@contract"/>
+</xsl:template>
+
+<xsl:template match="@id" mode="normalize-id">
+	<xsl:choose>
+		<xsl:when test="contains(@id,':')"><xsl:value-of select="substring-after(@id,':')"/></xsl:when>
+		<xsl:otherwise><xsl:value-of select="@id"/></xsl:otherwise>
+	</xsl:choose>
+</xsl:template>
+
+<xsl:template name="class"><xsl:param name="remove"/><xsl:param name="add"/>
+<!--  returns the value of the class attribute with the space-separated list of names in $remove taken out and those in $add added on (does not check for duplicates) -->
+	<xsl:param name="class" select="normalize-space(@class)"/>
+	<xsl:variable name="r">
+		<xsl:text> </xsl:text>
+		<xsl:choose>
+			<xsl:when test="contains($remove,' ')"><xsl:value-of select="substring-before($remove,' ')"/></xsl:when>
+			<xsl:otherwise><xsl:value-of select="$remove"/></xsl:otherwise>
+		</xsl:choose>
+		<xsl:text> </xsl:text>
+	</xsl:variable>
+	<xsl:variable name="c">
+		<xsl:choose>
+			<xsl:when test="contains(concat(' ',$class,' '),$r)">
+				<xsl:value-of select="substring-before(concat(' ',$class,' '),$r)"/>
+				<xsl:text> </xsl:text>
+				<xsl:value-of select="substring-after(concat(' ',$class,' '),$r)"/>
+			</xsl:when>
+			<xsl:otherwise><xsl:value-of select="$class"/></xsl:otherwise>
+		</xsl:choose>
+		<xsl:if test="normalize-space($add)!=''"><xsl:value-of select="concat(' ',normalize-space($add))"/></xsl:if>
+	</xsl:variable>
+	<xsl:choose>
+		<xsl:when test="contains($remove,' ')">
+			<xsl:call-template name="class">
+				<xsl:with-param name="remove" select="substring-after($remove,' ')"/>
+				<xsl:with-param name="class" select="$c"/>
+			</xsl:call-template>
+		</xsl:when>
+		<xsl:when test="normalize-space($c)!=''">
+			<xsl:attribute name="class">
+				<xsl:value-of select="normalize-space($c)"/>
+			</xsl:attribute>
+		</xsl:when>
+	</xsl:choose>
+</xsl:template>
+
+<xsl:template name="normpath"><xsl:param name="path"/>
+<!-- normalize out any ".." in the path in $path  -->
+<xsl:choose>
+	<xsl:when test="contains($path,'/../')">
+	<xsl:call-template name="normpath">
+		<xsl:with-param name="path">
+		<xsl:call-template name="before">
+			<xsl:with-param name="text" select="substring-before($path,'/../')"/>
+		</xsl:call-template>
+		<xsl:value-of select="substring-after($path,'/../')"/>
+		</xsl:with-param>
+		</xsl:call-template>
+	</xsl:when>
+	<xsl:otherwise><xsl:value-of select="$path"/></xsl:otherwise>
+</xsl:choose>
+</xsl:template>
+
+<!-- return all text before the last / -->
+<xsl:template name="before"><xsl:param name="text"/>
+<xsl:if test="contains($text,'/')">
+	<xsl:value-of select="substring-before($text,'/')"/>/<xsl:call-template name="before"><xsl:with-param name="text" select="substring-after($text,'/')"/></xsl:call-template>
+	</xsl:if>
+</xsl:template>
+
+<xsl:template name="DTD">
+<xsl:text disable-output-escaping="yes"><![CDATA[<!DOCTYPE SystemDefinition [
+<!ELEMENT SystemDefinition ( systemModel )>
+<!ATTLIST SystemDefinition
+  name CDATA #REQUIRED
+  schema CDATA #REQUIRED
+>
+<!-- all paths are relative to the environment variable specified by the root attribute, or SOURCEROOT if not.  -->
+
+<!-- System Model Section of DTD -->
+<!ELEMENT systemModel (layer+)>
+
+<!ELEMENT layer (block* | collection*)*>
+<!-- Kernel Services, Base Services, OS Services, Etc -->
+<!ATTLIST layer
+  name CDATA #REQUIRED
+  long-name CDATA #IMPLIED
+  levels NMTOKENS #IMPLIED
+  span CDATA #IMPLIED
+>
+
+<!ELEMENT block (subblock* | collection*)*>
+ <!-- Generic OS services, Comms Services, etc -->
+<!ATTLIST block
+  levels NMTOKENS #IMPLIED
+  span CDATA #IMPLIED
+  level NMTOKEN #IMPLIED
+  name CDATA #REQUIRED
+  long-name CDATA #IMPLIED
+>
+
+<!ELEMENT subblock (collection)*>
+<!-- Cellular Baseband Services, Networking Services, etc -->
+<!ATTLIST subblock
+  name CDATA #REQUIRED
+  long-name CDATA #IMPLIED
+>
+
+<!ELEMENT collection (component)*>
+<!-- Screen Driver, Content Handling, etc -->
+<!ATTLIST collection
+  name CDATA #REQUIRED
+  long-name CDATA #IMPLIED
+  level NMTOKEN #IMPLIED
+>
+
+<!ELEMENT component (unit)*>
+<!-- contains units or is a  package or prebuilt -->
+<!ATTLIST component
+  name CDATA #REQUIRED
+  long-name CDATA #IMPLIED
+  deprecated CDATA #IMPLIED
+  introduced CDATA #IMPLIED
+  contract CDATA #IMPLIED
+  plugin (Y|N) "N"
+  filter CDATA #IMPLIED
+  class NMTOKENS #IMPLIED
+  supports CDATA #IMPLIED
+  purpose ( optional | mandatory | development ) "optional"
+>
+
+<!ELEMENT unit EMPTY >
+<!-- must be buildable (bld.inf) -->
+<!-- bldFile  may someday be removed in favour of mrp -->
+<!ATTLIST unit
+  mrp CDATA #IMPLIED
+  filter CDATA #IMPLIED
+  bldFile CDATA #IMPLIED
+  root CDATA #IMPLIED
+  version NMTOKEN #IMPLIED
+  prebuilt NMTOKEN #IMPLIED
+  late (Y|N) #IMPLIED
+  priority CDATA #IMPLIED
+>
+]>
+]]></xsl:text>
+</xsl:template>
+</xsl:stylesheet>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sysdef/ivy.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+============================================================================ 
+Name        : ivy.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:
+
+============================================================================  
+-->
+<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
+    <info
+        organisation="com.nokia.helium"
+        module="helium-sysdef"
+        status="integration">
+  </info>
+  <dependencies>
+    <dependency name="helium-core" rev="latest.integration" conf="default" />
+    <dependency org="org.apache.xml" name="xalan" rev="latest.integration" conf="default" />
+    <dependency org="org.apache.xml" name="serializer" rev="latest.integration" conf="default" />
+  </dependencies>
+</ivy-module>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sysdef/src/com/nokia/helium/sysdef/ant/antlib.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : antlib.xml 
+Part of     : Helium AntLib
+
+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:
+
+============================================================================
+-->
+<antlib>
+    <!-- Task definition -->
+    <taskdef name="joinSysdef" classname="com.nokia.helium.sysdef.ant.taskdefs.JoinTask"/>
+    <taskdef name="mergeSysdef" classname="com.nokia.helium.sysdef.ant.taskdefs.MergeTask"/>
+    <taskdef name="downgradeSysdef" classname="com.nokia.helium.sysdef.ant.taskdefs.DowngradeTask"/>
+    
+    <!-- Type definition -->
+</antlib>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sysdef/src/com/nokia/helium/sysdef/ant/helium.antlib.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : helium.antlib.xml 
+Part of     : Helium Antlib 
+
+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="libs-sysdef" xmlns:hlm="http://www.nokia.com/helium">
+    <description>
+        Ant task definition declarations.
+    </description>    
+    <taskdef resource="com/nokia/helium/sysdef/ant/antlib.xml" uri="http://www.nokia.com/helium"/>
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sysdef/src/com/nokia/helium/sysdef/ant/taskdefs/AbstractSydefTask.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,237 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+package com.nokia.helium.sysdef.ant.taskdefs;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.Map;
+
+import javax.xml.transform.ErrorListener;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.transform.stream.StreamSource;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.Task;
+
+/**
+ * This is the base class for manipulating Sysdef v3 files using XML Stylesheet. 
+ * The implementation/interface is not frozen yet. It is morelikely going to
+ * change in the future, depending of the underlaying implementation.
+ * 
+ */
+public abstract class AbstractSydefTask extends Task implements ErrorListener {
+
+    private File srcFile;
+    private File destFile;
+    private File epocroot;
+    private boolean failOnError = true;
+    
+    /**
+     * Get the source file.
+     * @return
+     */
+    public File getSrcFile() {
+        return srcFile;
+    }
+
+    /**
+     * Defines the location of the source system definition file. 
+     * @param srcfile
+     * @ant.required
+     */
+    public void setSrcFile(File srcfile) {
+        this.srcFile = srcfile;
+    }
+
+    /**
+     * Get the location of the output file. 
+     * @return
+     */
+    public File getDestFile() {
+        return destFile;
+    }
+
+    /**
+     * The the name of the destination file.
+     * @param destfile
+     * @ant.required
+     */
+    public void setDestFile(File destfile) {
+        this.destFile = destfile;
+    }
+
+    /**
+     * Get the epocroot.
+     * If epocroot is not set by the user it return the value from the EPOCROOT environment variable.
+     * If the EPOCROOT environment variable is not defined then a BuildException is thrown.
+     * @return the epocroot location as a File object.
+     */
+    public File getEpocroot() {
+        if (epocroot == null) {
+            if (System.getenv("EPOCROOT") != null) {
+                return new File(System.getenv("EPOCROOT"));
+            }
+            else {
+                throw new BuildException("'epocroot' attribute has not been defined.");
+            }
+        }
+        return epocroot;
+    }
+
+    /**
+     * Location of the EPOCROOT.
+     * @ant.not-required By default the EPOCROOT environment variable is used.
+     * @param epocroot path to the epocroot.
+     */
+    public void setEpocroot(File epocroot) {
+        this.epocroot = epocroot;
+    }
+
+    /**
+     * Shall we fail the build on error.
+     * @return is the task should failonerror.
+     */
+    public boolean isFailOnError() {
+        return failOnError;
+    }
+
+    /**
+     * Defines if the file should fail on error.
+     * @param failonerror
+     * @ant.not-required Default is true.
+     */
+    public void setFailOnError(boolean failonerror) {
+        this.failOnError = failonerror;
+    }
+
+    /**
+     * This method should be defined by the implementing class
+     * to define the location of the XSLT file.
+     * @return the XSLT file location.
+     */
+    abstract File getXsl();
+    
+    /**
+     * Check if required attribute have been configured correctly.
+     * If not the method will raise a BuildException.
+     */
+    protected void check() {
+        if (srcFile == null) {
+            throw new BuildException("'srcfile' attribute is not defined");
+        }
+        if (destFile == null) {
+            throw new BuildException("'destfile' attribute is not defined");
+        }
+        File xslt = getXsl();
+        if (!xslt.exists()) {
+            throw new BuildException("Could not find " + xslt);
+        }        
+        if (!srcFile.exists()) {
+            throw new BuildException("Could not find source file " + srcFile);
+        }        
+    }
+    
+    /**
+     * Transform the srcfile using the stylesheet provided by getXsl. The data parameters are
+     * passed to the template engine. The result is save to the destfile.
+     * 
+     * @param data a set of key/value to pass to the XSLT engine.
+     */
+    public void transform(Map<String, String> data) {
+        check();
+        if (destFile.exists()) {
+            log("Deleting previous output file: " + destFile, Project.MSG_DEBUG);
+            destFile.delete();
+        }
+        
+        FileOutputStream output = null;        
+        try {
+            output = new FileOutputStream(destFile);
+            TransformerFactory factory = TransformerFactory.newInstance();
+            Transformer transformer = factory.newTransformer(new StreamSource(getXsl()));
+
+            transformer.setParameter("path", srcFile);
+            for (Map.Entry<String, String> entry : data.entrySet()) {
+                transformer.setParameter(entry.getKey(), entry.getValue());
+            }
+            transformer.setErrorListener(this);        
+            transformer.transform(new StreamSource(srcFile), new StreamResult(
+                    output));
+        
+        } catch (Exception exc) {
+            // deleting the intermediate file in case of error.
+            if (destFile.exists()) {
+                // closing current output stream, so we can delete the file
+                try {
+                    if (output != null) {
+                        output.close();
+                    }
+                } catch (IOException ioe) {
+                    // we should just ignore that error.
+                    log(ioe, Project.MSG_DEBUG);
+                }
+                log("Deleting " + destFile + " because an error occured.", Project.MSG_INFO);
+                destFile.delete();
+            }
+            // Raising the error to Ant.
+            throw new BuildException(exc.toString());
+        }
+    }
+
+    /**
+     * {@inheritDoc}
+     * Reports errors to the Ant logging system of throw the exception if the task
+     * is set to failonerror.
+     */
+    @Override
+    public void error(TransformerException message) throws TransformerException {
+        if (this.isFailOnError()) {
+            throw message;
+        } else {
+            log("ERROR: " + message.getMessageAndLocation(), Project.MSG_ERR);            
+        }
+    }
+
+    /**
+     * {@inheritDoc}
+     * Fails the task in case of fatal error. The is nothing we can do about that.
+     */
+    @Override
+    public void fatalError(TransformerException message) throws TransformerException {
+        log("ERROR: " + message.getMessageAndLocation(), Project.MSG_ERR);
+        throw message;
+    }
+
+    /**
+     * {@inheritDoc}
+     * Reports errors to the Ant logging system of throw the exception if the task
+     * is set to failonerror.
+     */
+    @Override
+    public void warning(TransformerException message) throws TransformerException {
+        if (this.isFailOnError()) {
+            throw message;
+        } else {
+            log("WARNING: " + message.getMessageAndLocation(), Project.MSG_WARN);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sysdef/src/com/nokia/helium/sysdef/ant/taskdefs/DowngradeTask.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,59 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+package com.nokia.helium.sysdef.ant.taskdefs;
+
+import java.io.File;
+import java.util.Hashtable;
+
+/**
+ * <p>This task allows to downgrade of a system definition file v3.0 into v2.0.</p>
+ * 
+ * <p>The following example shows how you can downgrade the X:\model.sysdef.xml as
+ * X:\model_2_0_1.sysdef.xml.</p>
+ * 
+ * E.g:
+ *   <pre>
+ *   &lt;hlm:downgradeSysdef epocroot=&quot;X:\&quot; srcfile=&quot;X:\model.sysdef.xml&quot; 
+ *                      destfile=&quot;X:\model_2_0_1.sysdef.xml&quot; /&gt;
+ *   </pre>
+ *
+ *   For more information about system definition file v3.0 please check 
+ *   <a href="http://developer.symbian.org/wiki/index.php/System_Definition">http://developer.symbian.org/wiki/index.php/System_Definition</a>.
+ *
+ *   @ant.task name="downgradeSysdef" category="Sysdef"
+ */
+public class DowngradeTask extends AbstractSydefTask {
+    private static final String XSLT = "sf/os/buildtools/bldsystemtools/buildsystemtools/sysdefdowngrade.xsl"; 
+
+    /**
+     * {@inheritDoc}
+     */
+    public void execute() {
+        check();
+        log("Downgrading " + this.getSrcFile() + " to 2.0.1 schema.");
+        log("Creating " + this.getDestFile());
+        transform(new Hashtable<String, String>());
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    protected File getXsl() {
+        return new File(this.getEpocroot(), XSLT);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sysdef/src/com/nokia/helium/sysdef/ant/taskdefs/JoinTask.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,62 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+package com.nokia.helium.sysdef.ant.taskdefs;
+
+import java.io.File;
+import java.util.Hashtable;
+
+/**
+ * <p>This task allows to do the join operation on system definition file v3.0.
+ * Join operation consist in combining a distributed system definition file into
+ * a stand-alone version.</p>
+ * 
+ * <p>The following example shows how you can join the X:\layer.sysdef.xml under
+ * X:\joined_layer.sysdef.xml.</p>
+ * 
+ * E.g:
+ * <pre>
+ *   &lt;hlm:joinSysdef epocroot=&quot;X:\&quot; srcfile=&quot;X:\layer.sysdef.xml&quot; 
+ *                      destfile=&quot;X:\joined_layer.sysdef.xml&quot; /&gt;
+ * </pre>
+ *
+ * For more information about system definition file v3.0 please check 
+ * <a href="http://developer.symbian.org/wiki/index.php/System_Definition">http://developer.symbian.org/wiki/index.php/System_Definition</a>.
+ *
+ * @ant.task name="joinSysdef" category="Sysdef"
+ */
+
+public class JoinTask extends AbstractSydefTask {
+    private static final String XSLT = "sf/os/buildtools/bldsystemtools/buildsystemtools/joinsysdef.xsl"; 
+
+    /**
+     * {@inheritDoc}
+     */
+    public void execute() {
+        check();
+        log("Joining " + this.getSrcFile()); 
+        log("Creating " + this.getDestFile());
+        transform(new Hashtable<String, String>());
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    protected File getXsl() {
+        return new File(this.getEpocroot(), XSLT);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sysdef/src/com/nokia/helium/sysdef/ant/taskdefs/MergeTask.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,97 @@
+/*
+* Copyright (c) 2007-2008 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:  
+*
+*/
+package com.nokia.helium.sysdef.ant.taskdefs;
+
+import java.io.File;
+import java.util.Hashtable;
+import java.util.Map;
+
+import org.apache.tools.ant.BuildException;
+
+/**
+ * <p>This task allows to do the merge operation on system definition file v3.0.
+ * Merge operation consist in combining a the data of two models into one stand-alone
+ * system definition file (Also called canonical system definition file).</p>
+ * 
+ * <p>The following example shows how you can merge the X:\layer.sysdef.xml and X:\vendor.sysdef.xml
+ * as X:\joined_layer.sysdef.xml.</p>
+ * 
+ * E.g:
+ * <pre>
+ *   &lt;hlm:mergeSysdef epocroot=&quot;X:\&quot;
+ *                      srcfile=&quot;X:\layer.sysdef.xml&quot; 
+ *                      downstreamfile=&quot;X:\vendor.sysdef.xml&quot; 
+ *                      destfile=&quot;X:\joined_layer.sysdef.xml&quot; /&gt;
+ * </pre>
+ *   
+ *   
+ *   For more information about system definition file v3.0 please check 
+ *   <a href="http://developer.symbian.org/wiki/index.php/System_Definition">http://developer.symbian.org/wiki/index.php/System_Definition</a>.
+ *   
+ *   @ant.task name="mergeSysdef" category="Sysdef"
+ */
+
+public class MergeTask extends AbstractSydefTask {
+    private static final String XSLT = "sf/os/buildtools/bldsystemtools/buildsystemtools/mergesysdef.xsl"; 
+    private File downstreamFile;
+
+    /**
+     * Get the downstream file for the merge.
+     * @return
+     */
+    public File getDownstreamFile() {
+        return downstreamFile;
+    }
+
+    /**
+     * Defines the location of the downstream file.
+     * @param downstreamfile
+     * @ant.required
+     */
+    public void setDownstreamfile(File downstreamFile) {
+        this.downstreamFile = downstreamFile;
+    }
+
+    
+    /**
+     * {@inheritDoc}
+     */
+    public void execute() {
+        check();
+        if (downstreamFile == null) {
+            throw new BuildException("'downstreamfile' attribute is not defined");
+        }
+        if (!downstreamFile.exists()) {
+            throw new BuildException("Could not find downstream file " + downstreamFile);
+        }        
+        
+        log("Merging " + this.getSrcFile());
+        log("Downstream " + downstreamFile);
+        log("Creating " + this.getDestFile());
+        Map<String, String> data = new Hashtable<String, String>();
+        data.put("Downstream", downstreamFile.toString());
+        transform(data);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    protected File getXsl() {
+        return new File(this.getEpocroot(), XSLT);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sysdef/tests/antunit/test_downgrade_sysdef.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : test_downgrade_sysdef.ant.xml 
+Part of     : Helium AntLib
+
+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="test-downgrade-sysdef" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
+    <description>Helium antlib downgrade sysdef tests.</description>
+
+    <taskdef resource="com/nokia/helium/sysdef/ant/antlib.xml" uri="http://www.nokia.com/helium" />
+    <property name="epocroot" location="../../demo/data" />
+    <property name="epocroot.temp" location="${epocroot}/temp" />
+
+
+    <!-- is called prior to the test -->
+    <target name="setUp">
+        <delete dir="${epocroot.temp}/" failonerror="false" />
+        <mkdir dir="${epocroot.temp}" />
+        <hlm:joinSysdef epocroot="${epocroot}"
+                        srcfile="${epocroot}/root/system_definition_layer1.xml"
+                        destfile="${epocroot.temp}/layer1.sysdef.xml" />
+        <hlm:joinSysdef epocroot="${epocroot}"
+                        srcfile="${epocroot}/root/system_definition_layer2.xml"
+                        destfile="${epocroot.temp}/layer2.sysdef.xml" />
+        <hlm:mergeSysdef epocroot="${epocroot}"
+                         srcfile="${epocroot.temp}/layer1.sysdef.xml"
+                         downstreamfile="${epocroot.temp}/layer2.sysdef.xml"
+                         destfile="${epocroot.temp}/full.sysdef.xml" />
+    </target>
+
+    <!-- is called after the test, even if that caused an error -->
+    <target name="tearDown">
+        <delete dir="${epocroot.temp}" failonerror="false" />
+    </target>
+
+
+    <target name="test-noargs">
+        <au:expectfailure expectedMessage="'srcfile' attribute is not defined">
+            <hlm:downgradeSysdef />
+        </au:expectfailure>
+        <au:assertFileDoesntExist file="${epocroot.temp}/output.sysdef.xml" />
+    </target>
+
+    <target name="test-srcfile">
+        <au:expectfailure expectedMessage="'destfile' attribute is not defined">
+            <hlm:downgradeSysdef epocroot="${epocroot}" srcfile="${epocroot.temp}/full.sysdef.xml" />
+        </au:expectfailure>
+        <au:assertFileDoesntExist file="${epocroot.temp}/output.sysdef.xml" />
+    </target>
+            
+    <target name="test-srcfile-destfile">
+        <hlm:downgradeSysdef epocroot="${epocroot}"
+                             srcfile="${epocroot.temp}/full.sysdef.xml"
+                             destfile="${epocroot.temp}/output.sysdef.xml" />
+        <au:assertFileExists file="${epocroot.temp}/output.sysdef.xml" />
+    </target>
+        
+</project>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sysdef/tests/antunit/test_join_sysdef.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : test_join_sysdef.ant.xml 
+Part of     : Helium AntLib
+
+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="test-join-sysdef" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
+    <description>Helium antlib join sysdef tests.</description>
+
+    <taskdef resource="com/nokia/helium/sysdef/ant/antlib.xml" uri="http://www.nokia.com/helium" />
+    <property name="epocroot" location="../../demo/data" />
+    <property name="epocroot.temp" location="${epocroot}/temp" />
+
+
+    <!-- is called prior to the test -->
+    <target name="setUp">
+        <delete dir="${epocroot.temp}" failonerror="false" />
+        <mkdir dir="${epocroot.temp}" />
+    </target>
+
+    <!-- is called after the test, even if that caused an error -->
+    <target name="tearDown">
+        <delete dir="${epocroot.temp}" failonerror="false" />
+    </target>
+
+
+    <target name="test-noargs">
+        <au:expectfailure expectedMessage="'srcfile' attribute is not defined">
+            <hlm:joinSysdef />
+        </au:expectfailure>
+        <au:assertFileDoesntExist file="${epocroot.temp}/output.sysdef.xml" />
+    </target>
+
+    <target name="test-srcfile">
+        <au:expectfailure expectedMessage="'destfile' attribute is not defined">
+            <hlm:joinSysdef epocroot="${epocroot}" srcfile="${epocroot}/root/system_definition_layer1.xml" />
+        </au:expectfailure>
+        <au:assertFileDoesntExist file="${epocroot.temp}/output.sysdef.xml" />
+    </target>
+
+    <target name="test-srcfile-destfile">
+        <hlm:joinSysdef epocroot="${epocroot}" srcfile="${epocroot}/root/system_definition_layer1.xml" destfile="${epocroot.temp}/output.sysdef.xml" />
+        <au:assertFileExists file="${epocroot.temp}/output.sysdef.xml" />
+    </target>
+
+    <target name="test-srcfile-destfile-wrong-epocroot">
+        <echo>test-srcfile-destfile-wrong-epocroot</echo>
+        <au:expectfailure expectedMessage="Could not find">
+            <hlm:joinSysdef epocroot="${epocroot}/foobar" srcfile="${epocroot}/root/system_definition_layer1.xml" destfile="${epocroot.temp}/output.sysdef.xml" />
+        </au:expectfailure>
+        <au:assertFileDoesntExist file="${epocroot.temp}/output.sysdef.xml" />
+    </target>
+
+    <target name="test-wrong-content">
+        <echo>test-wrong-content</echo>
+        <au:expectfailure expectedMessage="javax.xml.transform.TransformerException:">
+            <hlm:joinSysdef epocroot="${epocroot}" srcfile="${epocroot}/root/system_definition_layer3.xml" destfile="${epocroot.temp}/output.sysdef.xml" />
+        </au:expectfailure>
+        <au:assertFileDoesntExist file="${epocroot.temp}/output.sysdef.xml" />
+    </target>
+
+    <target name="test-invalid-src-file">
+        <echo>test-wrong-content</echo>
+        <au:expectfailure expectedMessage="Could not find source file ">
+            <hlm:joinSysdef epocroot="${epocroot}" srcfile="${epocroot}/root/system_definition_layer_invalid.xml" destfile="${epocroot.temp}/output.sysdef.xml" />
+        </au:expectfailure>
+        <au:assertFileDoesntExist file="${epocroot.temp}/output.sysdef.xml" />
+    </target>
+
+</project>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sysdef/tests/antunit/test_merge_sysdef.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : test_merge_sysdef.ant.xml 
+Part of     : Helium AntLib
+
+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="test-merge-sysdef" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
+    <description>Helium antlib merge sysdef tests.</description>
+
+    <taskdef resource="com/nokia/helium/sysdef/ant/antlib.xml" uri="http://www.nokia.com/helium" />
+    <property name="epocroot" location="../../demo/data" />
+    <property name="epocroot.temp" location="${epocroot}/temp" />
+
+
+    <!-- is called prior to the test -->
+    <target name="setUp">
+        <delete dir="${epocroot.temp}/" failonerror="false" />
+        <mkdir dir="${epocroot.temp}" />
+        <hlm:joinSysdef epocroot="${epocroot}"
+                        srcfile="${epocroot}/root/system_definition_layer1.xml"
+                        destfile="${epocroot.temp}/layer1.sysdef.xml" />
+        <hlm:joinSysdef epocroot="${epocroot}"
+                        srcfile="${epocroot}/root/system_definition_layer2.xml"
+                        destfile="${epocroot.temp}/layer2.sysdef.xml" />
+    </target>
+
+    <!-- is called after the test, even if that caused an error -->
+    <target name="tearDown">
+        <delete dir="${epocroot.temp}" failonerror="false" />
+    </target>
+
+
+    <target name="test-noargs">
+        <au:expectfailure expectedMessage="'srcfile' attribute is not defined">
+            <hlm:mergeSysdef />
+        </au:expectfailure>
+        <au:assertFileDoesntExist file="${epocroot.temp}/output.sysdef.xml" />
+    </target>
+
+    <target name="test-srcfile">
+        <au:expectfailure expectedMessage="'destfile' attribute is not defined">
+            <hlm:mergeSysdef epocroot="${epocroot}" srcfile="${epocroot.temp}/layer1.sysdef.xml" />
+        </au:expectfailure>
+        <au:assertFileDoesntExist file="${epocroot.temp}/output.sysdef.xml" />
+    </target>
+            
+    <target name="test-srcfile-destfile">
+        <au:expectfailure expectedMessage="'downstreamfile' attribute is not defined">
+            <hlm:mergeSysdef epocroot="${epocroot}"
+                             srcfile="${epocroot.temp}/layer1.sysdef.xml"
+                             destfile="${epocroot.temp}/output.sysdef.xml" />
+        </au:expectfailure>
+        <au:assertFileDoesntExist file="${epocroot.temp}/output.sysdef.xml" />
+    </target>
+        
+    <target name="test-srcfile-destfile-wrong-epocroot">
+        <au:expectfailure expectedMessage="Could not find">
+            <hlm:mergeSysdef epocroot="${epocroot}/foobar"
+                             srcfile="${epocroot.temp}/layer1.sysdef.xml"
+                             downstreamfile="${epocroot.temp}/layer2.sysdef.xml"
+                             destfile="${epocroot.temp}/output.sysdef.xml" />
+        </au:expectfailure>
+        <au:assertFileDoesntExist file="${epocroot.temp}/output.sysdef.xml" />
+    </target>            
+
+    <target name="test-valid-input">
+        <hlm:mergeSysdef epocroot="${epocroot}"
+                         srcfile="${epocroot.temp}/layer1.sysdef.xml"
+                         downstreamfile="${epocroot.temp}/layer2.sysdef.xml"
+                         destfile="${epocroot.temp}/output.sysdef.xml" />
+        <au:assertFileExists file="${epocroot.temp}/output.sysdef.xml" />
+    </target>
+
+    <target name="test-invalid-downstream-file">
+        <echo>test-wrong-content</echo>
+        <au:expectfailure expectedMessage="Could not find downstream file ">
+            <hlm:mergeSysdef epocroot="${epocroot}"
+                             srcfile="${epocroot.temp}/layer1.sysdef.xml"
+                             downstreamfile="${epocroot.temp}/layer2_invalid.sysdef.xml"
+                             destfile="${epocroot.temp}/output.sysdef.xml" />
+        </au:expectfailure>
+        <au:assertFileDoesntExist file="${epocroot.temp}/output.sysdef.xml" />
+    </target>
+
+</project>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sysdef/tests/bld.sh	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,24 @@
+#!/bin/bash
+
+#
+# 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: 
+#
+
+
+
+module load java/1.6.0
+module load mercurial
+export OLDANT_ARGS="-lib ../lib -lib ../../lib -lib ../../bin/helium-core.jar -lib ../../bin/helium-sysdef.jar -lib ../../antlibs"
+ant -Dant.executor.class="com.nokia.helium.core.ant.HeliumExecutor" $*
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sysdef/tests/build.bat	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,27 @@
+@echo off
+
+rem
+rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+rem All rights reserved.
+rem This component and the accompanying materials are made available
+rem under the terms of the License "Eclipse Public License v1.0"
+rem which accompanies this distribution, and is available
+rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+rem
+rem Initial Contributors:
+rem Nokia Corporation - initial contribution.
+rem
+rem Contributors:
+rem
+rem Description: 
+rem
+
+setlocal
+if not defined JAVA_6_HOME (
+set TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
+) ELSE  set TESTED_JAVA=%JAVA_6_HOME%
+if exist %TESTED_JAVA% (set JAVA_HOME=%TESTED_JAVA%)
+set OLDANT_ARGS=-lib %CD%\..\lib -lib %CD%\..\..\lib -lib %CD%\..\..\bin\helium-core.jar -lib %CD%\..\..\bin\helium-sysdef.jar -lib %CD%\..\..\antlibs
+ant -Dant.executor.class=com.nokia.helium.core.ant.HeliumExecutor %*
+endlocal
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/java/sysdef/tests/build.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : build.xml 
+Part of     : Helium AntLib
+
+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="helium-sysdef" xmlns:au="antlib:org.apache.ant.antunit">
+    <description>Helium Antlib Sysdef unittests.</description>
+    
+    <import file="${builder.dir}/java/test-macros.ant.xml"/>
+</project>
Binary file buildframework/helium/external/helium-antlib/lib/commons-io-1.4.jar has changed
Binary file buildframework/helium/external/helium-antlib/lib/dom4j-1.6.1.jar has changed
Binary file buildframework/helium/external/helium-antlib/lib/freemarker-2.3.13.jar has changed
Binary file buildframework/helium/external/helium-antlib/lib/jaxen-1.1.1.jar has changed
Binary file buildframework/helium/external/helium-antlib/lib/log4j-1.2.9.jar has changed
Binary file buildframework/helium/external/helium-antlib/lib/mail-1.4.1.jar has changed
Binary file buildframework/helium/external/helium-antlib/lib/plexus-utils-1.5.6.jar has changed
--- a/buildframework/helium/external/helium-antlib/logging/bld.bat	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-@echo off
-
-rem
-rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-rem All rights reserved.
-rem This component and the accompanying materials are made available
-rem under the terms of the License "Eclipse Public License v1.0"
-rem which accompanies this distribution, and is available
-rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
-rem
-rem Initial Contributors:
-rem Nokia Corporation - initial contribution.
-rem
-rem Contributors:
-rem
-rem Description: 
-rem
-
-setlocal
-if not defined JAVA_6_HOME (
-set TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
-) ELSE  set TESTED_JAVA=%JAVA_6_HOME%
-if exist %TESTED_JAVA% (set JAVA_HOME=%TESTED_JAVA%)
-
-REM Configure Ant 
-if not defined TESTED_ANT_HOME (
-set TESTED_ANT_HOME=C:\Apps\ant_1.7
-) 
-if exist %TESTED_ANT_HOME% (set ANT_HOME=%TESTED_ANT_HOME%)
-
-REM Configure the expected Ant Version details below
-SET expMajorVer=1
-SET expMinorVer=7
-
-rem *** Verify Ant Version ***
-rem -- Run the 'ant -version' command and capture the output to a variable 
-for /f "tokens=*" %%a in ('ant -version') do (set antversion=%%a)
-echo *** Installed Version : %antversion%
-
-rem -- Parse the version string obtained above and get the version number
-for /f "tokens=4 delims= " %%a in ("%antversion%") do set val=%%a
-rem -- Parse the version number delimiting the '.' and set the major and
-rem    minor versions
-for /f "tokens=1-2 delims=." %%a in ("%val%") do (
-set /A majorVersion=%%a
-set /A minorVersion=%%b
-)
-rem -- Check whether major version is greater than or equal to the expected.
-if %majorVersion% geq %expMajorVer% ( 
-rem -- if major version is valid, check minor version. If minor version is less
-rem    than expected display message and abort the execution.
-if %minorVersion% lss %expMinorVer% (echo *** Incorrect version of Ant found. Please check you have atleast Ant 1.7.0 & goto :errorstop ) 
-)
-
-ant %*
-endlocal
-
-:errorstop
-@echo *** Build aborted with error
-exit /b 1
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/logging/build.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : build.xml 
-Part of     : Helium AntLib
-
-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="helium-logging">
-    <description>Helium Antlib logging.</description>
-    
-    <import file="../macros.ant.xml"/>
-    
-    <property name="name" value="logging"/>
-    
-    <import file="../core/build.xml"/>
-    
-    <path id="helium.logging.classpath">
-        <fileset dir="${helium.antlib.root.dir}/bin" includes="helium-logging.jar"/>
-    </path>
-
-</project>
-
-
--- a/buildframework/helium/external/helium-antlib/logging/src/com/nokia/helium/logger/ant/antlib.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : antlib.xml 
-Part of     : Helium AntLib
-
-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:
-
-============================================================================
--->
-<antlib>
-    <!-- Task definition -->
-    <taskdef name="record" classname="com.nokia.helium.logger.ant.taskdefs.LogRecorder"/>
-    <taskdef name="logreplace" classname="com.nokia.helium.logger.ant.taskdefs.LogReplace"/>
-    
-    <!-- Type definition -->
-    <typedef name="stagerecord" classname="com.nokia.helium.logger.ant.types.StageLogging"/>
-    <typedef name="stage" classname="com.nokia.helium.logger.ant.types.Stage"/>
-    <typedef name="stagesummary" classname="com.nokia.helium.logger.ant.types.StageSummary"/>
-    <typedef name="recordfilterset" classname="com.nokia.helium.logger.ant.types.RecordFilterSet"/>
-    
-</antlib>
--- a/buildframework/helium/external/helium-antlib/logging/src/com/nokia/helium/logger/ant/helium.antlib.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : helium.antlib.xml 
-Part of     : Helium Antlib 
-
-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="libs-logging" xmlns:hlm="http://www.nokia.com/helium">
-    <description>
-        Ant task definition declarations.
-    </description>    
-    <taskdef resource="com/nokia/helium/logger/ant/antlib.xml" uri="http://www.nokia.com/helium" />
-</project>
--- a/buildframework/helium/external/helium-antlib/logging/src/com/nokia/helium/logger/ant/listener/AntLogRecorderEntry.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,408 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-package com.nokia.helium.logger.ant.listener;
-
-import java.io.PrintStream;
-
-import org.apache.tools.ant.BuildEvent;
-import org.apache.tools.ant.BuildLogger;
-import org.apache.tools.ant.DefaultLogger;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.SubBuildListener;
-import org.apache.tools.ant.util.StringUtils;
-import org.apache.tools.ant.BuildException;
-
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.util.Vector;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-/**
- * This is a class that represents a recorder. This is the listener to the
- * build process.
- *
- * @since Ant 1.4
- */
-public class AntLogRecorderEntry implements BuildLogger, SubBuildListener {
-
-    //////////////////////////////////////////////////////////////////////
-    // ATTRIBUTES
-
-    /** The name of the file associated with this recorder entry.  */
-    private String filename;
-    /** The state of the recorder (recorder on or off).  */
-    private boolean record = true;
-    /** The current verbosity level to record at.  */
-    private int loglevel = Project.MSG_INFO;
-    /** The output PrintStream to record to.  */
-    private PrintStream out;
-    /** The start time of the last know target.  */
-    private long targetStartTime;
-    /** Strip task banners if true.  */
-    private boolean emacsMode;
-    /** project instance the recorder is associated with */
-    private Project project;
-    
-    private Pattern pattern;
-    
-    private Vector<String> logRegExps = new Vector<String>();
-    
-    
-    //////////////////////////////////////////////////////////////////////
-    // CONSTRUCTORS / INITIALIZERS
-
-    /**
-     * @param name The name of this recorder (used as the filename).
-     */
-    public AntLogRecorderEntry(String name) {
-        targetStartTime = System.currentTimeMillis();
-        filename = name;
-    }
-
-    //////////////////////////////////////////////////////////////////////
-    // ACCESSOR METHODS
-
-    /**
-     * @return the name of the file the output is sent to.
-     */
-    public String getFilename() {
-        return filename;
-    }
-
-    /**
-     * Turns off or on this recorder.
-     *
-     * @param state true for on, false for off, null for no change.
-     */
-    public void setRecordState(Boolean state) {
-        if (state != null) {
-            flush();
-            record = state.booleanValue();
-        }
-    }
-    
-    /**
-     * To set the regexp to filter the logging.
-     * @param regexp
-     */
-    public void addRegexp(String regexp) {
-        logRegExps.add(regexp);
-    }
-    
-    /**
-     * To clear all regexp set.
-     */
-    public void resetRegExp() { 
-        logRegExps.clear();
-    }
-
-    /**
-     * @see org.apache.tools.ant.BuildListener#buildStarted(BuildEvent)
-     */
-    /** {@inheritDoc}. */
-    public void buildStarted(BuildEvent event) {
-        log("> BUILD STARTED", Project.MSG_DEBUG);
-    }
-
-    /**
-     * @see org.apache.tools.ant.BuildListener#buildFinished(BuildEvent)
-     */
-    /** {@inheritDoc}. */
-    public void buildFinished(BuildEvent event) {
-        log("< BUILD FINISHED", Project.MSG_DEBUG);
-
-        if (record && out != null) {
-            Throwable error = event.getException();
-
-            if (error == null) {
-                out.println(StringUtils.LINE_SEP + "BUILD SUCCESSFUL");
-            } else {
-                out.println(StringUtils.LINE_SEP + "BUILD FAILED"
-                            + StringUtils.LINE_SEP);
-                error.printStackTrace(out);
-            }
-        }
-        cleanup();
-    }
-
-    /**
-     * Cleans up any resources held by this recorder entry at the end
-     * of a subbuild if it has been created for the subbuild's project
-     * instance.
-     *
-     * @param event the buildFinished event
-     *
-     * @since Ant 1.6.2
-     */
-    public void subBuildFinished(BuildEvent event) {
-        if (event.getProject() == project) {
-            cleanup();
-        }
-    }
-
-    /**
-     * Empty implementation to satisfy the BuildListener interface.
-     *
-     * @param event the buildStarted event
-     *
-     * @since Ant 1.6.2
-     */
-    public void subBuildStarted(BuildEvent event) {
-    }
-
-    /**
-     * @see org.apache.tools.ant.BuildListener#targetStarted(BuildEvent)
-     */
-    /** {@inheritDoc}. */
-    public void targetStarted(BuildEvent event) {
-        log(">> TARGET STARTED -- " + event.getTarget(), Project.MSG_DEBUG);
-        log(StringUtils.LINE_SEP + event.getTarget().getName() + ":",
-            Project.MSG_INFO);
-        targetStartTime = System.currentTimeMillis();
-    }
-
-    /**
-     * @see org.apache.tools.ant.BuildListener#targetFinished(BuildEvent)
-     */
-    /** {@inheritDoc}. */
-    public void targetFinished(BuildEvent event) {
-        log("<< TARGET FINISHED -- " + event.getTarget(), Project.MSG_DEBUG);
-
-        String time = formatTime(System.currentTimeMillis() - targetStartTime);
-
-        log(event.getTarget() + ":  duration " + time, Project.MSG_VERBOSE);
-        flush();
-    }
-
-    /**
-     * @see org.apache.tools.ant.BuildListener#taskStarted(BuildEvent)
-     */
-    /** {@inheritDoc}. */
-    public void taskStarted(BuildEvent event) {
-        log(">>> TASK STARTED -- " + event.getTask(), Project.MSG_DEBUG);
-    }
-
-    /**
-     * @see org.apache.tools.ant.BuildListener#taskFinished(BuildEvent)
-     */
-    /** {@inheritDoc}. */
-    public void taskFinished(BuildEvent event) {
-        log("<<< TASK FINISHED -- " + event.getTask(), Project.MSG_DEBUG);
-        flush();
-    }
-
-    /**
-     * @see org.apache.tools.ant.BuildListener#messageLogged(BuildEvent)
-     */
-    /** {@inheritDoc}. */
-    public void messageLogged(BuildEvent event) {
-        log("--- MESSAGE LOGGED", Project.MSG_DEBUG);
-
-        StringBuffer buf = new StringBuffer();
-
-        if (event.getTask() != null) {
-            String name = event.getTask().getTaskName();
-
-            if (!emacsMode) {
-                String label = "[" + name + "] ";
-                int size = DefaultLogger.LEFT_COLUMN_SIZE - label.length();
-
-                for (int i = 0; i < size; i++) {
-                    buf.append(" ");
-                }
-                buf.append(label);
-            }
-        }
-        String messgeToUpdate = filterMessage(event.getMessage());
-        buf.append(messgeToUpdate);
-        log(buf.toString(), event.getPriority());
-    }
-    
-    
-    /**
-     * To replace regExp matching with ****.
-     * @param message
-     * @return
-     */
-    private String filterMessage(String message) {
-        for (String regExp : logRegExps) {
-            pattern = Pattern.compile(regExp);
-            if (pattern != null) {
-                Matcher match = pattern.matcher(message);
-                message = match.replaceAll("********");
-            }
-        }
-        return message;
-    }
-
-
-    /**
-     * The thing that actually sends the information to the output.
-     *
-     * @param mesg The message to log.
-     * @param level The verbosity level of the message.
-     */
-    private void log(String mesg, int level) {
-        if (record && (level <= loglevel) && out != null) {
-            out.println(mesg);
-        }
-    }
-
-    private void flush() {
-        if (record && out != null) {
-            out.flush();
-        }
-    }
-
-    /**
-     * @see BuildLogger#setMessageOutputLevel(int)
-     */
-    /** {@inheritDoc}. */
-    public void setMessageOutputLevel(int level) {
-        if (level >= Project.MSG_ERR && level <= Project.MSG_DEBUG) {
-            loglevel = level;
-        }
-    }
-
-    /**
-     * @see BuildLogger#setOutputPrintStream(PrintStream)
-     */
-    /** {@inheritDoc}. */
-    public void setOutputPrintStream(PrintStream output) {
-        closeFile();
-        out = output;
-    }
-
-
-    /**
-     * @see BuildLogger#setEmacsMode(boolean)
-     */
-    /** {@inheritDoc}. */
-    public void setEmacsMode(boolean emacsMode) {
-        this.emacsMode = emacsMode;
-    }
-
-
-    /**
-     * @see BuildLogger#setErrorPrintStream(PrintStream)
-     */
-    /** {@inheritDoc}. */
-    public void setErrorPrintStream(PrintStream err) {
-        setOutputPrintStream(err);
-    }
-
-
-    private static String formatTime(long millis) {
-        // CheckStyle:MagicNumber OFF
-        long seconds = millis / 1000;
-        long minutes = seconds / 60;
-
-
-        if (minutes > 0) {
-            return Long.toString(minutes) + " minute"
-                 + (minutes == 1 ? " " : "s ")
-                 + Long.toString(seconds % 60) + " second"
-                 + (seconds % 60 == 1 ? "" : "s");
-        } else {
-            return Long.toString(seconds) + " second"
-                 + (seconds % 60 == 1 ? "" : "s");
-        }
-        // CheckStyle:MagicNumber ON
-    }
-
-    /**
-     * Set the project associated with this recorder entry.
-     *
-     * @param project the project instance
-     *
-     * @since 1.6.2
-     */
-    public void setProject(Project project) {
-        this.project = project;
-        if (project != null) {
-            project.addBuildListener(this);
-        }
-    }
-
-    /**
-     * @since 1.6.2
-     */
-    public void cleanup() {
-        closeFile();
-        if (project != null) {
-            project.removeBuildListener(this);
-        }
-        project = null;
-    }
-
-    /**
-     * Closes the file associated with this recorder.
-     * Used by Recorder.
-     * @since 1.6.3
-     */
-    public void closeFile() {
-        if (out != null) {
-            out.close();
-            out = null;
-        }
-    }
-    
-    /**
-     * Initially opens the file associated with this recorder.
-     * Used by Recorder.
-     * @param append Indicates if output must be appended to the logfile or that
-     * the logfile should be overwritten.
-     * @throws BuildException
-     * @since 1.6.3
-     */
-    public void openFile(boolean append) {
-        openFileImpl(append);
-    }
-    
-    /**
-     * Re-opens the file associated with this recorder.
-     * Used by Recorder.
-     * @throws BuildException
-     * @since 1.6.3
-     */
-    public void reopenFile() {
-        openFileImpl(true);
-    }
-    
-    private void openFileImpl(boolean append) {
-        if (out == null) {
-            try {
-                out = new PrintStream(new FileOutputStream(filename, append));
-            } catch (IOException ioe) {
-                throw new BuildException("Problems opening file using a "
-                                         + "recorder entry", ioe);
-            }
-        }
-    }
-    
-    /**
-     * To add user message into log file.
-     * @param message
-     */
-    public void addLogMessage(String message) {
-        out.println(StringUtils.LINE_SEP + message);
-        
-    }
-    
-
-}
--- a/buildframework/helium/external/helium-antlib/logging/src/com/nokia/helium/logger/ant/listener/AntLoggingHandler.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,581 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-package com.nokia.helium.logger.ant.listener;
-
-import java.io.File;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.Enumeration;
-import java.util.Hashtable;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Vector;
-import java.util.Map.Entry;
-
-import org.apache.tools.ant.BuildEvent;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.Target;
-import org.apache.tools.ant.Task;
-import org.apache.tools.ant.types.LogLevel;
-import org.apache.tools.ant.BuildException;
-import org.apache.log4j.Logger;
-
-import com.nokia.helium.logger.ant.types.*;
-
-
-    /**
-     * Ant logging class for each Stage. 
-     * 
-     *
-     */
-public class AntLoggingHandler implements Handler {
-    
-    private static Hashtable recorderEntries = new Hashtable();
-    private Boolean append ;
-    private int loglevel = -1;
-    private VerbosityLevelChoices antLogLevel;
-    private Map<String, Stage> stagesMapping;
-    private Map<String, StageLogging> stageRecordMap;
-    private Map<String, StageLogging> defaultRecordMap;
-    private Map<Stage, Target> depStartTargetMap;
-    private boolean isStagesIntialized;
-    private boolean isRecordingStarted;
-    private AntLogRecorderEntry recorderEntry;
-    private boolean isRecorderEntryRegistered;
-    private boolean isDefaultRecorderEntryRegistered;
-    private Logger log = Logger.getLogger(AntLoggingHandler.class);
-    private boolean isInitDepStartTarget;
-    private String currentStageName; 
-    
-
-    public AntLoggingHandler() {
-        antLogLevel = new VerbosityLevelChoices();
-        stagesMapping = new HashMap<String, Stage>();
-        stageRecordMap = new HashMap<String, StageLogging>();
-        defaultRecordMap = new HashMap<String, StageLogging>();
-        depStartTargetMap = new HashMap<Stage, Target>();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public void handleTargetFinished(BuildEvent event) {
-        String stageName = getStopStageName (event.getTarget().getName());
-        if (stageName != null && getIsRecordingStarted()) {
-            stopStageAntLog(stageName);
-            startDefaultAntLog();
-            
-        }
-        log.debug("Finishing target [" + event.getTarget().getName() + "]");
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public void handleTargetStarted(BuildEvent event) {
-        
-        if (!isDefaultRecorderEntryRegistered ) {
-            log.debug("Intializing deafult recorder information and registering the recorder");
-            initDefaultAntLogStage(event);
-            registerDefaultRecorderEntry();
-        }
-        
-        if (!isStagesIntialized()) {
-            log.debug("Intializing stages information");
-            getStagesInformation(event);
-        }
-        
-        if (!isInitDepStartTarget() && isStagesIntialized()) {
-            log.debug("Intializing dependent targets stage information.");
-            initDepStartTarget(event);
-        }
-        
-        if (!isRecorderEntryRegistered && isStagesIntialized()) {
-            log.debug("Registering recorder entries.");
-            registerRecorderEntry(event);
-        }
-        
-        log.debug("Starting target [" + event.getTarget().getName() + "]");
-        String stageName = getStartStageName (event.getTarget().getName());
-        if (stageName != null &&  !getIsRecordingStarted()) {
-            stopDefaultAntLog(stageName);
-            startStageAntLog(stageName);
-        }
-        
-    }
-    
-    /**
-     * {@inheritDoc}
-     */
-    public void handleBuildStarted(BuildEvent event) {
-        
-    }
-    
-    /**
-     * {@inheritDoc}
-     */
-    public void handleBuildFinished(BuildEvent event) {
-        String time = getDateTime();
-        StageLogging stageLogging = defaultRecordMap.get("default");
-        if (stageLogging != null) {
-            // this case might happen if the config has not been loaded because
-            // of an error happening before the start of the build.
-            File logFile = new File(stageLogging.getDefaultOutput());
-            if (logFile.exists()) {
-                recorderEntry = getRecorder(stageLogging.getDefaultOutput(), StatusAndLogListener.getProject());
-                recorderEntry.addLogMessage("Stopping main Ant logging at " + time + " into " + stageLogging.getDefaultOutput());
-                recorderEntry.setRecordState(false);
-            }
-       } else {
-           log.debug("Could not find default recorder configuration.");
-       }
-       this.cleanup();
-    }
-    
-    /**
-     * Stage ant logging for respective stage.
-     * @param stageName
-     */
-    public void startStageAntLog(String stageName) {
-        String time = getDateTime();
-        log.debug("Starting stagerecorder for stage [" + stageName + "]");
-        StageLogging startStageLogging = stageRecordMap.get(stageName);
-        File logFile = new File(startStageLogging.getOutput());
-        if (logFile.exists()) {
-            recorderEntry = getRecorder(startStageLogging.getOutput(), StatusAndLogListener.getProject());
-            recorderEntry.setRecordState(true);
-            recorderEntry.addLogMessage("Starting logging for stage \"" + stageName + "\" into " + startStageLogging.getOutput() + " at " + time );
-            this.isRecordingStarted = true;
-            this.currentStageName = stageName;
-        }
-    }
-    
-    /**
-     * Stop ant logging for respective stage.
-     * @param stageName
-     */
-
-    public void stopStageAntLog( String stageName) {
-        String time = getDateTime();
-        log.debug("Stopping stagerecorder for stage [" + stageName + "]");
-        StageLogging stopStageLogging = stageRecordMap.get(stageName);
-        StageLogging defaultStageLogging = defaultRecordMap.get("default");
-        recorderEntry.addLogMessage("Stopping logging for stage \"" + stageName + "\" into " + stopStageLogging.getOutput() + " at " + time);
-        recorderEntry.addLogMessage("Starting logging into " +  defaultStageLogging.getDefaultOutput());
-        recorderEntry = getRecorder(stopStageLogging.getOutput(), StatusAndLogListener.getProject());
-        recorderEntry.setRecordState(false);
-        this.isRecordingStarted = false;
-        this.currentStageName = null;
-    }
-    
-    /**
-     * Returns recorder entry for logging current build process.
-     * @param stageLogging
-     * @param proj
-     * @return
-     */
-    @SuppressWarnings("unchecked")
-    protected AntLogRecorderEntry getRecorder(String name, Project proj) {
-        
-        Object o = recorderEntries.get(name);
-        AntLogRecorderEntry entry;
-        if (o == null) {
-            // create a recorder entry
-            entry = new AntLogRecorderEntry(name);
-            if (append == null) {
-                entry.openFile(false);
-            } else {
-                entry.openFile(append.booleanValue());
-            }
-            entry.setProject(proj);
-            recorderEntries.put(name, entry);
-        } else {
-            entry = (AntLogRecorderEntry) o;
-        }
-        return entry;
-    }
-    
-    /**
-     * Whether or not the logger should append to a previous file.
-     * @param append if true, append to a previous file.
-     */
-    public void setAppend(boolean append) {
-        this.append = append ;
-    }
-    
-    
-    /**
-     * Sets the level to which this recorder entry should log to.
-     * @param level the level to set.
-     * @see VerbosityLevelChoices
-     */
-    public void setLoglevel(VerbosityLevelChoices level) {
-        loglevel = level.getLevel();
-    }
-    
-    /**
-     * A list of possible values for the <code>setLoglevel()</code> method.
-     * Possible values include: error, warn, info, verbose, debug.
-     */
-    public static class VerbosityLevelChoices extends LogLevel {
-    }
-    
-    /**
-     * To get the stage information.
-     * @param event
-     */
-    @SuppressWarnings("unchecked")
-    private void getStagesInformation(BuildEvent event) {
-        this.isStagesIntialized = true;
-        Hashtable<String, Object> references = event.getProject().getReferences(); 
-        Enumeration<String> keyEnum = references.keys();
-        while (keyEnum.hasMoreElements()) {
-            String key = keyEnum.nextElement();
-            if (references.get(key) instanceof Stage) {
-                Stage tempStage = (Stage)references.get(key);
-                log.debug("Found  stage [" + key + "] for recording");
-                if (validateStageTargets(event, tempStage.getStartTarget(), tempStage.getEndTarget() )) {
-                    log.debug("Start and end targets are valid for stage [" + key + "]");
-                    stagesMapping.put(key, (Stage)references.get(key));
-                    getStageRecordInformation(event, key, tempStage.getStartTarget(), tempStage.getEndTarget());
-                }
-            }
-        }
-    }
-    
-    /**
-     * Checks, is stages are initialized.
-     * @return
-     */
-    private boolean isStagesIntialized() {
-        return this.isStagesIntialized;
-    }
-    
-    /**
-     * To initialize stage record mapping.
-     * @param event
-     */
-    @SuppressWarnings("unchecked")
-    private void getStageRecordInformation(BuildEvent event, String stageKey, String startTarget, String endTarget) {
-        Hashtable<String, Object> references = event.getProject().getReferences(); 
-        Enumeration<String> keyEnum = references.keys();
-        while (keyEnum.hasMoreElements()) {
-            String key = keyEnum.nextElement();
-            if (references.get(key) instanceof StageLogging) {
-                StageLogging tempStageLogging = (StageLogging)references.get(key);
-                
-                if (tempStageLogging.getStageRefID() == null && tempStageLogging.getDefaultOutput() == null ) {
-                    throw new BuildException("stagefefid attribute should be specified for stagerecord [" + key + "]");
-                }
-                if (tempStageLogging.getStageRefID() != null ) {
-                    if (tempStageLogging.getStageRefID().equalsIgnoreCase(stageKey) && tempStageLogging.getDefaultOutput() == null) {
-                        log.debug("stagerecord reference for stage [" + stageKey + "] is [" +  tempStageLogging.getStageRefID() + "]");
-                        if (tempStageLogging.getOutput() == null) {
-                            throw new BuildException("output attribute should be specified for stagerecord [" + key + "]");
-                        }
-                        stageRecordMap.put(stageKey, tempStageLogging);
-                    }
-                }
-            }
-        }
-    }
-    
-    /**
-     * First Validate is the default output has been set. 
-     * @param event
-     */
-    @SuppressWarnings("unchecked")
-    private void initDefaultAntLogStage(BuildEvent event) {
-        Hashtable<String, Object> references = event.getProject().getReferences(); 
-        Enumeration<String> keyEnum = references.keys();
-        while (keyEnum.hasMoreElements()) {
-            String key = keyEnum.nextElement();
-            if (references.get(key) instanceof StageLogging) {
-                StageLogging tempStageLogging = (StageLogging)references.get(key);
-                
-                if (tempStageLogging.getStageRefID() == null && tempStageLogging.getDefaultOutput() != null ) {
-                    defaultRecordMap.put("default", tempStageLogging);
-                }
-            }
-        }
-    }
-    
-    /**
-     * To check is the stage start and end targets present in the sequence. 
-     * @param event
-     * @param startTarget
-     * @param endTarget
-     * @return
-     */
-    @SuppressWarnings("unchecked")
-    private boolean validateStageTargets(BuildEvent event, String startTarget, String endTarget) {
-        
-        Hashtable<String, String> antTargets = event.getProject().getTargets();
-        return antTargets.containsKey(startTarget) && antTargets.containsKey(endTarget);
-    }
-    
-    /**
-     * Return mapped stage name to start record.
-     * @param targetName
-     * @return
-     */
-    
-    private String getStartStageName(String targetName) {
-        
-        for (Map.Entry<String, Stage> entry : stagesMapping.entrySet() ) {
-            Stage stage = entry.getValue();
-            if ( stage.getStartTarget().equalsIgnoreCase(targetName)) {
-                log.debug("stageName name for target [" + targetName + "] is [" +  entry.getKey() + "]");
-                return entry.getKey();
-            }
-            for (Map.Entry<Stage, Target> depEntry : depStartTargetMap.entrySet() ) {
-                Stage depStage = depEntry.getKey();
-                if ((depStage.getStartTarget().equalsIgnoreCase(stage.getStartTarget())) && (depEntry.getValue().getName().equalsIgnoreCase(targetName))) {
-                    log.debug("stageName name for depending target [" + depStage.getStartTarget() + "] is [" +  entry.getKey() + "]");
-                    return entry.getKey();
-                }
-            }
-        }
-        return null;
-    }
-    
-    /**
-     * Return mapped stage name to stop record.
-     * @param targetName
-     * @return
-     */
-    private String getStopStageName(String targetName) {
-        
-        for (Map.Entry<String, Stage> entry : stagesMapping.entrySet() ) {
-            Stage stage = entry.getValue();
-            if ( stage.getEndTarget().equalsIgnoreCase(targetName)) {
-                log.debug("stageName name for end target [" + targetName + "] is [" +  entry.getKey() + "]");
-                return entry.getKey();
-            }
-        }
-        return null;
-    }
-    
-    /**
-     * To check is recording started.
-     * @return
-     */
-    private boolean getIsRecordingStarted() {
-        return this.isRecordingStarted;
-    }
-    
-    /**
-     * To register recorder entries.
-     * @param event
-     */
-    @SuppressWarnings("unchecked")
-    private void registerRecorderEntry(BuildEvent event) {
-        /* Later register stages recorder entries */
-        for (Map.Entry<String, StageLogging> entry : stageRecordMap.entrySet()) {
-            StageLogging stageLogging  = entry.getValue();  
-            File logFile = new File(stageLogging.getOutput());
-            if (!logFile.getParentFile().exists()) {
-                logFile.getParentFile().mkdirs();
-            }
-            if (logFile.getParentFile().exists()) {
-                log.debug("Registering recorderentry for log file [" + stageLogging.getOutput() + "]");
-                this.setAppend(stageLogging.getAppend().booleanValue());
-                recorderEntry = getRecorder(stageLogging.getOutput(), StatusAndLogListener.getProject());
-                antLogLevel.setValue(stageLogging.getLogLevel());
-                this.setLoglevel(antLogLevel);
-                recorderEntry.setMessageOutputLevel(loglevel);
-                recorderEntry.setEmacsMode(false);
-                recorderEntry.setRecordState(false);
-                isRecorderEntryRegistered = true;
-            }
-        }
-    }
-    
-    /**
-     * To register default recorder entry.
-     */
-    @SuppressWarnings("unchecked")
-    private void registerDefaultRecorderEntry() {
-        
-        /* First register default recorder */
-        if (defaultRecordMap.size() == 0) {
-            throw new BuildException("There is no stagerecord type with defaultoutput attribute set. please set...");
-        }
-        StageLogging stageLogging = defaultRecordMap.get("default");
-        File logFile = new File(stageLogging.getDefaultOutput());
-        if (!logFile.getParentFile().exists()) {
-            logFile.getParentFile().mkdirs();
-        }
-        if (logFile.getParentFile().exists()) {
-            log.debug("Registering recorderentry for log file [" + stageLogging.getDefaultOutput() + "]");
-            this.setAppend(stageLogging.getAppend().booleanValue());
-            recorderEntry = getRecorder(stageLogging.getDefaultOutput(), StatusAndLogListener.getProject());
-            antLogLevel.setValue(stageLogging.getLogLevel());
-            this.setLoglevel(antLogLevel);
-            recorderEntry.setMessageOutputLevel(loglevel);
-            recorderEntry.setEmacsMode(false);
-            recorderEntry.setRecordState(true);
-            String time = getDateTime();
-            recorderEntry.addLogMessage("Starting main Ant logging at " + time + " into " + stageLogging.getDefaultOutput());
-            isDefaultRecorderEntryRegistered = true;
-        }
-        
-    }
-    
-    
-    
-    /**
-     * To clean recorder entries.
-     */
-    private void cleanup() {
-        log.debug("Cleaning up recorder entries of stagerecord");
-        StatusAndLogListener.getProject().removeBuildListener(recorderEntry);
-        recorderEntries.clear();
-        
-    }
-    
-    /**
-     * To check is the dependent start target map is initialized.
-     * @return
-     */
-    private boolean isInitDepStartTarget() {
-        return isInitDepStartTarget;
-    }
-    
-    /**
-     * Initialize the dependent start targets mapping.
-     * @param event
-     */
-    @SuppressWarnings("unchecked")
-    private void initDepStartTarget(BuildEvent event) {
-        Vector<Target> arrayList = null;
-        isInitDepStartTarget = true;
-        for (Map.Entry<String, Stage> entry : stagesMapping.entrySet() ) {
-            Stage stage = entry.getValue();
-            arrayList = event.getProject().topoSort(stage.getStartTarget(), event.getProject().getTargets(), false);
-            if (arrayList != null && arrayList.size() > 1) {
-                depStartTargetMap.put(stage, arrayList.firstElement());
-            }
-        }
-    }
-    
-    /**
-     * To get current date and time.
-     * @return
-     */
-    private String getDateTime() {
-        DateFormat dateFormat = new SimpleDateFormat("EE yyyy/MM/dd HH:mm:ss:SS aaa");
-        Date date = new Date();
-        return dateFormat.format(date);
-    } 
-    
-    /**
-     * To stop default ant logging.
-     */
-    private void stopDefaultAntLog(String stageName) {
-        String time = getDateTime();
-        StageLogging defaultStageLogging = defaultRecordMap.get("default");
-        StageLogging stageLogging = stageRecordMap.get(stageName);
-        File logFile = new File(defaultStageLogging.getDefaultOutput());
-        if (logFile.exists()) {
-            recorderEntry = getRecorder(defaultStageLogging.getDefaultOutput(), StatusAndLogListener.getProject());
-            recorderEntry.addLogMessage("Stopping logging into " + defaultStageLogging.getDefaultOutput() + " and starting logging for stage \"" + stageName + "\" at " + time);
-            recorderEntry.addLogMessage("Starting logging into " + stageLogging.getOutput());
-            recorderEntry.setRecordState(false);
-        }
-    }
-    
-    /**
-     * To start deafult ant logging.
-     */
-    
-    private void startDefaultAntLog() {
-        String time = getDateTime();
-        StageLogging stageLogging = defaultRecordMap.get("default");
-        recorderEntry = getRecorder(stageLogging.getDefaultOutput(), StatusAndLogListener.getProject());
-        recorderEntry.addLogMessage("Resuming logging into " + stageLogging.getDefaultOutput() + " at " + time );
-        recorderEntry.setRecordState(true);
-    }
-    
-    /**
-     * To get the current stage running.
-     * @return
-     */
-    public String getCurrentStageName() {
-        
-        return this.currentStageName;
-    }
-    
-    /**
-     * To do the logging actions depending on hlm:record actions.
-     * @param stageName
-     * @param action
-     * @param message
-     */
-    public void doLoggingAction(String stageName, boolean action, String message, Task task) {
-        String time = getDateTime();
-        StageLogging stageLogging = null;
-        String fileName;
-        if (stageName.equalsIgnoreCase("default")) {
-            stageLogging = defaultRecordMap.get(stageName);
-            fileName = stageLogging.getDefaultOutput();
-        } else {
-            stageLogging = stageRecordMap.get(stageName);
-            fileName = stageLogging.getOutput();
-        }
-        File logFile = new File(fileName);
-        if (logFile.exists()) {
-            recorderEntry = getRecorder(fileName, StatusAndLogListener.getProject());
-            recorderEntry.addLogMessage(message + " logging into " + fileName + " from " + task.getTaskName() + " task at " + time);
-            recorderEntry.setRecordState(action);
-        }
-    }
-    
-    /**
-     * Called by LogReplace task to find and replace any property values which are not updated.
-     * @param regExp
-     */
-    @SuppressWarnings("unchecked")
-    public void addRegExp (String regExp) {
-        
-        if (!regExp.equals("")) {
-            
-            for (Map.Entry<String, StageLogging> entry : defaultRecordMap.entrySet() ) {
-                StageLogging stageLogging = entry.getValue();
-                File logFile = new File(stageLogging.getDefaultOutput());
-                if (logFile.exists()) {
-                    AntLogRecorderEntry recorderEntry = getRecorder(stageLogging.getDefaultOutput(), StatusAndLogListener.getProject());
-                    recorderEntry.addRegexp(regExp);
-                }
-            }
-            
-            for (Map.Entry<String, StageLogging> entry : stageRecordMap.entrySet() ) {
-                StageLogging stageLogging = entry.getValue();
-                File logFile = new File(stageLogging.getOutput());
-                if (logFile.exists()) {
-                    AntLogRecorderEntry recorderEntry = getRecorder(stageLogging.getOutput(), StatusAndLogListener.getProject());
-                    recorderEntry.addRegexp(regExp);
-                }
-            }
-            
-        }
-    }
-
-}
-
-
--- a/buildframework/helium/external/helium-antlib/logging/src/com/nokia/helium/logger/ant/listener/BuildEventHandler.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-package com.nokia.helium.logger.ant.listener;
-
-import org.apache.tools.ant.BuildEvent;
-
-/**
- * <code>Handler</code> is an interface which is used to handle the build events
- * which are of importance for ant logging and build stage summary display.
- * 
- *
- */
-public interface BuildEventHandler {
-
-   /**
-    * Method to handle build start events.
-    * 
-    * @param event is the build event to be handled. 
-    */
-    void handleBuildStarted( BuildEvent event );
-
-   /**
-    * Method to handle build finish events.
-    * 
-    * @param event is the build event to be handled. 
-    */
-    void handleBuildFinished( BuildEvent event );
-    
-}
--- a/buildframework/helium/external/helium-antlib/logging/src/com/nokia/helium/logger/ant/listener/BuildStatusReport.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,142 +0,0 @@
-/*
- * Copyright (c) 2007-2008 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:  
- *
- */
-package com.nokia.helium.logger.ant.listener;
-
-import static com.nokia.helium.logger.ant.listener.StageSummaryHandler.FAILED;
-import static com.nokia.helium.logger.ant.listener.StageSummaryHandler.PASSED;
-
-/**
- * <code>BuildStatusReport</code> is a simple java bean used to hold information pertaining
- * to various build stages.
- * 
- */
-public class BuildStatusReport {
-
-    private String phaseName;
-    private String startTime;
-    private String duration;
-    private String reason;
-    private String status;
-
-    /**
-     * Create an instance of {@link BuildStatusReport}.
-     * 
-     * @param phaseName is the name of the Phase
-     * @param startTime is the start time of the Phase
-     * @param duration is the duration of the Phase
-     * @param reason is the cause of build failure, if any
-     */
-    public BuildStatusReport(String phaseName, String startTime,
-            String duration, String reason) {
-        this.phaseName = phaseName;
-        this.startTime = startTime;
-        this.duration = duration;
-        this.reason = (reason != null && !reason.isEmpty()) ? reason : "N/A";
-        this.status = (reason != null && !reason.isEmpty()) ? FAILED : PASSED; 
-    }
-
-    /**
-     * Get the Build Phase name.
-     * 
-     * @return the Build Phase name.
-     */
-    public String getPhaseName() {
-        return phaseName;
-    }
-
-    /**
-     * Set the Build Phase name.
-     * 
-     * @param phaseName is the phase name to set.
-     */
-    public void setPhaseName(String phaseName) {
-        this.phaseName = phaseName;
-    }
-
-    /**
-     * Get the start time of this Phase.
-     * 
-     * @return the start time of this Phase.
-     */
-    public String getStartTime() {
-        return startTime;
-    }
-
-    /**
-     * Set the start time of this Phase.
-     * 
-     * @param startTime is the start time to set.
-     */
-    public void setStartTime(String startTime) {
-        this.startTime = startTime;
-    }
-
-    /**
-     * Get the duration of this Phase.
-     * 
-     * @return the duration of this Phase.
-     */
-    public String getDuration() {
-        return duration;
-    }
-
-    /**
-     * Set the duration of this Phase.
-     * 
-     * @param duration the duration to set.
-     */
-    public void setDuration(String duration) {
-        this.duration = duration;
-    }
-
-    /**
-     * Get the reason for build failure.
-     * 
-     * @return the reason for build failure.
-     */
-    public String getReason() {
-        return reason;
-    }
-
-    /**
-     * Set the reason for build failure.
-     * 
-     * @param reason is the reason for build failure.
-     */
-    public void setReason(String reason) {
-        this.reason = reason;
-    }
-
-    /**
-     * Get the build status.
-     * 
-     * @return the build status.
-     */
-    public String getStatus() {
-        return status;
-    }
-
-    /**
-     * Set the build status.
-     * 
-     * @param status is the build status to set.
-     */
-    public void setStatus(String status) {
-        this.status = status;
-    }
-    
-}
--- a/buildframework/helium/external/helium-antlib/logging/src/com/nokia/helium/logger/ant/listener/Handler.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-package com.nokia.helium.logger.ant.listener;
-
-
-/**
- * <code>Handler</code> is an interface which is used to handle the build events
- * which are of importance for ant logging and build stage summary display.
- * 
- *
- */
-public interface Handler extends BuildEventHandler, TargetEventHandler {
-
-   
-    
-}
--- a/buildframework/helium/external/helium-antlib/logging/src/com/nokia/helium/logger/ant/listener/StageSummaryHandler.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,447 +0,0 @@
-/*
- * Copyright (c) 2007-2008 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:  
- *
- */
-package com.nokia.helium.logger.ant.listener;
-
-import java.io.File;
-import java.io.StringWriter;
-import java.text.DateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Hashtable;
-import java.util.List;
-import java.util.Map;
-import java.util.StringTokenizer;
-import java.util.TreeMap;
-import java.util.Vector;
-
-import org.apache.log4j.Logger;
-import org.apache.tools.ant.BuildEvent;
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.Target;
-import org.apache.tools.ant.util.DateUtils;
-
-import com.nokia.helium.logger.ant.types.Stage;
-import com.nokia.helium.logger.ant.types.StageSummary;
-
-import freemarker.cache.FileTemplateLoader;
-import freemarker.template.Configuration;
-import freemarker.template.Template;
-
-/**
- * <code>StageStatusHandler</code> is the handler class responsible for
- * displaying the summary of the various configured build stages at the end of
- * build process.
- * 
- */
-public class StageSummaryHandler implements Handler {
-
-    public static final String PASSED = "PASSED";
-    public static final String FAILED = "FAILED";
-
-    private Logger log = Logger.getLogger(getClass());
-    private boolean displaySummary;
-    private boolean lookup4Stages;
-    private boolean summarize;
-
-    private List<BuildStatusReport> statusReports;
-    private HashSet<String> completedStages;
-    private Hashtable<String, Stage> currentStages;
-    private Hashtable<String, Long> currentStagesStartTime;
-    private Hashtable<String, Stage> stages;
-    private String template;
-
-    /**
-     * Create an instance of {@link StageSummaryHandler}
-     * 
-     */
-    public StageSummaryHandler() {
-        this.statusReports = new ArrayList<BuildStatusReport>();
-        this.completedStages = new HashSet<String>();
-        this.currentStages = new Hashtable<String, Stage>();
-        this.currentStagesStartTime = new Hashtable<String, Long>();
-        log.debug("StageStatusHandler instantiated");
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public void handleBuildStarted(BuildEvent event) {
-
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public void handleBuildFinished(BuildEvent event) {
-        if (summarize && !currentStages.isEmpty()) {
-            Long currTime = getCurrentTime();
-            String reason = getReason(event.getException());
-            Map<String, Stage> tempStages = new Hashtable<String, Stage>(
-                    currentStages);
-            for (String stageName : tempStages.keySet()) {
-                endCurrentStage(stageName, tempStages.get(stageName), reason,
-                        currTime);
-            }
-
-        }
-        if (summarize && displaySummary) {
-            generateSummary(event.getProject());
-            displaySummary = false;
-            log.debug("Stage Summary generation completed");
-        }
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public void handleTargetStarted(BuildEvent event) {
-        Project project = event.getProject();
-        if (!summarize) {
-            StageSummary stageSummary = getStageSummary(project);
-            summarize = stageSummary != null
-                    && !stageSummary.getTemplate().trim().isEmpty();
-            lookup4Stages = summarize;
-            template = stageSummary.getTemplate();
-            log.debug("Is Project configured to display Stage Summary ? "
-                    + summarize);
-        }
-
-        if (lookup4Stages) {
-            log.debug("Loading stages....");
-            parseStages(event.getProject());
-            log.debug("Total no of stages loaded = " + stages.size());
-            lookup4Stages = false;
-        }
-
-        log.debug("Handling target - " + event.getTarget().getName());
-        if (summarize) {
-            Long currTime = getCurrentTime();
-            TreeMap<String, Stage> result = searchNewStage(event);
-            if (result != null && result.size() == 1) {
-                String stageName = result.firstKey();
-                Stage stage = result.get(stageName);
-                startNewStage(stageName, stage, currTime);
-            }
-        }
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public void handleTargetFinished(BuildEvent event) {
-        String currentTarget = event.getTarget().getName();
-        Long currTime = getCurrentTime();
-        String reason = getReason(event.getException());
-        if (summarize && !currentStages.isEmpty()) {
-            TreeMap<String, Stage> result = getCurrentStageToEnd(currentTarget);
-            if (!result.isEmpty()) {
-                String stageName = result.firstKey();
-                Stage stage = result.get(stageName);
-                endCurrentStage(stageName, stage, reason, currTime);
-            }
-        }
-    }
-
-    private TreeMap<String, Stage> getCurrentStageToEnd(String target) {
-        TreeMap<String, Stage> result = new TreeMap<String, Stage>();
-        for (String stageName : currentStages.keySet()) {
-            Stage stage = currentStages.get(stageName);
-            if (stage.isEndTarget(target)) {
-                result.put(stageName, stage);
-                break;
-            }
-        }
-        return result;
-    }
-
-    /**
-     * Method returns the configured {@link StageSummary}.
-     * 
-     * @param project
-     *            is the project to lookup for stageSummary.
-     * @return the {@link StageSummary}.
-     */
-    @SuppressWarnings("unchecked")
-    private StageSummary getStageSummary(Project project) {
-        StageSummary stageSummary = null;
-        int count = 0;
-        Hashtable<String, Object> references = project.getReferences();
-        for (Enumeration<String> en = references.keys(); en.hasMoreElements();) {
-            Object object = references.get(en.nextElement());
-            if (object instanceof StageSummary) {
-                count++;
-                if (count > 1) {
-                    raiseException("Multiple entries of 'hlm:stagesummary' found in "
-                            + "stages_config.ant.xml.");
-                }
-                stageSummary = (StageSummary) object;
-            }
-        }
-        return stageSummary;
-    }
-
-    /**
-     * Raise a {@link BuildException} with the specified error message.
-     * 
-     * @param message
-     *            is the error message to display.
-     */
-    private void raiseException(String message) {
-        throw new BuildException(message);
-    }
-
-    /**
-     * Start the given stage as a new build stage.
-     * 
-     * @param stageName
-     *            is the name of the new stage.
-     * @param newStage
-     *            is the build stage to start as new.
-     * @param startTime
-     *            is the start time of the given build stage.
-     */
-    private void startNewStage(String stageName, Stage newStage, Long startTime) {
-        if (!currentStages.containsKey(stageName)) {
-            this.currentStages.put(stageName, newStage);
-            this.currentStagesStartTime.put(stageName, startTime);
-            log.debug("New stage [" + stageName + "] started at "
-                    + getTimestamp(startTime));
-        }
-    }
-
-    /**
-     * End the current stage.
-     * 
-     * @param reason
-     *            is the reason for build failure if any.
-     * @param currTime
-     *            is the end time of the current stage.
-     */
-    private void endCurrentStage(String currentStageName, Stage currentStage,
-            String reason, Long currTime) {
-        if (currentStage != null) {
-            BuildStatusReport report = constructBuildStatusReport(
-                    currentStageName, currentStagesStartTime
-                            .get(currentStageName), currTime, reason);
-            statusReports.add(report);
-            displaySummary = true;
-            log.debug("Stage [" + currentStageName + "] finished at "
-                    + getTimestamp(currTime));
-            reset(currentStageName);
-        }
-    }
-
-    /**
-     * Reset the build stage variables to default.
-     */
-    private void reset(String stageName) {
-        this.currentStages.remove(stageName);
-        this.currentStagesStartTime.remove(stageName);
-        this.completedStages.add(stageName);
-    }
-
-    /**
-     * Search for the new Stage based on the given build event.
-     * 
-     * @param event
-     *            is the build event fired.
-     * @return a map with Stage Name and stage, if the build event marks the
-     *         start of a configured Stage.
-     */
-    private TreeMap<String, Stage> searchNewStage(BuildEvent event) {
-        TreeMap<String, Stage> result = new TreeMap<String, Stage>();
-        String target = event.getTarget().getName();
-        for (String stageName : stages.keySet()) {
-            Stage stage = stages.get(stageName);
-            if (!completedStages.contains(stageName)
-                    && isStartingTarget(target, event.getProject(), stage)) {
-                result.put(stageName, stage);
-                break;
-            }
-        }
-        return result;
-    }
-
-    /**
-     * Return whether the given target is a starting target of the given stage.
-     * 
-     * @param targetName
-     *            is the target to check.
-     * @param project
-     *            is the project to lookup for target
-     * @param stage
-     *            is the stage to check.
-     * @return
-     */
-    @SuppressWarnings("unchecked")
-    private boolean isStartingTarget(String targetName, Project project,
-            Stage stage) {
-        boolean bool = false;
-        if (project.getTargets().containsKey(stage.getStartTarget())) {
-            Vector<Target> dependencies = project.topoSort(stage
-                    .getStartTarget(), project.getTargets(), false);
-            if (!dependencies.isEmpty()) {
-                Target target = dependencies.firstElement();
-                bool = target.getName().equals(targetName);
-            }
-        }
-        return bool;
-    }
-
-    /**
-     * Parse and cache the stages configured.
-     * 
-     * @param project
-     *            is the project to lookup for stages.
-     */
-    @SuppressWarnings("unchecked")
-    private void parseStages(Project project) {
-        stages = new Hashtable<String, Stage>();
-        Hashtable<String, Object> references = project.getReferences();
-        for (Enumeration<String> en = references.keys(); en.hasMoreElements();) {
-            String key = en.nextElement();
-            Object value = references.get(key);
-            if (value instanceof Stage) {
-                stages.put(key, (Stage) value);
-            }
-        }
-    }
-
-    /**
-     * Return the reason for build failure in String format.
-     * 
-     * @param th
-     *            is the cause of build failure if any.
-     * @return String representing the build failure.
-     */
-    private String getReason(Throwable th) {
-        return (th != null) ? th.getMessage() : "";
-    }
-
-    /**
-     * Return the current time in milliseconds.
-     * 
-     * @return the current time in milliseconds.
-     */
-    private Long getCurrentTime() {
-        return System.currentTimeMillis();
-    }
-
-    /**
-     * Generate build summary.
-     * 
-     */
-    private void generateSummary(Project project) {
-        if (template != null) {
-            try {
-                Configuration cfg = new Configuration();
-                // get base dir and template name
-                StringTokenizer tokenizer = new StringTokenizer(template,
-                        File.separator);
-                StringBuffer baseDirBuf = new StringBuffer();
-                String templateName = null;
-                while (tokenizer.hasMoreElements()) {
-                    String str = (String) tokenizer.nextElement();
-                    if (str.endsWith(".ftl")) {
-                        templateName = str;
-                    } else {
-                        baseDirBuf.append(str).append(File.separator);
-                    }
-                }
-                File baseDir = new File(baseDirBuf.toString());
-                cfg.setTemplateLoader(new FileTemplateLoader(baseDir));
-                Template templ = cfg.getTemplate(templateName);
-                StringWriter writer = new StringWriter();
-                templ.process(getTemplateData(), writer);
-                project.log(writer.toString());
-            } catch (freemarker.core.InvalidReferenceException ivx) {
-                project.log("Invalid reference in config: ", ivx,
-                        Project.MSG_WARN);
-            } catch (freemarker.template.TemplateException e2) {
-                project.log("TemplateException: ", e2, Project.MSG_WARN);
-            } catch (java.io.IOException e) {
-                project.log("I/O Error during template conversion: ", e,
-                        Project.MSG_WARN);
-            }
-        }
-    }
-
-    /**
-     * Return the data-model to be merged with the template.
-     * 
-     * @return a Map representing template data-model.
-     */
-    private Map<String, Object> getTemplateData() {
-        Map<String, Object> templateMap = new HashMap<String, Object>();
-        templateMap.put("statusReports", new ArrayList<BuildStatusReport>(
-                statusReports));
-        return templateMap;
-    }
-
-    /**
-     * Get the given date as String format.
-     * 
-     * @param date
-     *            is the date to be formatted as String.
-     * @return given date formated as String
-     */
-    private String getTimestamp(long date) {
-        Date dt = new Date(date);
-        DateFormat formatter = DateFormat.getDateTimeInstance(DateFormat.SHORT,
-                DateFormat.SHORT);
-        String finishTime = formatter.format(dt);
-        return finishTime;
-    }
-
-    /**
-     * Get the time duration for the given start and end times in String format.
-     * 
-     * @param startTime
-     *            is the start time.
-     * @param endTime
-     *            is the end time.
-     * @return
-     */
-    private String getTimeElapsed(Long startTime, Long endTime) {
-        long timeElapsed = endTime - startTime;
-        return DateUtils.formatElapsedTime(timeElapsed);
-    }
-
-    /**
-     * Construct an instance of {@link BuildStatusReport} with the given
-     * details.
-     * 
-     * @param phaseName
-     *            is the name of the Phase.
-     * @param startTime
-     *            is the start time of the given Phase
-     * @param endTime
-     *            is the end time of given phase
-     * @param reason
-     *            is the cause of failure
-     * @return
-     */
-    private BuildStatusReport constructBuildStatusReport(String phaseName,
-            Long startTime, Long endTime, String reason) {
-        return new BuildStatusReport(phaseName, getTimestamp(startTime),
-                getTimeElapsed(startTime, endTime), reason);
-    }
-}
--- a/buildframework/helium/external/helium-antlib/logging/src/com/nokia/helium/logger/ant/listener/StatusAndLogListener.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,201 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-package com.nokia.helium.logger.ant.listener;
-
-import java.util.Vector;
-
-import org.apache.tools.ant.BuildEvent;
-import org.apache.tools.ant.BuildListener;
-import org.apache.tools.ant.SubBuildListener;
-import org.apache.tools.ant.Project;
-
-/**
- * <code>StatusAndLogListener</code> implements {@link BuildListener} and
- * listens to build events in particularly for activities such as ant logging
- * and displaying build stage summary at the end of build process.
- * 
- */
-public class StatusAndLogListener implements BuildListener, SubBuildListener {
-
-    private static Vector<Handler> handlers = new Vector<Handler>();
-    private static Project project;
-    
-    /**
-     * Default constructor
-     */
-    public StatusAndLogListener() {
-    }
-
-    /**
-     * Signals that the last target has finished. This event will still be fired
-     * if an error occurred during the build.
-     * 
-     * @param event
-     *            An event with any relevant extra information. Must not be
-     *            <code>null</code>.
-     * 
-     * @see BuildEvent#getException()
-     */
-    public void buildStarted(BuildEvent event) {
-        project = event.getProject();
-        for (Handler handler : handlers) {
-            handler.handleBuildStarted(event);
-        }
-        
-    }
-    /**
-     * Signals that a build has started. This event is fired before any targets
-     * have started.
-     * 
-     * @param event
-     *            An event with any relevant extra information. Must not be
-     *            <code>null</code>.
-     */
-    public void buildFinished(BuildEvent event) {
-        for ( Handler handler : handlers ) {
-            handler.handleBuildFinished( event );
-        }
-    }
-    
-
-    /**
-     * Signals that a target is starting.
-     * 
-     * @param event
-     *            An event with any relevant extra information. Must not be
-     *            <code>null</code>.
-     * 
-     * @see BuildEvent#getTarget()
-     */
-    public void targetStarted(BuildEvent event) {
-        for (Handler handler : handlers) {
-            handler.handleTargetStarted(event);
-        }
-    }
-
-    /**
-     * Signals that a target has finished. This event will still be fired if an
-     * error occurred during the build.
-     * 
-     * @param event
-     *            An event with any relevant extra information. Must not be
-     *            <code>null</code>.
-     * 
-     * @see BuildEvent#getException()
-     */
-    public void targetFinished(BuildEvent event) {
-        for (Handler handler : handlers) {
-            handler.handleTargetFinished(event);
-        }
-    }
-
-    /**
-     * Signals that a task is starting.
-     * 
-     * @param event
-     *            An event with any relevant extra information. Must not be
-     *            <code>null</code>.
-     * 
-     * @see BuildEvent#getTask()
-     */
-    public void taskStarted(BuildEvent event) {
-        // implement if needed
-    }
-
-    /**
-     * Signals that a task has finished. This event will still be fired if an
-     * error occurred during the build.
-     * 
-     * @param event
-     *            An event with any relevant extra information. Must not be
-     *            <code>null</code>.
-     * 
-     * @see BuildEvent#getException()
-     */
-    public void taskFinished(BuildEvent event) {
-        // implement if needed
-    }
-    
-    /**
-     * Signals that a subbuild has started. This event is fired before any targets have started. 
-     * @param event
-     */
-    public void subBuildStarted(BuildEvent event) {
-         
-    }
-    
-    /**
-     * Signals that the last target has finished. This event will still be fired if an error occurred during the build. 
-     * @param event
-     */
-    
-    public void subBuildFinished(BuildEvent event) {
-        
-    }
-    
-    
-
-    /**
-     * Signals a message logging event.
-     * 
-     * @param event
-     *            An event with any relevant extra information. Must not be
-     *            <code>null</code>.
-     * 
-     * @see BuildEvent#getMessage()
-     * @see BuildEvent#getException()
-     * @see BuildEvent#getPriority()
-     */
-    public void messageLogged(BuildEvent event) {
-        // implement if needed
-
-    }
-
-    /**
-     * Register the given handler.
-     * 
-     * @param handler
-     *            is the handler to register
-     */
-    public static void register ( Handler handler ) {
-        handlers.add( handler );
-    }
-    
-    /**
-     * Return root project name.
-     * @return
-     */
-    public static Project getProject() {
-      return project;   
-    }
-    
-    
-    /**
-     * Check and return required type handler.
-     * @param handlerType
-     * @return
-     */
-    public static Handler getHandler(Class handlerType) {
-        for (Handler handler : handlers) {
-            if (handlerType.isInstance(handler)) {
-                return handler;
-            }
-        }
-        return null;
-    }
-
-}
--- a/buildframework/helium/external/helium-antlib/logging/src/com/nokia/helium/logger/ant/listener/SubBuildEventHandler.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-package com.nokia.helium.logger.ant.listener;
-
-import org.apache.tools.ant.BuildEvent;
-
-/**
- * <code>Handler</code> is an interface which is used to handle the build events
- * which are of importance for ant logging and build stage summary display.
- * 
- *
- */
-public interface SubBuildEventHandler {
-
-    /**
-     * Method to handle SubBuild Started  events.
-     * @param event
-     */
-    void handleSubBuildStarted( BuildEvent event );
-    
-    /**
-     * Method to handle SubBuild Finished  events.
-     * @param event
-     */
-    void handleSubBuildFinished( BuildEvent event );
-    
-}
--- a/buildframework/helium/external/helium-antlib/logging/src/com/nokia/helium/logger/ant/listener/TargetEventHandler.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-package com.nokia.helium.logger.ant.listener;
-
-import org.apache.tools.ant.BuildEvent;
-
-/**
- * <code>Handler</code> is an interface which is used to handle the build events
- * which are of importance for ant logging and build stage summary display.
- * 
- *
- */
-public interface TargetEventHandler {
-
-   /**
-     * Method to handle Target started Event
-     * 
-     * @param event
-     */
-    
-    void handleTargetStarted( BuildEvent event );
-  
-   /**
-    * Method to handle target finish events.
-    * 
-    * @param event is the build event to be handled. 
-    */
-    void handleTargetFinished( BuildEvent event );
-   
-}
--- a/buildframework/helium/external/helium-antlib/logging/src/com/nokia/helium/logger/ant/listener/TaskEventHandler.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-package com.nokia.helium.logger.ant.listener;
-
-import org.apache.tools.ant.BuildEvent;
-
-/**
- * <code>Handler</code> is an interface which is used to handle the build events
- * which are of importance for ant logging and build stage summary display.
- * 
- *
- */
-public interface TaskEventHandler {
-
-   /**
-    * Method to handle Task Finished events.
-    * 
-    * @param event is the build event to be handled. 
-    */
-    void handleTaskFinished( BuildEvent event );
-
-   /**
-    * Method to handle Task Started( events.
-    * 
-    * @param event is the build event to be handled. 
-    */
-    void handleTaskStarted( BuildEvent event );
-    
-}
--- a/buildframework/helium/external/helium-antlib/logging/src/com/nokia/helium/logger/ant/taskdefs/LogRecorder.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,333 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-
-
-package com.nokia.helium.logger.ant.taskdefs;
-
-import java.util.Hashtable;
-import java.util.Vector;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.apache.tools.ant.BuildEvent;
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.Task;
-import org.apache.tools.ant.types.EnumeratedAttribute;
-import org.apache.tools.ant.types.LogLevel;
-
-import com.nokia.helium.logger.ant.listener.AntLogRecorderEntry;
-import com.nokia.helium.logger.ant.listener.AntLoggingHandler;
-import com.nokia.helium.logger.ant.listener.Handler;
-import com.nokia.helium.logger.ant.listener.StatusAndLogListener;
-import com.nokia.helium.logger.ant.types.RecordFilter;
-import com.nokia.helium.logger.ant.types.RecordFilterSet;
-
-/**
- * For recording ant logging output.
- *  
- * <pre>
- *      &lt;hlm:record name="${build.log.dir}/${build.id}_test.log" action="start" append="false" loglevel="info"&gt;
- *           &lt;hlm:recordfilterset refid="recordfilter.config"/&gt;
- *           &lt;hlm:recordfilter category="info" regexp="^INFO:" /&gt;
- *      &lt;/hlm:record&gt;
- *      
- * </pre>
- * 
- * @ant.task name="Record" category="Logging".
- *
- */
-
-public class LogRecorder extends Task implements Handler {
-    
-    private static Hashtable<String, AntLogRecorderEntry> recorderEntries = new Hashtable<String, AntLogRecorderEntry>();
-    private String fileName;
-    private Boolean append ;
-    private Boolean start ;
-    private int loglevel = -1;
-    private boolean emacsMode ;
-    private Vector<RecordFilter> recordFilters = new Vector<RecordFilter>();
-    private Vector<RecordFilterSet> recordFilterSet = new Vector<RecordFilterSet>();
-    private Vector<String> regExpList = new Vector<String>();
-    
-    
-    public LogRecorder() {
-        
-    }
-    /**
-     * Run by the task.
-     */
-    
-    public void execute () {
-        
-        AntLoggingHandler antLoggingHandler  = (AntLoggingHandler)StatusAndLogListener.getHandler(AntLoggingHandler.class);
-        
-        /* To validate attributes passed. */
-        validateAttributes();
-        
-        /* to add regular filters */
-        addAllRecordFilters();
-        
-        
-        /* Init password/record filter and replace any unset properties */
-        initAndReplaceProperties();
-        
-     // get the recorder entry
-        AntLogRecorderEntry recorder = getRecorder(fileName, getProject());
-        // set the values on the recorder
-        recorder.setMessageOutputLevel(loglevel);
-        recorder.setEmacsMode(emacsMode);
-        if (start != null) {
-            if (start.booleanValue()) {
-                if (antLoggingHandler != null) {
-                    if (antLoggingHandler.getCurrentStageName() != null) {
-                        antLoggingHandler.doLoggingAction(antLoggingHandler.getCurrentStageName(), false, "Stopping", this);
-                    } else {
-                        antLoggingHandler.doLoggingAction("default", false, "Stopping", this);
-                    }
-                }
-                recorder.reopenFile();
-                recorder.setRecordState(start);
-            } else {
-                recorder.setRecordState(start);
-                recorder.closeFile();
-                if (antLoggingHandler != null) {
-                    if (antLoggingHandler.getCurrentStageName() != null) {
-                        antLoggingHandler.doLoggingAction(antLoggingHandler.getCurrentStageName(), true, "Starting", this);
-                    } else {
-                        antLoggingHandler.doLoggingAction("default", true, "Starting", this);
-                    }
-                }
-            }
-        }
-        
-    }
-    /**
-     * To Validate is the fileName set for recording.
-     */
-    private void validateAttributes() {
-        if (fileName == null) {
-            throw new BuildException("filename attribute should be specified for helium recorder task.");
-        }
-        
-    }
-
-    /**
-     * Set the file name to recod.
-     * @param fileName
-     * @ant.required
-     */
-    public void setName(String fileName) {
-        this.fileName = fileName;
-    }
-    
-    /**
-     * Return the fileName.
-     * @return
-     */
-    public String getName() {
-        return this.fileName;
-    }
-    
-    /**
-     * Set the append parameter.
-     * @param append
-     * @ant.not-required
-     */
-    public void setAppend(boolean append) {
-        this.append = append ? Boolean.TRUE : Boolean.FALSE;
-    }
-    
-    /**
-     * Set logLevel to log the information.
-     * @param level
-     * @ant.not-required
-     */
-    public void setLoglevel(VerbosityLevelChoices level) {
-        loglevel = level.getLevel();
-    }
-    
-    /**
-     * Set the EmacsMode.
-     * @param emacsMode
-     * @ant.not-required
-     */
-    public void setEmacsMode(boolean emacsMode) {
-        this.emacsMode = emacsMode;
-    }
-    
-    /**
-     * Return the emacsMode.
-     * @return
-     */
-    public boolean getEmacsMode() {
-        return this.emacsMode;
-    }
-    
-    /**
-     * create the type of recorderfilter.
-     * @param logFilter
-     */
-    public void addRecordFilter(RecordFilter logFilter) {
-        if (!recordFilters.contains(logFilter)) {
-            recordFilters.add(logFilter);
-        }
-    }
-    
-    /**
-     * Create the type of recoderfilterset
-     * @param logFilterSet
-     */
-    public void addRecordFilterSet(RecordFilterSet logFilterSet) {
-        if (!recordFilterSet.contains(logFilterSet)) {
-            recordFilterSet.add(logFilterSet);
-        }
-    }
-    
-    /**
-     * Set the action of stop/start.
-     * @param action
-     * @ant.not-required
-     */
-    public void setAction(ActionChoices action) {
-        if (action.getValue().equalsIgnoreCase("start")) {
-            start = Boolean.TRUE;
-        } else {
-            start = Boolean.FALSE;
-        }
-    }
-    
-    /**
-     * To get the action state of current recorder.
-     * @return
-     */
-    public boolean getAction() {
-        return start.booleanValue();
-    }
-    
-    
-    /**
-     * A list of possible values for the <code>setAction()</code> method.
-     * Possible values include: start and stop.
-     */
-    public static class ActionChoices extends EnumeratedAttribute {
-        private static final String[] VALUES = {"start", "stop"};
-
-        /**
-         * @see EnumeratedAttribute#getValues()
-         */
-        /** {@inheritDoc}. */
-        public String[] getValues() {
-            return VALUES;
-        }
-    }
-    
-    /**
-     * To set the verbosity levels
-     * 
-     *
-     */
-    public static class VerbosityLevelChoices extends LogLevel {
-    }
-    
-    
-    /**
-     * To register the recorder entry
-     */
-    @SuppressWarnings("unchecked")
-    protected AntLogRecorderEntry getRecorder(String name, Project proj) {
-        Object o = recorderEntries.get(name);
-        AntLogRecorderEntry entry;
-        if (o == null) {
-            // create a recorder entry
-            entry = new AntLogRecorderEntry(name);
-            for (String regExp : regExpList) {
-                if (!regExp.equals("")) {
-                    String pattern = Pattern.quote(regExp);
-                    entry.addRegexp(pattern);
-                }
-            }
-            
-            if (append == null) {
-                entry.openFile(false);
-            } else {
-                entry.openFile(append.booleanValue());
-            }
-            entry.setProject(proj);
-            recorderEntries.put(name, entry);
-        } else {
-            entry = (AntLogRecorderEntry) o;
-        }
-        return entry;
-    }
-    
-    /**
-     * Get all the recorderfilters from recorderfilterset refid.
-     */
-    public void addAllRecordFilters() {
-        for (RecordFilterSet recFilterSet : recordFilterSet ) {
-            recordFilters.addAll(recFilterSet.getAllFilters());
-        }
-    }
-    
-    public void handleBuildFinished(BuildEvent event) {
-        // TODO Auto-generated method stub
-
-    }
-
-    public void handleBuildStarted(BuildEvent event) {
-        // TODO Auto-generated method stub
-
-    }
-
-    public void handleTargetFinished(BuildEvent event) {
-        // TODO Auto-generated method stub
-    }
-
-    public void handleTargetStarted(BuildEvent event) {
-        // TODO Auto-generated method stub
-
-    }
-    
-    /**
-     * To init password and record filters. 
-     * Replace with values if any property values are unset.
-     */
-    @SuppressWarnings("unused")
-    public void initAndReplaceProperties() {
-        
-        Pattern pattern = null; 
-        Matcher match = null;
-        for (RecordFilter recordFilter : recordFilters) { 
-            if (recordFilter.getRegExp() == null) {
-                throw new BuildException("\"regexp\" attribute should not have null value for recordfilter");
-            }
-            if (recordFilter.getRegExp() != null) {
-                pattern = Pattern.compile("\\$\\{(.*)}");
-                match = pattern.matcher(recordFilter.getRegExp());
-                if (match.find()) {
-                    regExpList.add(getProject().replaceProperties(recordFilter.getRegExp()));
-                } else {
-                    regExpList.add(recordFilter.getRegExp());
-                }
-            }
-        }
-    }
-    
-
-}
--- a/buildframework/helium/external/helium-antlib/logging/src/com/nokia/helium/logger/ant/taskdefs/LogReplace.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,74 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-package com.nokia.helium.logger.ant.taskdefs;
-
-import java.util.regex.Pattern;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Task;
-
-import com.nokia.helium.logger.ant.listener.AntLoggingHandler;
-import com.nokia.helium.logger.ant.listener.StatusAndLogListener;
-
-/**
- * To replace the property values with real values if the properties are not set at the begining of the build.
- * 
- * pre>
- *      &lt;hlm:logreplace regexp="${property.not.set}"/&gt;
- * </pre>
- * 
- * @ant.task name="logreplace" category="Logging".
- */
-public class LogReplace extends Task {
-    
-    private String regExp;
-    
-    /**
-     * Run by the task.
-     */
-    
-    public void execute () {
-        
-        AntLoggingHandler antLoggingHandler  = (AntLoggingHandler)StatusAndLogListener.getHandler(AntLoggingHandler.class);
-        
-        if (regExp == null ) {
-            throw new BuildException ("'regexp' attribute should not be null.");
-        }
-        
-        if (antLoggingHandler != null) {
-            String pattern = Pattern.quote(regExp);
-            antLoggingHandler.addRegExp(pattern);
-        }
-    }
-
-    /**
-     * @param regExp the regExp to set
-     * @ant.required
-     */
-    public void setRegExp(String regExp) {
-        this.regExp = regExp;
-    }
-
-    /**
-     * @return the regExp
-     */
-    public String getRegExp() {
-        return regExp;
-    }
-    
-
-}
--- a/buildframework/helium/external/helium-antlib/logging/src/com/nokia/helium/logger/ant/types/RecordFilter.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-package com.nokia.helium.logger.ant.types;
-
-import org.apache.tools.ant.types.DataType;
-
-/**
- * Recorder Filter will be used to filter the ant logging output.
- * 
- *  To get the lines which matches the regular expression.
- *  
- * <pre>
- *      &lt;hlm:recordfilter category="info" regexp="ERROR"/&gt;
- *      &lt;hlm:recordfilter category="warn" regexp="^WARN"/&gt;
- * </pre>
- * 
- * @ant.task name="Recordfilter" category="Logging".
- *
- */
-
-public class RecordFilter extends DataType {
-    
-    private String category;
-    private String regExp;
-    
-    
-    /**
-     * Set category.
-     * @param category
-     * @ant.not-required
-     */
-    public void setCategory(String category) {
-        this.category = category;
-    }
-    
-    /**
-     * Return the category.
-     * @return
-     */
-    public String  getCategory() {
-        return this.category;
-    }
-    
-    /**
-     * Sets the regExp.
-     * @param regExp
-     * @ant.required
-     */
-    public void setRegExp(String regExp) {
-        this.regExp = regExp;
-    }
-    
-    
-    /**
-     * get the regExp.
-     * @return
-     */
-    public String  getRegExp() {
-        return this.regExp;
-    }
-
-}
--- a/buildframework/helium/external/helium-antlib/logging/src/com/nokia/helium/logger/ant/types/RecordFilterSet.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,87 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-package com.nokia.helium.logger.ant.types;
-
-import java.util.Vector;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.types.DataType;
-import org.apache.tools.ant.types.Reference;
-
-/**
- * Recorder Filter set will be used to group the recorder filters to filter ant logging output.
- * 
- *  To get the lines which matches the regular expression.
- *  
- * <pre>
- *      &lt;hlm:recordfilterset id="recordfilter.config"&gt;
- *          &lt;hlm:recordfilter category="error" regexp="Hello" /&gt;
- *          &lt;hlm:recordfilter category="warning" regexp="echo" /&gt;
- *          &lt;hlm:recordfilter category="info" regexp="ERROR" /&gt;
- *      &lt;/hlm:recordfilterset>
- *      
- * </pre>
- * 
- * @ant.task name="Recordfilterset" category="Logging".
- *
- */
-
-public class RecordFilterSet extends DataType {
-    
-    private Vector<RecordFilter> recordFilters = new Vector<RecordFilter>();
-    
-    public RecordFilterSet() {
-    }
-    
-    /**
-     * Add the recordefilter type into recordfilterset.
-     * @param logFilter
-     */
-    public void addRecordFilter(RecordFilter logFilter) {
-        if (!recordFilters.contains(logFilter)) {
-            recordFilters.add(logFilter);
-        }
-    }
-    
-    
-    /**
-     * return all the recorderfilters associated with current recorderfilterset.
-     * @return
-     */
-    public Vector<RecordFilter> getAllFilters() {
-        Vector<RecordFilter> allFilters = new Vector<RecordFilter>();
-        if (recordFilters.size() > 0) {
-            allFilters.addAll(recordFilters);
-            return allFilters;
-        }
-        Reference refId = getRefid();
-        Object filterSetObject = null;
-        if (refId != null) {
-            try {
-                filterSetObject = refId.getReferencedObject();
-            } catch ( Exception ex) {
-                throw new BuildException("Reference id of the record filter is not valid. " + ex.getMessage(), ex);
-            }
-            if (filterSetObject != null && filterSetObject instanceof RecordFilterSet) {
-                allFilters.addAll(((RecordFilterSet)filterSetObject).getAllFilters());
-                return allFilters;
-            }
-        }
-        return allFilters;
-    }
-
-}
--- a/buildframework/helium/external/helium-antlib/logging/src/com/nokia/helium/logger/ant/types/Stage.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,106 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-package com.nokia.helium.logger.ant.types;
-
-import org.apache.tools.ant.types.DataType;
-
-
-/**
- * A <code>Stage</code> is a Data type which stores Stage information.
- * 
- * <p>
- * A Stage is defined by setting three attributes name, start and end targets, both should be a
- * valid target name in the project.
- * 
- * <p>
- * Usage:
- * 
- * <pre>
- *      &lt;hlm:stage id="preparation" starttarget="stagetest" endtarget="stagetest"/&gt;              
- * </pre>
- *  
- * @ant.task name="stage" category="Logging"
- * 
- */
-public class Stage extends DataType {
-
-    private String startTarget;
-    private String endTarget;
-
-    public Stage() {
-        
-    }
-    /**
-     * Get the starting point of this {@link Stage}.
-     * 
-     * @return the starting point of this {@link Stage}.
-     */
-    public String getStartTarget() {
-        return this.startTarget;
-    }
-
-    /**
-     * Set the starting target.
-     * 
-     * @param start
-     *            is the starting point to set.
-     * @ant.required
-     */
-    public void setStartTarget(String startTarget) {
-        this.startTarget = startTarget;
-    }
-
-    /**
-     * Get the end point of this {@link Stage}.
-     * 
-     * @return the end point of this {@link Stage}.
-     * 
-     */
-    public String getEndTarget() {
-        return this.endTarget;
-    }
-
-    /**
-     * Set the end target.
-     * 
-     * @param end
-     *            is the end point to set.
-     * @ant.required
-     */
-    public void setEndTarget(String endTarget) {
-        this.endTarget = endTarget;
-    }
-    
-    /**
-     * Check is the start target set to current target. 
-     * @param target
-     * @return
-     */
-    public boolean isStartTarget ( String target ) {
-        return this.startTarget.equals( target );
-    }
-    
-    /** Check is the end target set to current target.
-     * 
-     * @param target
-     * @return
-     */
-    public boolean isEndTarget ( String target ) {
-        return this.endTarget.equals( target );
-    }
-    
-}
--- a/buildframework/helium/external/helium-antlib/logging/src/com/nokia/helium/logger/ant/types/StageLogging.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,158 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-package com.nokia.helium.logger.ant.types;
-
-import org.apache.tools.ant.types.DataType;
-import com.nokia.helium.logger.ant.listener.AntLoggingHandler;
-import com.nokia.helium.logger.ant.listener.StatusAndLogListener;
-import org.apache.log4j.Logger;
-
-/**
- * A 'StageRecord' is a Data type which stores attributes for stage recording/logging.
- * 
- * 
- * Usage:
- * <pre>
- * &lt;hlm:stagerecord id="record.default" defaultoutput="${build.log.dir}/${build.id}_main.ant.log" loglevel="info" append="false"/&gt;
- *      
- *                  
- * &lt;hlm:stagerecord id="record.prep"  
- *                  stagerefid="preparation" 
- *                  output="${build.log.dir}/${build.id}_prep.ant.log" 
- *                  loglevel="info"
- *                  append="false"/&gt;
- *                                  
- * </pre>
- * 
- * 
- * @ant.task name="stagerecord" category="Logging"
- */
-public class StageLogging extends DataType {
-    
-    private static boolean isAntLoggerRegistered;
-    private String logLevel = "info";
-    private String logFile;
-    private String defaultLogFile;
-    private Boolean append;
-    private String stageRefId;
-    private Logger log = Logger.getLogger(StageLogging.class);
-    /**
-     * Constructor which will register the logging handler
-     */
-    public StageLogging () {
-        if (!isAntLoggerRegistered) {
-            StatusAndLogListener.register(new AntLoggingHandler());
-            log.debug("Registering stage record to StatusAndLogListener listener");
-            isAntLoggerRegistered = true;
-        }
-    }
-    
-    /**
-     * Sets output log file name.
-     * @param outPut
-     * @ant.required
-     */
-    
-    public void setOutput(String outPut) {
-        this.logFile = outPut;
-    }
-    
-    /**
-     * Returns output log file name.
-     * @return
-     */
-    
-    public String getOutput() {
-        return this.logFile;
-    }
-    
-    /**
-     * Sets log level for respective stage.
-     * @param logLevel
-     * @ant.not-required
-     */
-    
-    public void setLogLevel(String logLevel) {
-        this.logLevel = logLevel;
-    }
-    
-    /**
-     * Returns log level of respective stage.
-     * @return
-     */
-    
-    public String getLogLevel() {
-        return this.logLevel;
-    }
-    
-    /**
-     * Get the name of this StageRefID.
-     * 
-     * @return name of the Phase.
-     */
-    public String getStageRefID() {
-        return this.stageRefId;
-    }
-
-    /**
-     * Set the name of the StageRefID.
-     * 
-     * @param name
-     *            is the name to set.
-     * @ant.required
-     */
-    public void setStageRefId(String name) {
-        this.stageRefId = name;
-    }
-    
-    /**
-     * Return default ant log file name.
-     * @return
-     */
-    public String getDefaultOutput() {
-        return this.defaultLogFile;
-    }
-
-   /**
-    * Set the default ant log name.
-    * @param name
-    * @ant.required
-    */
-    public void setDefaultOutput(String name) {
-        this.defaultLogFile = name;
-    }
-    
-    /**
-     * Set append value.
-     * @param append
-     * @ant.not-required
-     */
-    public void setAppend(boolean append) {
-        this.append = append ? Boolean.TRUE : Boolean.FALSE;
-    }
-    
-    /**
-     * Return the append value.
-     * @param append
-     * @return
-     */
-    public Boolean getAppend() {
-        return this.append;
-    }
-    
-     
-}
--- a/buildframework/helium/external/helium-antlib/logging/src/com/nokia/helium/logger/ant/types/StageSummary.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
-/*
- * Copyright (c) 2007-2008 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:  
- *
- */
-package com.nokia.helium.logger.ant.types;
-
-import org.apache.tools.ant.types.DataType;
-
-import com.nokia.helium.logger.ant.listener.StageSummaryHandler;
-import com.nokia.helium.logger.ant.listener.StatusAndLogListener;
-
-/**
- * <code>StageSummary</code> is a Data type when set a build summary is 
- * displayed at the end of build process.
- * 
- * <pre>
- * Usage:
- *       &lt;hlm:stagesummary id=&quot;stage.summary&quot; 
- *          template=&quot;${template.dir}\build_stages_summary.txt.ftl&quot;/&gt;
- * </pre>
- * 
- * @ant.task name="stagesummary" category="Logging"
- * 
- */
-public class StageSummary extends DataType {
-
-    private static boolean isStageSummaryHandlerRegistered;
-    
-    private String template;
-
-    public StageSummary () {
-        if ( !isStageSummaryHandlerRegistered ) {
-            StatusAndLogListener.register( new StageSummaryHandler() );
-            isStageSummaryHandlerRegistered = true;
-        }
-    }
-    
-    /**
-     * Get the template used for displaying build stage summary.
-     * 
-     * @return the template to display build stage summary.
-     */
-    public String getTemplate () {
-        return template;
-    }
-
-    /**
-     * Set the template to be used for displaying build stage summary.
-     * 
-     * @param template
-     *            the template to set
-     * @ant.required           
-     */
-    public void setTemplate ( String template ) {
-        this.template = template;
-    }
-}
--- a/buildframework/helium/external/helium-antlib/logging/src/templates/build_stages_summary.txt.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-<#--
-============================================================================ 
-Name        : build_stages_summary.txt.ftl 
-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:
-
-============================================================================
---> 
-
-*** BUILD STAGE SUMMARY ***
-
-<#assign count = 0>
-<#list statusReports as report>
-<#assign count = count + 1>
-${count}) ${report["phaseName"]}
-${""?left_pad(2)} Start Time : ${report["startTime"]}
-${""?left_pad(2)} Duration   : ${report["duration"]}
-${""?left_pad(2)} Status     : ${report["status"]}
-<#if  report["status"] == "FAILED">
-${""?left_pad(2)} Reason     : ${report["reason"]}
-</#if>
-</#list>
--- a/buildframework/helium/external/helium-antlib/logging/tests/antunit/test_stageslogging.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : test_signaltask.ant.xml 
-Part of     : Helium AntLib
-
-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="test-stage" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
-    <description>Helium Antlib Signal unittests.</description>
-    
-    
-    <property environment="env"/>
-
-    <import file="../stages_config.ant.xml" />
-    <import file="../build.xml" />        
-    <target name="test-stages" depends="run-stages">    
-        <au:assertFileExists file="${build.log.dir}/${build.id}_main.ant.log"/>
-        <au:assertFileExists file="${build.log.dir}/${build.id}_prep.ant.log"/>
-        <au:assertFileExists file="${build.log.dir}/${build.id}_compile.ant.log"/>
-        <au:assertFileExists file="${build.log.dir}/${build.id}_stagetest.log"/>
-        
-        
-        <loadfile srcfile="${build.log.dir}/${build.id}_stagetest.log" property="recordfilter.task.log">
-            <filterchain>
-                <linecontainsregexp>
-                    <regexp pattern="ERROR"/>
-                </linecontainsregexp>
-            </filterchain>
-        </loadfile>
-        <au:assertTrue message="record task is not doing the record filtering">
-            <not>
-                <isset property="recordfilter.task.log"/>
-            </not>
-        </au:assertTrue>
-        
-        <loadfile srcfile="${build.log.dir}/${build.id}_stagetest.log" property="passwordfilter.task.log">
-            <filterchain>
-                <linecontainsregexp>
-                    <regexp pattern="synergy"/>
-                </linecontainsregexp>
-            </filterchain>
-        </loadfile>
-        <au:assertTrue message="record task is not doing the password filtering">
-            <not>
-                <isset property="passwordfilter.task.log"/>
-            </not>
-        </au:assertTrue>
-        
-        <loadfile srcfile="${build.log.dir}/${build.id}_stagetest.log" property="passwordfilter.log">
-            <filterchain>
-                <linecontainsregexp>
-                    <regexp pattern="something"/>
-                </linecontainsregexp>
-            </filterchain>
-        </loadfile>
-        <au:assertTrue message="record task is not doing the password filtering">
-            <not>
-                <isset property="passwordfilter.log"/>
-            </not>
-        </au:assertTrue>
-    
-        
-    </target>
- 
-</project>
--- a/buildframework/helium/external/helium-antlib/logging/tests/bld.sh	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-#!/bin/bash
-
-#
-# 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: 
-#
-
-if [ -f ~/.bashrc ] ; then
-	. ~/.bashrc
-fi
-MODULE_VERSION="$(module --version 2>&1)"
-if [ "$?" == "0" ] ; then
-    module load "java/1.6.0"
-    module load "tww/ant/1.7.1"
-fi
-export TEMP="/tmp/$USER"
-
-export ANT_ARGS="-lib ../lib -lib ../../lib -lib ../../bin/helium-logging.jar -lib ../../antlibs -listener com.nokia.helium.logger.ant.listener.StatusAndLogListener"
-ant $*
--- a/buildframework/helium/external/helium-antlib/logging/tests/build.bat	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-@echo off
-
-rem
-rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-rem All rights reserved.
-rem This component and the accompanying materials are made available
-rem under the terms of the License "Eclipse Public License v1.0"
-rem which accompanies this distribution, and is available
-rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
-rem
-rem Initial Contributors:
-rem Nokia Corporation - initial contribution.
-rem
-rem Contributors:
-rem
-rem Description: 
-rem
-
-setlocal
-if not defined JAVA_6_HOME (
-set TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
-) ELSE  set TESTED_JAVA=%JAVA_6_HOME%
-if exist %TESTED_JAVA% (set JAVA_HOME=%TESTED_JAVA%)
-set ANT_ARGS=-lib %CD%\..\lib -lib %CD%\..\..\lib -lib %CD%\..\..\bin\helium-logging.jar -lib %CD%\..\..\antlibs -lib ..\..\bin\helium-core.jar -listener com.nokia.helium.logger.ant.listener.StatusAndLogListener
-ant -Dant.executor.class=com.nokia.helium.core.ant.HeliumExecutor %*
-endlocal
-
--- a/buildframework/helium/external/helium-antlib/logging/tests/build.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,114 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : build.xml 
-Part of     : Helium AntLib
-
-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="helium-antlib-unittest" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
-    <description>Helium Antlib Logging unittests.</description>
-    
-    
-    <import file="../../test-macros.ant.xml" />
-    <dirname property="stages.test.dir" file="${ant.file.helium-antlib-unittest}"/>
-    <property name="template.dir" location="../src/templates"/>
-    <target name="unittest" depends="unittest-logging" />
-
-    <target name="unittest-logging">
-        <antunitModule name="logging" />
-    </target>
-    
-    <property environment="env"/>
-    
-    <taskdef resource="net/sf/antcontrib/antlib.xml"/>
-    
-    <property name="build.log.dir" location="${stages.test.dir}\logs"/>
-    <property name="build.log" location="${stages.test.dir}\logs\${build.id}_test.log"/>
-    <property name="build.cache.log.dir" location="${stages.test.dir}\logs"/>
-    <property name="build.id" value="ant-logging-test"/>
-    <property name="display" value="Message for testing"/>
-    <import file="stages_config.ant.xml" />       
-    
-    <target name="run-stages">
-        
-        <echo> Before calling target </echo> 
-        <echo>grace</echo>
-        
-        <antcall target="hello-test"/>
-        <antcall target="compile"/>
-        <ant antfile="${stages.test.dir}/prep-ccm-get-input.ant.xml" target="prep-ccm-get-input"/>
-        
-        <echo> After calling target </echo>
-    </target>
-    
-    <target name="compile" depends="creatbom,get-env"/>
-    
-    
-    <hlm:recordfilterset id="recordfilter.config">
-        <hlm:recordfilter category="info" regexp="ERROR" />
-    </hlm:recordfilterset>
-    
-    <target name="hello-test" depends="get-password">
-        
-        <hlm:record name="${build.log.dir}/${build.id}_stagetest.log" action="start" loglevel="info">
-            <hlm:recordfilterset refid="recordfilter.config"/>
-            <hlm:recordfilter category="unix" regexp="${unix.password}" />
-            <hlm:recordfilter category="synergy" regexp="synergy" />
-        </hlm:record>
-        
-        <antcall target="stagetest">
-            <param name="display" value="Inside stage test for first time synergy ERROR"/>
-        </antcall>
-        <antcall target="stagetest">
-            <param name="display" value="Inside stage test for second time grace INFO"/>
-        </antcall>
-        
-        <hlm:record name="${build.log.dir}/${build.id}_stagetest.log" action="stop" append="true" />
-        <echo>unix-password = ${unix.password}</echo>
-        <property name="ats.password" value="password"/>
-        <hlm:logreplace regexp="${ats.password}"/>
-        <echo>ats-password = ${ats.password}</echo>
-        <antcall target="get-env"/>
-        <antcall target="hello"/>
-        
-    </target>
-    
-    <target name="stagetest" >
-        <echo>${unix.password}</echo>
-        <echo>synergy</echo>
-        <echo> Hello... inside stagetest target ${display}</echo>
-    </target>
-    
-    <target name="creatbom">
-        <echo> Hello... inside creatbom target </echo>
-    </target>
-    
-    <target name="get-env">
-        <echo> Hello... inside get-env target ${display} </echo>
-    </target>
-    
-    <target name="hello">
-        <echo> Hello... inside hello target ${display} </echo>
-    </target>
-    
-    <target name="get-password">
-        <property name="unix.password" value="something"/>
-        <hlm:logreplace regexp="${unix.password}"/>
-    </target>
-
-</project>
--- a/buildframework/helium/external/helium-antlib/logging/tests/build_stages_summary.txt.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-<#--
-============================================================================ 
-Name        : build_stages_summary.txt.ftl 
-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:
-
-============================================================================
---> 
-
-*** BUILD STAGE SUMMARY ***
-
-<#assign count = 0>
-<#list statusReports as report>
-<#assign count = count + 1>
-${count}) ${report["phaseName"]}
-${""?left_pad(2)} Start Time : ${report["startTime"]}
-${""?left_pad(2)} Duration   : ${report["duration"]}
-${""?left_pad(2)} Status     : ${report["status"]}
-<#if  report["status"] == "FAILED">
-${""?left_pad(2)} Reason     : ${report["reason"]}
-</#if>
-</#list>
--- a/buildframework/helium/external/helium-antlib/logging/tests/prep-ccm-get-input.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : prep-ccm-get-input.ant.xml 
-Part of     : Helium AntLib
-
-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="prep-ccm-get-input" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
-    <description>Helium Antlib Logging unittests.</description>
-        
-    
-    <property environment="env"/>
-    
-    
-    <target name="prep-ccm-get-input">
-        <antcall target="prep">
-            <param name="display" value="Inside prep target for first time"/>
-        </antcall>
-        <antcall target="prep">
-            <param name="display" value="Inside prep target for second time"/>
-        </antcall>
-        <antcall target="init"/>
-        <antcall target="ccm-get-input"/>
-    </target>
-    
-    <target name="prep">
-        <echo> Hello... Inside Prep target ${display}</echo>
-    </target>
-    
-    <target name="ccm-get-input">
-        <echo> Hello... Inside ccm-get-input target </echo>
-    </target>
-    
-    <target name="init">
-        <echo> Hello... Inside init target ${display} </echo>
-    </target> 
-    
-
-</project>
--- a/buildframework/helium/external/helium-antlib/logging/tests/stages_config.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : stages_config.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="stages-config" xmlns:hlm="http://www.nokia.com/helium">
-    <description>
-    Definitions of helium stages. 
-    </description>
-    
-    <taskdef resource="com/nokia/helium/logger/ant/antlib.xml" uri="http://www.nokia.com/helium" />
-    
-    <dirname property="logging.test.project.dir" file="${ant.file.stages-config}" />
-    
-    <hlm:stagesummary id="stage.summary" template="${logging.test.project.dir}\build_stages_summary.txt.ftl" />
-
-    <hlm:stage id="preparation" starttarget="hello-test" endtarget="hello-test"/>
-    <hlm:stage id="compile" starttarget="compile" endtarget="compile"/>
-    <hlm:stage id="post" starttarget="prep-ccm-get-input" endtarget="prep-ccm-get-input"/>
-    
-    <hlm:stagerecord id="record.default" defaultoutput="${build.log.dir}/${build.id}_main.ant.log" loglevel="info" append="false"/>
-    
-    <hlm:stagerecord id="record.prep"  stagerefid="preparation" output="${build.log.dir}/${build.id}_prep.ant.log" loglevel="info" append="false"/>
-    
-    <hlm:stagerecord id="record.compile"  stagerefid="compile" output="${build.log.dir}/${build.id}_compile.ant.log" loglevel="info" append="false"/>
-    
-    <hlm:stagerecord id="record.post"  stagerefid="post" output="${build.log.dir}/${build.id}_post.ant.log" loglevel="info" append="false"/>
-    
-</project>
--- a/buildframework/helium/external/helium-antlib/macros.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,280 +0,0 @@
-<?xml version="1.0"?>
-<!-- 
-============================================================================ 
-Name        : macros.xml 
-Part of     : Helium AntLib
-
-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="build-macros" xmlns:au="org.apache.ant.antunit">
-    <description>Helium Antlib build macro.</description>
-    
-    <dirname property="helium.antlib.root.dir" file="${ant.file.build-macros}" />
-    <property name="build.temp.dir" location="${helium.antlib.root.dir}/../build" />
-    <property name="bin.dir" location="${basedir}/../bin" />
-
-    <path id="helium.antlib.classpath">
-        <fileset dir="${helium.antlib.root.dir}/lib" includes="*.jar" />
-        <fileset dir="${helium.antlib.root.dir}/antlibs" includes="*.jar" />
-    </path>
-    
-    <taskdef resource="net/sf/antcontrib/antlib.xml" classpathref="helium.antlib.classpath"/>
-    <taskdef resource="org/apache/ant/antunit/antlib.xml" uri="org.apache.ant.antunit" classpathref="helium.antlib.classpath"/>
-    
-    
-    <presetdef name="subantPreset">
-        <subant failonerror="true">
-            <resources refid="subant.build.files"/>
-        </subant>
-    </presetdef>
-    
-    
-    <macrodef name="compileModule">
-        <attribute name="name" />
-        <attribute name="dir" default="${helium.antlib.root.dir}" />
-        <sequential>
-            <mkdir dir="${build.temp.dir}/@{name}/classes" />
-            <javac srcdir="${basedir}/src" destdir="${build.temp.dir}/@{name}/classes"
-                   debug="true" source="1.6" target="1.6">
-                <classpath refid="helium.antlib.classpath" />
-                <classpath refid="helium.@{name}.classpath" />
-                <include name="**/*.java" />
-                <compilerarg value="-Xlint:unchecked" />
-                <compilerarg value="-Xlint:deprecation" />
-            </javac>
-        </sequential>
-    </macrodef>
-
-    
-    <macrodef name="jarModule">
-        <attribute name="name" />
-        <attribute name="dir" default="${helium.antlib.root.dir}" />
-        <attribute name="bindir" default="${bin.dir}" />
-        <sequential>
-            <echo>Packaging module @{name}</echo>
-            <mkdir dir="@{bindir}" />
-            <jar destfile="@{bindir}/helium-@{name}.jar">
-                <fileset dir="${build.temp.dir}/@{name}/classes" />
-                <fileset dir="${basedir}/src" includes="**/*.xml" />
-                <fileset dir="${basedir}/src" includes="**/*.*ftl" />
-                <fileset dir="${basedir}/src" includes="**/*.vm" />
-                
-                <manifest>
-                    <section name="common">
-                        <attribute name="Implementation-Title" value="@{name}" />
-                        <attribute name="Implementation-Vendor" value="Nokia" />
-                    </section>
-                </manifest>
-            </jar>
-        </sequential>
-    </macrodef>
-    
-
-    <macrodef name="testModule">
-        <attribute name="name" />
-        <attribute name="dir" default="${helium.antlib.root.dir}" />
-        <attribute name="bindir" default="${bin.dir}" />
-        <sequential>
-            <mkdir dir="${build.temp.dir}" />
-            <if>
-                <available type="dir" file="${basedir}/tests"/>
-                <then>
-                    <trycatch>
-                        <try>
-                            <!-- Temporarly replacing the jar file
-                                 with an instrumented one to do the 
-                                 actual coverage measurment
-                             -->
-                            <mkdir dir="${build.temp.dir}/@{name}/backup" />
-                            <delete>
-                                <fileset dir="${build.temp.dir}" includes="@{name}/**/*_antunit.emma" />
-                            </delete>
-                            <copy file="@{bindir}/helium-@{name}.jar" todir="${build.temp.dir}/@{name}/backup/" />
-                            <emma enabled="true">
-                                <instr destdir="@{bindir}/" metadatafile="${build.temp.dir}/@{name}/metadata_antunit.emma" merge="true" mode="overwrite">
-                                    <instrpath>
-                                        <fileset dir="@{bindir}" includes="helium-@{name}.jar" />
-                                    </instrpath>
-                                </instr>
-                            </emma>
-                            <exec osfamily="windows" executable="cmd" dir="${basedir}/tests">
-                                <env key="ANT_LIB_HOME" path="${helium.antlib.root.dir}" />
-                                <arg line="/c build.bat unittest" />
-                            </exec>
-                            <exec osfamily="unix" executable="./bld.sh" dir="${basedir}/tests">
-                                <env key="ANT_LIB_HOME" path="${helium.antlib.root.dir}" />
-                                <arg line="unittest" />
-                            </exec>
-                            <move todir="${build.temp.dir}/@{name}">
-                                <fileset dir="${basedir}/tests" includes="**/coverage.ec" />
-                                <chainedmapper>
-                                    <filtermapper>
-                                        <replacestring from="/" to="_" />
-                                    </filtermapper>
-                                    <regexpmapper from="^(.*)\.ec$$" to="\1_antunit.emma" />
-                                </chainedmapper>
-                            </move>
-                            <emma enabled="true">
-                                <report>
-                                    <infileset dir="${build.temp.dir}/@{name}/" includes="*_antunit.emma" />
-                                    <txt outfile="${build.temp.dir}/@{name}/coverage_antunit.txt" />
-                                    <html outfile="${build.temp.dir}/@{name}/coverage_antunit.html" />
-                                    <xml outfile="${build.temp.dir}/@{name}/coverage_antunit.xml" />
-                                </report>
-                            </emma>
-                            <if>
-                                <available file="${build.temp.dir}/@{name}/coverage_antunit.txt" />
-                                <then>
-                                    <loadfile property="message" srcFile="${build.temp.dir}/@{name}/coverage_antunit.txt" />
-                                    <echo message="${message}" />
-                                </then>
-                            </if>
-                        </try>
-                        <finally>
-                            <copy file="${build.temp.dir}/@{name}/backup/helium-@{name}.jar" todir="@{bindir}" overwrite="true" />
-                        </finally>
-                    </trycatch>
-                </then>
-            </if>
-        </sequential>
-    </macrodef>
-    
-    
-    <path id="emma.classpath">
-        <fileset dir="${helium.antlib.root.dir}\antlibs">
-            <include name="**/*.jar" />
-        </fileset>
-    </path>
-    <taskdef classpathref="emma.classpath" resource="emma_ant.properties" />
- 
-    
-    <macrodef name="junitModule">
-        <attribute name="name" />
-        <attribute name="dir" default="${helium.antlib.root.dir}" />
-        <attribute name="bindir" default="${bin.dir}" />
-        <sequential>
-            <mkdir dir="${build.temp.dir}" />
-            <if>
-                <available type="dir" file="${basedir}/tests/src"/>
-                <then>
-                    <echo>JUnit test module @{name}</echo>
-                    <delete dir="${build.temp.dir}/@{name}/junit_classes"/>
-                    <delete>
-                        <fileset dir="${build.temp.dir}" includes="@{name}/**/*_junit.emma" />
-                    </delete>
-                    <mkdir dir="${build.temp.dir}/@{name}/junit_classes" />
-                    <javac srcdir="${basedir}/tests/src" destdir="${build.temp.dir}/@{name}/junit_classes" debug="true" source="1.5" target="1.5">
-                        <classpath refid="helium.antlib.classpath" />
-                        <classpath refid="helium.@{name}.classpath" />
-                        <classpath>
-                            <fileset dir="@{bindir}" includes="*-@{name}.jar" />
-                        </classpath>
-                        <include name="**/*.java" />
-                    </javac>
-            
-                    <copy file="@{bindir}/helium-@{name}.jar" todir="${build.temp.dir}/@{name}/" overwrite="true"/>
-                    <emma enabled="true">
-                        <instr destdir="${build.temp.dir}/@{name}/" metadatafile="${build.temp.dir}/@{name}/metadata_junit.emma" merge="true" mode="overwrite">
-                            <instrpath>
-                                <fileset dir="${build.temp.dir}/@{name}/" includes="helium-@{name}.jar" />
-                            </instrpath>
-                        </instr>
-                    </emma>
-                    
-                    <delete file="${build.temp.dir}/@{name}/coverage.emma" failonerror="false" />
-                    <junit fork="yes" printsummary="yes" haltonfailure="yes" showoutput="yes">
-                        <formatter type="brief" usefile="false"/>
-                        <jvmarg value="-Demma.coverage.out.file=${build.temp.dir}/@{name}/coverage_junit.emma" />
-                        <jvmarg value="-Demma.coverage.out.merge=true" />
-                        <jvmarg value="-Dtestdir=${basedir}" />
-                        <classpath>
-                            <pathelement path="${build.temp.dir}/@{name}/helium-@{name}.jar"/>
-                            <pathelement path="${helium.antlib.root.dir}/antlibs/*.jar"/>
-                            <pathelement path="${build.temp.dir}/@{name}/junit_classes" />
-                        </classpath>
-                        <classpath refid="helium.antlib.classpath" />
-                        <classpath refid="helium.@{name}.classpath" />
-                        <batchtest fork="yes" todir="${build.temp.dir}/@{name}/junit_test">
-                            <fileset dir="${basedir}/tests/src">
-                                <include name="**/*Test*.java"/>
-                            </fileset>
-                        </batchtest>
-                    </junit>
-                    <delete file="${build.temp.dir}/@{name}/helium-@{name}.jar" failonerror="false" />
-                    
-                    <emma enabled="true" >
-                        <report>
-                            <infileset dir="${build.temp.dir}/@{name}" includes="*_junit.emma" />
-                            <txt outfile="${build.temp.dir}/@{name}/coverage.txt" />
-                            <html outfile="${build.temp.dir}/@{name}/coverage.html" />
-                            <xml outfile="${build.temp.dir}/@{name}/coverage.xml" />
-                        </report>
-                    </emma>
-                    <if>
-                        <available file="${build.temp.dir}/@{name}/coverage.txt" />
-                        <then>
-                            <loadfile property="message" srcFile="${build.temp.dir}/@{name}/coverage.txt"/>
-                            <echo message="${message}"/>
-                        </then>
-                    </if>
-                </then>
-            </if>
-        </sequential>
-    </macrodef>
-    
-    
-    <target name="compile">
-        <echo>Compiling ${ant.project.name}</echo>
-        <compileModule name="${name}"/>
-    </target>
-    
-    
-    <target name="jar">
-        <echo>Creating jar for ${ant.project.name}</echo>
-        <jarModule name="${name}"/>
-    </target>
-    
-    
-    <target name="build" depends="compile,jar">
-        <echo>${ant.project.name} is built.</echo>
-    </target>
-    
-    
-    <target name="clean">
-        <echo>Cleaning ${ant.project.name}</echo>
-        <delete dir="${build.temp.dir}/${name}/classes"/>
-        <delete file="${bin.dir}/helium-${name}.jar"/>
-    </target>
-    
-    
-    <target name="junit">
-        <junitModule name="${name}"/>
-    </target>
-    
-    
-    <target name="unittest">
-        <testModule name="${name}"/>
-    </target>
-    
-    
-    <target name="test" depends="junit,unittest">
-        <echo>${ant.project.name} tested.</echo>
-    </target>
-</project>
-
-
-
--- a/buildframework/helium/external/helium-antlib/metadata/bld.bat	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-@echo off
-
-rem
-rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-rem All rights reserved.
-rem This component and the accompanying materials are made available
-rem under the terms of the License "Eclipse Public License v1.0"
-rem which accompanies this distribution, and is available
-rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
-rem
-rem Initial Contributors:
-rem Nokia Corporation - initial contribution.
-rem
-rem Contributors:
-rem
-rem Description: 
-rem
-
-setlocal
-if not defined JAVA_6_HOME (
-set TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
-) ELSE  set TESTED_JAVA=%JAVA_6_HOME%
-if exist %TESTED_JAVA% (set JAVA_HOME=%TESTED_JAVA%)
-
-REM Configure Ant 
-if not defined TESTED_ANT_HOME (
-set TESTED_ANT_HOME=C:\Apps\ant_1.7
-) 
-if exist %TESTED_ANT_HOME% (set ANT_HOME=%TESTED_ANT_HOME%)
-
-REM Configure the expected Ant Version details below
-SET expMajorVer=1
-SET expMinorVer=7
-
-rem *** Verify Ant Version ***
-rem -- Run the 'ant -version' command and capture the output to a variable 
-for /f "tokens=*" %%a in ('ant -version') do (set antversion=%%a)
-echo *** Installed Version : %antversion%
-
-rem -- Parse the version string obtained above and get the version number
-for /f "tokens=4 delims= " %%a in ("%antversion%") do set val=%%a
-rem -- Parse the version number delimiting the '.' and set the major and
-rem    minor versions
-for /f "tokens=1-2 delims=." %%a in ("%val%") do (
-set /A majorVersion=%%a
-set /A minorVersion=%%b
-)
-rem -- Check whether major version is greater than or equal to the expected.
-if %majorVersion% geq %expMajorVer% ( 
-rem -- if major version is valid, check minor version. If minor version is less
-rem    than expected display message and abort the execution.
-if %minorVersion% lss %expMinorVer% (echo *** Incorrect version of Ant found. Please check you have atleast Ant 1.7.0 & goto :errorstop ) 
-)
-
-ant %*
-endlocal
-
-:errorstop
-@echo *** Build aborted with error
-exit /b 1
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/metadata/build.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : build.xml 
-Part of     : Helium AntLib
-
-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="helium-metadata">
-    <description>Helium Antlib metadata build file.</description>
-    
-    <import file="../macros.ant.xml"/>
-
-    <property name="name" value="metadata"/>
-    
-
-    <path id="helium.metadata.classpath">
-        <fileset dir="${helium.antlib.root.dir}/bin" includes="helium-core.jar"/>    
-        <fileset dir="${ant.file.helium-metadata}/../lib" includes="*.jar"/>
-    </path>
-
-</project>
-
-
Binary file buildframework/helium/external/helium-antlib/metadata/lib/ant-contrib-1.0b2.jar has changed
Binary file buildframework/helium/external/helium-antlib/metadata/lib/bsf-2.4.0.jar has changed
Binary file buildframework/helium/external/helium-antlib/metadata/lib/bsh-2.1b0-1.0.jar has changed
Binary file buildframework/helium/external/helium-antlib/metadata/lib/dom4j-1.6.1.jar has changed
Binary file buildframework/helium/external/helium-antlib/metadata/lib/jakarta-oro-2.0.8.jar has changed
Binary file buildframework/helium/external/helium-antlib/metadata/lib/sqlitejdbc-v053.jar has changed
--- a/buildframework/helium/external/helium-antlib/metadata/src/build.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : build.xml 
-Part of     : Helium AntLib
-
-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="build-meta-data" default="build" xmlns:au="antlib:org.apache.ant.antunit">
-    <description>Build meta data</description>
-    
-    <target name="build" depends="compile-package, create-jar" />
-
-    <path id="bmd.lib.path">
-        <fileset dir="./lib" includes="*.jar"/>
-    </path>
-
-    <target name="compile-package">
-        <echo>Building build meta data</echo>
-        <mkdir dir="./build/classes" />
-        <javac srcdir="./src" destdir="./build/classes" debug="true" source="1.5" target="1.5">
-            <classpath refid="bmd.lib.path" />
-            <include name="**/*.java" />
-        </javac>
-    </target>
-
-    <target name="create-jar">
-        <echo>Packaging module build meta data</echo>
-        <mkdir dir="./bin" />
-        <jar destfile="./bin/bmd.jar">
-            <fileset dir="./build/classes" />
-            <fileset dir="./src/" includes="**/*.xml"/>
-            <manifest>
-                <section name="common">
-                    <attribute name="Implementation-Title" value="bmd" />
-                    <attribute name="Implementation-Vendor" value="Nokia" />
-                </section>
-            </manifest>
-        </jar>
-    </target>
-
-</project>
--- a/buildframework/helium/external/helium-antlib/metadata/src/com/nokia/helium/metadata/MetaDataInput.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-/*
- * Copyright (c) 2007-2008 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:  
- *
- */
-
-package com.nokia.helium.metadata;
-
-import java.util.Iterator;
-
-import com.nokia.helium.metadata.db.MetaDataDb;
-
-
-
-/**
- * Interface to add any plugins to write the database. Two ways to get
- * the data, either the entire data could written by calling getEntries() method
- * or using Iterator for large amount of entries to be written to the database. 
- */
-public interface MetaDataInput {
-    
-    /**
-     * 
-     *  @param fileSet fileset to be added
-     * 
-     */
-    Iterator<MetaDataDb.LogEntry> iterator();
-    
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/metadata/src/com/nokia/helium/metadata/SQLFMPPLoader.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,258 +0,0 @@
-/*
- * Copyright (c) 2007-2008 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:  
- *
- */
-package com.nokia.helium.metadata;
-
-import java.util.List;
-import java.util.Map;
-
-import fmpp.Engine;
-import fmpp.tdd.DataLoader;
-import freemarker.template.TemplateCollectionModel;
-import freemarker.template.TemplateModel;
-import freemarker.template.TemplateHashModel;
-import freemarker.template.TemplateSequenceModel;
-import freemarker.template.TemplateHashModelEx;
-import freemarker.template.SimpleHash;
-import freemarker.template.SimpleCollection;
-import freemarker.template.SimpleSequence;
-import freemarker.template.SimpleScalar;
-import freemarker.template.TemplateModelIterator;
-import com.nokia.helium.metadata.db.MetaDataDb;
-import org.apache.log4j.Logger;
-
-
-/**
- * Utility class to access the data from the database and used by FMPP
- * templates.
- */ 
-public class SQLFMPPLoader implements DataLoader {
-    
-    //private ResultSet rs;
-    private static final int READ_LIMIT = 5000;
-
-    private static Logger log = Logger.getLogger(MetaDataDb.class);
-
-    private MetaDataDb metadataDb;
-
-
-    /**
-     * @see fmpp.tdd.DataLoader#load(fmpp.Engine, java.util.List)
-     */
-    public Object load(Engine engine, List args) throws Exception {
-        //log.debug("args.size:" + args.size());
-        java.util.ListIterator iter = args.listIterator();
-        int argsSize = args.size();
-        if (argsSize < 1) {
-            throw new Exception("Input DB path should be provided to load into FMPP.");
-        }
-
-        /* arg[0] - dbpath
-         */
-        metadataDb = new MetaDataDb((String) (args.get(0)));
-        
-        /*
-         * QueryModel (which supports hash, sequence, containers)
-         *  
-         */
-        return new QueryModel();
-    }
-
-    /*
-     * Internal class to handle the sql query and returns the data in either
-     * hash or sequence or containers.
-     */
-    private class QueryModel implements TemplateHashModel {
-
-        /*
-         * Gets the template model for the corresponding query
-         * @param query for which the model is returned.
-         * @return returns the template model for the query 
-         */
-        public TemplateModel get(String query) {
-            //log.debug("QueryModel:" + query);
-            return new QueryTemplateModel(query);
-        }
-
-        /*
-         * This model will not be empty as new object is returned. So false is returned.
-         */
-        public boolean isEmpty() {
-            return false;
-        }
-    }
-
-    /*
-     * Template model makes request to metadata db class to get the data and present it
-     * based on hash, sequence or containers.
-     * Todo: avoid the calling of checkAndReadData for each of the function.
-     */    
-    private class QueryTemplateModel implements TemplateCollectionModel, TemplateHashModelEx,
-        TemplateSequenceModel {
-        
-        private Map<String, List<String>> indexMap;
-        private String query;
-        private boolean isDataRead;
-
-        /*
-         * Constructor for the query model
-         * @param query for which the template model needs to be returned.
-         */
-        public QueryTemplateModel(String query) {
-            //log.debug("query in SQLTemplateModel" + query);
-            this.query = query;
-        }
-
-        /*
-         * HashModel interface. When the template requests as hash then 
-         * @param query for which the template model needs to be returned.
-         */
-        public TemplateModel get(String key) {
-            checkAndReadData();
-            //log.debug("QueryModel:" + key);
-            List<String> dataList = indexMap.get(key);
-            //log.debug("datalist size" + dataList.size());
-            if (dataList.size() ==  1 ) {
-                return new SimpleScalar((String)dataList.get(0));
-            }
-            return new SimpleSequence(dataList);
-        }
-
-        /*
-         * Read the data from database if it is not done already. Used
-         * by hash and sequence model only. 
-         */
-        private void checkAndReadData() {
-            if (!isDataRead) {
-                //log.debug("isDataRead:" + isDataRead);
-                isDataRead = true;
-                indexMap = metadataDb.getIndexMap(query); 
-            }
-            //log.debug("indexmap size" + indexMap.size());
-        }
-
-        /*
-         * HashModel interface. When the template requests as hash then 
-         * data is read from memory and the keys are returned.
-         * @return the keys of the primary key data (currently column 1) 
-         * read from db
-         */
-        public TemplateCollectionModel keys() {
-            checkAndReadData();
-            return new SimpleCollection(indexMap.keySet());
-        }
-
-        /*
-         * Return the size of the records read from db
-         * @return the size of the db records.
-         */
-        public int size() {
-            checkAndReadData();
-            return indexMap.size();
-            
-        }
-
-        /*
-         * Gets the record on a particular index
-         * @return the record as hash model.
-         */
-        public TemplateModel get(int index) {
-            List<Map<String, Object>> rowList = metadataDb.getRecords(query);
-            return new SimpleHash(rowList.get(index));
-        }
-
-        /*
-         * Gets the record on a particular index
-         * @return the record as hash model.
-         */
-        public boolean isEmpty() {
-            checkAndReadData();
-            return indexMap == null;
-        }
-
-        /*
-         * Gets the record on a particular index
-         * @return the record as hash model.
-         */
-        public TemplateCollectionModel values() {
-            checkAndReadData();
-            return new SimpleCollection(indexMap.values());
-        }
-
-        /*
-         * Provides data via collection interface.
-         * @return the iterator model from which the data is accessed.
-         */
-        public TemplateModelIterator iterator() {
-            //log.debug("iterator constructor called");
-            return new SQLTemplateModelIterator(query);
-        }
-    }
-
-    /*
-     * Internal Iterator class which provides data as collection. 
-     */
-    private class SQLTemplateModelIterator implements TemplateModelIterator {
-        
-        private String query;
-        private List<Map<String, Object>> rowList;
-        private int currentOffsetIndex;
-        private int count;
-        private boolean finished;
-        
-        public SQLTemplateModelIterator(String query) {
-            this.query = query;
-        }
-        public TemplateModel next() {
-            SimpleHash simpleHash = null;
-            try {
-                //log.debug("checking any more element");
-                if (rowList != null && (count >= rowList.size())) {
-                    finished = true;
-                }
-                //log.debug("next:count:" + count);
-                simpleHash = new SimpleHash(rowList.get(count));
-                count ++;
-                return simpleHash;
-            } catch (Exception ex) {
-                // We are Ignoring the errors as no need to fail the build.
-                log.debug("Iteration exception" + ex.getMessage());
-                ex.printStackTrace();
-            }
-            return null;
-        }
-
-        public boolean hasNext() {
-            if (rowList == null ||  READ_LIMIT <= count) {
-                if (!finished) {
-                    //log.debug("Getting records");
-                    rowList = metadataDb.getRecords(query, READ_LIMIT, currentOffsetIndex * READ_LIMIT);
-                    count = 0;
-                    //log.debug("rowList.size : " + rowList.size());
-                    if (rowList.size() == 0) {
-                        finished = true;
-                    }
-                    currentOffsetIndex ++;
-                }
-            }
-            int rowListSize = rowList.size(); 
-            if (rowListSize < READ_LIMIT && rowListSize == count) {
-                finished = true;
-            }
-            return !finished;
-        }
-    }
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/metadata/src/com/nokia/helium/metadata/ant/antlib.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : antlib.xml 
-Part of     : Helium AntLib
-
-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:
-
-============================================================================
--->
-<antlib>
-    <!-- Task definition -->
-    <taskdef name="metadatarecord" classname="com.nokia.helium.metadata.ant.taskdefs.MetaDataRecord"/>
-    <taskdef name="metadatadelete" classname="com.nokia.helium.metadata.ant.taskdefs.MetaDataDelete"/>
-    <!-- Type definition -->
-    <typedef name="textmetadatainput" classname="com.nokia.helium.metadata.ant.types.TextLogMetaDataInput"/>
-    <typedef name="antmetadatainput" classname="com.nokia.helium.metadata.ant.types.AntLogMetaDataInput"/>
-    <typedef name="abldmetadatainput" classname="com.nokia.helium.metadata.ant.types.AbldLogMetaDataInput"/>
-    <typedef name="sbsmetadatainput" classname="com.nokia.helium.metadata.ant.types.SBSLogMetaDataInput"/>
-    <typedef name="policymetadatainput" classname="com.nokia.helium.metadata.ant.types.PolicyLogMetaDataInput"/>
-    <typedef name="metadatafilterset" classname="com.nokia.helium.metadata.ant.types.MetaDataFilterSet"/>
-    <typedef name="metadatafilter" classname="com.nokia.helium.metadata.ant.types.MetaDataFilter"/>
-    
-    <typedef name="metadataHasSeverity" classname="com.nokia.helium.metadata.ant.conditions.MetaDataLogCondition"/>
-    <typedef name="metadataCountSeverity" classname="com.nokia.helium.metadata.ant.taskdefs.MetaDataLogCount"/>
-    <typedef name="metadatasource" classname="com.nokia.helium.metadata.ant.types.MetadataSource"/>
-</antlib>
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/metadata/src/com/nokia/helium/metadata/ant/conditions/MetaDataLogCondition.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,129 +0,0 @@
-/*
- * Copyright (c) 2007-2008 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:  
- *
- */
-
-package com.nokia.helium.metadata.ant.conditions;
-
-import java.io.File;
-import java.util.List;
-import java.util.Map;
-
-import com.nokia.helium.metadata.db.MetaDataDb;
-
-import org.apache.tools.ant.BuildException;
-import com.nokia.helium.core.ant.types.ConditionType;
-
-/**
- * This class implements a Ant Condition which report true if it finds any
- * matching severity inside a database for an XML log.
- * 
- * Example:
- * <pre>
- * &lt;target name=&quot;fail-on-build-error&quot;&gt;
- *   &lt;fail message=&quot;The build contains errors&quot;&gt;
- *     &lt;hlm:metadataHasSeverity log=&quot;my.log&quot; db=&quot;my.db&quot; severity=&quot;error&quot;/&gt;
- *   &lt;/fail&gt;
- * &lt;/target&gt;
- * </pre>
- * 
- * The condition will eval as true if the my.db contains error stored for my.log file.
- * 
- * @ant.type name="metadataHasSeverity" category="Metadata"
- */
-public class MetaDataLogCondition extends ConditionType {
-
-    // The severity to count
-    private String severity;
-    private String logFile;
-    private File fileName;
-
-    /**
-     * Sets which severity will be counted.
-     * 
-     * @param severity
-     * @ant.required
-     */
-    public void setSeverity(String severity) {
-        this.severity = severity;
-    }
-
-    public void setDb(File file) {
-        fileName = file;
-    }
-    
-    public void setLog(String log) {
-        logFile = log;
-    }
-
-    /**
-     * Get the number of a particular severity.
-     * 
-     * @return the number of a particular severity.
-     */
-    public int getSeverity() {
-        if (fileName == null || !fileName.exists() || logFile == null) {
-            //this.log("Error: Log file does not exist " + fileName);
-            return -1;
-        }
-        if (severity == null)
-            throw new BuildException("'severity' attribute is not defined");
-
-        //this.log("Looking for severity '" + severity + "' under '" + fileName.getAbsolutePath() + "'");
-        
-        MetaDataDb.Priority prty = null;
-        if (severity.equalsIgnoreCase("ERROR")) {
-            prty = MetaDataDb.Priority.ERROR;
-        } else if (severity.equalsIgnoreCase("WARNING")) {
-            prty = MetaDataDb.Priority.WARNING;
-        } else if (severity.equalsIgnoreCase("FATAL")) {
-            prty = MetaDataDb.Priority.FATAL;
-        } else if (severity.equalsIgnoreCase("INFO")) {
-            prty = MetaDataDb.Priority.INFO;
-        } else if (severity.equalsIgnoreCase("REMARK")) {
-            prty = MetaDataDb.Priority.REMARK;
-        }
-        else
-            throw new BuildException("'severity' attribute is not valid");
-        
-        MetaDataDb db = new MetaDataDb(fileName.getAbsolutePath());
-        
-        String sql = "select count(data) as COUNT from metadata INNER JOIN logfiles ON logfiles.id=metadata.logpath_id where path like '%" + logFile + "%' and priority_id = " + prty.getValue();
-        
-        //System.out.println(sql);
-        List<Map<String, Object>> records = db.getRecords(sql);
-        for (Map<String, Object> map : records)
-        {
-            //System.out.println((Integer)map.get("COUNT"));
-            return (Integer)map.get("COUNT");
-        }
-
-        return 0;
-    }
-
-    /**
-     * This method open the defined file and count the number of message tags
-     * with their severity attribute matching the configured one.
-     * 
-     * @return if true if message with the defined severity have been found.
-     */
-    public boolean eval() {
-        int severity = getSeverity();
-        if (severity < 0) {
-            return false;
-        }
-        return severity > 0;
-    }
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/metadata/src/com/nokia/helium/metadata/ant/taskdefs/MetaDataDelete.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,129 +0,0 @@
-/*
- * Copyright (c) 2007-2008 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:  
- *
- */
-
-package com.nokia.helium.metadata.ant.taskdefs;
-
-import org.apache.tools.ant.types.FileSet;
-import org.apache.tools.ant.DirectoryScanner;
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Task;
-import java.util.Vector;
-import java.util.ArrayList;
-import java.util.List;
-import org.apache.log4j.Logger;
-import com.nokia.helium.metadata.db.*;
-import java.util.Date;
-
-/**
- * This task provide a way to delete the data from db for a log file set.
- * 
- * <pre>
- * Example 1:
- * &lt;metadadelete database=&quot;compile_log.db&quot;&gt;
- *     &lt;fileset casesensitive=&quot;false&quot; file=&quot;sbs.log.file&quot;/&gt
- * &lt;/metadadelete&gt;
- * </pre>
- * 
- * @ant.task name="metadatadelete" category="Metadata"
- */
-public class MetaDataDelete extends Task {
-
-    private static Logger log = Logger.getLogger(MetaDataDelete.class);
-
-    private String database;
-    
-    private boolean failOnError = true;
-
-    private Vector<FileSet> fileSetList = new Vector<FileSet>();
-
-    /**
-     * Helper function to set the database parameter
-     * 
-     * @ant.required
-     */
-    public void setDatabase(String dbFile) {
-        database = dbFile;
-    }
-
-    public void setFailOnError(String failNotify) {
-        if (failNotify.equals("false")) {
-            failOnError = false;
-        }
-    }
-
-    /**
-     * Updates the list of filelist from the input fileset.
-     *  @param fileSetList input fileset list
-     *  @return the matched files including the base dir. 
-     */
-    private List<String> getFileListFromFileSet() {
-        List<String> fileList = new ArrayList<String>();
-        for (FileSet fs : fileSetList) {
-            DirectoryScanner ds = fs.getDirectoryScanner(getProject());
-            String[] includedFiles = ds.getIncludedFiles();
-            for ( String file : includedFiles ) {
-                fileList.add(file);
-                log.debug("includedfiles: " + file);
-            }
-        }
-        log.debug("fileList.size" + fileList.size());
-        return fileList;
-    }
-
-    /**
-     * Adds the fileset (list of input log files to be processed).
-     *  @param fileSet fileset to be added
-     * 
-     */
-    public void add(FileSet fileSet) {
-        fileSetList.add(fileSet);
-    }   
-
-    /**
-     * Helper function to get the database
-     * 
-     */
-    public String getDatabase() {
-        return database;
-    }
-
-    
-    @Override
-    public void execute() {
-        MetaDataDb metadataDb = null;
-        try {
-            log.debug("Initializing DB: " + database + "to delete");
-            log("time before removing entries from db" + new Date());
-            metadataDb = new MetaDataDb(database);
-            metadataDb.removeEntries(getFileListFromFileSet());
-            log("time after removing entries from db" + new Date());
-        } catch (BuildException ex1) {
-            if (failOnError) {
-                throw ex1;
-            }
-        } catch (Exception ex) {
-            if (failOnError) {
-                throw new BuildException("Failed during writing data to db");
-            }
-        } finally {
-            log.debug("finalizing DB: " + database);
-            if (metadataDb != null) {
-                metadataDb.finalizeDB();
-            }
-        }
-    }
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/metadata/src/com/nokia/helium/metadata/ant/taskdefs/MetaDataLogCount.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,89 +0,0 @@
-/*
- * Copyright (c) 2007-2008 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:  
- *
- */
-
-package com.nokia.helium.metadata.ant.taskdefs;
-
-import java.io.File;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Task;
-import com.nokia.helium.metadata.ant.conditions.MetaDataLogCondition;
-
-/**
- * This class sets a property to the number of matching severity inside a Metadata db for a log.
- * Example:
- * <pre>
- *     &lt;hlm:metadataCountSeverity severity=&quot;error&quot; log=&quot;*_fixslashes_raptor.log&quot; db=&quot;${build.log.dir}/metadata.db&quot; property=&quot;fixslashes.error&quot;/&gt;
- * </pre>
-
- * @ant.task name="metadataCountSeverity" category="Metadata"
- */
-public class MetaDataLogCount extends Task {
-
-    private File fileName;
-    private String logFile;
-    private String severity;
-    private String property;
-
-    /**
-     * File to be parsed.
-     * 
-     * @param filename
-     * @ant.required
-     */
-    public void setDb(File filename) {
-        fileName = filename;
-    }
-    
-    public void setLog(String log) {
-        logFile = log;
-    }
-    
-    /**
-     * Defines the severity name to be counted.
-     * 
-     * @param severity
-     * @ant.required
-     */
-    public void setSeverity(String severity) {
-        this.severity = severity;
-    }
-
-    /**
-     * Name of the property to be set.
-     * @param property the property name
-     * @ant.required
-     */
-    public void setProperty(String property) {
-        this.property = property;
-    }
-    
-    /**
-     *  Execute the task. Set the property with number of severities.  
-     * @throws BuildException
-     */
-    public void execute() {
-        if (property == null)
-            throw new BuildException("'property' attribute is not defined");
-        
-        MetaDataLogCondition cond = new MetaDataLogCondition();
-        cond.setDb(fileName);
-        cond.setLog(logFile);
-        cond.setSeverity(severity);
-        getProject().setNewProperty(property, "" + cond.getSeverity());
-    }
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/metadata/src/com/nokia/helium/metadata/ant/taskdefs/MetaDataRecord.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,145 +0,0 @@
-/*
- * Copyright (c) 2007-2008 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:  
- *
- */
-
-package com.nokia.helium.metadata.ant.taskdefs;
-
-import com.nokia.helium.metadata.MetaDataInput;
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Task;
-import java.util.Vector;
-import java.util.Iterator;
-import org.apache.log4j.Logger;
-import com.nokia.helium.metadata.db.*;
-import java.util.Date;
-
-/**
- * This task provide a way to record the data in the Database.
- * 
- * <pre>
- * Example 1:
- * &lt;metadatarecord database=&quot;compile_log.db&quot;&gt;
- *     &lt;sbsmetadatainput&gt;
- *     &lt;fileset casesensitive=&quot;false&quot; file=&quot;sbs.log.file&quot;/&gt
- *         &lt;metadatafiltelistref refid=&quot;compilation&quot;/&gt;
- *     &lt;/sbsmetadatainput&gt;
- * &lt;/metadatarecord&gt;
- * 
- * Example 2:
- * 
- * &lt;metadatarecord database=&quot;metadata.db&quot;&gt;
- *     &lt;antmetadatainput&gt;
- *     &lt;fileset casesensitive=&quot;false&quot; file=&quot;${build.id}_ant_build.log&quot;/&gt
- *         &lt;metadatafiltelistref refid=&quot;compilation&quot;/&gt;
- *     &lt;/antmetadatainput&gt;
- * &lt;/metadatarecord&gt;
-
- * </pre>
- * 
- * @ant.task name="metadatarecord" category="Metadata"
- */
-public class MetaDataRecord extends Task {
-
-    private static Logger log = Logger.getLogger(MetaDataRecord.class);
-
-    private String database;
-    
-    private boolean failOnError = true;
-
-    private Vector<MetaDataInput> metadataList = new Vector<MetaDataInput>();
-
-    /**
-     * Helper function to set the database parameter
-     * 
-     * @ant.required
-     */
-    public void setDatabase(String dbFile) {
-        database = dbFile;
-    }
-
-    public void setFailOnError(String failNotify) {
-        if (failNotify.equals("false")) {
-            failOnError = false;
-        }
-    }
-    /**
-     * Helper function to get the database
-     * 
-     */
-    public String getDatabase() {
-        return database;
-    }
-
-    /**
-     * Helper function to return the metadatalist
-     *  @return build metadata object
-     * 
-     */
-    public Vector<MetaDataInput> getMetaDataList() throws Exception {
-        if (metadataList.isEmpty()) {
-            throw new Exception("metadata list is empty");
-        }
-        return metadataList;
-    }
-
-    /**
-     * Helper function to add the metadatalist
-     *  @param build metadata list to add
-     * 
-     */
-    public void add(MetaDataInput interf) {
-        metadataList.add(interf);
-    }
-
-    
-    @Override
-    public void execute() {
-        MetaDataDb metadataDb = null;
-        try {
-            log.debug("Getting Contents to write to db: " + database);
-            log.debug("Initializing DB: " + database);
-            metadataDb = new MetaDataDb(database);
-            log.debug("Parsing the input and writing to DB");
-            log("time before recording to db" + new Date());
-            for ( MetaDataInput metadataInput : metadataList ) {
-                boolean removed = false;
-                Iterator<MetaDataDb.LogEntry> inputIterator = metadataInput.iterator();
-                while (inputIterator.hasNext()) {
-                    MetaDataDb.LogEntry logEntry = inputIterator.next();
-                    if (!removed)
-                        metadataDb.removeLog(logEntry.getLogPath());
-                    removed = true;
-                    metadataDb.addLogEntry(logEntry);
-                }
-            }
-            log("time after recording to db" + new Date());
-            log.debug("Successfully writen to DB");
-        } catch (BuildException ex1) {
-            if (failOnError) {
-                throw ex1;
-            }
-        } catch (Exception ex) {
-            if (failOnError) {
-                throw new BuildException("Failed during writing data to db");
-            }
-        } finally {
-            log.debug("finalizing DB: " + database);
-            if (metadataDb != null) {
-                metadataDb.finalizeDB();
-            }
-        }
-    }
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/metadata/src/com/nokia/helium/metadata/ant/types/AbldLogMetaDataInput.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,152 +0,0 @@
-/*
- * Copyright (c) 2007-2008 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:  
- *
- */
-
-package com.nokia.helium.metadata.ant.types;
-
-import java.io.*;
-import org.apache.tools.ant.BuildException;
-import java.util.*;
-import org.apache.log4j.Logger;
-import java.util.regex.Pattern;
-import java.util.regex.Matcher;
-
-/**
- * This Type is to specify and use the abld logparser type to parse and store the data.
- *
- * <pre>
- * &lt;hlm:metadatafilterset id="abld.metadata.filter"&gt;
- *    &lt;metadatafilterset filterfile="common.csv" /&gt;
- * &lt;/hlm:metadatafilterset&gt;
- * 
- * &lt;hlm:abldmetadatainput&gt;
- *    &lt;fileset dir="${project.dir}/../data/"&gt;
- *        &lt;include name="*_compile*.log"/&gt;
- *    &lt;/fileset&gt;
- *    &lt;metadatafilterset refid="abld.metadata.filter" /&gt;
- * &lt;/hlm:antmetadatainput&gt;
- * </pre>
- * 
- * @ant.task name="abldmetadatainput" category="Metadata"
- */
-public class AbldLogMetaDataInput extends TextLogMetaDataInput {
-
-    private Logger log = Logger.getLogger(AbldLogMetaDataInput.class);
-    
-    private Pattern abldFinishedPattern = Pattern.compile("^===\\s+.+\\s+finished.*");
-    private Pattern abldStartedPattern = Pattern.compile("^===\\s+(.+)\\s+started.*");
-    private Pattern abldComponentPattern = Pattern.compile("^===\\s+(.+?)\\s+==\\s+(.+)");
-    
-
-    private String currentComponent;
-    
-    private boolean entryCreated;
-
-    private boolean recordText;
-    
-    public AbldLogMetaDataInput() {
-    }
-
-    /**
-     * Function to check from the input stream if is there any entries available.
-     * @return true if there are any entry available otherwise false.
-     */
-    public boolean isEntryCreated(File currentFile) {
-        String exceptions = "";
-        int lineNumber = getLineNumber(); 
-        BufferedReader currentReader = getCurrentReader();
-        log.debug("Getting next set of log entries for Abld Input");
-        try {
-            if (currentReader == null) {
-                lineNumber = 0;
-                setLineNumber(lineNumber);
-                log.debug("Current abld log file name:" + currentFile);
-                log.debug("Processing file: " + currentFile);
-                currentReader = new BufferedReader(new FileReader(currentFile));
-                setCurrentReader(currentReader);
-            }
-            String logText = null;
-            while ((logText = currentReader.readLine()) != null) {
-                lineNumber ++;
-                setLineNumber(lineNumber);
-                logText = logText.replaceFirst("'^\\s*\\[.+?\\]\\s*", "");
-                if (logText.startsWith("++ Finished at")) {
-                    if (currentComponent != null && !entryCreated) {
-                        addEntry("DEFAULT", currentComponent, currentFile.toString(), 
-                                0, "" );
-                        entryCreated = true;
-                        recordText = false;
-                        return true;
-                    }
-                    entryCreated = false;
-                } else if (logText.startsWith("=== ")) {
-                    Matcher finishMatch = abldFinishedPattern.matcher(logText);
-                    if (finishMatch.matches()) {
-                        if (currentComponent != null && !entryCreated) {
-                            addEntry("DEFAULT", currentComponent, currentFile.toString(), 
-                                    0, "" );
-                            entryCreated = true;
-                            recordText = false;
-                            return true;
-                        }
-                        entryCreated = false;
-                    } else {
-                        Matcher componentMatch = abldComponentPattern.matcher(logText);
-                        if (componentMatch.matches()) {
-                            currentComponent = componentMatch.group(2);
-                            recordText = true;
-                        }
-
-                        Matcher startMatch = abldStartedPattern.matcher(logText);
-                        if (startMatch.matches()) {
-                            currentComponent = startMatch.group(1);
-                            recordText = true;
-                        }
-                    }
-                } else {
-                    if (recordText) {
-                        String severity = getSeverity(logText);
-                        if (severity != null) {
-                            entryCreated = true; 
-                            addEntry(severity, currentComponent, currentFile.toString(), 
-                                    lineNumber, logText );
-                            return true;
-                        }
-                    }
-                }
-            }
-            currentReader.close();
-            currentReader = null;
-            setCurrentReader(currentReader);
-        } catch (Exception ex) {
-            log.debug("Exception in AbldLogMetadata", ex);
-           try {
-               currentReader.close();
-           } catch ( IOException iex) {
-               // We are Ignoring the errors as no need to fail the build. 
-               log.debug("Exception in closing reader", iex);
-           }
-           currentReader = null;
-           setCurrentReader(null);
-           exceptions = exceptions + ex.getMessage() + "\n";
-           return false;
-        }
-        if (!exceptions.equals("")) {
-            throw new BuildException(exceptions);
-        }
-        return false;
-    }
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/metadata/src/com/nokia/helium/metadata/ant/types/AntLogMetaDataInput.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,129 +0,0 @@
-/*
- * Copyright (c) 2007-2008 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:  
- *
- */
-
-package com.nokia.helium.metadata.ant.types;
-
-import java.io.*;
-import org.apache.tools.ant.BuildException;
-import java.util.*;
-import org.apache.log4j.Logger;
-import java.util.regex.Pattern;
-import java.util.regex.Matcher;
-
-/**
- * This Type is to specify and use the ant logparser type to parse and store the data.
- *
- * <pre>
- * &lt;hlm:metadatafilterset id="ant.metadata.filter"&gt;
- *    &lt;metadatafilterset filterfile="${project.dir}/../data/common.csv" /&gt;
- * &lt;/hlm:metadatafilterset&gt;
- * 
- * &lt;hlm:antmetadatainput&gt;
- *    &lt;fileset dir="${project.dir}/../data/"&gt;
- *        &lt;include name="*zip*.log"/&gt;
- *    &lt;/fileset&gt;
- *    &lt;metadatafilterset refid="ant.metadata.filter" /&gt;
- * &lt;/hlm:antmetadatainput&gt;
- * </pre>
- * 
- * @ant.task name="textmetadatainput" category="Metadata"
- */
-public class AntLogMetaDataInput extends TextLogMetaDataInput {
-
-    private Logger log = Logger.getLogger(AntLogMetaDataInput.class);
-    
-    private Pattern antTargetPattern = Pattern.compile("^([^\\s=\\[\\]]+):$");
-    
-    private String currentComponent;
-    
-    private boolean entryCreated;
-    
-    /**
-     * Constructor
-     */
-    public AntLogMetaDataInput() {
-    }
-
-    /**
-     * Function to check from the input stream if is there any entries available.
-     * @return true if there are any entry available otherwise false.
-     */
-    public boolean isEntryCreated(File currentFile) {
-        String exceptions = "";
-        int lineNumber = getLineNumber(); 
-        BufferedReader currentReader = getCurrentReader();
-        try {
-            if (currentReader == null) {
-                setLineNumber(0);
-                log.debug("Current Text log file name:" + currentFile);
-                log.debug("Processing file: " + currentFile);
-                currentReader = new BufferedReader(new FileReader(currentFile));
-                setCurrentReader(currentReader);
-            }
-            String logText = "";
-            while ((logText = currentReader.readLine()) != null) {
-                Matcher match = antTargetPattern.matcher(logText); 
-                if (match.matches()) {
-                    if (currentComponent != null && !entryCreated) {
-                        addEntry("DEFAULT", currentComponent, currentFile.toString(), 
-                                0, "" );
-                        entryCreated = true;
-                        return true;
-                    }
-                    entryCreated = false;
-                    currentComponent = match.group(1);
-                }
-                logText = logText.replaceFirst("^[ ]*\\[.+?\\][ ]*", "");
-                String severity = getSeverity(logText);
-                if (severity != null) {
-                    entryCreated = true;
-                    // If there is no current component which means
-                    // it is a redirected output, using file name as comp name
-                    if (currentComponent == null ) {
-                        currentComponent = currentFile.getName();
-                    }
-                    addEntry(severity, currentComponent, currentFile.toString(), 
-                            lineNumber, logText );
-                    logText = "";
-                    return true;
-                }
-            }
-            currentReader.close();
-            currentReader = null;
-            setCurrentReader(currentReader);
-            if (isAdditionalEntry()) {
-                return true;
-            }
-        } catch (Exception ex) {
-            log.debug("Exception in AntLogMetadata", ex);
-            try {
-                currentReader.close();
-            } catch ( IOException iex) {
-                // We are Ignoring the errors as no need to fail the build.
-                log.debug("Exception in closing reader", iex);
-                currentReader = null;
-                setCurrentReader(null);
-                exceptions = exceptions + ex.getMessage() + "\n";
-                return false;
-            }
-        }
-        if (!exceptions.equals("")) {
-            throw new BuildException(exceptions);
-        }
-        return false;
-    }
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/metadata/src/com/nokia/helium/metadata/ant/types/LogMetaDataInput.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,325 +0,0 @@
-/*
- * Copyright (c) 2007-2008 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:  
- *
- */
-
-package com.nokia.helium.metadata.ant.types;
-
-import com.nokia.helium.metadata.MetaDataInput;
-import org.apache.tools.ant.BuildException;
-import com.nokia.helium.metadata.db.MetaDataDb;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Vector;
-import java.util.Iterator;
-import java.util.regex.Pattern;
-import org.apache.tools.ant.types.FileSet;
-import org.apache.tools.ant.DirectoryScanner;
-import org.apache.log4j.Logger;
-import org.apache.tools.ant.types.DataType;
-
-/**
- * Abstract base class to provide common functionality for the log parsing.
- */
-public abstract class LogMetaDataInput extends DataType implements
-    MetaDataInput {
-
-    private static final String DEFAULT_COMPONENT_NAME = "general";
-
-    private static Logger log = Logger.getLogger(LogMetaDataInput.class);
-    
-    private Vector<FileSet> fileSetList = new Vector<FileSet>();
-
-    private int currentFileIndex;
-    
-    private boolean entryAddedForLog;
-
-    private List<File> fileList;
-    private Vector<MetaDataFilterSet> metadataFilterSets = new Vector<MetaDataFilterSet>();
-    private Vector<MetaDataFilter> completeFilterList;
-
-    private Iterator<MetaDataDb.LogEntry> metadataInputIterator = new MetaDataInputIterator();
-
-    private List<MetaDataDb.LogEntry> logEntries = new ArrayList<MetaDataDb.LogEntry>();
-    
-    
-    public LogMetaDataInput() {
-    }
-
-    /**
-     * Adds the fileset (list of input log files to be processed).
-     *  @param fileSet fileset to be added
-     * 
-     */
-    public void add(FileSet fileSet) {
-        fileSetList.add(fileSet);
-    }   
-    
-    /**
-     * Adds the fileset (list of input log files to be processed).
-     *  @param fileSet fileset to be added
-     * 
-     */
-    public void add(MetaDataFilterSet metadataFilterSet) {
-        metadataFilterSets.add(metadataFilterSet);
-    } 
-
-    /**
-     * Helper function called by ant to create the new filter
-     */
-    public MetaDataFilterSet createMetaDataFilterSet() {
-        MetaDataFilterSet filterSet =  new MetaDataFilterSet();
-        add(filterSet);
-        return filterSet;
-    }
-
-    /**
-     * Helper function to return all the filters associated with this metadata input
-     * @return all the filters merged based on the order of definition.
-     */
-    private Vector<MetaDataFilter> getCompleteFilters()throws Exception {
-        Vector<MetaDataFilter> allFilter = new Vector<MetaDataFilter>();
-        for (MetaDataFilterSet filterSet : metadataFilterSets) {
-            allFilter.addAll(filterSet.getAllFilters());
-        }
-        return allFilter;
-    }
-
-    /**
-     * Updates the list of filelist from the input fileset.
-     *  @param fileSetList input fileset list
-     *  @return the matched files including the base dir. 
-     */
-    private List<File> getFileListFromFileSet() {
-        fileList = new ArrayList<File>();
-        for (FileSet fs : fileSetList) {
-            DirectoryScanner ds = fs.getDirectoryScanner(getProject());
-            String[] includedFiles = ds.getIncludedFiles();
-            for ( String file : includedFiles ) {
-                fileList.add(new File(ds.getBasedir(), file));
-                log.debug("includedfiles: " + file);
-            }
-        }
-        log.debug("fileList.size" + fileList.size());
-        return fileList;
-    }
-
-    /**
-     * Internal function to get the entry
-     * @return the top most entry in the list.
-     */
-    private MetaDataDb.LogEntry getEntry()throws Exception {
-        if (logEntries != null && logEntries.size() > 0) {
-            return logEntries.remove(0);
-        } else {
-            throw new Exception("No entries found");
-        }
-    }
-
-    /**
-     * Helper function to return the file list of the metadata input
-     * @return file list of this metadata input.
-     */
-    protected List<File> getFileList() {
-        return fileList;
-    }
-
-    protected File getCurrentFile() {
-        List<File> fileList = getFileList();
-        return fileList.get(currentFileIndex); 
-    }
-
-    /**
-     * Function to check from the input stream if is there any entries available. Implemented by the sub classes.
-     * @return true if there are any entry available otherwise false.
-     */
-    
-    boolean isEntryAvailable() throws Exception {
-        try {
-            int fileListSize = getFileList().size();
-            while (currentFileIndex < fileListSize) {
-                boolean entryCreated = false;
-                File currentFile = getCurrentFile();
-                entryCreated = isEntryCreated(currentFile);
-                if (entryCreated) {
-                    if (!entryAddedForLog) {
-                        entryAddedForLog = true;
-                    }
-                    return entryCreated;
-                }
-                if (!entryAddedForLog) {
-                    // If no entry, then logfile is added to the database.
-                    addEntry("default", "general", getCurrentFile().toString(), -1, "", -1);
-                    currentFileIndex ++;
-                    return true;
-                }
-                currentFileIndex ++;
-            }
-        } catch (Exception ex1 ) {
-            log.info("Exception processing stream: " + ex1.getMessage());
-            log.debug("exception while parsing the stream", ex1);
-            throw ex1;
-        }
-        return false;
-    }
-
-    /**
-     * Function to check from the input stream if is there any entries available.
-     * @param file for which the contents needs to be parsed for errors
-     * @return true if there are any entry available otherwise false.
-     */
-    abstract boolean isEntryCreated(File currentFile) throws Exception;
-
-    /**
-     * Returns the severity matches for the log text
-     * @param log text for which the severity needs to be identified.
-     * @return the severity of the input text
-     */
-    protected String getSeverity(String logText) throws Exception {
-        try {
-            if (completeFilterList == null) {
-                completeFilterList = getCompleteFilters();
-            }
-            for ( MetaDataFilter filter : completeFilterList) {
-                Pattern pattern = filter.getPattern();
-                if ((pattern.matcher(logText)).matches()) {
-                    return filter.getPriority();
-                }
-            }
-        } catch (Exception ex) {
-            log.debug("Exception while getting severity", ex);
-            throw ex;
-        }
-        return null;
-    }
-
-
-    /**
-     * Helper function to store the entry which will be added to the database
-     * @param priority for the entry
-     * @param component of the entry
-     * @param logpath of the entry
-     * @param lineNo of the entry
-     * @param log text message of the entry
-     */
-    protected void addEntry(String priority, String component, String logPath, int lineNo, 
-            String logText) throws Exception {
-        addEntry(priority, component, logPath, lineNo, logText, -1);
-    }
-    
-
-    /**
-     * Helper function to store the entry which will be added to the database
-     * @param priority for the entry
-     * @param component of the entry
-     * @param logpath of the entry
-     * @param lineNo of the entry
-     * @param log text message of the entry
-     * @param elapsedTime of the component
-     */
-    protected void addEntry(String priority, String component, String logPath, int lineNo, 
-            String logText, float elapsedTime) throws Exception {
-        //log.debug("adding entry to the list");
-        File logPathFile = new File(logPath.trim());
-        String baseDir = logPathFile.getParent();
-        //Note: Always the query should be in "/" format only, compatible for both linux / windows
-        String uniqueLogPath = baseDir + "/" +  logPathFile.getName();
-        logEntries.add(new MetaDataDb.LogEntry(
-                logText, priority, 
-                component, uniqueLogPath, lineNo, elapsedTime));
-    }
-    
-    /**
-     * Looks for the text which matches the filter regular expression and adds the entries to the database.
-     * @param logTextInfo text message to be searched with filter regular expressions
-     * @param priority for the entry
-     * @param currentComponent of the logtextInfo
-     * @param logpath fo;e fpr wjocj tje text info has to be looked for with filter expression
-     * @param lineNumber of the text message
-     */
-    protected boolean findAndAddEntries(String logTextInfo, String currentComponent, 
-            String logPath, int lineNumber)throws Exception {
-        boolean entryAdded = false; 
-        String[] logText = logTextInfo.split("\n");
-        String severity = null;
-        for (int i = 0; i < logText.length; i++) {
-            severity = getSeverity(logText[i]);
-            if ( severity != null) {
-                addEntry(severity, currentComponent, logPath, 
-                        i + lineNumber, logText[i]);
-                if (!entryAdded) {
-                    entryAdded = true;
-                }
-            }
-        }
-        return entryAdded;
-    }
-    
-    /**
-     * Log text are processed based on iterator. When ever the entry is found the entry is returned
-     * and the function is called again for further entries.
-     * @return the iterator object for the metadata input.
-     */
-    public Iterator<MetaDataDb.LogEntry> iterator() {
-        return metadataInputIterator;
-    }
-
-    /**
-     * Class to process the files as stream and add the entries todb
-     */
-    public class MetaDataInputIterator implements Iterator<MetaDataDb.LogEntry> {
-        public boolean hasNext() {
-            if (fileList == null) {
-                fileList = getFileListFromFileSet();
-                if (fileList.isEmpty()) {
-                    throw new BuildException(" No input found.");
-                }
-            }
-            if (logEntries.size() > 0) {
-                return true;
-            }
-            boolean retValue = false;
-            try {
-                retValue = isEntryAvailable();
-            } catch ( Exception ex) {
-                throw new BuildException("Exception while analysing errors from the log:", ex);
-            }
-            return retValue;
-        }
-
-        /**
-         * Helper function to remove  entries if any
-         */
-        public void remove() {
-        }
-        
-
-        /**
-         * Gets the next entry, which has been identified
-         * @return log entry to be added to the database.
-         */
-        public MetaDataDb.LogEntry next() {
-            MetaDataDb.LogEntry entry = null;
-            try {
-                entry = getEntry();
-            } catch (Exception ex) {
-                log.debug("Exception while getting entry: ", ex);
-            }
-            return entry;
-        }
-    }
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/metadata/src/com/nokia/helium/metadata/ant/types/MetaDataFilter.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,116 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
- 
-package com.nokia.helium.metadata.ant.types;
-
-import org.apache.tools.ant.types.DataType;
-import org.apache.log4j.Logger;
-import java.util.regex.Pattern;
-
-
-/**
- * This class provides filter input to the metadata task.
- * <pre>
- * &lt;metadatafilter priority=&quot;error&quot; regex=&quot;&quot; description=&quot;&quot; /&gt;
- * </pre>
- * @ant.task name="metadatafilter" category="Metadata"
- */
-public class MetaDataFilter extends DataType
-{
-
-    private Logger log = Logger.getLogger(MetaDataFilter.class);
-
-    private String priority;
-    private String regex;
-    private String description;
-    private Pattern pattern;
-    
-
-    /**
-     * Helper function called by ant to set the priority type
-     * @param priority type of priority for this input.
-     */
-    public void setPriority(String prty) throws Exception {
-        if (prty == null || prty.trim().length() == 0) {
-            throw new Exception(" Invalid Priority");
-        }
-        priority = prty;
-    }
-
-    /**
-     * Helper function to return the priority type
-     * @return priority type
-     */
-    public String getPriority() {
-        return priority;
-    }
-
-    /**
-     * Helper function called by ant to set the regex
-     * @param regx regular expression of the filter
-     */
-    public void setRegex(String regx) throws Exception {
-        if (regx == null || regx.trim().length() == 0) {
-            throw new Exception(" Invalid Regular expression");
-        }
-        regex = regx;
-        createPattern(regx);
-    }
-
-    /**
-     * Helper function to return the regex type
-     * @return regular expression of this filter
-     */
-    public String getRegex() {
-        return regex;
-    }    
-
-    /**
-     * Helper function called by ant to set the description type
-     * @param desc description associated with filter.
-     */
-    public void setDescription(String desc) {
-        description = desc;
-    }
-
-    /**
-     * Helper function to return the description associated with regular expression
-     * @return description associated with regex.
-     */
-    public String getDescription() {
-        return description;
-    }
-    
-    /**
-     * Internal function to create the pattern
-     * @regex for which the pattern is created.
-     */
-    private void createPattern(String regex) {
-        pattern = Pattern.compile(regex);
-    }
-    
-    /**
-     * Helper function to return the pattern
-     * @return the pattern of this filter.
-     */
-    public Pattern getPattern() {
-        return pattern;
-    }
-}
-
-
--- a/buildframework/helium/external/helium-antlib/metadata/src/com/nokia/helium/metadata/ant/types/MetaDataFilterSet.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,225 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
- 
-package com.nokia.helium.metadata.ant.types;
-
-import java.io.*;
-import java.util.*;
-import org.apache.tools.ant.types.Reference;
-import org.apache.tools.ant.types.DataType;
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Project;
-import org.apache.log4j.Logger;
-import fmpp.models.CsvSequence;
-import freemarker.template.TemplateSequenceModel;
-
-
-/**
- * This type contains set of filters to be used by the metadatarecord. Two options:
- * <pre>
- * Example 1:
- * &lt;metadatafilterset id=&quot;common&quot; filterfile=&quot;filters.csv&quot; /&gt;
- * 
- * Example 2:
- * &lt;metadatafilterset id=&quot;common&quot;/&gt;
- *   &lt;metadatafilter priority=&quot;error&quot; regex=&quot;^make(?:\[\d+\])?:\s+.*\s+not\s+remade&quot; description=&quot;make error&quot; />
- *   &lt;metadatafilter priority=&quot;error&quot;regex=&quot;&quot; description=&quot;&quot; /&gt; 
- * &lt;metadatafilterset/&gt;
- *
- * Example 3:
- * &lt;metadatafilterset refid=&quot;common&quot; /&gt;
- * </pre>
- * @ant.task name="metadatafilterset" category="Metadata"
- */
-public class MetaDataFilterSet extends DataType
-{
-    private Vector<MetaDataFilter> filters = new Vector<MetaDataFilter>();
-    
-    private Vector<MetaDataFilterSet> filterSets = new Vector<MetaDataFilterSet>();
-    
-    private String filterFile;
-    
-    private Logger log = Logger.getLogger(MetaDataFilterSet.class);
-
-    /**
-     * Helper function called by ant to set the FilterFile
-     * @param FilterFile the csv file used by the filterset
-     */
-    public void setFilterFile(String file) throws Exception {
-        filterFile = file;
-        addCSVFromFile(file);
-    }
-
-    /**
-     * Helper function called to get FilterFile.
-     * @return filterfile used by this filterset
-     */
-    public String getFilterFile() {
-        return filterFile;
-    }
-
-    /**
-     * Helper function called to get filterlist.
-     * FilterSet can contain nested filterset, individual filter.
-     * Individual filter is created as nestedFilterSet and appended so that
-     * the precedence is maintained.
-     * @return All filters
-     */
-    public Vector<MetaDataFilter> getAllFilters()throws Exception {
-        Vector<MetaDataFilter> allFilters = new Vector<MetaDataFilter>();
-        //First look for filters associated with this set.
-        if (filters.size() > 0) {
-            allFilters.addAll(filters);
-            return allFilters;
-        }
-        // Then filters as reference in filterset
-        Reference refId = getRefid();
-        Object filterSetObject = null;
-        if (refId != null) {
-            try {
-                filterSetObject = refId.getReferencedObject();
-            } catch ( Exception ex) {
-                log.debug("Reference id of the metadata filter is not valid.", ex); 
-                throw new BuildException("Reference id of the metadata filter is not valid " + ex.getMessage(), ex);
-            }
-            if (filterSetObject != null && filterSetObject instanceof MetaDataFilterSet) {
-                allFilters.addAll(((MetaDataFilterSet)filterSetObject).getAllFilters());
-                return allFilters;
-            }
-            log.debug("Filterset object is not instance of MetaDataFilterSet");
-            throw new Exception ("Filterset object is not instance of MetaDataFilterSet");
-        }
-        // Add any nested filtersets
-        for (MetaDataFilterSet filterSet : filterSets) {
-            allFilters.addAll(filterSet.getAllFilters());
-        }
-        
-        return removeInvalidFilters(allFilters);
-    }
-
-    /**
-     * Helper function called to remove any invalid filters
-     * @return only the valid filters
-     */
-    private Vector<MetaDataFilter> removeInvalidFilters(Vector<MetaDataFilter> filterList) {
-        ListIterator<MetaDataFilter> iter = filterList.listIterator();
-        while (iter.hasNext()) {
-            MetaDataFilter filter = iter.next();
-            String priority = filter.getPriority();
-            String regEx = filter.getRegex();
-            if (priority == null || regEx == null) {
-                log("Warning: some filter is invalid removing it", Project.MSG_WARN);
-                iter.remove();
-            }
-        }
-        return filterList;
-        
-    }
-    
-    /**
-     * Helper function called by ant to create the new filter
-     */
-    public MetaDataFilter createMetaDataFilter() {
-        MetaDataFilter filter =  new MetaDataFilter();
-        add(filter);
-        return filter;
-    }
-
-    /**
-     * Helper function to add the created filter
-     * @param filter to be added to the filterset
-     */
-    public void add(MetaDataFilter filter) {
-        MetaDataFilterSet filterSet = createMetaDataFilterSet();
-        filterSet.getFilterList().add(filter);
-    }
-
-     Vector<MetaDataFilter> getFilterList() {
-         return filters;
-     }
-
-     /**
-     * Helper function called by ant to create the new filter
-     */
-    public MetaDataFilterSet createMetaDataFilterSet() {
-        MetaDataFilterSet filterSet =  new MetaDataFilterSet();
-        add(filterSet);
-        return filterSet;
-    }
-
-    /**
-     * Helper function to add the created filter
-     * @param filter to be added to the filterset
-     */
-    public void add(MetaDataFilterSet filterSet) {
-        if (filterSet != null) {
-            filterSets.add(filterSet);
-        }
-    }
-
-    /**
-     * Helper function to add the filters from the csv files
-     * @param csv file path from which the filters needs to be added.
-     */
-    private void addCSVFromFile(String csvPath) throws Exception {
-        CsvSequence csvs = new CsvSequence();
-        csvs.setSeparator(',');
-        log.debug("filter file: " + filterFile);
-        try {
-            csvs.load(new FileReader(new File(filterFile)));
-        } catch (java.io.FileNotFoundException fex) {
-            log.debug("Metadata CSV file not found:", fex);
-            throw fex;
-        } catch (fmpp.util.StringUtil.ParseException pex) {
-            log.debug("FMPP not able parse the Metadata CSV file. ", pex);
-            throw pex;
-        } catch (java.io.IOException iex) {
-            log.debug("Metadata I/O Exception. " + iex.getMessage(), iex);
-            throw iex;
-        }
-        int size = 0;
-        try {
-                log.debug("filter CSV record size: " + csvs.size());
-                size = csvs.size();
-            } catch (Exception ex) {
-                // We are Ignoring the errors as no need to fail the build.
-                log.debug("Exception in processing csv file " + filterFile, ex);
-            }
-            for (int i = 0; i < size; i++) {
-                try {
-                    TemplateSequenceModel model = (TemplateSequenceModel) csvs
-                    .get(i);
-                    int modelSize = model.size();
-                    if (modelSize != 3 ) {
-                        log.debug("Metadata CSV file filter file format is invalid. It has row size " + size);
-                        throw new Exception("Metadata CSV file filter file format is invalid. It has row size " + size);
-                    }
-                    MetaDataFilter filter = new MetaDataFilter();
-                    filter.setPriority(model.get(0).toString());
-                    filter.setRegex(model.get(1).toString());
-                    filter.setDescription(model.get(2).toString());
-                    filters.add(filter);
-                } catch (Exception ex) {
-                    // We are Ignoring the errors as no need to fail the build.
-                    log.debug("Exception in processing Metadate csv file " + filterFile, ex);
-                }
-            }
-    }
-}
-
-
--- a/buildframework/helium/external/helium-antlib/metadata/src/com/nokia/helium/metadata/ant/types/MetadataSource.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,88 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-package com.nokia.helium.metadata.ant.types;
-
-import com.nokia.helium.core.LogSource;
-import com.nokia.helium.metadata.db.MetaDataDb;
-import org.apache.log4j.Logger;
-import java.io.File;
-import java.util.List;
-import java.util.Map;
-import java.io.BufferedWriter;
-import java.io.FileWriter;
-
-/**
- * This type define an input source that will be communicated to the notifiers.
- * Not used, deprecated and an xml and html file is generated for signal modules.
- * @ant.type name="metadatasource" category="Metadata"
- * @deprecated
- * 
- */
-public class MetadataSource extends LogSource {
-
-    private static Logger logger = Logger.getLogger(MetadataSource.class);
-
-    private String db;
-    private String log;
-    
-    public void setDb(String db) {
-        this.db = db;
-    }
-    
-    public String getDb() {
-        return db;
-    }
-    
-    public void setLog(String log) {
-        this.log = log;
-    }
-    
-    public String getLog() {
-        return log;
-    }
-    
-    public File getFilename()
-    {
-        MetaDataDb mdb = new MetaDataDb(db);
-
-        String sql = "select * from metadata INNER JOIN logfiles ON logfiles.id=metadata.logpath_id INNER JOIN priority ON priority.id=metadata.priority_id where priority='ERROR' and path like '%" + log + "'";
-        
-        List<Map<String, Object>> records = mdb.getRecords(sql);
-        
-        try {
-            File temp = File.createTempFile("templog.", ".xml");
-            temp.deleteOnExit();
-            BufferedWriter output = new BufferedWriter(new FileWriter(temp));
-            output.write("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<log filename=\"" + log + "\">\n<build>\n");
-            
-            for (Map<String, Object> map : records)
-            {
-                output.write("<message priority=\"error\"><![CDATA[" + map.get("data") + "]]></message>\n");
-            }
-            
-            output.write("</build>\n</log>");
-            output.close();
-            
-            return temp;
-        } catch (Exception ex) {
-            logger.info("Exception generating xml file for metadata");
-            logger.debug("Exception in metadata source", ex);
-        }
-        return null;
-    }
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/metadata/src/com/nokia/helium/metadata/ant/types/PolicyLogMetaDataInput.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,137 +0,0 @@
-/*
- * Copyright (c) 2007-2008 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:  
- *
- */
-
-package com.nokia.helium.metadata.ant.types;
-
-import java.util.*;
-import org.apache.log4j.Logger;
-import javax.xml.stream.XMLStreamReader;
-import java.util.regex.Pattern;
-
-
-/**
- * This Type is to specify and use the policy logparsertype to 
- * parse and store the data based on xmlstreamreader.
- * <pre>
- * &lt;hlm:metadatafilterset id="policy.metadata.filter"&gt;
- *    &lt;metadatafilterset filterfile="common.csv" /&gt;
- * &lt;/hlm:metadatafilterset&gt;
- * 
- * &lt;hlm:policymetadatainput&gt;
- *    &lt;fileset dir="${project.dir}/../data/"&gt;
- *        &lt;include name="*validate*policy*.log"/&gt;
- *    &lt;/fileset&gt;
- *    &lt;metadatafilterset refid="policy.metadata.filter" /&gt;
- * &lt;/hlm:policymetadatainput&gt;
- * </pre>
- * @ant.task name="policymetadatainput" category="Metadata"
- */
-public class PolicyLogMetaDataInput extends XMLLogMetaDataInput {
-
-    private Logger log = Logger.getLogger(XMLLogMetaDataInput.class);
-    
-    private Map<String, String> currentAttributeMap;
-    
-
-    /**
-     * Constructor
-     */
-    public PolicyLogMetaDataInput() {
-    }
-    
-
-    /**
-     * Helper function to return the attributes of the stream reader
-     * @returns the attributes as a map.
-     */
-    private Map<String, String> getAttributes(XMLStreamReader streamReader) {
-        int count = streamReader.getAttributeCount() ;
-        if (count > 0 ) {
-            Map<String, String> attributesMap = new HashMap<String, String>();
-            for (int i = 0 ; i < count ; i++) {
-                attributesMap.put(streamReader.getAttributeLocalName(i), 
-                        streamReader.getAttributeValue(i));
-            }
-            return attributesMap;
-        }
-        return null;
-    }
-
-   
-    /**
-     * Function to process the start event of xml stream callback.
-     * @param streamReader: the input stream reader which contains the xml data to be parsed for recording data.
-     * @return true if there are any element to be added to the database.
-     */
-    boolean startElement (XMLStreamReader streamReader) {
-        String tagName = streamReader.getLocalName();
-        if (tagName.equalsIgnoreCase("error")) {
-            currentAttributeMap = getAttributes(streamReader);
-        }
-        return false;
-    }
-
-    /**
-     * Function to process the end event of xml stream callback.
-     * @param streamReader: the input stream reader which contains the xml data to be parsed for recording data.
-     * @return true if there are any element to be added to the database.
-     */
-    boolean endElement(XMLStreamReader streamReader) throws Exception {
-        boolean retValue = false;
-        try {
-            String tagName = streamReader.getLocalName();
-            String priority = "ERROR";
-            log.debug("endElement: " + tagName);
-            if (tagName.equalsIgnoreCase("error")) {
-                log.debug("tagName matches error");
-                String errorType = currentAttributeMap.get("type");
-                log.debug("errorType:" + errorType);
-                if (errorType.equals("unknownstatus")) {
-                    addEntry(priority, "CSV validation", getCurrentFile().toString(), -1, currentAttributeMap.get("message") + 
-                            currentAttributeMap.get("value"));
-                    retValue = true;
-                } else if (errorType.equals("A") || errorType.equals("B") 
-                        || errorType.equals("C") || errorType.equals("D")) {
-                    int flags = Pattern.CASE_INSENSITIVE | Pattern.DOTALL ;
-                    Pattern pattern = Pattern.compile("([\\\\/][^\\\\/]+?)$", flags);
-                    addEntry(priority, "Issues", getCurrentFile().toString(), -1, 
-                            errorType + "Found incorrect value for" + 
-                            pattern.matcher(currentAttributeMap.get("message")).replaceAll(""));
-                    retValue = true;
-                } else if (errorType.equals("missing")) {
-                    addEntry(priority, "Missing", getCurrentFile().toString(), -1, currentAttributeMap.get("message"));
-                    retValue = true;
-                } else if (errorType.equals("invalidencoding")) {
-                    addEntry(priority, "Incorrect policy files", getCurrentFile().toString(), -1,  currentAttributeMap.get("message"));
-                    retValue = true;
-                }
-            }
-        } catch (Exception ex) {
-            log.debug("exception in endelement",ex);
-            throw ex;
-        }
-        return retValue;
-    }
-    
-     /* Function to process the characters event of xml stream callback.
-     * @param streamReader: the input stream reader which contains the xml data to be parsed for recording data.
-     * @return true if there are any element to be added to the database.
-     */
-    boolean characters (XMLStreamReader streamReader) {
-        return false;
-    }
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/metadata/src/com/nokia/helium/metadata/ant/types/SBSLogMetaDataInput.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,655 +0,0 @@
-/*
- * Copyright (c) 2007-2008 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:  
- *
- */
-
-package com.nokia.helium.metadata.ant.types;
-
-import java.io.*;
-import java.util.*;
-import java.util.regex.Pattern;
-import java.util.regex.Matcher;
-import org.apache.log4j.Logger;
-import javax.xml.stream.XMLStreamReader;
-import javax.xml.stream.XMLInputFactory;
-import javax.xml.stream.events.XMLEvent;
-
-
-/**
- * This Type is to specify and use the sbs logparsertype to 
- * parse and store the data based on xmlstreamreader.
- * <pre>
- * &lt;hlm:metadatafilterset id="sbs.metadata.filter"&gt;
- *    &lt;metadatafilterset filterfile="common.csv" /&gt;
- * &lt;/hlm:metadatafilterset&gt;
- * 
- * &lt;hlm:sbsmetadatainput cleanLogFile="cleanlog.file" &gt
- *    &lt;fileset dir="${project.dir}/../data/"&gt;
- *        &lt;include name="*compile.log"/&gt;
- *    &lt;/fileset&gt;
- *    &lt;metadatafilterset refid="sbs.metadata.filter" /&gt;
- * &lt;/hlm:sbsmetadatainput&gt;
- * </pre>
- * @ant.task name="sbsmetadatainput" category="Metadata"
- */
-public class SBSLogMetaDataInput extends XMLLogMetaDataInput {
-
-    private static final String SPECIAL_CASE_REG_EX = "(make.exe|make): \\*\\*\\*.*(/.*)(_exe|_dll|_pdd|_ldd|_kext|_lib)/.*";
-
-    private static final String DRIVE_LETTER_REGEX = "(([a-z]|[A-Z]):(\\\\|/))(.*)(/bld\\.inf)";
-
-    private Logger log = Logger.getLogger(SBSLogMetaDataInput.class);
-
-    private String currentComponent;
-    
-    private float currentElapsedTime;
-    
-    private String logTextInfo = "";
-    
-    private HashMap<String, List <CategoryEntry>> generalTextEntries = new HashMap<String, List <CategoryEntry>>();
-    
-    private CategorizationHandler categorizationHandler;
-    
-    private int lineNumber;
-
-    private boolean recordText;
-    
-    private File cleanLogFile;
-    
-    private boolean additionalEntry;
-    
-    private Pattern specialCasePattern;
-    
-    private HashMap<String, TimeEntry> componentTimeMap = new HashMap<String, TimeEntry>();
-
-    /**
-     * Constructor
-     */
-    public SBSLogMetaDataInput() {
-        specialCasePattern = Pattern.compile(SPECIAL_CASE_REG_EX);
-    }
-    
-    
-    /**
-     * Removes the bld inf and the drive letter from the text
-     * @param text in which the bld.inf and drive letter to be removed
-     * @return updated string.
-     */
-    static String removeDriveAndBldInf(String text) {
-        Matcher matcher = (Pattern.compile(DRIVE_LETTER_REGEX)).matcher(text);
-        if (matcher.matches()) {
-            return matcher.group(4);
-        } else {
-            return text;
-        }
-    }
-
-    /**
-     * Removes the bld inf and the drive letter from the text
-     * @param text in which the bld.inf and drive letter to be removed
-     * @return updated string.
-     */
-    static String getComponent(XMLStreamReader streamReader) {
-        String currentComponent = getAttribute("bldinf", streamReader);
-        if ( currentComponent != null && currentComponent.equals("")) {
-            return null;
-        }
-        if (currentComponent != null ) {
-            currentComponent = removeDriveAndBldInf(currentComponent);
-        }
-        return currentComponent;
-    }
-
-    /**
-     * Generic function to return the attribute value of an attribute from stream
-     * @param attribute for which the value from xml stream to be returned.
-     * @return the attribute value of an attribute.
-     */
-    static String getAttribute(String attribute, XMLStreamReader streamReader) {
-        int count = streamReader.getAttributeCount() ;
-        for (int i = 0 ; i < count ; i++) {
-            if ( streamReader.getAttributeLocalName(i).equals(attribute) ) {
-                return streamReader.getAttributeValue(i);
-            }
-        }
-        return null;
-    }
-
-    /**
-     * Helper function to set the clean log file
-     * @param logFile which is the clean log file to process for additional categories
-     */
-    public void setCleanLogFile(File logFile) {
-        cleanLogFile = logFile;
-    }
-
-    /**
-     * Function to process the characters event of xml stream callback.
-     * @param streamReader: the input stream reader which contains the xml data to be parsed for recording data.
-     * @return true if there are any element to be added to the database.
-     */
-    public boolean characters (XMLStreamReader streamReader) {
-        if (recordText) {
-            logTextInfo += streamReader.getText();
-        } else {
-            if (!additionalEntry) {
-                additionalEntry = true;
-            }
-            String cdataText = streamReader.getText().trim();
-            String [] textList = cdataText.split("\n");
-            for (String text : textList) {
-                Matcher specialCaseMatcher = specialCasePattern.matcher(text);
-                List <CategoryEntry> entryList  = null;
-                if (specialCaseMatcher.matches()) {
-                    String componentName = specialCaseMatcher.group(2);
-                    String extension = specialCaseMatcher.group(3); 
-                    String componentWithTarget =  (componentName.substring(1) + "." 
-                        + extension.substring(1)).toLowerCase();
-                    CategoryEntry newEntry = new CategoryEntry(text, componentWithTarget ,
-                            "error", streamReader.getLocation().getLineNumber(), getCurrentFile().toString());
-                    entryList = generalTextEntries.get(componentWithTarget); 
-                    if ( entryList == null) {
-                        entryList = new ArrayList<CategoryEntry>();
-                        generalTextEntries.put(componentWithTarget, entryList);
-                    }
-                    entryList.add(newEntry);
-                } else {
-                    String componentWithTarget = null;
-                    int indexMakeString = text.indexOf( "make: ***" );
-                    int indexSlash = text.lastIndexOf( "/" );
-                    if (indexMakeString != -1 && indexSlash != -1) {
-                        int indexExt = ( indexSlash  + 1) + text.substring(indexSlash).indexOf( "." );
-                        if ( indexExt != -1 ) {
-                            componentWithTarget = (text.substring(indexSlash,indexExt + 3)).toLowerCase();
-                        }
-                    }
-                    if (componentWithTarget != null) {
-                        CategoryEntry newEntry = new CategoryEntry(text, componentWithTarget ,
-                                "error", streamReader.getLocation().getLineNumber(), getCurrentFile().toString());                    
-                        entryList = generalTextEntries.get(componentWithTarget);
-                        if (entryList == null) {
-                            entryList = new ArrayList<CategoryEntry>();
-                            generalTextEntries.put(componentWithTarget, entryList);
-                        }
-                        entryList.add(newEntry);
-                    }
-                    
-                }
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Function to process the start event of xml stream callback.
-     * @param streamReader: the input stream reader which contains the xml data to be parsed for recording data.
-     * @return true if there are any element to be added to the database.
-     */
-    public boolean startElement (XMLStreamReader streamReader) throws Exception {
-        try {
-            String tagName = streamReader.getLocalName();
-            if (tagName.equalsIgnoreCase("buildlog")) {
-                log.debug("starting with buildlog");
-            }
-            if (tagName.equalsIgnoreCase("recipe") ) {
-                lineNumber = streamReader.getLocation().getLineNumber();
-                currentComponent = getComponent(streamReader);
-                recordText = true;
-            } else if (tagName.equalsIgnoreCase("error")
-                    || tagName.equalsIgnoreCase("warning")) {
-                lineNumber = streamReader.getLocation().getLineNumber();
-                currentComponent = getComponent(streamReader);
-                recordText = true;
-            } else if (tagName.equalsIgnoreCase("whatlog") ) {
-                currentComponent = getComponent(streamReader);
-            } else if (tagName.equalsIgnoreCase("time")) {
-                currentElapsedTime = Float.valueOf(getAttribute("elapsed", streamReader)).floatValue();
-                if (currentComponent != null) {
-                    TimeEntry timeObject = componentTimeMap.get(currentComponent);
-                    if (timeObject == null) {
-                        timeObject = new TimeEntry(currentElapsedTime, getCurrentFile().toString());
-                        componentTimeMap.put(currentComponent, timeObject);
-                    } else  {
-                        timeObject.addElapsedTime(currentElapsedTime);
-                    }
-                }
-            }
-        } catch (Exception ex) {
-            log.debug("exception in startelement",ex);
-            throw ex;
-        }
-        return false;
-    }
-
-    /**
-     * Checks whether is there any additional entry. During log parsing, all the text which are not part of any tag
-     * and are part of CDATA are recorded in a list and checked in this function for any matching errors and processed
-     * for their categorization.
-     * @return true if there are any element to be added to the database.
-     */
-    public boolean isAdditionalEntry() {
-        try { 
-            if (!componentTimeMap.isEmpty()) {
-                Set<String> componentSet = componentTimeMap.keySet();
-                for (String component : componentSet) {
-                    
-                    TimeEntry entry = componentTimeMap.get(component);
-                    addEntry("default", component, entry.getFilePath(), -1, 
-                            null, entry.getElapsedTime());
-                    componentTimeMap.remove(component);
-                    return true;
-                }
-            }
-            if (cleanLogFile != null ) {
-                if (categorizationHandler == null ) {
-                    log.info("initializing categorization handler");
-                    categorizationHandler = 
-                        new CategorizationHandler(cleanLogFile, generalTextEntries);
-                }
-            }
-            if (categorizationHandler != null && categorizationHandler.hasNext()) {
-                try {
-                    CategoryEntry entry = categorizationHandler.getNext();
-                    if (entry != null) {
-                        addEntry(entry.getSeverity(), entry.getCategory(), entry.getLogFile(), 
-                                entry.getLineNumber(), entry.getText());
-                        return true;
-                    }
-                } catch (Exception ex) {
-                    log.debug("Exception during categorization handler", ex);
-                    return false;
-                }
-            }
-        } catch (Exception ex) {
-            log.debug("Exception in finding additional entry", ex);
-        }
-        return false;
-    }
-
-    /**
-     * Function to process the end event of xml stream callback.
-     * @param streamReader: the input stream reader which contains the xml data to be parsed for recording data.
-     * @return true if there are any element to be added to the database.
-     */
-    public boolean endElement(XMLStreamReader streamReader) throws Exception {
-        try {
-            String tagName = streamReader.getLocalName();
-            if (tagName.equalsIgnoreCase("recipe")) {
-                recordText = false;
-                if (logTextInfo != null) {
-                    if (currentComponent == null) {
-                        currentComponent = "general";
-                    }
-                    boolean entryCreated = findAndAddEntries(logTextInfo, currentComponent,
-                            getCurrentFile().toString(), lineNumber);
-                    logTextInfo = "";
-                    if ( entryCreated) {
-                        return true;
-                    }
-                }
-            } else if (tagName.equalsIgnoreCase("error")
-                    || tagName.equalsIgnoreCase("warning")) {
-                recordText = false;
-                if (currentComponent == null) {
-                    currentComponent = "general";
-                }
-                addEntry(tagName, currentComponent, getCurrentFile().toString(), lineNumber, 
-                        logTextInfo);
-                logTextInfo = "";
-                return true;
-            } else if (tagName.equalsIgnoreCase("whatlog") ) {
-                addEntry("default", currentComponent, getCurrentFile().toString(), -1, 
-                        "");
-                return true;
-            }
-        } catch (Exception ex) {
-            log.debug("Exception while processing for sbs metadata input", ex);
-            throw ex;
-        }
-        return false;
-    }
-}
-
-/* This class stores the temporary Time entry which is being recorded for each data
- * at the end of the build and during isAdditionalEntry function, the time for the component
- * is updated in the database.
- */
-class TimeEntry {
-    
-    private float elapsedTime;
-    private String filePath;
-    
-    /**
-     * Constructor to store the elapsedTime and the path which are to be updated to the database.
-     * @param elapsedTime: time duration of the component.
-     * @path of the component.
-     */
-    public TimeEntry(float elapsedTime, String path) {
-        elapsedTime = elapsedTime;
-        filePath = path;
-    }
-    
-
-    /**
-     * Helper function to add time to the previous elapsed time.
-     * @param time to be added to the elapsed timet.
-     */
-    public void addElapsedTime(float time) {
-        elapsedTime += time;
-    }
-    
-    /**
-     * Helper function to return the elapsed time
-     * @return elapsed time of this time entry.
-     */
-    public float getElapsedTime() {
-        return elapsedTime;
-    }
-
-    /**
-     * Helper function to return the file path of this entry
-     * @return path of this time entry.
-     */
-    public String getFilePath() {
-        return filePath;
-    }
-}
-/* This class stores the temporary category entry which is processed during
- * at the end of the build and categorized and written to the database.
- */
-class CategoryEntry {
-
-    private String text;
-    private int lineNumber;
-    private String fileName;
-    private String severity;
-    private String category;
-
-
-    /**
-     * Constructor of the category entry
-     * @param txt - text message of the entry
-     * @param ctgry - category of the entry
-     * @param svrty - severity of this entry
-     * @param lnNo - line number of this entry
-     * @param flName - name of the file being processed.
-     * @return path of this time entry.
-     */
-    public CategoryEntry(String txt, String ctgry, 
-            String svrty, int lnNo, String flName) {
-        text = txt;
-        lineNumber = lnNo;
-        fileName = flName;
-        severity = svrty;
-        category = "general";
-        if (ctgry != null) {
-            category = ctgry;
-        }
-    }
-    
-    /**
-     * Helper function to set the category
-     * @param set the category
-     */
-    void setCategory(String ctgry) {
-        category = ctgry;
-    }
-    
-    /**
-     * Helper function to return the category
-     * @return the category of this entry.
-     */
-    String getCategory() {
-        return category;
-    }
-
-    /**
-     * Returns the logfile of this entry
-     * @return logfile of this entry
-     */
-    String getLogFile() {
-        return fileName;
-    }
-
-    /**
-     * Helper function returns the severity of this entry
-     * @return severity of this entry
-     */
-    String getSeverity() {
-        return severity;
-    }
-
-    /**
-     * Helper function returns the line number of this entry
-     * @return the line number of this entry.
-     */
-    
-    int getLineNumber() {
-        return lineNumber;
-    }
-
-    /**
-     * Helper function returns the text message of this entry
-     * @return text message of this entry
-     */
-    String getText() {
-        return text;
-    }
-
-}
-
-/* This class handles the categorization of scanlog errors based on the clean log output
- * from raptor.
- */
- class CategorizationHandler {
-   
-    private int count;
-    
-    private String currentComponent;
-    private boolean isInFileTag;
-    
-    private HashMap<String, List <CategoryEntry>> categoryList;
-
-    private List<CategoryEntry> currentList;
-
-    private XMLInputFactory xmlInputFactory;
-
-    private XMLStreamReader xmlStreamReader;
-
-    private Logger log = Logger.getLogger(CategorizationHandler.class);
-
-    /**
-     * Constructor
-     * @param clean log file input using which the CDATA text are categorized
-     * @param list of entries to be categorized
-     */
-    public CategorizationHandler(File cleanLogFile, HashMap<String, List <CategoryEntry>> ctgMap) {
-        categoryList = ctgMap;
-        Set<String> categorySet = categoryList.keySet();
-        if (cleanLogFile != null ) {
-            try {
-                xmlInputFactory = XMLInputFactory.newInstance();
-                xmlStreamReader = xmlInputFactory.createXMLStreamReader(cleanLogFile.toString(), 
-                    new BufferedInputStream(new FileInputStream(cleanLogFile)));
-            } catch ( Exception ex) {
-                log.debug("exception while initializing stax processor",ex);
-            }
-        }
-    }
-
-    /**
-     * Checks whether is there any entry (by checking for categorization of the recorded CDATA text)
-     * @return true if there any entry that are being categorized.
-     */
-    public boolean hasNext() {
-        boolean generalEntriesStatus = categoryList != null && !categoryList.isEmpty();
-        boolean currentListStatus = currentList != null && ! currentList.isEmpty();
-        return generalEntriesStatus || currentListStatus;
-    }
-
-    /**
-     * Process the startelement event of XML Stream from clean log.
-     * @param streamReader clean log xml stream reader to be processed
-     * @return true if there are any entry to be added.
-     */
-    public boolean startElement(XMLStreamReader streamReader) throws Exception {
-        String tagName = streamReader.getLocalName();
-        if (tagName.equals("clean")) {
-            currentComponent = getCategory(streamReader);
-            if (currentComponent != null) {
-                currentComponent = SBSLogMetaDataInput.removeDriveAndBldInf(currentComponent);
-            }
-        }
-        if (tagName.equals("file")) {
-            isInFileTag = true;
-        }
-        return false;
-    }
-
-    /**
-     * Process the endelement event of XML Stream from clean log.
-     * @param streamReader clean log xml stream reader to be processed
-     * @return true if there are any entry to be added.
-     */
-    public boolean endElement (XMLStreamReader streamReader) throws Exception {
-        String tagName = streamReader.getLocalName();
-        if (tagName.equals("file")) {
-            isInFileTag = false;
-        }
-        return false;
-    }
-
-    /**
-     * Internal function to find bld inf from the component 
-     * @param streamReader clean log xml stream reader to be processed
-     * @return the bld.inf attribute.
-     */
-    private String getCategory(XMLStreamReader streamReader) {
-        int count = streamReader.getAttributeCount() ;
-        for (int i = 0 ; i < count ; i++) {
-            if ( streamReader.getAttributeLocalName(i).equals("bldinf") ) {
-                return streamReader.getAttributeValue(i);
-            }
-        }
-        return null;
-    }
-
-    /**
-     * Internal function to find the CDATA text of the file attribute.
-     * @param streamReader clean log xml stream reader to be processed
-     * @return the CDATA text of <file> tag.
-     */
-    private String characters(XMLStreamReader xmlStreamReader) {
-        if (isInFileTag) {
-            return xmlStreamReader.getText().toLowerCase();
-        }
-        return null;
-    }
-
-    /**
-     * Gets the entry which matches the input path. For each line of <file> tag attribute, the entry list
-     * is compared with that and if there is any match, then it returns the entry from the list, which
-     * is being mtached.
-     * @param path for which matching entry is looked for.
-     * @return entry which matched the path from the clean log file.
-     */
-    private List<CategoryEntry> getEntry(String path) {
-        int index = 0;
-        Set<String> categorySet = categoryList.keySet();
-        for (String key : categorySet) {
-            if (path.indexOf(key) != -1) {
-                List<CategoryEntry> entry = categoryList.get(key);
-                categoryList.remove(key);
-                return entry;
-            }
-        }
-        return null;
-    }
-
-    /**
-     * Internal function to update the category entries of the list.
-     * @param categoryList for which the category.
-     * @param category which is to be updated to the list.
-     */
-    private void updateCategoryEntries(List<CategoryEntry> categoryList, String category) {
-        for (CategoryEntry entry : categoryList) {
-            entry.setCategory(category);
-        }
-    }
-
-    /**
-     * Gets the next entry from the stream based on categorization.
-     * @return the category entry which is identified as categorized entry.
-     */
-    public CategoryEntry getNext() throws Exception {
-        try {
-            boolean entryCreated = false;
-            if (currentList != null && !currentList.isEmpty()) {
-                CategoryEntry entry = currentList.get(0);
-                currentList.remove(0);
-                return entry;
-            }
-            if (xmlStreamReader != null ) {
-                while (xmlStreamReader.hasNext()) {
-                    int eventType = xmlStreamReader.next();
-                    switch (eventType) {
-                    case XMLEvent.START_ELEMENT:
-                        entryCreated = startElement(xmlStreamReader);
-                        break;
-                    case XMLEvent.END_ELEMENT:
-                        endElement(xmlStreamReader);
-                        break;
-                    case XMLEvent.CHARACTERS:
-                        String path = characters(xmlStreamReader);
-                        if (path != null ) {
-                            currentList = getEntry(path);
-                            if (currentList != null && !currentList.isEmpty()) {
-                                if (currentComponent != null) {
-                                    updateCategoryEntries(currentList, currentComponent);
-                                    CategoryEntry entry = (CategoryEntry)currentList.remove(0);
-                                    return entry;
-                                }
-                            }
-                        }
-                        break;
-                    default:
-                        break;
-                    }
-                }
-                if (xmlStreamReader != null) {
-                    close();
-                }
-            }
-        } catch ( Exception ex) {
-            log.debug("exception in categorization",ex);
-            throw ex;
-        }
-        return null;
-    }
-    /**
-     * Internal function to close the clean log file stream
-     */
-    private void close() {
-        try {
-            if (xmlStreamReader != null) {
-                xmlStreamReader.close();
-                xmlStreamReader = null;
-            }
-        } catch (Exception ex) {
-            log.debug("exception while closing xml stream",ex);
-        }
-        
-    }
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/metadata/src/com/nokia/helium/metadata/ant/types/TextLogMetaDataInput.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,148 +0,0 @@
-/*
- * Copyright (c) 2007-2008 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:  
- *
- */
-
-package com.nokia.helium.metadata.ant.types;
-
-import java.io.*;
-import java.util.*;
-import org.apache.log4j.Logger;
-
-/**
- * This Type is to specify and use the text logparser type to parse and store the data.
- *
- * <pre>
- * &lt;hlm:metadatafilterset id="text_log_metadata_input"&gt;
- *    &lt;metadatafilterset filterfile="${project.dir}/../data/common.csv" /&gt;
- * &lt;/hlm:metadatafilterset&gt;
- * 
- * &lt;hlm:textmetadatainput&gt;
- *    &lt;fileset dir="${project.dir}/../data/"&gt;
- *        &lt;include name="*_fixslashes*.log"/&gt;
- *    &lt;/fileset&gt;
- *    &lt;metadatafilterset refid="text_log_metadata_input" /&gt;
- * &lt;/hlm:textmetadatainput&gt;
- * </pre>
- * 
- * @ant.task name="textmetadatainput" category="Metadata"
- */
-public class TextLogMetaDataInput extends LogMetaDataInput {
-
-    private Logger log = Logger.getLogger(TextLogMetaDataInput.class);
-    
-    private int lineNumber;
-    
-    private BufferedReader currentReader;
-
-    /**
-     * Constructor
-     */
-    public TextLogMetaDataInput() {
-        
-    }
-
-    /**
-     * Helper function to set the line number
-     * @param lineNo to be set for the entry
-     */
-    protected void setLineNumber(int lineNo) {
-        lineNumber = lineNo;
-    }
-
-    /**
-     * Helper function to return the line number of this entry.
-     * @return line number of the entry.
-     */
-    protected int getLineNumber() {
-        return lineNumber;
-    }
-
-    /**
-     * Helper function to set the reader of this stream
-     * @param reader to process the stream.
-     */
-    protected void setCurrentReader(BufferedReader reader) {
-        currentReader = reader;
-    }
-
-    /**
-     * Function to check if is there any additionaly entry. This is being used for example during streaming
-     * recorded and at the end of streaming use the recorded data to add any additional entry. Used by
-     * @return true if there are any additional entries which are to be recorded in the database.
-     */
-    public boolean isAdditionalEntry() {
-        return false;
-    }
-
-    /**
-     * Helper function to return the lbuffer reader for the current meta data input
-     * @return buffer reader object for the current metadata input.
-     */
-    protected BufferedReader getCurrentReader() {
-        return currentReader;
-    }
-
-    public boolean isEntryCreated(File currentFile) throws Exception {
-        String exceptions = "";
-        try {
-            if (currentReader == null) {
-                lineNumber = 0;
-                log.debug("Current Text log file name:" + currentFile);
-                log.debug("Processing file: " + currentFile);
-                currentReader = new BufferedReader(new FileReader(currentFile));
-            }
-            String logText = null;
-            while ((logText = currentReader.readLine()) != null) {
-                logText = logText.replaceFirst("^[ ]*\\[.+?\\][ ]*", "");
-                String severity = getSeverity(logText);
-                if (severity != null) {
-                    addEntry(severity, currentFile.getName(), currentFile.toString(), 
-                            lineNumber, logText );
-                    lineNumber ++;
-                    return true;
-                }
-            }
-            currentReader.close();
-            currentReader = null;
-            if (isAdditionalEntry()) {
-                return true;
-            }
-        } catch (Exception ex) {
-            log.debug("Exception in TextLogMetadata", ex);
-            try {
-                currentReader.close();
-                currentReader = null;
-            } catch (Exception ex1) {
-                // We are Ignoring the errors as no need to fail the build.
-                log.debug("Exception in TextLogMetadata", ex1);
-                try {
-                    currentReader.close();
-                } catch ( IOException iex) {
-                 // We are Ignoring the errors as no need to fail the build.
-                    log.debug("Exception in closing reader", iex);
-                }
-                currentReader = null;
-                exceptions = exceptions + ex.getMessage() + "\n";
-                return false;
-            }
-        }
-        if (!exceptions.equals("")) {
-            throw new Exception(exceptions);
-        }
-        
-        return false;
-    }
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/metadata/src/com/nokia/helium/metadata/ant/types/XMLLogMetaDataInput.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,148 +0,0 @@
-/*
- * Copyright (c) 2007-2008 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:  
- *
- */
-
-package com.nokia.helium.metadata.ant.types;
-
-import java.io.*;
-import java.util.*;
-import org.apache.log4j.Logger;
-import javax.xml.stream.XMLInputFactory;
-import javax.xml.stream.XMLStreamReader;
-import javax.xml.stream.events.XMLEvent;
-
-
-/**
- * This Type abstract base class for all the types based on
- * XML processing.
- */
-abstract class XMLLogMetaDataInput extends LogMetaDataInput {
-
-    private Logger log = Logger.getLogger(XMLLogMetaDataInput.class);
-
-    private XMLInputFactory xmlInputFactory;
-
-    private XMLStreamReader xmlStreamReader;
-    
-    private boolean inParsing;
-    
-
-    /**
-     * Constructor
-     */
-    public XMLLogMetaDataInput() {
-        try {
-            inParsing = true;
-            xmlInputFactory = XMLInputFactory.newInstance();
-            xmlInputFactory.setProperty(XMLInputFactory.IS_REPLACING_ENTITY_REFERENCES,Boolean.TRUE);
-            xmlInputFactory.setProperty(XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES,Boolean.FALSE);
-            xmlInputFactory.setProperty(XMLInputFactory.IS_COALESCING , Boolean.TRUE);
-        } catch (Exception ex) {
-         // We are Ignoring the errors as no need to fail the build.
-            log.debug("Exception while initializing stax processing",ex);
-        }
-    }
-    
-    /**
-     * Closes the xml stream
-     */
-    private void close() {
-        try {
-            if (xmlStreamReader != null) {
-                xmlStreamReader.close();
-                xmlStreamReader = null;
-            }
-        } catch (Exception ex) {
-         // We are Ignoring the errors as no need to fail the build.
-            log.debug("Exception while closing xml stream", ex);
-        }
-        
-    }
-
-    /**
-     * Function to check from the input stream if is there any entries available.
-     * @param file for which the contents needs to be parsed for errors
-     * @return true if there are any entry available otherwise false.
-     */
-    boolean isEntryCreated(File currentFile) throws Exception {
-        boolean entryCreated = false;
-        if (inParsing ) {
-            if (xmlStreamReader == null) {
-                log.debug("Processing file: " + currentFile);
-                xmlStreamReader = xmlInputFactory.createXMLStreamReader(
-                        currentFile.toString(), new BufferedInputStream(new FileInputStream(currentFile)));
-            }
-            int eventType = xmlStreamReader.getEventType();
-            while (xmlStreamReader.hasNext()) {
-                eventType = xmlStreamReader.next();
-                switch (eventType) {
-                case XMLEvent.START_ELEMENT:
-                    entryCreated = startElement(xmlStreamReader);
-                    break;
-                case XMLEvent.END_ELEMENT:
-                    entryCreated = endElement(xmlStreamReader);
-                    break;
-                case XMLEvent.CHARACTERS:
-                    entryCreated = characters(xmlStreamReader);
-                    break;
-                default:
-                    break;
-                }
-                if ( entryCreated) {
-                    return true; 
-                }
-            }
-            if (xmlStreamReader != null) {
-                close();
-            }
-            inParsing = false;
-        }
-        if (isAdditionalEntry()) {
-            return true;
-        }
-        return false;
-    }
-
-    /**
-     * Function to check if is there any additionaly entry. This is being used for example during streaming
-     * recorded and at the end of streaming use the recorded data to add any additional entry. Used by
-     * @return true if there are any additional entries which are to be recorded in the database.
-     */
-    public boolean isAdditionalEntry() {
-        return false;
-    }
-
-    /**
-     * Function implemented by the subclasses to process the start event of xml stream callback.
-     * @param streamReader: the input stream reader which contains the xml data to be parsed for recording data.
-     * @return true if there are any element to be added to the database.
-     */
-    abstract boolean startElement (XMLStreamReader streamReader) throws Exception ;
-
-    /**
-     * Function implemented by the subclasses to process the end event of xml stream callback.
-     * @param streamReader: the input stream reader which contains the xml data to be parsed for recording data.
-     * @return true if there are any element to be added to the database.
-     */
-    abstract boolean endElement(XMLStreamReader streamReader) throws Exception;
-
-    /**
-     * Function implemented by the subclasses to process the characters event of xml stream callback.
-     * @param streamReader: the input stream reader which contains the xml data to be parsed for recording data.
-     * @return true if there are any element to be added to the database.
-     */
-    abstract boolean characters (XMLStreamReader streamReader);
-}
--- a/buildframework/helium/external/helium-antlib/metadata/src/com/nokia/helium/metadata/db/MetadataDb.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,611 +0,0 @@
-/*
- * Copyright (c) 2007-2008 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:  
- *
- */
-package com.nokia.helium.metadata.db;
-
-import java.io.File;
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.PreparedStatement;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.sql.ResultSet;
-import java.sql.ResultSetMetaData;
-
-import org.apache.log4j.Logger;
-import org.apache.tools.ant.BuildException;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Map;
-
-/**
- * A database for storing metadata about build log information.
- */
-public class MetaDataDb
-{
-    private static Logger log = Logger.getLogger(MetaDataDb.class);
-
-    private static final String DRIVER_CLASS_NAME = "org.sqlite.JDBC";
-
-    private static final String URL_PREFIX = "jdbc:sqlite:/";
-
-    private static final int LOG_ENTRY_CACHE_LIMIT = 500;
-
-    private static final int DB_SCHEMA_VERSION = 1;
-
-
-    private static final String[] INIT_TABLES = {
-        "CREATE TABLE schema (version INTEGER default " + DB_SCHEMA_VERSION + ")", 
-        "CREATE TABLE metadata (priority_id INTEGER, component_id INTEGER, line_number INTEGER, data TEXT, logpath_id INTEGER)", 
-        "CREATE TABLE component (id INTEGER PRIMARY KEY,component TEXT, logPath_id INTEGER, UNIQUE (logPath_id,component))", 
-        "CREATE TABLE priority (id INTEGER PRIMARY KEY,priority TEXT)", 
-        "CREATE TABLE logfiles (id INTEGER PRIMARY KEY, path TEXT)",
-        "CREATE TABLE componenttime (cid INTEGER PRIMARY KEY, time DOUBLE default 0, UNIQUE (cid))"
-    };
-
-    private static final String INSERT_METADATA_ENTRY = "INSERT INTO metadata VALUES(?, ?, ?, ?, ?)";
-    private static final String INSERT_LOGENTRY = "INSERT or IGNORE INTO logfiles VALUES(?, ?)";
-    private static final String INSERT_PRIORITYENTRY = "INSERT INTO priority VALUES(?, ?)";
-    private static final String INSERT_COMPONENTENTRY = "INSERT or IGNORE INTO component VALUES(?, ?, ?) ";;
-    private static final String INSERT_COMPONENT_TIME = "INSERT or IGNORE INTO componenttime VALUES(?, ?)";
-    
-    private String dbPath;
-
-    private String url;
-
-    private boolean statementsInitialized;
-
-    private Connection connection;
-
-    private Connection readConnection;
-
-    private PreparedStatement insertMetaDataEntryStmt;
-    private PreparedStatement insertLogEntryStmt;
-    private PreparedStatement insertComponentStmt;
-    private PreparedStatement insertComponentTimeStmt;
-    
-    private int entryCacheSize;
-
-    /**
-     * Opens or creates a database and initialises the tables.
-     * 
-     * @param databasePath The path to the database
-     */
-    public MetaDataDb(String databasePath)
-    {
-        dbPath = databasePath;
-        url = URL_PREFIX + dbPath;
-        try
-        {
-            Class.forName(DRIVER_CLASS_NAME);
-        }
-        catch (java.lang.ClassNotFoundException e)
-        {
-            throw new BuildException("JDBC Driver could not be found");
-        }
-        
-        synchronized (MetaDataDb.class) {
-            // See if the database needs to be initialized
-            boolean initializeDatabase = false;
-            File dbFile = new File(dbPath);
-            if (!dbFile.exists())
-            {
-                initializeDatabase = true;
-            } else {
-                try {
-                    log.debug("checking for schema version of db");
-                    initializeConnection();
-                    Statement stmt = connection.createStatement();
-                    ResultSet rs = stmt.executeQuery("select version from schema");
-                    int version = -1;
-                    if ( rs.next()) {
-                        version = rs.getInt(1);
-                    }
-                    rs.close();
-                    stmt.close();
-                    log.debug("schema version of db:" + version);
-                    if (version != DB_SCHEMA_VERSION) {
-                        log.debug("Schema Not matched deleting db file");
-                        dbFile.delete();
-                        initializeDatabase = true;
-                    }
-                    finalizeConnection();
-                } catch (SQLException ex) {
-                    try {
-                        finalizeConnection();
-                    } catch (SQLException ex1) {
-                        throw new BuildException("Exception while finalizing Metadata database. ", ex1);
-                    }
-                    // We are Ignoring the errors as no need to fail the build.
-                    log.debug("Exception checking schema for db", ex);
-                    dbFile.delete();
-                    initializeDatabase = true;
-                }
-            }
-            try
-            {
-                initializeConnection();
-                connection.setAutoCommit(false);
-                if (initializeDatabase)
-                {
-                    Statement statement = connection.createStatement();
-                    //statement.setQueryTimeout(60);
-                    // Create tables
-                    for (int i = 0; i < INIT_TABLES.length; i++)
-                    {
-                        statement.addBatch(INIT_TABLES[i]);
-                    }
-    
-                    // Fill out the priority table
-                    Priority[] priorityValues = Priority.values();
-                    for (int i = 0; i < priorityValues.length; i++)
-                    {
-                        statement.addBatch("INSERT INTO priority (priority) VALUES (\""
-                                + priorityValues[i] + "\")");
-                    }
-                    statement.addBatch("INSERT INTO schema (version) VALUES (\"" + DB_SCHEMA_VERSION + " \")");
-                    statement.addBatch("create unique index logfile_unique_1 on logfiles (path)");
-    
-                    int[] returnCodes = statement.executeBatch();
-                    connection.commit();
-                    connection.setAutoCommit(false);
-                    statement.close();
-                    finalizeConnection();
-                }
-            }
-            catch (SQLException e)
-            {
-                throw new BuildException("Problem while initializing Metadata database. ", e);
-            }
-        }
-    }    
-
-    /** Levels of log entry types. */
-    public enum Priority
-    {
-        // The values assigned to these enums should match the 
-        // automatically assigned values created in the database table
-        FATAL(1), ERROR(2), WARNING(3), INFO(4), REMARK(5), DEFAULT(6), CRITICAL(7);
-        private final int value;
-        Priority(int value)
-        {
-            this.value = value;
-        }
-        public int getValue() {
-            return value;
-        }
-
-        public  static Priority getPriorityEnum( int i ) {
-            final Priority[] values  = values();
-            return i >= 0 && i < values .length ? values[i] : FATAL;
-        }
-    };
-
-
-    /**
-     * Helper class to store the log entry , used to write to the database
-     * 
-     * @param databasePath The path to the database
-     */
-    public static class LogEntry
-    {
-        private String text;
-
-        private Priority priority;
-
-        private String component;
-        
-        private int lineNumber;
-        
-        private String logPath;
-        
-        private float elapsedTime;
-
-    /**
-     * Constructor for the helper class 
-     */
-        public LogEntry(String text, Priority priority, String component, 
-                String logPath, int lineNumber, float time)
-        {
-            this.text = text;
-            this.priority = priority;
-            this.component = component;
-            this.lineNumber = lineNumber;
-            this.logPath = logPath;
-            this.elapsedTime = time;
-        }
-
-    /**
-     * Constructor for the helper class 
-     */
-        public LogEntry(String text, Priority priority, String component, 
-                String logPath, int lineNumber)
-        {
-            this(text, priority, component, logPath, lineNumber, -1);
-        }
-
-    /**
-     * Constructor for the helper class 
-     */
-        public LogEntry(String text, String priorityTxt, String component, String logPath, 
-                int lineNumber, float time) throws Exception
-        {
-            Priority prty = null;
-            String prtyText = priorityTxt.trim().toLowerCase();
-            if (prtyText.equals("error")) {
-                prty = Priority.ERROR;
-            } else if (prtyText.equals("warning")) {
-                prty = Priority.WARNING;
-            } else if (prtyText.equals("fatal")) {
-                prty = Priority.FATAL;
-            } else if (prtyText.equals("info")) {
-                prty = Priority.INFO;
-            } else if (prtyText.equals("remark")) {
-                prty = Priority.REMARK;
-            } else if (prtyText.equals("default")) {
-                prty = Priority.DEFAULT;
-            } else if (prtyText.equals("critical")) {
-                prty = Priority.CRITICAL;
-            } else {
-                log.debug("Error: priority " + prtyText + " is not acceptable by metadata and set to Error");
-                prty = Priority.ERROR;
-                //throw new Exception("priority should not be null");
-            }
-
-            this.logPath = logPath;
-            this.text = text;
-            priority = prty;
-            
-            this.component = component;
-            this.lineNumber = lineNumber;
-            this.elapsedTime = time;
-        }
-
-    /**
-     * Constructor for the helper class 
-     */
-        public LogEntry(String text, String priorityTxt, String component, String logPath, 
-                int lineNumber) throws Exception
-        {
-            this(text, priorityTxt, component, logPath, lineNumber, -1);
-        }
-
-    /**
-     * Helper function to return to getLogPath
-     * @
-     */
-
-        public String getLogPath()
-        {
-            return logPath;
-        }
-
-        
-        public int getLineNumber()
-        {
-            return lineNumber;
-        }
-        
-        public String getText()
-        {
-            return text;
-        }
-
-        public void setText(String text)
-        {
-            this.text = text;
-        }
-
-        public Priority getPriority()
-        {
-            return priority;
-        }
-        
-        public double getElapsedTime() {
-            return elapsedTime;
-        }
-
-        public void setPriority(Priority priority)
-        {
-            this.priority = priority;
-        }
-
-        public String getComponent()
-        {
-            return component;
-        }
-
-        public void setComponent(String component)
-        {
-            this.component = component;
-        }
-
-    }
-
-    public void initializeConnection() throws SQLException {
-        new File(dbPath).getParentFile().mkdirs();
-        connection = DriverManager.getConnection(url);
-    }
-
-
-    public void finalizeStatements() throws SQLException {
-        if (statementsInitialized) {
-            if ( entryCacheSize > 0) {
-                entryCacheSize = 0;
-                writeLogDataToDB();
-            }
-            insertLogEntryStmt.close();
-            insertComponentStmt.close();
-            insertMetaDataEntryStmt.close();
-        }
-    }
-    
-    private void finalizeConnection() throws SQLException {
-        if (connection != null) {
-            connection.close();
-        }
-    }
-
-    public void finalizeDB() {
-        try {
-            synchronized (MetaDataDb.class) {
-                finalizeStatements();
-                finalizeConnection();
-            }
-        } catch (SQLException ex) {
-            // We are Ignoring the errors as no need to fail the build.
-            log.debug("Exception while finalizing the Metadata database. ", ex);
-        }
-    }
-    
-    /*
-     *  Todo: Further Optimize to merge with getRecords and also use
-     *  primary key instead of the first column as index. 
-     */
-    //Note: Always the query should be in "/" format only
-    public Map<String, List<String>> getIndexMap(String query) {
-        Map<String, List<String>> indexMap = new LinkedHashMap<String, List<String>>();
-        try {
-            initializeConnection();
-            Statement stmt = connection.createStatement();
-            ResultSet rs = stmt.executeQuery(query);
-            ResultSetMetaData rsmd = rs.getMetaData();
-            int numberOfColumns = rsmd.getColumnCount();
-            if (rs.isBeforeFirst()) {
-                while (rs.next()) {
-                    List<String> dataList = new ArrayList<String>();
-                    String key = null;
-                    for (int i = 1; i <= numberOfColumns; i++) {
-                        String data = null;
-                        int type = rsmd.getColumnType(i);
-                        if (type == java.sql.Types.INTEGER ) {
-                            data = "" + rs.getInt(i);
-                        } else if (type == java.sql.Types.DOUBLE ) {
-                            data = "" + rs.getDouble(i);
-                        } else {
-                            data = rs.getString(i);
-                        }
-                        if ( i == 1) {
-                            key = data;
-                        } else {
-                            dataList.add(data);
-                        }
-                    }
-                    indexMap.put(key, dataList);
-                }
-            }
-            stmt.close();
-            finalizeConnection();
-        } catch (Exception ex) {
-            // We are Ignoring the errors as no need to fail the build.
-            log.debug("Warning: Exception while getting the index map", ex);
-        }
-        return indexMap;
-    }
-
-    //Note: Always the query should be in "/" format only
-    public List<Map<String, Object>> getRecords(String query) {
-        List<Map<String, Object>> rowList = new ArrayList<Map<String, Object>>();
-        try {
-            initializeConnection();
-            Statement stmt = connection.createStatement();
-            ResultSet rs = stmt.executeQuery(query);
-            ResultSetMetaData rsmd = rs.getMetaData();
-
-            int numberOfColumns = rsmd.getColumnCount();
-            List<String> columnNames = new ArrayList<String>();
-            for (int i = 1; i <= numberOfColumns; i++) {
-                columnNames.add(rsmd.getColumnName(i));
-            }
-            if (rs.isBeforeFirst()) {
-                while (rs.next()) {
-                    Map<String, Object> recordMap = new LinkedHashMap<String, Object>();
-                    for (int i = 1; i <= numberOfColumns; i++) {
-                        int type = rsmd.getColumnType(i);
-                        String columnName = columnNames.get(i - 1);
-                        if (type == java.sql.Types.INTEGER ) {
-                            Integer data = new Integer(rs.getInt(i));
-                            recordMap.put(columnName, data);
-                        } else {
-                            String data = rs.getString(i);
-                            recordMap.put(columnName, data );
-                        }
-                    }
-                    rowList.add(recordMap);
-                }
-            }
-            stmt.close();
-            finalizeConnection();
-        } catch (Exception ex) {
-            // We are Ignoring the errors as no need to fail the build.
-            log.warn("Warning: Exception while getting the record details", ex);
-        }
-        return rowList;
-    }
-
-    public List<Map<String, Object>> getRecords(String query, int recordLimit, int offsetValue) {
-        String updatedQuery = query + " limit " + recordLimit + " offset " 
-            + offsetValue + ";";
-        return getRecords(updatedQuery);
-    }
-
-    /*
-     * Two ways to update the metadata table for log id and component id.
-     * 1. Get the last inserted record for metadata and update the individual
-     * id by multiple update calls.
-     * 2. Get all the ids and insert the record in metadata table. In this case
-     * all the ids should be present in respective table before te insertion is
-     * happened. The main reason why is done with 2. approach is that
-     * while executing prepared statement, the getGeneratedKey() (which returns
-     * the last inserted record, function cannot be executed during batch execution.
-     * @param entries - entries for which the log and component table needs to be updated.
-     */
-    private void updateIndexTables(LogEntry entry) throws SQLException
-    {
-        connection.setAutoCommit(false);
-        insertLogEntryStmt.setNull(1, 4);
-        insertLogEntryStmt.setString(2, entry.getLogPath());
-        insertLogEntryStmt.addBatch();
-        insertLogEntryStmt.executeBatch();
-        connection.commit();
-        readConnection = DriverManager.getConnection(url);
-        readConnection.setAutoCommit(false);
-        Statement stmt = readConnection.createStatement();
-        ResultSet rs = stmt.executeQuery("select id from logfiles where path='" +
-                entry.getLogPath().trim() + "'");
-        int logPathId = 0;
-        if ( rs.next()) {
-            logPathId = rs.getInt(1);
-        }
-        stmt.close();
-        readConnection.close();
-        insertComponentStmt.setNull(1, 4);
-        insertComponentStmt.setString(2, entry.getComponent());
-        insertComponentStmt.setInt(3, logPathId);
-        insertComponentStmt.addBatch();
-        insertComponentStmt.executeBatch();
-        connection.commit();
-        insertLogEntryStmt.clearBatch();
-        insertComponentStmt.clearBatch();
-    }
-
-    private void writeLogDataToDB() throws SQLException {
-        insertMetaDataEntryStmt.executeBatch();
-        connection.commit();
-        insertMetaDataEntryStmt.clearBatch();
-    }
-    
-    public void removeLog(String log) throws Exception
-    {
-        initializeConnection();
-        Statement stmt = connection.createStatement();
-        stmt.executeUpdate("DELETE FROM metadata WHERE logpath_id IN (SELECT id from metadata, logfiles WHERE logfiles.id=metadata.logpath_id and logfiles.path='" + log + "')");
-        stmt.close();
-    }
-    
-    public void removeEntries(List<String> logPathList) throws Exception {
-        initializeConnection();
-        Statement stmt = connection.createStatement();
-        for (String logPath : logPathList) {
-            log.debug("logpath for delete: " + logPath);
-            log.debug("logpath delete query1 " + "DELETE FROM metadata WHERE logpath_id IN (SELECT id from logfiles WHERE path like '" + logPath + "')");
-            stmt.executeUpdate("DELETE FROM metadata WHERE logpath_id IN (SELECT id from logfiles WHERE path like '%" + logPath + "%')");
-            log.debug("logpath for delete2: " + "DELETE FROM component_time WHERE cid IN (select id from component where logpath_id in (select id from logfiles where path like '%" + logPath + "%'))");
-            stmt.executeUpdate("DELETE FROM componenttime WHERE cid IN (select id from component where logpath_id in (select id from logfiles where path like '%" + logPath + "%'))");
-            log.debug("logpath for delete3: " + "DELETE FROM component WHERE logpath_id IN (select id from logfiles where path like '%" + logPath + "%')");
-            stmt.executeUpdate("DELETE FROM component WHERE logpath_id IN (select id from logfiles where path like '%" + logPath + "%')");
-            log.debug("logpath for delete: " + "DELETE FROM logfiles WHERE path like ('%" + logPath + "%')");
-            stmt.executeUpdate("DELETE FROM logfiles WHERE path like ('%" + logPath + "%')");
-        }
-        stmt.close();
-        finalizeConnection();
-    }
-    
-    public void addLogEntry(LogEntry entry) throws Exception
-    {
-       synchronized (MetaDataDb.class) {
-            try {
-                if (!statementsInitialized) {
-                    log.debug("Initializing statements for JDBC");
-                    initializeConnection();
-                    insertMetaDataEntryStmt = connection.prepareStatement(INSERT_METADATA_ENTRY);
-                    insertLogEntryStmt = connection.prepareStatement(INSERT_LOGENTRY);
-                    insertComponentStmt = connection.prepareStatement(INSERT_COMPONENTENTRY);
-                    insertComponentTimeStmt = connection.prepareStatement(INSERT_COMPONENT_TIME);
-                    statementsInitialized = true;
-                }
-                connection.setAutoCommit(false);
-                updateIndexTables(entry);
-                double time = entry.getElapsedTime();
-                int logPathId = 0;
-                int componentId = 0;
-                Statement stmt = null;
-                ResultSet rs = null;
-                if ((time != -1) || entry.getPriority() != Priority.DEFAULT) {
-                    readConnection = DriverManager.getConnection(url);
-                    stmt = readConnection.createStatement();
-                    rs = stmt.executeQuery("select id from logfiles where path='" +
-                            entry.getLogPath().trim() + "'");
-                    if ( rs.next()) {
-                        logPathId = rs.getInt(1);
-                    }
-                    rs.close();
-                    stmt.close();
-                    insertMetaDataEntryStmt.setInt(5, logPathId);
-                    stmt = readConnection.createStatement();
-                    rs = stmt.executeQuery("select id from component where component='" + 
-                            entry.getComponent() + "' and logpath_id='" + logPathId + "'");
-                    if ( rs.next()) {
-                        componentId = rs.getInt(1);
-                    }
-                    rs.close();
-                    stmt.close();
-                }
-                if (time != -1) {
-                    connection.setAutoCommit(false);
-                    insertComponentTimeStmt.setInt(1, componentId);
-                    insertComponentTimeStmt.setDouble(2, 0);
-                    insertComponentTimeStmt.addBatch();
-                    insertComponentTimeStmt.executeBatch();
-                    connection.commit();
-                    insertComponentTimeStmt.clearBatch();
-                    stmt = readConnection.createStatement();
-                    stmt.executeUpdate("UPDATE componenttime SET time= (time  + " + time + 
-                        ") WHERE cid = " + componentId );
-                    stmt.close();
-                    readConnection.close();
-                }
-                if ( entry.getPriority() != Priority.DEFAULT) {
-                    insertMetaDataEntryStmt.setInt(1, entry.getPriority().getValue());
-                    insertMetaDataEntryStmt.setInt(2, componentId);
-                    insertMetaDataEntryStmt.setInt(3, entry.getLineNumber());
-                    insertMetaDataEntryStmt.setString(4, entry.getText());
-                    insertMetaDataEntryStmt.addBatch();
-                    entryCacheSize ++;
-                    if (entryCacheSize >= LOG_ENTRY_CACHE_LIMIT) {
-                        writeLogDataToDB();
-                        entryCacheSize = 0;
-                    }
-                }
-            } catch (SQLException ex) {
-                throw new BuildException("Exception while writing the records into Metadata DB", ex);
-            } catch (Exception ex1) {
-                throw new BuildException("Exception while writing the records into Metadata DB", ex1);
-            }
-        }
-    }
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/metadata/src/log4j.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : libs.ant.xml 
-Part of     : Helium Antlib
-
-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:
-
-============================================================================
--->
-<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
-<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
-
-    <appender name="ASYNC" class="org.apache.log4j.AsyncAppender">
-            <appender-ref ref="FILE"/>
-            <appender-ref ref="CONSOLE"/>
-    </appender>
-
-    <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
-        <layout class="org.apache.log4j.PatternLayout">
-               <param name="ConversionPattern" 
-                            value="%d{HH:mm:ss,SSS}  %-2p - %m  %n"/>
-        </layout>
-    <filter class="org.apache.log4j.varia.LevelMatchFilter">
-      <param name="LevelToMatch" value="DEBUG" />
-      <param name="AcceptOnMatch" value="false" />
-    </filter>
-    </appender>
-
-
-    <appender name="FILE" class="org.apache.log4j.RollingFileAppender">
-        <param name="File" value="hlm_debug.log"/>
-        <param name="MaxFileSize" value="1024KB"/>
-        <param name="append" value="true"/>
-        <layout class="org.apache.log4j.PatternLayout">
-               <param name="ConversionPattern" 
-                            value="%d{HH:mm:ss,SSS}  %-2p - %m  %n"/>
-        </layout>
-    <filter class="org.apache.log4j.varia.LevelMatchFilter">
-      <param name="LevelToMatch" value="DEBUG" />
-      <param name="AcceptOnMatch" value="true" />
-    </filter>
-
-    <filter class="org.apache.log4j.varia.DenyAllFilter"/>
-
-    </appender>
-
-  <logger name="com.nokia" additivity="false">
-      <level value="DEBUG" />
-    <appender-ref ref="ASYNC" />
-  </logger>
-
-    <root>
-        <priority value="DEBUG"/>
-        <appender-ref ref="CONSOLE"/>
-    </root>
-</log4j:configuration>
--- a/buildframework/helium/external/helium-antlib/metadata/src/templates/build_status.xml.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-<#--
-============================================================================ 
-Name        : email.html.ftl 
-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:
-
-============================================================================
--->
-<?xml version="1.0" encoding="utf-8"?>
-<build-status>
-    <#assign table_info = pp.loadData('com.nokia.helium.metadata.SQLFMPPLoader',
-        "${dbPath}") >
-<#assign priority_table = table_info['select * from priority'] >
-<#assign priority_ids = priority_table?keys>
-
-<#list priority_ids as priority>
-    <#assign priority_count = table_info['select count(data) as COUNT from metadata where priority_id = ${priority} and logpath_id in (select id from logfiles where path like \'%${logfile}%\')'][0]['COUNT'] >
-    <#if (priority_count >= 0)>
-        <${priority_table['${priority}']?lower_case} count= "${priority_count}">
-    </#if>
-</#list>
-</build-status>
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/metadata/src/templates/cc_summary.html.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,119 +0,0 @@
-<#--
-============================================================================ 
-Name        : cc_summary.html.ftl 
-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:
-
-============================================================================
--->
-
-    <#assign table_info = pp.loadData('com.nokia.helium.metadata.SQLFMPPLoader',
-        "${dbPath}") >
- 
-<h1>${ant['build.id']}</h1>
-
-<#if ant?keys?seq_contains('publish')>
-    <#if ant?keys?seq_contains('publish.dir.list')>
-        <h2>Publish locations</h2>
-        <p>
-        <#list ant['publish.dir.list']?split(',') as site>
-          <a href="${site}">${site}</a></br>
-        </#list>
-        </p>
-    <#else>
-        <#if ant?keys?seq_contains('publish.dir')>
-        <h2>Publish locations</h2>
-        <p><a href="${ant['publish.dir']}">${ant['publish.dir']}</a></p>
-        </#if>
-    </#if>
-</#if>
-
-<#assign ccm_logpath_table = table_info['select * from logfiles where path like \'%_ccm_get_input.log%\''] >
-
-<#assign logpath_id = ccm_logpath_table?keys>
-<#list logpath_id as logpath>
-<#assign metadata_ccm_records = table_info['select * from metadata where logpath_id = ${logpath} and (priority_id = (select id from priority where priority=\'ERROR\')  or priority_id = (select id from priority where priority=\'WARNING\'))'] >
-<h2>Synergy errors</h2>
-    <p>
-    <#list metadata_ccm_records as recordentry>
-        ${recordentry['data']}
-    </#list>
-    </p>
-</#list>
-
-<h2>Build errors</h2>
-<#assign compile_logpath_table = table_info['select * from logfiles where (path like \'%_compile.log\'  and path not like \'%_clean_compile.log\')'] >
-<#assign colors = {'error': 'FF0000', 'critical': 'FF7000', 'warning': 'FFF000', 'remark': '0000FF'}/>
-
-<table border="1" cellpadding="0" cellspacing="0" width="100%">
-<tr>
-    <th width="55%">Component</th>
-    <th width="15%">Errors</th>
-    <th width="15%">Criticals</th>
-    <th width="15%">Warnings</th>
-    <th width="15%">Notes</th>
-</tr>
-<#assign logpath_id = compile_logpath_table?keys>
-<#list logpath_id as logpath>
-    <#assign component_table = table_info['select id, component from component where logPath_id=${logpath}'] >
-    <#assign component_ids = component_table?keys?sort >
-
-<#list component_ids as component_id>
-<tr>
-<td>"${component_table['${component_id}']}"</td>
-    <#list colors?keys as type>
-        <#assign count = "${table_info['select count(data) as COUNT from metadata where logpath_id=${logpath} and (priority_id = (select id from priority where priority like \"${type}\"))'][0]['COUNT']}" >
-        <#if ( count?number &gt; 0)>
-<td align="center" bgcolor="#${colors[type]}">${count}</td>
-        <#else>
-<td align="center">0</td>
-        </#if>
-    </#list>
-</tr>
-</#list>
-</#list>
-</table>
-
-<#assign rom_logpath_table = table_info['select * from logfiles where (path like \'%roms.log\')'] >
-<#assign logpath_id = rom_logpath_table?keys>
-<#list logpath_id as logpath>
-    <#assign romlog_table = table_info['select * from metadata where logpath_id = ${logpath}'] >
-    <h2>ROMs ${rom_logpath_table['${logpath}']}</h2>
-        <p>
-    <#list romlog_table as recordentry>
-        ${recordentry['data']}<br/>
-    </#list>
-        </p>
-</#list>
-
-<#assign policy_logpath_table = table_info['select * from logfiles where (path like \'%validate_policy.xml\')'] >
-<#assign logpath_id = policy_logpath_table?keys>
-<#list logpath_id as logpath>
-    <#assign policy_table = table_info['select * from metadata where logpath_id = ${logpath}'] >
-        <h2>Distribution Policy validation</h2>
-        <p>
-        <#list policy_table as recordentry>
-            ${recordentry['data']}<br/>
-        </#list>
-        </p>
-</#list>
-
-<#if ant?keys?seq_contains('diamonds.build.id')>
-<p>
-<h2>ATS Test Results</h2>
-    <a href="http://${ant['diamonds.host']}${ant['diamonds.build.id']}#tab=4" >http://${ant['diamonds.host']}${ant['diamonds.build.id']}#tab=4 </a>
-</p>
-</#if>
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/metadata/src/templates/cc_summary_metadata.html.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,119 +0,0 @@
-<#--
-============================================================================ 
-Name        : cc_summary.html.ftl 
-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:
-
-============================================================================
--->
-
-    <#assign table_info = pp.loadData('com.nokia.helium.metadata.SQLFMPPLoader',
-        "${dbPath}") >
- 
-<h1>${ant['build.id']}</h1>
-
-<#if ant?keys?seq_contains('publish')>
-    <#if ant?keys?seq_contains('publish.dir.list')>
-        <h2>Publish locations</h2>
-        <p>
-        <#list ant['publish.dir.list']?split(',') as site>
-          <a href="${site}">${site}</a></br>
-        </#list>
-        </p>
-    <#else>
-        <#if ant?keys?seq_contains('publish.dir')>
-        <h2>Publish locations</h2>
-        <p><a href="${ant['publish.dir']}">${ant['publish.dir']}</a></p>
-        </#if>
-    </#if>
-</#if>
-
-<#assign ccm_logpath_table = table_info['select * from logfiles where path like \'%_ccm_get_input.log%\''] >
-
-<#assign logpath_id = ccm_logpath_table?keys>
-<#list logpath_id as logpath>
-<#assign metadata_ccm_records = table_info['select * from metadata where logpath_id = ${logpath} and (priority_id = (select id from priority where priority=\'ERROR\')  or priority_id = (select id from priority where priority=\'WARNING\'))'] >
-<h2>Synergy errors</h2>
-    <p>
-    <#list metadata_ccm_records as recordentry>
-        ${recordentry['data']}
-    </#list>
-    </p>
-</#list>
-
-<h2>Build errors</h2>
-<#assign compile_logpath_table = table_info['select * from logfiles where (path like \'%_compile.log\'  and path not like \'%_clean_compile.log\')'] >
-<#assign colors = {'error': 'FF0000', 'critical': 'FF7000', 'warning': 'FFF000', 'remark': '0000FF'}/>
-
-<table border="1" cellpadding="0" cellspacing="0" width="100%">
-<tr>
-    <th width="55%">Component</th>
-    <th width="15%">Errors</th>
-    <th width="15%">Criticals</th>
-    <th width="15%">Warnings</th>
-    <th width="15%">Notes</th>
-</tr>
-<#assign logpath_id = compile_logpath_table?keys>
-<#list logpath_id as logpath>
-    <#assign component_table = table_info['select id, component from component where logPath_id=${logpath}'] >
-    <#assign component_ids = component_table?keys?sort >
-
-<#list component_ids as component_id>
-<tr>
-<td>"${component_table['${component_id}']}"</td>
-    <#list colors?keys as type>
-        <#assign count = "${table_info['select count(data) as COUNT from metadata where logpath_id=${logpath} and (priority_id = (select id from priority where priority like \"${type}\"))'][0]['COUNT']}" >
-        <#if ( count?number &gt; 0)>
-<td align="center" bgcolor="#${colors[type]}">${count}</td>
-        <#else>
-<td align="center">0</td>
-        </#if>
-    </#list>
-</tr>
-</#list>
-</#list>
-</table>
-
-<#assign rom_logpath_table = table_info['select * from logfiles where (path like \'%roms.log\')'] >
-<#assign logpath_id = rom_logpath_table?keys>
-<#list logpath_id as logpath>
-    <#assign romlog_table = table_info['select * from metadata where logpath_id = ${logpath}'] >
-    <h2>ROMs ${rom_logpath_table['${logpath}']}</h2>
-        <p>
-    <#list romlog_table as recordentry>
-        ${recordentry['data']}<br/>
-    </#list>
-        </p>
-</#list>
-
-<#assign policy_logpath_table = table_info['select * from logfiles where (path like \'%validate_policy.xml\')'] >
-<#assign logpath_id = policy_logpath_table?keys>
-<#list logpath_id as logpath>
-    <#assign policy_table = table_info['select * from metadata where logpath_id = ${logpath}'] >
-        <h2>Distribution Policy validation</h2>
-        <p>
-        <#list policy_table as recordentry>
-            ${recordentry['data']}<br/>
-        </#list>
-        </p>
-</#list>
-
-<#if ant?keys?seq_contains('diamonds.build.id')>
-<p>
-<h2>ATS Test Results</h2>
-    <a href="http://${ant['diamonds.host']}${ant['diamonds.build.id']}#tab=4" >http://${ant['diamonds.host']}${ant['diamonds.build.id']}#tab=4 </a>
-</p>
-</#if>
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/metadata/src/templates/diamonds_faults.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-<#--
-============================================================================ 
-Name        : macro.ftl 
-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:
-
-============================================================================
---> 
-<#setting number_format="0">
-
-    <#assign table_info = pp.loadData('com.nokia.helium.metadata.SQLFMPPLoader',
-        "${dbPath}") >
-    <#assign priority_table = table_info['select * from priority'] >
-    <#assign logpath_table = table_info['select * from logfiles'] >
-    <#assign priority_ids = priority_table?keys>
-    <#assign logpath_id = logpath_table?keys>
-    <#assign components = table_info['select component from component where logPath_id=(select id from logfiles where path=\'${logpath}\')'] >
-    <faults>
-        <total severity="error">${table_info['select count(data) as COUNT from metadata where priority_id=(select id from priority where priority=\'ERROR\') and logpath_id=(select id from logfiles where path=\'${logpath}\')'][0]['COUNT']}</total>
-        <total severity="warning">${table_info['select count(data) as COUNT from metadata where priority_id=(select id from priority where priority=\'WARNING\') and logpath_id=(select logpath_id from logfiles where path=\'${logpath}\')'][0]['COUNT']}</total>
-        <total severity="warning_rvct_other">${table_info['select count(data) as COUNT from metadata where priority_id=(select id from priority where priority=\'WARNING\') and logpath_id=(select logpath_id from logfiles where path=\'${logpath}\')'][0]['COUNT']}</total>
-        <!-- todo update to calculate the correct value -->
-        <total severity="warning_rvct_bad">${table_info['select count(data) as COUNT from metadata where priority_id=(select id from priority where priority=\'REMARK\')'][0]['COUNT']}</total>
-    <#list components as component>
-        <component>
-            <name>${component['component']}</name>
-            <total severity="error">${table_info['select count(data) as COUNT from metadata where priority_id=(select id from priority where priority=\'ERROR\') and logpath_id=(select logpath_id from logfiles where path=\'${logpath}\')'][0]['COUNT']}</total>
-            <total severity="warning">${table_info['select count(data) as COUNT from metadata where priority_id=(select id from priority where priority=\'WARNING\') and logpath_id=(select logpath_id from logfiles where path=\'${logpath}\')'][0]['COUNT']}</total>
-            <total severity="critical">${table_info['select count(data) as COUNT from metadata where priority_id=(select id from priority where priority=\'REMARK\') and logpath_id=(select logpath_id from logfiles where path=\'${logpath}\')'][0]['COUNT']}</total>
-        </component>
-    </#list>
-
-    
-    </faults>
-    <components>
-    <#list components as component>
-    <!-- all components -->
-        <component>${component['component']}</component>
-    </#list>
-    </components>
-<#assign schema_version=10/>
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/metadata/src/templates/diamonds_macro.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-<#--
-============================================================================ 
-Name        : macro.ftl 
-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:
-
-============================================================================
---> 
-<#setting number_format="0">
-
-    <#assign table_info = pp.loadData('com.nokia.helium.metadata.SQLFMPPLoader',
-        "${dbPath}") >
-    <#assign priority_table = table_info['select * from priority'] >
-    <#assign logpath_table = table_info['select * from logfiles'] >
-    <#assign priority_ids = priority_table?keys>
-    <#assign logpath_id = logpath_table?keys>
-    <#assign components = table_info['select component from component where logPath_id=(select id from logfiles where path=\'${logpath}\')'] >
-    <faults>
-        <total severity="error">${table_info['select count(data) as COUNT from metadata where priority_id=(select id from priority where priority=\'ERROR\') and logpath_id=(select id from logfiles where path=\'${logpath}\')'][0]['COUNT']}</total>
-        <total severity="warning">${table_info['select count(data) as COUNT from metadata where priority_id=(select id from priority where priority=\'WARNING\') and logpath_id=(select logpath_id from logfiles where path=\'${logpath}\')'][0]['COUNT']}</total>
-        <total severity="warning_rvct_other">${table_info['select count(data) as COUNT from metadata where priority_id=(select id from priority where priority=\'WARNING\') and logpath_id=(select logpath_id from logfiles where path=\'${logpath}\')'][0]['COUNT']}</total>
-        <!-- todo update to calculate the correct value -->
-        <total severity="warning_rvct_bad">${table_info['select count(data) as COUNT from metadata where priority_id=(select id from priority where priority=\'REMARK\')'][0]['COUNT']}</total>
-    <#list components as component>
-        <component>
-            <name>${component['component']}</name>
-            <total severity="error">${table_info['select count(data) as COUNT from metadata where priority_id=(select id from priority where priority=\'ERROR\') and logpath_id=(select logpath_id from logfiles where path=\'${logpath}\')'][0]['COUNT']}</total>
-            <total severity="warning">${table_info['select count(data) as COUNT from metadata where priority_id=(select id from priority where priority=\'WARNING\') and logpath_id=(select logpath_id from logfiles where path=\'${logpath}\')'][0]['COUNT']}</total>
-            <total severity="critical">${table_info['select count(data) as COUNT from metadata where priority_id=(select id from priority where priority=\'REMARK\') and logpath_id=(select logpath_id from logfiles where path=\'${logpath}\')'][0]['COUNT']}</total>
-        </component>
-    </#list>
-    </faults>
-    <components>
-    <#list components as component>
-    <!-- all components -->
-        <component>${component['component']}</component>
-    </#list>
-    </components>
-<#assign schema_version=10/>
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/metadata/src/templates/email_new.html.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,114 +0,0 @@
-<#--
-============================================================================ 
-Name        : email.html.ftl 
-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:
-
-============================================================================
--->
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html>
-  <head>
-  <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
-    <title>
-      Build result e-mail from ${ant["env.COMPUTERNAME"]}.
-    </title>
-    <style type="text/css">
-        body{font-family:Verdana; font-size:10pt; line-height:1.1em; padding: 10px 10px; background-color:#E4F0F4;}
-        h1{
-          font-size:14pt;
-          color:#000;
-          padding: 20px 15px;
-              margin:0;
-         }
-        h2{font-size:12pt;}
-        h5{
-          font-size:10pt;
-          background-color:#8495BA;
-          color:#fff;
-          heigth:20pt;
-          padding: 5px 15px;
-          border-left:2px solid #5A6FA0;
-          border-bottom:2px solid #5A6FA0;
-          border-top:2px solid #98A6C6;
-          border-right:2px solid #98A6C6;
-          margin:0;
-         }
- 
-  
-        p {
-          font-size:10pt;
-          padding: 0em 1em 1em 1em;
-          margin: 0 1em 0.5em 1em;
-          border-right:1px solid #5A6FA0;
-          border-top:0;
-          border-bottom:1px solid #98A6C6;
-          border-left:1px solid #98A6C6;
-          background-color:#CDE4EB;
-          white-space:normal;
-        }
- 
-        .data{color:#00F;}
-        .okmessage{color:#24A22D;font-weight:bold; display:block; margin-bottom: 1em;padding-top: 1em;}
-        .errormessage{color:#F00;font-weight:bold; display:block; margin-bottom: 1em;padding-top: 1em;}
- 
-        span.items{text-indent:-1em; padding-left: 1em; display:block; word-wrap:normal;}
-
-        span.bold{font-weight:bold; display:block; padding: 1em 0;}
-        p.maintext{padding-top: 1em;}
-        p.logfolder{color:#000;font-weight:bold; padding-top: 1em;}
-        p.distrib{font-weight:bold;}
- 
- 
-        a:link,a:visited{color:#00E;}
-        
-    </style>
-  </head>
-  <body>
-      <!-- The title -->
-      <div id="buildname">
-        <h1>This is an e-mail notification that a build has been completed on ${ant["env.COMPUTERNAME"]}</h1>
-      </div>
-
-    <#assign table_info = pp.loadData('com.nokia.helium.metadata.SQLFMPPLoader',
-        "${dbPath}") >
-
-<#assign error_count = table_info['select count(data) as COUNT from metadata where priority_id in (select id from priority where priority like \'ERROR\') and logpath_id in (select id from logfiles where path like \'%${logfile}%\')'][0]['COUNT'] >
-    <!-- section -->
-    <#macro create_section title type>
-           <div id="foldername">
-               <h5>${title}</h5>
-               <p class="maintext">
-                   <!-- content span -->
-                   <span class="${type}"><#nested></span>
-               </p>
-           </div>
-       </#macro>
-<#if (error_count > 0)>
-        <span class="errormessage">
-            ${logfile}...FAIL<br/>
-    <#list table_info['select * from metadata where priority_id in (select id from priority where priority like \'ERROR\') and logpath_id in (select id from logfiles where path like \'%${logfile}%\')'] as recordentry >
-            <ul>
-            ${recordentry['data']}<br/>
-            </ul>
-    </#list>
-        </span>
-<#else>
-    <span class="okmessage">${logfile}...OK<br/></span>
-</#if>
-</body>
-</html>
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/metadata/src/templates/general_category.txt.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-<#--
-============================================================================ 
-Name        : summary.html.ftl 
-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:
-
-============================================================================
---> 
-
-    <#assign table_info = pp.loadData('com.nokia.helium.metadata.SQLFMPPLoader',
-        "${dbPath}") >
-
-
-
-<#assign logpath_table = table_info['select * from logfiles'] >
-<#assign logpath_id = logpath_table?keys>
-<#list logpath_id as logpath>
-    <#assign component_table = table_info['select id, component from component where logPath_id=${logpath}'] >
-    <#assign component_ids = component_table?keys?sort >
-    <#list component_ids as component_id >
-        component : ${component_table['${component_id}']} : logfile : ${logpath_table['${logpath}']}
-    </#list>
-</#list

>
--- a/buildframework/helium/external/helium-antlib/metadata/src/templates/macro/expand3.js	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,71 +0,0 @@
-function __ToggleNode( divNode )
-{
-  var cntNode = document.getElementById(divNode.id.replace(/Img(.+)/, 'Content$1'));
-  
-  if(!cntNode) return;
-  
-  if(cntNode.style.display == 'none')
-  {
-    cntNode.style.display = 'block';
-    divNode.style.background = divNode.style.background.replace(/open./, 'close.');
-  }
-  else
-  {
-    cntNode.style.display = 'none';
-    divNode.style.background = divNode.style.background.replace(/close./, 'open.');
-  }
-  
-  return cntNode;
-}
-
-function __UpdateNode( divNode, dsp )
-{
-	var cntNode = document.getElementById(divNode.id.replace(/Img(.+)/, 'Content$1'));
-	
-	if(!cntNode) return;
-	
-	cntNode.style.display = dsp;
-	if(dsp == 'block')
-		divNode.style.background = divNode.style.background.replace(/open./, 'close.');
-	else
-		divNode.style.background = divNode.style.background.replace(/close./, 'open.');
-	
-	return cntNode;
-}
-
-function __ToggleChilds( divNode )
-{
-	var cntNode = __ToggleNode(divNode);
-	if(!cntNode) return;
-	var childs  = cntNode.getElementsByTagName('div');
-	
-	for(var i = 0; i != childs.length; ++i)
-		if(/Img/.test(childs[i].id))
-			__ToggleChilds(childs[i]);
-}
-
-function __UpdateChilds( divNode, dsp )
-{
-	var cntNode = __UpdateNode(divNode, dsp);
-	if(!cntNode) return;
-	var childs  = cntNode.getElementsByTagName('span');
-	
-	for(var i = 0; i != childs.length; ++i)
-		if(/Img/.test(childs[i].id))
-			__UpdateChilds(childs[i], dsp);
-}
-
-function ToggleNode( id )
-{ __ToggleNode(document.getElementById(id)); }
-
-function ShowContent( id )
-{ __UpdateNode(document.getElementById(id), 'block'); }
-
-function HideContent( id )
-{ __UpdateNode(document.getElementById(id), 'none'); }
-
-function ShowChilds( id )
-{ __UpdateChilds(document.getElementById(id), 'block'); }
-
-function HideChilds( id )
-{ __UpdateChilds(document.getElementById(id), 'none'); }
--- a/buildframework/helium/external/helium-antlib/metadata/src/templates/macro/log3.css	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,97 +0,0 @@
-/* Main components */
-/*-------------------------------------------------------------------------------------------------------------------------*/
-BODY { font-family: "Nokia Sans Regular", Tahoma; font-size: x-small; margin: 0em; padding: 0em; background: #EEEEFF; }
-A { color: #000000; text-decoration: none; }
-#mb, #s_mb { margin: 5px; padding: 0px; background: #DADAEE; border: 1px solid #2161B5; }
-.mc, .s_mc { margin: 3px; padding: 3px 2px; background: #FFFFFF; border: 1px solid #2161B5; }
-.mc h1, .s_mc h1 { padding-left: 5px; margin: 3px 0px; font-weight: bold; color: #2161B5; font-size: x-small; border-bottom: 1px solid #2161B5; }
-.s_tag { font-size: x-small; font-weight: bold; padding: 0px 5px 3px 5px; }
-.s_val { font-size: x-small }
-
-/* Header */
-/*-------------------------------------------------------------------------------------------------------------------------*/
-#h_wrapper { }
-.h_elmt { color: #0036CC; padding: 5px; margin: 10px; }
-.h_title { font-family: "Nokia Large", "Tahoma"; font-size: xx-large; font-weight: bold; }
-.h_subtitle { font-size: x-small; font-weight: normal; }
-
-/* Footer */
-/*-------------------------------------------------------------------------------------------------------------------------*/
-#f_wrapper { }
-.f_elmt { font-weight: normal; color: #0036CC; padding: 5px; margin: 10px 15px; border-top: solid 1px #0036CC; }
-.f_title { font-size: x-small; padding: 0px; margin: 0px; }
-.f_subtitle { font-size: xx-small; padding: 0px; margin: 0px; }
-
-/* Color cross images */
-/*-------------------------------------------------------------------------------------------------------------------------*/
-.cr_r, .cr_b, .cr_y { padding-left: 19px; padding-bottom: 2px; }
-.cr_r { background: url(../img/icons/delete_red.gif) no-repeat; }
-.cr_b { background: url(../img/icons/delete_blue.gif) no-repeat; }
-.cr_y { background: url(../img/icons/delete_yellow.gif) no-repeat; }
-
-/* Color check images */
-/*-------------------------------------------------------------------------------------------------------------------------*/
-.ch_g, .ch_b { padding-left: 19px; padding-bottom: 2px; }
-.ch_g { background: url(../img/icons/check_green.gif) no-repeat; }
-.ch_b { background: url(../img/icons/check_blue.gif) no-repeat; }
-
-/* Element icons */
-/*-------------------------------------------------------------------------------------------------------------------------*/
-.icn_dir, .icn_cpp, .icn_hpp, .icn_txt, .icn_inf, .icn_bin, .icn_xml, .icn_prj, .icn_mmp, .icn_iby, .icn_oby, .icn_spt, .icn_doc, .icn_xls, .icn_rss
-{ padding-left: 23px; padding-bottom: 2px; }
-.icn_dir { background: url(../img/icons/dir.gif) no-repeat; }
-.icn_cpp { background: url(../img/icons/cpp.gif) no-repeat; }
-.icn_hpp { background: url(../img/icons/hpp.gif) no-repeat; }
-.icn_txt { background: url(../img/icons/txt.gif) no-repeat; }
-.icn_inf { background: url(../img/icons/inf.gif) no-repeat; }
-.icn_bin { background: url(../img/icons/bin.gif) no-repeat; }
-.icn_xml { background: url(../img/icons/xml.gif) no-repeat; }
-.icn_prj { background: url(../img/icons/prj.gif) no-repeat; }
-.icn_mmp { background: url(../img/icons/mmp.gif) no-repeat; }
-.icn_iby { background: url(../img/icons/iby.gif) no-repeat; }
-.icn_oby { background: url(../img/icons/oby.gif) no-repeat; }
-.icn_spt { background: url(../img/icons/spt.gif) no-repeat; }
-.icn_doc { background: url(../img/icons/doc.gif) no-repeat; }
-.icn_xls { background: url(../img/icons/xls.gif) no-repeat; }
-.icn_rss { background: url(../img/icons/rss.gif) no-repeat; }
-
-/* Message counts */
-/*-------------------------------------------------------------------------------------------------------------------------*/
-.count_fatal_error, .count_error, .count_warning, .count_remark, .count_note, .count_default { text-align: center; padding: 0px 20px; width: 200px; }
-.gbl_count_fatal_error, .gbl_count_error, .gbl_count_warning, .gbl_count_remark, .gbl_count_note, .gbl_count_default, .count_critical, .gbl_count_critical , .count_info, .gbl_count_info{ text-align: center; padding: 0px 20px; margin: 0px 2px; }
-.count_fatal_error, .gbl_count_fatal_error { color: #EB320A; border: 1px solid #EB320A; background: #F5C2B9; }
-.count_error, .gbl_count_error { color: #EB320A; border: 1px solid #EB320A; background: #FFCC00; }
-.count_critical, .gbl_count_critical { color: #FF3200; border: 1px solid #FF3200; background: #FFF476; }
-.count_warning, .gbl_count_warning { color: #FFBA00; border: 1px solid #FFBA00; background: #FFF476; }
-.count_remark, .gbl_count_remark { color: #4EBE2C; border: 1px solid #4EBE2C; background: #EDEFFF; }
-.count_note, .gbl_count_note { color: #2161B5; border: 1px solid #2161B5; background: #EDEFFF; }
-.count_info, .gbl_count_info { color: #2161B5; border: 1px solid #2161B5; background: #EDEFFF; }
-.count_default, .gbl_count_default { color: #DADADA; border: 1px solid #DADADA; background: #FFFFFF; }
-
-/* Node components */
-/*-------------------------------------------------------------------------------------------------------------------------*/
-.node_head { padding: 1px 0px 2px 0px; }
-.node_title { padding-left: 19px; }
-.node_info { float: right; margin-top: -18px; padding: 1px 0px; }
-.node_content { padding: 2px 0px 2px 3px; margin-bottom: 3px; border-top: 1px solid #EDEDED; border-bottom: 1px solid #EDEDED;border-left: 1px solid #EDEDED; }
-.node_action { font-size: xx-small; color: #999999; }
-
-/* C++ components */
-/*-------------------------------------------------------------------------------------------------------------------------*/
-.code_sample { font-family: Anonymous, "Courier New"; font-size: x-small; padding: 3px 6px; border: 1px solid #BABABA; background: #EDEDED; }
-.code_kwd { color: #0000FF; }
-.code_smb { color: #AA11FF; }
-.code_pp  { color: #44AA11; }
-.code_cmt { color: #767676; }
-
-/* Error highlight */
-/*-------------------------------------------------------------------------------------------------------------------------*/
-.code_fatal_error { background-color: #F5C2B9; }
-.code_error { background-color: #FFCC00; }
-.code_critical { background-color: #FFDD00; }
-.code_warning { background-color: #FFF476; }
-
-/* Formatting components */
-/*-------------------------------------------------------------------------------------------------------------------------*/
-.separator { margin-top: 5px; }
-.t_wrapper { width: 100%; }
--- a/buildframework/helium/external/helium-antlib/metadata/src/templates/macro/logger.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,107 +0,0 @@
-<#--
-============================================================================ 
-Name        : logger.ftl 
-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:
-
-============================================================================
---> 
-
-<#macro helium_logger_html_head>
-    <style type="text/css">
-        <#include "log3.css"/>
-    </style>
-    <script type="text/javascript">
-        <#include "expand3.js"/>
-    </script>
-</#macro>
-
-
-<#global helium_node_id = 0>
-
-
-<#macro helium_logger_header title subtitle="">
-    <div id="h_wrapper">
-        <div class="h_elmt">
-              <div class="h_title">${title}</div>
-              <div class="h_subtitle">${subtitle}</div>
-        </div>
-      </div>
-</#macro>
-
-
-<!-- Renders a main body of content -->
-<#macro helium_logger_content title>
-    <#assign helium_node_id = helium_node_id + 1>
-    <div id="mb">
-        <div class="mc">
-            <h1>${title}</h1>                                   
-            <div class="node_head"></div>
-                <div id="Content${helium_node_id}">
-                    <div class="node_content">
-                        <#nested>
-                    </div>
-                </div>      
-            </div>      
-        </div>      
-    </div>
-</#macro>
-
-
-<#macro helium_logger_print type>
-    <#if type == "">
-        <code><#nested></code><br/>
-    <#else>
-        <code class="code_${type}"><#nested></code><br/>
-    </#if>
-</#macro>
-
-<#macro helium_message_box nodeid type count>
-    <#if (count > 0)>
-        <a href="javascript:ToggleNode('Img${nodeid}')">
-            <span class="node_${type}">
-                <span class="count_${type}">${count} ${type}s</span>
-            </span>
-        </a>
-    </#if>
-</#macro>
-
-<#macro helium_logger_node_head nodeid title>
-    <div class="node_head">                    
-        <a href="javascript:ToggleNode('Img${nodeid}')">
-            <span id="Img${nodeid}">
-                <span class="node_action">[X]</span><span class="node_title">${title}</span>
-            </span>
-        </a>
-        <a href="javascript:ShowChilds('Img${nodeid}')">
-                <span class="node_action">[Show All]</span>
-        </a>
-        <a href="javascript:HideChilds('Img${nodeid}')">
-                <span class="node_action">[Hide All]</span>
-        </a>        
-        <!-- error reporting managenent -->
-        <#nested>
-    </div>
-</#macro>
-
-
-<#macro helium_logger_node_content nodeid>
-    <div id="Content${nodeid}" style="display:none">
-        <div class="node_content">
-            <#nested>
-        </div>
-    </div>
-</#macro>
--- a/buildframework/helium/external/helium-antlib/metadata/src/templates/readdata.xml.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,77 +0,0 @@
-<#--
-============================================================================ 
-Name        : bmd.macros.xml.ftl 
-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:
-
-============================================================================
--->
-
-<#macro helium_scanlog_entry >
-    <style type="text/css">
-        <#include "log3.css"/>
-    </style>
-    <script type="text/javascript">
-        <#include "expand3.js"/>
-    </script>
-</#macro>
-
-    <#assign table_info = pp.loadData('com.nokia.helium.metadata.SQLFMPPLoader',
-        "${dbPath}") >
-<html>
-<body>
-<h1>Summary</h1>
-<table>
-<#assign priority_table = table_info['select * from priority'] >
-<#assign component_table = table_info['select id, component from component'] >
-<#assign logpath_table = table_info['select * from logfiles'] >
-<#assign priority_ids = priority_table?keys>
-<tr><td>Total&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
-<#assign quotes='\'' />
-<#list priority_ids as priority>
-<td>${priority_table['${priority}']}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-${table_info['select count(data) as COUNT from metadata where priority_id=${priority}'][0]['COUNT']}</td>
-</#list>
-</tr>
-</table>
-<h1>Listing based on Priority</h1>
-<table>
-<#list priority_ids as priority>
-<tr><td>priority_id:${priority}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
-<tr><td>&nbsp;</td></tr>
-<tr><td><h3>${priority_table['${priority}']}</h3></td></tr>
-
-<#list table_info['select * from metadata where priority_id=${priority}'] as recordentry >
-<tr><td>logtext:${recordentry['data']}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
-<td>lineNo:${recordentry['line_number']}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td></tr>
-</#list>
-</#list>
-</table>
-<h1>Listing based on Component</h1>
-<table>
-<#assign component_ids = component_table?keys>
-<#list component_ids as component>
-<tr><td>&nbsp;</td></tr>
-<tr><td><h3>${component_table['${component}']}</h3></td></tr>
-<#list table_info['select * from metadata where component_id=${component} order by priority_id'] as recordentry >
-<tr><td>priority:${priority_table["${recordentry['priority_id']}"]}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
-<td>logtext:${recordentry['data']}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
-<td>lineNo:${recordentry['line_number']}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td></tr>
-</#list>
-</#list>
-</table>
-</body>
-</html>
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/metadata/src/templates/summary.html.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,128 +0,0 @@
-<#--
-============================================================================ 
-Name        : summary.html.ftl 
-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:
-
-============================================================================
---> 
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html>
-
-
-<#include "/@macro/logger.ftl"/>
-
-    <#assign table_info = pp.loadData('com.nokia.helium.metadata.SQLFMPPLoader',
-        "${dbPath}") >
-
-<head>
-    <title>
-<#assign mykey=loginfo.info.id>
-<#if (conv[mykey])?exists>
-${loginfo.info.id}
-</#if>
-build summary</title>
-    <@helium_logger_html_head/>
-</head>
-<body>
-
-<!--
-    Processing the Helium log summary.
--->
-<#macro logentry text, severity>
-    <#assign conv={"error": "error", "warning": "warning"}>
-    <#if (conv['${severity}'])?exists>
-        <@helium_logger_print type="${conv[\"${severity}\"]}">${text}</@helium_logger_print>
-    <#else>
-        <@helium_logger_print type="">${text}</@helium_logger_print>
-    </#if>
-</#macro>
-
-<#macro logfile_severity logname, priority, count, helium_node_id>
-    <@helium_message_box nodeid="${helium_node_id}" type="${priority}"  count="${count}"?number />
-</#macro>
-
-
-<#macro logfile_entry_detail recordentry, helium_node_id>
-    <#if recordentry?keys?size &gt; 0 >
-        <@logentry "${recordentry['data']}", "${priority_table[\"${recordentry['priority_id']}\"]}"?lower_case />
-    </#if>
-</#macro>
-
-<!-- Call the macros to render the log contents. -->
-<#assign mykey=loginfo>
-<#if (conv[mykey])?exists>
-<@helium_logger_header title="${loginfo.info.id} build"/>
-
-<@helium_logger_content title="Build overview">
-    Time started: ${loginfo.info.startTime}<br/>
-    Build machine: ${loginfo.info.machine}<br/>
-    Is published?: ${loginfo.info.publish.status}<br/>
-    <#if loginfo.info.publish.status?string == true?string>
-        Published location: ${loginfo.info.publish.location}</br>
-    </#if>
-</@helium_logger_content>
-</#if>
-
-<@helium_logger_content title="Errors and warnings details">
-<#assign priority_table = table_info['select * from priority'] >
-<#assign logpath_table = table_info['select * from logfiles'] >
-<#assign priority_ids = priority_table?keys>
-<#assign logpath_id = logpath_table?keys>
-<#list logpath_id as logpath>
-    <#assign component_table = table_info['select id, component from component where logPath_id=${logpath}'] >
-    <#assign component_ids = component_table?keys?sort >
-    <#assign helium_node_id = helium_node_id + 1>
-    <#-- -->
-    <@helium_logger_node_head nodeid="${helium_node_id}" title="${logpath_table['${logpath}']}">
-        <#list priority_ids as priority>
-            <@logfile_severity "${logpath_table['${logpath}']}", "${priority_table['${priority}']}"?lower_case, 
-                "${table_info['select count(data) as COUNT from metadata where logpath_id=${logpath} and priority_id = ${priority}'][0]['COUNT']}", 
-                "${helium_node_id}" />
-        </#list>
-    </@helium_logger_node_head>
-    <@helium_logger_node_content nodeid="${helium_node_id}">
-        <#list component_ids as component_id>
-            <#if "${component_table['${component_id}']}" != "general" >
-                <#assign helium_node_id = helium_node_id + 1>
-                <@helium_logger_node_head nodeid="${helium_node_id}" title="${component_table['${component_id}']}">
-                    <#list priority_ids as priority>
-                        <#assign priority_text = "${priority_table['${priority}']}"?lower_case>
-                        <#assign priority_count = "${table_info['select count(data) as COUNT from metadata where logpath_id=${logpath} and priority_id = ${priority} and component_id = ${component_id}'][0]['COUNT']}" >
-                        <@logfile_severity "${component_table['${component_id}']}", "${priority_text}", 
-                                "${priority_count}", 
-                                "${helium_node_id}" />
-                    </#list>
-                </@helium_logger_node_head>
-                <@helium_logger_node_content nodeid="${helium_node_id}">
-                <#list priority_ids as priority>
-                    <#list table_info['select * from metadata where logpath_id = ${logpath} and priority_id = ${priority} and component_id = ${component_id}'] as recordentry >
-                        <#-- <#if sublog?node_name == "logfile"> --> 
-                            <@logfile_entry_detail recordentry, "${helium_node_id}" />
-                        <#-- <#elseif sublog?node_name == "log">
-                            <@antlognode sublog/>
-                        </#if> -->
-                    </#list>
-                </#list>
-                </@helium_logger_node_content>
-            </#if>
-        </#list>
-    </@helium_logger_node_content>
-</#list>
-</@helium_logger_content>
-</body>
-</html>
--- a/buildframework/helium/external/helium-antlib/metadata/tests/bld.sh	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,24 +0,0 @@
-#!/bin/csh
-
-#
-# 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: 
-#
-
-
-
-setenv COMPUTERNAME fasbs01
-module load java/1.6.0
-setenv ANT_ARGS "-lib ../lib -lib ../../lib -lib ../../core/lib -lib ../../bin/helium-core.jar -lib ../../bin/helium-metadata.jar -lib ../../antlibs"
-ant -Dant.executor.class="com.nokia.helium.core.ant.HeliumExecutor" $*
--- a/buildframework/helium/external/helium-antlib/metadata/tests/build.bat	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-@echo off
-
-rem
-rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-rem All rights reserved.
-rem This component and the accompanying materials are made available
-rem under the terms of the License "Eclipse Public License v1.0"
-rem which accompanies this distribution, and is available
-rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
-rem
-rem Initial Contributors:
-rem Nokia Corporation - initial contribution.
-rem
-rem Contributors:
-rem
-rem Description: 
-rem
-
-setlocal
-if not defined JAVA_6_HOME (
-set TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
-) ELSE  set TESTED_JAVA=%JAVA_6_HOME%
-if exist %TESTED_JAVA% (set JAVA_HOME=%TESTED_JAVA%)
-set ANT_ARGS=-lib ..\lib -lib ..\..\lib -lib ..\..\core\lib -lib ..\..\bin\helium-core.jar -lib ..\..\bin\helium-metadata.jar -lib ..\..\antlibs
-ant %*
-endlocal
-
--- a/buildframework/helium/external/helium-antlib/metadata/tests/build.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : build.xml 
-Part of     : Helium AntLib
-
-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="helium-antlib-metadata-unittest" xmlns:au="antlib:org.apache.ant.antunit">
-    <description>Helium Antlib metadata tests.</description>
-    <import file="../../test-macros.ant.xml" />
-  
-    <dirname property="metadata.unitest.dir" file="${ant.file.helium-antlib-metadata-unittest}" />
-    <property environment="env" />
-    <import file="../../../nokia/companyproperties.ant.xml" optional="true"/>
-    <import file="../../../../extensions/nokia/external/helium-nokia-antlib/companyproperties.ant.xml" optional="true"/>
-    <property name="metadata.output.dir" location="${diamonds.unitest.dir}/output" />
-    <property name="metadata.template.dir" location="${diamonds.unitest.dir}/../src/templates" />
-
-    <target name="unittest" depends="unittest-metadata"/>
-
-    <target name="unittest-metadata">
-        <antunitModule name="metadata" />
-    </target>
-</project>
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/metadata/tests/data/IDO_lcdo_tb92-ci_MCL.92.64_ant_build.log	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,129 +0,0 @@
-zip-binaries:
-   [length] t:\output\temp_build_files\IDO_lcdo_tb92-ci_MCL.92.64_nonhw_binaries_includefile.txt does not exist
-
-ats-test:
-log file not exists
-log file not exists
-
-ats-aste:
-log file not exists
-log file not exists
-
-ido-zip-wa:
-     [echo] Zipping wa
-      [zip] Building zip: t:\output\src\IDO_lcdo_tb92-ci_MCL.92.64_sources.zip
-
-build-log-extracts:
-Converting t:\output\logs\IDO_lcdo_tb92-ci_MCL.92.64.sysdef_GenxmlMerge.log...
-Converting t:\output\logs\IDO_lcdo_tb92-ci_MCL.92.64__armv5_winscw_armv5.test_dfs_build.sbs_ant_output.log...
-Extracted log is uptodate: t:\output\logs\IDO_lcdo_tb92-ci_MCL.92.64__armv5_winscw_armv5.test_dfs_build_compile.log
-Converting t:\output\logs\IDO_lcdo_tb92-ci_MCL.92.64_ant_build.log...
-Converting t:\output\logs\IDO_lcdo_tb92-ci_MCL.92.64_bom.log...
-Extracted log is uptodate: t:\output\logs\IDO_lcdo_tb92-ci_MCL.92.64_ccm_get_input.log
-Extracted log is uptodate: t:\output\logs\IDO_lcdo_tb92-ci_MCL.92.64_validate-policy.log
-
-log-merge:
-[dependset] Warning: t:\output\logs\IDO_lcdo_tb92-ci_MCL.92.64_bom.log.xml modified in the future.
-     [echo] Merging all *.log.xml files
-     [echo] Inserting t:\output\logs\IDO_lcdo_tb92-ci_MCL.92.64.sysdef_GenxmlMerge.log.xml into summary.
-     [echo] Inserting t:\output\logs\IDO_lcdo_tb92-ci_MCL.92.64__armv5_winscw_armv5.test_dfs_build.sbs_ant_output.log.xml into summary.
-     [echo] Inserting t:\output\logs\IDO_lcdo_tb92-ci_MCL.92.64__armv5_winscw_armv5.test_dfs_build_compile.log.xml into summary.
-     [echo] Inserting t:\output\logs\IDO_lcdo_tb92-ci_MCL.92.64_ant_build.log.xml into summary.
-     [echo] Inserting t:\output\logs\IDO_lcdo_tb92-ci_MCL.92.64_bom.log.xml into summary.
-     [echo] Inserting t:\output\logs\IDO_lcdo_tb92-ci_MCL.92.64_ccm_get_input.log.xml into summary.
-     [echo] Inserting t:\output\logs\IDO_lcdo_tb92-ci_MCL.92.64_info.log.xml into summary.
-     [echo] Inserting t:\output\logs\IDO_lcdo_tb92-ci_MCL.92.64_validate-policy.log.xml into summary.
-
-render-log-summary:
-     [fmpp] File processed.
-
-build-log-summary:
-
-prep-publish:
-
-ido-publish-sites:
-   [script] Publishing \\vagrp006\GROUPS5\SP_IDO\LCDo\CI_builds
-   [script] execute
-      [IDO] data.drive.letter is already defined to E
-      [IDO] Build.drive: t:, the drive exists: true
-      [IDO] Build drive substing skipped
-      [IDO] data.drive.letter is already defined to E
-      [IDO] Category folder name: idos
-      [IDO] Type: ido
-      [IDO] Updated build.family to ido_lcdo_tb92-ci_sbs-ec_sbs-ec
-[IDO] Using S60 version: tb92
-Trying to override old definition of task http://www.nokia.com/helium:diskspaceMacro
-Trying to override old definition of task http://www.nokia.com/helium:diskspaceMacro
-
-prep-publish:
-    [mkdir] Created dir: \\vagrp006\GROUPS5\SP_IDO\LCDo\CI_builds\tb92-ci\MCL.92.64
-
-publish:
-     [copy] Copying 26 files to \\vagrp006\GROUPS5\SP_IDO\LCDo\CI_builds\tb92-ci\MCL.92.64
-     [echo] ERROR: There are 5214 changes in the publish directory. Uploading the changes again...
-
-ido-recopy:
-      [IDO] data.drive.letter is already defined to E
-      [IDO] Build.drive: t:, the drive exists: true
-      [IDO] Build drive substing skipped
-      [IDO] data.drive.letter is already defined to E
-      [IDO] Category folder name: idos
-      [IDO] Type: ido
-      [IDO] Updated build.family to ido_lcdo_tb92-ci_sbs-ec_sbs-ec
-[IDO] Using S60 version: tb92
-Trying to override old definition of task http://www.nokia.com/helium:diskspaceMacro
-Trying to override old definition of task http://www.nokia.com/helium:diskspaceMacro
-
-ido-create-ado-mapping:
-[hlm:referenceToFileMacro] Creating t:\output\temp_build_files\null903042207.txt using system.definition.files
-[hlm:referenceToFileMacro] E:\Build_E\idoconfiguration\running\common\sysdefs\build.sysdef.xml
-[hlm:referenceToFileMacro] E:\Build_E\ido_wa\IDO_lcdo_tb92-ci\LC_Domain\LC_Domain\btservices\layers.sysdef.xml
-[hlm:referenceToFileMacro] E:\Build_E\ido_wa\IDO_lcdo_tb92-ci\LC_Domain\LC_Domain\printing\layers.sysdef.xml
-[hlm:referenceToFileMacro] E:\Build_E\ido_wa\IDO_lcdo_tb92-ci\LC_Domain\LC_Domain\remoteconn\layers.sysdef.xml
-[hlm:referenceToFileMacro] E:\Build_E\ido_wa\IDO_lcdo_tb92-ci\LC_Domain\LC_Domain\usbservices\layers.sysdef.xml
-[hlm:referenceToFileMacro] E:\Build_E\ido_wa\IDO_lcdo_tb92-ci\LC_Domain_osext\LC_Domain_osext\btaudioadaptation_stub\layers.sysdef.xml
-[hlm:referenceToFileMacro] E:\Build_E\ido_wa\IDO_lcdo_tb92-ci\LC_Domain_osext\LC_Domain_osext\shortlinksrv\layers.sysdef.xml
-[hlm:referenceToFileMacro] E:\Build_E\ido_wa\IDO_lcdo_tb92-ci\SystemSW_Domain_OSExt\SystemSW_Domain_OSExt\devicesrv\layers.sysdef.xml
-
-ido-prep-copy:
-     [fmpp] File processed.
-
-all:
-   [delete] Deleting directory t:\sf\app\printing_old
-   [delete] Deleting directory t:\sf\mw\btservices_old
-   [delete] Deleting directory t:\sf\mw\usbservices_old
-   [delete] Deleting directory t:\sf\mw\remoteconn_old
-   [delete] Deleting directory t:\sf\os\devicesrv_old
-   [delete] Deleting directory t:\sf\adaptation\stubs\btaudioadaptation_stub_old
-   [delete] Deleting directory t:\sf\os\shortlinksrv_old
-     [fmpp] File processed.
-
-all:
-    [mkdir] Created dir: t:\sf\app\printing
-    [mkdir] Created dir: t:\sf\adaptation\stubs\btaudioadaptation_stub
-    [mkdir] Created dir: t:\sf\os\shortlinksrv
-    [mkdir] Created dir: t:\sf\mw\remoteconn
-    [mkdir] Created dir: t:\sf\os\devicesrv
-    [mkdir] Created dir: t:\sf\mw\btservices
-    [mkdir] Created dir: t:\sf\mw\usbservices
-     [copy] Copying 30 files to t:\sf\adaptation\stubs\btaudioadaptation_stub
-     [copy] Copying 359 files to t:\sf\os\shortlinksrv
-     [copy] Copying 496 files to t:\sf\app\printing
-     [copy] Copying 1584 files to t:\sf\mw\remoteconn
-     [copy] Copying 2341 files to t:\sf\mw\btservices
-     [copy] Copying 1767 files to t:\sf\mw\usbservices
-     [copy] Copying 6833 files to t:\sf\os\devicesrv
-
-IDO-additions.final:
-Deferred failure: Yes
-
-BUILD FAILED
-
-compileSignal: Expected result was 0, actual result was 1 : compile-signal
-E:\Build_E\idoconfiguration\running\common\ido-additions.ant.xml:110: if=pending.failure
-	at com.nokia.helium.core.ant.HeliumExecutor.executeTargets(HeliumExecutor.java:98)
-	at org.apache.tools.ant.Project.executeTargets(Project.java:1181)
-	at org.apache.tools.ant.Main.runBuild(Main.java:698)
-	at org.apache.tools.ant.Main.startAnt(Main.java:199)
-	at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257)
-	at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104)
--- a/buildframework/helium/external/helium-antlib/metadata/tests/data/all_regex_type.log	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,67 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<buildlog sbs_version="2.5.3 [2009-03-12 release]" xmlns="http://symbian.com/xml/build/log" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symbian.com/xml/build/log http://symbian.com/xml/build/log/1_0.xsd">
-<info>sbs: version 2.5.3 [2009-03-12 release]
-</info>
-<info>SBS_HOME E:/Build_E/ido-config-df/sbs</info>
-<info>Set-up E:/Build_E/ido-config-df/sbs/sbs_init.xml</info>
-<warning>E:/build_e/sbs_2.8.4/sbs/win32/mingw/bin/cpp.exe: </warning>
-<info>Command-line-arguments -s z:\output/build/canonical_system_definition_build.xml -k -c armv5 -j 4 -m z:\output\logs/ido_imm_mcl_devlon70_robot_5.1.005__armv5_multiple_thread_build_Makefile --filters=FilterHeliumLog -f z:\output\logs/ido_imm_mcl_devlon70_robot_5.1.005__armv5_multiple_thread_build_compile.log</info>
-<recipe name='resourcedependencies' target='z:/epoc32/build/camera/c_87f62b1af2e7d874/gscameraplugin_dll/gscameraplugin_resource_plugins_27.rpp.d' host='fawec012' layer='app_layer' component='' bldinf='z:/sf/app/camera/group/bld.inf' mmp='z:/sf/app/camera/camerauis/cameraapp/generic/GsCamcorderPlugin/group/gscameraplugin.mmp' config='armv5_udeb' platform='' phase='RESOURCE_DEPS' source=''>
-<![CDATA[
-mingw_make.exe: error
-test FATAL ERROR(S):abcd
-): Missing file:
-abcd FLEXlm error:
-ABLD ERROR: 1234
-BLDMAKE ERROR: 43543
-test FATAL ERROR 
-fatal error U1077 error occured
-test warning U4010
-Warning:
-WARNING:
-LINK : warning
-REMARK: 
-:10: warning: cannot find matching deallocation function
-INFO:
-make[10]: ***abcd
-make[10]: abcd not remade because of errors
-error: ((Internal fault)):
-ERROR,error: ((Internal fault):)$,
- error given more than once in the same rule
-ERROR: build error
-ERROR EC95940: ec error
-Errors caused tool to abort. asdfasdf
-test no rule to make target
-ERROR,.*no rule to make.*,
-ERROR	testing
-100) : WARNING: TEST123
-MAKEDEF WARNING: TEST
-TEST 123 \\(10) : Warning: (400)
-BLDMAKE WARNING: bldm warning
-MAKEDEF WARNING: make warning
-atest(100) : warning C aasdfa
-testas 100: warning: test123
-usage Usage Warning: warn1
-abcd mwld.exe: abcd
-Command line warning abcd
-anything ERROR: bad relocation: test123
-10 warning in component1
-EventType: Error Source: SweepNTabcde
-WARNING,.EventType:\s+Error\s+Source:\s+SweepNT.*,
-WARN	test
-anything Command line warning D4025 : test
-REMARK: test remark anything
-EventType: Error Source: GNU Make.
-abcd :10: warning: cannot find matching deallocation function 100:note abcd
-INFO: any info match
-"abcd" 
-line 100+: Warning:', : warning 30:,
-"abcd , line 100: Error: 100abcd:. abcd
-line 10: Warning:\', r\': warning 10: abcd
-"abcd, line 100: Warning: 100 abcd: abcd",
-]]><time start='1238421421.153697000' elapsed='0.171' />
-+ RV=0
-+ set +x
-<status exit='ok' attempt='1' />
-</recipe>
-</buildlog>
--- a/buildframework/helium/external/helium-antlib/metadata/tests/data/categorization.log	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<buildlog sbs_version="2.9.2 [2009-09-21 sf release]" xmlns="http://symbian.com/xml/build/log" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symbian.com/xml/build/log http://symbian.com/xml/build/log/1_0.xsd">
-<recipe name='compile' target='X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/urel/srchuiresultview.o' host='' layer='app_layer' component='' bldinf='X:/sf/app/organizer/group/bld.inf' mmp='X:/sf/app/organizer/searchui/searchapp/plugins/resultviewerplugin/group/srchuiresviewplugin.mmp' config='armv5_urel.product' platform='armv5' phase='ALL' source='X:/sf/app/organizer/searchui/searchapp/plugins/resultviewerplugin/src/srchuiresultview.cpp'>
-<![CDATA[
-+ C:/APPS/rvct22_616/bin/armcc.exe -O2 --dwarf2 --dllimport_runtime --exceptions --exceptions_unwind --diag_suppress 161,611,654,997,1152,1300,1464,1488,2523,6318,6331 --diag_error 1267 --cpu 5T --enum_is_int -Ono_known_library --fpmode ieee_no_fenv --export_all_vtbl --memaccess -UL41 --no_vfe --apcs /inter -c --thumb -D__MARM_THUMB__ --fpu softvfp --cpp -D__MARM_INTERWORK__ -D__SUPPORT_CPP_EXCEPTIONS__ -D_UNICODE -D__SYMBIAN32__ -D__ARMCC__ -D__EPOC32__ -D__MARM__ -D__EABI__ '-D__PRODUCT_INCLUDE__="X:/epoc32/include/feature_settings.hrh"' -D__MARM_ARMV5__ -D__ARMCC_2__ -D__ARMCC_2_2__ -DNDEBUG -D__DLL__ --preinclude X:/epoc32/include/rvct/rvct.h -JX:/sf/app/organizer/searchui/searchapp/plugins/resultviewerplugin/src -JX:/sf/app/organizer/searchui/searchapp/plugins/resultviewerplugin/inc -JX:/sf/app/organizer/searchui/searchapp/inc -JX:/sf/app/organizer/searchui/searchapp/SrchUICommon/inc -JX:/epoc32/ -JX:/epoc32/include/config/platform -JX:/epoc32/include/baseport -JX:/epoc32/include -JX:/epoc32/include/ecom -JX:/epoc32/include -JX:/epoc32/include/mw -JX:/epoc32/include/platform/mw -JX:/epoc32/include/platform -JX:/epoc32/include/app -JX:/epoc32/include/platform/app -JX:/epoc32/include/platform/loc -JX:/epoc32/include/platform/mw/loc -JX:/epoc32/include/platform/app/loc -JX:/epoc32/include/platform/loc/sc -JX:/epoc32/include/platform/mw/loc/sc -JX:/epoc32/include/platform/app/loc/sc --depend_format=unix --depend X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/urel/srchuiresultview.o.d -o X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/urel/srchuiresultview.o X:/sf/app/organizer/searchui/searchapp/plugins/resultviewerplugin/src/srchuiresultview.cpp
-"X:\sf\app\organizer\searchui\searchapp\plugins\resultviewerplugin\src\srchuiresultview.cpp", line 339: Error:  #20: identifier "KSEARCH_HLP_SINGLE_RE" is undefined
-          	helpContext.iContext = KSEARCH_HLP_SINGLE_RE; // add correct help context when available
-          	                       ^
-X:\sf\app\organizer\searchui\searchapp\plugins\resultviewerplugin\src\srchuiresultview.cpp: 0 warnings, 1 error
-
-]]><time start='1253718692.38008' elapsed='1.094' />
-<status exit='failed' code='1' attempt='3' />
-</recipe>
-make: *** [X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/urel/srchuiresultview.o] Error 1
-<clean bldinf='X:/sf/app/organizer/group/bld.inf' mmp='X:/sf/app/organizer/searchui/searchapp/plugins/resultviewerplugin/group/srchuiresviewplugin.mmp' config='armv5_udeb.product'>
-<file>X:/epoc32/release/armv5/udeb/srchuiresviewplugin.dll</file>
-<file>"X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresviewplugin{000a0000}.def"</file>
-<file>"X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresviewplugin{000a0000}.dso"</file>
-<file>X:/epoc32/release/armv5/udeb/srchuiresviewplugin.dll.sym</file>
-<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresviewplugin_udeb_objects.via</file>
-<file>X:/epoc32/release/armv5/udeb/srchuiresviewplugin.dll.map</file>
-<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultview.o.d</file>
-<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultcontainer.o.d</file>
-<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultmodel.o.d</file>
-<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/proxy.o.d</file>
-<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultview.o</file>
-<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultcontainer.o</file>
-<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultmodel.o</file>
-<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/proxy.o</file>
-<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultview.o</file>
-<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultcontainer.o</file>
-<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultmodel.o</file>
-<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/proxy.o</file>
-<file>X:/epoc32/release/armv5.product/udeb/srchuiresviewplugin.dll</file>
-<file>X:/epoc32/release/armv5.product/udeb/srchuiresviewplugin.dll.sym</file>
-<file>X:/epoc32/release/armv5.product/udeb/srchuiresviewplugin.dll.map</file>
-<dir>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5</dir>
-<dir>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5</dir>
-<dir>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb</dir>
-<dir>X:/epoc32/release/armv5/udeb</dir>
-<dir>X:/epoc32/release/armv5/lib</dir>
-<dir>X:/epoc32/release/armv5/lib</dir>
-<dir>X:/epoc32/release/armv5.product/udeb</dir>
-</clean>
-</buildlog>
--- a/buildframework/helium/external/helium-antlib/metadata/tests/data/categorization_clean.log	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<buildlog sbs_version="2.9.2 [2009-09-21 sf release]" xmlns="http://symbian.com/xml/build/log" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symbian.com/xml/build/log http://symbian.com/xml/build/log/1_0.xsd">
-<clean bldinf='X:/sf/app/organizer/group/bld.inf' mmp='X:/sf/app/organizer/searchui/searchapp/plugins/resultviewerplugin/group/srchuiresviewplugin.mmp' config='armv5_udeb.product'>
-<file>X:/epoc32/release/armv5/udeb/srchuiresviewplugin.dll</file>
-<file>"X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresviewplugin{000a0000}.def"</file>
-<file>"X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresviewplugin{000a0000}.dso"</file>
-<file>X:/epoc32/release/armv5/udeb/srchuiresviewplugin.dll.sym</file>
-<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresviewplugin_udeb_objects.via</file>
-<file>X:/epoc32/release/armv5/udeb/srchuiresviewplugin.dll.map</file>
-<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultview.o.d</file>
-<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultcontainer.o.d</file>
-<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultmodel.o.d</file>
-<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/proxy.o.d</file>
-<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultview.o</file>
-<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultcontainer.o</file>
-<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultmodel.o</file>
-<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/proxy.o</file>
-<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultview.o</file>
-<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultcontainer.o</file>
-<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultmodel.o</file>
-<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/proxy.o</file>
-<file>X:/epoc32/release/armv5.product/udeb/srchuiresviewplugin.dll</file>
-<file>X:/epoc32/release/armv5.product/udeb/srchuiresviewplugin.dll.sym</file>
-<file>X:/epoc32/release/armv5.product/udeb/srchuiresviewplugin.dll.map</file>
-<dir>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5</dir>
-<dir>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5</dir>
-<dir>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb</dir>
-<dir>X:/epoc32/release/armv5/udeb</dir>
-<dir>X:/epoc32/release/armv5/lib</dir>
-<dir>X:/epoc32/release/armv5/lib</dir>
-<dir>X:/epoc32/release/armv5.product/udeb</dir>
-</clean>
-</buildlog>
--- a/buildframework/helium/external/helium-antlib/metadata/tests/data/common.csv	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-priority,regex,description
-FATAL,.*mingw_make\.exe.*,
-ERROR,.*\): Missing file:.*, 
-ERROR,^(?:(?:\s*\d+\)\s*)|(?:\s*\*\*\*\s*))ERROR:.*,
-ERROR,.*Error:\s+.*,
-ERROR,.*is not recognized as an internal or external command.*,
-ERROR,^MISSING:.*,
-ERROR,.*FLEXlm error:.*,
-ERROR,.*(ABLD|BLDMAKE) ERROR:.*,
-ERROR,.*FATAL ERROR\(S\):.*,
-ERROR,.*fatal error U1077.*,
-ERROR,.*warning U4010,
-ERROR,^make(?:\[\d+\])?\: \*\*\*.*,
-ERROR,^make(?:\[\d+\])?:\s+.*\s+not\s+remade.*,
-ERROR,error: ((Internal fault):)$,
-ERROR,Exception: [A-Z0-9_]+.*,
-ERROR,.*target .* given more than once in the same rule.*,
-ERROR,^ERROR:.*,
-ERROR,^ERROR EC\d+:.*,
-ERROR,Errors caused tool to abort..*,
-ERROR,.*no rule to make.*,
-ERROR,^ERROR\t.*,
-REMARK,.*[Ww]arning:?\s+(#111-D|#1166-D|#117-D|#128-D|#1293-D|#1441-D|#170-D|#174-D|#175-D|#185-D|#186-D|#223-D|#231-D|#257-D|#284-D|#368-D|#414-D|#430-D|#47-D|#514-D|#546-D|#68-D|#69-D|#830-D|#940-D|#836-D|A1495E|L6318W|C2874W|C4127|C4355|C4530|C4702|C4786|LNK4049).*,
-WARNING,^(\d+\))?\s.*WARNING:.*,
-WARNING,^MAKEDEF WARNING:.*,
-WARNING,.*\\\\(?)\(\d+\)\s:\sWarning:\s\(\d+\),
-WARNING,^(BLDMAKE |MAKEDEF )?WARNING:.*,
-WARNING,.*\(\d+\) : warning C.*,
-WARNING,.*\d+: warning:.*,
-WARNING,.*Usage Warning:.*,
-WARNING,.*mwld.exe:.*,
-WARNING,^Command line warning.*,
-WARNING,.*ERROR: bad relocation:.*,
-WARNING,^(\d+) warning.*,
-WARNING,.*EventType:\s+Error\s+Source:\s+SweepNT.*,
-WARNING,^WARN\t.*,
-WARNING,.*LINK : warning.*,
-REMARK,.*Command line warning D4025 : .*,
-REMARK,^REMARK: .*,
-REMARK,^EventType:\s+Error\s+Source:\s+GNU\s+Make.*,
-REMARK,".*:\d+: warning: cannot find matching deallocation function""r""((:\d+)*: note: ).*",
-INFO,^INFO:.*,
-ERROR,"\""(.*)\"" , line (\d+): (Error: +(.\d+.*?):.*)$",
-WARNING,"line \d+: Warning:', r':\s+warning\s+\w+:.*",
-WARNING,"\""(.*)\""\, line (\d+): (Warning: +(?!A1495E)(.\d+.*?):.*)$",
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/metadata/tests/data/dp.log	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-INFO:dp:*******************************************
-INFO:dp:*                                         *
-INFO:dp:*       Data package 2.0 creation         *
-INFO:dp:*                 iCreatorDP              *
-INFO:dp:*                    v0.8.7                 *
-INFO:dp:*                                         *
-INFO:dp:*******************************************
-ERROR:dp:${${product.list}.dp.wa}/Setting_files does not exist
-Result: 1
--- a/buildframework/helium/external/helium-antlib/metadata/tests/data/ido_abs_mcl_devlon70_robot_MCL.70.500_fixslashes_raptor.log	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-
-No changes to P:\sf\mw\svgt\svgtopt\SVG\SVGRecog\Group\SvgRecog.MMP
-ERROR: P:\sf\mw\svgt\svgt_plat\svgt_api\tsrc\group\Bld.inf: #1: // to the same name in \epoc32\include
-ERROR: P:\sf\mw\svgt\svgt_plat\svgt_api\tsrc\group\Bld.inf: #1: \agnmodel\inc\AGMCOMON.H
-ERROR: P:\sf\mw\svgt\svgt_plat\svgt_api\tsrc\group\Bld.inf: #1: \agnmodel\group\agnmodel.mmp
-ERROR: P:\sf\mw\svgt\svgt_plat\svgt_api\tsrc\group\Bld.inf: #1: \agnmodel\group\agsvexe.mmp
-PRINT ONLY -> Writing P:\sf\mw\svgt\svgt_plat\svgt_api\tsrc\group\Bld.inf
-No changes to P:\sf\mw\svgt\svgt_plat\svgt_api\tsrc\group\svgtmodule.mmp
-ERROR: P:\sf\mw\classicui\uifw\AvKon\odeconf\group\odeconf.mmp: #1: SOURCEPATH		..\src
-ERROR: P:\sf\mw\classicui\uifw\AvKon\odeconf\group\odeconf.mmp: #1: SOURCEPATH		..\data
-ERROR: P:\sf\mw\classicui\uifw\AvKon\odeconf\group\odeconf.mmp: #1: TARGETPATH      resource\apps
-ERROR: P:\sf\mw\classicui\uifw\AvKon\odeconf\group\odeconf.mmp: #1: TARGETPATH 	    \private\10003a3f\apps
-ERROR: P:\sf\mw\classicui\uifw\AvKon\odeconf\group\odeconf.mmp: #1: USERINCLUDE	   ..\inc
-PRINT ONLY -> Writing P:\sf\mw\classicui\uifw\AvKon\odeconf\group\odeconf.mmp
-No changes to P:\sf\mw\classicui\uifw\AvKon\odeconf\inc\odeconf.hrh
-ERROR: P:\sf\app\homescreen\idlehomescreen\hsplugins\organizer\aiagendaplugin2\inc\aicalendarplugin2constants.hrh: #1: _LIT( KAICal2ArabicSummaryLocationSeparator, " \x060c" );
-ERROR: P:\sf\app\homescreen\idlehomescreen\hsplugins\organizer\aiagendaplugin2\inc\aicalendarplugin2constants.hrh: #1:  * \x0009 horizontal tab
-ERROR: P:\sf\app\homescreen\idlehomescreen\hsplugins\organizer\aiagendaplugin2\inc\aicalendarplugin2constants.hrh: #1:  * \x000a new line
-ERROR: P:\sf\app\homescreen\idlehomescreen\hsplugins\organizer\aiagendaplugin2\inc\aicalendarplugin2constants.hrh: #1:  * \x000b line tabulation (vertical
-ERROR: P:\sf\app\homescreen\idlehomescreen\hsplugins\organizer\aiagendaplugin2\inc\aicalendarplugin2constants.hrh: #1:  * \x000c form feed
-ERROR: P:\sf\app\homescreen\idlehomescreen\hsplugins\organizer\aiagendaplugin2\inc\aicalendarplugin2constants.hrh: #1:  * \x000d carriage return
-ERROR: P:\sf\app\homescreen\idlehomescreen\hsplugins\organizer\aiagendaplugin2\inc\aicalendarplugin2constants.hrh: #1:  * \x2028 line separator
-ERROR: P:\sf\app\homescreen\idlehomescreen\hsplugins\organizer\aiagendaplugin2\inc\aicalendarplugin2constants.hrh: #1:  * \x2029 paragraph separator
-ERROR: P:\sf\app\homescreen\idlehomescreen\hsplugins\organizer\aiagendaplugin2\inc\aicalendarplugin2constants.hrh: #1: "\x0009\x000A\x000B\x000C\x000D\x2028\x2029" );
-PRINT ONLY -> Writing P:\sf\app\homescreen\idlehomescreen\hsplugins\organizer\aiagendaplugin2\inc\aicalendarplugin2constants.hrh
-No changes to P:\sf\app\homescreen\idlehomescreen\hsplugins\organizer\aiagendaplugin2\inc\aicalendarplugin2uids.hrh
-No changes to P:\sf\app\homescreen\idlehomescreen\hsplugins\organizer\aiagendaplugin2\inc\calendar.hrh
-No changes to P:\sf\app\homescreen\idlehomescreen\hsplugins\organizer\aiagendaplugin2\inc\CalendarVariant.hrh
-ERROR: P:\sf\mw\inputmethods\textinput\peninputgenerichwr\inc\peninputhwrarabic.hrh: #1: _LIT(KStandardPuncExclamatoryPoint, "\x0021");
-ERROR: P:\sf\mw\inputmethods\textinput\peninputgenerichwr\inc\peninputhwrarabic.hrh: #1: _LIT(KStandardPuncDotPoint, "\x002E");
-ERROR: P:\sf\mw\inputmethods\textinput\peninputgenerichwr\inc\peninputhwrarabic.hrh: #1: _LIT(KArabicPuncComma, "\x060C");
-ERROR: P:\sf\mw\inputmethods\textinput\peninputgenerichwr\inc\peninputhwrarabic.hrh: #1: _LIT(KArabicPuncSemicolon, "\x061B");
-ERROR: P:\sf\mw\inputmethods\textinput\peninputgenerichwr\inc\peninputhwrarabic.hrh: #1: _LIT(KArabicPuncQuestion, "\x061F");
-ERROR: P:\sf\mw\inputmethods\textinput\peninputgenerichwr\inc\peninputhwrarabic.hrh: #1: _LIT(KArabicPuncWaw, "\x0648");
-PRINT ONLY -> Writing P:\sf\mw\inputmethods\textinput\peninputgenerichwr\inc\peninputhwrarabic.hrh
-
--- a/buildframework/helium/external/helium-antlib/metadata/tests/data/ido_abs_mcl_devlon70_robot_MCL.70.500_info.log	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<info>
-                <id>ido_abs_mcl_devlon70_robot_MCL.70.500</id>
-                <number>500</number>
-                <startTime>2009-04-25T19:31:43</startTime>
-                <machine>FASYM011</machine>
-                <publish>
-                    <status>true</status>
-                    <location>\\fasamba\dfs\r1120_isis\NT\Build_and_Release\IDO_Statistics\ABS_Domain\Releases</location>
-                </publish>
-            </info>
--- a/buildframework/helium/external/helium-antlib/metadata/tests/data/ido_abs_tb92-nightly_5.2.58_validate_policy.log	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,81 +0,0 @@
-<?xml version="1.0"?>
-<policyvalidation>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\screensaver\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\screensaver\scrsaver\scrsaverplugins\ScreenSaverAnimPlugin\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\screensaver\scrsaver\scrsaverplugins\ScreenSaverGifAnimPlugin\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\screensaver\scrsaver\scrsaverplugins\SlideshowPlugin\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\applicationinterworkingfw\ServiceHandler\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_plat\alarm_api\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_plat\extended_notifiers_api\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_pub\aiw_criteria_api\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_pub\aiw_generic_parameter_api\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_pub\aiw_service_handler_api\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_pub\buttons_api\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_pub\common_file_dialogs_api\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_pub\context_pane_api\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_pub\dialogs_api\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_pub\document_handler_api\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_pub\editors_api\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_pub\form_api\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_pub\grids_api\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_pub\hierarchical_lists_api\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_pub\indicators_api\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_pub\information_preview_popup_api\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_pub\lists_api\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_pub\navigation_pane_api\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_pub\notes_api\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_pub\notifiers_api\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_pub\options_menu_api\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_pub\popups_api\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_pub\screen_saver_api\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_pub\scroller_api\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_pub\setting_pages_api\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_pub\sounds_api\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_pub\status_pane_api\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_pub\tabs_api\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_pub\title_pane_api\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_pub\title_pane_touch_observer_api\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\classicui_pub\tsrc\bc\apps\bctestlauncher\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\CommonAdapter\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\commonuis\CommonDialogs\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\commonuis\CommonUi\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\psln\Doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\uifw\AknGlobalUI\avkonstartupextplg\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\uifw\AknGlobalUI\Doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\uifw\AvKon\akncompamode\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\uifw\AvKon\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\uifw\AvKon\tsrc\bc\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\uifw\AvKon\tsrc\bc\script\codetest_script\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\classicui\uifw\EikStd\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\svgt\svgtopt\Doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\svgt\svgtopt\VGRenderer\Doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\uiresources\layouts\cdl\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\uiresources\pictographs\AknPictograph\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\uiresources\skins\AknSkins\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\uiresources\uigraphics\AknIcon\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\uiresources\uiresources_pub\pictograph_api\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\uiresources\uiresources_pub\skins_api\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\hapticsservices\tactilefeedback\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\graphicsuis\svgtviewer\SvgtViewerPlugin\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\helps\csxhelp\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\uiaccelerator\uiacceltk\hitchcock\coretoolkit\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\uiaccelerator\uiacceltk\hitchcock\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\uiaccelerator\uiacceltk\hitchcock\Tracer\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\uitools\svgtencoder\svgtenc\standalone\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\ocrsrv\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\inputmethods\fep\aknfep\peninputplugins\peninputimeplugincn\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\inputmethods\inputmethods_pub\ptiengine_iti_api\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\inputmethods\textinput\peninputarc\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\inputmethods\textinput\peninputarc\utils\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\inputmethods\textinput\peninputcommonctrls\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\inputmethods\textinput\peninputhwrboxcn\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\inputmethods\textinput\ptienginev2\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\dictionary\userdict\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\textandloc\charconvfw\Charconvplugin\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\textandloc\charconvfw\Findutil\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\textandloc\charconvfw\gamerecognizer\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\textandloc\charconvfw\JPLangUtil\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\textandloc\charconvfw\Localizer\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\textandloc\charconvfw\SortUtil\doc" value="None"/>
-    <error type="missing" message="E:\Build_E\ido_wa\ido_abs_tb92-nightly\textandloc\textandloc_pub\directory_localizer_api\doc" value="None"/>
-</policyvalidation>
--- a/buildframework/helium/external/helium-antlib/metadata/tests/data/noerror.log	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<buildlog sbs_version="2.9.2 [2009-09-21 sf release]" xmlns="http://symbian.com/xml/build/log" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symbian.com/xml/build/log http://symbian.com/xml/build/log/1_0.xsd">
-</buildlog>
--- a/buildframework/helium/external/helium-antlib/metadata/tests/data/parser_error.log	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<buildlog sbs_version="2.9.2 [2009-09-21 sf release]" xmlns="http://symbian.com/xml/build/log" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symbian.com/xml/build/log http://symbian.com/xml/build/log/1_0.xsd">
-<recipe name='compile' target='X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/urel/srchuiresultview.o' host='' layer='app_layer' component='' bldinf='X:/sf/app/organizer/group/bld.inf' mmp='X:/sf/app/organizer/searchui/searchapp/plugins/resultviewerplugin/group/srchuiresviewplugin.mmp' config='armv5_urel.product' platform='armv5' phase='ALL' source='X:/sf/app/organizer/searchui/searchapp/plugins/resultviewerplugin/src/srchuiresultview.cpp'>
-<![CDATA[
-+ C:/APPS/rvct22_616/bin/armcc.exe -O2 --dwarf2 --dllimport_runtime --exceptions --exceptions_unwind --diag_suppress 161,611,654,997,1152,1300,1464,1488,2523,6318,6331 --diag_error 1267 --cpu 5T --enum_is_int -Ono_known_library --fpmode ieee_no_fenv --export_all_vtbl --memaccess -UL41 --no_vfe --apcs /inter -c --thumb -D__MARM_THUMB__ --fpu softvfp --cpp -D__MARM_INTERWORK__ -D__SUPPORT_CPP_EXCEPTIONS__ -D_UNICODE -D__SYMBIAN32__ -D__ARMCC__ -D__EPOC32__ -D__MARM__ -D__EABI__ '-D__PRODUCT_INCLUDE__="X:/epoc32/include/feature_settings.hrh"' -D__MARM_ARMV5__ -D__ARMCC_2__ -D__ARMCC_2_2__ -DNDEBUG -D__DLL__ --preinclude X:/epoc32/include/rvct/rvct.h -JX:/sf/app/organizer/searchui/searchapp/plugins/resultviewerplugin/src -JX:/sf/app/organizer/searchui/searchapp/plugins/resultviewerplugin/inc -JX:/sf/app/organizer/searchui/searchapp/inc -JX:/sf/app/organizer/searchui/searchapp/SrchUICommon/inc -JX:/epoc32/ -JX:/epoc32/include/config/platform -JX:/epoc32/include/baseport -JX:/epoc32/include -JX:/epoc32/include/ecom -JX:/epoc32/include -JX:/epoc32/include/mw -JX:/epoc32/include/platform/mw -JX:/epoc32/include/platform -JX:/epoc32/include/app -JX:/epoc32/include/platform/app -JX:/epoc32/include/platform/loc -JX:/epoc32/include/platform/mw/loc -JX:/epoc32/include/platform/app/loc -JX:/epoc32/include/platform/loc/sc -JX:/epoc32/include/platform/mw/loc/sc -JX:/epoc32/include/platform/app/loc/sc --depend_format=unix --depend X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/urel/srchuiresultview.o.d -o X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/urel/srchuiresultview.o X:/sf/app/organizer/searchui/searchapp/plugins/resultviewerplugin/src/srchuiresultview.cpp
-"X:\sf\app\organizer\searchui\searchapp\plugins\resultviewerplugin\src\srchuiresultview.cpp", line 339: Error:  #20: identifier "KSEARCH_HLP_SINGLE_RE" is undefined
-          	helpContext.iContext = KSEARCH_HLP_SINGLE_RE; // add correct help context when available
-          	                       ^
-X:\sf\app\organizer\searchui\searchapp\plugins\resultviewerplugin\src\srchuiresultview.cpp: 0 warnings, 1 error
-
-]]><time start='1253718692.38008' elapsed='1.094' />
-<error>
-<status exit='failed' code='1' attempt='3' />
-</recipe>
-make: *** [X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/urel/srchuiresultview.o] Error 1
-<clean bldinf='X:/sf/app/organizer/group/bld.inf' mmp='X:/sf/app/organizer/searchui/searchapp/plugins/resultviewerplugin/group/srchuiresviewplugin.mmp' config='armv5_udeb.product'>
-<file>X:/epoc32/release/armv5/udeb/srchuiresviewplugin.dll</file>
-<file>"X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresviewplugin{000a0000}.def"</file>
-<file>"X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresviewplugin{000a0000}.dso"</file>
-<file>X:/epoc32/release/armv5/udeb/srchuiresviewplugin.dll.sym</file>
-<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresviewplugin_udeb_objects.via</file>
-<file>X:/epoc32/release/armv5/udeb/srchuiresviewplugin.dll.map</file>
-<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultview.o.d</file>
-<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultcontainer.o.d</file>
-<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultmodel.o.d</file>
-<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/proxy.o.d</file>
-<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultview.o</file>
-<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultcontainer.o</file>
-<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultmodel.o</file>
-<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/proxy.o</file>
-<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultview.o</file>
-<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultcontainer.o</file>
-<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/srchuiresultmodel.o</file>
-<file>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb/proxy.o</file>
-<file>X:/epoc32/release/armv5.product/udeb/srchuiresviewplugin.dll</file>
-<file>X:/epoc32/release/armv5.product/udeb/srchuiresviewplugin.dll.sym</file>
-<file>X:/epoc32/release/armv5.product/udeb/srchuiresviewplugin.dll.map</file>
-<dir>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5</dir>
-<dir>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5</dir>
-<dir>X:/epoc32/build/organizer/c_aff6bae36b1df6c4/srchuiresviewplugin_dll/armv5/udeb</dir>
-<dir>X:/epoc32/release/armv5/udeb</dir>
-<dir>X:/epoc32/release/armv5/lib</dir>
-<dir>X:/epoc32/release/armv5/lib</dir>
-<dir>X:/epoc32/release/armv5.product/udeb</dir>
-</clean>
-</buildlog>
--- a/buildframework/helium/external/helium-antlib/metadata/tests/data/receipe_lengthy_warn.log	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,182 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<buildlog sbs_version="2.5.3 [2009-03-12 release]" xmlns="http://symbian.com/xml/build/log" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symbian.com/xml/build/log http://symbian.com/xml/build/log/1_0.xsd">
-<info>sbs: version 2.5.3 [2009-03-12 release]
-</info>
-<info>SBS_HOME E:/Build_E/ido-config-df/sbs</info>
-<info>Set-up E:/Build_E/ido-config-df/sbs/sbs_init.xml</info>
-<info>Command-line-arguments -s z:\output/build/canonical_system_definition_build.xml -k -c armv5 -j 4 -m z:\output\logs/ido_imm_mcl_devlon70_robot_5.1.005__armv5_multiple_thread_build_Makefile --filters=FilterHeliumLog -f z:\output\logs/ido_imm_mcl_devlon70_robot_5.1.005__armv5_multiple_thread_build_compile.log</info>
-<recipe name='win32compile2object' target='x:/epoc32/build/opensrv/c_672cbe451a1cdf8d/libgabble-convenience_dll/winscw/urel/gabble-connection.o' host='fawec103' layer='sf' component='opensrv' bldinf='x:/sf/mw/opensrv/group/bld.inf' mmp='x:/sf/mw/opensrv/telepathygabble/group/libgabble-convenience.mmp' config='winscw_urel' platform='winscw' phase='ALL' source='x:/sf/mw/opensrv/telepathygabble/src/gabble-connection.c'>
-<![CDATA[
-+ mwccsym2.exe -c -align 4 -warnings on -w nohidevirtual,nounusedexpr -msgstyle gcc -enum int -str pool -exc ms -trigraphs on -cwd source -O4,s -runtime staticmulti -wchar_t off -nostdinc -gccdepends -MD -d __SYMBIAN32__ -d __CW32__ -d __WINS__ -d __WINSCW__ -d __SUPPORT_CPP_EXCEPTIONS__ -d _UNICODE -d SYMBIAN -d HAVE_CONFIG_H -d HAVE_ERRNO_H -d VERBOSE -d EMULATOR -d NDEBUG -d __DLL__ -i- -i x:/sf/mw/opensrv/telepathygabble/inc -i x:/sf/mw/opensrv/loudmouth/inc -i x:/epoc32/include -i x:/epoc32/include -i x:/epoc32/include/mw -i x:/epoc32/include/platform/mw -i x:/epoc32/include/platform -i x:/epoc32/include/platform/loc -i x:/epoc32/include/platform/mw/loc -i x:/epoc32/include/platform/loc/sc -i x:/epoc32/include/platform/mw/loc/sc -i x:/epoc32/include/stdapis -i x:/epoc32/include/stdapis/glib-2.0 -i x:/epoc32/include/stdapis/glib-2.0/glib -i x:/epoc32/include/stdapis/glib-2.0/gObject -i x:/epoc32/include/stdapis/openssl -i x:/epoc32/include/stdapis/stlport -i x:/epoc32/include/stdapis/dbus-1.0 -i x:/epoc32/include/stdapis/dbus-1.0/dbus -include bldvariant.hrh -o x:/epoc32/build/opensrv/c_672cbe451a1cdf8d/libgabble-convenience_dll/winscw/urel/gabble-connection.o x:/sf/mw/opensrv/telepathygabble/src/gabble-connection.c
-epoc32\include\e32def.h:315: warning: macro 'TRUE' redefined
-epoc32\include\e32def.h:315: warning: (included from:
-epoc32\include\e32def.h:315: warning:   X:\epoc32\include\stdapis\pthread.h:40
-epoc32\include\e32def.h:315: warning:   X:\epoc32\include\stdapis\glib-2.0\glibconfig.h:46
-epoc32\include\e32def.h:315: warning:   X:\epoc32\include\stdapis\glib-2.0\glib\gtypes.h:30
-epoc32\include\e32def.h:315: warning:   X:\epoc32\include\stdapis\glib-2.0\glib\galloca.h:31
-epoc32\include\e32def.h:315: warning:   X:\epoc32\include\stdapis\glib-2.0\glib.h:43
-epoc32\include\e32def.h:315: warning:   X:\epoc32\include\stdapis\glib-2.0\gobject\gtype.h:28
-epoc32\include\e32def.h:315: warning:   X:\epoc32\include\stdapis\glib-2.0\gobject\gboxed.h:28
-epoc32\include\e32def.h:315: warning:   X:\epoc32\include\stdapis\glib-2.0\glib-object.h:25
-epoc32\include\e32def.h:315: warning:   X:\epoc32\include\stdapis\dbus-1.0\dbus\dbus-glib.h:27
-epoc32\include\e32def.h:315: warning:   X:\sf\mw\opensrv\telepathygabble\src\gabble-connection.c:23)
-epoc32\include\stdapis\glib-2.0\glib\gmacros.h:163: warning:     (location of previous definition)
-epoc32\include\e32def.h:326: warning: macro 'FALSE' redefined
-epoc32\include\e32def.h:326: warning: (included from:
-epoc32\include\e32def.h:326: warning:   X:\epoc32\include\stdapis\pthread.h:40
-epoc32\include\e32def.h:326: warning:   X:\epoc32\include\stdapis\glib-2.0\glibconfig.h:46
-epoc32\include\e32def.h:326: warning:   X:\epoc32\include\stdapis\glib-2.0\glib\gtypes.h:30
-epoc32\include\e32def.h:326: warning:   X:\epoc32\include\stdapis\glib-2.0\glib\galloca.h:31
-epoc32\include\e32def.h:326: warning:   X:\epoc32\include\stdapis\glib-2.0\glib.h:43
-epoc32\include\e32def.h:326: warning:   X:\epoc32\include\stdapis\glib-2.0\gobject\gtype.h:28
-epoc32\include\e32def.h:326: warning:   X:\epoc32\include\stdapis\glib-2.0\gobject\gboxed.h:28
-epoc32\include\e32def.h:326: warning:   X:\epoc32\include\stdapis\glib-2.0\glib-object.h:25
-epoc32\include\e32def.h:326: warning:   X:\epoc32\include\stdapis\dbus-1.0\dbus\dbus-glib.h:27
-epoc32\include\e32def.h:326: warning:   X:\sf\mw\opensrv\telepathygabble\src\gabble-connection.c:23)
-epoc32\include\stdapis\glib-2.0\glib\gmacros.h:159: warning:     (location of previous definition)
-sf\mw\opensrv\telepathygabble\inc\gabble-connection-glue.h:85: warning: variable / argument 'invocation_hint' is not used in function
-sf\mw\opensrv\telepathygabble\inc\gabble-connection-glue.h:132: warning: variable / argument 'return_value' is not used in function
-sf\mw\opensrv\telepathygabble\inc\gabble-connection-glue.h:132: warning: variable / argument 'invocation_hint' is not used in function
-sf\mw\opensrv\telepathygabble\inc\gabble-connection-glue.h:182: warning: variable / argument 'invocation_hint' is not used in function
-sf\mw\opensrv\telepathygabble\inc\gabble-connection-glue.h:233: warning: variable / argument 'invocation_hint' is not used in function
-sf\mw\opensrv\telepathygabble\inc\gabble-connection-glue.h:280: warning: variable / argument 'invocation_hint' is not used in function
-sf\mw\opensrv\telepathygabble\inc\gabble-connection-glue.h:331: warning: variable / argument 'invocation_hint' is not used in function
-sf\mw\opensrv\telepathygabble\inc\gabble-connection-glue.h:380: warning: variable / argument 'invocation_hint' is not used in function
-sf\mw\opensrv\telepathygabble\inc\gabble-connection-glue.h:429: warning: variable / argument 'invocation_hint' is not used in function
-sf\mw\opensrv\telepathygabble\inc\gabble-connection-glue.h:476: warning: variable / argument 'return_value' is not used in function
-sf\mw\opensrv\telepathygabble\inc\gabble-connection-glue.h:476: warning: variable / argument 'invocation_hint' is not used in function
-sf\mw\opensrv\telepathygabble\inc\gabble-connection-glue.h:522: warning: variable / argument 'return_value' is not used in function
-sf\mw\opensrv\telepathygabble\inc\gabble-connection-glue.h:522: warning: variable / argument 'invocation_hint' is not used in function
-sf\mw\opensrv\telepathygabble\inc\gabble-connection-glue.h:566: warning: variable / argument 'invocation_hint' is not used in function
-sf\mw\opensrv\telepathygabble\inc\gabble-connection-glue.h:611: warning: variable / argument 'invocation_hint' is not used in function
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:197: warning: illegal empty declaration
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:197: warning: illegal empty declaration
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:430: warning: illegal implicit conversion from 'int' to
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:430: warning: '@enum$4028gabble_connection_c'
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:597: warning: illegal implicit conversion from 'int' to
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:597: warning: '@enum$4028gabble_connection_c'
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:630: warning: illegal implicit conversion from 'int' to
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:630: warning: '@enum$2379gabble_connection_c'
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:638: warning: illegal implicit conversion from 'int' to
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:638: warning: '@enum$2379gabble_connection_c'
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:646: warning: illegal implicit conversion from 'int' to
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:646: warning: '@enum$2379gabble_connection_c'
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:656: warning: illegal implicit conversion from 'int' to
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:656: warning: '@enum$2379gabble_connection_c'
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:663: warning: illegal implicit conversion from 'int' to
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:663: warning: '@enum$2379gabble_connection_c'
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:672: warning: illegal implicit conversion from 'int' to
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:672: warning: '@enum$2379gabble_connection_c'
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:681: warning: illegal implicit conversion from 'int' to
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:681: warning: '@enum$2379gabble_connection_c'
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:689: warning: illegal implicit conversion from 'int' to
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:689: warning: '@enum$2379gabble_connection_c'
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:697: warning: illegal implicit conversion from 'int' to
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:697: warning: '@enum$2379gabble_connection_c'
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:705: warning: illegal implicit conversion from 'int' to
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:705: warning: '@enum$2379gabble_connection_c'
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:713: warning: illegal implicit conversion from 'int' to
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:713: warning: '@enum$2379gabble_connection_c'
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:723: warning: illegal implicit conversion from 'int' to
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:723: warning: '@enum$2379gabble_connection_c'
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:731: warning: illegal implicit conversion from 'int' to
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:731: warning: '@enum$2379gabble_connection_c'
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:741: warning: illegal implicit conversion from 'int' to
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:741: warning: '@enum$2379gabble_connection_c'
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:751: warning: illegal implicit conversion from 'int' to
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:751: warning: '@enum$2379gabble_connection_c'
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:760: warning: illegal implicit conversion from 'int' to
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:760: warning: '@enum$2379gabble_connection_c'
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:769: warning: illegal implicit conversion from 'int' to
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:769: warning: '@enum$2379gabble_connection_c'
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:779: warning: illegal implicit conversion from 'int' to
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:779: warning: '@enum$2379gabble_connection_c'
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:789: warning: illegal implicit conversion from 'int' to
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:789: warning: '@enum$2379gabble_connection_c'
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:799: warning: illegal implicit conversion from 'int' to
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:799: warning: '@enum$2379gabble_connection_c'
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:809: warning: illegal implicit conversion from 'int' to
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:809: warning: '@enum$2379gabble_connection_c'
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:819: warning: illegal implicit conversion from 'int' to
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:819: warning: '@enum$2379gabble_connection_c'
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:829: warning: illegal implicit conversion from 'int' to
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:829: warning: '@enum$2379gabble_connection_c'
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:839: warning: illegal implicit conversion from 'int' to
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:839: warning: '@enum$2379gabble_connection_c'
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:848: warning: illegal implicit conversion from 'int' to
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:848: warning: '@enum$2379gabble_connection_c'
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:860: warning: illegal implicit conversion from 'int' to
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:860: warning: '@enum$2645gabble_connection_c'
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:869: warning: illegal implicit conversion from 'int' to
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:869: warning: '@enum$2645gabble_connection_c'
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:878: warning: illegal implicit conversion from 'int' to
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:878: warning: '@enum$2645gabble_connection_c'
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:887: warning: illegal implicit conversion from 'int' to
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:887: warning: '@enum$2645gabble_connection_c'
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:896: warning: illegal implicit conversion from 'int' to
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:896: warning: '@enum$2645gabble_connection_c'
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:905: warning: illegal implicit conversion from 'int' to
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:905: warning: '@enum$2645gabble_connection_c'
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:1273: warning: variable / argument 'handler' is not used in function
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:1273: warning: variable / argument 'connection' is not used in function
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:1304: warning: variable / argument 'where_the_object_was' is not used in function
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:1851: warning: variable / argument 'user_data' is not used in function
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:1904: warning: variable / argument 'factory' is not used in function
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:1956: warning: variable / argument 'factory' is not used in function
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:2003: warning: variable / argument 'cache' is not used in function
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:2500: warning: variable / argument 'handler' is not used in function
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:2500: warning: variable / argument 'connection' is not used in function
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:2584: warning: variable / argument 'handler' is not used in function
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:2617: warning: variable / argument 'handler' is not used in function
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:2653: warning: variable / argument 'lmssl' is not used in function
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:2919: warning: variable / argument 'disco' is not used in function
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:2919: warning: variable / argument 'request' is not used in function
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:2919: warning: variable / argument 'node' is not used in function
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:3059: warning: variable / argument 'status' is not used in function
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:3059: warning: variable / argument 'parms' is not used in function
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:3092: warning: illegal implicit conversion from 'int' to
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:3092: warning: '@enum$4893gabble_connection_c'
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:3137: warning: variable / argument 'cache' is not used in function
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:3170: warning: illegal implicit conversion from 'int' to
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:3170: warning: '@enum$4893gabble_connection_c'
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:3170: warning: illegal implicit conversion from 'int' to
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:3170: warning: '@enum$4893gabble_connection_c'
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:3320: warning: variable / argument 'error' is not used in function
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:3647: warning: variable / argument 'error' is not used in function
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:3766: warning: illegal implicit conversion from 'unsigned int' to
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:3766: warning: '@enum$4009gabble_connection_c'
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:3778: warning: illegal implicit conversion from 'unsigned int' to
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:3778: warning: '@enum$4009gabble_connection_c'
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:3819: warning: illegal implicit conversion from 'unsigned int' to
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:3819: warning: '@enum$4009gabble_connection_c'
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:3836: warning: illegal implicit conversion from 'unsigned int' to
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:3836: warning: '@enum$4009gabble_connection_c'
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:3992: warning: illegal implicit conversion from 'unsigned int' to
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:3992: warning: '@enum$4009gabble_connection_c'
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:4004: warning: illegal implicit conversion from 'unsigned int' to
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:4004: warning: '@enum$4009gabble_connection_c'
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:4123: warning: variable / argument 'manager' is not used in function
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:4123: warning: variable / argument 'handle' is not used in function
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:4123: warning: variable / argument 'vcard' is not used in function
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:4123: warning: variable / argument 'error' is not used in function
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:4373: warning: illegal implicit conversion from 'unsigned int' to
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:4373: warning: '@enum$4009gabble_connection_c'
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:4558: warning: variable / argument 'disco' is not used in function
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:4558: warning: variable / argument 'request' is not used in function
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:4558: warning: variable / argument 'jid' is not used in function
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:4558: warning: variable / argument 'node' is not used in function
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:4643: warning: variable / argument 'context' is not used in function
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:4703: warning: illegal implicit conversion from 'unsigned int' to
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:4703: warning: '@enum$4009gabble_connection_c'
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:4720: warning: illegal implicit conversion from 'unsigned int' to
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:4720: warning: '@enum$4009gabble_connection_c'
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:4963: warning: variable / argument 'time' is not used in function
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:5039: warning: illegal implicit conversion from 'int' to
-sf\mw\opensrv\telepathygabble\src\gabble-connection.c:5039: warning: '@enum$4229gabble_connection_c'
-+ E:/build_e/sbs_272/sbs/win32/cygwin/bin/sed.exe 's#\\\\\(.\)#/\1#g;s#/ #\\\ #g;s#\([A-Za-z]:\)\\\\#\1/#g;1,1s#.*: .* \(.\)\?$#    x:/epoc32/build/opensrv/c_672cbe451a1cdf8d/libgabble-convenience_dll/winscw/urel/gabble-connection.o: x:/sf/mw/opensrv/telepathygabble/src/gabble-connection.c \1#' x:/epoc32/build/opensrv/c_672cbe451a1cdf8d/libgabble-convenience_dll/winscw/urel/gabble-connection.dep
-]]><time start='1245768194.876303000' elapsed='1.140' />
-+ RV=0
-+ set +x
-<status exit='ok' attempt='1' />
-</recipe>
-</buildlog>
--- a/buildframework/helium/external/helium-antlib/metadata/tests/data/sample_abld.log	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,488 +0,0 @@
-
-x:\>set
-ALLUSERSPROFILE=C:\Documents and Settings\All Users
-ANT_ARGS=-lib "E:\BUILD_E\ido-config-cc-svn\helium-4.0.x_lat\helium\external\helium-antlib\bin" -lib "E:\BUILD_E\ido-config-cc-svn\helium-4.0.x_lat\helium\tools\common\java\lib" -lib "E:\BUILD_E\ido-config-cc-svn\helium-4.0.x_lat\helium\external\antlibs" -lib "E:\BUILD_E\ido-config-cc-svn\helium-4.0.x_lat\helium\external\antlibs\internal" -lib "E:\BUILD_E\ido-config-cc-svn\helium-4.0.x_lat\helium\external\jep_1.6_2.5" -logger com.nokia.ant.HeliumLogger   -listener com.nokia.helium.diamonds.ant.HeliumListener  -listener com.nokia.ant.listener.internaldata.Listener  -Dant.executor.class=com.nokia.helium.core.ant.HeliumExecutor  -listener com.nokia.ant.listener.TracingLogger
-ANT_CMD_LINE_ARGS=-Dhelium.dir "E:\BUILD_E\ido-config-cc-svn\helium-4.0.x_lat\helium" -listener nokia.ant.XmlLogger -DXmlLogger.file E:\BUILD_E\ido-config-cc-svn\cruisecontrol/../robot/log.xml -Dcclastbuildtimestamp 20090702114112 "-Dcvstimestamp=2009-07-02 12:11:44 GMT" -Dbuildforced false -Dcclastgoodbuildtimestamp 20090606000000 -Dcctimestamp 20090702131144 -Dlabel build.33 -Dprojectname ido_abs_tb92-nightly -Dlastbuildsuccessful false -Dbuild.system ec-helium -Dconfiguration.dir E:\BUILD_E\ido-config-cc-svn\cruisecontrol/../idos/abs/branches/tb92-nightly -Dbuild.drive x: -Ds60.grace.cache E:\BUILD_E\ido-config-cc-svn\build/ido_abs_tb92-nightly_grace_cache.txt -Dskip.codescanner true -Dcc.output.dir E:\BUILD_E\ido-config-cc-svn\build -buildfile E:\BUILD_E\ido-config-cc-svn\cruisecontrol/config/wrapper.xml test-publish-prop ido-build
-ANT_HOME=C:\APPS\ant_1.7
-ANT_OPTS=-Xmx896M -Dlog4j.configuration=com/nokia/log4j.xml
-APPDATA=C:\Documents and Settings\varamana\Application Data
-APTLMHOST=@oupelic4.emea.nsn-net.net
-ARMLMD_LICENSE_FILE=8224@falic01.europe.nokia.com;8224@salmg01.nmp.nokia.com;
-ARMROOT=\
-ARMV5VER=:ARM/Thumb C/C++ Compiler, RVCT2.2 [Build 593]
-CCDIR=E:\BUILD_E\ido-config-cc-svn\helium-4.0.x_lat\helium\external\CruiseControl\
-CC_BAT=E:\BUILD_E\ido-config-cc-svn\helium-4.0.x_lat\helium\external\CruiseControl\real_cruisecontrol.bat
-CC_OPTS= -Ddashboard.config=E:\BUILD_E\ido-config-cc-svn\build\helium-dashboard-config.xml -Xms512m -Xmx1024m
-CLASSPATH=e:\BUILD_E\ido-config-cc-svn\helium-4.0.x_lat\helium\external\CruiseControl\lib;%CLASSPATH%
-CLIENTNAME=4GBD01728
-ClusterLog=C:\EESP\Cluster\cluster.log
-CMTHOME=C:\APPS\cmt
-CommonProgramFiles=C:\Program Files\Common Files
-COMPUTERNAME=FASYM011
-ComSpec=C:\EESP\system32\cmd.exe
-COPYCMD=/y
-CRUISE_PATH=C:\Apps\j2sdk_1.6.0_02\lib\tools.jar
-CTCHOME=C:\APPS\ctc
-DERBY_HOME=C:\APPS\j2sdk_1.6.0_02\JavaDB
-DIAMONDS_ANT_ARGS= -listener com.nokia.helium.diamonds.ant.HeliumListener
-EMAKEFLAGS=--no-print-directory --emake-volatile=.def,.info,.class,.mmp --emake-reg-roots=-\HKEY_CLASSES_ROOT
-EMAKE_CM=fawec001
-EMAKE_EMULATION=symbian
-EMAKE_ROOT=\;c:\apps
-EPOCROOT=\
-EXEC="C:\Apps\j2sdk_1.6.0_02\bin\java"  -Ddashboard.config=E:\BUILD_E\ido-config-cc-svn\build\helium-dashboard-config.xml -Xms512m -Xmx1024m -Djmx.remote.x.server.connection.timeout=-1 -Djmx.remote.x.client.connection.check.period=0 -jar "E:\BUILD_E\ido-config-cc-svn\helium-4.0.x_lat\helium\external\CruiseControl\lib\cruisecontrol-launcher.jar" -webapppath E:\BUILD_E\ido-config-cc-svn\helium-4.0.x_lat\helium\external\CruiseControl/webapps/cruisecontrol -dashboard E:\BUILD_E\ido-config-cc-svn\helium-4.0.x_lat\helium\external\CruiseControl/webapps/dashboard -webport 8080 -rmiport 1099
-FILTERWHAT_FILE=\output\logs\about_what.log
-FLEXLM_BATCH=1
-FLEXLM_TIMEOUT=900000
-FP_NO_HOST_CHECK=NO
-HELIUM_CACHE_DIR=C:\DOCUME~1\varamana\LOCALS~1\Temp\2\helium\varamana
-HELIUM_HOME=E:\BUILD_E\ido-config-cc-svn\helium-4.0.x_lat\helium
-HLM_ENABLE_MEM_TRACING=1
-HLM_MEM_TRACING_ANT_ARGS= -listener com.nokia.ant.listener.TracingLogger
-HOME=h:\
-HOMEDRIVE=C:
-HOMEPATH=\Documents and Settings\varamana
-include=C:\apps\msvc6\VC98\ATL\INCLUDE;C:\apps\msvc6\VC98\INCLUDE;C:\apps\msvc6\VC98\MFC\INCLUDE;C:\apps\msvc6\VC98\atl\include;C:\apps\msvc6\VC98\mfc\include;C:\apps\msvc6\VC98\include
-INTERNAL_DATA_ANT_ARGS= -listener com.nokia.ant.listener.internaldata.Listener
-JAVA_1_3_1_HOME=C:\APPS\j2sdk_1.3.1_06
-JAVA_HOME=C:\Apps\j2sdk_1.6.0_02
-JAVA_PATH="C:\Apps\j2sdk_1.6.0_02\bin\java"
-JEP_HOME=E:\BUILD_E\ido-config-cc-svn\helium-4.0.x_lat\helium\external\jep_1.6_2.5
-LAUNCHER=E:\BUILD_E\ido-config-cc-svn\helium-4.0.x_lat\helium\external\CruiseControl\lib\cruisecontrol-launcher.jar
-lib=C:\apps\msvc6\VC98\LIB;C:\apps\msvc6\VC98\MFC\LIB;C:\apps\msvc6\VC98\mfc\lib;C:\apps\msvc6\VC98\lib
-LIBDIR=E:\BUILD_E\ido-config-cc-svn\helium-4.0.x_lat\helium\external\CruiseControl\lib
-LM_LICENSE_FILE=C:\APPS\licenses\emea.dat;1700@saslmg02.nmp.nokia.com;C:\APPS\licenses\PCLint.dat;6969@saslmg04.nmp.nokia.com;
-LOGONSERVER=\\CAWDC101
-MSDevDir=C:\apps\msvc6\Common\msdev98
-MSVCDir=C:\apps\msvc6\VC98
-MSVC_ENV_BAT=c:\APPS\msvc6\VC98\Bin\VCVARS32.BAT
-MWCSym2Includes=C:\APPS\carbide\x86Build\Symbian_Support\MSL\MSL_C\MSL_Common\Include;C:\APPS\carbide\x86Build\Symbian_Support\MSL\MSL_C\MSL_Win32\Include;C:\APPS\carbide\x86Build\Symbian_Support\MSL\MSL_C\MSL_X86;C:\APPS\carbide\x86Build\Symbian_Support\MSL\MSL_C++\MSL_Common\Include;C:\APPS\carbide\x86Build\Symbian_Support\MSL\MSL_Extras\MSL_Common\Include;C:\APPS\carbide\x86Build\Symbian_Support\MSL\MSL_Extras\MSL_Win32\Include;C:\APPS\carbide\x86Build\Symbian_Support\Win32-x86 Support\Headers\Win32 SDK
-MWSym2Libraries=C:\APPS\carbide\x86Build\Symbian_Support\Win32-x86 Support\Libraries\Win32 SDK;C:\APPS\carbide\x86Build\Symbian_Support\Runtime\Runtime_x86\Runtime_Win32\Libs
-MWSym2LibraryFiles=MSL_All_MSE_Symbian_D.lib;gdi32.lib;user32.lib;kernel32.lib;
-NOKIA_LICENSE_FILE=C:\APPS\licenses\emea.dat;
-NUMBER_OF_PROCESSORS=4
-OS=Windows_NT
-Path=C:\apps\msvc6\Common\msdev98\BIN;C:\apps\msvc6\VC98\BIN;C:\apps\msvc6\Common\TOOLS\WINNT;C:\apps\msvc6\Common\TOOLS;e:\BUILD_E\ido-config-cc-svn\sbs\bin;e:\BUILD_E\slick-svn\bin;c:\ECloud\i686_win32\bin;C:\Program Files\HP\NCU;c:\apps\actperl\bin\;c:\apps\rvct22_593\bin;c:\apps\atool;\epoc32\tools;\epoc32\gcc\bin;c:\apps\ue;c:\apps\ccm65\bin;c:\apps\carbide\x86build\symbian_tools\command_line_tools;c:\apps\symdec;c:\apps\actpython\.;C:\Symbian\SITK\stat\bin;C:\Symbian\SITK;C:\Symbian\SITK\edgd\bin\;C:\Symbian\SITK\cbr;C:\Symbian\SITK\ucc\bin;C:\Symbian\SITK\ucc\SyncService\bin;C:\Symbian\SITK\ucc\TestDriverService\bin;C:\Symbian\SITK\sqlite-db-creator;C:\Symbian\SITK\testdriver\product;C:\Symbian\SITK\imgcheck;C:\Symbian\SITK\SystemModelGenerator;C:\Symbian\SITK/sbs/bin;;c:\program files\hp\ncu;c:\program files\windows resource kits\tools\;c:\eesp\system32;c:\eesp\system32\wbem;c:\apps\msvc6\common\tools\winnt;c:\apps\msvc6\common\msdev98\bin;c:\apps\msvc6\vc98\bin;c:\progra~1\winzip;c:\apps\wget;c:\apps\ant_1.7\bin;c:\apps\understand\bin\pc-win95;c:\etpwin\system32;c:\etpwin\system32\wbem;c:\apps\sbs\bin;c:\apps\pclint;c:\apps\cltools;c:\apps\codescanner;c:\apps\symrec;c:\apps\gracecli\bin;c:\apps\7zip;c:\apps\ctc;c:\apps\unzip;c:\apps\bc;c:\apps\cmt\;c:\apps\j2sdk_1.6.0_02;E:\BUILD_E\ido-config-cc-svn\helium-4.0.x_lat\helium\external\jep_1.6_2.5;\epoc32\tools;\epoc32\gcc\bin;\epoc32\tools\build;\epoc32\rombuild;E:\BUILD_E\ido-config-cc-svn\helium-4.0.x_lat\helium\tools\common\bin;E:\BUILD_E\ido-config-cc-svn\helium-4.0.x_lat\helium\external\unxutils;E:\BUILD_E\ido-config-cc-svn\helium-4.0.x_lat\helium\external\filedisk;E:\BUILD_E\ido-config-cc-svn\helium-4.0.x_lat\helium\external\info-zip;E:\BUILD_E\ido-config-cc-svn\helium-4.0.x_lat\helium\external\Subversion\bin;E:\BUILD_E\ido-config-cc-svn\helium-4.0.x_lat\helium\external\graphviz\bin;E:\BUILD_E\ido-config-cc-svn\helium-4.0.x_lat\helium\external\LSC_5.2;\tools;\tools\ncp_tools;C:\APPS\ctc;C:\EESP\system32;C:\EESP;C:\EESP\System32\Wbem\;C:\EESP\system32;C:\EESP;C:\EESP\System32\Wbem;C:\ETPWIN\system32;C:\ETPWIN;C:\ETPWIN\System32\Wbem
-PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.py;.pyw
-PERL=C:\APPS\actperl\bin\perl.exe
-PERL5LIB=E:\BUILD_E\ido-config-cc-svn\helium-4.0.x_lat\helium\tools\common\packages
-PID=8296
-ppd_tools=\tools\
-PROCESSOR_ARCHITECTURE=x86
-PROCESSOR_IDENTIFIER=x86 Family 15 Model 5 Stepping 10, AuthenticAMD
-PROCESSOR_LEVEL=15
-PROCESSOR_REVISION=050a
-ProgramFiles=C:\Program Files
-PROMPT=$P$G
-PYTHONPATH=E:\BUILD_E\ido-config-cc-svn\helium-4.0.x_lat\helium\external\python\lib\2.5;E:\BUILD_E\ido-config-cc-svn\helium-4.0.x_lat\helium\tools\common\python\lib;e:\BUILD_E\ido-config-cc-svn\sbs\python
-RVCT22BIN=C:\APPS\rvct22_593\bin
-RVCT22INC=C:\APPS\rvct22_593\include
-RVCT22LIB=C:\APPS\rvct22_593\lib
-RVCT22_ASMOPT=--licretry --fastlicense --sitelicense
-RVCT22_CCOPT=--licretry --fastlicense --sitelicense
-RVCT22_LINKOPT=--licretry --fastlicense --sitelicense
-SBS_HOME=e:\BUILD_E\ido-config-cc-svn\sbs
-SESSIONNAME=RDP-Tcp#22
-SIGNALING_ANT_ARGS= -Dant.executor.class=com.nokia.helium.core.ant.HeliumExecutor
-SITK_PATHS=C:\Symbian\SITK\stat\bin;C:\Symbian\SITK;C:\Symbian\SITK\edgd\bin\;C:\Symbian\SITK\cbr;C:\Symbian\SITK\ucc\bin;C:\Symbian\SITK\ucc\SyncService\bin;C:\Symbian\SITK\ucc\TestDriverService\bin;C:\Symbian\SITK\sqlite-db-creator;C:\Symbian\SITK\testdriver\product;C:\Symbian\SITK\imgcheck;C:\Symbian\SITK\SystemModelGenerator;C:\Symbian\SITK/sbs/bin;
-spp_tools=\tools\
-SYMBIANBUILD_DEPENDENCYOFF=1
-SYMSEE_VERSION=9.1.0
-SystemDrive=C:
-SystemRoot=C:\EESP
-TEAM=xxxxxx
-TEMP=C:\DOCUME~1\varamana\LOCALS~1\Temp\2
-TESTED_ANT=C:\APPS\ant_1.7
-TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
-TMP=C:\DOCUME~1\varamana\LOCALS~1\Temp\2
-USERDNSDOMAIN=noe.nokia.com
-USERDOMAIN=NOE
-USERNAME=varamana
-USERPROFILE=C:\Documents and Settings\varamana
-windir=C:\EESP
-_JAVACMD=C:\Apps\j2sdk_1.6.0_02\bin\java.exe
-_USE_CLASSPATH=yes
-
-x:\>emake --emake-build-label=ido_abs_tb92-nightly_5.2.33.dfs_build --emake-class=default --emake-priority=normal --emake-maxagents=0 --emake-job-limit=0 --emake-mem-limit=1000000000 --emake-history=merge --emake-annodetail=basic,history,file,waiting --emake-annofile=x:\output\logs\ido_abs_tb92-nightly_5.2.33.dfs_build.emake.anno.xml --emake-historyfile=x:/emake.data --emake-debug=g --emake-logfile=x:\output\logs\ido_abs_tb92-nightly_5.2.33.dfs_build.emake.g.dlog --emake-root=\;c:\apps;E:\BUILD_E\ido-config-cc-svn\helium-4.0.x_lat\helium --emake-autodepend=1 -k -i -f x:/dfs_build.make LOGBUILDTIME="" VERBOSE="" SAVESPACE="" dfs_build 
-WARNING EC1137: Unrecognized option '--no-print-directory' in EMAKEFLAGS.
-Starting build: 50896
-WARNING EC1137: Unrecognized option '--no-print-directory' in EMAKEFLAGS.
-===-------------------------------------------------
-=== dfs_build
-===-------------------------------------------------
-=== dfs_build started Thu Jul  2 13:13:58 2009
-emake -f dfs_build.make dfs_build-bldmake_bldfiles
-make[1]: Entering directory `x:/'
-=== dfs_build == \sf/os/graphics/group
--- bldmake bldfiles 
-++ Started at Thu Jul  2 13:13:58 2009
-+++ HiRes Start 1246536838.91662
-cd \sf/os/graphics/group && bldmake bldfiles   -keepgoing   
-+++ HiRes End 1246536840.97909
-++ Finished at Thu Jul  2 13:14:01 2009
-=== dfs_build == \sf/os/textandloc/group
--- bldmake bldfiles 
-++ Started at Thu Jul  2 13:13:58 2009
-+++ HiRes Start 1246536839.05724
-cd \sf/os/textandloc/group && bldmake bldfiles   -keepgoing   
-WARNING: Should install MSVC6 Service Pack 3
-WARNING: Should install MSVC6 Service Pack 3
-WARNING: Should install MSVC6 Service Pack 3
-WARNING: Should install MSVC6 Service Pack 3
-WARNING: Should install MSVC6 Service Pack 3
-WARNING: Should install MSVC6 Service Pack 3
-WARNING: Should install MSVC6 Service Pack 3
-WARNING: Should install MSVC6 Service Pack 3
-WARNING: Should install MSVC6 Service Pack 3
-WARNING: Should install MSVC6 Service Pack 3
-WARNING: Should install MSVC6 Service Pack 3
-WARNING: Should install MSVC6 Service Pack 3
-WARNING: Should install MSVC6 Service Pack 3
-WARNING: Should install MSVC6 Service Pack 3
-WARNING: Should install MSVC6 Service Pack 3
-WARNING: Should install MSVC6 Service Pack 3
-WARNING: Should install MSVC6 Service Pack 3
-WARNING: Should install MSVC6 Service Pack 3
-+++ HiRes End 1246536842.55719
-++ Finished at Thu Jul  2 13:14:02 2009
-make[1]: Leaving directory `x:/'
-emake -f dfs_build.make dfs_build-abld_export
-make[1]: Entering directory `x:/'
-=== dfs_build == \sf/os/graphics/group
--- abld export 
-++ Started at Thu Jul  2 13:14:02 2009
-+++ HiRes Start 1246536843.01031
-cd \sf/os/graphics/group && abld export   -keepgoing   
-  emake -r  -k -f "\EPOC32\BUILD\sf\os\graphics\group\EXPORT.make" EXPORT VERBOSE=-s KEEPGOING=-k
-make[2]: Entering directory `X:/sf/os/graphics/group'
-copy "\sf\os\graphics\graphics_plat\openvg_binding_api\inc\vg\vgcontext.h" "\epoc32\include\platform\vg\vgcontext.h"
-        1 file(s) copied.
-copy "\sf\os\graphics\graphics_plat\openvg_binding_api\inc\vg\vgcontext_symbian.h" "\epoc32\include\platform\vg\vgcontext_symbian.h"
-        1 file(s) copied.
-copy "\sf\os\graphics\graphics_plat\m3g_core_api\inc\M3G\m3g_core.h" "\epoc32\include\platform\M3G\m3g_core.h"
-        1 file(s) copied.
-copy "\sf\os\graphics\graphicsaccelaration\3d_opengl_es_1_1\group\opengles_nokia.iby" "\epoc32\rom\include\opengles_nokia.iby"
-        1 file(s) copied.
-copy "\sf\os\graphics\graphicsaccelaration\2d_openvg_1_1\rom\openvg_nokia.iby" "\epoc32\rom\include\core\os\openvg_nokia.iby"
-        1 file(s) copied.
-copy "\sf\os\graphics\graphicsaccelaration\egl\group\egl_sw_gce.iby" "\epoc32\rom\include\egl_sw_gce.iby"
-        1 file(s) copied.
-copy "\sf\os\graphics\graphicsaccelaration\egl\group\egl_sw_nongce.iby" "\epoc32\rom\include\egl_sw_nongce.iby"
-        1 file(s) copied.
-copy "\sf\os\graphics\graphicsaccelaration\egl\implementation\products\egl\3.0\include\eglInternalApi.h" "\epoc32\include\platform\eglInternalApi.h"
-        1 file(s) copied.
-copy "\sf\os\graphics\graphicsaccelaration\egl\implementation\products\egl\3.0\include\oglcontextapi.h" "\epoc32\include\platform\oglContextApi.h"
-        1 file(s) copied.
-copy "\sf\os\graphics\graphicsaccelaration\egl\implementation\products\egl\3.0\include\ovgContextApi.h" "\epoc32\include\platform\ovgContextApi.h"
-        1 file(s) copied.
-copy "\sf\os\graphics\graphicsaccelaration\egl\implementation\products\egl\3.0\include\EGL\eglWrapper.h" "\epoc32\include\platform\EGL\eglWrapper.h"
-        1 file(s) copied.
-copy "\sf\os\graphics\graphicsaccelaration\egl\implementation\products\egl\3.0\src\symbian\eglsymbianpaniccodes.h" "\epoc32\include\platform\eglsymbianpaniccodes.h"
-        1 file(s) copied.
-copy "\sf\os\graphics\graphicsaccelaration\egl\implementation\libs\hg\3.1\hgDefs.h" "\epoc32\include\platform\hgDefs.h"
-        1 file(s) copied.
-copy "\sf\os\graphics\graphicsaccelaration\egl\implementation\libs\hg\3.1\hgPublicDefs.h" "\epoc32\include\platform\hgPublicDefs.h"
-        1 file(s) copied.
-copy "\sf\os\graphics\graphicsaccelaration\vgi\rom\libvgi.iby" "\epoc32\rom\include\core\os\libvgi.iby"
-        1 file(s) copied.
-copy "\sf\os\graphics\m3g\m3gcore11\rom\m3gcore.iby" "\epoc32\rom\include\core\os\m3gcore.iby"
-        1 file(s) copied.
-make[2]: Leaving directory `X:/sf/os/graphics/group'
-+++ HiRes End 1246536843.8853
-++ Finished at Thu Jul  2 13:14:03 2009
-=== dfs_build == \sf/os/textandloc/group
--- abld export 
-++ Started at Thu Jul  2 13:14:02 2009
-+++ HiRes Start 1246536843.04156
-cd \sf/os/textandloc/group && abld export   -keepgoing   
-  emake -r  -k -f "\EPOC32\BUILD\sf\os\textandloc\group\EXPORT.make" EXPORT VERBOSE=-s KEEPGOING=-k
-make[2]: Entering directory `X:/sf/os/textandloc/group'
-Creating \sf\os\textandloc\inc
-copy "\sf\os\textandloc\textandloc_plat\findutil_api\inc\FindUtil.h" "\epoc32\include\platform\FindUtil.h"
-        1 file(s) copied.
-copy "\sf\os\textandloc\textandloc_plat\japanese_language_utilities_api\inc\jplangutil.h" "\epoc32\include\platform\mw\jplangutil.h"
-        1 file(s) copied.
-copy "\sf\os\textandloc\textandloc_plat\character_conversion_nonpublic_api\inc\JapaneseCharConv.h" "\epoc32\include\platform\JapaneseCharConv.h"
-        1 file(s) copied.
-copy "\sf\os\textandloc\textandloc_plat\sortutil_api\inc\SortUtil.h" "\epoc32\include\platform\SortUtil.h"
-        1 file(s) copied.
-copy "\sf\os\textandloc\textandloc_pub\character_conversion_api\inc\GBK.H" "\epoc32\include\GBK.H"
-        1 file(s) copied.
-copy "\sf\os\textandloc\textandloc_pub\character_conversion_api\inc\JISX0208.H" "\epoc32\include\JISX0208.H"
-        1 file(s) copied.
-copy "\sf\os\textandloc\textandloc_pub\character_conversion_api\inc\GB2312.H" "\epoc32\include\GB2312.H"
-        1 file(s) copied.
-copy "\sf\os\textandloc\textandloc_pub\character_conversion_api\inc\CharacterSetConverter.h" "\epoc32\include\CharacterSetConverter.h"
-        1 file(s) copied.
-copy "\sf\os\textandloc\textandloc_pub\character_conversion_api\inc\CONVDATA.H" "\epoc32\include\CONVDATA.H"
-        1 file(s) copied.
-copy "\sf\os\textandloc\textandloc_pub\character_conversion_api\inc\JISX0201.H" "\epoc32\include\JISX0201.H"
-        1 file(s) copied.
-copy "\sf\os\textandloc\textandloc_pub\character_conversion_api\inc\UTF.H" "\epoc32\include\UTF.H"
-        1 file(s) copied.
-copy "\sf\os\textandloc\textandloc_pub\character_conversion_api\inc\JISX0212.H" "\epoc32\include\JISX0212.H"
-        1 file(s) copied.
-copy "\sf\os\textandloc\textandloc_pub\character_conversion_api\inc\CharacterSetConverter.inl" "\epoc32\include\CharacterSetConverter.inl"
-        1 file(s) copied.
-copy "\sf\os\textandloc\textandloc_pub\character_conversion_api\inc\BIG5.H" "\epoc32\include\BIG5.H"
-        1 file(s) copied.
-copy "\sf\os\textandloc\textandloc_pub\character_conversion_api\inc\CONVNAMES.H" "\epoc32\include\CONVNAMES.H"
-        1 file(s) copied.
-copy "\sf\os\textandloc\textandloc_pub\character_conversion_api\inc\CHARCONV.H" "\epoc32\include\CHARCONV.H"
-        1 file(s) copied.
-copy "\sf\os\textandloc\textandloc_pub\character_conversion_api\inc\SHIFTJIS.H" "\epoc32\include\SHIFTJIS.H"
-        1 file(s) copied.
-copy "\sf\os\textandloc\textandloc_pub\character_conversion_plugin_provider_api\inc\CONVUTILS.H" "\epoc32\include\CONVUTILS.H"
-        1 file(s) copied.
-copy "\sf\os\textandloc\textandloc_pub\character_conversion_plugin_provider_api\inc\CONVGENERATEDCPP.H" "\epoc32\include\CONVGENERATEDCPP.H"
-        1 file(s) copied.
-copy "\sf\os\textandloc\textandloc_pub\directory_localizer_api\inc\DirectoryLocalizer.rh" "\epoc32\include\mw\DirectoryLocalizer.rh"
-        1 file(s) copied.
-copy "\sf\os\textandloc\textandloc_pub\directory_localizer_api\inc\CDirectoryLocalizer.h" "\epoc32\include\mw\CDirectoryLocalizer.h"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\localizer\rom\DirectoryLocalizer.iby" "\epoc32\rom\include\core\mw\directorylocalizer.iby"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\localizer\rom\DirectoryLocalizerResources.iby" "\epoc32\rom\include\language\mw\directorylocalizerresources.iby"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\localizer\loc\DirectoryLocalizer.loc" "\epoc32\include\platform\mw\loc\sc\directorylocalizer.loc"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\Win1250.snm" "\epoc32\release\winscw\udeb\z\Resource\charconv\Win1250.snm"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\Win1251.snm" "\epoc32\release\winscw\udeb\z\Resource\charconv\Win1251.snm"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\Win1252.snm" "\epoc32\release\winscw\udeb\z\Resource\charconv\Win1252.snm"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\Win1253.snm" "\epoc32\release\winscw\udeb\z\Resource\charconv\Win1253.snm"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\Win1254.snm" "\epoc32\release\winscw\udeb\z\Resource\charconv\Win1254.snm"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\Win1255.snm" "\epoc32\release\winscw\udeb\z\Resource\charconv\Win1255.snm"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\Win1256.snm" "\epoc32\release\winscw\udeb\z\Resource\charconv\Win1256.snm"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\Win1257.snm" "\epoc32\release\winscw\udeb\z\Resource\charconv\Win1257.snm"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\Win874.snm" "\epoc32\release\winscw\udeb\z\Resource\charconv\Win874.snm"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\TIS_620.snm" "\epoc32\release\winscw\udeb\z\Resource\charconv\TIS_620.snm"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\KOI8U.snm" "\epoc32\release\winscw\udeb\z\Resource\charconv\KOI8U.snm"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\KOI8R.snm" "\epoc32\release\winscw\udeb\z\Resource\charconv\KOI8R.snm"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\Win1258.snm" "\epoc32\release\winscw\udeb\z\Resource\charconv\Win1258.snm"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\iscii.snm" "\epoc32\release\winscw\udeb\z\Resource\charconv\iscii.snm"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\EUCKR.snm" "\epoc32\release\winscw\udeb\z\Resource\charconv\EUCKR.snm"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\iso2022kr.snm" "\epoc32\release\winscw\udeb\z\Resource\charconv\iso2022kr.snm"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\ksc5601.snm" "\epoc32\release\winscw\udeb\z\Resource\charconv\ksc5601.snm"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\Win1250.snm" "\epoc32\data\z\Resource\charconv\Win1250.snm"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\Win1251.snm" "\epoc32\data\z\Resource\charconv\Win1251.snm"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\Win1252.snm" "\epoc32\data\z\Resource\charconv\Win1252.snm"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\Win1253.snm" "\epoc32\data\z\Resource\charconv\Win1253.snm"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\Win1254.snm" "\epoc32\data\z\Resource\charconv\Win1254.snm"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\Win1255.snm" "\epoc32\data\z\Resource\charconv\Win1255.snm"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\Win1256.snm" "\epoc32\data\z\Resource\charconv\Win1256.snm"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\Win1257.snm" "\epoc32\data\z\Resource\charconv\Win1257.snm"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\Win874.snm" "\epoc32\data\z\Resource\charconv\Win874.snm"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\TIS_620.snm" "\epoc32\data\z\Resource\charconv\TIS_620.snm"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\KOI8U.snm" "\epoc32\data\z\Resource\charconv\KOI8U.snm"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\KOI8R.snm" "\epoc32\data\z\Resource\charconv\KOI8R.snm"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\Win1258.snm" "\epoc32\data\z\Resource\charconv\Win1258.snm"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\iscii.snm" "\epoc32\data\z\Resource\charconv\iscii.snm"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\EUCKR.snm" "\epoc32\data\z\Resource\charconv\EUCKR.snm"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\iso2022kr.snm" "\epoc32\data\z\Resource\charconv\iso2022kr.snm"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconvplugin\Data\ksc5601.snm" "\epoc32\data\z\Resource\charconv\ksc5601.snm"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconvplugin\rom\CharConvPlugin.iby" "\epoc32\rom\include\core\mw\charconvplugin.iby"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconvplugin\rom\CharConvPluginPictograph.IBY" "\epoc32\rom\include\core\mw\charconvpluginpictograph.iby"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconvplugin\rom\CharConvPluginPictograph_Variant.iby" "\epoc32\rom\include\customer\mw\charconvpluginpictograph_Variant.iby"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconvplugin\rom\CharConvPlugin_Variant.IBY" "\epoc32\rom\include\customer\mw\charconvplugin_Variant.iby"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\findutil\rom\Findutil.iby" "\epoc32\rom\include\core\mw\findutil.iby"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\findutil\rom\Findutil_Variant.iby" "\epoc32\rom\include\customer\mw\findutil_Variant.iby"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\numbergrouping\rom\NumberGrouping.iby" "\epoc32\rom\include\core\mw\numbergrouping.iby"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\numbergrouping\conf\numbergrouping.confml" "\epoc32\rom\config\confml_data\s60\numbergrouping.confml"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\numbergrouping\conf\numbergrouping_101F8775.crml" "\epoc32\rom\config\confml_data\s60\numbergrouping_101F8775.crml"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\gamerecognizer\rom\GameRecognizer.iby" "\epoc32\rom\include\core\mw\gamerecognizer.iby"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\jplangutil\rom\JPLangUtil.iby" "\epoc32\rom\include\core\mw\jplangutil.iby"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\sortutil\rom\Sortutil.iby" "\epoc32\rom\include\core\mw\sortutil.iby"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\sortutil\rom\SortUtil_Variant.iby" "\epoc32\rom\include\customer\mw\sortutil_Variant.iby"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\aknjapanesereading\rom\AknJapaneseReading.iby" "\epoc32\rom\include\core\mw\aknjapanesereading.iby"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\group\CNVTOOL.BAT" "\epoc32\tools\CNVTOOL.BAT"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\group\SNMTOOL.BAT" "\epoc32\tools\SNMTOOL.BAT"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\group\CHARCONV.BAT" "\epoc32\tools\CHARCONV.BAT"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\group\CHARCONV.PL" "\epoc32\tools\CHARCONV.PL"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\group\CNVTOOL.PL" "\epoc32\tools\CNVTOOL.PL"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\group\SNMTOOL.PL" "\epoc32\tools\SNMTOOL.PL"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\group\PARSER.PM" "\epoc32\tools\PARSER.PM"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\group\WRITER.PM" "\epoc32\tools\WRITER.PM"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\group\UTF.PM" "\epoc32\tools\UTF.PM"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\group\CHARCONV_EXE.IPR" "\epoc32\engdoc\tools\CHARCONV_EXE.IPR"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\group\CHARCONV_PERLTOOLS.IPR" "\epoc32\engdoc\tools\CHARCONV_PERLTOOLS.IPR"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\group\CNVAPI.RTF" "\epoc32\engdoc\charconv\CNVAPI.RTF"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\group\CNVTOOL.RTF" "\epoc32\engdoc\charconv\CNVTOOL.RTF"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\group\SNMTOOL.RTF" "\epoc32\engdoc\charconv\SNMTOOL.RTF"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\group\AUTODETECT.RTF" "\epoc32\engdoc\charconv\AUTODETECT.RTF"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\data\generateddat\big5.dat" "\epoc32\tools\charconv\big5.dat"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\data\generateddat\cp1252.dat" "\epoc32\tools\charconv\cp1252.dat"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\data\generateddat\gb12345.dat" "\epoc32\tools\charconv\gb12345.dat"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\data\generateddat\gb2312.dat" "\epoc32\tools\charconv\gb2312.dat"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\data\generateddat\gbk.dat" "\epoc32\tools\charconv\gbk.dat"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\data\generateddat\iso88591.dat" "\epoc32\tools\charconv\iso88591.dat"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\data\generateddat\iso885910.dat" "\epoc32\tools\charconv\iso885910.dat"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\data\generateddat\iso885913.dat" "\epoc32\tools\charconv\iso885913.dat"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\data\generateddat\iso885914.dat" "\epoc32\tools\charconv\iso885914.dat"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\data\generateddat\iso885915.dat" "\epoc32\tools\charconv\iso885915.dat"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\data\generateddat\iso88592.dat" "\epoc32\tools\charconv\iso88592.dat"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\data\generateddat\iso88593.dat" "\epoc32\tools\charconv\iso88593.dat"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\data\generateddat\iso88594.dat" "\epoc32\tools\charconv\iso88594.dat"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\data\generateddat\iso88595.dat" "\epoc32\tools\charconv\iso88595.dat"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\data\generateddat\iso88596.dat" "\epoc32\tools\charconv\iso88596.dat"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\data\generateddat\iso88597.dat" "\epoc32\tools\charconv\iso88597.dat"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\data\generateddat\iso88598.dat" "\epoc32\tools\charconv\iso88598.dat"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\data\generateddat\iso88599.dat" "\epoc32\tools\charconv\iso88599.dat"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\data\generateddat\shiftjis.dat" "\epoc32\tools\charconv\shiftjis.dat"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\data\generateddat\shiftjisdirectmap.dat" "\epoc32\tools\charconv\shiftjisdirectmap.dat"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\data\generateddat\gsm7_turkish_single.dat" "\epoc32\tools\charconv\gsm7_turkish_single.dat"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\data\generateddat\turkish_locking_gsm7ext.dat" "\epoc32\tools\charconv\turkish_locking_gsm7ext.dat"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\data\generateddat\turkish_locking_single.dat" "\epoc32\tools\charconv\turkish_locking_single.dat"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\include\PictographObserver.h" "\sf\os\textandloc\inc\PictographObserver.h"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\include\CnvPictographShared.h" "\sf\os\textandloc\inc\CnvPictographShared.h"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\include\CnvShiftJisDirectmap.h" "\sf\os\textandloc\inc\CnvShiftJisDirectmap.h"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\data\snm\basic.snm" "\epoc32\release\winscw\udeb\z\Resource\charconv\basic.snm"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\data\snm\basic.snm" "\epoc32\data\z\Resource\charconv\basic.snm"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\rom\CHARCONV.IBY" "\epoc32\rom\include\core\mw\charconv.iby"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\rom\CHARCONV_CHINESE_SIMPLFIED.IBY" "\epoc32\rom\include\customer\mw\charconv_chinese_simplfied.iby"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\rom\CHARCONV_CHINESE_TRADITIONAL.IBY" "\epoc32\rom\include\customer\mw\charconv_chinese_traditional.iby"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\rom\CHARCONV_CODEPAGE.iby" "\epoc32\rom\include\core\mw\charconv_codepage.iby"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\rom\CHARCONV_ISO8859X.IBY" "\epoc32\rom\include\core\mw\charconv_iso8859x.iby"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\rom\CHARCONV_JAPANESE.IBY" "\epoc32\rom\include\customer\mw\charconv_japanese.iby"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\rom\Charconv_Pictographs_Variant.Iby" "\epoc32\rom\include\customer\mw\charconv_pictographs_variant.iby"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\rom\charconv_gsm7_turkish_Variant.iby" "\epoc32\rom\include\customer\mw\charconv_gsm7_turkish_Variant.iby"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\rom\charconv_gsm7_turkish_Variant.iby" "\epoc32\rom\include\charconv_gsm7_turkish_Variant.iby"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\rom\CHARCONV.IBY" "\epoc32\rom\include\charconv.iby"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\rom\CharConv_All_Plugins.iby" "\epoc32\rom\include\charconv_all_plugins.iby"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\rom\CHARCONV_CHINESE_SIMPLFIED.IBY" "\epoc32\rom\include\charconv_chinese_simplfied.iby"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\rom\CHARCONV_CHINESE_TRADITIONAL.IBY" "\epoc32\rom\include\charconv_chinese_traditional.iby"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\rom\CHARCONV_JAPANESE.IBY" "\epoc32\rom\include\charconv_japanese.iby"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\rom\CHARCONV_CODEPAGE.iby" "\epoc32\rom\include\charconv_codepage.iby"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\rom\CHARCONV_ISO8859X.IBY" "\epoc32\rom\include\charconv_iso8859x.iby"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\charconv\ongoing\rom\charconv_gsm7_turkish.iby" "\epoc32\rom\include\charconv_gsm7_turkish.iby"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\inlinetext\inc\inlinetextbase.h" "\epoc32\include\platform\mw\inlinetextbase.h"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\inlinetext\inc\inlinetextcompositesource.h" "\epoc32\include\platform\mw\inlinetextcompositesource.h"
-        1 file(s) copied.
-copy "\sf\os\textandloc\charconvfw\inlinetext\inc\inlinetextnomatchesindicatorsource.h" "\epoc32\include\platform\mw\inlinetextnomatchesindicatorsource.h"
-        1 file(s) copied.
-make[2]: Leaving directory `X:/sf/os/textandloc/group'
-+++ HiRes End 1246536844.10405
-++ Finished at Thu Jul  2 13:14:04 2009
-make[1]: Leaving directory `x:/'
-emake -f dfs_build.make dfs_build-abld_makefile-tools
-make[1]: Entering directory `x:/'
-=== dfs_build == \sf/os/graphics/group
--- abld makefile 
-++ Started at Thu Jul  2 13:14:05 2009
-+++ HiRes Start 1246536845.63642
-cd \sf/os/graphics/group && abld makefile   -keepgoing   tools
-This project does not support platform or  program "TOOLS"
-+++ HiRes End 1246536847.1364
-++ Finished at Thu Jul  2 13:14:07 2009
-=== dfs_build == \sf/os/textandloc/group
--- abld makefile 
-++ Started at Thu Jul  2 13:14:05 2009
-+++ HiRes Start 1246536845.6208
--- a/buildframework/helium/external/helium-antlib/metadata/tests/functionality/func_add_test.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,240 +0,0 @@
-<?xml version="1.0"?>
-<!-- 
-============================================================================ 
-Name        : func_add_test.ant.xml 
-Part of     : Helium AntLib
-
-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="test-metadata-regex" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
-    <description>Helium Antlib metadata unittests.</description>
-    
-    <dirname property="project.dir" file="${ant.file.test-metadata-regex}" />
-
-    <path id="lib.path">
-        <fileset dir="${project.dir}/../../../bin" includes="*.jar"/>
-    </path>
-    
-    <taskdef resource="com/nokia/helium/metadata/ant/antlib.xml" classpathref="lib.path" uri="http://www.nokia.com/helium" />
-    <taskdef name="fmpp" classname="fmpp.tools.AntTask" classpathref="lib.path" onerror="report"/>
-
-
-    <hlm:metadatafilterset id="all-regex-filterfile">
-        <metadatafilterset filterfile="${project.dir}/../data/common.csv" />
-    </hlm:metadatafilterset>
-
-    <target name="s60-clean-log">
-        <delete file="${project.dir}/../output/log_s60_filterfile.sqlite" failonerror="false"/>
-        <echo message="all regular expression validation" />
-        <echo message="database:${project.dir}/../output/log_s60_filterfile.sqlite" />
-        <hlm:metadatarecord database="${project.dir}/../output/log_s60_filterfile.sqlite">
-            <hlm:sbsmetadatainput>
-                <fileset dir="${project.dir}/../data/">
-                    <include  name="S60*.log"/>
-                </fileset>
-                <metadatafilterset refid="all-regex-filterfile" />
-            </hlm:sbsmetadatainput>
-        </hlm:metadatarecord>
-    </target>
-
-
-    <hlm:metadatafilterset id="text_log_metadata_input">
-        <metadatafilterset filterfile="${project.dir}/../data/common.csv" />
-    </hlm:metadatafilterset>
-
-
-    <target name="log_metadata_input">
-        <delete file="${project.dir}/../output/log_text_metadata_input.sqlite" failonerror="false" />
-        <echo message="text log metadata input validation" />
-        <echo message="database:${project.dir}/../output/log_text_metadata_input.sqlite" />
-        <hlm:metadatarecord database="${project.dir}/../output/log_text_metadata_input.sqlite">
-            <hlm:textmetadatainput>
-                <fileset dir="${project.dir}/../data/">
-                    <include  name="*_fixslashes*.log"/>
-                </fileset>
-                <metadatafilterset refid="text_log_metadata_input" />
-            </hlm:textmetadatainput>
-        </hlm:metadatarecord>
-    </target>
-
-    <target name="parallel_record_test">
-        <!-- <delete file="${project.dir}/../output/s60_parallel.sqlite" failonerror="false" /> -->
-        <!-- 
-        <parallel>
-            <sequential>
-                <echo message="sbs parallel input validation" />
-                <echo message="database:${project.dir}/../output/s60_parallel.db" />
-                <hlm:metadatarecord database="${project.dir}/../output/s60_parallel.sqlite">
-                    <hlm:sbsmetadatainput>
-                        <fileset dir="${project.dir}/../data/">
-                            <include  name="*s60_1.log"/>
-                        </fileset>
-                        <metadatafilterset refid="text_log_metadata_input" />
-                    </hlm:sbsmetadatainput>
-                </hlm:metadatarecord>
-            </sequential>
-            <sequential>
-                <echo message="sbs parallel input validation" />
-                <echo message="database:${project.dir}/../output/s60_parallel.sqlite" />
-                <hlm:metadatarecord database="${project.dir}/../output/s60_parallel.sqlite">
-                    <hlm:sbsmetadatainput>
-                        <fileset dir="${project.dir}/../data/">
-                            <include  name="*s60_2.log"/>
-                        </fileset>
-                        <metadatafilterset refid="text_log_metadata_input" />
-                    </hlm:sbsmetadatainput>
-                </hlm:metadatarecord>
-            </sequential>
-            <sequential>
-                <echo message="sbs parallel input validation" />
-                <echo message="database:${project.dir}/../output/s60_parallel.sqlite" />
-                <hlm:metadatarecord database="${project.dir}/../output/s60_parallel.sqlite">
-                    <hlm:sbsmetadatainput>
-                        <fileset dir="${project.dir}/../data/">
-                            <include  name="*s60_3.log"/>
-                        </fileset>
-                        <metadatafilterset refid="text_log_metadata_input" />
-                    </hlm:sbsmetadatainput>
-                </hlm:metadatarecord>
-            </sequential>
-        </parallel> -->
-        <fmpp sourceFile="${project.dir}/../../src/templates/scan2.html.ftl"
-                     outputfile="${project.dir}/../output/s60_scan2.html">
-            <freemarkerLinks expandProperties="yes">
-                macro: ${project.dir}/../../src/templates
-            </freemarkerLinks>
-            <data expandProperties="yes">
-                dbPath: ${project.dir}/../output/s60_parallel.sqlite
-                doc: xml(${project.dir}/../data/s60_info.xml)
-                ant: antProperties()
-            </data>
-        </fmpp>
-        <hlm:generateBuildStatus dbfile="${project.dir}/../output/s60_parallel.sqlite" output-dir="${env.TEMP}" file="test-scanlog-metadata-1.log"/>
-    </target>
-
-
-    <target name="all_ido_logs">
-        <delete file="${project.dir}/../output/all_ido_logs.sqlite" failonerror="false" />
-        <echo message="text log metadata input validation" />
-        <hlm:metadatarecord database="${project.dir}/../output/all_ido_logs.sqlite">
-            <hlm:textmetadatainput>
-                <fileset dir="${project.dir}/../data/ido_logs">
-                    <include  name="*.log"/>
-                    <exclude name="*_ant_*.log"/>
-                </fileset>
-                <metadatafilterset refid="text_log_metadata_input" />
-            </hlm:textmetadatainput>
-            <hlm:antmetadatainput>
-                <fileset dir="${project.dir}/../data/ido_logs">
-                    <include  name="*_ant_*.log"/>
-                </fileset>
-                <metadatafilterset refid="text_log_metadata_input" />
-            </hlm:antmetadatainput>
-        </hlm:metadatarecord>
-    </target>
-
-    <target name="abld_ido_logs">
-        <delete file="${project.dir}/../output/abld_ido_logs.sqlite" failonerror="false" />
-        <echo message="text log metadata input validation" />
-        <hlm:metadatarecord database="${project.dir}/../output/abld_ido_logs.sqlite">
-            <hlm:abldmetadatainput>
-                <fileset dir="${project.dir}/../data/ido_abld_logs">
-                    <include  name="*_compile*.log"/>
-                </fileset>
-                <metadatafilterset refid="text_log_metadata_input" />
-            </hlm:abldmetadatainput>
-        </hlm:metadatarecord>
-    </target>
-
-    <target name="test-old_schema">
-        <copy file="${project.dir}/../output/old_schema_log.sqlite" 
-            tofile="${project.dir}/../output/old_schema_log.sqlite_bak" />
-        <echo message="text log metadata input validation" />
-        <hlm:metadatarecord database="${project.dir}/../output/old_schema_log.sqlite">
-            <hlm:abldmetadatainput>
-                <fileset dir="${project.dir}/../data">
-                    <include  name="sample_abld.log"/>
-                </fileset>
-                <metadatafilterset refid="text_log_metadata_input" />
-            </hlm:abldmetadatainput>
-        </hlm:metadatarecord>
-
-        <delete file="${project.dir}/../output/old_schema_log.sqlite" />
-        <copy file="${project.dir}/../output/old_schema_log.sqlite_bak" 
-            tofile="${project.dir}/../output/old_schema_log.sqlite"
-            failonerror="false" />
-        
-    </target>
-
-    <target name="ant_ido_logs">
-        <delete file="${project.dir}/../output/ant_ido_logs.sqlite" failonerror="false" />
-        <echo message="text log metadata input validation" />
-        <hlm:metadatarecord database="${project.dir}/../output/ant_ido_logs.sqlite">
-            <hlm:antmetadatainput>
-                <fileset dir="${project.dir}/../data/ido_logs">
-                    <include  name="*_ant_*.log"/>
-                </fileset>
-                <metadatafilterset refid="text_log_metadata_input" />
-            </hlm:antmetadatainput>
-        </hlm:metadatarecord>
-    </target>
-
-    <target name="readdata">
-        <delete file="${project.dir}/../output/readdata.html" failonerror="false" />
-        <fmpp sourceFile="${project.dir}/../../src/templates/readdata.xml.ftl"
-                     outputfile="${project.dir}/../output/readdata.html">
-            <freemarkerLinks expandProperties="yes">
-                macro: ${project.dir}/../../src/templates
-            </freemarkerLinks>
-            <data expandProperties="yes">
-                dbPath: ${project.dir}/../output/log_text_metadata_input.sqlite
-                ant: antProperties()
-            </data>
-        </fmpp>
-    </target>
-
-    <target name="generate-summary">
-        <delete file="${project.dir}/../output/summary.html" failonerror="false" />
-        <fmpp sourceFile="${project.dir}/../../src/templates/summary.html.ftl"
-                     outputfile="${project.dir}/../output/summary.html">
-            <freemarkerLinks expandProperties="yes">
-                macro: ${project.dir}/../../src/templates/macro
-            </freemarkerLinks>
-            <data expandProperties="yes">
-                dbPath: ${project.dir}/../output/all_ido_logs.sqlite
-                loginfo: xml(${project.dir}/../data/ido_logs/IDO_lcdo_tb92-ci_MCL.92.64_info.log.xml)
-                ant: antProperties()
-            </data>
-        </fmpp>
-    </target>
-
-    <target name="generate-cc-summary">
-        <property name="build.id" value="100.test" />
-        <delete file="${project.dir}/../output/cc-summary.html" failonerror="false" />
-        <fmpp sourceFile="${project.dir}/../../src/templates/cc_summary.html.ftl"
-                     outputfile="${project.dir}/../output/cc-summary.html">
-            <freemarkerLinks expandProperties="yes">
-                macro: ${project.dir}/../../src/templates/macro
-            </freemarkerLinks>
-            <data expandProperties="yes">
-                dbPath: ${project.dir}/../output/all_ido_logs.sqlite
-                loginfo: xml(${project.dir}/../data/ido_logs/IDO_lcdo_tb92-ci_MCL.92.64_info.log.xml)
-                ant: antProperties()
-            </data>
-        </fmpp>
-    </target>
-</project>
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/metadata/tests/functionality/test_regex.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,512 +0,0 @@
-<?xml version="1.0"?>
-<!-- 
-============================================================================ 
-Name        : test_regex.ant.xml 
-Part of     : Helium AntLib
-
-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="test-metadata-regex" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
-    <description>Helium Antlib metadata unittests.</description>
-
-    <property environment="env" />
-    
-    <dirname property="project.dir" file="${ant.file.test-metadata-regex}" />
-
-    <path id="lib.path">
-        <fileset dir="${project.dir}/../../../bin" includes="*.jar"/>
-    </path>
-    
-    <taskdef resource="com/nokia/helium/metadata/ant/antlib.xml" classpathref="lib.path" uri="http://www.nokia.com/helium" />
-    <taskdef name="fmpp" classname="fmpp.tools.AntTask" classpathref="lib.path" onerror="report"/>
-
-    <property name="metadata-filterfile" value="${project.dir}/../data/common.csv"/>
-    <property name="metadata-log-files" value="${project.dir}/../data/*.log"/>
-    
-    <hlm:metadatafilterset id="all-regex-filterfile">
-        <metadatafilterset filterfile="${metadata-filterfile}" />
-    </hlm:metadatafilterset>
-
-    <!-- Test categorization for sbs scanlog
-    -->
-    <target name="test-categorization">
-        <delete file="${project.dir}/../output/categorization.sqlite" failonerror="false" />
-        <echo message="categorization validation" />
-        <hlm:metadatarecord database="${project.dir}/../output/categorization.sqlite">
-            <hlm:sbsmetadatainput cleanLogFile="${project.dir}/../data/categorization_clean.log">
-                <fileset dir="${project.dir}/../data/">
-                    <include  name="categorization.log"/>
-                </fileset>
-                <metadatafilterset refid="all-regex-filterfile" />
-            </hlm:sbsmetadatainput>
-        </hlm:metadatarecord>
-        <hlm:metadataCountSeverity severity="error" log="categorization.log" db="${project.dir}/../output/categorization.sqlite" property="cleanlog_errors"/>
-        <au:assertTrue>
-            <equals arg1="${cleanlog_errors}" arg2="2"/>
-        </au:assertTrue>
-    </target>
-
-    <!-- Test parser error
-    -->
-    <target name="test-parser-error">
-        <delete file="${project.dir}/../output/parser_error.sqlite" failonerror="false" />
-        <au:expectfailure>
-            <hlm:metadatarecord database="${project.dir}/../output/parser_error.sqlite">
-                <hlm:sbsmetadatainput>
-                    <fileset dir="${project.dir}/../data/">
-                        <include  name="parser_error.log"/>
-                    </fileset>
-                    <metadatafilterset refid="all-regex-filterfile" />
-                </hlm:sbsmetadatainput>
-            </hlm:metadatarecord>
-        </au:expectfailure>
-    </target>
-
-    <!-- Test parser error
-    -->
-    <target name="test-parser-error-keepgoing">
-        <delete file="${project.dir}/../output/parser_error.sqlite" failonerror="false" />
-        <hlm:metadatarecord database="${project.dir}/../output/parser_error.sqlite" failonerror="false">
-            <hlm:sbsmetadatainput>
-                <fileset dir="${project.dir}/../data/">
-                    <include  name="parser_error.log"/>
-                </fileset>
-                <metadatafilterset refid="all-regex-filterfile" />
-            </hlm:sbsmetadatainput>
-        </hlm:metadatarecord>
-    </target>
-
-
-    <!-- Test categorization without cleanLogFile
-    -->
-    <target name="test-categorization-nocleanlog">
-        <delete file="${project.dir}/../output/categorization.sqlite" failonerror="false" />
-        <echo message="categorization validation" />
-        <hlm:metadatarecord database="${project.dir}/../output/categorization.sqlite">
-            <hlm:sbsmetadatainput>
-                <fileset dir="${project.dir}/../data/">
-                    <include  name="categorization.log"/>
-                </fileset>
-                <metadatafilterset refid="all-regex-filterfile" />
-            </hlm:sbsmetadatainput>
-        </hlm:metadatarecord>
-        <hlm:metadataCountSeverity severity="error" log="categorization.log" db="${project.dir}/../output/categorization.sqlite" property="nocleanlog_errors"/>
-        <au:assertTrue>
-            <equals arg1="${nocleanlog_errors}" arg2="1"/>
-        </au:assertTrue>
-    </target>
-
-    <target name="test-log-entry-for-no-errors">
-        <delete file="${project.dir}/../output/log-entry-for-no-error.sqlite" failonerror="false" />
-        <echo message="categorization validation" />
-        <hlm:metadatarecord database="${project.dir}/../output/log-entry-for-no-error.sqlite">
-            <hlm:sbsmetadatainput>
-                <fileset dir="${project.dir}/../data/">
-                    <include  name="noerror.log"/>
-                </fileset>
-                <metadatafilterset refid="all-regex-filterfile" />
-            </hlm:sbsmetadatainput>
-        </hlm:metadatarecord>
-        <fmpp sourceFile="${project.dir}/../../src/templates/general_category.txt.ftl"
-                     outputfile="${project.dir}/../output/general_category.txt">
-            <freemarkerLinks expandProperties="yes">
-                macro: ${project.dir}/../../src/templates/macro
-            </freemarkerLinks>
-            <data expandProperties="yes">
-                dbPath: ${project.dir}/../output/log-entry-for-no-error.sqlite
-                ant: antProperties()
-            </data>
-        </fmpp>
-        <au:assertFileExists file="${project.dir}/../output/general_category.txt" message="Error in test cases"/>
-        <loadfile property="logEntry"
-              srcFile="${project.dir}/../output/general_category.txt"/>
-        <au:assertMatches string="${logEntry}" pattern="component : general : logfile : " 
-                     casesensitive="false"/>
-    </target>
-
-    <!-- Check for all the regular expression defined in the filter file,
-    The log file contains text for matching regular expression.
-    -->
-    <target name="test-all-regex-filterfile">
-        <property name="metadata-read-db" value="${project.dir}/../output/log_all_filterfile.sqlite"/>
-        <delete file="${metadata-read-db}" failonerror="false"/>
-        <echo message="all regular expression validation" />
-        <echo message="database:${metadata-read-db}" />
-        <!-- do some checks that files are present and raise asserts if not present-->
-        <au:assertFileExists file="${metadata-filterfile}" message="${metadata-filterfile} filter file does not exist"/>
-        <mkdir dir="${project.dir}/../output"/>
-        
-        <hlm:metadatarecord database="${metadata-read-db}">
-            <hlm:sbsmetadatainput>
-                <fileset dir="${project.dir}/../data/">
-                    <include  name="*regex*.log"/>
-                </fileset>
-                <metadatafilterset refid="all-regex-filterfile" />
-            </hlm:sbsmetadatainput>
-        </hlm:metadatarecord>
-
-        <!-- check we have created the DB file-->
-        <au:assertFileExists file="${metadata-read-db}" message="${metadata-read-db} metadata DB file was not created"/>
-    </target>
-
-    <!-- To verify some lengthy text for recipe tag from 
-    sbs metadata input.
-    -->
-    <target name="test-receipe-lengthy-text">
-        <property name="metadata-read-db" value="${project.dir}/../output/log_lengthy_text.sqlite"/>
-        <au:assertFileExists file="${metadata-filterfile}" message="${metadata-filterfile} filter file does not exist"/>
-        <delete file="${metadata-read-db}" failonerror="false"/>
-        <echo message="all regular expression validation" />
-        <echo message="database:${metadata-read-db}" />
-        <hlm:metadatarecord database="${metadata-read-db}">
-            <hlm:sbsmetadatainput>
-                <fileset dir="${project.dir}/../data/">
-                    <include  name="receipe*.log"/>
-                </fileset>
-                <metadatafilterset refid="all-regex-filterfile" />
-            </hlm:sbsmetadatainput>
-        </hlm:metadatarecord>
-        <au:assertFileExists file="${metadata-read-db}" message="${metadata-read-db} metadata DB file was not created"/>
-    </target>
-
-    <!--modify the errors so regex=".*warning U4010" description="mingw error" is no longer 
-    an error but a warning-->
-    <hlm:metadatafilterset id="all-regex-combined">
-        <metadatafilter priority="WARNING" regex=".*warning U4010" description="mingw error" />
-        <metadatafilterset filterfile="${metadata-filterfile}" />
-    </hlm:metadatafilterset>
-
-    <property name="metadata-all-db" value="${project.dir}/../output/log_all_combined.sqlite"/>
-
-    <target name="test-all-regex-combined">
-        <property name="metadata-read-db" value="${project.dir}/../output/log_all_combined.sqlite"/>
-        <delete file="${metadata-read-db}" failonerror="false" />
-        <echo message="all regular expression validation" />
-        <echo message="database:${metadata-read-db}" />
-        <au:assertFileExists file="${metadata-filterfile}" message="${metadata-filterfile} filter file does not exist"/>
-        <mkdir dir="${project.dir}/../output"/>
-
-        <hlm:metadatarecord database="${metadata-read-db}">
-            <hlm:sbsmetadatainput>
-                <fileset dir="${project.dir}/../data/">
-                    <include  name="*regex*.log"/>
-                </fileset>
-                <metadatafilterset refid="all-regex-combined" />
-            </hlm:sbsmetadatainput>
-        </hlm:metadatarecord>
-        <au:assertFileExists file="${metadata-read-db}" message="${metadata-read-db} DB file was not created"/>
-    </target>
-
-
-    <property name="metadata-error-db" value="${project.dir}/../output/log_error_combined.sqlite"/>
-
-    <!--create an invalid priority type, so contains message invalid 
-    priority and set to error as priority -->
-    <hlm:metadatafilterset id="all-regex-combined-error">
-        <metadatafilter priority="INCORRECT" regex=".*warning U4010" description="test error handling so incorrect priority" />
-        <metadatafilterset filterfile="${metadata-filterfile}" />
-    </hlm:metadatafilterset>
-
-    <!--create an invalid priority type, which contains warning invalid priority 
-    and continues with other data. 
-    -->
-    <target name="test-all-regex-combined-error">
-        <property name="metadata-read-db" value="${project.dir}/../output/log_error_combined.sqlite"/>
-        <delete file="${metadata-read-db}" failonerror="false" />
-        <echo message="all regular expression validation" />
-        <echo message="database:${metadata-read-db}" />
-        <au:assertFileExists file="${metadata-filterfile}" message="${metadata-filterfile} filter file does not exist"/>
-        <mkdir dir="${project.dir}/../output"/>
-
-        <hlm:metadatarecord database="${metadata-read-db}" >
-            <hlm:sbsmetadatainput>
-                <fileset dir="${project.dir}/../data/">
-                    <include  name="*regex*.log"/>
-                </fileset>
-                <metadatafilterset refid="all-regex-combined-error" />
-            </hlm:sbsmetadatainput>
-        </hlm:metadatarecord>
-        <!-- no need to check the DB file not present as it won't be-->
-    </target>
-
-    <!--try to add a different different filter type but not add the parameter so has an error-->
-    <hlm:metadatafilterset id="all-regex-combined-no-priority">
-        <metadatafilter regex=".*warning U4010" description="test error handling so incorrect priority" />
-        <metadatafilterset filterfile="${metadata-filterfile}" />
-    </hlm:metadatafilterset>
-
-    <!--try to add a different different filter type but not add the parameter so has an error-->
-    <target name="test-all-regex-combined-no-priority">
-        <property name="metadata-read-db" value="${project.dir}/../output/log_error_combined.sqlite"/>
-        <delete file="${metadata-read-db}" failonerror="false" />
-        <echo message="all regular expression validation" />
-        <echo message="database:${metadata-read-db}" />
-        <au:assertFileExists file="${metadata-filterfile}" message="${metadata-filterfile} filter file does not exist"/>
-        <mkdir dir="${project.dir}/../output"/>
-
-        <hlm:metadatarecord database="${metadata-read-db}">
-            <hlm:sbsmetadatainput>
-                <fileset dir="${project.dir}/../data/">
-                    <include  name="*regex*.log"/>
-                </fileset>
-                <metadatafilterset refid="all-regex-combined-no-priority" />
-            </hlm:sbsmetadatainput>
-        </hlm:metadatarecord>
-        <!-- no need to check the DB file not present as it won't be-->
-    </target>
-
-    <!--try to add a different different filter type but not add the parameter so has an error-->
-    <hlm:metadatafilterset id="all-regex-combined-no-regex">
-        <metadatafilter priority="INCORRECT" description="test error handling so incorrect priority" />
-        <metadatafilter priority="WARNING" description="test error handling so incorrect priority" />
-        <metadatafilterset filterfile="${metadata-filterfile}" />
-    </hlm:metadatafilterset>
-
-    <!--try to add a different different filter type but not add the parameter so has an error-->
-    <target name="test-all-regex-combined-no-regex">
-        <property name="metadata-read-db" value="${project.dir}/../output/log_error_combined.sqlite"/>
-        <delete file="${metadata-read-db}" failonerror="false" />
-        <echo message="all regular expression validation" />
-        <echo message="database:${metadata-read-db}" />
-        <au:assertFileExists file="${metadata-filterfile}" message="${metadata-filterfile} filter file does not exist"/>
-        <mkdir dir="${project.dir}/../output"/>
-
-        <hlm:metadatarecord database="${metadata-read-db}">
-            <hlm:sbsmetadatainput>
-                <fileset dir="${project.dir}/../data/">
-                    <include  name="*regex*.log"/>
-                </fileset>
-                <metadatafilterset refid="all-regex-combined-no-regex" />
-            </hlm:sbsmetadatainput>
-        </hlm:metadatarecord>
-        <!-- no need to check the DB file not present as it won't be-->
-    </target>
-
-    <hlm:metadatafilterset id="text_log_metadata_input">
-        <metadatafilterset filterfile="${project.dir}/../data/common.csv" />
-    </hlm:metadatafilterset>
-
-    <target name="test-text_log_metadata_input">
-        <property name="metadata-read-db" value="${project.dir}/../output/log_text_metadata_input.sqlite"/>
-        <delete file="${metadata-read-db}" failonerror="false" />
-        <echo message="text log metadata input validation" />
-        <echo message="database:${metadata-read-db}" />
-        <au:assertFileExists file="${metadata-filterfile}" message="${metadata-filterfile} filter file does not exist"/>
-        <mkdir dir="${project.dir}/../output"/>
-
-        <hlm:metadatarecord database="${metadata-read-db}">
-            <hlm:textmetadatainput>
-                <fileset dir="${project.dir}/../data/">
-                    <include  name="*_fixslashes*.log"/>
-                </fileset>
-                <metadatafilterset refid="text_log_metadata_input" />
-            </hlm:textmetadatainput>
-        </hlm:metadatarecord>
-        <au:assertFileExists file="${metadata-read-db}" message="${metadata-read-db} DB file was not created"/>
-    </target>
-
-    <hlm:metadatafilterset id="abld_log_metadata_input">
-        <metadatafilter priority="WARNING" regex=".*warning U4010" description="mingw error" />
-        <metadatafilterset filterfile="${project.dir}/../data/common.csv" />
-    </hlm:metadatafilterset>
-
-
-    <target name="test-abld_log_metadata_input">
-        <property name="metadata-read-db" value="${project.dir}/../output/log_abld_metadata_input.sqlite"/>
-        <delete file="${project.dir}/../output/log_abld_metadata_input.sqlite" failonerror="false" />
-        <echo message="abld log metadata input validation" />
-        <echo message="database:${metadata-read-db}" />
-        <au:assertFileExists file="${metadata-filterfile}" message="${metadata-filterfile} filter file does not exist"/>
-        <mkdir dir="${project.dir}/../output"/>
-
-        <hlm:metadatarecord database="${metadata-read-db}">
-            <hlm:abldmetadatainput>
-                <fileset dir="${project.dir}/../data/">
-                    <include  name="*sample_abld.log"/>
-                </fileset>
-                <metadatafilterset refid="abld_log_metadata_input" />
-            </hlm:abldmetadatainput>
-        </hlm:metadatarecord>
-        <au:assertFileExists file="${metadata-read-db}" message="${metadata-read-db} DB file was not created"/>
-    </target>
-
-
-    <target name="test-policy_metadata_input">
-        <property name="metadata-read-db" value="${project.dir}/../output/log_policy_metadata_input.sqlite"/>
-        <delete file="${metadata-read-db}" failonerror="false" />
-        <echo message="policy metadata input validation" />
-        <echo message="database:${metadata-read-db}" />
-        <au:assertFileExists file="${metadata-filterfile}" message="${metadata-filterfile} filter file does not exist"/>
-        <mkdir dir="${project.dir}/../output"/>
-
-        <hlm:metadatarecord database="${metadata-read-db}">
-            <hlm:policymetadatainput>
-                <fileset dir="${project.dir}/../data/">
-                    <include  name="*policy*.log"/>
-                </fileset>
-            </hlm:policymetadatainput>
-        </hlm:metadatarecord>
-        <au:assertFileExists file="${metadata-read-db}" message="${metadata-read-db} DB file was not created"/>
-    </target>
-
-    <hlm:metadatafilterset id="ant_log_metadata_input">
-        <metadatafilterset filterfile="${project.dir}/../data/common.csv" />
-    </hlm:metadatafilterset>
-
-
-    <target name="test-ant_log_metadata_input">
-        <property name="metadata-read-db" value="${project.dir}/../output/log_ant_metadata_input.sqlite"/>
-        <delete file="${metadata-read-db}" failonerror="false" />
-        <echo message="ant log metadata input validation" />
-        <echo message="database:${metadata-read-db}" />
-        <au:assertFileExists file="${metadata-filterfile}" message="${metadata-filterfile} filter file does not exist"/>
-        <mkdir dir="${project.dir}/../output"/>
-
-        <hlm:metadatarecord database="${metadata-read-db}">
-            <hlm:antmetadatainput>
-                <fileset dir="${project.dir}/../data/">
-                    <include  name="*ant*.log"/>
-                </fileset>
-                <metadatafilterset refid="ant_log_metadata_input" />
-            </hlm:antmetadatainput>
-        </hlm:metadatarecord>
-        <au:assertFileExists file="${metadata-read-db}" message="${metadata-read-db} DB file was not created"/>
-    </target>
-
-    <property name="metadata-read-ftl" value="${project.dir}/../../src/templates/readdata.xml.ftl"/>
-    <property name="metadata-read-output" value="${project.dir}/../output/readdata.html"/>
-
-    <target name="test-readdata" depends="test-text_log_metadata_input" >
-        <property name="metadata-template-dir" value="${project.dir}/../../src/templates/" />
-        <property name="metadata-output-dir" value="${project.dir}/../output" />
-        <property name="metadata-read-ftl" value="${metadata-template-dir}/readdata.xml.ftl"/>
-        <property name="metadata-read-db" value="${metadata-output-dir}/log_text_metadata_input.sqlite"/>
-        <property name="metadata-read-output" value="${metadata-output-dir}/readdata.html"/>
-        <delete file="${metadata-read-output}" failonerror="false" />
-        <au:assertFileExists file="${metadata-read-db}" message="${metadata-read-db} DB file was not created"/>
-        <fmpp sourceFile="${metadata-template-dir}/readdata.xml.ftl"
-                     outputfile="${metadata-output-dir}/readdata.html">
-            <freemarkerLinks expandProperties="yes">
-                macro: ${project.dir}/../../src/templates
-            </freemarkerLinks>
-            <data expandProperties="yes">
-                dbPath: ${metadata-read-db}
-                ant: antProperties()
-            </data>
-        </fmpp>
-        <fmpp sourceFile="${metadata-template-dir}/build_status.xml.ftl"
-                     outputfile="${metadata-output-dir}/build_status.xml">
-            <freemarkerLinks expandProperties="yes">
-                macro: ${project.dir}/../../src/templates
-            </freemarkerLinks>
-            <data expandProperties="yes">
-                dbPath: ${metadata-read-db}
-                logfile: ido_abs_mcl_devlon70_robot_MCL.70.500_fixslashes_raptor.log
-                ant: antProperties()
-            </data>
-        </fmpp>
-        <fmpp sourceFile="${metadata-template-dir}/email_new.html.ftl"
-                     outputfile="${metadata-output-dir}/build_status.html">
-            <freemarkerLinks expandProperties="yes">
-                macro: ${project.dir}/../../src/templates
-            </freemarkerLinks>
-            <data expandProperties="yes">
-                dbPath: ${metadata-read-db}
-                logfile: ido_abs_mcl_devlon70_robot_MCL.70.500_fixslashes_raptor.log
-                ant: antProperties()
-            </data>
-        </fmpp>
-        <au:assertFileExists file="${metadata-read-output}" message="${metadata-read-output} DB file was not created"/>
-    </target>
-
-
-    <target name="test-generate-summary" depends="test-text_log_metadata_input">
-        <property name="metadata-summary-ftl" value="${project.dir}/../../src/templates/summary.html.ftl"/>
-        <property name="metadata-summary-output" value="${project.dir}/../output/summary.html"/>
-        <property name="metadata-output-dir" value="${project.dir}/../output/" />
-        <delete file="${metadata-summary-output}" failonerror="false" />
-        <property name="metadata-read-db" value="${metadata-output-dir}/log_text_metadata_input.sqlite"/>
-        
-        <fmpp sourceFile="${metadata-summary-ftl}"
-                     outputfile="${metadata-summary-output}">
-            <freemarkerLinks expandProperties="yes">
-                macro: ${project.dir}/../../src/templates/macro
-            </freemarkerLinks>
-            <data expandProperties="yes">
-                dbPath: ${metadata-read-db}
-                loginfo: xml(${project.dir}/../data/ido_abs_mcl_devlon70_robot_MCL.70.500_info.log)
-                ant: antProperties()
-            </data>
-        </fmpp>
-        
-        <!-- check we have created the files -->
-        <au:assertFileExists file="${metadata-read-db}" message="${metadata-read-db} DB file was not created"/>
-        <au:assertFileExists file="${metadata-summary-output}" message="${metadata-summary-output} summary output file was not created"/>
-    </target>
-    
-    <target name="test-countseverity">
-        <delete file="${project.dir}/../output/dp.sqlite" failonerror="false" />
-
-        <hlm:metadatarecord database="${project.dir}/../output/dp.sqlite">
-            <hlm:textmetadatainput>
-                <fileset dir="${project.dir}/../data/">
-                    <include  name="*_fixslashes*.log"/>
-                </fileset>
-                <metadatafilterset refid="text_log_metadata_input" />
-            </hlm:textmetadatainput>
-        </hlm:metadatarecord>
-
-        <hlm:metadataCountSeverity severity="error" log="_fixslashes_raptor.log" db="${project.dir}/../output/dp.sqlite" property="errors"/>
-        <au:assertTrue>
-            <equals arg1="${errors}" arg2="24"/>
-        </au:assertTrue>
-        <au:assertTrue>
-            <hlm:metadataHasSeverity severity="error" log="_fixslashes_raptor.log" db="${project.dir}/../output/dp.sqlite" />
-        </au:assertTrue>
-        <au:assertFalse>
-            <hlm:metadataHasSeverity severity="fatal" log="_fixslashes_raptor.log" db="${project.dir}/../output/dp.sqlite" />
-        </au:assertFalse>
-        
-        <hlm:metadatarecord database="${project.dir}/../output/dp.sqlite">
-            <hlm:textmetadatainput>
-                <fileset dir="${project.dir}/../data/">
-                    <include name="dp.log"/>
-                </fileset>
-                <metadatafilterset refid="text_log_metadata_input" />
-            </hlm:textmetadatainput>
-        </hlm:metadatarecord>
-        
-        <hlm:metadataCountSeverity severity="error" log="dp.log" db="${project.dir}/../output/dp.sqlite" property="errors2"/>
-        <au:assertTrue>
-            <equals arg1="${errors2}" arg2="1"/>
-        </au:assertTrue>
-        <au:assertTrue>
-            <hlm:metadataHasSeverity severity="error" log="dp.log" db="${project.dir}/../output/dp.sqlite" />
-        </au:assertTrue>
-        <au:assertFalse>
-            <hlm:metadataHasSeverity severity="fatal" log="dp.log" db="${project.dir}/../output/dp.sqlite" />
-        </au:assertFalse>
-    </target>
-    
-    <target name="test-metadata-ant" depends="test-ant_log_metadata_input, test-readdata,test-generate-summary  " />
-    <target name="test-metadata-abld" depends="test-abld_log_metadata_input, test-readdata,test-generate-summary  " />
-    <target name="test-metadata-policy" depends="test-policy_metadata_input, test-readdata,test-generate-summary  " />
-    <target name="test-metadata-text" depends="test-text_log_metadata_input, test-readdata,test-generate-summary  " />
-    <target name="test-metadata-all" depends="test-all-regex-filterfile, test-readdata,test-generate-summary  " />
-    <target name="test-metadata-combine" depends="test-all-regex-combined, test-readdata,test-generate-summary  " />
-           
-</project>
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/metadata/tests/output.txt	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1336 +0,0 @@
-Buildfile: functionality\test_regex.ant.xml
-
-test-readdata:
-     [fmpp] args.size:1
-     [fmpp] arg-list:E:\Build_E\eclipse_fasym013\helium-antlib-trunk\sf\metadata\tests\functionality/../output/log_all_filterfile.db
-     [fmpp] QueryModel:select * from priority
-     [fmpp] query in SQLTemplateModelselect * from priority
-     [fmpp] QueryModel:select * from component
-     [fmpp] query in SQLTemplateModelselect * from component
-     [fmpp] QueryModel:select * from logpath
-     [fmpp] query in SQLTemplateModelselect * from logpath
-     [fmpp] isDataRead:false
-     [fmpp] sql queryselect * from priority
-     [fmpp] data:0
-     [fmpp] data:''
-     [fmpp] data:1
-     [fmpp] data:ERROR
-     [fmpp] data:2
-     [fmpp] data:WARNING
-     [fmpp] data:3
-     [fmpp] data:CRITICAL
-     [fmpp] data:4
-     [fmpp] data:REMARK
-     [fmpp] indexmap size5
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:3
-     [fmpp] datalist size1
-     [fmpp] QueryModel:select count(logText) as COUNT from metadata_table where priority_id=3
-     [fmpp] query in SQLTemplateModelselect count(logText) as COUNT from metadata_table where priority_id=3
-     [fmpp] isDataRead:false
-     [fmpp] sql queryselect count(logText) as COUNT from metadata_table where priority_id=3
-     [fmpp] data:2
-     [fmpp] indexmap size1
-     [fmpp] sql queryselect count(logText) as COUNT from metadata_table where priority_id=3
-     [fmpp] columnName:COUNT
-     [fmpp] resultSet MetaData column Count=1
-     [fmpp] adding records
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:2
-     [fmpp] datalist size1
-     [fmpp] QueryModel:select count(logText) as COUNT from metadata_table where priority_id=2
-     [fmpp] query in SQLTemplateModelselect count(logText) as COUNT from metadata_table where priority_id=2
-     [fmpp] isDataRead:false
-     [fmpp] sql queryselect count(logText) as COUNT from metadata_table where priority_id=2
-     [fmpp] data:36
-     [fmpp] indexmap size1
-     [fmpp] sql queryselect count(logText) as COUNT from metadata_table where priority_id=2
-     [fmpp] columnName:COUNT
-     [fmpp] resultSet MetaData column Count=1
-     [fmpp] adding records
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:1
-     [fmpp] datalist size1
-     [fmpp] QueryModel:select count(logText) as COUNT from metadata_table where priority_id=1
-     [fmpp] query in SQLTemplateModelselect count(logText) as COUNT from metadata_table where priority_id=1
-     [fmpp] isDataRead:false
-     [fmpp] sql queryselect count(logText) as COUNT from metadata_table where priority_id=1
-     [fmpp] data:32
-     [fmpp] indexmap size1
-     [fmpp] sql queryselect count(logText) as COUNT from metadata_table where priority_id=1
-     [fmpp] columnName:COUNT
-     [fmpp] resultSet MetaData column Count=1
-     [fmpp] adding records
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] QueryModel:select count(logText) as COUNT from metadata_table where priority_id=0
-     [fmpp] query in SQLTemplateModelselect count(logText) as COUNT from metadata_table where priority_id=0
-     [fmpp] isDataRead:false
-     [fmpp] sql queryselect count(logText) as COUNT from metadata_table where priority_id=0
-     [fmpp] data:0
-     [fmpp] indexmap size1
-     [fmpp] sql queryselect count(logText) as COUNT from metadata_table where priority_id=0
-     [fmpp] columnName:COUNT
-     [fmpp] resultSet MetaData column Count=1
-     [fmpp] adding records
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:4
-     [fmpp] datalist size1
-     [fmpp] QueryModel:select count(logText) as COUNT from metadata_table where priority_id=4
-     [fmpp] query in SQLTemplateModelselect count(logText) as COUNT from metadata_table where priority_id=4
-     [fmpp] isDataRead:false
-     [fmpp] sql queryselect count(logText) as COUNT from metadata_table where priority_id=4
-     [fmpp] data:12
-     [fmpp] indexmap size1
-     [fmpp] sql queryselect count(logText) as COUNT from metadata_table where priority_id=4
-     [fmpp] columnName:COUNT
-     [fmpp] resultSet MetaData column Count=1
-     [fmpp] adding records
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:3
-     [fmpp] datalist size1
-     [fmpp] QueryModel:select * from metadata_table where priority_id=3
-     [fmpp] query in SQLTemplateModelselect * from metadata_table where priority_id=3
-     [fmpp] iterator constructor called
-     [fmpp] checking any more element
-     [fmpp] getting records
-     [fmpp] sql queryselect * from metadata_table where priority_id=3 limit 5000 offset 0;
-     [fmpp] columnName:component_id
-     [fmpp] columnName:priority_id
-     [fmpp] columnName:logText
-     [fmpp] columnName:lineNumber
-     [fmpp] columnName:logname_id
-     [fmpp] resultSet MetaData column Count=5
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] next:count:0
-     [fmpp] logtext:next:mingw_make.exe: error
-     [fmpp] checking any more element
-     [fmpp] isDataRead:false
-     [fmpp] sql queryselect * from component
-     [fmpp] data:0
-     [fmpp] data:z:/sf/app/camera/group/bld.inf
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:1
-     [fmpp] logtext:next:mingw_make.exe: error
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:2
-     [fmpp] datalist size1
-     [fmpp] QueryModel:select * from metadata_table where priority_id=2
-     [fmpp] query in SQLTemplateModelselect * from metadata_table where priority_id=2
-     [fmpp] iterator constructor called
-     [fmpp] checking any more element
-     [fmpp] getting records
-     [fmpp] sql queryselect * from metadata_table where priority_id=2 limit 5000 offset 0;
-     [fmpp] columnName:component_id
-     [fmpp] columnName:priority_id
-     [fmpp] columnName:logText
-     [fmpp] columnName:lineNumber
-     [fmpp] columnName:logname_id
-     [fmpp] resultSet MetaData column Count=5
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] next:count:0
-     [fmpp] logtext:next:WARNING:
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:1
-     [fmpp] logtext:next:LINK : warning
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:2
-     [fmpp] logtext:next::10: warning: cannot find matching deallocation function
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:3
-     [fmpp] logtext:next:100) : WARNING: TEST123
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:4
-     [fmpp] logtext:next:MAKEDEF WARNING: TEST
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:5
-     [fmpp] logtext:next:TEST 123 \\(10) : Warning: (400)
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:6
-     [fmpp] logtext:next:BLDMAKE WARNING: bldm warning
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:7
-     [fmpp] logtext:next:MAKEDEF WARNING: make warning
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:8
-     [fmpp] logtext:next:atest(100) : warning C aasdfa
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:9
-     [fmpp] logtext:next:testas 100: warning: test123
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:10
-     [fmpp] logtext:next:usage Usage Warning: warn1
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:11
-     [fmpp] logtext:next:abcd mwld.exe: abcd
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:12
-     [fmpp] logtext:next:Command line warning abcd
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:13
-     [fmpp] logtext:next:anything ERROR: bad relocation: test123
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:14
-     [fmpp] logtext:next:10 warning in component1
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:15
-     [fmpp] logtext:next:EventType: Error Source: SweepNTabcde
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:16
-     [fmpp] logtext:next:WARN	test
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:17
-     [fmpp] logtext:next:abcd :10: warning: cannot find matching deallocation function 100:note abcd
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:18
-     [fmpp] logtext:next:WARNING:
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:19
-     [fmpp] logtext:next:LINK : warning
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:20
-     [fmpp] logtext:next::10: warning: cannot find matching deallocation function
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:21
-     [fmpp] logtext:next:100) : WARNING: TEST123
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:22
-     [fmpp] logtext:next:MAKEDEF WARNING: TEST
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:23
-     [fmpp] logtext:next:TEST 123 \\(10) : Warning: (400)
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:24
-     [fmpp] logtext:next:BLDMAKE WARNING: bldm warning
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:25
-     [fmpp] logtext:next:MAKEDEF WARNING: make warning
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:26
-     [fmpp] logtext:next:atest(100) : warning C aasdfa
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:27
-     [fmpp] logtext:next:testas 100: warning: test123
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:28
-     [fmpp] logtext:next:usage Usage Warning: warn1
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:29
-     [fmpp] logtext:next:abcd mwld.exe: abcd
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:30
-     [fmpp] logtext:next:Command line warning abcd
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:31
-     [fmpp] logtext:next:anything ERROR: bad relocation: test123
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:32
-     [fmpp] logtext:next:10 warning in component1
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:33
-     [fmpp] logtext:next:EventType: Error Source: SweepNTabcde
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:34
-     [fmpp] logtext:next:WARN	test
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:35
-     [fmpp] logtext:next:abcd :10: warning: cannot find matching deallocation function 100:note abcd
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:1
-     [fmpp] datalist size1
-     [fmpp] QueryModel:select * from metadata_table where priority_id=1
-     [fmpp] query in SQLTemplateModelselect * from metadata_table where priority_id=1
-     [fmpp] iterator constructor called
-     [fmpp] checking any more element
-     [fmpp] getting records
-     [fmpp] sql queryselect * from metadata_table where priority_id=1 limit 5000 offset 0;
-     [fmpp] columnName:component_id
-     [fmpp] columnName:priority_id
-     [fmpp] columnName:logText
-     [fmpp] columnName:lineNumber
-     [fmpp] columnName:logname_id
-     [fmpp] resultSet MetaData column Count=5
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] next:count:0
-     [fmpp] logtext:next:test FATAL ERROR(S):abcd
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:1
-     [fmpp] logtext:next:): Missing file:
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:2
-     [fmpp] logtext:next:abcd FLEXlm error:
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:3
-     [fmpp] logtext:next:ABLD ERROR: 1234
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:4
-     [fmpp] logtext:next:BLDMAKE ERROR: 43543
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:5
-     [fmpp] logtext:next:fatal error U1077 error occured
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:6
-     [fmpp] logtext:next:test warning U4010
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:7
-     [fmpp] logtext:next:make[10]: ***abcd
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:8
-     [fmpp] logtext:next:make[10]: abcd not remade because of errors
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:9
-     [fmpp] logtext:next:ERROR: build error
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:10
-     [fmpp] logtext:next:ERROR EC95940: ec error
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:11
-     [fmpp] logtext:next:Errors caused tool to abort. asdfasdf
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:12
-     [fmpp] logtext:next:test no rule to make target
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:13
-     [fmpp] logtext:next:ERROR,.*no rule to make.*,
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:14
-     [fmpp] logtext:next:ERROR	testing
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:15
-     [fmpp] logtext:next:"abcd , line 100: Error: 100abcd:. abcd
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:16
-     [fmpp] logtext:next:test FATAL ERROR(S):abcd
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:17
-     [fmpp] logtext:next:): Missing file:
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:18
-     [fmpp] logtext:next:abcd FLEXlm error:
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:19
-     [fmpp] logtext:next:ABLD ERROR: 1234
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:20
-     [fmpp] logtext:next:BLDMAKE ERROR: 43543
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:21
-     [fmpp] logtext:next:fatal error U1077 error occured
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:22
-     [fmpp] logtext:next:test warning U4010
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:23
-     [fmpp] logtext:next:make[10]: ***abcd
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:24
-     [fmpp] logtext:next:make[10]: abcd not remade because of errors
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:25
-     [fmpp] logtext:next:ERROR: build error
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:26
-     [fmpp] logtext:next:ERROR EC95940: ec error
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:27
-     [fmpp] logtext:next:Errors caused tool to abort. asdfasdf
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:28
-     [fmpp] logtext:next:test no rule to make target
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:29
-     [fmpp] logtext:next:ERROR,.*no rule to make.*,
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:30
-     [fmpp] logtext:next:ERROR	testing
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:31
-     [fmpp] logtext:next:"abcd , line 100: Error: 100abcd:. abcd
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] QueryModel:select * from metadata_table where priority_id=0
-     [fmpp] query in SQLTemplateModelselect * from metadata_table where priority_id=0
-     [fmpp] iterator constructor called
-     [fmpp] checking any more element
-     [fmpp] getting records
-     [fmpp] sql queryselect * from metadata_table where priority_id=0 limit 5000 offset 0;
-     [fmpp] columnName:component_id
-     [fmpp] columnName:priority_id
-     [fmpp] columnName:logText
-     [fmpp] columnName:lineNumber
-     [fmpp] columnName:logname_id
-     [fmpp] resultSet MetaData column Count=5
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:4
-     [fmpp] datalist size1
-     [fmpp] QueryModel:select * from metadata_table where priority_id=4
-     [fmpp] query in SQLTemplateModelselect * from metadata_table where priority_id=4
-     [fmpp] iterator constructor called
-     [fmpp] checking any more element
-     [fmpp] getting records
-     [fmpp] sql queryselect * from metadata_table where priority_id=4 limit 5000 offset 0;
-     [fmpp] columnName:component_id
-     [fmpp] columnName:priority_id
-     [fmpp] columnName:logText
-     [fmpp] columnName:lineNumber
-     [fmpp] columnName:logname_id
-     [fmpp] resultSet MetaData column Count=5
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] next:count:0
-     [fmpp] logtext:next:REMARK: 
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:1
-     [fmpp] logtext:next:INFO:
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:2
-     [fmpp] logtext:next:anything Command line warning D4025 : test
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:3
-     [fmpp] logtext:next:REMARK: test remark anything
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:4
-     [fmpp] logtext:next:EventType: Error Source: GNU Make.
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:5
-     [fmpp] logtext:next:INFO: any info match
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:6
-     [fmpp] logtext:next:REMARK: 
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:7
-     [fmpp] logtext:next:INFO:
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:8
-     [fmpp] logtext:next:anything Command line warning D4025 : test
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:9
-     [fmpp] logtext:next:REMARK: test remark anything
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:10
-     [fmpp] logtext:next:EventType: Error Source: GNU Make.
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] next:count:11
-     [fmpp] logtext:next:INFO: any info match
-     [fmpp] checking any more element
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] indexmap size1
-     [fmpp] indexmap size1
-     [fmpp] QueryModel:0
-     [fmpp] datalist size1
-     [fmpp] QueryModel:select * from metadata_table where component_id=0 order by priority_id
-     [fmpp] query in SQLTemplateModelselect * from metadata_table where component_id=0 order by priority_id
-     [fmpp] iterator constructor called
-     [fmpp] checking any more element
-     [fmpp] getting records
-     [fmpp] sql queryselect * from metadata_table where component_id=0 order by priority_id limit 5000 offset 0;
-     [fmpp] columnName:component_id
-     [fmpp] columnName:priority_id
-     [fmpp] columnName:logText
-     [fmpp] columnName:lineNumber
-     [fmpp] columnName:logname_id
-     [fmpp] resultSet MetaData column Count=5
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] adding records
-     [fmpp] next:count:0
-     [fmpp] logtext:next:test FATAL ERROR(S):abcd
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:1
-     [fmpp] datalist size1
-     [fmpp] next:count:1
-     [fmpp] logtext:next:): Missing file:
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:1
-     [fmpp] datalist size1
-     [fmpp] next:count:2
-     [fmpp] logtext:next:abcd FLEXlm error:
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:1
-     [fmpp] datalist size1
-     [fmpp] next:count:3
-     [fmpp] logtext:next:ABLD ERROR: 1234
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:1
-     [fmpp] datalist size1
-     [fmpp] next:count:4
-     [fmpp] logtext:next:BLDMAKE ERROR: 43543
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:1
-     [fmpp] datalist size1
-     [fmpp] next:count:5
-     [fmpp] logtext:next:fatal error U1077 error occured
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:1
-     [fmpp] datalist size1
-     [fmpp] next:count:6
-     [fmpp] logtext:next:test warning U4010
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:1
-     [fmpp] datalist size1
-     [fmpp] next:count:7
-     [fmpp] logtext:next:make[10]: ***abcd
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:1
-     [fmpp] datalist size1
-     [fmpp] next:count:8
-     [fmpp] logtext:next:make[10]: abcd not remade because of errors
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:1
-     [fmpp] datalist size1
-     [fmpp] next:count:9
-     [fmpp] logtext:next:ERROR: build error
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:1
-     [fmpp] datalist size1
-     [fmpp] next:count:10
-     [fmpp] logtext:next:ERROR EC95940: ec error
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:1
-     [fmpp] datalist size1
-     [fmpp] next:count:11
-     [fmpp] logtext:next:Errors caused tool to abort. asdfasdf
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:1
-     [fmpp] datalist size1
-     [fmpp] next:count:12
-     [fmpp] logtext:next:test no rule to make target
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:1
-     [fmpp] datalist size1
-     [fmpp] next:count:13
-     [fmpp] logtext:next:ERROR,.*no rule to make.*,
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:1
-     [fmpp] datalist size1
-     [fmpp] next:count:14
-     [fmpp] logtext:next:ERROR	testing
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:1
-     [fmpp] datalist size1
-     [fmpp] next:count:15
-     [fmpp] logtext:next:"abcd , line 100: Error: 100abcd:. abcd
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:1
-     [fmpp] datalist size1
-     [fmpp] next:count:16
-     [fmpp] logtext:next:test FATAL ERROR(S):abcd
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:1
-     [fmpp] datalist size1
-     [fmpp] next:count:17
-     [fmpp] logtext:next:): Missing file:
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:1
-     [fmpp] datalist size1
-     [fmpp] next:count:18
-     [fmpp] logtext:next:abcd FLEXlm error:
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:1
-     [fmpp] datalist size1
-     [fmpp] next:count:19
-     [fmpp] logtext:next:ABLD ERROR: 1234
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:1
-     [fmpp] datalist size1
-     [fmpp] next:count:20
-     [fmpp] logtext:next:BLDMAKE ERROR: 43543
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:1
-     [fmpp] datalist size1
-     [fmpp] next:count:21
-     [fmpp] logtext:next:fatal error U1077 error occured
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:1
-     [fmpp] datalist size1
-     [fmpp] next:count:22
-     [fmpp] logtext:next:test warning U4010
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:1
-     [fmpp] datalist size1
-     [fmpp] next:count:23
-     [fmpp] logtext:next:make[10]: ***abcd
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:1
-     [fmpp] datalist size1
-     [fmpp] next:count:24
-     [fmpp] logtext:next:make[10]: abcd not remade because of errors
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:1
-     [fmpp] datalist size1
-     [fmpp] next:count:25
-     [fmpp] logtext:next:ERROR: build error
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:1
-     [fmpp] datalist size1
-     [fmpp] next:count:26
-     [fmpp] logtext:next:ERROR EC95940: ec error
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:1
-     [fmpp] datalist size1
-     [fmpp] next:count:27
-     [fmpp] logtext:next:Errors caused tool to abort. asdfasdf
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:1
-     [fmpp] datalist size1
-     [fmpp] next:count:28
-     [fmpp] logtext:next:test no rule to make target
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:1
-     [fmpp] datalist size1
-     [fmpp] next:count:29
-     [fmpp] logtext:next:ERROR,.*no rule to make.*,
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:1
-     [fmpp] datalist size1
-     [fmpp] next:count:30
-     [fmpp] logtext:next:ERROR	testing
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:1
-     [fmpp] datalist size1
-     [fmpp] next:count:31
-     [fmpp] logtext:next:"abcd , line 100: Error: 100abcd:. abcd
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:1
-     [fmpp] datalist size1
-     [fmpp] next:count:32
-     [fmpp] logtext:next:WARNING:
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:2
-     [fmpp] datalist size1
-     [fmpp] next:count:33
-     [fmpp] logtext:next:LINK : warning
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:2
-     [fmpp] datalist size1
-     [fmpp] next:count:34
-     [fmpp] logtext:next::10: warning: cannot find matching deallocation function
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:2
-     [fmpp] datalist size1
-     [fmpp] next:count:35
-     [fmpp] logtext:next:100) : WARNING: TEST123
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:2
-     [fmpp] datalist size1
-     [fmpp] next:count:36
-     [fmpp] logtext:next:MAKEDEF WARNING: TEST
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:2
-     [fmpp] datalist size1
-     [fmpp] next:count:37
-     [fmpp] logtext:next:TEST 123 \\(10) : Warning: (400)
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:2
-     [fmpp] datalist size1
-     [fmpp] next:count:38
-     [fmpp] logtext:next:BLDMAKE WARNING: bldm warning
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:2
-     [fmpp] datalist size1
-     [fmpp] next:count:39
-     [fmpp] logtext:next:MAKEDEF WARNING: make warning
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:2
-     [fmpp] datalist size1
-     [fmpp] next:count:40
-     [fmpp] logtext:next:atest(100) : warning C aasdfa
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:2
-     [fmpp] datalist size1
-     [fmpp] next:count:41
-     [fmpp] logtext:next:testas 100: warning: test123
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:2
-     [fmpp] datalist size1
-     [fmpp] next:count:42
-     [fmpp] logtext:next:usage Usage Warning: warn1
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:2
-     [fmpp] datalist size1
-     [fmpp] next:count:43
-     [fmpp] logtext:next:abcd mwld.exe: abcd
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:2
-     [fmpp] datalist size1
-     [fmpp] next:count:44
-     [fmpp] logtext:next:Command line warning abcd
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:2
-     [fmpp] datalist size1
-     [fmpp] next:count:45
-     [fmpp] logtext:next:anything ERROR: bad relocation: test123
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:2
-     [fmpp] datalist size1
-     [fmpp] next:count:46
-     [fmpp] logtext:next:10 warning in component1
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:2
-     [fmpp] datalist size1
-     [fmpp] next:count:47
-     [fmpp] logtext:next:EventType: Error Source: SweepNTabcde
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:2
-     [fmpp] datalist size1
-     [fmpp] next:count:48
-     [fmpp] logtext:next:WARN	test
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:2
-     [fmpp] datalist size1
-     [fmpp] next:count:49
-     [fmpp] logtext:next:abcd :10: warning: cannot find matching deallocation function 100:note abcd
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:2
-     [fmpp] datalist size1
-     [fmpp] next:count:50
-     [fmpp] logtext:next:WARNING:
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:2
-     [fmpp] datalist size1
-     [fmpp] next:count:51
-     [fmpp] logtext:next:LINK : warning
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:2
-     [fmpp] datalist size1
-     [fmpp] next:count:52
-     [fmpp] logtext:next::10: warning: cannot find matching deallocation function
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:2
-     [fmpp] datalist size1
-     [fmpp] next:count:53
-     [fmpp] logtext:next:100) : WARNING: TEST123
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:2
-     [fmpp] datalist size1
-     [fmpp] next:count:54
-     [fmpp] logtext:next:MAKEDEF WARNING: TEST
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:2
-     [fmpp] datalist size1
-     [fmpp] next:count:55
-     [fmpp] logtext:next:TEST 123 \\(10) : Warning: (400)
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:2
-     [fmpp] datalist size1
-     [fmpp] next:count:56
-     [fmpp] logtext:next:BLDMAKE WARNING: bldm warning
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:2
-     [fmpp] datalist size1
-     [fmpp] next:count:57
-     [fmpp] logtext:next:MAKEDEF WARNING: make warning
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:2
-     [fmpp] datalist size1
-     [fmpp] next:count:58
-     [fmpp] logtext:next:atest(100) : warning C aasdfa
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:2
-     [fmpp] datalist size1
-     [fmpp] next:count:59
-     [fmpp] logtext:next:testas 100: warning: test123
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:2
-     [fmpp] datalist size1
-     [fmpp] next:count:60
-     [fmpp] logtext:next:usage Usage Warning: warn1
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:2
-     [fmpp] datalist size1
-     [fmpp] next:count:61
-     [fmpp] logtext:next:abcd mwld.exe: abcd
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:2
-     [fmpp] datalist size1
-     [fmpp] next:count:62
-     [fmpp] logtext:next:Command line warning abcd
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:2
-     [fmpp] datalist size1
-     [fmpp] next:count:63
-     [fmpp] logtext:next:anything ERROR: bad relocation: test123
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:2
-     [fmpp] datalist size1
-     [fmpp] next:count:64
-     [fmpp] logtext:next:10 warning in component1
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:2
-     [fmpp] datalist size1
-     [fmpp] next:count:65
-     [fmpp] logtext:next:EventType: Error Source: SweepNTabcde
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:2
-     [fmpp] datalist size1
-     [fmpp] next:count:66
-     [fmpp] logtext:next:WARN	test
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:2
-     [fmpp] datalist size1
-     [fmpp] next:count:67
-     [fmpp] logtext:next:abcd :10: warning: cannot find matching deallocation function 100:note abcd
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:2
-     [fmpp] datalist size1
-     [fmpp] next:count:68
-     [fmpp] logtext:next:mingw_make.exe: error
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:3
-     [fmpp] datalist size1
-     [fmpp] next:count:69
-     [fmpp] logtext:next:mingw_make.exe: error
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:3
-     [fmpp] datalist size1
-     [fmpp] next:count:70
-     [fmpp] logtext:next:REMARK: 
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:4
-     [fmpp] datalist size1
-     [fmpp] next:count:71
-     [fmpp] logtext:next:INFO:
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:4
-     [fmpp] datalist size1
-     [fmpp] next:count:72
-     [fmpp] logtext:next:anything Command line warning D4025 : test
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:4
-     [fmpp] datalist size1
-     [fmpp] next:count:73
-     [fmpp] logtext:next:REMARK: test remark anything
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:4
-     [fmpp] datalist size1
-     [fmpp] next:count:74
-     [fmpp] logtext:next:EventType: Error Source: GNU Make.
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:4
-     [fmpp] datalist size1
-     [fmpp] next:count:75
-     [fmpp] logtext:next:INFO: any info match
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:4
-     [fmpp] datalist size1
-     [fmpp] next:count:76
-     [fmpp] logtext:next:REMARK: 
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:4
-     [fmpp] datalist size1
-     [fmpp] next:count:77
-     [fmpp] logtext:next:INFO:
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:4
-     [fmpp] datalist size1
-     [fmpp] next:count:78
-     [fmpp] logtext:next:anything Command line warning D4025 : test
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:4
-     [fmpp] datalist size1
-     [fmpp] next:count:79
-     [fmpp] logtext:next:REMARK: test remark anything
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:4
-     [fmpp] datalist size1
-     [fmpp] next:count:80
-     [fmpp] logtext:next:EventType: Error Source: GNU Make.
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:4
-     [fmpp] datalist size1
-     [fmpp] next:count:81
-     [fmpp] logtext:next:INFO: any info match
-     [fmpp] checking any more element
-     [fmpp] indexmap size5
-     [fmpp] QueryModel:4
-     [fmpp] datalist size1
-     [fmpp] File processed.
-
-BUILD SUCCESSFUL
-Total time: 1 second
Binary file buildframework/helium/external/helium-antlib/metadata/tests/output/all_ido_logs.db has changed
--- a/buildframework/helium/external/helium-antlib/metadata/tests/output1.txt	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,84 +0,0 @@
-Buildfile: functionality\test_regex.ant.xml
-
-test-readdata:
-     [fmpp] args.size:6
-     [fmpp] arg-list:E:\Build_E\eclipse_fasym013\helium-antlib-trunk\sf\metadata\tests\output\log_all_filterfile.db
-     [fmpp] arg-list:LOG_ALL_FILTERFILE
-     [fmpp] arg-list:10
-     [fmpp] arg-list:-1
-     [fmpp] arg-list:where priority='WARNING'
-     [fmpp] arg-list:true
-     [fmpp] offset-1
-     [fmpp] recordLimit10
-     [fmpp] Initializing the db
-     [fmpp] updating queries
-     [fmpp] adding table details
-     [fmpp] adding record size
-     [fmpp] updateQuery:-1
-     [fmpp] sqlquery:SELECT COUNT(*) AS COUNT FROM LOG_ALL_FILTERFILE where priority='WARNING'
-     [fmpp] record count:36
-     [fmpp] recordcount:36
-     [fmpp] updatequery:10
-     [fmpp] maxoffset:4
-     [fmpp] iterator constructor called
-     [fmpp] checking any more element
-     [fmpp] SQLTemplateModelIterator:offset:0
-     [fmpp] adding table details
-     [fmpp] adding record size
-     [fmpp] updateQuery:0
-     [fmpp] adding records
-     [fmpp] actual query:where priority='WARNING'
-     [fmpp] sql querySELECT * from LOG_ALL_FILTERFILE where priority='WARNING' limit 10 offset 0;
-     [fmpp] no. of columns from query result:3
-     [fmpp] record size in getRecords:10
-     [fmpp] actual query:where priority='WARNING'
-     [fmpp] sql querySELECT * from LOG_ALL_FILTERFILE where priority='WARNING' limit 10 offset 0;
-     [fmpp] no. of columns from query result:3
-     [fmpp] record size in getRecords:10
-     [fmpp] checking any more element
-     [fmpp] SQLTemplateModelIterator:offset:10
-     [fmpp] adding table details
-     [fmpp] adding record size
-     [fmpp] updateQuery:10
-     [fmpp] adding records
-     [fmpp] actual query:where priority='WARNING'
-     [fmpp] sql querySELECT * from LOG_ALL_FILTERFILE where priority='WARNING' limit 10 offset 10;
-     [fmpp] no. of columns from query result:3
-     [fmpp] record size in getRecords:10
-     [fmpp] actual query:where priority='WARNING'
-     [fmpp] sql querySELECT * from LOG_ALL_FILTERFILE where priority='WARNING' limit 10 offset 10;
-     [fmpp] no. of columns from query result:3
-     [fmpp] record size in getRecords:10
-     [fmpp] checking any more element
-     [fmpp] SQLTemplateModelIterator:offset:20
-     [fmpp] adding table details
-     [fmpp] adding record size
-     [fmpp] updateQuery:20
-     [fmpp] adding records
-     [fmpp] actual query:where priority='WARNING'
-     [fmpp] sql querySELECT * from LOG_ALL_FILTERFILE where priority='WARNING' limit 10 offset 20;
-     [fmpp] no. of columns from query result:3
-     [fmpp] record size in getRecords:10
-     [fmpp] actual query:where priority='WARNING'
-     [fmpp] sql querySELECT * from LOG_ALL_FILTERFILE where priority='WARNING' limit 10 offset 20;
-     [fmpp] no. of columns from query result:3
-     [fmpp] record size in getRecords:10
-     [fmpp] checking any more element
-     [fmpp] SQLTemplateModelIterator:offset:30
-     [fmpp] adding table details
-     [fmpp] adding record size
-     [fmpp] updateQuery:30
-     [fmpp] adding records
-     [fmpp] actual query:where priority='WARNING'
-     [fmpp] sql querySELECT * from LOG_ALL_FILTERFILE where priority='WARNING' limit 10 offset 30;
-     [fmpp] no. of columns from query result:3
-     [fmpp] record size in getRecords:6
-     [fmpp] actual query:where priority='WARNING'
-     [fmpp] sql querySELECT * from LOG_ALL_FILTERFILE where priority='WARNING' limit 10 offset 30;
-     [fmpp] no. of columns from query result:3
-     [fmpp] record size in getRecords:6
-     [fmpp] checking any more element
-     [fmpp] File processed.
-
-BUILD SUCCESSFUL
-Total time: 0 seconds
--- a/buildframework/helium/external/helium-antlib/metadata/tests/test_metadata.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : test_metadata.ant.xml 
-Part of     : Helium AntLib
-
-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="test-metadata" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
-    <description>Helium antlib metadata tests.</description>
-
-    <path id="lib.path">
-        <fileset dir="${basedir}/../../antlibs" includes="*.jar"/>
-    </path>
-    <taskdef resource="com/nokia/helium/metadata/ant/antlib.xml" uri="http://www.nokia.com/helium"
-             classpath="../../bin/helium-metadata.jar" />
-    <taskdef name="fmpp" classname="fmpp.tools.AntTask" classpathref="lib.path" onerror="report"/>
-
-
-    <target name="check-metadata">
-        <hlm:metadatarecord srcfile="${basedir}\data\gensis.txt" database="${basedir}\out.sqlite">
-            <fileset dir="data" includes="gensis.txt"/>
-            <hlm:textlogparser>
-                <!-- Single set defined by csv file 
-                <hlm:metadatafilterset filterFile="${basedir}\data\common.csv"/>-->
-                <!-- Set defined by nested single filter and another nested set -->
-                <hlm:metadatafilterset>
-                    <hlm:metadatafilter priority="error" regex=".*Warning: Could not find file.*" description="Test pattern for missing file."/>
-                    <!--<hlm:metadatafilterset>
-                        <hlm:metadatafilter priority="warning" regex="File not found" description="Test pattern for missing file."/>
-                    </hlm:metadatafilterset>-->
-                </hlm:metadatafilterset>
-            </hlm:textlogparser>
-        </hlm:metadatarecord>
-        <!--<au:assertLogContains text="Successfully executed codescanner"/>
-        <au:assertLogContains text="Output format: xml,html"/>
-        <au:assertFileExists file="${codescanner.output.dir}/problemIndex.xml"/>-->
-    </target>
-    
-    
-    <target name="render-scanlog">
-        <property name="build.logs.dir" value="${bmd.test.project.dir}/test_bmd" />
-        <fmpp sourceFile="${basedir}/../src/templates/readdata.xml.ftl"
-                      outputFile="${basedir}/readdata.xml">
-            <freemarkerLinks expandProperties="yes">
-                macro: ${basedir}/../src/templates
-            </freemarkerLinks>
-            <data>
-                templatedir: "${basedir}/src/templates"
-                template: "components_status.xml.ftl"
-                dbPath: "tests/out.sqlite"
-                countOnly: "true"
-                tableName: "out"
-                queryString: "where priority='WARNING' or priority='error'"
-                limit: "500"
-                ant: antProperties()
-            </data>
-        </fmpp>
-    </target>
-
-</project>
-
-
--- a/buildframework/helium/external/helium-antlib/metadata/tests/test_validity.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,67 +0,0 @@
-<?xml version="1.0"?>
-<!-- 
-============================================================================ 
-Name        : test_diamonds.ant.xml 
-Part of     : Helium AntLib
-
-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="test-metadata-validity" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
-    <description>Helium Antlib diamonds unittests.</description>
-    
-    <dirname property="project.dir" file="${ant.file.test-metadata-validity}" />
-
-    <taskdef resource="com/nokia/helium/metadata/ant/antlib.xml" uri="http://www.nokia.com/helium" />
-    <taskdef name="fmpp" classname="fmpp.tools.AntTask"  onerror="report"/>
-
-    <!--
-    <hlm:metadatafilterset id="all-regex-filterfile">
-        <metadatafilterset filterfile="${project.dir}/../data/common.csv" />
-    </hlm:metadatafilterset>
-
-    <target name="test-all-regex-filterfile">
-        <echo message="all regular expression validation" />
-        <echo message="database:${project.dir}/../output/log_all_filterfile.sqlite" />
-        <hlm:metadatarecord database="${project.dir}/../output/log_all_filterfile.sqlite">
-            <fileset dir="${project.dir}/../data/">
-                <include  name="all*.log"/>
-            </fileset>
-           <hlm:saxlogparser>
-                <metadatafilterset refid="all-regex-filterfile" />
-           </hlm:saxlogparser>
-        </hlm:metadatarecord>
-    </target>
-
-    <hlm:metadatafilterset id="all-regex-combined">
-        <metadatafilter priority="WARNING" regex=".*warning U4010" description="mingw error" />
-        <metadatafilterset filterfile="${project.dir}/../data/common.csv" />
-    </hlm:metadatafilterset>
-
-    <target name="test-all-regex-combined">
-        <echo message="all regular expression validation" />
-        <echo message="database:${project.dir}/../output/log_all_combined.sqlite" />
-        <hlm:metadatarecord database="${project.dir}/../output/log_all_combined.sqlite">
-            <fileset dir="${project.dir}/../data/">
-                <include  name="all*.log"/>
-            </fileset>
-            <hlm:saxlogparser>
-                <metadatafilterset refid="all-regex-combined" />
-            </hlm:saxlogparser>
-        </hlm:metadatarecord>
-    </target>
-    -->
-</project>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/build.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : build.xml 
+Part of     : Helium AntLib
+
+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="pythoncore">
+    <property name="name" value="pythoncore"/>
+    <property name="builder.dir" location="../../builder"/>
+    <import file="${builder.dir}/python/macros.ant.xml"/>
+    
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/ivy.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+============================================================================ 
+Name        : ivy.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:
+
+============================================================================  
+-->
+<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
+    <info
+        organisation="com.nokia.helium"
+        module="pythoncore"
+        status="integration">        
+  </info>
+  <publications>
+      <artifact type="egg"/>
+  </publications>
+  <dependencies>
+      <dependency org="amara" name="amara" rev="latest.integration" conf="default" />
+      <dependency org="lxml" name="lxml" rev="latest.integration" conf="default" />
+      <dependency org="org.apache.commons" name="commons-io" rev="latest.integration" conf="default" />
+      <dependency org="mocker" name="mocker" rev="latest.integration" conf="default" />
+      <dependency org="path" name="path" rev="latest.integration" conf="default" />
+      <dependency org="jinja" name="Jinja2" rev="latest.integration" conf="default" />
+      <dependency org="threadpool" name="threadpool" rev="latest.integration" conf="default" />
+      <dependency org="dom4j" name="dom4j" rev="latest.integration" conf="default" />
+  </dependencies>
+</ivy-module>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/CreateZipInput.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,75 @@
+#============================================================================ 
+#Name        : CreateZipInput.py 
+#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:
+#===============================================================================
+
+""" Script that generate makefile for single archiving configuration. """
+import os
+import tempfile
+# setting the egg cache directory to a pid specific location.
+# this should prevent issues with concurrent threads.
+if not os.environ.has_key('PYTHON_EGG_CACHE') or os.environ['PYTHON_EGG_CACHE'] == None: 
+    os.environ['PYTHON_EGG_CACHE'] = tempfile.gettempdir() + "/" + str(os.getpid())
+
+import configuration
+import archive
+import logging
+import sys
+from optparse import OptionParser
+
+_logger = logging.getLogger('CreateZipInput')
+_logger.setLevel(logging.INFO)
+
+def main():
+    """ The application main. """
+    cli = OptionParser(usage="%prog [options]")
+    cli.add_option("--filename", help="Configuration file") 
+    cli.add_option("--config", help="Config to load (spec name).")
+    cli.add_option("--id", help="Config number to execute", type="int")
+    cli.add_option("--output", help="Output file")
+    cli.add_option("--writertype", help="Writer Type")
+                   
+    opts, dummy_args = cli.parse_args()
+    if not opts.filename:
+        cli.print_help()
+        sys.exit(-1)
+    if not opts.config:
+        cli.print_help()
+        sys.exit(-2)
+    if opts.id == None:
+        cli.print_help()
+        sys.exit(-3)
+    if not opts.output:
+        cli.print_help()
+        sys.exit(-4)
+    if not opts.writertype:
+        cli.print_help()
+        sys.exit(-5)
+
+    _logger.info("Loading %s..." % opts.filename) 
+    builder = configuration.NestedConfigurationBuilder(open(opts.filename, 'r'))
+    configset = builder.getConfiguration()
+    _logger.info("Getting %s..." % opts.config)
+    configs = configset.getConfigurations(opts.config)
+
+    if len(configs) > 0 and int(opts.id) >= 0 and int(opts.id) < len(configs):
+        _logger.info("Generating %s.%s as %s..." % (opts.config, opts.id, opts.output))
+        prebuilder = archive.ArchivePreBuilder(configuration.ConfigurationSet(configs), opts.config, opts.writertype, int(opts.id))
+        prebuilder.write(opts.output)
+
+if __name__ == "__main__":
+    main()
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/amara.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,153 @@
+#============================================================================ 
+#Name        : minidomamara.py 
+#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:
+#===============================================================================
+
+# pylint: disable-msg=E1103
+import sys
+if 'java' in sys.platform:
+    import xml.dom.minidom
+    import urllib
+    
+    def parse(f):
+        return MinidomAmara(f)
+    
+    def create_document(name=None):
+        impl = xml.dom.minidom.getDOMImplementation()
+        newdoc = impl.createDocument(None, name, None)
+        return MinidomAmara(newdoc)
+    
+    class MinidomAmara(object):
+        """ amara api using minidom """
+        
+        def __init__(self, dom, parent=None):
+            self.parent = parent
+            if isinstance(dom, file):
+                self.dom = xml.dom.minidom.parse(dom)
+            elif isinstance(dom, basestring):
+                if dom.startswith('file:///'):
+                    dom = urllib.urlopen(dom).read()
+                self.dom = xml.dom.minidom.parseString(dom)
+            else:
+                self.dom = dom
+        
+        def __getitem__(self, name):
+            return self.__getattr__(name)
+        
+        def __getattr__(self, attr):
+            if isinstance(attr, basestring):
+                res = self.dom.getElementsByTagName(attr)
+                if len(res) == 0:
+                    if hasattr(self.dom, 'documentElement'):
+                        val = self.dom.documentElement.getAttribute(attr)
+                    else:
+                        val = self.dom.getAttribute(attr)
+                    if val == '':
+                        raise Exception(attr + ' not found')
+                    return val
+                return MinidomAmara(res[0], self.dom)
+            return MinidomAmara(self.parent.getElementsByTagName(self.dom.tagName)[attr])
+    
+        def __iter__(self):
+            for entry in self.parent.getElementsByTagName(self.dom.tagName):
+                yield MinidomAmara(entry)
+    
+        def __str__(self):
+            text = ''
+            for t in self.dom.childNodes:
+                if t.nodeType == t.TEXT_NODE and t.data != None:
+                    text = text + t.data
+            return text
+        
+        def xml(self, out=None, indent=True, omitXmlDeclaration=False, encoding=''):
+            if out:
+                out.write(self.dom.toprettyxml())
+            if indent:
+                return self.dom.toprettyxml()
+            return self.dom.toxml()
+        
+        def xml_append_fragment(self, text):
+            self.dom.appendChild(xml.dom.minidom.parseString(text).documentElement)
+    
+        def xml_set_attribute(self, name, value):
+            self.dom.setAttribute(name, value)
+        
+        def _getxml_children(self):
+            l = []
+            for e in self.dom.childNodes:
+                if e.nodeType == e.ELEMENT_NODE:
+                    l.append(MinidomAmara(e))
+            return l
+        
+        def _getxml_attributes(self):
+            l = self.dom.attributes
+            out = {}
+            for i in range(l.length):
+                out[l.item(i).name] = l.item(i).nodeValue
+            return out
+        
+        def xml_append(self, value):
+            if hasattr(self.dom, 'documentElement') and self.dom.documentElement != None:
+                value.dom.documentElement = self.dom.documentElement.appendChild(value.dom.documentElement)
+            else:
+                value.dom.documentElement = self.dom.appendChild(value.dom.documentElement)
+        
+        def xml_create_element(self, name, content=None, attributes=None):
+            e = create_document(name)
+            if attributes:
+                for a in attributes.keys():
+                    e[name].dom.setAttribute(a, attributes[a])
+            if content:
+                impl = xml.dom.minidom.getDOMImplementation()
+                newdoc = impl.createDocument(None, None, None)
+                e[name].dom.appendChild(newdoc.createTextNode(content))
+            return e
+        
+        def _getnodetype(self):
+            return self.dom.nodeType
+        def _getnodename(self):
+            return self.dom.nodeName
+            
+        nodeType = property(_getnodetype)
+        nodeName = property(_getnodename)
+        childNodes = property(_getxml_children)
+        xml_children = property(_getxml_children)
+        xml_attributes = property(_getxml_attributes)
+        
+        def __eq__(self, o):
+            return str(self) == o
+        
+        def __len__(self):
+            return len(self.parent.getElementsByTagName(self.dom.tagName))
+        
+        def xml_xpath(self, xpath):
+            import java.io.ByteArrayInputStream
+            import org.dom4j.io.SAXReader
+            import org.dom4j.DocumentHelper
+            
+            stream = java.io.ByteArrayInputStream(java.lang.String(self.dom.toxml()).getBytes("UTF-8"))    
+            xmlReader = org.dom4j.io.SAXReader()
+            doc = xmlReader.read(stream)
+            xpath = org.dom4j.DocumentHelper.createXPath(xpath)
+            signalNodes = xpath.selectNodes(doc)
+            iterator = signalNodes.iterator()
+            out = []
+            while iterator.hasNext():
+                p = iterator.next()
+                out.append(MinidomAmara(p.asXML()))
+            return out
+            
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/ant.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,99 @@
+#============================================================================ 
+#Name        : ant.py 
+#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:
+#===============================================================================
+
+""" This module defines helper functions to be used in python Ant tasks. """
+
+
+import logging
+import re
+import os.path
+
+
+def get_property(property_name):
+    """ This function return None if a property has not been replaced by Ant. """
+    if len(property_name) > 0 and (property_name.startswith('${') or property_name.startswith('@{')):
+        return None
+    return property_name
+
+
+def get_previous_build_number(build_number):
+    """ Determines the previous build number if possible. """
+    match = re.match(r'(?P<bn_txt>\w[a-zA-Z0-9_.]*\.)?(?P<bn_num>\d+)', build_number)
+    if match != None:
+        bn_txt = match.group('bn_txt')
+        bn_num = match.group('bn_num')
+        try:
+            bn_num_int = int(bn_num)
+            if bn_num_int > 1:
+                previous_bn_num_int = bn_num_int - 1
+                previous_bn_num = str(previous_bn_num_int)
+                if bn_num.startswith('0'):
+                    previous_bn_num = previous_bn_num.rjust(len(bn_num), '0')
+                previous_bn = previous_bn_num
+                if bn_txt != None:
+                    previous_bn = '%s%s' % (bn_txt, previous_bn_num)
+                return previous_bn
+        except ValueError:
+            logging.warning('Parsing of Ant build number failed.')
+    return ''
+    
+    
+def get_next_build_number(build_number):
+    """ Determines the next build number if possible. """
+    match = re.match(r'(?P<bn_txt>\w[a-zA-Z0-9_.]*\.)?(?P<bn_num>\d+)', build_number)
+    if match != None:
+        bn_txt = match.group('bn_txt')
+        bn_num = match.group('bn_num')
+        try:
+            bn_num_int = int(bn_num)
+            previous_bn_num_int = bn_num_int + 1
+            previous_bn_num = str(previous_bn_num_int).rjust(len(bn_num), '0')
+            previous_bn = previous_bn_num
+            if bn_txt != None:
+                previous_bn = '%s%s' % (bn_txt, previous_bn_num)
+            return previous_bn
+        except ValueError:
+            logging.warning('Parsing of Ant build number failed.')
+    return ''
+
+def get_filesets_content(project, task, elements):
+    """ Extract all files selected by the filesets in a script's elements. """
+    for eid in range(elements.get("fileset").size()):
+        dirscanner = elements.get("fileset").get(int(eid)).getDirectoryScanner(project)
+        dirscanner.scan()
+        for jfilename in dirscanner.getIncludedFiles():
+            filename = str(jfilename)
+            task.log("Parsing %s" % filename)
+            filename = os.path.join(str(dirscanner.getBasedir()), filename)
+
+
+class AntHandler(logging.Handler):
+    """ Implement a logger hanlder that prints error message using an Ant object.
+        See Python documentation on how to use it.
+        e.g:
+        logging.getLogger("").addHandler(AntHandler(anttask))
+        This line will redirect messages to Ant logging system.
+    """
+    def __init__(self, task, level=logging.NOTSET):
+        logging.Handler.__init__(self, level)
+        self._task = task
+    
+    def emit(self, record):
+        """ Handle the record using Ant. """
+        self._task.log(str(self.format(record)))
Binary file buildframework/helium/external/helium-antlib/python/pythoncore/lib/archive/__init__$py.class has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/archive/__init__.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,21 @@
+#============================================================================ 
+#Name        : __init__.py 
+#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:
+#===============================================================================
+
+""" The archive module. """
+from archive.builders import ArchivePreBuilder
Binary file buildframework/helium/external/helium-antlib/python/pythoncore/lib/archive/builders$py.class has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/archive/builders.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,217 @@
+#============================================================================ 
+#Name        : builders.py 
+#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:
+#===============================================================================
+
+"""
+This modules contains the archive builders.
+An archive builder is a class that is able to use data from a configuration
+and generate a set of shell commands.
+"""
+import archive.tools
+import archive.selectors
+import archive.mappers
+import archive.scanners
+import logging
+import pathaddition
+import buildtools
+import os
+import codecs
+import fileutils
+
+_logger = logging.getLogger('archive')
+_logger.setLevel(logging.INFO)
+
+class ArchivePreBuilder(buildtools.PreBuilder):
+    """ Processes an archive build specification. """
+    def __init__(self, config_set, config_name, writerType='ant', index = None):
+        buildtools.PreBuilder.__init__(self, config_set)
+        self.configs = config_set.getConfigurations()
+        self.spec_name = config_name
+        self.index = index
+        self.writerType = writerType
+        self.listToFindPrefix = []
+
+    def build_manifest(self, config):
+        """ Generate a manifest file from the a configuration. """
+        _logger.info('Processing archive config: ' + config['name'])
+        _scanners = archive.scanners.get_scanners(config.get_list('scanners', ['default']), config)
+        
+        content_list = {}
+    
+        if not os.path.exists(config['temp.build.dir']):
+            os.makedirs(config['temp.build.dir'])
+        manifest_file_path = os.path.abspath(os.path.join(config['temp.build.dir'], config['name'] + '_includefile.txt'))
+        out = codecs.open(manifest_file_path, 'w+', 'utf-8')
+        
+        # zip.root.dir can be set to root.dir so that when zipping from another dir,
+        # the manifest is relative to that dir
+        (drive, root_dir) = os.path.splitdrive(os.path.normpath(config.get('zip.root.dir', config['root.dir'])))
+        _logger.info("   * Scanning")
+        for scanner in _scanners:
+            _logger.debug("Scanner %s" % scanner)
+            for subpath in scanner.scan():
+                (drive, subpath) = os.path.splitdrive(subpath)
+                if pathaddition.relative.abs2rel(subpath, root_dir):
+                    _logger.debug(subpath)
+                    subpath = subpath[len(root_dir):]
+                    if subpath.startswith(os.sep):
+                        subpath = subpath[1:]
+                # normpath is to remove any occurances of "..\.." before checking for duplicates
+                subpath = os.path.normpath(subpath)
+                if subpath not in content_list:
+                    out.write(u"".join([subpath, u'\n']))
+                    content_list[subpath] = True
+    
+        out.close()
+        return manifest_file_path
+
+    def manifest_to_commands(self, config, manifest):
+        """ Generate return a command list. Commands are stored in a two dimension array."""
+        _logger.info("   * Generating commands")
+        tool = archive.tools.get_tool(config['archive.tool'])
+        mapper_name = 'default'
+        if config.has_key('mapper'):
+            mapper_name = config['mapper']
+        mapper = archive.mappers.get_mapper(mapper_name, config, tool)
+        return mapper.create_commands(manifest)
+    
+    def create_command_list(self, commands):
+        """ Convert a two dimensions array of command to a CommandList object. """
+        stages = buildtools.CommandList()
+        newstage = False
+        for cmds_stage in commands:
+            _logger.debug("Stage: %s" % cmds_stage)
+            for cmd in cmds_stage:
+                stages.addCommand(cmd, newstage)
+                newstage = False
+            newstage = True
+        return stages
+    
+    def writeTopLevel(self, build_file_path, output_path, xml_file):
+        """Creates a build tool config makefile that executes archieve build."""
+        config_name_list = []
+        for config in self.configs:
+            config_name_list.append(config['name'])
+            if not os.path.exists(config['archives.dir']):
+                os.makedirs(config['archives.dir'])
+            
+        writer = buildtools.get_writer(self.writerType, build_file_path)
+        writer.writeTopLevel(config_name_list, self.spec_name, output_path, xml_file)
+        writer.close()
+
+    def getCommonUncRoots(self, uncPaths):
+        commonRoots = {}
+        for p in uncPaths:
+            commonRoots["\\\\" + os.sep.join(p[2:].split(os.sep)[0:2]) + os.sep] = 1
+        return commonRoots.keys()
+
+    def getPrefix(self, dir, commonUncRoots):
+        for root in commonUncRoots:
+            if dir.startswith(root):
+                return root
+        raise Exception("Could not find root for %s." % dir)
+    
+    def checkRootDirValue(self, builder, parse_xml_file, build_drive, config_type):
+        """Checks UNC path in root.dir and adds the substituted drive into EMAKEROOT."""
+        substDrives = []
+        if build_drive:
+            substDrives.append(build_drive + os.sep)
+        
+        # Read all the config's root.dir to get UNC Path if any
+        # Of course this is only on windows platform
+        if os.sep == '\\':
+            for config in self.configs:
+                (drive, root_dir) = os.path.splitdrive(os.path.normpath(config['root.dir']))
+                _logger.debug("drive=%s, root_dir=%s" % (drive, root_dir))
+                if drive == "":
+                    self.listToFindPrefix.append(root_dir)
+        
+            commonUncRoots = self.getCommonUncRoots(self.listToFindPrefix)
+            _logger.debug("Common roots %s" % (commonUncRoots))
+            driveMapping = {}
+            for root in commonUncRoots:
+                _logger.info("Substing %s" % (root))
+                driveMapping[root] = self.substUncPath(root)
+                _logger.debug("%s subst as %s" % (root, driveMapping[root]))
+                substDrives.append(driveMapping[root] + os.sep)
+
+            for config in self.configs:
+                (drive, root_dir) = os.path.splitdrive(os.path.normpath(config['root.dir']) + os.sep) 
+                if drive == "":
+                    for root in driveMapping:
+                        if root_dir.startswith(root):
+                            config['root.dir'] = os.path.normpath(driveMapping[root] + os.sep + root_dir[len(root):len(root_dir)])
+                            _logger.info("Updated %s in %s" % (root_dir, config['root.dir']))
+                            config['unsubst.dir'] = driveMapping[root]
+                            break                
+                elif drive != build_drive:
+                    if config['root.dir'] not in substDrives:
+                        substDrives.append(config['root.dir'])
+        else:
+            for config in self.configs:
+                if config['root.dir'].startswith('\\\\'):
+                    _logger.error("UNC path are not supported under this platform: %s" % (config['root.dir']))
+        builder.writeToXML(parse_xml_file, self.configs, config_type)
+        return os.path.pathsep.join(substDrives)
+       
+
+    def substUncPath(self, path):
+        freedrive = fileutils.get_next_free_drive()
+        fileutils.subst(freedrive, path)
+        return freedrive
+
+    def cleanupSubstDrives(self):
+        # Read all the config's root.dir to get UNC Path if any
+        drives = {}
+        for config in self.configs:
+            _logger.debug("Checking configuration...")
+            _logger.debug("unsubst.dir: %s" % 'unsubst.dir' in config)
+            _logger.debug("drives: %s" % drives)
+            if 'unsubst.dir' in config and not config['unsubst.dir'] in drives:
+                _logger.debug("Found drive to unsubst %s" % (config['unsubst.dir']))
+                self.unSubStituteDrives(config['unsubst.dir'])
+                drives[config['unsubst.dir']] = config['unsubst.dir']
+                    
+    def unSubStituteDrives(self, drive):
+        _logger.info("Unsubsting %s" % (drive))
+        fileutils.unsubst(drive)
+        
+    def write(self, outputname):
+        """Creates a build tool configuration file that executes archive build operations.
+
+        The input to each archive build operation is an includefile that lists
+        all the files to be included in the archive. These text files are
+        generated before the build file by scanning the filesystem.
+        """
+        stages = buildtools.CommandList()
+
+        commands = []
+        if self.index > len(self.configs):
+            raise Exception("index not found in configuration")
+        config = self.configs[self.index]
+        stages = self.manifest_to_commands(config, self.build_manifest(config))
+                
+        # merging the commands            
+        while len(commands) < len(stages):
+            commands.append([])
+        for i in range(len(stages)):
+            commands[i].extend(stages[i])
+
+        writer = buildtools.get_writer(self.writerType, outputname)
+        writer.write(self.create_command_list(commands))
+        writer.close()
Binary file buildframework/helium/external/helium-antlib/python/pythoncore/lib/archive/mappers$py.class has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/archive/mappers.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,438 @@
+#============================================================================ 
+#Name        : mappers.py 
+#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:
+#===============================================================================
+
+""" Archive mappers that map how the input files are divided into archives.
+
+
+"""
+
+import buildtools
+import os
+import codecs
+import fileutils
+import logging
+import symrec
+import re
+import csv
+import shutil
+
+_logger = logging.getLogger('logger.mappers')
+_logger.setLevel(logging.INFO)
+
+# Default value for missing/invalid policy files.
+MISSING_POLICY = "9999"
+
+
+class Mapper(object):
+    """ Mapper Abstract class. Any custom implementation must derive it!.
+    
+    It handles metadata creation.
+    """
+    
+    def __init__(self, config, tool):
+        self._tool = tool
+        self._config = config
+        self._metadata = None
+        if not os.path.exists(self._config['archives.dir']):
+            os.makedirs(self._config['archives.dir'])
+        if self._config.has_key("grace.metadata") and self._config.get_boolean("grace.metadata", False):
+            if self._config.has_key("grace.template") and os.path.exists(self._config["grace.template"]) and \
+             not os.path.exists(os.path.join(self._config['archives.dir'], self._config['name'] + ".metadata.xml")):
+                shutil.copy(config["grace.template"], os.path.join(self._config['archives.dir'], self._config['name'] + ".metadata.xml"))
+            self._metadata = symrec.ReleaseMetadata(os.path.join(self._config['archives.dir'], self._config['name']+ ".metadata.xml"),
+                                       service=self._config['grace.service'],
+                                       product=self._config['grace.product'],
+                                       release=self._config['grace.release'])
+            self._metadata.save()            
+        
+    def declare_package(self, filename, extract="single"):
+        """ Add a package to the metadata file. """
+        if self._metadata is None:
+            return
+        self._metadata.add_package(os.path.basename(filename), extract=extract, filters=self._config.get_list('grace.filters', None), default=self._config.get_boolean('grace.default', True))
+        self._metadata.save()
+    
+    def create_commands(self, manifest):
+        """ Return a list of command list. """
+        return [[self._tool.create_command(self._config['name'], manifests=[manifest])]]
+        
+    
+class DefaultMapper(Mapper):
+    """ The default mapper. It splits the content based on size characteristics.
+    
+    'the max.files.per.archive' and 'max.uncompressed.size' properties define how the input files
+    are split between a number of part zips.
+    """
+    def __init__(self, config, archiver):
+        """ Initialization. """
+        Mapper.__init__(self, config, archiver)
+
+    def create_commands(self, manifest):
+        """ Return a list of command lists. """
+        result = []
+
+        _logger.info("  * Input manifest: " + manifest)
+        manifests = self._split_manifest_file(self._config['name'], manifest)
+        if not os.path.exists(self._config['archives.dir']):
+            _logger.info("  * Mkdir " + self._config['archives.dir'])
+            os.makedirs(self._config['archives.dir'])
+
+        for manifest in manifests:
+            _logger.info("  * Creating command for manifest: " + manifest)
+            filename = os.path.join(self._config['archives.dir'], os.path.splitext(os.path.basename(manifest))[0])
+            if len(manifests) == 1:
+                filename = os.path.join(self._config['archives.dir'], self._config['name'])
+            _logger.info("  * " + filename + self._tool.extension())
+            self.declare_package(filename + self._tool.extension(), self._config.get('grace.extract', 'single'))
+            result.extend(self._tool.create_command(self._config.get('zip.root.dir', self._config['root.dir']), filename, manifests=[manifest]))
+        
+        return [result]
+
+    def _split_manifest_file(self, name, manifest_file_path):
+        """ This method return a list of files that contain the content of the zip parts to create. """
+        filenames = []
+        
+        if (self._config.has_key('max.files.per.archive') or self._config.has_key('max.uncompressed.size')):
+            size = 0
+            files = 0
+            part = 0
+            filename = ""
+            output = None
+                        
+            if os.path.exists(self._config['root.dir']) and os.path.isdir(self._config['root.dir']):
+                curdir = os.path.abspath(os.curdir)
+                os.chdir(self._config.get('zip.root.dir', self._config['root.dir']))            
+                maxfiles = self._config.get('max.files.per.archive', 100000000)
+                _logger.info("Max number of files per archive: " + str(maxfiles))
+                max_uncompressed_size = self._config.get('max.uncompressed.size', 100000000)
+                _logger.info("Max uncompressed size per archive: " + str(max_uncompressed_size))
+                
+                file_handle = codecs.open(manifest_file_path, "r", "utf-8" )
+        
+                for line in file_handle.readlines():
+                    line = line.rstrip()
+        
+                    if(os.path.isfile(line)):
+                        if part == 0 or files == int(maxfiles) or size + os.path.getsize(line) >= int(max_uncompressed_size):
+                            if output != None:
+                                output.close()
+        
+                            size = 0
+                            files = 0
+                            part += 1
+        
+                            filename = "%s_part%02d" % (name, part)
+                            filenames.append(os.path.join(self._config['temp.build.dir'], filename + ".txt"))
+        
+                            output = codecs.open(os.path.join(self._config['temp.build.dir'], filename + ".txt"), 'w', "utf-8" )
+        
+                        files += 1
+                        size += os.path.getsize(line)
+        
+                        output.write(u"".join([line, u'\n']))
+                    elif(os.path.isdir(line)):
+                        if (len(os.listdir(line)) == 0):
+                            if part == 0 or files == int(maxfiles):
+                                if output != None:
+                                    output.close()
+        
+                                size = 0
+                                files = 0
+                                part += 1
+        
+                                filename = "%s_part%02d" % (name, part)
+                                filenames.append(os.path.join(self._config['temp.build.dir'], filename + ".txt"))
+                                
+                                output = open(os.path.abspath(os.path.join(self._config['temp.build.dir'], filename + ".txt")), 'w')
+        
+                            files += 1
+        
+                            output.write(u"".join([line, u'\n']))
+                    else:
+                        _logger.warning('Not recognized as file or directory: %s' % line)
+        
+                if output != None:
+                    output.close()
+        
+                file_handle.close()
+                os.chdir(curdir)
+        else:
+            filenames.append(manifest_file_path)
+        
+        return filenames
+
+
+class PolicyMapper(Mapper):
+    """ Implements a policy content mapper.
+    
+    It transforms a list of files into a list of commands with their inputs.
+    All files with policy 0 will be under the main archive.
+    All other files will get backed up by policy and then store into an second archive. 
+    """
+    
+    def __init__(self, config, archiver):
+        """ Initialization. """
+        Mapper.__init__(self, config, archiver)
+        self._policies = {}
+        self._policy_cache = {}
+        self._binary = {}
+        # Load csv
+        if self._config.has_key('policy.csv'):
+            if os.path.exists(self._config['policy.csv']):
+                self.load_policy_binary(self._config['policy.csv'])
+            else:
+                _logger.error("POLICY_ERROR: File not found '%s'." % self._config['policy.csv'])
+
+    def load_policy_binary(self, csvfile, column=1):
+        """ Loads the binary IDs from the CSV file. """
+        _logger.info("POLICY_INFO: Loading policy definition '%s'." % csvfile)
+        reader = csv.reader(open(csvfile, "rU"))
+        for row in reader:
+            if re.match(r"^((?:\d+)|(?:0842[0-9a-zA-Z]{3}))$", row[0].strip()):                
+                _logger.info("POLICY_INFO: Adding policy: '%s' => '%s'" % (row[0].strip(), row[column].strip().lower()))
+                self._binary[row[0].strip()] = row[column].strip().lower()
+            else:
+                _logger.warning("POLICY_WARNING: Discarding policy: '%s'." % row[0].strip())
+
+    def zip2zip(self):
+        """ Should the non public zip be zipped up under a specific zip. """
+        return self._config.get_boolean('policy.zip2zip', False)
+    
+    def create_commands(self, manifest):
+        """ Generates a list of build commands. """
+        result = []
+        stages = []
+
+        # Create the archive output directory
+        if not os.path.exists(self._config['archives.dir']):
+            _logger.info("  * Mkdir " + self._config['archives.dir'])
+            os.makedirs(self._config['archives.dir'])
+        
+        # Sort the manifest content, splitting it by policy
+        file_handle = codecs.open(manifest, "r", "utf-8")
+        for line in file_handle.readlines():
+            line = line.rstrip()
+            self._sort_by_policy(line)
+        file_handle.close()
+        
+        # Generating sublists.
+        for key in self._policies.keys():
+            self._policies[key].close()
+            manifest = os.path.join(self._config['temp.build.dir'], self._config['name'] + "_%s" % key + ".txt")
+            filename = os.path.join(self._config['archives.dir'], self._config['name'] + "_%s" % key)
+            _logger.info("  * " + filename + self._tool.extension())
+            result.extend(self._tool.create_command(self._config.get('zip.root.dir', self._config['root.dir']), filename, manifests=[manifest]))
+        stages.append(result)
+        
+        # See if any internal archives need to be created
+        content = []
+        for key in self._policies.keys():
+            if not self.zip2zip():
+                self.declare_package(self._config['name'] + "_%s" % key + self._tool.extension())
+            else:
+                if key != "0":
+                    content.append(os.path.join(self._config['archives.dir'], self._config['name'] + "_%s" % key + self._tool.extension()))
+                else:
+                    self.declare_package(self._config['name'] + "_%s" % key + self._tool.extension())
+
+        # Creating zip that contains each policy zips.
+        if self.zip2zip() and len(content) > 0:
+            manifest = os.path.join(self._config['temp.build.dir'], self._config['name'] +  ".internal.txt")
+            file_handle = codecs.open( manifest, "w+", "utf-8" )
+            file_handle.write(u"\n".join(content))
+            file_handle.close()
+            internal = "internal"
+            if self._config.has_key('policy.internal.name'):
+                internal = self._config['policy.internal.name']
+            filename = os.path.join(self._config['archives.dir'], self._config['name'] +  "_" + internal)
+            _logger.info("  * " + filename + self._tool.extension())
+            self.declare_package(filename + self._tool.extension(), "double")
+            stages.append(self._tool.create_command(self._config['archives.dir'], filename, manifests=[manifest]))
+
+            cmds = []
+            for filename in content:
+                cmds.append(buildtools.Delete(filename=filename))
+            stages.append(cmds)
+        return stages
+    
+    def get_dir_policy(self, dirname):
+        """ Get policy value for a specific directory. """
+        dirname = os.path.normpath(dirname)
+        if not self._policy_cache.has_key(dirname):
+            policyfile = None
+            for name in self.get_policy_filenames():
+                if os.sep != '\\':
+                    for filename in os.listdir(dirname):
+                        if filename.lower() == name.lower():
+                            policyfile = os.path.join(dirname, filename)
+                            break
+                elif os.path.exists(os.path.join(dirname, name)): 
+                    policyfile = os.path.join(dirname, name)
+                    break
+            
+            value = self._config.get('policy.default.value', MISSING_POLICY)
+            if policyfile != None:      #policy file present
+                try:
+                    value = fileutils.read_policy_content(policyfile)
+                    if value not in self._binary.keys():    #check policy file is valid
+                        _logger.error("POLICY_ERROR: policy file found %s but policy %s value not exists in csv" % (policyfile, value))
+                except Exception, exc:
+                    _logger.error("POLICY_ERROR: %s" % exc)         
+                    value = self._config.get('policy.default.value', MISSING_POLICY)
+            else:       #no policy file present
+                filePresent = False
+                dirPresent = False
+                for ftype in os.listdir(dirname):   #see if files or directories are present
+                    if os.path.isdir(os.path.join(dirname, ftype)):
+                        dirPresent = True
+                    if os.path.isfile(os.path.join(dirname, ftype)):
+                        filePresent = True
+                        
+                if filePresent:    #files present : error     
+                    _logger.error("POLICY_ERROR: could not find a policy file under: '%s'" % dirname)
+                elif dirPresent and not filePresent:  #directories only : warning
+                    _logger.error("POLICY_WARNING: no policy file, no files present, but sub-folder present in : '%s'" % dirname)
+                else:       #no files no dirs : warning
+                    _logger.error("POLICY_WARNING: empty directory at : '%s'" % dirname)
+                
+            # saving the policy value for that directory.
+            self._policy_cache[dirname] = value
+        return self._policy_cache[dirname]
+        
+    def get_policy_filenames(self):
+        """ Returns the list of potential policy filenames. """
+        return self._config.get_list('policy.filenames', ['Distribution.policy.s60'])
+        
+    def _sort_by_policy(self, filename):
+        """ Store the input file sorted by its policy number. """
+        path = os.path.join(self._config['root.dir'], filename)
+        parentdir = os.path.dirname(path)
+        if os.path.isdir(path):
+            parentdir = path
+        value = self.get_dir_policy(parentdir)
+        if not value in self._policies:
+            self._policies[value] = codecs.open( os.path.join(self._config['temp.build.dir'], self._config['name'] + "_%s" % value + ".txt"), "w+", "utf-8" )
+        self._policies[value].write(u"%s\n" % filename)
+
+
+class PolicyRemoverMapper(PolicyMapper):
+    """ This class implements a variant of the policy mapper.
+        
+    It removes the internal source. Only binary flagged content is kept.
+    """
+    
+    def __init__(self, config, archiver):
+        """ Initialization. """
+        PolicyMapper.__init__(self, config, archiver)
+        self._rm_policy_cache = {}
+
+    def get_policy_root_dir(self):
+        """ Return the policy.root.dir or root.dir if not set or not under root.dir."""
+        if not self._config.has_key("policy.root.dir"):
+            return os.path.normpath(self._config['root.dir'])
+        else:
+            if fileutils.destinsrc(self._config['root.dir'], self._config['policy.root.dir']):
+                return os.path.normpath(self._config['policy.root.dir'])
+            else:
+                return os.path.normpath(self._config['root.dir'])
+
+    def get_rmdir_policy(self, dirname):
+        """ check if the directory should be dropped or not"""
+        dirname = os.path.normpath(dirname)
+        # check if parent is banned...
+        prootdir = os.path.normpath(self.get_policy_root_dir())
+        rootdir = os.path.normpath(self._config['root.dir'])
+        if os.sep == '\\':
+            dirname = dirname.lower()
+            prootdir = prootdir.lower()
+            rootdir = rootdir.lower()        
+        
+        # else get real value...
+        if not self._rm_policy_cache.has_key(dirname):
+            self._rm_policy_cache[dirname] = self.get_dir_policy(dirname)
+        
+        return self._rm_policy_cache[dirname]
+        
+    def create_commands(self, manifest):
+        """ Generates a list of build commands. """
+        stages = PolicyMapper.create_commands(self, manifest)
+        
+        if not self._config.has_key('policy.csv'):
+            _logger.error("POLICY_ERROR: Property 'policy.csv' not defined everything will get removed.")
+        cmds = []
+        file_handle = codecs.open( manifest, "r", "utf-8" )
+        for line in file_handle.readlines():
+            line = line.rstrip()
+            filepath = os.path.normpath(os.path.join(self._config.get('zip.root.dir', self._config['root.dir']), line))
+            value = self.get_rmdir_policy(os.path.dirname(filepath))            
+            delete = True
+            if value in self._binary.keys():
+                if self._binary[value] == "yes":
+                    _logger.info("POLICY_INFO: Keeping %s (%s=>yes)!" % (filepath, value))
+                    delete = False
+                elif self._binary[value] == "bin":
+                    _logger.info("POLICY_INFO: Keeping %s (%s=>bin)!" % (filepath, value))
+                    delete = False
+            else:
+                _logger.error("POLICY_ERROR: %s value for %s not in csv file. Will be removed!!" % (value, filepath))
+               
+            if delete:
+                _logger.info("POLICY_INFO: File %s will be removed!" % filepath)
+                cmds.append(buildtools.Delete(filename=filepath))
+        file_handle.close()
+        if len(cmds) > 0:
+            stages.append(cmds)
+        return stages
+
+
+class SFPolicyRemoverMapper(PolicyRemoverMapper):
+    """ Implement an SFL column based policy remover. """
+
+    def __init__(self, config, archiver):
+        """ Initialization. """
+        PolicyRemoverMapper.__init__(self, config, archiver)
+
+    def load_policy_binary(self, csvfile):
+        """ Loading the policy using the 3rd column. """
+        _logger.info("POLICY_INFO: Loading actions from the 3rd column")
+        PolicyRemoverMapper.load_policy_binary(self, csvfile, column=3)
+
+class EPLPolicyRemoverMapper(PolicyRemoverMapper):
+    """ Implement an EPL column based policy remover. """
+    def __init__(self, config, archiver):
+        """ Initialization. """
+        PolicyRemoverMapper.__init__(self, config, archiver)
+
+    def load_policy_binary(self, csvfile):
+        """ Loading the policy using the 4th column. """
+        _logger.info("POLICY_INFO: Loading actions from the 4th column")
+        PolicyRemoverMapper.load_policy_binary(self, csvfile, column=4)
+        
+        
+MAPPERS = {'default': DefaultMapper,
+             'policy': PolicyMapper,
+             'policy.remover': PolicyRemoverMapper,
+             'sfl.policy.remover': SFPolicyRemoverMapper,
+             'epl.policy.remover': EPLPolicyRemoverMapper,}
+
+def get_mapper(name, config, archiver):
+    """ Get mapper instance from its string id. """
+    if name in MAPPERS:
+        return MAPPERS[name](config, archiver)
+    raise Exception("ERROR: Could not find mapper '%s'." % name)
Binary file buildframework/helium/external/helium-antlib/python/pythoncore/lib/archive/scanners$py.class has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/archive/scanners.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,196 @@
+#============================================================================ 
+#Name        : scanners.py 
+#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:
+#===============================================================================
+
+""" Implementation of the available scanner for """
+
+import os
+import fileutils
+import selectors
+import logging
+import codecs
+import pathaddition
+
+logger = logging.getLogger('archive.scanners')
+logger_abld = logging.getLogger('archive.scanners.abld')
+logging.basicConfig()
+#logger_abld.setLevel(logging.DEBUG)
+
+class Scanner(fileutils.AbstractScanner):
+    """ Abstract class that represent and input source. """
+    
+    def __init__(self, config):
+        fileutils.AbstractScanner.__init__(self)
+        self._config = config
+        self.setup()
+        
+    def setup(self):
+        """ Setting up the scanner. """
+        [self.add_include(inc) for inc in self._config.get_list('include', [])]
+        [self.add_exclude(ex) for ex in self._config.get_list('exclude', [])]
+        [self.add_exclude_file(ex) for ex in self._config.get_list('exclude_file', [])]
+        [self.add_exclude_lst(filename) for filename in self._config.get_list('exclude.lst', [])]
+        [self.add_filetype(filetype) for filetype in self._config.get_list('filetype', [])]
+        [self.add_selector(selectors.get_selector(selector, self._config)) for selector in self._config.get_list('selector', [])]        
+        # To support old features.
+        # TODO: inform customers and remove.
+        if 'distribution.policy.s60' in self._config:            
+            self.add_selector(selectors.get_selector('distribution.policy.s60', self._config))
+    
+    def add_exclude_lst(self, filename):
+        """ Adding excludes from exclude list. """
+        if not os.path.exists(filename):
+            raise Exception("Could not find '%s'." % filename)
+        root_dir = os.path.normpath(self._config['root.dir'])
+        flh = codecs.open(filename, 'r', 'utf-8')
+        for line in flh:
+            path = os.path.normpath(line.strip())
+            if os.path.splitdrive(root_dir)[0] != "":
+                path = os.path.join(os.path.splitdrive(root_dir)[0], path)
+            if fileutils.destinsrc(root_dir, path):
+                pathrel = pathaddition.relative.abs2rel(path, root_dir)
+                logger.debug("pathrel: %s" % (pathrel))
+                self.add_exclude(pathrel)
+            else:
+                logger.warning("path '%s' is not under '%s', ignoring." % (path, root_dir))
+        flh.close()
+        
+    def scan(self):
+        """ Generator method that scan the relevant input source.
+            This method need to be overloaded by the specialized class.
+            return fullpath name
+        """
+        raise  NotImplementedError()
+
+
+class AbldWhatScanner(Scanner):
+    """ Scanning the filesystem. """    
+    
+    def __init__(self, config):
+        Scanner.__init__(self, config)
+        self.root_dir = unicode(os.path.normpath(self._config['root.dir']))
+        
+    def scan(self):
+        """
+            Abld what commands.
+            include property have not effect on the selection mechanism.
+        """
+        os.environ["SYMBIANBUILD_DEPENDENCYOFF"] = "1"
+        for path in self._config.get_list('abld.exportpath', []):
+            logger_abld.debug("abld.exportpath: %s" % path)
+            if os.path.exists(os.path.join(self.root_dir, path, 'bld.inf')):
+                os.chdir(os.path.join(self.root_dir, path))                
+                os.popen('bldmake bldfiles -k')
+                for result in self._scan_abld_what("abld export -what -k"):
+                    yield result
+        
+        for path in self._config.get_list('abld.buildpath', []):
+            logger_abld.debug("abld.buildpath: %s" % path)
+            if os.path.exists(os.path.join(self.root_dir, path, 'bld.inf')):
+                for type_ in self._config.get_list('abld.type', ['armv5']):
+                    os.environ["EPOCROOT"] = self._config.get('abld.epocroot','\\')
+                    os.environ["PATH"] = os.environ["EPOCROOT"] + "epoc32\\tools;" + os.environ["EPOCROOT"] + "epoc32\\gcc\\bin;" + os.environ["PATH"]
+                    logger_abld.debug("abld.type: %s" % type_)
+                    os.chdir(os.path.join(self.root_dir, path))
+                    os.popen("bldmake bldfiles -k")
+                    os.popen("abld makefile %s -k" % type_)
+                    for result in self._scan_abld_what("abld build -what %s" % type_):
+                        yield result
+    
+    def _run_cmd(self, cmd):
+        """ Run command."""
+        logger_abld.debug("command: %s" % cmd)
+        process = os.popen(cmd)
+        abld_output = process.read()
+        err = process.close()
+        return (err, abld_output)
+
+    def _scan_abld_what(self, cmd):
+        """ Abld what output parser."""
+        (err, abld_output) = self._run_cmd(cmd)
+        logger_abld.debug("abld_output: %s" % abld_output)
+        for what_path in abld_output.split("\n"):
+            what_path = what_path.strip()
+            if (what_path.startswith('\\') or what_path.startswith('/')) and self.is_filetype(what_path) \
+                and not self.is_excluded(what_path) and self.is_selected(what_path):
+                if os.path.exists(what_path):
+                    logger_abld.debug("adding: %s" % what_path)
+                    yield what_path
+                else:
+                    logger.error("Could not find '%s'." % what_path)
+    
+    
+class FileSystemScanner(fileutils.FileScanner, Scanner):
+    """ Scanning the filesystem. """    
+    
+    def __init__(self, config):
+        fileutils.FileScanner.__init__(self, unicode(os.path.normpath(config['root.dir'])))
+        Scanner.__init__(self, config)
+    
+    def scan(self):
+        """ 
+            Implement the scanning of the filesystem.
+            Actually delegate scanning of a directory to Filescanner.
+        """
+        for path in fileutils.FileScanner.scan(self):
+            yield path
+
+
+class InputFileScanner(fileutils.FileScanner, Scanner):
+    """ Scanning the filesystem. """    
+    
+    def __init__(self, config):
+        """ Initialisation. """
+        fileutils.FileScanner.__init__(self, unicode(os.path.normpath(config['root.dir'])))
+        Scanner.__init__(self, config)
+    
+    def scan(self):
+        """
+        ::
+        
+            <set name="scanners" value="input.file"/>
+            <set name="root.dir" value="${build.drive}"/>
+            <set name="input.files" value="file1.lst,file2.lst,file3.lst"/>
+            <set name="exclude" value="epoc32/**/*.dll"/>
+        """
+        for input_file in self._config.get_list('input.files', []):
+            logger.info("Include content from: %s" % input_file)
+            handle = open(input_file, "r")
+            for line in handle.readlines():
+                path = os.path.join(self._config['root.dir'], line.strip())
+                if os.path.exists(path):
+                    if self.is_filetype(path) \
+                        and not self.is_excluded(path) and self.is_selected(path):
+                        yield path
+                else:
+                    logger.info("File not found: %s" % path)
+            handle.close()
+        
+__scanners = {'default': FileSystemScanner,
+              'input.file': InputFileScanner,
+              'abld.what': AbldWhatScanner,
+              }
+
+def get_scanners(names, config):
+    result = []
+    for name in names:
+        if name in __scanners:
+            result.append(__scanners[name](config))
+        else:
+            raise Exception("ERROR: Could not find scanner '%s'." % name)
+    return result
Binary file buildframework/helium/external/helium-antlib/python/pythoncore/lib/archive/selectors$py.class has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/archive/selectors.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,153 @@
+#============================================================================ 
+#Name        : selectors.py 
+#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:
+#===============================================================================
+
+import re
+import os
+import sys
+import logging
+import fileutils
+import archive
+
+# Getting logger for the module
+logger = logging.getLogger("archive.selectors")
+
+
+class DistributionPolicySelector:
+    """ A selector that selects files based on other criteria.
+    
+    It is similar to the Ant file selector objects in design. This one selects files
+    based on whether the root-most Distribution.Policy.S60 file matches the given value.
+    """
+    
+    def __init__(self, policy_files, value, ignoremissingpolicyfiles=False):
+        """ Initialization. """
+        self._negate = False
+        self.values = [v.strip() for v in value.split() if v.strip()!=""]
+        self._policy_files = policy_files
+        self._ignoremissingpolicyfiles = ignoremissingpolicyfiles
+
+    def get_value_and_negate(self, value):
+        if value.startswith('!'):
+            return (value[1:], True)
+        return (value, False)
+        
+    def is_selected(self, path):
+        """ Determines if the path is selected by this selector. """
+        current_dir = os.path.abspath(os.path.dirname(path))
+        logger.debug('is_selected: current dir = ' + current_dir + '  ' + str(os.path.exists(current_dir)))
+        result = False
+        policy_file = None
+        # finding the distribution policy from the filelist.
+        for filename in self._policy_files:
+            #slow method on case sensitive system
+            if os.sep != '\\':
+                for f in os.listdir(current_dir):
+                    if f.lower() == filename.lower():
+                        policy_file = os.path.join(current_dir, f)
+                        break
+            elif os.path.exists(os.path.join(current_dir, filename)):            
+                policy_file = os.path.join(current_dir, filename)
+                logger.debug('Using Policy file: ' + policy_file)
+                break
+
+        policy_value = None
+        if policy_file is None:
+            if not self._ignoremissingpolicyfiles:
+                logger.error("POLICY_ERROR: Policy file not found under '%s' using names [%s]" % (current_dir, ", ".join(self._policy_files)))
+            policy_value = archive.mappers.MISSING_POLICY
+        else:
+            try:
+                policy_value = fileutils.read_policy_content(policy_file)
+            except Exception:
+                logger.warning('POLICY_ERROR: Exception thrown parsing policy file: ' + policy_file)
+                policy_value = archive.mappers.MISSING_POLICY
+        # loop through the possible values
+        for value in self.values:
+            (val, negate) = self.get_value_and_negate(value)
+            logger.debug('Policy value: ' + str(policy_value) + '  ' + val)
+            if (not negate and policy_value == val) or (negate and policy_value != val):
+                return True
+        return False
+
+
+class SymbianPolicySelector:
+    """ A selector that selects files based on other criteria.
+    
+    It is similar to the Ant file selector objects in design. This one selects files
+    based on whether the root-most distribution.policy file matches the given value.
+    """
+    
+    def __init__(self, policy_files, value):
+        """ Initialization. """
+        self._negate = False
+        self.values = [v.strip() for v in value.split() if v.strip()!=""]
+        self._policy_files = policy_files
+               
+
+    def get_value_and_negate(self, value):
+        if value.startswith('!'):
+            return (value[1:], True)
+        return (value, False)
+        
+    def is_selected(self, path):
+        """ Determines if the path is selected by this selector. """
+        current_dir = os.path.abspath(os.path.dirname(path))
+        logger.debug('is_selected: current dir = ' + current_dir + '  ' + str(os.path.exists(current_dir)))
+        result = False
+        policy_file = None
+        # finding the distribution policy from the filelist.
+        for filename in self._policy_files:
+            if os.sep != '\\':
+                for f in os.listdir(current_dir):
+                    if f.lower() == filename.lower():
+                        policy_file = os.path.join(current_dir, f)
+                        logger.debug('Using Policy file: ' + policy_file)
+                        break
+            elif os.path.exists(os.path.join(current_dir, filename)):            
+                policy_file = os.path.join(current_dir, filename)
+                logger.debug('Using Policy file: ' + policy_file)
+                break
+
+        policy_value = None
+        if policy_file is  None:
+            logger.error("POLICY_ERROR: Policy file not found under '%s' using names [%s]" % (current_dir, ", ".join(self._policy_files)))
+            policy_value = archive.mappers.MISSING_POLICY
+        else:
+            try:
+                policy_value = fileutils.read_symbian_policy_content(policy_file)
+            except Exception:
+                logger.warning('POLICY_ERROR: Exception thrown parsing policy file: ' + policy_file)
+                policy_value = archive.mappers.MISSING_POLICY
+        # loop through the possible values
+        for value in self.values:
+            (val, negate) = self.get_value_and_negate(value)
+            logger.debug('Policy value: ' + str(policy_value) + '  ' + val)
+            if (not negate and policy_value == val) or (negate and policy_value != val):
+                return True
+        return False
+
+SELECTORS = {'policy': lambda config: DistributionPolicySelector(config.get_list('policy.filenames', ['Distribution.Policy.S60']), config['policy.value']),
+               'symbian.policy': lambda config: SymbianPolicySelector(config.get_list('policy.filenames', ['distribution.policy']), config['policy.value']),
+             'distribution.policy.s60': lambda config: DistributionPolicySelector(['Distribution.Policy.S60'], config['distribution.policy.s60'], config['ignore.missing.policyfiles'] == 'true'),
+             }
+
+def get_selector(name, config):
+    if not 'ignore.missing.policyfiles' in config:
+        config['ignore.missing.policyfiles'] = 'false'
+    return SELECTORS[name](config)
Binary file buildframework/helium/external/helium-antlib/python/pythoncore/lib/archive/tools$py.class has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/archive/tools.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,120 @@
+#============================================================================ 
+#Name        : tools.py 
+#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:
+#===============================================================================
+
+""" Archiving operations. """
+import os
+import logging
+import buildtools
+import codecs
+
+_logger = logging.getLogger('archive')
+#_logger.addHandler(logging.FileHandler('archive.log'))
+#logging.basicConfig(level=logging.DEBUG)
+logging.basicConfig()
+
+class Tool(object):
+    """ Tool abstract class. """
+    def extension(self):
+        """ This method should return the extension of the generated file. """
+        raise NotImplementedError()
+
+    def create_command(self, path, filename, manifests=None):
+        """ This method should return an array of buildtools.Command.
+            That list will get use to generate a build file (e.g make, ant).
+            The list of command should support in parallel calling.
+        """
+        raise NotImplementedError()
+
+
+class SevenZipArchiver(Tool):
+    """ Creates task definitions for executing 7zip archive operations."""
+
+    def __init__(self):
+        Tool.__init__(self)
+
+    def extension(self):
+        """ Always return '.zip'. """
+        return '.zip'
+
+    def create_command(self, path, name, manifests=None):
+        """ Returns a list of one command that will use 7za to archive the content."""
+        cmd = buildtools.Command('7za', path)
+        cmd.addArg('a')
+        cmd.addArg('-tzip')
+        # Include all in the current directory by default, assuming that
+        # an include file or specific includes will be given
+        cmd.addArg(name + self.extension())
+        for manifest in manifests:
+            cmd.addArg('@' + os.path.normpath(manifest))
+        return [cmd]
+
+
+class ZipArchiver(Tool):
+    """ Creates task definitions for executing zip archive operations."""
+
+    def __init__(self):
+        Tool.__init__(self)
+
+    def extension(self):
+        """ Always return '.zip'. """
+        return '.zip'
+
+    def create_command(self, path, name, manifests=None):
+        """ Returns a list of one command that will use zip to archive the content."""
+        cmd = buildtools.Command('zip', path)
+        cmd.addArg('-R')
+        cmd.addArg(name + self.extension())
+        # Include all in the current directory by default, assuming that
+        # an include file or specific includes will be given
+        cmd.addArg('.')
+        for manifest in manifests:
+            cmd.addArg('-i@' + os.path.normpath(manifest))
+        return [cmd]
+
+
+class Remover(Tool):
+    """ Creates task definitions for executing zip archive operations."""
+    def __init__(self):
+        Tool.__init__(self)
+
+    def extension(self):
+        """ Always return '' """
+        return ''
+
+    def create_command(self, dummy_path, dummy_filename, manifests=None):
+        """ Returns a list of one command that will use zip to archive the content."""
+        cmds = []
+        for manifest in manifests:
+            file_input = codecs.open(manifest, 'r', "utf-8" )
+            for line in file_input.readlines():
+                if line.strip() != "":
+                    cmds.append(buildtools.Delete(filename=line.strip()))
+            file_input.close()
+        return cmds
+        
+
+def get_tool(name):
+    """ Return a tool using its id name. """
+    constructor = TOOL_CONSTRUCTORS[name]
+    return constructor()
+
+
+TOOL_CONSTRUCTORS = {'zip': ZipArchiver,
+                      '7za': SevenZipArchiver,
+                      'remover': Remover}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/ats3/__init__.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,469 @@
+# -*- encoding: latin-1 -*-
+
+#============================================================================ 
+#Name        : __init__.py 
+#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:
+#===============================================================================
+
+"""ATS3 test drop generation."""
+
+#W0142 => * and ** were used
+#R*    => will be fixed while refactoring
+#F0401 => pylint didn't find "path" module
+#C0302 => Too many lines
+
+from optparse import OptionParser
+import ats3.testconfigurator as acp
+import ats3.dropgenerator as adg
+import logging
+import os
+import re
+
+import ats3.parsers as parser
+
+from path import path # pylint: disable-msg=F0401
+
+_logger = logging.getLogger('ats')
+
+class Configuration(object):
+    """
+    ATS3 drop generation configuration.
+    """
+    def __init__(self, opts, tsrc_paths):
+        """
+        Initialize from optparse configuration options.
+        """
+        self._opts = opts
+        c_parser = parser.CppParser()
+        temp_dict = {}
+        pkg_parser = parser.PkgFileParser()
+        
+        # Customize some attributes from how optparse leaves them.
+        self.build_drive = path(self._opts.build_drive)
+        self.file_store = path(self._opts.file_store)
+        self.flash_images = split_paths(self._opts.flash_images)
+        self.sis_files = split_paths(self._opts.sis_files)
+        self.config_file = self._opts.config
+        self.obey_pkgfiles = to_bool(self._opts.obey_pkgfiles)
+        self.specific_pkg = self._opts.specific_pkg
+        if self.specific_pkg == '':
+            self.specific_pkg = None
+        self.tsrc_paths_dict = {}
+
+        ats_nd = self._opts.ctc_run_process_params.strip()
+        if ats_nd != "":
+            ats_nd = ats_nd.split("#")[0].strip()
+            if ats_nd == "":
+                self._opts.ctc_run_process_params = ""
+                _logger.warning("Property \'ats.ctc.host\' is not set. Code coverage measurement report(s) will not be created.")
+                
+        main_comps = []
+                
+        for tsrc in tsrc_paths:
+            hrh = os.path.join(self.build_drive + os.sep, 'epoc32', 'include', 'feature_settings.hrh')
+            if os.path.exists(hrh):
+                temp_dict = c_parser.get_cpp_output(path(tsrc), "d", hrh)
+            else:
+                temp_dict = c_parser.get_cpp_output(path(tsrc), "d")
+            for t_key, t_value in temp_dict.items():
+                self.tsrc_paths_dict[t_key] = t_value
+        
+        #preparing a list of main components
+        for main_component in self.tsrc_paths_dict.keys():
+            if self.obey_pkgfiles == "True":
+                if pkg_parser.get_pkg_files(main_component) != []:
+                    main_comps.append(main_component)
+            else:
+                main_comps.append(main_component)    
+                    
+                    
+        self.tsrc_paths = main_comps
+
+    def __getattr__(self, attr):
+        return getattr(self._opts, attr)
+    
+    def __str__(self):
+        dump = "Configuration:\n"
+        seen = set()
+        for key, value in vars(self).items():
+            if not key.startswith("_"):
+                dump += "\t%s = %s\n" % (key, value)
+                seen.add(key)
+        for key, value in vars(self._opts).items():
+            if key not in seen:
+                dump += "\t%s = %s\n" % (key, value)
+                seen.add(key)                
+        return dump
+    
+
+class Ats3TestPlan(object):
+    """
+    Tells ATS3 server what to test and how.
+    
+    The ATS3 test plan from which the test.xml file can be written. The test
+    plan captures all the data related to a test run: flashing, installation
+    of data files and configuration files, test cases, and the notifications.
+    
+    """
+    EMAIL_SUBJECT = (u"ATS3 report for §RUN_NAME§ §RUN_START_DATE§ "
+                     u"§RUN_START_TIME§")
+    REPORT_PATH = u"§RUN_NAME§" + os.sep + u"§RUN_START_DATE§_§RUN_START_TIME§"
+
+    def __init__(self, config):
+        self.diamonds_build_url = config.diamonds_build_url
+        self.ctc_run_process_params = config.ctc_run_process_params
+        self.testrun_name = config.testrun_name
+        self.harness = config.harness
+        self.device_type = config.device_type
+        self.device_hwid = config.device_hwid
+        self.plan_name = config.plan_name
+        self.report_email = config.report_email
+        self.file_store = config.file_store
+        self.test_timeout = config.test_timeout
+        self.eunitexerunner_flags = config.eunitexerunner_flags
+        self.sets = []
+        self.src_dst = []
+        self.pmd_files = []
+        self.trace_activation_files = []
+        self.trace_enabled = to_bool(config.trace_enabled)
+        self.ctc_enabled = to_bool(config.ctc_enabled)
+        self.multiset_enabled = to_bool(config.multiset_enabled)
+        self.monsym_files = config.monsym_files
+        self.component_path = ""
+        self.custom_dir = None
+    
+    def insert_set(self, data_files=None, config_files=None, 
+                   engine_ini_file=None,  image_files=None, sis_files=None,
+                   testmodule_files=None, test_timeout=None,eunitexerunner_flags=None , test_harness=None,
+                   src_dst=None, pmd_files=None, trace_activation_files=None, custom_dir=None, component_path=None):
+        """
+        Insert a test set into the test plan.
+        """
+        
+        if not custom_dir is None:
+            self.custom_dir = custom_dir
+        if data_files is None:
+            data_files = []
+        if config_files is None:
+            config_files = []
+        if image_files is None:
+            image_files = []
+        if sis_files is None:
+            sis_files = []
+        if testmodule_files is None:
+            testmodule_files = []
+        if test_timeout is None:
+            test_timeout = []
+        if test_harness is None:
+            test_harness = self.harness
+        if src_dst is None:
+            src_dst = []
+        if pmd_files is None:
+            pmd_files = []
+        if trace_activation_files is None:
+            trace_activation_files = []
+        if component_path is None:
+            component_path = self.component_path
+            
+        setd = dict(name="set%d" % len(self.sets),
+                    image_files=image_files, engine_ini_file=engine_ini_file, ctc_enabled=self.ctc_enabled, component_path=component_path)
+        
+        setd = dict(setd, custom_dir=custom_dir)
+        if sis_files:
+            setd = dict(setd, sis_files=sis_files, test_timeout=test_timeout, eunitexerunner_flags=eunitexerunner_flags, test_harness=test_harness, )
+        else:
+            setd = dict(setd, data_files=data_files, config_files=config_files,
+                        testmodule_files=testmodule_files, test_timeout=test_timeout, eunitexerunner_flags=eunitexerunner_flags, test_harness=test_harness,
+                        src_dst=src_dst)
+        if self.trace_enabled != "":
+            if self.trace_enabled.lower() == "true":
+                setd = dict(setd, pmd_files=pmd_files, 
+                            trace_path=self.file_store.joinpath(self.REPORT_PATH, "traces", setd["name"], "tracelog.blx"),
+                            trace_activation_files=trace_activation_files)
+            else:
+                setd = dict(setd, pmd_files=[], 
+                            trace_path="",trace_activation_files=[])
+        self.sets.append(setd)
+
+    def set_plan_harness(self):
+        """setting up test harness for a plan"""
+        eunit = False
+        stif = False
+        stifunit = False
+        for setd in self.sets:
+            if setd["test_harness"] == "STIF":
+                stif = True
+            elif setd["test_harness"] == "EUNIT":
+                eunit = True
+            elif setd["test_harness"] == "STIFUNIT":
+                stifunit = True
+                
+        if eunit and stif:
+            self.harness = "MULTI_HARNESS"
+        elif eunit:
+            self.harness = "EUNIT"
+        elif stif:
+            self.harness = "STIF"
+        elif stifunit:
+            self.harness = "STIFUNIT"
+        else:
+            self.harness = "GENERIC"
+
+    @property
+    def post_actions(self):
+        """ATS3 post actions."""
+        actions = []
+        temp_var = ""
+        include_ctc_runprocess = False
+        report_path = self.file_store.joinpath(self.REPORT_PATH)
+        
+        if self.ctc_enabled and adg.CTC_PATHS_LIST != [] and self.monsym_files != "" and not "${" in self.monsym_files:
+            include_ctc_runprocess = True
+            ctc_params = "--ctcdata_files="
+            for cdl in adg.CTC_PATHS_LIST:
+                ctc_params += cdl + '\\ctcdata.txt' + ";"
+                temp_var = cdl
+            
+            drop_count = self.ctc_run_process_params.rsplit("#", 1)[1]
+            temp_var = temp_var.split("ctc_helium"+os.sep)[1]
+            diamonds_id = temp_var.split(os.sep)[0]
+            drop_id = temp_var.split(os.sep)[1].split(os.sep)[0]
+            drop_id = re.findall(".*drop(\d*)", drop_id.lower())[0] #extracting int part of drop name
+           
+            ctc_params += r" --monsym_files=" + self.monsym_files
+            ctc_params += r" --diamonds_build_id=" + diamonds_id
+            ctc_params += r" --drop_id=" + drop_id
+            ctc_params += r" --total_amount_of_drops=" + drop_count
+            
+            runprocess_action = ("RunProcessAction", 
+                            (("file", r"catsctc2html/catsctc2html.exe"), #this line will be executing on Windows machine.
+                             ("parameters", ctc_params)))
+            
+            email_url = " CTC report can be found from: " + self.diamonds_build_url
+
+            email_action = ("SendEmailAction", 
+                            (("subject", self.EMAIL_SUBJECT),
+                             ("type", "ATS3_REPORT"),
+                             ("send-files", "true"),
+                             ("additional-description", email_url),
+                             ("to", self.report_email)))
+        else:
+            email_action = ("SendEmailAction", 
+                            (("subject", self.EMAIL_SUBJECT),
+                             ("type", "ATS3_REPORT"),
+                             ("send-files", "true"),
+                             ("to", self.report_email)))
+        ats3_report = ("FileStoreAction", 
+                       (("to-folder", report_path.joinpath("ATS3_REPORT")),
+                        ("report-type", "ATS3_REPORT"),
+                        ("date-format", "yyyyMMdd"),
+                        ("time-format", "HHmmss")))
+        stif_report = ("FileStoreAction", 
+                       (("to-folder", report_path.joinpath("STIF_REPORT")),
+                        ("report-type", "STIF_COMPONENT_REPORT_ALL_CASES"),
+                        ("run-log", "true"),
+                        ("date-format", "yyyyMMdd"),
+                        ("time-format", "HHmmss")))
+        eunit_report = ("FileStoreAction", 
+                       (("to-folder", report_path.joinpath("EUNIT_REPORT")),
+                        ("report-type", "EUNIT_COMPONENT_REPORT_ALL_CASES"),
+                        ("run-log", "true"),
+                        ("date-format", "yyyyMMdd"),
+                        ("time-format", "HHmmss")))
+        diamonds_action = ("DiamondsAction", ())
+
+        
+        if include_ctc_runprocess:
+            actions.append(runprocess_action)
+            
+        if self.diamonds_build_url:
+            actions.append(diamonds_action)
+        if self.file_store:
+            actions.append(ats3_report)
+            if self.harness == "STIF":
+                actions.append(stif_report)
+            elif self.harness == "EUNIT":
+                actions.append(eunit_report)
+        if self.report_email:
+            actions.append(email_action)
+        return actions               
+
+    def __getitem__(self, key):
+        return self.__dict__[key]
+
+def encode_for_xml(unicode_data, encoding='ascii'):
+    """
+    Encode unicode_data for use as XML or HTML, with characters outside
+    of the encoding converted to XML numeric character references.
+    """
+    try:
+        return unicode_data.encode(encoding, 'xmlcharrefreplace')
+    except ValueError:
+        # ValueError is raised if there are unencodable chars in the
+        # data and the 'xmlcharrefreplace' error handler is not found.
+        # Pre-2.3 Python doesn't support the 'xmlcharrefreplace' error
+        # handler, so we'll emulate it.
+        return _xmlcharref_encode(unicode_data, encoding)
+
+def _xmlcharref_encode(unicode_data, encoding):
+    """Emulate Python 2.3's 'xmlcharrefreplace' encoding error handler."""
+    chars = []
+    # Step through the unicode_data string one character at a time in
+    # order to catch unencodable characters:
+    for char in unicode_data:
+        try:
+            chars.append(char.encode(encoding, 'strict'))
+        except UnicodeError:
+            chars.append('&#%i;' % ord(char))
+    return ''.join(chars)
+
+
+def create_drop(config):
+    """Create a test drop."""
+    _logger.debug("initialize test plan")
+        
+    test_plan = Ats3TestPlan(config)
+    component_parser = acp.Ats3ComponentParser(config)
+    
+    for tsrc in config.tsrc_paths:
+        lst_check_harness = []
+        _logger.info("inspecting tsrc path: %s" % tsrc)
+        #checking if there are components without harness
+        for sub_component in config.tsrc_paths_dict[tsrc]['content'].keys():
+            _harness_ = config.tsrc_paths_dict[tsrc]['content'][sub_component]['harness']
+            if _harness_ != "":
+                lst_check_harness.append(_harness_)
+
+        #if component has harness then insert to test set 
+        if len(lst_check_harness) > 0:
+            component_parser.insert_test_set(test_plan, path(tsrc), config.tsrc_paths_dict)
+
+    test_plan.set_plan_harness()
+
+
+    #Checking if any non executable set exists
+    #if yes, delete the set
+    tesplan_counter = 0
+    for plan_sets in test_plan.sets:
+        tesplan_counter += 1
+        exe_flag = False
+        for srcanddst in plan_sets['src_dst']:
+            _ext = srcanddst[0].rsplit(".")[1]
+            #the list below are the files which are executable
+            #if none exists, set is not executable
+            for mat in ["dll", "ini", "cfg", "exe", "script"]:
+                if mat == _ext.lower():
+                    exe_flag = True
+                    break
+            if exe_flag: 
+                break
+
+        if not exe_flag: #the set does not have executable, deleting the set
+            del test_plan.sets[tesplan_counter - 1]
+        
+    if config.ats4_enabled.lower() == 'true':
+        generator = adg.Ats3TemplateTestDropGenerator()
+    else:
+        generator = adg.Ats3TestDropGenerator()
+    _logger.info("generating drop file: %s" % config.drop_file)
+    generator.generate(test_plan, output_file=config.drop_file, config_file=config.config_file)
+
+def split_paths(arg, delim=","):
+    """
+    Split the string by delim, removing extra whitespace.
+    """
+    return [path(part.strip()) 
+            for part in arg.split(delim) if part.strip()]
+
+def to_bool(param):
+    """setting a true or false based on a param value"""
+    param = str(param).lower()
+    if "true" == param or "t" == param or "1" == param:
+        return "True"
+    else:
+        return "False"
+
+def main():
+    """Main entry point."""
+    cli = OptionParser(usage="%prog [options] TSRC1 [TSRC2 [TSRC3 ...]]")
+    cli.add_option("--build-drive", help="Build area root drive")
+    cli.add_option("--data-dir", help="Data directory name", action="append", 
+                   default=[])
+    cli.add_option("--device-type", help="Device type (e.g. 'PRODUCT')", 
+                   default="unknown")
+    cli.add_option("--device-hwid", help="Device hwid", 
+                   default="")
+    cli.add_option("--trace-enabled", help="Tracing enabled", default="False")
+    cli.add_option("--ctc-enabled", help="CTC enabled", default="False")
+    cli.add_option("--multiset-enabled", help="Multiset enabled", default="False")
+    cli.add_option("--diamonds-build-url", help="Diamonds build url")
+    cli.add_option("--ctc-run-process-params", help="ctc parameters include ctc host, drop id and total number of drops, separated by '#'")
+    cli.add_option("--drop-file", help="Name for the final drop zip file",
+                   default="ATS3Drop.zip")
+    cli.add_option("--file-store", help="Destination path for reports.",
+                   default="")
+    cli.add_option("--flash-images", help="Paths to the flash image files",
+                   default="")     
+    cli.add_option("--minimum-flash-images", help="Minimum amount of flash images",
+                   default=2)    
+    cli.add_option("--harness", help="Test harness (default: %default)",
+                   default="")
+    cli.add_option("--report-email", help="Email notification receivers", 
+                   default="")
+    cli.add_option("--plan-name", help="Name of the test plan", 
+                   default="plan")
+    cli.add_option("--sis-files", help="Paths to the sis files",
+                   default="")
+    cli.add_option("--monsym-files", help="Paths to MON.sym files, for ctc useage",
+                   default="")
+    cli.add_option("--target-platform", help="Target platform (default: %default)",
+                   default="armv5 urel")
+    cli.add_option("--test-timeout", help="Test execution timeout value (default: %default)",
+                   default="60")
+    cli.add_option("--eunitexerunner-flags", help="Eunitexerunner flags",
+                   default="")
+    cli.add_option("--testrun-name", help="Name of the test run", 
+                   default="run")
+    cli.add_option("--config", help="Path to the config file",
+                   default="")
+    cli.add_option("--specific-pkg", help="Text in name of pkg files to use", default='')
+    cli.add_option("--ats4-enabled", help="ATS4 enabled", default="False")
+    cli.add_option("--obey-pkgfiles", help="If this option is True, then only test components having PKG file are executable and if the compnents don't have PKG files they will be ignored.", default="False")
+    cli.add_option("--verbose", help="Increase output verbosity", 
+                   action="store_true", default=False)
+    
+    opts, tsrc_paths = cli.parse_args()
+
+    if not tsrc_paths:
+        cli.error("no tsrc directories given")
+    if not opts.flash_images:
+        cli.error("no flash image files given")
+    if not opts.build_drive:
+        cli.error("no build drive given")      
+    if len(opts.flash_images.split(",")) < int(opts.minimum_flash_images):
+        cli.error("Not enough flash files: %i defined, %i needed" % (len(opts.flash_images.split(",")), int(opts.minimum_flash_images) ))
+
+    if opts.verbose:
+        _logger.setLevel(logging.DEBUG)
+        logging.basicConfig(level=logging.DEBUG)
+    
+    config = Configuration(opts, tsrc_paths)
+    create_drop(config)
+
+
+if __name__ == "__main__":
+    main()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/ats3/aste.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,454 @@
+# -*- encoding: latin-1 -*-
+
+#============================================================================ 
+#Name        : aste.py 
+#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:
+#===============================================================================
+
+"""ASTE test drop generation."""
+
+# pylint: disable-msg=R0201,R0903,R0902,W0142
+#W0142 => * and ** were used
+#R* removed during refactoring
+
+from optparse import OptionParser
+from xml.etree import ElementTree as et
+import logging
+import os
+import re
+import tempfile
+import zipfile
+import pkg_resources
+from path import path # pylint: disable-msg=F0401
+import amara
+import ntpath as atspath
+import jinja2 # pylint: disable-msg=F0401
+
+_logger = logging.getLogger('ats3')
+
+# Shortcuts
+E = et.Element
+SE = et.SubElement
+
+class Configuration(object):
+    """
+    ASTE drop generation configuration.
+    """
+    
+    def __init__(self, opts):
+        """
+        Initialize from optparse configuration options.
+        """
+        self._opts = opts
+        # Customize some attributes from how optparse leaves them.
+        self.build_drive = path(self._opts.build_drive)
+        self.file_store = path(self._opts.file_store)
+        self.flash_images = self.split_paths(self._opts.flash_images)
+    
+    def split_paths(self, arg, delim=","):
+        """
+        Split the string by delim, removing extra whitespace.
+        """
+        return [path(part.strip()) 
+                for part in arg.split(delim) if part.strip()]
+    
+    def __getattr__(self, attr):
+        return getattr(self._opts, attr)
+    
+    def __str__(self):
+        dump = "Configuration:\n"
+        seen = set()
+        for key, value in vars(self).items():
+            if not key.startswith("_"):
+                dump += "\t%s = %s\n" % (key, value)
+                seen.add(key)
+        for key, value in vars(self._opts).items():
+            if key not in seen:
+                dump += "\t%s = %s\n" % (key, value)
+                seen.add(key)                
+        return dump
+    
+
+class AsteTestPlan(object):
+    """
+    Tells ASTE server what to test and how.
+    
+    The ASTE test plan from which the test.xml file can be written. The test
+    plan requires TestAsset(s) to perform the tests
+    """
+
+    EMAIL_SUBJECT = (u"ATS3 report for §RUN_NAME§ §RUN_START_DATE§ "
+                     u"§RUN_START_TIME§")
+    REPORT_PATH = u"§RUN_NAME§\§RUN_START_DATE§_§RUN_START_TIME§"
+
+    def __init__(self, config):
+        self.diamonds_build_url = config.diamonds_build_url
+        self.testrun_name = config.testrun_name
+        self.harness = "ASTE"
+        self.device_type = config.device_type
+        self.test_type = config.test_type
+        self.device_hwid = config.device_hwid
+        self.plan_name = config.plan_name
+        self.report_email = config.report_email
+        self.file_store = config.file_store
+        self.test_timeout = config.test_timeout
+        self.testasset_location = config.testasset_location
+        self.testasset_caseids = config.testasset_caseids
+        self.software_version = config.software_version
+        self.device_language = config.device_language
+        self.software_release = config.software_release
+        self.sets = []
+        self.temp_directory = path(tempfile.mkdtemp())
+
+    def insert_set(self, image_files=None, test_timeout=None, ):
+        """
+        Insert a test set into the test plan.
+        """
+        if image_files is None:
+            image_files = []
+        if test_timeout is None:
+            test_timeout = []
+        test_harness = self.harness
+        setd = dict(name="set%d" % len(self.sets), image_files=image_files)
+        setd = dict(setd, test_timeout=test_timeout, test_harness=test_harness)
+        
+        self.sets.append(setd)
+
+    @property
+    def post_actions(self):
+        """ATS3 and ASTE post actions."""
+        actions = []
+        report_path = self.file_store.joinpath(self.REPORT_PATH)
+        email_action = ("SendEmailAction", 
+                        (("subject", self.EMAIL_SUBJECT),
+                         ("type", "ATS3_REPORT"),
+                         ("send-files", "true"),
+                         ("to", self.report_email)))
+        ats3_report = ("FileStoreAction", 
+                       (("to-folder", report_path.joinpath("ATS3_REPORT")),
+                        ("report-type", "ATS_REPORT"),
+                        ("date-format", "yyyyMMdd"),
+                        ("time-format", "HHmmss")))
+        aste_report = ("FileStoreAction", 
+                       (("to-folder", report_path.joinpath("ASTE_REPORT")),
+                        ("report-type", "ASTE_REPORT"),
+                        ("run-log", "true"),
+                        ("date-format", "yyyyMMdd"),
+                        ("time-format", "HHmmss")))
+
+        diamonds_action = ("DiamondsAction", ())
+        if self.report_email:
+            actions.append(email_action)
+        if self.file_store:
+            actions.append(ats3_report)
+            actions.append(aste_report)
+        if self.diamonds_build_url:
+            actions.append(diamonds_action)
+        return actions               
+
+    def __getitem__(self, key):
+        return self.__dict__[key]
+
+
+
+class AsteTestDropGenerator(object):
+    """
+    Generate test drop zip file for ATS3.
+
+    Generates drop zip files file from a TestPlan instance. The main
+    responsibility of this class is to serialize the plan into a valid XML
+    file and build a zip file for the drop.
+    
+    Creates one <set> for ASTE tests.
+
+    ASTE harness, normal operation
+    ------------------------------
+    
+    - create logging dir for aste             makedir (to C:\logs\TestFramework)
+    - execute asset from the testasset.zip    execute-asset
+    - fetch logs                              fetch-log
+
+    """
+
+    ASTE_LOG_DIR = r"c:\logs\testframework"
+
+    def __init__(self):
+        self.drop_path_root = path("ATS3Drop")
+        self.drop_path = None
+        self.defaults = {}
+
+    def generate(self, test_plan, output_file):
+        """Generate a test drop file."""
+        xml = self.generate_xml(test_plan)
+        return self.generate_drop(test_plan, xml, output_file)
+
+    def generate_drop(self, test_plan, xml, output_file):
+        """Generate test drop zip file."""
+        zfile = zipfile.ZipFile(output_file, "w", zipfile.ZIP_DEFLATED)
+        try:
+            for drop_file, src_file in self.drop_files(test_plan):
+                _logger.info("   + Adding: %s" % src_file.strip())
+                zfile.write(src_file.strip(), drop_file.encode('utf-8'))
+            doc = amara.parse(et.tostring(xml.getroot()))
+            _logger.debug("XML output: %s" % doc.xml(indent=u"yes"))
+            zfile.writestr("test.xml", doc.xml(indent="yes"))
+        finally:
+            zfile.close()
+        return zfile
+
+    def generate_xml(self, test_plan):
+        """Generate test drop XML."""
+        self.defaults = {"enabled": "true", 
+                         "passrate": "100", 
+                         "significant": "false",
+                         "harness": "%s" % test_plan["harness"]} 
+        root = E("test")
+        root.append(et.XML("<name>%(testrun_name)s</name>" % test_plan))
+        if test_plan["diamonds_build_url"]:
+            root.append(
+                et.XML("<buildid>%(diamonds_build_url)s</buildid>" % test_plan))
+        self.generate_target(test_plan, root)
+        root.append(self.generate_plan(test_plan))
+        for post_action in self.generate_post_actions(test_plan):
+            root.append(post_action)
+        root.append(self.generate_files(test_plan))
+        etree = et.ElementTree(root)
+        return etree
+
+    def generate_target(self, test_plan, root):
+        """Append target(s) into the XML"""
+        target = E("target")
+        device = SE(target, "device", rank="none", alias="DEFAULT")
+        SE(device, "property", name="harness", value=test_plan["harness"])
+        SE(device, "property", name="hardware", value=test_plan["device_type"])
+        SE(device, "setting", name="softwareVersion", value=test_plan["software_version"])
+        SE(device, "setting", name="softwareRelease", value=test_plan["software_release"])
+        SE(device, "setting", name="language", value=test_plan["device_language"])
+        
+        if test_plan["device_hwid"] != "":
+            SE(device, "property", name="HWID", value=test_plan["device_hwid"])
+        root.append(target)
+                    
+    def generate_plan(self, test_plan):
+        """Generate the test <plan> with multiple <set>s."""
+        plan = E("plan", name="Plan %s %s" % (test_plan["test_type"], test_plan["device_type"]), **self.defaults)
+        session = SE(plan, "session", name="session", **self.defaults)
+        # One set for each component.
+        for setd in test_plan.sets:
+            self.drop_path = self.drop_path_root.joinpath(setd["name"])
+            elem = SE(session, "set", name=setd["name"], **self.defaults)
+            SE(SE(elem, "target"), "device", rank="master", alias="DEFAULT")
+            case = SE(elem, "case", name="%s case" % setd["name"], **self.defaults)
+            self.generate_steps(setd, case, test_plan)
+        return plan
+
+    def generate_steps(self, setd, case, test_plan):
+        """Generate the test plan <step>s."""
+        # Flash images.
+        images = self.drop_path_root.joinpath("images")
+        for image_file in setd["image_files"]:
+            flash = SE(case, "flash", images=images.joinpath(image_file.name))
+            flash.set("target-alias", "DEFAULT")
+
+        # If tracing enabled:
+        self.generate_execute_asset_steps(case, test_plan)
+
+    def generate_execute_asset_steps(self, case, test_plan):
+        """Executes steps for TestAsset"""
+        time_out = test_plan["test_timeout"]
+        step = SE(case, "step", 
+                      name="Execute asset zip step" , **self.defaults)
+        SE(step, "command").text = "execute-asset"
+        params = SE(step, "params")
+        SE(params, "param", repeat="1")        
+        elem = SE(params, "param")
+        elem.set("asset-source", path(r"ATS3Drop" + os.sep + "TestAssets" + os.sep + "TestAsset.zip"))
+        elem = SE(params, "param")
+        elem.set("testcase-ids", test_plan["testasset_caseids"])
+        SE(params, "param", timeout=time_out)
+
+
+    def generate_post_actions(self, test_plan):
+        """Generate post actions."""
+        actions = []
+        for action_type, parameters in test_plan.post_actions:
+            action = E("postAction")
+            SE(action, "type").text = action_type
+            params = SE(action, "params")
+            for name, value in parameters:
+                SE(params, "param", name=name, value=value)
+            actions.append(action)
+        return actions
+
+    def generate_testasset_zip(self, test_plan, output_file=None):
+        """Generate TestAsset.zip for the ASTE server"""
+        filename = test_plan["temp_directory"].joinpath(r"TestAsset.zip")
+        if output_file != None:
+            filename = output_file
+        testasset_location = path(test_plan["testasset_location"])
+        if re.search(r"[.]zip", testasset_location):
+            return testasset_location
+        else:
+            zfile = zipfile.ZipFile(filename, "w", zipfile.ZIP_DEFLATED)
+            try:
+                for file_ in list(testasset_location.walkfiles()):
+                    file_mod = file_.replace(testasset_location, "")
+                    zfile.write(file_, file_mod.encode('utf-8'))
+            finally:
+                zfile.close()
+            return filename
+            
+    def drop_files(self, test_plan):
+        """Yield a list of drop files."""
+        drop_set = set()
+        drop_files = []
+        zip_file = path(self.generate_testasset_zip(test_plan)) ##check here, I changed the variable name from "zipfile" to "zip_file"
+        for setd in test_plan.sets:
+            drop_path = self.drop_path_root.joinpath(setd["name"])
+            drop_files = ((drop_path.parent, "images", setd["image_files"]),
+                          (drop_path.parent, "TestAssets", [zip_file]))
+            for drop_dir, sub_dir, files in drop_files:
+                for file_path in files:
+                    if file_path != None:
+                        drop_file = drop_dir.joinpath(sub_dir, file_path.name)
+                        drop_file = drop_file.normpath()
+                        if drop_file not in drop_set:
+                            drop_set.add(drop_file)
+                            yield (drop_file, file_path.normpath())
+           
+
+    def generate_files(self, test_plan):
+        """Generate the <files> section."""
+        files_elem = E("files")
+        for drop_file, _ in self.drop_files(test_plan):
+            SE(files_elem, "file").text = drop_file
+        return files_elem
+
+
+class AsteComponentParser(object):
+    """
+    Add information to the test_plan
+    """
+    def __init__(self, config):
+        self.flash_images = [path(p) for p in config.flash_images]
+        self.build_drive = config.build_drive
+        self.test_timeout = config.test_timeout
+
+    def insert_test_set(self, test_plan):
+        """Parse flash images and creates inserts into 'sets'"""
+        test_plan.insert_set(image_files=self.flash_images,
+                             test_timeout=list(self.test_timeout))
+
+
+class AsteTemplateTestDropGenerator(AsteTestDropGenerator):
+    """ ASTE template Drop generator tester"""
+    def getlogdir(self, setd):
+        """ get the logger directory"""
+        setd = setd  #just to fool pylint
+        return self.ASTE_LOG_DIR
+    
+    def aslfiles(self, test_plan):
+        """get the list of .asl files"""
+        files = []
+        
+        testasset_location = path(test_plan["testasset_location"])
+        for file_ in list(testasset_location.walkfiles()):
+            if file_.endswith('.asl'):
+                files.append(file_.replace(testasset_location + os.sep, ""))
+        return files
+    
+    def generate_xml(self, test_plan):
+        """ generate an XML file"""
+        loader = jinja2.ChoiceLoader([jinja2.PackageLoader(__name__, 'templates')])
+        env = jinja2.Environment(loader=loader)
+        template = env.from_string(pkg_resources.resource_string(__name__, 'aste_template.xml'))# pylint: disable-msg=E1101
+        
+        xmltext = template.render(test_plan=test_plan, os=os, atspath=atspath, atsself=self).encode('ISO-8859-1')
+        return et.ElementTree(et.XML(xmltext))
+
+def create_drop(config):
+    """Create a test drop."""    
+    _logger.debug("initialize test plan")
+    
+    test_plan = AsteTestPlan(config)
+    parser = AsteComponentParser(config)
+    parser.insert_test_set(test_plan) ######check here if something goes wrong, removed ", path(tsrc)"
+    if config.ats4_enabled.lower() == 'true':
+        generator = AsteTemplateTestDropGenerator()
+    else:
+        generator = AsteTestDropGenerator()
+    _logger.info("generating drop file: %s" % config.drop_file)
+    generator.generate(test_plan, output_file=config.drop_file)
+
+
+def main():
+    """Main entry point."""    
+    cli = OptionParser(usage="%prog [options] TSRC1 [TSRC2 [TSRC3 ...]]")
+    cli.add_option("--build-drive", help="Build area root drive")
+    cli.add_option("--device-type", help="Device type (e.g. 'PRODUCT')", 
+                   default="unknown")
+    cli.add_option("--device-hwid", help="Device hwid", 
+                   default="")
+    cli.add_option("--diamonds-build-url", help="Diamonds build url")
+    cli.add_option("--drop-file", help="Name for the final drop zip file",
+                   default="ATS3Drop.zip")
+    cli.add_option("--file-store", help="Destination path for reports.",
+                   default="")
+    cli.add_option("--flash-images", help="Paths to the flash image files",
+                   default="")     
+    cli.add_option("--minimum-flash-images", help="Minimum amount of flash images",
+                   default=2)
+    cli.add_option("--report-email", help="Email notification receivers", 
+                   default="")
+    cli.add_option("--plan-name", help="Name of the test plan", 
+                   default="plan")
+    cli.add_option("--test-timeout", help="Test execution timeout value (default: %default)",
+                   default="60")
+    cli.add_option("--testrun-name", help="Name of the test run", 
+                   default="run")
+    cli.add_option("--testasset-location", help="Path to the ASTE test assets location",
+                   default="")     
+    cli.add_option("--testasset-caseids", help="Test case IDs to run",
+                   default="")     
+    cli.add_option("--software-version", help="Sofwtare version",
+                   default="")     
+    cli.add_option("--test-type", help="Sofwtare version",
+                   default="smoke")     
+    cli.add_option("--device-language", help="language name e.g. English",
+                   default="English")     
+    cli.add_option("--software-release", help="Software release or product name e.g. PPD 52.50",
+                   default="")     
+    cli.add_option("--ats4-enabled", help="ATS4 enabled", default="False")
+    cli.add_option("--verbose", help="Increase output verbosity",
+                   action="store_true", default=False)
+
+    opts, _ = cli.parse_args()
+
+    if not opts.flash_images:
+        cli.error("no flash image files given")
+    if len(opts.flash_images.split(",")) < int(opts.minimum_flash_images):
+        cli.error("Not enough flash files: %i defined, %i needed" % (len(opts.flash_images.split(",")), int(opts.minimum_flash_images) ))
+
+    if opts.verbose:
+        _logger.setLevel(logging.DEBUG)
+        logging.basicConfig(level=logging.DEBUG)
+    _ = tempfile.mkdtemp()
+    config = Configuration(opts)
+    create_drop(config)
+
+if __name__ == "__main__":
+    main()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/ats3/aste_template.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,224 @@
+<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
+<!-- 
+============================================================================ 
+Name        : aste_template.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:
+Contains the template for the test.xml file output. The test.xml file contains
+information on the files used to create the drop file.
+============================================================================
+-->
+
+{% import 'ats4_macros.xml' as macros with context %}
+
+<testrun>
+    <metadata>
+        {% if test_plan['diamonds_build_url'] -%}
+        <meta name="diamonds-buildid">{{ test_plan['diamonds_build_url'] }}</meta> 
+        <meta name="diamonds-testtype">Smoke</meta>
+        {% endif %}
+        <meta name="name">{{ test_plan['testrun_name'] }}</meta> 
+    </metadata>
+    
+    <agents>
+        <agent alias="DEFAULT_{{ test_plan['harness'] }}">
+            <property name="hardware" value="{{ test_plan["device_type"] }}"/>
+        </agent>
+    </agents>
+    
+    {% include 'preset_custom.xml' ignore missing %}
+    
+    {% for setd in test_plan.sets -%}
+    <execution defaultAgent="DEFAULT_{{ test_plan['harness'] }}">        
+        <initialization>
+            {% include 'prestep_custom.xml' ignore missing %}
+        
+            {% if setd.image_files -%}
+            <task>
+                <type>FlashTask</type>
+                <parameters>
+                {% set i = 1 %}
+                {% for img in setd.image_files -%}
+                    <parameter name="image-{{ i }}" value="ATS3Drop\images\{{ os.path.basename(img) }}" />
+                    {% set i = i + 1 %}
+                {% endfor -%}
+                </parameters>
+            </task>
+            {% endif %}
+            
+            {% if setd["ctc_enabled"] == "True" -%}
+            {{ macros.ctc_initialization() }}
+            {% endif %}
+            
+            <task>
+                <type>CreateDirTask</type>
+                <parameters>                
+                    <parameter value="{{ atsself.getlogdir(setd) }}" name="dir"/>
+                </parameters>
+            </task>
+                      
+          {% if setd.has_key("sis_files") and setd["sis_files"] -%}
+              {% for sis_file in setd["sis_files"] -%}
+            <task>
+                <type>FileUploadTask</type>
+                <parameters>
+                    <parameter name="src" value="ATS3Drop\{{ setd.name }}\sis\{{ os.path.basename(sis_file) }}"/>
+                    <parameter name="dst" value="c:\testframework\{{ os.path.basename(sis_file) }}"/>
+                </parameters>
+            </task>
+              {% endfor -%}
+          {% else %}
+              {% if setd['src_dst'] != [] -%}
+                {% for file in setd['src_dst'] -%}            
+            <task>
+                <type>FileUploadTask</type>
+                <parameters>
+                    <parameter value="ATS3Drop\{{ setd.name }}\{{ file[1].replace(":", "") }}" name="src"/>
+                    <parameter value="{{ file[1] }}" name="dst"/>
+                </parameters>
+            </task>
+                {% endfor -%}
+              {% else %}
+                  {% for data_file in setd["data_files"] -%}
+            <task>
+                <type>FileUploadTask</type>
+                <parameters>
+                    <parameter name="src" value="ATS3Drop\{{ setd.name }}\data\{{ os.path.basename(data_file) }}"/>
+                    <parameter name="dst" value="e:\testing\data\{{ os.path.basename(data_file) }}"/>
+                </parameters>
+            </task>
+                  {% endfor -%}
+                  {% for data_file in setd["config_files"] -%}
+            <task>
+                <type>FileUploadTask</type>
+                <parameters>
+                    <parameter name="src" value="ATS3Drop\{{ setd.name }}\conf\{{ os.path.basename(data_file) }}"/>
+                    <parameter name="dst" value="e:\testing\conf\{{ os.path.basename(data_file) }}"/>
+                </parameters>
+            </task>
+                  {% endfor -%}
+                  {% for data_file in setd["testmodule_files"] -%}
+            <task>
+                <type>FileUploadTask</type>
+                <parameters>
+                    <parameter name="src" value="ATS3Drop\{{ setd.name }}\testmodules\{{ os.path.basename(data_file) }}"/>
+                    <parameter name="dst" value="c:\sys\bin\{{ os.path.basename(data_file) }}"/>
+                </parameters>
+            </task>
+                  {% endfor -%}
+              {% endif %}
+          {% endif %}
+          
+          {% if setd.engine_ini_file -%}
+              {% if (setd.has_key("sis_files") and setd["sis_files"]) or setd["src_dst"] == [] -%}
+            <task>
+                <type>FileUploadTask</type>
+                <parameters>
+                    <parameter name="src" value="ATS3Drop\{{ setd.name }}\init\{{ os.path.basename(setd["engine_ini_file"]) }}"/>
+                    <parameter name="dst" value="c:\testframework\{{ os.path.basename(setd["engine_ini_file"]) }}"/>
+                </parameters>
+            </task>
+              {% endif %}
+          {% endif %}
+          
+          {% for sis_file in setd["sis_files"] -%}
+            <task>
+               <type>InstallSisTask</type>
+               <parameters>
+                    <parameter name="timeout" value="{{ test_plan["test_timeout"] }}"/>
+                    <parameter name="upgrade-data " value="true"/>
+                    <parameter name="ignore-ocsp-warnings" value="true"/>
+                    <parameter name="ocsp-done" value="true"/>
+                    <parameter name="software-package" value="c:\testframework\{{ os.path.basename(sis_file) }}"/>
+               </parameters>
+            </task>
+          {% endfor -%}
+        </initialization>    
+        
+        {% include 'prerun_custom.xml' ignore missing %}
+
+        <task>
+           <type>SetTestAssetPackageTask</type>
+           <parameters>
+              <parameter name="file" value="ATS3Drop\TestAssets\TestAsset.zip"/>
+           </parameters>
+        </task>
+        
+        <task>
+           <type>ExecuteTestAssetTask</type>
+           <parameters>
+          {% set i = 1 %}     
+          {% for name in atsself.aslfiles(test_plan) -%}
+              <parameter name="script_{{ i }}" value="{{ name }}"/>
+              {% set i = i + 1 %}
+          {% endfor -%}
+           </parameters>
+        </task>
+        
+        {% include 'postrun_custom.xml' ignore missing %}
+        
+        <finalization>
+        {% if setd["ctc_enabled"] == "True" -%}
+        {{ macros.ctc_finalization(setd) }}
+        {% endif %}
+
+            <task>
+                <type>FileDownloadTask</type>
+                <parameters>
+                    <parameter value="{{ atsself.getlogdir(setd) }}\*" name="src"/>
+                </parameters>
+            </task>
+        {% include 'poststep_custom.xml' ignore missing %}
+        </finalization>
+        
+    </execution>    
+    {% endfor -%}
+    
+    {% include 'postset_custom.xml' ignore missing %}
+    
+    <postActions>
+        {% include 'prepostaction.xml' ignore missing %}
+        {% for action_type, parameters in test_plan.post_actions -%}
+            {% if action_type == 'RunProcessAction' %}
+        <action>
+            <type>{{ action_type }}</type>
+            <parameters>
+                {% for name, value in parameters -%}
+                <parameter name="{{ name }}" value="{{ value }}"/>
+                {% endfor -%}
+            </parameters>
+        </action>
+            {% endif %}
+        {% endfor -%}
+        {% if test_plan['report_email'] -%}
+        <action>
+            <type>EmailAction</type>
+            <parameters>
+                <parameter value="Release testing" name="subject"/>
+                <parameter value="{{ test_plan['report_email'] }}" name="to"/>
+                <parameter value="simplelogger" name="format"/>
+            </parameters>
+        </action>
+        {% endif %}
+        {% if test_plan['diamonds_build_url'] -%}
+        <action>
+            <type>DiamondsAction</type>
+        </action>
+        {% endif %}
+        {% include 'postpostaction.xml' ignore missing %}
+    </postActions>
+    
+</testrun>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/ats3/ats4_template.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,264 @@
+<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
+<!-- 
+============================================================================ 
+Name        : ats_template.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:
+Contains the template for the test.xml file output. The test.xml file contains
+information on the files used to create the drop file.
+============================================================================
+-->
+
+{% import 'ats4_macros.xml' as macros with context %}
+
+<testrun>
+    <metadata>
+        {% if test_plan['diamonds_build_url'] -%}
+        <meta name="diamonds-buildid">{{ test_plan['diamonds_build_url'] }}</meta> 
+        <meta name="diamonds-testtype">Smoke</meta>
+        {% endif %}
+        <meta name="name">{{ test_plan['testrun_name'] }}</meta> 
+    </metadata>
+    
+    <agents>
+        <agent alias="DEFAULT_{{ test_plan['harness'] }}">
+            <property name="hardware" value="{{ test_plan["device_type"] }}"/>
+        </agent>
+    </agents>
+    
+    {% include 'preset_custom.xml' ignore missing %}
+    
+    {% for setd in test_plan.sets -%}
+    <execution defaultAgent="DEFAULT_{{ test_plan['harness'] }}">        
+        <initialization>
+            {% include 'prestep_custom.xml' ignore missing %}
+        
+            {% if setd.image_files -%}
+            <task>
+                <type>FlashTask</type>
+                <parameters>
+                {% set i = 1 %}
+                {% for img in atsself.get_sorted_images(setd) -%}
+                    <parameter name="image-{{ i }}" value="ATS3Drop\images\{{ os.path.basename(img) }}" />
+                    {% set i = i + 1 %}
+                {% endfor -%}
+                </parameters>
+            </task>
+            {% endif %}
+            
+            {% if setd["ctc_enabled"] == "True" -%}
+            {{ macros.ctc_initialization() }}
+            {% endif %}
+            
+            <task>
+                <type>CreateDirTask</type>
+                <parameters>                
+                    <parameter value="{{ atsself.getlogdir(setd) }}" name="dir"/>
+                </parameters>
+            </task>
+                      
+          {% if setd.has_key("sis_files") and setd["sis_files"] -%}
+              {% for sis_file in setd["sis_files"] -%}
+            <task>
+                <type>FileUploadTask</type>
+                <parameters>
+                    <parameter name="src" value="ATS3Drop\{{ setd.name }}\sis\{{ os.path.basename(sis_file) }}"/>
+                    <parameter name="dst" value="c:\testframework\{{ os.path.basename(sis_file) }}"/>
+                </parameters>
+            </task>
+              {% endfor -%}
+          {% else %}
+              {% if setd['src_dst'] != [] -%}
+                {% for file in setd['src_dst'] -%}            
+            <task>
+                <type>FileUploadTask</type>
+                <parameters>
+                    <parameter value="ATS3Drop\{{ setd.name }}\{{ file[1].replace(":", "") }}" name="src"/>
+                    <parameter value="{{ file[1] }}" name="dst"/>
+                </parameters>
+            </task>
+                {% endfor -%}
+              {% else %}
+                  {% for data_file in setd["data_files"] -%}
+            <task>
+                <type>FileUploadTask</type>
+                <parameters>
+                    <parameter name="src" value="ATS3Drop\{{ setd.name }}\data\{{ os.path.basename(data_file) }}"/>
+                    <parameter name="dst" value="e:\testing\data\{{ os.path.basename(data_file) }}"/>
+                </parameters>
+            </task>
+                  {% endfor -%}
+                  {% for data_file in setd["config_files"] -%}
+            <task>
+                <type>FileUploadTask</type>
+                <parameters>
+                    <parameter name="src" value="ATS3Drop\{{ setd.name }}\conf\{{ os.path.basename(data_file) }}"/>
+                    <parameter name="dst" value="e:\testing\conf\{{ os.path.basename(data_file) }}"/>
+                </parameters>
+            </task>
+                  {% endfor -%}
+                  {% for data_file in setd["testmodule_files"] -%}
+            <task>
+                <type>FileUploadTask</type>
+                <parameters>
+                    <parameter name="src" value="ATS3Drop\{{ setd.name }}\testmodules\{{ os.path.basename(data_file) }}"/>
+                    <parameter name="dst" value="c:\sys\bin\{{ os.path.basename(data_file) }}"/>
+                </parameters>
+            </task>
+                  {% endfor -%}
+              {% endif %}
+          {% endif %}
+          
+          {% if setd.engine_ini_file -%}
+              {% if (setd.has_key("sis_files") and setd["sis_files"]) or setd["src_dst"] == [] -%}
+            <task>
+                <type>FileUploadTask</type>
+                <parameters>
+                    <parameter name="src" value="ATS3Drop\{{ setd.name }}\init\{{ os.path.basename(setd["engine_ini_file"]) }}"/>
+                    <parameter name="dst" value="c:\testframework\{{ os.path.basename(setd["engine_ini_file"]) }}"/>
+                </parameters>
+            </task>
+              {% endif %}
+          {% endif %}
+          
+          {% for sis_file in setd["sis_files"] -%}
+            <task>
+               <type>InstallSisTask</type>
+               <parameters>
+                    <parameter name="timeout" value="{{ test_plan["test_timeout"] }}"/>
+                    <parameter name="upgrade-data " value="true"/>
+                    <parameter name="ignore-ocsp-warnings" value="true"/>
+                    <parameter name="ocsp-done" value="true"/>
+                    <parameter name="software-package" value="c:\testframework\{{ os.path.basename(sis_file) }}"/>
+               </parameters>
+            </task>
+          {% endfor -%}
+        </initialization>    
+        
+        {% include 'prerun_custom.xml' ignore missing %}
+
+        {% if setd['src_dst'] -%}
+            {{ macros.generate_runsteps_stif(setd) }}
+            
+            {% for file in setd['src_dst'] -%}
+                {% if setd["test_harness"] == "GENERIC" -%}
+                    {% if 'testscript' in file[2] -%}
+        <task>
+            <type>TEFTask</type>
+            <parameters>
+                <parameter name="file" value="testexecute.exe"/>
+                <parameter name="parameters" value="{{ file[1] }}"/>
+                <parameter name="timeout" value="{{ test_plan["test_timeout"] }}"/>
+                <parameter name="result-file" value="{{ atsself.TEF_LOG_DIR }}\{{ os.path.basename(file[1]).replace('.script', '.htm') }}"/>
+            </parameters>
+        </task>
+                    {% endif %}
+                    
+                    {% if 'testmodule' in file[2] -%}
+        <task>
+            <type>ExecutableTestCaseTask</type>
+            <parameters>
+                <parameter name="file" value="{{ file[1] }}"/>
+                <parameter name="parser" value="RTestResultParser" />
+                <parameter name="timeout" value="{{ test_plan["test_timeout"] }}"/>
+                <parameter name="result-file" value="{{ atsself.TEF_LOG_DIR }}\{{ os.path.basename(file[1]).replace('.exe', '.htm') }}"/>
+            </parameters>
+        </task>
+                    {% endif %}
+                {% endif %}
+                {% if setd["test_harness"] == "EUNIT" -%}
+                    {% if file[2] == "testmodule" -%}
+        <task>
+            <type>EUnitTask</type>
+            <parameters>
+                <parameter value="z:\sys\bin\EUNITEXERUNNER.EXE" name="file"/>
+                <parameter name="result-file" value="{{ atsself.EUNIT_LOG_DIR }}\{{ atspath.basename(file[1]).replace('.' + file[1].rsplit(".")[1], '_log.xml') }}"/>
+                <parameter name="parameters" value="{{ test_plan["eunitexerunner_flags"] }} /F {{ atspath.basename(file[1]).replace('.dll', '').replace('.exe', '') }} /l xml {{ atspath.basename(file[1]) }}"/>
+                <parameter name="timeout" value="{{ test_plan["test_timeout"] }}"/>
+            </parameters>
+        </task>
+                    {% endif %}
+                    {% if file[2] == "testmodule:qt" -%}
+        <task>
+            <type>QTestTask</type>
+            <parameters>
+                <parameter name="file" value="{{ file[1] }}"/>                      
+                <parameter name="parameters" value="-lightxml -o {{ atsself.QT_LOG_DIR }}\{{ os.path.basename(file[1]).replace('.' + file[1].rsplit(".")[1], '_log.xml') }}"/>
+                <parameter name="result-file" value="{{ atsself.QT_LOG_DIR }}\{{ os.path.basename(file[1]).replace('.' + file[1].rsplit(".")[1], '_log.xml') }}"/>
+                <parameter name="timeout" value="{{ test_plan["test_timeout"] }}"/>
+            </parameters>
+        </task>
+                    {% endif %}
+                {% endif %}
+            {% endfor -%}
+        {% else %}
+            {{ macros.generate_runsteps_stif_single_set(setd) }}
+        {% endif %}
+        
+        {% include 'postrun_custom.xml' ignore missing %}
+        
+        <finalization>
+        {% if setd["ctc_enabled"] == "True" -%}
+        {{ macros.ctc_finalization(setd) }}
+        {% endif %}
+
+            <task>
+                <type>FileDownloadTask</type>
+                <parameters>
+                    <parameter value="{{ atsself.getlogdir(setd) }}\*" name="src"/>
+                </parameters>
+            </task>
+        {% include 'poststep_custom.xml' ignore missing %}
+        </finalization>
+        
+    </execution>    
+    {% endfor -%}
+    
+    {% include 'postset_custom.xml' ignore missing %}
+    
+    <postActions>
+        {% include 'prepostaction.xml' ignore missing %}
+        {% for action_type, parameters in test_plan.post_actions -%}
+            {% if action_type == 'RunProcessAction' %}
+        <action>
+            <type>{{ action_type }}</type>
+            <parameters>
+                {% for name, value in parameters -%}
+                <parameter name="{{ name }}" value="{{ value }}"/>
+                {% endfor -%}
+            </parameters>
+        </action>
+            {% endif %}
+        {% endfor -%}
+        {% if test_plan['report_email'] -%}
+        <action>
+            <type>EmailAction</type>
+            <parameters>
+                <parameter value="Release testing" name="subject"/>
+                <parameter value="{{ test_plan['report_email'] }}" name="to"/>
+                <parameter value="simplelogger" name="format"/>
+            </parameters>
+        </action>
+        {% endif %}
+        {% if test_plan['diamonds_build_url'] -%}
+        <action>
+            <type>DiamondsAction</type>
+        </action>
+        {% endif %}
+        {% include 'postpostaction.xml' ignore missing %}
+    </postActions>
+    
+</testrun>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/ats3/ats_template.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,274 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+============================================================================ 
+Name        : ats_template.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:
+Contains the template for the test.xml file output. The test.xml file contains
+information on the files used to create the drop file.
+============================================================================
+-->
+<test>
+    <name>{{ test_plan['testrun_name'] }}</name>
+    <buildid>{{ test_plan['diamonds_build_url'] }}</buildid>
+    <target>
+    {% if test_plan["harness"] == "MULTI_HARNESS" -%}
+        <device alias="DEFAULT_STIF" rank="none">        
+            <property name="HARNESS" value="STIF"/>
+            <property name="TYPE" value="{{ test_plan['device_type'] }}"/>
+            {% if test_plan["device_hwid"] != "" -%}
+            <property name="HWID" value="{{ test_plan["device_hwid"] }}"/>
+            {% endif %}
+        </device>
+        <device alias="DEFAULT_EUNIT" rank="none">        
+            <property name="HARNESS" value="EUNIT"/>
+            <property name="TYPE" value="{{ test_plan['device_type'] }}"/>
+            {% if test_plan["device_hwid"] != "" -%}
+            <property name="HWID" value="{{ test_plan["device_hwid"] }}"/>
+            {% endif %}
+        </device>
+    {% else %}
+        <device alias="DEFAULT_{{ test_plan['harness'] }}" rank="none">        
+            <property name="HARNESS" value="{{ test_plan['harness'] }}"/>
+            <property name="TYPE" value="{{ test_plan['device_type'] }}"/>
+            {% if test_plan["device_hwid"] != "" -%}
+            <property name="HWID" value="{{ test_plan["device_hwid"] }}"/>
+            {% endif %}
+        </device>
+    {% endif %}
+    </target>
+    
+    <plan passrate="100" enabled="true" name="{{ test_plan['testrun_name'] }} Plan" significant="false" harness="{{ test_plan['harness'] }}">
+        <session name="session" harness="{{ test_plan['harness'] }}" enabled="true" passrate="100" significant="false">
+            {% for setd in test_plan.sets -%}
+            <set name="{{ setd["name"] }}-{{ setd["component_path"] }}" harness="{{ test_plan['harness'] }}" enabled="true" passrate="100">
+              <target>
+                  <device alias="DEFAULT_{{ test_plan['harness'] }}" rank="master"/>
+              </target>
+              <case name="{{ setd.name }} case" passrate="100" harness="{{ setd.test_harness }}" enabled="true" significant="false"> 
+              
+              {% if setd["ctc_enabled"] == "True" -%}
+              <step name="Create CTC log dir" harness="{{ setd.test_harness }}" enabled="true" passrate="100" significant="false">
+                  <command>makedir</command>
+                  <params>
+                      <param dir="{{ atsself.CTC_LOG_DIR }}"/>
+                  </params>
+              </step>
+              <step name="CTC start" passrate="100" harness="{{ setd.test_harness }}" enabled="true" significant="false">
+                    <command>execute</command>
+                    <params>
+                        <param file="z:\sys\bin\ctcman.exe"/>
+                    </params>
+              </step>
+              {% endif %}
+              {% if setd.image_files -%}
+                {% for img in setd.image_files -%}
+                <flash target-alias="DEFAULT_{{ setd.test_harness }}" images="ATS3Drop\images\{{ os.path.basename(img) }}" />
+                {% endfor -%}
+              {% endif %}
+              <step name="Create logs folder" harness="{{ setd.test_harness }}" enabled="true" passrate="100" significant="false">
+                  <command>makedir</command>
+                  <params>
+                  {% if setd["test_harness"] == "GENERIC" -%}
+                      {% if atsself.check_mtf_harness(setd) -%}
+                      <param dir="{{ atsself.MTF_LOG_DIR }}"/>
+                      {% else %}
+                      <param dir="{{ atsself.TEF_LOG_DIR }}"/>
+                      {% endif %}
+                  {% endif %}
+                  {% if setd["test_harness"] == "EUNIT" -%}
+                      {% if atsself.check_qt_harness(setd) -%}
+                      <param dir="{{ atsself.QT_LOG_DIR }}"/>
+                      {% else %}
+                      <param dir="{{ atsself.EUNIT_LOG_DIR }}"/>
+                      {% endif %}
+                  {% endif %}
+                  </params>
+              </step>
+              
+              {% for sis_file in setd["sis_files"] -%}
+              <step name="Install sis: {{ os.path.basename(sis_file) }}" harness="{{ setd.test_harness }}" enabled="true" passrate="100" significant="false">
+                    <command>install</command>
+                    <params>
+                        <param src="ATS3Drop\{{ setd.name }}\sis\{{ os.path.basename(sis_file) }}"/>
+                        <param dst="c:\testframework\{{ os.path.basename(sis_file) }}"/>
+                    </params>
+              </step>
+              {% endfor -%}
+              
+              {% for data_file in setd["data_files"] -%}
+              <step name="Install data: {{ os.path.basename(data_file) }}" harness="{{ setd.test_harness }}" enabled="true" passrate="100" significant="false">
+                    <command>install</command>
+                    <params>
+                        <param src="ATS3Drop\{{ setd.name }}\{{ os.path.basename(data_file) }}"/>
+                        <param dst="e:\testing\data"/>
+                    </params>
+              </step>
+              {% endfor -%}
+              {% for data_file in setd["testmodule_files"] -%}
+              <step name="Install testmodule: {{ os.path.basename(data_file) }}" harness="{{ setd.test_harness }}" enabled="true" passrate="100" significant="false">
+                    <command>install</command>
+                    <params>
+                        <param src="ATS3Drop\{{ setd.name }}\{{ os.path.basename(data_file) }}"/>
+                        <param dst="c:\sys\bin"/>
+                    </params>
+              </step>
+              {% endfor -%}
+              {% for data_file in setd["config_files"] -%}
+              <step name="Install conf: {{ os.path.basename(data_file) }}" harness="{{ setd.test_harness }}" enabled="true" passrate="100" significant="false">
+                    <command>install</command>
+                    <params>
+                        <param src="ATS3Drop\{{ setd.name }}\{{ os.path.basename(data_file) }}"/>
+                        <param dst="e:\testing\conf"/>
+                    </params>
+              </step>
+              {% endfor -%}
+              
+              {% if setd.engine_ini_file -%}
+              <step name="Install engine: {{ os.path.basename(setd["engine_ini_file"]) }}" harness="{{ setd.test_harness }}" enabled="true" passrate="100" significant="false">
+                    <command>install</command>
+                    <params>
+                        <param src="ATS3Drop\{{ setd.name }}\{{ os.path.basename(setd["engine_ini_file"]) }}"/>
+                        <param dst="c:\testframework\{{ setd["test_harness"] }}"/>
+                    </params>
+              </step>
+              {% endif %}
+
+              {% for sis_file in setd["sis_files"] -%}
+              <step name="Install SIS to the device: {{ os.path.basename(sis_file) }}" harness="{{ setd.test_harness }}" enabled="true" passrate="100" significant="false">
+                  <command>install-software</command>
+                  <params>
+                      <param timeout="{{ test_plan["test_timeout"] }}"/>
+                      <param overWriteAllowed="true"/>
+                      <param upgradeData="true"/>
+                      <param downloadAllowed="false"/>
+                      <param packageInfoAllowed="true"/>
+                      <param untrustedAllowed="true"/>
+                      <param ignoreOCSPWarnings="true"/>
+                      <param userCapGranted="true"/>
+                      <param optionalItemsAllowed="true"/>
+                      <param killApp="true"/>
+                      <param installDrive="C"/>
+                      <param upgradeAllowed="true"/>
+                      <param OCSP_Done="true"/>
+                      <param sisPackageName="c:\testframework\{{ os.path.basename(sis_file) }}"/>
+                  </params>
+              </step>
+              {% endfor -%}
+               
+              {% if setd.src_dst -%}
+                {% for file in setd.src_dst -%}
+                <step name="Install {{ os.path.basename(file[1]) }}" harness="{{ setd.test_harness }}" enabled="true" passrate="100" significant="false">
+                    <command>install</command>
+                    <params>
+                        <param src="ATS3Drop\{{ setd.name }}\{{ file[1].replace(":","") }}"/>
+                        <param dst="{{ file[1] }}"/>
+                    </params>
+                </step>
+                
+                  {% if setd["test_harness"] == "GENERIC" -%}
+                <step passrate="100" harness="{{ setd.test_harness }}" enabled="true" name="Execute test: {{ os.path.basename(file[1]) }}" significant="false">
+                    <command>execute</command>
+                    <params>
+                      {% if 'testscript' in file[2] -%}
+                          {% if file[2] == "testscript:mtf" -%}
+                      <param file="testframework.exe"/>
+                      <param parser="MTFResultParser"/>
+                      <param result-file="{{ atsself.MTF_LOG_DIR  }}\{{ os.path.basename(file[1]).replace('.script', '.htm') }}"/>
+                          {% else %}
+                      <param file="testexecute.exe"/>
+                      <param parser="TEFTestResultParser"/>
+                      <param result-file="{{ atsself.TEF_LOG_DIR }}\{{ os.path.basename(file[1]).replace('.script', '.htm') }}"/>
+                          {% endif %}
+                      <param parameters="{{ file[1] }}"/>
+                      <param timeout="{{ test_plan["test_timeout"] }}"/>
+                      {% endif %}
+                      
+                      {% if 'testmodule' in file[2] -%}
+                      <param file="{{ file[1] }}"/>
+                      <param parser="RTestResultParser"/>
+                      <param result-file="{{ atsself.TEF_LOG_DIR  }}\{{ os.path.basename(file[1]).replace('.exe', '.htm') }}"/>
+                      <param timeout="{{ test_plan["test_timeout"] }}"/>
+                      {% endif %}
+                    </params>
+                </step>
+                  {% endif %}
+                  {% if setd["test_harness"] == "EUNIT" -%}
+                      {% if file[2] == "testmodule:qt" -%}
+                <step passrate="100" harness="{{ setd.test_harness }}" enabled="true" name="Execute test: {{ os.path.basename(file[1]) }}" significant="false">
+                    <command>execute</command>
+                    <params>
+                      <param file="{{ file[1] }}"/>                      
+                      <param parameters="-lightxml -o {{ atsself.QT_LOG_DIR }}\{{ os.path.basename(file[1]).replace('.' + file[1].rsplit(".")[1], '_log.xml') }}"/>
+                      <param result-file="{{ atsself.QT_LOG_DIR }}\{{ os.path.basename(file[1]).replace('.' + file[1].rsplit(".")[1], '_log.xml') }}"/>
+                      <param parser="QTestResultParser"/>
+                      <param delete-result="true"/>
+                      <param async="false"/>
+                      <param timeout="{{ test_plan["test_timeout"] }}"/>
+                    </params>
+                </step>
+                      {% endif %}
+                  {% endif %}
+                    
+                {% endfor -%}
+              {% endif %}
+                <step passrate="100" harness="{{ setd.test_harness }}" enabled="true" name="Fetch test module logs" significant="false">
+                  <command>fetch-log</command>
+                  <params>
+                    <param type="text"/>
+                    <param delete="true"/>
+                {% if setd["test_harness"] == "GENERIC" -%}
+                    {% if atsself.check_mtf_harness(setd) -%}
+                    <param path="{{ atsself.MTF_LOG_DIR }}\*"/>
+                    {% else %}
+                    <param path="{{ atsself.TEF_LOG_DIR }}\*"/>
+                    {% endif %}
+                {% endif %}
+                {% if setd["test_harness"] == "EUNIT" -%}
+                    {% if atsself.check_qt_harness(setd) -%}
+                    <param path="{{ atsself.QT_LOG_DIR }}\*"/>
+                    {% else %}
+                    <param path="{{ atsself.EUNIT_LOG_DIR }}\*"/>
+                    {% endif %}
+                {% endif %}
+                  </params>
+                </step>
+              </case>
+          </set>
+          {% endfor -%}
+        </session>
+    </plan>
+    
+    {% if test_plan.post_actions %}
+        {% for action_type, parameters in test_plan.post_actions -%}
+    <postAction>
+        <type>{{ action_type }}</type>
+        <params>
+            {% for name, value in parameters -%}
+            <param name="{{ name }}" value="{{ value }}"/>
+            {% endfor -%}
+        </params>
+    </postAction>
+        {% endfor -%}
+    {% endif %}
+  
+    <files>
+        {% for drop_file, _ in atsself.drop_files(test_plan) -%}
+        <file>{{ drop_file }}</file>
+        {% endfor -%}
+    </files>
+  
+</test>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/ats3/atsconfigparser.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,141 @@
+#============================================================================ 
+#Name        : atsconfigparser.py
+#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:
+#===============================================================================
+
+""" handles the parameters  used in configuring the ATS """
+
+import configuration
+import amara
+
+class TestXML:
+    """ class used to create XML file"""
+    def __init__(self, testxml):
+        """ init file"""
+        self.testxml = testxml
+        self.doc = amara.parse(testxml)
+
+    def containsproperty(self, name, value):
+        """ returns the value of property if it exists or false"""
+        for p_temp in self.doc.xml_xpath("//property"):
+            if str(p_temp.name) == name:
+                return str(p_temp.value) == value
+        return False
+    
+    def containssetting(self, name, value):
+        """ returns the value of setting if it exists or false"""
+        for p_temp in self.doc.xml_xpath("//setting"):
+            if str(p_temp.name) == name:
+                return str(p_temp.value) == value
+        return False
+    
+    def addorreplacesetting(self, name, value):
+        """ Add or replace 'setting' value """
+        changed = False
+        for p_temp in self.doc.xml_xpath("//setting"):
+            if str(p_temp.name) == name:
+                p_temp.value = value
+                changed = True
+        if not changed:
+            for device in self.doc.test.target.device:
+                device.xml_append(self.doc.xml_create_element(u"setting", attributes = {u'name': unicode(name), u'value': unicode(value)}))
+        
+    def containsattribute(self, name, value):
+        """ returns true or false """
+        for p_temp in self.doc.xml_xpath("//*[@" + name + "]"):
+            if p_temp[name] == value:
+                return True
+        return False
+        
+    def replaceattribute(self, name, value):
+        """sets the xpath to the passed in value"""
+        for p_temp in self.doc.xml_xpath("//*[@" + name + "]"):
+            p_temp[name] = value
+            
+    def addorreplaceproperty(self, name, value):
+        """ add or replace property value"""
+        changed = False
+        for p_temp in self.doc.xml_xpath("//property"):
+            if str(p_temp.name) == name:
+                p_temp.value = value
+                changed = True
+        if not changed:
+            for device in self.doc.test.target.device:
+                device.xml_append(self.doc.xml_create_element(u"property", attributes = {u'name': unicode(name), u'value': unicode(value)}))
+
+
+class ATSConfigParser:
+    """ ATS configuration parser"""
+    def __init__(self, specfilename):
+        specfile = open(specfilename)
+        builder = configuration.NestedConfigurationBuilder(specfile)
+        self.configs = builder.getConfigurations("common")
+
+    def properties(self):
+        """ retrieve the property values"""
+        props = {}
+        for config in self.configs:
+            if (config.type == "properties"):
+                for subconfig in config:
+                    props[subconfig] = config[subconfig]
+        return props
+
+    def settings(self):
+        """ retrieve the settings values"""
+        settings = {}
+        for config in self.configs:
+            if (config.type == "settings"):
+                for subconfig in config:
+                    settings[subconfig] = config[subconfig]
+        return settings
+
+def converttestxml(specfilename, testxmldata): # pylint: disable-msg=R0912
+    """ convert the specfilename to xml"""
+    specfile = open(specfilename)
+
+    builder = configuration.NestedConfigurationBuilder(specfile)
+    configs = builder.getConfigurations("common")# + builder.getConfigurations("ats3")
+
+    testxml = TestXML(testxmldata)
+
+    for config in configs:
+        if (config.type == "properties"):
+            for subconfig in config:
+                testxml.addorreplaceproperty(subconfig, config[subconfig])
+        if (config.type == "conditional_properties"):
+            check = config.name.split(',')
+            if testxml.containsproperty(check[0], check[1]):
+                for subconfig in config:
+                    testxml.addorreplaceproperty(subconfig, config[subconfig])
+        if (config.type == "settings"):
+            for subconfig in config:
+                testxml.addorreplacesetting(subconfig, config[subconfig])
+        if (config.type == "conditional_settings"):
+            check = config.name.split(',')
+            if testxml.containssetting(check[0], check[1]):
+                for subconfig in config:
+                    testxml.addorreplacesetting(subconfig, config[subconfig])
+        if (config.type == "attributes"):
+            for subconfig in config:
+                testxml.replaceattribute(subconfig, config[subconfig])
+        if (config.type == "conditional_attributes"):
+            check = config.name.split(',')
+            if testxml.containsattribute(check[0], check[1]):
+                for subconfig in config:
+                    testxml.replaceattribute(subconfig, config[subconfig])
+    
+    return testxml.doc.xml(indent=u"yes")
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/ats3/dropgenerator.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,977 @@
+# -*- encoding: latin-1 -*-
+
+#============================================================================ 
+#Name        : dropgenerator.py 
+#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:
+#===============================================================================
+
+""" Generate test drop zip file for ATS3"""
+
+# pylint: disable-msg=W0142,R0912,R0201,R0915,R0913,R0904
+# pylint: disable-msg=C0302
+# pylint: disable-msg=W0404,W0603
+
+#W0142 => * and ** were used
+#C0302 => Too many lines
+#R* removed when refactored
+#W => use of global statement
+
+import codecs
+from  xml.parsers.expat import ExpatError
+
+from xml.etree import ElementTree as et
+import pkg_resources
+from path import path # pylint: disable-msg=F0401
+import logging
+import os
+import re
+import zipfile
+import amara
+import atsconfigparser
+
+# pylint: disable-msg=W0404
+from ntpath import sep as atssep
+import ntpath as atspath
+
+import jinja2 # pylint: disable-msg=F0401
+
+_logger = logging.getLogger('ats')
+
+# Shortcuts
+E = et.Element
+SE = et.SubElement
+
+CTC_PATHS_LIST = []
+
+class Ats3TestDropGenerator(object):
+    """
+    Generate test drop zip file for ATS3.
+
+    Generates drom zip files file from a TestPlan instance. The main
+    responsibility of this class is to serialize the plan into a valid XML
+    file and build a zip file for the drop.
+    
+    Creates one <set> for each component's tests.
+
+    Stif harness, normal operation
+    ------------------------------
+    
+    - create logging dir for stif             makedir (to C:\logs\TestFramework)
+    - install data files                      install (to E:\testing\data)
+    - install configuration (.cfg) files      "       (to E:\testing\conf)
+    - install testmodule (.dll) files         "       (to C:\sys\bin)
+    - install engine ini (testframework.ini)  "       (to C:\testframework)
+    - execute cases from the engine ini       run-cases
+    - fetch logs                              fetch-log
+
+    Stif harness, SIS package installation
+    --------------------------------------
+    
+    - like above but with data and config files replaced by sis files
+    - install sis to the device               install-software
+
+    """
+
+    STIF_LOG_DIR = r"c:" + os.sep + "logs" + os.sep + "testframework"
+    TEF_LOG_DIR = r"c:" + os.sep + "logs" + os.sep + "testexecute"
+    MTF_LOG_DIR = r"c:" + os.sep + "logs" + os.sep + "testresults"
+    STIFUNIT_LOG_DIR = r"c:" + os.sep + "logs" + os.sep + "testframework"
+    EUNIT_LOG_DIR = r"c:" + os.sep + "Shared" + os.sep + "EUnit" + os.sep + "logs"
+    #QT_LOG_DIR = r"c:" + os.sep + "private" + os.sep + "Qt" + os.sep + "logs"
+    QT_LOG_DIR = r"c:" + os.sep + "shared" + os.sep + "EUnit" + os.sep + "logs"
+    CTC_LOG_DIR = r"c:" + os.sep + "data" + os.sep + "ctc"
+
+    def __init__(self):
+        self.drop_path_root = path("ATS3Drop")
+        self.drop_path = None
+        self.defaults = {}
+
+    def generate(self, test_plan, output_file, config_file=None):
+        """Generate a test drop file."""
+        xml = self.generate_xml(test_plan)
+        
+        if config_file:
+            xmltext = et.tostring(xml.getroot(), "ISO-8859-1")
+            xmltext = atsconfigparser.converttestxml(config_file, xmltext)
+            xml = et.ElementTree(et.XML(xmltext))
+            
+        return self.generate_drop(test_plan, xml, output_file)
+
+    def generate_drop(self, test_plan, xml, output_file):
+        """Generate test drop zip file."""
+        zfile = zipfile.ZipFile(output_file, "w", zipfile.ZIP_DEFLATED)
+        try:
+            for drop_file, src_file in self.drop_files(test_plan):
+                _logger.info("   + Adding: %s" % src_file.strip())
+                try:
+                    zfile.write(src_file.strip(), drop_file.encode('utf-8'))
+                except OSError, expr:
+                    _logger.error(expr)
+            doc = amara.parse(et.tostring(xml.getroot(), "ISO-8859-1"))
+            _logger.debug("XML output: %s\n" % doc.xml(indent=u"yes", encoding="ISO-8859-1"))
+            zfile.writestr("test.xml", doc.xml(indent="yes", encoding="ISO-8859-1"))
+        finally:
+            zfile.close()
+
+        return zfile
+
+    def generate_xml(self, test_plan):
+        """Generate test drop XML."""
+        self.defaults = {"enabled": "true", 
+                         "passrate": "100", 
+                         "significant": "false"}
+        root = E("test")
+        root.append(et.XML("<name>%(testrun_name)s</name>" % test_plan))
+        if test_plan["diamonds_build_url"]:
+            root.append(
+                et.XML("<buildid>%(diamonds_build_url)s</buildid>" % test_plan))
+        generate_target(test_plan, root)
+        root.append(self.generate_plan(test_plan))
+        for post_action in generate_post_actions(test_plan):
+            root.append(post_action)
+        root.append(self.generate_files(test_plan))
+        etree = et.ElementTree(root)
+        return etree
+            
+    def generate_plan(self, test_plan):
+        """Generate the test <plan> with multiple <set>s."""
+        plan = E("plan", name="%s Plan" % test_plan["testrun_name"],
+                 harness=test_plan["harness"], **self.defaults)
+        session = SE(plan, "session", name="session", harness=test_plan["harness"], **self.defaults)
+
+        if not test_plan.custom_dir is None:
+            insert_custom_file(session, test_plan.custom_dir.joinpath("preset_custom.xml"))
+        
+        # One set for each component.
+        for setd in test_plan.sets:
+            self.drop_path = self.drop_path_root.joinpath(setd["name"])
+            elem = SE(session, "set", name=setd["name"]+"-"+setd["component_path"], harness=setd["test_harness"], **self.defaults)
+            SE(SE(elem, "target"), "device", rank="master", alias="DEFAULT_%s" % setd["test_harness"])
+             
+            if not test_plan.custom_dir is None:
+                insert_custom_file(elem, test_plan.custom_dir.joinpath("precase_custom.xml"))
+        
+            case = SE(elem, "case", name="%s case" % setd["name"],
+                      harness=setd["test_harness"], **self.defaults)
+            self.generate_steps(setd, case, test_plan)
+            if not test_plan.custom_dir is None:
+                insert_custom_file(elem, test_plan.custom_dir.joinpath("postcase_custom.xml"))
+
+        if not test_plan.custom_dir is None:
+            insert_custom_file(session, test_plan.custom_dir.joinpath("postset_custom.xml"))
+
+        return plan
+
+    def generate_steps_logdir(self, setd, case):
+        """generates STIF log dir."""
+        
+        _qt_test_ = self.check_qt_harness(setd)
+        if _qt_test_:
+            step = SE(case, "step", name="Create QT log dir", harness=setd["test_harness"], **self.defaults)
+        else:
+            step = SE(case, "step", name="Create %s log dir" % setd["test_harness"], harness=setd["test_harness"], **self.defaults)
+        SE(step, "command").text = "makedir"
+        if setd["test_harness"] == "STIF":
+            SE(SE(step, "params"), "param", dir=self.STIF_LOG_DIR)
+        if setd["test_harness"] == "GENERIC":
+            if self.check_mtf_harness(setd):
+                SE(SE(step, "params"), "param", dir=self.MTF_LOG_DIR)
+            else:
+                SE(SE(step, "params"), "param", dir=self.TEF_LOG_DIR)
+        elif setd["test_harness"] == "EUNIT":
+            if _qt_test_:
+                SE(SE(step, "params"), "param", dir=self.QT_LOG_DIR)
+            else: 
+                SE(SE(step, "params"), "param", dir=self.EUNIT_LOG_DIR)
+                
+        elif setd["test_harness"] == "STIFUNIT":
+            SE(SE(step, "params"), "param", dir=self.STIFUNIT_LOG_DIR)
+            
+        if setd.has_key("sis_files") and setd["sis_files"]:
+            setd = dict(setd, src_dst=[]) # Added to pass the Sis tests, if removed - gives KeyError
+            for sis_file in setd["sis_files"]:
+                self.generate_install_step(case, "sis", sis_file.name, "sis", 
+                                           r"c:" + os.sep + "testframework", setd["test_harness"])
+        else:
+            if setd["src_dst"] != []:
+                self.generate_install_step(case, "", "", 
+                                               "", r"", setd["test_harness"], setd["src_dst"])
+            else:
+                # Data file install.
+                for data_file in setd["data_files"]:                                
+                    self.generate_install_step(case, "data", data_file.name, "data", 
+                                               r"e:\testing\data", setd["test_harness"])
+
+                # Configuration file install.
+                for conf_file in setd["config_files"]:
+                    self.generate_install_step(case, "conf", conf_file.name, "conf", 
+                                               r"e:\testing\conf", setd["test_harness"])
+
+                # Test module install.
+                for test_file in setd["testmodule_files"]:
+                    self.generate_install_step(case, "testmodule", test_file.name, 
+                                               "testmodules", r"c:\sys\bin", setd["test_harness"]) 
+        return setd
+
+    def generate_steps_engineini(self, setd, case):
+        """Engine ini install ( if one exists )"""
+        if setd.has_key("sis_files") and setd["sis_files"]:
+            self.generate_install_step(case, "engine_ini",
+                                       setd["engine_ini_file"].name,
+                                       "init",
+                                       r"c:" + os.sep + "testframework", setd["test_harness"])
+        else:
+            if setd["src_dst"] == []:
+                self.generate_install_step(case, "engine_ini",
+                                       setd["engine_ini_file"].name,
+                                       "init",
+                                       r"c:" + os.sep + "testframework", setd["test_harness"])
+
+    def generate_steps_sisfiles(self, setd, case, test_plan):
+        """generating steps for sis files"""
+        for sis_file in setd["sis_files"]:
+            step = SE(case, "step", name="Install SIS to the device: %s" % \
+                      sis_file.name, harness=setd["test_harness"], **self.defaults)
+            SE(step, "command").text = "install-software"
+            params = SE(step, "params")
+            sis_name = path(r"c:" + os.sep + "testframework").joinpath(sis_file.name)
+            for key, value in (("timeout", test_plan["test_timeout"]),
+                               ("overWriteAllowed", "true"),
+                               ("upgradeData", "true"),
+                               ("downloadAllowed", "false"),
+                               ("packageInfoAllowed", "true"),
+                               ("untrustedAllowed", "true"),
+                               ("ignoreOCSPWarnings", "true"),
+                               ("userCapGranted", "true"),
+                               ("optionalItemsAllowed", "true"),
+                               ("killApp", "true"),
+                               ("installDrive", "C"),
+                               ("upgradeAllowed", "true"),
+                               ("OCSP_Done", "true"),
+                               ("sisPackageName", sis_name.normpath())):
+                SE(params, "param").set(key, value)
+
+    def generate_steps_tracestart(self, setd, case, pmds):
+        """Tracing steps are added (Trace Start)"""
+        step = SE(case, "step", 
+                  name="Start tracing", harness=setd["test_harness"],
+                  **self.defaults)
+        SE(step, "command").text = "trace-start"
+        params = SE(step, "params")
+        if setd.has_key("trace_activation_files") and setd["trace_activation_files"]:
+            #find out the group to activate
+            trace_group = et.parse(setd["trace_activation_files"][0]).getroot().find("Configurations").find("TraceActivation").find("Configuration").get("Name")
+            SE(params, "param", ta=self.drop_path.joinpath(r"trace_activation", setd["trace_activation_files"][0].name)) 
+            SE(params, "param", tgrp=trace_group )                                            
+        if setd.has_key("pmd_files") and setd["pmd_files"]:
+            SE(params, "param", pmd=pmds.joinpath(setd["pmd_files"][0].name))
+        SE(params, "param", log=setd["trace_path"])            
+        SE(params, "param", timeout="60")
+        elem = SE(params, "param")
+        elem.set('date-format', "yyyyMMdd")
+        elem = SE(params, "param")
+        elem.set('time-format', "HHmmss")
+
+    def generate_steps_createstep(self, setd, case, test_plan):
+        """generates core steps for a single set"""
+        if setd["test_harness"] == "STIF" or setd["test_harness"] == "STIFUNIT" or setd["test_harness"] == "GENERIC":
+            if setd["src_dst"] == []:
+                # Test case execution. If ini file exists, use that
+                if setd["engine_ini_file"] != None:
+                    step = SE(case, "step", 
+                              name="Execute test: %s" % setd["engine_ini_file"].name, 
+                              harness=setd["test_harness"], **self.defaults)
+                    SE(step, "command").text = "run-cases"
+                    params = SE(step, "params")
+                    SE(params, "param", filter="*")
+                    SE(params, "param", timeout=test_plan["test_timeout"])
+                    ini_name = setd["engine_ini_file"].name
+                    SE(params, "param", engineini=path(r"c:" + os.sep + "testframework") / ini_name)            
+                    
+                # if no inifile, but cfg files defined, use those
+                elif setd["config_files"]!=[]:
+                    for config_file in setd["config_files"]:
+                        step = SE(case, "step", 
+                                  name="Execute test: %s" % config_file.name, 
+                                  harness=setd["test_harness"], **self.defaults)
+                        SE(step, "command").text = "run-cases"
+                        params = SE(step, "params")
+                        SE(params, "param", module="TESTSCRIPTER")
+                        elem = SE(params, "param" )
+                        elem.set('testcase-file', path(r"e:\testing\conf") / config_file.name )
+                        SE(params, "param", filter="*")
+                        SE(params, "param", timeout=test_plan["test_timeout"])
+
+                # if no ini or cfg files, use dll directly
+                else:
+                    for testmodule_file in setd["testmodule_files"]:
+                        step = SE(case, "step", 
+                                  name="Execute test: %s" %  testmodule_file.name, harness=setd["test_harness"], 
+                                  **self.defaults)
+                        SE(step, "command").text = "run-cases"
+                        params = SE(step, "params")
+                        SE(params, "param", module=testmodule_file.name)
+                        SE(params, "param", filter="*")
+                        SE(params, "param", timeout=test_plan["test_timeout"])
+            elif setd["src_dst"] != []:
+                self.generate_run_steps(case, setd, test_plan["test_timeout"], test_plan["eunitexerunner_flags"])
+        elif setd["test_harness"] == "EUNIT":
+            self.generate_run_steps(case, setd, test_plan["test_timeout"], test_plan["eunitexerunner_flags"])
+
+    def generate_steps_tracestop(self, setd, case, pmds):
+        """Tracing steps are added (Trace Stop)"""
+        step = SE(case, "step", name="Stop tracing",
+                  harness=setd["test_harness"], **self.defaults)        
+        SE(step, "command").text = "trace-stop"
+        params = SE(step, "params")
+        SE(params, "param", timeout="60")
+
+        step = SE(case, "step", name="Convert tracing",
+                  harness=setd["test_harness"], **self.defaults)        
+        SE(step, "command").text = "trace-convert"
+        params = SE(step, "params")
+        if setd.has_key("pmd_files") and setd["pmd_files"]:
+            SE(params, "param", pmd=pmds.joinpath(setd["pmd_files"][0].name))
+        SE(params, "param", log=setd["trace_path"])            
+        SE(params, "param", timeout="60")
+        elem = SE(params, "param")
+        elem.set('date-format', "yyyyMMdd")
+        elem = SE(params, "param")
+        elem.set('time-format', "HHmmss")
+
+    def generate_steps_ctcdata(self, setd, case, test_plan):
+        """generates steps for installing CTC data"""
+        global CTC_PATHS_LIST
+        ctc_helium_path_list = []
+        
+        step = SE(case, "step", name="Save CTC data", harness=setd["test_harness"], **self.defaults)
+        SE(step, "command").text = "execute"
+        params = SE(step, "params")
+        SE(params, "param", parameters="writelocal")
+        SE(params, "param", file=path(r"z:\sys\bin\ctcman.exe"))
+        step = SE(case, "step", name="Save CTC data", harness=setd["test_harness"], **self.defaults)
+        SE(step, "command").text = "execute"
+        params = SE(step, "params")
+        SE(params, "param", parameters="writefile")
+        SE(params, "param", file=path(r"z:\sys\bin\ctcman.exe"))
+            
+        if test_plan["ctc_run_process_params"].strip() != "":
+            #preparing local-path for CTC step
+            #getting '39865' as diamonds ID out of 'http://diamonds.nmp.nokia.com/diamonds/builds/39865/'
+            if test_plan["diamonds_build_url"].rfind("/", 0):
+                diamonds_id = test_plan["diamonds_build_url"].rsplit(r"/", 2)[1]
+            else:
+                diamonds_id = test_plan["diamonds_build_url"].rsplit(r"/", 1)[1]
+            
+            #separating network id and drop number from 10.11.3.2\share#ats\drop2.zip#3
+            #'drop2' from the other part of the string conjuncted with a # sign
+            ats_network = r"\\" + test_plan["ctc_run_process_params"].rsplit("#", 2)[0] #network host
+            temp_drop_id = path(test_plan["ctc_run_process_params"].rsplit("#", 2)[1].rsplit(".", 1)[0]).normpath() #drop ID
+            if atssep in temp_drop_id:
+                drop_id = temp_drop_id.rsplit(atssep, 1)[1]
+            else:
+                drop_id = temp_drop_id
+
+            ats_network_path = atspath.join(ats_network, "ctc_helium" , diamonds_id, drop_id, setd["name"], "ctcdata")
+            ctc_helium_path_list.append(ats_network_path)
+            
+            step = SE(case, "step", name="Fetch CTC data for post commands execution", harness=setd["test_harness"], **self.defaults)
+            SE(step, "command").text = "fetch-log"
+            params = SE(step, "params")
+            SE(params, "param", delete="false")
+            elem = SE(params, "param")
+            elem.set('local-path', ats_network_path)
+            SE(params, "param", path=path(self.CTC_LOG_DIR).joinpath(r"ctcdata.txt"))
+
+            CTC_PATHS_LIST += ctc_helium_path_list #creating list of ctcdata.txt files for runProcess postaction
+        
+        step = SE(case, "step", name="Fetch and clean CTC data", harness=setd["test_harness"], **self.defaults)
+        SE(step, "command").text = "fetch-log"
+        params = SE(step, "params")
+        SE(params, "param", delete="true")
+        SE(params, "param", path=path(self.CTC_LOG_DIR).joinpath(r"ctcdata.txt"))
+        
+    def generate_steps_logfetching(self, setd, case):
+        """generates steps for fetching log file"""
+        step = SE(case, "step", name="Fetch test module logs", harness=setd["test_harness"], **self.defaults)
+        SE(step, "command").text = "fetch-log"
+        params = SE(step, "params")
+        SE(params, "param", type="text")
+        SE(params, "param", delete="true")
+        if setd["test_harness"] == "STIF":
+            SE(params, "param", path=path(self.STIF_LOG_DIR).joinpath(r"*"))
+        if setd["test_harness"] == "GENERIC":
+            if self.check_mtf_harness(setd):
+                SE(params, "param", path=path(self.MTF_LOG_DIR).joinpath(r"*"))
+            else:
+                SE(params, "param", path=path(self.TEF_LOG_DIR).joinpath(r"*"))
+        elif setd["test_harness"] == "STIFUNIT":
+            SE(params, "param", path=path(self.STIFUNIT_LOG_DIR).joinpath(r"*"))
+        elif setd["test_harness"] == "EUNIT":
+            if self.check_qt_harness(setd):
+                SE(params, "param", path=path(self.QT_LOG_DIR).joinpath(r"*"))
+            else:
+                SE(params, "param", path=path(self.EUNIT_LOG_DIR).joinpath(r"*"))
+
+    
+    def get_sorted_images(self, setd):
+        """sort the images """
+        sorted_images = []
+        for image_file in setd["image_files"]:
+            if 'core' in image_file.name:
+                sorted_images.append(image_file.name)
+        for image_file in setd["image_files"]:
+            if 'rofs2' in image_file.name:
+                sorted_images.append(image_file.name)
+        for image_file in setd["image_files"]:
+            if 'rofs3' in image_file.name:
+                sorted_images.append(image_file.name)
+        for image_file in setd["image_files"]:
+            if 'core' not in image_file.name and 'rofs2' not in image_file.name and 'rofs3' not in image_file.name:
+                sorted_images.append(image_file.name)
+        if "rofs" in sorted_images[0]:
+            return setd["image_files"]
+        return sorted_images
+    
+    def generate_steps(self, setd, case, test_plan):
+        """Generate the test plan <step>s."""
+        # Flash images.
+        images = self.drop_path_root.joinpath("images")
+        pmds = self.drop_path_root.joinpath("pmds")
+        
+        sorted_images = self.get_sorted_images(setd)
+        for image_file in sorted_images:
+            flash = SE(case, "flash", images=images.joinpath(image_file))
+            flash.set("target-alias", "DEFAULT_%s" % setd["test_harness"])
+            
+        if setd['custom_dir']:
+            insert_custom_file(case, os.path.join(setd['custom_dir'], "prestep_custom.xml"))
+
+        if setd["ctc_enabled"] == "True":
+            step = SE(case, "step", name="Create CTC log dir", harness=setd["test_harness"], **self.defaults)
+            SE(step, "command").text = "makedir"
+            params = SE(step, "params")
+            SE(params, "param", dir=self.CTC_LOG_DIR)
+            step = SE(case, "step", name="CTC start", harness=setd["test_harness"], **self.defaults)
+            SE(step, "command").text = "execute"
+            params = SE(step, "params")
+            SE(params, "param", file=path(r"z:\sys\bin\ctcman.exe"))
+            
+        # STIF log dir.
+        setd = self.generate_steps_logdir(setd, case)
+
+        # Engine ini install ( if one exists )
+        if setd["engine_ini_file"] != None:
+            self.generate_steps_engineini(setd, case)
+        
+        #If sis files
+        if setd.has_key("sis_files") and setd["sis_files"]:
+            self.generate_steps_sisfiles(setd, case, test_plan)    
+
+        # If tracing enabled, Start Tracing:
+        if setd.has_key("trace_path") and setd["trace_path"] != "":
+            self.generate_steps_tracestart(setd, case, pmds)
+
+        #core steps of a step
+
+        if setd['custom_dir']:
+            insert_custom_file(case, os.path.join(setd['custom_dir'], "prerun_custom.xml"))
+        self.generate_steps_createstep(setd, case, test_plan)
+
+        if setd['custom_dir']:
+            insert_custom_file(case, os.path.join(setd['custom_dir'], "postrun_custom.xml"))
+        
+        # If tracing enabled, Stop Tracing
+        if setd.has_key("trace_path") and setd["trace_path"] != "":
+            self.generate_steps_tracestop(setd, case, pmds)
+
+        #install CTC data
+        if setd["ctc_enabled"] == "True":
+            self.generate_steps_ctcdata(setd, case, test_plan)
+            
+        # Log file fetching.
+        self.generate_steps_logfetching(setd, case)
+
+        if setd['custom_dir']:
+            insert_custom_file(case, os.path.join(setd['custom_dir'], "poststep_custom.xml"))
+
+
+    def generate_runsteps_tef(self, setd, case, src_dst, time_out):
+        """generates runsteps for tef"""
+        for file1 in src_dst:
+            if 'testscript' in file1[2]:
+                filename = file1[1]
+                filename = filename[file1[1].rfind(os.sep)+1:]
+                harness = "testexecute.exe"
+                if file1[2] == "testscript:mtf":
+                    harness = "testframework.exe"
+                step = SE(case, "step", 
+                              name="Execute test: %s" %  filename, harness=setd["test_harness"], 
+                              **self.defaults)
+                SE(step, "command").text = "execute"
+                params = SE(step, "params")
+                SE(params, "param", file=harness)
+                SE(params, "param", parameters=file1[1])
+                
+                if file1[2] == "testscript:mtf":
+                    SE(params, "param", {'result-file': self.MTF_LOG_DIR + os.sep + filename.replace('.script', '.htm')})
+                else:
+                    SE(params, "param", {'result-file': self.TEF_LOG_DIR + os.sep + filename.replace('.script', '.htm')})
+                SE(params, "param", timeout=time_out)
+                if file1[2] == "testscript:mtf":
+                    SE(params, "param", parser="MTFResultParser")
+                else:
+                    SE(params, "param", parser="TEFTestResultParser")
+            if file1[2] == 'testmodule:rtest':
+                filename = file1[1]
+                filename = filename[file1[1].rfind(os.sep)+1:]
+                step = SE(case, "step", 
+                              name="Execute test: %s" %  filename, harness=setd["test_harness"], 
+                              **self.defaults)
+                SE(step, "command").text = "execute"
+                params = SE(step, "params")
+                SE(params, "param", file=file1[1])
+                SE(params, "param", {'result-file': self.TEF_LOG_DIR + os.sep + filename.replace(filename.split(".")[-1], 'htm')})
+                SE(params, "param", timeout=time_out)
+                SE(params, "param", parser="RTestResultParser")
+    
+    def generate_runsteps_stif(self, setd, case, src_dst, time_out):
+        """generates runsteps for stif"""
+        ini = cfg = dll = has_tf_ini = False
+        ini_file = None
+        cfg_files = dll_files = []
+
+        for tf_ini in src_dst:
+            if "testframework.ini" in tf_ini[1].lower():
+                has_tf_ini = True
+        
+        for file1 in src_dst:
+                
+            if "testframework.ini" in file1[1].lower() and file1[2] == "engine_ini" and has_tf_ini:
+                ini = True
+                ini_file = file1
+                
+            elif file1[2] == "engine_ini" and not has_tf_ini:
+                pipe_ini = open(file1[0], 'r')
+                if "[engine_defaults]" in str(pipe_ini.readlines()).lower():
+                    ini = True
+                    ini_file = file1
+            elif file1[2] == "conf":
+                if not ini:
+                    cfg = True
+                    cfg_files.append(file1)
+            elif file1[2] == "testmodule":
+                if not cfg and not ini:
+                    dll = True
+                    dll_files.append(file1)
+        if ini:
+            filename = ini_file[1]
+            filename = filename[ini_file[1].rfind(os.sep)+1:]
+            step = SE(case, "step",
+                      name="Execute test: %s" % filename, 
+                      harness=setd["test_harness"], **self.defaults)
+            SE(step, "command").text = "run-cases"
+            params = SE(step, "params")
+            SE(params, "param", filter="*")
+            SE(params, "param", timeout=time_out)
+            SE(params, "param", engineini=ini_file[1]) 
+        elif cfg:
+            for conf_file in cfg_files:
+                if ".dll" in conf_file[1].lower():
+                    continue
+                filename = conf_file[1]
+                filename = filename[conf_file[1].rfind(os.sep)+1:]
+                step = SE(case, "step", 
+                              name="Execute test: %s" % filename, 
+                              harness=setd["test_harness"], **self.defaults)
+                SE(step, "command").text = "run-cases"
+                params = SE(step, "params")
+                SE(params, "param", module="TESTSCRIPTER")
+                elem = SE(params, "param" )
+                elem.set('testcase-file', conf_file[1] )
+                SE(params, "param", filter="*")
+                SE(params, "param", timeout=time_out)
+        elif dll:
+            for dll_file in dll_files:
+                filename = dll_file[1]
+                filename = filename[dll_file[1].rfind(os.sep)+1:]
+                step = SE(case, "step", 
+                              name="Execute test: %s" %  filename, harness=setd["test_harness"], 
+                              **self.defaults)
+                SE(step, "command").text = "run-cases"
+                params = SE(step, "params")
+                SE(params, "param", module=filename)
+                SE(params, "param", filter="*")
+                SE(params, "param", timeout=time_out)
+
+    def generate_runsteps_eunit(self, setd, case, src_dst, time_out, eunit_flags):
+        """generates runsteps for eunit"""
+
+        for sdst in src_dst:
+            if "." in sdst[1]:
+                fileextension = sdst[1].rsplit(".")[1].lower()
+            filename = sdst[1]
+            filename = filename[filename.rfind(os.sep)+1:]
+            if fileextension == "dll" or fileextension == "exe":
+                re_dll = re.compile(r'[.]+%s' % fileextension, re.IGNORECASE)
+                no_dll = re_dll.sub('', filename)
+                no_dll_xml = ''.join([no_dll, u'_log.xml'])
+
+
+            
+            #for EUnit or other executables
+            if sdst[2] == "testmodule":
+                eunit_exe = "EUNITEXERUNNER.EXE"
+                if re_dll.search(filename):                    
+                    step = SE(case, "step", name = "Execute test: %s" % filename, harness=setd["test_harness"],
+                              **self.defaults)
+                    SE(step, "command").text = "execute"
+                    params = SE(step, "params")
+                    SE(params, "param", file=path(r"z:" + os.sep + "sys" + os.sep + "bin") / eunit_exe)
+                    elem = SE(params, "param")
+                    elem.set('result-file', path(self.EUNIT_LOG_DIR) / no_dll_xml)
+                    SE(params, "param", parameters="%s /F %s /l xml %s" % (eunit_flags, no_dll, filename))
+                    SE(params, "param", timeout=time_out)
+            
+            #for QtTest.lib executables
+            elif sdst[2] == "testmodule:qt":
+                step = SE(case, "step", name = "Execute Qt-test: %s" % filename, harness=setd["test_harness"],
+                          **self.defaults)
+                SE(step, "command").text = "execute"
+                params = SE(step, "params")
+                SE(params, "param", file=path(sdst[1]))
+                SE(params, "param", parameters=r"-lightxml -o %s\%s" % (path(self.QT_LOG_DIR),  no_dll_xml))
+                elem = SE(params, "param")
+                elem.set('result-file', path(self.QT_LOG_DIR) / no_dll_xml)
+                SE(params, "param", parser="QTestResultParser")
+                elem = SE(params, "param")
+                elem.set('delete-result',"true")
+                SE(params, "param", async="false")
+                SE(params, "param", timeout=time_out)
+
+                
+
+    def generate_run_steps(self, case, setd, time_out, eunit_flags):
+        """Generates run-steps"""
+        src_dst = setd["src_dst"]
+              
+        if setd["test_harness"] == "STIF":
+            self.generate_runsteps_stif(setd, case, src_dst, time_out)
+        if setd["test_harness"] == "GENERIC":
+            self.generate_runsteps_tef(setd, case, src_dst, time_out)
+        if setd["test_harness"] == "STIFUNIT":
+            self.generate_runsteps_stif(setd, case, src_dst, time_out)
+            
+        if setd["test_harness"] == "EUNIT":
+            self.generate_runsteps_eunit(setd, case, src_dst, time_out, eunit_flags)
+
+    def generate_install_step(self, case, step_type, filename, src_dir, 
+                              dst_dir, case_harness, src_dst=None):
+        """Generate install <step>."""
+        if src_dst == None or src_dst == []:
+            src_dst = []
+            step = SE(case, "step", name="Install %s: %s" % (step_type, filename), 
+                      harness=case_harness, **self.defaults)
+            SE(step, "command").text = "install"
+            params = SE(step, "params")
+            SE(params, "param", src=self.drop_path.joinpath(src_dir, filename))
+            SE(params, "param", dst=path(dst_dir).joinpath(filename))
+        else:
+            for sdst in src_dst:
+                dst = sdst[1]
+                type_ = sdst[2]
+                if "testmodule" in type_ or ".dll" in dst:
+                    src_dir = dst.replace(":","")
+                    src_dir = path(src_dir[:src_dir.rfind(os.sep)])
+                    step_type = type_
+                    filename = dst[dst.rfind(os.sep)+1:]
+                    step = SE(case, "step", name="Install %s: %s" % (step_type, filename), 
+                              harness=case_harness, **self.defaults)
+                    SE(step, "command").text = "install"
+                    params = SE(step, "params")
+                    SE(params, "param", src=self.drop_path.joinpath(src_dir, filename))
+                    SE(params, "param", dst=path(dst))
+            for sdst in src_dst:
+                dst = sdst[1]
+                type_ = sdst[2]
+                if "testmodule" not in type_ and ".dll" not in dst:
+                    src_dir = dst.replace(":","")
+                    src_dir = path(src_dir[:src_dir.rfind(os.sep)])
+                    step_type = type_
+                    filename = dst[dst.rfind(os.sep)+1:]
+                    step = SE(case, "step", name="Install %s: %s" % (step_type, filename), 
+                              harness=case_harness, **self.defaults)
+                    SE(step, "command").text = "install"
+                    params = SE(step, "params")
+                    SE(params, "param", src=self.drop_path.joinpath(src_dir, filename))
+                    SE(params, "param", dst=path(dst))
+
+    def drop_files(self, test_plan):
+        """Yield a list of drop files."""
+        drop_set = set()
+        drop_files = []
+        pkg_files = []
+        for setd in test_plan.sets:
+            drop_path = self.drop_path_root.joinpath(setd["name"])
+            if setd.has_key("sis_files") and setd["sis_files"]:
+                if setd.has_key("pmd_files") and setd["pmd_files"]:
+                    drop_files = ((drop_path.parent, "images", setd["image_files"]),
+                                  (drop_path.parent, "pmds", setd["pmd_files"]),
+                                  (drop_path, "sis", setd["sis_files"]),
+                                  (drop_path, "init", [setd["engine_ini_file"]]),
+                                  (drop_path, "trace_init", setd["trace_activation_files"]))
+                else:
+                    drop_files = ((drop_path.parent, "images", setd["image_files"]),
+                                  (drop_path, "sis", setd["sis_files"]),
+                                  (drop_path, "init", [setd["engine_ini_file"]]))
+            elif setd["src_dst"] == []:
+                if setd.has_key("pmd_files") and setd["pmd_files"]:
+                    drop_files = ((drop_path.parent, "images", setd["image_files"]),
+                                  (drop_path.parent, "pmds", setd["pmd_files"]),
+                                  (drop_path, "data", setd["data_files"]),
+                                  (drop_path, "conf", setd["config_files"]),
+                                  (drop_path, "testmodules", setd["testmodule_files"]),
+                                  (drop_path, "init", [setd["engine_ini_file"]]),
+                                  (drop_path, "trace_init", setd["trace_activation_files"]))
+                else:
+                    drop_files = ((drop_path.parent, "images", setd["image_files"]),
+                                  (drop_path, "data", setd["data_files"]),
+                                  (drop_path, "conf", setd["config_files"]),
+                                  (drop_path, "testmodules", setd["testmodule_files"]),
+                                  (drop_path, "init", [setd["engine_ini_file"]]))
+            elif setd["src_dst"] != []:
+                for x_temp in setd["src_dst"]:
+                    src = x_temp[0]
+                    dst = x_temp[1]
+                    dst2 = dst.replace(":","")
+                    pkg_files.append((drop_path, dst2, src))
+                if setd.has_key("pmd_files") and setd["pmd_files"]:
+                    drop_files = ((drop_path.parent, "images", setd["image_files"]),
+                                  (drop_path.parent, "pmds", setd["pmd_files"]),
+                                  (drop_path, "trace_init", setd["trace_activation_files"]))
+                else:
+                    drop_files = ((drop_path.parent, "images", setd["image_files"]),)
+            for drop_dir, sub_dir, files in drop_files:
+                for file_path in files:
+                    if file_path != None:
+                        drop_file = drop_dir.joinpath(sub_dir, file_path.name)
+                        drop_file = drop_file.normpath()
+                        if drop_file not in drop_set:
+                            drop_set.add(drop_file)
+                            yield (drop_file, file_path.normpath())
+            for drop_dir, sub_dir, files in pkg_files:
+                drop_file = drop_dir.joinpath(sub_dir.replace('\\', os.sep))
+                drop_file = drop_file.normpath()
+                file_path = path(files)
+                if drop_file not in drop_set:
+                    drop_set.add(drop_file)
+                    yield (drop_file, file_path.normpath())
+
+    def generate_files(self, test_plan):
+        """Generate the <files> section."""
+        files_elem = E("files")
+        for drop_file, _ in self.drop_files(test_plan):
+            SE(files_elem, "file").text = drop_file
+        return files_elem
+        
+    def check_mtf_harness(self, _setd_):
+        """check the testscript.mtf file is present"""
+        for _srcdst_ in _setd_['src_dst']:
+            if _srcdst_[2] == "testscript:mtf":
+                return True
+        return False
+
+    def check_qt_harness(self, _setd_):
+        """ check the QT harness is OK """
+        _setd_ = _setd_
+        is_qt_test = False
+        if _setd_.has_key("sis_files"):
+            _dict_key_ = "sis_files"
+        else:
+            _dict_key_ = "src_dst"
+            
+        for _srcdst_ in _setd_[_dict_key_]:
+            if "testmodule:qt" == _srcdst_[2]:
+                is_qt_test = True
+        return is_qt_test 
+
+def generate_target(test_plan, root):
+    """Generate targets"""
+    harness = test_plan["harness"]
+    if harness == "MULTI_HARNESS":
+        input_targets(test_plan, root, ["STIF", "EUNIT"])
+    elif harness == "STIF":
+        input_targets(test_plan, root, ["STIF"])
+    elif harness == "EUNIT":
+        input_targets(test_plan, root, ["EUNIT"])
+    elif harness == "STIFUNIT":
+        input_targets(test_plan, root, ["STIFUNIT"])
+    elif harness == "GENERIC":
+        input_targets(test_plan, root, ["GENERIC"])
+                
+def input_targets(test_plan, root, harness_type):
+    """Append target(s) into the XML"""
+    target = E("target")
+    for har in harness_type:
+        device = SE(target, "device", rank="none", alias="DEFAULT_%s" % har)
+        SE(device, "property", name="HARNESS", value=har)
+        SE(device, "property", name="TYPE", value=test_plan["device_type"])
+        if test_plan["device_hwid"] != "":
+            SE(device, "property", name="HWID", value=test_plan["device_hwid"])
+        if test_plan["trace_enabled"] != "":
+            if test_plan["trace_enabled"].lower() == "true":
+                SE(device, "property", name="TRACE_ENABLED", value=test_plan["trace_enabled"])
+    root.append(target)
+
+
+def insert_custom_file(xmltree, filename):
+    """
+    Inserts into the given XML tree the given customization file
+    Broken input XML inserts a comment to the XML tree
+    """
+    try:
+        custom_action_file = codecs.open(filename, "r", "iso-8859-15")
+        loop = ''
+        cust = unicode(custom_action_file.read(1))
+        try:
+            # try to read the file  and addcharacter by character until the 
+            # elementtree is happy and then reset the loop and continue until the file is 
+            # completely processed. Known issue: file ending in comment will cause a warning.
+            while cust:
+                if loop != '' :
+                  # if we have something left from the previous try
+                    cust = loop + cust
+#                _logger.debug("what is cust  \n %s \n" % cust)
+                try: 
+                    xmltree.append(et.XML(cust.encode("ISO-8859-15")))
+                except ExpatError, err:
+#                    _logger.debug("Error %s in XML when prosessing file %s \n Line and column refer to section:\n%s\n" % ( err, filename, loop))
+                    loop = cust
+                else:
+                # clear the loop variable 
+                    loop = ''
+                cust = unicode(custom_action_file.read(1))
+        except Exception, err:
+            _logger.error("Error %s in XML when prosessing %s\n" % ( err, filename))
+            xmltree.append(et.Comment("Error in XML file when prosessing %s\n" % ( filename)))
+
+        if loop != '' :
+            # we should have used all the input and cleared loop variable
+            _logger.warning("Issues in customization file %s in XML when prosessing issue %s \n Line and column refer to section:\n%s\n" % ( filename, err,  loop))
+
+        custom_action_file.close()
+    except IOError, err:
+#        _logger.debug("This is for debugging only. Do not treat this as anything else. Anything is OK... The data: %s when prosessing %s\n" % (err, filename))
+        pass
+    else: 
+        _logger.info("Included file %s" % ( filename))
+
+def generate_post_actions(test_plan):
+    """Generate post actions."""
+    actions = []
+    
+    if not test_plan.custom_dir is None:
+        insert_custom_file(actions, test_plan.custom_dir.joinpath("prepostaction.xml"))
+    
+    for action_type, parameters in test_plan.post_actions:
+        action = E("postAction")
+        SE(action, "type").text = action_type
+        params = SE(action, "params")
+        for name, value in parameters:
+            SE(params, "param", name=name, value=value)
+        actions.append(action)
+
+    if not test_plan.custom_dir is None:
+        insert_custom_file(actions, test_plan.custom_dir.joinpath("postpostaction.xml"))
+
+    return actions
+
+
+class Ats3TemplateTestDropGenerator(Ats3TestDropGenerator):
+    """ATS3 template for test drop generator"""
+    STIF_LOG_DIR = r"c:\logs\testframework"
+    TEF_LOG_DIR = r"c:\logs\testexecute"
+    MTF_LOG_DIR = r"c:\logs\testresults"
+    STIFUNIT_LOG_DIR = r"c:\logs\testframework"
+    EUNIT_LOG_DIR = r"c:\Shared\EUnit\logs"
+    #QT_LOG_DIR = r"c:\private\Qt\logs"
+    QT_LOG_DIR = r"c:\shared\EUnit\logs"
+    CTC_LOG_DIR = r"c:\data\ctc"
+
+    def stif_init_file(self, src_dst):
+        """init the STIF format file"""
+        has_tf_ini = False
+        ini_file = None
+
+        for tf_ini in src_dst:
+            if "testframework.ini" in tf_ini[1].lower():
+                has_tf_ini = True
+        
+        for file1 in src_dst:
+            if "testframework.ini" in file1[1].lower() and file1[2] == "engine_ini" and has_tf_ini:
+                ini_file = file1
+            elif file1[2] == "engine_ini" and not has_tf_ini:
+                pipe_ini = open(file1[0], 'r')
+                if "[engine_defaults]" in str(pipe_ini.readlines()).lower():
+                    ini_file = file1
+        return ini_file
+
+    def ctcnetworkpath(self, setd, test_plan):
+        """CTC network path handling"""
+        #preparing local-path for CTC step
+        #getting '39865' as diamonds ID out of 'http://diamonds.nmp.nokia.com/diamonds/builds/39865/'
+        if test_plan["diamonds_build_url"].rfind("/", 0):
+            diamonds_id = test_plan["diamonds_build_url"].rsplit(r"/", 2)[1]
+        else:
+            diamonds_id = test_plan["diamonds_build_url"].rsplit(r"/", 1)[1]
+        
+        #separating network id and drop number from 10.11.3.2\share#ats\drop2.zip#3
+        #'drop2' from the other part of the string conjuncted with a # sign
+        ats_network = r"\\" + test_plan["ctc_run_process_params"].rsplit("#", 2)[0] #network host
+        temp_drop_id = path(test_plan["ctc_run_process_params"].rsplit("#", 2)[1].rsplit(".", 1)[0]).normpath() #drop ID
+        if atssep in temp_drop_id:
+            drop_id = temp_drop_id.rsplit(atssep, 1)[1]
+        else:
+            drop_id = temp_drop_id
+
+        return atspath.join(ats_network, "ctc_helium" , diamonds_id, drop_id, setd["name"], "ctcdata")
+
+    def getlogdir(self, setd):
+        """ find the logger directory"""
+        if setd["test_harness"] == "STIF":
+            return self.STIF_LOG_DIR
+        elif setd["test_harness"] == "STIFUNIT":
+            return self.STIFUNIT_LOG_DIR
+        elif setd["test_harness"] == "GENERIC":
+            if self.check_mtf_harness(setd):
+                return self.MTF_LOG_DIR
+            else:
+                return self.TEF_LOG_DIR
+        elif setd["test_harness"] == "EUNIT":
+            if self.check_qt_harness(setd):
+                return self.QT_LOG_DIR
+            else:
+                return self.EUNIT_LOG_DIR
+
+    def generate_xml(self, test_plan):
+        """generate the XML"""
+        loader = jinja2.ChoiceLoader([jinja2.PackageLoader(__name__, 'templates'), jinja2.FileSystemLoader(test_plan.custom_dir)])
+        env = jinja2.Environment(loader=loader)
+        template = env.from_string(pkg_resources.resource_string(__name__, 'ats4_template.xml'))# pylint: disable-msg=E1101
+
+        xmltext = template.render(test_plan=test_plan, os=os, atspath=atspath, atsself=self).encode('ISO-8859-1')
+        return et.ElementTree(et.XML(xmltext))
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/ats3/matti/MattiDrops.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,254 @@
+# -*- encoding: latin-1 -*-
+
+#============================================================================
+#Name        : MattiDrops.py
+#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: Script for test drop generation and sending to execution to 
+#ATS3-system
+#===============================================================================
+
+""" create the MATTI test drop file for use on the test server """
+# pylint: disable-msg=R0902, R0903, R0912
+
+import os
+import re
+import sys
+import string
+import zipfile
+import logging 
+from optparse import OptionParser
+from xml.etree import ElementTree as et
+from jinja2 import Environment, PackageLoader # pylint: disable-msg=F0401
+
+# Shortcuts
+E = et.Element
+SE = et.SubElement
+
+_logger = logging.getLogger('matti')
+
+class Configuration(object):
+    """
+    ATS3 drop generation configuration.
+    """
+    
+    def __init__(self, opts):
+        """
+        Initialize from optparse configuration options.
+        """
+        self._opts = opts
+        
+        # Customize some attributes from how optparse leaves them.
+        self.build_drive = os.path.normpath(self._opts.build_drive)
+        self.file_store = os.path.normpath(self._opts.file_store)
+        self.matti_scripts = os.path.normpath(self._opts.matti_scripts)
+        self.template_location = os.path.normpath(self._opts.template_loc)
+        if self._opts.flash_images:
+            self.flash_images = self._opts.flash_images.split(',')
+        else:
+            self.flash_images = []
+        if not re.search(r'\A\s*?\Z', self._opts.sis_files):
+            self.sis_files = self._opts.sis_files.split(',')
+        else:
+            self.sis_files = None
+        self.step_list = []
+        self.filelist = []
+        self.image_list = []
+        self.sis_list = []
+        self.device_type = self._opts.device_type
+        self.device_hwid = self._opts.device_hwid
+        self.drop_file = self._opts.drop_file
+        self.minimum_flash_images = self._opts.minimum_flash_images
+        self.plan_name = self._opts.plan_name
+        self.test_timeout = self._opts.test_timeout 
+        self.diamonds_build_url = self._opts.diamonds_build_url
+        self.testrun_name = self._opts.testrun_name    
+        self.report_email = self._opts.report_email
+        self.harness = self._opts.harness
+        self.sis_enabled = False
+        if self.sis_files:
+            if len(self.sis_files) >= 1:
+                self.sis_enabled = True
+        
+    
+    def __getattr__(self, attr):
+        return getattr(self._opts, attr)
+    
+    def __str__(self):
+        dump = "Configuration:\n"
+        seen = set()
+        for key, value in vars(self).items():
+            if not key.startswith("_"):
+                dump += "\t%s = %s\n" % (key, value)
+                seen.add(key)
+        for key, value in vars(self._opts).items():
+            if key not in seen:
+                dump += "\t%s = %s\n" % (key, value)
+                seen.add(key)                
+        return dump
+            
+class MattiDrop(object):
+    """
+    ATS3 testdrop generation for MATTI tool
+    """
+    
+    def __init__(self, config=None):
+        self.configuration = config
+        self.matti_cases = {}
+        self.tmp_path = os.getcwd()
+        self.files = []
+        self.test_files = []
+    
+    def fetch_testfiles(self):
+        """Needed flash files, sis-files and testscripts from given matti scripts -folder are added to file list."""
+        tmp_case_list = []
+#        tmp_image_list = []
+        os.chdir(os.path.normpath(self.configuration.matti_scripts))
+        try:
+            for path, _, names in os.walk(os.getcwd()):
+                for name in names:
+                    if re.search(r'.*?[.]rb\Z', name):
+                        tmp_case_list.append((os.path.normpath(os.path.join(path, name)), os.path.join("ats3", "matti", "script", name)))
+            if tmp_case_list:
+                for tmp_case in tmp_case_list:
+                    self.configuration.step_list.append(dict(path=os.path.join("&#x00A7;TEST_RUN_ROOT&#x00A7;", str(tmp_case[1])), name="Test case"))
+            if self.configuration.flash_images:
+                for image in self.configuration.flash_images:
+                    tmp = string.rsplit(image, os.sep)
+                    image_name = tmp[len(tmp)-1] 
+                    self.configuration.image_list.append(os.path.join("ATS3Drop", "images", image_name))
+            if self.configuration.sis_files:
+                for sis in self.configuration.sis_files:
+                    tmp = string.rsplit(sis, os.sep)
+                    sis_name = tmp[len(tmp)-1] 
+                    self.configuration.sis_list.append(dict(path=os.path.join("ATS3Drop", "sis", sis_name), dest=sis_name))
+        except KeyError, error:
+            _logger.error("Error in file reading / fetching!")
+            sys.stderr.write(error)
+        if tmp_case_list:
+            for tmp_case in tmp_case_list:
+                self.configuration.filelist.append(tmp_case[1])
+            return tmp_case_list
+        else:
+            _logger.error("No test cases/files available!")
+            return None
+    
+    
+    def create_testxml(self):
+        """This method will use Jinja2 template engine for test.xml creation"""
+        os.chdir(self.tmp_path)
+        env = Environment(loader=PackageLoader('ats3.matti', 'template'))
+        if os.path.isfile(self.configuration.template_location):
+            template = env.from_string(open(self.configuration.template_location).read())
+            xml_file = open("test.xml", 'w')
+            xml_file.write(template.render(configuration=self.configuration))
+            xml_file.close()
+        else:
+            _logger.error("No template file found")
+                
+    def create_testdrop(self, output_file=None, file_list=None):
+        """Creates testdrop zip-file to given location."""
+        #env = Environment(loader=PackageLoader('MattiDrops', 'template'))
+        os.chdir(self.tmp_path)
+        if output_file and file_list:
+            zfile = zipfile.ZipFile(output_file, "w", zipfile.ZIP_DEFLATED)
+            try:
+                _logger.info("Adding files to testdrop:")
+                for src_file, drop_file in file_list:
+                    _logger.info("   + Adding: %s" % src_file.strip())
+                    if os.path.isfile(src_file):
+                        zfile.write(str(src_file.strip()), str(drop_file))
+                    else:
+                        _logger.error("invalid test file name supplied %s " % drop_file)
+                if self.configuration.flash_images:
+                    for image in self.configuration.flash_images:
+                        tmp = string.rsplit(image, os.sep)
+                        image_name = tmp[len(tmp)-1] 
+                        _logger.info("   + Adding: %s" % image_name)
+                        if  os.path.isfile(image):
+                            zfile.write(image, os.path.join("ATS3Drop", "images", image_name))
+                        else:
+                            _logger.error("invalid flash file name supplied %s " % image_name)
+                if self.configuration.sis_enabled:
+                    if self.configuration.sis_files:
+                        for sis in self.configuration.sis_files:
+                            tmp = string.rsplit(sis, os.sep)
+                            sis_name = tmp[len(tmp)-1] 
+                            _logger.info("   + Adding: %s" % sis_name)
+                            if os.path.isfile(sis):
+                                zfile.write(sis, os.path.join("ATS3Drop", "sis", sis_name))
+                            else:
+                                _logger.error("invalid sis file name supplied %s " % sis_name)
+                zfile.write(os.path.normpath(os.path.join(os.getcwd(),"test.xml")), "test.xml")
+            finally:
+                _logger.info("Testdrop created! %s" % output_file)            	   
+                zfile.close()
+            return zfile
+    
+def create_drop(configuration):
+    """Testdrop creation"""
+    if configuration:
+        m_drop = MattiDrop(configuration)
+        m_drop.fetch_testfiles()
+        m_drop.create_testxml()
+        return m_drop.create_testdrop(configuration.drop_file, m_drop.fetch_testfiles())
+    else:
+        _logger.error("No configuration available for test drop creation")        
+        
+def main():
+    """Main entry point."""    
+    cli = OptionParser(usage="%prog [options] TSRC1 [TSRC2 [TSRC3 ...]]")
+    cli.add_option("--build-drive", help="Build area root drive", default='X:')
+    cli.add_option("--matti-scripts", help="Path to the directory where the MATTI test scripts are saved.", default="")
+    cli.add_option("--flash-images", help="Flash image files as a list",
+                   default="")
+    cli.add_option("--report-email", help="Email notification receivers", 
+                   default="")
+    cli.add_option("--harness", help="Test harness (default: %default)",
+                   default="unknown")
+    cli.add_option("--file-store", help="Destination path for reports.",
+                   default="")
+    cli.add_option("--testrun-name", help="Name of the test run", 
+                   default="run")
+    cli.add_option("--device-type", help="Device type (e.g. 'PRODUCT')", 
+                   default="unknown")
+    cli.add_option("--device-hwid", help="Device hwid", 
+                   default="")
+    cli.add_option("--diamonds-build-url", help="Diamonds build url")
+    cli.add_option("--drop-file", help="Name for the final drop zip file",
+                   default="")
+    cli.add_option("--minimum-flash-images", help="Minimum amount of flash images",
+                   default=2)    
+    cli.add_option("--plan-name", help="Name of the test plan", 
+                   default="plan")
+    cli.add_option("--sis-files", help="Sis files as a list",
+                   default="")
+    cli.add_option("--template-loc", help="location of template file",
+                   default="..\template")
+    cli.add_option("--test-timeout", help="Test execution timeout value (default: %default)",
+                   default="60")
+    cli.add_option("--verbose", help="Increase output verbosity", 
+                   action="store_true", default=True)
+    opts, _ = cli.parse_args()
+
+    if opts.verbose:
+        _logger.setLevel(logging.DEBUG)
+        logging.basicConfig(level=logging.DEBUG)
+    config = Configuration(opts)
+    create_drop(config)
+    
+
+if __name__ == "__main__":
+    main()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/ats3/matti/__init__.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,21 @@
+# -*- coding: latin-1 -*-
+
+#============================================================================ 
+#Name        : __init__.py 
+#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:
+#===============================================================================
+""" nothing needed here"""
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/ats3/matti/template/matti_demo.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+============================================================================ 
+Name        : matti.demo.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:
+Contains the template for the test.xml file output. The test.xml file contains
+information on the files used to create the drop file.
+============================================================================
+--><test>
+<name>{{ configuration.testrun_name }}</name>
+    <target>
+      <device alias="{{ configuration.harness }}" rank="none">
+          <property name="HARNESS" value="{{ configuration.harness }}"/>
+          <property name="TYPE" value="{{ configuration.device_type }}"/>
+          <property name="HARDWARE" value="{{ configuration.device_type }}"/>
+      </device>
+    </target>
+    <plan passrate="100" enabled="true" name="MATTI test {{ configuration.plan_name }}" significant="false" harness="{{ configuration.harness }}">
+        <session name="session" harness="{{ configuration.harness }}" enabled="true" passrate="100">
+            {%- set i = 0 -%}
+            <set name="MATTI test set{{ i }}" harness="{{ configuration.harness }}" enabled="true" passrate="100">
+                <target>
+                <device alias="{{ configuration.harness }}" rank="master"/>
+                </target>
+                    <case name="MATTI test case" passrate="100" harness="STIF" enabled="true" significant="false"> 
+              {% if configuration.image_list -%}
+                {% for flash in configuration.image_list -%}
+                <flash target-alias="{{ configuration.harness }}" images="{{ flash }}" />
+                {% endfor -%}
+              {% endif %}
+              <step name="Create logs folder" harness="STIF" enabled="true" passrate="100" significant="false">
+                  <command>makedir</command>
+                  <params>
+                      <param dir="c:\logs\testability"/>
+                  </params>
+              </step>
+              {% if configuration.sis_list -%}
+                {% for sis in configuration.sis_list -%}
+                <step name="Copy sis" harness="STIF" enabled="true" passrate="100" significant="false">
+                    <command>install</command>
+                    <params>
+                        <param src="{{ sis['path'] }}"/>
+                        <param dst="E:\{{ sis['dest'] }}"/>
+                        <param overwrite="false"/>
+                    </params>
+                </step>
+    
+                <step name="Install SIS" harness="STIF" enabled="true" passrate="100" significant="false">
+                    <command>install-software</command>
+                    <params>
+                        <param sisPackageName="E:\{{ sis['dest'] }}"/>
+                        <param upgradeAllowed="true"/>
+                        <param optionalItemsAllowed="true"/>
+                        <param OCSP_Done="true"/>
+                        <param ignoreOCSPWarnings="true"/>
+                        <param untrustedAllowed="true"/>
+                        <param packageInfoAllowed="true"/>
+                        <param userCapGranted="true"/>
+                        <param killApp="true"/>
+                        <param overWriteAllowed="true"/>
+                        <param downloadAllowed="false"/>
+                        <param downloadUsername="user"/>
+                        <param downloadPassword="passwd"/>
+                        <param installDrive="C"/>
+                        <param upgradeData="true"/>
+                        <param timeout="40"/>                           
+                    </params>
+                </step>
+                {% endfor -%}
+              {% endif %}          
+              {% for step in configuration.step_list -%}
+              <step name="{{ step['name'] }}" harness="{{ configuration.harness }}" enabled="true" passrate="100" significant="false">
+                  <command>execute</command>
+                  <params>
+                      <param dir="C:\ruby\bin\"/>
+                      <param file="C:\ruby\bin\ruby.exe"/>
+                      <param parameters="{{ step['path'] }}"/>
+                      <param timeout="60"/>
+                      <param local="true"/>
+                      <param async="false"/>
+                      <param needs-connection="true"/>
+                  </params>
+              </step>
+              {% endfor -%}
+              </case>
+          </set>
+          {%- set i = i + 1 -%}
+        </session>
+    </plan>
+  {% if configuration.report_email %}
+  <postAction>
+        <type>SendEmailAction</type>
+        <params>
+            <param name="subject" value="ATS3 report for &#x00A7;RUN_NAME&#x00A7; &#x00A7;RUN_START_DATE&#x00A7; &#x00A7;RUN_START_TIME&#x00A7;"/>
+            <param name="type" value="ATS3_REPORT"/>
+            <param name="send-files" value="true"/>
+            <param name="to" value="{{ configuration.report_email }}"/>
+        </params>
+    </postAction>
+  {% endif %}
+  {% if configuration.filelist %}
+  <files>
+    {% for img in configuration.image_list -%}
+    <file>{{ img }}</file>
+    {% endfor -%}
+    {% for sis in configuration.sis_list -%}
+    <file>{{ sis['path'] }}</file>
+    {% endfor -%}
+    {% for file in configuration.filelist -%}
+    <file>{{ file }}</file>
+    {% endfor -%}
+  </files>
+  {% endif %}
+</test>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/ats3/parsers.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,759 @@
+# -*- encoding: latin-1 -*-
+
+#============================================================================ 
+#Name        : parsers.py 
+#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:
+#===============================================================================
+
+""" The ATS related parsers """
+
+
+# pylint: disable-msg=W0142,W0102
+# pylint: disable-msg=C0302
+# pylint: disable-msg=R0201,R0912,R0915,R0911,R0902
+
+#W0142 => * and ** were used
+#W0102 => Dangerous default value [] as argument
+#C0302 => Too many lines
+#R* remove during refactoring
+
+import os
+import re
+import string
+import logging
+from path import path # pylint: disable-msg=F0401
+import fnmatch
+import subprocess
+import codecs
+
+_logger = logging.getLogger('ats-parser')
+
+import configuration
+def split_config_to_attributes_and_properties(specfile):
+    """Split the specfile to its parts"""
+    attributes = {}
+    properties = {}
+    builder = configuration.NestedConfigurationBuilder(specfile)
+    configs = builder.getConfigurations()
+    # the supported configs are either attributes or properties
+    # collect each in a dictionary and return them.
+    for config in configs:
+        if config.name == 'attributes' :
+            for attr in config:
+                attributes[attr] = config[attr]
+        if config.name == 'properties' :
+            for prop in config:
+                properties[prop] = config[prop]
+    return (properties, attributes)
+
+
+class CppParser(object):
+    """
+    Parser for CPP tool output. Returns cleaned output from the execution
+    of CPP with or without parent paths included in the output.
+    """
+
+    def __init__(self):
+        self.path_to_build = ""
+
+    def get_cpp_output(self, bld_path = None, output_parameter = "n", imacros = None):
+        """
+        To clean out conditionals from the compilation it is necessary to 
+        use C preprocessing to clean out those.
+        
+        If ('n' - normal) output is chosen, parser returns list of paths
+        If ('e' - extended) output is chosen parser returns list of (path, parent_path) tuples
+        If ('d' - dependency) output is chosen parser returns a dicitionary (can be a nested dictionary) 
+                  of paths dependency (-ies). 
+                  
+        'imacros' can also be given as parameters for CPP options.
+        
+        if bld file is not given, the function will try to find the file(s) on the given location with extension ".inf"
+        """
+        temp_path = os.getcwd()
+        if "bld.inf" in str(bld_path).lower():
+            os.chdir(os.path.normpath(os.path.join(bld_path, os.pardir)))
+        else:
+            os.chdir(os.path.normpath(os.path.join(bld_path)))
+            
+        if imacros is not None:
+            includedir = os.path.join(os.path.splitdrive(bld_path)[0] + os.sep, 'epoc32', 'include')
+            command = r"cpp -imacros %s -I %s bld.inf" % (str(imacros), includedir)
+        else:
+            command = u"cpp bld.inf"
+        
+        process = subprocess.Popen(command, shell = True, stdout = subprocess.PIPE)
+        pipe = process.stdout
+        
+        if output_parameter == "d":
+            return self.create_dependency_dictionary(pipe, bld_path)
+        
+        #If not depdendency dictiontionary then create normal or extended list
+        #Creates dictionary for 'n' (normal) and 'e' extended paths
+
+        clean_path_list = []
+        path_list = []
+        for line in pipe.readlines():
+            #_logger.debug(line.strip())
+            if re.search(r"\A#\s.*?", line.strip()) or re.search(r"\A#.*?[0-9]", line.strip()):
+                if line.strip() not in path_list:
+                    path_list.append(line.strip())
+        process.wait()
+        if process.returncode == 1:
+            _logger.error('CPP failed: ' + command + ' in: ' + os.getcwd())
+        pipe.close()
+
+        os.chdir(temp_path)
+        if output_parameter is "n":
+            for _path in self.clean_cpp_output(bld_path, path_list):
+                clean_path_list.append(_path[0])
+        
+        elif output_parameter is "e":
+            clean_path_list = self.clean_cpp_output(bld_path, path_list)
+
+        clean_path_list = list(set(clean_path_list))
+
+        bfp = BldFileParser()
+
+        for tsrc in clean_path_list:
+            mmp_path = bfp.get_test_mmp_files(tsrc[0])
+            if tsrc[0] == tsrc[1]:
+                if mmp_path == None or mmp_path == []:
+                    clean_path_list.remove(tsrc)
+
+        return clean_path_list
+    
+    def create_dependency_dictionary(self, _pipe_, path_to_bld):
+        """
+        The output from CPP is cleaned in a fashion that the output is
+        a dictionary (or nested dictionary) of paths and their dependencies.
+        """
+        bld_parser = BldFileParser()
+        pkg_parser = PkgFileParser()
+        mmp_parser = MmpFileParser()
+        
+        temp_path = os.getcwd()
+        parent = os.getcwd()
+        self.path_to_build = path_to_bld
+        
+        test_sets = {}
+        harness = ""
+        main_level = ""
+        test_cases = []
+        output_list = []
+        for line in _pipe_.readlines():
+            if re.match(r"#.*", line.lower()):
+                #_logger.debug(line)
+                tpat =  re.findall(r'"(.*bld.inf?)"', line.lower())
+                if tpat != []:
+                    output_list.append((line, os.path.dirname(os.path.normpath(os.path.join(self.path_to_build, tpat[0])))))
+        _pipe_.close()
+        
+        #Creating dependencies
+        for case in output_list:
+            if re.match(r".*[bld.inf][^0-9]\Z", string.strip(string.lower(case[0]))):
+                
+                if main_level == "":
+                    main_level = case[1]
+                parent = case[1]
+                os.chdir(case[1])
+                test_cases.append((parent, case[1]))
+            elif re.match(r".*[1]\Z", string.strip(string.lower(case[0]))):
+                parent = os.getcwd()
+                os.chdir(case[1])
+                
+                test_cases.append((parent, case[1]))
+            elif re.match(r".*[2]\Z", string.strip(string.lower(case[0]))):
+                if test_cases:
+                    for tcase in test_cases:
+                        if parent in tcase[1]:
+                            parent = tcase[0]
+                            os.chdir(tcase[1])
+                            break
+                        
+        for t_case in test_cases:
+            if t_case[0] == t_case[1] and (not bld_parser.get_test_mmp_files(t_case[1])):
+                del t_case
+            elif t_case[0] in main_level:
+                test_sets[t_case[1]] = {}
+                test_sets[t_case[1]]['content'] = {}
+                test_sets[t_case[1]]['content'][t_case[1]] = {}
+                harness = mmp_parser.get_harness(t_case[1])
+                #if harness == "": harness = None
+                test_sets[t_case[1]]['content'][t_case[1]]['type'] = mmp_parser.get_dll_type(t_case[1])
+                test_sets[t_case[1]]['content'][t_case[1]]['harness'] = harness
+                test_sets[t_case[1]]['content'][t_case[1]]['pkg_files'] = pkg_parser.get_pkg_files(t_case[1], False)
+                test_sets[t_case[1]]['content'][t_case[1]]['mmp_files'] = bld_parser.get_test_mmp_files(t_case[1], False)
+            else:
+                for key, value in test_sets.items():
+                    if t_case[0] in value['content'].keys():
+                        harness = mmp_parser.get_harness(t_case[1])
+                        if harness is "" or harness in test_sets[key]['content'][t_case[0]]['harness']:
+                            test_sets[key]['content'][t_case[1]] = {}
+                            test_sets[key]['content'][t_case[1]]['type'] = mmp_parser.get_dll_type(t_case[1])
+                            test_sets[key]['content'][t_case[1]]['harness'] = harness
+                            test_sets[key]['content'][t_case[1]]['pkg_files'] = pkg_parser.get_pkg_files(t_case[1], False)
+                            test_sets[key]['content'][t_case[1]]['mmp_files'] = bld_parser.get_test_mmp_files(t_case[1], False)
+                        else:
+                            test_sets[t_case[1]] = {}
+                            test_sets[t_case[1]]['content'] = {}
+                            test_sets[t_case[1]]['content'][t_case[1]] = {}
+                            test_sets[t_case[1]]['content'][t_case[1]]['type'] = mmp_parser.get_dll_type(t_case[1])
+                            test_sets[t_case[1]]['content'][t_case[1]]['harness'] = harness
+                            test_sets[t_case[1]]['content'][t_case[1]]['pkg_files'] = pkg_parser.get_pkg_files(t_case[1], False)
+                            test_sets[t_case[1]]['content'][t_case[1]]['mmp_files'] = bld_parser.get_test_mmp_files(t_case[1], False)
+
+        os.chdir(temp_path)
+        if test_sets == {}:
+            for itm in output_list:
+                _logger.debug(itm)
+            for itm in test_cases:
+                _logger.debug(itm)
+            _logger.error(path_to_bld + ' test_sets are empty')
+        return test_sets
+
+    
+    def clean_cpp_output(self, bld_path, path_list):
+        """
+        The output from CPP needs to be "cleaned" so that extra chars needs
+        to be removed and also hierarchy which cpp is following is preserved
+        and returned as an output. 
+        """
+
+        pat = ""
+        value = ""
+        cleaned_output = []
+        if "bld.inf" in bld_path:
+            path_to_parent = os.path.dirname(bld_path)
+        else:
+            path_to_parent = bld_path
+        pat = re.compile(r'\A#\s*?.*?[\"](.*?)[\"].*?')
+        for _path in path_list:
+            if re.match(r".*[bld.inf]\s*?[^0-9]\Z", string.strip(string.lower(_path))):
+                value = pat.match(_path.strip())
+                path_to_tc = os.path.dirname(os.path.normpath(os.path.join((bld_path), value.group(1))))
+                cleaned_output.append((path_to_tc, path_to_parent))
+            if re.match(r".*[1]\s*?\Z", string.strip(string.lower(_path))):
+                value = pat.match(_path.strip())
+                path_to_tc = os.path.dirname(os.path.normpath(os.path.join(bld_path, value.group(1))))
+                cleaned_output.append((path_to_tc, path_to_parent))
+            if re.match(r".*[2]\s*?\Z", string.strip(string.lower(_path))):
+                if cleaned_output:
+                    for cout in cleaned_output:
+                        if string.lower(path_to_parent) == string.lower(cout[0]):
+                            path_to_tc = cout[1]
+            path_to_parent = path_to_tc
+        return cleaned_output
+
+
+class BldFileParser(object):
+    """
+    Parser for bld.inf files. Returns MACRO values.
+    Parsing Paths can be done using CPP parser  
+    """
+    def __init__(self):
+        self.mmp_files = []
+
+    #def get_mmp_files():
+    #    """
+    #    returns mmp files from PRJ_MMPFILES macro
+    #   """    
+
+    def get_test_mmp_files(self, bld_file_path = None, with_full_path = True):
+        """
+        returns a list of test mmp files 
+        Usage: if "x:\abc\bldfile", "PRJ_TESTMMPFILES". 
+        1. get_test_mmp_files("x:\abc\bldfile") - with full paths e.g. ["x:\abc\abc.mmp"]
+        2. get_test_mmp_files("x:\abc\bldfile", False) - without full paths e.g. ["abc.mmp"]
+        
+        if bld file is not given, the function will try to find the file(s) on the given location with extension ".inf"
+        """
+        
+        if bld_file_path == None:
+            _logger.warning("Incorrect bld file")
+            return None
+        else:
+            bld_file_path = path(bld_file_path)
+            if not "bld.inf" in str(bld_file_path).lower():
+                bld_file_path = os.path.join(os.path.normpath(bld_file_path), "bld.inf")
+
+            if not os.path.exists(bld_file_path):
+                _logger.error(r"bld file path does not exist: '%s'" % bld_file_path)
+                return None
+
+        return self.get_files(path(bld_file_path), "PRJ_TESTMMPFILES", with_full_path)
+
+
+    def get_files(self, bld_inf_path, bld_macro, with_full_path = True):
+        """
+        Component's MMP files, as stored in BLD.INF.
+        """
+        
+        bld_inf_path = path(bld_inf_path)
+        bld_inf = bld_inf_path.text()
+        if bld_inf.count(bld_macro) > 1:
+            _logger.error(bld_macro + ' in ' + bld_inf_path + ' more than once')
+        try:
+            bld_inf = re.compile(r"%s" % bld_macro).split(bld_inf)[1].strip()
+            bld_inf = re.compile(r"PRJ_+\S").split(bld_inf)[0].strip()
+            
+        except IndexError:
+            try:
+                bld_inf = re.compile(r"%s" % bld_macro).split(bld_inf)[0].strip()
+                bld_inf = re.compile(r"PRJ_+\S").split(bld_inf)[0].strip()
+                
+            except IndexError:
+                _logger.warning("Index Error while parsing bld.inf file")
+        
+        comments_free_text = self.ignore_comments_from_input(bld_inf)
+        
+        self.mmp_files = re.findall(r"(\S+?[.]mmp)", comments_free_text)
+        
+        
+        
+        if with_full_path:
+            bld_dir = bld_inf_path.dirname()
+            return [path.joinpath(bld_dir, mmp).normpath()
+                    for mmp in self.mmp_files]
+        else:
+            return self.mmp_files
+
+    def ignore_comments_from_input(self, input_str = ""):
+        """
+        Removes comments from the input string. Enables the use of examples
+        in bld.inf.
+        """
+        _input = ""
+        for i in input_str.split("\n"):
+            _input += "\n" + i.split("//")[0]
+
+        if not _input == "":
+            input_str = _input
+        count = input_str.count("/*")
+        count2 = input_str.count("*/")
+        if (count == count2):
+            idx_1 = input_str.find('/*')
+            idx_2 = input_str.find('*/') + 2
+            while count > 0:
+                substr_1 = input_str[:idx_1].strip()
+                substr_2 = input_str[idx_2:].strip()
+                input_str = substr_1 + " " + substr_2
+                idx_1 = input_str.find('/*')
+                idx_2 = input_str.find('*/') + 2
+                count = input_str.count('/*')
+            return input_str.strip()
+        else:
+            _logger.warning("Comments in bld.inf-file inconsistent. "
+                            "Check comments in bld.inf.")
+            return input_str.strip()
+
+
+    #def get_exports():
+    #    """
+    #    returns exports from the macro PRJ_EXPORTS
+    #    """
+
+class MmpFileParser(object):
+    """
+    Parser for .mmp files. Returns wanted information from the mmp-file
+    - file type (executable dll, plugin, exe, etc)
+    - test harness (STIF, EUNIT) if mmp is related to the test component
+    - file name
+    - libraries listed in the mmp
+    """
+
+    def __init__(self):
+        self.mmp_files = []
+        self.path_to_mmp = ""
+
+    def get_target_filetype(self, path_to_mmp = None):
+        """
+        Filetype given using TARGETTYPE in .mmp file is returned.
+        If "c:\path\to\mmp" is a location where mmp file is stored
+        get_target_filetype("c:\path\to\mmp")
+        
+        if mmp file is not given, the function will try to find the file(s) on the given location with extension ".mmp"
+        """
+        return self.read_information_from_mmp(path_to_mmp, 4)
+
+    def get_target_filename(self, path_to_mmp = None):
+        """
+        Filename given using TARGET in .mmp file is returned
+        If "c:\path\to\mmp" is a location where mmp file is stored
+        get_target_filename("c:\path\to\mmp")
+        
+        if mmp file is not given, the function will try to find the file(s) on the given location with extension ".mmp"
+        """
+        return self.read_information_from_mmp(path_to_mmp, 3)
+
+    def get_libraries(self, path_to_mmp = None):
+        """
+        Libraries listed in the MMP file are returned in a list
+        If "c:\path\to\mmp" is a location where mmp file is stored
+        get_libraries("c:\path\to\mmp")
+        
+        if mmp file is not given, the function will try to find the file(s) on the given location with extension ".mmp"
+        """
+        return self.read_information_from_mmp(path_to_mmp, 5)
+
+    def get_harness(self, path_to_mmp = None):
+        """
+        Returns harness of test component
+        If "c:\path\to\mmp" is a location where mmp file is stored
+        get_harness("c:\path\to\mmp")
+        
+        if mmp file is not given, the function will try to find the file(s) on the given location with extension ".mmp"
+        """
+        return self.read_information_from_mmp(path_to_mmp, 6)
+
+    def get_dll_type(self, path_to_mmp = None):
+        """
+        Returns type of test whether 'executable' or 'dependent' (dependent can be a stub or plugin)
+        If "c:\path\to\mmp" is a location where mmp file is stored
+        get_dll_type("c:\path\to\mmp")
+        
+        if mmp file is not given, the function will try to find the file(s) on the given location with extension ".mmp"
+        """
+        return self.read_information_from_mmp(path_to_mmp, 7)
+
+    def read_information_from_mmp(self, path_to_mmp, flag = 0):
+        """
+        Returns wanted information - user can define 
+        the wanted information level by setting a flag
+        value following way:
+        0 - (targetfilename, filetype, libraries, harness)
+        1 - (targetfilename, filetype, libraries)
+        2 - (targetfilename, filetype)
+        3 - targetfilename
+        4 - filetype
+        5 - libraries
+        6 - harness (in case of test component)
+        7 - mmpfilename
+        """
+
+
+        filename = ""
+        filetype = ""
+        dll_type = ""
+        libraries = []
+        lst_mmp_paths = []
+        harness = ""
+        stif = False
+        eunit = False
+        stifunit = False
+        tef = False
+        self.path_to_mmp = path_to_mmp
+        try:
+            if isinstance(path_to_mmp, list):
+                lst_mmp_paths = self.path_to_mmp
+            else:    
+                self.path_to_mmp = path(self.path_to_mmp)
+                if not ".mmp" in str(self.path_to_mmp).lower():
+                    bld_parser = BldFileParser()
+                    self.mmp_files = bld_parser.get_test_mmp_files(self.path_to_mmp, False)
+    
+                    for mpath in self.mmp_files:
+                        lst_mmp_paths.append(os.path.join(self.path_to_mmp, mpath))
+                else:
+                    lst_mmp_paths.append(self.path_to_mmp)
+
+            for mmp in lst_mmp_paths:
+                mmp_file = open(mmp, 'r')
+                for line in mmp_file:
+                    if re.match(r"\A(target\s).*([.]\w+)", string.strip(string.lower(line))):
+                        filename = re.findall(r"\Atarget[\s]*(\w+[.]\w+)", string.lower(line))[0]
+                    elif re.match(r"\A(targettype\s).*", string.strip(string.lower(line))):
+                        filetype = re.findall(r"\Atargettype[\s]*(\w+)", string.lower(line))[0]
+
+                libraries = libraries + re.findall(r"\b(\w+[.]lib)\b", mmp.text().lower())
+                if '//rtest' in mmp.text().lower() or '* rtest' in mmp.text().lower() or '// rtest' in mmp.text().lower():
+                    libraries.append('rtest')
+            
+            if libraries:
+                if "stiftestinterface.lib" in libraries:
+                    stif = True
+                if "eunit.lib" in libraries or "qttest.lib" in libraries:
+                    eunit = True
+                if "stifunit.lib" in libraries:
+                    stifunit = True
+                elif "testexecuteutils.lib" in libraries or 'testframeworkclient.lib' in libraries or 'rtest' in libraries:
+                    tef = True
+
+            if tef:
+                harness = "GENERIC"
+            elif stif and eunit:
+                #_logger.warning("both eunit.lib and stiftestinterface.lib listed in mmp file - choosing STIF.")
+                harness = "STIF"
+            elif stif and not eunit:
+                harness = "STIF"
+            elif eunit and not stif:
+                harness = "EUNIT"
+            elif stifunit and not stif and not eunit:
+                harness = "STIFUNIT"
+
+            if harness is "":
+                dll_type = "dependent"
+            elif harness is "EUNIT":
+                dll_type = "executable"
+            elif harness is "STIF":
+                dll_type = "executable"
+
+        finally:
+            if flag == 0:
+                return (filename, filetype, libraries, harness)
+            elif flag == 1:
+                return (filename, filetype, libraries)
+            elif flag == 2:
+                return (filename, filetype)
+            elif flag == 3:
+                return filename
+            elif flag == 4:
+                return filetype
+            elif flag == 5:
+                return libraries
+            elif flag == 6:
+                return harness
+            elif flag == 7:
+                return dll_type
+
+class PkgFileParser(object):
+    """
+    Parses .pkg files. Returns a list of:
+      a. src path of the file
+      b. dst path on the phone
+      c. type of the file
+    for every file in the pkg file
+    """
+
+    def __init__(self, platform = None, specific_pkg = None):
+        self.platform = platform
+        if self.platform is not None and "_" in self.platform:
+            plat_tar = re.search(r"(.*)_(.*).pkg", self.platform)
+            self.build_platform, self.build_target = plat_tar.groups() 
+        self.drive = ""
+        self._files = []
+        self.pkg_files = []
+        self.pkg_file_path = None
+        self.exclude = ""
+        self.location = None
+        self.specific_pkg = specific_pkg
+        if specific_pkg:
+            self.platform = specific_pkg + '.pkg'
+
+    def get_pkg_files(self, location = None, with_full_path = True):
+        """
+        Returns list of PKG files on the given location. If True, full path is returned 
+        otherwise only filenames. Default is set to True
+        
+        Assume at location "c:\abd\files", two pkg file '1.pkg' and '2.pkg', then the funtion
+        can be called as:
+        1. get_pkg_files("c:\abd\files")        - will return a list of pkg files with full paths. 
+                                                  like ['c:\abd\files\1.pkg', 'c:\abd\files\2.pkg']
+        2. get_pkg_files("c:\abd\files", False) - will return a list of pkg files only. 
+                                                  like ['1.pkg', '2.pkg']
+        """
+        self.location = path(location)
+        self.pkg_files = []
+        if not self.location.exists():
+            return None
+
+        for pths, _, files in os.walk(self.location):
+            pfiles = [f for f in files if self.platform != None and f.endswith(self.platform)]
+            if self.platform != None and len(pfiles)>0:
+                if with_full_path:
+                    self.pkg_files.append(os.path.join(pths, pfiles[0]))
+                else:
+                    self.pkg_files.append(str(pfiles[0]))
+            elif self.specific_pkg == None:
+                for name in files:
+                    if fnmatch.fnmatch(name, "*.pkg"):
+                        if with_full_path:
+                            self.pkg_files.append(os.path.join(pths, name))
+                        else:
+                            self.pkg_files.append(str(name))
+
+        return self.pkg_files
+
+    def get_data_files(self, location = [], drive = "", exclude = ""):
+        """
+        Returns data files, source and destination of the files to be installed 
+        on the phone 
+        e.g. location = tsrc\testComponent\group
+        
+        Function can be called in any of the following ways:
+        1. get_data_files("c:\abc\abc.pkg")                 - only data files' paths are returnd 
+                                                              as they are mention in the pkg file
+        2. get_data_files("c:\abc\abc.pkg", "x:")           - Proper data files' paths are returnd 
+                                                              with drive letter included 
+        3. get_data_files("c:\abc\abc.pkg", "x:", "\.dll")  - Data files' paths are returnd with 
+                                                              drive letter included but the dll 
+                                                              files will be excluded if found in 
+                                                              the pkg file
+        
+        if pkg file is not given, the function will try to find the file(s) on the given location with extension ".pkg"
+        """
+
+        self.drive = drive
+        self.exclude = exclude
+        self._files = []
+
+        if type(location) is not list:
+            locations = [location]
+        else:
+            locations = location
+        
+        for _file_ in locations:
+            
+            #if location is already a file
+            if ".pkg" in str(_file_).lower():
+                self._files = _file_
+            else:
+                self.location = path(_file_)
+
+                if not self.location.exists():
+                    continue
+                for p_file in self.get_pkg_files(self.location, True):
+                    self._files.append(p_file)
+
+        return self.__read_pkg_file(self._files)
+
+    def __map_pkg_path(self, pkg_line, pkg_file_path, pkg_file):
+        """Parse package file to get the src and dst paths" for installing files"""
+        mmp_parser = MmpFileParser()
+        ext = ""
+        val1 = ""
+        val2 = ""
+        map_src = ""
+        map_dst = ""
+        self.pkg_file_path = pkg_file_path
+        
+        if not self.exclude == "":
+            if re.search(r'%s' % self.exclude, pkg_line) is not None:
+                return None
+        #searches for the file path (src and dst) in the pkg file
+        #e.g.: "..\conf\VCXErrors.inc"-"C:\TestFramework\VCXErrors.inc"
+        result = re.search(r'^\s*"(.*?)".*?-.*?"(.*?)"', pkg_line)
+
+        if result is None:
+            return None
+        val1, val2 = result.groups()
+
+        if val1 != "":
+            
+            #replacing delimiters (${platform} and ${target}) in PKG file templates, 
+            #for instance, QT tests PKG files have delimeters 
+            if "$(platform)" in val1.lower() and self.build_platform is not None:
+                val1 = val1.lower().replace("$(platform)", self.build_platform)
+            if "$(target)" in val1.lower() and self.build_target is not None:
+                val1 = val1.lower().replace("$(target)", self.build_target)
+
+            if path.isabs(path(val1).normpath()):
+                map_src = str(path.joinpath(self.drive, val1).normpath())
+            elif re.search(r"\A\w", val1, 1):
+                map_src = str(path.joinpath(self.pkg_file_path + os.sep, os.path.normpath(val1)).normpath())
+            else:
+                map_src = str(path.joinpath(self.pkg_file_path, path(val1)).normpath())
+            map_dst = str(path(val2).normpath())
+        else:
+            map_src, map_dst = val1, val2
+        map_src = map_src.strip()
+        
+        #replaces the characters with the drive letters
+        map_dst = map_dst.replace("!:", "c:")
+        map_dst = map_dst.replace("$:", "c:")
+        map_dst = re.sub(r'^(\w)', r'\1', map_dst).strip()
+        indx = map_dst.rsplit(".")
+        try:
+            ext = indx[1]
+        except IndexError:
+            _logger.warning("Index Error in map_pkg_path()")
+
+        _test_type_ = ""
+        _target_filename_ = ""
+        
+        _target_filename_ = mmp_parser.get_target_filename(self.pkg_file_path)
+        _test_type_ = mmp_parser.get_dll_type(self.pkg_file_path)
+        _harness_ = mmp_parser.get_harness(self.pkg_file_path)
+        _libraries_ = mmp_parser.get_libraries(self.pkg_file_path)
+        
+        if ext == "ini":
+            file_type = "engine_ini"
+        elif ext == "cfg":
+            file_type = "conf"
+        elif ext == "dll":
+            #adding type of dll (executable or dependent), if file type is dll
+            if _test_type_ == "dependent":
+                file_type = "data" + ":%s" % _test_type_
+            else:
+                if "qttest.lib" in _libraries_:
+                    file_type = "data" + ":qt:dependent" 
+                else:
+                    file_type = "testmodule"
+                    
+        elif ext == 'exe' and 'rtest' in _libraries_:
+            file_type = "testmodule:rtest"
+        elif ext == "exe":
+            if _test_type_ == "dependent":
+                file_type = "data" + ":%s" % _test_type_
+            else:
+                if "qttest.lib" in _libraries_:
+                    file_type = "testmodule:qt"
+                else:
+                    file_type = "testmodule"
+
+        elif ext == "sisx":
+            file_type = ""
+        elif ext == "xml":
+            file_type = "trace_init"
+        elif ext == "pmd":
+            file_type = "pmd"
+        elif ext == "script":
+            if "testframeworkclient.lib" in _libraries_:
+                file_type = "testscript:mtf"
+            else:
+                file_type = "testscript"
+        else:
+            file_type = "data"
+
+        if not map_src or map_src == "." or not map_dst or map_dst == ".":
+            return None
+
+        return path(map_src).normpath(), path(map_dst).normpath(), file_type, pkg_file
+
+    def __read_pkg_file(self, pkg_files):
+        """Reads contents of PKG file"""
+        pkg_paths = []
+        for pkg_file in pkg_files:
+            if not os.path.exists( pkg_file ):
+                _logger.error("No PKG -file in path specified")
+                continue
+            else:
+                file1 = codecs.open(pkg_file, 'r', 'utf16')
+                try:
+                    lines = file1.readlines()
+                except UnicodeError:
+                    file1 = open(pkg_file, 'r')
+                    lines = file1.readlines()
+                pkg_file_path = path((pkg_file.rsplit(os.sep, 1))[0])
+                for line in lines:
+                    pkg_path = self.__map_pkg_path(line, pkg_file_path, os.path.basename(pkg_file))
+                    if pkg_path is None:
+                        continue
+                    else:
+                        pkg_paths.append(pkg_path)
+
+        return pkg_paths
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/ats3/templates/ats4_macros.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,147 @@
+<!-- 
+============================================================================ 
+Name        : ats_template.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:
+
+============================================================================
+-->
+
+{% macro ctc_initialization() -%}
+            <task>
+                <type>CreateDirTask</type>
+                <parameters>
+                    <parameter value="{{ atsself.CTC_LOG_DIR }}" name="dir"/>
+                </parameters>
+            </task>
+            <task>
+                <type>NonTestExecuteTask</type>
+                <parameters>
+                    <parameter value="z:\sys\bin\ctcman.exe" name="file" />
+                </parameters>
+            </task>
+{%- endmacro %}
+
+{% macro ctc_finalization(setd) -%}
+            <task>
+                <type>NonTestExecuteTask</type>
+                <parameters>
+                    <parameter value="writelocal" name="parameters" />
+                    <parameter value="z:\sys\bin\ctcman.exe" name="file" />
+                </parameters>
+            </task>
+            <task>
+                <type>NonTestExecuteTask</type>
+                <parameters>
+                    <parameter value="writefile" name="parameters" />
+                    <parameter value="z:\sys\bin\ctcman.exe" name="file" />
+                </parameters>
+            </task>
+            
+            {% if test_plan["ctc_run_process_params"].strip() != "" -%}            
+            <task>
+              <type>FileDownloadTask</type>
+              <parameters>
+                  <parameter name="src" value="{{ atsself.CTC_LOG_DIR }}\ctcdata.txt"/>
+                  <parameter name="dst" value="{{ atsself.ctcnetworkpath(setd, test_plan) }}"/>
+              </parameters>
+            </task>
+            {% endif %}
+            
+            <task>
+              <type>FileDownloadTask</type>
+              <parameters>
+                  <parameter name="src" value="{{ atsself.CTC_LOG_DIR }}\ctcdata.txt"/>
+              </parameters>
+            </task>
+{%- endmacro %}
+
+{% macro generate_runsteps_stif(setd) -%}
+            {% set ini_file = atsself.stif_init_file(setd['src_dst']) %}
+            {% if ini_file -%}
+        <task>
+            <type>StifRunCasesTask</type>
+            <parameters>
+              	<parameter name="filter" value="*"/>
+              	<parameter name="timeout" value="{{ test_plan["test_timeout"] }}"/>
+              	<parameter name="engineini" value="{{ ini_file[1] }}"/>
+            </parameters>
+        </task>
+            {% else %}
+                {% for file in setd['src_dst'] -%}
+                    {% if setd["test_harness"] == "STIF" or setd["test_harness"] == "STIFUNIT" -%}
+                        {% if file[2] == "conf" and ".dll" not in file[1].lower() -%}
+        <task>
+            <type>StifRunCasesTask</type>
+            <parameters>
+              	<parameter name="module" value="TESTSCRIPTER"/>
+              	<parameter name="filter" value="*"/>
+              	<parameter name="timeout" value="{{ test_plan["test_timeout"] }}"/>
+              	<parameter name="testcase-file" value="{{ file[1] }}"/>
+            </parameters>
+        </task>
+                        {% endif %}
+                        {% if file[2] == "testmodule" -%}
+        <task>
+            <type>StifRunCasesTask</type>
+            <parameters>
+              	<parameter name="module" value="{{ os.path.basename(file[1]) }}"/>
+              	<parameter name="filter" value="*"/>
+              	<parameter name="timeout" value="{{ test_plan["test_timeout"] }}"/>
+            </parameters>
+        </task>
+                        {% endif %}
+                    {% endif %}
+                {% endfor -%}
+            {% endif %}
+{%- endmacro %}
+
+
+{% macro generate_runsteps_stif_single_set(setd) -%}
+            {% if setd["engine_ini_file"] != None -%}
+        <task>
+            <type>StifRunCasesTask</type>
+            <parameters>
+              	<parameter name="filter" value="*"/>
+              	<parameter name="timeout" value="{{ test_plan["test_timeout"] }}"/>
+              	<parameter name="engineini" value="c:\testframework\{{ os.path.basename(setd["engine_ini_file"]) }}"/>
+            </parameters>
+        </task>
+            {% elif setd["config_files"] != [] -%}
+                 {% for config_file in setd["config_files"] -%}
+        <task>
+            <type>StifRunCasesTask</type>
+            <parameters>
+              	<parameter name="module" value="TESTSCRIPTER"/>
+              	<parameter name="filter" value="*"/>
+              	<parameter name="timeout" value="{{ test_plan["test_timeout"] }}"/>
+              	<parameter name="testcase-file" value="e:\testing\conf\{{ os.path.basename(config_file) }}"/>
+            </parameters>
+        </task>
+                {% endfor -%}
+            {% else %}
+                {% for testmodule_file in setd["testmodule_files"] -%}
+        <task>
+            <type>StifRunCasesTask</type>
+            <parameters>
+              	<parameter name="module" value="{{ os.path.basename(testmodule_file) }}"/>
+              	<parameter name="filter" value="*"/>
+              	<parameter name="timeout" value="{{ test_plan["test_timeout"] }}"/>
+            </parameters>
+        </task>
+                {% endfor -%}
+            {% endif %}
+{%- endmacro %}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/ats3/testconfigurator.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,336 @@
+# -*- encoding: latin-1 -*-
+
+#============================================================================ 
+#Name        : testconfigurator.py 
+#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:
+#===============================================================================
+
+"""Parse Symbian SW component for ATS3 testing related information"""
+
+# pylint: disable-msg=R0902,R0912,R0901,R0915,R0201
+#R* remove during refactoring
+
+from path import path # pylint: disable-msg=F0401
+import ats3.parsers as parser
+import logging
+import os
+import subprocess
+
+_logger = logging.getLogger('ats')
+
+class Ats3ComponentParser(object):
+    """
+    Parse Symbian SW component for ATS3 testing related information.
+    
+    Parses a component's source directories for testing related settings and
+    files, and generates a TestPlan out of the findings.
+    
+    """
+
+    def __init__(self, config):
+        
+        self.target_platform = config.target_platform
+        self.pkg_parser = parser.PkgFileParser(self.target_platform.replace(" ", "_")+".pkg", config.specific_pkg)
+        
+        self.bld_parser = parser.BldFileParser()
+        self.mmp_parser = parser.MmpFileParser()
+        
+        self.data_dirs = config.data_dir
+        self.flash_images = [path(p) for p in config.flash_images]
+        self.tsrc_dir = None
+        self.build_drive = config.build_drive
+        self.target_platform = config.target_platform
+        self.sis_files = config.sis_files
+        self.cfg_harness = config.harness
+        self.test_timeout = config.test_timeout
+        self.trace_enabled = config.trace_enabled
+        self.excludable_dlls = []
+        self.custom_dir = None
+
+    def insert_testset_stif(self, src_dst, pkg_paths):
+        """Inserts test set data to test plan for stif"""
+        if not pkg_paths:    
+            try:
+                
+                tsrc_testdata_files = self.tsrc_data_files()
+                for data_file in tsrc_testdata_files:
+                    if "\\mmc\\" in data_file.lower():
+                        src_dst.append((data_file, path(r"e:\testing\data").joinpath(data_file.name), "data"))
+                    elif "\\c\\" in data_file.lower():
+                        src_dst.append((data_file, path(r"c:\testing\data").joinpath(data_file.name), "data"))
+                    else:
+                        src_dst.append((data_file, path(r"c:\testing\data").joinpath(data_file.name), "data"))
+            except OSError:
+                _logger.warning("No testdata folder" )
+                tsrc_testdata_files = None
+
+        else:
+            try:
+                src_dst = pkg_paths
+            except OSError:
+                _logger.warning("No pkg file found in the directory ( %s )" % self.tsrc_pkg_dir)
+                src_dst = []
+            except IndexError:
+                _logger.warning("No pkg file found in the directory ( %s )" % self.tsrc_pkg_dir)
+                src_dst = []
+        
+        return src_dst
+                
+    def insert_test_set(self, test_plan, tsrc_dir, _paths_dict_):
+        """Parse tsrc directory, storing data into the test plan."""
+        self.tsrc_dir = path(tsrc_dir)  # Store current test source dir.
+        tsrc_testdata_files = []
+        tsrc_config_files = []
+        self.custom_dir = None
+        engine_ini_file = None
+        test_harness = self.cfg_harness
+        src_dst = []
+        pmd_files = []
+        trace_activation_files = []
+        
+        if not os.path.exists( self.tsrc_dir ):
+            _logger.error("Missing test source directory: %s", self.tsrc_dir)
+        else:
+            self.custom_dir = self.tsrc_dir.joinpath("custom")
+            _logger.debug("using customized testing from %s" % self.custom_dir)
+            if os.path.exists(self.tsrc_bld_dir.joinpath("group","bld.inf")):
+                mmp_files = self.bld_parser.get_test_mmp_files(self.tsrc_bld_dir.joinpath("group","bld.inf"))                
+            else:
+                mmp_files = self.bld_parser.get_test_mmp_files(self.tsrc_bld_dir.joinpath("bld.inf"))
+                
+            test_harness = self.mmp_parser.get_harness(mmp_files)
+            
+            pkg_paths = self.pkg_parser.get_data_files(self.tsrc_pkg_files(_paths_dict_), self.build_drive)
+            if self.trace_enabled == "True":
+                try:
+                    pmd_files = self.tsrc_pmd_files()
+                except OSError:
+                    _logger.warning("No pmd file in output-folder.")
+                try:
+                    trace_activation_files = self.tsrc_trace_activation_files()
+                except OSError:
+                    _logger.warning("No trace activation files in trace init folder")
+                if trace_activation_files and not pmd_files:
+                    _logger.warning("Trace activation files available but NOT pmd file.")
+                elif pmd_files and not trace_activation_files:
+                    _logger.warning("Pmd file available but NO trace activation files.")
+            
+            if test_harness == "STIF" or test_harness == "STIFUNIT" or test_harness == "GENERIC":
+                src_dst = self.insert_testset_stif(src_dst, pkg_paths)
+                        
+            elif test_harness == "EUNIT":
+                try:
+                    src_dst  = self.pkg_parser.get_data_files(self.tsrc_pkg_files(_paths_dict_), self.build_drive)
+
+                except OSError:
+                    _logger.warning("No pkg file found in the directory ( %s )" % self.tsrc_pkg_dir)
+                    src_dst = []
+                except IndexError:
+                    _logger.warning("No pkg file found in the directory ( %s )" % self.tsrc_pkg_dir)
+                    src_dst = []
+            try:
+                testmodule_files = self.tsrc_dll_files()
+
+                for dll_file in testmodule_files:
+                    if not self.check_dll_duplication(dll_file.name, src_dst):
+                        _dll_type_ = self.mmp_parser.get_dll_type(self.tsrc_bld_dir)
+
+                        if dll_file.name in self.excludable_dlls:
+                            src_dst.append((dll_file, path(r"c:\sys\bin").joinpath(dll_file.name), "data:%s" % _dll_type_))
+                        else:
+                            src_dst.append((dll_file, path(r"c:\sys\bin").joinpath(dll_file.name), "testmodule"))
+
+            except OSError:
+                _logger.warning("No dll files in dll folders" )
+                tsrc_testdata_files = None
+
+            if test_plan['multiset_enabled'] == 'True':
+                backup = []
+                temp_src_dst = {}
+                for x_temp in src_dst:
+                    if len(x_temp) < 4:
+                        backup.append(x_temp)
+                for x_temp in src_dst:
+                    if len(x_temp) > 3:
+                        if temp_src_dst.has_key(x_temp[3]):
+                            temp_src_dst[x_temp[3]].append(x_temp)
+                        else:
+                            temp_src_dst[x_temp[3]] = [x_temp] + backup
+                
+                for pkg in temp_src_dst.keys():
+                    src_dst = temp_src_dst[pkg]
+                    
+                    if self.trace_enabled == "True":
+                        test_plan.insert_set(data_files=tsrc_testdata_files,
+                                             config_files=tsrc_config_files,
+                                             engine_ini_file=engine_ini_file,
+                                             image_files=self.flash_images,
+                                             sis_files=self.sis_files,
+                                             #testmodule_files=self.tsrc_dll_files(),
+                                             test_timeout=list(self.test_timeout),
+                                             test_harness=test_harness,
+                                             src_dst=src_dst,
+                                             pmd_files=pmd_files,
+                                             trace_activation_files=trace_activation_files,
+                                             custom_dir=self.custom_dir,
+                                             component_path=tsrc_dir)
+                    else:
+                        test_plan.insert_set(image_files=self.flash_images,
+                                             sis_files=self.sis_files,
+                                             test_timeout=list(self.test_timeout),
+                                             test_harness=test_harness,
+                                             src_dst=src_dst,
+                                             custom_dir=self.custom_dir,
+                                             component_path=tsrc_dir)
+            else:
+                if self.trace_enabled == "True":
+                    test_plan.insert_set(data_files=tsrc_testdata_files,
+                                         config_files=tsrc_config_files,
+                                         engine_ini_file=engine_ini_file,
+                                         image_files=self.flash_images,
+                                         sis_files=self.sis_files,
+                                         #testmodule_files=self.tsrc_dll_files(),
+                                         test_timeout=list(self.test_timeout),
+                                         test_harness=test_harness,
+                                         src_dst=src_dst,
+                                         pmd_files=pmd_files,
+                                         trace_activation_files=trace_activation_files,
+                                         custom_dir=self.custom_dir,
+                                         component_path=tsrc_dir)
+                else:
+                    test_plan.insert_set(image_files=self.flash_images,
+                                         sis_files=self.sis_files,
+                                         test_timeout=list(self.test_timeout),
+                                         test_harness=test_harness,
+                                         src_dst=src_dst,
+                                         custom_dir=self.custom_dir,
+                                         component_path=tsrc_dir)
+
+    def check_dll_duplication(self, _dll_file_, _src_dst_ ):
+        """Checks if the dll is already in the dictionary, created by pkg file"""
+        for item in _src_dst_:
+            first = item[0]
+            return _dll_file_.lower() in first.lower()
+            
+    @property
+    def tsrc_bld_dir(self):
+        """Component's build directory."""
+        return self.tsrc_dir
+
+    @property
+    def tsrc_conf_dir(self):
+        """Component's configuration file directory."""
+        return self.tsrc_dir.joinpath("conf")
+
+    @property
+    def tsrc_custom_dir(self):
+        """Component's test customization directory."""
+        return self.tsrc_dir.joinpath("custom")
+
+
+    @property
+    def tsrc_data_dirs(self):
+        """Component's data directories."""
+        return [self.tsrc_dir.joinpath(d) for d in self.data_dirs]
+
+    @property
+    def tsrc_init_dir(self):
+        """Component's initialization file directory."""
+        return self.tsrc_dir.joinpath("init")
+    
+    @property
+    def tsrc_pkg_dir(self):
+        """Component's .pkg -file directory"""
+        return self.tsrc_dir
+    
+    @property
+    def tsrc_trace_activation_dir(self):
+        """Component's trace activation file directory"""
+        return self.tsrc_dir.joinpath("trace_init")
+
+    @property
+    def tsrc_pmd_dir(self):
+        """Component's pmd file directory"""
+        pmd_dir = self.build_drive + os.sep
+        return pmd_dir.joinpath("output", "pmd")
+
+    def tsrc_pmd_files(self):
+        """Component's trace pmd files from the {build_drive}\output directory"""
+        return list(self.tsrc_pmd_dir.walkfiles("*.pmd"))
+
+    def tsrc_trace_activation_files(self):
+        """Component's trace activation files, from the rtace_init directory."""
+        return list(self.tsrc_trace_activation_dir.walkfiles("*.xml"))
+    
+    def tsrc_config_files(self):
+        """Component's configuration files, from the conf directory."""
+        return list(self.tsrc_conf_dir.walkfiles("*.cfg"))
+
+    def tsrc_ini_files(self):
+        """Component's initialiation files, from the ini directory."""
+        return list(self.tsrc_init_dir.walkfiles("*.ini"))
+
+    def tsrc_data_files(self):
+        """Component's data files, from data directories."""
+        files = []
+        files2 = []
+        for data_dir in self.tsrc_data_dirs:            
+            if data_dir.exists():
+                files.extend(list(data_dir.walkfiles()))        
+        
+        #Remove dist policy files
+        for data_file in files:
+            if data_file.name.lower() != "distribution.policy.s60":
+                files2.append(data_file)
+        return files2
+
+    def tsrc_dll_files(self):
+        """Component's DLL files, reported by ABLD BUILD."""
+
+        dlls = []
+        orig_dir = os.getcwd()
+        try:
+            os.chdir(self.tsrc_bld_dir)
+            #os.system("abld test build %s" % self.target_platform)
+            
+            if os.environ.has_key("SBS_HOME"):
+                process = subprocess.Popen("sbs --what -c %s.test" % self.target_platform.replace(' ', '_'), shell=True, stdout=subprocess.PIPE)
+            else:
+                os.system("bldmake bldfiles")
+                process = subprocess.Popen("abld -w test build %s" % self.target_platform, shell=True, stdout=subprocess.PIPE)
+            pipe = process.communicate()[0]
+            
+            for line in pipe.split('\n'):
+                _logger.debug(line.strip())
+                target = path(line.strip())
+                if target.ext == ".dll":
+                    
+                    build_target = self.build_drive.joinpath(target).normpath()
+                    if not build_target.exists():
+                        _logger.warning("not found: %s" % build_target)
+                    else:
+                        dlls.append(build_target)
+        finally:
+            os.chdir(orig_dir)
+        return dlls
+
+    def tsrc_pkg_files(self, _dict_):
+        """Component's package files, from the group directory"""
+        pkg_dirs = []
+        for sub_component in _dict_[self.tsrc_pkg_dir]['content'].keys():
+            pkg_dirs.append(sub_component)
+        return pkg_dirs
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/atsant.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,76 @@
+# -*- encoding: latin-1 -*-
+
+#============================================================================ 
+#Name        : atsant.py 
+#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:
+#===============================================================================
+
+""" get the files needed to test ATS"""
+
+# pylint: disable-msg=R0912,W0622
+#R* remove dring refactoring
+#W0622 => Redefining built-in 'filter'
+
+import re
+import sysdef.api
+import os
+import logging
+
+_logger = logging.getLogger('atsant')
+
+def files_to_test(canonicalsysdeffile, excludetestlayers, idobuildfilter, builddrive):
+    """list the files to test"""
+    sdf = sysdef.api.SystemDefinition(canonicalsysdeffile)
+
+    modules = {}
+    for layr in sdf.layers:
+        if re.match(r".*_test_layer$", layr):
+            try:
+                if re.search(r"\b%s\b" % layr, excludetestlayers):
+                    continue
+            except TypeError, exp:
+                pass
+
+            layer = sdf.layers[layr]
+            for mod in layer.modules:
+                if mod.name not in modules:
+                    modules[mod.name] = []
+                for unit in mod.units:
+                    include_unit = True
+                    if idobuildfilter != None:
+                        if idobuildfilter != "":
+                            include_unit = False
+                            if hasattr(unit, 'filters'):
+                                if len(unit.filters) > 0:
+                                    for filter in unit.filters:
+                                        if re.search(r"\b%s\b" % filter, idobuildfilter):
+                                            include_unit = True
+                                        else:
+                                            include_unit = False
+                                elif len(unit.filters) == 0:
+                                    include_unit = True
+                            else:
+                                include_unit = False
+                        else:
+                            include_unit = False
+                            if hasattr(unit, 'filters'):
+                                if len(unit.filters) == 0:
+                                    include_unit = True
+                    if include_unit:
+                        modules[mod.name].append(os.path.join(builddrive + os.sep, unit.path))
+
+    return modules
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/bomtofile.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,71 @@
+#============================================================================ 
+#Name        : bomtofile.py
+#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:
+#===============================================================================
+
+class BOMWriter(object):
+    """
+    Read BOM and output in text
+    """
+    def __init__(self, session, project_name, project, output_dir):
+        self.project_name = project_name
+        self.project = project
+        self.output_dir = output_dir
+        self.session = session
+      
+    def writeprojects(self):
+        fileout = file(self.output_dir + '/' + self.project_name + '_projects.txt', 'w')
+        
+        i = 1
+        for project in self.project.baseline:
+            fileout.write(str(i) + ") " + str(project) + "\n")
+            
+            i += 1
+        fileout.close()
+        
+    def writebaselines(self):
+        fileout = file(self.output_dir + '/' + self.project_name + '_baselines.txt', 'w')    
+        
+        i = 1
+        for project in self.project.baseline:
+            fileout.write(str(i) + ") " + str(project) + "\n")
+            
+            cmproject = self.session.create(str(project))
+            
+            try:
+                baseline = str(cmproject.baseline).strip()
+                if baseline == "None":
+                    fileout.write(str(i) + ") " + str(project) + "\n")
+                else:
+                    fileout.write(str(i) + ") " + baseline + "\n")
+                i += 1
+            except Exception, ex:
+                print ex
+        fileout.close()
+            
+    def writetasks(self):
+        if self.project.xml_properties.has_key("task"):
+            fileout = file(self.output_dir + '/' + self.project_name + '_tasks.txt', 'w')
+            
+            i = 1
+            for task in self.project.task:
+                fileout.write(str(i) + ") Task " + str(task) + "\n")
+                i += 1
+            fileout.close()
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/build/__init__.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,20 @@
+#============================================================================ 
+#Name        : __init__.py 
+#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:
+#===============================================================================
+
+""" Package for functionality related to features of a build. """
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/build/ec/__init__.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,20 @@
+#============================================================================ 
+#Name        : __init__.py 
+#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:
+#===============================================================================
+
+""" build.ec framework.  """
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/build/ec/history.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,102 @@
+#============================================================================ 
+#Name        : history.py 
+#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:
+#===============================================================================
+
+""" History file management related functionalities. """
+
+import os
+
+
+class HistoryFileManager:
+    """ To manage EC history files. """
+    
+    weak_num = ""
+    branch_name = ""
+    file_dict = {}
+
+    def __init__(self, arg1, arg2, arg3):
+        """ Constructor. """
+        self.path = str(arg1)
+        self.weak_num = str(arg2)
+        self.branch_name = str(arg3)
+
+    def findActualFilePath(self):
+        """Find the new path where the history file will be updated based on the week number and branch.
+        
+        This will normally the same path as used to copy from net drive to local drive.
+        But for new branch / week number, the path will be different. """
+        branch_dir_list = self.branch_name.split(".")
+        for dir_ in branch_dir_list:
+            self.path = os.path.join(self.path, dir_)
+        if(self.path.endswith("\\0")):
+            self.path = self.path[0:-2]
+        return str(self.path)
+        
+    def findHistoryFilePath(self):
+        """ Finds the path of the history file based on input
+        branch and week number. """
+        branch_dir_list = self.branch_name.split(".")
+        for dir_ in branch_dir_list:
+            if(not os.path.exists(os.path.join(self.path, dir_))):
+                break
+            else:
+                self.path = os.path.join(self.path, dir_)
+        if(self.path.endswith("\\0")):
+            self.path = self.path[0:-2]
+
+    def findFile(self):
+        """ Finds the closest history file match to week number. """
+        ret_file_name = None
+        file_names = os.listdir(self.path)
+        file_names_alone = file_names[:]
+
+        # Find the history files without sub directory
+        for name in file_names:
+            if(os.path.isdir(os.path.join(self.path, name))):
+                file_names_alone.remove(name)
+
+        if(len(file_names_alone) > 0):
+            file_names_alone.sort()
+            low_index = 0
+            high_index = len(file_names_alone) - 1
+
+            if(high_index == 0):
+                temp_name = file_names_alone[low_index]
+                if(self.weak_num >= temp_name[0:4]):
+                    return temp_name
+                else:
+                    return ret_file_name
+
+            # Find the matching history file using binary search
+            while(low_index < high_index):
+                mid_index = (low_index + high_index) / 2
+                temp_name = file_names_alone[mid_index]
+                if(temp_name[0:4] < self.weak_num):
+                    low_index = mid_index + 1
+                else:
+                    high_index = mid_index
+                    
+                temp_name = file_names_alone[high_index]
+            if( self.weak_num >= temp_name[0:4]):
+                ret_file_name = file_names_alone[high_index]
+            else:
+                if(high_index != 0):
+                    ret_file_name = file_names_alone[high_index - 1]
+
+        return str(ret_file_name)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/build/io.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,113 @@
+#============================================================================ 
+#Name        : io.py 
+#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:
+#===============================================================================
+
+""" IO classes for handling build-related objects, e.g. log files.
+"""
+
+import logging
+import re
+import symbian.log
+
+
+_logger = logging.getLogger('build.io')
+
+
+class AbldLogWhatReader(symbian.log.Parser):
+    """ Reader that parses a Symbian build log and extracts abld -what sections.
+    
+    This reader will return, using the iterator protocol, tuples containing:
+    * Unit name.
+    * List of binaries for that unit.
+    
+    """
+    def __init__(self, logpath):
+        symbian.log.Parser.__init__(self, open(logpath, 'r'))
+        self.__match_what = re.compile("abld(\.bat)?(\s+.*)*\s+-w(hat)?", re.I)        
+        self._releasable = {}      
+        self.parse()
+
+    def __iter__(self):
+        keys = self._releasable.keys()
+        keys.sort()
+        for key in keys:
+            yield (key, self._releasable[key])
+    
+    def task(self, name, cmdline, path, output):
+        """ Scans abld what build jobs to extract the list of releasable. """
+        _logger.debug("%s, %s, %s, %s" % (name, cmdline, path, output))
+        if self.__match_what.match(cmdline) == None:
+            return
+        
+        if name not in self._releasable:
+            self._releasable[name] = []
+        for line in output.splitlines():
+            line = line.strip()
+            if line.startswith("\\") or line.startswith("/"):  
+                self._releasable[name].append(line)
+
+                    
+class RombuildLogBinarySizeReader(object):
+    """ Reader that parses a Symbian ROM build log and extracts binary sizes.
+    
+    This reader will return, using the iterator protocol, tuples containing:
+    * Binary name.
+    * Size of binary.\t(\d+)
+    """
+    rom_binary_size_regex = re.compile(r'(\\epoc32[\w\\\.]+)\t(\d+)')
+    rofs_binary_size_regex = re.compile(r"ile '([\w\\\.]+)' size: (\w+)")
+    image_type_regex = re.compile(r'[._]([^._]+)\.log')
+    
+    def __init__(self, logpath):
+        """ Initialisation. 
+        
+        :param logpath: The path to the Symbian log file.
+        """
+        self._logpath = logpath
+        
+    def __iter__(self):
+        """ Implement the iterator protocol. """
+        loghandle = open(self._logpath, 'r')
+        
+        # Find the ROM image type
+        type_match = self.image_type_regex.search(self._logpath)
+        image_type = type_match.group(1)
+        if image_type == 'rom' or image_type.startswith('rofs'):
+            # Extract the binary and size info 
+            for line in loghandle:
+                if image_type == 'rom':
+                    match = self.rom_binary_size_regex.match(line)
+                    if match != None:
+                        # Number is in decimal
+                        size = int(match.group(2))
+                        yield (match.group(1), size, image_type)
+                elif image_type.startswith('rofs'):
+                    match = self.rofs_binary_size_regex.search(line)
+                    if match != None:
+                        # Number is in hexidecimal
+                        size = int(match.group(2), 16)
+                        yield (match.group(1), size, image_type)
+        else:
+            _logger.error('ROM type not matched')
+    
+            
+            
+        
+        
+        
+                    
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/build/model.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,681 @@
+#============================================================================ 
+#Name        : model.py 
+#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:
+#===============================================================================
+
+""" Models the concepts and objects that exist in a software build. """
+
+import logging
+import re
+import os
+import amara
+import ccm
+import configuration
+from xmlhelper import recursive_node_scan
+import symrec
+
+# Uncomment this line to enable logging in this module, or configure logging elsewhere
+_logger = logging.getLogger("bom")
+#_logger.setLevel(logging.DEBUG)
+logging.basicConfig(level=logging.DEBUG)
+
+
+class SessionCreator(object):
+    """ Session Creator object. """
+    def __init__(self, username=None, password=None, provider=None):
+        """ Init the SessionCreator object."""
+        self.__provider = provider
+        self.__username = username
+        self.__password = password
+    
+    def session(self, database):
+        """ Get a session for a database. If no session exists just create a new one."""
+        _logger.info("Creating session for %s" % database)
+        return self.__provider.get(username=self.__username, password=self.__password, database=database)
+        
+    def close(self):
+        self.__provider = None
+
+
+class BOM(object):
+    """ The Bill of Materials for a build. """
+    def __init__(self, config):
+        """ Initialization.
+        
+        :param config: The build configuration properties.
+        :param ccm_project: The Synergy project used for reading the BOM.
+        """
+        self.config = config
+        self.build = ""
+        self._projects = []
+        self._icd_icfs = []
+        self._flags = []
+        
+        self._capture_icd_icfs()
+        self._capture_flags()
+        
+    def _capture_icd_icfs(self):
+        prep_xml_path = self.config['prep.xml']
+        if prep_xml_path is not None and os.path.exists(prep_xml_path):
+            prep_doc = amara.parse(open(prep_xml_path,'r'))
+            if hasattr(prep_doc.prepSpec, u'source'):
+                for source in prep_doc.prepSpec.source:
+                    if hasattr(source, u'unzipicds'):
+                        for  unzipicds in source.unzipicds:
+                            if hasattr(unzipicds, u'location'):
+                                for location in unzipicds.location:
+                                    excludes = []
+                                    excluded = False
+                                    if hasattr(location, 'exclude'):
+                                        for exclude in location.exclude:
+                                            _logger.debug('Exclude added: %s' % str(exclude.name))
+                                            excludes.append(str(exclude.name))                                
+                                            excluded = False
+                                    path = str(location.name)                                    
+                                    if os.path.exists(path):
+                                        files = os.listdir(str(location.name))
+                                        for file_ in files:
+                                            for exclude in excludes:
+                                                if file_.endswith(exclude):
+                                                    excluded = True
+                                            if file_.endswith('.zip') and not excluded:
+                                                self._icd_icfs.append(file_)
+                                                self._icd_icfs.sort(key=str)
+        
+    def _capture_flags(self):
+        pass
+        
+    def _getprojects(self):
+        return self._projects
+        
+    projects = property(_getprojects)
+    
+    def all_baselines(self):
+        baselines = {}
+        for project in self._projects:
+            for baseline, baseline_attrs in project.baselines.iteritems():
+                baselines[baseline] = baseline_attrs
+        return baselines
+    
+    def all_tasks(self):
+        tasks = []
+        for project in self._projects:
+            tasks.extend(project.all_tasks())
+        tasks.sort(key=str)
+        return tasks
+            
+    def __str__(self):
+        return str(self._projects)
+
+class SimpleProject(object):
+    def __init__(self, tasks):
+        self.tasks = tasks
+        self.folders = []
+
+class SimpleBOM(BOM):
+    def __init__(self, config, bomxml):
+        BOM.__init__(self, config)
+        self._baselines = {}
+        bom = amara.parse(open(bomxml))
+        for p in bom.bom.content.project:
+            tasks = []
+            self._baselines[str(p.baseline)] = {}
+            for t in p.task:
+                tasks.append(str(t.id) + ': ' + str(t.synopsis))
+            self._projects.append(SimpleProject(tasks))
+    
+    def all_baselines(self):
+        return self._baselines
+
+class SynergyBOM(BOM):
+    def __init__(self, config, ccm_project=None, username=None, password=None, provider=None):
+        BOM.__init__(self, config)
+        self._sessioncreator = SessionCreator(username=username, password=password, provider=provider)
+        self.ccm_project = ccm_project
+        if self.ccm_project != None: 
+            self._projects = [Project(ccm_project, config)]
+        self._capture_projects()
+            
+    def __find_project(self, project, config):
+        if (os.path.exists(os.path.join(config['dir'], project.name, "project.version"))):
+            return project
+        
+        path = os.path.join(config['dir'], project.name, project.name)
+        if (not os.path.exists(path)):
+            return project
+        try:
+            result = project.session.get_workarea_info(path)
+            return result['project']           
+        except ccm.CCMException:            
+            return project
+            
+    def _capture_projects(self):
+        # grab data from new format of delivery.xml
+        configBuilder = configuration.NestedConfigurationBuilder(open(self.config['delivery'], 'r'))
+        for config in configBuilder.getConfiguration().getConfigurations():            
+            _logger.debug('Importing project %s from delivery config.' % str(config.name))            
+            ccm_project = self._sessioncreator.session(config['database']).create(config.name)
+            project = Project(self.__find_project(ccm_project, config), config)
+            self._projects.append(project)
+        
+    def close(self):
+        self._sessioncreator.close()
+
+
+class Project(object):
+    """ An SCM project.
+    
+    An input to the build area, typically copied from an SCM work area.
+    """
+    def __init__(self, ccm_project, config, action=None):
+        """ Initialisation. """
+        self._ccm_project = ccm_project
+        self._baselines = {}
+        #TODO : could querying release attribute return the ccm object? Or add a release attribute to Project
+        # class
+        release = self._ccm_project['release']
+        _logger.debug("Project release: '%s'" % release)
+        self._ccm_release = None
+        if release != '':
+            self._ccm_project.session.create(release)
+
+        # capturing the frozen baseline.
+        _logger.debug('Capture baselines')
+        project_status = self._ccm_project['status']
+        bproject = self._get_toplevel_baselines(self._ccm_project).pop()
+        if bproject != None:        
+            self._baselines[unicode(bproject)] = {u'overridden':u'true'}
+            # This section finds the baselines of all of the checked out projects
+            if project_status == "prep" or project_status == "working" or project_status == "shared":
+                for subproject in self._ccm_project.subprojects:
+                    overridden = u'false'
+                    subprojbaseline = subproject.baseline
+                    if config.has_key('subbaselines'):
+                        for subbaseline in config['subbaselines']:
+                            if str(subbaseline) == str(subprojbaseline):
+                                overridden = u'true'
+                    
+                    if subprojbaseline != None:
+                        self._baselines[unicode(subprojbaseline)] = {u'overridden': overridden}
+            # When a project is a snapshot, the baselines are the projects themselves
+            else:
+                for subproject in bproject.subprojects:            
+                    self._baselines[unicode(subproject)] = {u'overridden':u'false'}
+
+        self._tasks = []
+        self._folders = []
+        
+        # Get Synergy reconfigure properties for folders and tasks
+        if action == None:
+            self._import_baseline_config()
+            # Get tasks from Synergy if using reconfigure template
+            if config.get_boolean("use.reconfigure.template", False):
+                self._tasks = self._ccm_project.tasks
+                self._folders = self._ccm_project.folders
+                        
+        # Or get folders and tasks defined in configuration file
+        elif action != None and action.nodeName == "checkout":
+            if not config.get_boolean("use.reconfigure.template", False):
+                for task_node in action.xml_xpath(u'./task[@id]'):
+                    for task in [x.strip() for x in task_node.id.split(',')]:
+                        self._tasks.append(ccm_project.session.create("Task %s" % task))
+                for folder_node in action.xml_xpath(u'./folder[@id]'):
+                    for folder in [x.strip() for x in folder_node.id.split(',')]:
+                        self._folders.append(ccm_project.session.create("Folder %s" % folder))
+            else:
+                self._tasks = self._ccm_project.tasks
+                self._folders = self._ccm_project.folders
+            self._import_baseline_config()
+
+    def _import_baseline_config(self):
+        """ Import the baseline folders and tasks. """
+        baselines = self._get_toplevel_baselines(self._ccm_project)
+        baselines.pop()
+        for baseline in baselines:
+            for task in baseline.tasks:
+                if task not in self._tasks:                     
+                    self._tasks.append(task)
+            for folder in baseline.folders:
+                if folder not in self._folders:                     
+                    self._folders.append(folder)
+        
+    def _get_toplevel_baselines(self, project):
+        if project == None:
+            return []
+        project_status = project['status']
+        if project_status == "prep" or project_status == "working" or project_status == "shared":
+            result = [project]
+            baseline = project.baseline
+            if baseline != None:
+                result.extend(self._get_toplevel_baselines(baseline))
+            return result
+        else:
+            return [project]
+
+    def _getbaselines(self):
+        return self._baselines
+        
+    baselines = property(_getbaselines)
+       
+    def _getfolders(self):
+        return self._folders
+        
+    folders = property(_getfolders)
+    
+    def all_tasks(self):
+        """ Get all the tasks (individual and folder based). """
+        tasks = [Task(ccm_task) for ccm_task in self._tasks]
+        for folder in self._folders:
+            [tasks.append(Task(ccm_task)) for ccm_task in folder.tasks]
+        tasks.sort(key=str)
+        return tasks
+        
+    def _gettasks(self):
+        return [Task(ccm_task) for ccm_task in self._tasks]
+        
+    tasks = property(_gettasks)
+        
+    def _getsupplier(self):
+        if self._ccm_release != None:
+            component = self._ccm_release.component
+            comparisons = {'MC': '^mc',
+                           'S60': 'S60',
+                           'SPP/NCP': '^spp_config|spp_psw|spp_tools|ncp_sw$',
+                           'IBUSAL': '^IBUSAL'}
+            for supplier, regexp in comparisons.iteritems():
+                if re.search(regexp, component) != None:
+                    return supplier
+        return "Unknown"
+        
+    supplier = property(_getsupplier)
+    
+    def __repr__(self):
+        """ Object representation. """
+        return str(self._ccm_project)
+        
+    def __str__(self):
+        """ String representation. """
+        return str(self._ccm_project)
+
+
+class Fix(object):
+    """ A generic fix. """
+    def __init__(self, description):
+        """ Initialisation. """
+        self._description = description
+        
+    def __str__(self):
+        """ String representation. """
+        return str(self._description)
+        
+        
+class TSWError(Fix):
+    """ A TSW database error. """
+    regex = '([A-Z]{4}-[A-Z0-9]{6})'
+    groupname = 'TSW Errors'
+
+    def __init__(self, description):
+        """ Initialisation. """
+        Fix.__init__(self, description)
+
+
+class PCPError(Fix):
+    """ A PCP database error. """
+    regex = '([A-Z]{2}-[0-9]{11})'
+    groupname = 'PCP Errors'
+
+    def __init__(self, description):
+        """ Initialisation. """
+        Fix.__init__(self, description)
+
+
+class TAChange(Fix):
+    """ A Type Approval change. """
+    regex = '^_TA:(\s*)(.*?)(\s*)$'
+    groupname = 'TA Changes'
+    
+    def __init__(self, description):
+        """ Initialisation. """
+        Fix.__init__(self, description)
+        
+        
+class Task(object):
+    """ A task or unit of change from the SCM system. """
+    fix_types = [TSWError, PCPError, TAChange]
+    
+    def __init__(self, ccm_task):
+        """ Initialisation. """
+        self.ccm_task = ccm_task
+
+    def __getitem__(self, name):
+        """ Dictionary of tasks support. """
+        return self.ccm_task[name]
+            
+    def has_fixed(self):
+        """ Returns an object representing what this task fixed, if anything. """
+        text = str(self.ccm_task)
+        fix_object = None
+        for fix_type in self.fix_types:
+            match = re.search(fix_type.regex, str(self.ccm_task))
+            if match != None:
+                fix_object = fix_type(text)
+                break
+        return fix_object
+        
+    def __cmp__(self, other):
+        """ Compare tasks based on their task number only. """
+        self_task = str(self.ccm_task)
+        other_task = str(other.ccm_task)
+        return cmp(self_task[:self_task.find(':')], other_task[:other_task.find(':')])
+        
+    def __hash__(self):
+        """ Hash support. """
+        self_task = str(self.ccm_task)
+        return hash(self_task[:self_task.find(':')])
+    
+    def __repr__(self):
+        """ Object representation. """
+        self_task = repr(self.ccm_task)
+        return self_task[:self_task.find(':')]
+        
+    def __str__(self):
+        """ String representation. """
+        return str(self.ccm_task)
+        
+        
+class ICD_ICF(object):
+    """ A ICD or ICF patch zip file provided by Symbian. """
+    pass
+
+
+class Flag(object):
+    """ A compilation flag. """
+    pass
+    
+
+class BOMDeltaXMLWriter(object):
+    def __init__(self, bom, bom_log):
+        """ Initialisation. """
+        self._bom = bom
+        self._bom_log = bom_log
+    
+    def write(self, path):
+        """ Write the BOM delta information to an XML file. """
+        bom_log = amara.parse(open(self._bom_log, 'r'))
+        doc = amara.create_document(u'bomDelta')
+        # pylint: disable-msg=E1101
+        doc.bomDelta.xml_append(doc.xml_create_element(u'buildFrom', content=unicode(bom_log.bom.build)))
+        doc.bomDelta.xml_append(doc.xml_create_element(u'buildTo', content=unicode(self._bom.config['build.id'])))
+        content_node = doc.xml_create_element(u'content')
+        doc.bomDelta.xml_append(content_node)
+        
+        old_baselines = {}
+        baselines = {}
+        old_folders = {}
+        folders = {}
+        old_tasks = {}
+        tasks = {}
+        if hasattr(bom_log.bom.content, 'project'):
+            for project in bom_log.bom.content.project:
+                if hasattr(project, 'baseline'):
+                    for baseline in project.baseline:
+                        if not old_baselines.has_key(unicode(baseline)):
+                            old_baselines[unicode(baseline)] = {}
+                        if hasattr(baseline, 'xml_attributes'):
+                            _logger.debug('baseline.xml_attributes: %s' % baseline.xml_attributes)
+                            for attr_name, junk_tuple in sorted(baseline.xml_attributes.iteritems()):
+                                _logger.debug('attr_name: %s' % attr_name)
+                                old_baselines[unicode(baseline)][unicode(attr_name)] = unicode(getattr(baseline, attr_name))
+                if hasattr(project, 'folder'):
+                    for folder in project.folder:
+                        if hasattr(folder, 'name'):
+                            for name in folder.name:
+                                folder_name = unicode(name)
+                                _logger.debug('folder_name: %s' % folder_name)
+                            if not old_folders.has_key(unicode(folder_name)):
+                                old_folders[unicode(folder_name)] = {}
+                            if hasattr(name, 'xml_attributes'):
+                                for attr_name, junk_tuple in sorted(name.xml_attributes.iteritems()):
+                                    _logger.debug('attr_name: %s' % attr_name)
+                                    old_folders[unicode(folder_name)][unicode(attr_name)] = unicode(getattr(name, attr_name))
+        for task in recursive_node_scan(bom_log.bom.content, u'task'):
+            _logger.debug('task: %s' % task)
+            _logger.debug('task: %s' % task.id)
+            _logger.debug('task: %s' % task.synopsis)
+            task_id = u"%s: %s" % (task.id, task.synopsis)
+            if not old_tasks.has_key(task_id):
+                old_tasks[task_id] = {}
+            if hasattr(task, 'xml_attributes'):
+                for attr_name, junk_tuple in sorted(task.xml_attributes.iteritems()):
+                    _logger.debug('attr_name: %s' % attr_name)
+                    old_tasks[task_id][unicode(attr_name)] = unicode(getattr(task, attr_name))
+        for project in self._bom.projects:
+            for folder in project.folders:
+                folders[unicode(folder.instance + "#" + folder.name + ": " + folder.description)] = {u'overridden':u'true'}
+                for task in folder.tasks:
+                    _logger.debug("task_bom:'%s'" % unicode(task))
+                    tasks[unicode(task)] = {u'overridden':u'false'}
+            for task in project.tasks:
+                _logger.debug("task_bom:'%s'" % unicode(task))
+                tasks[unicode(task)] = {u'overridden':u'true'}
+
+        baselines = self._bom.all_baselines()
+
+        self._write_items_with_attributes(content_node, u'baseline', baselines, old_baselines)
+        self._write_items_with_attributes(content_node, u'folder', folders, old_folders)
+        self._write_items_with_attributes(content_node, u'task', tasks, old_tasks)
+        
+        out = open(path, 'w')
+        doc.xml(out, indent='yes')
+        out.close()
+        
+    
+    def validate_delta_bom_contents(self, delta_bom_log, bom_log, old_bom_log):
+        """ To validate delta bom contents with current bom and old bom. """
+        delta_bom_log = amara.parse(open(delta_bom_log, 'r'))
+        bom_log = amara.parse(open(bom_log, 'r'))
+        old_bom_log = amara.parse(open(old_bom_log, 'r'))
+        bom_contents_are_valid = None
+        if hasattr(delta_bom_log.bomDelta.content, 'folder'):
+            for delta_foder in delta_bom_log.bomDelta.content.folder:
+                if(getattr(delta_foder, 'status'))=='added':
+                    for bom_foder in bom_log.bom.content.project.folder:
+                        if(unicode(getattr(bom_foder, 'name')) == unicode(delta_foder)):
+                            bom_contents_are_valid = True
+                        else:
+                            bom_contents_are_valid = False
+                if(getattr(delta_foder, 'status'))=='deleted':
+                    for old_bom_foder in old_bom_log.bom.content.project.folder:
+                        if(unicode(getattr(old_bom_foder, 'name')) == unicode(delta_foder)):
+                            bom_contents_are_valid = True
+                        else:
+                            bom_contents_are_valid = False
+                        
+        if hasattr(delta_bom_log.bomDelta.content, 'task'):
+            for delta_task in delta_bom_log.bomDelta.content.task:
+                if(getattr(delta_task, 'status'))=='added':
+                    for bom_task in recursive_node_scan(bom_log.bom.content, u'task'):
+                        bom_task_id = u"%s: %s" % (bom_task.id, bom_task.synopsis)
+                        if(bom_task_id == unicode(delta_task)):
+                            bom_contents_are_valid = True
+                        else:
+                            bom_contents_are_valid = False
+                if(getattr(delta_task, 'status'))=='deleted':
+                    for old_bom_task in recursive_node_scan(old_bom_log.bom.content, u'task'):
+                        old_bom_task_id = u"%s: %s" % (old_bom_task.id, old_bom_task.synopsis)
+                        if(old_bom_task_id == unicode(delta_task)):
+                            bom_contents_are_valid = True
+                        else:
+                            bom_contents_are_valid = False
+        return bom_contents_are_valid
+     
+    def _write_items(self, node, item_name, items, older_items):
+        items = frozenset(items)
+        older_items = frozenset(older_items)
+        
+        items_added = list(items.difference(older_items))
+        items_added.sort()
+        for item in items_added:
+            node.xml_append(node.xml_create_element(item_name, \
+                            attributes={u'status': u'added'}, content=unicode(item)))
+            
+        items_deleted = list(older_items.difference(items))
+        items_deleted.sort()
+        for item in items_deleted:
+            node.xml_append(node.xml_create_element(item_name, \
+                            attributes={u'status': u'deleted'}, content=unicode(item)))
+
+    # This method takes dictionaries as input to pass along attributes
+    def _write_items_with_attributes(self, node, item_name, items, older_items):
+        fr_items = frozenset(items)
+        fr_older_items = frozenset(older_items)
+        
+        items_added = list(fr_items.difference(fr_older_items))
+        items_added.sort()
+        for item in items_added:
+            item_attributes = {u'status': u'added'}
+            for attr_name, attr_value in sorted(items[item].iteritems()):
+                _logger.debug('item: %s' % item)
+                _logger.debug('attr_name: %s' % attr_name)
+                _logger.debug('attr_value: %s' % attr_value)
+                item_attributes[attr_name] = attr_value
+            node.xml_append(node.xml_create_element(item_name, \
+                            attributes=item_attributes, content=unicode(item)))
+            
+        items_deleted = list(fr_older_items.difference(fr_items))
+        items_deleted.sort()
+        for item in items_deleted:
+            item_attributes = {u'status': u'deleted'}
+            for attr_name, attr_value in sorted(older_items[item].iteritems()):
+                _logger.debug('item: %s' % item)
+                _logger.debug('attr_name: %s' % attr_name)
+                _logger.debug('attr_value: %s' % attr_value)
+                item_attributes[attr_name] = attr_value
+            node.xml_append(node.xml_create_element(item_name, \
+                            attributes=item_attributes, content=unicode(item)))
+
+            
+class BOMXMLWriter(object):
+    def __init__(self, bom):
+        """ Initialisation. """
+        self._bom = bom
+        
+    def write(self, path):
+        """ Write the BOM information to an XML file. """
+        doc = amara.create_document(u'bom')
+        # pylint: disable-msg=E1101
+        doc.bom.xml_append(doc.xml_create_element(u'build', content=unicode(self._bom.config['build.id'])))
+        doc.bom.xml_append(doc.xml_create_element(u'content'))
+        for project in self._bom.projects:
+            project_node = doc.xml_create_element(u'project')
+            project_node.xml_append(doc.xml_create_element(u'name', content=unicode(project)))
+            project_node.xml_append(doc.xml_create_element(u'database', content=unicode(self._bom.config['ccm.database'])))
+            doc.bom.content.xml_append(project_node)
+            _logger.debug('baselines dictionary: %s' % project.baselines)
+            for baseline, baseline_attrs in sorted(project.baselines.iteritems()):
+                _logger.debug('baseline: %s' % baseline)
+                _logger.debug('baseline_attrs: %s' % baseline_attrs)
+                project_node.xml_append(doc.xml_create_element(u'baseline', content=unicode(baseline), attributes=baseline_attrs))
+            for folder in project.folders:
+                folder_node = doc.xml_create_element(u'folder')
+                folder_node.xml_append(doc.xml_create_element(u'name', content=unicode(folder.instance + "#" + folder.name + ": " + folder.description), \
+                            attributes={u'overridden':u'true'}))
+                project_node.xml_append(folder_node)
+                for task in folder.tasks:
+                    task_node = doc.xml_create_element(u'task', attributes={u'overridden':u'false'})
+                    task_node.xml_append(doc.xml_create_element(u'id', content=(unicode(task['displayname']))))
+                    task_node.xml_append(doc.xml_create_element(u'synopsis', content=(unicode(task['task_synopsis']))))
+                    task_node.xml_append(doc.xml_create_element(u'owner', content=(unicode(task['owner']))))
+                    #task_node.xml_append(doc.xml_create_element(u'completed', content=(unicode(self.parse_status_log(task['status_log'])))))
+                    folder_node.xml_append(task_node)
+            for task in project.tasks:
+                task_node = doc.xml_create_element(u'task', attributes={u'overridden':u'true'})
+                task_node.xml_append(doc.xml_create_element(u'id', content=(unicode(task['displayname']))))
+                task_node.xml_append(doc.xml_create_element(u'synopsis', content=(unicode(task['task_synopsis']))))
+                task_node.xml_append(doc.xml_create_element(u'owner', content=(unicode(task['owner']))))
+                #task_node.xml_append(doc.xml_create_element(u'completed', content=(unicode(self.parse_status_log(task['status_log'])))))
+                project_node.xml_append(task_node)
+                
+                fix = task.has_fixed()
+                if fix != None:
+                    fix_node = doc.xml_create_element(u'fix', content=(unicode(task)), attributes = {u'type': unicode(fix.__class__.__name__)})
+                    project_node.xml_append(fix_node)
+
+        if self._bom._icd_icfs != []:
+            # Add ICD info to BOM
+            doc.bom.content.xml_append(doc.xml_create_element(u'input'))
+    
+            # Add default values to unused fields so icds are visible in the BOM
+            empty_bom_str = u'N/A'
+            empty_bom_tm = u'0'
+            doc.bom.content.input.xml_append(doc.xml_create_element(u'name', content=(unicode(empty_bom_str))))
+            doc.bom.content.input.xml_append(doc.xml_create_element(u'year', content=(unicode(empty_bom_tm))))
+            doc.bom.content.input.xml_append(doc.xml_create_element(u'week', content=(unicode(empty_bom_tm))))
+            doc.bom.content.input.xml_append(doc.xml_create_element(u'version', content=(unicode(empty_bom_str))))
+    
+            doc.bom.content.input.xml_append(doc.xml_create_element(u'icds'))
+
+        # pylint: disable-msg=R0914
+        for i, icd in enumerate(self._bom._icd_icfs):
+            doc.bom.content.input.icds.xml_append(doc.xml_create_element(u'icd'))
+            doc.bom.content.input.icds.icd[i].xml_append(doc.xml_create_element(u'name', content=(unicode(icd))))
+        #If currentRelease.xml exists then send s60 <input> tag to diamonds
+        current_release_xml_path = self._bom.config['currentRelease.xml']
+        if current_release_xml_path is not None and os.path.exists(current_release_xml_path):
+            metadata = symrec.ReleaseMetadata(current_release_xml_path)
+            service = metadata.service
+            product = metadata.product
+            release = metadata.release
+            # Get name, year, week and version from baseline configuration
+            s60_input_node = doc.xml_create_element(u'input')
+            s60_version = self._bom.config['s60_version']
+            s60_release = self._bom.config['s60_release']
+            if s60_version != None:
+                s60_year = s60_version[0:4]
+                s60_week = s60_version[4:]
+            else:
+                s60_year = u'0'
+                s60_week = u'0'
+                if s60_version == None:
+                    res = re.match(r'(.*)_(\d{4})(\d{2})_(.*)', release)
+                    if res != None:
+                        s60_release = res.group(1) + '_' + res.group(4)
+                        s60_year = res.group(2)
+                        s60_week = res.group(3)
+            s60_input_node.xml_append(doc.xml_create_element(u'name', content=(unicode("s60"))))
+            s60_input_node.xml_append(doc.xml_create_element(u'year', content=(unicode(s60_year))))
+            s60_input_node.xml_append(doc.xml_create_element(u'week', content=(unicode(s60_week))))
+            s60_input_node.xml_append(doc.xml_create_element(u'version', content=(unicode(s60_release))))
+
+            s60_input_source = s60_input_node.xml_create_element(u'source')
+            s60_input_source.xml_append(doc.xml_create_element(u'type', content=(unicode("grace"))))
+            s60_input_source.xml_append(doc.xml_create_element(u'service', content=(unicode(service))))
+            s60_input_source.xml_append(doc.xml_create_element(u'product', content=(unicode(product))))
+            s60_input_source.xml_append(doc.xml_create_element(u'release', content=(unicode(release))))
+            s60_input_node.xml_append(s60_input_source)
+            doc.bom.content.xml_append(s60_input_node)
+        out = open(path, 'w')
+        doc.xml(out, indent='yes')
+        out.close()
+        
+    def parse_status_log(self, log):
+        _log_array = log.split('\r')
+        if(len(_log_array) == 3 and log.find('completed') > 0):
+            _completed_line = _log_array[2]
+            return _completed_line[:_completed_line.rfind(':')].strip()
+        else:
+            return u'None'
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/buildmanagement.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,134 @@
+#============================================================================ 
+#Name        : buildmanagement.py 
+#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:
+#===============================================================================
+
+""" BuildManagement module """
+
+import logging
+import types
+
+import ccm
+import configuration
+import nokia.nokiaccm
+
+
+# Uncomment this line to enable logging in this module, or configure logging elsewhere
+logging.basicConfig(level=logging.DEBUG)
+logger = logging.getLogger("buildmanagement")
+
+def buildmanager(synergyhost, databasepath, configfile, specname):
+    """ Buildmanager  """
+    logger.debug("Start buildmanger")
+    session = None
+    session = nokia.nokiaccm.open_session(engine=synergyhost, dbpath=databasepath)
+    print ('session = %s', session)
+    session.role = "build_mgr"
+    configBuilder = configuration.NestedConfigurationBuilder(open(configfile, 'r'))
+    configSet = configBuilder.getConfiguration()
+    logger.debug('Getting configuration: "' + specname + '" from: "' + configfile + '"')
+    configs = configSet.getConfigurations(specname)
+    for config in configs:
+        for k in sorted(config.keys()):
+            value = config[k]
+            if isinstance(value, types.UnicodeType):
+                value = value.encode('ascii', 'ignore')
+            #logger.debug( k + ': ' + str(value))
+        logger.debug(config['function.name'])
+        result = eval(config['function.name'])(session, config)
+        logger.debug("got result:" + result) 
+    logger.debug('Finished parsing configs')
+    session.close()
+    del(session)
+
+def add_approved_tasks(session, config):
+    """ add approved tasks to be updated to project """
+    logger.debug("Start adding approved tasks")
+    #this assumes there is only one folder in the reconfigure properties:
+    if config['project.release.folder'] == "automatic":
+        toplevelproject = ccm.Project(session, config['project.four.part.name'])
+        releasefolders = toplevelproject.folders
+        releasefolder = releasefolders[0]
+        logger.debug("Release folder found from rp is: " + releasefolder.name)
+    else:
+        releasefolder = ccm.Folder(session, config['project.release.folder'])
+
+    folderlist = force_list(config['project.approval.folders'])
+
+    for approvalfolderfpn in folderlist:
+        approvalfolder = ccm.Folder(session, approvalfolderfpn)
+        logger.debug("Copying tasks from folder " + approvalfolder.name + ", to folder " + releasefolder.name)
+        approvalfolder.copy(releasefolder)
+        
+    logger.debug("Finished adding approved tasks")
+    
+def reconcile(session, config):
+    """ reconcile """
+    logger.debug("Start reconciling: " + config['project.four.part.name'])
+    toplevelproject = ccm.Project(session, config['project.four.part.name'])
+    toplevelproject.reconcile(updatewa=True, recurse=True, consideruncontrolled=True, missingwafile=True, report=True)
+    logger.debug("Finished reconciling: " + config['project.four.part.name'])
+    
+def set_latest_baseline(session, config):
+    """ Setting latest baseline """
+    logger.debug("Start updating the baseline of: " + config['project.name'])
+    toplevelproject = ccm.Project(session, config['project.four.part.name'])
+    latestbaseline = toplevelproject.get_latest_baseline(config['project.version.filter'], config['project.baseline.state'])
+    logger.debug("Using: " + latestbaseline)
+    toplevelproject.set_baseline(latestbaseline, recurse=True)
+    logger.debug("Finished updating the baseline of: " + config['project.name'])
+
+def reconfigure(session, config):
+    """ recongifure """
+    logger.debug("Start reconfiguring: " + config['project.four.part.name'])
+    toplevelproject = ccm.Project(session, config['project.four.part.name'])
+    replacesubprojects = config.get_boolean('replace.subprojects', True)
+    recursesubprojects = config.get_boolean('recurse.subprojects', True)
+    updatekeepgoing = not config.get_boolean('update.failonerror', True)
+    toplevelproject.update(recursesubprojects, replacesubprojects, updatekeepgoing)
+    logger.debug("Finished reconfiguring: " + config['project.four.part.name'])
+    
+def update_release_tags(session, config):
+    """ update release tags """
+    logger.debug("Start updating release tags in folder: " + config['project.release.folder'])
+    if config['project.release.folder'] == "automatic":
+        toplevelproject = ccm.Project(session, config['project.four.part.name'])
+        releasefolders = toplevelproject.folders
+        releasefolder = releasefolders[0]
+        logger.debug("Release folder found from rp is: " + releasefolder.name)
+    else:
+        releasefolder = ccm.Folder(session, config['project.release.folder'])
+    for task in releasefolder.tasks:
+        if str(task.get_release_tag()).strip() == config['task.release.tag.from']:
+            logger.debug("Changing release tag of %s to %s" % (task.name, config['task.release.tag.to']))
+            task.set_release_tag(config['task.release.tag.to'])
+    logger.debug("Finished updating release tags in folder: " + config['project.release.folder'])
+    
+def create_baseline(session, config):
+    """ Create baseline """
+    logger.debug("Start creating the baseline(s): " + config['project.name'] + "-" + config['baseline.tag'])
+    project = ccm.Project(session, config['project.four.part.name'])
+    logger.debug("Project: " + project.name)
+    project.create_baseline(config['project.name'] + "-" + config['baseline.tag'], config['project.release.tag'], config['baseline.tag'], config['baseline.purpose'], config['baseline.state'])
+    logger.debug("Finished creating the baseline: " + config['project.name'] + "-" + config['baseline.tag'])
+
+def force_list(myobject):
+    """ force list of objects """
+    if isinstance(myobject, list):
+        return myobject
+    else:
+        return [myobject]
\ No newline at end of file
Binary file buildframework/helium/external/helium-antlib/python/pythoncore/lib/buildtools$py.class has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/buildtools.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,507 @@
+#============================================================================ 
+#Name        : buildtools.py 
+#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:
+#===============================================================================
+
+"""Enables creation of build command list in several formats.
+
+This module implements class that represent shell commands.
+It supports build stage and command parallelization (depends of the output format).
+CommandList can be generated in different format: ant, make, ebs, batch.
+
+Example:
+from mc.buildtools import CommandList, Convert
+list = CommandList()
+list.addCommand("\\epoc32\\rombuild", "make_fpsx.bat..yy...", "build_xx_rom")
+list.addCommand("\\epoc32\\rombuild", "make_fpsx.bat..xx...", "build_yy_rom")
+list.addCommand("\\epoc32\\rombuild", "copy \\foo \\bar", "simple copy", False)
+
+convert(list, "outputfile.mk", "make")
+convert(list, "outputfile.ant.xml", "ant")
+convert(list, "outputfile.ebs.xml", "ebs")
+convert(list, "outputfile.bat", "bat")
+
+"""
+import os
+import types
+import xml.dom.minidom
+import sys
+
+class PreBuilder(object):
+    """ This class implements an abstract prebuilder.
+        A prebuilder takes a configurationset as input and generates a build file.
+    """
+    def __init__(self, configSet):
+        self.configSet = configSet
+        # Select the first configuration as a default, for referencing common properties
+        self.config = None
+        configs = configSet.getConfigurations()
+        if len(configs) > 0:
+            self.config = configs[0]
+
+    def writeBuildFile(self, taskList, buildFilePath, output='ant'):
+        """ Converting a task list into output format and writing it into buildFilePath file. """
+        writer = None
+        buildFileDir = os.path.dirname(buildFilePath)
+        if len(buildFileDir) > 0 and not os.path.exists(buildFileDir):
+            os.makedirs(buildFileDir)
+        writer = get_writer(output, open(buildFilePath, 'w'))
+        writer.write(taskList)
+
+
+class Task(object):
+    """ Abstract Task object. """
+    pass
+
+        
+class Command(Task):
+    """
+        This class implements a command definition.
+        It handles command id and stage.
+        All command from one stage should be finished before starting the next stage.
+    """
+    def __init__(self, executable, path, args=None, name=''):
+        Task.__init__(self)
+        if args == None:
+            args = []
+        self._id  = 1
+        self._stage = 1
+        self._name = name
+        self._executable = executable
+        self._path = path
+        self._args = args
+
+    def setJobId(self, idn):
+        """ Set the command id. """
+        self._id = idn
+
+    def setStage(self, stage):
+        """ Set the command stage. """
+        self._stage = stage
+
+    def jobId(self):
+        """ Get the command id. """
+        return self._id
+
+    def stage(self):
+        """ Get the command stage. """
+        return self._stage
+
+    def name(self):
+        """ Get the command name. """
+        return self._name
+
+    def executable(self):
+        """ Get the command executable. """
+        return self._executable
+
+    def path(self):
+        """ Get the command path. """
+        return self._path
+
+    def cmd(self):
+        """ Get the command line. """
+        return ' '.join(self._args)
+
+    def addArg(self, arg):
+        """ Add a command line argument. """
+        self._args.append(arg)
+
+    def __repr__(self):
+        argsString = ' '.join(self._args)
+        return "%s: %s: %s" % (self.name(), self.path(), argsString)
+
+
+class AntTask(Task):
+    """ Interface that defines supports for an Ant task rendering. """
+    
+    def toAntTask(self, doc):
+        """ Override this method to convert a specific command into Ant command.
+            e.g: Delete Class will use delete task from Ant, else convert into perl ... remove filename.__getCommandByStage
+        """ 
+        pass
+
+
+class Delete(AntTask, Command):
+    """ Implements file/directory deleletion mechanism. """
+    
+    def __init__(self, filename=None, dirname=None):
+        Command.__init__(self, "perl", "")
+        AntTask.__init__(self)
+        self._filename = filename
+        self._dir = dirname
+        self._args.append("-MExtUtils::Command")
+        self._args.append("-e")
+        if self._filename != None:
+            self._args.append("rm_f")
+            self._args.append('"' + self._filename + '"')
+        elif self._dir != None:
+            self._args.append("rm_rf")
+            self._args.append('"' + self._dir + '"')
+
+    def toAntTask(self, doc):
+        """ Render the delete as an Ant task. """
+        node = doc.createElementNS("", "delete")
+        node.setAttributeNS("", "verbose", "true")
+        node.setAttributeNS("", "failonerror", "false")
+        if self._filename != None:
+            node.setAttributeNS("", "file", self._filename)
+        elif self._dir != None:
+            node.setAttributeNS("", "dir", self._dir)
+        return node
+
+
+class Copy(AntTask, Command):
+    """ Implement copy command. """
+    def __init__(self, srcFile, todir):
+        Command.__init__(self, "perl", os.path.dirname(srcFile))
+        AntTask.__init__(self)
+        self.srcFile = srcFile
+        self.todir = todir
+        self._args.append("-MExtUtils::Command")
+        self._args.append("-e")
+        self._args.append("cp")
+        self._args.append('"' + self.srcFile + '"')
+        self._args.append('"' + os.path.join(self.todir, os.path.basename(self.srcFile)) + '"')
+        
+    def toAntTask(self, doc):
+        """ Render the copy as an Ant task. """
+        node = doc.createElementNS("", "copy")
+        node.setAttributeNS("", "verbose", "true")
+        node.setAttributeNS("", "failonerror", "false")
+        node.setAttributeNS("", "file", self.srcFile)
+        node.setAttributeNS("", "todir", self.todir)
+        node.setAttributeNS("", "overwrite", "true")
+        return node
+         
+
+class CommandList(object):
+    """
+        This class allows to safely handle Command object into lists
+    """
+    def __init__(self):
+        self.__cmds = []
+
+    def allCommands(self):
+        """ Returns all command list. """
+        return self.__cmds
+
+    def addCommand(self, cmd, newstage=False):
+        """ Add a Command to the list. """
+        stage = 1
+        idn = 1
+        if len(self.__cmds) > 0:
+            lastcmd = self.__cmds[-1]
+            idn = lastcmd.jobId() + 1
+            stage = lastcmd.stage()
+            if newstage:
+                stage = stage + 1
+        cmd.setStage(stage)
+        cmd.setJobId(idn)
+        self.__cmds.append(cmd)
+
+
+class AbstractOutputWriter:
+    """Base class which contains define an AbstractOutputWriter.
+
+    The subclass must implement a convert method which compute a command list into
+    some output file.
+    """
+    def __init__(self, fileOut):
+        if isinstance(fileOut, basestring):
+            self._fileOut = open(fileOut, 'w')
+        else:
+            self._fileOut = fileOut
+
+    def write(self, cmdList):
+        """ Method to override to implement format specific output. """
+    def writeTopLevel(self, config_list, spec_name, output_path, xml_file):
+        """ Method to override to implement top level commands. """
+
+    def __call__(self, cmdList):
+        self.write(cmdList)
+
+    def close(self):
+        """ Close the output stream. """
+        self._fileOut.close()
+
+    def __del__(self):
+        self.close()
+
+
+class StringWriter(AbstractOutputWriter):
+    """ Implements a Writer which is able to directly write to the output stream. """
+    
+    def __init__(self, fileOut):
+        AbstractOutputWriter.__init__(self, fileOut)
+
+    def write(self, content):
+        """ Write content to the output. """
+        self._fileOut.write(content)
+
+
+class EBSWriter(AbstractOutputWriter):
+    """ Implements EBS XML output format. """
+    
+    def __init__(self, fileOut):
+        AbstractOutputWriter.__init__(self, fileOut)
+
+    def write(self, cmdList):
+        """ Write the command list to EBS format. """
+        doc = xml.dom.minidom.Document()
+        productnode = doc.createElementNS("", "Product")
+        cmdsnode = doc.createElementNS("", "Commands")
+        productnode.appendChild(cmdsnode)
+        doc.appendChild(productnode)
+
+        for cmd in cmdList.allCommands():
+            cmdsnode.appendChild(self.__commandToXml(doc, cmd))
+
+        self._fileOut.write(doc.toprettyxml())
+
+    @staticmethod
+    def __commandToXml(doc, cmd):
+        """ Convert a Command into an EBS command. """
+        # <Execute ID="1" Stage="1" Component="MAS" Cwd="%EPOCROOT%" CommandLine="getrel MAS 92_013_Symbian_OS"/>
+        cmdsnode = doc.createElementNS("", "Execute")
+        cmdsnode.setAttributeNS("", "ID", "%d" % cmd.jobId())
+        cmdsnode.setAttributeNS("", "Stage", "%d" % cmd.stage())
+        cmdsnode.setAttributeNS("", "Component", cmd.name())
+        cmdsnode.setAttributeNS("", "Cwd", cmd.path())
+        cmdsnode.setAttributeNS("", "CommandLine", cmd.executable()+" "+cmd.cmd())
+        return cmdsnode
+
+
+class AntWriter(AbstractOutputWriter):
+    """ Implements Ant XML output format. """
+    
+    def __init__(self, fileOut):
+        AbstractOutputWriter.__init__(self, fileOut)
+
+    def writeTopLevel(self, config_list, spec_name, output_path, xml_file):
+        doc = xml.dom.minidom.Document()
+        projectnode = doc.createElementNS("", "project")
+        projectnode.setAttributeNS("", "name", '')
+        projectnode.setAttributeNS("", "default", "all")
+        projectnode.setAttributeNS("", "xmlns:hlm", "http://www.nokia.com/helium")
+        doc.appendChild(projectnode)
+        target = doc.createElementNS("", "target")
+        target.setAttributeNS("", "name", "all")
+        projectnode.appendChild(target)
+
+        parallel = doc.createElementNS("", "parallel")
+        parallel.setAttributeNS("", "threadCount", "${number.of.threads}")
+        target.appendChild(parallel)
+        index = 0
+        for config in config_list:
+            sequential = doc.createElementNS("", "sequential")
+            outputfile = os.path.normpath(os.path.join(output_path, config + ".xml"))
+            exec_element = doc.createElementNS("", "hlm:exec")
+            exec_element.setAttributeNS("", "executable", "python")
+            exec_element.setAttributeNS("", "failonerror", "true")
+
+            args = doc.createElementNS("", "arg")
+            args.setAttributeNS("", "line", "-m CreateZipInput")
+            exec_element.appendChild(args)
+
+            args = doc.createElementNS("", "arg")
+            args.setAttributeNS("", "line", "--output=%s" % outputfile)
+            exec_element.appendChild(args)
+            args = doc.createElementNS("", "arg")
+            args.setAttributeNS("", "line", "--config=%s" % spec_name)
+            exec_element.appendChild(args)
+            args = doc.createElementNS("", "arg")
+            args.setAttributeNS("", "line", "--filename=%s" % xml_file)
+            exec_element.appendChild(args)
+            args = doc.createElementNS("", "arg")
+            args.setAttributeNS("", "line", "--id=%d" % index)
+            exec_element.appendChild(args)
+            args = doc.createElementNS("", "arg")
+            args.setAttributeNS("", "line", "--writertype=ant")
+            exec_element.appendChild(args)
+            sequential.appendChild(exec_element)
+            index += 1
+            ant_exec = doc.createElementNS("", "ant")
+            ant_exec.setAttributeNS("", "antfile", outputfile)
+            sequential.appendChild(ant_exec)
+            parallel.appendChild(sequential)
+        
+        self._fileOut.write(doc.toprettyxml())
+        self._fileOut.close()
+        
+    def write(self, cmdList):
+        """ Writes the command list to Ant format. """
+        doc = xml.dom.minidom.Document()
+        projectnode = doc.createElementNS("", "project")
+        projectnode.setAttributeNS("", "name", '')
+        projectnode.setAttributeNS("", "default", "all")
+        projectnode.setAttributeNS("", "xmlns:hlm", "http://www.nokia.com/helium")
+        doc.appendChild(projectnode)
+
+        stages = self.__getCommandByStage(cmdList)
+
+        for stage in stages.keys():
+            projectnode.appendChild(self.__stageToTarget(doc, stage, stages[stage]))
+
+        target = doc.createElementNS("", "target")
+        target.setAttributeNS("", "name", "all")
+        def __toStage(stage):
+            """ Convert the stage id into and Ant target name. """
+            return "stage%s" % stage
+        target.setAttributeNS("", "depends", ','.join([__toStage(stage) for stage in stages.keys()]))
+        projectnode.appendChild(target)
+
+        self._fileOut.write(doc.toprettyxml())
+
+    def __stageToTarget(self, doc, stage, cmds):
+        """ Convert a stage into an Ant target. """
+        target = doc.createElementNS("", "target")
+        target.setAttributeNS("", "name", "stage%s" % stage)
+        parallel = doc.createElementNS("", "parallel")
+        parallel.setAttributeNS("", "threadCount", "${number.of.threads}")
+        target.appendChild(parallel)
+
+        for cmd in cmds:
+            parallel.appendChild(self.__commandToAnt(doc, cmd))
+        return target
+
+    @staticmethod
+    def __commandToAnt(doc, cmd):
+        """ Convert a command into an Ant task. """
+        # does the API support Ant task conversion.
+        # else treat it as a cmd
+        if issubclass(type(cmd), AntTask):
+            return cmd.toAntTask(doc)
+        else:
+            execnode = doc.createElementNS("", "hlm:exec")
+            execnode.setAttributeNS("", "executable", cmd.executable())
+            execnode.setAttributeNS("", "dir", cmd.path())
+            arg = doc.createElementNS("", "arg")
+            arg.setAttributeNS("", "line", cmd.cmd())
+            execnode.appendChild(arg)
+            return execnode
+
+    @staticmethod
+    def __getCommandByStage(cmdList):
+        """ Reorder a CommandList into a list of stages. """
+        stages = {}
+        for cmd in cmdList.allCommands():
+            if not stages.has_key(cmd.stage()):
+                stages[cmd.stage()]=[]
+            stages[cmd.stage()].append(cmd)
+
+        return stages
+
+
+class MakeWriter(AbstractOutputWriter):
+    """ Implements Makefile writer. """
+    
+    def __init__(self, fileOut):
+        AbstractOutputWriter.__init__(self, fileOut)
+
+    def writeTopLevel(self, config_list, spec_name, output_path, xml_file):
+        content = "\n\nall: zip_inputs zip_files\n\n"
+        index = 0
+        input_list = "zip_inputs: "
+        zip_list = "\n\nzip_files: "
+        full_content = ""
+        script_path =  os.path.normpath(os.path.join(os.environ['HELIUM_HOME'], 'tools/compile/ec'))
+        for config in config_list:
+            outputfile = os.path.normpath(os.path.join(output_path, config + ".mk"))
+            input_list += " \\\n\t zip_input%d" % index
+            zip_list += " \\\n\t zip_files%d" % index
+            content += "\n\nzip_input%d :\n" % index
+            content += "\t@echo === identifying files for %s\n" % config
+            
+            content += "\tpython -m CreateZipInput --config=%s --filename=%s --id=%d --output=%s --writertype=%s\n\n" % (spec_name, xml_file, index, outputfile,'make')
+            content += "\n\nzip_files%d :zip_input%d\n" % (index, index)
+            content += "\t@echo === identifying files for %s\n" % config
+            content += "\t$(MAKE) -f %s" % (outputfile)
+            index += 1
+        
+        full_content += input_list
+        full_content += zip_list
+        full_content += content
+        self._fileOut.write(full_content)
+    def write(self, cmdList):
+        """ Converts the list of command into Makefile. """
+        stages = {}
+        for cmd in cmdList.allCommands():
+            if not stages.has_key(cmd.stage()):
+                stages[cmd.stage()] = []
+            stages[cmd.stage()].append(cmd)
+        
+        # Write the all rule
+        def __toStage(stage):
+            """ Convert stage Id into a target name. """
+            return "stage%s" % stage
+                
+        #self._fileOut.write("all : %s\n" % ' '.join(map(__toStage, max(stages.keys())))
+        if len(stages.keys()) > 0:
+            self._fileOut.write("all : stage%s ;\n" % max(stages.keys()))
+        else:
+            self._fileOut.write("all: ;\n")
+            
+        for stage in stages.keys():
+            # Write each stage rule
+            def __toId(cmd):
+                """ Convert command Id into a target name. """
+                self.__commandToTarget(cmd)
+                return "id%s" % cmd.jobId()
+            self._fileOut.write("stage%s : %s\n" % (stage, ' '.join([__toId(task) for task in stages[stage]])))
+
+    def __commandToTarget(self, cmd):
+        """ Converting a Command into a Makefile target. """
+        deps = ""
+        if cmd.stage() > 1:
+            deps = " stage%s" % (cmd.stage() - 1)
+        self._fileOut.write("id%s:%s\n" % (cmd.jobId(), deps))
+        self._fileOut.write("\t@echo Target %s\n" % cmd.name())
+        winargs = ""
+        if os.sep == '\\':
+            winargs = "/d"
+        self._fileOut.write("\tcd %s %s && %s " % (winargs, cmd.path(), cmd.executable()))
+        self._fileOut.write("%s\n" % cmd.cmd())
+        self._fileOut.write("\n")
+
+
+__writerConstructors = { 'ant': AntWriter,
+                         'make': MakeWriter,
+                         'ebs': EBSWriter }
+
+
+def convert(cmdList, filename, outputtype="ant"):
+    """ Helper to directly convert a command list into a specific runnable command format.
+        e.g:
+        cmdList = CommandList()
+        cmdList.addCommand(...)
+        convert(cmdList, "echo Hello world", "ant")
+    """
+    writer = __writerConstructors[outputtype](filename)
+    writer(cmdList)
+
+
+def get_writer(buildTool, fileOut):
+    """ Get a Writer for a specific format. """
+    return __writerConstructors[buildTool](fileOut)
+
+
+def supported_writers():
+    """ Return the list of supported Writer. """
+    return __writerConstructors.keys()
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/ccm/__init__.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,1920 @@
+#============================================================================ 
+#Name        : __init__.py 
+#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:
+#===============================================================================
+
+""" CM/Synergy Python toolkit.
+
+"""
+
+import logging
+import netrc
+import os
+import re
+import subprocess
+import sys
+import threading
+
+import fileutils
+import nokia.gscm
+import tempfile
+import socket
+
+# Uncomment this line to enable logging in this module, or configure logging elsewhere
+_logger = logging.getLogger("ccm")
+#logging.basicConfig(level=logging.DEBUG)
+
+
+VALID_OBJECT_STATES = ('working', 'checkpoint', 'public', 'prep', 'integrate', 'sqa', 'test','released')
+STATIC_OBJECT_STATES = ('integrate', 'sqa', 'test','released')
+CCM_SESSION_LOCK = os.path.join(tempfile.gettempdir(), "ccm_session.lock")
+
+def _execute(command, timeout=None):
+    """ Runs a command and returns the result data. """
+    targ = ""
+    if timeout is not None:
+        targ = "--timeout=%s" % timeout
+    process = subprocess.Popen("python -m timeout_launcher %s -- %s" % (targ, command), stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True)
+    stdout = process.communicate()[0]
+    process.wait()
+    _logger.debug(stdout)
+    _logger.debug("Return code: %s" % process.returncode)
+    return (stdout, process.returncode)
+   
+   
+class CCMException(Exception):
+    """ Base exception that should be raised by methods of this framework. """
+    def __init__(self, reason, result = None):
+        Exception.__init__(self, reason)
+        self.result = result
+
+
+class Result(object):
+    """Class that abstracts ccm call result handling.
+    
+    Subclass it to implement a new generic output parser.
+    """
+    def __init__(self, session):
+        self._session = session
+        self.status = None
+        self._output = None
+        self._output_str = None
+    
+    def _setoutput(self, output):
+        self._output = output
+        
+    def __setoutput(self, output):
+        """ Internal function to allow overloading, you must override _setoutput.
+        """
+        # the output is automatically converted to ascii before any treatment 
+        if isinstance(output, unicode):
+            self._output_str = output.encode('ascii', 'replace')
+        else:
+            self._output_str = output.decode('ascii', 'ignore')
+        _logger.debug("output ---->")
+        for line in self._output_str.splitlines():
+            _logger.debug(line)
+        _logger.debug("<----")
+        self._setoutput(self._output_str)
+                
+    def _getoutput(self):
+        """ Returns the content of _output. """
+        return self._output
+        
+    def __str__(self):
+        """ Synergy output log. """
+        return self._output_str.encode('ascii', 'replace')
+        
+    output = property(_getoutput, __setoutput)
+
+class ResultWithError(Result):
+	
+    def __init__(self, session):
+        Result.__init__(self, session)
+        self._error = None
+        self._error_str = None    
+
+    def _seterror(self, error):
+        self._error = error
+        
+    def __seterror(self, error):
+        """ Internal function to allow overloading, you must override _seterror.
+        """
+        # the error output is automatically converted to ascii before any treatment 
+        if isinstance(error, unicode):
+            self._error_str = error.encode('ascii', 'replace')
+        else:
+            self._error_str = error.decode('ascii', 'ignore')
+        _logger.debug("error ---->")
+        for line in self._error_str.splitlines():
+            _logger.debug(line)
+        _logger.debug("<----")
+        self._seterror(self._error_str)
+                
+    def _geterror(self):
+        """ Returns the content of _output. """
+        _logger.debug("_geterror")
+        return self._error
+
+    error = property(_geterror, __seterror)
+    
+class ProjectCheckoutResult(Result):
+    """ Project checkout output parser. 
+        Sets project to the created project or None if failed.
+    """
+    def __init__(self, session, project):
+        Result.__init__(self, session)
+        self.__project = project
+        self.__result_project = None
+    
+    def _setoutput(self, output):
+        """ Parsing the output of the checkout command. """
+        self._output = output
+        for line in output.splitlines():
+            mresult = re.match(r"Saved work area options for project: '(.+)'", line, re.I)
+            #(?P<name>.+)-(?P<version>.+?)(:(?P<type>\S+):(?P<instance>\S+))?
+            if mresult != None:
+                #self.__project.name + "-" + mo.groupdict()['version'] + ":" + self.__project.type + ":" + self.__project.instance
+                self.__result_project = self._session.create(mresult.group(1))
+                _logger.debug("ProjectCheckoutResult: project: '%s'" % self.__result_project)
+                return
+
+    def __get_result_project(self):
+        """ return the checked out project. """
+        return self.__result_project
+    
+    project = property(__get_result_project)
+
+
+class ProjectPurposeResult(Result):
+    """ Parses purpose query output. """
+    def __init__(self, session):
+        Result.__init__(self, session)
+
+    def _setoutput(self, output):
+        self._output = {}
+        for line in output.splitlines():
+            mresult = re.match(r"(?P<purpose>.+?)\s+(?P<member_status>\w+)\s+(?P<status>\w+)$", line)
+            if mresult != None:
+                data = mresult.groupdict()                
+                if re.match(r'^\s+Purpose\s+Member$', data['purpose'], re.I) == None:
+                    self._output[data['purpose'].strip()] = {'member_status' : data['member_status'].strip(),
+                                                  'status' : data['status'].strip()
+                                                  }
+
+class ConflictsResult(Result):
+    """ Parses purpose query output. """
+    def __init__(self, session):
+        Result.__init__(self, session)
+
+    def _setoutput(self, output):
+        self._output = {}
+        project = None
+                
+        for line in output.splitlines():            
+            mresult = re.match(r"Project:\s*(.+)\s*$", line)
+            if mresult != None:
+                project = self._session.create(mresult.group(1))
+                self._output[project] = []
+            mresult = re.match(r"^(.*)\s+(\w+#\d+)\s+(.+)$", line)
+            if mresult != None and project != None:
+                self._output[project].append({'object': self._session.create(mresult.group(1)),
+                                              'task': self._session.create("Task %s" % mresult.group(2)),
+                                              'comment': mresult.group(3)})
+            mresult = re.match(r"^(\w+#\d+)\s+(.+)$", line)
+            if mresult != None and project != None:
+                self._output[project].append({'task': self._session.create("Task %s" % mresult.group(1)),
+                                              'comment': mresult.group(2)})
+
+
+class FinduseResult(Result):
+    """ Parses finduse query output. """
+    def __init__(self, ccm_object):
+        Result.__init__(self, ccm_object.session)
+        self.__object = ccm_object
+
+    def _setoutput(self, output):
+        self._output = []
+        for line in output.splitlines():
+            _logger.debug("FinduseResult: ---->%s<----" % line)
+            _logger.debug("FinduseResult: ---->%s-%s<----" % (self.__object.name, self.__object.version))
+            
+            # MCNaviscroll\NaviAnim-username7@MCNaviscroll-username6            
+            mresult = re.match(r"^\s*(?P<path>.+)[\\/]%s-%s@(?P<project>.+)" % (self.__object.name, self.__object.version), line, re.I)
+            if mresult != None:
+                data = mresult.groupdict()
+                _logger.debug("FinduseResult: %s" % data)               
+                project = self._session.create(data['project'])
+                self._output.append({'path' : data['path'], 'project' : project})
+        
+        
+class UpdateTemplateInformation(Result):
+    """ Parse update template information output. """
+    def __init__(self, session):
+        Result.__init__(self, session)
+    
+    def _setoutput(self, output):
+        """
+Baseline Selection Mode: Latest Baseline Projects
+Prep Allowed:            No
+Versions Matching:       *abs.50*
+Release Purposes:
+Use by Default:          Yes
+Modifiable in Database:  tr1s60
+In Use For Release:      Yes
+Folder Templates and Folders:
+- Template assigned or completed tasks for %owner for release %release
+- Template all completed tasks for release %release
+- Folder   tr1s60#4844: All completed Xuikon/Xuikon_rel_X tasks
+- Folder   tr1s60#4930: All tasks for release AppBaseDo_50        
+        """
+        self._output = {}
+        for line in output.splitlines():
+            rmo = re.match(r"^\s*(.+):\s*(.*)\s*", line)
+            if rmo != None:
+                if rmo.group(1) == "Baseline Selection Mode":
+                    self._output['baseline_selection_mode'] = rmo.group(2) 
+                elif rmo.group(1) == "Prep Allowed":
+                    self._output['prep_allowed'] = (rmo.group(2) != "No") 
+                elif rmo.group(1) == "Versions Matching":
+                    self._output['version_matching'] = rmo.group(2) 
+                elif rmo.group(1) == "Release Purposes":
+                    self._output['release_purpose'] = rmo.group(2) 
+                elif rmo.group(1) == "Use by Default":
+                    self._output['default'] = (rmo.group(2) != "No") 
+                elif rmo.group(1) == "Modifiable in Database":
+                    self._output['modifiable_in_database'] = rmo.group(2).strip()
+                elif rmo.group(1) == "In Use For Release":
+                    self._output['in_use_for_release'] = (rmo.group(2) != "No") 
+                
+
+class UpdatePropertiesRefreshResult(Result):
+    """ Parse update template refresh output. """
+    def __init__(self, session):
+        Result.__init__(self, session)
+
+    def _setoutput(self, output):
+        self._output = {'added': [], 'removed': []}
+        match_added = re.compile(r"^Added the following tasks")
+        match_removed = re.compile(r"^Removed the following tasks")
+        match_task_new = re.compile(r"^\s+(Task \S+#\d+)")        
+        section = None
+                
+        for line in output.splitlines():
+            res = match_added.match(line)
+            if res != None:
+                section = 'added'
+                continue
+            res = match_removed.match(line)
+            if res != None:
+                section = 'removed'
+                continue
+            if section is not None:
+                res = match_task_new.match(line)
+                if res != None:
+                    self._output[section].append(self._session.create(res.group(1)))
+                    continue
+
+
+class UpdateResultSimple(Result):
+    """ Parse update output. """
+    def __init__(self, session):
+        Result.__init__(self, session)
+        self._success = True
+
+    def _setoutput(self, output):
+        self._output = output
+        match_failed = re.compile(r"(Update failed)")        
+        for line in output.splitlines():
+            res = match_failed.match(line)
+            if res != None:                
+                self._success = False
+    
+    @property
+    def successful(self):
+        return self._success
+         
+class UpdateResult(UpdateResultSimple):
+    """ Parse update output. """
+    def __init__(self, session):
+        UpdateResultSimple.__init__(self, session)
+
+    def _setoutput(self, output):
+        self._output = {"tasks":[], "modifications": [], "errors": [], "warnings": []}
+        match_object_update = re.compile(r"^\s+'(.*)'\s+replaces\s+'(.*)'\s+under\s+'(.*)'\.")
+        match_object_new = re.compile(r"^\s+(?:Subproject\s+)?'(.*)'\s+is now bound under\s+'(.*)'\.")
+        match_task_new = re.compile(r"^\s+(Task \S+#\d+)")
+        match_no_candidate = re.compile(r"^\s+(.+) in project (.+) had no candidates")
+        match_update_failure = re.compile(r"^\s+Failed to use selected object\s+(.+)\s+under directory\s+(.+)\s+in project\s+(.+)\s+:\s+(.+)")
+        match_warning = re.compile(r"^Warning:(.*)")
+        match_failed = re.compile(r"(Update failed)")
+        
+        # TODO: cleanup the parsing to do that in a more efficient way.
+        for line in output.splitlines():
+            _logger.info(line)
+            res = match_object_update.match(line)
+            if res != None:
+                self._output['modifications'].append({ "new": self._session.create(res.group(1)),
+                                      "old": self._session.create(res.group(2)),
+                                      "project": self._session.create(res.group(3))
+                                    })
+                continue
+            res = match_object_new.match(line)
+            if res != None:                
+                self._output['modifications'].append({ "new": self._session.create(res.group(1)),
+                                      "old": None,
+                                      "project": self._session.create(res.group(2))
+                                    })
+                continue
+            res = match_task_new.match(line)
+            if res != None:                
+                self._output['tasks'].append(self._session.create(res.group(1)))
+                continue
+            res = match_no_candidate.match(line)
+            if res != None:                
+                self._output['errors'].append({'family': res.group(1),
+                                               'project': self._session.create(res.group(2)),
+                                               'comment': "had no candidates",
+                                               'line': line,
+                                               })
+                continue
+            res = match_update_failure.match(line)
+            if res != None:                
+                self._output['errors'].append({'family': res.group(1),
+                                               'dir': self._session.create(res.group(2)),
+                                               'project': self._session.create(res.group(3)),
+                                               'comment': res.group(4),
+                                               'line': line,
+                                               })
+                continue
+            res = match_warning.match(line)            
+            if res != None:                
+                self._output['warnings'].append({'family': None,
+                                               'project': None,
+                                               'comment': res.group(1),
+                                               'line': line,
+                                               })
+                continue
+            res = match_failed.match(line)
+            if res != None:
+                self._success = False
+                self._output['errors'].append({'Serious': res.group(1),
+                                               })
+                continue
+                
+            
+
+class WorkAreaInfoResult(Result):
+    """ Parse work area info output. """
+    def __init__(self, session):
+        Result.__init__(self, session)
+
+    def _setoutput(self, output):
+        """ Returns a dict with the following fields:
+               * project: a ccm.Project instance
+               * maintain: a boolean
+               * copies: a boolean
+               * relative: a boolean
+               * time: a boolean
+               * translate: a boolean
+               * modify: a boolean
+               * path: a string representing the project wa path
+        """
+        self._output = None
+        for line in output.splitlines():
+            mresult = re.match(r"(?P<project>.*)\s+(?P<maintain>TRUE|FALSE)\s+(?P<copies>TRUE|FALSE)\s+(?P<relative>TRUE|FALSE)\s+(?P<time>TRUE|FALSE)\s+(?P<translate>TRUE|FALSE)\s+(?P<modify>TRUE|FALSE)\s+'(?P<path>.*)'", line)            
+            if mresult != None:
+                data = mresult.groupdict()
+                self._output = {'project': self._session.create(data['project']),
+                                'maintain' : data['maintain'] == "TRUE",
+                                'copies' : data['copies'] == "TRUE",
+                                'relative' : data['relative'] == "TRUE",
+                                'time' : data['time'] == "TRUE",
+                                'translate' : data['translate'] == "TRUE",
+                                'modify' : data['modify'] == "TRUE",
+                                'path' : data['path']
+                                }
+                return
+
+
+class CreateNewTaskResult(Result):
+    
+    def __init__(self, session):
+        Result.__init__(self, session)
+
+    def _setoutput(self, output):
+        self._output = None
+        for line in output.splitlines():
+            mresult = re.match(r"Task\s+(?P<task>\S+\#\d+)\s+created\.", line)
+            if mresult != None:
+                self._output = self._session.create("Task " + mresult.groupdict()['task'])
+                return
+    
+    
+class AttributeNameListResult(Result):
+    """ Class that abstract ccm call result handling.
+        Subclass it to implement a new generic output parser.
+    """
+    def __init__(self, session):
+        Result.__init__(self, session)
+    
+    def _setoutput(self, obj):
+        def _create(arg):
+            mresult = re.match(r"^\s*(?P<name>\w+)", arg.strip())
+            if mresult != None:
+                return mresult.groupdict()['name']
+            return None
+        self._output = [_create(line) for line in obj.strip().splitlines()]
+
+
+class ObjectListResult(Result):
+    """ Parses an object list Synergy output. """
+    def __init__(self, session):
+        Result.__init__(self, session)
+    
+    def _setoutput(self, obj):        
+        self._output = []
+        if re.match(r"^None|^No tasks|^Warning", obj, re.M) != None:
+            return
+        def _create(arg):
+            arg = arg.strip()
+            if arg != "":
+                return self._session.create(arg)
+            return None
+        result = [_create(line) for line in obj.strip().splitlines()]
+        for result_line in result:
+            if result_line != None:
+                self._output.append(result_line)
+
+class DataMapperListResult(Result):
+    """ Parses an object list Synergy output. """        
+    
+    dataconv = {'ccmobject': lambda x, y: x.create(y),
+                'string': lambda x, y: y,
+                'int': lambda x, y: int(y),
+                'boolean': lambda x, y: (y.lower() == "true")}    
+    
+    def __init__(self, session, separator, keywords, datamodel):
+        self._separator = separator
+        self._keywords = keywords
+        self._datamodel = datamodel
+        Result.__init__(self, session)
+    
+    def format(self):
+        formatted_keywords = ["%s%s%s%%%s" % (self._separator, x, self._separator, x) for x in self._keywords]
+        return "".join(formatted_keywords) + self._separator
+   
+    def regex(self):
+        regex_keywords = [r'%s%s%s(.*?)' % (self._separator, x, self._separator) for x in self._keywords]
+        regex = r''.join(regex_keywords)
+        regex = r"%s%s\s*\n" % (regex, self._separator)
+        return re.compile(regex, re.MULTILINE | re.I | re.DOTALL | re.VERBOSE | re.U)
+    
+    def _setoutput(self, obj):
+        self._output = []
+        regex = self.regex()
+        _logger.debug("Regex %s" % (regex.pattern))
+        for match in regex.finditer(obj):
+            _logger.debug("Found: %s" % (match))
+            if match != None:
+                output_line = {}
+                for i in range(len(self._datamodel)):
+                    _logger.debug("Found %d: %s" % (i, match.group(i + 1)))
+                    model = self._datamodel[i]
+                    output_line[self._keywords[i]] = self.dataconv[model](self._session, match.group(i + 1))
+                    i += 1
+                self._output.append(output_line)
+                
+
+class FolderCopyResult(Result):
+    """ Parses a folder copy result """
+    def __init__(self, session):
+        Result.__init__(self, session)
+
+    def _setoutput(self, output):
+        self._output = None
+        for line in output.splitlines():
+            mo = re.match(r"appended to", line)
+            if mo != None:
+                self._output = self._session.create(line)
+                return
+
+CHECKOUT_LOG_RULES = [[r'^Derive failed for', logging.ERROR],
+                      [r'^Serious:', logging.ERROR],
+                      [r'^Warning: .* failed.', logging.ERROR],
+                      [r'^Invalid work area', logging.ERROR],
+                      [r'^WARNING:', logging.WARNING],
+                      [r'^Warning:', logging.WARNING],]
+
+
+UPDATE_LOG_RULES = [[r'^Update failed.', logging.ERROR],
+                    [r'^Serious:', logging.ERROR],
+                    [r'^\s+Failed to', logging.ERROR],
+                    [r'^\d+ failures to', logging.ERROR],
+                    [r"^Warning: This work area '.+' cannot be reused", logging.ERROR],
+                    [r'^Rebind of .* failed', logging.ERROR],
+                    [r'^Warning: .* failed.', logging.ERROR],
+                    [r'^Skipping \'.*\'\.  You do not have permission to modify this project.', logging.ERROR],
+                    [r'^Work area conflict exists for file', logging.ERROR],
+                    [r'^Warning:  No candidates found for directory entry', logging.ERROR],
+                    [r'^WARNING:', logging.WARNING],
+                    [r'^Warning:', logging.WARNING],]
+
+CONFLICTS_LOG_RULES = [[r'^\w+#\d+\s+Implicit', logging.WARNING],
+                       [r'^(.*)\s+(\w+#\d+)\s+(.+)', logging.WARNING],
+                       [r'.*Explicitly specified but not included', logging.WARNING],]
+
+SYNC_LOG_RULES = [[r'^\s+0\s+Conflict\(s\) for project', logging.INFO],
+                  [r'^\s+\d+\s+Conflict\(s\) for project', logging.ERROR],
+                  [r'^Project \'.*\' does not maintain a workarea.', logging.ERROR],
+                  [r'^Work area conflict exists for file', logging.ERROR],
+                  [r'^Warning: Conflicts detected during synchronization. Check your logs.', logging.ERROR],
+                  [r'^Warning:', logging.WARNING],]
+
+def log_result(result, rules, logger=None):
+    """ Rules it a list of tuple defining a regular expression and an log level. """
+    if logger is None:
+        logger = _logger
+    crules = []
+    if rules is not None:
+        for rule in rules:
+            crules.append([re.compile(rule[0]), rule[1]])
+                
+    for line in str(result).splitlines():
+        for rule in crules:
+            if rule[0].match(line) != None:
+                logger.log(rule[1], line)
+                break
+        else:
+            logger.info(line)
+    
+class AbstractSession(object):
+    """An abstract Synergy session.
+
+    Must be overridden to implement either a single session or
+    multiple session handling.
+    """
+    def __init__(self, username, engine, dbpath, ccm_addr):
+        self.username = username
+        self.engine = engine
+        self.dbpath = dbpath
+        self._session_addr = ccm_addr
+        # internal object list
+        self.__ccm_objects = {}
+    
+    def addr(self):
+        """ Returns the Synergy session id."""
+        return self._session_addr
+    
+    def database(self):
+        _logger.debug("AbstractSession: database")
+        self.__find_dbpath()
+        _logger.debug("AbstractSession: database: %s" % self.dbpath)
+        return os.path.basename(self.dbpath)
+    
+    def __find_dbpath(self):
+        """ retrieve the database path from current session status. """
+        _logger.debug("AbstractSession: __find_dbpath")
+        if (self.dbpath != None):            
+            return
+        result = self.execute("status")
+        for match in re.finditer(r'(?:(?:Graphical)|(?:Command)) Interface\s+@\s+(?P<ccmaddr>\w+:\d+(?:\:\d+\.\d+\.\d+\.\d+)+)(?P<current_session>\s+\(current\s+session\))?\s*\nDatabase:\s*(?P<dbpath>\S+)', result.output, re.M | re.I):
+            d = match.groupdict()
+            if (d['current_session'] != None):
+                _logger.debug("AbstractSession: __find_dbpath: Found dbpath: %s" % d['dbpath'])
+                self.dbpath = d['dbpath']
+        assert self.dbpath != None
+    
+    def execute(self, _, result=None):
+        """ Abstract function that should implement the execution of ccm command
+            line call.
+        """
+        return result
+
+    def create(self, fpn):
+        """ Object factory, this is the toolkit entry point to create objects from
+            four part names. Objects are stored into a dictionary, so you have
+            only one wrapper per synergy object.
+        """
+        result = re.search(r"^(?P<project>.+)-(?P<version>[^:]+?)$", fpn)
+        if result != None:
+            matches = result.groupdict()
+            fpn = "%s-%s:project:%s#1" % (matches['project'], matches['version'], self.database())
+        _logger.debug("session.create('%s')" % fpn)
+        ofpn = FourPartName(fpn)
+        if not self.__ccm_objects.has_key(str(fpn)):
+            obj = None
+            if ofpn.type == 'project':
+                obj = Project(self, fpn)
+            elif ofpn.type == 'dir':
+                obj = Dir(self, fpn)
+            elif ofpn.type == 'task':
+                obj = Task(self, fpn)
+            elif ofpn.type == 'folder':
+                obj = Folder(self, fpn)
+            elif ofpn.type == 'releasedef':
+                obj = Releasedef(self, fpn)
+            else:
+                obj = File(self, fpn)
+            self.__ccm_objects[str(fpn)] = obj
+        return self.__ccm_objects[str(fpn)]
+
+    def get_workarea_info(self, dir_):
+        """ Return a dictionary containing workarea info from directory dir.
+        """
+        if (not os.path.exists(dir_)):
+            raise CCMException("Error retrieving work_area info for the directory '%s' (doesn't exists)" % dir_)
+        path = os.path.abspath(os.path.curdir)        
+        path_ccmwaid = os.path.join(dir_,"_ccmwaid.inf");
+        if(not os.path.exists(path_ccmwaid)):
+            raise CCMException("No work area in '%s'" % dir_)
+        os.chdir(dir_)
+        result = self.execute("wa -show", WorkAreaInfoResult(self))
+        os.chdir(path)
+        if result.output == None:
+            raise CCMException("Error retrieving work_area info for the directory '%s'" % dir_)
+        return result.output
+
+    def _get_role(self):
+        result = self.execute("set role")
+        return result.output.strip()
+    
+    def _set_role_internal(self, role):
+        """ method to be override by child class else property accession is not working properly. """
+        if  role == None or len(role) == 0:
+            raise CCMException("You must provide a role.")
+        result = self.execute("set role %s" % role)
+        if re.match(r'^Warning:', result.output, re.M) != None:
+            raise CCMException("Error switching to role %s: %s" %(role, result.output.strip()))
+
+    def _set_role(self, role):
+        self._set_role_internal(role)
+        
+    role = property(fget=_get_role, fset=_set_role)
+    
+    def _get_home(self):
+        result = self.execute("set Home")
+        return result.output.strip()
+        
+    def _set_home(self, home):
+        if len(home) == 0 or home == None:
+            raise CCMException("You must provide a home.")
+        result = self.execute("set Home %s" % home)
+        if re.match(r'^Warning:', result.output, re.M) != None:
+            raise CCMException("Error switching to Home %s: %s" %(home, result.output.strip()))
+    
+    home = property(_get_home, _set_home)
+    
+    def close(self):
+        pass
+    
+    def __str__(self):
+        self.__find_dbpath()
+        return self._session_addr + ':' + self.dbpath
+        
+    def __repr__(self):
+        return self.__str__()
+    
+    def __del__(self):
+        self.close()
+
+    def purposes(self, role=None):
+        """ Returns available purposes. """
+        args = ""
+        if role != None:
+            args = "-role \"%s\"" % role
+        result = self.execute("project_purpose -show %s" % args, ProjectPurposeResult(self))
+        return result.output        
+
+class Session(AbstractSession):
+    """A Synergy session.
+    """
+    def __init__(self, username, engine, dbpath, ccm_addr, close_on_exit=True):
+        AbstractSession.__init__(self, username, engine, dbpath, ccm_addr)
+        self._execute_lock = threading.Lock()
+        self.close_on_exit = close_on_exit
+
+    @staticmethod
+    def start(username, password, engine, dbpath, timeout=300):
+        if username == None:
+            raise CCMException('username is not valid')
+        if password == None:
+            raise CCMException('password is not valid')
+        if CCM_BIN == None:
+            raise CCMException("Could not find CM/Synergy executable in the path.")
+        command = "%s start -m -q -nogui -n %s -pw %s -h %s -d %s" % \
+                    (CCM_BIN, username, password, engine, dbpath)
+        _logger.debug('Starting new session:' + command.replace(password, "***"))
+        (result, status) = _execute(command, timeout=timeout)
+        if status != 0:
+            raise Exception("Error creating a session: result:\n%s\nCommand: %s" % (result, command.replace(password, "***")))
+        session_addr = result.strip()
+        _logger.debug(session_addr)
+        if not re.match(r'[a-zA-Z0-9_-]+:\d+:\d+\.\d+\.\d+\.\d+(:\d+\.\d+\.\d+\.\d+)?', session_addr):
+            raise Exception("Error creating a session: result:\n%s" % result)
+        return Session(username, engine, dbpath, session_addr)        
+            
+    def execute(self, cmdline, result=None):
+        """ Executes a Synergy CLI operation. """
+        if self._session_addr == None:
+            raise CCMException("No Synergy session running")        
+        if CCM_BIN == None:
+            raise CCMException("Could not find CM/Synergy executable in the path.")
+        self._execute_lock.acquire()
+        output = ""
+        error = ""
+        try:
+            if result == None:
+                result = Result(self)
+            if os.sep == '\\':
+                command = "set CCM_ADDR=" + self._session_addr + " && " + CCM_BIN + " %s" % cmdline
+            else:
+                command = "export CCM_ADDR=" + self._session_addr + " && " + CCM_BIN + " %s" % cmdline
+            _logger.debug('Execute > ' + command)
+
+            if hasattr(result, 'error'):
+                process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+                output = process.stdout.read()
+                error = process.stderr.read()
+                result.status = process.returncode
+            else:
+                process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
+                output = process.stdout.read()
+                result.status = process.returncode
+        finally:
+            self._execute_lock.release()
+        result.output = output.strip()
+        if hasattr(result, 'error'):
+            result.error = error.strip()
+        return result
+
+    def close(self):
+        """ Closes this Synergy session if it was not previously running anyway. """
+        _logger.debug("Closing session %s" % self._session_addr)
+        if self._session_addr != None and self.close_on_exit:
+            _logger.debug("Closing session %s" % self._session_addr)
+            self._execute_lock.acquire()
+            if os.sep == '\\':
+                command = "set CCM_ADDR=" + self._session_addr + " && " + CCM_BIN + " stop"
+            else:
+                command = "export CCM_ADDR=" + self._session_addr + " && " + CCM_BIN + " stop"
+            _logger.debug('Execute > ' + command)
+            pipe = os.popen(command)
+            pipe.close()
+            self._session_addr = None
+            self._execute_lock.release()
+        elif self._session_addr != None and not self.close_on_exit:
+            _logger.debug("Keeping session %s alive." % self._session_addr)
+
+
+class SessionPool(AbstractSession):
+    """ Session that transparently handled several subsession, to easily enable
+        multithreaded application.
+    """
+    def __init__(self, username, password, engine, dbpath, database=None, size=4, opener=None):
+        AbstractSession.__init__(self, username, engine, dbpath, None)
+        self._opener = opener
+        if self._opener is None:
+            self._opener = open_session
+        self._free_sessions = []
+        self._used_sessions = []
+        self._thread_sessions = {}
+        self._pool_lock = threading.Condition()
+        self._lock_pool = False
+        self.__password = password
+        self.__database = database        
+        self.size = size
+    
+    def _set_size(self, size):
+        """ Set the pool size """ 
+        self._pool_lock.acquire()
+        poolsize = len(self._free_sessions) + len(self._used_sessions)
+        if  poolsize > size:
+            to_be_remove = poolsize - size
+            self._lock_pool = True
+            while len(self._free_sessions) < to_be_remove:
+                self._pool_lock.wait()            
+            for _ in range(to_be_remove):
+                self._free_sessions.pop().close()
+            self._lock_pool = False
+        else: 
+            for _ in range(size - poolsize):
+                self._free_sessions.append(self._opener(self.username, self.__password, self.engine, self.dbpath, self.__database, False))
+        self._pool_lock.release()
+
+    def _get_size(self):
+        self._pool_lock.acquire()
+        poolsize = len(self._free_sessions) + len(self._used_sessions)
+        self._pool_lock.release()
+        return poolsize
+
+    size = property (_get_size, _set_size)
+    
+    def execute(self, cmdline, result=None):
+        """ Executing a ccm command on a free session. """        
+        _logger.debug("SessionPool:execute: %s %s" % (cmdline, type(result)))
+        
+        # waiting for a free session
+        self._pool_lock.acquire()        
+        
+        # check for recursion, in that case reallocate the same session,
+        if threading.currentThread() in self._thread_sessions:
+            _logger.debug("Same thread, reusing allocation session.")
+            # release the pool and reuse associated session
+            self._pool_lock.release()
+            return self._thread_sessions[threading.currentThread()].execute(cmdline, result)
+
+        while len(self._free_sessions)==0 or self._lock_pool:
+            self._pool_lock.wait()
+        session = self._free_sessions.pop(0)
+        self._used_sessions.append(session)
+        self._thread_sessions[threading.currentThread()] = session
+        self._pool_lock.release()
+        
+        # running command
+        try:
+            result = session.execute(cmdline, result)
+        finally:
+            # we can now release the session - anyway
+            self._pool_lock.acquire()
+            self._thread_sessions.pop(threading.currentThread())                
+            self._used_sessions.remove(session)
+            self._free_sessions.append(session)
+            self._pool_lock.notifyAll()
+            self._pool_lock.release()
+        return result
+
+    def close(self):
+        """ Closing all subsessions. """
+        _logger.debug("Closing session pool sub-sessions")
+        self._lock_pool = True
+        self._pool_lock.acquire()
+        while len(self._used_sessions) > 0:
+            _logger.debug("Waiting to free used sessions.")
+            _logger.debug("Waiting to free used sessions. %s %s" % (len(self._used_sessions), len(self._free_sessions)))            
+            _logger.debug(self._used_sessions)
+            _logger.debug(self._free_sessions)            
+            self._pool_lock.wait()
+        _logger.debug("Closing all free session from the pool.")
+        while len(self._free_sessions) > 0:
+            self._free_sessions.pop().close()
+        self._lock_pool = False
+        self._pool_lock.notifyAll()
+        self._pool_lock.release()
+    
+    def _set_role_internal(self, role):
+        """ Set role on all subsessions. """
+        self._lock_pool = True
+        self._pool_lock.acquire()
+        while len(self._used_sessions)!=0:
+            self._pool_lock.wait()
+            
+        try:
+            for session in self._free_sessions:
+                session.role = session._set_role(role)
+        finally:                
+            self._lock_pool = False
+            self._pool_lock.notifyAll()
+            self._pool_lock.release()
+
+
+class Query(object):
+    """ This object wrap a synergy query, it takes a query as input as well as the
+    attribute you want as output, and get them translated using the model configuration.
+    e.g 
+    Query(session, "type='task' and release='test/next'", ['objectname', 'task_synopsis'], ['ccmobject', 'string'])
+    
+    This will return a list of hash: [{'objectname': Task(xxx), 'task_synopsis': 'xxx'}, ...]
+    """
+    
+    def __init__(self, session, query, keywords, model, cmd="query"):
+        """ Initialize a Synergy query."""
+        self._session = session
+        self._query = query
+        self._keywords = keywords
+        self._model = model
+        self._cmd = cmd
+        
+    def execute(self):
+        """ Executing the query on the database. """
+        mapper = DataMapperListResult(self._session, '@@@', self._keywords, self._model)        
+        query = "%s %s -u -f \"%s\"" % (self._cmd, self._query, mapper.format())
+        return self._session.execute(query, mapper)
+        
+    
+
+class InvalidFourPartNameException(CCMException):
+    """ Badly formed Synergy four-part name. """
+    def __init__(self, fpn = ""):
+        CCMException.__init__(self, fpn)
+
+
+class FourPartName(object):
+    """ This class handle four part name parsing and validation.
+    """
+
+    def __init__(self, ifpn):
+        """ Create a FourPartName object based on a ifpn string.
+        
+        The string have to match the following patterns:
+        - name-version:type:instance
+        - name:version:releasedef:instance
+        - Task database#id
+        - Folder database#id
+        
+        Anything else is considered as old release string format.
+            
+        """
+        _logger.debug("FourPartName: '%s'", ifpn)
+        fpn = FourPartName.convert(ifpn)
+        result = re.search(r"^(?P<name>.+)-(?P<version>.+?):(?P<type>\S+):(?P<instance>\S+)$", fpn)
+        if result == None:
+            result = re.search(r"^(?P<name>.+):(?P<version>.+?):(?P<type>releasedef):(?P<instance>\S+)$", fpn)            
+            if result == None:
+                raise InvalidFourPartNameException(fpn)
+        # set all attributes
+        self._name = result.groupdict()['name']
+        self._version = result.groupdict()['version']
+        self._type = result.groupdict()['type']
+        self._instance = result.groupdict()['instance']    
+
+    def __getname(self):
+        """ Returns the name of the object. """
+        return self._name
+    
+    def __getversion(self):
+        """ Returns the version of the object. """
+        return self._version
+    
+    def __gettype(self):
+        """ Returns the type of the object. """
+        return self._type
+    
+    def __getinstance(self):
+        """ Returns the instance of the object. """
+        return self._instance
+    
+    def __getobjectname(self):
+        """ Returns the objectname of the object. """
+        if (self.type == 'releasedef'):
+            return "%s:%s:%s:%s" % (self.name, self.version, self.type, self.instance)
+        return "%s-%s:%s:%s" % (self.name, self.version, self.type, self.instance)
+    
+    def __str__(self):
+        """ Returns the string representation of the object. """
+        return self.objectname
+    
+    def __repr__(self):
+        """ Returns the string representation of the python object. """
+        if (self.type == 'releasedef'):
+            return "<%s:%s:%s:%s>" % (self.name, self.version, self.type, self.instance)
+        return "<%s-%s:%s:%s>" % (self.name, self.version, self.type, self.instance)
+    
+    def is_same_family(self, ccmobject):
+        """ Returns True if the ccmobject is part of the same family (=same name, type and instance) as self. """
+        assert isinstance(ccmobject, FourPartName)
+        return (self.name == ccmobject.name and self.type == ccmobject.type and self.instance == ccmobject.instance)
+    
+    def __getfamily(self):
+        return "%s:%s:%s" % (self.name, self.type, self.instance)
+    
+    def __eq__(self, ccmobject):
+        """ Returns True if object four parts name are identical. """
+        if ccmobject == None:
+            return False
+        assert isinstance(ccmobject, FourPartName)
+        return (self.name == ccmobject.name and self.version == ccmobject.version and self.type == ccmobject.type and self.instance == ccmobject.instance)
+    
+    def __ne__(self, ccmobject):
+        """ Returns True if object four parts name are different. """
+        if ccmobject == None:
+            return True
+        assert isinstance(ccmobject, FourPartName)
+        return (self.name != ccmobject.name or self.version != ccmobject.version or self.type != ccmobject.type or self.instance != ccmobject.instance)
+    
+    @staticmethod
+    def is_valid(fpn):
+        """ Check if a given string represents a valid four part name.
+        """        
+        return (re.match(r"^(.+)-(.+?):(\S+):(\S+)|(.+):(.+?):releasedef:(\S+)$", fpn) != None)
+    
+    @staticmethod
+    def convert(fpn):
+        """ Update a CCM output string to a valid four part name. This is due to the inconsistent
+             output of CM/Synergy CLI.
+        """
+        fpn = fpn.strip()
+        if FourPartName.is_valid(fpn):
+            return fpn
+        result = re.search(r"^(?P<type>Task|Folder)\s+(?P<instance>\w+)#(?P<id>\d+)$", fpn)
+        if result != None:
+            matches = result.groupdict()
+            if matches["type"] == "Task":
+                return "task%s-1:task:%s" % (matches["id"], matches["instance"])
+            elif matches["type"] == "Folder":
+                return "%s-1:folder:%s" % (matches['id'], matches['instance'])
+        else:
+            result = re.search(r"^(?P<project>\S+)/(?P<version>\S+)$", fpn)
+            if result != None:
+                matches = result.groupdict()
+                return "%s:%s:releasedef:1" % (matches['project'], matches['version'])        
+            else:
+                # Check the name doesn't contains any of the following character: " :-"
+                result = re.search(r"^[^\s^:^-]+$", fpn)
+                if result != None:
+                    return "none:%s:releasedef:1" % (fpn)
+        raise InvalidFourPartNameException(fpn)
+
+    name = property (__getname)
+    version = property (__getversion)
+    type = property (__gettype)
+    instance = property (__getinstance)
+    objectname = property (__getobjectname)
+    family = property(__getfamily)
+                
+                
+class CCMObject(FourPartName):
+    """ Base class for any Synergy object. """
+               
+    def __init__(self, session, fpn):
+        FourPartName.__init__(self, fpn)
+        self._session = session
+    
+    def _getsession(self):
+        return self._session
+    
+    session = property(_getsession)
+    
+    def exists(self):
+        """ Check if an the object exists in the database. """
+        return (len(self._session.execute("query \"name='%s' and version='%s' and type='%s' and instance='%s'\" -u -f \"%%objectname\"" % (self.name, self.version, self.type, self.instance), ObjectListResult(self._session)).output) == 1)
+    
+    def __setitem__(self, name, value):
+        project = ""
+        if self.type == 'project':
+            project = "-p"
+        if value.endswith("\\"):
+            value += "\\"
+        result = self._session.execute("attribute -modify \"%s\" -v \"%s\" %s \"%s\"" % (name, value, project, self))
+        if result.status != 0 and result.status != None:
+            raise CCMException("Error modifying '%s' attribute. Result: '%s'" % (name, result.output), result)
+        
+    def __getitem__(self, name):
+        """ Provides access to Synergy object attributes through the dictionary
+        item interface.
+        """
+        result = self._session.execute("query \"name='%s' and version='%s' and type='%s' and instance='%s'\" -u -f \"%%%s\"" % (self.name, self.version, self.type, self.instance, name), ResultWithError(self._session))
+        if result.status != 0 and result.status != None:
+            raise CCMException("Error retrieving '%s' attribute. Result: '%s'" % (name, result.output), result)
+        if len(result.error.strip()) > 0:
+            raise CCMException("Error retrieving '%s' attribute. Reason: '%s'" % (name, result.error), result)
+        if result.output.strip() == "<void>":
+            return None
+        return result.output.strip()
+    
+    def create_attribute(self, name, type_, value=None):
+        if name in self.keys():
+            raise CCMException("Attribute '%s' already exist." % (name))
+        args = ""
+        proj_arg = ""
+        if value != None:
+            args += " -value \"%s\"" % value
+        if self.type == "project":
+            proj_arg = "-p"
+        result = self._session.execute("attribute -create \"%s\" -type \"%s\" %s %s \"%s\"" % (name, type_, args, proj_arg, self.objectname))
+        if result.status != 0 and result.status != None:
+            raise CCMException("Error creating '%s' attribute. Result: '%s'" % (name, result.output), result)
+        
+    def keys(self):
+        """ The list of supported Synergy attributes. """
+        result = self._session.execute("attribute -la \"%s\"" % self, AttributeNameListResult(self._session))
+        return result.output
+    
+    def is_predecessor_of(self, o):
+        result = self._session.execute("query \"is_predecessor_of('%s') and name='%s'and version='%s'and type='%s'and instance='%s'\" -u -f \"%%objectname\"" % (o, self.name, self.version, self.type, self.instance), ObjectListResult(self._session))        
+        if len(result.output):
+            return True
+        return False
+        
+    def predecessors(self):
+        result = self._session.execute("query \"is_predecessor_of('%s')\" -u -f \"%%objectname\"" % self, ObjectListResult(self._session))        
+        return result.output
+
+    def successors(self):
+        result = self._session.execute("query \"is_successor_of('%s')\" -u -f \"%%objectname\"" % self, ObjectListResult(self._session))        
+        return result.output
+
+    def is_recursive_predecessor_of(self, o):
+        result = self._session.execute("query \"has_predecessor('%s')\" -u -f \"%%objectname\"" % self, ObjectListResult(self._session))
+        for s in result.output:
+            if s == o:
+                return True
+        for s in result.output:
+            if s.is_recursive_predecessor_of(o):
+                return True
+        return False
+
+    def is_recursive_predecessor_of_fast(self, o):
+        """ Fast implementation of the recursive is_predecessor_of method. """
+        input_objects = [self]
+        while len(input_objects) > 0:
+            query = " or ".join(["has_predecessor('%s')" % x for x in input_objects])
+            result = self._session.execute("query \"query\" -u -f \"%%objectname\"" % query, ObjectListResult(self._session))    
+            for s in result.output:
+                if s == o:
+                    return True
+        return False
+
+    def is_recursive_sucessor_of(self, o):
+        result = self._session.execute("query \"has_successor('%s')\" -u -f \"%%objectname\"" % self, ObjectListResult(self._session))
+        for s in result.output:
+            if s == o:
+                return True
+        for s in result.output:
+            if s.is_recursive_sucessor_of(o):
+                return True
+        return False
+
+    def is_recursive_successor_of_fast(self, o):
+        """ Fast implementation of the recursive is_successor_of method. """
+        input_objects = [self]
+        while len(input_objects) > 0:
+            query = " or ".join(["has_successor('%s')" % x for x in input_objects])
+            result = self._session.execute("query \"query\" -u -f \"%%objectname\"" % query, ObjectListResult(self._session))    
+            for s in result.output:
+                if s == o:
+                    return True
+        return False
+    
+    def relate(self, ccm_object):
+        result = self._session.execute("relate -name successor -from \"%s\" -to \"%s\"" % self, ccm_object, Result(self._session))
+        if result.status != None and result.status != 0:
+            raise CCMException("Error relating objects %s to %s\n%s" % (self, ccm_object, result.output))
+        
+    def finduse(self):
+        """ Tries to find where an object is used. """
+        result = self._session.execute("finduse \"%s\"" % self, FinduseResult(self))
+        return result.output
+    
+    
+class File(CCMObject):
+    """ Wrapper for any Synergy file object """
+    
+    def __init__(self, session, fpn):
+        CCMObject.__init__(self, session, fpn)
+    
+    def content(self):
+        result = self._session.execute("cat \"%s\"" % self)
+        return result.output
+    
+    def to_file(self, path):
+        if os.path.exists(path):
+            _logger.error("Error file %s already exists" % path)
+        if not os.path.exists(os.path.dirname(path)):
+            os.makedirs(os.path.dirname(path))
+        # Content to file        
+        result = self._session.execute("cat \"%s\" > \"%s\"" % (self, os.path.normpath(path)))
+        if result.status != 0 and result.status != None:
+            raise CCMException("Error retrieving content from object %s in %s (error status: %s)\n%s" % (self, path, result.status, result.output), result)
+    
+    def merge(self, ccm_object, task):
+        assert ccm_object != None, "object must be defined."
+        assert task != None, "task must be defined."
+        assert task.type == "task", "task parameter must be of 'task' type."
+        result = self._session.execute("merge -task %s \"%s\" \"%s\"" % (task['displayname'], self, ccm_object))
+        
+        validity = 0
+        for line in result.output.splitlines():
+            if re.match(r"Merge Source completed successfully\.", line):
+                validity = 2
+            elif re.match(r"Warning: Merge Source warning. \(overlaps during merge\)\.", line):
+                validity = 1
+            else:                
+                result = re.match(r"Associated object\s+(?P<object>.+)\s+with task", line)
+                if result != None:
+                    return (self._session.create(result.groupdict()['object']), validity)
+                    
+        raise CCMException("Error during merge operation.\n" + result.output, result)
+
+    def checkin(self, state, comment=None):
+        if comment != None:
+            comment = "-c \"%s\"" % comment
+        else:
+            comment = "-nc"
+        result = self._session.execute("checkin -s \"%s\" %s \"%s\" " % (state, comment, self))
+        for line in result.output.splitlines():
+            _logger.debug(line)
+            _logger.debug(r"Checked\s+in\s+'.+'\s+to\s+'%s'" % state)
+            if re.match(r"Checked\s+in\s+'.+'\s+to\s+'%s'" % state, line) != None:
+                return
+        raise CCMException("Error checking in object %s,\n%s" % (self, result.output), result)
+        
+
+class Project(CCMObject):
+    """ Wrapper class for Synergy project object. """
+    
+    def __init__(self, session, fpn):
+        CCMObject.__init__(self, session, fpn)
+        self._release = None
+        self._baseline = None
+
+    def _gettasks(self):
+        result = self._session.execute("rp -show tasks \"%s\" -u -f \"%%objectname\"" % self, ObjectListResult(self._session))
+        return result.output
+
+    def add_task(self, task):
+        """ Add a task to the update properties. """
+        result = self._session.execute("up -add -task %s \"%s\"" % (task['displayname'], self.objectname))
+        if result.status != None and result.status != 0:
+            raise CCMException("Error adding task %s to project '%s'\n%s" % (task, self, result.output))
+        
+    def remove_task(self, task):
+        """ Remove a task to the update properties. """
+        result = self._session.execute("up -remove -task %s \"%s\"" % (task['displayname'], self.objectname))
+        if result.status != None and result.status != 0:
+            raise CCMException("Error removing task %s from project '%s'\n%s" % (task, self, result.output))
+
+    def add_folder(self, folder):
+        """ Add a folder to the update properties. """
+        result = self._session.execute("up -add -folder %s \"%s\"" % (folder['displayname'], self.objectname))
+        if result.status != None and result.status != 0:
+            raise CCMException("Error adding folder %s to project '%s'\n%s" % (folder, self, result.output))
+        
+    def remove_folder(self, folder):
+        """ Remove a folder to the update properties. """
+        result = self._session.execute("up -remove -folder %s \"%s\"" % (folder['displayname'], self.objectname))
+        if result.status != None and result.status != 0:
+            raise CCMException("Error removing folder %s to project '%s'\n%s" % (folder, self, result.output))
+    
+    def _getfolders(self):
+        """ Wrapper method to return the folder list from the update properties - please use the folders attribute to access it. """
+        result = self._session.execute("up -show folders \"%s\" -u -f \"%%objectname\"" % self, ObjectListResult(self._session))
+        return result.output
+        
+    def _getsubprojects(self):
+        """ Wrapper method to return the subprojects list - please use the subprojects attribute to access it. """
+        result = self._session.execute("query -t project \"recursive_is_member_of('%s', none)\" -u -f \"%%objectname\"" % self.objectname, ObjectListResult(self._session))
+        return result.output
+    
+    def get_members(self, recursive=False, **kargs):
+        query = "is_member_of('%s')" % self.objectname
+        if recursive:
+            query = "recursive_is_member_of('%s', none)" % self.objectname           
+        for k in kargs.keys():
+            query += " and %s='%s'" % (k, kargs[k])
+        result = self._session.execute("query \"%s\" -u -f \"%%objectname\"" % query, ObjectListResult(self._session))
+        return result.output
+        
+    def _getrelease(self):
+        """ Get the release of the current object. Returns a Releasedef object. """
+        self._release = Releasedef(self._session, self['release'])
+        return self._release
+
+    def _setrelease(self, release):
+        """ Set the release of the current object. """
+        self['release'] = release['displayname']
+    
+    def refresh(self):
+        """ Refresh project update properties. """
+        result = self._session.execute("up -refresh \"%s\"" % self.objectname, UpdatePropertiesRefreshResult(self._session))
+        return result.output
+    
+    def _getbaseline(self):
+        """ Get the baseline of the current project. """
+        if self._baseline == None:
+            result = self._session.execute("up -show baseline_project \"%s\" -f \"%%displayname\" -u" % self.objectname)
+            if result.output.strip().endswith('does not have a baseline project.'):
+                return None
+            self._baseline = self._session.create(result.output)
+        _logger.debug('baseline: %s' % self._baseline)
+        return self._baseline
+    
+    def set_baseline(self, baseline, recurse=False):
+        """ Set project baseline. raise a CCMException in case or error. """
+        args = ""
+        if recurse:
+            args += " -r"
+        self._baseline = None
+        result = self._session.execute("up -mb \"%s\" %s \"%s\"" % (baseline, args, self.objectname))
+        if result.status != None and result.status != 0:
+            raise CCMException("Error setting basline of project '%s'\n%s" % (self.objectname, result.output))
+
+    def set_update_method(self, name, recurse = False):
+        """ Set the update method for the project (and subproject if recurse is True). """
+        assert name != None, "name must not be None."
+        assert len(name) > 0, "name must not be an empty string."
+        args = "-ru %s" % name
+        if recurse:
+            args += " -r"
+        result = self._session.execute("up %s \"%s\"" % (args, self))
+        if result.status != None and result.status != 0:
+            raise CCMException("Error setting reconfigure properties to %s for project '%s'\nStatus: %s\n%s" % (name, self.objectname, result.status, result.output))
+   
+    def apply_update_properties(self, baseline = True, tasks_and_folders = True, recurse=True):
+        """ Apply update properties to subprojects. """
+        args = ""
+        if not baseline:
+            args += "-no_baseline"
+        if not tasks_and_folders:
+            args += " -no_tasks_and_folders"
+        if recurse:
+            args += " -apply_to_subprojs"
+        result = self._session.execute("rp %s \"%s\"" % (args, self.objectname))
+        if result.status != None and result.status != 0:
+            raise CCMException("Error applying update properties to subprojects for '%s'\n%s" % (self.objectname, result.output))
+    
+    def root_dir(self):
+        """ Return the directory attached to a project. """
+        result = self._session.execute("query \"is_child_of('%s','%s')\" -u -f \"%%objectname\"" % (self.objectname, self.objectname), ObjectListResult(self._session))
+        return result.output[0]
+    
+    def snapshot(self, targetdir, recursive=False):
+        """ Take a snapshot of the project. """
+        assert targetdir != None, "targetdir must be defined."
+        if recursive:
+            recursive = "-recurse"
+        else:
+            recursive = ""
+        result = self._session.execute("wa_snapshot -path \"%s\"  %s \"%s\"" % (os.path.normpath(targetdir), recursive, self.objectname))
+        for line in result.output.splitlines():
+            if re.match(r"^Creation of snapshot work area complete.|Copying to file system complete\.\s*$", line):
+                return result.output
+        raise CCMException("Error creation snapshot of %s,\n%s" % (self.objectname, result.output), result)
+    
+    def checkout(self, release, version=None, purpose=None, subprojects=True):
+        """ Create a checkout of this project. 
+        
+        This will only checkout the project in Synergy. It does not create a work area.
+        
+        :param release: The Synergy release tag to use.
+        :param version: The new version to use for the project. This is applied to all subprojects.
+        :param purpose: The purpose of the checkout. Determines automatically the role from the purpose
+         and switch it automatically (Could be any role from the DB).
+        """    
+        assert release != None, "Release object must be defined."
+        if not release.exists():
+            raise CCMException("Release '%s' must exist in the database." % release)
+            
+        args = ''
+        if version != None:
+            args += '-to "%s"' % version
+        role = None
+        if purpose:
+            #save current role before changing
+            role = self._session.role
+
+            self._session.role = get_role_for_purpose(self._session, purpose)
+            
+            args += " -purpose \"%s\"" % purpose
+        if subprojects:
+            args += " -subprojects"
+        result = self._session.execute("checkout -project \"%s\" -release \"%s\" -no_wa %s" \
+                                  % (self, release['displayname'], args), ProjectCheckoutResult(self._session, self.objectname))
+        if not role is  None:
+            self._session.role = role
+        if result.project == None:
+            raise CCMException("Error checking out project %s,\n%s" % (self.objectname, result.output), result)
+        return result
+    
+    def work_area(self, maintain, recursive=None, relative=None, path=None, pst=None, wat=False):
+        """ Configure the work area. This allow to enable it or disable it, set the path, recursion... """
+        args = ""
+        if maintain:
+            args += "-wa"
+        else:
+            args += "-nwa"
+        # path
+        if path != None:
+            args += " -path \"%s\"" % path        
+        # pst
+        if pst != None:
+            args += " -pst \"%s\"" % pst
+        # relative
+        if relative != None and relative:
+            args += " -relative"
+        elif relative != None and not relative:
+            args += " -not_relative"
+        # recursive
+        if recursive != None and recursive:
+            args += " -recurse"
+        elif recursive != None and not recursive:
+            args += " -no_recurse"        
+        #wat            
+        if wat:
+            args += " -wat"
+        result = self._session.execute("work_area -project \"%s\" %s" \
+                                  % (self.objectname, args), Result(self._session))
+        return result.output
+        
+    def update(self, recurse=True, replaceprojects=True, keepgoing=False, result=None):
+        """ Update the project based on its reconfigure properties. """
+        args = ""
+        if recurse:
+            args += " -r "
+        if replaceprojects:
+            args += " -rs "
+        else:
+            args += " -ks "
+        if result == None:
+            result = UpdateResult(self._session)
+        result = self._session.execute("update %s -project %s" % (args, self.objectname), result)
+        if not result.successful and not keepgoing:
+            raise CCMException("Error updating %s" % (self.objectname), result)
+        return result
+    
+    def reconcile(self, updatewa=True, recurse=True, consideruncontrolled=True, missingwafile=True, report=True):
+        """ Reconcile the project to force the work area to match the database. """
+        args = ""
+        if updatewa:
+            args += " -update_wa "
+        if recurse:
+            args += " -recurse "
+        if consideruncontrolled:
+            args += " -consider_uncontrolled "
+        if missingwafile:
+            args += " -missing_wa_file "
+        if report:
+            args += " -report reconcile.txt "
+        result = self._session.execute("reconcile %s -project %s" % (args, self.objectname), Result(self._session))
+        if re.search(r"There are no conflicts in the Work Area", result.output) == None and re.search(r"Reconcile completed", result.output) == None:
+            raise CCMException("Error reconciling %s,\n%s" % (self.objectname, result.output), result)        
+        return result.output
+
+    def get_latest_baseline(self, filterstring="*", state="released"):
+        result = self._session.execute("query -n %s -t project -f \"%%displayname\" -s %s -u -ns \"version smatch'%s'\"" % (self.name, state, filterstring))
+        lines = result.output.splitlines()
+        return lines[-1]
+
+    def create_baseline(self, baseline_name, release, baseline_tag, purpose="System Testing", state="published_baseline"):
+        result = self._session.execute("baseline -create %s -release %s -purpose \"%s\" -vt %s -project \"%s\" -state \"%s\"" % (baseline_name, release, purpose, baseline_tag, self.objectname, state))
+        return result.output
+    
+    def sync(self, recurse=False, static=False):
+        """ Synchronize project content. By default it is not been done recusively. (Not unittested)"""
+        args = ""
+        if recurse:
+            args += " -recurse"
+        if static:
+            args += " -static"
+        result = self._session.execute("sync %s -project \"%s\"" % (args, self.objectname))
+        if result.status != None and result.status != 0:
+            raise CCMException("Error during synchronization of %s: %s." % (self.objectname, result.output))
+        return result.output
+
+    def conflicts(self, recurse=False, tasks=False):
+        args = "-noformat "
+        if recurse:
+            args += " -r"
+        if tasks:
+            args += " -t"
+        
+        result = self._session.execute("conflicts %s  \"%s\"" % (args, self.objectname), ConflictsResult(self._session))
+        if result.status != None and result.status != 0:
+            raise CCMException("Error during conflict detection of %s: %s." % (self.objectname, result))
+        return result
+    
+    tasks = property(_gettasks)
+    folders = property(_getfolders)
+    subprojects = property(_getsubprojects)
+    release = property(_getrelease, _setrelease)
+    baseline = property(_getbaseline, set_baseline)
+
+
+class Dir(CCMObject):
+    """ Wrapper class for Synergy dir object """
+    
+    def __init__(self, session, fpn):
+        CCMObject.__init__(self, session, fpn)
+
+    def children(self, project):
+        assert(project.type == 'project')
+        result = self._session.execute("query \"is_child_of('%s','%s')\" -u -f \"%%objectname\"" % (self.objectname, project), ObjectListResult(self._session))
+        return result.output
+        
+
+class Releasedef(CCMObject):
+    """ Wrapper class for Synergy releasedef object """
+    
+    def __init__(self, session, fpn):
+        CCMObject.__init__(self, session, fpn)
+    
+    def _getcomponent(self):
+        return self.name
+            
+    component = property(_getcomponent)
+
+
+class Folder(CCMObject):
+    """ Wrapper class for Synergy folder object """
+    
+    def __init__(self, session, fpn):
+        CCMObject.__init__(self, session, fpn)
+
+    def _gettasks(self):
+        """ Accessor for 'tasks' property. """
+        result = self._session.execute("folder -show tasks \"%s\" -u -f \"%%objectname\"" % self.objectname, ObjectListResult(self._session))
+        return result.output
+
+    def _getobjects(self):
+        result = self._session.execute("folder -show objects \"%s\" -u -f \"%%objectname\"" % self.objectname, ObjectListResult(self._session))
+        return result.output
+
+    def _getmode(self):
+        """ Get the mode used by the folder. """
+        result = self._session.execute("folder -show mode \"%s\"" % self.objectname)
+        return result.output.strip()
+
+    def _getquery(self):
+        """ Get the query that populate the folder. """
+        if self.mode.lower() == "query":
+            result = self._session.execute("folder -show query \"%s\"" % self.objectname)
+            return result.output.strip()
+        else:
+            raise CCMException("%s is not a query base folder." % (self.objectname))
+    
+    def _getdescription(self):
+        """ Get the description associated with the folder. """
+        r = self._session.execute("query -t folder -n %s -i %s -u -f \"%%description\"" % (self.name, self.instance))
+        return r.output.strip()
+
+    def remove(self, task):
+        """ Remove task from this folder. """
+        result = self._session.execute("folder -m \"%s\" -remove_task \"%s\"" % (self.objectname, task.objectname))
+        if result.status != None and result.status != 0:
+            raise CCMException("Error removing task %s from %s: %s." % (task.objectname, self.objectname, result.output))
+
+    def update(self):
+        result = self._session.execute("folder -m -update -f \"%%objectname\"" % self.objectname)
+        if result.status != None and result.status != 0:
+            raise CCMException("Error updating the folder content %s: %s." % (self.objectname, result.output))
+        
+    def append(self, task):
+        """ Associate an object to a task """
+        class AddTaskException(CCMException):
+            def __init__(self, reason, task, result):
+                CCMException.__init__(self, reason, result)
+                self.task = task
+        
+        result = self._session.execute("folder -m -at \"%s\" \"%s\"" % (task.objectname, self.objectname))
+        if re.search(r"(Added 1 task to)|(is already in folder)", result.output, re.M) is None:
+            raise AddTaskException(result.output, result, task)
+    
+    def copy(self, existing_folder):
+        """ Copy the contents of existing_folder into this folder.
+        
+        This appends to the destination folder by default.
+        
+        :param existing_folder: The destination Folder object.
+        """
+        result = self._session.execute("folder -copy %s -existing %s -append" % (self.objectname, existing_folder), FolderCopyResult(self._session))
+        return result.output
+        
+    objects = property(_getobjects)
+    tasks = property(_gettasks)
+    mode = property(_getmode)
+    query = property(_getquery)
+    is_query_based = property(lambda x: x.mode.lower() == "query")
+    description = property(_getdescription)
+
+
+class Task(CCMObject):
+    """ Wrapper class for Synergy task object """
+    
+    def __init__(self, session, fpn):
+        CCMObject.__init__(self, session, fpn)
+        self.__unicode_str_text = None
+
+    def _getobjects(self):
+        result = self._session.execute("task -show objects \"%s\" -u -f \"%%objectname\"" % self.objectname, ObjectListResult(self._session))
+        return result.output
+    
+    def append(self, ccm_object):
+        """ Associate an object to a task """
+        class AddObjectException(CCMException):
+            def __init__(self, comment, ccm_object):
+                CCMException.__init__(self, comment)
+                self.ccm_object = ccm_object
+        
+        result = self._session.execute("task -associate \"%s\" -object \"%s\"" % (self.objectname, ccm_object.objectname))
+        if not re.match(r"Associated object .+ with task .*\.", result.output, re.M):
+            raise AddObjectException(result.output)
+
+    def assign(self, username):
+        result = self._session.execute("task -modify \"%s\" -resolver %s" % (self.objectname, username))
+        if not re.match(r"Changed resolver of task", result.output, re.M):
+            raise CCMException("Error assigning task to user '%s',\n%s" % (username, result.output), result)
+        
+    def _getsynopsis(self):
+        return self['task_synopsis']    
+        
+    @staticmethod
+    def create(session, release_tag, synopsis=""):
+        assert release_tag.type == "releasedef", "release_tag must be a CCM object wrapper of releasedef type"    
+        result = session.execute("task -create -synopsis \"%s\" -release \"%s\"" % (synopsis, release_tag['displayname']), CreateNewTaskResult(session))
+        return result.output
+        
+    objects = property(_getobjects)
+    
+    def __unicode__(self):
+        # TODO: use optimised query that makes only 1 ccm query with suitable format
+        if self.__unicode_str_text == None:
+            self.__unicode_str_text = u'%s: %s' % (self['displayname'], self['task_synopsis'])
+        return self.__unicode_str_text
+        
+    def __str__(self):
+        return self.__unicode__().encode('ascii', 'replace')
+    
+    def get_release_tag(self):
+        """ Get task release. Use release property!"""
+        result = self._session.execute("attribute -show release \"%s\"" % (self.objectname), Result(self._session))
+        return result.output
+    
+    def set_release_tag(self, release_tag):
+        """ Set task release. Use release property!"""        
+        result = self._session.execute("attribute -modify release -value \"%s\" \"%s\"" % (release_tag, self.objectname), Result(self._session))
+        return result.output
+
+    release = property(get_release_tag, set_release_tag)
+
+class UpdateTemplate:
+    """ Allow to access Update Template property using Release and Purpose. """
+    def __init__(self, releasedef, purpose):
+        assert(releasedef != None)
+        assert(purpose != None)
+        self._releasedef = releasedef
+        self._purpose = purpose
+        
+    def objectname(self):
+        """ Return the objectname representing this virtual object. """
+        return "%s:%s" % (self._releasedef['displayname'], self._purpose)
+
+    def baseline_projects(self):
+        """ Query all projects for this UpdateTemplate. """
+        result = self._releasedef.session.execute("ut -sh baseline_projects \"%s\"" % self.objectname(), ObjectListResult(self._releasedef.session))
+        print result.output
+        return result.output
+
+    def information(self):
+        """ Query all projects for this UpdateTemplate. """
+        result = self._releasedef.session.execute("ut -sh information \"%s\"" % self.objectname(), UpdateTemplateInformation(self._releasedef.session))
+        print result.output
+        return result.output
+
+    def baseline_selection_mode(self):
+        """ The current Baseline selection mode """
+        result = self._releasedef.session.execute("ut -sh bsm \"%s\"" % self.objectname())
+        print result.output.strip()
+        return result.output.strip()
+
+
+def read_ccmwaid_info(filename):
+    """ Read data from a ccmwaid file. This method is an helper to retreive a project from a physical location. """
+    ccmwaid = open(filename, 'r')
+    # first line: database
+    dbpath = os.path.dirname(ccmwaid.readline().strip())
+    database = os.path.basename(dbpath)
+    # 2nd line should be a timestamp
+    ccmwaid.readline().strip()
+    # 3rd line is the objectname
+    objectref = ccmwaid.readline().strip()
+    ccmwaid.close()    
+    return {'dbpath': dbpath, 'database': database, 'objectname': objectref}
+
+def create_project_from_path(session, path):
+    """ Uses the (_|.)ccmwaid.inf file to create a Project object. """
+    ccmwaid = ".ccmwaid.inf"
+    if os.name == 'nt':
+        ccmwaid = "_ccmwaid.inf"
+        
+    if (not os.path.exists(path + "/" + ccmwaid)):
+        return None    
+    result = read_ccmwaid_info(path + "/" + ccmwaid)
+    
+    return session.create(result['objectname'])
+
+
+def open_session(username=None, password=None, engine=None, dbpath=None, database=None, reuse=True):
+    """Provides a Session object.
+    
+    Attempts to return a Session, based either on existing Synergy
+    sessions or by creating a new one.
+    
+    - If a .netrc file can be found on the user's personal drive,
+      that will be read to obtain Synergy login information if it 
+      is defined there. This will be used to fill in any missing 
+      parameters not passed in the call to open_session().
+      
+      The format of the .netrc file entries should be:
+      
+      machine synergy login USERNAME password foobar account DATABASE_PATH@SERVER
+      
+      If the details refer to a specific database, the machine can be the database name,
+      instead of "synergy".
+    - If an existing session is running that matches the supplied
+      parameters, it will reuse that.
+    
+    """
+    # See if a .netrc file can be used
+    if CCM_BIN == None:
+        raise CCMException("Could not find CM/Synergy executable in the path.")
+    if password == None or username == None or engine == None or dbpath == None:
+        if os.sep == '\\':
+            os.environ['HOME'] = "H:" + os.sep
+        _logger.debug('Opening .netrc file')
+        try:
+            netrc_file = netrc.netrc()
+            netrc_info = None
+            # If settings for a specific database 
+            if database != None:
+                netrc_info = netrc_file.authenticators(database)            
+
+            # if not found just try generic one
+            if netrc_info == None:
+                netrc_info = netrc_file.authenticators('synergy')
+                
+            if netrc_info != None:
+                (n_username, n_account, n_password) = netrc_info
+                if username == None:
+                    username = n_username
+                if password == None:
+                    password = n_password
+                if n_account != None:
+                    (n_dbpath, n_engine) = n_account.split('@')
+                    if dbpath == None and n_dbpath is not None:
+                        _logger.info('Database path set using .netrc (%s)' % n_dbpath)
+                        dbpath = n_dbpath
+                    if engine == None and n_engine is not None:
+                        _logger.info('Database engine set using .netrc (%s)' % n_engine)
+                        engine = n_engine
+        except IOError:
+            _logger.debug('Error accessing .netrc file')
+
+    # last chance...
+    if username == None:
+        username = os.environ['USERNAME']
+
+    # looking for dbpath using GSCM database
+    if dbpath == None and database != None:
+        _logger.info('Database path set using the GSCM database.')
+        dbpath = nokia.gscm.get_db_path(database)        
+
+    # looking for engine host using GSCM database
+    if engine == None and database != None:
+        _logger.info('Database engine set using the GSCM database.')
+        engine = nokia.gscm.get_engine_host(database)
+    
+    _sessions = []
+    # See if any currently running sessions can be used, only if no password submitted, else use a brand new session!
+    if password == None and reuse:
+        _logger.debug('Querying for existing Synergy sessions')
+        command = "%s status" % (CCM_BIN)
+        pipe = os.popen(command, 'r')
+        result = pipe.read()
+        pipe.close()
+        _logger.debug('ccm status result: ' + result)
+        for match in re.finditer(r'(?P<ccmaddr>\w+:\d+:\d+.\d+.\d+.\d+(:\d+.\d+.\d+.\d+)?)(?P<current_session>\s+\(current\s+session\))?\nDatabase:\s*(?P<dbpath>\S+)', result, re.M):
+            d = match.groupdict()
+            _logger.debug(d['ccmaddr'])
+            _logger.debug(socket.gethostname())
+            _logger.debug(d['current_session'])
+            if d['ccmaddr'].lower().startswith(socket.gethostname().lower()):
+                # These session objects should not close the session on deletion,
+                # because they did not initially create the session
+                existing_session = Session(username, engine, d['dbpath'], d['ccmaddr'], close_on_exit=False)
+                _logger.debug('Existing session found: %s' % existing_session)
+                _sessions.append(existing_session)
+        # looking for session using dbpath
+        for session in _sessions:
+            if session.dbpath == dbpath:
+                return session
+    else:
+        # looking for router address using GSCM database
+        router_address = None
+        if database == None and dbpath != None:
+            database = os.path.basename(dbpath)
+        
+        lock = fileutils.Lock(CCM_SESSION_LOCK)
+        try:
+            lock.lock(wait=True)
+            # if we have the database name we can switch to the correct Synergy router
+            if database != None:
+                _logger.info('Getting router address.')
+                router_address = nokia.gscm.get_router_address(database)
+                if os.sep == '\\' and router_address != None:
+                    routerfile = open(os.path.join(os.path.dirname(CCM_BIN), "../etc/_router.adr"), 'r')
+                    current_router = routerfile.read().strip()
+                    routerfile.close()
+                    if current_router != router_address.strip():
+                        _logger.info('Updating %s' % (os.path.normpath(os.path.join(os.path.dirname(CCM_BIN), "../etc/_router.adr"))))
+                        routerfile = open(os.path.join(os.path.dirname(CCM_BIN), "../etc/_router.adr"), "w+")
+                        routerfile.write("%s\n" % router_address)
+                        routerfile.close()
+        
+            # If no existing sessions were available, start a new one
+            _logger.info('Opening session.')
+            new_session = Session.start(username, password, engine, dbpath)
+            lock.unlock()
+            return new_session
+        finally:
+            lock.unlock()
+    raise CCMException("Cannot open session for user '%s'" % username)
+
+
+def get_role_for_purpose(session, purpose):
+    """  return role needed to modify project with checkout for purpose. """
+    purposes = session.purposes()
+    if purpose in purposes:
+        if purposes[purpose]['status'] == 'prep':
+            return 'build_mgr'
+    else:
+        raise CCMException("Could not find purpose '%s' in the database.\n Valid purpose are: %s." % (purpose, ','.join(purposes.keys())))
+    return 'developer'
+
+def get_role_for_status(session, status):
+    """  return role needed to modify project with a specific status. """
+    if status == 'prep':
+        return 'build_mgr'
+    elif status == 'shared':
+        return 'developer'
+    elif status == 'working':
+        return 'developer'
+    else:
+        raise CCMException("Unknow status '%s'" % status)
+
+def running_sessions(database=None):
+    """ Return the list of synergy session currently available on the local machine.
+        If database is given then it tries to update the router address.
+    """
+    _logger.debug('Querying for existing Synergy sessions')
+    if CCM_BIN == None:
+        raise CCMException("Could not find CM/Synergy executable in the path.")
+    command = "%s status" % (CCM_BIN)
+
+    lock = fileutils.Lock(CCM_SESSION_LOCK)
+    result = ""
+    output = []
+    try:
+        # if we have the database name we can switch to the correct Synergy router
+        if database != None:
+            lock.lock(wait=True)
+            _logger.info('Updating router address.')
+            router_address = nokia.gscm.get_router_address(database)
+            if os.sep == '\\' and router_address != None:
+                routerfile = open(os.path.join(os.path.dirname(CCM_BIN), "../etc/_router.adr"), 'r')
+                current_router = routerfile.read().strip()
+                routerfile.close()
+                if current_router != router_address.strip():
+                    _logger.info('Updating %s' % (os.path.normpath(os.path.join(os.path.dirname(CCM_BIN), "../etc/_router.adr"))))
+                    routerfile = open(os.path.join(os.path.dirname(CCM_BIN), "../etc/_router.adr"), "w+")
+                    routerfile.write("%s\n" % router_address)
+                    routerfile.close()
+
+        _logger.debug('Command: ' + command)
+        (result, status) = _execute(command)
+        if database != None:
+            lock.unlock()
+        if (status != 0):
+            raise CCMException("Ccm status execution returned an error.")
+        _logger.debug('ccm status result: ' + result)
+        for match in re.finditer(r'Command Interface\s+@\s+(?P<ccmaddr>\w+:\d+:\d+.\d+.\d+.\d+(:\d+.\d+.\d+.\d+)*)(?P<current_session>\s+\(current\s+session\))?\s+Database:\s*(?P<dbpath>\S+)', result, re.M):
+            data = match.groupdict()
+            _logger.debug(data['ccmaddr'])
+            _logger.debug(socket.gethostname())
+            _logger.debug(data['current_session'])
+            if data['ccmaddr'].lower().startswith(socket.gethostname().lower()):
+                # These session objects should not close the session on deletion,
+                # because they did not initially create the session
+                existing_session = Session(None, None, data['dbpath'], data['ccmaddr'], close_on_exit=False)
+                _logger.debug('Existing session found: %s' % existing_session)
+                output.append(existing_session)                
+    finally:
+        if database != None:
+            lock.unlock()        
+    return  output
+
+def session_exists(sessionid, database=None):
+    for session in running_sessions(database=database):
+        _logger.debug(session.addr() + "==" + sessionid + "?")
+        if session.addr() == sessionid:
+            return True
+    return False
+
+# The location of the ccm binary must be located to know where the _router.adr file is, to support
+# switching databases.
+CCM_BIN = fileutils.which("ccm")
+if os.sep == '\\':
+    CCM_BIN = fileutils.which("ccm.exe")
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/ccm/extra.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,340 @@
+#============================================================================ 
+#Name        : extra.py 
+#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:
+#===============================================================================
+
+""" Library that contains custom Synergy functionnlities: e.g
+        * Snapshotter that can snapshot unfrozen baselines
+        * Threaded snapshotter.
+"""
+import ccm
+import os
+import shutil
+import threading
+import threadpool
+import traceback
+import sys
+import logging
+import xml.dom.minidom
+from xml.dom.minidom import getDOMImplementation, parse
+
+# Uncomment this line to enable logging in this module, or configure logging elsewhere
+#logging.basicConfig(level=logging.DEBUG)
+_logger = logging.getLogger('ccm.extra')
+
+class CCMExtraException(ccm.CCMException):
+    """ Exception raised by the methods of this module. """
+    def __init__(self, description, subexceptions):
+        ccm.CCMException.__init__(self, description)
+        self.subexceptions = subexceptions
+    
+    
+
+def Snapshot(project, targetdir, dir=None):
+    """ This function can snapshot anything from Synergy, even prep/working projects """
+    assert project != None, "a project object must be supplied"
+    assert project.type == "project", "project must be of project type"
+    if not dir:
+        dir = project.root_dir()
+    targetdir = os.path.join(targetdir, dir.name)
+    os.makedirs(targetdir)
+    for object in dir.children(project):
+        if object.type == 'dir':
+            Snapshot(project, targetdir, object)
+        elif object.type == 'project':
+            Snapshot(object, targetdir)
+        else:
+            object.to_file(os.path.join(targetdir, object.name))
+
+
+class _FastSnapshot:
+    """ Snapshot Job executed by the thread pool. """
+    def __init__(self, pool, project, targetdir, callback, exc_hld):
+        """ Construtor, will store the parameter for the checkout. """
+        self.pool = pool
+        self.project = project
+        self.targetdir = targetdir
+        self.callback = callback
+        self.exc_hld = exc_hld
+
+    def __call__(self):
+        """ Do the checkout, and then walkthrough the project hierarchy to find subproject to snapshot. """
+        _logger.info("Snapshotting %s under %s" % (self.project, self.targetdir))
+        self.project.snapshot(self.targetdir, False)
+        def walk(dir, targetdir):
+            for object in dir.children(self.project):
+                if isinstance(object, ccm.Dir):
+                    walk(object, os.path.join(targetdir, object.name))
+                elif isinstance(object, ccm.Project):
+                    _logger.info("Adding project %s" % object.objectname)
+                    self.pool.addWork(_FastSnapshot(self.pool, object, targetdir, self.callback, self.exc_hld))
+                    
+        if len(self.project.subprojects) > 0:
+            rootdir = self.project.root_dir()
+            walk(rootdir, os.path.join(self.targetdir, rootdir.name))
+        return ""
+
+def FastSnapshot(project, targetdir, threads=4):
+    """ Create snapshot running by running snapshots concurrently.
+        Snapshot will be made recursively top-down, and each sub project will
+        be snapshotted in parallel. 
+    """
+    assert threads > 0, "Number of threads must be > 0."
+    assert project != None, "a project object must be supplied."
+    assert project.type == "project", "project must be of project type."
+    
+    # error handling
+    exceptions = []
+    results = []
+    def handle_exception(request, exc_info):
+        _logger.error( "Exception occurred in request #%s: %s" % (request.requestID, exc_info[1]))
+        exceptions.append(exc_info[1])                        
+
+    def handle_result(request, result):        
+        results.append(result)
+   
+    pool = threadpool.ThreadPool(threads)
+    pool.addWork(_FastSnapshot(pool, project, targetdir, handle_result, handle_exception))
+    pool.wait()
+    
+    if len(exceptions):
+        raise CCMExtraException("Errors occurred during snapshot.", exceptions)
+
+    return "\n".join(results)
+
+
+
+def FastMaintainWorkArea(project, path, pst=None, threads=4, wat=False):
+    """ Maintain the workarea of a project in parallel. """
+    assert threads > 0, "Number of threads must be > 0."
+    assert isinstance(project, ccm.Project), "a valid project object must be supplied."
+            
+    # error handling
+    exceptions = []
+    results = []
+    def handle_exception(request, exc_info):
+        _logger.error( "Exception occured in request #%s: %s\n%s" % (request.requestID, exc_info[1], traceback.format_exception(exc_info[0], exc_info[1], exc_info[2])))
+        exceptions.append(exc_info[1])
+    
+    def handle_result(request, result):        
+        results.append(result)
+
+    class __MaintainProject:
+        def __init__(self, subproject, toplevel, wat=False):
+            self.subproject = subproject
+            self.toplevel = toplevel
+            self.wat = wat
+        
+        def __call__(self):
+            output = ""
+            _logger.info("Maintaining project %s" % self.subproject)
+            for tuple in self.subproject.finduse():
+                if tuple['project'] == self.toplevel:
+                    self.subproject['wa_path'] = os.path.join(self.toplevel['wa_path'], tuple['path'])
+                    self.subproject["project_subdir_template"] = ""
+                    _logger.info("Maintaining project %s under %s" % (self.subproject, self.subproject['wa_path']))
+                    output = self.subproject.work_area(True, True, True, wat=self.wat)
+            _logger.info("Project %s maintained" % self.subproject)
+            return output
+            
+    pool = threadpool.ThreadPool(threads)
+    project.work_area(True, False, True, path, pst, wat=wat)
+    for subproject in project.get_members(type="project"):
+        _logger.info("Adding project %s" % subproject)
+        pool.addWork(__MaintainProject(subproject, project, wat), callback=handle_result, exc_callback=handle_exception)
+    pool.wait()
+    
+    if len(exceptions) > 0:
+        raise CCMExtraException("Errors occured during work area maintenance.", exceptions)
+    
+    return "\n".join(results)
+
+
+
+def get_toplevel_project(session, path):
+    try:
+        wainfo = session.get_workarea_info(path)
+        project = get_toplevel_project(session, os.path.dirname(wainfo['path']))
+        if project == None:
+            project = wainfo['project']
+        return project
+    except ccm.CCMException, e:
+        return None
+
+
+class SessionProvider:
+    def __init__(self, opener=None):
+        self._opener = opener
+        if self._opener is None:
+            self._opener = ccm.open_session
+        
+    def get(self, username=None, password=None, engine=None, dbpath=None, database=None, reuse=True):
+        _logger.debug("SessionProvider: Creating a new session.")
+        return self._opener(username, password, engine, dbpath, database, reuse)
+
+    def __del__(self):
+        _logger.info("Deleting the session provider.")
+        self.close()
+
+    def close(self):
+        pass
+        
+        
+class CachedSessionProvider(SessionProvider):
+    """
+<sessions>
+    <session database="foobar" ccmaddr="xxxx"/>
+    <session database="foobarx" ccmaddr="xxxx"/>
+</sessions>
+    """
+
+    def __init__(self, opener=None, cache=None):
+        """ Creates CachedSessionProvider, with a specific 
+            opener and cache file.
+        """
+        SessionProvider.__init__(self, opener=opener)
+        _logger.info("Using CachedSessionProvider.")
+        self.__closed = False
+        self._lock = threading.Lock()
+        self.cacheXml = cache
+        self.cacheFree = {}
+        self.cacheUsed = []
+        self.load()
+
+    
+    def close(self):
+        """ Closing the SessionProvider. """
+        _logger.info("Closing the CachedSessionProvider.")
+        self.save()
+        if self.cacheXml == None:
+            _logger.info("Cleaning up opened sessions.")
+            self._lock.acquire()
+            for dbname in self.cacheFree.keys():
+                while len(self.cacheFree[dbname]) > 0:
+                    session = self.cacheFree[dbname].pop()
+                    session.close_on_exit = True
+                    session.close()
+            while len(self.cacheUsed) > 0:
+                session = self.cacheUsed.pop()
+                session.close_on_exit = True
+            self._lock.release()
+        self.__closed = True   
+    
+    def save(self):
+        if self.cacheXml is not None and not self.__closed:
+            _logger.info("Writing %s" % self.cacheXml)
+            impl = getDOMImplementation()
+            sessions = impl.createDocument(None, "sessions", None)
+            top_element = sessions.documentElement
+            self._lock.acquire()
+            def add_session(dbname, session):
+                sessionNode = sessions.createElement("session")
+                sessionNode.setAttribute("database", dbname)
+                sessionNode.setAttribute("ccmaddr", session.addr())
+                top_element.appendChild(sessionNode)
+            for dbname in self.cacheFree.keys():
+                for session in self.cacheFree[dbname]:
+                    add_session(dbname, session)
+            for session in self.cacheUsed:
+                add_session(session.database(), session)
+            self._lock.release()
+            o = open(self.cacheXml, "w+")
+            o.write(sessions.toprettyxml())
+            o.close()
+            _logger.debug(sessions.toprettyxml())
+            
+    
+    def load(self):
+        if self.cacheXml is not None and os.path.exists(self.cacheXml):
+            _logger.info("Loading %s" % self.cacheXml)
+            doc = parse(open(self.cacheXml, 'r')) 
+            sessions = doc.documentElement
+            self._lock.acquire()
+            try:
+                for child in sessions.childNodes:
+                    if child.nodeType == child.ELEMENT_NODE and child.tagName == "session" and child.hasAttribute('database') and child.hasAttribute('ccmaddr'):
+                        if child.getAttribute('database') not in self.cacheFree:
+                            self.cacheFree[child.getAttribute('database')] = []
+                        if ccm.session_exists(child.getAttribute('ccmaddr'), child.getAttribute('database')):
+                            _logger.info(" + Session: database=%s, ccmaddr=%s" % (child.getAttribute('database'), child.getAttribute('ccmaddr')))
+                            self.cacheFree[child.getAttribute('database')].append(ccm.Session(None, None, None, ccm_addr=child.getAttribute('ccmaddr'), close_on_exit=False))
+                        else:
+                            _logger.info(" - Session database=%s, ccmaddr=%s doesn't seem to be valid anymore." % (child.getAttribute('database'), child.getAttribute('ccmaddr')))
+            finally:
+                self._lock.release()
+
+    
+    def get(self, username=None, password=None, engine=None, dbpath=None, database=None, reuse=True):
+        if self.__closed:
+            raise Exception("Could not create further session the provider is closed.")
+        _logger.debug("CachedSessionProvider: Getting a session.")
+        if database is not None and database in self.cacheFree and len(self.cacheFree[database]) > 0:
+            _logger.info("CachedSessionProvider: Reusing session.")
+            self._lock.acquire()
+            s = self.cacheFree[database].pop()
+            self.cacheUsed.append(s)
+            self._lock.release()
+            return CachedProxySession(self, s) 
+        else:
+            _logger.debug("CachedSessionProvider: Creating new session.")
+            session = SessionProvider.get(self, username, password, engine, dbpath, database, False)
+            session.close_on_exit = False
+            s = CachedProxySession(self, session)
+            db = s.database()
+            self._lock.acquire()
+            if db not in self.cacheFree:
+                self.cacheFree[db] = []
+            self.cacheUsed.append(session)
+            self._lock.release()
+            return s
+
+    def free(self, session):
+        _logger.debug("CachedSessionProvider: Freeing session: %s" % session)
+        db = session.database()
+        if session in self.cacheUsed:
+            _logger.debug("CachedSessionProvider: Removing session from used list.")
+            self._lock.acquire()
+            self.cacheUsed.remove(session)
+            self.cacheFree[db].append(session)
+            self._lock.release()
+
+class CachedProxySession:
+    """ Proxy session which will cleanup the session and free it from the provider """
+    
+    def __init__(self, provider, session):
+        """ Constructor. """
+        self.__session = session 
+        self.__provider = provider
+    
+    def __getattr__(self, attrib):
+        """ Delegate attributes to the session object. """
+        _logger.debug("CachedProxySession.__getattr__(%s)" % attrib)
+        if attrib == "close":
+            return self.__close
+        return getattr(self.__session, attrib)
+
+    def __close(self):
+        """ Overriding the session closing. """
+        _logger.debug("CachedProxySession.__close")
+        self.__provider.free(self.__session)
+        self.__session.close()
+        
+    def __del__(self):
+        """ Free the session on destruction. """
+        _logger.debug("CachedProxySession.__del__")
+        self.__close()
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/ccmutil.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,34 @@
+#============================================================================ 
+#Name        : ccmutil.py 
+#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:
+#===============================================================================
+
+""" utility module related to ccm """
+
+import nokia.nokiaccm
+import configuration
+import ccm.extra
+
+def get_session(database, username, password, engine, dbpath):
+    """ Returns a user session """
+    if database != None:
+        return nokia.nokiaccm.open_session(username, password, database=database)
+    else:
+        return nokia.nokiaccm.open_session(username, password, engine, dbpath)
+                
+
+   
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/comments.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,99 @@
+#============================================================================ 
+#Name        : comments.py 
+#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:
+#===============================================================================
+
+""" Helper to parse branch information.
+"""
+import amara
+import logging
+import os
+import re
+import string
+
+
+COMMENT_SYMBOLS = {
+    '.java': ['//'],
+    '.hrh': ['//'],
+    '.cpp': ['//'],
+    '.h': ['//'],
+    '.inf': ['//'],
+    '.mmp': ['//'],
+    '.iby': ['//'],
+    '.pl':['#'],
+    '.py':['#'],
+    '.mk':['#'],
+    '.bat':['REM'],
+    '.xml':['<!--'],
+    '.txt':['//'],
+    '.cmd':['#','REM']
+    }
+
+
+# Uncomment this line to enable logging in this module, or configure logging elsewhere   
+#logging.basicConfig(level=logging.DEBUG)
+_logger = logging.getLogger("comments")
+
+
+class CommentParser(object):
+    """ Parse branch information. """
+    def __init__(self, files, element_name):
+        self.files = files
+        self.element_name = element_name
+
+    def scan(self):
+        """ This method goes processes the input files.
+        
+        It returns an xml document.  """
+        doc = amara.create_document(u"commentLog")
+        for path in self.files:
+            open_file = open(path)
+            CommentParser.scan_content(path, open_file.read(), self.element_name, doc)
+            open_file.close()
+
+        #print doc.xml()
+        return doc
+    
+    @staticmethod
+    def scan_content(filename, content, element_name, doc=None):
+        """ This method scan the defined content to find any custom comment tags.
+        
+        It returns an xml document.
+        """
+        # Creating a doc if not defined
+        if not doc:
+            doc = amara.create_document(u"commentLog")
+            
+        # Search the file for any XML elements matching the given element name
+        regex = string.Template(r"<${element_name}.*</${element_name}>").substitute(element_name=element_name)
+        comment_elements = re.findall(regex, content, re.DOTALL)
+        for comment in comment_elements:
+            (_, file_type) = os.path.splitext(filename)
+            file_type = file_type.lower()
+            if COMMENT_SYMBOLS.has_key(file_type):
+                for i in range(len(COMMENT_SYMBOLS[file_type])): 
+                    comment = comment.replace(COMMENT_SYMBOLS[file_type][i], "")
+            try:
+                doc.commentLog.xml_append_fragment(comment)
+                # Add a generic file attribute to the comment to label which file it comes from
+                doc.commentLog.xml_children[-1].xml_set_attribute(u'file', unicode(filename))
+            except Exception:
+                _logger.warning("A comment in '%s' is not valid XML." % filename)
+
+        #print doc.xml()
+        return doc
+    
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/compilation.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,60 @@
+#============================================================================ 
+#Name        : compilation.py 
+#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:
+#===============================================================================
+
+""" Package contains compilation phase related modules """
+
+import logging
+import build.io
+import sysdef.api
+import sysdef.io
+
+logging.basicConfig(level=logging.INFO)
+
+class BinarySizeLogger(object):
+    """ Read Binary size from rom output logs """
+    def __init__(self, sysDef):
+        self.sysDef = sysDef
+        
+    def read_output_binaries_per_unit(self, build_logs):
+        # Read in the output binaries of each unit
+        logging.info('Reading the output binaries created by each unit.')
+        if len(build_logs) == 0:
+            raise Exception('List of build logs is empty!')
+        logging.info("The list of log files:\n")
+        logging.info("\n".join(build_logs))
+        for logpath in build_logs:
+            binaries_reader = build.io.AbldLogWhatReader(logpath)
+            self.sysDef.merge_binaries(binaries_reader)
+        
+    def read_binary_sizes_in_rom_output_logs(self, rom_logs):    
+        # Read in the binary sizes listed in the ROM output logs
+        logging.info('Reading the binary sizes of each binary from ROM logs.')
+        if len(rom_logs) == 0:
+            raise Exception('List of ROM logs is empty!')
+        logging.info("The list of log files:\n")
+        logging.info("\n".join(rom_logs))
+        for log in rom_logs:
+            binary_sizes_reader = build.io.RombuildLogBinarySizeReader(log)
+            self.sysDef.merge_binary_sizes(binary_sizes_reader)
+    
+    def write2csvfile(self, binary_sizes_output_file, sysdef_config_list):
+        # Write out a .csv file containing
+        size_writer = sysdef.io.FlashImageSizeWriter(binary_sizes_output_file)
+        size_writer.write(self.sysDef, sysdef_config_list)
+        size_writer.close()
\ No newline at end of file
Binary file buildframework/helium/external/helium-antlib/python/pythoncore/lib/configuration$py.class has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/configuration.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,771 @@
+#============================================================================ 
+#Name        : configuration.py 
+#Part of     : Helium 
+#
+#Partly 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: 
+# 
+#==============================================================================
+
+"""Defines an interface for accessing configurations, typically for SW builds.
+
+This interface is generally based on the Jakarta Commons Configuration API. A
+configuration is a collection of properties. Builders create Configuration
+objects from various source inputs.
+
+"""
+
+
+import copy
+import logging
+import re
+import time
+import types
+import UserDict
+import xml.dom.minidom
+
+
+
+_logger = logging.getLogger('configuration')
+logging.basicConfig(level=logging.INFO)
+
+class Configuration(object, UserDict.DictMixin):
+    """ Base Configuration object. """
+    
+    key_re = re.compile(r'\${(?P<name>[._a-zA-Z0-9]+)}', re.M)
+    
+    def __init__(self, data=None):
+        """ Initialization. """
+        #super(UserDict.DictMixin, self).__init__(data)
+        self.name = None
+        self.data = {}
+        if data is not None:
+            self.data.update(data)
+
+    def __contains__(self, key):
+        """ Check if a keys is defined in the dict. """
+        return self.data.__contains__(key)
+    
+    def __getitem__(self, key, interpolate=True):
+        """ Get an item from the configuration via dictionary interface. """
+        if interpolate:
+            return self.interpolate(self.data[key])
+        return self.data[key]
+
+    def __setitem__(self, key, item):
+        """ Set an item from the configuration via dictionary interface. """
+        self.data[key] = item
+
+    def __delitem__(self, key):
+        """ Remove an item from the configuration via dictionary interface. """
+        del self.data[key]
+
+    def keys(self):
+        """ Get the list of item keys. """
+        return self.data.keys()
+    
+    def has_key(self, key):
+        """ Check if key exists. """
+        return self.data.has_key(key)
+
+    def match_name(self, name):
+        """ See if the given name matches the name of this configuration. """
+        return self.name == name
+
+    def get(self, key, default_value):
+        """ Get an item from the configuration. """
+        try:
+            return self.__getitem__(key)
+        except KeyError:
+            return default_value
+
+    def get_list(self, key, default_value):
+        """ Get a value as a list. """
+        try:
+            itemlist = self.__getitem__(key)
+            if not isinstance(itemlist, types.ListType):
+                itemlist = [itemlist]
+            return itemlist
+        except KeyError:
+            return default_value
+        
+    def get_int(self, key, default_value):
+        """ Get a value as an int. """
+        try:
+            value = self.__getitem__(key)
+            return int(value)
+        except KeyError:
+            return default_value
+        
+    def get_boolean(self, key, default_value):
+        """ Get a value as a boolean. """
+        try:
+            value = self.__getitem__(key)
+            return value == "true" or value == "yes" or value == "1"
+        except KeyError:
+            return default_value
+        
+    def interpolate(self, value):
+        """ Search for patterns of the form '${..}' and insert matching values. """
+        if isinstance(value, types.ListType):
+            value = [self.interpolate(elem) for elem in value]
+        else:
+            if isinstance(value, types.StringType) or \
+               isinstance(value, types.UnicodeType) or \
+               isinstance(value, types.ListType):
+                for match in self.key_re.finditer(value):
+                    for property_name in match.groups():
+                        if self.has_key(property_name):
+                            # See if interpolation may cause infinite recursion
+                            raw_property_value = self.__getitem__(property_name, False)
+                            #print 'raw_property_value: ' + raw_property_value
+                            if raw_property_value == None:
+                                raw_property_value = ''
+                            if isinstance(raw_property_value, types.ListType):
+                                for prop in raw_property_value:
+                                    if re.search('\${' + property_name + '}', prop) != None:
+                                        raise Exception("Key '%s' will cause recursive interpolation with value %s" % (property_name, raw_property_value))
+                            else:
+                                if re.search('\${' + property_name + '}', raw_property_value) != None:
+                                    raise Exception("Key '%s' will cause recursive interpolation with value %s" % (property_name, raw_property_value))
+                                    
+                            # Get the property value
+                            property_value = self.__getitem__(property_name)
+                            if isinstance(property_value, types.ListType):
+                                property_value = ",".join(property_value)
+                            else:
+                                property_value = re.sub(r'\\', r'\\\\', property_value, re.M)
+                            value = re.sub('\${' + property_name + '}', property_value, value, re.M)
+        return value
+    
+    def __str__(self):
+        """ A string representation. """
+        return self.__class__.__name__ + '[' + str(self.name) + ']'
+        
+    def __cmp__(self, other):
+        """ Compare with another object. """
+        return cmp(self.__str__, other.__str__)
+       
+       
+class PropertiesConfiguration(Configuration):
+    """ A Configuration that parses a plain text properties file.
+    
+    This typically follows the java.util.Properties format.
+    
+    Note: This code is mostly based on this recipe
+    http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/496795.
+    Copyright (c) Anand Balachandran Pillai
+    """
+    def __init__(self, stream=None, data=None):
+        Configuration.__init__(self, data)
+        
+        self.othercharre = re.compile(r'(?<!\\)(\s*\=)|(?<!\\)(\s*\:)')
+        self.othercharre2 = re.compile(r'(\s*\=)|(\s*\:)')
+        self.bspacere = re.compile(r'\\(?!\s$)')
+        
+        if stream is not None:
+            self.load(stream)
+        
+#    def __str__(self):
+#        s='{'
+#        for key,value in self.data.items():
+#            s = ''.join((s,key,'=',value,', '))
+#
+#        s=''.join((s[:-2],'}'))
+#        return s
+
+    def __parse(self, lines):
+        """ Parse a list of lines and create
+        an internal property dictionary """
+
+        # Every line in the file must consist of either a comment
+        # or a key-value pair. A key-value pair is a line consisting
+        # of a key which is a combination of non-white space characters
+        # The separator character between key-value pairs is a '=',
+        # ':' or a whitespace character not including the newline.
+        # If the '=' or ':' characters are found, in the line, even
+        # keys containing whitespace chars are allowed.
+
+        # A line with only a key according to the rules above is also
+        # fine. In such case, the value is considered as the empty string.
+        # In order to include characters '=' or ':' in a key or value,
+        # they have to be properly escaped using the backslash character.
+
+        # Some examples of valid key-value pairs:
+        #
+        # key     value
+        # key=value
+        # key:value
+        # key     value1,value2,value3
+        # key     value1,value2,value3 \
+        #         value4, value5
+        # key
+        # This key= this value
+        # key = value1 value2 value3
+        
+        # Any line that starts with a '#' is considerered a comment
+        # and skipped. Also any trailing or preceding whitespaces
+        # are removed from the key/value.
+        
+        # This is a line parser. It parses the
+        # contents like by line.
+
+        lineno = 0
+        i = iter(lines)
+
+        for line in i:
+            lineno += 1
+            line = line.strip()
+            # Skip null lines
+            if not line: continue
+            # Skip lines which are comments
+            if line[0] == '#': continue
+
+            # Position of first separation char
+            sepidx = -1
+            # A flag for performing wspace re check
+            #flag = 0
+            # Check for valid space separation
+            # First obtain the max index to which we
+            # can search.
+            m = self.othercharre.search(line)
+            if m:
+                first, last = m.span()
+                start, end = 0, first
+                #flag = 1
+                wspacere = re.compile(r'(?<![\\\=\:])(\s)')        
+            else:
+                if self.othercharre2.search(line):
+                    # Check if either '=' or ':' is present
+                    # in the line. If they are then it means
+                    # they are preceded by a backslash.
+                    
+                    # This means, we need to modify the
+                    # wspacere a bit, not to look for
+                    # : or = characters.
+                    wspacere = re.compile(r'(?<![\\])(\s)')        
+                start, end = 0, len(line)
+                
+            m2 = wspacere.search(line, start, end)
+            if m2:
+                # print 'Space match=>',line
+                # Means we need to split by space.
+                first, last = m2.span()
+                sepidx = first
+            elif m:
+                # print 'Other match=>',line
+                # No matching wspace char found, need
+                # to split by either '=' or ':'
+                first, last = m.span()
+                sepidx = last - 1
+                # print line[sepidx]
+                
+                
+            # If the last character is a backslash
+            # it has to be preceded by a space in which
+            # case the next line is read as part of the
+            # same property
+            while line[-1] == '\\':
+                # Read next line
+                try:
+                    nextline = i.next()
+                    nextline = nextline.strip()
+                    lineno += 1
+                    # This line will become part of the value
+                    line = line[:-1] + nextline
+                except StopIteration:
+                    break
+
+            # Now split to key,value according to separation char
+            if sepidx != -1:
+                key, value = line[:sepidx], line[sepidx+1:]
+            else:
+                key, value = line,''
+
+            self.processPair(key, value)
+            
+    def processPair(self, key, value):
+        """ Process a (key, value) pair """
+
+        oldkey = key
+        oldvalue = value
+        
+        # Create key intelligently
+        keyparts = self.bspacere.split(key)
+        # print keyparts
+
+        strippable = False
+        lastpart = keyparts[-1]
+
+        if lastpart.find('\\ ') != -1:
+            keyparts[-1] = lastpart.replace('\\','')
+
+        # If no backspace is found at the end, but empty
+        # space is found, strip it
+        elif lastpart and lastpart[-1] == ' ':
+            strippable = True
+
+        key = ''.join(keyparts)
+        if strippable:
+            key = key.strip()
+            oldkey = oldkey.strip()
+        
+        oldvalue = self.unescape(oldvalue)
+        value = self.unescape(value)
+        
+        self.data[key] = value.strip()
+
+#        # Check if an entry exists in pristine keys
+#        if self._keymap.has_key(key):
+#            oldkey = self._keymap.get(key)
+#            self._origprops[oldkey] = oldvalue.strip()
+#        else:
+#            self._origprops[oldkey] = oldvalue.strip()
+#            # Store entry in keymap
+#            self._keymap[key] = oldkey
+        
+    def escape(self, value):
+
+        # Java escapes the '=' and ':' in the value
+        # string with backslashes in the store method.
+        # So let us do the same.
+        newvalue = value.replace(':','\:')
+        newvalue = newvalue.replace('=','\=')
+
+        return newvalue
+
+    def unescape(self, value):
+
+        # Reverse of escape
+        newvalue = value.replace('\:',':')
+        newvalue = newvalue.replace('\=','=')
+
+        return newvalue    
+        
+    def load(self, stream):
+        """ Load properties from an open file stream """
+        
+        # For the time being only accept file input streams
+        if not(hasattr(stream, 'readlines') and callable(stream.readlines)):
+            raise TypeError,'Argument should be a file object!'
+        # Check for the opened mode
+        if hasattr(stream, 'mode') and stream.mode != 'r':
+            raise ValueError,'Stream should be opened in read-only mode!'
+
+        try:
+            lines = stream.readlines()
+            self.__parse(lines)
+        except IOError:
+            raise
+
+    def store(self, out):
+        """ Serialize the properties back to a file. """
+
+        if out.mode[0] != 'w':
+            raise ValueError, 'Stream should be opened in write mode!'
+
+        try:
+            # Write timestamp
+            out.write(''.join(('# ', time.strftime('%a %b %d %H:%M:%S %Z %Y', time.localtime()), '\n')))
+            
+            # Write properties from the  dictionary
+            for key in self.data.keys():
+                value = self.data[key]
+                out.write(''.join((key, '=', self.escape(value), '\n')))
+                
+            out.close()
+        except IOError, e:
+            raise
+            
+
+class NestedConfiguration(Configuration):
+    """ A nested configuration that may have a parent or child configurations. """
+    def __init__(self):
+        """ Initialization. """
+        Configuration.__init__(self, None)
+        self.parent = None
+        self.type = None
+        self.abstract = None
+
+    def isBuildable(self):
+        """ Is this a buildable configuration? """
+        return self.abstract == None
+
+    def _addPropertyValue(self, key, value, parseList=True):
+        """Adds a property value to the configuration.
+
+        If the property does not exist, it is added without modification.
+        If there is already a single value matching the key, the value is replaced by a list
+        containing the original and new values.
+        If there is already a list, the new value is added to the list.
+
+        The value is first processed in case it also represents a list of values,
+        e.g. comma-separated values.
+        """
+        if parseList and value.find(',') != -1:
+            value = value.split(',')
+            # Remove all whitespace
+            value = [v.strip() for v in value]
+
+        if key in self.data:
+            currentValue = self.data[key]
+
+            # Make sure current value is a list
+            if not isinstance(currentValue, types.ListType):
+                currentValue = [currentValue]
+
+            # Add new value(s)
+            if isinstance(value, types.ListType):
+                currentValue.extend(value)
+            else:
+                currentValue.append(value)
+            self.data[key] = currentValue
+        else:
+            self.data[key] = value
+
+    def __getitem__(self, key, interpolate=True):
+        """ Get an item. """
+        #print "__getitem__(%s, %s)" % (self.name, key)
+        if self.data.has_key(key):
+            value = super(NestedConfiguration, self).__getitem__(key, False)
+            if interpolate:
+                return self.interpolate(value)
+            return value
+        elif self.parent != None:
+            value = self.parent.__getitem__(key, False)
+            if interpolate:
+                return self.interpolate(value)
+            return value
+        raise KeyError('Cannot find key: ' + key)
+
+    def __setitem__(self, key, item):
+        """ Set the value of an item. """
+        self.data[key] = item
+
+    def __delitem__(self, key):
+        """ Remove an item. """
+        del self.data[key]
+
+    def __contains__(self, key):
+        """ Check if a keys is defined in the dict. """
+        if self.data.__contains__(key):
+            return True 
+        elif self.parent:
+            return self.parent.__contains__(key)
+        return False
+            
+    def keys(self):
+        """ Get the list of item keys. """
+        myKeys = self.data.keys()
+        if self.parent != None:
+            parentKeys = self.parent.keys()
+            for key in parentKeys:
+                if not key in myKeys:
+                    myKeys.append(key)
+        return myKeys
+        
+    def has_key(self, key):
+        """ Check if key exists. """
+        if self.data.has_key(key):
+            return True
+        if self.parent != None:
+            return self.parent.has_key(key)
+        return False
+
+    def match_name(self, name):
+        """ See if the configuration name matches the argument. """
+        if self.name == name:
+            return True
+        if self.parent != None:
+            return self.parent.match_name(name)
+        return False
+
+
+class Specification(NestedConfiguration):
+    """ Deprecated. This should be removed in future, it adds no value. """
+    
+    def __init__(self):
+        """ Initialization. """
+        NestedConfiguration.__init__(self)
+
+
+class ConfigurationSet(Configuration):
+    """A ConfigurationSet represents a set of configurations.
+
+    Each configuration should be processed separately. This is matching
+    the Raptor model where a single XML file can contain definitions
+    of multiple specifications and configurations.
+
+    It is however somewhat different from the Commons Configuration classes
+    that combine configurations, e.g. CombinedConfiguration,
+    CompositeConfiguration. These act to combine configurations in a way
+    such that a single configuration interface is still presented to the
+    client.
+    """
+    
+    def __init__(self, configs):
+        """ Initialization. """
+        Configuration.__init__(self)
+        self._configs = configs
+
+    def getConfigurations(self, name=None, type=None):
+        """ Return a list of configs that matches the name and type specified. 
+        
+        This can be queried multiple times to retrieve different named configurations.
+        """
+        result = []
+        for c in self._configs:
+            if ((name != None and c.match_name(name)) or name == None) and ((type != None and c.type == type) or type == None):
+                result.append(c)        
+        return result
+
+
+class ConfigurationBuilder(object):
+    """ Base class for builders that can create Configuration objects. """
+    
+    def getConfiguration(self):
+        """Returns a Configuration object."""
+        raise NotImplementedError
+
+
+class NestedConfigurationBuilder(ConfigurationBuilder):
+    """ Builder for building Configuration objects from nested configurations. """
+    
+    _constructors = {'spec':Specification, 'config':NestedConfiguration}
+
+    def __init__(self, inputfile, configname=''):
+        """ Initialization. """
+        self.inputfile = inputfile
+        self.configname = configname
+        self._warn_on_deprecated_spec = False
+
+    def getConfiguration(self):
+        """ Returns a ConfigurationSet object.
+
+        A ConfigurationSet represents a number of Configuration objects
+        that all may need to be processed.
+        """
+        try:
+            dom = xml.dom.minidom.parse(self.inputfile)
+        except Exception, exc:
+            raise Exception("XML file '%s' cannot be parsed properly: %s" % (self.inputfile, exc))
+
+        # The root element is typically <build> but can be anything
+        self.rootNode = dom.documentElement
+        configs = []
+
+        # Create a flat list of buildable configurations
+        for child in self.rootNode.childNodes:
+            if child.nodeType == xml.dom.Node.ELEMENT_NODE:
+                _logger.debug('Parsing children')
+                self.parseConfiguration(child, configs)
+
+        # Add configuration references
+        references = []
+        for reference in self.getReferences():
+            for conf in configs:
+                if conf.match_name(reference[1]):
+                    newConf = copy.deepcopy(conf)
+                    newConf.name = reference[0]
+                    references.append(newConf)
+
+        configs = configs + references
+
+        dom.unlink()
+        _logger.debug('Set of configs: ' + str(configs))
+        
+        if self._warn_on_deprecated_spec:
+            _logger.warning("Use of deprecated 'spec' element name in this configuration. Please rename to config")
+        return ConfigurationSet(configs)
+
+    def writeToXML(self, output, config_list, config_name=None):
+        document = """
+<build>
+</build>"""        
+        doc = xml.dom.minidom.parseString(document)
+        docRootNode = doc.documentElement
+        configNode = doc.createElement( 'config')
+        docRootNode.appendChild(configNode)
+        if config_name is not None:
+            configNode.setAttribute( 'name', config_name)        
+        configNode.setAttribute( 'abstract', 'true')
+
+        for config in config_list:
+            configSubNode = doc.createElement( 'config')
+            configNode.appendChild(configSubNode)
+            if config.name is not None:
+                configSubNode.setAttribute( 'name', config.name)
+
+            for key in config.keys():
+                if type(config.__getitem__(key)) == types.ListType:
+                    for i in range(len(config.__getitem__(key))):
+                        setNode = doc.createElement( 'set')
+                        configSubNode.appendChild(setNode)
+                        setNode.setAttribute( 'name', key)
+                        setNode.setAttribute( 'value', config.__getitem__(key)[i]) 
+                else:
+                    setNode = doc.createElement( 'set')
+                    configSubNode.appendChild(setNode)
+                    setNode.setAttribute( 'name', key)
+                    setNode.setAttribute( 'value', config.__getitem__(key))
+        out = open(output, 'w+')
+        out.write(doc.toprettyxml())
+        out.close()            
+
+
+    def getConfigurations(self, name=None, type=None):
+        """ Get a list of the individual configurations. 
+        
+        Once read a new builder must be opened to retrieve a differently filtered set of configurations.
+        """
+        config_set = self.getConfiguration()
+        return config_set.getConfigurations(name, type)
+
+    def getReferences(self):
+        references = []
+        for rootNode in self.rootNode.childNodes:
+            if rootNode.nodeType == xml.dom.Node.ELEMENT_NODE:
+                for child in rootNode.childNodes:
+                    if child.nodeType == xml.dom.Node.ELEMENT_NODE:
+                        for conf in child.childNodes:
+                            if conf.nodeName == 'specRef':
+                                for ref in conf.getAttribute('ref').split(','):
+                                    if not ( child.getAttribute('abstract') and str(self.configname) == '' ):
+                                        references.append([child.getAttribute('name'), ref])
+        return references
+
+    def parseConfiguration(self, configNode, configs, parentConfig=None):
+        """ Parse an individual nested configuration. """
+        # Create appropriate config object
+        if configNode.nodeName == 'spec':
+            self._warn_on_deprecated_spec = True
+        constructor = self._constructors[configNode.nodeName]
+        config = constructor()
+        _logger.debug('Configuration created: ' + str(config))
+        if parentConfig != None:
+            config.parent = parentConfig
+            #config.data.update(parentConfig.data)
+
+        # Add any attribute properties
+        for i in range(configNode.attributes.length):
+            attribute = configNode.attributes.item(i)
+            if hasattr(config, attribute.name):
+                _logger.debug('Adding config attribute: ' + str(attribute.name))
+                setattr(config, str(attribute.name), attribute.nodeValue)
+            else:
+                raise Exception('Invalid attribute for configuration: ' + attribute.name)
+
+        # Process the config element's children
+        configChildNodes = []
+
+        for child in configNode.childNodes:
+            if child.nodeType == xml.dom.Node.ELEMENT_NODE:
+                # <append> directives should add to parent values. In
+                # this case initially set the value to the parent value.
+                if child.nodeName == 'append':
+                    name = child.getAttribute('name')
+                    if parentConfig != None and parentConfig.has_key(name):
+                        parent_value = parentConfig.__getitem__(name, False)
+                        if not isinstance(parent_value, types.ListType):
+                            parent_value = [parent_value]
+                        for value in parent_value:
+                            config._addPropertyValue(name, value)
+
+                if child.nodeName == 'set' or child.nodeName == 'append':
+                    name = child.getAttribute('name')
+                    if child.hasAttribute('value'):
+                        value = child.getAttribute('value')
+                        config._addPropertyValue(name, value)
+                    elif child.hasChildNodes():
+                        value = ""
+                        for textchild in child.childNodes:
+                            value += textchild.data
+                        config._addPropertyValue(name, value, False)
+                elif child.nodeName == 'specRef':
+                    for ref in child.getAttribute('ref').split(','):
+                        node = self.getNodeByReference(ref)
+                        if not node:
+                            raise Exception('Referenced spec not found: ' + ref)
+                elif self._constructors.has_key(child.nodeName):
+                    configChildNodes.append(child)
+                else:
+                    raise Exception('Bad configuration xml element: ' + child.nodeName)
+
+        # Only save the buildable configurations
+        if config.isBuildable():
+            _logger.debug('Adding config to buildable set: ' + str(config))
+            configs.append(config)
+            
+        for childConfigNode in configChildNodes:
+            self.parseConfiguration(childConfigNode, configs, config)
+
+    def getNodeByReference(self, refName):
+        """ Find a node based on a reference to it. """
+        for child in self.rootNode.childNodes:
+            if child.nodeType == xml.dom.Node.ELEMENT_NODE:
+                for conf in child.childNodes:
+                    if conf.nodeName == 'spec':
+                        if refName == conf.getAttribute('name'):
+                            return conf
+
+
+class HierarchicalConfiguration(Configuration):
+    """ Represents hierarchical configurations such as XML documents. """
+    
+    def __init__(self):
+        """ Initialization. """
+        Configuration.__init__(self, None)
+        self._root = None
+        
+    def __getitem__(self, key, interpolate=True):
+        """ Get an item as a dict. """
+        elements = self._root.xpath(_Key(key).to_xpath())
+        values = [element.text for element in elements]
+        value = ','.join(values)
+        if interpolate:
+            value = self.interpolate(value)
+        return value
+        
+    def has_key(self, key):
+        """ Check if key exists. """
+        elements = self._root.xpath(_Key(key).to_xpath())
+        if len(elements) > 0:
+            return True
+        return False
+        
+    
+class _Key(object):
+    """ A hierarchical configuration key. """
+    
+    def __init__(self, string):
+        """ Initialization. """
+        self.string = string
+        
+    def to_xpath(self):
+        """ Convert the key to XPath syntax. """
+        return self.string.replace('.', '/')
+        
+        
+class XMLConfiguration(HierarchicalConfiguration):
+    """ A XML-based hierarchical configuration. """
+    
+    def __init__(self, file_):
+        """ Initialization. """
+        from lxml import etree
+        HierarchicalConfiguration.__init__(self)
+        
+        self._root = etree.parse(file_)
+        
+        
+        
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/configuration_model.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,216 @@
+#============================================================================ 
+#Name        : configuration_model.py 
+#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:
+#===============================================================================
+
+import amara
+import logging
+import types
+import copy
+
+_logger = logging.getLogger('configurationmodel')
+#logging.basicConfig(level=logging.DEBUG)
+_handler = logging.StreamHandler()
+_handler.setFormatter(logging.Formatter('%(levelname)s: %(message)s'))
+_logger.addHandler(_handler)
+
+
+class PropertyDef(object):
+    """ The model definition of a property. """
+    
+    def __init__(self, property_node):
+        """ Initialization. """
+        if not hasattr(property_node, 'name'):
+            raise Exception("Name is not defined for '" + str(property_node) + "'")
+        if not hasattr(property_node, 'type'):
+            raise Exception("Type is not defined for '" + str(property_node.name) + "'")
+        if not hasattr(property_node, 'description'):
+            raise Exception("Description is not defined for '" + str(property_node.name) + "'")
+            
+        self.name = str(property_node.name)
+        self.editStatus = str(property_node.editStatus)
+        self.type = str(property_node.type)
+        self.description = str(property_node.description).strip()
+        
+        if len(self.description) == 0:
+            _logger.log(logging.ERROR, "Description has no content for '" + str(property_node.name) + "'")
+        
+        if hasattr(property_node, 'deprecated'):
+            self.deprecated = str(property_node.deprecated)
+                        
+    def __repr__(self):
+        return self.name
+        
+    def __str__(self):
+        return self.name
+    
+    
+class GroupDef(object):
+    """ The model definition of a group of properties. """
+    def __init__(self, group_node):
+        """ Initialization. """
+        self.name = str(group_node.name)
+        self.description = str(group_node.description)
+        self.properties = {}
+        self.propref = []
+        for property_ in group_node.propertyRef:
+            self.properties[str(property_)] = property_.usage
+            
+    def check_config(self, config, items):
+        """ Checks that the set of properties in a group are properly defined. """
+        defined_props = [p for p in self.properties.keys() if config.has_key(p)]
+        if len(defined_props) > 0:
+            required_props = [p for p in self.properties.keys() if self.properties[p] == 'required']
+            required_not_defined_props = set(required_props).difference(set(defined_props))
+            for undefined_property in required_not_defined_props:
+                items.append(UndefinedRequiredInGroupItem((self.name, undefined_property)))
+        
+        
+class DataModel(object):
+    """ A model of the configuration properties. """
+    def __init__(self, modelpath):
+        """ Initialization. """
+        doc = amara.parse(open(modelpath, 'r'))
+        
+        self.properties = {}
+        self.required_props = []
+        for property_ in doc.heliumDataModel.property:
+            self.properties[str(property_.name)] = PropertyDef(property_)
+                   
+        self.nongroupedproperties = copy.copy(self.properties)
+        self.groups = {}
+        for group in doc.heliumDataModel.group:
+            groupobj = GroupDef(group)
+            self.groups[str(group.name)] = groupobj
+            
+            for prop in groupobj.properties:
+                groupobj.propref.append(self.properties[prop])
+                if prop in self.nongroupedproperties:
+                    del self.nongroupedproperties[prop]
+                    
+            groupobj.propref.sort()
+            
+            required_props_in_group = [p for p in group.propertyRef if p.usage == 'required']
+            
+            for required_prop in required_props_in_group:
+                self.required_props.append(required_prop)
+                if not self.properties.has_key(str(required_prop)):
+                    raise Exception("Required property " + str(required_prop) + " is not defined!")
+        
+    def validate_config(self, config):
+        """ Validate the Ant configuration against the model. """
+        items = []
+        self._check_deprecated_properties(config, items)
+        self._check_undefined_properties(config, items)
+        self._check_undefined_properties_in_groups(config, items)
+        self._check_type_validation(config, items)
+        self._check_defined_properties_not_in_groups(config, items)
+        return items
+    
+    def validate_config_at_startup(self, config):
+        """ Validate the Ant configuration against the model at build startup. """
+        items = []
+        
+        for p in self.required_props:
+            if not config.has_key(str(p)):
+                print "Required property " + str(p) + " is not defined!"
+        
+        return items
+    
+    def _check_deprecated_properties(self, config, items):
+        """ Check that deprecated properties not being used. """
+        deprecated_props = [p for p in self.properties.values() if hasattr(p, 'deprecated')]
+        for deprecated_prop in deprecated_props:
+            _logger.debug('Checking deprecated property: ' + str(deprecated_prop))
+            if config.has_key(str(deprecated_prop)):
+                items.append(UsingDeprecatedItem(deprecated_prop))
+    
+    def _check_undefined_properties(self, config, items):
+        """ Check for any defined properties that are not in the model. """ 
+        undefined_properties = [p for p in config.keys() if p not in self.properties]
+        undefined_properties.sort()
+        for undefined_property in undefined_properties:
+            items.append(MissingFromDataModelItem(undefined_property))
+
+    def _check_undefined_properties_in_groups(self, config, items):
+        for group in self.groups.values():
+            _logger.debug('Checking group: %s' % group.name)
+            group.check_config(config, items)
+    
+    def _check_defined_properties_not_in_groups(self, config, items):
+        gp = []
+        for group in self.groups.values():
+            gp = gp + group.properties.keys()
+        for p in self.properties.values():
+            if not str(p) in gp:
+                raise Exception(str(p) + ' not in a group')
+    
+    def _check_type_validation(self, config, items):
+        prop_string = [p for p in self.properties.values() if p.type == 'string']
+        prop_integer = [p for p in self.properties.values() if p.type == 'integer']
+        prop_boolean = [p for p in self.properties.values() if p.type == 'boolean']
+        prop_flag = [p for p in self.properties.values() if p.type == 'flag']
+        
+        for prop in prop_integer:
+            if config.has_key(str(prop)):
+                if not config[str(prop)].isdigit():
+                    items.append(WrongTypeItem(("integer", prop)))            
+               
+        for prop in prop_boolean:
+            if config.has_key(str(prop)) :
+                if not (config[str(prop)] == 'false' or 'true'):
+                    items.append(WrongTypeItem(("boolean", prop)))
+                    
+        for prop in prop_string:
+            if config.has_key(str(prop)):
+                if len(config[str(prop)]) == 0:
+                    items.append(WrongTypeItem(("string", prop)))
+
+        
+class Item(object):
+    level = logging.INFO
+    message = ''
+
+    def __init__(self, values):
+        """ Initialization. """
+        self.values = values
+    
+    def log(self, logger):
+        logger.log(self.level, str(self))
+        
+    def __str__(self):
+        return self.message % self.values
+
+
+class MissingFromDataModelItem(Item):
+    level = logging.INFO
+    message = 'Property not in data model: %s'
+
+    
+class UsingDeprecatedItem(Item):
+    level = logging.WARNING
+    message = 'Deprecated property used: %s'
+
+
+class UndefinedRequiredInGroupItem(Item):
+    level = logging.WARNING
+    message = 'Required property in %s group is not defined: %s'
+
+    
+class WrongTypeItem(Item):
+    level = logging.WARNING
+    message = 'Invalid %s value: %s'
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/ctc.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,74 @@
+#============================================================================ 
+#Name        : ctc.py 
+#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:
+#===============================================================================
+
+import os
+import ftplib
+
+
+class MonSymFTPUploader:
+    """ This class implement an uploader for MON.SYM file. """
+    
+    def __init__(self, server, paths, diamondsid):
+        """ Upload the files discovered under the paths,
+            and upload them under the FTP server.
+        """
+        self.server = server
+        self.paths = paths
+        self.diamondsid = diamondsid
+        self.ftp = None
+    
+    def upload(self):
+        self._open()
+        """ Proceed to the upload. """
+        monsyms = []
+        i = 1
+        for p in self.paths:
+            if os.path.exists(p) and os.path.isfile(p):
+                # ftp://1.2.3.4/ctc_helium/[diamonds_id]/mon_syms/2/mon.sym
+                outputdir = "ctc_helium/%s/mon_syms/%d" % (self.diamondsid , i)
+                output = outputdir + "/MON.SYM"
+                self._ftpmkdirs(outputdir)
+                print "Copying %s under %s" % (p, output)
+                self._send(p, output)
+                monsyms.append(output)
+                i += 1
+        self._close()
+        return monsyms
+
+    def _open(self):
+        self.ftp = ftplib.FTP(self.server, 'anonymous', '')
+    
+    def _close(self):
+        self.ftp.quit()
+
+    def _ftpmkdirs(self, dir):
+        pwd = self.ftp.pwd()
+        for d in dir.split('/'):
+            if len(d)!=0:
+                try:
+                    print "Creating %s under %s" % (d, self.ftp.pwd())
+                    self.ftp.mkd(d)
+                except ftplib.error_perm, exc:
+                    pass
+                self.ftp.cwd(d)
+        self.ftp.cwd(pwd)
+    
+    def _send(self, src, dst):
+        self.ftp.storbinary("STOR " + dst, open(src, "rb"), 1024)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/dataurl.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,35 @@
+#============================================================================ 
+#Name        : dataurl.py 
+#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:
+#===============================================================================
+
+""" This module implements method to create dataurl """
+import mimetypes
+import base64
+import urllib
+
+def from_url(url):
+    """ This function returns a data url using content pointed by url. """
+    (mimetype, encoding) = mimetypes.guess_type(url)
+    if mimetype == None:
+        return url
+    if encoding != None:
+        encoding = "charset=%s;" % encoding
+    else:
+        encoding = ""
+    data = urllib.urlopen(url).read()
+    return "data:%s;%sbase64,%s" % (mimetype, encoding, base64.encodestring(data).replace("\n",""))
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/delta_zip.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,375 @@
+#============================================================================ 
+#Name        : delta_zip.py 
+#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:
+#===============================================================================
+
+import os
+import shutil
+import re
+import fileutils
+import buildtools
+import logging
+
+_logger = logging.getLogger('delta_zip')
+logging.basicConfig(level=logging.INFO)
+
+class MD5SignatureBuilder(object):
+    """ MD5 CRC creation base class"""
+    def __init__(self, build_area_root, nb_split, temp_dir, exclude_dirs, list_of_files):
+        """constructor"""
+        if not build_area_root.endswith(os.sep):
+            self.build_area_root = build_area_root + os.sep
+        self.nb_split = int(nb_split)
+        self.temp_dir = temp_dir
+        self.exclude_dirs = exclude_dirs
+        self.list_of_files = list_of_files
+        
+    def create_file_list(self):
+        """Create list of files (was list_files.pl)"""
+        #list_of_files_symbol = os.path.join(self.temp_dir, "list_files_sym.txt")
+        
+        if not os.path.exists(self.temp_dir):
+            os.mkdir(self.temp_dir)
+      
+        fp_filelist = open(self.list_of_files, 'w')
+        #fp_filelist_sym = open(list_of_files_symbol, 'w')
+                        
+        scanner = fileutils.FileScanner(self.build_area_root)
+        scanner.add_include('**')
+        
+        for _dir in self.exclude_dirs.split(','):
+            _dir = _dir.replace(self.build_area_root, "")
+            scanner.add_exclude(_dir)
+
+        for path in scanner.scan():
+            if (not os.path.isdir(path)) or (os.path.isdir(path) and (os.listdir(path) != []  and os.listdir(path) != ['.svn'])):
+                (drive, _) = os.path.splitdrive(path)
+                path = path.replace(drive + os.sep, "")
+                fp_filelist.write(path + "\n")
+            
+    def split_file_list(self):
+        """Split the list of files for parallelalisation"""
+        md5_dir = os.path.join(self.temp_dir, "md5_temp")
+        self.dest_dir = os.path.join(md5_dir, str(self.nb_split))
+        if not os.path.exists(self.dest_dir):
+            os.makedirs(self.dest_dir)
+        fp_split = []
+        #Open files
+        #White list_of_lists.txt
+        self.list_of_lists = self.dest_dir + "/list_of_lists.txt"
+        fp_list_of_lists = open(self.list_of_lists, 'w')
+        for i in range(self.nb_split):
+            filename = self.dest_dir + "/" + str(i) + ".txt"
+            _fp = open(filename, 'w')
+            fp_split.append(_fp)
+            #Write in list_of_lists
+            fp_list_of_lists.write(filename + "\n")
+            
+        #Write in files
+        fp_read = open(self.list_of_files, 'r') 
+        line = fp_read.readline()
+        line_number = 0
+        while(line != ""):
+            fp_split[line_number % len(fp_split)].write(line)
+            line = fp_read.readline()
+            line_number += 1
+        
+        fp_list_of_lists.close()    
+        fp_read.close()
+        for _fp in fp_split:
+            _fp.close()
+            
+    def create_command_list(self):        
+        """ create the command to run evalid on each file in the list of files"""
+        liste = buildtools.CommandList()
+        
+        #tools_dir = os.path.join(self.build_area_root, "/epoc32/tools")
+        
+        for i in range(self.nb_split):
+            #liste.addCommand(buildtools.Command("perl -I"+tools_dir, tools_dir, [os.path.join(tools_dir,"evalid_multiple.pl"), "-f", self.__get_partial_input_file_name(i), "> "+self.__get_partial_signature_file_name(i) ]))
+            liste.addCommand(buildtools.Command("evalid", os.sep, ["", "-f", self.__get_partial_input_file_name(i) + " "+self.build_area_root, self.__get_partial_signature_file_name(i) ]))
+            
+        return liste
+    
+    def __get_partial_input_file_name(self, _nb):
+        """ get the input file name string as has been created so far and add .txt to it"""
+        return os.path.join(self.dest_dir, str(_nb) + ".txt")
+            
+    def __get_partial_signature_file_name(self, _nb):
+        """ get the signature file name string as has been created so far and add .md5 to it"""
+        return os.path.join(self.dest_dir, str(_nb) + ".md5")
+        
+    def concatenate_signature_files(self, signature_file):
+        """ concatenate all the files with the MD5 CRC in """
+        # Get header
+        _fp = open(self.__get_partial_signature_file_name(0), 'r')
+        line = ""
+        header_temp = ""
+        header = ""
+        while (re.search(r'(\S+).*MD5=(\S+)', line) == None):
+            header_temp = header_temp + line
+            line = _fp.readline()
+        
+        for line in header_temp.splitlines():
+            if re.match(r'Directory:.*', line):
+                line =  "Directory:" + self.build_area_root
+            if re.match(r'FileList:.*', line):
+                line = "FileList:" + self.list_of_files
+            header = header + line + "\n"
+        
+        #re.sub(r'(Directory:).*\n', "\1"+self.build_area_root, header)
+        #re.sub(r'(FileList:).*\n', "\1"+self.list_of_files, header)
+            
+        header_size = len(header.splitlines())
+        
+        fp_md5_signatures_file = open(signature_file, 'w')
+        fp_md5_signatures_file.write(header)
+        for i in range(self.nb_split):
+            _fp = open(self.__get_partial_signature_file_name(i), 'r')
+
+            for i in range(header_size): # Skip header
+                _fp.readline()
+            
+            fp_md5_signatures_file.write(_fp.read())
+            _fp.close()
+        fp_md5_signatures_file.close()
+
+    def write_build_file(self):
+        """ create the file of the list of files to have a CRC created"""
+        self.create_file_list()
+        self.split_file_list()
+        self.create_build_file()
+    
+    def create_build_file(self):
+        """ there should always be an overloaded version of this method in sub-classes"""
+        raise NotImplementedError()
+    
+    def build(self, signature_file):
+        """create the list of files generate the MD5 CRC and create the final file with CRCs in"""
+        self.write_build_file()
+        self.compute_evalid_MD5()
+        self.concatenate_signature_files(signature_file)
+            
+    def compute_evalid_MD5(self):
+        """ there should always be an overlaoded version in the methos sub-class"""
+        raise NotImplementedError()
+    
+class MD5SignatureBuilderEBS(MD5SignatureBuilder):
+    """ build the MD5 CRCs for all the files in the list of files"""
+    def create_build_file(self):
+        """Create EBS XML"""
+        liste = self.create_command_list()
+        self.makefile = self.dest_dir + "/ebs.xml"
+        buildtools.convert(liste, self.makefile, "ebs")
+
+    def compute_evalid_MD5(self):
+        """Compute MD5 using the requested parallel build system"""
+        os.chdir(self.build_area_root)
+        os.system("perl -I%HELIUM_HOME%/tools/common/packages %HELIUM_HOME%/tools/compile/buildjob.pl -d " + self.makefile + " -l " + os.path.join(self.dest_dir, "md5.log") + " -n " + str(int(os.environ['NUMBER_OF_PROCESSORS'])*2))
+
+"""
+Run the delta zipping over the EC build system
+"""
+class MD5SignatureBuilderEC(MD5SignatureBuilder):
+    """ The MD5 CRC creation for delta zippinf for use on EC machines"""
+    def __init__(self, build_area_root, nb_split, temp_dir, exclude_dirs, ec_cluster_manager, ec_build_class, list_of_files):
+        MD5SignatureBuilder.__init__(self, build_area_root, nb_split, temp_dir, exclude_dirs, list_of_files)
+        self.ec_cluster_manager = ec_cluster_manager
+        self.ec_build_class = ec_build_class
+    
+    def create_build_file(self):
+        """Create makefile"""
+        liste = self.create_command_list()
+        self.makefile = self.dest_dir + "/Makefile"
+        buildtools.convert(liste, self.makefile, "make")
+
+    def compute_evalid_MD5(self):
+        """Compute MD5 using the requested parallel build system"""
+        root_path = os.environ['EMAKE_ROOT'] +";" + "c:\\apps;"
+        os.chdir(self.build_area_root)
+        
+        print "emake --emake-cm=" + self.ec_cluster_manager + " --emake-class=" + self.ec_build_class + " --emake-root="+root_path+ " --emake-emulation-table make=symbian,emake=symbian,nmake=nmake -f " + self.makefile
+        os.system("emake --emake-cm=" + self.ec_cluster_manager + " --emake-annodetail=basic,history,file,waiting --emake-annofile="+self.temp_dir+"\\delta_zip_anno.xml"+ " --emake-class=" + self.ec_build_class + " --emake-root="+root_path+" --emake-emulation-table make=symbian,emake=symbian,nmake=nmake -f " + self.makefile)
+
+class DeltaZipBuilder(object):
+    """methods to create the delta zip after all the prep"""
+    def __init__(self, build_area_root, temp_path, old_md5_signature, new_md5_signature):
+        self.build_area_root = os.path.join(build_area_root, os.sep)
+        self.temp_path = temp_path
+        self.old_md5_signature = old_md5_signature
+        self.new_md5_signature = new_md5_signature
+        self.sign_dic = SignaturesDict()
+        
+    def __fill_signature_dict(self, signature_file, old_new):
+        """ read each line of signature file search for .MD5"""
+        _fp = open(signature_file, 'r')
+        lines = _fp.read().splitlines()
+        _fp.close()
+        for line in lines:
+            info = re.search(r'([ \S]+) TYPE=.*MD5=(\S+)', line)
+            if info != None:
+                filename = info.group(1)
+                if not self.sign_dic.has_key(filename):
+                    self.sign_dic[filename] = ["", ""]
+                self.sign_dic[filename][old_new] = info.group(2)                
+    
+    def create_delta_zip(self, zip_file, delete_list_file, no_of_zips, ant_file):
+        """Create Delta zip and list of file to delete."""
+        
+        no_of_zips = int(no_of_zips)
+        self.__fill_signature_dict(self.old_md5_signature, 0)
+        self.__fill_signature_dict(self.new_md5_signature, 1)
+        
+        #fp_dic = open(zip_file + ".dic.txt", 'w')
+        #fp_dic.write(str(self.sign_dic))
+        #fp_dic.close()
+        
+        delete_list = []
+        
+        if not os.path.exists(os.path.dirname(delete_list_file)):
+            os.mkdir(os.path.dirname(delete_list_file))
+        if not os.path.exists(self.temp_path):
+            os.mkdir(self.temp_path)
+        
+        archive_txt = open(os.path.join(self.temp_path, 'create_zips.txt'), 'w')
+
+        for _file in self.sign_dic.keys():
+            filepath = os.path.join(self.build_area_root, _file)
+            
+            signatures = self.sign_dic[_file]
+            
+            ( _, rest) = os.path.splitdrive(filepath)
+            (frontpath, rest) = os.path.split(rest)
+            
+            if (signatures[0] != signatures[1]):  #File changed between the 2 BAs
+                if (signatures[0] != "") and  (signatures[1] != ""): # File is present in both BAs and has changed
+                    if os.path.exists(filepath): # File could have been deleting after running 'build-md5':
+                        archive_txt.write(_file + "\n")
+                else:
+                    if (signatures[1] != ""): # New file
+                        if os.path.exists(filepath):
+                            archive_txt.write(_file + "\n")
+                    else: # Deleted file
+                        delete_list.append(filepath)
+        
+        archive_txt.close()
+        
+        splitter = MD5SignatureBuilder('', no_of_zips, self.temp_path, '', os.path.join(self.temp_path, 'create_zips.txt'))
+        splitter.split_file_list()
+        
+        os.chdir(self.build_area_root)
+        
+        (frontpath, rest) = os.path.split(zip_file)
+        stages = buildtools.CommandList()
+        
+        for i in range(no_of_zips):
+            md5_dir = os.path.join(self.temp_path, "md5_temp")
+            path = os.path.join(md5_dir, os.path.join(str(no_of_zips), str(i) + '.txt'))
+            output = os.path.join(frontpath, rest.replace(".zip", "_part_%sof%s.zip" % (str(i+1), str(no_of_zips))))
+            
+            cmd = buildtools.Command('7za.exe', self.build_area_root)
+            cmd.addArg('a')
+            # Set the format to be zip-compatible
+            cmd.addArg('-tzip')
+            cmd.addArg(output)
+            cmd.addArg('@' + path)
+            
+            stages.addCommand(cmd)
+
+        writer = buildtools.AntWriter(ant_file)
+        writer.write(stages)
+
+        fp_delete = open(delete_list_file, 'w')
+        fp_delete.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n")
+        fp_delete.write("<updateinstructions>\n")
+        for i in delete_list:
+            fp_delete.write("<deletefileaction target=\"" + i[2:] + "\"/>\n")
+        fp_delete.write("</updateinstructions>\n")
+        fp_delete.close()
+        
+                
+class SignaturesDict(dict):
+    """ class to handle signature comparison"""
+    def __init__(self):
+        """ constructor"""
+        dict.__init__(self)
+    
+    def __str__(self):
+        """ compare the tree structures"""
+        string = ""
+        #o = OldNewBA()
+        both = False
+        only_old = False
+        only_new = False
+        for filename in self.keys():
+            signatures = self[filename]
+            if signatures[0] == signatures[1]: #File did not change
+                both = True
+            elif (signatures[0] != "") and  (signatures[1] != ""): # File is present in both BAs and has changed
+                both = False
+            else:
+                if (signatures[1] != ""): # New file
+                    only_old = True
+                else: # Deleted file
+                    only_new = True
+            
+            string = string + filename + " " + str(both) + " " + " " + str(only_old) + " " + str(only_new) + " " + self[filename][0] + " " + self[filename][1] + "\n"
+        
+        return string
+
+def readEvalid(dir):
+    filesdict = {}
+    for root, _, files in os.walk(dir):
+        for name in files:
+            f = os.path.join(root, name)
+            directory = None
+            for md5line in open(f):
+                if md5line.startswith('Directory:'):
+                    directory = md5line.replace('Directory:', '').replace('\n', '')
+                if 'MD5=' in md5line:
+                    info = re.search(r'([ \S]+) TYPE=.*MD5=(\S+)', md5line)
+                    if info != None:
+                        assert directory
+                        filesdict[os.path.join(directory, info.group(1))] = info.group(2)
+    return filesdict
+    
+def changedFiles(atsevalidpre, atsevalidpost):
+    filesbefore = readEvalid(atsevalidpre)
+    filesafter = readEvalid(atsevalidpost)
+    
+    changedfiles = []
+    
+    for key in filesafter.keys():
+        if key not in filesbefore:
+            changedfiles.append(key)
+        else:
+            if filesafter[key] != filesbefore[key]:
+                changedfiles.append(key)
+    
+    return changedfiles
+    
+def evalidAdomapping(builddrive, dest, adomappingfile):
+    os.chdir(builddrive)
+    i = 0
+    if os.path.exists(dest):
+        shutil.rmtree(dest)
+    os.mkdir(dest)
+    for line in open(adomappingfile):
+        dir = line.split('=')[0].replace(r'\:', ':')
+        tmpfile = os.path.join(dest, str(i))
+        os.system('evalid -g ' + dir + ' ' + tmpfile)
+        i = i + 1
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/dependancygraph.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,355 @@
+#============================================================================ 
+#Name        : dependancygraph.py
+#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:
+#===============================================================================
+
+import os
+import amara
+import codecs
+import zipfile
+
+class Library:
+    def __init__(self, name, license, version=''):
+        self.name = name
+        self.license = license
+        self.version = version
+        self.requires = []
+
+class ModuleGroup:
+    def __init__(self):
+        self.libraries = {}
+    def addConf(self, name, des, color):
+        self.libraries[name] = (des, [], color)
+    def addLibrary(self, conf, library):
+        for lib in self.getLibraries(conf):
+            if lib.name.lower() == library.name.lower():
+                lib.license = library.license
+                return
+        self.getLibraries(conf).append(library)
+    def getLibraries(self, conf):
+        (_, libs, _) = self.libraries[conf]
+        return libs
+    def getDescription(self, conf):
+        (des, _, _) = self.libraries[conf]
+        return des
+    def getColor(self, conf):
+        (_, _, color) = self.libraries[conf]
+        return color
+
+COLORS = ['pink', 'red', 'lightblue', 'orange', 'green', 'yellow', 'turquoise', 'limegreen']
+
+class ReadIvyConfig:
+    def __init__(self, ivyfilename):
+        self.ivyfilename = ivyfilename
+        self.ivyxml = amara.parse(open(ivyfilename))
+        self.group = ModuleGroup()
+
+    def readConfigurations(self):
+        for conf in self.ivyxml['ivy-module'].configurations.conf:
+            color = COLORS.pop()
+            self.group.addConf(conf.name, conf.description, color)
+
+    def readModules(self):
+        license = ''
+        for module in self.ivyxml['ivy-module'].dependencies.xml_children:
+            if hasattr(module, 'data'):
+                if 'License:' in module.data:
+                    license = module.data.strip()
+            elif hasattr(module, 'name'):
+                modulename = module.name.replace('-', '_')
+            
+                if module.org != 'SWEPT':
+                    self.group.addLibrary(module.conf, Library(modulename, license))
+                    license = ''
+
+    def readSubModules(self):
+        for module in self.ivyxml['ivy-module'].dependencies.xml_children:
+            if hasattr(module, 'name'):
+                if 'jars' in module.name:
+                    ivydir = os.path.dirname(self.ivyfilename)
+                    ivydir = os.path.join(ivydir, 'modules')
+                    ivyjarfile = os.path.join(ivydir, module.name + '-1.0.ivy.xml')
+                    ivymodulexml = amara.parse(open(ivyjarfile))
+                    license = ''
+                    for artifact in ivymodulexml['ivy-module'].publications.xml_children:
+                        if hasattr(artifact, 'data'):
+                            if 'License:' in artifact.data:
+                                license = artifact.data.strip()
+                        elif hasattr(artifact, 'name'):
+                            bits = artifact.name.split('-')
+                            name = bits[0]
+                            version = ''
+                            if len(bits) > 1:
+                                version = bits[1]
+                            self.group.addLibrary(module.conf, Library(name, license, version))
+                            license = ''
+
+PYTHON_GROUP = True
+SUBCON_PYTHON_GROUP = False
+
+def readEggs(libraries, dirtosearch, internaldir):
+    libraries.addConf(PYTHON_GROUP, 'Python libs', libraries.getColor('core_install'))
+    libraries.addConf(SUBCON_PYTHON_GROUP, 'Python subcon libs', libraries.getColor('subcon'))
+    
+    for x in [os.walk(dirtosearch, topdown=False), os.walk(internaldir, topdown=False)]:
+        for root, _, files in x:
+            notinsubcon = os.path.normpath(internaldir) in os.path.normpath(root)
+            
+            for fname in files:
+                filename = os.path.join(root, fname)
+                if fname == 'PKG-INFO':
+                    pkgmetafile = open(filename)
+                    library = readPkgInfo(pkgmetafile)
+                    pkgmetafile.close()
+                    
+                    requirefilename = os.path.join(filename, '..', 'requires.txt')
+                    if os.path.exists(requirefilename):
+                        requiresfile = open(requirefilename)
+                        readRequiresFile(requiresfile, library)
+                        requiresfile.close()
+                        
+                    libraries.addLibrary(notinsubcon, library)
+                    
+                if os.path.isfile(filename) and fname.endswith('.egg'):
+                    eggfile = zipfile.ZipFile(filename, 'r', zipfile.ZIP_DEFLATED)
+                    
+                    data = eggfile.read('EGG-INFO/PKG-INFO')
+                    
+                    library = readPkgInfo(data.split('\n'))
+                    
+                    if 'EGG-INFO/requires.txt' in eggfile.namelist():
+                        requiresdata = eggfile.read('EGG-INFO/requires.txt')
+                        readRequiresFile(requiresdata.split('\n'), library)
+                        
+                    libraries.addLibrary(notinsubcon, library)
+                    
+                    eggfile.close()
+
+def readRequiresFile(data, library):
+    for line in data:
+        line = line.strip()
+        if line != '' and not (line.startswith('[') and line.endswith(']')):
+            library.requires.append(line.split('>=')[0].strip())
+
+def readPkgInfo(data):
+    name = ''
+    version = ''
+    license = ''
+    license2 = ''
+  
+    for line in data:
+        if 'Name:' in line:
+            name = line.strip().replace('Name: ', '')
+        if 'Version:' in line:
+            version = line.strip().replace('Version: ', '')
+        if 'License:' in line:
+            license = line.strip().replace('License: ', '')                    
+        if 'Classifier: License :: ' in line:
+            license2 = license2 + ' ' + line.strip().replace('Classifier: License :: ', '').replace('OSI Approved :: ', '')
+    
+    if license.lower() == 'unknown' or license == '' or license2 != '':
+        license = license2
+    
+    return Library(name, license, version)
+
+def addLicensesColors(graphdata, group):
+    newgraphdata = []
+    for line in graphdata:
+        newline = line
+        for conf in group.libraries:
+            for module in group.getLibraries(conf):
+                if module.name.lower() in line.lower() and 'label=' in line:
+                    newline = line.replace('label=', 'color=%s,label=' % group.getColor(conf))
+                    
+                    if module.license != '':
+                        newline = newline.replace("\"];", "|%s\"];" % module.license)
+                    
+                    break
+        newgraphdata.append(newline)
+    return newgraphdata
+    
+def createKey(group):
+    key = """subgraph cluster1 {
+    label = "Key";
+    style=filled;
+    color=lightgrey;
+    """
+    
+    for conf in group.libraries:
+        if conf != PYTHON_GROUP and conf != SUBCON_PYTHON_GROUP:
+            key = key + "\"%s: %s\" [style=filled,color=%s];" % (conf, group.getDescription(conf), group.getColor(conf))
+    
+    key = key + "}"
+    return key
+
+def createGraph(ivyxmlfilename, graphfilename, dirtosearch, internaldir, subcon):
+    readivy = ReadIvyConfig(ivyxmlfilename)
+    readivy.readConfigurations()
+    readivy.readModules()
+    readivy.readSubModules()
+    
+    group = readivy.group
+    
+    readEggs(group, dirtosearch, internaldir)
+    
+    key = createKey(group)
+    
+    graphdata = loadGraphFile(graphfilename)
+    
+    newgraphdata = addLicensesColors(graphdata, group)
+    
+    #add key to graph
+    newgraphdata[-1] = newgraphdata[-1].replace('}', key + '\n}')
+    
+    graphwritefile = codecs.open(graphfilename, 'w', 'utf8')
+    graphwritefile.writelines(newgraphdata)
+    graphwritefile.close()
+    
+    linkPythonLibs(group, graphfilename, subcon)
+
+def loadGraphFile(graphfilename):
+    destgraphfile = codecs.open(graphfilename, 'r', 'utf8')
+    graphdata = []
+    for line in destgraphfile:
+        graphdata.append(line)
+    destgraphfile.close()
+    return graphdata
+
+def addToGraph(graphfilenametoadd, destgraphfilename):
+    graphdata = loadGraphFile(destgraphfilename)
+    
+    graphfile = codecs.open(graphfilenametoadd, 'r', 'utf8')
+    graphdatatoadd = ''
+    for line in graphfile:
+        line = line.replace('digraph {', '')
+        graphdatatoadd = graphdatatoadd + line
+    graphfile.close()
+    
+    graphdata[-1] = graphdata[-1].replace('}', graphdatatoadd)
+    
+    graphwritefile = codecs.open(destgraphfilename, 'w', 'utf8')
+    graphwritefile.writelines(graphdata)
+    graphwritefile.close()
+
+def linkPythonLibs(libraries, destgraphfilename, subcon):    
+    graphdata = loadGraphFile(destgraphfilename)
+  
+    output = "helium_ant -> helium_python;\n"
+    
+    if subcon:
+        list = [SUBCON_PYTHON_GROUP]
+    else:
+        list = [SUBCON_PYTHON_GROUP, PYTHON_GROUP]
+    
+    for group in list:
+        for lib in libraries.getLibraries(group):
+            output = output + ("helium_python -> \"%s\";\n" % lib.name)
+            output = output + ("\"%s\" [style=filled,shape=record,color=%s,label=\"%s %s|%s\"];\n" % (lib.name, libraries.getColor(group), lib.name, lib.version, lib.license))
+            
+            for require in lib.requires:
+                output = output + ("\"%s\" -> \"%s\";\n" % (lib.name, require))
+    
+    graphdata.reverse()
+    for line in graphdata:
+        if line.strip() == '':
+            graphdata.pop(0)
+        else:
+            break
+    graphdata.reverse()
+    
+    graphdata[-1] = graphdata[-1].replace('}', output + '}')
+    
+    graphwritefile = codecs.open(destgraphfilename, 'w', 'utf8')
+    graphwritefile.writelines(graphdata)
+    graphwritefile.close()
+
+def externalDependancies(database, output):
+    out = open(output, 'w')
+    db = amara.parse(open(database))
+    out.write('digraph G {\n')
+    for p in db.antDatabase.project:
+        items = []
+        if hasattr(p, 'property'):
+            for prop in p.property:
+                if 'external' + os.sep in os.path.abspath(str(prop.defaultValue)):
+                    items.append(str(prop.defaultValue))
+        if hasattr(p, 'fileDependency'):
+            for dep in p.fileDependency:
+                dep = str(dep).split(' ')[0]
+                if 'external' + os.sep in os.path.abspath(str(dep)):
+                    items.append(str(dep))
+                    
+        items = set(items)
+        for i in items:
+            out.write('\"%s\" -> \"%s\"\n' % (str(p.name), i.replace(os.environ['HELIUM_HOME'], 'helium').replace(os.sep, '/')))
+    out.write('}')                
+    out.close()
+
+def appendLogs(t, p, output, macro=False):
+    if hasattr(t, 'signal'):
+        for signal in t.signal:
+            if macro:
+                output.append("\"%s\" [fontname=\"Times-Italic\"];" % str(t.name))
+            output.append('subgraph \"cluster%s\" {label = \"%s\"; \"%s\"}\n' % (str(p.name), str(p.name), str(t.name)))
+            s = str(signal).split(',')
+            if len(s) > 1:
+                if s[1] == 'now':
+                    color = 'red'
+                elif s[1] == 'defer':
+                    color = 'yellow'
+                else:
+                    color = 'green'
+                output.append('subgraph \"cluster%s\" {color=%s;style=filled;label = \"Failbuild: %s\"; \"%s\"}\n' % (str(s[1]), color, str(s[1]), str(s[0])))
+            output.append('\"%s\" -> \"%s\" [style=dotted]\n' % (str(t.name), str(s[0])))
+    if hasattr(t, 'log'):
+        for log in t.log:
+            logdir = '/output/logs/'
+            logname = os.path.basename(str(log))
+            if not ('**' in logname):
+                logname = logname.replace('*', '${sysdef.configuration}').replace('--logfile=', '')
+                if not logdir in logname:
+                    logname = logdir + logname
+                logname = logname.replace(os.sep, '/')
+                
+                if macro:
+                    output.append("\"%s\" [fontname=\"Times-Italic\"];" % str(t.name))
+                output.append('subgraph \"cluster%s\" {label = \"%s\"; \"%s\"}\n' % (str(p.name), str(p.name), str(t.name)))
+                output.append('\"%s\" -> \"%s\"\n' % (str(t.name), logname))
+
+def findLogFiles(database, output):
+    out = open(output, 'w')
+    db = amara.parse(open(database))
+    out.write('digraph G {\n')
+    output = []
+    
+    root_objects = []
+    for project in db.antDatabase.project:
+        root_objects.append(project)
+    for antlib in db.antDatabase.antlib:
+        root_objects.append(antlib)
+    for p in root_objects:
+        if hasattr(p, 'macro'):
+            for t in p.macro:
+                appendLogs(t, p, output, True)
+        if hasattr(p, 'target'):
+            for t in p.target:
+                appendLogs(t, p, output)
+    for l in set(output):
+        out.write(l)
+    out.write('}')                
+    out.close()
+    
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/docs.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,60 @@
+#============================================================================ 
+#Name        : docs.py 
+#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:
+#===============================================================================
+
+""" Modules related to documentation """
+
+from __future__ import with_statement
+import re
+import os
+import amara
+
+def find_python_dependencies(setpath, dbPath, dbPrj):
+    """ Search python dependencies """
+    for root, dirs, files in os.walk(setpath, topdown=False):
+        for fname in files:
+            filePattern = re.compile('.ant.xml$')
+            fileMatch = filePattern.search(fname)
+            modulelist = []
+            if (fileMatch):
+                filePath = os.path.abspath(os.path.join(root, fname))
+                with open(filePath) as f:
+                    filePathAmara = 'file:///'+ filePath.replace('\\','/')
+                    curPrj=amara.parse(filePathAmara)
+                    for line in f:
+                        linePattern = re.compile('^import')
+                        lineMatch = linePattern.search(line)
+                        if ((lineMatch) and (line.find('.')==-1)):
+                            newLine = line.replace('import','')
+                            newLine = newLine.replace(',','')
+                            moduleArray = newLine.split()
+                            for curModule in moduleArray:
+                                try:
+                                    importModule = __import__(curModule)
+                                    if hasattr(importModule, '__file__'):
+                                        modulePath=importModule.__file__
+                                        if 'helium' in modulePath:
+                                            for projectList in dbPrj.antDatabase.project:
+                                                if (projectList.name == curPrj.project.name):
+                                                    if not (curModule in modulelist):
+                                                        print " Python module : " + curModule
+                                                        moduleElement = projectList.pythonDependency.xml_create_element(u'module', content=u''+curModule)
+                                                        projectList.pythonDependency.xml_append(moduleElement)
+                                                    modulelist = modulelist + [curModule]
+                                except ImportError, e:
+                                    pass
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/escapeddict.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,86 @@
+#============================================================================ 
+#Name        : escapeddict.py 
+#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:
+#===============================================================================
+
+""" This class enables developer to use ${xxx} pattern in their dict and 
+    get them replaced recursively.
+"""
+import re
+import types
+import UserDict
+
+
+class _CustomArray(list):
+    """ Internal class
+    """
+    def __str__(self):
+        string = ""
+        for elem in self:
+            string += " "+elem
+        return string
+
+
+class EscapedDict(UserDict.UserDict):
+    """ Implements a dictionary that escapes the key values recursively. """        
+    
+    def __init__(self, dict={}, failonerror=False):
+        UserDict.UserDict.__init__(self, dict)
+        self.__failonerror = failonerror
+        
+    def __getitem__(self, key):
+        """ Overrides the usual __getitem__ to insert values of other keys referenced in this key's
+        value. """
+        if key in self.data:
+            value = self.data[key]
+            result = value
+            if isinstance(value, types.ListType):
+                result = _CustomArray()
+                for elem in value:
+                    (string, changes) = re.subn(r'\${(?P<name>[._a-zA-Z0-9]+)}', r'%(\g<name>)s', elem)
+                    if changes > 0:
+                        result.append(string % self)
+                    else:
+                        result.append(elem)
+            else:
+                (string, changes) = re.subn(r'\${(?P<name>[._a-zA-Z0-9]+)}', r'%(\g<name>)s', value)
+                if changes > 0:
+                    result = string % self
+            return result
+        elif not self.__failonerror:
+            return "${%s}" % key
+        raise KeyError("Could not find key '%s'" % key)
+        
+
+
+def escapeString(input_string, config):
+    """ Escape a string recursively.
+    
+    :param input_string: the string to be escaped.
+    :param config: a dictionnary containing the values to escape.
+    :return: the escaped string.
+    """
+    data = EscapedDict(config)
+    match = re.search(r'\${(?P<name>[._a-zA-Z0-9]+)}', input_string)
+    if match != None:
+        for property_name in match.groups():
+            property_value = data[property_name]
+            property_value = re.sub(r'\\', r'\\\\', property_value)
+            input_string = re.sub('\${' + property_name + '}', property_value, input_string)
+    return input_string
+
+        
Binary file buildframework/helium/external/helium-antlib/python/pythoncore/lib/fileutils$py.class has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/fileutils.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,676 @@
+#============================================================================ 
+#Name        : fileutils.py 
+#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:
+#===============================================================================
+
+"""
+File manipulation related functionalities:
+ * Filescanner
+ * rmtree (fixed version)
+ * move (fixed version)
+"""
+import codecs
+import locale
+import logging
+import os
+import re
+import sys
+import shutil
+import hashlib
+import subprocess
+import string
+
+import pathaddition.match
+import stat
+
+if os.name == 'nt':
+    import win32api
+
+LOGGER = logging.getLogger('fileutils')
+LOGGER_LOCK = logging.getLogger('fileutils.lock')
+#LOGGER.addHandler(logging.FileHandler('default.log'))
+#logging.basicConfig(level=logging.DEBUG)
+#LOGGER.setLevel(logging.DEBUG)
+
+class AbstractScanner(object):
+    """ This class implements all the required infrastructure for filescanning. """
+
+    def __init__(self):
+        """ Initialization. """
+        self.includes = []
+        self.excludes = []
+        self.includes_files = []
+        self.excludes_files = []
+        self.selectors = []
+        self.filetypes = []
+
+    def add_include(self, include):
+        """ Adds an include path to the scanner. """
+        if include.endswith('/') or include.endswith('\\'):
+            include = include + '**'
+
+        self.includes.append(include)
+
+    def add_exclude(self, exclude):
+        """ Adds an exclude path to the scanner. """
+        if exclude.endswith('/') or exclude.endswith('\\'):
+            exclude = exclude + '**'
+
+        self.excludes.append(exclude)
+        
+    def add_exclude_file(self, exclude):
+        """ Adds an exclude file to the scanner. """
+        self.excludes_files.append(exclude)
+    
+    def add_selector(self, selector):
+        """ Add selector to the scanner. """
+        self.selectors.append(selector)
+        
+    def add_filetype(self, filetype):
+        """ Adds a filetype selection to the scanner. """
+        self.filetypes.append(filetype)
+
+    def is_included(self, path):
+        """ Returns if path is included by the scanner. """
+        LOGGER.debug("is_included: path = " + path)
+        if path.replace('\\', '/') in self.includes_files or path in self.includes_files:
+            return True
+        for inc in self.includes:
+            if self.match(path, inc):
+                LOGGER.debug("Included: " + path + " by " + inc)
+                return True
+        return False
+
+    def is_excluded(self, path):
+        """ Returns if path is excluded by the scanner. """
+        LOGGER.debug("is_excluded: path = " + path)
+        if path.replace('\\', '/') in self.excludes_files or path in self.excludes_files:
+            return True
+        for ex in self.excludes:
+            if self.match(path, ex):
+                LOGGER.debug("Excluded: " + path + " by " + ex)
+                return True
+        return False
+    
+    def is_selected(self, path):
+        """ Returns if path is selected by all selectors in the scanner. """
+        LOGGER.debug("is_selected: path = " + path)
+        for selector in self.selectors:
+            if not selector.is_selected(path):
+                return False
+        LOGGER.debug("Selected: " + path)
+        return True
+
+    def is_filetype(self, path):
+        """ Test if a file matches one filetype. """
+        if len(self.filetypes) == 0:
+            return True
+        LOGGER.debug("is_filetype: path = " + path)
+        for filetype in self.filetypes:
+            if self.match(path, filetype):
+                LOGGER.debug("Filetype: " + path + " by " + filetype)
+                return True
+        return False
+
+    def match(self, filename, pattern):
+        """ Is filename matching pattern? """
+        return pathaddition.match.ant_match(filename, pattern, casesensitive=(os.sep != '\\'))
+
+    def test_path(self, root, relpath):
+        """ Test if a path matches filetype, include, exclude, and selection process."""
+        return self.is_filetype(relpath) and self.is_included(relpath) \
+                         and not self.is_excluded(relpath) and \
+                         self.is_selected(os.path.join(root, relpath))
+
+    def __str__(self):
+        """ Returns a string representing this instance. """
+        content = []
+        for inc in self.includes:
+            content.append('include:' + os.path.normpath(inc))
+        for ex in self.excludes:
+            content.append('exclude:' + os.path.normpath(ex))
+        return ';'.join(content)
+
+    def __repr__(self):
+        """ Returns a string representing this instance. """
+        return self.__str__()
+
+    def scan(self):
+        """ Abstract method which much be overriden to implement the scanning process. """
+        raise Exception("scan method must be overriden")
+
+
+class FileScanner(AbstractScanner):
+    """Scans the filesystem for files that match the selection paths.
+
+    The scanner is configured with a root directory. Any number of include
+    and exclude paths can be added. The scan() method is a generator that
+    returns matching files one at a time when called as an iterator.
+
+    This is a revisited implementation of the filescanner. It now relies on
+    the module pathaddition.match that implements a Ant-like regular expression matcher.
+    
+    Rules:
+    - Includes and excludes should not start with *
+    - Includes and excludes should not have wildcard searches ending with ** (e.g. wildcard**)
+    
+    Supported includes and excludes:
+    - filename.txt
+    - filename.*
+    - dir/
+    - dir/*
+    - dir/**    
+    """
+    def __init__(self, root_dir):
+        """ Initialization. """
+        AbstractScanner.__init__(self)
+        self.root_dir = os.path.normpath(root_dir)
+        if not self.root_dir.endswith(os.sep):
+            self.root_dir = self.root_dir + os.sep
+        # Add 1 so the final path separator is removed
+        #self.root_dirLength = len(self.root_dir) + 1
+
+    def scan(self):
+        """ Scans the files required to zip"""
+        #paths_cache = []
+        
+        excludescopy = self.excludes[:]
+        for f in excludescopy:
+            if os.path.exists(os.path.normpath(os.path.join(self.root_dir, f))):
+                self.excludes_files.append(f)
+                self.excludes.remove(f)
+        
+        includescopy = self.includes[:]
+        for f in includescopy:
+            if os.path.exists(os.path.normpath(os.path.join(self.root_dir, f))):
+                self.includes_files.append(f)
+                self.includes.remove(f)
+        
+        LOGGER.debug('Scanning sub-root directories')
+        for root_dir in self.find_subroots():
+            for dirpath, subdirs, files in os.walk(unicode(root_dir)):
+                # Let's save the len before it's getting modified.
+                subdirsLen = len(subdirs)
+                subroot = dirpath[len(self.root_dir):]
+
+                dirs_to_remove = []
+                for subdir in subdirs:
+                    if self.is_excluded(os.path.join(subroot, subdir)):
+                        dirs_to_remove.append(subdir)
+                
+                for dir_remove in dirs_to_remove:
+                    subdirs.remove(dir_remove)
+                
+                LOGGER.debug('Scanning directory: ' + dirpath)
+                for file_ in files:
+                    path = os.path.join(subroot, file_)
+                    if self.is_filetype(path) and self.is_included(path) and \
+                        self.is_selected(os.path.join(dirpath, file_)) and not self.is_excluded(path):
+                        ret_path = os.path.join(dirpath, file_)
+                        yield ret_path
+            
+                LOGGER.debug('Checking for empty directory: ' + dirpath)
+                # Check for including empty directories
+                if self.is_included(subroot) and not self.is_excluded(subroot):
+                    if len(files) == 0 and subdirsLen == 0:
+                        LOGGER.debug('Including empty dir: ' + dirpath)
+                        yield dirpath
+                    
+
+    def find_subroots(self):
+        """Finds all the subdirectory roots based on the include paths.
+
+        Often large archive operations define a number of archives from the root
+        of the drive. Walking the tree from the root is very time-consuming, so
+        selecting more specific subdirectory roots improves performance.
+        """
+        def splitpath(path):
+            """ Returns the splitted path"""
+            return path.split(os.sep)
+
+        root_dirs = []
+        
+        # Look for includes that start with wildcards.
+        subdirs_not_usable = False
+        for inc in self.includes + self.includes_files:
+            first_path_segment = splitpath(os.path.normpath(inc))[0]
+            if first_path_segment.find('*') != -1:
+                subdirs_not_usable = True
+                
+        # Parse all includes for sub-roots
+        if not subdirs_not_usable:
+            for inc in self.includes + self.includes_files:
+                include = None
+                LOGGER.debug("===> inc %s" % inc)
+                contains_globs = False                
+                for pathcomp in splitpath(os.path.normpath(inc)):
+                    if pathcomp.find('*') != -1:
+                        contains_globs = True
+                        break
+                    else:
+                        if include == None:
+                            include = pathcomp
+                        else:
+                            include = os.path.join(include, pathcomp)
+                if not contains_globs:
+                    include = os.path.dirname(include) 
+    
+                LOGGER.debug("include %s" % include)
+                if include != None:
+                    root_dir = os.path.normpath(os.path.join(self.root_dir, include))
+                    is_new_root = True
+                    for root in root_dirs[:]:
+                        if destinsrc(root, root_dir):
+                            LOGGER.debug("root contains include, skip it")
+                            is_new_root = False
+                            break
+                        if destinsrc(root_dir, root):
+                            LOGGER.debug("include contains root, so remove root")
+                            root_dirs.remove(root)
+                    if is_new_root:
+                        root_dirs.append(root_dir)    
+
+        if len(root_dirs) == 0:
+            root_dirs = [os.path.normpath(self.root_dir)]
+        LOGGER.debug('Roots = ' + str(root_dirs))
+        return root_dirs
+
+    def __str__(self):
+        return os.path.normpath(self.root_dir) + ';' + AbstractScanner.__str__(self) 
+
+    def __repr__(self):
+        return self.__str__()
+
+        
+def move(src, dst):
+    """Recursively move a file or directory to another location.
+
+    If the destination is on our current filesystem, then simply use
+    rename.  Otherwise, copy src to the dst and then remove src.
+    A lot more could be done here...  A look at a mv.c shows a lot of
+    the issues this implementation glosses over.
+
+    """
+    try:
+        os.rename(src, dst)
+    except OSError:
+        if os.path.isdir(src):
+            if destinsrc(src, dst):
+                raise Exception, "Cannot move a directory '%s' into itself '%s'." % (src, dst)
+            shutil.copytree(src, dst, symlinks=True)
+            rmtree(src)
+        else:
+            shutil.copy2(src, dst)
+            os.unlink(src)
+
+def rmtree(rootdir):
+    """ Catch shutil.rmtree failures on Windows when files are read-only. Thanks Google!""" 
+    if sys.platform == 'win32':
+        rootdir = os.path.normpath(rootdir)
+        if not os.path.isabs(rootdir):
+            rootdir = os.path.join(os.path.abspath('.'), rootdir)
+        if not rootdir.startswith('\\\\'):
+            rootdir = u"\\\\?\\" + rootdir
+
+    def cb_handle_error(fcn, path, excinfo):
+        """ Error handler, removing readonly and deleting the file. """
+        os.chmod(path, 0666)
+        if os.path.isdir(path):
+            rmdir(path)
+        elif os.path.isfile(path):
+            remove(path)
+        else:
+            fcn(path)
+    
+    if 'java' in sys.platform:
+        import java.io
+        import org.apache.commons.io.FileUtils
+        f = java.io.File(rootdir)
+        org.apache.commons.io.FileUtils.deleteDirectory(f)
+    else:
+        return shutil.rmtree(rootdir, onerror=cb_handle_error)
+
+def destinsrc(src, dst):
+    """ Fixed version of destinscr, that doesn't match dst with same root name."""
+    if os.sep == '\\':
+        src = src.lower()
+        dst = dst.lower()
+    src = os.path.abspath(src)
+    dst = os.path.abspath(dst)
+    if not src.endswith(os.path.sep):
+        src += os.path.sep
+    if not dst.endswith(os.path.sep):
+        dst += os.path.sep
+    return dst.startswith(src)
+
+
+def which(executable):
+    """ Search for executable in the PATH."""
+    pathlist = os.environ['PATH'].split(os.pathsep)
+    for folder in pathlist:
+        filename = os.path.join(folder, executable)
+        try:
+            status = os.stat(filename)
+        except os.error:
+            continue
+        # Check if the path is a regular file
+        if stat.S_ISREG(status[stat.ST_MODE]):
+            mode = stat.S_IMODE(status[stat.ST_MODE])
+            if mode & 0111:
+                return os.path.normpath(filename)
+    return None
+
+
+def read_policy_content(filename):
+    """ Read the policy number from the policy file.
+        strict allows to activate the new policy scanning.
+    """
+    value = None
+    error = ""
+    try:
+        LOGGER.debug('Opening policy file: ' + filename)
+        policy_data = load_policy_content(filename)            
+        match = re.match(r'^((?:\d+)|(?:0842[0-9a-zA-Z]{3}))\s*$', policy_data, re.M|re.DOTALL)
+        if match != None:
+            value = match.group(1)
+        else:
+            error = "Content of '%s' doesn't match r'^\d+|0842[0-9a-zA-Z]{3}\s*$'." % filename
+    except Exception, exc:
+        error = str(exc)
+    if value is not None:
+        return value
+    # worse case....
+    raise Exception(error)  
+
+def load_policy_content(filename):
+    """ Testing policy content loading. """
+    data = ''
+    try:
+        fileh = codecs.open(filename, 'r', 'ascii')
+        data = fileh.read()
+    except:
+        raise Exception("Error loading '%s' as an ASCII file." % filename)
+    finally:
+        fileh.close()
+    return data
+
+ENCODING_MATRIX = {
+   codecs.BOM_UTF8: 'utf_8',
+   codecs.BOM_UTF16: 'utf_16',
+   codecs.BOM_UTF16_BE: 'utf_16_be',
+   codecs.BOM_UTF16_LE: 'utf_16_le',
+}
+
+def guess_encoding(data):
+    """Given a byte string, guess the encoding.
+
+    First it tries for UTF8/UTF16 BOM.
+
+    Next it tries the standard 'UTF8', 'ISO-8859-1', and 'cp1252' encodings,
+    Plus several gathered from locale information.
+
+    The calling program *must* first call locale.setlocale(locale.LC_ALL, '')
+
+    If successful it returns (decoded_unicode, successful_encoding)
+    If unsuccessful it raises a ``UnicodeError``.
+
+    This was taken from http://www.voidspace.org.uk/python/articles/guessing_encoding.shtml
+    """
+    for bom, enc in ENCODING_MATRIX.items():
+        if data.startswith(bom):
+            return data.decode(enc), enc
+    encodings = ['ascii', 'UTF-8']
+    successful_encoding = None
+    try:
+        encodings.append(locale.getlocale()[1])
+    except (AttributeError, IndexError):
+        pass
+    try:
+        encodings.append(locale.getdefaultlocale()[1])
+    except (AttributeError, IndexError):
+        pass
+    # latin-1
+    encodings.append('ISO8859-1')
+    encodings.append('cp1252')
+    for enc in encodings:
+        if not enc:
+            continue
+        try:
+            decoded = unicode(data, enc)
+            successful_encoding = enc
+            break
+        except (UnicodeError, LookupError):
+            pass
+    if successful_encoding is None:
+        raise UnicodeError('Unable to decode input data. Tried the'
+                           ' following encodings: %s.' %
+                           ', '.join([repr(enc) for enc in encodings if enc]))
+    else:
+        if successful_encoding == 'ascii':
+            # our default ascii encoding
+            successful_encoding = 'ISO8859-1'
+        return (decoded, successful_encoding)
+        
+def getmd5(fullpath, chunk_size=2**16):
+    """ returns the md5 value"""
+    file_handle = open(fullpath, "rb")
+    md5 = hashlib.md5()
+    while 1:
+        chunk = file_handle.read(chunk_size)
+        if not chunk:
+            break
+        md5.update(chunk)
+    file_handle.close()
+    return md5.hexdigest()
+
+def read_symbian_policy_content(filename):
+    """ Read the policy category from the policy file. """
+    value = None
+    error = ""
+    try:
+        LOGGER.debug('Opening symbian policy file: ' + filename)
+        try:
+            fileh = codecs.open(filename, 'r', 'ascii')
+        except:
+            raise Exception("Error loading '%s' as an ASCII file." % filename)        
+        for line in fileh:
+            match = re.match(r'^Category\s+([A-Z])\s*$', line, re.M|re.DOTALL)
+            if match != None:
+                value = match.group(1)
+                fileh.close()
+                return value
+        fileh.close()
+        if match == None:
+            error = "Content of '%s' doesn't match r'^Category\s+([A-Z])\s*$'." % filename
+    except Exception, exc:
+        error = str(exc)
+    if value is not None:
+        return value
+    # worse case....
+    raise Exception(error)
+
+
+class LockFailedException(Exception):
+    pass
+
+if os.name == 'nt':
+    import win32file
+    import win32con
+    import winerror
+    import time
+    import win32netcon
+    import win32wnet
+    
+    class Lock:
+        """ This object implement file locking for windows. """
+        
+        def __init__(self, filename):
+            LOGGER_LOCK.debug("__init__")
+            self._filename = filename
+            self.fd = None
+
+        def lock(self, wait=False):
+            LOGGER_LOCK.debug("lock")
+            # Open the file
+            if self.fd == None:
+                self.fd = open(self._filename, "w+")
+            wfd = win32file._get_osfhandle(self.fd.fileno())
+            if not wait:
+                try:
+                    win32file.LockFile(wfd, 0, 0, 0xffff, 0)
+                except:
+                    raise LockFailedException()
+            else:    
+                while True:
+                    try:
+                        win32file.LockFile(wfd, 0, 0, 0xffff, 0)
+                        break
+                    except win32file.error, exc:
+                        if exc[0] != winerror.ERROR_LOCK_VIOLATION:
+                            raise exc
+                    LOGGER_LOCK.debug("waiting")
+                    time.sleep(1)
+                    
+        def unlock(self):
+            LOGGER_LOCK.debug("unlock")
+            if self.fd == None:
+                LOGGER_LOCK.debug("already unlocked")
+                return
+            wfd = win32file._get_osfhandle(self.fd.fileno())
+            try:
+                # pylint: disable-msg=E1101
+                win32file.UnlockFile(wfd, 0 , 0, 0xffff, 0)
+                self.fd.close()
+                self.fd = None
+            except win32file.error, exc:
+                if exc[0] != 158:
+                    raise
+            
+            
+        def __del__(self):
+            LOGGER_LOCK.debug("__del__")
+            self.unlock()
+
+    def rmdir(path):
+        """ Catch os.rmdir failures on Windows when path is too long (more than 256 chars)."""
+        path = win32api.GetShortPathName(path)        
+        win32file.RemoveDirectory(path)
+
+    def remove(filename):
+        """ Catch os.rmdir failures on Windows when path is too long (more than 256 chars)."""
+        filename = win32api.GetShortPathName(filename)
+        filename = filename.lstrip("\\\\?\\")
+        os.remove(filename)
+
+    def mount(drive, unc, username=None, password=None, persistent=False):
+        """ Windows helper function to map a network drive. """
+        flags = 0
+        if persistent:
+            flags = win32netcon.CONNECT_UPDATE_PROFILE
+        win32wnet.WNetAddConnection2(win32netcon.RESOURCETYPE_DISK, drive, unc, None, username, password, flags)
+
+
+    def umount(drive):
+        """ Windows helper function to map a network drive. """
+        drive_type = win32file.GetDriveType(drive)
+        if drive_type == win32con.DRIVE_REMOTE:
+            win32wnet.WNetCancelConnection2(drive, win32netcon.CONNECT_UPDATE_PROFILE, 1)
+        else:
+            raise Exception("%s couldn't be umount." % drive)
+
+else:
+    def rmdir(path):
+        return os.rmdir(path)
+
+    def remove(path):
+        return os.remove(path)
+
+    class Lock:
+        def __init__(self, filename):
+            pass
+        def lock(self, wait=False):
+            pass
+        def unlock(self):
+            pass
+            
+if os.sep == '\\':
+    def get_next_free_drive():
+        """ Return the first free drive found else it raise an exception. """
+        if os.name == 'nt':
+            DRIVE_LABELS = sorted(list(set(string.ascii_uppercase) - set(win32api.GetLogicalDriveStrings())), reverse=True)
+            if len(DRIVE_LABELS) != 0 :
+                return DRIVE_LABELS[0] + ":"
+            raise OSError("No free drive left.")        
+        if 'java' in sys.platform:
+            import java.io        
+            used = []
+            for x in java.io.File.listRoots():
+                used.append(str(x).replace(':\\', ''))
+            DRIVE_LABELS = sorted(list(set(string.ascii_uppercase) - set(used)), reverse=True)
+            if len(DRIVE_LABELS) != 0 :
+                return DRIVE_LABELS[0] + ":"
+            raise OSError("No free drive left.")
+
+    def subst(drive, path):
+        """ Substing path as a drive. """
+        path = os.path.normpath(path)
+        p = subprocess.Popen("subst %s %s" % (drive, path),  shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
+        errmsg = p.communicate()[0]
+        if p.returncode != 0:
+            raise Exception("Error substing '%s' under '%s': %s" % (path, drive, errmsg))
+    
+    def unsubst(drive):
+        """ Unsubsting the drive. """
+        p = subprocess.Popen("subst /D %s" % (drive), shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
+        errmsg = p.communicate()[0]
+        if p.returncode != 0:
+            raise Exception("Error unsubsting '%s': %s" % (drive, errmsg))
+    
+    def getSubstedDrives():
+        driveInformation = {}
+        subStedDriveList = []
+        p = subprocess.Popen("subst",  shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
+        subStedDriveList = re.split('\\n', p.communicate()[0])
+        del subStedDriveList[len(subStedDriveList)-1]
+        for path in subStedDriveList:        
+            subStedDrivePath = []
+            if(re.search(r'UNC', path) is not None):
+                subStedDrivePath = re.split('=>', path)
+                (drive_to_unsubst, root_dir_path) = os.path.splitdrive(os.path.normpath(subStedDrivePath[0]))
+                uncPath = re.sub('UNC', r'\\', subStedDrivePath[1].strip())
+                if(uncPath != subStedDrivePath[1].strip()):
+                    driveInformation[drive_to_unsubst] = uncPath
+            else:
+                subStedDrivePath = re.split('=>', path)                
+                (drive_to_unsubst, root_dir_path) = os.path.splitdrive(os.path.normpath(subStedDrivePath[0]))
+                driveInformation[drive_to_unsubst] = os.path.normpath(subStedDrivePath[1].strip())
+    
+        return driveInformation
+
+def touch(srcdir):
+    """
+    Recursively touches all the files in the source path mentioned.
+    It does not touch the directories.
+    """
+    srcnames = os.listdir(srcdir)
+    for name in srcnames:
+        srcfname = os.path.join(srcdir, name)
+        if os.path.isdir(srcfname):
+            touch(srcfname)
+        else:
+            if os.path.exists(srcfname):
+                os.utime(srcfname, None)
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/freedisk.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,132 @@
+#============================================================================ 
+#Name        : freedisk.py 
+#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:
+#===============================================================================
+
+""" Checks free space on the disk before the build starts.
+
+The script is being called from the preparation.ant.xml file
+
+"""
+
+import getopt, sys
+
+
+HELP_STRING = """
+    -h or --help     : Displays help
+
+    -d or --drive    : Requires a drive letter to be checked.
+                     : E.g. -d C: (case insensitive; ':' is optional)
+                     
+    -s or --space    : Required space to compare with the drive for the free space"
+                     : E.g. -s 2658 (an integer value in MB)
+"""
+
+
+
+def print_space_report(drive, space_required):
+    """
+    compares the required space with current free space on the provided drive
+    """
+    try:
+        if sys.platform == "win32":
+            import win32file # pylint: disable-msg=F0401
+            free_bytes = win32file.GetDiskFreeSpaceEx(drive)[0]
+        elif 'java' in sys.platform:
+            import java.io # pylint: disable-msg=F0401
+            free_bytes = java.io.File(drive).getFreeSpace()
+        else:
+            import os
+            import statvfs
+            # pylint: disable-msg=E1101
+            stats = os.statvfs(drive)
+            free_bytes = stats[statvfs.F_BSIZE] * stats[statvfs.F_BAVAIL]
+            
+    except Exception, err_type:
+        print "ERROR: Either specified drive doesn't exist or an unknown error"
+        print str(err_type)
+        print HELP_STRING
+        sys.exit(-2)
+
+    free_space = free_bytes / (1024 * 1024)
+
+    print "drive:", drive
+    print "Required Space:", space_required
+    print "Free Space:", free_space
+    
+    if space_required < free_space:
+        print "Enough free space"
+    else:
+        print "Not enough free space, exiting"
+        sys.exit(-1)
+
+    
+def main():
+    """
+    Gets and parse options and verifies the option values
+    """
+    try:
+        opts = getopt.getopt(sys.argv[1:], "hs:d:", \
+                                   ["space=", "drive=", "help"])[0]
+    except getopt.GetoptError:
+        # print help information and exit:
+        print "ERROR: Couldn't parse the command line parameters."
+        print HELP_STRING
+        sys.exit(2)
+
+    drive = None
+    required_space = None
+
+    for opt, attr in opts:
+
+        if opt in ("-s", "--space"):
+            required_space = int(attr)
+            
+        if opt in ("-d", "--drive"):
+            drive = attr
+            
+        if opt in ("-h", "--help"):
+            print HELP_STRING
+            sys.exit()
+    
+    if required_space == None and drive == None:
+        print "ERROR: No parameters are defined"
+        print HELP_STRING
+        sys.exit (-3)
+
+    if required_space == None:
+        print "ERROR: Required Disk Space parameter is not defined to" \
+              "check space on the disk"
+        print HELP_STRING
+        sys.exit (-3)
+        
+    if drive == None:
+        print "ERROR: Drive parameter is missing"
+        print HELP_STRING
+        sys.exit (-3)
+    else:
+        if sys.platform == "win32":
+            if not ":" in drive:
+                drive = drive + ":"
+
+    print_space_report(drive, required_space)
+
+
+
+
+if __name__ == '__main__':
+    sys.exit(main())
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/getVariantConfiguration.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,79 @@
+#============================================================================ 
+#Name        : getVariantConfiguration.py 
+#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:
+#===============================================================================
+
+import configuration
+import sys
+import os
+import relnotes.variants
+
+class VariantInfo(object):
+    def __init__(self, variantdir):
+        self.__variantdir = variantdir
+        self.__cachestr = None
+    
+    def __str__(self):
+        if self.__cachestr:
+            return self.__cachestr
+        self.__cachestr = ""
+        if not os.path.exists(self.__variantdir):
+            return self.__cachestr
+        for filename in os.listdir(self.__variantdir):
+            filename = os.path.join(self.__variantdir, filename)
+            if filename.endswith("_info.txt"):
+                print "Reading info from %s" % filename
+                data = relnotes.variants.parseInfo(filename)
+                if len(data) == 4:
+                    output = "%s" % (data['name']) + ","
+                    output += "%s" % (data['default']) + ","
+                    output += "\"%s (%s)\"" % (",".join(data['languages']), ",".join(data['language.ids']))
+                    self.__cachestr = output
+                    return output
+        return self.__cachestr
+
+def main():
+    """ Main function create a csv file that defines the variant configuration.
+    """
+    product = sys.argv[1]
+    configfile = sys.argv[2]
+    outputfile = sys.argv[3]
+    
+    try:
+        alreadyDone = {}
+        builder = configuration.NestedConfigurationBuilder(open(configfile, 'r'))
+        config_set = builder.getConfiguration()
+        outfile = open(outputfile, "w+")
+        outfile.write("Variant,Default language,Languages\n")
+        for variant in config_set.getConfigurations():
+            if variant.type and variant.type.startswith("langpack_"):
+                if variant['PRODUCT_NAME'] not in alreadyDone:
+                    alreadyDone[variant['PRODUCT_NAME']] = {}
+                if variant.type not in alreadyDone[variant['PRODUCT_NAME']] and variant['PRODUCT_NAME'] == product:
+                    alreadyDone[variant['PRODUCT_NAME']][variant.type] = True
+                    v = VariantInfo(variant['ROFS2_DIR'])
+                    if len(str(v)) > 0:
+                        outfile.write(str(v)+"\n")
+        outfile.close()
+    except Exception, exc:
+        print "ERROR: %s" % exc
+        sys.exit(-1)
+    
+    sys.exit(0)
+
+if __name__ == "__main__":
+    main()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/helium/__init__.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,20 @@
+#============================================================================ 
+#Name        : __init__.py 
+#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:
+#===============================================================================
+
+""" Functionality that is closely tied to the Helium framework. """
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/helium/documentation.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,112 @@
+#============================================================================ 
+#Name        : documentation.py 
+#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:
+#===============================================================================
+
+""" Helium API documentation processing. """
+
+from lxml import etree
+
+
+class APIDeltaWriter(object):
+    """ Creates an XML delta of the Helium API between releases. """
+    def __init__(self, old_database, new_database):
+        """ Initialisation. """
+        self.old_database = old_database
+        self.new_database = new_database
+        
+    def write(self, path):
+        """ Write the API delta information to an XML file. """
+        root = etree.Element('apiChanges')
+        
+        old_db = etree.parse(self.old_database)
+        new_db = etree.parse(self.new_database)
+        
+        
+        old_macro_names = set([macro[0].text for macro in old_db.findall('/project/macro')])
+        new_macro_names = set([macro[0].text for macro in new_db.findall('/project/macro')])
+        
+        old_target_names = set([target[0].text for target in old_db.findall('/project/target')])
+        new_target_names = set([target[0].text for target in new_db.findall('/project/target')])
+        
+        old_property_names = set([property[0].text for property in old_db.findall('/project/property')])
+        new_property_names = set([property[0].text for property in new_db.findall('/project/property')])
+        
+        old_project_names = set([project[0].text for project in old_db.findall('/project')])
+        new_project_names = set([project[0].text for project in new_db.findall('/project')])
+        
+        dict_old_taskdef_names  = {}
+        dict_new_taskdef_names  = {}
+        for taskdef in old_db.findall('/project/taskdef'):
+            dict_old_taskdef_names[taskdef[0].text] = taskdef[1].text
+        for taskdef in new_db.findall('/project/taskdef'):
+            dict_new_taskdef_names[taskdef[0].text] = taskdef[1].text
+
+        projects_removed = old_project_names.difference(new_project_names)
+        for project in projects_removed:
+            project_element = etree.SubElement(root, 'project', attrib={'state': 'removed'})
+            project_element.text = project
+        projects_added = new_project_names.difference(old_project_names)
+        for project in projects_added:
+            project_element = etree.SubElement(root, 'project', attrib={'state': 'added'})
+            project_element.text = project
+        
+        propertys_removed = old_property_names.difference(new_property_names)
+        for property in propertys_removed:
+            property_element = etree.SubElement(root, 'property', attrib={'state': 'removed'})
+            property_element.text = property
+        propertys_added = new_property_names.difference(old_property_names)
+        for property in propertys_added:
+            property_element = etree.SubElement(root, 'property', attrib={'state': 'added'})
+            property_element.text = property
+                    
+        macros_removed = old_macro_names.difference(new_macro_names)
+        for macro in macros_removed:
+            macro_element = etree.SubElement(root, 'macro', attrib={'state': 'removed'})
+            macro_element.text = macro
+        macros_added = new_macro_names.difference(old_macro_names)
+        for macro in macros_added:
+            macro_element = etree.SubElement(root, 'macro', attrib={'state': 'added'})
+            macro_element.text = macro
+        targets_removed = old_target_names.difference(new_target_names)
+        
+        for target in targets_removed:
+            target_element = etree.SubElement(root, 'target', attrib={'state': 'removed'})
+            target_element.text = target
+        targets_added = new_target_names.difference(old_target_names)
+        for target in targets_added:
+            target_element = etree.SubElement(root, 'target', attrib={'state': 'added'})
+            target_element.text = target
+
+        taskdefs_removed = set(dict_old_taskdef_names.keys()) - set(dict_new_taskdef_names.keys()) 
+        for taskdefKey in taskdefs_removed:
+            taskdef_element = etree.SubElement(root, 'taskdef', attrib={'state': 'removed'})
+            taskdef_element.text = taskdefKey
+            taskdef_element.attrib['classname'] =  dict_old_taskdef_names[taskdefKey]
+        taskdefs_added = set(dict_new_taskdef_names.keys()) - set(dict_old_taskdef_names.keys())
+        for taskdefKey in taskdefs_added:
+            taskdef_element = etree.SubElement(root, 'taskdef', attrib={'state': 'added'})
+            taskdef_element.text = taskdefKey
+            taskdef_element.attrib['classname'] =  dict_new_taskdef_names[taskdefKey]
+            
+        etree.dump(root)
+        tree = etree.ElementTree(root)
+        tree.write(path, pretty_print=True)
+        
+        
+        
+        
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/helium/logger.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,250 @@
+#============================================================================ 
+#Name        : logger.py 
+#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:
+#===============================================================================
+
+##
+# Logger module
+# Description : Port to python of the ISIS::Logger3 perl module
+#
+# 1.0.0 (13/12/2006)
+#  - First version of the module.
+##
+
+# pylint: disable-msg=E1101,E1103
+
+import codecs
+import xml.dom.minidom
+import datetime
+from os import popen
+import traceback
+
+#
+# This is an Internal helper call. 
+#
+class _CustomizePrint(object):
+    
+    ##
+    # Initialise the instance content 
+    # @param logger a Logger instance
+    # @param name method name (e.g. Print, Error), could be any strings
+    def __init__(self, logger, name):
+        self.__logger = logger
+        self.__name = name
+    
+    ##
+    # Make this object callable. Call _print from the logger instance.
+    # @params *args a list of arguments
+    def __call__(self, *args):
+        self.__logger._print(self.__name, args)        
+    
+##
+# The Logger enables to create xml logging in Python.
+#
+class Logger(object):
+    
+    ##
+    # Constructor of the Logger.
+    def __init__(self):
+        self.__step = 1
+        self.__doc = xml.dom.minidom.Document()
+        self.__lognode = self.__doc.createElementNS("", "__log")        
+        self.__header = self.__doc.createElementNS("", "__header")
+        self.__footer = self.__doc.createElementNS("", "__footer")
+        self.__summary = self.__doc.createElementNS("", "__summary")
+        self.__lognode.appendChild(self.__header)
+        self.__lognode.appendChild(self.__summary)
+        self.__lognode.appendChild(self.__footer)        
+        self.__lognode.setAttributeNS("", "date", "%s" % datetime.datetime.now().ctime())
+        self.__footer.setAttributeNS("", "title", "")
+        self.__footer.setAttributeNS("", "subtitle", "")
+        self.__doc.appendChild(self.__lognode)
+        self.__build = self.__doc.createElementNS("", "build")
+        self.__lognode.appendChild(self.__build)
+        self.__current_node = self.__build
+        self.__stack = []
+        self.__verbose = True
+        #<__log date="Wed Dec  6 03:07:25 2006">
+
+    ##
+    # Set the url of interface to use.
+    def SetInterface(self, url):
+        self.__lognode.setAttributeNS("", "interface", url)
+
+    ##
+    # Enable/Disable shell output
+    # @param v boolean to set the logger output
+    def SetVerbose(self, v):
+        self.__verbose = v
+    
+    ##
+    # Set the title of the document
+    # @param title the title to set
+    def SetTitle(self, title):        
+        self.__header.setAttributeNS("", "title", title)
+        
+    ##
+    # Set the subtitle of the document
+    # @param subtitle the subtitle to set
+    def SetSubTitle(self, title):        
+        self.__header.setAttributeNS("", "subtitle", title)
+
+    ##
+    # Set the sumamry title
+    # @param title the title to set
+    def SetSummaryTitle(self, title):
+        self.__summary.setAttributeNS("", "title", title)
+        
+    ##
+    # Creates a summary couple.
+    # @param tag the description
+    # @param value the value
+    def AddSummaryElement(self, tag, value):
+        e = self.__doc.createElementNS("", "__elmt")
+        e.setAttributeNS("", "tag", tag)
+        e.setAttributeNS("", "val", value)
+        self.__summary.appendChild(e)
+        
+        
+    ##
+    # Open a MainContent section.
+    # @param title title of the MainContent section
+    def OpenMainContent(self, title=""):
+        self.__stack.append(self.__current_node)
+        n = self.__doc.createElementNS("", "task")
+        n.setAttributeNS("", "name", title)
+        n.setAttributeNS("", "type", "maincontent")
+        n.setAttributeNS("", "time", datetime.datetime.now().ctime())
+        self.__current_node.appendChild(n)
+        self.__current_node = n
+        if self.__verbose:
+            print ("---------------------------------------------------------------------")
+            print ("  %s" % title)
+            print ("---------------------------------------------------------------------")
+
+        
+    ##
+    # Close the current main content section.
+    # Make sure you have closed other Event/Section first
+    def CloseMainContent(self):
+        if self.__current_node.nodeName != "task" and not (self.__current_node.attributes.has_key('type') and self.__current_node.attributes['type']=="maincontent"):
+            raise Exception("not closing a 'maincontent' typed node")
+        self.__current_node = self.__stack.pop()
+        
+        
+    ##
+    # Create an Event section (can be opened/closed)
+    # @param title title of the MainContent section
+    def OpenEvent(self, title=""):
+        self.__stack.append(self.__current_node)
+        n = self.__doc.createElementNS("", "task")
+        n.setAttributeNS("", "name", title)
+        n.setAttributeNS("", "type", "event")
+        n.setAttributeNS("", "time", datetime.datetime.now().ctime())
+        self.__current_node.appendChild(n)
+        self.__current_node = n
+        if self.__verbose:
+            print ("---------------------------------------------------------------------")
+            print (" + %s" % title)
+
+    def SetCustomOutputer(self, type, classname, config = None):
+        n = self.__doc.createElementNS("", "__customoutputer")
+        n.setAttributeNS("", "type", type)
+        n.setAttributeNS("", "module", classname)
+        if config != None:
+            n.appendChild(config)
+        self.__lognode.appendChild(n)
+        
+    ##
+    # Close the current Event
+    # Make sure you have closed other Event/Section first
+    def CloseEvent(self):
+        if self.__current_node.nodeName != "task" and (self.__current_node.attributes.has_key('type') and self.__current_node.attributes['type']=="event"):
+            raise Exception("not closing a 'event' typed node")
+        self.__current_node = self.__stack.pop()
+    
+    ##
+    # __getattribute__ has been overrided to enable dynamic messaging.
+    # @param attr the name of the method (or attribute...)
+    def __getattribute__(self, attr):
+        try:
+            return object.__getattribute__(self, attr)  
+        except AttributeError:
+            return _CustomizePrint(self, attr)        
+            
+    ##
+    # Generic method that handle the print in the XML document
+    # @param kind type of output
+    # @param *args a list of arguments (must be strings)
+    def _print(self, kind, *args):
+        output = u"".join(map(lambda x: u"%s" % x, list(*args)))
+        nodetype = kind.lower()
+        msgtype = ""
+        if nodetype != "print" and nodetype != "info" and nodetype != "debug":
+            msgtype = "%s:" % nodetype.upper()
+        if self.__verbose:
+            print "%s %s" % (msgtype, output.encode('utf-8'))
+        
+                
+        n = self.__doc.createElementNS("", "message")
+        n.setAttributeNS("", "priority", nodetype)
+        #n.setAttributeNS("", "time", datetime.datetime.now().ctime())
+        n.appendChild(self.__doc.createCDATASection(output))
+        self.__current_node.appendChild(n)
+#        nodetype = kind.lower()
+#        if kind.lower() != "print" and kind.lower() != "printraw":
+#            nodename = kind.lower()
+#
+#        if nodename=="__print" and self.__current_node.lastChild!=None and self.__current_node.lastChild.nodeName  == nodename:
+#            self.__current_node.lastChild.appendChild(self.__doc.createTextNode("".join(*args).decode('iso-8859-1')))
+#        else:
+#            n = self.__doc.createElementNS("", nodename)
+#            n.setAttributeNS("", "step", "%d" % self.__step)
+#            self.__step += 1
+#            n.setAttributeNS("", "time", datetime.datetime.now().ctime())
+#            text_content = "".join(map(lambda x: str(x), list(*args))).decode('iso-8859-1')
+#            n.appendChild(self.__doc.createTextNode(text_content))
+#            self.__current_node.appendChild(n)
+    
+    
+    ##
+    #
+    def SetFooterTitle(self, title):
+        self.__footer.attributes['title'] = title
+        
+    def SetFooterSubTitle(self, subtitle):
+        self.__footer.attributes['subtitle'] = subtitle
+    
+    def Die(self, title, subtitle, exception):
+        self.SetFooterTitle(title)
+        self.SetFooterSubTitle("%s\nException raised: %s\n%s" % (subtitle, exception, traceback.format_exc()))
+
+    ##
+    # Write the DOM tree into a file.
+    # @param filename the file to write in.
+    def WriteToFile(self, filename):        
+        file_object = open(filename, "w")
+        file_object.write(codecs.BOM_UTF8)
+        file_object.write(self.__doc.toprettyxml(encoding = "utf-8"))
+        file_object.close()
+
+
+    ##
+    # Write the DOM tree into a file.
+    # @param filename the file to write in.
+    def __str__(self):        
+        return self.__doc.toprettyxml(encoding="utf-8")
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/helium/output/__init__.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,19 @@
+#============================================================================ 
+#Name        : __init__.py 
+#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:
+#===============================================================================
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/helium/output/widgets.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,301 @@
+#============================================================================ 
+#Name        : widgets.py 
+#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:
+#===============================================================================
+
+
+# pylint: disable-msg=E1101
+
+import xml.dom.minidom
+class Widget:
+    def __init__(self):
+        pass
+    
+    def getDOMContainer(self):
+        pass
+    
+    
+class Box(Widget):
+    def __init__(self, doc, container, divId = "mb", divClass = "mc"):
+        Widget.__init__(self)
+        d1 = doc.createElementNS("", "div")
+        d1.setAttributeNS("", "id", divId)
+        container.appendChild(d1)
+        mc = doc.createElementNS("", "div")
+        mc.setAttributeNS("", "class", divClass)
+        d1.appendChild(mc)        
+        self.__doc = doc
+        self.__title = None
+        self.__mc = mc
+        
+    def setTitle(self, title=""):
+        if self.__title == None:
+            t = self.__doc.createElementNS("", "h1")
+            self.__mc.insertBefore(t, self.__mc.firstChild)            
+            self.__title = self.__doc.createTextNode(title)
+            t.appendChild(self.__title)
+        self.__title.data = title
+
+    def getDOMContainer(self):
+        return self.__mc
+    
+class Summary(Box):    
+    def __init__(self, doc, container):
+        Box.__init__(self, doc, container, divId = "s_mb", divClass = "s_mc")
+        self.__table = doc.createElementNS("", "table")
+        self.__table.setAttributeNS("", "cellspacing", "0")
+        self.__table.setAttributeNS("", "cellpadding", "0")
+        self.__table.setAttributeNS("", "border", "0")
+        self.__table.setAttributeNS("", "width", "100%")
+        self.__table.appendChild(self._Box__doc.createTextNode(""))
+        div = self._Box__doc.createElementNS("", "div")
+        div.setAttributeNS("", "class", "t_wrapper")
+        div.appendChild(self.__table)
+        self.getDOMContainer().appendChild(div)
+        self.__table_stat = None
+        self.setTitle()
+
+    
+    def addElement(self, tag, value):
+        row = self._Box__doc.createElementNS("", "tr")
+        #Tag
+        td = self._Box__doc.createElementNS("", "td")
+        td.setAttributeNS("", "valign", "top")
+        td.setAttributeNS("", "nowrap", "nowrap")        
+        div = self._Box__doc.createElementNS("", "div")
+        div.setAttributeNS("", "class", "s_tag")
+        div.appendChild(self._Box__doc.createTextNode(tag))
+        td.appendChild(div)        
+        row.appendChild(td)
+        
+        # Value
+        td = self._Box__doc.createElementNS("", "td")
+        td.setAttributeNS("", "width", "100%")        
+        div = self._Box__doc.createElementNS("", "div")
+        div.setAttributeNS("", "class", "s_val")
+        div.appendChild(self._Box__doc.createTextNode(value))
+        td.appendChild(div)
+        row.appendChild(td)
+
+        self.__table.appendChild(row)
+
+    def addStatistics(self, type, value):
+        if self.__table_stat == None:
+            h1 = self._Box__doc.createElementNS("", "h1")
+            h1.appendChild(self._Box__doc.createTextNode("Global Statistics"))
+            self.getDOMContainer().appendChild(h1)
+                            
+            div = self._Box__doc.createElementNS("", "div")
+            div.setAttributeNS("", "class", "t_wrapper")
+            self.getDOMContainer().appendChild(div)
+            self.__table_stat = self._Box__doc.createElementNS("", "table")
+            self.__table_stat.setAttributeNS("", "cellspacing", "0")
+            self.__table_stat.setAttributeNS("", "cellpadding", "0")
+            self.__table_stat.setAttributeNS("", "border", "0")
+            self.__table_stat.setAttributeNS("", "width", "100%")
+            div.appendChild(self.__table_stat)
+        
+            row = self._Box__doc.createElementNS("", "tr")
+            self.__table_stat.appendChild(row)
+            self.__table_stat = row
+
+        td = self._Box__doc.createElementNS("", "td")
+        div = self._Box__doc.createElementNS("", "div")
+        div.setAttributeNS("", "class", "gbl_cnt_" + type)
+        div.appendChild(self._Box__doc.createTextNode("%d %ss" % (value, type)))
+        td.appendChild(div)
+        self.__table_stat.appendChild(td)
+          
+    
+    
+class Event(Widget):
+    def __init__(self, doc, container, id):
+        Widget.__init__(self)
+        self.__doc = doc
+        node_head = doc.createElementNS("", "div")
+        node_head.setAttributeNS("", "class", "node_head")
+        container.appendChild(node_head)
+
+        link = doc.createElementNS("", "a")
+        link.setAttributeNS("", "href", "javascript:ToggleNode('Img%d')" % id)
+        node_head.appendChild(link)
+        
+        span = doc.createElementNS("", "span")
+        span.setAttributeNS("", "id", "Img%d" % id)
+        span.setAttributeNS("", "style", "background:url(http://fawww.europe.nokia.com/isis/isis_interface/img/icons/button_open.gif) no-repeat")
+        link.appendChild(span)
+
+        stitle = doc.createElementNS("", "span")
+        stitle.setAttributeNS("", "class", "node_title")
+        self.__title = doc.createTextNode("")
+        stitle.appendChild(self.__title)
+        span.appendChild(stitle)
+        
+        # shaow all
+        showall = doc.createElementNS("", "a")
+        showall.setAttributeNS("", "href", "javascript:ShowChilds('Img%d')"  % id)
+        span = doc.createElementNS("", "span")
+        span.setAttributeNS("", "class", "node_action")
+        span.appendChild(doc.createTextNode("[Show All]"))
+        showall.appendChild(span)
+        
+        #hide all
+        hideall = doc.createElementNS("", "a")
+        hideall.setAttributeNS("", "href", "javascript:HideChilds('Img%d')" % id)
+        span = doc.createElementNS("", "span")
+        span.setAttributeNS("", "class", "node_action")
+        span.appendChild(doc.createTextNode("[Hide All]"))
+        hideall.appendChild(span)
+        
+        #toggle node
+        self.__togglenode = doc.createElementNS("", "a")
+        self.__togglenode.setAttributeNS("", "href", "javascript:ToggleNode('Img%d')" % id)
+        self.__togglenode.appendChild(doc.createTextNode(""))
+        # append container
+        node_head.appendChild(showall)
+        node_head.appendChild(hideall)
+        node_head.appendChild(self.__togglenode)        
+
+        contentx = doc.createElementNS("", "div")
+        contentx.setAttributeNS("", "id", "Content%d" % id)
+        contentx.setAttributeNS("", "style", "display:none")
+        container.appendChild(contentx)
+        content = doc.createElementNS("", "div")
+        content.setAttributeNS("", 'class', "node_content")
+        content.appendChild(doc.createTextNode(""))
+        contentx.appendChild(content)
+        self.__container = content
+        self.__node_info = None
+        
+    def setTitle(self, title = ""):
+        self.__title.data = title
+
+    def addStatistics(self, type, value):
+        if self.__node_info == None:
+            self.__node_info = self.__doc.createElementNS("", "span")
+            self.__node_info.setAttributeNS("", "class", "node_info")
+            self.__togglenode.appendChild(self.__node_info)
+        span = self.__doc.createElementNS("", "span")
+        span.setAttributeNS("", "class","cnt_%s" % type)
+        span.appendChild(self.__doc.createTextNode("%d %ss" % (value, type)))
+        self.__node_info.appendChild(span)
+          #<span class="node_info">
+          #  <span class="cnt_warning">2 warnings</span>
+          #</span>
+
+    def getDOMContainer(self):
+        return self.__container
+
+
+class Header(Widget):
+    def __init__(self, doc, container):
+        Widget.__init__(self)
+        self.__doc = doc
+        h_wrapper = self.__doc.createElementNS("", "div")
+        h_wrapper.setAttributeNS("", "id", "h_wrapper")
+        h_elmt = self.__doc.createElementNS("", "div")
+        h_elmt.setAttributeNS("", "class", "h_elmt")
+        h_wrapper.appendChild(h_elmt)
+        container.appendChild(h_wrapper)
+        #title
+        t = self.__doc.createElementNS("", "div")
+        self.__title = doc.createTextNode("")
+        t.appendChild(self.__title)
+        t.setAttributeNS("", "class", "h_title")
+        h_elmt.appendChild(t)
+        #subtitle
+        t = self.__doc.createElementNS("", "div")
+        self.__subtitle = doc.createTextNode("")
+        t.appendChild(self.__subtitle)
+        t.setAttributeNS("", "class", "h_subtitle")
+        h_elmt.appendChild(t)
+        
+        
+        
+    def setTitle(self, title):            
+        self.__title.data = title
+        
+    def setSubTitle(self, title):            
+        self.__subtitle.data = title
+
+    def getDOMContainer(self):
+        return None
+
+class Footer(Widget):
+    def __init__(self, doc, container):
+        Widget.__init__(self)
+        self.__doc = doc
+        h_wrapper = self.__doc.createElementNS("", "div")
+        h_wrapper.setAttributeNS("", "id", "f_wrapper")
+        h_elmt = self.__doc.createElementNS("", "div")
+        h_elmt.setAttributeNS("", "class", "f_elmt")
+        h_wrapper.appendChild(h_elmt)
+        container.appendChild(h_wrapper)
+        #title
+        t = self.__doc.createElementNS("", "div")
+        self.__title = doc.createTextNode("")
+        t.appendChild(self.__title)
+        t.setAttributeNS("", "class", "f_title")
+        h_elmt.appendChild(t)
+        #subtitle
+        t = self.__doc.createElementNS("", "div")
+        self.__subtitle = doc.createTextNode("")
+        t.appendChild(self.__subtitle)
+        t.setAttributeNS("", "class", "f_subtitle")
+        h_elmt.appendChild(t)
+        
+    def setTitle(self, title):            
+        self.__title.data = title
+        
+    def setSubTitle(self, title):            
+        self.__subtitle.data = title
+    
+class Text(Widget):
+    def __init__(self, doc, container):
+        Widget.__init__(self)
+        self.__doc = doc
+        self.__div = self.__doc.createElementNS("", "div")
+        self.__div.setAttributeNS("", "class", "icn_dft")
+        container.appendChild(self.__div)
+    
+    def setIcon(self, name):
+        self.__div.setAttributeNS("", "class", name)
+
+    def appendText(self, text):            
+        def pushContent(arg):
+            self.getDOMContainer().appendChild(self.__doc.createTextNode(arg))
+            self.getDOMContainer().appendChild(self.__doc.createElementNS("","br"))
+        map(pushContent, text.strip().split("\n"))            
+
+    def getDOMContainer(self):
+        return self.__div
+
+class RawText(Text):
+    def appendText(self, text):
+        for child in xml.dom.minidom.parseString("<xhtml>" + text.strip() + "</xhtml>").documentElement.childNodes:
+            self.getDOMContainer().appendChild(child.cloneNode(True))
+
+class BoldText(Text):
+    def __init__(self, doc, container):
+        Text.__init__(self, doc, container)
+        self.__bold = doc.createElementNS("","b")
+        self._Text__div.appendChild(self.__bold)
+        
+    def getDOMContainer(self):
+        return self.__bold
+    
+    
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/helium/outputer.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,306 @@
+#============================================================================ 
+#Name        : outputer.py 
+#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:
+#===============================================================================
+
+##
+# Outputer module
+# Description : Port to python of the ISIS::Logger3::XML2HTML perl module
+#
+# 1.0.0 (13/12/2006)
+#  - First version of the module.
+##
+import codecs
+import xml.dom.minidom
+from helium.output.widgets import *
+import urllib2
+import amara
+import re
+import dataurl
+
+class Configuration:
+    def __init__(self, url):
+        f = urllib2.urlopen(url)#
+        data = f.read()
+        f.close()
+        self.__xml = amara.parse(data)
+        
+    def getClass(self, type, default = None):
+        return self._getValue(type, "class", default)
+
+    def getImg(self, type, default = None):
+        return self._getValue(type, "img", default)
+    
+    def getWidth(self, type, default = None):
+        return self._getValue(type, "width", default)
+    
+    def getHeight(self, type, default = None):
+        return self._getValue(type, "height", default)
+    
+    def _getValue(self, type, attr, default = None):
+        r = self.__xml.xml_xpath("/htmloutput/icons/icon[@type='%s']" % type)
+        if len(r) == 0:
+            if default == None:
+                raise Exception("Not found")
+            else:
+                return default
+        return r[0][attr]
+    
+class XML2XHTML:
+    
+    def __init__(self, filename, url="http://fawww.europe.nokia.com/isis/isis_interface/configuration.xml", usedataurl=False):
+        self.__config = Configuration(url)
+        self.__filename = filename
+        self.__srcdoc = xml.dom.minidom.parse(filename)
+        self.__srcdoc.normalize()
+        self.__usedataurl = usedataurl
+        
+        # xhtml output
+        dom = xml.dom.minidom.getDOMImplementation()
+        doctype = dom.createDocumentType("html", 
+              "-//W3C//DTD XHTML 1.0 Strict//EN", 
+              "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd")
+        self.__doc = dom.createDocument(None, "html", doctype)
+        self.__xhtml = self.__doc.getElementsByTagName("html")[0]
+        self.__xhtml.setAttributeNS("", "xmlns", "http://www.w3.org/1999/xhtml")        
+        self.__id = 0
+        self.__xhtml_summary = None
+        self.__tags = {}
+        self.__css = ["http://fawww.europe.nokia.com/isis/isis_interface/css/logger2.css"]
+        self.__javascript = ["http://fawww.europe.nokia.com/isis/isis_interface/javascript/expand2.js"]
+        self.__factory = {'__header' : XML2XHTML.forname('helium.output.widgets.Header'),
+                          '__footer' : XML2XHTML.forname('helium.output.widgets.Footer'),
+                          '__maincontent' : XML2XHTML.forname('helium.output.widgets.Box'),
+                          '__summary' : XML2XHTML.forname('helium.output.widgets.Summary'),
+                          '__print' : XML2XHTML.forname('helium.output.widgets.Text'),
+                          '__printraw' : XML2XHTML.forname('helium.output.widgets.RawText'),
+                          '__event' : XML2XHTML.forname('helium.output.widgets.Event')}
+    
+    def _getId(self):
+        self.__id += 1
+        return self.__id
+
+    def addCSSLink(self, url):
+        self.__css.append(url)
+        
+    def addJScriptLink(self, url):
+        self.__javascript.append(url)
+        
+    def _generateCSSLinks(self, container):
+        for link in self.__css:
+            l = self.__doc.createElementNS("", "link")
+            if self.__usedataurl:
+                l.setAttributeNS("", "href", dataurl.from_url(link))
+            else:
+                l.setAttributeNS("", "href", link)
+            l.setAttributeNS("", "rel", "stylesheet")
+            l.setAttributeNS("", "type", "text/css")
+            container.appendChild(l)
+            
+    def _generateJScriptLink(self, container):
+        for link in self.__javascript:
+            l = self.__doc.createElementNS("", "script")
+            if self.__usedataurl:
+                l.setAttributeNS("", "src", dataurl.from_url(link))
+            else:
+                l.setAttributeNS("", "src", link)
+            l.setAttributeNS("", "type", "text/javascript")
+            l.appendChild(self.__doc.createTextNode(""))
+            container.appendChild(l)
+        
+        
+    def generate(self):
+        root = self.__srcdoc.documentElement
+        if root.tagName != "__log":
+            raise Exception("Invalid document must be __log.")
+
+        for c in root.getElementsByTagName("__customoutputer"):
+            self.__factory[c.attributes['type'].value] = XML2XHTML.forname(c.attributes['module'].value)
+
+        
+        head = self.__doc.createElementNS("", "head")
+        title = self.__doc.createElementNS("", "title")
+        self.__title = self.__doc.createTextNode("")
+        title.appendChild(self.__title)
+        head.appendChild(title)
+        
+        self._generateCSSLinks(head)
+        self._generateJScriptLink(head)
+        
+        body = self.__doc.createElementNS("", "body") 
+        self.__xhtml.appendChild(head)
+        self.__xhtml.appendChild(body)
+        
+                    
+        for c in root.childNodes:            
+            if c.nodeType == xml.dom.Node.ELEMENT_NODE and c.tagName == "__header":
+                self._handleHeader(c, body)
+            elif c.nodeType == xml.dom.Node.ELEMENT_NODE and c.tagName == "__summary":
+                self._handleSummary(c, body)
+            elif c.nodeType == xml.dom.Node.ELEMENT_NODE and c.tagName == "__maincontent":
+                self._handleMainContent(c, body)
+            elif c.nodeType == xml.dom.Node.ELEMENT_NODE and c.tagName == "build":
+                self._handleBuild(c, body)
+            elif c.nodeType == xml.dom.Node.ELEMENT_NODE and c.tagName == "task" and c.attributes.has_key('type') and c.attributes['type'] == "maincontent":
+                self._handleMainContent(c, body)
+
+        try:
+            footer = root.getElementsByTagName("__footer")[0]
+            f = self.__factory["__footer"](self.__doc, body)
+            if footer.attributes.has_key("title"):
+                f.setTitle(footer.attributes['title'].value)
+            if footer.attributes.has_key("subtitle"):
+                f.setSubTitle(footer.attributes['subtitle'].value)
+        except Exception:            
+            pass
+        # Generate summary
+        self._createSummary()
+
+    def _handleHeader(self, node, container):
+        h = self.__factory["__header"](self.__doc, container)
+        if node.attributes.has_key('title'):
+            self.__title.data = node.attributes['title'].value
+            h.setTitle(node.attributes['title'].value)        
+        if node.attributes.has_key("subtitle"):
+            h.setSubTitle(node.attributes['subtitle'].value)
+        
+    def _handleSummary(self, node, container):
+        box = self.__factory["__summary"](self.__doc, container)
+        if node.attributes.has_key('title'):
+            box.setTitle(node.attributes["title"].value)
+        
+        for c in node.getElementsByTagName("__elmt"):           
+            box.addElement(c.attributes['tag'].value, c.attributes['val'].value)
+        self.__xhtml_summary = box
+    
+    def _handleBuild(self, node, container):
+        for c in node.childNodes:
+            if c.nodeType == xml.dom.Node.ELEMENT_NODE and c.tagName == "task" and c.attributes.has_key('type') and c.attributes['type'].value == 'maincontent':
+                self._handleMainContent(c, container)
+                
+
+    def _handleMainContent(self, node, container):
+        box = self.__factory["__maincontent"](self.__doc, container)
+        if node.attributes.has_key("title"):
+            box.setTitle(node.attributes["title"].value)
+        if node.attributes.has_key("name"):
+            box.setTitle(node.attributes["name"].value)
+        for c in node.childNodes:
+            if c.nodeType == xml.dom.Node.ELEMENT_NODE and c.tagName == "__event":
+                self._handleEvent(c, box.getDOMContainer())
+            elif c.nodeType == xml.dom.Node.ELEMENT_NODE and c.tagName == "task" and c.attributes.has_key('type') and c.attributes['type'].value == 'event':
+                self._handleEvent(c, box.getDOMContainer())
+            elif c.nodeType == xml.dom.Node.ELEMENT_NODE and c.tagName == "message":
+                self._handleMessage(c, box.getDOMContainer())
+            elif c.nodeType == xml.dom.Node.ELEMENT_NODE:
+                self._handlePrint(c, box.getDOMContainer())
+
+    def _handleEvent(self, node, container):
+        tags = self.__tags
+        self.__tags = {}
+        event = self.__factory["__event"](self.__doc, container, self._getId())
+        if node.attributes.has_key('title'):
+            event.setTitle(node.attributes['title'].value)
+        elif node.attributes.has_key('name'):
+            event.setTitle(node.attributes['name'].value)
+        for c in node.childNodes:            
+            if c.nodeType == xml.dom.Node.ELEMENT_NODE and c.tagName == "__event":
+                self._handleEvent(c, event.getDOMContainer())
+            elif c.nodeType == xml.dom.Node.ELEMENT_NODE and c.tagName == "task" and c.attributes.has_key('type') and c.attributes['type'].value == 'event':
+                self._handleEvent(c, event.getDOMContainer())
+            elif c.nodeType == xml.dom.Node.ELEMENT_NODE and c.tagName == "message":
+                self._handleMessage(c, event.getDOMContainer())
+            elif c.nodeType == xml.dom.Node.ELEMENT_NODE:
+                self._handlePrint(c, event.getDOMContainer())
+                
+        keys = self.__tags.keys()
+        keys.sort()
+        for name in keys:         
+            event.addStatistics(name.replace("__", ""), self.__tags[name])
+        self.__tags = self._mergeStatistics(tags, self.__tags)
+        
+    def _handleMessage(self, node, container):
+        if node.attributes['priority'].value == "printraw":
+            t = self.__factory["__printraw"](self.__doc, container)
+            for n in node.childNodes:
+                if n.nodeType == xml.dom.Node.CDATA_SECTION_NODE:
+                    t.appendText(n.data)
+        else:
+            t = self.__factory["__print"](self.__doc, container)
+            for n in node.childNodes:
+                if n.nodeType == xml.dom.Node.CDATA_SECTION_NODE:
+                    t.appendText(n.data)
+            if node.attributes['priority'].value != "print":
+                t.setIcon(self.__config.getClass(node.attributes['priority'].value, "icn_dft"))
+                if self.__tags.has_key(node.attributes['priority'].value):
+                    self.__tags[node.attributes['priority'].value] += 1
+                else:
+                    self.__tags[node.attributes['priority'].value] = 1
+
+    def _handlePrint(self, node, container):
+        if node.tagName == "__printraw":
+            t = self.__factory["__printraw"](self.__doc, container)
+            for n in node.childNodes:
+                if n.nodeType == xml.dom.Node.CDATA_SECTION_NODE or n.nodeType == xml.dom.Node.TEXT_NODE:
+                    t.appendText(n.data)
+        else:
+            t = self.__factory["__print"](self.__doc, container)
+            for n in node.childNodes:
+                if n.nodeType == xml.dom.Node.CDATA_SECTION_NODE or n.nodeType == xml.dom.Node.TEXT_NODE:
+                    t.appendText(n.data)
+            if node.tagName != "__print":
+                t.setIcon(self.__config.getClass(node.tagName, "icn_dft"))
+                if self.__tags.has_key(node.tagName):
+                    self.__tags[node.tagName] += 1
+                else:
+                    self.__tags[node.tagName] = 1
+
+    def _createSummary(self):
+        # pylint: disable-msg=E1101
+        if self.__xhtml_summary == None:
+            self.__xhtml_summary = Summary(self.__doc, self.__body)
+            self.__xhtml_summary.setTitle("Global Statistics")
+        keys = self.__tags.keys()
+        keys.sort()
+        for name in keys:
+            self.__xhtml_summary.addStatistics(name.replace("__", ""), self.__tags[name])
+
+   
+    def _mergeStatistics(self, tags, newTags):
+        for name in newTags.keys():
+            if tags.has_key(name):
+                tags[name] += newTags[name]
+            else:
+                tags[name] = newTags[name]
+        return tags
+        
+    def WriteToFile(self, filename):        
+        file_object = open(filename, "w")
+        file_object.write(codecs.BOM_UTF8)
+        file_object.write(self.__doc.toprettyxml(encoding="utf-8"))
+        file_object.close()
+    
+    
+    @staticmethod
+    def forname(classname):
+        r = re.match("^(?P<modname>(?:\w+\.?)*)\.(?P<classname>(\w+?))$", classname)
+        if r != None:
+            return getattr(__import__(r.groupdict()['modname'], [], [], r.groupdict()['classname']), r.groupdict()['classname'])
+        else:
+            raise Exception("Error retreiving module and classname for %s" % classname)
+        
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/heliumlogging.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,29 @@
+#============================================================================ 
+#Name        : heliumlogging.py 
+#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:
+#===============================================================================
+
+import os
+import logging
+import logging.config
+if os.environ.has_key("HELIUM_CACHE_DIR"):
+    logconf = os.path.join(os.environ['HELIUM_CACHE_DIR'], "logging." + os.environ['PID'] + ".conf")
+else:
+    logconf = os.path.join(os.getcwd(), "logging.conf")
+
+if os.path.exists(logconf):
+    logging.config.fileConfig(logconf)
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/iadinfo.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,1095 @@
+#============================================================================ 
+#Name        : iadinfo.py 
+#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:
+#===============================================================================
+
+import optparse
+import sys, os
+import struct
+import zlib
+import pdb
+    
+PyASN1Availabe = True
+
+try :
+    from pyasn1.codec.der import decoder
+    from pyasn1.type import univ, base
+except :
+    PyASN1Availabe = False
+
+def _findItem(item, itemParent, index, objectIdentifier) :
+    if isinstance(item, base.AbstractSimpleAsn1Item) :
+        if item == objectIdentifier :
+            return itemParent[index + 1]
+    else:
+        for i in range(len(item)) :
+            found = _findItem(item[i], item, i, objectIdentifier)
+            if found: 
+                return found
+
+def findItem(decodedCert, objectIdentifier) :
+    return _findItem(decodedCert, None, 0, objectIdentifier)
+
+
+class CertificateOrganization :
+    def __init__(self) :
+        pass
+    
+    def parse(self, decodedCert) :
+        self.commonName = findItem(decodedCert, (2, 5, 4, 3))
+        self.countryCode = findItem(decodedCert, (2, 5, 4, 6))
+        self.locality = findItem(decodedCert, (2, 5, 4, 7))
+        self.state = findItem(decodedCert, (2, 5, 4, 8))
+        self.street = findItem(decodedCert, (2, 5, 4, 9))
+        self.organization = findItem(decodedCert, (2, 5, 4, 10))
+
+    def readableStr(self) :
+        buf = ""
+        if self.commonName :
+            buf += self.commonName.prettyPrint() + "\n"
+        if self.countryCode :
+            buf += self.countryCode.prettyPrint() + "\n"
+        if self.locality :
+            buf += self.locality.prettyPrint() + "\n"
+        if self.state :
+            buf += self.state.prettyPrint() + "\n"
+        if self.street :
+            buf += self.street.prettyPrint() + "\n"
+        if self.organization :
+            buf += self.organization.prettyPrint()
+        return buf
+
+class CertificateInfo :
+    def __init__(self) :
+        pass
+        
+    def parse(self, decodedCert) :
+        self.issuer = CertificateOrganization()
+        self.issuer.parse(decodedCert[0][3])
+        
+        self.signer = CertificateOrganization()
+        self.signer.parse(decodedCert[0][5])
+        
+    def readableStr(self) :
+        buf = "Signer:\n      " + "\n      ".join(self.signer.readableStr().split('\n')) + "\n"
+        buf += "Issuer:\n      " + "\n      ".join(self.issuer.readableStr().split('\n')) + "\n"
+        return buf
+            
+
+class SISFileHeader :
+    def __init__(self) :
+        self.uid1 = 0
+        self.uid2 = 0
+        self.uid3 = 0
+        self.uidChecksum = 0
+
+class SISField :
+    def __init__(self) :
+        self.type = 0
+        self.length = None
+        self.subFields = []
+        
+    def readFieldLength(self, fileReader) :
+        length = fileReader.readBytesAsUint(4)
+        if length & 0x80000000 > 0 :
+            length = length << 32
+            length |= fileReader.readBytesAsUint(4)
+        return length
+        
+    def findField(self, fieldType, startIndex=0) :
+        result = None
+        index = startIndex
+        
+        for field in self.subFields[startIndex:] :
+            if field.type == fieldType :
+                result = field
+                break
+            ++ index
+        return (result, index)
+        
+    def readableStr(self) :
+        return ""
+    
+    def traverse(self, handler, depth=0) :
+        handler.handleField(self, depth)
+        for field in self.subFields :
+            field.traverse(handler, depth + 1)
+        
+class SISUnsupportedField(SISField) :
+    def __init__(self) :
+        SISField.__init__(self)
+        
+    def initFromFile(self, fileReader) :
+        self.length = self.readFieldLength(fileReader)
+        fileReader.readPlainBytes(self.length)
+
+class SISStringField(SISField) :
+    def __init__(self) :
+        SISField.__init__(self)
+        self.data = None
+        
+    def initFromFile(self, fileReader) :
+        self.length = self.readFieldLength(fileReader)
+        buf = fileReader.readPlainBytes(self.length)
+        self.data = u""
+        while len(buf) > 0 :
+            temp = buf[:2]
+            buf = buf[2:]
+            self.data += unichr(ord(temp[0]) | ord(temp[1]) << 8)
+        
+    def readableStr(self) :
+        return self.data
+        
+class SISArrayField(SISField) :
+    def __init__(self) :
+        SISField.__init__(self)
+        
+    def initFromFile(self, fileReader) :
+        self.length = self.readFieldLength(fileReader)
+        type = fileReader.readBytesAsInt(4)
+        l = self.length - 4
+        while l > 0 :
+            field = SISFieldTypes[type]()
+            field.type = type
+            field.initFromFile(fileReader)
+            self.subFields.append(field)
+            
+            l -= field.length + 4 # field length + the length field
+            padding = fileReader.skipPadding()
+            l -= padding
+
+class SISCompressedField(SISField) :
+    def __init__(self) :
+        SISField.__init__(self)
+        self.algorithm = None
+        self.uncompressedDataSize = None
+        self.data = None
+        
+    def initFromFile(self, fileReader) :
+        self.length = self.readFieldLength(fileReader)
+        self.algorithm = fileReader.readBytesAsUint(4)
+        self.uncompressedDataSize = fileReader.readBytesAsUint(8)
+        data = fileReader.readPlainBytes(self.length - 4 - 8)
+        if self.algorithm == 0 :
+            self.data = data
+        elif self.algorithm == 1 :
+            self.data = zlib.decompress(data)
+            
+class SISVersionField(SISField) :
+    def __init__(self) :
+        SISField.__init__(self)
+        self.version = (- 1, - 1, - 1)
+        
+    def initFromFile(self, fileReader) :
+        self.length = self.readFieldLength(fileReader)
+        major = fileReader.readBytesAsInt(4)
+        minor = fileReader.readBytesAsInt(4)
+        build = fileReader.readBytesAsInt(4)
+        self.version = (major, minor, build)
+        
+    def readableStr(self) :
+        return str(self.version)
+    
+class SISVersionRangeField(SISField) :
+    def __init__(self) :
+        SISField.__init__(self)
+        self.fromVersion = None
+        self.toVersion = None
+        
+    def initFromFile(self, fileReader) :
+        self.length = self.readFieldLength(fileReader)
+        fieldParser = SISFieldParser()
+        self.fromVersion = fieldParser.parseField(fileReader)
+        if self.length - fieldParser.lastReadBytes > 0  :
+            self.toVersion = fieldParser.parseField(fileReader)
+    
+class SISDateField(SISField) :
+    def __init__(self) :
+        SISField.__init__(self)
+        self.year = None
+        self.month = None
+        self.day = None
+        
+    def initFromFile(self, fileReader) :
+        self.length = self.readFieldLength(fileReader)
+        self.year = fileReader.readBytesAsUint(2)
+        self.month = fileReader.readBytesAsUint(1)
+        self.day = fileReader.readBytesAsUint(1)
+    
+    def readableStr(self) :
+        return str(self.year) + "." + str(self.month) + "." + str(self.day)
+    
+class SISTimeField(SISField) :
+    def __init__(self) :
+        SISField.__init__(self)
+        self.hours = None
+        self.minutes = None
+        self.seconds = None
+        
+    def initFromFile(self, fileReader) :
+        self.length = self.readFieldLength(fileReader)
+        self.hours = fileReader.readBytesAsUint(1)
+        self.minutes = fileReader.readBytesAsUint(1)
+        self.seconds = fileReader.readBytesAsUint(1)
+    
+    def readableStr(self) :
+        return str(self.hours) + ":" + str(self.minutes) + ":" + str(self.seconds)
+    
+class SISDateTimeField(SISField) :
+    def __init__(self) :
+        SISField.__init__(self)
+        self.date = None
+        self.time = None
+        
+    def initFromFile(self, fileReader) :
+        self.length = self.readFieldLength(fileReader)
+        fieldParser = SISFieldParser()
+        self.date = fieldParser.parseField(fileReader)
+        self.time = fieldParser.parseField(fileReader)
+    
+class SISUidField(SISField) :
+    def __init__(self) :
+        SISField.__init__(self)
+        self.uid = None
+        
+    def initFromFile(self, fileReader) :
+        self.length = self.readFieldLength(fileReader)
+        self.uid = fileReader.readBytesAsUint(4)
+        
+    def readableStr(self) :
+        return hex(self.uid)
+    
+class SISLanguageField(SISField) :
+    def __init__(self) :
+        SISField.__init__(self)
+        self.language = None
+        
+    def initFromFile(self, fileReader) :
+        self.length = self.readFieldLength(fileReader)
+        self.language = fileReader.readBytesAsUint(4)
+        
+    def readableStr(self) :
+        return str(self.language)
+    
+class SISContentsField(SISField) :
+    def __init__(self) :
+        SISField.__init__(self)
+        
+    def initFromFile(self, fileReader) :
+        self.length = self.readFieldLength(fileReader)
+        fieldParser = SISFieldParser()
+        field = fieldParser.parseField(fileReader)
+        while field :
+            if field.type == 3 : # compressed<conroller>
+                bufferReader = SISBufferReader(field.data)
+                field = fieldParser.parseField(bufferReader)
+            self.subFields.append(field)
+            field = fieldParser.parseField(fileReader)
+
+class SISControllerField(SISField) :
+    def __init__(self) :
+        SISField.__init__(self)
+        
+    def initFromFile(self, fileReader) :
+        self.length = self.readFieldLength(fileReader)
+        fieldParser = SISFieldParser()
+        bufferReader = SISBufferReader(fileReader.readPlainBytes(self.length))
+        field = fieldParser.parseField(bufferReader)
+        while field :
+            self.subFields.append(field)
+            field = fieldParser.parseField(bufferReader)
+
+class SISInfoField(SISField) :
+    def __init__(self) :
+        SISField.__init__(self)
+        self.installType = None
+        self.installFlags = None
+        
+    def initFromFile(self, fileReader) :
+        self.length = self.readFieldLength(fileReader)
+        fieldParser = SISFieldParser()
+        self.subFields.append(fieldParser.parseField(fileReader)) # UID
+        self.subFields.append(fieldParser.parseField(fileReader)) # Vendor name unique
+        self.subFields.append(fieldParser.parseField(fileReader)) # names
+        self.subFields.append(fieldParser.parseField(fileReader)) # vendor names
+        self.subFields.append(fieldParser.parseField(fileReader)) # version
+        self.subFields.append(fieldParser.parseField(fileReader)) # creation time
+        self.installType = fileReader.readBytesAsUint(1)
+        self.installFlags = fileReader.readBytesAsUint(1) 
+            
+class SISSupportedLanguagesField(SISField) :
+    def __init__(self) :
+        SISField.__init__(self)
+        
+    def initFromFile(self, fileReader) :
+        self.length = self.readFieldLength(fileReader)
+        fieldParser = SISFieldParser()
+        self.subFields.append(fieldParser.parseField(fileReader)) # languages
+        
+class SISSupportedOptionsField(SISField) :
+    def __init__(self) :
+        SISField.__init__(self)
+        
+    def initFromFile(self, fileReader) :
+        self.length = self.readFieldLength(fileReader)
+        fieldParser = SISFieldParser()
+        self.subFields.append(fieldParser.parseField(fileReader)) # options
+            
+class SISPrerequisitiesField(SISField) :
+    def __init__(self) :
+        SISField.__init__(self)
+        
+    def initFromFile(self, fileReader) :
+        self.length = self.readFieldLength(fileReader)
+        fieldParser = SISFieldParser()
+        self.subFields.append(fieldParser.parseField(fileReader)) # target devices
+        self.subFields.append(fieldParser.parseField(fileReader)) # dependencies
+        
+        
+class SISDependencyField(SISField) :
+    def __init__(self) :
+        SISField.__init__(self)
+        
+    def initFromFile(self, fileReader) :
+        self.length = self.readFieldLength(fileReader)
+        fieldParser = SISFieldParser()
+        self.subFields.append(fieldParser.parseField(fileReader)) # UID
+        field = fieldParser.parseField(fileReader)
+        # Version range field is optional
+        if field.type == VersionRangeField :
+            self.subFields.append(field) # version range
+            self.subFields.append(fieldParser.parseField(fileReader)) # dependency names
+        else :
+            self.subFields.append(field) # dependency names
+    
+class SISPropertiesField(SISField) :
+    def __init__(self) :
+        SISField.__init__(self)
+        
+    def initFromFile(self, fileReader) :
+        self.length = self.readFieldLength(fileReader)
+        fieldParser = SISFieldParser()
+        self.subFields.append(fieldParser.parseField(fileReader)) # properties
+    
+class SISPropertyField(SISField) :
+    def __init__(self) :
+        SISField.__init__(self)
+        self.key = None
+        self.value = None
+        
+    def initFromFile(self, fileReader) :
+        self.length = self.readFieldLength(fileReader)
+        self.key = fileReader.readBytesAsInt(4)
+        self.value = fileReader.readBytesAsInt(4)
+    
+# There is a type for this field, but there is no definition of the field contents
+class SISSignaturesField(SISUnsupportedField) :
+    pass
+    
+class SISCertificateChainField(SISField) :
+    def __init__(self) :
+        SISField.__init__(self)
+        
+    def initFromFile(self, fileReader) :
+        self.length = self.readFieldLength(fileReader)
+        fieldParser = SISFieldParser()
+        self.subFields.append(fieldParser.parseField(fileReader)) # certificate data
+    
+class SISLogoField(SISField) :
+    def __init__(self) :
+        SISField.__init__(self)
+
+    def initFromFile(self, fileReader) :
+        self.length = self.readFieldLength(fileReader)
+        fieldParser = SISFieldParser()
+        self.subFields.append(fieldParser.parseField(fileReader)) # logo file
+    
+class SISFileDescriptionField(SISField) :
+    def __init__(self) :
+        SISField.__init__(self)
+        self.operation = None
+        self.operationOptions = None
+        self.compressedLength = None
+        self.uncompressedLength = None
+        self.fileIndex = None
+        
+    def initFromFile(self, fileReader) :
+        self.length = self.readFieldLength(fileReader)
+        fieldParser = SISFieldParser()
+        
+        self.subFields.append(fieldParser.parseField(fileReader))
+        self.subFields.append(fieldParser.parseField(fileReader))
+        field = fieldParser.parseField(fileReader)
+        self.subFields.append(field)
+        if field.type == 41 : # read field was capabilities ==> there is one more field left
+            self.subFields.append(fieldParser.parseField(fileReader))
+        
+        self.operation = fileReader.readBytesAsUint(4)
+        self.operationOptions = fileReader.readBytesAsUint(4)
+        self.compressedLength = fileReader.readBytesAsUint(8)
+        self.uncompressedLength = fileReader.readBytesAsUint(8)
+        self.fileIndex = fileReader.readBytesAsUint(4)
+        
+    def readableStr(self) :
+        return "index: " + str(self.fileIndex)
+    
+class SISHashField(SISField) :
+    def __init__(self) :
+        SISField.__init__(self)
+        self.algorithm = None
+
+    def initFromFile(self, fileReader) :
+        self.length = self.readFieldLength(fileReader)
+        fieldParser = SISFieldParser()
+        self.algorithm = fileReader.readBytesAsUint(4)
+        self.subFields.append(fieldParser.parseField(fileReader)) # logo file
+    
+class SISIfField(SISField) :
+    def __init__(self) :
+        SISField.__init__(self)
+
+    def initFromFile(self, fileReader) :
+        self.length = self.readFieldLength(fileReader)
+        fieldParser = SISFieldParser()
+        self.subFields.append(fieldParser.parseField(fileReader)) # expression
+        self.subFields.append(fieldParser.parseField(fileReader)) # install block
+        self.subFields.append(fieldParser.parseField(fileReader)) # else ifs
+
+class SISElseIfField(SISField) :
+    def __init__(self) :
+        SISField.__init__(self)
+
+    def initFromFile(self, fileReader) :
+        self.length = self.readFieldLength(fileReader)
+        fieldParser = SISFieldParser()
+        self.subFields.append(fieldParser.parseField(fileReader)) # expression
+        self.subFields.append(fieldParser.parseField(fileReader)) # install block
+    
+class SISInstallBlockField(SISField) :
+    def __init__(self) :
+        SISField.__init__(self)
+        self.files = None
+        self.embeddedSISFiles = None
+        self.ifBlocks = None
+        
+    def initFromFile(self, fileReader) :
+        self.length = self.readFieldLength(fileReader)
+        fieldParser = SISFieldParser()
+        self.subFields.append(fieldParser.parseField(fileReader))
+        self.subFields.append(fieldParser.parseField(fileReader))
+        self.subFields.append(fieldParser.parseField(fileReader))
+
+class SISExpressionField(SISField) :
+    def __init__(self) :
+        SISField.__init__(self)
+        self.operator = None
+        self.integerValue = None
+        
+    def initFromFile(self, fileReader) :
+        self.length = self.readFieldLength(fileReader)
+        fieldParser = SISFieldParser()
+        self.operator = fileReader.readBytesAsUint(4)
+        self.integerValue = fileReader.readBytesAsInt(4)
+        
+        if self.operator == 10 or self.operator == 13 :
+            self.subFields.append(fieldParser.parseField(fileReader))
+        if self.operator == 1 or self.operator == 2 or self.operator == 3 or self.operator == 4 or self.operator == 5 or self.operator == 6 or self.operator == 7 or self.operator == 8 or self.operator == 11 or self.operator == 12 :
+            self.subFields.append(fieldParser.parseField(fileReader))
+        if not (self.operator == 13 or self.operator == 14 or self.operator == 15 or self.operator == 16 or self.operator == 10) :
+            self.subFields.append(fieldParser.parseField(fileReader))
+        
+class SISDataField(SISField) :
+    def __init__(self) :
+        SISField.__init__(self)
+        
+    def initFromFile(self, fileReader) :
+        self.length = self.readFieldLength(fileReader)
+        fieldParser = SISFieldParser()
+        self.subFields.append(fieldParser.parseField(fileReader)) # data units
+    
+class SISDataUnitField(SISField) :
+    def __init__(self) :
+        SISField.__init__(self)
+        
+    def initFromFile(self, fileReader) :
+        self.length = self.readFieldLength(fileReader)
+        fieldParser = SISFieldParser()
+        self.subFields.append(fieldParser.parseField(fileReader)) # file data
+    
+class SISFileDataField(SISField) :
+    def __init__(self) :
+        SISField.__init__(self)
+        
+    def initFromFile(self, fileReader) :
+        self.length = self.readFieldLength(fileReader)
+        fieldParser = SISFieldParser()
+        self.subFields.append(fieldParser.parseField(fileReader)) # raw file data
+    
+class SISSupportedOptionField(SISField) :
+    def __init__(self) :
+        SISField.__init__(self)
+        
+    def initFromFile(self, fileReader) :
+        self.length = self.readFieldLength(fileReader)
+        fieldParser = SISFieldParser()
+        self.subFields.append(fieldParser.parseField(fileReader)) # names
+    
+class SISControllerChecksumField(SISField) :
+    def __init__(self) :
+        SISField.__init__(self)
+        self.checksum = None
+        
+    def initFromFile(self, fileReader) :
+        self.length = self.readFieldLength(fileReader)
+        self.checksum = fileReader.readBytesAsUint(2)
+    
+class SISDataChecksumField(SISField) :
+    def __init__(self) :
+        SISField.__init__(self)
+        self.checksum = None
+        
+    def initFromFile(self, fileReader) :
+        self.length = self.readFieldLength(fileReader)
+        self.checksum = fileReader.readBytesAsUint(2)
+    
+class SISSignatureField(SISField) :
+    def __init__(self) :
+        SISField.__init__(self)
+        
+    def initFromFile(self, fileReader) :
+        self.length = self.readFieldLength(fileReader)
+        fieldParser = SISFieldParser()
+        self.subFields.append(fieldParser.parseField(fileReader)) # signature algorithm
+        self.subFields.append(fieldParser.parseField(fileReader)) # signature data
+    
+class SISBlobField(SISField) :
+    def __init__(self) :
+        SISField.__init__(self)
+        self.data = None
+        
+    def initFromFile(self, fileReader) :
+        self.length = self.readFieldLength(fileReader)
+        self.data = fileReader.readPlainBytes(self.length)
+    
+class SISSignatureAlgorithmField(SISField) :
+    def __init__(self) :
+        SISField.__init__(self)
+        
+    def initFromFile(self, fileReader) :
+        self.length = self.readFieldLength(fileReader)
+        fieldParser = SISFieldParser()
+        self.subFields.append(fieldParser.parseField(fileReader)) # algorithm identifier
+    
+class SISSignatureCertificateChainField(SISField) :
+    def __init__(self) :
+        SISField.__init__(self)
+        
+    def initFromFile(self, fileReader) :
+        self.length = self.readFieldLength(fileReader)
+        fieldParser = SISFieldParser()
+        self.subFields.append(fieldParser.parseField(fileReader)) # signatures
+        self.subFields.append(fieldParser.parseField(fileReader)) # certificate chain
+    
+class SISDataIndexField(SISField) :
+    def __init__(self) :
+        SISField.__init__(self)
+        self.dataIndex = None
+        
+    def initFromFile(self, fileReader) :
+        self.length = self.readFieldLength(fileReader)
+        self.dataIndex = fileReader.readBytesAsUint(4)
+
+class SISCapabilitiesField(SISField) :
+    def __init__(self) :
+        SISField.__init__(self)
+        self.capabilities = 0
+        self.readableCaps = []
+        
+    def initFromFile(self, fileReader) :
+        self.length = self.readFieldLength(fileReader)
+        self.capabilities = fileReader.readBytesAsUint(self.length)
+        
+        for i in range(20) :
+            if (self.capabilities >> i) & 0x01 :
+                self.readableCaps.append(CapabilityNames[i])
+                
+    def readableStr(self) :
+        return " ".join(self.readableCaps)
+    
+SISFieldTypes = { 
+    1 : SISStringField,
+    2 : SISArrayField,
+    3 : SISCompressedField,
+    4 : SISVersionField,
+    5 : SISVersionRangeField,
+    6 : SISDateField,
+    7 : SISTimeField,
+    8 : SISDateTimeField,
+    9 : SISUidField,
+    10 : SISUnsupportedField,
+    11 : SISLanguageField,
+    12 : SISContentsField,
+    13 : SISControllerField,
+    14 : SISInfoField,
+    15 : SISSupportedLanguagesField,
+    16 : SISSupportedOptionsField,
+    17 : SISPrerequisitiesField,
+    18 : SISDependencyField,
+    19 : SISPropertiesField,
+    20 : SISPropertyField,
+    21 : SISSignaturesField,
+    22 : SISCertificateChainField,
+    23 : SISLogoField,
+    24 : SISFileDescriptionField,
+    25 : SISHashField,
+    26 : SISIfField,
+    27 : SISElseIfField,
+    28 : SISInstallBlockField,
+    29 : SISExpressionField,
+    30 : SISDataField,
+    31 : SISDataUnitField,
+    32 : SISFileDataField,
+    33 : SISSupportedOptionField,
+    34 : SISControllerChecksumField,
+    35 : SISDataChecksumField,
+    36 : SISSignatureField,
+    37 : SISBlobField,
+    38 : SISSignatureAlgorithmField,
+    39 : SISSignatureCertificateChainField,
+    40 : SISDataIndexField,
+    41 : SISCapabilitiesField
+    }
+
+[StringField,
+ ArrayField,
+ CompressedField,
+ VersionField,
+ VersionRangeField,
+ DateField,
+ TimeField,
+ DateTimeField,
+ UidField,
+ UnusedField,
+ LanguageField,
+ ContentsField,
+ ControllerField,
+ InfoField,
+ SupportedLanguagesField,
+ SupportedOptionsField,
+ PrerequisitiesField,
+ DependencyField,
+ PropertiesField,
+ PropertyField,
+ SignaturesField,
+ CertificateChainField,
+ LogoField,
+ FileDescriptionField,
+ HashField,
+ IfField,
+ ElseIfField,
+ InstallBlockField,
+ ExpressionField,
+ DataField,
+ DataUnitField,
+ FileDataField,
+ SupportedOptionField,
+ ControllerChecksumField,
+ DataChecksumField,
+ SignatureField,
+ BlobField,
+ SignatureAlgorithmField,
+ SignatureCertificateChainField,
+ DataIndexField,
+ CapabilitiesField] = range(1, 42)
+     
+FieldNames = {
+ 0 : "ROOT",
+ StringField : "StringField",
+ ArrayField : "ArrayField",
+ CompressedField : "CompressedField",
+ VersionField : "VersionField",
+ VersionRangeField : "VersionRangeField",
+ DateField : "DateField",
+ TimeField : "TimeField",
+ DateTimeField : "DateTimeField",
+ UidField : "UidField",
+ UnusedField : "UnusedField",
+ LanguageField : "LanguageField",
+ ContentsField : "ContentsField",
+ ControllerField : "ControllerField",
+ InfoField : "InfoField",
+ SupportedLanguagesField : "SupportedLanguagesField",
+ SupportedOptionsField : "SupportedOptionsField",
+ PrerequisitiesField : "PrerequisitiesField",
+ DependencyField : "DependencyField",
+ PropertiesField : "PropertiesField",
+ PropertyField : "PropertyField",
+ SignaturesField : "SignaturesField",
+ CertificateChainField : "CertificateChainField",
+ LogoField : "LogoField",
+ FileDescriptionField : "FileDescriptionField",
+ HashField : "HashField",
+ IfField : "IfField",
+ ElseIfField : "ElseIfField",
+ InstallBlockField : "InstallBlockField",
+ ExpressionField : "ExpressionField",
+ DataField : "DataField",
+ DataUnitField : "DataUnitField",
+ FileDataField : "FileDataField",
+ SupportedOptionField : "SupportedOptionField",
+ ControllerChecksumField : "ControllerChecksumField",
+ DataChecksumField : "DataChecksumField",
+ SignatureField : "SignatureField",
+ BlobField : "BlobField",
+ SignatureAlgorithmField : "SignatureAlgorithmField",
+ SignatureCertificateChainField : "SignatureCertificateChainField",
+ DataIndexField : "DataIndexField",
+ CapabilitiesField : "CapabilitiesField"
+}
+     
+CapabilityNames = {
+    0 : "TCB",
+    1 : "CommDD",
+    2 : "PowerMgmt",
+    3 : "MultimediaDD",
+    4 : "ReadDeviceData",
+    5 : "WriteDeviceData",
+    6 : "DRM",
+    7 : "TrustedUI",
+    8 : "ProtServ",
+    9 : "DiskAdmin",
+    10 : "NetworkControl",
+    11 : "AllFiles",
+    12 : "SwEvent",
+    13 : "NetworkServices",
+    14 : "LocalServices",
+    15 : "ReadUserData",
+    16 : "WriteUserData",
+    17 : "Location",
+    18 : "SurroundingsDD",
+    19 : "UserEnvironment"
+    }
+
+InstallTypes = {
+    0: "SA",
+    1: "SP",
+    2: "PU",
+    3: "PA",
+    4: "PP"
+    }
+    
+class SISReader :
+    def __init__(self) :
+        self.bytesRead = 0
+        
+    def readUnsignedBytes(self, numBytes) :
+        buf = self.readPlainBytes(numBytes)
+        if len(buf) < numBytes :
+            return []
+            
+        format = ""
+        for i in range(numBytes) :
+            format += "B"
+        return struct.unpack(format, buf)
+    
+    def readSignedBytes(self, numBytes) :
+        buf = self.readPlainBytes(numBytes)
+        if len(buf) < numBytes :
+            return []
+            
+        format = ""
+        for i in range(numBytes) :
+            format += "b"
+        return struct.unpack(format, buf)
+        
+    def readBytesAsUint(self, numBytes) :
+        result = 0
+        bytes = self.readUnsignedBytes(numBytes)
+        if len(bytes) == numBytes :
+            for i in range(numBytes) :
+                result |= bytes[i] << (i * 8)
+        
+        return result
+        
+    def readBytesAsInt(self, numBytes) :
+        result = 0
+        bytes = self.readSignedBytes(numBytes)
+        if len(bytes) == numBytes :
+            for i in range(numBytes) :
+                result |= bytes[i] << (i * 8)
+        
+        return result
+        
+    def skipPadding(self) :
+        result = 0
+        if self.bytesRead % 4 != 0 :
+            paddingLength = 4 - self.bytesRead % 4
+            self.readPlainBytes(paddingLength)
+            result = paddingLength
+            
+        return result
+
+    def readPlainBytes(self, numBytes) :
+        pass
+
+class SISFileReader(SISReader) : 
+    def __init__(self, inStream) :
+        SISReader.__init__(self)
+        self.inStream = inStream
+        self.eof = False
+        self.bytesRead = 0
+
+    def readPlainBytes(self, numBytes) :
+        if self.eof :
+            return ""
+            
+        if numBytes == 0 :
+            return ""
+            
+        buf = ""
+        buf = self.inStream.read(numBytes)
+        if len(buf) < numBytes :
+            self.eof = True
+            return ""
+            
+        self.bytesRead += numBytes
+        
+        return buf
+
+    def isEof(self) :
+        return self.eof
+        
+class SISBufferReader(SISReader) :
+    def __init__(self, buffer) :
+        self.buffer = buffer
+        self.bytesRead = 0
+        
+    def readPlainBytes(self, numBytes) :
+        if self.isEof() :
+            return ""
+            
+        if numBytes == 0 :
+            return ""
+            
+        result = self.buffer[self.bytesRead:self.bytesRead + numBytes]
+            
+        self.bytesRead += numBytes
+        
+        return result
+            
+    def isEof(self) :
+        return self.bytesRead >= len(self.buffer)
+        
+class SISFieldParser :
+    def __init__(self) :
+        self.lastReadBytes = 0
+        
+    def parseField(self, fileReader) :
+        """Reads the next field from the fileReader stream and returns it"""
+        field = None
+        self.lastReadBytes = 0
+        type = fileReader.readBytesAsUint(4)
+        self.lastReadBytes += 4
+        if type != 0 :
+            field = SISFieldTypes[type]()
+            field.type = type
+            field.initFromFile(fileReader)
+            self.lastReadBytes += field.length + 4 # Field length + length field
+            self.lastReadBytes += fileReader.skipPadding()
+        return field
+
+class SISInfo(SISField) :
+    def __init__(self) :
+        SISField.__init__(self)
+        self.fin = None
+        self.fileHeader = SISFileHeader()
+        
+    def parse(self, filename) :
+        fin = open(filename, 'rb')
+        fileReader = SISFileReader(fin)
+        self.parseHeader(fileReader)
+        self.parseSISFields(fileReader)
+        
+    def parseHeader(self, fileReader) :
+        self.fileHeader.uid1 = fileReader.readBytesAsUint(4)
+        self.fileHeader.uid2 = fileReader.readBytesAsUint(4)
+        self.fileHeader.uid3 = fileReader.readBytesAsUint(4)
+        self.fileHeader.uidChecksum = fileReader.readBytesAsUint(4)
+        
+    def parseSISFields(self, fileReader) :
+        parser = SISFieldParser()
+        while not fileReader.isEof() :
+            self.subFields.append(parser.parseField(fileReader))
+
+class Handler :
+    def __init__(self) :
+        self.files = []
+        self.fileDatas = []
+        self.signatureCertificateChains = []
+        
+    def handleField(self, field, depth) :
+        if field.type == FileDescriptionField :
+            self.files.append(field)
+        elif field.type == FileDataField :
+            self.fileDatas.append(field)
+        elif field.type == SignatureCertificateChainField  :
+            self.signatureCertificateChains.append(field)
+
+    def execute(self, options) :
+        for f in self.files :
+            if options.info :
+                buf = "   " + f.findField(StringField)[0].readableStr()
+                caps = f.findField(CapabilitiesField)[0]
+                if caps :
+                    buf += " [" + " ".join(f.findField(CapabilitiesField)[0].readableCaps) + "]"
+                print buf
+            if options.extract :
+                parts = f.findField(StringField)[0].readableStr().split("\\")
+                if len(parts[len(parts) - 1]) > 0 :
+                    path = os.path.abspath(options.extract)
+                    path += os.sep + os.sep.join(parts[1: - 1])
+                    if not os.path.exists(path) :
+                        os.makedirs(path)
+                    newFile = file(path + os.sep + parts[len(parts) - 1], "wb")
+                    newFile.write(self.fileDatas[f.fileIndex].findField(CompressedField)[0].data)
+                    newFile.close()
+        for s in self.signatureCertificateChains :
+            if options.certificate:
+                buf = s.findField(CertificateChainField)[0].subFields[0].data
+                print "Certificate chain:"
+                i = 1
+                while len(buf) > 0 :
+                    print "   Certificate " + str(i) + ":"
+                    i += 1
+                    decoded = decoder.decode(buf)
+                    cer = CertificateInfo()
+                    cer.parse(decoded[0])
+                    readableStr = cer.readableStr()
+                    print "      " + "\n      ".join(readableStr.split('\n'))
+                    buf = decoded[1]
+            
+class ContentPrinter :
+    def __init__(self) :
+        pass
+        
+    def handleField(self, field, depth) :
+        buf = ""
+        for i in range(depth) :
+            buf += "  "
+        buf += FieldNames[field.type] + " "
+        if len(field.readableStr()) > 0 :
+            buf += field.readableStr()
+        print buf
+
+class IADHandler :
+    def __init__(self) :
+        self.packageVersion = (0, 0, 0)
+        self.packageUid = 0
+        self.vendorName = ""
+        self.packageNames = []
+        self.packageNamesFields = []
+        self.languages = []
+        self.platformDependencies = []
+        self.packageDependencies = []
+        self.installType = 0
+        self.installFlags = 0
+        
+    def handleDependency(self, field) :
+        dep = [0, - 1, - 1, - 1, - 1, - 1, - 1]
+        dep[0] = field.subFields[0].uid
+        if field.subFields[1] and field.subFields[1].type == VersionRangeField :
+            r = field.subFields[1]
+            if r.fromVersion != None :
+                dep[1] = r.fromVersion.version[0]
+                dep[2] = r.fromVersion.version[1]
+                dep[3] = r.fromVersion.version[2]
+            if r.toVersion != None :
+                dep[4] = r.toVersion.version[0]
+                dep[5] = r.toVersion.version[1]
+                dep[6] = r.toVersion.version[2]
+        return dep
+        
+    def handleField(self, field, depth) :
+        if field.type == InfoField :
+            self.packageVersion = field.subFields[4].version
+            self.packageVersionField = field.subFields[4]
+            self.packageUid = field.subFields[0].uid
+            self.packageUidField = field.subFields[0]
+            self.vendorName = field.subFields[1].data
+            self.vendorNameField = field.subFields[1]
+            self.installType = field.installType
+            self.installFlags = field.installFlags
+            for name in field.subFields[2].subFields :
+                self.packageNames.append(name.data)
+        elif field.type == LanguageField :
+            self.languages.append(field.language)
+        elif field.type == PrerequisitiesField :
+            for f in field.subFields[0].subFields :
+                dependency = self.handleDependency(f)
+                self.platformDependencies.append(dependency)
+            for f in field.subFields[1].subFields :
+                dependency = self.handleDependency(f)
+                self.packageDependencies.append(dependency)
+        
+    def getInfo (self, fileName) :
+        sisInfo = SISInfo()
+        sisInfo.parse(fileName)
+        handler = IADHandler()
+        sisInfo.traverse(handler)
+        info = "<sisinfo>\n" \
+             + "  <uid>" + hex(handler.packageUid) + "</uid>\n" \
+             + "  <vendor>" + handler.vendorName + "</vendor>\n" \
+             + "  <version>" \
+             + "<major>" + repr(handler.packageVersion[0]) + "</major>" \
+             + "<minor>" + repr(handler.packageVersion[1]) + "</minor>" \
+             + "<build>" + repr(handler.packageVersion[2]) + "</build>" \
+             + "</version>\n" \
+             + "  <type>" + InstallTypes[self.installType] + "</type>\n"
+        for num, name in enumerate(handler.packageNames) :
+            info += "  <name language='" + repr(handler.languages[num]) + "'>" + name + "</name>\n"
+        for language in handler.languages :
+            info += "  <language>" + repr(language) + "</language>\n"
+        for platDep in handler.platformDependencies :
+            info += "  <platform_dependency><uid>" + hex(platDep[0]) + "</uid>\n"
+            info += "    <from>" \
+                 + "<major>" + repr(platDep[1]) + "</major>" \
+                 + "<minor>" + repr(platDep[2]) + "</minor>"
+#           info += "<build>" + repr(platDep[3]) + "</build>"
+            info += "</from>\n    <to>" \
+                 + "<major>" + repr(platDep[4]) + "</major>" \
+                 + "<minor>" + repr(platDep[5]) + "</minor>"
+#           info += "<build>" + repr(platDep[6]) + "</build>"
+            info += "</to>\n" \
+             + "  </platform_dependency>\n"
+        for packageDep in handler.packageDependencies :
+            info += "  <package_dependency><uid>" + hex(packageDep[0]) + "</uid>\n"
+            info += "    <from>" \
+                 + "<major>" + repr(packageDep[1]) + "</major>" \
+                 + "<minor>" + repr(packageDep[2]) + "</minor>"
+#           info += "<build>" + repr(packageDep[3]) + "</build>"
+            info += "</from>\n    <to>" \
+                 + "<major>" + repr(packageDep[4]) + "</major>" \
+                 + "<minor>" + repr(packageDep[5]) + "</minor>"
+#           info += "<build>" + repr(packageDep[6]) + "</build>"
+            info += "</to>\n" \
+                 + "  </package_dependency>\n"
+        info += "</sisinfo>\n"
+        return info
+
+if __name__ == "__main__" :
+    handler = IADHandler()
+    print (handler.getInfo (sys.argv[1]))
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/icf2txt.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,51 @@
+#============================================================================ 
+#Name        : icf2txt.py 
+#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:
+#===============================================================================
+
+import sys
+import amara
+import os
+
+def get_icfs(filename):
+    """ Read the list of icfs from the BOM. """
+    result = []
+    bomxmlFile = open(filename, "r")
+    bomxml = amara.parse(bomxmlFile)
+    if hasattr(bomxml.bom.content.project, "icf"):
+        for icf in bomxml.bom.content.project.icf:
+            result.append(str(icf))
+    bomxmlFile.close()
+    return result
+
+def main():
+    if len(sys.argv) != 3:
+        print "Usage: icf2txt.py bom.xml out.txt"
+        sys.exit(1)
+
+    result = ['BOM not generated, the list of ICFs could not be generated']
+    if os.path.exists(sys.argv[1]):
+        result = get_icfs(sys.argv[1])
+
+    outFile = open(sys.argv[2], "w")
+    for icf in result:
+        outFile.write(str(icf) + "\n")
+    outFile.close()
+    
+
+if __name__ == "__main__":
+    main()
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/ido.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,70 @@
+#============================================================================ 
+#Name        : ido.py 
+#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:
+#===============================================================================
+
+"""
+IDO specific features
+    * find layer_real_source_path from sysdef file.
+    * time manipulation for robot releasing.
+"""
+import re
+import datetime
+
+MATCH_ENTITY = re.compile(r".*ENTITY\s+layer_real_source_path\s+\"(.+)\"\s*>?.*")
+
+def get_sysdef_location(sysdef):
+    """ Search for layer_real_source_path entity inside the sysdef file. """
+    input = open(sysdef, 'r')
+    for line in input.readlines():
+        result = MATCH_ENTITY.match(line)
+        if result != None:
+            input.close()
+            return result.groups()[0]
+    input.close()
+    print 'layer_real_source_path entity not found in ' + sysdef
+    return None
+
+
+def get_first_day_of_cycle(now = datetime.datetime.now()):
+    """ This function returns a datetime object representing the monday from closest
+        odd week.
+    """
+    isoyear, isoweek, isoday = now.isocalendar()
+    week = isoweek - 1
+    day = isoday - 1
+    monday = now - datetime.timedelta(days=day + week.__mod__(2) * 7)
+    monday = monday.replace(hour = 0, minute = 0, second = 0, microsecond = 0)
+    return monday
+
+def get_absolute_date(day, time, now = datetime.datetime.now()):
+    """ Get the absolute date from the day and time. """
+    time = datetime.datetime.strptime(time, "%H:%M")
+    delta = datetime.timedelta(days = day-1, hours = time.hour, minutes= time.minute)
+    return get_first_day_of_cycle(now) + delta
+
+
+def is_in_interval(day1, time1, day2, time2, now = datetime.datetime.now()):
+    """ Return True is get_absolute_date(day1, time1) < now < get_absolute_date(day2, time2). """
+    delta1 = get_absolute_date(day1, time1, now)
+    delta2 = get_absolute_date(day2, time2, now)
+    if now <= delta1:
+        return False
+    if delta2 <= now:
+        return False
+    return True
+    
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/idoprep.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,149 @@
+#============================================================================ 
+#Name        : idoprep.py 
+#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:
+#===============================================================================
+
+""" Modules related to ido-prep """
+
+import re
+import os
+import symrec
+import logging
+import traceback
+import ido
+
+logging.basicConfig(level=logging.INFO)
+logger = logging.getLogger("check_latest_release")
+
+def validate(grace, service, product, release):
+    """ Validate s60 grace server, s60 grace service, s60 grace product and 
+        s60 grace release are set.
+    """    
+    if not grace:
+        raise Exception("Property 's60.grace.server' is not defined.")
+    if not service:
+        raise Exception("Property 's60.grace.service' is not defined.")
+    if not product:
+        raise Exception("Property 's60.grace.product' is not defined.")
+    if not release:
+        raise Exception("Property 's60.grace.release' is not defined.")
+            
+def get_s60_env_details(grace, service, product, release, rev, cachefilename, s60gracecheckmd5, s60graceusetickler):
+    """ Return s60 environ details """
+    validate(grace, service, product, release)
+    revision = r'(_\d{3})?'
+    if rev != None:
+        revision = rev
+
+    if cachefilename:
+        logger.info(str("Using cache file: %s" % cachefilename))
+    
+    checkmd5 = False
+    if s60gracecheckmd5 != None:
+        checkmd5 = str(s60gracecheckmd5).lower()
+        checkmd5 = ((checkmd5 == "true") or (checkmd5 == "1") or (checkmd5 == "on"))
+                
+    branch = os.path.join(grace, service, product)
+    if not os.path.exists(branch):
+        raise Exception("Error occurred: Could not find directory %s" % branch)
+        
+    result = []
+    for rel in os.listdir(branch):
+        relpath = os.path.join(branch, rel)
+        logger.info("Checking: %s" % str(relpath))
+        res = re.match(r"%s%s$" % (release, revision), rel, re.I)
+        if res != None:
+            logger.info("Found: %s" % str(relpath))
+            result.append(relpath)
+    result.sort(reverse=True)
+    use_tickler = False
+    tickler_validation = str(s60graceusetickler).lower()
+    if tickler_validation != None:
+        use_tickler = ((tickler_validation == "true") or (tickler_validation == "1"))
+    validresults = []
+    for rel in result:
+        try:
+            metadata_filename = symrec.find_latest_metadata(str(rel))
+            if metadata_filename is not None and os.path.exists(metadata_filename):
+                logger.info(str("Validating: %s" % metadata_filename))
+                if (use_tickler):
+                    validator = symrec.ValidateTicklerReleaseMetadata(metadata_filename, cachefilename)
+                else:
+                    validator = symrec.ValidateReleaseMetadataCached(metadata_filename, cachefilename)
+                if validator.is_valid(checkmd5):
+                    logger.info(str("%s is valid." % rel))
+                    validresults.append(rel)
+                    break
+                else:
+                    logger.info(str("%s is not a valid release." % rel))
+            elif metadata_filename is None:
+                logger.info(str("Could not find the release metadata file under %s" % rel))
+        except Exception, e:
+            logger.warning(str("WARNING: %s: %s" % (rel , e)))
+            logger.warning(("%s is not a valid release." % rel))
+            traceback.print_exc()
+    
+    result = validresults
+    if len(result) == 0:
+        raise Exception("Error finding GRACE release.")
+    print result[0]
+    return result
+    
+def get_version(buiddrive, resultname):
+    """ Return s60 version """
+    vfile = os.path.join(buiddrive + os.sep, 's60_version.txt')
+    version = None
+    if (os.path.exists(vfile)):
+        logger.info("Are we still up-to-date compare to %s" % str(vfile))
+        f = open(str(vfile), 'r')
+        version = f.readline()
+        logger.info(str("'%s' == '%s'" % (version, resultname)))
+        f.close()
+    else:
+        logger.info("Version file not found getting new environment...")
+    return version
+        
+def create_ado_mapping(sysdefconfig, adomappingfile, adoqualitymappingfile, builddrive, adoqualitydirs):
+    """ Creates ado mapping and ado quality mapping files """
+    input = open(sysdefconfig, 'r')
+    output = open(adomappingfile, 'w')
+    outputquality = open(adoqualitymappingfile, 'w')
+    components = {}
+    for sysdef in input.readlines():
+        sysdef = sysdef.strip()
+        if len(sysdef) > 0:
+            print "Checking %s" % sysdef
+            os.path.dirname(sysdef)
+            location = ido.get_sysdef_location(sysdef)
+            if location != None:
+                sysdef = os.path.dirname(sysdef).replace('\\','/').replace(':','\\:')
+                component = os.path.normpath(os.path.join(builddrive, os.environ['EPOCROOT'], location)).replace('\\','/').replace(':','\\:')
+                print "%s=%s\n" % (sysdef, component)
+                output.write("%s=%s\n" % (sysdef, component))
+                
+                if adoqualitydirs == None:
+                    outputquality.write("%s=%s\n" % (sysdef, component))
+                else:
+                    for dir in adoqualitydirs.split(','):
+                        if os.path.normpath(dir) == os.path.normpath(os.path.join(builddrive, os.environ['EPOCROOT'], location)):
+                            outputquality.write("%s=%s\n" % (sysdef, component))
+    outputquality.close()
+    output.close()
+    input.close()
+
+
+    
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/imaker/__init__.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,22 @@
+#============================================================================ 
+#Name        : __init__.py 
+#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:
+#===============================================================================
+
+""" iMaker framework. """
+from api import *
+ 
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/imaker/api.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,97 @@
+#============================================================================ 
+#Name        : api.py 
+#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:
+#===============================================================================
+
+""" This module is an helper to interface iMaker. """
+import os
+import re
+import fileutils
+import tempfile
+import logging
+import subprocess
+
+logging.basicConfig(level=logging.INFO)
+logger = logging.getLogger("imaker.api")
+
+class IMakerConfigScanner(fileutils.AbstractScanner):
+    """ Specialize the abstract filescanner to support detection of the configuration. """
+    def scan(self):
+        """ Implement scanning of relevant configuration. """
+        p = subprocess.Popen("imaker help-config", shell=True, stdout=subprocess.PIPE)
+        handle = p.communicate()[0]
+        for line in handle.splitlines():
+            line = line.strip()
+            if line.startswith('/') and self.is_included(line) \
+                and not self.is_excluded(line):
+                yield line
+        
+def scan_configs(includes, excludes):
+    """ Use iMaker to scan the available buildable configurations. """
+    scanner = IMakerConfigScanner()
+    for inc in includes:
+        scanner.add_include(inc)
+    for exc in excludes:
+        scanner.add_exclude(exc)
+    return [r for r in scanner.scan()]
+
+def targets_for_config(config):
+    """ Return the list of target supported by the provided configuration of iMaker. """
+    cmd = "imaker -f %s help-target-*-list" % config
+    p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
+    handle = p.communicate()[0]
+    result = []
+    for line in handle.splitlines():
+        line = line.strip()
+        if line == "" or line.startswith("Total duration"):
+            continue
+        result.append(line)
+    return result
+
+
+def get_product_dir(product):
+    """ Return the PRODUCT_DIR variable from iMaker. """
+    return get_variable("PRODUCT_DIR", product=product)
+
+    
+def get_variable(variable, target=None, product=None, config=None, default=None):
+    """ Get variable value from iMaker. """
+    cmdline = ""
+    if product != None:
+        cmdline = "-p%s" % product
+    if config != None:
+        cmdline += " -f %s" % config
+    if target != None:
+        cmdline += " %s" % target
+    
+    logdir = tempfile.mkdtemp()
+    logger.info("imaker %s print-%s WORKDIR=%s" % (cmdline, variable, logdir))
+    (_, handle, child_stderr) = os.popen3("imaker %s print-%s WORKDIR=%s" % (cmdline, variable, logdir))
+    logger.info(child_stderr.read())
+    result = []
+    for line in handle.read().splitlines():
+        line = line.strip()
+        if line == "" or line.startswith("Total duration"):
+            continue
+        if variable in line:
+            result.append(line)
+    handle.close()
+    result = re.match("%s\s*=\s*`(.*)'" % variable, "\n".join(result), re.DOTALL)
+    if result != None:
+        return result.group(1)
+    assert (result != None)
+    return default
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/integration/__init__.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,19 @@
+#============================================================================ 
+#Name        : __init__.py 
+#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:
+#===============================================================================
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/integration/ant.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,56 @@
+#============================================================================ 
+#Name        : ant.py 
+#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:
+#===============================================================================
+
+""" Quality Ant task implementation. """
+import integration.quality
+import os
+import traceback
+
+def check_build_duplicates_task(project, task, attributes, elements):
+    """ This is the implementation of the checkBuildDuplicatesMacro Ant task."""
+    try:
+        if attributes.get('output') == None:
+            raise Exception("'output' attribute is not defined.")
+        output = str(attributes.get('output'))
+        task.log("Creating %s" % output)
+        output = open(output, "w+")
+        output.write("<?xml version=\"1.0\"?>\n<buildconflicts>\n")
+        components_per_file = {}
+        for eid in range(elements.get("fileset").size()):
+            dirscanner = elements.get("fileset").get(int(eid)).getDirectoryScanner(project)
+            dirscanner.scan()
+            for jfilename in dirscanner.getIncludedFiles():
+                filename = str(jfilename)
+                task.log("Parsing %s" % filename)
+                filename = os.path.join(str(dirscanner.getBasedir()), filename)
+                parser = integration.quality.AbldWhatParser(open(filename, 'r'))
+                parser.components_per_file = components_per_file
+                parser.parse()
+            
+        for filename in components_per_file.keys():
+            if len(components_per_file[filename]) > 1:
+                output.write("    <file name=\"%s\">\n" % filename)
+                output.write("".join(map(lambda x: "        <component name=\"%s\"/>\n" % x, components_per_file[filename])))
+                output.write("    </file>\n")
+        output.write("</buildconflicts>\n")
+        output.close()
+    except Exception, exc:
+        task.log('ERROR: %s' % exc)
+        traceback.print_exc()
+        raise exc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/integration/quality.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,190 @@
+#============================================================================ 
+#Name        : quality.py 
+#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:
+#===============================================================================
+
+"""
+Symbian log based analyser.
+
+ * Internal export parser
+ * Duplicate generation parser (relying on abld -what)
+
+Policy validation.
+"""
+
+import symbian.log
+import re
+import os
+import csv
+import fileutils
+import pathaddition.match
+import logging
+
+#logging.basicConfig(level=logging.DEBUG)
+_logger = logging.getLogger("integration.quality")
+
+class InternalExportParser(symbian.log.Parser):
+    """ This class extends the Symbian log parser class and implement
+        an "abld -what" analyser which detects file generated/exported inside
+        the source tree.
+    """
+    def __init__(self, _file):
+        """The constructor """
+        symbian.log.Parser.__init__(self, _file)
+        self.__match_what = re.compile("abld(\.bat)?(\s+.*)*\s+-(check)?w(hat)?", re.I)
+        self.internalexports = {}
+        
+    def task(self, name, _cmd, _dir, content):
+        """ Analyse task log. """
+        if self.__match_what.match(_cmd) != None:
+            for line in content.splitlines():
+                if line.startswith(os.path.sep) \
+                    and not os.path.normpath(line.strip().lower()).startswith(os.path.sep+"epoc32"+os.path.sep) \
+                    and os.path.splitext(line.strip().lower())[1] != '':
+                    if name not in self.internalexports:
+                        self.internalexports[name] = []
+                    self.internalexports[name].append(line)
+
+
+class AbldWhatParser(symbian.log.Parser):
+    """ This class extends the Symbian log parser class and implement
+        an "abld -what" analyser which sort the generated files by component. 
+    """
+    def __init__(self, _file):
+        """The constructor """
+        symbian.log.Parser.__init__(self, _file)
+        self.__match_what = re.compile(r"abld(\.bat)?(\s+.*)*\s+-(check)?w(hat)?", re.I)
+        self.__match_cmaker_what = re.compile(r"cmaker(\.cmd)?(\s+.*)*\s+ACTION=what", re.I)
+        self.files_per_component = {}
+        self.components_per_file = {}
+        
+    def task(self, name, _cmd, _dir, content):
+        """ Analyse task log. """
+        if _cmd != None and self.__match_what.match(_cmd) != None:
+            for line in content.splitlines():
+                line = line.strip()
+                if not os.path.normpath(line).startswith(os.path.sep):
+                    continue
+                # component per file
+                if line.lower() not in self.components_per_file:
+                    self.components_per_file[line.lower()] = []
+                if name not in self.components_per_file[line.lower()]:
+                    self.components_per_file[line.lower()].append(name)
+
+                # file per components
+                if name not in self.files_per_component:
+                    self.files_per_component[name] = []
+                self.files_per_component[name].append(line)
+        elif _cmd != None and self.__match_cmaker_what.match(_cmd) != None:
+            for line in content.splitlines():
+                line = line.strip()
+                if not line.startswith('"'):
+                    continue
+                if not line.endswith('"'):
+                    continue
+                line = os.path.normpath(line.strip('"')).lower()
+                # component per file
+                if line not in self.components_per_file:
+                    self.components_per_file[line] = []
+                if name not in self.components_per_file[line]:
+                    self.components_per_file[line].append(name)
+            
+                # file per components
+                if name not in self.files_per_component:
+                    self.files_per_component[name] = []
+                self.files_per_component[name].append(line)
+
+
+class PolicyValidator(object):
+    """ Validate policy files on a hierarchy. """    
+    def __init__(self, policyfiles=None, csvfile=None, ignoreroot=False):
+        """The constructor """
+        if policyfiles is None:
+            policyfiles = ['distribution.policy.s60']
+        self._policyfiles = policyfiles
+        self._ids = None
+        self._ignoreroot = ignoreroot
+
+    def load_policy_ids(self, csvfile):
+        """ Load the icds from the CSV file.
+            report format by generating array: ['unknownstatus', value, description]
+        """
+        self._ids = {}
+        reader = csv.reader(open(csvfile, "rU"))
+        for row in reader:            
+            if len(row)>=3 and re.match(r"^\s*\d+\s*$", row[0]): 
+                self._ids[row[0]] = row
+                if row[1].lower() != "yes" and row[1].lower() != "no" and row[1].lower() != "bin":
+                    yield ["unknownstatus", row[0], row[2]]
+
+    def validate_content(self, filename):
+        """  Validating the policy file content. If it cannot be decoded, 
+            it reports an 'invalidencoding'.            
+            Case 'notinidlist': value is not defined under the id list.
+        """
+        value = None
+        try:
+            value = fileutils.read_policy_content(filename)
+        except Exception:
+            yield ["invalidencoding", filename, None]
+        if value is not None:                        
+            if self._ids != None:
+                if value not in self._ids:
+                    yield ["notinidlist", filename, value]
+    
+    def find_policy(self, path):
+        """ find the policy file under path using filenames under the list. """
+        for filename in self._policyfiles:
+            if os.sep != '\\':
+                for f in os.listdir(path):
+                    if f.lower() == filename.lower():
+                        return os.path.join(path, f)
+            if os.path.exists(os.path.join(path, filename)):
+                return os.path.join(path, filename)
+        return None
+
+    def validate(self, path):
+        """ Return a list couple [errortype, location, policy].
+            errortype: missing, invalidencoding, notinidlist .
+            missing: location is a directory.
+            otherwise the doggie policy file.
+        """
+        path = os.path.normpath(path)
+        for dirpath, _, _ in os.walk(path):
+            # skipping the root
+            if dirpath == path and self._ignoreroot:
+                continue
+            # skip .svn and .hg dirs
+            if pathaddition.match.ant_match(dirpath, "**/.svn/**"):
+                continue
+            if pathaddition.match.ant_match(dirpath, "**/.hg/**"):
+                continue
+            # Skipping j2me content. Shouln't this be done differently?
+            if pathaddition.match.ant_match(dirpath, "**/j2me/**"):
+                continue
+            filename = self.find_policy(dirpath)
+            if filename != None:
+                for result in self.validate_content(filename):
+                    yield result
+            else:
+                # report an error is the directory has no DP file
+                # and any files underneith.
+                for item in os.listdir(dirpath):
+                    if os.path.isfile(os.path.join(dirpath, item)):
+                        yield ['missing', dirpath, None]
+                        break
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/log2xml.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,416 @@
+#============================================================================ 
+#Name        : log2xml.py 
+#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:
+#===============================================================================
+
+""" Symbian log converter.
+"""
+import xml.dom.minidom
+import sys
+import os
+import re
+import shutil
+import codecs
+import time
+import datetime
+from xml.sax import make_parser 
+from xml.sax.handler import ContentHandler 
+from xml.sax.saxutils import escape
+
+
+DEFAULT_CONFIGURATION = {"FATAL": [r"mingw_make.exe"],
+                         "ERROR": [r'^(?:(?:\s*\d+\)\s*)|(?:\s*\*\*\*\s*))ERROR:',
+                                   r"^MISSING:",
+                                   r"Error:\s+",
+                                   r"^Error:",
+                                   r"'.+' is not recognized as an internal or external command",
+                                   r"FLEXlm error:",
+                                   r"(ABLD|BLDMAKE) ERROR:",
+                                   r"FATAL ERROR\(S\):",
+                                   r"fatal error U1077",
+                                   r"warning U4010",
+                                   r"^make(?:\[\d+\])?\: \*\*\*",
+                                   r"^make(?:\[\d+\])?:\s+.*\s+not\s+remade",
+                                   r"\"(.*)\", line (\d+): (Error: +(.\d+.*?):.*)$",
+                                   r"error: ((Internal fault):.*)$",
+                                   r"Exception: [A-Z0-9_]+",
+                                   r"target .* given more than once in the same rule",
+                                   r"^ERROR:",
+                                   r"^ERROR EC\d+:",
+                                   r"^ERROR\t",
+                                   r"syntax error at line",],
+                         "CRITICAL": [r"[Ww]arning:?\s+(#111-D|#1166-D|#117-D|#128-D|#1293-D|#1441-D|#170-D|#174-D|#175-D|#185-D|#186-D|#223-D|#231-D|#257-D|#284-D|#368-D|#414-D|#430-D|#47-D|#514-D|#546-D|#68-D|#69-D|#830-D|#940-D|#836-D|A1495E|L6318W|C2874W|C4127|C4355|C4530|C4702|C4786|LNK4049)"],
+                         "WARNING": [r'\): Missing file:',
+                                      r'^(\d+\))?\s*WARNING:', r'^MAKEDEF WARNING:',
+                                      r'line \d+: Warning:', r':\s+warning\s+\w+:',
+                                      r"\\\\(.*?)\(\d+\)\s:\sWarning:\s\(\d+\)",
+                                      r"^(BLDMAKE |MAKEDEF )?WARNING:",
+                                      r"WARNING\(S\)",
+                                      r"\(\d+\) : warning C",
+                                      r"LINK : warning",
+                                      r":\d+: warning:",
+                                      r"\"(.*)\", line (\d+): (Warning: +(?!A1495E)(.\d+.*?):.*)$",
+                                      r"Usage Warning:",
+                                      r"mwld.exe:",
+                                      r"^Command line warning",
+                                      r"ERROR: bad relocation:",
+                                      r"^(\d+) warning",
+                                      r"EventType:\s+Error\s+Source:\s+SweepNT",
+                                      r"^WARN\t",
+                                      ],
+                        "REMARK": [r"Command line warning D4025 : ",
+                                   r"^REMARK: ",
+                                   r"^EventType:\s+Error\s+Source:\s+GNU\s+Make",
+                                   r":\d+: warning: cannot find matching deallocation function",
+                                   r"((:\d+)*: note: )",
+                                   ],
+                        "INFO": [r"^INFO:"]
+                        }
+
+
+def find_priority(line, config):
+    keys = config.keys()
+    keys.reverse()    
+    for category in keys:
+        for rule in config[category]:
+            if rule.search(line) != None:
+                return category.lower()
+    return "stdout"
+
+class Stack:
+    """ Bottomless stack. If empty just pop a default element. """
+    
+    def __init__(self, default):
+        self.__default = default
+        self.__stack = []
+  
+    def pop(self):
+        result = None
+        try:
+            result = self.__stack.pop()
+        except IndexError, e:
+            result = self.__default
+        return result
+  
+    def push(self, item):
+        self.__stack.append(item)
+  
+    def __len__(self):
+        return len(self.__stack)
+
+def to_cdata(text):
+    """ Cleanup string to match CDATA requiements.
+        These are the only allowed characters: #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF].
+    """
+    result = ""
+    for c in list(text):
+        v = ord(c)        
+        if v == 0x9 or v == 0xa or v == 0xd:
+            result += c
+        elif v>=0x20 and v <= 0xd7ff:
+            result += c
+        elif v>=0xe000 and v <= 0xfffd:
+            result += c
+        elif v>=0x10000 and v <= 0x10ffff:
+            result += c
+        else:
+            result += " " 
+    return result
+
+class LogWriter(object):
+    """ XML Log writer. """
+    
+    def __init__(self, stream, filename):
+        self.__stream = stream
+        self.__stream.write("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n")
+        self.__stream.write("<log filename=\"%s\">\n" % filename)
+        self.__stream.write("\t<build>\n")
+        self.__indent = "\t"
+        self.__intask = 0
+
+    def close(self):
+        # closing open tasks...
+        while self.__intask > 0:
+            self.close_task()
+        self.__stream.write("\t</build>\n")
+        self.__stream.write("</log>\n")
+        self.__stream.close()
+
+    def open_task(self, name):
+        self.__indent += "\t"
+        self.__intask += 1
+        self.__stream.write("%s<task name=\"%s\">\n" % (self.__indent, name))
+
+    def close_task(self):
+        if self.__intask > 0:
+            self.__intask -= 1
+            self.__stream.write("%s</task>\n" % (self.__indent))
+            self.__indent = self.__indent[:-1]
+    
+    def message(self, priority, msg):
+        try:
+            acdata = to_cdata(msg.decode('utf-8', 'ignore'))
+            self.__stream.write("%s<message priority=\"%s\"><![CDATA[%s]]></message>\n" % (self.__indent+"\t", priority, acdata))
+        except UnicodeDecodeError, e:
+            print e
+        
+
+
+def convert(inputfile, outputfile, fulllogging=True, configuration=DEFAULT_CONFIGURATION):
+    """ Convert an input log into an XML log and write an outputfile. """
+    
+    # Compiling the regexp  
+    built_config = {}
+    for category in configuration.keys():
+        built_config[category] = []
+        for rule in configuration[category]:
+            built_config[category].append(re.compile(rule))
+    
+    # Generating the XML log
+    log = open(inputfile, 'r')
+    olog = codecs.open(outputfile, 'w+', 'utf-8', errors='ignore')
+    xmllog = LogWriter(olog, inputfile)
+
+    
+    match_finnished = re.compile(r"^===\s+.+\s+finished") 
+    match_started = re.compile(r"^===\s+(.+)\s+started") 
+    match_component = re.compile(r"^===\s+(.+?)\s+==\s+(.+)")
+    match_logger_component = re.compile(r'^\s*\[.+?\]\s*')
+    #match_ant_target_start = re.compile(r'.*INFO\s+-\s+Target\s+####\s+(.+)\s+####\s+has\s+started')
+    #match_ant_target_end = re.compile(r'.*INFO\s+-\s+Target\s+####\s+(.+)\s+####\s+has\s+finnished')
+    match_ant_target_start = re.compile(r'^([^\s=\[\]]+):$')
+    match_ant_target_end = re.compile(r'^([^\s=]+):\s+duration')
+    symbian = False
+    ant_has_open_task = False
+    # looping
+    for line in log:
+                
+        # matching Ant logging
+        if not symbian and match_ant_target_end.match(line):
+            xmllog.close_task()
+            ant_has_open_task = False
+            continue
+        elif not symbian and match_ant_target_start.match(line):
+            result = match_ant_target_start.match(line)
+            if result != None:
+                if ant_has_open_task:
+                    xmllog.close_task()
+                    ant_has_open_task = False
+                xmllog.open_task(result.group(1))
+                ant_has_open_task = True
+            continue
+        # matching Symbian logging
+        line = match_logger_component.sub(r'', line)
+        line = line.strip()
+        if line.startswith("++ Finished at"):
+            xmllog.close_task()
+        elif line.startswith("=== "):
+            if match_finnished.match(line):
+                xmllog.close_task()
+            else:
+                # This is a symbian log
+                symbian = True
+                result = match_component.match(line)
+                if result != None:
+                    xmllog.open_task(result.group(2))
+                # === cenrep_s60_32 started
+                result = match_started.match(line)
+                if result != None:
+                    xmllog.open_task(result.group(1))
+        else:
+            # Type?
+            priority = find_priority(line, built_config)
+            if (fulllogging or priority != 'stdout'):
+                xmllog.message(priority, line)
+    # end file
+    xmllog.close()
+    
+def convert_old(inputfile, outputfile, fulllogging=True, configuration=DEFAULT_CONFIGURATION):
+    """ Convert an input log into an XML log and write an outputfile. """
+    
+    # Compiling the regexp  
+    built_config = {}
+    for category in configuration.keys():
+        built_config[category] = []
+        for rule in configuration[category]:
+            built_config[category].append(re.compile(rule))
+    
+    # Generating the XML log
+    log = open (inputfile, 'r')
+    doc = xml.dom.minidom.Document()
+    root = doc.createElementNS("", "log")
+    root.setAttributeNS("", "name", inputfile)
+    doc.appendChild(root)
+    build = doc.createElementNS("", "build")
+    root.appendChild(build)
+    # current group/task
+    current = build
+    # bottomless stask, if losing sync all message will be at top level.
+    stack = Stack(build)
+    
+    match_finnished = re.compile(r"^===\s+.+\s+finished") 
+    match_started = re.compile(r"===\s+(.+)\s+started") 
+    match_component = re.compile(r"^===\s+(.+?)\s+==\s+(.+)")
+    match_logger_component = re.compile(r'^\s*\[.+?\]\s*')
+    #match_ant_target_start = re.compile(r'.*INFO\s+-\s+Target\s+####\s+(.+)\s+####\s+has\s+started')
+    #match_ant_target_end = re.compile(r'.*INFO\s+-\s+Target\s+####\s+(.+)\s+####\s+has\s+finnished')
+    match_ant_target_start = re.compile(r'^([^\s=]+):$')
+    match_ant_target_end = re.compile(r'^([^\s=]+):\s+duration')
+    # looping
+    for line in log:
+                
+        # matching Ant logging
+        if match_ant_target_end.match(line):
+            current = stack.pop()
+            continue
+        elif match_ant_target_start.match(line):
+            result = match_ant_target_start.match(line)
+            if result != None:
+                stack.push(current)
+                task = doc.createElementNS("", "task")
+                task.setAttributeNS("", "name", result.group(1))
+                current.appendChild(task)
+                current = task
+            continue
+        # matching Symbian logging
+        line = match_logger_component.sub(r'', line)
+        line = line.strip()
+        if line.startswith("++ Finished at"):
+            current = stack.pop()
+        elif line.startswith("==="):
+            if match_finnished.match(line):
+                current = stack.pop()
+            else:
+                result = match_component.match(line)
+                if result != None:
+                    stack.push(current)
+                    task = doc.createElementNS("", "task")
+                    task.setAttributeNS("", "name", result.group(2))
+                    current.appendChild(task)
+                    current = task
+                # === cenrep_s60_32 started
+                result = match_started.match(line)
+                if result != None:
+                    task = doc.createElementNS("", "task")
+                    task.setAttributeNS("", "name", result.group(1))
+                    stack.push(current)
+                    current.appendChild(task)
+                    current = task
+        else:
+            msg = doc.createElementNS("", "message")
+            # Type?
+            priority = find_priority(line, built_config)
+            if (fulllogging or priority != 'stdout'):
+                msg.setAttributeNS("", "priority", priority)
+                msg.appendChild(doc.createCDATASection(to_cdata(line.decode("utf-8"))))
+                current.appendChild(msg)
+        
+    file_object = codecs.open(outputfile, 'w', "utf_8")
+    file_object.write(doc.toprettyxml())
+    file_object.close()
+
+class ContentWriter(ContentHandler):
+    """ SAX Content writer. Parse and write an XML file. """
+    def __init__(self, os, indent=""):
+        self.os = os
+        self.indent = indent
+        self.__content = u""
+    
+    def startElement(self, name, attrs):
+        self.os.write(self.indent + "<" + name)        
+        if attrs.getLength() > 0:
+            self.os.write(" ")        
+        self.os.write(" ".join(map(lambda x: "%s=\"%s\"" % (x, attrs.getValue(x)), attrs.getNames())))            
+        self.os.write(">\n")
+        self.indent += "\t"
+        self.__content = ""
+    
+    def endElement(self, name):
+        if len(self.__content) > 0:
+            self.os.write(self.indent + self.__content + "\n")                
+        self.indent = self.indent[:-1]
+        self.os.write("%s</%s>\n" % (self.indent, name))
+        self.__content = ""
+        
+    def characters(self, content):        
+        self.__content += unicode(escape(content.strip()))
+
+class AppendSummary(ContentWriter):
+    """ SAX content handler to add an XML log to the summary. """
+    def __init__(self, output, xmllog):
+        ContentWriter.__init__(self, output)
+        self.xmllog = xmllog
+
+    def startDocument(self):
+        self.os.write('<?xml version="1.0" encoding="utf-8"?>\n')
+    
+    def startElement(self, name, attrs):
+        ContentWriter.startElement(self, name, attrs)
+        if name == "logSummary":
+            parser = make_parser()
+            parser.setContentHandler(ContentWriter(self.os, self.indent))
+            parser.parse(open(self.xmllog, 'r'))
+    
+
+def append_summary(summary, xmllog, maxmb=80):
+    """ Append content to the summary xml file. """
+    if os.path.getsize(summary) + os.path.getsize(xmllog) > (maxmb*1024*1024):
+        print 'Error: ' + summary + ' larger than ' + str(maxmb) + 'MB, not appending'
+        return
+    
+    outfile = codecs.open(summary + ".tmp", 'w', "utf8")
+    parser = make_parser()
+    parser.setContentHandler(AppendSummary(outfile, xmllog))
+    
+    input = open(summary, 'r')
+    parser.parse(input)
+    input.close()
+    outfile.close()
+    # Updating the summary file.
+    os.unlink(summary)
+    os.rename(summary + ".tmp", summary)    
+    
+
+def symbian_log_header(output, config, command, dir):
+    output.log("===-------------------------------------------------")
+    output.log("=== %s" % config)
+    output.log("===-------------------------------------------------")
+    output.log("=== %s started %s" % (config, datetime.datetime.now().ctime()))
+    output.log("=== %s == %s" % (config, dir))
+    output.log("-- %s" % command)
+    output.log("++ Started at %s" % datetime.datetime.now().ctime())
+    output.log("+++ HiRes Start %f" % time.time())
+    output.log("Chdir %s" % dir)
+    
+
+def symbian_log_footer(output):
+    output.log("+++ HiRes End %f" % time.time())
+    output.log("++ Finished at %s" % datetime.datetime.now().ctime())
+    
+    
+if __name__ == "__main__":
+    convert(sys.argv[1], "%s.xml" % sys.argv[1], fulllogging=False)
+    """ An empty summary:
+        <?xml version=\"1.0\" encoding=\"UTF-8\"?><logSummary/>
+    """
+    #s = open(r"z:\summary.xml", "w")
+    #s.write("""<?xml version=\"1.0\" encoding=\"UTF-8\"?><logSummary/>""")
+    #s.close()
+    #append_summary(r'Z:\summary.xml', r'Z:\output\logs\test_0.0.1.mc_5132_2_build.log2.xml')
+    #append_summary(r'Z:\summary.xml', r'Z:\output\logs\test_0.0.1_BOM.xml')
+    
+    
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/nokia/__init__.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,19 @@
+#============================================================================ 
+#Name        : __init__.py 
+#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:
+#===============================================================================
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/nokia/get_gscm_info.pl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,106 @@
+#!/usr/bin/env perl
+
+#============================================================================ 
+#Name        : get_gscm_info.pl 
+#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: 
+#============================================================================
+#
+# Script that fetch database connection information.
+#
+# e.g get_gscm_info.pl myccmdb get_db_path|get_router_address|get_engine_host myccmdb
+#
+use strict;
+BEGIN {
+    require Socket;
+    eval qq{
+        sub Socket::IPPROTO_TCP ();
+        sub Socket::TCP_NODELAY ();
+    } if  Socket->VERSION < 1.76 ;
+}
+
+use Config;
+BEGIN {
+    my $archname = $Config{archname};
+    my $gscm_lib;
+    if ($archname =~ m/Win32/)
+    {
+      $gscm_lib = "C:/apps/gscm-apps/lib"; # TODO: remove hardcoded path!
+    }
+    else
+    {
+      $gscm_lib = $ENV{'CCM_HOME'} . "/../gscm-apps/lib"; # TODO: remove hardcoded path!
+    }
+    my ($perl_version) = $Config{version} =~ /^(\d+\.\d+)/;    
+    unshift @INC, "$gscm_lib/$perl_version/$archname", "$gscm_lib/$perl_version", $gscm_lib;
+}
+
+
+use GSCM::CCM::Utils qw(locate_databases get_general_info get_ccm_home sites);
+use GSCM::Logging;
+#use Data::Dumper;
+log_config(level=>'alert');
+
+sub get_db_path
+{
+	my $db = shift;
+	foreach my $dbpath (locate_databases())
+	{
+		return $dbpath if ($dbpath =~ m/$db$/);
+	}
+	exit (-1);
+}
+
+sub get_router_address
+{
+	my %ccm_info = get_general_info(get_db_path(shift));	
+	return $ccm_info{"win32::router_address"};
+}
+
+sub get_engine_host
+{
+	my %ccm_info = get_general_info(get_db_path(shift));
+	my $archname = $Config{archname};
+	if ($archname =~ m/Win32/)
+  {
+    return $ccm_info{"win32::engine_host"};
+  }
+  else
+  {
+    return $ccm_info{"hostname"};
+  }
+}
+
+
+if (scalar(@ARGV)==2)
+{
+	eval {
+		no strict 'refs';
+		my $subroutine = shift @ARGV;
+		my $v = &$subroutine(@ARGV);
+		print $v;
+		
+	};
+	if ($@) {print "Error: error executing method $ARGV[1]:$@\n"; exit(-1)};
+}
+else
+{
+  print scalar(@ARGV);
+	print "get_gscm_info.pl dbname get_db_path|get_router_address|get_engine_host\n";
+	exit(-2);
+}
+exit(0);
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/nokia/gscm.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,76 @@
+#============================================================================ 
+#Name        : gscm.py 
+#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:
+#===============================================================================
+
+""" Wrapper module that get CCM info using GSCM framework. """
+
+
+import logging
+import os
+import subprocess
+import pkg_resources
+import tempfile
+
+# Uncomment this line to enable logging in this module, or configure logging elsewhere
+#logging.basicConfig(level=logging.DEBUG)
+_logger = logging.getLogger("gscm")
+
+
+def _execute(command):
+    """ Runs a command and returns the result data. """
+    process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
+    output = process.stdout.read()
+    process.poll()
+    status = process.returncode
+    return (output, status)
+
+
+def __get_gscm_info(method, dbname):
+    """ Generic method that call function 'method' on GSCM wrapper script. """
+    (fd, filename) = tempfile.mkstemp()
+    f = os.fdopen(fd, 'w')
+    f.write(pkg_resources.resource_string(__name__, "get_gscm_info.pl"))# pylint: disable-msg=E1101
+    f.close()
+    command = "perl " + filename
+    command += " %s %s" % (method, dbname)    
+    _logger.debug("Running command: %s" % command)
+    (output, status) = _execute(command)
+    _logger.debug("Status: %s" % status)
+    _logger.debug("Output: %s" % output)
+    if status == 0 or status == None and not ("Can't locate" in output):
+        return output.strip()
+    if not 'HLM_SUBCON' in os.environ:
+        raise Exception("Error retrieving get_db_path info for '%s' database.\nOUTPUT:%s" % (dbname, output.strip()))
+    return None
+
+def get_db_path(dbname):
+    """ Returns the database path for dbname database. """
+    _logger.debug("get_db_path: %s" % dbname)
+    return __get_gscm_info('get_db_path', dbname)
+
+
+def get_router_address(dbname):
+    """ Returns the database router address for dbname database. """
+    _logger.debug("get_router_address: %s" % dbname)
+    return __get_gscm_info('get_router_address', dbname)
+
+
+def get_engine_host(dbname):
+    """ Returns the database engine host for dbname database. """
+    _logger.debug("get_engine_host: %s" % dbname)
+    return __get_gscm_info('get_engine_host', dbname)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/nokia/nokiaccm.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,147 @@
+#============================================================================ 
+#Name        : nokiaccm.py 
+#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:
+#===============================================================================
+
+""" Nokia specific interface to Synergy sessions. """
+
+import logging
+import netrc
+import os
+import os.path
+import sys
+import fileutils
+
+import ccm
+import nokia.gscm
+
+
+# Uncomment this line to enable logging in this module, or configure logging elsewhere
+#logging.basicConfig(level=logging.DEBUG)
+_logger = logging.getLogger("nokia.nokiaccm")
+
+
+def open_session(username=None, password=None, engine=None, dbpath=None, database=None, reuse=True):
+    """Provides a Session object.
+    
+    Attempts to return a Session, based either on existing Synergy
+    sessions or by creating a new one.
+    
+    - If a .netrc file can be found on the user's personal drive,
+      that will be read to obtain Synergy login information if it 
+      is defined there. This will be used to fill in any missing 
+      parameters not passed in the call to open_session().
+      
+      The format of the .netrc file entries should be:
+      
+      machine synergy login USERNAME password foobar account DATABASE_PATH@SERVER
+      
+      If the details refer to a specific database, the machine can be the database name,
+      instead of "synergy".
+    - If an existing session is running that matches the supplied
+      parameters, it will reuse that.
+    
+    """    
+    # See if a .netrc file can be used
+    if password == None or username == None or engine == None or dbpath == None:
+        if os.sep == '\\':
+            os.environ['HOME'] = "H:" + os.sep
+        _logger.debug('Opening .netrc file')
+        try:
+            netrc_file = netrc.netrc()
+            netrc_info = None
+            # If settings for a specific database 
+            if database != None:
+                netrc_info = netrc_file.authenticators(database)            
+
+            # if not found just try generic one
+            if netrc_info == None:
+                netrc_info = netrc_file.authenticators('synergy')
+                
+            if netrc_info != None:
+                (n_username, n_account, n_password) = netrc_info
+                if username == None:
+                    username = n_username
+                if password == None:
+                    password = n_password
+                if n_account != None:
+                    (n_dbpath, n_engine) = n_account.split('@')
+                    if dbpath == None and n_dbpath is not None:
+                        _logger.info('Database path set using .netrc (%s)' % n_dbpath)
+                        dbpath = n_dbpath
+                    if engine == None and n_engine is not None:
+                        _logger.info('Database engine set using .netrc (%s)' % n_engine)
+                        engine = n_engine
+        except IOError:
+            _logger.debug('Error accessing .netrc file')
+
+    # using environment username in case username is not defined.
+    if username == None:
+        username = os.environ['USERNAME']
+
+    # looking for dbpath using GSCM database
+    if dbpath == None and database != None:
+        _logger.info('Database path set using the GSCM database.')
+        dbpath = nokia.gscm.get_db_path(database)        
+
+    # looking for engine host using GSCM database
+    if engine == None and database != None:
+        _logger.info('Database engine set using the GSCM database.')
+        engine = nokia.gscm.get_engine_host(database)
+            
+    
+    _sessions = []
+    # See if any currently running sessions can be used, only if no password submitted, else use a brand new session!
+    if password == None and reuse:
+        current_sessions = ccm.running_sessions()
+        for current_session in current_sessions:
+            if current_session.dbpath == dbpath:
+                return current_session
+    else:
+        if ccm.CCM_BIN == None:
+            raise ccm.CCMException("Could not find CM/Synergy executable in the path.")
+        # Looking for router address using GSCM database
+        router_address = None
+        if database == None and dbpath != None:
+            database = os.path.basename(dbpath)
+
+        lock = fileutils.Lock(ccm.CCM_SESSION_LOCK)
+        try:
+            lock.lock(wait=True)
+            # if we have the database name we can switch to the correct Synergy router
+            if database != None:
+                router_address = nokia.gscm.get_router_address(database)
+                if os.sep == '\\' and router_address != None:
+                    routerfile = open(os.path.join(os.path.dirname(ccm.CCM_BIN), "../etc/_router.adr"), 'r')
+                    current_router = routerfile.read().strip()
+                    routerfile.close()
+                    if current_router != router_address.strip():
+                        _logger.info('Updating %s' % (os.path.normpath(os.path.join(os.path.dirname(ccm.CCM_BIN), "../etc/_router.adr"))))
+                        routerfile = open(os.path.join(os.path.dirname(ccm.CCM_BIN), "../etc/_router.adr"), "w+")
+                        routerfile.write("%s\n" % router_address)
+                        routerfile.close()
+        
+            # If no existing sessions were available, start a new one
+            new_session = ccm.Session.start(username, password, engine, dbpath)
+            lock.unlock()
+            return new_session
+        finally:
+            lock.unlock()
+    raise ccm.CCMException("Cannot open session for user '%s'" % username)
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/packageiad.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,134 @@
+#============================================================================ 
+#Name        : packageiad.py 
+#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:
+#===============================================================================
+
+""" packageIAD.py module """
+
+import os
+import sys
+import xml.dom.minidom
+import iadinfo
+import zipfile
+import encodings.utf_8
+
+
+class IADPackager :
+    """ package IAD class "
+    """
+    
+    def __init__(self) :
+        """ class init method """
+        self.hasStub = False
+
+    def getBldDirs(self, layer, bldDirs) :
+        """ get the list of build directories """
+        units = layer.getElementsByTagName ("unit")
+        for unit in units :
+            dir = unit.getAttribute ("bldFile").rstrip ('\\/')
+            i = dir.rfind ("\\")
+            if i == - 1 :
+                i = dir.rfind ("/")
+            bldDirs.append (dir[:i + 1])
+    
+    def getLayer(self, configuration, layers, bldDirs) :
+        """ get each layer info """
+        layerRef = configuration.getElementsByTagName ("layerRef")[0].getAttribute ("layerName")
+        for layer in layers :
+            if layer.getAttribute ("name") == layerRef :
+                self.getBldDirs (layer, bldDirs)
+    
+    def createInfoFiles(self, sisInfo) :
+        """ create the INfo files depends.xml etc."""
+        depends = xml.dom.minidom.parse ("depends.xml")
+        info = xml.dom.minidom.parseString (sisInfo)
+        
+        infoFile = file ("sisinfo.xml", "w")
+        packageDeps = info.getElementsByTagName("package_dependency")
+        for packageDep in packageDeps :
+            pack = depends.createElement ("package")
+            depends.childNodes[1].appendChild (pack)
+            for child in packageDep.childNodes :
+                pack.appendChild (child)
+        infoFile.write (info.toxml ())
+        infoFile.close()
+        depFile = file ("depends.xml", "w")
+        depFile.write (depends.toxml ())
+        depFile.close()
+    
+    def createSis(self, packageDir, packageName, makesis) :
+        """ create the .sis file """
+        sisReader = iadinfo.IADHandler()
+        os.chdir (packageDir)
+        sisPackage = packageName + ".sis"
+        stubPackage = packageName + "_stub.sis"
+        print "Creating", sisPackage
+        cmd = makesis + " package.pkg " + sisPackage
+        os.system (cmd)
+        self.createInfoFiles (sisReader.getInfo(sisPackage))
+        if os.path.exists(stubPackage) :
+            print "Creating stub SIS file", stubPackage
+            self.hasStub = True
+            cmd = makesis + " -s package.pkg " + stubPackage
+            os.system (cmd)
+        
+    def createPackage(self, topDir, packageName) :
+        """ create the Data Package """
+        print "Creating package", packageName
+        os.chdir (topDir)
+        zipFile = packageName + ".zip"
+        sisFile = packageName + '/' + packageName + ".sis"
+        infoFile = packageName + "/sisinfo.xml"
+        depFile = packageName + "/depends.xml"
+        zip = zipfile.ZipFile (zipFile, "w")
+        zip.write (sisFile, sisFile.encode ("utf-8"))
+        zip.write (infoFile, infoFile.encode ("utf-8"))
+        zip.write (depFile, depFile.encode ("utf-8"))
+        if self.hasStub :
+            stubFile = packageName + '/' + packageName + "_stub.sis"
+            zip.write (stubFile, stubFile.encode ("utf-8"))
+        zip.close()
+        
+    
+    def processSisDir(self, sisDir, makesis) :
+        """ handle the directory used to create the .sis file """
+        for root, dirs, _ in os.walk (sisDir):
+            for name in dirs :
+                self.createSis (os.path.join (root, name), name, makesis)
+                self.createPackage (root, name)
+
+def main(sysdefFile, sysdefconfigs, bldDrive):
+    """ main to called when imported """
+    makesis = bldDrive + "\\epoc32\\tools\\makesis.exe"
+    
+    sysdef = xml.dom.minidom.parse (sysdefFile)
+    configurations = sysdef.getElementsByTagName ("configuration")
+    layers = sysdef.getElementsByTagName ("layer")
+    bldDirs = []
+    
+    packager = IADPackager()
+    
+    for configuration in configurations :
+        if configuration.getAttribute ("name") == sysdefconfigs :
+            packager.getLayer (configuration, layers, bldDirs)
+     
+    
+    for bldDir in bldDirs :
+        packager.processSisDir (bldDrive + bldDir + "sis\\", makesis)
+
+if __name__ == "__main__":
+    main(sys.argv[1], sys.argv[2], sys.argv[3])
Binary file buildframework/helium/external/helium-antlib/python/pythoncore/lib/pathaddition/__init__$py.class has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pathaddition/__init__.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,19 @@
+#============================================================================ 
+#Name        : __init__.py 
+#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:
+#===============================================================================
+
Binary file buildframework/helium/external/helium-antlib/python/pythoncore/lib/pathaddition/match$py.class has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pathaddition/match.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,110 @@
+#============================================================================ 
+#Name        : match.py 
+#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:
+#===============================================================================
+
+""" This module provides support for Ant-style wildcards,
+    which are not the same as regular expressions (which are documented in the re module).
+"""
+import os
+import pathaddition.relative
+import logging
+import fnmatch
+import re
+import sys
+
+_logger = logging.getLogger('path.match')
+#logging.basicConfig()
+
+# local regular expression cache.
+_cache = {}
+
+def ant_match(name, pattern, casesensitive=True):
+    """Check if name matches pattern (Ant-style wildcards).
+    """
+    _logger.debug("ant_match: path='%s' pattern='%s'" % (name, pattern))
+    if pattern.endswith('/') or pattern.endswith('\\'):
+        pattern = pattern + '**'
+        _logger.debug("ant_match: pattern ending with / or \ pattern='%s'" % (pattern))
+    name = os.path.normpath(name)
+    pattern = os.path.normpath(pattern)
+    name = name.replace('/', os.sep)
+    name = name.replace('\\', os.sep)
+    pattern = pattern.replace('/', os.sep)
+    pattern = pattern.replace('\\', os.sep)
+    _logger.debug("ant_match:normpath: path='%s' pattern='%s'" % (name, pattern))
+    
+    if not _cache.has_key(pattern):
+        res = translate(pattern)
+        _logger.debug("ant_match: regexp=%s" % (res))
+        if os.sep == '\\' or not casesensitive:
+            _cache[pattern] = re.compile(res, re.I)
+        else:
+            _cache[pattern] = re.compile(res)
+    return _cache[pattern].match(name) is not None
+
+
+def translate(pat):
+    """Translate a Ant-style PATTERN to a regular expression.
+
+    There is no way to quote meta-characters.
+    """
+
+    i, n = 0, len(pat)
+    res = ''
+    while i < n:
+        c = pat[i]
+        i = i+1
+        if c == '*':
+            # identifying a **
+            if i < len(pat) and pat[i] == '*':
+                res = res + "(?:(?:^|%s)[^%s]+)*(?:^|%s|$)" % (os.sep.replace('\\','\\\\'), os.sep.replace('\\','\\\\'), os.sep.replace('\\','\\\\'))
+                i = i+1
+                # skipping next \ or / 
+                if i < len(pat) and pat[i] == os.sep:
+                    i = i+1
+            else:
+                res = res + '[^%s]*' % os.sep.replace('\\','\\\\')
+        elif c == '?':
+            res = res + '[^%s]*' % os.sep.replace('\\','\\\\')
+        elif c == '[':
+            j = i
+            if j < n and pat[j] == '!':
+                j = j+1
+            if j < n and pat[j] == ']':
+                j = j+1
+            while j < n and pat[j] != ']':
+                j = j+1
+            if j >= n:
+                res = res + '\\['
+            else:
+                stuff = pat[i:j].replace('\\','\\\\')
+                i = j+1
+                if stuff[0] == '!':
+                    stuff = '^' + stuff[1:]
+                elif stuff[0] == '^':
+                    stuff = '\\' + stuff
+                res = '%s[%s]' % (res, stuff)
+        else:
+            
+            if c == os.sep and i+2 <= len(pat) and pat[i] == "*" and pat[i+1] == "*":
+#                res = res + "?"
+                pass
+            else:
+                res = res + re.escape(c)
+    return res + "$"
+
Binary file buildframework/helium/external/helium-antlib/python/pythoncore/lib/pathaddition/relative$py.class has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pathaddition/relative.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,129 @@
+#============================================================================ 
+#Name        : relative.py 
+#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:
+#===============================================================================
+
+"""
+    Additional path functionnality.
+    abs2rel
+    rel2abs
+"""
+import os
+import os.path
+import re
+
+# matches http:// and ftp:// and mailto://
+protocolPattern = re.compile(r'^\w+://')
+
+def isabs(string):
+    """ 
+    
+    @return true if string is an absolute path or protocoladdress
+    for addresses beginning in http:// or ftp:// or ldap:// - 
+    they are considered "absolute" paths.
+    """
+    if protocolPattern.match(string): 
+        return True
+    return os.path.isabs(string)
+
+def rel2abs(path, base = None):
+    """ converts a relative path to an absolute path.
+
+    @param path the path to convert - if already absolute, is returned
+    without conversion.
+    @param base - optional. Defaults to the current directory.
+    The base is intelligently concatenated to the given relative path.
+    @return the relative path of path from base
+    """
+    if isabs(path):
+        return path
+    if base is None:
+        base = os.curdir
+    retval = os.path.join(base, path)
+    return os.path.abspath(retval)
+    
+
+def pathsplit(p, rest=None):
+    """ Split path to pieces """
+    if rest is None:
+        rest = []
+    (h, t) = os.path.split(p)
+    if len(h) < 1: 
+        return [t]+rest
+    if len(t) < 1: 
+        return [h]+rest
+    return pathsplit(h, [t]+rest)
+
+def commonpath(l1, l2, common=None):
+    """ return the common path"""
+    if common is None:
+        common = []
+    if len(l1) < 1:
+        return (common, l1, l2)
+    if len(l2) < 1:
+        return (common, l1, l2)
+    if l1[0] != l2[0]:
+        return (common, l1, l2)
+    return commonpath(l1[1:], l2[1:], common+[l1[0]])
+
+
+def relpath(p1, p2):
+    (common, l1, l2) = commonpath(pathsplit(p1), pathsplit(p2))
+    p = []
+    if len(l1) > 0:
+        p = [ '../' * len(l1) ]
+    p = p + l2
+    if len(p) is 0:
+        return "."
+    return os.path.join( *p )
+    
+    
+def abs2rel(path, base = None):
+    """ @return a relative path from base to path.
+    
+    base can be absolute, or relative to curdir, or defaults
+    to curdir.
+    """
+    if protocolPattern.match(path):
+        return path
+    if base is None:
+        base = os.curdir
+    base = rel2abs(base)
+    path = rel2abs(path) # redundant - should already be absolute
+    return relpath(base, path)
+
+
+def commonprefix(paths):
+    """ 
+    Returns the common prefix base on the path components.
+    """
+    if len(paths) == 0:
+        return ''
+    if len(paths) == 1:
+        return paths[0]
+
+    def _commonprefix_internal(p1, p2):
+        c = commonpath(pathsplit(p1), pathsplit(p2))[0]
+        if len(c) == 0:
+            return ''
+        return os.path.join(*c)
+    common = _commonprefix_internal(paths[0], paths[1])
+    for p in paths[2:]:
+        common = _commonprefix_internal(common, p)
+    return common
+
+    
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/preparation.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,626 @@
+#============================================================================ 
+#Name        : preparation.py 
+#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:
+#===============================================================================
+
+""" This package implements the new update work area functionality.
+
+"""
+
+import logging
+import os
+import shutil
+import time
+import xml.dom.minidom
+
+import ccm
+import ccm.extra
+import fileutils
+
+# Uncomment this line to enable logging in this module, or configure logging elsewhere
+logging.basicConfig(level=logging.INFO)
+_logger = logging.getLogger("preparation.ccmgetinput")
+
+
+DEFAULT_THREADS = 1
+THREADS_MIN_TOTAL = 1
+THREADS_MAX_TOTAL = 10
+
+
+def find(function, seq):
+    """Return first item in sequence where f(item) == True."""
+    for item in seq:
+        if function(item): 
+            return item
+    return None
+
+
+class PreparationAction(object):
+    """ Implements an abstract preparation function. """
+    
+    def __init__(self, config, builder):
+        self._config = config
+        self._builder = builder
+
+    def check(self):
+        """ Checks if project is available in synergy. """
+        self._check_object(self._config.name)
+        
+    def _check_object(self, fpn):
+        """ Check if ccmobject exists in synergy database. """
+        session = self.get_session()
+        ccm_object = session.create(fpn)
+        if ccm_object.exists():
+            _logger.info("Checking '%s'...Ok" % fpn)
+        else:
+            _logger.info("Checking '%s'...Not Found!" % fpn)
+            raise Exception("Could not find  object %s in the database." % fpn)
+
+    def execute(self):
+        """ This method needs to be override by child class.
+        
+        It should implement the action to achieve.
+        """
+        pass
+
+    def get_session(self):
+        """ Helper that retreive the session from the builder. Setting threads correctly. """
+        if self._config.has_key('database'):
+            return self._builder.session(self._config['database'], self.get_threads())
+        if not self._config.has_key('host'):
+            raise Exception("Database engine host configuration is not found")
+        elif not self._config.has_key('dbpath'):
+            raise Exception("Database path configuration is not found")
+        else:
+            return self._builder.session(None, self.get_threads(), self._config['host'], self._config['dbpath'])
+
+    def get_threads(self):
+        """ Returning the number of threads that should be used. """
+        threads = self._config.get_int('threads', DEFAULT_THREADS)
+        if threads < THREADS_MIN_TOTAL:
+            threads = THREADS_MIN_TOTAL
+        if threads > THREADS_MAX_TOTAL:
+            threads = THREADS_MAX_TOTAL
+        return threads
+
+
+class PreparationSnapshot(PreparationAction):
+    """ Implements a Snapshot preparation function. 
+    
+    Support the parallel snapshotter.
+    """
+    
+    def __init__(self, config, builder):
+        """ Initialization. """
+        PreparationAction.__init__(self, config, builder)
+
+    def execute(self):
+        """ Method that implements snapshoting of the project into a folder. """        
+        _logger.info("=== Stage=snapshot = %s" % self._config.name)
+        _logger.info("++ Started at %s" % time.strftime("%H:%M:%S", time.localtime()))
+        session = self.get_session()
+        project = session.create(self._config.name)
+
+        target_dir = os.path.normpath(os.path.join(self._config['dir'], project.name))
+        _logger.info("Looking for snapshot under %s." % target_dir)
+        if not self._check_version(project, target_dir):
+            if not os.path.exists(target_dir):
+                _logger.info("Creating '%s'." % target_dir)
+                os.makedirs(target_dir)
+            else:
+                _logger.info("Project needs to be updated, so deleting '%s'." % target_dir)
+                fileutils.rmtree(target_dir)
+            
+            try:
+                _logger.info("Snapshotting project.")                
+                if self.get_threads() == 1:                    
+                    _logger.info(project.snapshot(target_dir, True))
+                else:
+                    _logger.info(ccm.extra.FastSnapshot(project, target_dir, self.get_threads()))
+                                    
+                # writing version file                
+                _logger.info("Saving project version information.")
+                versionfile = open(os.path.join(self._config['dir'], project.name, 'project.version'), "w+")
+                versionfile.write(str(project))
+                versionfile.close()                
+            except Exception, exc:
+                if isinstance(exc, ccm.extra.CCMExtraException):
+                    for sexc in exc.subexceptions:
+                        _logger.info(sexc)
+                _logger.info("ERROR: snapshotting %s" % self._config.name)
+                _logger.info(exc)
+                raise exc
+        else:
+            _logger.info("Project snapshot is still up to date. Nothing to do.")
+
+        _logger.info("++ Finished at %s" % time.strftime("%H:%M:%S", time.localtime()))
+    
+    def _check_version(self, project, targetdir):
+        """ Check the version file for snaphot and identify if the project has to be snapshot or not.
+            Returns True if the content of the file matches the project to snapshot (nothing to do).
+            Returns falls either if the file is missing, or the content is different.
+        """
+        versionfile = os.path.join(targetdir, 'project.version')
+        if (os.path.exists(versionfile)):
+            file_ = open(versionfile, "r")
+            projectname = file_.read().strip()
+            file_.close()
+            if (projectname == project.objectname):
+                return True
+        return False
+    
+    
+class PreparationCheckout(PreparationAction):
+    """ Handle the checkout and update of project content. """
+    def __init__(self, config, builder):
+        """ Initialization. """
+        PreparationAction.__init__(self, config, builder)
+        self.__role = None
+
+    def check(self):
+        """ Checks if all synergy resources are available. """
+        PreparationAction.check(self)
+        if self._config.has_key('release'):
+            self._check_object(str(self._config['release']))
+        else:
+            raise Exception("'release' property is not defined for %s" % self._config.name)
+
+        for task in self.__get_tasks():
+            self._check_object("Task %s" % task)
+        for folder in self.__get_folders():
+            self._check_object("Folder %s" % folder)
+        
+        for project in self.__get_subbaselines():
+            self._check_object(project)
+            
+        # checking if the purpose exists
+        if self._config.has_key('purpose'):
+            session = self.get_session()
+            purposes = session.purposes()
+            if purposes.has_key(str(self._config['purpose'])):
+                _logger.info("Checking purpose '%s'...Ok" % (self._config['purpose']))
+            else:
+                _logger.info("Checking purpose '%s'...Not Found!" % (self._config['purpose']))
+                raise Exception("Could not find purpose %s in the database." % self._config['purpose'])
+            
+            role = session.role
+            co_role = ccm.get_role_for_purpose(session, str(self._config['purpose']))
+            _logger.info("Try to switch user to role: %s" % co_role)
+            session.role = co_role
+            session.role = role
+            
+    def execute(self):
+        """ Creates a checkout of the project, or updates an existing checkout if one is found.
+        
+        The work area is maintained as part of this.
+        """
+        _logger.info("=== Stage=checkout = %s" % self._config.name)
+        _logger.info("++ Started at %s" % time.strftime("%H:%M:%S", time.localtime()))
+        session = self.get_session()
+        project = session.create(self._config.name)
+        
+        session.home = self._config['dir']
+        
+        result = self.__find_project(project)
+        # for testing: result = session.create("ppd_sw-fa1f5132#wbernard2:project:sa1spp#1")
+        if (result != None):
+            _logger.info("Project found: '%s'" % result)
+
+            # setting up the project
+            self.__setup_project(project, result)
+        else:
+            _logger.info("Checking out from '%s'." % project)
+            
+            purpose = None
+            if self._config.has_key('purpose'):
+                purpose = self._config['purpose']
+                _logger.info("Using purpose: '%s'" % purpose)
+                
+            version = None
+            if self._config.has_key('version'):
+                version = self._config['version']
+                _logger.info("Using version: '%s'" % version)
+
+            try:
+                self.__setRole(session)
+                result = project.checkout(session.create(self._config['release']), version=version, purpose=purpose)
+                ccm.log_result(result, ccm.CHECKOUT_LOG_RULES, _logger)
+            except ccm.CCMException, exc:
+                ccm.log_result(exc.result, ccm.CHECKOUT_LOG_RULES, _logger)
+                raise exc
+            finally:
+                self.__restoreRole(session)
+            _logger.info('Checkout complete')
+            
+            if result.project != None and result.project.exists():                
+                _logger.info("Project checked out: '%s'" % result.project)
+                
+                try:
+                    self.__setRole(session)
+                    _logger.info("Maintaining the workarea...")
+                    if self.get_threads() == 1:
+                        output = result.project.work_area(True, True, True, self._config['dir'], result.project.name)
+                    else:
+                        output = ccm.extra.FastMaintainWorkArea(result.project, self._config['dir'], result.project.name, self.get_threads())
+                    ccm.log_result(output, ccm.CHECKOUT_LOG_RULES, _logger)
+                finally:
+                    self.__restoreRole(session)
+                self.__setup_project(project, result.project)
+            else:
+                raise Exception("Error checking out '%s'" % project)
+
+        _logger.info("++ Finished at %s" % time.strftime("%H:%M:%S", time.localtime()))
+
+    def __find_project(self, project):
+        """ Private method. """
+        if (os.path.exists(os.path.join(self._config['dir'], project.name, "project.version"))):
+            _logger.info("Snapshot to checkout deleting '%s'." % os.path.join(self._config['dir'], project.name))
+            fileutils.rmtree(os.path.join(self._config['dir'], project.name))
+            return None
+        
+        path = os.path.join(self._config['dir'], project.name, project.name)
+        try:
+            result = project.session.get_workarea_info(path)
+            if(result == None):
+                fileutils.rmtree(path)
+                return result
+            return result['project']
+        except ccm.CCMException:
+            # Delete the project dir if found
+            if os.path.exists(os.path.dirname(path)):
+                fileutils.rmtree(os.path.dirname(path))
+            return None
+
+    def __setRole(self, session):
+        """ Updating the role of a session. """
+        self.__role = session.role
+        if self._config.has_key('purpose'):
+            co_role = ccm.get_role_for_purpose(session, self._config['purpose'])
+            _logger.info("Switching user to role: %s" % co_role)
+            session.role = co_role
+            _logger.info("Switched user to role: %s" % session._get_role())
+
+    
+    def __restoreRole(self, session):
+        """ Restoring to default user role. """
+        if self.__role:
+            _logger.info("Switching user to role: %s" % self.__role)
+
+            session.role = self.__role
+            self.__role = None
+            _logger.info("Switched user to role: %s" % session._get_role())
+
+            
+    def __setup_project(self, project, coproject):
+        """ Private method. """
+        session = self.get_session()
+        self.__setRole(session)
+        
+        newprojs = []
+        if not self._config.get_boolean('use.reconfigure.template', False):
+            _logger.info("Validating release")
+            self.__set_release(coproject)
+            _logger.info("Setting update properties to manual")
+            coproject.set_update_method('manual', True)
+            _logger.info("Setting the baseline to '%s'" % project)
+            coproject.set_baseline(project, True)
+            self.__set_subbaselines(coproject)
+            _logger.info("Cleaning up update properties")
+            self._clean_update_properties(coproject)
+            _logger.info("Setting update properties.")
+            self._set_tasks_and_folders(coproject)
+            _logger.info("Applying update properties.")
+            coproject.apply_update_properties(baseline=False)
+        else:
+            _logger.info("Validating release")
+            self.__set_release(coproject)
+                        
+        replace_subprojects = True
+        if not self._config.get_boolean('replace.subprojects', True):
+            _logger.info("NOT replacing subprojects")
+            replace_subprojects = False
+        update_keepgoing = True
+        if self._config.get_boolean('update.failonerror', False):
+            _logger.info("The build will fail with update errors")
+            update_keepgoing = False
+        _logger.info("Updating...")
+        result = coproject.update(True, replace_subprojects, update_keepgoing, result=ccm.UpdateResultSimple(coproject.session))
+        
+        if self._config.get_boolean('fix.missing.baselines', False) and replace_subprojects:
+            newprojs = self.__fix_baseline(coproject)
+            if len(newprojs) > 0:
+                result = coproject.update(True, replace_subprojects, update_keepgoing, result=ccm.UpdateResultSimple(coproject.session))
+                ccm.log_result(result, ccm.UPDATE_LOG_RULES, _logger)
+                _logger.info("Detected additional projects into baseline - Maintaining the whole toplevel project again...")
+                coproject.work_area(True, True)
+            else:
+                ccm.log_result(result, ccm.UPDATE_LOG_RULES, _logger)
+        else:
+            ccm.log_result(result, ccm.UPDATE_LOG_RULES, _logger)
+
+        # Running sync
+        self._sync(coproject)
+
+        # Running check conflicts
+        self._check_conflicts(coproject)
+        
+        self.__restoreRole(session)
+
+    def _sync(self, coproject):
+        """ Run the sync if the 'sync' property is defined to true in the 
+            configuration
+        """
+        if self._config.get_boolean('sync', False):
+            _logger.info("Synchronizing...")
+            result = coproject.sync(True, True)
+            ccm.log_result(result, ccm.SYNC_LOG_RULES, _logger)
+
+
+    def __set_release(self, project):
+        """ Update the release of the project hierarchy if required. """
+        release = project.session.create(self._config['release'])
+        _logger.info("Current release: '%s'" % project.release)
+        _logger.info("Configuration release: '%s'" % release)
+        if project.release != release:
+            _logger.info("Updating release on the project hierarchy.")
+            for subp in [project] + project.subprojects:
+                subp.release = release
+        
+    def __fix_baseline(self, coproject):
+        """ Check for project in a different status, then check them out. """
+        newprojs = []
+        _logger.info("Looking for new projects in the check out.")
+        status = coproject['status']
+        for subproj in coproject.subprojects:
+            if subproj['status'] == status:
+                continue           
+            _logger.info("New project detected in the checkout '%s'" % subproj.objectname)
+            purpose = None
+            if self._config.has_key('purpose'):
+                purpose = self._config['purpose']
+                _logger.info("Using purpose: '%s'" % purpose)
+                
+            version = None
+            if self._config.has_key('version'):
+                version = self._config['version']
+                _logger.info("Using version: '%s'" % version)
+
+            result = subproj.checkout(subproj.session.create(self._config['release']), version=version, purpose=purpose, subprojects=False)
+            _logger.info('Checkout complete')
+            if result.project != None and result.project.exists():
+                newcop = result.project
+                newprojs.append(newcop)
+                
+                _logger.info("Setting is_relative to true")                    
+                if "is_relative" in newcop.keys():
+                    newcop["is_relative"] = "TRUE"
+                else:
+                    newcop.create_attribute("is_relative", "boolean", "TRUE")
+                
+                if not self._config.get_boolean('use.reconfigure.template', False):
+                    newcop.set_update_method('manual', False)
+                    
+                    _logger.info("Setting the baseline to '%s'" % subproj)
+                    newcop.set_baseline(subproj, True)
+                                            
+                    _logger.info("Cleaning up update properties")
+                    self._clean_update_properties(newcop)
+                    
+                    _logger.info("Setting update properties.")
+                    self._set_tasks_and_folders(newcop)
+        return newprojs        
+
+    def _check_conflicts(self, coproject):
+        """ Private method. """
+        conflictsobjects = self._config.get_boolean('show.conflicts.objects', False)
+        
+        if self._config.get_boolean('show.conflicts', False) or conflictsobjects:
+            result = coproject.conflicts(True, not conflictsobjects)
+            ccm.log_result(result, ccm.CONFLICTS_LOG_RULES, _logger)
+#        for project in result.keys():
+#            for error in result[project]:
+#                if 'object' in error:
+#                    _logger.info("CONFLICTS: %s" % error['comment'])
+#                else:
+#                    _logger.info("CONFLICTS: %s" % error['comment'])
+        
+    @staticmethod
+    def _clean_update_properties(project):
+        """ Private method. """
+        for task in project.tasks:
+            project.remove_task(task)        
+        for folder in project.folders:
+            project.remove_folder(folder)
+
+    @staticmethod
+    def __find_subproject(subprojects, project):
+        """ Private method. """
+        for subproj in subprojects:
+            if subproj.is_same_family(project):
+                return subproj
+        raise Exception("Error could not identify check out project for '%s'" % project)
+    
+    def __set_subbaselines(self, project):
+        """ Private method. """
+        if len(self.__get_subbaselines()) > 0:
+            subprojects = project.subprojects
+            for subbaseline in self.__get_subbaselines():
+                subbaseline = project.session.create(subbaseline)
+                subproj = self.__find_subproject(subprojects, subbaseline)
+                _logger.info("Setting subproject '%s' baseline to '%s'" % (subproj, subbaseline))
+                subproj.set_baseline(subbaseline, True)
+    
+    def __get_array(self, key):
+        """ Private method. """
+        result = []
+        if (self._config.has_key(key)):
+            if isinstance(self._config[key], type([])):                
+                for value in self._config[key]:
+                    value = value.strip()
+                    if len(value) > 0:
+                        result.append(value) 
+            else:
+                value = self._config[key].strip()
+                if len(value) > 0:
+                    result.append(value)
+        return result
+
+    def __get_subbaselines(self):
+        """ Private method. """
+        return self.__get_array('subbaselines')
+    
+    def __get_tasks(self):
+        """ Private method. """
+        return self.__get_array('tasks')
+
+    def __get_folders(self):
+        """ Private method. """
+        return self.__get_array('folders')
+    
+    def _set_tasks_and_folders(self, project):
+        """ Private method. """
+        for task in self.__get_tasks():
+            _logger.info("Adding task %s" % task)
+            project.add_task(project.session.create("Task %s" % task))
+        for folder in self.__get_folders():
+            _logger.info("Adding folder %s" % folder)
+            project.add_folder(project.session.create("Folder %s" % folder))
+
+class PreparationUpdate(PreparationCheckout):
+    """ Synergy project updater. """
+    
+    def __init__(self, config, builder):
+        """ Initialization. """
+        PreparationCheckout.__init__(self, config, builder)
+
+    def check(self):
+        """ Checks if all synergy resources are available. """
+        PreparationAction.check(self)
+
+        session = self.get_session()
+        ccm_object = session.create(self._config.name)
+        role = session.role
+        co_role = ccm.get_role_for_status(session, ccm_object['status'])
+        _logger.info("Try to switch user to role: %s" % co_role)
+        session.role = co_role
+        session.role = role
+
+    def execute(self):
+        """ Updating the mentioned project. """
+
+        session = self.get_session()
+        ccmproject = session.create(self._config.name)
+        role = session.role
+
+        status = ccmproject['status']
+        co_role = ccm.get_role_for_status(session, status)
+        session.role = co_role
+
+        if not self._config.get_boolean('use.reconfigure.template', False):
+            _logger.info("Setting update properties to manual")
+            ccmproject.set_update_method('manual', True)
+            _logger.info("Cleaning up update properties")
+            self._clean_update_properties(ccmproject)
+            _logger.info("Setting update properties.")
+            self._set_tasks_and_folders(ccmproject)
+            _logger.info("Applying update properties.")
+            ccmproject.apply_update_properties(baseline=False)
+        replace_subprojects = True
+        if not self._config.get_boolean('replace.subprojects', True):
+            _logger.info("NOT replacing subprojects")
+            replace_subprojects = False
+        update_keepgoing = True
+        if self._config.get_boolean('update.failonerror', False):
+            _logger.info("The build will fail with update errors")
+            update_keepgoing = False
+
+        _logger.info("Updating %s..." % ccmproject.objectname)
+        result = ccmproject.update(True, replace_subprojects, update_keepgoing, result=ccm.UpdateResultSimple(ccmproject.session))
+        ccm.log_result(result, ccm.UPDATE_LOG_RULES, _logger)
+        
+        self._sync(ccmproject)
+        
+        self._check_conflicts(ccmproject)
+        
+        session.role = role
+
+class PreparationBuilder(object):
+    """ Creates an updated work area from a configuration. """
+    def __init__(self, configs, username = None, password = None, cache=None):
+        """ Initialization. """
+        self._configs = configs
+        self._sessions = {}
+        self._actions = []
+        self.__username = username
+        self.__password = password
+        self.__provider = ccm.extra.CachedSessionProvider(cache=cache)
+        for config in self._configs:
+            if config.type == "snapshot":
+                self._actions.append(PreparationSnapshot(config, self))
+            elif config.type == "checkout":
+                self._actions.append(PreparationCheckout(config, self))        
+            elif config.type == "update":
+                self._actions.append(PreparationUpdate(config, self))
+        
+    def check(self):
+        """ Check that all dependencies are there. """
+        for action in self._actions:
+            action.check()
+    
+    def get_content(self):
+        """ Run the each action. """
+        for action in self._actions:
+            action.execute()
+
+    def session(self, database, size=1, engine=None, dbpath=None):
+        """ Handles pool rather that sessions. """
+        assert size > 0, "The pool must contains at least one session!"
+        if self.__provider is None:
+            raise Exception("The builder has been closed.") 
+        if not self._sessions.has_key(database):
+            _logger.info("Get a session for %s" % database)
+            session = ccm.SessionPool(self.__username, self.__password, engine, dbpath, database, size, opener=self.__provider.get)
+            self._sessions[database] = session
+            # be developer by default
+            session.role = "developer"
+        session = self._sessions[database]
+        if session.size < size:
+            _logger.info("Resizing the pool for database %s to %d" % (database, size))
+            session.size = size
+            # be developer by default
+            session.role = "developer"
+        return session
+    
+    def close(self):
+        """ This is the preparation cleanup method.
+            It closes all opened sessions.
+        """
+        _logger.debug("Closing sessions...")
+        dbs = self._sessions.keys()
+        while len(dbs) > 0:
+            session = self._sessions.pop(dbs.pop())
+            session.close()
+        if self.__provider is not None:
+            self.__provider.close()
+            self.__provider = None
+        
+    
+    def __del__(self):
+        self.close()
+            
+        
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncorecpythontests/__init__.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,19 @@
+#============================================================================ 
+#Name        : __init__.py 
+#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:
+#===============================================================================
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncorecpythontests/test_archive.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,993 @@
+#============================================================================ 
+#Name        : test_archive.py 
+#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:
+#===============================================================================
+
+"""Test the archive.py module."""
+
+from __future__ import with_statement
+import os
+import amara
+import unittest
+
+import archive
+import configuration
+import logging
+import fileutils
+import xml.dom.minidom
+import tempfile
+import test_fileutils
+
+
+_logger = logging.getLogger('test.archive')
+    
+    
+root_test_dir = test_fileutils.root_test_dir
+
+def setup_module():
+    """ Creates some test data files for file-related testing. """
+    test_fileutils.setup_module()
+    
+def teardown_module():
+    """ Cleans up test data files for file-related testing. """
+    test_fileutils.teardown_module()
+    
+    
+class ArchivePreBuilderTest(unittest.TestCase):
+    """Tests that an archive configuration file successfully creates an Ant exec file."""
+    EXEC_FILE = "archive_create.ant.xml"
+
+    def test_ant_exec(self):
+        """Tests that an archive configuration file successfully creates an Ant exec file."""
+        builder = configuration.NestedConfigurationBuilder(os.environ['TEST_DATA'] + '/data/archive_test_input.cfg.xml')
+        archiveConfigSet = builder.getConfiguration()
+        archivePreBuilder = archive.ArchivePreBuilder(archiveConfigSet, "config", index=0)
+        buildFilePath = os.path.join(root_test_dir, r'archive_test.ant.xml')
+        archivePreBuilder.write(buildFilePath)
+        build_file = open(buildFilePath)
+        build_file_content = build_file.read()
+        _logger.debug(build_file_content)
+        resultDoc = amara.parse(build_file_content)
+        build_file.close()
+        # The last target in the Ant file should be called 'all'. Other targets
+        # are named stage1, stage2, etc.
+        self.assert_(resultDoc.project.target[-1].name == 'all')
+        os.remove(buildFilePath)
+        
+
+
+class LogicalArchiveTest(unittest.TestCase):
+    """tests Logical Archive feature"""
+##    def setup(self):
+##        """Test setup."""
+#        builder = configuration.NestedConfigurationBuilder(os.environ['TEST_DATA'] + '/data/archive_test.cfg.xml')
+#        self.archiveConfigSet = builder.getConfiguration()
+#        self.config = self.archiveConfigSet.getConfigurations()[0]
+#        self.archivePreBuilder = archive.ArchivePreBuilder(self.archiveConfigSet)
+
+    def test_manifest_files(self):
+        """ A LogicalArchive can create a correct manifest. """
+        configDict = {'root.dir': root_test_dir,
+                  'temp.build.dir': os.path.join(root_test_dir, 'temp_build_files'),
+                  'archives.dir': root_test_dir,
+                  'name': 'manifest_test',
+                  'include': 'dir1/*.txt',
+                  'archive.tool': '7za'
+                 }
+        config = configuration.Configuration(configDict)
+
+        builder = archive.ArchivePreBuilder(configuration.ConfigurationSet([config]), "config", index=0)
+        builder.build_manifest(config)
+
+        expectedPaths = [os.path.normpath('dir1/file1.txt')]
+
+        includeFilePath = os.path.join(root_test_dir, 'temp_build_files/manifest_test_includefile.txt')
+
+        with open(includeFilePath) as f:
+            content = f.readlines()
+        print content
+        print expectedPaths
+        content = [s.strip().lower() for s in content]
+        self.assert_(content == expectedPaths)
+    
+    def test_empty_manifest_file(self):
+        """ A LogicalArchive can handle empty manifest. """
+        configDict = {'root.dir': root_test_dir,
+                  'temp.build.dir': os.path.join(root_test_dir, 'temp_build_files'),
+                  'archives.dir': root_test_dir,
+                  'name': 'manifest_test',
+                  'include': 'nothing',
+                  'archive.tool': '7za'
+                 }
+        config = configuration.Configuration(configDict)
+
+        builder = archive.ArchivePreBuilder(configuration.ConfigurationSet([config]), "config", index=0)
+        builder.build_manifest(config)
+
+        expectedPaths = []
+
+        includeFilePath = os.path.join(root_test_dir, 'temp_build_files/manifest_test_includefile.txt')
+
+        with open(includeFilePath) as f:
+            content = f.readlines()
+        print content
+        print expectedPaths
+        content = [s.strip().lower() for s in content]
+        self.assert_(content == expectedPaths)
+
+    def test_manifest_files_with_exclude_list(self):
+        """ A LogicalArchive can create a correct manifest. """
+        excludelst = os.path.join(root_test_dir, 'exclude.lst')
+        flh = open(excludelst, 'w+')
+        flh.write("/epoc32/tools/variant/variant.cfg\n")
+        flh.write("\\epoc32\\tools\\abld.pl\n")
+        flh.write(os.path.join(root_test_dir, 'dir1', 'file1.txt') + "\n")
+        flh.write(os.path.join(root_test_dir, 'dir1/subdir1/subdir1_file.txt') + "\n")
+        flh.close()
+        configDict = {'root.dir': root_test_dir,
+                  'temp.build.dir': os.path.join(root_test_dir, 'temp_build_files'),
+                  'archives.dir': root_test_dir,
+                  'name': 'manifest_test',
+                  'include': 'dir1/**',
+                  'exclude.lst': excludelst,
+                  'archive.tool': '7za'
+                }
+        config = configuration.Configuration(configDict)
+
+        builder = archive.ArchivePreBuilder(configuration.ConfigurationSet([config]), "config", index=0)
+        builder.build_manifest(config)
+
+        expectedPaths = [os.path.normpath('dir1/file2.doc'),
+                         os.path.normpath('dir1/file3_no_extension'),
+                         os.path.normpath('dir1/subdir2/subdir2_file_no_extension'),
+                         os.path.normpath('dir1/subdir3/'),
+                         ]
+        expectedPaths.sort()
+        
+        includeFilePath = os.path.join(root_test_dir, 'temp_build_files/manifest_test_includefile.txt')
+
+        with open(includeFilePath) as f:
+            content = f.readlines()
+        print content
+        print expectedPaths
+        content = [s.strip().lower() for s in content]
+        content.sort()
+        self.assert_(content == expectedPaths)
+
+    def test_manifest_files_with_exclude_list_abs_nodrive(self):
+        """ A LogicalArchive can create a correct manifest with external list and drive. """
+        rtd = os.path.splitdrive(os.path.abspath(root_test_dir))[1]
+        excludelst = os.path.join(root_test_dir, 'exclude.lst')
+        flh = open(excludelst, 'w+')
+        flh.write("/epoc32/tools/variant/variant.cfg\n")
+        flh.write("\\epoc32\\tools\\abld.pl\n")
+        flh.write(os.path.join(rtd, 'dir1', 'file1.txt') + "\n")
+        flh.write(os.path.join(rtd, 'dir1/subdir1/subdir1_file.txt') + "\n")
+        flh.close()
+        configDict = {'root.dir': os.path.abspath(root_test_dir),
+                  'temp.build.dir': os.path.join(root_test_dir, 'temp_build_files'),
+                  'archives.dir': root_test_dir,
+                  'name': 'manifest_test',
+                  'include': 'dir1/**',
+                  'exclude.lst': excludelst,
+                  'archive.tool': '7za'
+                 }
+        config = configuration.Configuration(configDict)
+
+        builder = archive.ArchivePreBuilder(configuration.ConfigurationSet([config]), "config", index=0)
+        builder.build_manifest(config)
+
+        expectedPaths = [os.path.normpath('dir1/file2.doc'),
+                         os.path.normpath('dir1/file3_no_extension'),
+                         os.path.normpath('dir1/subdir2/subdir2_file_no_extension'),
+                         os.path.normpath('dir1/subdir3/'),
+                         ]
+        expectedPaths.sort()
+        
+        includeFilePath = os.path.join(root_test_dir, 'temp_build_files/manifest_test_includefile.txt')
+
+        with open(includeFilePath) as f:
+            content = f.readlines()
+        if os.sep == '\\':
+            content = [s.strip().lower() for s in content]
+        else:
+            content = [s.strip() for s in content]
+        content.sort()
+        print content
+        print expectedPaths
+        self.assert_(content == expectedPaths)
+
+    
+    def test_distribution_policy_config(self):
+        """ tests the distribution policy files configuration"""
+        expected_paths = [os.path.normpath('s60/component_public/component_public_file.txt'),
+                         os.path.normpath('s60/component_public/Distribution.Policy.S60'),
+                         os.path.normpath('s60/Distribution.Policy.S60'),
+                         os.path.normpath('s60/missing/subdir/Distribution.Policy.S60'),
+                         os.path.normpath('s60/missing/subdir/not_to_be_removed_0.txt'),
+                         os.path.normpath('s60/UPPERCASE_MISSING/subdir/Distribution.Policy.S60'),
+                         os.path.normpath('s60/UPPERCASE_MISSING/subdir/not_to_be_removed_0.txt'),]
+        if os.sep == '\\':
+            for i in range(len(expected_paths)):
+                expected_paths[i] = expected_paths[i].lower()
+        self.do_distribution_policy_config(expected_paths, policy='0')
+         
+        expected_paths = [os.path.normpath('s60/component_private/component_private_file.txt'),
+                         os.path.normpath('s60/component_private/Distribution.Policy.S60'),]
+        if os.sep == '\\':
+            for i in range(len(expected_paths)):
+                expected_paths[i] = expected_paths[i].lower()
+        self.do_distribution_policy_config(expected_paths, policy='1')
+
+        expected_paths = [os.path.normpath('s60/missing/subdir/another_subdir/to_be_removed_9999.txt'),
+                          os.path.normpath('s60/missing/to_be_removed_9999.txt'),
+                          os.path.normpath('s60/UPPERCASE_MISSING/subdir/another_subdir/to_be_removed_9999.txt'),
+                          os.path.normpath('s60/UPPERCASE_MISSING/to_be_removed_9999.txt')]
+        if os.sep == '\\':
+            for i in range(len(expected_paths)):
+                expected_paths[i] = expected_paths[i].lower()
+        self.do_distribution_policy_config(expected_paths, policy=archive.mappers.MISSING_POLICY)
+        
+    def do_distribution_policy_config(self, expected_paths, policy):
+        """ . """
+        configDict = {'root.dir': root_test_dir,
+                  'temp.build.dir': os.path.join(root_test_dir, 'temp_build_files'),
+                  'archives.dir': root_test_dir,
+                  'name': 's60_policy_test',
+                  'include': 's60/',
+                  'distribution.policy.s60': policy,
+                  'selectors': 'policy',
+                  'archive.tool': '7za'
+                 }
+        config = configuration.Configuration(configDict)
+
+        builder = archive.ArchivePreBuilder(configuration.ConfigurationSet([config]), "config", index=0)
+        builder.build_manifest(config)
+        includeFilePath = os.path.join(root_test_dir, 'temp_build_files/s60_policy_test_includefile.txt')
+        
+        with open(includeFilePath) as f:
+            content = f.readlines()
+        if os.sep == '\\':
+            content = [s.strip().lower() for s in content]
+        else:
+            content = [s.strip() for s in content]
+        content.sort()
+
+        print content
+        if os.sep == '\\':
+            expected_paths = [s.strip().lower() for s in expected_paths]
+        else:
+            expected_paths = [s.strip() for s in expected_paths]
+        expected_paths.sort()
+        print expected_paths
+        assert content == expected_paths
+        
+    def test_split_manifest_file_unicode(self):
+        """ A LogicalArchive can split a manifest correctly. """
+        configDict = {'root.dir': os.path.abspath(root_test_dir),
+                  'temp.build.dir': os.path.abspath(os.path.join(root_test_dir, 'temp_build_files')),
+                  'archives.dir': os.path.abspath(root_test_dir),
+                  'name': 'manifest_test_unicode',
+                  'max.files.per.archive': '1',
+                  'include': 'test_unicode/',
+                  'archive.tool': '7za'
+                 }
+        config = configuration.Configuration(configDict)
+
+        builder = archive.ArchivePreBuilder(configuration.ConfigurationSet([config]), "config", index=0)
+        manifest_file_path = builder.build_manifest(config)        
+        builder.manifest_to_commands(config, manifest_file_path)
+        
+        includeFilePath = os.path.join(root_test_dir, 'temp_build_files/manifest_test_unicode_includefile.txt')
+        includeFilePath1 = os.path.join(root_test_dir, 'temp_build_files/manifest_test_unicode_part01.txt')
+        includeFilePath2 = os.path.join(root_test_dir, 'temp_build_files/manifest_test_unicode_part02.txt')
+        includeFilePath3 = os.path.join(root_test_dir, 'temp_build_files/manifest_test_unicode_part03.txt')
+
+        with open(includeFilePath) as f:
+            content = f.readlines()
+        with open(includeFilePath1) as f:
+            content1 = f.readlines()
+        with open(includeFilePath2) as f:
+            content2 = f.readlines()
+        with open(includeFilePath3) as f:
+            content3 = f.readlines()
+        print "content: ", content
+        print "content1: ", content1
+        print "content2: ", content2
+        print "content3: ", content2
+        content = [s.strip() for s in content]
+        self.assert_(len(content) == 3)
+        self.assert_(len(content1) == 1)
+        self.assert_(len(content2) == 1)
+        self.assert_(len(content3) == 1)
+
+    def test_distribution_policy_mapper_config(self):
+        """ Testing the policy mapper. """
+        configDict = {'root.dir': root_test_dir,
+                  'temp.build.dir': os.path.join(root_test_dir, 'temp_build_files'),
+                  'archives.dir': root_test_dir,
+                  'name': 's60_policy_mapper_test',
+                  'include': 's60/',
+                  'archive.tool': '7za',
+                  'policy.zip2zip': 'true',
+                  'mapper': 'policy',
+                  'policy.csv': os.path.join(os.environ['TEST_DATA'], 'data/distribution.policy.id_status.csv'),
+                 }
+        config = configuration.Configuration(configDict)
+
+        builder = archive.ArchivePreBuilder(configuration.ConfigurationSet([config]), "config", index=0)
+        manifest_file_path = builder.build_manifest(config)
+        cmds = builder.manifest_to_commands(config, manifest_file_path)
+
+        
+        expected_paths = ['s60' + os.sep + 'component_private' + os.sep + 'component_private_file.txt',
+                           's60' + os.sep + 'component_private' + os.sep + 'Distribution.Policy.S60',
+                           's60' + os.sep + 'component_public' + os.sep + 'component_public_file.txt',
+                           's60' + os.sep + 'component_public' + os.sep + 'Distribution.Policy.S60',
+                           's60' + os.sep + 'Distribution.Policy.S60',                           
+                           's60' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'another_subdir' + os.sep + 'to_be_removed_9999.txt',
+                           's60' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'Distribution.Policy.S60',
+                           's60' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'not_to_be_removed_0.txt',
+                           's60' + os.sep + 'missing' + os.sep + 'to_be_removed_9999.txt',
+                           's60' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'subdir' + os.sep + 'another_subdir' + os.sep + 'to_be_removed_9999.txt',
+                           's60' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'subdir' + os.sep + 'Distribution.Policy.S60',
+                           's60' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'subdir' + os.sep + 'not_to_be_removed_0.txt',
+                           's60' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'to_be_removed_9999.txt',
+                           's60' + os.sep + 'not_in_cvs' + os.sep + 'Distribution.Policy.S60',]
+        if os.sep == '\\':
+            for i in range(len(expected_paths)):
+                expected_paths[i] = expected_paths[i].lower()
+        expected_paths0 = ['s60' + os.sep + 'component_public' + os.sep + 'component_public_file.txt',
+                           's60' + os.sep + 'component_public' + os.sep + 'Distribution.Policy.S60',
+                           's60' + os.sep + 'Distribution.Policy.S60',
+                           's60' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'Distribution.Policy.S60',
+                           's60' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'not_to_be_removed_0.txt',
+                           's60' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'subdir' + os.sep + 'Distribution.Policy.S60',
+                           's60' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'subdir' + os.sep + 'not_to_be_removed_0.txt',]
+        if os.sep == '\\':
+            for i in range(len(expected_paths0)):
+                expected_paths0[i] = expected_paths0[i].lower()
+        expected_paths1 = ['s60' + os.sep + 'component_private' + os.sep + 'component_private_file.txt',
+                           's60' + os.sep + 'component_private' + os.sep + 'Distribution.Policy.S60']
+        if os.sep == '\\':
+            for i in range(len(expected_paths1)):
+                expected_paths1[i] = expected_paths1[i].lower()
+        expected_paths9999 = ['s60' + os.sep + 'missing' + os.sep + 'to_be_removed_9999.txt',
+                              's60' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'another_subdir' + os.sep + 'to_be_removed_9999.txt',
+                              's60' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'to_be_removed_9999.txt',
+                              's60' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'subdir' + os.sep + 'another_subdir' + os.sep + 'to_be_removed_9999.txt']
+        if os.sep == '\\':
+            for i in range(len(expected_paths9999)):
+                expected_paths9999[i] = expected_paths9999[i].lower()
+        includeFilePath = os.path.join(root_test_dir, 'temp_build_files/s60_policy_mapper_test_includefile.txt')
+        includeFilePath0 = os.path.join(root_test_dir, 'temp_build_files/s60_policy_mapper_test_0.txt')
+        includeFilePath1 = os.path.join(root_test_dir, 'temp_build_files/s60_policy_mapper_test_1.txt')
+        includeFilePath9999 = os.path.join(root_test_dir, 'temp_build_files/s60_policy_mapper_test_9999.txt')
+        includeFilePathInternal = os.path.join(root_test_dir, 'temp_build_files/s60_policy_mapper_test.internal.txt')
+        
+        content = self.__read_manifest(includeFilePath)
+        expected_paths.sort()
+        print "Content"
+        print content
+        print "Expected"
+        print expected_paths
+        assert content == expected_paths
+
+        content = self.__read_manifest(includeFilePath0)
+        expected_paths0.sort()
+        print content
+        print expected_paths0
+        assert content == expected_paths0
+
+        content = self.__read_manifest(includeFilePath1)
+        expected_paths1.sort()
+        print content
+        print expected_paths1
+        assert content == expected_paths1
+        
+        content = self.__read_manifest(includeFilePath9999)
+        expected_paths9999.sort()
+        print content
+        print expected_paths9999
+        assert content == expected_paths9999
+
+        assert os.path.exists(includeFilePathInternal) == True
+        print "Commands : ", cmds
+        assert len(cmds) == 3
+
+
+    def test_distribution_policy_mapper_config_no_zip2zip(self):
+        """ Testing the policy mapper. """
+        configDict = {'root.dir': root_test_dir,
+                  'temp.build.dir': os.path.join(root_test_dir, 'temp_build_files'),
+                  'archives.dir': root_test_dir,
+                  'name': 's60_policy_mapper_test_noz2z',
+                  'include': 's60/',
+                  'archive.tool': '7za',
+                  'policy.zip2zip': 'false',
+                  'mapper': 'policy'
+                 }
+        config = configuration.Configuration(configDict)
+
+        builder = archive.ArchivePreBuilder(configuration.ConfigurationSet([config]), "config", index=0)
+        manifest_file_path = builder.build_manifest(config)
+        cmds = builder.manifest_to_commands(config, manifest_file_path)
+
+        
+        expected_paths = ['s60' + os.sep + 'component_private' + os.sep + 'component_private_file.txt',
+                           's60' + os.sep + 'component_private' + os.sep + 'Distribution.Policy.S60',
+                           's60' + os.sep + 'component_public' + os.sep + 'component_public_file.txt',
+                           's60' + os.sep + 'component_public' + os.sep + 'Distribution.Policy.S60',
+                           's60' + os.sep + 'Distribution.Policy.S60',                           
+                           's60' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'another_subdir' + os.sep + 'to_be_removed_9999.txt',
+                           's60' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'Distribution.Policy.S60',
+                           's60' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'not_to_be_removed_0.txt',
+                           's60' + os.sep + 'missing' + os.sep + 'to_be_removed_9999.txt',
+                           's60' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'subdir' + os.sep + 'another_subdir' + os.sep + 'to_be_removed_9999.txt',
+                           's60' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'subdir' + os.sep + 'Distribution.Policy.S60',
+                           's60' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'subdir' + os.sep + 'not_to_be_removed_0.txt',
+                           's60' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'to_be_removed_9999.txt',
+                           's60' + os.sep + 'not_in_cvs' + os.sep + 'Distribution.Policy.S60',]
+        if os.sep == '\\':
+            for i in range(len(expected_paths)):
+                expected_paths[i] = expected_paths[i].lower()
+        expected_paths0 = ['s60' + os.sep + 'component_public' + os.sep + 'component_public_file.txt',
+                           's60' + os.sep + 'component_public' + os.sep + 'Distribution.Policy.S60',
+                           's60' + os.sep + 'Distribution.Policy.S60',
+                           's60' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'Distribution.Policy.S60',
+                           's60' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'not_to_be_removed_0.txt',
+                           's60' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'subdir' + os.sep + 'Distribution.Policy.S60',
+                           's60' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'subdir' + os.sep + 'not_to_be_removed_0.txt',]
+        if os.sep == '\\':
+            for i in range(len(expected_paths0)):
+                expected_paths0[i] = expected_paths0[i].lower()
+        expected_paths1 = ['s60' + os.sep + 'component_private' + os.sep + 'component_private_file.txt',
+                           's60' + os.sep + 'component_private' + os.sep + 'Distribution.Policy.S60']
+        if os.sep == '\\':
+            for i in range(len(expected_paths1)):
+                expected_paths1[i] = expected_paths1[i].lower()
+        expected_paths9999 = ['s60' + os.sep + 'missing' + os.sep + 'to_be_removed_9999.txt',
+                              's60' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'another_subdir' + os.sep + 'to_be_removed_9999.txt',
+                              's60' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'to_be_removed_9999.txt',
+                              's60' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'subdir' + os.sep + 'another_subdir' + os.sep + 'to_be_removed_9999.txt']
+        if os.sep == '\\':
+            for i in range(len(expected_paths9999)):
+                expected_paths9999[i] = expected_paths9999[i].lower()
+
+        expected_paths.sort()
+        includeFilePath = os.path.join(root_test_dir, 'temp_build_files/s60_policy_mapper_test_includefile.txt')
+        includeFilePath0 = os.path.join(root_test_dir, 'temp_build_files/s60_policy_mapper_test_0.txt')
+        includeFilePath1 = os.path.join(root_test_dir, 'temp_build_files/s60_policy_mapper_test_1.txt')
+        includeFilePath9999 = os.path.join(root_test_dir, 'temp_build_files/s60_policy_mapper_test_9999.txt')
+        includeFilePathInternal = os.path.join(root_test_dir, 'temp_build_files/s60_policy_mapper_test_noz2z.internal.txt')
+        
+        content = self.__read_manifest(includeFilePath)
+        expected_paths.sort()
+        print content
+        print expected_paths
+        assert content == expected_paths
+
+        content = self.__read_manifest(includeFilePath0)
+        expected_paths0.sort()
+        print content
+        print expected_paths0
+        assert content == expected_paths0
+
+        content = self.__read_manifest(includeFilePath1)
+        expected_paths1.sort()
+        print content
+        print expected_paths1
+        assert content == expected_paths1
+        
+        content = self.__read_manifest(includeFilePath9999)
+        expected_paths9999.sort()
+        print content
+        print expected_paths9999
+        assert content == expected_paths9999
+
+        assert os.path.exists(includeFilePathInternal) == False
+        print "Commands : ", cmds
+        assert len(cmds) == 1
+
+
+    def test_distribution_policy_mapper_remover_config(self):
+        """ Testing the policy remover mapper. """
+        configDict = {'root.dir': root_test_dir,
+                  'temp.build.dir': os.path.join(root_test_dir, 'temp_build_files'),
+                  'archives.dir': root_test_dir,
+                  'name': 's60_policy_mapper_test',
+                  'include': 's60/',
+                  'policy.root.dir': os.path.join(root_test_dir, 's60'),
+                  'archive.tool': '7za',
+                  'mapper': 'policy.remover',
+                  'policy.zip2zip': 'true',
+                  'policy.csv': os.path.join(os.environ['TEST_DATA'], 'data/distribution.policy.id_status.csv'),
+                 }
+        config = configuration.Configuration(configDict)
+
+        builder = archive.ArchivePreBuilder(configuration.ConfigurationSet([config]), "config", index=0)
+        manifest_file_path = builder.build_manifest(config)
+        cmds = builder.manifest_to_commands(config, manifest_file_path)
+        
+        expected_paths = ['s60' + os.sep + 'component_private' + os.sep + 'component_private_file.txt',
+                           's60' + os.sep + 'component_private' + os.sep + 'Distribution.Policy.S60',
+                           's60' + os.sep + 'component_public' + os.sep + 'component_public_file.txt',
+                           's60' + os.sep + 'component_public' + os.sep + 'Distribution.Policy.S60',
+                           's60' + os.sep + 'Distribution.Policy.S60',
+                           's60' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'Distribution.Policy.S60',
+                           's60' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'not_to_be_removed_0.txt',                           
+                           's60' + os.sep + 'missing' + os.sep + 'to_be_removed_9999.txt',                           
+                           's60' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'another_subdir' + os.sep + 'to_be_removed_9999.txt',
+                           's60' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'subdir' + os.sep + 'Distribution.Policy.S60',
+                           's60' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'subdir' + os.sep + 'not_to_be_removed_0.txt',
+                           's60' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'to_be_removed_9999.txt',
+                           's60' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'subdir' + os.sep + 'another_subdir' + os.sep + 'to_be_removed_9999.txt',                           
+                           's60' + os.sep + 'not_in_cvs' + os.sep + 'Distribution.Policy.S60',]
+        if os.sep == '\\':
+            for i in range(len(expected_paths)):
+                expected_paths[i] = expected_paths[i].lower()
+        expected_paths.sort()
+        expected_paths0 = ['s60' + os.sep + 'component_public' + os.sep + 'component_public_file.txt',
+                           's60' + os.sep + 'component_public' + os.sep + 'Distribution.Policy.S60',
+                           's60' + os.sep + 'Distribution.Policy.S60',
+                           's60' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'Distribution.Policy.S60',
+                           's60' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'not_to_be_removed_0.txt',                           
+                           's60' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'subdir' + os.sep + 'Distribution.Policy.S60',
+                           's60' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'subdir' + os.sep + 'not_to_be_removed_0.txt']
+        if os.sep == '\\':
+            for i in range(len(expected_paths0)):
+                expected_paths0[i] = expected_paths0[i].lower()
+        expected_paths1 = ['s60' + os.sep + 'component_private' + os.sep + 'component_private_file.txt',
+                           's60' + os.sep + 'component_private' + os.sep + 'Distribution.Policy.S60']
+        if os.sep == '\\':
+            for i in range(len(expected_paths1)):
+                expected_paths1[i] = expected_paths1[i].lower()
+        expected_paths1.sort()
+        includeFilePath = os.path.join(root_test_dir, 'temp_build_files/s60_policy_mapper_test_includefile.txt')
+        includeFilePath0 = os.path.join(root_test_dir, 'temp_build_files/s60_policy_mapper_test_0.txt')
+        includeFilePath1 = os.path.join(root_test_dir, 'temp_build_files/s60_policy_mapper_test_1.txt')
+        
+        content = self.__read_manifest(includeFilePath)
+        expected_paths.sort()
+        print content
+        print expected_paths
+        assert content == expected_paths
+
+        content = self.__read_manifest(includeFilePath0)
+        expected_paths0.sort()
+        print content
+        print expected_paths0
+        assert content == expected_paths0
+
+        content = self.__read_manifest(includeFilePath1)
+        expected_paths1.sort()
+        print content
+        print expected_paths1
+        assert content == expected_paths1
+
+        print cmds        
+        assert len(cmds[3]) == 7
+
+
+    def test_distribution_policy_mapper_sf_remover_config(self):
+        """ Testing the policy SFL remover mapper. """
+        configDict = {'root.dir': root_test_dir,
+                  'temp.build.dir': os.path.join(root_test_dir, 'temp_build_files'),
+                  'archives.dir': root_test_dir,
+                  'name': 'sf_policy_sf_mapper_test',
+                  'include': 'sf/',
+                  'policy.root.dir': os.path.join(root_test_dir, 'sf'),
+                  'archive.tool': '7za',
+                  'mapper': 'sfl.policy.remover',
+                  'policy.zip2zip': 'false',
+                  'policy.csv': os.path.join(os.environ['TEST_DATA'], 'data/distribution.policy.extended_for_sf.id_status.csv'),
+                 }
+        config = configuration.Configuration(configDict)
+
+        builder = archive.ArchivePreBuilder(configuration.ConfigurationSet([config]), "config", index=0)
+        manifest_file_path = builder.build_manifest(config)
+        cmds = builder.manifest_to_commands(config, manifest_file_path)
+        
+        expected_paths = ['sf' + os.sep + 'component_private' + os.sep + 'component_private_file.txt',
+                           'sf' + os.sep + 'component_private' + os.sep + 'Distribution.Policy.S60',
+                           'sf' + os.sep + 'component_public' + os.sep + 'component_public_file.txt',
+                           'sf' + os.sep + 'component_public' + os.sep + 'Distribution.Policy.S60',
+                           'sf' + os.sep + 'Distribution.Policy.S60',
+                           'sf' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'Distribution.Policy.S60',
+                           'sf' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'to_be_removed_9999.txt',                           
+                           'sf' + os.sep + 'missing' + os.sep + 'to_be_removed_9999.txt',
+                           'sf' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'subdir_nofiles' + os.sep + 'subdir_nofiles2',
+                           'sf' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'subdir_nopolicy' + os.sep + 'component_private_file.txt',
+                           'sf' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'subdir' + os.sep + 'Distribution.Policy.S60',
+                           'sf' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'subdir' + os.sep + 'to_be_removed_9999.txt',
+                           'sf' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'to_be_removed_9999.txt',
+                           'sf' + os.sep + 'not_in_cvs' + os.sep + 'Distribution.Policy.S60',
+                           'sf' + os.sep + 'component_sfl' + os.sep + 'component_sfl_file.txt',
+                           'sf' + os.sep + 'component_sfl' + os.sep + 'Distribution.Policy.S60',
+                           'sf' + os.sep + 'component_epl' + os.sep + 'component_epl_file.txt',
+                           'sf' + os.sep + 'component_epl' + os.sep + 'Distribution.Policy.S60',]
+        if os.sep == '\\':
+            for i in range(len(expected_paths)):
+                expected_paths[i] = expected_paths[i].lower()
+        expected_paths0 = ['sf' + os.sep + 'component_public' + os.sep + 'component_public_file.txt',
+                           'sf' + os.sep + 'component_public' + os.sep + 'Distribution.Policy.S60',
+                           'sf' + os.sep + 'Distribution.Policy.S60',
+                           'sf' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'Distribution.Policy.S60',
+                           'sf' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'to_be_removed_9999.txt',
+                           'sf' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'subdir' + os.sep + 'Distribution.Policy.S60',
+                           'sf' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'subdir' + os.sep + 'to_be_removed_9999.txt']
+        if os.sep == '\\':
+            for i in range(len(expected_paths0)):
+                expected_paths0[i] = expected_paths0[i].lower()
+        expected_paths1 = ['sf' + os.sep + 'component_private' + os.sep + 'component_private_file.txt',
+                           'sf' + os.sep + 'component_private' + os.sep + 'Distribution.Policy.S60']
+        if os.sep == '\\':
+            for i in range(len(expected_paths1)):
+                expected_paths1[i] = expected_paths1[i].lower()
+        expected_paths3 = ['sf' + os.sep + 'component_sfl' + os.sep + 'component_sfl_file.txt',
+                           'sf' + os.sep + 'component_sfl' + os.sep + 'Distribution.Policy.S60',]
+        if os.sep == '\\':
+            for i in range(len(expected_paths3)):
+                expected_paths3[i] = expected_paths3[i].lower()
+        expected_paths7 = ['sf' + os.sep + 'component_epl' + os.sep + 'component_epl_file.txt',
+                           'sf' + os.sep + 'component_epl' + os.sep + 'Distribution.Policy.S60',]
+        if os.sep == '\\':
+            for i in range(len(expected_paths7)):
+                expected_paths7[i] = expected_paths7[i].lower()
+        expected_paths9 = ['sf' + os.sep + 'missing' + os.sep + 'to_be_removed_9999.txt',
+                           'sf' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'subdir_nofiles' + os.sep + 'subdir_nofiles2',
+                           'sf' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'subdir_nopolicy' + os.sep + 'component_private_file.txt',
+                           'sf' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'to_be_removed_9999.txt',
+                           'sf' + os.sep + 'not_in_cvs' + os.sep + 'Distribution.Policy.S60',]
+        if os.sep == '\\':
+            for i in range(len(expected_paths9)):
+                expected_paths9[i] = expected_paths9[i].lower()
+ 
+        includeFilePath = os.path.join(root_test_dir, 'temp_build_files/sf_policy_sf_mapper_test_includefile.txt')
+        includeFilePath0 = os.path.join(root_test_dir, 'temp_build_files/sf_policy_sf_mapper_test_0.txt')
+        includeFilePath1 = os.path.join(root_test_dir, 'temp_build_files/sf_policy_sf_mapper_test_1.txt')
+        includeFilePath3 = os.path.join(root_test_dir, 'temp_build_files/sf_policy_sf_mapper_test_3.txt')
+        includeFilePath7 = os.path.join(root_test_dir, 'temp_build_files/sf_policy_sf_mapper_test_7.txt')
+        includeFilePath9 = os.path.join(root_test_dir, 'temp_build_files/sf_policy_sf_mapper_test_9999.txt')
+        
+        
+        content = self.__read_manifest(includeFilePath)
+        expected_paths.sort()
+        print content
+        print expected_paths
+        assert content == expected_paths
+
+        content = self.__read_manifest(includeFilePath0)
+        expected_paths0.sort()
+        print content
+        print expected_paths0
+        assert content == expected_paths0
+
+        content = self.__read_manifest(includeFilePath1)
+        expected_paths1.sort()
+        print content
+        print expected_paths1
+        assert content == expected_paths1
+
+        content = self.__read_manifest(includeFilePath3)
+        expected_paths3.sort()
+        print content
+        print expected_paths3
+        assert content == expected_paths3
+
+        content = self.__read_manifest(includeFilePath7)
+        expected_paths7.sort()
+        print content
+        print expected_paths7
+        assert content == expected_paths7
+
+        content = self.__read_manifest(includeFilePath9)
+        expected_paths9.sort()
+        print content
+        print expected_paths9
+        assert content == expected_paths9
+        
+        # checking the number of command generated
+        assert len(cmds) == 2, "Must only have 2 steps in the archiving (archiving, removing)."
+        assert len(cmds[0]) == 5, "Must only have 5 output files."
+        print len(cmds[1])
+        for cmd in cmds[1]:
+            print cmd
+        assert len(cmds[1]) == len(expected_paths)-len(expected_paths3), "Remore must be equal to len(expected_paths) - len(expected_paths3)"
+
+    def test_distribution_policy_mapper_epl_remover_config(self):
+        """ Testing the policy EPL remover mapper. """
+        configDict = {'root.dir': root_test_dir,
+                  'temp.build.dir': os.path.join(root_test_dir, 'temp_build_files'),
+                  'archives.dir': root_test_dir,
+                  'name': 'sf_policy_epl_mapper_test',
+                  'include': 'sf/',
+                  'policy.root.dir': os.path.join(root_test_dir, 'sf'),
+                  'archive.tool': '7za',
+                  'mapper': 'epl.policy.remover',
+                  'policy.zip2zip': 'false',
+                  'policy.csv': os.path.join(os.environ['TEST_DATA'], 'data/distribution.policy.extended_for_sf.id_status.csv'),
+                 }
+        config = configuration.Configuration(configDict)
+
+        builder = archive.ArchivePreBuilder(configuration.ConfigurationSet([config]), "config", index=0)
+        manifest_file_path = builder.build_manifest(config)
+        cmds = builder.manifest_to_commands(config, manifest_file_path)
+        
+        expected_paths = ['sf' + os.sep + 'component_private' + os.sep + 'component_private_file.txt',
+                           'sf' + os.sep + 'component_private' + os.sep + 'Distribution.Policy.S60',
+                           'sf' + os.sep + 'component_public' + os.sep + 'component_public_file.txt',
+                           'sf' + os.sep + 'component_public' + os.sep + 'Distribution.Policy.S60',
+                           'sf' + os.sep + 'Distribution.Policy.S60',
+                           'sf' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'Distribution.Policy.S60',
+                           'sf' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'to_be_removed_9999.txt',
+                           'sf' + os.sep + 'missing' + os.sep + 'to_be_removed_9999.txt',
+                           'sf' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'subdir_nofiles' + os.sep + 'subdir_nofiles2',
+                           'sf' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'subdir_nopolicy' + os.sep + 'component_private_file.txt',
+                           'sf' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'subdir' + os.sep + 'Distribution.Policy.S60',
+                           'sf' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'subdir' + os.sep + 'to_be_removed_9999.txt',
+                           'sf' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'to_be_removed_9999.txt',
+                           'sf' + os.sep + 'not_in_cvs' + os.sep + 'Distribution.Policy.S60',
+                           'sf' + os.sep + 'component_sfl' + os.sep + 'component_sfl_file.txt',
+                           'sf' + os.sep + 'component_sfl' + os.sep + 'Distribution.Policy.S60',
+                           'sf' + os.sep + 'component_epl' + os.sep + 'component_epl_file.txt',
+                           'sf' + os.sep + 'component_epl' + os.sep + 'Distribution.Policy.S60',]
+        if os.sep == '\\':
+            for i in range(len(expected_paths)):
+                expected_paths[i] = expected_paths[i].lower()
+        expected_paths0 = ['sf' + os.sep + 'component_public' + os.sep + 'component_public_file.txt',
+                           'sf' + os.sep + 'component_public' + os.sep + 'Distribution.Policy.S60',
+                           'sf' + os.sep + 'Distribution.Policy.S60',
+                           'sf' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'Distribution.Policy.S60',
+                           'sf' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'to_be_removed_9999.txt',
+                           'sf' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'subdir' + os.sep + 'Distribution.Policy.S60',
+                           'sf' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'subdir' + os.sep + 'to_be_removed_9999.txt',]
+        if os.sep == '\\':
+            for i in range(len(expected_paths0)):
+                expected_paths0[i] = expected_paths0[i].lower()
+        expected_paths1 = ['sf' + os.sep + 'component_private' + os.sep + 'component_private_file.txt',
+                           'sf' + os.sep + 'component_private' + os.sep + 'Distribution.Policy.S60',]
+        if os.sep == '\\':
+            for i in range(len(expected_paths1)):
+                expected_paths1[i] = expected_paths1[i].lower()
+        expected_paths3 = ['sf' + os.sep + 'component_sfl' + os.sep + 'component_sfl_file.txt',
+                           'sf' + os.sep + 'component_sfl' + os.sep + 'Distribution.Policy.S60',]
+        if os.sep == '\\':
+            for i in range(len(expected_paths3)):
+                expected_paths3[i] = expected_paths3[i].lower()
+        expected_paths7 = ['sf' + os.sep + 'component_epl' + os.sep + 'component_epl_file.txt',
+                           'sf' + os.sep + 'component_epl' + os.sep + 'Distribution.Policy.S60',]
+        if os.sep == '\\':
+            for i in range(len(expected_paths7)):
+                expected_paths7[i] = expected_paths7[i].lower()
+        expected_paths9 = ['sf' + os.sep + 'missing' + os.sep + 'to_be_removed_9999.txt',
+                           'sf' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'subdir_nofiles' + os.sep + 'subdir_nofiles2',
+                           'sf' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'subdir_nopolicy' + os.sep + 'component_private_file.txt',
+                           'sf' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'to_be_removed_9999.txt',
+                           'sf' + os.sep + 'not_in_cvs' + os.sep + 'Distribution.Policy.S60',]
+        if os.sep == '\\':
+            for i in range(len(expected_paths9)):
+                expected_paths9[i] = expected_paths9[i].lower()
+
+        includeFilePath = os.path.join(root_test_dir, 'temp_build_files/sf_policy_epl_mapper_test_includefile.txt')
+        includeFilePath0 = os.path.join(root_test_dir, 'temp_build_files/sf_policy_epl_mapper_test_0.txt')
+        includeFilePath1 = os.path.join(root_test_dir, 'temp_build_files/sf_policy_epl_mapper_test_1.txt')
+        includeFilePath3 = os.path.join(root_test_dir, 'temp_build_files/sf_policy_epl_mapper_test_3.txt')
+        includeFilePath7 = os.path.join(root_test_dir, 'temp_build_files/sf_policy_epl_mapper_test_7.txt')
+        includeFilePath9 = os.path.join(root_test_dir, 'temp_build_files/sf_policy_epl_mapper_test_9999.txt')
+        
+        
+        content = self.__read_manifest(includeFilePath)
+        expected_paths.sort()
+        print content
+        print expected_paths
+        assert content == expected_paths
+
+        content = self.__read_manifest(includeFilePath0)
+        expected_paths0.sort()
+        print content
+        print expected_paths0
+        assert content == expected_paths0
+
+        content = self.__read_manifest(includeFilePath1)
+        expected_paths1.sort()
+        print content
+        print expected_paths1
+        assert content == expected_paths1
+
+        content = self.__read_manifest(includeFilePath3)
+        expected_paths3.sort()
+        print content
+        print expected_paths3
+        assert content == expected_paths3
+
+        content = self.__read_manifest(includeFilePath7)
+        expected_paths7.sort()
+        print content
+        print expected_paths7
+        assert content == expected_paths7
+
+        content = self.__read_manifest(includeFilePath9)
+        expected_paths9.sort()
+        print content
+        print expected_paths9
+        assert content == expected_paths9
+        
+        # checking the number of command generated
+        assert len(cmds) == 2, "Must only have 2 steps in the archiving (archiving, removing)."
+        assert len(cmds[0]) == 5, "Must only have 5 output files."
+        assert len(cmds[1]) == len(expected_paths)-len(expected_paths3), "Remore must be equal to len(expected_paths) - len(expected_paths3)"
+
+
+
+
+    def __read_manifest(self, manifest):
+        """ read the file and sort"""
+        with open(manifest) as f:
+            content = f.readlines()
+        if os.sep == '\\':
+            content = [s.strip().lower() for s in content]
+        else:
+            content = [s.strip() for s in content]
+        content.sort()
+        return content
+        
+
+    def test_split_manifest_file(self):
+        """ A LogicalArchive can split a manifest correctly. """
+        configDict = {'root.dir': os.path.abspath(root_test_dir),
+                  'temp.build.dir': os.path.abspath(os.path.join(root_test_dir, 'temp_build_files')),
+                  'archives.dir': os.path.abspath(root_test_dir),
+                  'name': 'manifest_test',
+                  'max.files.per.archive': '1',
+                  'include': 'dir/',
+                  'exclude': 'dir/emptysubdir3',
+                  'archive.tool': '7za'
+                 }
+        config = configuration.Configuration(configDict)
+
+        builder = archive.ArchivePreBuilder(configuration.ConfigurationSet([config]), "config", index=0)
+        manifest_file_path = builder.build_manifest(config)
+        builder.manifest_to_commands(config, manifest_file_path)
+
+        expectedPaths = ['dir' + os.sep + 'emptysubdir1','dir' + os.sep + 'emptysubdir2']
+        expectedPaths1 = ['dir' + os.sep + 'emptysubdir1\n']
+        expectedPaths2 = ['dir' + os.sep + 'emptysubdir2\n']
+        
+        includeFilePath = os.path.join(root_test_dir, 'temp_build_files/manifest_test_includefile.txt')
+        includeFilePath1 = os.path.join(root_test_dir, 'temp_build_files/manifest_test_part01.txt')
+        includeFilePath2 = os.path.join(root_test_dir, 'temp_build_files/manifest_test_part02.txt')
+
+        with open(includeFilePath) as f:
+            content = f.readlines()
+        with open(includeFilePath1) as f:
+            content1 = f.readlines()
+        with open(includeFilePath2) as f:
+            content2 = f.readlines()
+        print "content: ", content
+        print "content1: ", content1
+        print "content2: ", content2
+        print "expectedPaths: ", expectedPaths
+        print "expectedPaths1: ", expectedPaths1
+        print "expectedPaths2: ", expectedPaths2
+        content = [s.strip().lower() for s in content]
+        self.assert_(content == expectedPaths)
+        self.assert_(content1 == expectedPaths1)
+        self.assert_(content2 == expectedPaths2)
+
+class CheckRootDirValueTest(unittest.TestCase):
+    """test root drive value"""
+    def test_checkRootDirValue(self):
+        """ Testing the root drive value. """
+        configDict = {'root.dir': root_test_dir,
+                'temp.build.dir': os.path.join(root_test_dir, 'temp_build_files'),
+                'archives.dir': root_test_dir,
+                'name': 'regular_path_test',
+                'include': 'dir1/*.txt',
+                'archive.tool': '7za'
+               }
+        configDictUnc = {'root.dir': "\\\\server\\share\\dir",
+                'temp.build.dir': os.path.join(root_test_dir, 'temp_build_files'),
+                'archives.dir': root_test_dir,
+                'name': 'unc_test',
+                'include': 'dir1/*.txt',
+                'archive.tool': '7za'
+               }
+        config = configuration.Configuration(configDict)
+        configUnc = configuration.Configuration(configDictUnc)
+        builder = MockedArchivePreBuilder(configuration.ConfigurationSet([config, configUnc]), "config", writerType='make', index=0)
+        builder.rewriteXMLFile(os.path.join(os.environ['TEST_DATA'], 'data/zip_checkDrive_test.cfg.xml'), os.path.join(os.environ['TEST_DATA'], 'data/zip_checkDrive_test.cfg.xml.parsed'))
+        (build_drive, _) = os.path.splitdrive(os.path.normpath(tempfile.gettempdir()))
+        rootList = builder.checkRootDirValue(MockedConfigBuilder(), os.path.join(os.environ['TEST_DATA'], 'data/zip_checkDrive_test.cfg.xml.parsed'), build_drive, 'wvdo_sources')
+        assert rootList is not None
+        if os.sep == '\\':
+            roots = builder.getCommonUncRoots(['\\\\server\\share\\dir', 
+                                               '\\\\server\\share', 
+                                               '\\\\server\\share1\\dir',
+                                               '\\\\server2\\share\\somedir'])
+            self.assert_(len(roots) == 3)
+            self.assert_('\\\\server\\share\\' in roots)
+            self.assert_('\\\\server\\share1\\' in roots)
+            self.assert_('\\\\server2\\share\\' in roots)
+
+class MockedConfigBuilder:
+    """."""
+            
+    def writeToXML(self, xml_file, configs, parse_xml_file):
+        """writeToXML"""
+        pass
+    
+
+class MockedArchivePreBuilder(archive.ArchivePreBuilder):
+    """ ."""
+    def substUncPath(self, _):
+        """ subst the unc path"""
+        if os.sep != '\\':
+            return None
+        return fileutils.get_next_free_drive()
+          
+    def unSubStituteDrives(self, drive):
+        """ unsubstitute the drive"""
+        pass
+    
+    def rewriteXMLFile(self, xml_file, parse_xml_file):
+        """re-write XML file"""
+        doc = xml.dom.minidom.parse(xml_file)
+        out = open(parse_xml_file, 'w')
+        doc.writexml(out, indent='')
+        out.close()
+            
+  
+class ZipArchiverTest(unittest.TestCase):
+
+    def test_extension(self):
+        t = archive.tools.SevenZipArchiver()
+        self.assert_(t.extension() == ".zip")
+    
+
+#class ZipArchiverTest(unittest.TestCase):
+#    def setUp(self):
+#        archiveConfig = amara.parse(open(os.environ['TEST_DATA'] + '/data/zip_archive_test.cfg.xml'))
+#        self.archivePreBuilder = archive.ArchivePreBuilder(archiveConfig)
+#
+#    def testZipArchiverCommand(self):
+#        """Zip archiver creates correct command."""
+#        archiver = archive.ZipArchiver(self.archivePreBuilder)
+#        archiver._start_archive('foo')
+#        archiver.end_archive()
+#        commands = archiver.commandList.allCommands()
+#        assert len(commands) == 1
+#        command = commands[0]
+#        assert command.executable() == 'zip.exe'
+#        assert command.cmd() == '-R . c:\\temp\\foo.zip'
+#
+#    def testZipArchiverOperation(self):
+#        """Zip archiver runs zip operation correctly."""
+#        buildFilePath = self.archivePreBuilder.createArchiveBuildFile('zip_exec.ant.xml')
+#        result = run(r'ant -f c:\temp\output\temp_build_files\zip_exec.ant.xml all -Dnumber.of.threads=1')
+#        print result
+
+def run( command ):
+    """ run the code"""
+    #print "Run command: " + command
+    ( _, stdout ) = os.popen4( command )
+    result = stdout.read()
+    return result
+
+
+if __name__ == "__main__":
+    unittest.main()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncorecpythontests/test_ats3.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,1660 @@
+# -*- encoding: latin-1 -*-
+
+#============================================================================ 
+#Name        : test_ats3.py 
+#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:
+#===============================================================================
+
+""" Testing ATS3 framework. """
+# pylint: disable-msg=E1101,C0302,w0142,w0603,R0912,R0902,R0903,R0201,W0404, R0915
+#w0142 => * and ** were used
+#w0603 => global variables used TSRC_PATH etc
+#R*    => will be fixed while refactoring
+#E1101 => Mocker shows mockery
+#R0915 => too many statements
+
+from cStringIO import StringIO
+from xml.etree.ElementTree import fromstring
+from xml.etree import ElementTree as et
+import difflib
+import logging
+logging.getLogger().setLevel(logging.ERROR)
+import tempfile
+import zipfile
+import os
+import re
+import subprocess
+
+from path import path # pylint: disable-msg=F0401
+import amara
+import mocker # pylint: disable-msg=F0401
+
+import ats3
+import ats3.testconfigurator as atc
+import ats3.dropgenerator as adg
+import ats3.parsers as parser
+
+
+TEST_PATH = None
+TEST_FILES = {}
+TSRC = None
+OUTPUT = None
+
+# Shortcuts
+E = et.Element
+SE = et.SubElement
+
+class Bunch(object):
+    """ Configuration object. Argument from constructor are converted into class attributes. """
+    def __init__(self, **kwargs):
+        self.__dict__.update(kwargs)
+        
+def equal_xml(xml1, xml2):
+    """Check the equality of the given XML snippets.
+    
+    Tag name equality:
+    
+    >>> equal_xml('<a/>', '<a/>')
+    True
+    >>> equal_xml('<a/>', '<b/>')
+    False
+    
+    Attribute equality:
+    
+    >>> equal_xml('<a k="v"/>', '<a k="v"/>')
+    True
+    >>> equal_xml('<a k="v"/>', '<a k="w"/>')
+    False
+    
+    Text content equality:
+    
+    >>> equal_xml('<a>v</a>', '<a>v</a>')
+    True
+    >>> equal_xml('<a>v</a>', '<a>w</a>')
+    False
+    >>> equal_xml('<a>v</a>', '<a></a>')
+    False
+    
+    Text content equality when whitespace differs:
+    >>> equal_xml('<a>v</a>', '<a>v </a>')
+    True
+
+    Equality of child elements:
+    
+    >>> equal_xml('<a><b><c k="v"/></b></a>', '<a><b><c k="v"/></b></a>')
+    True
+    >>> equal_xml('<a><b><c k="v"/></b></a>', '<a><b><c k="w"/></b></a>')
+    False
+    >>> equal_xml('<a><b><c k="v"/>v</b></a>', '<a><b><c k="v"/>w</b></a>')
+    False
+    >>> equal_xml('<a><b><c k="v"/>v</b></a>', '<a><b><c k="v"/>v </b></a>')
+    True
+    
+    """
+    def __init__():
+        check_instance(xml1, xml2)
+    
+    def check_instance(xml1, xml2):
+        """if xml1 and xml2 are instances, converts to strings"""
+        if isinstance(xml1, basestring):
+            xml1 = fromstring(xml1)
+        if isinstance(xml2, basestring):
+            xml2 = fromstring(xml2)
+        check_tags(xml1, xml2)
+
+    def check_tags(xml1, xml2):
+        """check xml tags and text equality"""
+        if xml1.tag != xml2.tag:
+            return False
+        if xml1.attrib != xml2.attrib:
+            return False
+        if xml1.text:
+            if not xml2.text:
+                return False
+        if xml2.text:
+            if not xml1.text:
+                return False
+
+        produce_xml_children(xml1, xml2)
+
+    def produce_xml_children(xml1, xml2):
+        """checks if xml children are of same length and are equal?"""
+        if xml1.text and xml2.text and xml1.text.strip() != xml2.text.strip():
+            return False
+        if xml1.tail is not None and xml2.tail is not None:
+            if xml1.tail.strip() != xml2.tail.strip():
+                return False
+        elif xml1.tail != xml2.tail:
+            return False
+        
+        children1 = list(xml1.getchildren())
+        children2 = list(xml2.getchildren())
+        if len(children1) != len(children2):
+            return False
+        for child1, child2 in zip(children1, children2):
+            return equal_xml(child1, child2)
+    return True        
+
+
+def setup_module():
+    """ Setup test environment. """
+    global TEST_PATH, TSRC, OUTPUT
+    TEST_PATH = path(tempfile.mkdtemp())
+    OUTPUT = TEST_PATH.joinpath(r"output")
+    component = TEST_PATH
+    component.joinpath("group").makedirs()
+    for path_parts in (("tsrc", "group", "bld.inf"),
+                       ("tsrc", "group", "test.pkg"),
+                       ("tsrc", "testmodules", "file1.dll"),
+                       ("tsrc", "testmodules", "file2.dll"),
+                       ("tsrc", "data", "file1"),
+                       ("tsrc", "data", "file2"),
+                       ("tsrc", "data", "file3"),
+                       ("tsrc", "data", "mmc", "file4"),
+                       ("tsrc", "data", "c", "file5"),
+                       ("tsrc", "conf", "file1.cfg"),
+                       ("tsrc", "conf", "file2.cfg"),
+                       ("tsrc", "init", "TestFramework.ini"),
+                       ("tsrc", "custom", "prepostaction.xml"),
+                       ("tsrc", "custom", "postpostaction.xml"),
+                       # These do not have to be under 'tsrc':
+                       ("tsrc", "output", "images", "file1.fpsx"),
+                       ("tsrc", "output", "images", "file2.fpsx"),
+                       ("tsrc", "sis", "file1.sisx"),
+                       ("tsrc", "sis", "file2.sisx"),
+                       ("tsrc", "sis", "file3.sisx"),
+                       ("tsrc", "trace_init", "trace_activation_1.xml")):
+        filepath = component.joinpath(*path_parts)
+        if not filepath.parent.exists():
+            filepath.parent.makedirs()
+        filepath.touch()
+        TEST_FILES.setdefault(path_parts[1], []).append(filepath)
+    TSRC = component.joinpath("tsrc")
+    filepath = OUTPUT.joinpath("pmd", "pmd_file.pmd")
+    if not filepath.parent.exists():
+        filepath.parent.makedirs()
+    filepath.touch()
+    TEST_FILES.setdefault("pmd_file", []).append(filepath)
+    tracing = component.joinpath("tsrc", "trace_init")
+    root = E('ConfigurationFile')
+    confs = E("Configurations")
+    trace_act = SE(confs, "TraceActivation")
+    conf = SE(trace_act, "Configuration")
+    conf.set('Name', 'MCU')
+    mcu = SE(conf, "MCU")
+    sett = SE(mcu, "settings")
+    SE(sett, "timestamp")
+    root.append(confs)
+    ettree = et.ElementTree(root)
+    doc = amara.parse(et.tostring(ettree.getroot()))
+    handle = open(tracing.joinpath("trace_activation_1.xml"), "w")
+    handle.write(doc.xml(indent="yes"))
+    handle.close()
+#    tracing.writestr("trace_activation_1.xml", doc.xml(indent=u"yes"))
+    group = component.joinpath("tsrc", "group")
+    group.joinpath("bld.inf").write_text(
+        r"""
+        PRJ_TESTMMPFILES
+        stif.mmp /* xyz.mmp */ abcd.mmp
+        /*xyz.mmp*/
+        eunit.mmp /* xyz.mmp */
+        both.mmp
+        ..\sub-component\group\sub-component.mmp
+        """.replace('\\', os.sep))
+
+    group.joinpath("test.pkg").write_text(
+        r"""
+        ;Language - standard language definitions
+        &EN
+        
+        ; standard SIS file header
+        #{"BTEngTestApp"},(0x04DA27D5),1,0,0
+        
+        ;Supports Series 60 v 3.0
+        (0x101F7961), 0, 0, 0, {"Series60ProductID"}
+        
+        ;Localized Vendor Name
+        %{"BTEngTestApp"}
+        
+        ;Unique Vendor name
+        :"Nokia"
+        
+        ; Files to copy
+        "\tsrc\testmodules\file1.dll"-"c:\sys\bin\file1.dll"
+        "\tsrc\testmodules\file2.dll"-"c:\sys\bin\file2.dll"
+        "\tsrc\data\file1"-"e:\sys\bin\file1"
+        "\tsrc\data\file2"-"e:\sys\bin\file2"
+        "\tsrc\data\file3"-"e:\sys\bin\file3"
+        "\tsrc\conf\file1.cfg"-"!:\sys\bin\file1.cfg"
+        "\tsrc\conf\file2.cfg"-"!:\sys\bin\file2.cfg"
+        "\tsrc\init\TestFramework.ini"-"!:\sys\bin\TestFramework.ini"
+        "\tsrc\sis\file1.sisx"-"!:\sys\bin\file1.sisx"
+        "\tsrc\sis\file2.sisx"-"!:\sys\bin\file2.sisx"
+        """.replace('\\', os.sep))
+    group.joinpath("stif.mmp").write_text("LIBRARY stiftestinterface.lib")
+    group.joinpath("eunit.mmp").write_text("LIBRARY eunit.lib")
+    group.joinpath("both.mmp").write_text("LIBRARY stiftestinterface.lib eunit.lib")
+    init = component.joinpath("tsrc", "init")
+    
+    init.joinpath("TestFramework.ini").write_text(
+        r"""
+#     - Sets a device reset module's dll name(Reboot).
+#        + If Nokia specific reset module is not available or it is not correct one
+#          StifHWResetStub module may use as a template for user specific reset
+#          module. 
+
+[Engine_Defaults]
+
+TestReportMode= FullReport        # Possible values are: 'Empty', 'Summary', 'Environment',
+                                                               'TestCases' or 'FullReport'
+
+CreateTestReport= YES            # Possible values: YES or NO
+
+TestReportFilePath= C:\LOGS\TestFramework\
+TestReportFileName= TestReport
+
+TestReportFormat= TXT            # Possible values: TXT or HTML
+        
+        """)
+
+
+def teardown_module():
+    """ Cleanup environment after testing. """    
+    def __init__():
+        path(TEST_PATH).rmtree()
+
+# CTC related functions    
+def check_ctc_write(steps):
+    """Checks if CTC data is written on the CTC log"""
+    step = steps.next()
+    assert step.get("name") == "Save CTC data"
+    assert step.findtext("./command") == "execute"
+    params = step.findall("./params/param")
+    assert params[0].get("parameters") == "writelocal"
+    assert params[1].get("file") == path(r"z:\sys\bin\ctcman.exe")
+    step = steps.next()
+    assert step.get("name") == "Save CTC data"
+    assert step.findtext("./command") == "execute"
+    params = step.findall("./params/param")
+    assert params[0].get("parameters") == "writefile"
+    assert params[1].get("file") == path(r"z:\sys\bin\ctcman.exe")
+
+def check_ctc_log(steps, testtype=""):
+    """Fetches CTC Log"""
+    #For the ctcdata.txt to be published on the ATS network drive
+    step = steps.next()
+    assert step.get("name") == "Fetch CTC data for post commands execution" #"Fetch and clean CTC data"
+    assert step.findtext("./command") == "fetch-log"
+    params = step.findall("./params/param")
+    assert params[0].get("delete") == "false"
+    if testtype == "withpkgfiles":
+        assert params[1].get("local-path") == r"\\10.0.0.1\ctc_helium\builds\drop0\set1\ctcdata"
+    else:
+        assert params[1].get("local-path") == r"\\10.0.0.1\ctc_helium\builds\drop0\set0\ctcdata"
+    assert params[2].get("path") == path(r"c:" + os.sep + "data" + os.sep + "ctc" + os.sep + "ctcdata.txt")
+    
+    #For the ctcdata.txt to be published on the build network drive
+    step = steps.next()
+    assert step.get("name") == "Fetch and clean CTC data" #"Fetch and clean CTC data"
+    assert step.findtext("./command") == "fetch-log"
+    params = step.findall("./params/param")
+    assert params[0].get("delete") == "true"
+    assert params[1].get("path") == path(r"c:" + os.sep + "data" + os.sep + "ctc" + os.sep + "ctcdata.txt")
+
+def check_ctc_start(steps):
+    """Checks if CTC starts in ATS"""
+    step = steps.next()
+    assert step.get("name") == "Create CTC log dir"
+    assert step.findtext("./command") == "makedir"
+    params = step.findall("./params/param")
+    assert params[0].get("dir") == path(r"c:" + os.sep + "data" + os.sep + "ctc")
+    step = steps.next()
+    assert step.get("name") == "CTC start"
+    assert step.findtext("./command") == "execute"
+    params = step.findall("./params/param")
+    assert params[0].get("file") == path(r"z:\sys\bin\ctcman.exe")   
+
+def check_fetch_logs(steps):
+    """Checks fetching log directory is created"""
+    step = steps.next()
+    if "Fetch test" in step.get("name"):
+        assert step.get("name") == "Fetch test module logs"
+        assert step.findtext("./command") == "fetch-log"
+        params = step.findall("./params/param")
+        assert params[0].get("type") == "text"
+        assert params[1].get("delete") == "true"
+        if step.get("harness") == "STIF":
+            assert params[2].get("path") == path(r"c:" + os.sep + "logs" + os.sep + "testframework" + os.sep + "*")
+        elif step.get("harness") == "EUNIT":
+            assert params[2].get("path") == path(r"c:" + os.sep + "Shared" + os.sep + "EUnit" + os.sep + "logs" + os.sep + "*")
+    else:
+        step = steps.next()
+        assert step.get("name") == "Fetch test module logs"
+        assert step.findtext("./command") == "fetch-log"
+        params = step.findall("./params/param")
+        assert params[0].get("type") == "text"
+        assert params[1].get("delete") == "true"
+        assert params[2].get("path") == path(r"c:" + os.sep + "logs" + os.sep + "testframework" + os.sep + "*")  
+
+def check_diamonds_action(action):
+    """ Testing Diamonds action. """
+    assert action.findtext("./type") == "DiamondsAction"
+    assert not action.findall("./params/param") 
+
+def check_send_email_action(action, reportemail):
+    """verifies if sening email option works"""
+    assert action.findtext("./type") == "SendEmailAction"
+    params = action.findall("./params/param")
+    assert params[0].get("name") == "subject"
+    assert params[0].get("value") == "email subject"
+    assert params[1].get("name") == "type"
+    assert params[1].get("value") == "ATS3_REPORT"
+    assert params[2].get("name") == "send-files"
+    assert params[2].get("value") == "true"
+    assert params[3].get("name") == "to"
+    assert params[3].get("value") == reportemail
+    
+def check_ctc_run_process_action(action):
+    """verifies if CTC run process action works"""
+    #The parameters for this test are intended to execute on a windows machine
+    assert action.findtext("./type") == "RunProcessAction"
+    params = action.findall("./params/param")
+    assert params[0].get("name") == "file"
+    assert params[0].get("value") == "catsctc2html/catsctc2html.exe"
+    assert params[1].get("name") == "parameters"
+    assert params[1].get("value") == r"--ctcdata_files=\\10.0.0.1\ctc_helium\1234\drop0\set0\ctcdata --monsym_files=\\10.0.0.1\ctc_helium\1234\mon_syms\1\MON.sym --diamonds_build_id=1234 --drop_id=0 --total_amount_of_drops=1"
+
+def check_ats_report_action(action, filestore):
+    """verifies if sening ATS report option works"""
+    assert action.findtext("./type") == "FileStoreAction"
+    params = action.findall("./params/param")
+    assert params[0].get("name") == "to-folder"
+    assert params[0].get("value") == filestore
+    assert params[1].get("name") == "report-type"
+    assert params[1].get("value") == "ATS_REPORT"
+    assert params[2].get("name") == "date-format"
+    assert params[2].get("value") == "yyyyMMdd"
+    assert params[3].get("name") == "time-format"
+    assert params[3].get("value") == "HHmmss"
+
+def check_stif_report_action(action, filestore):
+    """verifies if sening STIF report option works"""
+    assert action.findtext("./type") == "FileStoreAction"
+    params = action.findall("./params/param")
+    assert params[0].get("name") == "to-folder"
+    assert params[0].get("value") == filestore
+    assert params[1].get("name") == "report-type"
+    assert params[1].get("value") == "STIF_COMPONENT_REPORT_ALL_CASES"
+    assert params[2].get("name") == "run-log"
+    assert params[2].get("value") == "true"
+    assert params[3].get("name") == "date-format"
+    assert params[3].get("value") == "yyyyMMdd"
+    assert params[4].get("name") == "time-format"
+    assert params[4].get("value") == "HHmmss"
+
+def check_log_dir(steps):
+    """ Test the log dir. """
+    step = steps.next()
+    if step.get("harness") is "STIF":
+        assert step.get("name") == "Create STIF log dir"
+    elif step.get("harness") is "EUNIT":
+        assert step.get("name") == "Create EUNIT log dir"
+    assert step.findtext("./command") == "makedir"
+
+def check_trace_start(steps, filestore):
+    """Checks if tracing is started on the ATS"""
+    step = steps.next()
+    assert step.get("name") == "Start tracing"
+    assert step.findtext("./command") == "trace-start"
+    params = step.findall("./params/param")
+    assert params[0].get("ta") == path(r"ATS3Drop" + os.sep + "set0" + os.sep + "trace_activation" + os.sep + "trace_activation_1.xml")
+    assert params[1].get("tgrp") == "MCU"
+    assert params[2].get("pmd") == path(r"ATS3Drop" + os.sep + "pmds" + os.sep + "pmd_file.pmd")
+    assert params[3].get("log") == filestore.joinpath("traces", "set0", "tracelog.blx")
+    assert params[4].get("timeout") == "60"
+    assert params[5].get("date-format") == "yyyyMMdd"
+    assert params[6].get("time-format") == "HHmmss"
+    
+def check_trace_end_steps(steps, filestore):
+    """ Test trace end step. """
+    step = steps.next()
+    assert step.get("name") == "Stop tracing"
+    assert step.findtext("./command") == "trace-stop"
+    params = step.findall("./params/param")
+    assert params[0].get("timeout") == "60"
+    step = steps.next()
+    assert step.get("name") == "Convert tracing"
+    assert step.findtext("./command") == "trace-convert"
+    params = step.findall("./params/param")
+    assert params[0].get("pmd") == path(r"ATS3Drop" + os.sep + "pmds" + os.sep + "pmd_file.pmd")
+    assert params[1].get("log") == filestore.joinpath("traces", "set0", "tracelog.blx")
+    assert params[2].get("timeout") == "60"
+    assert params[3].get("date-format") == "yyyyMMdd"
+    assert params[4].get("time-format") == "HHmmss"
+
+class TestTestPlan(mocker.MockerTestCase):
+    """Creates TestPlan mocker setup"""
+    def __init__(self, methodName="runTest"):
+        mocker.MockerTestCase.__init__(self, methodName)
+
+    def setUp(self):
+        """ Setup TestTestPlan testsuite. """
+        opts = Bunch(testrun_name="testrun", harness="STIF", 
+                     device_type="product", plan_name="ats3_test_plan",
+                     diamonds_build_url="", report_email="", file_store=path(), test_timeout="60",
+                     device_hwid="5425", trace_enabled="True", ctc_enabled="True", eunitexerunner_flags="/E S60AppEnv /R Off", 
+                     multiset_enabled=False, ctc_run_process_params=r"10.0.0.1#drop0.zip#1", monsym_files="")
+        self.atp = ats3.Ats3TestPlan(opts)
+        self.config_files = TEST_FILES["conf"]
+        self.data_files = TEST_FILES["data"]
+        self.engine_ini_file = TEST_FILES["init"][0]
+        self.image_files = TEST_FILES["output"]
+        self.sis_files = TEST_FILES["sis"]
+        self.testmodule_files = TEST_FILES["testmodules"]
+        self.ctc_enabled = self.atp["ctc_enabled"]
+        self.custom_dir = "CustomD"
+        self.eunitexerunner_flags = self.atp["eunitexerunner_flags"]
+        if self.atp["trace_enabled"].lower() == "true":
+            self.trace_activation_files = TEST_FILES["trace_init"]    
+            self.pmd_files = TEST_FILES["pmd_file"]
+        else:
+            self.trace_activation_files = []    
+            self.pmd_files = []
+        self.test_timeout = self.atp["test_timeout"]
+        self.eunitexerunner_flags = self.atp["eunitexerunner_flags"]
+        self.device_hwid = self.atp["device_hwid"]
+        self.test_harness = self.atp["harness"]
+        self.src_dst = [("" + os.sep + "tsrc" + os.sep + "testmodules" + os.sep + "file1.dll", "c:" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1.dll", "testmodule"),
+            ("" + os.sep + "tsrc" + os.sep + "testmodules" + os.sep + "file2.dll", "c:" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2.dll", "testmodule"),
+            ("" + os.sep + "tsrc" + os.sep + "data" + os.sep + "file1", "e:" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1", "data"),
+            ("" + os.sep + "tsrc" + os.sep + "data" + os.sep + "file2", "e:" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2", "data"),
+            ("" + os.sep + "tsrc" + os.sep + "data" + os.sep + "file3", "e:" + os.sep + "sys" + os.sep + "bin" + os.sep + "file3", "data"),
+            ("" + os.sep + "tsrc" + os.sep + "conf" + os.sep + "file1.cfg", "c:" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1.cfg", "conf"),
+            ("" + os.sep + "tsrc" + os.sep + "conf" + os.sep + "file2.cfg", "c:" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2.cfg", "conf"),
+            ("" + os.sep + "tsrc" + os.sep + "init" + os.sep + "TestFramework.ini", "c:" + os.sep + "sys" + os.sep + "bin" + os.sep + "TestFramework.ini", "engine_ini"),
+            ("" + os.sep + "tsrc" + os.sep + "sis" + os.sep + "file1.sisx", "c:" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1.sisx", ""),
+            ("" + os.sep + "tsrc" + os.sep + "sis" + os.sep + "file2.sisx", "c:" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2.sisx", ""),]
+        self.component_path = str(TEST_PATH.joinpath("tsrc", "group"))
+
+    def test_creation(self):
+        """ Testing creation. """        
+        assert self.atp["testrun_name"] == "testrun"
+        assert self.atp["harness"] == "STIF"
+        assert self.atp["device_type"] == "product"
+    
+    def test_insert_set(self):
+        """ Inserting a set of file. """        
+        self.atp.insert_set(data_files=self.data_files,
+                           config_files=self.config_files,
+                           engine_ini_file=self.engine_ini_file,
+                           image_files=self.image_files,
+                           testmodule_files=self.testmodule_files,
+                           test_timeout=self.test_timeout,
+                           eunitexerunner_flags=self.eunitexerunner_flags,
+                           pmd_files=self.pmd_files,                            
+                           trace_activation_files=self.trace_activation_files,
+                           component_path=self.component_path)
+        self.atp.insert_set(image_files=self.image_files,                           
+                           engine_ini_file=self.engine_ini_file,
+                           sis_files=self.sis_files,
+                           test_timeout=self.test_timeout,
+                           eunitexerunner_flags=self.eunitexerunner_flags,
+                           pmd_files=self.pmd_files,                            
+                           trace_activation_files=self.trace_activation_files,
+                           component_path=self.component_path)
+        self.atp.insert_set(data_files=self.data_files,
+                           config_files=self.config_files,
+                           engine_ini_file=self.engine_ini_file,
+                           image_files=self.image_files,
+                           testmodule_files=self.testmodule_files,
+                           test_timeout=self.test_timeout,
+                           eunitexerunner_flags=self.eunitexerunner_flags,
+                           src_dst=self.src_dst,
+                           pmd_files=self.pmd_files,                            
+                           trace_activation_files=self.trace_activation_files,
+                           component_path=self.component_path)
+        self.atp.insert_set(engine_ini_file=self.engine_ini_file,
+                           test_timeout=self.test_timeout,
+                           eunitexerunner_flags=self.eunitexerunner_flags,
+                           image_files=self.image_files,
+                           test_harness=self.test_harness,
+                           src_dst=self.src_dst,
+                           pmd_files=self.pmd_files,                            
+                           trace_activation_files=self.trace_activation_files,
+                           component_path=self.component_path)
+        self.atp.insert_set(test_timeout=self.test_timeout,      
+                           eunitexerunner_flags=self.eunitexerunner_flags,               
+                           image_files=self.image_files,                        
+                           test_harness=self.test_harness,                      
+                           src_dst=self.src_dst,                                
+                           pmd_files=self.pmd_files,                            
+                           trace_activation_files=self.trace_activation_files,
+                           component_path=self.component_path)  
+
+        assert self.atp.sets[0] == dict(name="set0",
+                                       data_files=self.data_files,
+                                       config_files=self.config_files,
+                                       engine_ini_file=self.engine_ini_file,
+                                       image_files=self.image_files,
+                                       testmodule_files=self.testmodule_files,
+                                       test_timeout=self.test_timeout,
+                                       eunitexerunner_flags=self.eunitexerunner_flags,
+                                       test_harness=self.test_harness,
+                                       src_dst=[],
+                                       pmd_files=self.pmd_files,
+                                       trace_path=self.atp.file_store.joinpath(u"§RUN_NAME§" + os.sep + u"§RUN_START_DATE§_§RUN_START_TIME§", "traces", "set0", "tracelog.blx"),
+                                       trace_activation_files=self.trace_activation_files,
+                                       ctc_enabled=self.atp["ctc_enabled"],
+                                       custom_dir=None,
+                                       component_path=self.component_path)
+        assert self.atp.sets[1] == dict(name="set1",
+                                       image_files=self.image_files,
+                                       engine_ini_file=self.engine_ini_file,
+                                       sis_files=self.sis_files,
+                                       test_timeout=self.test_timeout,
+                                       eunitexerunner_flags=self.eunitexerunner_flags,
+                                       test_harness=self.test_harness,
+                                       pmd_files=self.pmd_files,
+                                       trace_path=self.atp.file_store.joinpath(u"§RUN_NAME§" + os.sep + u"§RUN_START_DATE§_§RUN_START_TIME§", "traces", "set1", "tracelog.blx"),
+                                       trace_activation_files=self.trace_activation_files,
+                                       ctc_enabled=self.atp["ctc_enabled"],
+                                       custom_dir=None,
+                                       component_path=self.component_path)
+
+        assert self.atp.sets[2] == dict(name="set2",
+                                       data_files=self.data_files,
+                                       config_files=self.config_files,
+                                       engine_ini_file=self.engine_ini_file,
+                                       image_files=self.image_files,
+                                       testmodule_files=self.testmodule_files,
+                                       test_timeout=self.test_timeout,
+                                       eunitexerunner_flags=self.eunitexerunner_flags,
+                                       test_harness=self.test_harness,
+                                       src_dst=self.src_dst,
+                                       pmd_files=self.pmd_files,
+                                       trace_path=self.atp.file_store.joinpath(u"§RUN_NAME§" + os.sep + u"§RUN_START_DATE§_§RUN_START_TIME§", "traces", "set2", "tracelog.blx"),
+                                       trace_activation_files=self.trace_activation_files,
+                                       ctc_enabled=self.atp["ctc_enabled"],
+                                       custom_dir=None,
+                                       component_path=self.component_path)
+        assert self.atp.sets[3] == dict(name="set3",
+                                       data_files=[],
+                                       config_files=[],
+                                       engine_ini_file=self.engine_ini_file,
+                                       image_files=self.image_files,
+                                       testmodule_files=[],
+                                       test_timeout=self.test_timeout,
+                                       eunitexerunner_flags=self.eunitexerunner_flags,
+                                       test_harness=self.test_harness,
+                                       src_dst=self.src_dst,
+                                       pmd_files=self.pmd_files,
+                                       trace_path=self.atp.file_store.joinpath(u"§RUN_NAME§" + os.sep + u"§RUN_START_DATE§_§RUN_START_TIME§", "traces", "set3", "tracelog.blx"),
+                                       trace_activation_files=self.trace_activation_files,
+                                       ctc_enabled=self.atp["ctc_enabled"],
+                                       custom_dir=None,
+                                       component_path=self.component_path)
+
+        assert self.atp.sets[4] == dict(name="set4",
+                                       data_files=[],
+                                       config_files=[],
+                                       engine_ini_file=None,
+                                       image_files=self.image_files,
+                                       testmodule_files=[],
+                                       test_timeout=self.test_timeout,
+                                       eunitexerunner_flags=self.eunitexerunner_flags,
+                                       test_harness=self.test_harness,
+                                       src_dst=self.src_dst,
+                                       pmd_files=self.pmd_files,
+                                       trace_path=self.atp.file_store.joinpath(u"§RUN_NAME§" + os.sep + u"§RUN_START_DATE§_§RUN_START_TIME§", "traces", "set4", "tracelog.blx"),
+                                       trace_activation_files=self.trace_activation_files,
+                                       ctc_enabled=self.atp["ctc_enabled"],
+                                       custom_dir=None,
+                                       component_path=self.component_path)
+        
+    def test_post_actions_email(self):
+        """ Testing the send email post-action. """        
+        assert not self.atp.post_actions
+        receiver = "joe.average@example.com"
+        self.atp.report_email = receiver
+        assert len(self.atp.post_actions) == 1
+        action, items = self.atp.post_actions[0]
+        items = dict(items)
+        assert action == "SendEmailAction"
+        assert items["to"] == receiver
+    
+    def test_post_actions_ats3_report_only(self):
+        """ Testing the ats3 report only post-action. """        
+        file_store = path("path/to/files")
+        self.atp.file_store = file_store
+        self.atp.harness = "EUNIT"
+        assert len(self.atp.post_actions) == 2
+        action, items = self.atp.post_actions[0]
+        items = dict(items)
+        assert action == "FileStoreAction"
+        assert items["report-type"] == "ATS3_REPORT"
+        assert items["to-folder"].startswith(file_store)
+        assert items["to-folder"].endswith("ATS3_REPORT")
+    
+    def test_post_actions_stif(self):
+        """ Testing STIF post-actions. """        
+        file_store = path("path/to/files")
+        self.atp.file_store = file_store
+        assert len(self.atp.post_actions) == 2
+        action, items = self.atp.post_actions[1]
+        items = dict(items)
+        assert action == "FileStoreAction"
+        assert items["report-type"] == "STIF_COMPONENT_REPORT_ALL_CASES"
+        assert items["to-folder"].startswith(file_store)
+        assert items["to-folder"].endswith("STIF_REPORT")
+        
+    def test_post_actions_diamonds(self):
+        """ Testing Diamonds post-actions. """        
+        self.atp.diamonds_build_url = "http://diamonds.nmp.company.com/diamonds/builds/1234"
+        assert len(self.atp.post_actions) == 1
+        action, items = self.atp.post_actions[0]
+        assert action == "DiamondsAction"
+        assert not items
+
+
+class TestComponentParser(mocker.MockerTestCase):
+    """ Testing the Ats3ComponentParser component parser. """
+    
+    def __init__(self, methodName="runTest"):
+        mocker.MockerTestCase.__init__(self, methodName)
+    
+    def assert_paths(self, path1, path2):
+        """ Checking the path. Validates that path1 and path2 are instance of path and they are equals. """
+        if not isinstance(path1, path):
+            path1 = path(path1)
+        if not isinstance(path2, path):
+            path2 = path(path2)            
+        return self.assertEqual(path1.normpath(), path2.normpath())
+    
+    def setUp(self):
+        """ Setting up TestComponentParser testsuite."""
+        opts = Bunch(build_drive=path(TEST_PATH+os.sep), target_platform="target platform", eunitexerunner_flags="/E S60AppEnv /R Off",
+                     data_dir=["data"], flash_images=[], sis_files=[], test_timeout="60", harness="STIF", trace_enabled="True", specific_pkg='')
+        self.acp = atc.Ats3ComponentParser(opts)
+        self.acp.tsrc_dir = TSRC
+      
+    def test_detect_dlls(self):
+        """ Testing dlls detection. """
+        open(os.path.join(TEST_PATH, 'lib1.dll'), 'w').close()
+        os.makedirs(os.path.join(TEST_PATH, 'path', 'to', 'another'))
+        open(os.path.join(TEST_PATH, 'path', 'to', 'another', 'library.dll'), 'w').close()
+        open(os.path.join(TEST_PATH, 'lib2.dll'), 'w').close()
+        
+        # Setup mock objects.
+        process = self.mocker.mock()
+        process.communicate()
+        self.mocker.result(["lib1.dll\npath/to/another/library.dll\nsome/other/file.txt\nlib2.dll\nlib3.dll\n"])
+        obj = self.mocker.replace("subprocess.Popen")
+        
+        if os.environ.has_key("SBS_HOME"):
+            obj("sbs --what -c target_platform.test", shell=True, stdout=subprocess.PIPE)
+        else:
+            obj("abld -w test build target platform", shell=True, stdout=subprocess.PIPE)
+        self.mocker.result(process)
+        
+        self.mocker.replay()
+        
+        self.assertEqual([u"lib1.dll", u"library.dll", u"lib2.dll"],
+                         [dll.name for dll in self.acp.tsrc_dll_files()])
+
+    def test_harness(self):
+        """ Detect test harness."""
+        mmp_parser = parser.MmpFileParser()
+        group = TSRC.joinpath("group")
+        for harness, mmp in [
+            ("STIF", group / "stif.mmp"),
+            ("EUNIT", group / "eunit.mmp"),
+            ("STIF", group / "both.mmp"),
+            ]:
+            self.assertEqual(harness, mmp_parser.get_harness(mmp))
+
+class TestXMLGeneration(mocker.MockerTestCase):
+    """
+    Unit tests for the test.xml generation.
+    """
+    def __init__(self, methodName="runTest"):
+        mocker.MockerTestCase.__init__(self, methodName)
+        self.data_files = None
+        self.config_files = None
+        self.testmodule_files = None
+        self.image_files = None
+        self.engine_ini_file = None
+        self.report_email = None
+        self.file_store = None
+        self.diamonds_build_url = None
+        self.test_harness = None
+        self.src_dst = []
+        self.trace_enabled = None
+        self.pmd_files = None
+        self.trace_activation_files = None
+        self.ctc_enabled = None
+        self.eunitexerunner_flags = None
+        self.test_plan = None
+        self.gen = None
+        self.custom_dir = None
+        self.diamonds_id = None
+        self.drop_count = None
+        self.ctc_test_data = None
+        self.ctc_network = None
+        self.drop_id = None
+        self.ctc_run_process_params = None
+        self.component_path = None
+
+    def generate_xml(self, trace_enabled="False"):
+        """ Generating the XML. """
+        def files(*paths):
+            """creating tsrc path list"""
+            return [TEST_PATH.joinpath("tsrc", tpath) for tpath in paths]
+        self.testmodule_files = files("testmodules/file1.dll", "testmodules/file2.dll")
+        self.data_files = files("data/file1", "data/file2", "data/file3")
+        self.config_files = files("conf/file1.cfg", "conf/file2.cfg")
+        self.image_files = files("output/images/file1.fpsx", "output/images/file2.fpsx")
+        self.engine_ini_file = files("init/TestFramework.ini")[0]
+        self.report_email = "test.receiver@company.com"
+        self.file_store = path(r"path/to/reports")
+        self.diamonds_build_url = "http://diamonds.nmp.company.com/diamonds/builds/1234"
+        self.test_harness = "STIF"        
+        self.src_dst = []
+        self.trace_enabled = trace_enabled
+        self.pmd_files = TEST_FILES["pmd_file"]
+        self.trace_activation_files = files("trace_init/trace_activation_1.xml")
+        self.ctc_enabled = "True"
+        self.eunitexerunner_flags = "/E S60AppEnv /R Off"
+        self.custom_dir = "CustomB"
+        self.component_path = str(TEST_PATH.joinpath("tsrc", "group"))
+        self.ctc_run_process_params = r"10.0.0.1#x:\ats\drop0.zip#1"
+        
+        self.ctc_network = self.ctc_run_process_params.rsplit("#", 2)[0]
+        self.drop_id = re.findall(".*drop(\d*).zip.*", self.ctc_run_process_params.lower())[0] #extracting int part of drop name
+        self.drop_count = self.ctc_run_process_params.rsplit("#", 1)[1]
+        self.diamonds_id = self.diamonds_build_url.rsplit(r"/", 1)[1]
+
+        self.mocker.restore()
+        test_plan = self.mocker.mock(count=False)
+        mocker.expect(test_plan["testrun_name"]).result("test")
+        mocker.expect(test_plan["harness"]).result("STIF")
+        mocker.expect(test_plan["device_type"]).result("product")
+        mocker.expect(test_plan["plan_name"]).result("test plan")
+        mocker.expect(test_plan["diamonds_build_url"]).result(self.diamonds_build_url)
+        mocker.expect(test_plan["test_timeout"]).result("60")
+        mocker.expect(test_plan["eunitexerunner_flags"]).result("/E S60AppEnv /R Off")
+        mocker.expect(test_plan["device_hwid"]).result("5425")
+        mocker.expect(test_plan["custom_dir"]).result("custom")
+        mocker.expect(test_plan.custom_dir).result(path(r"self.custom_dir"))
+        
+        mocker.expect(test_plan["ctc_run_process_params"]).result(self.ctc_run_process_params)
+                
+        if self.trace_enabled.lower() == "true":
+            mocker.expect(test_plan["trace_enabled"]).result("True")
+        else:
+            mocker.expect(test_plan["trace_enabled"]).result("False")
+        if self.trace_enabled == "False":
+            mocker.expect(test_plan.sets).result([
+                dict(name="set0", image_files=self.image_files, data_files=self.data_files,
+                     config_files=self.config_files, testmodule_files=self.testmodule_files,
+                     engine_ini_file=self.engine_ini_file, test_harness="STIF", src_dst=self.src_dst,
+                     ctc_enabled=self.ctc_enabled, eunitexerunner_flags=self.eunitexerunner_flags,
+                     custom_dir=self.custom_dir, component_path=self.component_path),
+                dict(name="set1", image_files=self.image_files, data_files=self.data_files,
+                     config_files=self.config_files, testmodule_files=self.testmodule_files,
+                     engine_ini_file=self.engine_ini_file,test_harness="STIF", src_dst=self.src_dst,
+                     ctc_enabled=self.ctc_enabled, eunitexerunner_flags=self.eunitexerunner_flags,
+                     custom_dir=self.custom_dir, component_path=self.component_path),
+            ])
+        elif self.trace_enabled == "True":
+            mocker.expect(test_plan.sets).result([
+                dict(name="set0", image_files=self.image_files, data_files=self.data_files,
+                     config_files=self.config_files, testmodule_files=self.testmodule_files,
+                     engine_ini_file=self.engine_ini_file, test_harness="STIF", src_dst=self.src_dst,
+                     pmd_files=self.pmd_files, trace_activation_files=self.trace_activation_files,
+                     trace_path=self.file_store.joinpath("traces", "set0", "tracelog.blx"),
+                     ctc_enabled=self.ctc_enabled, eunitexerunner_flags=self.eunitexerunner_flags, component_path=self.component_path, custom_dir=None),
+                dict(name="set1", image_files=self.image_files, data_files=self.data_files,
+                     config_files=self.config_files, testmodule_files=self.testmodule_files,
+                     engine_ini_file=self.engine_ini_file,test_harness="STIF", src_dst=self.src_dst,
+                     pmd_files=self.pmd_files, trace_activation_files=self.trace_activation_files,
+                     trace_path=self.file_store.joinpath("traces", "set1", "tracelog.blx"),
+                     ctc_enabled=self.ctc_enabled, eunitexerunner_flags=self.eunitexerunner_flags, component_path=self.component_path, custom_dir=None),
+            ])
+
+        ctc_file_name = "catsctc2html/catsctc2html.exe"
+        ctc_data_path = str(os.path.normpath(r"\\%s\ctc_helium\%s\drop0\set0\ctcdata" % (self.ctc_network, self.diamonds_id)))
+        mon_files = str(os.path.normpath(r"\\%s\ctc_helium\%s\mon_syms\1\MON.sym" % (self.ctc_network, self.diamonds_id)))
+        self.ctc_test_data = [ctc_file_name, self.ctc_network, self.drop_id, self.drop_count, self.diamonds_id, ctc_data_path, mon_files] 
+        
+        mocker.expect(test_plan.post_actions).result([
+            ("RunProcessAction", (("file", ctc_file_name ),
+                                  ("parameters", r"--ctcdata_files=" + ctc_data_path + " --monsym_files=" + mon_files + " --diamonds_build_id=" + self.diamonds_id + " --drop_id=" + self.drop_id + " --total_amount_of_drops=" + self.drop_count ))),
+            ("SendEmailAction", (("subject", "email subject"),
+                                 ("type", "ATS3_REPORT"),
+                                 ("send-files", "true"),
+                                 ("to", self.report_email))),
+            ("FileStoreAction", (("to-folder", self.file_store),
+                                 ("report-type", "ATS_REPORT"),
+                                 ("date-format", "yyyyMMdd"),
+                                 ("time-format", "HHmmss"))),
+            ("FileStoreAction", (("to-folder", self.file_store),
+                                 ("report-type", "STIF_COMPONENT_REPORT_ALL_CASES"),
+                                 ("run-log", "true"),
+                                 ("date-format", "yyyyMMdd"),
+                                 ("time-format", "HHmmss"))),
+            ("DiamondsAction", ())
+        ])
+        
+        self.mocker.replay()
+        self.test_plan = test_plan
+        
+        self.gen = adg.Ats3TestDropGenerator()
+        return self.gen.generate_xml(test_plan)
+
+    def test_basic_structure(self):
+        """ Check that the overall test.xml structure is valid. """
+        xml = self.generate_xml()
+        # Check basics.
+        assert xml.find(".").tag == "test"
+        assert xml.find("./name").text == "test"
+        assert xml.find("./buildid").text == self.diamonds_build_url
+        assert xml.find("./target").tag
+        assert xml.find("./target/device").tag
+        harness, type_, device_hwid = xml.findall("./target/device/property")
+        assert harness.get("value") == "STIF"
+        assert type_.get("value") == "product"
+        assert device_hwid.get("value") == "5425"
+        
+        # Check generation of the test plan.
+        assert xml.find("./plan").get("name") == "test Plan"
+        assert xml.find("./plan/session").tag 
+        sets = xml.findall("./plan/session/set")
+        assert len(sets) == 2
+        assert sets[0].get("name") == "set0-"+str(TEST_PATH.joinpath("tsrc", "group"))
+        assert sets[0].find("./target/device").tag
+    
+    def test_set_structure(self):
+        """ Check that a <set> element's structure is valid. """
+        xml = self.generate_xml()
+        tstset = xml.find("./plan/session/set")
+        assert tstset.tag
+        case = tstset.find("./case")
+        assert case.tag
+        assert case.get("name") == "set0 case"
+        
+    def test_case_flash_elems(self):
+        """ Test case flash elems. """
+        xml = self.generate_xml()
+        case = xml.find("./plan/session/set/case")
+        flashes = case.findall("./flash")
+        assert len(flashes) == len(self.image_files)
+        for i, flash_file in enumerate(self.image_files):
+            assert flashes[i].get("target-alias") == "DEFAULT_STIF"
+            assert flashes[i].get("images") == path(r"ATS3Drop" + os.sep + "images") / flash_file.name
+        
+    def test_case_steps(self):
+        """ Test case steps. """
+        xml = self.generate_xml()
+        steps = iter(xml.findall("./plan/session/set/case/step"))
+        check_ctc_start(steps)
+        check_log_dir(steps)
+        self.check_install_data(steps)
+        self.check_install_configuration(steps)
+        self.check_install_tmodules(steps)
+        self.check_install_engine_ini(steps)
+        self.check_run_cases(steps)
+        check_ctc_write(steps)
+        check_ctc_log(steps)
+        check_fetch_logs(steps)
+
+    def check_install_data(self, steps):
+        """ Test install data. """
+        for filename in self.data_files:
+            step = steps.next()
+            assert step.get("name") == "Install data: %s" % filename.name
+            assert step.findtext("./command") == "install"
+            params = step.findall("./params/param")            
+            src = params[0].get("src")
+            assert src.name == filename.name
+            assert src.parent == path(r"ATS3Drop" + os.sep + "set0" + os.sep + "data")            
+            dst = params[1].get("dst")
+            assert dst.name == filename.name
+            assert dst.parent == path(r"e:\testing\data")
+    
+    def check_install_configuration(self, steps):
+        """ Test install configuration. """
+        for filepath in self.config_files:
+            step = steps.next()
+            assert step.get("name") == "Install conf: %s" % filepath.name
+            assert step.findtext("./command") == "install"
+            params = step.findall("./params/param")
+            assert params[0].get("src") == path(r"ATS3Drop" + os.sep + "set0" + os.sep + "conf") / filepath.name
+            assert params[1].get("dst") == path(r"e:\testing\conf") / filepath.name
+
+    def check_install_tmodules(self, steps):
+        """ Test install tmodules. """
+        for filepath in self.testmodule_files:
+            step = steps.next()
+            assert step.get("name") == "Install testmodule: %s" % filepath.name
+            assert step.findtext("./command") == "install"
+            params = step.findall("./params/param")
+            assert params[0].get("src") == path(r"ATS3Drop" + os.sep + "set0" + os.sep + "testmodules") / filepath.name
+            assert params[1].get("dst") == path(r"c:\sys\bin") / filepath.name            
+    
+    def check_install_engine_ini(self, steps):
+        """ Test install engine ini. """
+        filepath = self.engine_ini_file
+        step = steps.next()
+        assert step.get("name") == "Install engine_ini: %s" % filepath.name
+        assert step.findtext("./command") == "install"
+        params = step.findall("./params/param")
+        assert params[0].get("src") == path(r"ATS3Drop" + os.sep + "set0" + os.sep + "init") / filepath.name
+        assert params[1].get("dst") == path(r"c:" + os.sep + "testframework") / filepath.name
+    
+    def check_run_cases(self, steps):
+        """ Test run cases. """
+        step = steps.next()
+        filepath = self.engine_ini_file
+        assert step.get("name") == "Execute test: %s" % filepath.name
+        assert step.findtext("./command") == "run-cases"
+        params = step.findall("./params/param")
+        assert params[0].get("filter") == "*"
+        assert params[1].get("timeout") == "60"
+        assert params[2].get("engineini") == path(r"c:" + os.sep + "testframework") / self.engine_ini_file.name
+
+    def test_steps_trace_enabled(self):
+        """ Test steps trace enabled. """
+        xml = self.generate_xml(trace_enabled="True")
+        steps = iter(xml.findall("./plan/session/set/case/step"))
+        check_ctc_start(steps)
+        check_log_dir(steps)
+        self.check_install_data(steps)
+        self.check_install_configuration(steps)
+        self.check_install_tmodules(steps)
+        self.check_install_engine_ini(steps)
+        check_trace_start(steps, self.file_store)
+        self.check_run_cases(steps)
+        check_trace_end_steps(steps, self.file_store)
+        check_ctc_write(steps)
+        check_ctc_log(steps)
+        check_fetch_logs(steps) 
+    
+    def test_post_actions(self):
+        """ Post actions are inserted into XML. """
+        xml = self.generate_xml()        
+        post_actions = xml.findall("./postAction")
+        check_ctc_run_process_action(post_actions[0])
+        check_send_email_action(post_actions[1], self.report_email)
+        check_ats_report_action(post_actions[2], self.file_store)
+        check_stif_report_action(post_actions[3], self.file_store)
+        check_diamonds_action(post_actions[4])
+    
+    def test_files(self):
+        """ Testing files. """
+        xml = self.generate_xml()
+        files = iter(xml.findall("./files/file"))
+        assert files.next().text == r"ATS3Drop" + os.sep + "images" + os.sep + "file1.fpsx"
+        assert files.next().text == r"ATS3Drop" + os.sep + "images" + os.sep + "file2.fpsx"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "data" + os.sep + "file1"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "data" + os.sep + "file2"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "data" + os.sep + "file3"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "conf" + os.sep + "file1.cfg"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "conf" + os.sep + "file2.cfg"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "testmodules" + os.sep + "file1.dll"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "testmodules" + os.sep + "file2.dll"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "init" + os.sep + "TestFramework.ini"        
+        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "data" + os.sep + "file1"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "data" + os.sep + "file2"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "data" + os.sep + "file3"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "conf" + os.sep + "file1.cfg"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "conf" + os.sep + "file2.cfg"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "testmodules" + os.sep + "file1.dll"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "testmodules" + os.sep + "file2.dll"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "init" + os.sep + "TestFramework.ini"        
+        self.assertRaises(StopIteration, files.next)
+        xml = self.generate_xml(trace_enabled="True")
+        files = iter(xml.findall("./files/file"))
+        assert files.next().text == r"ATS3Drop" + os.sep + "images" + os.sep + "file1.fpsx"
+        assert files.next().text == r"ATS3Drop" + os.sep + "images" + os.sep + "file2.fpsx"
+        assert files.next().text == r"ATS3Drop" + os.sep + "pmds" + os.sep + "pmd_file.pmd"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "data" + os.sep + "file1"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "data" + os.sep + "file2"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "data" + os.sep + "file3"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "conf" + os.sep + "file1.cfg"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "conf" + os.sep + "file2.cfg"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "testmodules" + os.sep + "file1.dll"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "testmodules" + os.sep + "file2.dll"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "init" + os.sep + "TestFramework.ini"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "trace_init" + os.sep + "trace_activation_1.xml"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "data" + os.sep + "file1"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "data" + os.sep + "file2"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "data" + os.sep + "file3"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "conf" + os.sep + "file1.cfg"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "conf" + os.sep + "file2.cfg"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "testmodules" + os.sep + "file1.dll"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "testmodules" + os.sep + "file2.dll"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "init" + os.sep + "TestFramework.ini"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "trace_init" + os.sep + "trace_activation_1.xml"        
+        self.assertRaises(StopIteration, files.next)
+        
+    def test_generate_drop(self):
+        """ Manifest for ATS3Drop directory structure is generated. """
+        xml = self.generate_xml()
+        strbuffer = StringIO()
+        
+        self.gen.generate_drop(self.test_plan, xml, strbuffer)
+        zfile = zipfile.ZipFile(strbuffer, "r")
+        try:
+            contents = sorted(path(tpath).normpath() for tpath in zfile.namelist())
+            expected = sorted(path(tpath).normpath()
+                           for tpath in [r"ATS3Drop" + os.sep + "set0" + os.sep + "conf" + os.sep + "file1.cfg",
+                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "conf" + os.sep + "file2.cfg",
+                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "data" + os.sep + "file1",
+                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "data" + os.sep + "file2",
+                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "data" + os.sep + "file3",
+                                     r"ATS3Drop" + os.sep + "images" + os.sep + "file1.fpsx",
+                                     r"ATS3Drop" + os.sep + "images" + os.sep + "file2.fpsx",
+                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "init" + os.sep + "TestFramework.ini",
+                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "testmodules" + os.sep + "file1.dll",
+                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "testmodules" + os.sep + "file2.dll",
+                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "conf" + os.sep + "file1.cfg",
+                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "conf" + os.sep + "file2.cfg",
+                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "data" + os.sep + "file1",
+                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "data" + os.sep + "file2",
+                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "data" + os.sep + "file3",
+                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "init" + os.sep + "TestFramework.ini",
+                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "testmodules" + os.sep + "file1.dll",
+                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "testmodules" + os.sep + "file2.dll",
+                                     r"test.xml"])
+            diff = difflib.context_diff(expected, contents)
+            assert contents == expected, "\n".join(diff)
+        finally:
+            zfile.close()
+
+    def test_generate_drop_trace (self):
+        "Manifest for ATS3Drop directory structure is generated when trace enabled."
+        xml = self.generate_xml(trace_enabled="True")
+        strbuffer = StringIO()
+        
+        self.gen.generate_drop(self.test_plan, xml, strbuffer)
+        zfile = zipfile.ZipFile(strbuffer, "r")
+        try:
+            contents = sorted(path(tpath).normpath() for tpath in zfile.namelist())
+            expected = sorted(path(tpath).normpath()
+                           for tpath in [r"ATS3Drop" + os.sep + "set0" + os.sep + "conf" + os.sep + "file1.cfg",
+                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "conf" + os.sep + "file2.cfg",
+                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "data" + os.sep + "file1",
+                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "data" + os.sep + "file2",
+                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "data" + os.sep + "file3",
+                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "trace_init" + os.sep + "trace_activation_1.xml",
+                                     r"ATS3Drop" + os.sep + "images" + os.sep + "file1.fpsx",
+                                     r"ATS3Drop" + os.sep + "images" + os.sep + "file2.fpsx",
+                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "init" + os.sep + "TestFramework.ini",
+                                     r"ATS3Drop" + os.sep + "pmds" + os.sep + "pmd_file.pmd",
+                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "testmodules" + os.sep + "file1.dll",
+                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "testmodules" + os.sep + "file2.dll",
+                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "conf" + os.sep + "file1.cfg",
+                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "conf" + os.sep + "file2.cfg",
+                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "data" + os.sep + "file1",
+                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "data" + os.sep + "file2",
+                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "data" + os.sep + "file3",
+                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "trace_init" + os.sep + "trace_activation_1.xml",
+                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "init" + os.sep + "TestFramework.ini",
+                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "testmodules" + os.sep + "file1.dll",
+                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "testmodules" + os.sep + "file2.dll",
+                                     r"test.xml"])
+            diff = difflib.context_diff(expected, contents)
+            assert contents == expected, "\n".join(diff)
+        finally:
+            zfile.close()
+
+
+class TestXMLGenerationWithPKG(mocker.MockerTestCase):
+    """
+    Unit tests for the test.xml generation.
+    """
+    def __init__(self, methodName="runTest"):
+        mocker.MockerTestCase.__init__(self, methodName)
+        self.src_dst1 = []
+        self.data_files = None
+        self.config_files = None
+        self.testmodule_files = None
+        self.image_files = None
+        self.engine_ini_file = None
+        self.report_email = None
+        self.file_store = None
+        self.diamonds_build_url = None
+        self.trace_enabled = None
+        self.pmd_files = None
+        self.trace_activation_files = None
+        self.ctc_enabled = None
+        self.eunitexerunner_flags = None
+        self.test_plan = None
+        self.gen = None
+        self.src_dst0 = []
+        self.custom_dir = None
+        self.component_path = None
+        self.custom_files = None
+        self.ctc_run_process_params = None
+        
+    def generate_xml(self, harness, trace_enabled="False"):
+        """Generates XML"""
+        def files(*paths):
+            """generates paths for the files"""
+            return [TEST_PATH.joinpath("tsrc", tpath) for tpath in paths]
+        self.src_dst1 = []
+        self.data_files = files("data/file1", "data/file2", "data/file3")
+        self.config_files = files("conf/file1.cfg", "conf/file2.cfg")
+        self.testmodule_files = files("testmodules/file1.dll", "testmodules/file2.dll")
+        self.image_files = files("output/images/file1.fpsx", "output/images/file2.fpsx")
+        self.engine_ini_file = files("init/TestFramework.ini")[0]
+        self.report_email = "test.receiver@company.com"
+        self.file_store = path("path/to/reports")
+        self.diamonds_build_url = "http://diamonds.nmp.company.com/diamonds/builds/1234"
+        self.trace_enabled = trace_enabled
+        self.pmd_files = TEST_FILES["pmd_file"]
+        self.trace_activation_files = files("trace_init/trace_activation_1.xml")
+        self.ctc_enabled = "True"
+        self.eunitexerunner_flags = "/E S60AppEnv /R Off"
+        self.custom_dir = "custom"
+        self.custom_files = files("custom/postpostaction.xml", "custom/prepostaction.xml")
+        self.component_path = str(TEST_PATH.joinpath("tsrc", "group"))
+        self.ctc_run_process_params = r"10.0.0.1#drop0.zip#1"
+        
+        
+        self.src_dst0 = [
+            (TEST_PATH.joinpath(r"tsrc" + os.sep + "testmodules" + os.sep + "file1.dll"), path(r"c:" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1.dll"), "testmodule"),
+            (TEST_PATH.joinpath(r"tsrc" + os.sep + "testmodules" + os.sep + "file2.dll"), path(r"c:" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2.dll"), "testmodule"),
+            (TEST_PATH.joinpath(r"tsrc" + os.sep + "data" + os.sep + "file1"), path(r"e:" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1"), "data"),
+            (TEST_PATH.joinpath(r"tsrc" + os.sep + "data" + os.sep + "file2"), path(r"e:" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2"), "data"),
+            (TEST_PATH.joinpath(r"tsrc" + os.sep + "data" + os.sep + "file3"), path(r"e:" + os.sep + "sys" + os.sep + "bin" + os.sep + "file3"), "data"),
+            ]
+        if harness == "STIF" or harness == "MULTI_HARNESS":
+            harness0 = harness1 = "STIF"
+            if "MULTI_HARNESS" in harness:
+                harness1 = "EUNIT"
+                self.src_dst1 = [
+                    (TEST_PATH.joinpath(r"tsrc" + os.sep + "testmodules" + os.sep + "file1.dll"), path(r"c:" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1.dll"), "testmodule"),
+                    (TEST_PATH.joinpath(r"tsrc" + os.sep + "testmodules" + os.sep + "file2.dll"), path(r"c:" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2.dll"), "testmodule"),
+                    (TEST_PATH.joinpath(r"tsrc" + os.sep + "data" + os.sep + "file1"), path(r"e:" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1"), "data"),
+                    (TEST_PATH.joinpath(r"tsrc" + os.sep + "data" + os.sep + "file2"), path(r"e:" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2"), "data"),
+                    (TEST_PATH.joinpath(r"tsrc" + os.sep + "data" + os.sep + "file3"), path(r"e:" + os.sep + "sys" + os.sep + "bin" + os.sep + "file3"), "data"),
+                    ] 
+            self.src_dst0 = [
+                (TEST_PATH.joinpath(r"tsrc" + os.sep + "testmodules" + os.sep + "file1.dll"), path(r"c:" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1.dll"), "testmodule"),
+                (TEST_PATH.joinpath(r"tsrc" + os.sep + "testmodules" + os.sep + "file2.dll"), path(r"c:" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2.dll"), "testmodule"),
+                (TEST_PATH.joinpath(r"tsrc" + os.sep + "data" + os.sep + "file1"), path(r"e:" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1"), "data"),
+                (TEST_PATH.joinpath(r"tsrc" + os.sep + "data" + os.sep + "file2"), path(r"e:" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2"), "data"),
+                (TEST_PATH.joinpath(r"tsrc" + os.sep + "data" + os.sep + "file3"), path(r"e:" + os.sep + "sys" + os.sep + "bin" + os.sep + "file3"), "data"),
+                (TEST_PATH.joinpath(r"tsrc" + os.sep + "conf" + os.sep + "file1.cfg"), path(r"c:" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1.cfg"), "conf"),
+                (TEST_PATH.joinpath(r"tsrc" + os.sep + "conf" + os.sep + "file2.cfg"), path(r"c:" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2.cfg"), "conf"),
+                (TEST_PATH.joinpath(r"tsrc" + os.sep + "init" + os.sep + "TestFramework.ini"), path(r"c:" + os.sep + "sys" + os.sep + "bin" + os.sep + "TestFramework.ini"), "engine_ini"),
+                ]
+            if "STIF" in harness:
+                self.src_dst1 = self.src_dst0
+            
+        elif harness == "EUNIT":
+            harness0 = harness1 = harness
+            self.src_dst1 = self.src_dst0
+            
+        self.mocker.restore()
+        test_plan = self.mocker.mock(count=False)
+        mocker.expect(test_plan["testrun_name"]).result("test")
+        mocker.expect(test_plan["harness"]).result(harness)
+        mocker.expect(test_plan["device_type"]).result("product")
+        mocker.expect(test_plan["plan_name"]).result("test plan")
+        mocker.expect(test_plan["diamonds_build_url"]).result(self.diamonds_build_url)
+        mocker.expect(test_plan["test_timeout"]).result("60")
+        mocker.expect(test_plan["eunitexerunner_flags"]).result("/E S60AppEnv /R Off")
+        mocker.expect(test_plan["eunitexerunner?flags"]).result(self.eunitexerunner_flags)
+        mocker.expect(test_plan["device_hwid"]).result("5425")
+        mocker.expect(test_plan["trace_enabled"]).result(self.trace_enabled)
+        mocker.expect(test_plan["ctc_enabled"]).result(self.ctc_enabled)
+        mocker.expect(test_plan["custom_dir"]).result("custom1A")
+        mocker.expect(test_plan.custom_dir).result(path(r"self.custom_dir"))
+        mocker.expect(test_plan["ctc_run_process_params"]).result(self.ctc_run_process_params)
+        if self.trace_enabled == "False":
+            mocker.expect(test_plan.sets).result([
+                dict(name="set0", image_files=self.image_files, data_files=self.data_files,
+                     config_files=self.config_files, testmodule_files=self.testmodule_files,
+                     engine_ini_file=self.engine_ini_file, test_harness=harness0,src_dst=self.src_dst0,
+                     ctc_enabled=self.ctc_enabled, eunitexerunner_flags=self.eunitexerunner_flags,
+                     custom_dir = self.custom_dir, component_path=self.component_path),
+                dict(name="set1", image_files=self.image_files, data_files=self.data_files,
+                     config_files=self.config_files, testmodule_files=self.testmodule_files,
+                     engine_ini_file=self.engine_ini_file, test_harness=harness1, src_dst=self.src_dst1,
+                     ctc_enabled=self.ctc_enabled, eunitexerunner_flags=self.eunitexerunner_flags,
+                     custom_dir = self.custom_dir, component_path=self.component_path),
+            ])
+        else:
+            mocker.expect(test_plan.sets).result([
+                dict(name="set0", image_files=self.image_files, data_files=self.data_files,
+                     config_files=self.config_files, testmodule_files=self.testmodule_files,
+                     engine_ini_file=self.engine_ini_file, test_harness=harness0, src_dst=self.src_dst0,
+                     pmd_files=self.pmd_files, trace_activation_files=self.trace_activation_files,
+                     trace_path=self.file_store.joinpath("traces", "set0", "tracelog.blx"),
+                     ctc_enabled=self.ctc_enabled, eunitexerunner_flags=self.eunitexerunner_flags,
+                     custom_dir = self.custom_dir, component_path=self.component_path),
+                dict(name="set1", image_files=self.image_files, data_files=self.data_files,
+                     config_files=self.config_files, testmodule_files=self.testmodule_files,
+                     engine_ini_file=self.engine_ini_file, test_harness=harness1, src_dst=self.src_dst1,
+                     pmd_files=self.pmd_files, trace_activation_files=self.trace_activation_files,
+                     trace_path=self.file_store.joinpath("traces", "set1", "tracelog.blx"),
+                     ctc_enabled=self.ctc_enabled, eunitexerunner_flags=self.eunitexerunner_flags,
+                     custom_dir = self.custom_dir, component_path=self.component_path),
+            ])
+        mocker.expect(test_plan.post_actions).result([
+            ("SendEmailAction", (("subject", "email subject"),
+                                 ("type", "ATS3_REPORT"),
+                                 ("send-files", "true"),
+                                 ("to", self.report_email))),
+            ("FileStoreAction", (("to-folder", self.file_store),
+                                 ("report-type", "ATS_REPORT"),
+                                 ("date-format", "yyyyMMdd"),
+                                 ("time-format", "HHmmss"))),
+            ("FileStoreAction", (("to-folder", self.file_store),
+                                 ("report-type", "STIF_COMPONENT_REPORT_ALL_CASES"),
+                                 ("run-log", "true"),
+                                 ("date-format", "yyyyMMdd"),
+                                 ("time-format", "HHmmss"))),
+            ("DiamondsAction", ())
+        ])
+        
+        self.mocker.replay()
+        self.test_plan = test_plan
+        
+        self.gen = adg.Ats3TestDropGenerator()
+        return self.gen.generate_xml(test_plan)
+
+    def test_basic_structure(self):
+        "Check that the overall test.xml structure is valid."
+        
+        test_harness = ["STIF", "EUNIT", "MULTI_HARNESS"]
+        
+        for thar in test_harness:
+            xml = self.generate_xml(thar)
+            # Check basics.
+            assert xml.find(".").tag == "test"
+            assert xml.find("./name").text == "test"
+            assert xml.find("./buildid").text == self.diamonds_build_url
+            assert xml.find("./target").tag
+            assert xml.find("./target/device").tag
+            if self.test_plan["harness"] == "MULTI_HARNESS":
+                harness_1, type_1, device_hwid_1, harness_2, type_2, device_hwid_2 = xml.findall("./target/device/property")
+            else:
+                harness_1, type_1, device_hwid_1 = xml.findall("./target/device/property")
+            
+            if self.test_plan["harness"] == "MULTI_HARNESS":
+                assert harness_1.get("value") == "STIF"
+                assert type_1.get("value") == "product"
+                assert device_hwid_1.get("value") == "5425"
+                assert harness_2.get("value") == "EUNIT"
+                assert type_2.get("value") == "product"
+                assert device_hwid_2.get("value") == "5425"
+            else:
+                assert harness_1.get("value") == thar
+                assert type_1.get("value") == "product"
+                assert device_hwid_1.get("value") == "5425"
+
+        # Check generation of the test plan.
+        assert xml.find("./plan").get("name") == "test Plan"
+        assert xml.find("./plan/session").tag 
+        sets = xml.findall("./plan/session/set")
+        assert len(sets) == 2
+        assert sets[0].get("name") == "set0-"+str(TEST_PATH.joinpath("tsrc", "group"))
+        assert sets[0].find("./target/device").tag
+    
+    def test_set_structure(self):
+        "Check that a <set> element's structure is valid."
+        xml = self.generate_xml("STIF")
+        tstset = xml.find("./plan/session/set")
+        assert tstset.tag
+        case = tstset.find("./case")
+        assert case.tag
+        assert case.get("name") == "set0 case"
+        
+    def test_case_flash_elems(self):
+        """Checks flash target element in the test.xml file"""
+        xml = self.generate_xml("STIF")
+        case = xml.find("./plan/session/set/case")
+        flashes = case.findall("./flash")
+        assert len(flashes) == len(self.image_files)
+        for i, flash_file in enumerate(self.image_files):
+            assert flashes[i].get("target-alias") == "DEFAULT_STIF"
+            assert flashes[i].get("images") == path(r"ATS3Drop" + os.sep + "images") / flash_file.name
+        
+    def test_case_steps(self):
+        """Checks cases in steps in the test.xml file"""
+        test_harness = ["STIF", "EUNIT", "MULTI_HARNESS"]
+        for thar in test_harness:
+            xml = self.generate_xml(thar)
+            steps = iter(xml.findall("./plan/session/set/case/step"))
+            check_ctc_start(steps)
+            check_log_dir(steps)
+            if "MULTI_HARNESS" in thar:            
+                self.check_install_step(steps, "STIF")
+                self.check_run_cases(steps)
+                check_ctc_write(steps)
+                check_ctc_log(steps)
+                check_fetch_logs(steps)
+                check_ctc_start(steps)
+                check_log_dir(steps)
+                self.check_install_step(steps, "EUNIT", set_count="1")
+                self.check_run_cases(steps)
+                check_ctc_write(steps)
+                check_ctc_log(steps, "withpkgfiles")
+                check_fetch_logs(steps)
+            else:
+                self.check_install_step(steps, thar)
+                self.check_run_cases(steps)
+                check_ctc_write(steps)
+                check_ctc_log(steps)
+                check_fetch_logs(steps)
+
+    def check_install_step(self, steps, harness, set_count="0"):
+        """Checks install steps in the test.xml file"""
+        if harness == "MULTI_HARNESS":
+            dst = [self.src_dst0, self.src_dst1]
+        else:
+            dst = [self.src_dst0]
+        if set_count == "1":
+            dst = [self.src_dst1]
+        
+        for dest in dst:
+            for file1 in dest:
+                step = steps.next()
+                filename = file1[1]
+                letter = filename[filename.rfind(":")-1:filename.rfind(":")]
+                filename = filename[filename.rfind(os.sep)+1:]
+                if "Install" in step.get("name"):
+                    assert step.get("name") == "Install %s: %s" %  (file1[2], filename)
+                    assert step.findtext("./command") == "install"
+                    params = step.findall("./params/param")            
+                    src = params[0].get("src")
+                    assert src.name == filename
+                    assert src.parent == path(r"ATS3Drop" + os.sep + "set" + set_count + os.sep + letter + os.sep + "sys" + os.sep + "bin")
+                    dst = params[1].get("dst")
+                    assert dst.name == filename
+                    assert dst.parent == path(letter + ":" + os.sep + "sys" + os.sep + "bin")
+            
+    
+    def check_run_cases(self, steps):
+        """Checks run cases in the test.xml file"""
+        step = steps.next()
+        if step.get("harness") == "STIF":
+            file_ = self.engine_ini_file 
+            assert step.get("name") == "Execute test: %s" % file_.name
+            assert step.findtext("./command") == "run-cases"
+            params = step.findall("./params/param")
+            assert params[0].get("filter") == "*"
+            assert params[1].get("timeout") == "60"
+            assert params[2].get("engineini") == path(r"c:" + os.sep + "sys" + os.sep + "bin") / self.engine_ini_file.name
+        elif step.get("harness") == "EUNIT":
+            file_ = self.testmodule_files[0]
+            if "Execute" in step.get("name"):
+                assert step.get("name") == "Execute test: %s" % file_.name
+                assert step.findtext("./command") == "execute"
+                params = step.findall("./params/param")
+                assert params[0].get("file") == path(r"z:" + os.sep + "sys" + os.sep + "bin" + os.sep + "EUNITEXERUNNER.EXE")
+                assert params[1].get("result-file") == path(r"c:" + os.sep + "Shared" + os.sep + "EUnit" + os.sep + "logs" + os.sep + "file1_log.xml")
+                assert params[2].get("parameters") == "/E S60AppEnv /R Off /F file1 /l xml file1.dll"
+                assert params[3].get("timeout") == "60"
+                step = steps.next()
+                file_ = self.testmodule_files[1]
+                assert step.get("name") == "Execute test: %s" % file_.name
+                assert step.findtext("./command") == "execute"
+                params = step.findall("./params/param")
+                assert params[0].get("file") == path(r"z:" + os.sep + "sys" + os.sep + "bin" + os.sep + "EUNITEXERUNNER.EXE")
+                assert params[1].get("result-file") == path(r"c:" + os.sep + "Shared" + os.sep + "EUnit" + os.sep + "logs" + os.sep + "file2_log.xml")
+                assert params[2].get("parameters") == "/E S60AppEnv /R Off /F file2 /l xml file2.dll"
+                assert params[3].get("timeout") == "60"
+
+    def test_steps_trace_enabled(self):
+        """checks if traing is enabled"""
+        test_harness = ["STIF"]
+        for thar in test_harness:
+            xml = self.generate_xml(thar, trace_enabled="True")
+            steps = iter(xml.findall("./plan/session/set/case/step"))
+            check_ctc_start(steps)
+            check_log_dir(steps)
+            self.check_install_step(steps, thar)
+            check_trace_start(steps, self.file_store)
+            self.check_run_cases(steps)
+            check_trace_end_steps(steps, self.file_store)
+            check_ctc_write(steps)
+            check_ctc_log(steps)
+            check_fetch_logs(steps)
+        
+    def test_post_actions(self):
+        "Post actions are inserted into XML."
+        xml = self.generate_xml("STIF")
+        post_actions = xml.findall("./postAction")
+        check_send_email_action(post_actions[0], self.report_email)
+        check_ats_report_action(post_actions[1], self.file_store)
+        check_stif_report_action(post_actions[2], self.file_store)
+        check_diamonds_action(post_actions[3])
+        
+    def test_files(self):
+        """Tests if the files are created for mock"""
+        xml = self.generate_xml("STIF")
+        files = iter(xml.findall("./files/file"))
+        assert files.next().text == r"ATS3Drop" + os.sep + "images" + os.sep + "file1.fpsx"
+        assert files.next().text == r"ATS3Drop" + os.sep + "images" + os.sep + "file2.fpsx"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1.dll"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2.dll"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "e" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "e" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "e" + os.sep + "sys" + os.sep + "bin" + os.sep + "file3"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1.cfg"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2.cfg"        
+        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "TestFramework.ini"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1.dll"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2.dll"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "e" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "e" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "e" + os.sep + "sys" + os.sep + "bin" + os.sep + "file3"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1.cfg"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2.cfg"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "TestFramework.ini"
+        self.assertRaises(StopIteration, files.next)
+        xml = self.generate_xml(harness="STIF", trace_enabled="True")
+        files = iter(xml.findall("./files/file"))
+        assert files.next().text == r"ATS3Drop" + os.sep + "images" + os.sep + "file1.fpsx"
+        assert files.next().text == r"ATS3Drop" + os.sep + "images" + os.sep + "file2.fpsx"
+        assert files.next().text == r"ATS3Drop" + os.sep + "pmds" + os.sep + "pmd_file.pmd"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "trace_init" + os.sep + "trace_activation_1.xml"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1.dll"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2.dll"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "e" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "e" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "e" + os.sep + "sys" + os.sep + "bin" + os.sep + "file3"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1.cfg"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2.cfg"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "TestFramework.ini"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "trace_init" + os.sep + "trace_activation_1.xml"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1.dll"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2.dll"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "e" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "e" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "e" + os.sep + "sys" + os.sep + "bin" + os.sep + "file3"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1.cfg"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2.cfg"
+        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "TestFramework.ini"
+
+        self.assertRaises(StopIteration, files.next)
+        
+    def test_generate_drop(self):
+        "Manifest for ATS3Drop directory structure is generated."        
+        xml = self.generate_xml("STIF")
+        strbuffer = StringIO()
+        self.gen.generate_drop(self.test_plan, xml, strbuffer)
+        
+        zfile = zipfile.ZipFile(strbuffer, "r")
+        try:
+            contents = sorted(path(tpath).normpath() for tpath in zfile.namelist())
+            expected = sorted(path(tpath).normpath()
+                           for tpath in [r"ATS3Drop" + os.sep + "set0" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1.cfg",
+                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2.cfg",
+                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "e" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1",
+                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "e" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2",
+                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "e" + os.sep + "sys" + os.sep + "bin" + os.sep + "file3",
+                                     r"ATS3Drop" + os.sep + "images" + os.sep + "file1.fpsx",
+                                     r"ATS3Drop" + os.sep + "images" + os.sep + "file2.fpsx",
+                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "TestFramework.ini",
+                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1.dll",
+                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2.dll",
+                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1.cfg",
+                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2.cfg",
+                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "e" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1",
+                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "e" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2",
+                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "e" + os.sep + "sys" + os.sep + "bin" + os.sep + "file3",
+                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "TestFramework.ini",
+                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1.dll",
+                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2.dll",
+                                     r"test.xml"])
+            diff = difflib.context_diff(expected, contents)
+            assert contents == expected, "\n".join(diff)
+        finally:
+            zfile.close()
+
+    def test_generate_drop_trace_enabled(self):
+        "Manifest for ATS3Drop directory structure is generated when trace enabled."
+        xml = self.generate_xml(harness="STIF", trace_enabled="True")
+        strbuffer = StringIO()
+        
+        self.gen.generate_drop(self.test_plan, xml, strbuffer)
+        zfile = zipfile.ZipFile(strbuffer, "r")
+        try:
+            contents = sorted(path(tpath).normpath() for tpath in zfile.namelist())
+            expected = sorted(path(tpath).normpath()
+                           for tpath in [r"ATS3Drop" + os.sep + "set0" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1.cfg",
+                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2.cfg",
+                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "e" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1",
+                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "e" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2",
+                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "e" + os.sep + "sys" + os.sep + "bin" + os.sep + "file3",
+                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "trace_init" + os.sep + "trace_activation_1.xml",
+                                     r"ATS3Drop" + os.sep + "images" + os.sep + "file1.fpsx",
+                                     r"ATS3Drop" + os.sep + "images" + os.sep + "file2.fpsx",
+                                     r"ATS3Drop" + os.sep + "pmds" + os.sep + "pmd_file.pmd",
+                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "TestFramework.ini",
+                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1.dll",
+                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2.dll",
+                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1.cfg",
+                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2.cfg",
+                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "e" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1",
+                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "e" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2",
+                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "e" + os.sep + "sys" + os.sep + "bin" + os.sep + "file3",
+                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "trace_init" + os.sep + "trace_activation_1.xml",
+                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "TestFramework.ini",
+                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1.dll",
+                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2.dll",
+                                     r"test.xml"])
+            diff = difflib.context_diff(expected, contents)
+            assert contents == expected, "\n".join(diff)
+        finally:
+            zfile.close()
+            
+class TestDropGenerationWithSis(mocker.MockerTestCase):
+    """
+    Unit tests for the test.xml generation with sis files.
+    """
+    def __init__(self, methodName="runTest"):
+        mocker.MockerTestCase.__init__(self, methodName)
+        self.sis_files = None
+        self.image_files = None
+        self.engine_ini_file = None
+        self.report_email = None
+        self.file_store = None
+        self.diamonds_build_url = None
+        self.harness = None
+        self.test_plan = None
+        self.gen = None
+        self.src_dst = []
+        self.ctc_run_process_params = None
+        self.component_path = None
+        
+    def generate_xml(self):
+        """Geberates XML if sis files"""
+        def files(*paths):
+            """generates paths for the files"""
+            return [TEST_PATH.joinpath("tsrc", tpath) for tpath in paths]
+        self.sis_files = files("sis/file1.sisx", "sis/file2.sisx", "sis/file3.sisx")
+        self.image_files = files("output/images/file1.fpsx", "output/images/file2.fpsx")
+        self.engine_ini_file = files("init/TestFramework.ini")[0]
+        self.report_email = "test.receiver@company.com"
+        self.file_store = path("path/to/reports")
+        self.diamonds_build_url = "http://diamonds.nmp.company.com/diamonds/builds/1234"
+        self.harness = "STIF"
+        self.component_path = str(TEST_PATH.joinpath("tsrc", "group"))
+        self.ctc_run_process_params = r"10.0.0.1#x:\ats\drop0.zip#1"
+        
+        test_plan = self.mocker.mock(count=False)
+        mocker.expect(test_plan["testrun_name"]).result("test")
+        mocker.expect(test_plan["harness"]).result("STIF")
+        mocker.expect(test_plan["device_type"]).result("product")
+        mocker.expect(test_plan["plan_name"]).result("test plan")
+        mocker.expect(test_plan["diamonds_build_url"]).result(self.diamonds_build_url)
+        mocker.expect(test_plan["test_timeout"]).result("60")
+        mocker.expect(test_plan["device_hwid"]).result("5425")
+        mocker.expect(test_plan["ctc_enabled"]).result("False")
+        mocker.expect(test_plan["trace_enabled"]).result("False")
+        mocker.expect(test_plan["custom_dir"]).result("CustomC")
+        mocker.expect(test_plan.custom_dir).result(path(r"self.custom_dir"))
+        mocker.expect(test_plan["ctc_run_process_params"]).result(self.ctc_run_process_params)
+        mocker.expect(test_plan.sets).result([
+            dict(name="set0", image_files=self.image_files, sis_files=self.sis_files,
+                 engine_ini_file=self.engine_ini_file, test_harness=self.harness, ctc_enabled="False", component_path=self.component_path, custom_dir=None),
+             ])
+        mocker.expect(test_plan.post_actions).result([])
+        self.mocker.replay()
+        self.test_plan = test_plan
+        
+        self.gen = adg.Ats3TestDropGenerator()
+        return self.gen.generate_xml(test_plan)
+
+    def test_case_steps(self):
+        """Checks cases in steps in the test.xml file"""
+        xml = self.generate_xml()
+        #print doc.xml(indent="yes")        
+        steps = iter(xml.findall("./plan/session/set/case/step"))
+        steps.next() # Stif log dir creation.
+        self.check_install_sis_files(steps)
+        steps.next() # Install engine ini.
+        self.check_install_sis_to_device(steps)
+        steps.next() # Run cases.
+        steps.next() # Fetch logs.
+        self.assertRaises(StopIteration, steps.next)
+
+    def check_install_sis_files(self, steps):
+        """Checks sis files install steps in the test.xml file"""
+        for filename in self.sis_files:
+            step = steps.next()
+            assert step.get("name") == "Install sis: %s" % filename.name
+            assert step.findtext("./command") == "install"
+            params = step.findall("./params/param")
+            # TO DO: Should sis files be specified outside of the set?
+            assert params[0].get("src") == path(r"ATS3Drop" + os.sep + "set0" + os.sep + "sis") / filename.name
+            assert params[1].get("dst") == path(r"c:" + os.sep + "testframework") / filename.name
+
+    def check_install_sis_to_device(self, steps):
+        """Checks sis files installation on the device"""
+        for filename in self.sis_files:
+            step = steps.next()
+            assert step.get("name") == "Install SIS to the device: %s" % filename.name
+            assert step.findtext("./command") == "install-software"
+            params = step.findall("./params/param")
+            assert params[-1].get("sisPackageName") == path(r"c:" + os.sep + "testframework") / filename.name
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncorecpythontests/test_ats3_aste.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,515 @@
+# -*- coding: latin-1 -*-
+
+#============================================================================ 
+#Name        : test_ats3_aste.py 
+#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:
+#===============================================================================
+
+""" Testing ATS3 ASTE framework. """
+
+# pylint: disable-msg=W0603,W0142,R0903,R0911,R0912,R0902,R0901,R0201
+# pylint: disable-msg=E1101
+#E1101 => Mocker shows mockery
+#R* remove during refactoring
+
+from cStringIO import StringIO
+from xml.etree.ElementTree import fromstring
+from xml.etree import ElementTree as et
+import difflib
+import logging
+logging.getLogger().setLevel(logging.ERROR)
+import re
+import tempfile
+import zipfile
+import os
+
+from path import path # pylint: disable-msg=F0401
+import mocker # pylint: disable-msg=F0401
+
+import ats3.aste
+
+TEST_PATH = None
+TEST_FILES = {}
+TEST_ASSET_FILES = {}
+TSRC = None
+OUTPUT = None
+TEST_ZIP_PATH = None
+
+# Shortcuts
+E = et.Element
+SE = et.SubElement
+
+_logger = logging.getLogger("test_ast3_aste")
+
+class Bunch(object):
+    """ handle the whole group of parameters input """
+    def __init__(self, **kwargs):
+        self.__dict__.update(kwargs)
+    
+
+def equal_xml(xml1, xml2):
+    """Check the equality of the given XML snippets.
+    
+    Tag name equality:
+    
+    >>> equal_xml('<a/>', '<a/>')
+    True
+    >>> equal_xml('<a/>', '<b/>')
+    False
+    
+    Attribute equality:
+    
+    >>> equal_xml('<a k="v"/>', '<a k="v"/>')
+    True
+    >>> equal_xml('<a k="v"/>', '<a k="w"/>')
+    False
+    
+    Text content equality:
+    
+    >>> equal_xml('<a>v</a>', '<a>v</a>')
+    True
+    >>> equal_xml('<a>v</a>', '<a>w</a>')
+    False
+    >>> equal_xml('<a>v</a>', '<a></a>')
+    False
+    
+    Text content equality when whitespace differs:
+    >>> equal_xml('<a>v</a>', '<a>v </a>')
+    True
+
+    Equality of child elements:
+    
+    >>> equal_xml('<a><b><c k="v"/></b></a>', '<a><b><c k="v"/></b></a>')
+    True
+    >>> equal_xml('<a><b><c k="v"/></b></a>', '<a><b><c k="w"/></b></a>')
+    False
+    >>> equal_xml('<a><b><c k="v"/>v</b></a>', '<a><b><c k="v"/>w</b></a>')
+    False
+    >>> equal_xml('<a><b><c k="v"/>v</b></a>', '<a><b><c k="v"/>v </b></a>')
+    True
+    
+    """
+    if isinstance(xml1, basestring):
+        xml1 = fromstring(xml1)
+    if isinstance(xml2, basestring):
+        xml2 = fromstring(xml2)
+    if xml1.tag != xml2.tag:
+        return False
+    if xml1.attrib != xml2.attrib:
+        return False
+    if xml1.text:
+        if not xml2.text:
+            return False
+    if xml2.text:
+        if not xml1.text:
+            return False
+    if xml1.text and xml2.text and xml1.text.strip() != xml2.text.strip():
+        return False
+    if xml1.tail is not None and xml2.tail is not None:
+        if xml1.tail.strip() != xml2.tail.strip():
+            return False
+    elif xml1.tail != xml2.tail:
+        return False
+    children1 = list(xml1.getchildren())
+    children2 = list(xml2.getchildren())
+    if len(children1) != len(children2):
+        return False
+    for child1, child2 in zip(children1, children2):
+        return equal_xml(child1, child2)
+    return True        
+
+
+def setup_module():
+    """ setup any variables needed for the tests """
+    global TEST_PATH, OUTPUT, TEST_ZIP_PATH
+    TEST_PATH = path(tempfile.mkdtemp())
+    OUTPUT = TEST_PATH.joinpath("TestAsset")
+    TEST_ZIP_PATH = TEST_PATH.joinpath("test_zip")
+    asset = TEST_PATH
+    component = TEST_PATH
+    component.joinpath("group").makedirs()
+    for path_parts in (("output", "images", "file1.fpsx"),
+                       ("output", "images", "file2.fpsx")):
+        filename = component.joinpath(*path_parts)
+        if not filename.parent.exists():
+            filename.parent.makedirs()
+        filename.touch()
+        TEST_FILES.setdefault(path_parts[1], []).append(file)
+    for path_parts in (("TestAsset", "Localisation", "S60", "localisation.txt"),
+                       ("TestAsset", "TestCases", "TC_100_Test0", "file1.sis"),
+                       ("TestAsset", "TestCases", "TC_100_Test0", "file2.tcf"),
+                       ("TestAsset", "Tools", "TestCaseCreator", "test_creator.ini"),
+                       ("TestAsset", "testdrop.xml"),):
+        filename = asset.joinpath(*path_parts)
+        if not filename.parent.exists():
+            filename.parent.makedirs()
+        filename.touch()
+        TEST_ASSET_FILES.setdefault(path_parts[1], []).append(file)
+    try:
+        zip_component = TEST_ZIP_PATH
+        filename = zip_component.joinpath("TestAsset.zip")
+        if not filename.parent.exists():
+            filename.parent.makedirs()
+        filename.touch()
+        zfile = zipfile.ZipFile(zip_component.joinpath("TestAsset.zip"), "w", zipfile.ZIP_DEFLATED)
+        for p_temp in TEST_ASSET_FILES:
+            print p_temp
+            zfile.write(p_temp)
+        zfile.close()
+        TEST_ASSET_FILES.setdefault("ZIP", []).append(file)
+    except OSError:
+        print "Got except OSError. Continuing...\n"  
+        
+    
+def teardown_module():
+    """clean up after the tests are all run"""
+    path(TEST_PATH).rmtree()
+    
+    
+class TestTestPlan(mocker.MockerTestCase):
+    """ the tests """
+    def __init__(self, methodName="runTest"):
+        mocker.MockerTestCase.__init__(self, methodName)
+             
+    def setUp(self):
+        """ setup the data """
+        opts = Bunch(testrun_name="testrun", harness="ASTE", 
+                     device_type="product", plan_name="ats3_test_plan", diamonds_build_url="",
+                     software_version="W810", software_release="SPP 51.32", device_language="English",
+                     testasset_location=TEST_PATH.joinpath("TestAsset"), testasset_caseids="100",repeat="1", report_email="",
+                     file_store=path(), test_timeout="60", device_hwid="5425", test_type="smoke")
+        self.tp_temp = ats3.aste.AsteTestPlan(opts)
+        self.image_files = TEST_FILES["images"]
+        self.test_timeout = self.tp_temp["test_timeout"]
+        self.device_hwid = self.tp_temp["device_hwid"]
+        self.test_harness = self.tp_temp["harness"]
+        self.device_language = self.tp_temp["device_language"]
+        self.software_release = self.tp_temp["software_release"]
+        self.software_version = self.tp_temp["software_version"]
+        self.testasset_caseids = self.tp_temp["testasset_caseids"]
+        self.testasset_location = self.tp_temp["testasset_location"]
+        self.test_type = self.tp_temp["test_type"]
+        
+        if self.testasset_location != "":
+            self.test_asset_testcases = [self.testasset_location.joinpath("TestCases", "TC_100_Test0", "file1.sis"), self.testasset_location.joinpath("TestCases", "TC_100_Test0", "file2.tcf")]
+            self.test_asset_tools = [self.testasset_location.joinpath("Tools", "TestCaseCreator", "test_creator.ini")]
+            self.test_asset_localisation = [self.testasset_location.joinpath("Localisation", "S60", "localisation.txt")]
+            self.test_asset_testdrop = self.testasset_location.joinpath("testdrop.xml")
+        else:
+            self.test_asset_testcases = TEST_ASSET_FILES["TestCases"]
+            self.test_asset_tools = TEST_ASSET_FILES["Tools"]
+            self.test_asset_localisation = TEST_ASSET_FILES["Localisation"]
+            self.test_asset_testdrop = TEST_ASSET_FILES["testdrop.xml"]
+
+            
+    def test_creation(self):
+        """create the tests"""
+        assert self.tp_temp["testrun_name"] == "testrun"
+        assert self.tp_temp["harness"] == "ASTE"
+        assert self.tp_temp["device_type"] == "product"
+    
+    def test_insert_set(self):
+        """test insert set"""
+        self.tp_temp.insert_set(image_files=self.image_files,
+                           test_timeout=self.test_timeout)
+        
+        assert self.tp_temp.sets[0] == dict(name="set0",
+                                       image_files=self.image_files,
+                                       test_timeout=self.test_timeout,
+                                       test_harness=self.test_harness)
+
+    def test_post_actions_email(self):
+        """ check email sent after tests"""
+        assert not self.tp_temp.post_actions
+        receiver = "joe.average@example.com"
+        self.tp_temp.report_email = receiver
+        assert len(self.tp_temp.post_actions) == 1
+        action, items = self.tp_temp.post_actions[0]
+        items = dict(items)
+        assert action == "SendEmailAction"
+        assert items["to"] == receiver
+    
+    def test_post_actions_ats3_report_only(self):
+        """ test only createing report"""
+        file_store = path("path/to/files")
+        self.tp_temp.file_store = file_store
+        self.tp_temp.harness = "EUNIT"
+        assert len(self.tp_temp.post_actions) == 2
+        action, items = self.tp_temp.post_actions[0]
+        items = dict(items)
+        assert action == "FileStoreAction"
+        assert items["report-type"] == "ATS_REPORT"
+        assert items["to-folder"].startswith(file_store)
+        assert items["to-folder"].endswith("ATS3_REPORT")
+    
+    def test_post_actions_aste(self):
+        """ test actions performed after aste test"""
+        file_store = path("path/to/files")
+        self.tp_temp.file_store = file_store
+        assert len(self.tp_temp.post_actions) == 2
+        action, items = self.tp_temp.post_actions[1]
+        items = dict(items)
+        assert action == "FileStoreAction"
+        assert items["report-type"] == "ASTE_REPORT"
+        assert items["to-folder"].startswith(file_store)
+        assert items["to-folder"].endswith("ASTE_REPORT")
+        
+    def test_post_actions_diamonds(self):
+        """test diamonds is posted to after the test"""
+        self.tp_temp.diamonds_build_url = "http://diamonds.nmp.company.com/diamonds/builds/1234"
+        assert len(self.tp_temp.post_actions) == 1
+        action, items = self.tp_temp.post_actions[0]
+        assert action == "DiamondsAction"
+        assert not items
+
+
+            
+class TestXMLGeneration(mocker.MockerTestCase):
+    """
+    Unit tests for the test.xml generation.
+    """    
+
+    def __init__(self, methodName="runTest"):
+        self.image_files = None
+        self.report_email = None
+        self.diamonds_build_url = None
+        self.test_harness = None
+        self.file_store = None
+        self.testasset_location = None
+        self.test_plan = None
+        self.gen = None
+        mocker.MockerTestCase.__init__(self, methodName)
+        
+        
+    def generate_xml(self):
+        """create the XML"""
+        def files(*paths):
+            """get a list of files held in the temp path"""
+            return [TEST_PATH.joinpath(p) for p in paths]
+        self.image_files = files("output/images/file1.fpsx", "output/images/file2.fpsx")
+        self.report_email = "test.receiver@company.com"
+        self.diamonds_build_url = "http://diamonds.nmp.company.com/diamonds/builds/1234"
+        self.test_harness = "ASTE"
+        self.file_store = path(r"path/to/reports")
+        self.testasset_location = OUTPUT
+        
+        self.mocker.restore()
+        test_plan = self.mocker.mock(count=False)
+        mocker.expect(test_plan["testrun_name"]).result("test")
+        mocker.expect(test_plan["harness"]).result("ASTE")
+        mocker.expect(test_plan["device_type"]).result("product")
+        mocker.expect(test_plan["plan_name"]).result("test plan")
+        mocker.expect(test_plan["diamonds_build_url"]).result(self.diamonds_build_url)
+        mocker.expect(test_plan["test_timeout"]).result("60")
+        mocker.expect(test_plan["device_hwid"]).result("5425")
+        mocker.expect(test_plan["testasset_location"]).result(self.testasset_location)
+        mocker.expect(test_plan["testasset_caseids"]).result("100")
+        mocker.expect(test_plan["software_release"]).result("SPP 51.32")
+        mocker.expect(test_plan["software_version"]).result("W810")
+        mocker.expect(test_plan["device_language"]).result("English")
+        mocker.expect(test_plan["test_type"]).result("smoke")
+        mocker.expect(test_plan["temp_directory"]).result(TEST_PATH)
+        mocker.expect(test_plan.sets).result([
+            dict(name="set0", image_files=self.image_files, test_harness="ASTE")])
+        mocker.expect(test_plan.post_actions).result([
+            ("SendEmailAction", (("subject", "email subject"),
+                                 ("type", "ATS3_REPORT"),
+                                 ("send-files", "true"),
+                                 ("to", self.report_email))),
+            ("FileStoreAction", (("to-folder", self.file_store),
+                                 ("report-type", "ATS_REPORT"),
+                                 ("date-format", "yyyyMMdd"),
+                                 ("time-format", "HHmmss"))),
+            ("FileStoreAction", (("to-folder", self.file_store),
+                                 ("report-type", "ASTE_REPORT"),
+                                 ("run-log", "true"),
+                                 ("date-format", "yyyyMMdd"),
+                                 ("time-format", "HHmmss"))),
+            ("DiamondsAction", ())
+        ])
+        
+        self.mocker.replay()
+        self.test_plan = test_plan
+        
+        self.gen = ats3.aste.AsteTestDropGenerator()
+        return self.gen.generate_xml(test_plan)
+
+    def test_basic_structure(self):
+        """Check that the overall test.xml structure is valid."""
+        xml = self.generate_xml()
+        # Check basics.
+        assert xml.find(".").tag == "test"
+        assert xml.find("./name").text == "test"
+        assert xml.find("./buildid").text == self.diamonds_build_url
+        assert xml.find("./target").tag
+        assert xml.find("./target/device").tag
+        harness, hardware, device_hwid = xml.findall("./target/device/property")
+        softwareVersion, softwareRelease, deviceLanguage = xml.findall("./target/device/setting")
+        assert harness.get("value") == "ASTE"
+        assert hardware.get("value") == "product"
+        assert softwareVersion.get("value") == "W810"
+        assert softwareRelease.get("value") == "SPP 51.32"
+        assert deviceLanguage.get("value") == "English"
+        assert device_hwid.get("value") == "5425"
+        
+        # Check generation of the test plan.
+        assert xml.find("./plan").get("name") == "Plan smoke product"
+        assert xml.find("./plan/session").tag 
+        sets = xml.findall("./plan/session/set")
+        assert len(sets) == 1
+        assert sets[0].get("name") == "set0"
+        assert sets[0].find("./target/device").tag
+    
+    def test_set_structure(self):
+        """Check that a <set> element's structure is valid."""
+        xml = self.generate_xml()
+        tstset = xml.find("./plan/session/set")
+        assert tstset.tag
+        case = tstset.find("./case")
+        assert case.tag
+        assert case.get("name") == "set0 case"
+        
+    def test_case_flash_elems(self):
+        """ test the flash files all added to case"""
+        xml = self.generate_xml()
+        case = xml.find("./plan/session/set/case")
+        flashes = case.findall("./flash")
+        assert len(flashes) == len(self.image_files)
+        for i, flash_file in enumerate(self.image_files):
+            assert flashes[i].get("target-alias") == "DEFAULT"
+            assert flashes[i].get("images") == path(r"ATS3Drop" + os.sep + "images") / flash_file.name
+    
+    def test_steps(self):
+        """ test the steps are executed as steps"""
+        xml = self.generate_xml()
+        steps = iter(xml.findall("./plan/session/set/case/step"))
+        self.check_executeasset_step(steps)
+
+    def check_executeasset_step(self, steps):
+        """ perform the check"""
+        step = steps.next()
+        assert step.get("name") == "Execute asset zip step"
+        assert step.findtext("./command") == "execute-asset"
+        params = step.findall("./params/param")
+        assert params[0].get("repeat") == "1"
+        assert params[1].get("asset-source") == "ATS3Drop" + os.sep + "TestAssets" + os.sep + "TestAsset.zip"
+        assert params[2].get("testcase-ids") == "100"
+
+    def test_post_actions(self):
+        """Post actions are inserted into XML."""
+        xml = self.generate_xml()        
+        post_actions = xml.findall("./postAction")
+        self.check_send_email_action(post_actions[0])
+        self.check_ats_report_action(post_actions[1])
+        self.check_aste_report_action(post_actions[2])
+        self.check_diamonds_action(post_actions[3])
+
+    def check_send_email_action(self, action):
+        """check the email is sent """
+        assert action.findtext("./type") == "SendEmailAction"
+        params = action.findall("./params/param")
+        assert params[0].get("name") == "subject"
+        assert params[0].get("value") == "email subject"
+        assert params[1].get("name") == "type"
+        assert params[1].get("value") == "ATS3_REPORT"
+        assert params[2].get("name") == "send-files"
+        assert params[2].get("value") == "true"
+        assert params[3].get("name") == "to"
+        assert params[3].get("value") == self.report_email
+
+    def check_ats_report_action(self, action):
+        """check the ats report is correct"""
+        assert action.findtext("./type") == "FileStoreAction"
+        params = action.findall("./params/param")
+        assert params[0].get("name") == "to-folder"
+        assert params[0].get("value") == self.file_store
+        assert params[1].get("name") == "report-type"
+        assert params[1].get("value") == "ATS_REPORT"
+        assert params[2].get("name") == "date-format"
+        assert params[2].get("value") == "yyyyMMdd"
+        assert params[3].get("name") == "time-format"
+        assert params[3].get("value") == "HHmmss"
+
+    def check_aste_report_action(self, action):
+        """ check the aste report is corect"""
+        assert action.findtext("./type") == "FileStoreAction"
+        params = action.findall("./params/param")
+        assert params[0].get("name") == "to-folder"
+        assert params[0].get("value") == self.file_store
+        assert params[1].get("name") == "report-type"
+        assert params[1].get("value") == "ASTE_REPORT"
+        assert params[2].get("name") == "run-log"
+        assert params[2].get("value") == "true"
+        assert params[3].get("name") == "date-format"
+        assert params[3].get("value") == "yyyyMMdd"
+        assert params[4].get("name") == "time-format"
+        assert params[4].get("value") == "HHmmss"
+        
+    def check_diamonds_action(self, action):
+        """ check diamonds actions are correct"""
+        assert action.findtext("./type") == "DiamondsAction"
+        assert not action.findall("./params/param")
+    
+    def test_files(self):
+        """ test the files are added to the drop """
+        xml = self.generate_xml()
+        files = iter(xml.findall("./files/file"))
+        assert files.next().text == r"ATS3Drop" + os.sep + "images" + os.sep + "file1.fpsx"
+        assert files.next().text == r"ATS3Drop" + os.sep + "images" + os.sep + "file2.fpsx"
+        assert files.next().text == r"ATS3Drop" + os.sep + "TestAssets" + os.sep + "TestAsset.zip"
+        self.assertRaises(StopIteration, files.next)
+        
+    def test_generate_testasset_zip(self):
+        """ test the generated test asset is zipped"""
+        self.generate_xml()
+        if re.search(r"[.]zip", self.test_plan["testasset_location"]):
+            pass
+        else:
+            strbuffer = StringIO()
+            assert strbuffer == self.gen.generate_testasset_zip(self.test_plan, strbuffer)
+            zfile = zipfile.ZipFile(strbuffer, "r")
+            try:
+                contents = sorted(path(p).normpath() for p in zfile.namelist())
+                expected = sorted(path(p).normpath()
+                               for p in [(r"Localisation" + os.sep + "S60" + os.sep + "localisation.txt"),
+                                         (r"TestCases" + os.sep + "TC_100_Test0" + os.sep + "file1.sis"),
+                                         (r"TestCases" + os.sep + "TC_100_Test0" + os.sep + "file2.tcf"),
+                                         (r"Tools" + os.sep + "TestCaseCreator" + os.sep + "test_creator.ini"),
+                                         (r"testdrop.xml")])
+                diff = difflib.context_diff(expected, contents)
+                assert contents == expected, "\n".join(diff)
+            finally:
+                zfile.close()
+        
+    def test_generate_drop(self):
+        """Manifest for ATS3Drop directory structure is generated."""
+        xml = self.generate_xml()
+        strbuffer = StringIO()
+
+        self.gen.generate_drop(self.test_plan, xml, strbuffer)
+        zfile = zipfile.ZipFile(strbuffer, "r")
+        try:
+            contents = sorted(path(p).normpath() for p in zfile.namelist())
+            expected = sorted(path(p).normpath()
+                           for p in [r"ATS3Drop" + os.sep + "images" + os.sep + "file1.fpsx",
+                                     r"ATS3Drop" + os.sep + "images" + os.sep + "file2.fpsx",
+                                     r"ATS3Drop" + os.sep + "TestAssets" + os.sep + "TestAsset.zip",
+                                     r"test.xml"])
+            diff = difflib.context_diff(expected, contents)
+            assert contents == expected, "\n".join(diff)
+        finally:
+            zfile.close()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncorecpythontests/test_ats4.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,1604 @@
+# -*- encoding: latin-1 -*-
+
+#============================================================================ 
+#Name        : test_ats4.py 
+#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:
+#===============================================================================
+
+""" Testing ats4 framework. """
+# pylint: disable-msg=E1101, C0302, W0142, W0603, R0902,R0903,R0912,R0915
+#E1101 => Mocker shows mockery
+#C0302 => too many lines
+#W0142 => used * or ** magic 
+#W0603 => used global
+#R* during refactoring
+
+from cStringIO import StringIO
+from xml.etree.ElementTree import fromstring
+from xml.etree import ElementTree as et
+import difflib
+import logging
+logging.getLogger().setLevel(logging.ERROR)
+import tempfile
+import zipfile
+import os
+import re
+import subprocess
+
+from path import path # pylint: disable-msg=F0401
+import amara
+import mocker # pylint: disable-msg=F0401
+
+import ntpath
+
+import ats3
+import ats3.testconfigurator as atc
+import ats3.dropgenerator as adg
+import ats3.parsers as parser
+
+
+TEST_PATH = None
+TEST_FILES = {}
+TSRC = None
+OUTPUT = None
+
+# Shortcuts
+E = et.Element
+SE = et.SubElement
+
+class Bunch(object):
+    """ Configuration object. Argument from constructor are converted into class attributes. """
+    def __init__(self, **kwargs):
+        self.__dict__.update(kwargs)
+        
+def equal_xml(xml1, xml2):
+    """Check the equality of the given XML snippets.
+    
+    Tag name equality:
+    
+    >>> equal_xml('<a/>', '<a/>')
+    True
+    >>> equal_xml('<a/>', '<b/>')
+    False
+    
+    Attribute equality:
+    
+    >>> equal_xml('<a k="v"/>', '<a k="v"/>')
+    True
+    >>> equal_xml('<a k="v"/>', '<a k="w"/>')
+    False
+    
+    Text content equality:
+    
+    >>> equal_xml('<a>v</a>', '<a>v</a>')
+    True
+    >>> equal_xml('<a>v</a>', '<a>w</a>')
+    False
+    >>> equal_xml('<a>v</a>', '<a></a>')
+    False
+    
+    Text content equality when whitespace differs:
+    >>> equal_xml('<a>v</a>', '<a>v </a>')
+    True
+
+    Equality of child elements:
+    
+    >>> equal_xml('<a><b><c k="v"/></b></a>', '<a><b><c k="v"/></b></a>')
+    True
+    >>> equal_xml('<a><b><c k="v"/></b></a>', '<a><b><c k="w"/></b></a>')
+    False
+    >>> equal_xml('<a><b><c k="v"/>v</b></a>', '<a><b><c k="v"/>w</b></a>')
+    False
+    >>> equal_xml('<a><b><c k="v"/>v</b></a>', '<a><b><c k="v"/>v </b></a>')
+    True
+    
+    """
+    def __init__():
+        check_instance(xml1, xml2)
+    
+    def check_instance(xml1, xml2):
+        """if xml1 and xml2 are instances, converts to strings"""
+        if isinstance(xml1, basestring):
+            xml1 = fromstring(xml1)
+        if isinstance(xml2, basestring):
+            xml2 = fromstring(xml2)
+        check_tags(xml1, xml2)
+
+    def check_tags(xml1, xml2):
+        """check xml tags and text equality"""
+        if xml1.tag != xml2.tag:
+            return False
+        if xml1.attrib != xml2.attrib:
+            return False
+        if xml1.text:
+            if not xml2.text:
+                return False
+        if xml2.text:
+            if not xml1.text:
+                return False
+
+        produce_xml_children(xml1, xml2)
+
+    def produce_xml_children(xml1, xml2):
+        """checks if xml children are of same length and are equal?"""
+        if xml1.text and xml2.text and xml1.text.strip() != xml2.text.strip():
+            return False
+        if xml1.tail is not None and xml2.tail is not None:
+            if xml1.tail.strip() != xml2.tail.strip():
+                return False
+        elif xml1.tail != xml2.tail:
+            return False
+        
+        children1 = list(xml1.getchildren())
+        children2 = list(xml2.getchildren())
+        if len(children1) != len(children2):
+            return False
+        for child1, child2 in zip(children1, children2):
+            return equal_xml(child1, child2)
+    return True        
+
+
+def setup_module():
+    """ Setup test environment. """
+    global TEST_PATH, TSRC, OUTPUT
+    TEST_PATH = path(tempfile.mkdtemp())
+    OUTPUT = TEST_PATH.joinpath(r"output")
+    component = TEST_PATH
+    component.joinpath("group").makedirs()
+    for path_parts in (("tsrc", "group", "bld.inf"),
+                       ("tsrc", "group", "test.pkg"),
+                       ("tsrc", "testmodules", "file1.dll"),
+                       ("tsrc", "testmodules", "file2.dll"),
+                       ("tsrc", "data", "file1"),
+                       ("tsrc", "data", "file2"),
+                       ("tsrc", "data", "file3"),
+                       ("tsrc", "data", "mmc", "file4"),
+                       ("tsrc", "data", "c", "file5"),
+                       ("tsrc", "conf", "file1.cfg"),
+                       ("tsrc", "conf", "file2.cfg"),
+                       ("tsrc", "init", "TestFramework.ini"),
+                       ("tsrc", "custom", "prepostaction.xml"),
+                       ("tsrc", "custom", "postpostaction.xml"),
+                       # These do not have to be under 'tsrc':
+                       ("tsrc", "output", "images", "file1.fpsx"),
+                       ("tsrc", "output", "images", "file2.fpsx"),
+                       ("tsrc", "sis", "file1.sisx"),
+                       ("tsrc", "sis", "file2.sisx"),
+                       ("tsrc", "sis", "file3.sisx"),
+                       ("tsrc", "trace_init", "trace_activation_1.xml")):
+        filepath = component.joinpath(*path_parts)
+        if not filepath.parent.exists():
+            filepath.parent.makedirs()
+        filepath.touch()
+        TEST_FILES.setdefault(path_parts[1], []).append(filepath)
+    TSRC = component.joinpath("tsrc")
+    filepath = OUTPUT.joinpath("pmd", "pmd_file.pmd")
+    if not filepath.parent.exists():
+        filepath.parent.makedirs()
+    filepath.touch()
+    TEST_FILES.setdefault("pmd_file", []).append(filepath)
+    tracing = component.joinpath("tsrc", "trace_init")
+    root = E('ConfigurationFile')
+    confs = E("Configurations")
+    trace_act = SE(confs, "TraceActivation")
+    conf = SE(trace_act, "Configuration")
+    conf.set('Name', 'MCU')
+    mcu = SE(conf, "MCU")
+    sett = SE(mcu, "settings")
+    SE(sett, "timestamp")
+    root.append(confs)
+    ettree = et.ElementTree(root)
+    doc = amara.parse(et.tostring(ettree.getroot()))
+    handle = open(tracing.joinpath("trace_activation_1.xml"), "w")
+    handle.write(doc.xml(indent="yes"))
+    handle.close()
+#    tracing.writestr("trace_activation_1.xml", doc.xml(indent=u"yes"))
+    group = component.joinpath("tsrc", "group")
+    group.joinpath("bld.inf").write_text(
+        r"""
+        PRJ_TESTMMPFILES
+        stif.mmp /* xyz.mmp */ abcd.mmp
+        /*xyz.mmp*/
+        eunit.mmp /* xyz.mmp */
+        both.mmp
+        ..\sub-component\group\sub-component.mmp
+        """.replace('\\', os.sep))
+
+    group.joinpath("test.pkg").write_text(
+        r"""
+        ;Language - standard language definitions
+        &EN
+        
+        ; standard SIS file header
+        #{"BTEngTestApp"},(0x04DA27D5),1,0,0
+        
+        ;Supports Series 60 v 3.0
+        (0x101F7961), 0, 0, 0, {"Series60ProductID"}
+        
+        ;Localized Vendor Name
+        %{"BTEngTestApp"}
+        
+        ;Unique Vendor name
+        :"Nokia"
+        
+        ; Files to copy
+        "\tsrc\testmodules\file1.dll"-"c:\sys\bin\file1.dll"
+        "\tsrc\testmodules\file2.dll"-"c:\sys\bin\file2.dll"
+        "\tsrc\data\file1"-"e:\sys\bin\file1"
+        "\tsrc\data\file2"-"e:\sys\bin\file2"
+        "\tsrc\data\file3"-"e:\sys\bin\file3"
+        "\tsrc\conf\file1.cfg"-"!:\sys\bin\file1.cfg"
+        "\tsrc\conf\file2.cfg"-"!:\sys\bin\file2.cfg"
+        "\tsrc\init\TestFramework.ini"-"!:\sys\bin\TestFramework.ini"
+        "\tsrc\sis\file1.sisx"-"!:\sys\bin\file1.sisx"
+        "\tsrc\sis\file2.sisx"-"!:\sys\bin\file2.sisx"
+        """.replace('\\', os.sep))
+    group.joinpath("stif.mmp").write_text("LIBRARY stiftestinterface.lib")
+    group.joinpath("eunit.mmp").write_text("LIBRARY eunit.lib")
+    group.joinpath("both.mmp").write_text("LIBRARY stiftestinterface.lib eunit.lib")
+    init = component.joinpath("tsrc", "init")
+    
+    init.joinpath("TestFramework.ini").write_text(
+        r"""
+#     - Sets a device reset module's dll name(Reboot).
+#        + If Nokia specific reset module is not available or it is not correct one
+#          StifHWResetStub module may use as a template for user specific reset
+#          module. 
+
+[Engine_Defaults]
+
+TestReportMode= FullReport        # Possible values are: 'Empty', 'Summary', 'Environment',
+                                                               'TestCases' or 'FullReport'
+
+CreateTestReport= YES            # Possible values: YES or NO
+
+TestReportFilePath= C:\LOGS\TestFramework\
+TestReportFileName= TestReport
+
+TestReportFormat= TXT            # Possible values: TXT or HTML
+        
+        """)
+
+
+def teardown_module():
+    """ Cleanup environment after testing. """    
+    def __init__():
+        path(TEST_PATH).rmtree()
+
+# CTC related functions    
+def check_ctc_write(steps):
+    """Checks if CTC data is written on the CTC log"""
+    step = steps.next()
+    assert step.findtext("./type") == "NonTestExecuteTask"
+    params = step.findall("./parameters/parameter")
+    assert params[0].get("value") == "writelocal"
+    assert params[1].get("value") == path(r"z:\sys\bin\ctcman.exe")
+    step = steps.next()
+    assert step.findtext("./type") == "NonTestExecuteTask"
+    params = step.findall("./parameters/parameter")
+    assert params[0].get("value") == "writefile"
+    assert params[1].get("value") == path(r"z:\sys\bin\ctcman.exe")
+
+def check_ctc_log(steps, testtype=""):
+    """Fetches CTC Log"""
+    #For the ctcdata.txt to be published on the ATS network drive
+    step = steps.next()
+    assert step.findtext("./type") == "FileDownloadTask"
+    params = step.findall("./parameters/parameter")
+    #assert params[0].get("value") == "false"
+    assert params[0].get("value") == path(r"c:\data\ctc\ctcdata.txt")
+    if testtype == "withpkgfiles":
+        assert params[1].get("value") == r"\\10.0.0.1\ctc_helium\builds\drop0\set1\ctcdata"
+    else:
+        assert params[1].get("value") == r"\\10.0.0.1\ctc_helium\builds\drop0\set0\ctcdata"
+    
+    #For the ctcdata.txt to be published on the build network drive
+    step = steps.next()
+    assert step.findtext("./type") == "FileDownloadTask"
+    params = step.findall("./parameters/parameter")
+    #assert params[0].get("value") == "true"
+    assert params[0].get("value") == path(r"c:\data\ctc\ctcdata.txt")
+
+def check_ctc_start(steps):
+    """Checks if CTC starts in ATS"""
+    step = steps.next()
+    assert step.findtext("./type") == "CreateDirTask"
+    params = step.findall("./parameters/parameter")
+    assert params[0].get("value") == path(r"c:\data\ctc")
+    step = steps.next()
+    assert step.findtext("./type") == "NonTestExecuteTask"
+    params = step.findall("./parameters/parameter")
+    assert params[0].get("value") == path(r"z:\sys\bin\ctcman.exe")   
+
+def check_fetch_logs(steps, harness="STIF"):
+    """Checks fetching log directory is created"""
+    step = steps.next()
+    assert step.findtext("./type") == "FileDownloadTask"
+    params = step.findall("./parameters/parameter")
+    if harness == "STIF":
+        assert params[0].get("value") == path(r"c:\logs\testframework\*")  
+    else:
+        assert params[0].get("value") == path(r"c:\Shared\EUnit\logs\*")
+
+def check_diamonds_action(action):
+    """ Testing Diamonds action. """
+    assert action.findtext("./type") == "DiamondsAction"
+    assert not action.findall("./parameters/parameter") 
+
+def check_send_email_action(action, reportemail):
+    """verifies if sening email option works"""
+    assert action.findtext("./type") == "EmailAction"
+    params = action.findall("./parameters/parameter")
+    assert params[0].get("name") == "subject"
+    #assert params[0].get("value") == "email subject"
+    assert params[1].get("name") == "to"
+    assert params[1].get("value") == reportemail
+    
+def check_ctc_run_process_action(action):
+    """verifies if CTC run process action works"""
+    #The parameters for this test are intended to execute on a windows machine
+    assert action.findtext("./type") == "RunProcessAction"
+    params = action.findall("./parameters/parameter")
+    assert params[0].get("name") == "file"
+    assert params[0].get("value") == "catsctc2html/catsctc2html.exe"
+    assert params[1].get("name") == "parameters"
+    assert params[1].get("value") == r"--ctcdata_files=\\10.0.0.1\ctc_helium\1234\drop0\set0\ctcdata --monsym_files=\\10.0.0.1\ctc_helium\1234\mon_syms\1\MON.sym --diamonds_build_id=1234 --drop_id=0 --total_amount_of_drops=1"
+
+def check_ats_report_action(action, filestore):
+    """verifies if sening ATS report option works"""
+    assert action.findtext("./type") == "FileStoreAction"
+    params = action.findall("./parameters/parameter")
+    assert params[0].get("name") == "to-folder"
+    assert params[0].get("value") == filestore
+    assert params[1].get("name") == "report-type"
+    assert params[1].get("value") == "ATS_REPORT"
+    assert params[2].get("name") == "date-format"
+    assert params[2].get("value") == "yyyyMMdd"
+    assert params[3].get("name") == "time-format"
+    assert params[3].get("value") == "HHmmss"
+
+def check_stif_report_action(action, filestore):
+    """verifies if sening STIF report option works"""
+    assert action.findtext("./type") == "FileStoreAction"
+    params = action.findall("./parameters/parameter")
+    assert params[0].get("name") == "to-folder"
+    assert params[0].get("value") == filestore
+    assert params[1].get("name") == "report-type"
+    assert params[1].get("value") == "STIF_COMPONENT_REPORT_ALL_CASES"
+    assert params[2].get("name") == "run-log"
+    assert params[2].get("value") == "true"
+    assert params[3].get("name") == "date-format"
+    assert params[3].get("value") == "yyyyMMdd"
+    assert params[4].get("name") == "time-format"
+    assert params[4].get("value") == "HHmmss"
+
+def check_log_dir(steps):
+    """ Test the log dir. """
+    step = steps.next()
+    assert step.findtext("./type") == "CreateDirTask"
+
+def check_trace_start(steps, filestore):
+    """Checks if tracing is started on the ATS"""
+    step = steps.next()
+    assert step.findtext("./type") == "trace-start"
+    params = step.findall("./parameters/parameter")
+    assert params[0].get("value") == path(r"ATS3Drop\set0\trace_activation\trace_activation_1.xml")
+    assert params[1].get("value") == "MCU"
+    assert params[2].get("value") == path(r"ATS3Drop\pmds\pmd_file.pmd")
+    assert params[3].get("value") == filestore.joinpath("traces", "set0", "tracelog.blx")
+    assert params[4].get("value") == "60"
+    assert params[5].get("value") == "yyyyMMdd"
+    assert params[6].get("value") == "HHmmss"
+    
+def check_trace_end_steps(steps, filestore):
+    """ Test trace end step. """
+    step = steps.next()
+    assert step.findtext("./type") == "trace-stop"
+    params = step.findall("./parameters/parameter")
+    assert params[0].get("value") == "60"
+    step = steps.next()
+    assert step.findtext("./type") == "trace-convert"
+    params = step.findall("./parameters/parameter")
+    assert params[0].get("value") == path(r"ATS3Drop\pmds\pmd_file.pmd")
+    assert params[1].get("value") == filestore.joinpath("traces", "set0", "tracelog.blx")
+    assert params[2].get("value") == "60"
+    assert params[3].get("value") == "yyyyMMdd"
+    assert params[4].get("value") == "HHmmss"
+
+class TestTestPlan(mocker.MockerTestCase):
+    """Creates TestPlan mocker setup"""
+    def __init__(self, methodName="runTest"):
+        mocker.MockerTestCase.__init__(self, methodName)  
+          
+    def setUp(self):
+        """ Setup TestTestPlan testsuite. """
+        opts = Bunch(testrun_name="testrun", harness="STIF", 
+                     device_type="product", plan_name="ats3_test_plan",
+                     diamonds_build_url="", report_email="", file_store=path(), test_timeout="60",
+                     device_hwid="5425", trace_enabled="True", ctc_enabled="True", eunitexerunner_flags="/E S60AppEnv /R Off", 
+                     multiset_enabled=False, ctc_run_process_params=r"10.0.0.1#x:\ats\drop0.zip#1", monsym_files="")
+        self.atp = ats3.Ats3TestPlan(opts)
+        self.config_files = TEST_FILES["conf"]
+        self.data_files = TEST_FILES["data"]
+        self.engine_ini_file = TEST_FILES["init"][0]
+        self.image_files = TEST_FILES["output"]
+        self.sis_files = TEST_FILES["sis"]
+        self.testmodule_files = TEST_FILES["testmodules"]
+        self.ctc_enabled = self.atp["ctc_enabled"]
+        self.custom_dir = "CustomD"
+        self.eunitexerunner_flags = self.atp["eunitexerunner_flags"]
+        if self.atp["trace_enabled"].lower() == "true":
+            self.trace_activation_files = TEST_FILES["trace_init"]    
+            self.pmd_files = TEST_FILES["pmd_file"]
+        else:
+            self.trace_activation_files = []    
+            self.pmd_files = []
+        self.test_timeout = self.atp["test_timeout"]
+        self.eunitexerunner_flags = self.atp["eunitexerunner_flags"]
+        self.device_hwid = self.atp["device_hwid"]
+        self.test_harness = self.atp["harness"]
+        self.src_dst = [("" + os.sep + "tsrc" + os.sep + "testmodules" + os.sep + "file1.dll", "c:\sys\bin\file1.dll", "testmodule"),
+            ("" + os.sep + "tsrc" + os.sep + "testmodules" + os.sep + "file2.dll", "c:\sys\bin\file2.dll", "testmodule"),
+            ("" + os.sep + "tsrc" + os.sep + "data" + os.sep + "file1", "e:\sys\bin\file1", "data"),
+            ("" + os.sep + "tsrc" + os.sep + "data" + os.sep + "file2", "e:\sys\bin\file2", "data"),
+            ("" + os.sep + "tsrc" + os.sep + "data" + os.sep + "file3", "e:\sys\bin\file3", "data"),
+            ("" + os.sep + "tsrc" + os.sep + "conf" + os.sep + "file1.cfg", "c:\sys\bin\file1.cfg", "conf"),
+            ("" + os.sep + "tsrc" + os.sep + "conf" + os.sep + "file2.cfg", "c:\sys\bin\file2.cfg", "conf"),
+            ("" + os.sep + "tsrc" + os.sep + "init" + os.sep + "TestFramework.ini", "c:\sys\bin\TestFramework.ini", "engine_ini"),
+            ("" + os.sep + "tsrc" + os.sep + "sis" + os.sep + "file1.sisx", "c:\sys\bin\file1.sisx", ""),
+            ("" + os.sep + "tsrc" + os.sep + "sis" + os.sep + "file2.sisx", "c:\sys\bin\file2.sisx", ""),]
+        self.component_path = str(TEST_PATH.joinpath("tsrc", "group"))
+
+    def test_creation(self):
+        """ Testing creation. """        
+        assert self.atp["testrun_name"] == "testrun"
+        assert self.atp["harness"] == "STIF"
+        assert self.atp["device_type"] == "product"
+    
+    def test_insert_set(self):
+        """ Inserting a set of file. """        
+        self.atp.insert_set(data_files=self.data_files,
+                           config_files=self.config_files,
+                           engine_ini_file=self.engine_ini_file,
+                           image_files=self.image_files,
+                           testmodule_files=self.testmodule_files,
+                           test_timeout=self.test_timeout,
+                           eunitexerunner_flags=self.eunitexerunner_flags,
+                           pmd_files=self.pmd_files,                            
+                           trace_activation_files=self.trace_activation_files,
+                           component_path=self.component_path)
+        self.atp.insert_set(image_files=self.image_files,                           
+                           engine_ini_file=self.engine_ini_file,
+                           sis_files=self.sis_files,
+                           test_timeout=self.test_timeout,
+                           eunitexerunner_flags=self.eunitexerunner_flags,
+                           pmd_files=self.pmd_files,                            
+                           trace_activation_files=self.trace_activation_files,
+                           component_path=self.component_path)
+        self.atp.insert_set(data_files=self.data_files,
+                           config_files=self.config_files,
+                           engine_ini_file=self.engine_ini_file,
+                           image_files=self.image_files,
+                           testmodule_files=self.testmodule_files,
+                           test_timeout=self.test_timeout,
+                           eunitexerunner_flags=self.eunitexerunner_flags,
+                           src_dst=self.src_dst,
+                           pmd_files=self.pmd_files,                            
+                           trace_activation_files=self.trace_activation_files,
+                           component_path=self.component_path)
+        self.atp.insert_set(engine_ini_file=self.engine_ini_file,
+                           test_timeout=self.test_timeout,
+                           eunitexerunner_flags=self.eunitexerunner_flags,
+                           image_files=self.image_files,
+                           test_harness=self.test_harness,
+                           src_dst=self.src_dst,
+                           pmd_files=self.pmd_files,                            
+                           trace_activation_files=self.trace_activation_files,
+                           component_path=self.component_path)
+        self.atp.insert_set(test_timeout=self.test_timeout,      
+                           eunitexerunner_flags=self.eunitexerunner_flags,               
+                           image_files=self.image_files,                        
+                           test_harness=self.test_harness,                      
+                           src_dst=self.src_dst,                                
+                           pmd_files=self.pmd_files,                            
+                           trace_activation_files=self.trace_activation_files,
+                           component_path=self.component_path)  
+
+        assert self.atp.sets[0] == dict(name="set0",
+                                       data_files=self.data_files,
+                                       config_files=self.config_files,
+                                       engine_ini_file=self.engine_ini_file,
+                                       image_files=self.image_files,
+                                       testmodule_files=self.testmodule_files,
+                                       test_timeout=self.test_timeout,
+                                       eunitexerunner_flags=self.eunitexerunner_flags,
+                                       test_harness=self.test_harness,
+                                       src_dst=[],
+                                       pmd_files=self.pmd_files,
+                                       trace_path=self.atp.file_store.joinpath(u"§RUN_NAME§" + os.sep + u"§RUN_START_DATE§_§RUN_START_TIME§", "traces", "set0", "tracelog.blx"),
+                                       trace_activation_files=self.trace_activation_files,
+                                       ctc_enabled=self.atp["ctc_enabled"],
+                                       custom_dir=None,
+                                       component_path=self.component_path)
+        assert self.atp.sets[1] == dict(name="set1",
+                                       image_files=self.image_files,
+                                       engine_ini_file=self.engine_ini_file,
+                                       sis_files=self.sis_files,
+                                       test_timeout=self.test_timeout,
+                                       eunitexerunner_flags=self.eunitexerunner_flags,
+                                       test_harness=self.test_harness,
+                                       pmd_files=self.pmd_files,
+                                       trace_path=self.atp.file_store.joinpath(u"§RUN_NAME§" + os.sep + u"§RUN_START_DATE§_§RUN_START_TIME§", "traces", "set1", "tracelog.blx"),
+                                       trace_activation_files=self.trace_activation_files,
+                                       ctc_enabled=self.atp["ctc_enabled"],
+                                       custom_dir=None,
+                                       component_path=self.component_path)
+
+        assert self.atp.sets[2] == dict(name="set2",
+                                       data_files=self.data_files,
+                                       config_files=self.config_files,
+                                       engine_ini_file=self.engine_ini_file,
+                                       image_files=self.image_files,
+                                       testmodule_files=self.testmodule_files,
+                                       test_timeout=self.test_timeout,
+                                       eunitexerunner_flags=self.eunitexerunner_flags,
+                                       test_harness=self.test_harness,
+                                       src_dst=self.src_dst,
+                                       pmd_files=self.pmd_files,
+                                       trace_path=self.atp.file_store.joinpath(u"§RUN_NAME§" + os.sep + u"§RUN_START_DATE§_§RUN_START_TIME§", "traces", "set2", "tracelog.blx"),
+                                       trace_activation_files=self.trace_activation_files,
+                                       ctc_enabled=self.atp["ctc_enabled"],
+                                       custom_dir=None,
+                                       component_path=self.component_path)
+        assert self.atp.sets[3] == dict(name="set3",
+                                       data_files=[],
+                                       config_files=[],
+                                       engine_ini_file=self.engine_ini_file,
+                                       image_files=self.image_files,
+                                       testmodule_files=[],
+                                       test_timeout=self.test_timeout,
+                                       eunitexerunner_flags=self.eunitexerunner_flags,
+                                       test_harness=self.test_harness,
+                                       src_dst=self.src_dst,
+                                       pmd_files=self.pmd_files,
+                                       trace_path=self.atp.file_store.joinpath(u"§RUN_NAME§" + os.sep + u"§RUN_START_DATE§_§RUN_START_TIME§", "traces", "set3", "tracelog.blx"),
+                                       trace_activation_files=self.trace_activation_files,
+                                       ctc_enabled=self.atp["ctc_enabled"],
+                                       custom_dir=None,
+                                       component_path=self.component_path)
+
+        assert self.atp.sets[4] == dict(name="set4",
+                                       data_files=[],
+                                       config_files=[],
+                                       engine_ini_file=None,
+                                       image_files=self.image_files,
+                                       testmodule_files=[],
+                                       test_timeout=self.test_timeout,
+                                       eunitexerunner_flags=self.eunitexerunner_flags,
+                                       test_harness=self.test_harness,
+                                       src_dst=self.src_dst,
+                                       pmd_files=self.pmd_files,
+                                       trace_path=self.atp.file_store.joinpath(u"§RUN_NAME§" + os.sep + u"§RUN_START_DATE§_§RUN_START_TIME§", "traces", "set4", "tracelog.blx"),
+                                       trace_activation_files=self.trace_activation_files,
+                                       ctc_enabled=self.atp["ctc_enabled"],
+                                       custom_dir=None,
+                                       component_path=self.component_path)
+        
+    def test_post_actions_email(self):
+        """ Testing the send email post-action. """
+        assert not self.atp.post_actions
+        receiver = "joe.average@example.com"
+        self.atp.report_email = receiver
+        assert len(self.atp.post_actions) == 1
+        _, items = self.atp.post_actions[0]
+        items = dict(items)
+        #assert action == "EmailAction"
+        assert items["to"] == receiver
+    
+    def test_post_actions_ats4_report_only(self):
+        """ Testing the ats4 report only post-action. """
+        file_store = path("path/to/files")
+        self.atp.file_store = file_store
+        self.atp.harness = "EUNIT"
+        assert len(self.atp.post_actions) == 2
+        action, items = self.atp.post_actions[0]
+        items = dict(items)
+        assert action == "FileStoreAction"
+        assert items["report-type"] == "ATS3_REPORT"
+        assert items["to-folder"].startswith(file_store)
+        assert items["to-folder"].endswith("ATS3_REPORT")
+    
+    def test_post_actions_stif(self):
+        """ Testing STIF post-actions. """
+        file_store = path("path/to/files")
+        self.atp.file_store = file_store
+        assert len(self.atp.post_actions) == 2
+        action, items = self.atp.post_actions[1]
+        items = dict(items)
+        assert action == "FileStoreAction"
+        assert items["report-type"] == "STIF_COMPONENT_REPORT_ALL_CASES"
+        assert items["to-folder"].startswith(file_store)
+        assert items["to-folder"].endswith("STIF_REPORT")
+        
+    def test_post_actions_diamonds(self):
+        """ Testing Diamonds post-actions. """        
+        self.atp.diamonds_build_url = "http://diamonds.nmp.company.com/diamonds/builds/1234"
+        assert len(self.atp.post_actions) == 1
+        action, items = self.atp.post_actions[0]
+        assert action == "DiamondsAction"
+        assert not items
+
+
+class TestComponentParser(mocker.MockerTestCase):
+    """ Testing the Ats3ComponentParser component parser. """
+    
+    def __init__(self, methodName="runTest"):
+        mocker.MockerTestCase.__init__(self, methodName)
+    
+    def assert_paths(self, path1, path2):
+        """ Checking the path. Validates that path1 and path2 are instance of path and they are equals. """
+        if not isinstance(path1, path):
+            path1 = path(path1)
+        if not isinstance(path2, path):
+            path2 = path(path2)            
+        return self.assertEqual(path1.normpath(), path2.normpath())
+    
+    def setUp(self):
+        """ Setting up TestComponentParser testsuite."""
+        opts = Bunch(build_drive=path(TEST_PATH+os.sep), target_platform="target platform", eunitexerunner_flags="/E S60AppEnv /R Off",
+                     data_dir=["data"], flash_images=[], sis_files=[], test_timeout="60", harness="STIF", trace_enabled="True", specific_pkg='')
+        self.acp = atc.Ats3ComponentParser(opts)
+        self.acp.tsrc_dir = TSRC
+      
+    def test_detect_dlls(self):
+        """ Testing dlls detection. """
+        open(os.path.join(TEST_PATH, 'lib1.dll'), 'w').close()
+        os.makedirs(os.path.join(TEST_PATH, 'path', 'to', 'another'))
+        open(os.path.join(TEST_PATH, 'path', 'to', 'another', 'library.dll'), 'w').close()
+        open(os.path.join(TEST_PATH, 'lib2.dll'), 'w').close()
+        
+        # Setup mock objects.
+        process = self.mocker.mock()
+        process.communicate()
+        self.mocker.result(["lib1.dll\npath/to/another/library.dll\nsome/other/file.txt\nlib2.dll\nlib3.dll\n"])
+        obj = self.mocker.replace("subprocess.Popen")
+        
+        if os.environ.has_key("SBS_HOME"):
+            obj("sbs --what -c target_platform.test", shell=True, stdout=subprocess.PIPE)
+        else:
+            obj("abld -w test build target platform", shell=True, stdout=subprocess.PIPE)
+        self.mocker.result(process)
+        
+        self.mocker.replay()
+        
+        self.assertEqual([u"lib1.dll", u"library.dll", u"lib2.dll"],
+                         [dll.name for dll in self.acp.tsrc_dll_files()])
+
+    def test_harness(self):
+        """ Detect test harness."""
+        mmp_parser = parser.MmpFileParser()
+        group = TSRC.joinpath("group")
+        for harness, mmp in [
+            ("STIF", group / "stif.mmp"),
+            ("EUNIT", group / "eunit.mmp"),
+            ("STIF", group / "both.mmp"),
+            ]:
+            self.assertEqual(harness, mmp_parser.get_harness(mmp))
+
+class TestXMLGeneration(mocker.MockerTestCase):
+    """Unit tests for the test.xml generation."""
+    def __init__(self, methodName="runTest"):
+        mocker.MockerTestCase.__init__(self, methodName)
+        self.data_files = None
+        self.config_files = None
+        self.testmodule_files = None
+        self.image_files = None
+        self.engine_ini_file = None
+        self.report_email = None
+        self.file_store = None
+        self.diamonds_build_url = None
+        self.test_harness = None     
+        self.src_dst = []
+        self.trace_enabled = None
+        self.pmd_files = None
+        self.trace_activation_files = None
+        self.ctc_enabled = None
+        self.eunitexerunner_flags = None
+        self.test_plan = None
+        self.gen = None
+        self.custom_dir = None
+        self.diamonds_id = None
+        self.ctc_run_process_params = None
+        self.drop_count = None
+        self.ctc_test_data = None
+        self.ctc_network = None
+        self.component_path = None
+        self.drop_id = None
+
+    def generate_xml(self, trace_enabled="False"):
+        """ Generating the XML. """
+        def files(*paths):
+            """creating tsrc path list"""
+            return [TEST_PATH.joinpath("tsrc", tpath) for tpath in paths]
+        self.testmodule_files = files("testmodules/file1.dll", "testmodules/file2.dll")
+        self.data_files = files("data/file1", "data/file2", "data/file3")
+        self.config_files = files("conf/file1.cfg", "conf/file2.cfg")
+        self.image_files = files("output/images/file1.fpsx", "output/images/file2.fpsx")
+        self.engine_ini_file = files("init/TestFramework.ini")[0]
+        self.report_email = "test.receiver@company.com"
+        self.file_store = path(r"path/to/reports")
+        self.diamonds_build_url = "http://diamonds.nmp.company.com/diamonds/builds/1234"
+        self.test_harness = "STIF"        
+        self.src_dst = []
+        self.trace_enabled = trace_enabled
+        self.pmd_files = TEST_FILES["pmd_file"]
+        self.trace_activation_files = files("trace_init/trace_activation_1.xml")
+        self.ctc_enabled = "True"
+        self.eunitexerunner_flags = "/E S60AppEnv /R Off"
+        self.custom_dir = "CustomB"
+        self.component_path = str(TEST_PATH.joinpath("tsrc", "group"))
+        self.ctc_run_process_params = r"10.0.0.1#x:\ats\drop0.zip#1"
+        
+        self.ctc_network = self.ctc_run_process_params.rsplit("#", 2)[0]
+        self.drop_id = re.findall(".*drop(\d*).zip.*", self.ctc_run_process_params.lower())[0] #extracting int part of drop name
+        self.drop_count = self.ctc_run_process_params.rsplit("#", 1)[1]
+        self.diamonds_id = self.diamonds_build_url.rsplit(r"/", 1)[1]
+
+        self.mocker.restore()
+        test_plan = self.mocker.mock(count=False)
+        mocker.expect(test_plan["testrun_name"]).result("test")
+        mocker.expect(test_plan["harness"]).result("STIF")
+        mocker.expect(test_plan["device_type"]).result("product")
+        mocker.expect(test_plan["plan_name"]).result("test plan")
+        mocker.expect(test_plan["diamonds_build_url"]).result(self.diamonds_build_url)
+        mocker.expect(test_plan["test_timeout"]).result("60")
+        mocker.expect(test_plan["eunitexerunner_flags"]).result("/E S60AppEnv /R Off")
+        mocker.expect(test_plan["device_hwid"]).result("5425")
+        mocker.expect(test_plan["custom_dir"]).result("custom")
+        mocker.expect(test_plan.custom_dir).result(path(r"self.custom_dir"))
+        mocker.expect(test_plan["report_email"]).result(self.report_email)
+        mocker.expect(test_plan["ctc_run_process_params"]).result(self.ctc_run_process_params)
+                
+        if self.trace_enabled.lower() == "true":
+            mocker.expect(test_plan["trace_enabled"]).result("True")
+        else:
+            mocker.expect(test_plan["trace_enabled"]).result("False")
+        if self.trace_enabled == "False":
+            mocker.expect(test_plan.sets).result([
+                dict(name="set0", image_files=self.image_files, data_files=self.data_files,
+                     config_files=self.config_files, testmodule_files=self.testmodule_files,
+                     engine_ini_file=self.engine_ini_file, test_harness="STIF", src_dst=self.src_dst,
+                     ctc_enabled=self.ctc_enabled, eunitexerunner_flags=self.eunitexerunner_flags,
+                     custom_dir=self.custom_dir, component_path=self.component_path),
+                dict(name="set1", image_files=self.image_files, data_files=self.data_files,
+                     config_files=self.config_files, testmodule_files=self.testmodule_files,
+                     engine_ini_file=self.engine_ini_file,test_harness="STIF", src_dst=self.src_dst,
+                     ctc_enabled=self.ctc_enabled, eunitexerunner_flags=self.eunitexerunner_flags,
+                     custom_dir=self.custom_dir, component_path=self.component_path),])
+        elif self.trace_enabled == "True":
+            mocker.expect(test_plan.sets).result([
+                dict(name="set0", image_files=self.image_files, data_files=self.data_files,
+                     config_files=self.config_files, testmodule_files=self.testmodule_files,
+                     engine_ini_file=self.engine_ini_file, test_harness="STIF", src_dst=self.src_dst,
+                     pmd_files=self.pmd_files, trace_activation_files=self.trace_activation_files,
+                     trace_path=self.file_store.joinpath("traces", "set0", "tracelog.blx"),
+                     ctc_enabled=self.ctc_enabled, eunitexerunner_flags=self.eunitexerunner_flags, component_path=self.component_path),
+                dict(name="set1", image_files=self.image_files, data_files=self.data_files,
+                     config_files=self.config_files, testmodule_files=self.testmodule_files,
+                     engine_ini_file=self.engine_ini_file,test_harness="STIF", src_dst=self.src_dst,
+                     pmd_files=self.pmd_files, trace_activation_files=self.trace_activation_files,
+                     trace_path=self.file_store.joinpath("traces", "set1", "tracelog.blx"),
+                     ctc_enabled=self.ctc_enabled, eunitexerunner_flags=self.eunitexerunner_flags, component_path=self.component_path),])
+
+        ctc_file_name = "catsctc2html/catsctc2html.exe"
+        ctc_data_path = str(os.path.normpath(r"\\%s\ctc_helium\%s\drop0\set0\ctcdata" % (self.ctc_network, self.diamonds_id)))
+        mon_files = str(os.path.normpath(r"\\%s\ctc_helium\%s\mon_syms\1\MON.sym" % (self.ctc_network, self.diamonds_id)))
+        self.ctc_test_data = [ctc_file_name, self.ctc_network, self.drop_id, self.drop_count, self.diamonds_id, ctc_data_path, mon_files] 
+
+        mocker.expect(test_plan.post_actions).result([
+            ("RunProcessAction", (("file", ctc_file_name ),
+                                  ("parameters", r"--ctcdata_files=" + ctc_data_path + " --monsym_files=" + mon_files + " --diamonds_build_id=" + self.diamonds_id + " --drop_id=" + self.drop_id + " --total_amount_of_drops=" + self.drop_count ))),
+            ("EmailAction", (("subject", "Release testing"),
+                                 ("to", self.report_email))),
+#            ("FileStoreAction", (("to-folder", self.file_store),
+#                                 ("report-type", "ATS_REPORT"),
+#                                 ("date-format", "yyyyMMdd"),
+#                                 ("time-format", "HHmmss"))),
+#            ("FileStoreAction", (("to-folder", self.file_store),
+#                                 ("report-type", "STIF_COMPONENT_REPORT_ALL_CASES"),
+#                                 ("run-log", "true"),
+#                                 ("date-format", "yyyyMMdd"),
+#                                 ("time-format", "HHmmss"))),
+            ("DiamondsAction", ())])
+        self.mocker.replay()
+        self.test_plan = test_plan
+        self.gen = adg.Ats3TemplateTestDropGenerator()
+        return self.gen.generate_xml(test_plan)
+
+    def test_basic_structure(self):
+        """ Check that the overall test.xml structure is valid. """
+        xml = self.generate_xml()
+        # Check basics.
+#        assert xml.find(".").tag == "test"
+#        assert xml.find("./name").text == "test"
+#        assert xml.find("./buildid").text == self.diamonds_build_url
+#        assert xml.find("./target").tag
+#        assert xml.find("./target/device").tag
+#        harness, type_, device_hwid = xml.findall("./target/device/property")
+#        assert harness.get("value") == "STIF"
+#        assert type_.get("value") == "product"
+#        assert device_hwid.get("value") == "5425"
+#        
+#        # Check generation of the test plan.
+#        assert xml.find("./plan").get("name") == "test Plan"
+#        assert xml.find("./plan/session").tag 
+#        sets = xml.findall("./execution")
+#        assert len(sets) == 2
+#        assert sets[0].get("name") == "set0-"+str(TEST_PATH.joinpath("tsrc", "group"))
+#        assert sets[0].find("./target/device").tag
+
+    def test_set_structure(self):
+        """ Check that a <set> element's structure is valid. """
+        xml = self.generate_xml()
+        tstset = xml.find("./execution")
+        assert tstset.tag
+        
+    def test_case_flash_elems(self):
+        """ Test case flash elems. """
+        xml = self.generate_xml()
+        found = False
+        for case in xml.findall(".//task"):
+            if case.find('type').text == 'FlashTask':
+                found = True
+                flashes = case.findall("./parameters/parameter")
+                assert len(flashes) == len(self.image_files)
+                for i, flash_file in enumerate(self.image_files):
+                    assert flashes[i].get("name") == "image-" + str(i + 1)
+                    assert flashes[i].get("value") == "ATS3Drop\\images\\" + flash_file.name
+        assert found
+        
+    def test_case_steps(self):
+        """ Test case steps. """
+        xml = self.generate_xml()
+        steps = iter(xml.findall(".//task"))
+        steps.next() # Flash images
+        check_ctc_start(steps)
+        check_log_dir(steps)
+        self.check_install_data(steps)
+        self.check_install_configuration(steps)
+        self.check_install_tmodules(steps)
+        self.check_install_engine_ini(steps)
+        self.check_run_cases(steps)
+        check_ctc_write(steps)
+        check_ctc_log(steps)
+        check_fetch_logs(steps)
+
+    def check_install_data(self, steps):
+        """ Test install data. """
+        for filename in self.data_files:
+            step = steps.next()
+            assert step.findtext("./type") == "FileUploadTask"
+            params = step.findall("./parameters/parameter")            
+            src = params[0].get("value")
+            assert ntpath.basename(src) == ntpath.basename(filename)
+            assert ntpath.dirname(src) == "ATS3Drop\\set0\\data"
+            dst = params[1].get("value")
+            assert ntpath.basename(dst) == ntpath.basename(filename)
+            assert ntpath.dirname(dst) == r"e:\testing\data"
+    
+    def check_install_configuration(self, steps):
+        """ Test install configuration. """
+        for filepath in self.config_files:
+            step = steps.next()
+            assert step.findtext("./type") == "FileUploadTask"
+            params = step.findall("./parameters/parameter")
+            assert params[0].get("value") == "ATS3Drop\\set0\\conf\\" + ntpath.basename(filepath)
+            assert params[1].get("value") == "e:\\testing\\conf\\" + ntpath.basename(filepath)
+
+    def check_install_tmodules(self, steps):
+        """ Test install tmodules. """
+        for filepath in self.testmodule_files:
+            step = steps.next()
+            assert step.findtext("./type") == "FileUploadTask"
+            params = step.findall("./parameters/parameter")
+            assert params[0].get("value") == "ATS3Drop\\set0\\testmodules\\" + ntpath.basename(filepath)
+            assert params[1].get("value") == "c:\\sys\\bin\\" + ntpath.basename(filepath)
+    
+    def check_install_engine_ini(self, steps):
+        """ Test install engine ini. """
+        filepath = self.engine_ini_file
+        step = steps.next()
+        assert step.findtext("./type") == "FileUploadTask"
+        params = step.findall("./parameters/parameter")
+        assert params[0].get("value") == "ATS3Drop\\set0\\init\\" + ntpath.basename(filepath)
+        assert params[1].get("value") == "c:\\testframework\\" + ntpath.basename(filepath)
+    
+    def check_run_cases(self, steps):
+        """ Test run cases. """
+        step = steps.next()
+        assert step.findtext("./type") == "StifRunCasesTask"
+        params = step.findall("./parameters/parameter")
+        assert params[0].get("value") == "*"
+        assert params[1].get("value") == "60"
+        assert params[2].get("value") == "c:\\testframework\\" + ntpath.basename(self.engine_ini_file)
+
+    def test_steps_trace_enabled(self):
+        """ Test steps trace enabled. """
+        xml = self.generate_xml(trace_enabled="True")
+        steps = iter(xml.findall(".//task"))
+        steps.next() # Flash images
+        check_ctc_start(steps)
+        check_log_dir(steps)
+        self.check_install_data(steps)
+        self.check_install_configuration(steps)
+        self.check_install_tmodules(steps)
+        self.check_install_engine_ini(steps)
+        #check_trace_start(steps, self.file_store)
+        self.check_run_cases(steps)
+        #check_trace_end_steps(steps, self.file_store)
+        check_ctc_write(steps)
+        check_ctc_log(steps)
+        check_fetch_logs(steps) 
+    
+    def test_post_actions(self):
+        """ Post actions are inserted into XML. """
+        xml = self.generate_xml()        
+        post_actions = xml.findall(".//action")
+        check_ctc_run_process_action(post_actions[0])
+        check_send_email_action(post_actions[1], self.report_email)
+        #check_ats_report_action(post_actions[2], self.file_store)
+        #check_stif_report_action(post_actions[3], self.file_store)
+        check_diamonds_action(post_actions[2])
+    
+#    def test_files(self):
+#        """ Testing files. """
+#        xml = self.generate_xml()
+#        files = iter(xml.findall("./files/file"))
+#        assert files.next().text == r"ATS3Drop/images/file1.fpsx"
+#        assert files.next().text == r"ATS3Drop/images/file2.fpsx"
+#        assert files.next().text == r"ATS3Drop/set0/data/file1"
+#        assert files.next().text == r"ATS3Drop/set0/data/file2"
+#        assert files.next().text == r"ATS3Drop/set0/data/file3"
+#        assert files.next().text == r"ATS3Drop/set0/conf/file1.cfg"
+#        assert files.next().text == r"ATS3Drop/set0/conf/file2.cfg"
+#        assert files.next().text == r"ATS3Drop/set0/testmodules/file1.dll"
+#        assert files.next().text == r"ATS3Drop/set0/testmodules/file2.dll"
+#        assert files.next().text == r"ATS3Drop/set0/init/TestFramework.ini"        
+#        assert files.next().text == r"ATS3Drop/set1/data/file1"
+#        assert files.next().text == r"ATS3Drop/set1/data/file2"
+#        assert files.next().text == r"ATS3Drop/set1/data/file3"
+#        assert files.next().text == r"ATS3Drop/set1/conf/file1.cfg"
+#        assert files.next().text == r"ATS3Drop/set1/conf/file2.cfg"
+#        assert files.next().text == r"ATS3Drop/set1/testmodules/file1.dll"
+#        assert files.next().text == r"ATS3Drop/set1/testmodules/file2.dll"
+#        assert files.next().text == r"ATS3Drop/set1/init/TestFramework.ini"        
+#        self.assertRaises(StopIteration, files.next)
+#        xml = self.generate_xml(trace_enabled="True")
+#        files = iter(xml.findall("./files/file"))
+#        assert files.next().text == r"ATS3Drop/images/file1.fpsx"
+#        assert files.next().text == r"ATS3Drop/images/file2.fpsx"
+#        assert files.next().text == r"ATS3Drop/pmds/pmd_file.pmd"
+#        assert files.next().text == r"ATS3Drop/set0/data/file1"
+#        assert files.next().text == r"ATS3Drop/set0/data/file2"
+#        assert files.next().text == r"ATS3Drop/set0/data/file3"
+#        assert files.next().text == r"ATS3Drop/set0/conf/file1.cfg"
+#        assert files.next().text == r"ATS3Drop/set0/conf/file2.cfg"
+#        assert files.next().text == r"ATS3Drop/set0/testmodules/file1.dll"
+#        assert files.next().text == r"ATS3Drop/set0/testmodules/file2.dll"
+#        assert files.next().text == r"ATS3Drop/set0/init/TestFramework.ini"
+#        assert files.next().text == r"ATS3Drop/set0/trace_init/trace_activation_1.xml"
+#        assert files.next().text == r"ATS3Drop/set1/data/file1"
+#        assert files.next().text == r"ATS3Drop/set1/data/file2"
+#        assert files.next().text == r"ATS3Drop/set1/data/file3"
+#        assert files.next().text == r"ATS3Drop/set1/conf/file1.cfg"
+#        assert files.next().text == r"ATS3Drop/set1/conf/file2.cfg"
+#        assert files.next().text == r"ATS3Drop/set1/testmodules/file1.dll"
+#        assert files.next().text == r"ATS3Drop/set1/testmodules/file2.dll"
+#        assert files.next().text == r"ATS3Drop/set1/init/TestFramework.ini"
+#        assert files.next().text == r"ATS3Drop/set1/trace_init/trace_activation_1.xml"        
+#        self.assertRaises(StopIteration, files.next)
+        
+    def test_generate_drop(self):
+        """ Manifest for ATS3Drop directory structure is generated. """
+        xml = self.generate_xml()
+        strbuffer = StringIO()
+        
+        self.gen.generate_drop(self.test_plan, xml, strbuffer)
+        zfile = zipfile.ZipFile(strbuffer, "r")
+        try:
+            contents = sorted(path(tpath).normpath() for tpath in zfile.namelist())
+            expected = sorted(path(tpath).normpath()
+                           for tpath in [r"ATS3Drop" + os.sep + "set0" + os.sep + "conf" + os.sep + "file1.cfg",
+                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "conf" + os.sep + "file2.cfg",
+                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "data" + os.sep + "file1",
+                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "data" + os.sep + "file2",
+                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "data" + os.sep + "file3",
+                                     r"ATS3Drop" + os.sep + "images" + os.sep + "file1.fpsx",
+                                     r"ATS3Drop" + os.sep + "images" + os.sep + "file2.fpsx",
+                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "init" + os.sep + "TestFramework.ini",
+                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "testmodules" + os.sep + "file1.dll",
+                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "testmodules" + os.sep + "file2.dll",
+                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "conf" + os.sep + "file1.cfg",
+                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "conf" + os.sep + "file2.cfg",
+                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "data" + os.sep + "file1",
+                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "data" + os.sep + "file2",
+                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "data" + os.sep + "file3",
+                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "init" + os.sep + "TestFramework.ini",
+                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "testmodules" + os.sep + "file1.dll",
+                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "testmodules" + os.sep + "file2.dll",
+                                     r"test.xml"])
+            diff = difflib.context_diff(expected, contents)
+            assert contents == expected, "\n".join(diff)
+        finally:
+            zfile.close()
+
+    def test_generate_drop_trace (self):
+        "Manifest for ATS3Drop directory structure is generated when trace enabled."
+        xml = self.generate_xml(trace_enabled="True")
+        strbuffer = StringIO()
+        
+        self.gen.generate_drop(self.test_plan, xml, strbuffer)
+        zfile = zipfile.ZipFile(strbuffer, "r")
+        try:
+            contents = sorted(path(tpath).normpath() for tpath in zfile.namelist())
+            expected = sorted(path(tpath).normpath()
+                           for tpath in [r"ATS3Drop" + os.sep + "set0" + os.sep + "conf" + os.sep + "file1.cfg",
+                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "conf" + os.sep + "file2.cfg",
+                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "data" + os.sep + "file1",
+                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "data" + os.sep + "file2",
+                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "data" + os.sep + "file3",
+                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "trace_init" + os.sep + "trace_activation_1.xml",
+                                     r"ATS3Drop" + os.sep + "images" + os.sep + "file1.fpsx",
+                                     r"ATS3Drop" + os.sep + "images" + os.sep + "file2.fpsx",
+                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "init" + os.sep + "TestFramework.ini",
+                                     r"ATS3Drop" + os.sep + "pmds" + os.sep + "pmd_file.pmd",
+                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "testmodules" + os.sep + "file1.dll",
+                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "testmodules" + os.sep + "file2.dll",
+                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "conf" + os.sep + "file1.cfg",
+                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "conf" + os.sep + "file2.cfg",
+                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "data" + os.sep + "file1",
+                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "data" + os.sep + "file2",
+                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "data" + os.sep + "file3",
+                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "trace_init" + os.sep + "trace_activation_1.xml",
+                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "init" + os.sep + "TestFramework.ini",
+                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "testmodules" + os.sep + "file1.dll",
+                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "testmodules" + os.sep + "file2.dll",
+                                     r"test.xml"])
+            diff = difflib.context_diff(expected, contents)
+            assert contents == expected, "\n".join(diff)
+        finally:
+            zfile.close()
+
+
+class TestXMLGenerationWithPKG(mocker.MockerTestCase):
+    """
+    Unit tests for the test.xml generation.
+    """
+    def __init__(self, methodName="runTest"):
+        mocker.MockerTestCase.__init__(self, methodName)
+        self.src_dst1 = []
+        self.data_files = None
+        self.config_files = None
+        self.testmodule_files = None
+        self.image_files = None
+        self.engine_ini_file = None
+        self.report_email = None
+        self.file_store = None
+        self.diamonds_build_url = None
+        self.trace_enabled = None
+        self.pmd_files = None
+        self.trace_activation_files = None
+        self.ctc_enabled = None
+        self.eunitexerunner_flags = None
+        self.test_plan = None
+        self.gen = None
+        self.src_dst0 = []
+        self.custom_dir = None
+        self.custom_files = None
+        self.component_path = None
+        self.ctc_run_process_params = None
+        
+    def generate_xml(self, harness, trace_enabled="False"):
+        """Generates XML"""
+        def files(*paths):
+            """generates paths for the files"""
+            return [TEST_PATH.joinpath("tsrc", tpath) for tpath in paths]
+
+        self.src_dst1 = []
+        self.data_files = files("data/file1", "data/file2", "data/file3")
+        self.config_files = files("conf/file1.cfg", "conf/file2.cfg")
+        self.testmodule_files = files("testmodules/file1.dll", "testmodules/file2.dll")
+        self.image_files = files("output/images/file1.fpsx", "output/images/file2.fpsx")
+        self.engine_ini_file = files("init/TestFramework.ini")[0]
+        self.report_email = "test.receiver@company.com"
+        self.file_store = path("path/to/reports")
+        self.diamonds_build_url = "http://diamonds.nmp.company.com/diamonds/builds/1234"
+        self.trace_enabled = trace_enabled
+        self.pmd_files = TEST_FILES["pmd_file"]
+        self.trace_activation_files = files("trace_init/trace_activation_1.xml")
+        self.ctc_enabled = "True"
+        self.eunitexerunner_flags = "/E S60AppEnv /R Off"
+        self.custom_dir = "custom"
+        self.custom_files = files("custom/postpostaction.xml", "custom/prepostaction.xml")
+        self.component_path = str(TEST_PATH.joinpath("tsrc", "group"))
+        self.ctc_run_process_params = r"10.0.0.1#x:\ats\drop0.zip#1"
+        self.src_dst0 = [
+            (TEST_PATH.joinpath(r"tsrc" + os.sep + "testmodules" + os.sep + "file1.dll"), path(r"c:\sys\bin\file1.dll"), "testmodule"),
+            (TEST_PATH.joinpath(r"tsrc" + os.sep + "testmodules" + os.sep + "file2.dll"), path(r"c:\sys\bin\file2.dll"), "testmodule"),
+            (TEST_PATH.joinpath(r"tsrc" + os.sep + "data" + os.sep + "file1"), path(r"e:\sys\bin\file1"), "data"),
+            (TEST_PATH.joinpath(r"tsrc" + os.sep + "data" + os.sep + "file2"), path(r"e:\sys\bin\file2"), "data"),
+            (TEST_PATH.joinpath(r"tsrc" + os.sep + "data" + os.sep + "file3"), path(r"e:\sys\bin\file3"), "data"),]
+        if harness == "STIF" or harness == "MULTI_HARNESS":
+            harness0 = harness1 = "STIF"
+            if "MULTI_HARNESS" in harness:
+                harness1 = "EUNIT"
+                self.src_dst1 = [
+                    (TEST_PATH.joinpath(r"tsrc" + os.sep + "testmodules" + os.sep + "file1.dll"), path(r"c:\sys\bin\file1.dll"), "testmodule"),
+                    (TEST_PATH.joinpath(r"tsrc" + os.sep + "testmodules" + os.sep + "file2.dll"), path(r"c:\sys\bin\file2.dll"), "testmodule"),
+                    (TEST_PATH.joinpath(r"tsrc" + os.sep + "data" + os.sep + "file1"), path(r"e:\sys\bin\file1"), "data"),
+                    (TEST_PATH.joinpath(r"tsrc" + os.sep + "data" + os.sep + "file2"), path(r"e:\sys\bin\file2"), "data"),
+                    (TEST_PATH.joinpath(r"tsrc" + os.sep + "data" + os.sep + "file3"), path(r"e:\sys\bin\file3"), "data"),] 
+            self.src_dst0 = [
+                (TEST_PATH.joinpath(r"tsrc" + os.sep + "testmodules" + os.sep + "file1.dll"), path(r"c:\sys\bin\file1.dll"), "testmodule"),
+                (TEST_PATH.joinpath(r"tsrc" + os.sep + "testmodules" + os.sep + "file2.dll"), path(r"c:\sys\bin\file2.dll"), "testmodule"),
+                (TEST_PATH.joinpath(r"tsrc" + os.sep + "data" + os.sep + "file1"), path(r"e:\sys\bin\file1"), "data"),
+                (TEST_PATH.joinpath(r"tsrc" + os.sep + "data" + os.sep + "file2"), path(r"e:\sys\bin\file2"), "data"),
+                (TEST_PATH.joinpath(r"tsrc" + os.sep + "data" + os.sep + "file3"), path(r"e:\sys\bin\file3"), "data"),
+                (TEST_PATH.joinpath(r"tsrc" + os.sep + "conf" + os.sep + "file1.cfg"), path(r"c:\sys\bin\file1.cfg"), "conf"),
+                (TEST_PATH.joinpath(r"tsrc" + os.sep + "conf" + os.sep + "file2.cfg"), path(r"c:\sys\bin\file2.cfg"), "conf"),
+                (TEST_PATH.joinpath(r"tsrc" + os.sep + "init" + os.sep + "TestFramework.ini"), path(r"c:\sys\bin\TestFramework.ini"), "engine_ini"),]
+            if "STIF" in harness:
+                self.src_dst1 = self.src_dst0
+            
+        elif harness == "EUNIT":
+            harness0 = harness1 = harness
+            self.src_dst1 = self.src_dst0
+            
+        self.mocker.restore()
+        test_plan = self.mocker.mock(count=False)
+        mocker.expect(test_plan["testrun_name"]).result("test")
+        mocker.expect(test_plan["harness"]).result(harness)
+        mocker.expect(test_plan["device_type"]).result("product")
+        mocker.expect(test_plan["plan_name"]).result("test plan")
+        mocker.expect(test_plan["diamonds_build_url"]).result(self.diamonds_build_url)
+        mocker.expect(test_plan["test_timeout"]).result("60")
+        mocker.expect(test_plan["eunitexerunner_flags"]).result("/E S60AppEnv /R Off")
+        mocker.expect(test_plan["eunitexerunner?flags"]).result(self.eunitexerunner_flags)
+        mocker.expect(test_plan["device_hwid"]).result("5425")
+        mocker.expect(test_plan["trace_enabled"]).result(self.trace_enabled)
+        mocker.expect(test_plan["ctc_enabled"]).result(self.ctc_enabled)
+        mocker.expect(test_plan["custom_dir"]).result("custom1A")
+        mocker.expect(test_plan.custom_dir).result(path(r"self.custom_dir"))
+        mocker.expect(test_plan["ctc_run_process_params"]).result(self.ctc_run_process_params)
+        mocker.expect(test_plan["report_email"]).result(self.report_email)
+        if self.trace_enabled == "False":
+            mocker.expect(test_plan.sets).result([
+                dict(name="set0", image_files=self.image_files, data_files=self.data_files,
+                     config_files=self.config_files, testmodule_files=self.testmodule_files,
+                     engine_ini_file=self.engine_ini_file, test_harness=harness0,src_dst=self.src_dst0,
+                     ctc_enabled=self.ctc_enabled, eunitexerunner_flags=self.eunitexerunner_flags,
+                     custom_dir = self.custom_dir, component_path=self.component_path),
+                dict(name="set1", image_files=self.image_files, data_files=self.data_files,
+                     config_files=self.config_files, testmodule_files=self.testmodule_files,
+                     engine_ini_file=self.engine_ini_file, test_harness=harness1, src_dst=self.src_dst1,
+                     ctc_enabled=self.ctc_enabled, eunitexerunner_flags=self.eunitexerunner_flags,
+                     custom_dir = self.custom_dir, component_path=self.component_path),
+            ])
+        else:
+            mocker.expect(test_plan.sets).result([
+                dict(name="set0", image_files=self.image_files, data_files=self.data_files,
+                     config_files=self.config_files, testmodule_files=self.testmodule_files,
+                     engine_ini_file=self.engine_ini_file, test_harness=harness0, src_dst=self.src_dst0,
+                     pmd_files=self.pmd_files, trace_activation_files=self.trace_activation_files,
+                     trace_path=self.file_store.joinpath("traces", "set0", "tracelog.blx"),
+                     ctc_enabled=self.ctc_enabled, eunitexerunner_flags=self.eunitexerunner_flags,
+                     custom_dir = self.custom_dir, component_path=self.component_path),
+                dict(name="set1", image_files=self.image_files, data_files=self.data_files,
+                     config_files=self.config_files, testmodule_files=self.testmodule_files,
+                     engine_ini_file=self.engine_ini_file, test_harness=harness1, src_dst=self.src_dst1,
+                     pmd_files=self.pmd_files, trace_activation_files=self.trace_activation_files,
+                     trace_path=self.file_store.joinpath("traces", "set1", "tracelog.blx"),
+                     ctc_enabled=self.ctc_enabled, eunitexerunner_flags=self.eunitexerunner_flags,
+                     custom_dir = self.custom_dir, component_path=self.component_path),])
+        mocker.expect(test_plan.post_actions).result([
+            ("EmailAction", (("subject", "Release testing"),
+                                 ("to", self.report_email))),
+#            ("FileStoreAction", (("to-folder", self.file_store),
+#                                 ("report-type", "ATS_REPORT"),
+#                                 ("date-format", "yyyyMMdd"),
+#                                 ("time-format", "HHmmss"))),
+#            ("FileStoreAction", (("to-folder", self.file_store),
+#                                 ("report-type", "STIF_COMPONENT_REPORT_ALL_CASES"),
+#                                 ("run-log", "true"),
+#                                 ("date-format", "yyyyMMdd"),
+#                                 ("time-format", "HHmmss"))),
+            ("DiamondsAction", ())])
+
+        self.mocker.replay()
+        self.test_plan = test_plan
+        
+        self.gen = adg.Ats3TemplateTestDropGenerator()
+        return self.gen.generate_xml(test_plan)
+#        for thar in test_harness:
+#            xml = self.generate_xml(thar)
+#            # Check basics.
+#            assert xml.find(".").tag == "test"
+#            assert xml.find("./name").text == "test"
+#            assert xml.find("./buildid").text == self.diamonds_build_url
+#            assert xml.find("./target").tag
+#            assert xml.find("./target/device").tag
+#            if self.test_plan["harness"] == "MULTI_HARNESS":
+#                harness_1, type_1, device_hwid_1, harness_2, type_2, device_hwid_2 = xml.findall("./target/device/property")
+#            else:
+#                harness_1, type_1, device_hwid_1 = xml.findall("./target/device/property")
+#            
+#            if self.test_plan["harness"] == "MULTI_HARNESS":
+#                assert harness_1.get("value") == "STIF"
+#                assert type_1.get("value") == "product"
+#                assert device_hwid_1.get("value") == "5425"
+#                assert harness_2.get("value") == "EUNIT"
+#                assert type_2.get("value") == "product"
+#                assert device_hwid_2.get("value") == "5425"
+#            else:
+#                assert harness_1.get("value") == thar
+#                assert type_1.get("value") == "product"
+#                assert device_hwid_1.get("value") == "5425"
+#
+#        # Check generation of the test plan.
+#        assert xml.find("./plan").get("name") == "test Plan"
+#        assert xml.find("./plan/session").tag 
+#        sets = xml.findall("./execution")
+#        assert len(sets) == 2
+#        assert sets[0].get("name") == "set0-"+str(TEST_PATH.joinpath("tsrc", "group"))
+#        assert sets[0].find("./target/device").tag
+    
+    def test_set_structure(self):
+        """Check that a <set> element's structure is valid."""
+        xml = self.generate_xml("STIF")
+        tstset = xml.find("./execution")
+        assert tstset.tag
+
+    def test_case_flash_elems(self):
+        """Checks flash target element in the test.xml file"""
+        xml = self.generate_xml("STIF")
+        found = False
+        for case in xml.findall(".//task"):
+            if case.find('type').text == 'FlashTask':
+                found = True
+                flashes = case.findall("./parameters/parameter")
+                assert len(flashes) == len(self.image_files)
+                for i, flash_file in enumerate(self.image_files):
+                    assert flashes[i].get("name") == "image-" + str(i + 1)
+                    assert flashes[i].get("value") == "ATS3Drop\\images\\" + flash_file.name
+        assert found
+
+    def test_case_steps(self):
+        """Checks cases in steps in the test.xml file"""
+        test_harness = ["STIF", "EUNIT", "MULTI_HARNESS"]
+        for thar in test_harness:
+            xml = self.generate_xml(thar)
+            #print et.tostring(xml.getroot())
+            steps = iter(xml.findall(".//task"))
+            steps.next() # Flash images
+            check_ctc_start(steps)
+            check_log_dir(steps)
+            if "MULTI_HARNESS" in thar:
+                self.check_install_step(steps, "STIF")
+                self.check_run_cases(steps, "STIF")
+                check_ctc_write(steps)
+                check_ctc_log(steps)
+                check_fetch_logs(steps, "STIF")
+                
+                steps.next() # Flash images
+                check_ctc_start(steps)
+                check_log_dir(steps)
+                self.check_install_step(steps, "EUNIT", set_count="1")
+                self.check_run_cases(steps, "EUNIT")
+                check_ctc_write(steps)
+                check_ctc_log(steps, "withpkgfiles")
+                check_fetch_logs(steps, "EUNIT")
+            else:
+                self.check_install_step(steps, thar)
+                self.check_run_cases(steps, thar)
+                check_ctc_write(steps)
+                check_ctc_log(steps)
+                check_fetch_logs(steps, thar)
+
+    def check_install_step(self, steps, harness, set_count="0"):
+        """Checks install steps in the test.xml file"""
+        if harness == "MULTI_HARNESS":
+            dst = [self.src_dst0, self.src_dst1]
+        else:
+            dst = [self.src_dst0]
+        if set_count == "1":
+            dst = [self.src_dst1]
+
+        for dest in dst:
+            for file1 in dest:
+                step = steps.next()
+                (drive, _) = ntpath.splitdrive(file1[1])
+                filename = ntpath.basename(file1[1])
+                letter = drive[0]
+                #if "FileUploadTask" in step.get("type"):
+                assert step.findtext("./type") == "FileUploadTask"
+                params = step.findall("./parameters/parameter")            
+                src = params[0].get("value")
+                assert ntpath.basename(src) == filename
+                assert ntpath.dirname(src) == "ATS3Drop\\set" + set_count + '\\' + letter + '\\' + "sys\\bin"
+                dst = params[1].get("value")
+                assert ntpath.basename(dst) == filename
+                assert ntpath.dirname(dst) == drive + "\\sys\\bin"
+
+    def check_run_cases(self, steps, harness="STIF"):
+        """Checks run cases in the test.xml file"""
+        step = steps.next()
+        if harness == "STIF":
+            _ = self.engine_ini_file 
+            assert step.findtext("./type") == "StifRunCasesTask"
+            params = step.findall("./parameters/parameter")
+            assert params[0].get("value") == "*"
+            assert params[1].get("value") == "60"
+            assert params[2].get("value") == "c:\\sys\\bin\\" + ntpath.basename(self.engine_ini_file)
+        elif harness == "EUNIT":
+            _ = self.testmodule_files[0]
+            assert step.findtext("./type") == "EUnitTask"
+            params = step.findall("./parameters/parameter")
+            assert params[0].get("value") == path(r"z:\sys\bin\EUNITEXERUNNER.EXE")
+            assert params[1].get("value") == path(r"c:\Shared\EUnit\logs\file1_log.xml")
+            assert params[2].get("value") == "/E S60AppEnv /R Off /F file1 /l xml file1.dll"
+            assert params[3].get("value") == "60"
+            step = steps.next()
+            _ = self.testmodule_files[1]
+            assert step.findtext("./type") == "EUnitTask"
+            params = step.findall("./parameters/parameter")
+            assert params[0].get("value") == path(r"z:\sys\bin\EUNITEXERUNNER.EXE")
+            assert params[1].get("value") == path(r"c:\Shared\EUnit\logs\file2_log.xml")
+            assert params[2].get("value") == "/E S60AppEnv /R Off /F file2 /l xml file2.dll"
+            assert params[3].get("value") == "60"
+
+    def test_steps_trace_enabled(self):
+        """checks if traing is enabled"""
+        test_harness = ["STIF"]
+        for thar in test_harness:
+            xml = self.generate_xml(thar, trace_enabled="True")
+            steps = iter(xml.findall(".//task"))
+            steps.next() # Flash images
+            check_ctc_start(steps)
+            check_log_dir(steps)
+            self.check_install_step(steps, thar)
+            #check_trace_start(steps, self.file_store)
+            self.check_run_cases(steps)
+            #check_trace_end_steps(steps, self.file_store)
+            check_ctc_write(steps)
+            check_ctc_log(steps)
+            check_fetch_logs(steps)
+        
+    def test_post_actions(self):
+        "Post actions are inserted into XML."
+        xml = self.generate_xml("STIF")
+        post_actions = xml.findall(".//action")
+        check_send_email_action(post_actions[0], self.report_email)
+        #check_ats_report_action(post_actions[1], self.file_store)
+        #check_stif_report_action(post_actions[2], self.file_store)
+        check_diamonds_action(post_actions[1])
+#    def test_files(self):
+#        """Tests if the files are created for mock"""
+#        xml = self.generate_xml("STIF")
+#        files = iter(xml.findall("./files/file"))
+#        assert files.next().text == r"ATS3Drop/images/file1.fpsx"
+#        assert files.next().text == r"ATS3Drop/images/file2.fpsx"
+#        assert files.next().text == r"ATS3Drop/set0/c/sys/bin/file1.dll"
+#        assert files.next().text == r"ATS3Drop/set0/c/sys/bin/file2.dll"
+#        assert files.next().text == r"ATS3Drop/set0/e/sys/bin/file1"
+#        assert files.next().text == r"ATS3Drop/set0/e/sys/bin/file2"
+#        assert files.next().text == r"ATS3Drop/set0/e/sys/bin/file3"
+#        assert files.next().text == r"ATS3Drop/set0/c/sys/bin/file1.cfg"
+#        assert files.next().text == r"ATS3Drop/set0/c/sys/bin/file2.cfg"        
+#        assert files.next().text == r"ATS3Drop/set0/c/sys/bin/TestFramework.ini"
+#        assert files.next().text == r"ATS3Drop/set1/c/sys/bin/file1.dll"
+#        assert files.next().text == r"ATS3Drop/set1/c/sys/bin/file2.dll"
+#        assert files.next().text == r"ATS3Drop/set1/e/sys/bin/file1"
+#        assert files.next().text == r"ATS3Drop/set1/e/sys/bin/file2"
+#        assert files.next().text == r"ATS3Drop/set1/e/sys/bin/file3"
+#        assert files.next().text == r"ATS3Drop/set1/c/sys/bin/file1.cfg"
+#        assert files.next().text == r"ATS3Drop/set1/c/sys/bin/file2.cfg"
+#        assert files.next().text == r"ATS3Drop/set1/c/sys/bin/TestFramework.ini"
+#        self.assertRaises(StopIteration, files.next)
+#        xml = self.generate_xml(harness="STIF", trace_enabled="True")
+#        files = iter(xml.findall("./files/file"))
+#        assert files.next().text == r"ATS3Drop/images/file1.fpsx"
+#        assert files.next().text == r"ATS3Drop/images/file2.fpsx"
+#        assert files.next().text == r"ATS3Drop/pmds/pmd_file.pmd"
+#        assert files.next().text == r"ATS3Drop/set0/trace_init/trace_activation_1.xml"
+#        assert files.next().text == r"ATS3Drop/set0/c/sys/bin/file1.dll"
+#        assert files.next().text == r"ATS3Drop/set0/c/sys/bin/file2.dll"
+#        assert files.next().text == r"ATS3Drop/set0/e/sys/bin/file1"
+#        assert files.next().text == r"ATS3Drop/set0/e/sys/bin/file2"
+#        assert files.next().text == r"ATS3Drop/set0/e/sys/bin/file3"
+#        assert files.next().text == r"ATS3Drop/set0/c/sys/bin/file1.cfg"
+#        assert files.next().text == r"ATS3Drop/set0/c/sys/bin/file2.cfg"
+#        assert files.next().text == r"ATS3Drop/set0/c/sys/bin/TestFramework.ini"
+#        assert files.next().text == r"ATS3Drop/set1/trace_init/trace_activation_1.xml"
+#        assert files.next().text == r"ATS3Drop/set1/c/sys/bin/file1.dll"
+#        assert files.next().text == r"ATS3Drop/set1/c/sys/bin/file2.dll"
+#        assert files.next().text == r"ATS3Drop/set1/e/sys/bin/file1"
+#        assert files.next().text == r"ATS3Drop/set1/e/sys/bin/file2"
+#        assert files.next().text == r"ATS3Drop/set1/e/sys/bin/file3"
+#        assert files.next().text == r"ATS3Drop/set1/c/sys/bin/file1.cfg"
+#        assert files.next().text == r"ATS3Drop/set1/c/sys/bin/file2.cfg"
+#        assert files.next().text == r"ATS3Drop/set1/c/sys/bin/TestFramework.ini"
+#
+#        self.assertRaises(StopIteration, files.next)
+    def test_generate_drop(self):
+        """Manifest for ATS3Drop directory structure is generated."""
+        xml = self.generate_xml("STIF")
+        strbuffer = StringIO()
+        self.gen.generate_drop(self.test_plan, xml, strbuffer)
+
+        zfile = zipfile.ZipFile(strbuffer, "r")
+        try:
+            contents = sorted(tpath for tpath in zfile.namelist())
+            expected = sorted(tpath
+                           for tpath in [r"ATS3Drop/set0/c/sys/bin/file1.cfg",
+                                     r"ATS3Drop/set0/c/sys/bin/file2.cfg",
+                                     r"ATS3Drop/set0/e/sys/bin/file1",
+                                     r"ATS3Drop/set0/e/sys/bin/file2",
+                                     r"ATS3Drop/set0/e/sys/bin/file3",
+                                     r"ATS3Drop/images/file1.fpsx",
+                                     r"ATS3Drop/images/file2.fpsx",
+                                     r"ATS3Drop/set0/c/sys/bin/TestFramework.ini",
+                                     r"ATS3Drop/set0/c/sys/bin/file1.dll",
+                                     r"ATS3Drop/set0/c/sys/bin/file2.dll",
+                                     r"ATS3Drop/set1/c/sys/bin/file1.cfg",
+                                     r"ATS3Drop/set1/c/sys/bin/file2.cfg",
+                                     r"ATS3Drop/set1/e/sys/bin/file1",
+                                     r"ATS3Drop/set1/e/sys/bin/file2",
+                                     r"ATS3Drop/set1/e/sys/bin/file3",
+                                     r"ATS3Drop/set1/c/sys/bin/TestFramework.ini",
+                                     r"ATS3Drop/set1/c/sys/bin/file1.dll",
+                                     r"ATS3Drop/set1/c/sys/bin/file2.dll",
+                                     r"test.xml"])
+            diff = difflib.context_diff(expected, contents)
+            assert contents == expected, "\n".join(diff)
+        finally:
+            zfile.close()
+
+    def test_generate_drop_trace_enabled(self):
+        "Manifest for ATS3Drop directory structure is generated when trace enabled."
+        xml = self.generate_xml(harness="STIF", trace_enabled="True")
+        strbuffer = StringIO()
+        
+        self.gen.generate_drop(self.test_plan, xml, strbuffer)
+        zfile = zipfile.ZipFile(strbuffer, "r")
+        try:
+            contents = sorted(tpath for tpath in zfile.namelist())
+            expected = sorted(tpath
+                           for tpath in [r"ATS3Drop/set0/c/sys/bin/file1.cfg",
+                                     r"ATS3Drop/set0/c/sys/bin/file2.cfg",
+                                     r"ATS3Drop/set0/e/sys/bin/file1",
+                                     r"ATS3Drop/set0/e/sys/bin/file2",
+                                     r"ATS3Drop/set0/e/sys/bin/file3",
+                                     r"ATS3Drop/set0/trace_init/trace_activation_1.xml",
+                                     r"ATS3Drop/images/file1.fpsx",
+                                     r"ATS3Drop/images/file2.fpsx",
+                                     r"ATS3Drop/pmds/pmd_file.pmd",
+                                     r"ATS3Drop/set0/c/sys/bin/TestFramework.ini",
+                                     r"ATS3Drop/set0/c/sys/bin/file1.dll",
+                                     r"ATS3Drop/set0/c/sys/bin/file2.dll",
+                                     r"ATS3Drop/set1/c/sys/bin/file1.cfg",
+                                     r"ATS3Drop/set1/c/sys/bin/file2.cfg",
+                                     r"ATS3Drop/set1/e/sys/bin/file1",
+                                     r"ATS3Drop/set1/e/sys/bin/file2",
+                                     r"ATS3Drop/set1/e/sys/bin/file3",
+                                     r"ATS3Drop/set1/trace_init/trace_activation_1.xml",
+                                     r"ATS3Drop/set1/c/sys/bin/TestFramework.ini",
+                                     r"ATS3Drop/set1/c/sys/bin/file1.dll",
+                                     r"ATS3Drop/set1/c/sys/bin/file2.dll",
+                                     r"test.xml"])
+            diff = difflib.context_diff(expected, contents)
+            assert contents == expected, "\n".join(diff)
+        finally:
+            zfile.close()
+            
+class TestDropGenerationWithSis(mocker.MockerTestCase):
+    """
+    Unit tests for the test.xml generation with sis files.
+    """
+    def __init__(self, methodName="runTest"):
+        mocker.MockerTestCase.__init__(self, methodName)
+        self.sis_files = None
+        self.image_files = None
+        self.engine_ini_file = None
+        self.report_email = None
+        self.file_store = None
+        self.diamonds_build_url = None
+        self.harness = None
+        self.test_plan = None
+        self.gen = None
+        self.src_dst = []
+        self.component_path = None
+        self.ctc_run_process_params = None
+
+    def generate_xml(self):
+        """Geberates XML if sis files"""
+        def files(*paths):
+            """generates paths for the files"""
+            return [TEST_PATH.joinpath("tsrc", tpath) for tpath in paths]
+        self.sis_files = files("sis/file1.sisx", "sis/file2.sisx", "sis/file3.sisx")
+        self.image_files = files("output/images/file1.fpsx", "output/images/file2.fpsx")
+        self.engine_ini_file = files("init/TestFramework.ini")[0]
+        self.report_email = "test.receiver@company.com"
+        self.file_store = path("path/to/reports")
+        self.diamonds_build_url = "http://diamonds.nmp.company.com/diamonds/builds/1234"
+        self.harness = "STIF"
+        self.component_path = str(TEST_PATH.joinpath("tsrc", "group"))
+        self.ctc_run_process_params = r"10.0.0.1#x:\ats\drop0.zip#1"
+        
+        test_plan = self.mocker.mock(count=False)
+        mocker.expect(test_plan["testrun_name"]).result("test")
+        mocker.expect(test_plan["harness"]).result("STIF")
+        mocker.expect(test_plan["device_type"]).result("product")
+        mocker.expect(test_plan["plan_name"]).result("test plan")
+        mocker.expect(test_plan["diamonds_build_url"]).result(self.diamonds_build_url)
+        mocker.expect(test_plan["test_timeout"]).result("60")
+        mocker.expect(test_plan["device_hwid"]).result("5425")
+        mocker.expect(test_plan["ctc_enabled"]).result("False")
+        mocker.expect(test_plan["trace_enabled"]).result("False")
+        mocker.expect(test_plan["custom_dir"]).result("CustomC")
+        mocker.expect(test_plan.custom_dir).result(path(r"self.custom_dir"))
+        mocker.expect(test_plan["ctc_run_process_params"]).result(self.ctc_run_process_params)
+        mocker.expect(test_plan["report_email"]).result(self.report_email)
+        mocker.expect(test_plan.sets).result([
+            dict(name="set0", image_files=self.image_files, sis_files=self.sis_files,
+                 engine_ini_file=self.engine_ini_file, test_harness=self.harness, ctc_enabled="False", component_path=self.component_path),])
+        mocker.expect(test_plan.post_actions).result([])
+        self.mocker.replay()
+        self.test_plan = test_plan
+        
+        self.gen = adg.Ats3TemplateTestDropGenerator()
+        return self.gen.generate_xml(test_plan)
+
+    def test_case_steps(self):
+        """Checks cases in steps in the test.xml file"""
+        xml = self.generate_xml()
+        steps = iter(xml.findall(".//task"))
+        steps.next() # Flash images
+        steps.next() # Stif log dir creation.
+        self.check_install_sis_files(steps)
+        steps.next() # Install engine ini.
+        self.check_install_sis_to_device(steps)
+        steps.next() # Run cases.
+        steps.next() # Fetch logs.
+        self.assertRaises(StopIteration, steps.next)
+
+    def check_install_sis_files(self, steps):
+        """Checks sis files install steps in the test.xml file"""
+        for filename in self.sis_files:
+            step = steps.next()
+            assert step.findtext("./type") == "FileUploadTask"
+            params = step.findall("./parameters/parameter")
+            # TO DO: Should sis files be specified outside of the set?
+            assert params[0].get("value") == "ATS3Drop\\set0\\sis\\" + ntpath.basename(filename)
+            assert params[1].get("value") == "c:\\testframework\\" + ntpath.basename(filename)
+
+    def check_install_sis_to_device(self, steps):
+        """Checks sis files installation on the device"""
+        for filename in self.sis_files:
+            step = steps.next()
+            assert step.findtext("./type") == "InstallSisTask"
+            params = step.findall("./parameters/parameter")
+            assert params[-1].get("value") == "c:\\testframework\\" + ntpath.basename(filename)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncorecpythontests/test_ats4_aste.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,517 @@
+# -*- coding: latin-1 -*-
+
+#============================================================================ 
+#Name        : test_ats4_aste.py 
+#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:
+#===============================================================================
+
+""" Testing ATS4 ASTE framework. """
+
+# pylint: disable-msg=E1101, R0903, R0911, R0912, W0603, W0142, R0902, R0201
+#E1101 => Mocker shows mockery
+#C0302 => too many lines
+#W0142 => used * or ** magic 
+#W0603 => used global
+#R* during refactoring
+
+from cStringIO import StringIO
+from xml.etree.ElementTree import fromstring
+from xml.etree import ElementTree as et
+import difflib
+import logging
+logging.getLogger().setLevel(logging.ERROR)
+import re
+import tempfile
+import zipfile
+import os
+
+from path import path # pylint: disable-msg=F0401
+import mocker # pylint: disable-msg=F0401
+
+import ats3.aste
+
+TEST_PATH = None
+TEST_FILES = {}
+TEST_ASSET_FILES = {}
+TSRC = None
+OUTPUT = None
+TEST_ZIP_PATH = None
+
+# Shortcuts
+E = et.Element
+SE = et.SubElement
+
+_logger = logging.getLogger("test.ats4_aste")
+
+class Bunch(object):
+    """ handle all the parameters """
+    def __init__(self, **kwargs):
+        self.__dict__.update(kwargs)
+
+def equal_xml(xml1, xml2):
+    """Check the equality of the given XML snippets.
+    
+    Tag name equality:
+    
+    >>> equal_xml('<a/>', '<a/>')
+    True
+    >>> equal_xml('<a/>', '<b/>')
+    False
+    
+    Attribute equality:
+    
+    >>> equal_xml('<a k="v"/>', '<a k="v"/>')
+    True
+    >>> equal_xml('<a k="v"/>', '<a k="w"/>')
+    False
+    
+    Text content equality:
+    
+    >>> equal_xml('<a>v</a>', '<a>v</a>')
+    True
+    >>> equal_xml('<a>v</a>', '<a>w</a>')
+    False
+    >>> equal_xml('<a>v</a>', '<a></a>')
+    False
+    
+    Text content equality when whitespace differs:
+    >>> equal_xml('<a>v</a>', '<a>v </a>')
+    True
+
+    Equality of child elements:
+    
+    >>> equal_xml('<a><b><c k="v"/></b></a>', '<a><b><c k="v"/></b></a>')
+    True
+    >>> equal_xml('<a><b><c k="v"/></b></a>', '<a><b><c k="w"/></b></a>')
+    False
+    >>> equal_xml('<a><b><c k="v"/>v</b></a>', '<a><b><c k="v"/>w</b></a>')
+    False
+    >>> equal_xml('<a><b><c k="v"/>v</b></a>', '<a><b><c k="v"/>v </b></a>')
+    True
+    
+    """
+    if isinstance(xml1, basestring):
+        xml1 = fromstring(xml1)
+    if isinstance(xml2, basestring):
+        xml2 = fromstring(xml2)
+    if xml1.tag != xml2.tag:
+        return False
+    if xml1.attrib != xml2.attrib:
+        return False
+    if xml1.text:
+        if not xml2.text:
+            return False
+    if xml2.text:
+        if not xml1.text:
+            return False
+    if xml1.text and xml2.text and xml1.text.strip() != xml2.text.strip():
+        return False
+    if xml1.tail is not None and xml2.tail is not None:
+        if xml1.tail.strip() != xml2.tail.strip():
+            return False
+    elif xml1.tail != xml2.tail:
+        return False
+    children1 = list(xml1.getchildren())
+    children2 = list(xml2.getchildren())
+    if len(children1) != len(children2):
+        return False
+    for child1, child2 in zip(children1, children2):
+        return equal_xml(child1, child2)
+    return True        
+
+
+def setup_module():
+    """ setup any values needed for the tests"""
+    global TEST_PATH, OUTPUT, TEST_ZIP_PATH
+    TEST_PATH = path(tempfile.mkdtemp())
+    OUTPUT = TEST_PATH.joinpath("TestAsset")
+    TEST_ZIP_PATH = TEST_PATH.joinpath("test_zip")
+    asset = TEST_PATH
+    component = TEST_PATH
+    component.joinpath("group").makedirs()
+    for path_parts in (("output", "images", "file1.fpsx"),
+                       ("output", "images", "file2.fpsx")):
+        filename = component.joinpath(*path_parts)
+        if not filename.parent.exists():
+            filename.parent.makedirs()
+        filename.touch()
+        TEST_FILES.setdefault(path_parts[1], []).append(file)
+    for path_parts in (("TestAsset", "Localisation", "S60", "localisation.txt"),
+                       ("TestAsset", "TestCases", "TC_100_Test0", "file1.sis"),
+                       ("TestAsset", "TestCases", "TC_100_Test0", "file2.tcf"),
+                       ("TestAsset", "Tools", "TestCaseCreator", "test_creator.ini"),
+                       ("TestAsset", "testdrop.xml"),):
+        filename = asset.joinpath(*path_parts)
+        if not filename.parent.exists():
+            filename.parent.makedirs()
+        filename.touch()
+        TEST_ASSET_FILES.setdefault(path_parts[1], []).append(file)
+    try:
+        zip_component = TEST_ZIP_PATH
+        filename = zip_component.joinpath("TestAsset.zip")
+        if not filename.parent.exists():
+            filename.parent.makedirs()
+        filename.touch()
+        zfile = zipfile.ZipFile(zip_component.joinpath("TestAsset.zip"), "w", zipfile.ZIP_DEFLATED)
+        for p_temp in TEST_ASSET_FILES:
+            print p_temp
+            zfile.write(p_temp)
+        zfile.close()
+        TEST_ASSET_FILES.setdefault("ZIP", []).append(file)
+    except OSError:
+        print "Got except OSError. Continuing...\n"  
+        
+
+def teardown_module():
+    """ tidy up after all the tests have run"""
+    path(TEST_PATH).rmtree()
+
+
+class TestTestPlan(mocker.MockerTestCase):
+    """ the main test"""
+    def __init__(self, methodName="runTest"):
+        mocker.MockerTestCase.__init__(self, methodName)
+        
+    def setUp(self):
+        """setup the values required for this test"""
+        opts = Bunch(testrun_name="testrun", harness="ASTE", 
+                     device_type="product", plan_name="ats3_test_plan", diamonds_build_url="",
+                     software_version="W810", software_release="SPP 51.32", device_language="English",
+                     testasset_location=TEST_PATH.joinpath("TestAsset"), testasset_caseids="100",repeat="1", report_email="",
+                     file_store=path(), test_timeout="60", device_hwid="5425", test_type="smoke")
+        self.tp_temp = ats3.aste.AsteTestPlan(opts)
+        self.image_files = TEST_FILES["images"]
+        self.test_timeout = self.tp_temp["test_timeout"]
+        self.device_hwid = self.tp_temp["device_hwid"]
+        self.test_harness = self.tp_temp["harness"]
+        self.device_language = self.tp_temp["device_language"]
+        self.software_release = self.tp_temp["software_release"]
+        self.software_version = self.tp_temp["software_version"]
+        self.testasset_caseids = self.tp_temp["testasset_caseids"]
+        self.testasset_location = self.tp_temp["testasset_location"]
+        self.test_type = self.tp_temp["test_type"]
+        
+        if self.testasset_location != "":
+            self.test_asset_testcases = [self.testasset_location.joinpath("TestCases", "TC_100_Test0", "file1.sis"), self.testasset_location.joinpath("TestCases", "TC_100_Test0", "file2.tcf")]
+            self.test_asset_tools = [self.testasset_location.joinpath("Tools", "TestCaseCreator", "test_creator.ini")]
+            self.test_asset_localisation = [self.testasset_location.joinpath("Localisation", "S60", "localisation.txt")]
+            self.test_asset_testdrop = self.testasset_location.joinpath("testdrop.xml")
+        else:
+            self.test_asset_testcases = TEST_ASSET_FILES["TestCases"]
+            self.test_asset_tools = TEST_ASSET_FILES["Tools"]
+            self.test_asset_localisation = TEST_ASSET_FILES["Localisation"]
+            self.test_asset_testdrop = TEST_ASSET_FILES["testdrop.xml"]
+
+
+    def test_creation(self):
+        """test the creation"""
+        assert self.tp_temp["testrun_name"] == "testrun"
+        assert self.tp_temp["harness"] == "ASTE"
+        assert self.tp_temp["device_type"] == "product"
+
+    def test_insert_set(self):
+        """ test insert a set"""
+        self.tp_temp.insert_set(image_files=self.image_files,
+                           test_timeout=self.test_timeout)
+        
+        assert self.tp_temp.sets[0] == dict(name="set0",
+                                       image_files=self.image_files,
+                                       test_timeout=self.test_timeout,
+                                       test_harness=self.test_harness)
+
+    def test_post_actions_email(self):
+        """test the post test actions email sent"""
+        assert not self.tp_temp.post_actions
+        receiver = "joe.average@example.com"
+        self.tp_temp.report_email = receiver
+        assert len(self.tp_temp.post_actions) == 1
+        action, items = self.tp_temp.post_actions[0]
+        items = dict(items)
+        assert action == "SendEmailAction"
+        assert items["to"] == receiver
+
+    def test_post_actions_ats3_report_only(self):
+        """test the post test actions only a report sent"""
+        file_store = path("path/to/files")
+        self.tp_temp.file_store = file_store
+        self.tp_temp.harness = "EUNIT"
+        assert len(self.tp_temp.post_actions) == 2
+        action, items = self.tp_temp.post_actions[0]
+        items = dict(items)
+        assert action == "FileStoreAction"
+        assert items["report-type"] == "ATS_REPORT"
+        assert items["to-folder"].startswith(file_store)
+        assert items["to-folder"].endswith("ATS3_REPORT")
+
+    def test_post_actions_aste(self):
+        """test the post actions for ASTE"""
+        file_store = path("path/to/files")
+        self.tp_temp.file_store = file_store
+        assert len(self.tp_temp.post_actions) == 2
+        action, items = self.tp_temp.post_actions[1]
+        items = dict(items)
+        assert action == "FileStoreAction"
+        assert items["report-type"] == "ASTE_REPORT"
+        assert items["to-folder"].startswith(file_store)
+        assert items["to-folder"].endswith("ASTE_REPORT")
+
+    def test_post_actions_diamonds(self):
+        """test the post test actions that diamonds is informed"""
+        self.tp_temp.diamonds_build_url = "http://diamonds.nmp.company.com/diamonds/builds/1234"
+        assert len(self.tp_temp.post_actions) == 1
+        action, items = self.tp_temp.post_actions[0]
+        assert action == "DiamondsAction"
+        assert not items
+
+
+class TestXMLGeneration(mocker.MockerTestCase):
+    """
+    Unit tests for the test.xml generation.
+    """    
+
+    def __init__(self, methodName="runTest"):
+        self.image_files = None
+        self.report_email = None
+        self.diamonds_build_url = None
+        self.test_harness = None
+        self.file_store = None
+        self.testasset_location = None
+        self.test_plan = None
+        self.gen = None
+        mocker.MockerTestCase.__init__(self, methodName)
+        
+        
+    def generate_xml(self):
+        """ generate the XML """
+        def files(*paths):
+            """get list of tsrc files"""
+            return [TEST_PATH.joinpath(p) for p in paths]
+        self.image_files = files("output/images/file1.fpsx", "output/images/file2.fpsx")
+        self.report_email = "test.receiver@company.com"
+        self.diamonds_build_url = "http://diamonds.nmp.company.com/diamonds/builds/1234"
+        self.test_harness = "ASTE"
+        self.file_store = path(r"path/to/reports")
+        self.testasset_location = OUTPUT
+        
+        self.mocker.restore()
+        test_plan = self.mocker.mock(count=False)
+        mocker.expect(test_plan["testrun_name"]).result("test")
+        mocker.expect(test_plan["harness"]).result("ASTE")
+        mocker.expect(test_plan["device_type"]).result("product")
+        mocker.expect(test_plan["plan_name"]).result("test plan")
+        mocker.expect(test_plan["diamonds_build_url"]).result(self.diamonds_build_url)
+        mocker.expect(test_plan["test_timeout"]).result("60")
+        mocker.expect(test_plan["device_hwid"]).result("5425")
+        mocker.expect(test_plan["testasset_location"]).result(self.testasset_location)
+        mocker.expect(test_plan["testasset_caseids"]).result("100")
+        mocker.expect(test_plan["report_email"]).result(self.report_email)
+        mocker.expect(test_plan["software_release"]).result("SPP 51.32")
+        mocker.expect(test_plan["software_version"]).result("W810")
+        mocker.expect(test_plan["device_language"]).result("English")
+        mocker.expect(test_plan["test_type"]).result("smoke")
+        mocker.expect(test_plan["temp_directory"]).result(TEST_PATH)
+        mocker.expect(test_plan.sets).result([
+            dict(name="set0", image_files=self.image_files, test_harness="ASTE")])
+        mocker.expect(test_plan.post_actions).result([
+            ("EmailAction", (("subject", "Release testing"),
+                                 ("to", self.report_email))),
+#            ("FileStoreAction", (("to-folder", self.file_store),
+#                                 ("report-type", "ATS_REPORT"),
+#                                 ("date-format", "yyyyMMdd"),
+#                                 ("time-format", "HHmmss"))),
+#            ("FileStoreAction", (("to-folder", self.file_store),
+#                                 ("report-type", "ASTE_REPORT"),
+#                                 ("run-log", "true"),
+#                                 ("date-format", "yyyyMMdd"),
+#                                 ("time-format", "HHmmss"))),
+            ("DiamondsAction", ())
+        ])
+        
+        self.mocker.replay()
+        self.test_plan = test_plan
+        
+        self.gen = ats3.aste.AsteTemplateTestDropGenerator()
+        return self.gen.generate_xml(test_plan)
+
+    def test_basic_structure(self):
+        """Check that the overall test.xml structure is valid."""
+        _ = self.generate_xml()
+        # Check basics.
+#        assert xml.find(".").tag == "test"
+#        assert xml.find("./name").text == "test"
+#        assert xml.find("./buildid").text == self.diamonds_build_url
+#        assert xml.find("./target").tag
+#        assert xml.find("./target/device").tag
+#        harness, hardware, device_hwid = xml.findall("./target/device/property")
+#        softwareVersion, softwareRelease, deviceLanguage = xml.findall("./target/device/setting")
+#        assert harness.get("value") == "ASTE"
+#        assert hardware.get("value") == "product"
+#        assert softwareVersion.get("value") == "W810"
+#        assert softwareRelease.get("value") == "SPP 51.32"
+#        assert deviceLanguage.get("value") == "English"
+#        assert device_hwid.get("value") == "5425"
+#        
+#        # Check generation of the test plan.
+#        assert xml.find("./plan").get("name") == "Plan smoke product"
+#        assert xml.find("./plan/session").tag 
+#        sets = xml.findall("./plan/session/set")
+#        assert len(sets) == 1
+#        assert sets[0].get("name") == "set0"
+#        assert sets[0].find("./target/device").tag
+
+    def test_set_structure(self):
+        """Check that a <set> element's structure is valid."""
+        _ = self.generate_xml()
+#        tstset = xml.find("./plan/session/set")
+#        assert tstset.tag
+#        case = tstset.find("./case")
+#        assert case.tag
+#        assert case.get("name") == "set0 case"                
+        
+    def test_case_flash_elems(self):
+        """ Test case flash elems. """
+        xml = self.generate_xml()
+        found = False
+        for case in xml.findall(".//task"):
+            if case.find('type').text == 'FlashTask':
+                found = True
+                flashes = case.findall("./parameters/parameter")
+                assert len(flashes) == len(self.image_files)
+                for i, flash_file in enumerate(self.image_files):
+                    assert flashes[i].get("name") == "image-" + str(i + 1)
+                    assert flashes[i].get("value") == "ATS3Drop\\images\\" + flash_file.name
+        assert found
+    
+    def test_steps(self):
+        """test the steps """
+        xml = self.generate_xml()
+        steps = iter(xml.findall(".//task"))
+        _ = steps.next()
+        _ = steps.next()
+        self.check_executeasset_step(steps)
+
+    def check_executeasset_step(self, steps):
+        """ test execute as asset steps"""
+        step = steps.next()
+        assert step.findtext("./type") == "SetTestAssetPackageTask"
+        params = step.findall("./parameters/parameter")
+        assert params[0].get("value") == "ATS3Drop\\TestAssets\\TestAsset.zip"
+
+    def test_post_actions(self):
+        """Post actions are inserted into XML."""
+        xml = self.generate_xml()        
+        post_actions = xml.findall(".//action")
+        self.check_send_email_action(post_actions[0])
+#        self.check_ats_report_action(post_actions[1])
+#        self.check_aste_report_action(post_actions[2])
+        self.check_diamonds_action(post_actions[1])
+
+    def check_send_email_action(self, action):
+        """ check the email is sent"""
+        assert action.findtext("./type") == "EmailAction"
+        params = action.findall("./parameters/parameter")
+        assert params[0].get("name") == "subject"
+        #assert params[0].get("value") == "email subject"
+        #assert params[1].get("name") == "type"
+        #assert params[1].get("value") == "ATS3_REPORT"
+        #assert params[2].get("name") == "send-files"
+        #assert params[2].get("value") == "true"
+        assert params[1].get("name") == "to"
+        assert params[1].get("value") == self.report_email
+
+    def check_ats_report_action(self, action):
+        """check the ATS report is created"""
+        assert action.findtext("./type") == "FileStoreAction"
+        params = action.findall("./parameters/parameter")
+        assert params[0].get("name") == "to-folder"
+        assert params[0].get("value") == self.file_store
+        assert params[1].get("name") == "report-type"
+        assert params[1].get("value") == "ATS_REPORT"
+        assert params[2].get("name") == "date-format"
+        assert params[2].get("value") == "yyyyMMdd"
+        assert params[3].get("name") == "time-format"
+        assert params[3].get("value") == "HHmmss"
+
+    def check_aste_report_action(self, action):
+        """check the ASTE report is created"""
+        assert action.findtext("./type") == "FileStoreAction"
+        params = action.findall("./parameters/parameter")
+        assert params[0].get("name") == "to-folder"
+        assert params[0].get("value") == self.file_store
+        assert params[1].get("name") == "report-type"
+        assert params[1].get("value") == "ASTE_REPORT"
+        assert params[2].get("name") == "run-log"
+        assert params[2].get("value") == "true"
+        assert params[3].get("name") == "date-format"
+        assert params[3].get("value") == "yyyyMMdd"
+        assert params[4].get("name") == "time-format"
+        assert params[4].get("value") == "HHmmss"
+        
+    def check_diamonds_action(self, action):
+        """ check the diamonds actions are performed"""
+        assert action.findtext("./type") == "DiamondsAction"
+        assert not action.findall("./parameters/parameter")
+    
+    def test_files(self):
+        """test the files"""
+        _ = self.generate_xml()
+#        files = iter(xml.findall("./files/file"))
+#        assert files.next().text == r"ATS3Drop" + os.sep + "images" + os.sep + "file1.fpsx"
+#        assert files.next().text == r"ATS3Drop" + os.sep + "images" + os.sep + "file2.fpsx"
+#        assert files.next().text == r"ATS3Drop" + os.sep + "TestAssets" + os.sep + "TestAsset.zip"
+#        self.assertRaises(StopIteration, files.next)
+        
+    def test_generate_testasset_zip(self):
+        """ test the generation of test assets"""
+        self.generate_xml()
+        if re.search(r"[.]zip", self.test_plan["testasset_location"]):
+            pass
+        else:
+            strbuffer = StringIO()
+            assert strbuffer == self.gen.generate_testasset_zip(self.test_plan, strbuffer)
+            zfile = zipfile.ZipFile(strbuffer, "r")
+            try:
+                contents = sorted(path(p).normpath() for p in zfile.namelist())
+                expected = sorted(path(p).normpath()
+                               for p in [(r"Localisation" + os.sep + "S60" + os.sep + "localisation.txt"),
+                                         (r"TestCases" + os.sep + "TC_100_Test0" + os.sep + "file1.sis"),
+                                         (r"TestCases" + os.sep + "TC_100_Test0" + os.sep + "file2.tcf"),
+                                         (r"Tools" + os.sep + "TestCaseCreator" + os.sep + "test_creator.ini"),
+                                         (r"testdrop.xml")])
+                diff = difflib.context_diff(expected, contents)
+                assert contents == expected, "\n".join(diff)
+            finally:
+                zfile.close()
+        
+    def test_generate_drop(self):
+        """Manifest for ATS3Drop directory structure is generated."""
+        xml = self.generate_xml()
+        strbuffer = StringIO()
+
+        self.gen.generate_drop(self.test_plan, xml, strbuffer)
+        zfile = zipfile.ZipFile(strbuffer, "r")
+        try:
+            contents = sorted(path(p).normpath() for p in zfile.namelist())
+            expected = sorted(path(p).normpath()
+                           for p in [r"ATS3Drop" + os.sep + "images" + os.sep + "file1.fpsx",
+                                     r"ATS3Drop" + os.sep + "images" + os.sep + "file2.fpsx",
+                                     r"ATS3Drop" + os.sep + "TestAssets" + os.sep + "TestAsset.zip",
+                                     r"test.xml"])
+            diff = difflib.context_diff(expected, contents)
+            assert contents == expected, "\n".join(diff)
+        finally:
+            zfile.close()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncorecpythontests/test_atsant.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,31 @@
+#============================================================================ 
+#Name        : test_atsant.py 
+#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:
+#===============================================================================
+
+""" atsant.py module tests. """
+
+import os
+import logging
+_logger = logging.getLogger('test.atsant')
+
+import atsant
+
+def test_atsant():
+    """test atsant and check 3 files in the file"""
+    files = atsant.files_to_test(os.path.join(os.environ['TEST_DATA'], 'data/packageiad/layers.sysdef.xml'), None, None, 'z:')
+    assert len(files) == 3
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncorecpythontests/test_atsconfigparser.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,102 @@
+#============================================================================ 
+#Name    : test_atsconfigparser.py
+#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:
+#===============================================================================
+
+""" Testing the ATS configuration file """
+
+import os
+import logging
+import tempfile
+import unittest
+
+import ats3.atsconfigparser
+
+_logger = logging.getLogger('test.atsconfigparser')
+logging.basicConfig(level=logging.INFO)
+
+class AtsConfigParserTest(unittest.TestCase):
+    """class used to test ATS config parser"""
+    def test_converttestxml(self):
+        """setup test data, call the convert to XML method (part being tested) 
+        then check it is correct"""
+        spectext = """<ATSConfigData>
+    <config name="common" abstract="true">
+
+        <!-- Properties to add/modify -->
+        <config type="properties">
+           <set name="HARNESS" value="STIFx" />
+           <set name="HARNESS2" value="STIF2"/>
+           <set name="HARNESS3" value="STIF2"/>
+           <set name="2" value="3" />
+        </config>
+
+        <!-- Attributes to modify -->
+        <config type="attributes">
+           <set name="xyz" value="2" />
+           <set name="significant" value="true" />
+        </config>
+
+        <!-- Settings to add/modify -->
+        <config type="settings">
+           <set name="HARNESS" value="STIF" />
+           <set name="2" value="3" />
+        </config>
+
+    </config>
+</ATSConfigData>
+        """
+
+        testxmldata = """<test>
+  <name>helium_clock</name>
+  <target>
+    <device alias="DEFAULT_STIF" rank="none">
+      <property name="HARNESS" value="STIF"/>
+      <property name="HARNESS2" value="STIF"/>
+      <property name="HARNESS3" value="STIF"/>
+    </device>
+    <device alias="DEFAULT_EUIT" rank="none">
+      <property name="HARNESS" value="STIF"/>
+      <property name="HARNESS2" value="STIF3"/>
+    </device>
+  </target>
+  <plan passrate="100" harness="STIF" enabled="true" name="helium_clock Plan" significant="false">
+    <session passrate="100" harness="STIF" enabled="true" name="session" significant="false">
+      <set passrate="100" harness="STIF" enabled="true" name="set0" significant="false">
+        <target>
+          <device alias="DEFAULT_STIF" rank="master"/>
+        </target>
+      </set>
+    </session>
+  </plan>
+</test>
+        """
+
+        (file_descriptor, filename) = tempfile.mkstemp()
+        file_handle = os.fdopen(file_descriptor, 'w')
+        file_handle.write(spectext)
+        file_handle.close()
+
+        output = ats3.atsconfigparser.converttestxml(filename, testxmldata)
+        os.remove(filename)
+        _logger.info(output)
+        self.assert_( '<property name="2" value="3"/>' in output)
+        self.assert_( '<property name="HARNESS" value="STIFx"/>' in output)
+        self.assert_( '<property name="HARNESS" value="STIF"/>' not in output)
+        self.assert_( '<property name="HARNESS2" value="STIF2"/>' in output)
+        self.assert_( '<property name="HARNESS2" value="STIF3"/>' not in output)
+        self.assert_( '<property name="HARNESS3" value="STIF2"/>' in output)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncorecpythontests/test_atsconfiguration.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,119 @@
+# -*- encoding: latin-1 -*-
+
+#============================================================================ 
+#Name    : test_ATSconfiguration.py 
+#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:
+#===============================================================================
+
+""" Testing the ATS configuration file """
+
+import logging
+import StringIO
+
+import configuration
+import ats3.parsers
+
+_logger = logging.getLogger('test.atsconfiguration')
+logging.basicConfig(level=logging.INFO)
+
+
+
+def test_ATS_element():
+    """ ATS elements can be used in configuration. """
+    config_text = """
+<ATSConfigData>
+    <config name="properties">
+    <set name="PA" value="foo"/>
+    </config>
+    <config name="attributes">
+    <set name="attrs" value="foo"/>
+    <set name="AB" value="100"/>
+    <set name="AC" value="101"/>
+    </config>
+</ATSConfigData>"""
+
+    builder = configuration.NestedConfigurationBuilder(StringIO.StringIO(config_text))
+    config = builder.getConfiguration().getConfigurations()
+    assert config[0]['PA'] == 'foo'
+    assert config[1]['AB'] == '100'
+
+
+
+def test_ATS_config_attirbutes():
+    """ ATS elements can be used attributes only. """
+    config_text = """
+<ATSConfigData>
+    <config name="attributes">
+    <set name="attrs" value="foo"/>
+    <set name="AB" value="100"/>
+    <set name="AC" value="101"/>
+    </config>
+</ATSConfigData>"""
+    (params, attrs) = ats3.parsers.split_config_to_attributes_and_properties(StringIO.StringIO(config_text))
+
+    print attrs
+    print params
+    assert params ==  {}
+    assert attrs ==  {u'attrs': u'foo', u'AC': u'101', u'AB': u'100'}
+
+def test_ATS_config_properties():
+    """ ATS elements can be used properties only. """
+    config_text = """
+<ATSConfigData>
+    <config name="noattributes">
+    <set name="attrs" value="foo"/>
+    <set name="AB" value="100"/>
+    <set name="AC" value="101"/>
+    </config>
+    <config name="properties">
+    <set name="HW" value="foo"/>
+    </config>
+</ATSConfigData>"""
+    (params, attrs) = ats3.parsers.split_config_to_attributes_and_properties(StringIO.StringIO(config_text))
+
+    print attrs
+    print params
+    assert params ==  {u'HW': u'foo' }
+    assert attrs ==  { }
+
+
+def test_ATS_element3():
+    """ All alements can be used and several times. """
+    config_text = """
+<ATSConfigData>
+    <config name="attributes">
+    <set name="attrs" value="foo"/>
+    <set name="AB" value="100"/>
+    <set name="AC" value="101"/>
+    </config>
+    <config name="properties">
+    <set name="PA" value="foo"/>
+    </config>
+    <config name="properties">
+    <set name="HW" value="bar"/>
+    </config>
+</ATSConfigData>"""
+    	
+    (params, attrs) = ats3.parsers.split_config_to_attributes_and_properties(StringIO.StringIO(config_text))
+
+    print attrs
+    print params
+    assert params ==  {u'PA': u'foo' , u'HW': u'bar'}
+    assert attrs ==  {u'attrs': u'foo', u'AC': u'101', u'AB': u'100'}
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncorecpythontests/test_buildmodel.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,140 @@
+#============================================================================ 
+#Name        : test_buildmodel.py 
+#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:
+#===============================================================================
+
+""" Test build.model module. """
+
+import os
+import tempfile
+import unittest
+
+import build.model
+import configuration
+import amara
+import logging
+
+_logger = logging.getLogger('test.bom')
+
+database = "to1tobet"
+
+class BOMMockFolder:    
+    def __init__(self, name, instance, description, tasks):
+        self.name = name
+        self.instance = instance
+        self.description = description
+        self.tasks = tasks
+        
+class BOMMockProject:
+    def __init__(self, name):
+        self.name = name
+    
+    def __str__(self):
+        return self.name
+    
+    @property
+    def tasks(self):
+        return []
+    
+    @property
+    def folders(self):
+        return [BOMMockFolder('5856', 'tr1s60', "all completed tasks for release ABS_domain/abs.mcl for collaborative projects", [])] 
+    
+class BOMMock:
+    
+    def __init__(self):
+        self.config = {}
+        self.config['build.id'] = "mock"
+    
+    @property
+    def projects(self):    
+        return [BOMMockProject('ABS_domain-abs.mcl_200843:project:tr1s60#1')] 
+
+    def all_baselines(self):
+        return []
+
+# Refactor required: See http://delivery.nmp.nokia.com/trac/helium/ticket/1517
+class BOMTest(unittest.TestCase):
+    """ Test BOM and related classes. """
+    
+# TODO - removed until non-Synergy dependent tests can be provided.
+
+#    def test_bom_output(self):
+#        """ Test basic BOM execution. Only new spec format will be covered!"""
+#        try:
+#            session = ccm.open_session(database=database)
+#        except ccm.CCMException:
+#            print "Skipping BOMTest test cases."
+#            return
+#            
+#        project = session.create('helium-helium_0.1:project:vc1s60p1#1')
+#        config_dict = {'delivery': os.environ['TEST_DATA'] + '/data/test_delivery.xml',
+#                       'prep.xml': os.environ['TEST_DATA'] + '/data/test_prep.xml',
+#                       'build.id': "test_0.0",
+#                       'ccm.database': session.database()}
+#        config = configuration.Configuration(config_dict)
+#        bom = build.model.BOM_new_spec_config(config, project)
+#        writer = build.model.BOMHTMLWriter(bom)
+#        writer.write("bom2.html")
+#        session.close()
+#        os.remove("bom2.html")
+#        os.remove("bom2.html.xml")
+
+    def test_bom_delta(self):
+        """ Testing BOM delta creation... """
+        delta = build.model.BOMDeltaXMLWriter(BOMMock(), os.path.join(os.environ['TEST_DATA'], 'data/bom/build_model_bom.xml'))
+        (_, filename) = tempfile.mkstemp()
+        delta.write(filename)
+        xml = amara.parse(open(filename))
+        self.assert_(xml.bomDelta[0].buildFrom[0] == "ido_raptor_mcl_abs_MCL.52.57")
+        self.assert_(xml.bomDelta[0].buildTo[0] == "mock")
+
+        print "baselines: ", len(xml.bomDelta.content.baseline)
+        print "folders: ", len(xml.bomDelta.content.folder)
+        print "tasks: ", len(xml.bomDelta.content.task)
+        print "baseline[@overridden='false']:", len(xml.bomDelta.content.xml_xpath("baseline[@overridden='false']"))
+        print "baseline[@overridden='true']: ", len(xml.bomDelta.content.xml_xpath("baseline[@overridden='true']"))
+        print "folder[@status='deleted']: ", len(xml.bomDelta.content.xml_xpath("folder[@status='deleted']"))
+        print "task[@status='deleted']: ", len(xml.bomDelta.content.xml_xpath("task[@status='deleted']"))
+
+        self.assert_(len(xml.bomDelta.content.baseline) == 156)
+        self.assert_(len(xml.bomDelta.content.folder) == 1)
+        self.assert_(len(xml.bomDelta.content.task) == 1)
+        self.assert_(len(xml.bomDelta.content.xml_xpath("baseline[@overridden='false']")) == 155)
+        self.assert_(len(xml.bomDelta.content.xml_xpath("baseline[@overridden='true']")) == 1)
+
+        self.assert_(len(xml.bomDelta.content.xml_xpath("folder[@status='deleted']")) == 1)
+
+        self.assert_(len(xml.bomDelta.content.xml_xpath("task[@status='deleted']")) == 1)
+        
+    def test_validate_bom_delta(self):
+        """ Testing BOM delta validation... """
+        bom_delta_validate = build.model.BOMDeltaXMLWriter((os.path.join(os.environ['TEST_DATA'], 'data/bom/bom_validate_102_bom.xml')), (os.path.join(os.environ['TEST_DATA'], 'data/bom/bom_validate_101_bom.xml')))
+        delta_bom_content_validity = bom_delta_validate.validate_delta_bom_contents(os.path.join(os.environ['TEST_DATA'], 'data/bom/bom_validate_102_bom_delta.xml'), os.path.join(os.environ['TEST_DATA'], 'data/bom/bom_validate_102_bom.xml'), os.path.join(os.environ['TEST_DATA'], 'data/bom/bom_validate_101_bom.xml'))
+        self.assertEqual(True, delta_bom_content_validity) 
+        delta_bom_content_validity = bom_delta_validate.validate_delta_bom_contents(os.path.join(os.environ['TEST_DATA'], 'data/bom/bom_validate_104_bom_delta.xml'), os.path.join(os.environ['TEST_DATA'], 'data/bom/bom_validate_102_bom.xml'), os.path.join(os.environ['TEST_DATA'], 'data/bom/bom_validate_101_bom.xml'))
+        self.assertEqual(False, delta_bom_content_validity) 
+        delta_bom_content_validity = bom_delta_validate.validate_delta_bom_contents(os.path.join(os.environ['TEST_DATA'], 'data/bom/bom_validate_103_bom_delta.xml'), os.path.join(os.environ['TEST_DATA'], 'data/bom/bom_validate_103_bom.xml'), os.path.join(os.environ['TEST_DATA'], 'data/bom/bom_validate_102_bom.xml'))
+        self.assertEqual(None, delta_bom_content_validity) 
+
+    def test_BOMXMLWriter(self):
+        config_data = {'delivery': os.environ['TEST_DATA'] + '/data/test_delivery.xml', 'prep.xml': os.environ['TEST_DATA'] + '/data/test_prep.xml', 'build.id': 'buildid', 'symbian_rel_week': r'${symbian.version.week}', 'symbian_rel_ver': r'${symbian.version}', 'symbian_rel_year': r'${symbian.version.year}', 's60_version': r'${s60.version}', 's60_release': r'${s60.release}', 'currentRelease.xml': os.environ['TEST_DATA'] + "tests/data/symrec/generated_release_metadata.xml"}
+        bom = build.model.BOM(configuration.Configuration(config_data))
+        xml_writer = build.model.BOMXMLWriter(bom)
+        (_, filename) = tempfile.mkstemp()
+        xml_writer.write(filename)
+        #_logger.info(open(filename).read())
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncorecpythontests/test_ccm.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,83 @@
+#============================================================================ 
+#Name        : test_ccm.py 
+#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:
+#===============================================================================
+
+""" Test cases for ccm python toolkit.
+
+"""
+
+# pylint: disable-msg=E1101
+
+import logging
+import os
+import sys
+import mocker
+import ccm
+
+
+_logger = logging.getLogger('test.ccm')
+
+
+class CcmTest(mocker.MockerTestCase):
+    """ Tests the ccm module using mocker to prevent accessing a real Synergy database. """
+
+    def test_running_sessions(self):
+        """ Running sessions can be checked. """
+        obj = self.mocker.replace(ccm._execute)
+        if sys.platform == "win32":
+            obj('c:\\apps\\ccm65\\bin\\ccm.exe status')
+        else:
+            site_id = 'fa_nmp'
+            if 'SITE_ID' in os.environ:
+                site_id = os.environ['SITE_ID']
+            obj('/nokia/' + site_id + '/apps/cmsynergy/6.5/bin/ccm status')
+        self.mocker.result(("""Sessions for user pmackay:
+
+Command Interface @ 1CAL01176:1553:10.241.72.23
+Database: /nokia/vc_nmp/groups/gscm/dbs/vc1s60p1
+
+Current project could not be identified.
+""", 0))
+
+        self.mocker.replay()
+
+        sessions = ccm.running_sessions()
+        print sessions
+
+#    def test_open_session(self):
+#        """ ccm session can be opened. """
+#        gscm_obj = self.mocker.replace(nokia.gscm._execute)
+#        gscm_obj('perl f:\\helium\\svn\\trunk\\helium\\tools/common/bin/get_gscm_info.pl get_router_address /nokia/vc_nmp/groups/gscm/dbs/vc1s60p1')
+#        self.mocker.result(("vccmsr65:55414:172.18.95.98:172.18.95.61:172.18.95.95:172.18.95.96:172.18.95.97", 0))
+#        
+#        obj = self.mocker.replace(ccm._execute)
+#        obj('c:\\apps\\ccm65\\bin\\ccm.exe start -m -q -nogui -n username -pw foobar -h vccmsweh.americas.company.com -d /nokia/vc_nmp/groups/gscm/dbs/vc1s60p1')
+#        self.mocker.result(("1CAL01176:1333:10.186.216.77:10.241.72.68", 0))
+#        
+#        self.mocker.replay()
+#        session = nokia.nokiaccm.open_session(password='foobar', engine='vccmsweh.americas.company.com', dbpath='/nokia/vc_nmp/groups/gscm/dbs/vc1s60p1', database='/nokia/vc_nmp/groups/gscm/dbs/vc1s60p1')
+        
+        
+    #def test_timeout_launcher(self):
+        #sys.path.append(os.path.join(os.environ['HELIUM_HOME'], 'tools/common/python/scripts'))
+        #import timeout_launcher
+        #backup = sys.argv
+        #sys.argv = ['--', 'echo 1']
+        #timeout_launcher.main()
+        #sys.argv = backup
+        
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncorecpythontests/test_comments.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,77 @@
+#============================================================================ 
+#Name        : test_comments.py 
+#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:
+#===============================================================================
+
+""" Test cases for Comments.py. """
+import unittest
+import comments
+import amara
+import os
+
+class CommentParserTest(unittest.TestCase):
+    """ Test cases for Comments.py. """
+    
+    def setUp(self):
+        # Initialize the sample files into two Comment Parsers.
+        self.parser1 = comments.CommentParser( [os.environ['TEST_DATA'] + '/data/comments_test.txt'], 'branchInfo' )
+        self.parser2 = comments.CommentParser( [os.environ['TEST_DATA'] + '/data/comments_test.cpp', os.environ['TEST_DATA'] + '/data/comments_test.bat',
+                                                os.environ['TEST_DATA'] + '/data/comments_test.h', os.environ['TEST_DATA'] + '/data/comments_test.hrh',
+                                                os.environ['TEST_DATA'] + '/data/comments_test.iby', os.environ['TEST_DATA'] + '/data/comments_test.inf',
+                                                os.environ['TEST_DATA'] + '/data/comments_test.mk', os.environ['TEST_DATA'] + '/data/comments_test.mmp',
+                                                os.environ['TEST_DATA'] + '/data/comments_test.pl', os.environ['TEST_DATA'] + '/data/comments_test.xml',
+                                                os.environ['TEST_DATA'] + '/data/comments_test.py', os.environ['TEST_DATA'] + '/data/comments_test.java',
+                                                os.environ['TEST_DATA'] + '/data/comments_test1.cmd', os.environ['TEST_DATA'] + '/data/comments_test2.cmd'], 'branchInfo' )
+     #   self.parser3 = comments.CommentParser( [os.environ['TEST_DATA'] + '/data/comments_test2.cmd'], 'branchInfo' )
+     
+        
+
+    """ Unit test for method scan() in comments.py. It also tested scan_content by using scan()
+    """
+    def test_scan(self):
+        #doc1 for only one txt file. 
+        doc1 = amara.parse(self.parser1.scan().xml())
+        #doc2 for all other 14 types of files. It also included two types of cmd files.
+        doc2 = amara.parse(self.parser2.scan().xml())
+        
+        # doc1's test verifies all the information the xml comment provides.
+        self.assertEquals(doc1.commentLog.branchInfo.originator, "sanummel")
+        self.assertEquals(doc1.commentLog.branchInfo.category, "")
+        self.assertEquals(doc1.commentLog.branchInfo.since, "07-03-22")
+        self.assertEquals(doc1.commentLog.branchInfo.file, os.environ['TEST_DATA'] + '/data/comments_test.txt')
+        self.assertEquals(doc1.commentLog.branchInfo.error, "kkk")
+        self.assertEquals(str(doc1.commentLog.branchInfo).strip(),"Add rofsfiles for usage in paged images")
+        # s = (str(doc1.commentLog.xml()))
+        # print s
+        # doc2's test only verifies the main comment content.
+        self.assertEquals(str(doc2.commentLog.branchInfo[0]).strip(), "We need TwistOpen and TwistClose to cause display to change between\n landscape and portrait, but SysAp is consuming the key events.  Try\n treating them as Flip events are handled already by SysAp.")
+        self.assertEquals(str(doc2.commentLog.branchInfo[1]).strip(), "Testing if it's good~~~")
+        self.assertEquals(str(doc2.commentLog.branchInfo[2]).strip(), "We need TwistOpen and TwistClose to cause display to change between\n landscape and portrait, but SysAp is consuming the key events.  Try\n treating them as Flip events are handled already by SysAp.")
+        self.assertEquals(str(doc2.commentLog.branchInfo[3]).strip(), "puikko ME SCD DeSW: wk21 Flag fix")
+        self.assertEquals(str(doc2.commentLog.branchInfo[4]).strip(), "Since Catalogs is not compiling at this point, and we are not building it, don't try to\n pull it into the rom.  Also, tfxserver is crashing, so don't build or pull it in either.")
+        self.assertEquals(str(doc2.commentLog.branchInfo[5]).strip(), "Fix target export, which cause issue when cleanexport.")
+        self.assertEquals(str(doc2.commentLog.branchInfo[6]).strip(), "Move command to makmake as EBS does not call abld build")
+        self.assertEquals(str(doc2.commentLog.branchInfo[7]).strip(), "Activate PCFW for Screensaver")
+        self.assertEquals(str(doc2.commentLog.branchInfo[8]).strip(), "Support SPP mechanism for flags support.")
+        self.assertEquals(str(doc2.commentLog.branchInfo[9]).strip(), "Enabling all the HWRM light zones target for product")
+        self.assertEquals(str(doc2.commentLog.branchInfo[10]).strip(), "Again, it is just a test")
+        self.assertEquals(str(doc2.commentLog.branchInfo[11]).strip(), "Test info, so whatever~")
+        self.assertEquals(str(doc2.commentLog.branchInfo[12]).strip(), "k")
+        self.assertEquals(str(doc2.commentLog.branchInfo[13]).strip(), "")
+          
+    
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncorecpythontests/test_configuration_model.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,119 @@
+#============================================================================ 
+#Name        : test_configuration_model.py 
+#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:
+#===============================================================================
+
+import logging
+import os
+import unittest
+import nose
+
+import configuration
+import configuration_model
+
+
+logger = logging.getLogger('test.configuration_model')
+#logging.basicConfig(level=logging.DEBUG)
+
+class GroupDefTest(unittest.TestCase):
+    """ Check config model groups are correctly defined. """
+    
+    def setUp(self):
+        """ Create model. """
+        self.model = configuration_model.DataModel(os.environ['TEST_DATA'] + '/data/data_model_test.xml')
+        
+    def test_init_model(self):
+        """ Test groups can be created. """
+        assert len(self.model.properties.keys()) == 3
+        assert len(self.model.groups.keys()) == 1
+        
+        prop1 = self.model.properties['test.property.1']
+        assert prop1.description == 'Test property one.'
+        
+        prop2 = self.model.properties['test.property.2']
+        assert prop2.description == 'Test property two.'
+        
+        assert self.model.groups['testGroup'] != None
+
+    def test_property_not_in_model(self):
+        """ Property not in model is identified. """
+        data = {'missing.property': 'foobar', 'test.property.1': '1'}
+        config = configuration.Configuration(data)
+        items = self.model.validate_config(config)
+        
+        assert len(items) == 2
+        assert isinstance(items[0], configuration_model.MissingFromDataModelItem)
+    
+    def test_required_property_in_group_not_defined(self):
+        """ Required property in a group missing from config is identified. """
+        config = configuration.Configuration({'test.property.1': '1', 'test.property.3': '3'})
+        items = self.model.validate_config(config)
+        
+        assert len(items) == 1
+        assert isinstance(items[0], configuration_model.UndefinedRequiredInGroupItem)
+ 
+        
+class MissingFromDataModelItemTest(unittest.TestCase):
+    """ Item class operations. """
+    def test_create(self):
+        """ Basic validation item usage. """
+        item = configuration_model.MissingFromDataModelItem('test.property')
+        self.assert_(str(item) == 'Property not in data model: test.property')
+        item.log(logger)
+        
+        
+class DataModelTest(unittest.TestCase):
+    """ Checks Data Model is properly defined """
+    
+    def setUp(self):
+        """ Create model. """
+        self.model = configuration_model.DataModel(os.environ['TEST_DATA'] + '/data/data_model_validation_test.xml')    
+       
+    def test_init_model(self):
+        """ Test groups can be created. """
+        assert len(self.model.properties.keys()) == 3
+        assert len(self.model.groups.keys()) == 1
+        
+        prop1 = self.model.properties['test.property.1']
+        assert prop1.type == 'string'
+        assert prop1.description == 'Test property one.'
+        
+        prop2 = self.model.properties['test.property.2']
+        assert prop2.type == 'string'
+        assert prop2.description == 'Test property two.'
+        
+        assert self.model.groups['testGroup'] != None
+        
+        
+class DataModelPropertyTest(unittest.TestCase):
+    """ Checks Data Model that an exception is thrown if properties are not properly defined """
+    
+    @nose.tools.raises(Exception)
+    def setUp(self):
+        """ Create model. """
+        self.model = configuration_model.DataModel(os.environ['TEST_DATA'] + '/data/data_model_validation__property_test.xml')
+        
+        
+class DataModelGroupTest(unittest.TestCase):
+    """ Checks Data Model that an exception is thrown if there is a required property in groups is missing"""
+    
+    @nose.tools.raises(Exception)
+    def setUp(self):
+        """ Create model. """
+        self.model = configuration_model.DataModel(os.environ['TEST_DATA'] + '/data/data_model_validation_group_test.xml')
+        
+             
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncorecpythontests/test_documentation.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,46 @@
+#============================================================================ 
+#Name        : test_documentation.py
+#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:
+#===============================================================================
+
+import tempfile
+import os
+import logging
+import unittest
+import sys
+from helium.documentation import APIDeltaWriter
+
+_logger = logging.getLogger('test.documentation')
+logging.basicConfig(level=logging.INFO)
+
+class DocumentationTest(unittest.TestCase):
+    """Verifiying documentation module"""
+    def test_APIDeltaWriter(self):
+        (fileDes, tempFileName) = tempfile.mkstemp()
+        old_db = os.path.join(os.environ['TEST_DATA'], 'data', 'docs', 'sample_old_db.xml') 
+        new_db = os.path.join(os.environ['TEST_DATA'], 'data', 'docs', 'sample_new_db.xml') 
+        writer = APIDeltaWriter(old_db, new_db)
+        saveout = sys.stdout
+        sys.stdout = sys.stderr
+        writer.write(tempFileName)
+        os.close(fileDes)
+        sys.stdout = saveout
+        tempFile = open(tempFileName, 'r')
+        content = tempFile.readlines()
+        tempFile.close()
+        os.unlink(tempFileName)
+        assert len(content) == 12
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncorecpythontests/test_fileutils.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,669 @@
+#============================================================================ 
+#Name        : test_fileutils.py 
+#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:
+#===============================================================================
+
+""" Test fileutils module. """
+
+import unittest
+import logging
+import os
+import time
+import sys
+import fileutils
+import archive
+
+_logger = logging.getLogger('test.fileutils')
+
+
+_test_file_paths = [
+    'root_file1.txt',
+    'root_file2.doc',
+    'root_file3_no_extension',
+
+    'dir1/file1.txt',
+    'dir1/file2.doc',
+    'dir1/file3_no_extension',
+    'dir1/subdir1/subdir1_file.txt',
+    'dir1/subdir2/subdir2_file_no_extension',
+    'dir1/subdir3/',
+
+    'dir2/',
+    'dir3/subdir/',
+    
+    'wildcard1.txt',
+    'wildcard2.doc',
+    'wildcard3',
+    'wildcard4/',
+    'wildcard5/file.txt',
+    
+    'dir/emptysubdir1/',
+    'dir/emptysubdir2/',
+    'dir/emptysubdir3/',
+
+    'emptydirerror/dir/',
+    'emptydirerror/dir/emptysubdir/',
+    'emptydirerror/dir/subdir/file.txt',
+    
+    u'test_unicode/test_\u00e9.txt',
+    u'test_unicode/test_\u00e7.txt',
+    u'test_unicode/test_\u00e4.txt',
+    
+    's60/Distribution.Policy.S60',
+    's60/component_public/Distribution.Policy.S60',
+    's60/component_public/component_public_file.txt',
+    's60/component_private/Distribution.Policy.S60',
+    's60/component_private/component_private_file.txt',
+    's60/missing/to_be_removed_9999.txt',    
+    's60/missing/subdir/Distribution.Policy.S60',
+    's60/missing/subdir/not_to_be_removed_0.txt',    
+    's60/missing/subdir/another_subdir/to_be_removed_9999.txt',    
+    's60/UPPERCASE_MISSING/to_be_removed_9999.txt',
+    's60/UPPERCASE_MISSING/subdir/Distribution.Policy.S60',
+    's60/UPPERCASE_MISSING/subdir/not_to_be_removed_0.txt',
+    's60/UPPERCASE_MISSING/subdir/another_subdir/to_be_removed_9999.txt',
+    's60/not_in_cvs/Distribution.Policy.S60',
+    'test_policies/1/Distribution.Policy.S60',
+    'test_policies/2/Distribution.Policy.S60',
+    'test_policies/3/Distribution.Policy.S60',
+    'test_policies/4/Distribution.Policy.S60',
+    'test_policies/5/Distribution.Policy.S60',
+    'test_policies/6/Distribution.Policy.S60',
+    'test_policies/7/Distribution.Policy.S60',
+    'test_policies/8/Distribution.Policy.S60',
+    'test_policies/9/Distribution.Policy.S60',
+    'symbian/distribution.policy',
+    'symbian/dir1/distribution.policy',
+    'symbian/dir2/distribution.policy',
+    'symbian/dir3/distribution.policy',
+    'symbian/dir4/distribution.policy',
+    'symbian/dir5/distribution.policy',
+    's60src/src-a/distribution.policy',
+    's60src/src-b/distribution.policy',
+    's60src/src-c/distribution.policy',
+
+    'sf/Distribution.Policy.S60',
+    'sf/component_public/Distribution.Policy.S60',
+    'sf/component_public/component_public_file.txt',
+    'sf/component_epl/Distribution.Policy.S60',
+    'sf/component_epl/component_epl_file.txt',
+    'sf/component_sfl/Distribution.Policy.S60',
+    'sf/component_sfl/component_sfl_file.txt',
+    'sf/component_private/Distribution.Policy.S60',
+    'sf/component_private/component_private_file.txt',
+    'sf/missing/to_be_removed_9999.txt',
+    'sf/missing/subdir/Distribution.Policy.S60',
+    'sf/missing/subdir/to_be_removed_9999.txt',
+    'sf/missing/subdir/subdir_nofiles/subdir_nofiles2/',    
+    'sf/missing/subdir/subdir_nopolicy/',    
+    'sf/missing/subdir/subdir_nopolicy/component_private_file.txt',
+    'sf/UPPERCASE_MISSING/to_be_removed_9999.txt',
+    'sf/UPPERCASE_MISSING/subdir/Distribution.Policy.S60',
+    'sf/UPPERCASE_MISSING/subdir/to_be_removed_9999.txt',
+    'sf/not_in_cvs/Distribution.Policy.S60',
+    ]
+
+_test_file_content = {
+    's60/Distribution.Policy.S60': '0',
+    's60/missing/subdir/Distribution.Policy.S60' : '0',
+    's60/UPPERCASE_MISSING/subdir/Distribution.Policy.S60': '0',
+    's60/component_public/Distribution.Policy.S60': '0',
+    's60/component_private/Distribution.Policy.S60': '1\r\n',
+    'test_policies/1/Distribution.Policy.S60': '\xFF\xFE\x30\x00\x0D\x00\x0D\x00\x0D\x00\x0A\x00',
+    'test_policies/2/Distribution.Policy.S60': '\xEF\xBB\xBF\x30\x0D\x0D\x0A',
+    'test_policies/3/Distribution.Policy.S60': '0 ; %version: 1 %',
+    'test_policies/4/Distribution.Policy.S60': '10 ; %version: 1 %',
+    'test_policies/5/Distribution.Policy.S60': '10ABC10',
+    'test_policies/6/Distribution.Policy.S60': '10ABC10 ; %version: 1 %',
+    'test_policies/7/Distribution.Policy.S60': '08421A2', # good
+    'test_policies/8/Distribution.Policy.S60': '08421A2 ; %version: 1 %', # bad
+    'test_policies/9/Distribution.Policy.S60': '1110A12', # bad
+    's60/not_in_cvs/Distribution.Policy.S60': '77777',
+    'symbian/distribution.policy': 'Category A',
+    'symbian/dir1/distribution.policy': 'Category B',
+    'symbian/dir2/distribution.policy': 'Line one \r\nAnother one \r\nCategory C',
+    'symbian/dir3/distribution.policy': 'Line one \r\nAnother one \r\nAnother one \r\nCategory D',
+    'symbian/dir4/distribution.policy': 'Line one \r\nAnother one \r\nNo Category',
+    'symbian/dir5/distribution.policy': 'Line one \r\nAnother one \r\nagain no category',
+    's60src/src-a/distribution.policy': 'Category A',
+    's60src/src-b/distribution.policy': 'Category B',
+    's60src/src-c/distribution.policy': 'Category C',
+    'sf/Distribution.Policy.S60': '0',
+    'sf/missing/subdir/Distribution.Policy.S60' : '0',
+    'sf/UPPERCASE_MISSING/subdir/Distribution.Policy.S60': '0',
+    'sf/component_public/Distribution.Policy.S60': '0',
+    'sf/component_sfl/Distribution.Policy.S60': '3',
+    'sf/component_epl/Distribution.Policy.S60': '7',
+    'sf/component_private/Distribution.Policy.S60': '1',
+    }
+    
+""" Used by test_archive. """
+root_test_dir = "build/_test_" + str(time.strftime("%H.%M.%S"))
+    
+def _testpath(subpath):
+    """ Normalised path for test paths. """
+    return os.path.normpath(os.path.join(root_test_dir, subpath))
+    
+def setup_module():
+    """ Setup files test config. 
+    
+    This creates a number of empty files in a temporary directory structure
+    for testing various file selection and archiving operations.
+    """
+    #print 'setup_module()'
+    #print _test_file_content.keys()
+    for child_path in _test_file_paths:
+        path = os.path.join(root_test_dir, child_path)
+        path_dir = path
+        path_dir = os.path.dirname(path)
+        
+        if (not os.path.exists(path_dir)):
+            _logger.debug('Creating dir:  ' + path_dir)
+            os.makedirs(path_dir)
+
+        if(not path.endswith('/') and not path.endswith('\\')):
+            _logger.debug('Creating file: ' + path)
+            handle = open(path, 'w')
+            # Write any file content that is needed
+            if _test_file_content.has_key(child_path):
+                handle.write(_test_file_content[child_path])
+            handle.close()
+
+def teardown_module():
+    """ Teardown test config. """
+    if os.path.exists(root_test_dir):
+        fileutils.rmtree(root_test_dir)
+    
+
+class FileScannerTest(unittest.TestCase):
+    """ Test FileScanner class. """
+    def test_1_scanner_paths(self):
+        """1) String representation of a constructed FileScanner is correct."""
+        scanner = fileutils.FileScanner(_testpath('test'))
+        scanner.add_include('python/')
+        # new implementation of the scanner doesn't convert modify the pattern strings...
+        expected_result = _testpath('test') + ';include:' + os.path.normpath('python/**')
+        assert str(scanner) == expected_result
+
+    def test_2_include_1(self):
+        """Files from root are included, no subdirs."""
+        scanner = fileutils.FileScanner(_testpath(''))
+        scanner.add_include('dir1/*')
+        testpaths = [_testpath('dir1/file1.txt'),
+                     _testpath('dir1/file2.doc'),
+                     _testpath('dir1/file3_no_extension'),
+                     _testpath('dir1/subdir3')]
+        result = []
+        for path in scanner.scan():
+            result.append(path)
+        _logger.debug(result)
+        
+        # sorting the resuts
+        testpaths.sort()
+        result.sort()
+        
+        print result
+        print testpaths
+        assert result == testpaths
+        
+    def test_include_single_file(self):
+        """A single file from root is included."""
+        scanner = fileutils.FileScanner(_testpath(''))
+        scanner.add_include('dir1/file1.txt')
+        testpaths = [_testpath('dir1/file1.txt')]
+        result = []
+        for path in scanner.scan():
+            result.append(path)
+        _logger.debug(result)
+        
+        print result
+        print testpaths
+        assert result == testpaths
+        
+    def test_include_single_file_and_glob_path(self):
+        """A single file from root and a glob path are included."""
+        scanner = fileutils.FileScanner(_testpath(''))
+        scanner.add_include('dir1/file1.txt')
+        scanner.add_include('s60/component_public/')
+        testpaths = [_testpath(u'dir1/file1.txt'),
+                     _testpath(u's60/component_public/Distribution.Policy.S60'),
+                     _testpath(u's60/component_public/component_public_file.txt'),]
+        result = []
+        for path in scanner.scan():
+            result.append(path)
+        
+        if sys.platform == "win32":
+            testpaths = [s.lower() for s in testpaths]
+            result = [s.lower() for s in result]
+        result.sort()
+        testpaths.sort()
+        print result
+        print testpaths
+        assert result == testpaths
+
+    def test_3_include_2(self):
+        """Files and subdirs are included."""
+        scanner = fileutils.FileScanner(_testpath(''))
+        scanner.add_include('dir1/**')
+        testpaths = [_testpath('dir1/file1.txt'),
+                     _testpath('dir1/file2.doc'),
+                     _testpath('dir1/file3_no_extension'),
+                     _testpath('dir1/subdir1/subdir1_file.txt'),
+                     _testpath('dir1/subdir2/subdir2_file_no_extension'),
+                     _testpath('dir1/subdir3')]
+        result = []
+        for path in scanner.scan():
+            result.append(path)
+        _logger.debug(result)
+        result.sort()
+        testpaths.sort()
+        print result
+        print testpaths
+        assert result == testpaths
+
+    def test_4_include_3(self):
+        """Wildcard includes in root."""
+        scanner = fileutils.FileScanner(_testpath(''))
+        scanner.add_include('wild*')
+        testpaths = [_testpath('wildcard1.txt'),
+                     _testpath('wildcard2.doc'),
+                     _testpath('wildcard3'),
+                     _testpath('wildcard4')]
+        result = []
+        for path in scanner.scan():
+            result.append(path)
+        _logger.debug(result)
+        result.sort()
+        testpaths.sort()        
+        print result
+        print testpaths
+        assert result == testpaths
+
+    def test_5_include_4(self):
+        """Include empty dirs."""
+        scanner = fileutils.FileScanner(_testpath(''))
+        scanner.add_include('dir2/')
+        scanner.add_include('dir3/**')
+        testpaths = [_testpath('dir2'),
+                     _testpath('dir3/subdir')]
+        result = []
+        for path in scanner.scan():
+            result.append(path)
+        _logger.debug(result)
+        result.sort()
+        testpaths.sort()        
+        print result
+        print testpaths
+        assert result == testpaths
+
+    def test_6_include_exclude_1(self):
+        """Wildcard excludes."""
+        scanner = fileutils.FileScanner(_testpath(''))
+        scanner.add_include('root*')
+        scanner.add_include('wild*')
+        scanner.add_exclude('root_*')
+        testpaths = [_testpath('wildcard1.txt'),
+                     _testpath('wildcard2.doc'),
+                     _testpath('wildcard3'),
+                     _testpath('wildcard4')]
+        result = []
+        for path in scanner.scan():
+            result.append(path)
+        _logger.debug(result)
+        result.sort()
+        testpaths.sort()
+        
+        print result
+        print testpaths
+        assert result == testpaths
+
+    def test_7_include_exclude_2(self):
+        """Directory can be excluded."""
+        scanner = fileutils.FileScanner(_testpath(''))
+        scanner.add_include('dir1/')
+        scanner.add_exclude('dir1/subdir1/')
+        scanner.add_exclude('dir1/subdir2/')
+        result = []
+        [result.append(path) for path in scanner.scan()]
+        testpaths = [_testpath('dir1/file1.txt'),
+                     _testpath('dir1/file2.doc'),
+                     _testpath('dir1/file3_no_extension'),
+                     _testpath('dir1/subdir3')]                   
+        result.sort()
+        testpaths.sort()
+        
+        print result
+        print testpaths
+        assert result == testpaths
+        
+    def test_8_include_exclude_3(self):
+        """Wildcard exclude."""
+        scanner = fileutils.FileScanner(_testpath(''))
+        scanner.add_include('dir1/')
+        scanner.add_exclude('**/*.doc')
+        scanner.add_exclude('**/*.txt')
+        result = []
+        testpaths = [_testpath('dir1/file3_no_extension'),
+                     _testpath('dir1/subdir2/subdir2_file_no_extension'),
+                     _testpath('dir1/subdir3')]                   
+        [result.append(path) for path in scanner.scan()]
+        result.sort()
+        testpaths.sort()
+        
+        print result
+        print testpaths
+        assert result == testpaths
+
+    def test_case_sensitivity(self):
+        """ Test if returned list has correct case. """
+        scanner = fileutils.FileScanner(_testpath(''))
+        scanner.add_include('s60/UPPERCASE_MISSING/')
+        result = []
+        testpaths = [_testpath('s60/UPPERCASE_MISSING/to_be_removed_9999.txt'),
+                     _testpath('s60/UPPERCASE_MISSING/subdir/Distribution.Policy.S60'),
+                     _testpath('s60/UPPERCASE_MISSING/subdir/not_to_be_removed_0.txt'),
+                     _testpath('s60/UPPERCASE_MISSING/subdir/another_subdir/to_be_removed_9999.txt')
+                     ]                   
+        [result.append(path) for path in scanner.scan()]
+        
+        testpaths.sort()
+        result.sort()
+        print result
+        print testpaths
+        assert result == testpaths
+
+
+    def test_emptydir(self):
+        """Empty dir."""
+        scanner = fileutils.FileScanner(_testpath(''))
+        scanner.add_include('dir/emptysubdir1/')
+        result = []
+        testpaths = [_testpath('dir/emptysubdir1')]                   
+        [result.append(path) for path in scanner.scan()]
+        
+        result.sort()
+        testpaths.sort()
+
+        print result
+        print testpaths
+        assert result == testpaths
+
+    def test_emptydir_subdir(self):
+        """ Empty dir (with excluded subdirs). """
+        scanner = fileutils.FileScanner(_testpath(''))
+        scanner.add_include('emptydirerror/dir/')
+        scanner.add_exclude('emptydirerror/dir/subdir/')
+        scanner.add_exclude('emptydirerror/dir/emptysubdir/')
+        result = []
+        testpaths = []                   
+        [result.append(path) for path in scanner.scan()]
+        
+        result.sort()
+        testpaths.sort()
+
+        print result
+        print testpaths
+        assert result == testpaths
+        
+    def test_emptydirs(self):
+        """Empty dirs."""
+        scanner = fileutils.FileScanner(_testpath(''))
+        scanner.add_include('dir/')
+        scanner.add_exclude('dir/emptysubdir3/')
+        result = []
+        testpaths = [_testpath('dir/emptysubdir1'),
+                     _testpath('dir/emptysubdir2')]                   
+        [result.append(path) for path in scanner.scan()]
+        
+        print result
+        print testpaths
+        assert result == testpaths
+        
+    def test_distribution_policy_include(self):
+        """ Distribution policy files can determine file selection - include. """
+        scanner = fileutils.FileScanner(_testpath(''))
+        scanner.add_include('s60/component_public/')
+        selector = archive.selectors.DistributionPolicySelector(['Distribution.policy.s60'], '0')
+        scanner.add_selector(selector)
+        
+        result = []
+        [result.append(path) for path in scanner.scan()]
+        testpaths = [_testpath('s60/component_public/component_public_file.txt'),
+                     _testpath('s60/component_public/distribution.policy.s60')]                   
+        
+        result = [s.lower() for s in result]
+        result.sort()
+        testpaths.sort()
+        print result
+        print testpaths
+        assert result == testpaths
+        
+        
+    def test_distribution_policy_exclude(self):
+        """ Distribution policy files can determine file selection - exclude. """
+        scanner = fileutils.FileScanner(_testpath(''))
+        scanner.add_include('s60/component_private/')
+        selector = archive.selectors.DistributionPolicySelector(['Distribution.policy.s60'], '0')
+        scanner.add_selector(selector)
+        
+        result = []
+        [result.append(path) for path in scanner.scan()]
+        testpaths = []                   
+        
+        assert result == testpaths
+        
+        
+    def test_symbian_distribution_policy_cat_a(self):
+        scanner = fileutils.FileScanner(_testpath(''))
+        scanner.add_include('s60src/src-a/')
+        selector = archive.selectors.SymbianPolicySelector(['distribution.policy'], 'A')
+        scanner.add_selector(selector)
+                
+        result = []
+        [result.append(path) for path in scanner.scan()]
+        testpaths = [_testpath('s60src/src-a/distribution.policy')] 
+ 
+        assert result == testpaths
+        
+    def test_symbian_distribution_policy_cat_b(self):        
+        scanner = fileutils.FileScanner(_testpath(''))
+        scanner.add_include('s60src/src-b/')
+        selector = archive.selectors.SymbianPolicySelector(['distribution.policy'], 'B')
+        scanner.add_selector(selector)
+                       
+        result = []
+        [result.append(path) for path in scanner.scan()]
+        testpaths = [_testpath('s60src/src-b/distribution.policy')] 
+              
+        assert result == testpaths     
+        
+    def test_symbian_distribution_policy_cat_not_a_not_b(self):        
+        scanner = fileutils.FileScanner(_testpath(''))
+        scanner.add_include('s60src/src-c/')
+        selector = archive.selectors.SymbianPolicySelector(['distribution.policy'], '!A,!B')
+        scanner.add_selector(selector)
+                       
+        result = []
+        [result.append(path) for path in scanner.scan()]
+                  
+        testpaths = [_testpath('s60src/src-c/distribution.policy')] 
+        
+        assert result == testpaths     
+    
+        
+    def test_find_subroots(self):
+        """ Testing the find_subroots method. """
+        scanner = fileutils.FileScanner(_testpath(''))
+        scanner.add_include('dir/emptysubdir1')
+        scanner.add_include('dir/**/dir')
+        scanner.add_include('foo/**/dir')
+        scanner.add_include('bar/subdir/dir1/**')
+        scanner.add_include('bar/subdir/dir2/**')
+        scanner.add_include('bar/subdir/dir3/x/**')
+        scanner.add_include('bar/subdir/dir3/**')
+        result = scanner.find_subroots()
+        _logger.debug(result)
+        print result              
+        assert result == [_testpath('dir'), _testpath('foo'), 
+                          _testpath('bar/subdir/dir1'), 
+                          _testpath('bar/subdir/dir2'), 
+                          _testpath('bar/subdir/dir3')]
+
+        scanner = fileutils.FileScanner(_testpath(''))
+        scanner.add_include('dir/emptysubdir1')
+        scanner.add_include('**/dir')
+        scanner.add_include('foo/**/dir')
+        result = scanner.find_subroots()
+        _logger.debug(result)              
+        assert result == [_testpath('')]
+
+
+    def test_load_policy_content(self):
+        try:
+            fileutils.load_policy_content(_testpath('test_policies/1/Distribution.Policy.S60'))
+            assert "Should fail while loading 'test_policies/1/Distribution.Policy.S60'."
+        except:
+            pass
+        
+        try:
+            fileutils.load_policy_content(_testpath('s60/Distribution.Policy.S60'))
+        except:
+            assert "Should not fail while loading 's60/Distribution.Policy.S60'."
+
+
+    def assert_policy_file(self, filename, value=None, exception=False):
+        if exception:
+            try:
+                fileutils.read_policy_content(filename)
+                assert "Should fail while loading '%s'." % filename
+            except:
+                pass
+        else:
+            assert fileutils.read_policy_content(filename) == value
+    def assert_symbian_policy_file(self, filename, value=None, exception=False):
+        if exception:
+            try:
+                fileutils.read_symbian_policy_content(filename)
+                assert "Should fail while loading '%s'." % filename
+            except:
+                pass
+        else:
+            assert fileutils.read_symbian_policy_content(filename) == value
+        
+    def test_read_policy_content_strict(self):
+        """ Test policy content using strict rules. """
+
+        self.assert_policy_file(_testpath('s60/Distribution.Policy.S60'), value='0')
+        self.assert_policy_file(_testpath('s60/component_private/Distribution.Policy.S60'), value='1')
+        self.assert_policy_file(_testpath('test_policies/1/Distribution.Policy.S60'), exception=True)
+        self.assert_policy_file(_testpath('test_policies/2/Distribution.Policy.S60'), exception=True)
+        self.assert_policy_file(_testpath('test_policies/3/Distribution.Policy.S60'), exception=True)
+        self.assert_policy_file(_testpath('test_policies/4/Distribution.Policy.S60'), exception=True)
+        self.assert_policy_file(_testpath('test_policies/5/Distribution.Policy.S60'), exception=True)
+        self.assert_policy_file(_testpath('test_policies/6/Distribution.Policy.S60'), exception=True)
+
+    def test_read_policy_content_strict_focalid(self):
+        """ Testing Focal ID support. """
+        self.assert_policy_file(_testpath('test_policies/7/Distribution.Policy.S60'), value='08421A2')
+        self.assert_policy_file(_testpath('test_policies/8/Distribution.Policy.S60'), exception=True)
+        self.assert_policy_file(_testpath('test_policies/9/Distribution.Policy.S60'), exception=True)
+
+    def test_read_symbian_policy_content_strict(self):
+        """ Test symbian policy content using strict rules. """
+
+        self.assert_symbian_policy_file(_testpath('symbian/distribution.policy'), value='A')
+        self.assert_symbian_policy_file(_testpath('symbian/dir1/distribution.policy'), value='B')
+        self.assert_symbian_policy_file(_testpath('symbian/dir2/distribution.policy'), value='C')
+        self.assert_symbian_policy_file(_testpath('symbian/dir3/distribution.policy'), value='D')
+        self.assert_symbian_policy_file(_testpath('symbian/dir4/distribution.policy'), exception=True)
+        self.assert_symbian_policy_file(_testpath('symbian/dir5/distribution.policy'), exception=True)
+
+class TestLongPath(unittest.TestCase):
+
+    long_path = os.path.join(root_test_dir, '01234567890123456789012345678901234567890123456789', 
+                     '01234567890123456789012345678901234567890123456789', '01234567890123456789012345678901234567890123456789',
+                     '01234567890123456789012345678901234567890123456789', '01234567890123456789012345678901234567890123456789')
+    def setUp(self):
+        self.mkdirs(os.path.join(self.long_path, r'dir1'))
+        self.mkdirs(os.path.join(self.long_path, r'dir2'))
+        if not '\\\\?\\' + os.path.abspath((os.path.join( self.long_path, r'foo.txt'))):
+            import win32file
+            win32file.CreateFileW('\\\\?\\' + os.path.abspath(os.path.join(self.long_path, r'foo.txt')), 0, 0, None, win32file.CREATE_NEW, 0, None)
+
+    def mkdirs(self, path):
+        if not os.path.isabs(path):
+            path = os.path.join(os.path.abspath('.'), os.path.normpath(path))
+        if not os.path.exists(os.path.dirname(path)):
+            self.mkdirs(os.path.dirname(path))
+        self.mkdir(path)
+
+    def mkdir(self, path):
+        if 'java' in sys.platform:
+            import java.io
+            f = java.io.File(path)
+            if not f.exists():
+                os.mkdir(path)
+        elif not os.path.exists(path):
+            if sys.platform == "win32":
+                try:
+                    import win32file
+                    win32file.CreateDirectoryW('\\\\?\\' + path, None)
+                except:
+                    pass
+            else:
+                os.mkdir(path)
+
+    def test_rmtree_long_path(self):
+        fileutils.rmtree(root_test_dir)
+        assert not os.path.exists(self.long_path)
+        assert not os.path.exists(root_test_dir)
+
+    def test_rmtree_long_path_unc_format(self):
+        if sys.platform == "win32":
+            fileutils.rmtree(u"\\\\?\\" + os.path.join(os.path.abspath('.'), root_test_dir))
+            assert not os.path.exists(self.long_path)
+            assert not os.path.exists(root_test_dir)
+        
+class DestInSrcTest(unittest.TestCase):
+    
+    def test_destinsrc(self):
+        """ Verify that Z:/a/b/c/d is under Z:/a/b/c """
+        src = r"Z:/a/b/c"
+        dst = r"Z:/a/b/c/d"
+        assert fileutils.destinsrc(src, dst) is True
+    
+    def test_destinsrc2(self):
+        """ Verify that Z:/a/b/c/d is not under Z:/a/b/cc """
+        src = r"Z:/a/b/cc"
+        dst = r"Z:/a/b/c/d"
+        assert fileutils.destinsrc(src, dst) is False
+
+    def test_destinsrc_nt(self):
+        """ Verify that Z:/a/b/c/d is under Z:/a/b/C """
+        src = r"Z:/a/b/C"
+        dst = r"Z:/a/b/c/d"
+        if os.sep == '\\':
+            assert fileutils.destinsrc(src, dst) is True
+        else:
+            assert fileutils.destinsrc(src, dst) is False
+
+    def test_destinsrc2_nt(self):
+        """ Verify that Z:/a/b/c/d is not under Z:/a/b/CC """
+        if os.sep == '\\':
+            src = r"Z:/a/b/CC"
+            dst = r"Z:/a/b/c/d"
+            assert fileutils.destinsrc(src, dst) is False
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncorecpythontests/test_logger.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,100 @@
+#============================================================================ 
+#Name        : test_logger.py 
+#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:
+#===============================================================================
+
+import logging
+import os
+import unittest
+
+import helium.logger
+import helium.outputer
+
+
+# Uncomment this line to enable logging in this module, or configure logging elsewhere
+#logging.basicConfig(level=logging.DEBUG)
+logger = logging.getLogger('test.helium.logger')
+
+
+class TestHeliumLogger(unittest.TestCase):
+            
+    def test_mc_logger_xml_generation(self):
+        """ Test simple XML logging generation. """
+        mclogger = helium.logger.Logger()
+        mclogger.SetInterface("http://fawww.europe.company.com/isis/isis_interface/")
+        mclogger.SetTitle("Validate Overlay")
+        mclogger.SetSubTitle("Validating: ")
+        mclogger.OpenMainContent("test")
+        mclogger.PrintRaw("<a href=\"google.com\">test</a>")
+        mclogger.Print("test")
+        mclogger.Print(u"\u00A9")
+        mclogger.error("test")
+        mclogger.CloseMainContent()
+        mclogger.OpenMainContent("test2")
+        mclogger.OpenEvent("test2")
+        mclogger.Print("test2")
+        mclogger.error("test2")
+        mclogger.CloseEvent()
+        mclogger.CloseMainContent()
+        mclogger.WriteToFile('log.xml')
+        
+        logger.info(mclogger)
+        
+        os.unlink('log.xml')
+        
+        #out = helium.outputer.XML2XHTML("log.xml")
+        #out.generate()
+        #out.WriteToFile("log.html")
+
+    def test_helium_logger_unicode_handling(self):
+        """ Test simple XML logging generation with unicode handling. """
+        mclogger = helium.logger.Logger()
+        mclogger.SetInterface("http://fawww.europe.company.com/isis/isis_interface/")
+        mclogger.SetTitle("Validate Overlay")
+        mclogger.SetSubTitle("Validating: ")
+        mclogger.OpenMainContent("test")
+        mclogger.Print(u"Test unicode handling: \u00A9")
+        mclogger.CloseMainContent()
+        mclogger.WriteToFile('log.xml')
+        
+        logger.info(mclogger)
+        
+        os.unlink('log.xml')
+
+    def test_helium_logger_outputer(self):
+        """ Test simple XML logging generation with unicode handling and XHTML generation. """
+        mclogger = helium.logger.Logger()
+        mclogger.SetInterface("http://fawww.europe.company.com/isis/isis_interface/")
+        mclogger.SetTitle("Validate Overlay")
+        mclogger.SetSubTitle("Validating: ")
+        mclogger.OpenMainContent("test")
+        mclogger.Print(u"Test unicode handling: \u00A9")
+        mclogger.CloseMainContent()
+        mclogger.WriteToFile('log.xml')
+        
+        logger.info(mclogger)
+        
+        out = helium.outputer.XML2XHTML('log.xml')
+        out.generate()
+        out.WriteToFile('log.html')
+        
+        os.unlink('log.xml')
+        os.unlink('log.html')
+
+
+if __name__ == '__main__':
+    unittest.main()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncorecpythontests/test_matti.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,211 @@
+# -*- coding: latin-1 -*-
+
+#============================================================================ 
+#Name        : test_matti.py 
+#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:
+#===============================================================================
+
+""" Testing MATTI framework. """
+
+# pylint: disable-msg=E1101
+
+import logging
+logging.getLogger().setLevel(logging.ERROR)
+import os
+#import shutil
+from path import path
+import ats3.aste
+import ats3.matti.MattiDrops
+#from lxml import objectify
+#from lxml import etree
+import tempfile
+
+TEST_FILE_NAME = 'test.xml'
+ZIP_FILE_NAME = os.path.join(tempfile.mkdtemp(), 'MATTIDrop.zip')
+
+class Bunch(object):
+    """do something with the paramerters passed to it"""    
+    def __init__(self, **kwargs): 
+        self.__dict__.update(kwargs)
+    
+
+def equal_xml(result, expect):
+    """Check the equality of the given XML snippets. """
+#    logging.info(" expect %s" % expect)
+#    xml1 = objectify.fromstring(expect)
+#    expect1 = etree.tostring(xml1)
+#    logging.info(" expect1 %s" % expect1)
+#    logging.info(" expect2 -------------%s" % expect2)
+#            
+#    xml2 = objectify.fromstring(result)
+#    result2 = etree.tostring(xml2)        
+#    self.assertEquals(expect1, result1)
+#
+#    if xml1.tag != xml2.tag:
+#        return False
+#    if xml1.attrib != xml2.attrib:
+#        return False
+#    if xml1.text:
+#        if not xml2.text:
+#            return False
+#    if xml2.text:
+#        if not xml1.text:
+#            return False
+#    if xml1.text and xml2.text and xml1.text.strip() != xml2.text.strip():
+#        return False
+#    if xml1.tail is not None and xml2.tail is not None:
+#        if xml1.tail.strip() != xml2.tail.strip():
+#            return False
+#    elif xml1.tail != xml2.tail:
+#        return False
+#    children1 = list(xml1.getchildren())
+#    children2 = list(xml2.getchildren())
+#    if len(children1) != len(children2):
+#        return False
+#    for child1, child2 in zip(children1, children2):
+#        return equal_xml(child1, child2)
+#    return True
+    if expect:
+        return result   
+
+
+def setup_module():
+    """ stuff to do before running the tests """
+    pass    
+    
+def teardown_module():
+    """ stuff to do after running the tests """
+    if os.path.exists(TEST_FILE_NAME):
+        os.remove(TEST_FILE_NAME)
+    if os.path.exists(ZIP_FILE_NAME):
+        os.remove(ZIP_FILE_NAME)
+    
+    
+class TestPlanMatti():
+    """ test MattiDrop.py """
+    def __init__(self): 
+        self.config = None
+        self.tp_result = None
+        
+        (_, self.image1) = tempfile.mkstemp()
+        (_, self.image2) = tempfile.mkstemp()
+        (_, self.image3) = tempfile.mkstemp()
+        (_, self.sis1) = tempfile.mkstemp()
+        (_, self.sis2) = tempfile.mkstemp()
+            
+    def test_all_present(self):
+        """ test mattiDrops.py with all parameters present and correct"""
+        teardown_module()
+        opts = Bunch(build_drive="z:", 
+             matti_scripts=os.path.join(os.environ['TEST_DATA'], 'data/matti'),
+             flash_images = '%s,%s,%s' % (self.image1, self.image2, self.image3),
+             report_email="", harness="STIF", 
+             file_store=path(), testrun_name="testrun",  
+             device_type="product", device_hwid="5425", diamonds_build_url="", drop_file=ZIP_FILE_NAME, 
+             minimum_flash_images="2", plan_name="matti_test_plan", 
+             sis_files = '%s,%s' % (self.sis1, self.sis2),
+             template_loc=os.path.join(os.path.dirname(__file__), '../ats3/matti/template/matti_demo.xml'), 
+             test_timeout="60", verbose="false")
+       
+        self.config = ats3.matti.MattiDrops.Configuration(opts)
+        self.tp_result = ats3.matti.MattiDrops.create_drop(self.config)
+        assert os.path.exists(ZIP_FILE_NAME)
+        assert os.path.exists(TEST_FILE_NAME)
+        #shutil.copy(TEST_FILE_NAME, os.path.join(TMPDIR, 'test_all_present.xml'))
+        #equal_xml(TEST_FILE_NAME, os.path.join(TMPDIR, 'test_all_present.xml'))
+        
+    def test_no_sis_or_flash_files(self):
+        """test mattiDrops.py with no sis or flash files in the parameters"""
+        teardown_module()
+        opts = Bunch(build_drive="z:", 
+             matti_scripts=os.path.join(os.environ['TEST_DATA'], 'data/matti'),
+             flash_images = "",
+             report_email="", harness="STIF", 
+             file_store=path(), testrun_name="testrun",  
+             device_type="product", device_hwid="5425", diamonds_build_url="", drop_file=ZIP_FILE_NAME, 
+             minimum_flash_images="2", plan_name="matti_test_plan", 
+             sis_files= "", 
+             template_loc=os.path.join(os.path.dirname(__file__), '../ats3/matti/template/matti_demo.xml'), 
+             test_timeout="60", verbose="true")
+       
+        self.config = ats3.matti.MattiDrops.Configuration(opts)
+        self.tp_result = ats3.matti.MattiDrops.create_drop(self.config)
+        assert os.path.exists(ZIP_FILE_NAME)
+        assert os.path.exists(TEST_FILE_NAME)
+        #shutil.copy(TEST_FILE_NAME, os.path.join(TMPDIR, 'test_no_sis_or_flash.xml'))
+        #equal_xml(TEST_FILE_NAME, os.path.join(TMPDIR, 'test_no_sis_or_flash.xml'))
+
+
+    def test_no_files(self):
+        """ test mattiDtops.py with no filespresent at all"""
+        teardown_module()
+        opts = Bunch(build_drive="z:", 
+             matti_scripts=tempfile.mkdtemp(), 
+             flash_images = "",
+             report_email="", harness="STIF", 
+             file_store=path(), testrun_name="testrun",  
+             device_type="product", device_hwid="5425", diamonds_build_url="", drop_file=ZIP_FILE_NAME, 
+             minimum_flash_images="2", plan_name="matti_test_plan", 
+             sis_files= "", 
+             template_loc=os.path.join(os.path.dirname(__file__), '../ats3/matti/template/matti_demo.xml'), 
+             test_timeout="60", verbose="true")
+        self.config = ats3.matti.MattiDrops.Configuration(opts)
+        self.tp_result = ats3.matti.MattiDrops.create_drop(self.config)
+        assert not os.path.exists(ZIP_FILE_NAME)
+        assert os.path.exists(TEST_FILE_NAME)
+        #shutil.copy(TEST_FILE_NAME, os.path.join(TMPDIR, 'test_no_files.xml'))
+        #equal_xml(TEST_FILE_NAME, os.path.join(TMPDIR, 'test_no_files.xml'))
+
+    def test_no_params(self):
+        """test MattiDrops.py with no parameters present at all"""
+        teardown_module()
+        opts = Bunch(build_drive="", 
+             matti_scripts="", 
+             flash_images = "",
+             report_email="", harness="", 
+             file_store="", testrun_name="",  
+             device_type="", device_hwid="", diamonds_build_url="", drop_file="", 
+             minimum_flash_images="", plan_name="", 
+             sis_files= "", 
+             template_loc="", 
+             test_timeout="", verbose="true")
+       
+        self.config = ats3.matti.MattiDrops.Configuration(opts)
+        self.tp_result = ats3.matti.MattiDrops.create_drop(self.config)
+        assert not os.path.exists(ZIP_FILE_NAME)
+        assert not os.path.exists(TEST_FILE_NAME)
+
+    def test_some_not_present(self):
+        """ test MattiDrops.py with an extra file not present in the dir"""
+        teardown_module()
+        opts = Bunch(build_drive="z:", 
+             matti_scripts=os.path.join(os.environ['TEST_DATA'], 'data/matti'),
+             flash_images = '%s,%s,%s' % (self.image1, self.image2, self.image3),
+             report_email="", harness="STIF", 
+             file_store=path(), testrun_name="testrun",  
+             device_type="product", device_hwid="5425", diamonds_build_url="", drop_file=ZIP_FILE_NAME, 
+             minimum_flash_images="2", plan_name="matti_test_plan", 
+             sis_files = '%s,%s' % (self.sis1, self.sis2),
+             template_loc=os.path.join(os.path.dirname(__file__), '../ats3/matti/template/matti_demo.xml'), 
+             test_timeout="60", verbose="false")
+       
+        self.config = ats3.matti.MattiDrops.Configuration(opts)
+        self.tp_result = ats3.matti.MattiDrops.create_drop(self.config)
+        assert os.path.exists(ZIP_FILE_NAME)
+        assert os.path.exists(TEST_FILE_NAME)
+        #shutil.copy(TEST_FILE_NAME, os.path.join(TMPDIR, 'test_some_not_present.xml'))
+        #equal_xml(TEST_FILE_NAME, os.path.join(TMPDIR, 'test_some_not_present.xml'))
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncorecpythontests/test_packageiad.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,90 @@
+#============================================================================ 
+#Name        : test_packageiad.py 
+#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:
+#===============================================================================
+
+""" Test cases for packageiad.
+
+"""
+import sys
+import os
+import xml.dom.minidom
+import logging
+
+
+logger = logging.getLogger('test.packageiad')
+logging.basicConfig(level=logging.INFO)
+
+
+def setup_module():
+    """ Creates some test data files for file-related testing. """
+    
+    
+def teardown_module():
+    """ Cleans up test data files for file-related testing. """
+    if os.path.exists('testPackage.zip') and os.path.isfile('testPackage.zip'): 
+        os.remove('testPackage.zip')
+
+    
+#def test_package_main(self):
+    """ Test the package IAD class.
+    
+    iad = __import__('packageiad')
+    sysdef = os.path.join(os.environ['TEST_DATA'], 'data', 'packageiad', 'layers.sysdef.xml')
+    sysdefconfigs = "developer_mc_4032"
+    builddrive = os.path.join(os.environ['TEST_DATA'], 'data', 'packageiad')
+    result = iad.main(sysdef, sysdefconfigs, builddrive) """
+
+#def test_package_processSisDir(self):
+    """ Test the packageiad test_package_processSisDir method.
+    
+    iad = __import__('packageiad')
+    packager = iad.IADPackager()    #init the packager
+    builddrive = os.path.join(os.environ['TEST_DATA'], 'data', 'packageiad')
+    buildDirs = os.path.join(os.environ['TEST_DATA'], 'data', 'packageiad', 'sis\\')
+    packager.processSisDir(buildDirs, builddrive + "\\epoc32\\tools\\makesis.exe") """
+    
+def test_createPackage():
+    """ test the create package method """
+    #load up the python file
+    
+    iad = __import__('packageiad')
+    packager = iad.IADPackager()    #init the packager
+    topDir = os.path.join(os.environ['TEST_DATA'], 'data', 'packageiad', 'sis')
+    packageName = 'testPackage'
+    currentDir = os.getcwd()
+    packager.createPackage(topDir, packageName)
+    if not os.path.exists('testPackage.zip') and not os.path.isfile('testPackage.zip'):
+        logger.info("testPackage.zip file not created")
+        assert (os.path.exists('testPackage.zip') and os.path.isfile('testPackage.zip'))
+    os.chdir(currentDir)
+    
+def test_getLayers():
+    """ test getLayers in packageIAD """
+    
+    iad = __import__('packageiad')
+    sysdefFile = os.path.join(os.environ['TEST_DATA'], 'data', 'packageiad', 'layers.sysdef.xml')
+    sysdef = xml.dom.minidom.parse (sysdefFile)
+    configurations = sysdef.getElementsByTagName ("configuration")
+    layers = sysdef.getElementsByTagName ("layer")
+
+    bldDirs = []
+    
+    packager = iad.IADPackager()
+    
+    for configuration in configurations :
+        packager.getLayer (configuration, layers, bldDirs)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncorecpythontests/test_parsers.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,687 @@
+# -*- encoding: latin-1 -*-
+
+#============================================================================ 
+#Name        : test_parsers.py 
+#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:
+#===============================================================================
+
+import os
+import tempfile
+import mocker
+from path import path
+import StringIO
+
+import ats3.parsers
+import ats3.testconfigurator
+
+import logging
+logging.getLogger().setLevel(logging.ERROR)
+
+TSRC_DIR = None
+
+def setup_module():
+    """Setup the test environment. The testing of the test parser script requires spesific
+    structure to be available with bld.inf files (with the content written into those)."""
+    global TSRC_DIR
+    TSRC_DIR = path(tempfile.mkdtemp()).normpath()
+    test_component = TSRC_DIR
+    for path_parts in (("tsrc", "group"),
+                       ("tsrc", "tc1", "group"),
+                       ("tsrc", "tc1", "data"),
+                       ("tsrc", "tc1", "dependent_1", "group"),
+                       ("tsrc", "tc1", "dependent_2", "group"),
+                       ("tsrc", "tc1", "subtest", "group"),
+                       ("tsrc", "tc1", "subtest", "data"),
+                       ("tsrc", "tc1", "subtest", "if_test", "group"),
+                       ("tsrc", "tc2", "group"),
+                       ("tsrc", "tc2", "data"),
+                       ("tsrc", "tc3", "group"),
+                       ("tsrc", "tc3", "data"),
+                       ("tmp", "macros"),
+                       ):
+        filepath = path.joinpath(test_component, *path_parts).normpath()
+        if not filepath.exists():
+            os.makedirs(filepath)
+    
+        
+    tsrc = open(path.joinpath(TSRC_DIR, "tsrc", "group", "bld.inf"), 'w')
+    tsrc.write(
+            r"""
+#include "../tc1/group/bld.inf"
+#include "../tc2/group/bld.inf"
+#include "../tc3/group/bld.inf" 
+
+PRJ_TESTMMPFILES
+
+            """)
+    tsrc.close()
+    
+    tc1 = open(path.joinpath(TSRC_DIR, "tsrc", "tc1", "group", "bld.inf"), 'w')
+    tc1.write(
+            r"""
+#include "../dependent_1/group/bld.inf"
+#include "../dependent_2/group/bld.inf"
+#include "../subtest/group/bld.inf"
+
+PRJ_TESTMMPFILES
+tc1.mmp
+
+PRJ_MMPFILES
+not_included.mmp
+            """)
+    tc1.close()
+    
+    tc1_mmp = open(path.joinpath(TSRC_DIR, "tsrc", "tc1", "group", "tc1.mmp"), 'w')
+    tc1_mmp.write(
+            r"""
+TARGET          tc1.dll
+TARGETTYPE      dll
+LIBRARY         stiftestinterface.lib
+LIBRARY         user.lib
+            """)
+    tc1_mmp.close()
+    
+    tc1_sub = open(path.joinpath(TSRC_DIR, "tsrc", "tc1", "subtest", "group", "bld.inf"), "w")
+    tc1_sub.write(
+            r"""
+PRJ_TESTMMPFILES
+sub_test.mmp    
+#ifndef RD_TEST1
+#include "../if_test/group/bld.inf"
+#endif
+            """)
+    tc1_sub.close()
+    tc1_sub_mmp = open(path.joinpath(TSRC_DIR, "tsrc", "tc1", "subtest", "group", "sub_test.mmp"), 'w')
+    tc1_sub_mmp.write(
+            r"""
+TARGET          sub_test.dll
+TARGETTYPE      dll
+LIBRARY         stiftestinterface.lib
+            """)
+    tc1_sub_mmp.close()
+
+    
+    tc1_if = open(path.joinpath(TSRC_DIR, "tsrc", "tc1", "subtest", "if_test", "group", "bld.inf"), "w")
+    tc1_if.write(
+            r"""
+PRJ_TESTMMPFILES
+if_test.mmp
+            """)
+    tc1_if.close()
+    tc1_if_mmp = open(path.joinpath(TSRC_DIR, "tsrc", "tc1", "subtest", "if_test", "group", "if_test.mmp"), 'w')
+    tc1_if_mmp.write(
+            r"""
+TARGET          tc1_if.dll
+TARGETTYPE      dll
+LIBRARY         stifunit.lib
+            """)
+    tc1_if_mmp.close()
+
+    tc1_dep1 = open(path.joinpath(TSRC_DIR, "tsrc", "tc1", "dependent_1", "group", "bld.inf"), "w")
+    tc1_dep1.write(
+            r"""
+PRJ_TESTMMPFILES
+dependent_1.mmp
+onemore.mmp
+            """)
+    tc1_dep1.close()
+
+    tc1_dep1_mmp = open(path.joinpath(TSRC_DIR, "tsrc", "tc1", "dependent_1", "group", "dependent_1.mmp"), 'w')
+    tc1_dep1_mmp.write(
+            r"""
+TARGET          dependent_1.dll
+TARGETTYPE      PLUGIN
+            """)
+    tc1_dep1_mmp.close()
+        
+    tc1_dep2 = open(path.joinpath(TSRC_DIR, "tsrc", "tc1", "dependent_2", "group", "bld.inf"), "w")
+    tc1_dep2.write(
+            r"""
+PRJ_TESTMMPFILES
+dependent_2.mmp
+            """)
+    tc1_dep2.close()
+    
+    tc1_dep2_mmp = open(path.joinpath(TSRC_DIR, "tsrc", "tc1", "dependent_2", "group", "dependent_2.mmp"), 'w')
+    tc1_dep2_mmp.write(
+            r"""
+TARGET          dependent_2.dll
+TARGETTYPE      PLUGIN
+            """)
+    tc1_dep2_mmp.close()
+    
+    tc1_pkg = open(path.joinpath(TSRC_DIR, "tsrc", "tc1", "group", "tc1.pkg"), 'w')
+    tc1_pkg.write(
+                  r"""
+;Language - standard language definitions
+&EN
+
+; standard SIS file header
+#{"BTEngTestApp"},(0x04DA27D5),1,0,0
+
+;Supports Series 60 v 3.0
+(0x101F7961), 0, 0, 0, {"Series60ProductID"}
+
+;Localized Vendor Name
+%{"BTEngTestApp"}
+
+;Unique Vendor name
+:"Nokia"
+
+; Files to copy
+"..\data\file1.dll"-"c:\sys\bin\file1.dll"
+"..\data\file1.txt"-"e:\sys\bin\file1.txt" , FF   ; FF stands for Normal file
+"..\data\file2.mp3"-"e:\sys\bin\file2.mp3"
+"..\data\TestFramework.ini"-"c:\sys\bin\TestFramework.ini"
+;"..\xyz\TestFramework.ini"-"!:\sys\bin\TestFramework.ini" (commented line)
+"../data/temp.ini"-"!:/sys/bin/temp.ini" , FF ; "something here"
+"..\data\tc1.cfg"-"e:\sys\bin\tc1.cfg"
+"..\data\tc1.sisx"-"e:\sys\bin\tc1.sisx"
+"..\data\DUMP.xyz"-"e:\sys\bin\DUMP.xyz"
+
+            
+        """.replace('\\', os.sep))
+    tc1_pkg.close()
+    
+    open(path.joinpath(TSRC_DIR, "tsrc", "tc1", "data", "file1.dll"), 'w').close()
+    open(path.joinpath(TSRC_DIR, "tsrc", "tc1", "data", "file1.txt"), 'w').close()
+    open(path.joinpath(TSRC_DIR, "tsrc", "tc1", "data", "file2.mp3"), 'w').close()
+    open(path.joinpath(TSRC_DIR, "tsrc", "tc1", "data", "TestFramework.ini"), 'w').close()
+    open(path.joinpath(TSRC_DIR, "tsrc", "tc1", "data", "temp.ini"), 'w').close()
+    open(path.joinpath(TSRC_DIR, "tsrc", "tc1", "data", "DUMP.xyz"), 'w').close()
+    
+    tc2 = open(path.joinpath(TSRC_DIR, "tsrc", "tc2", "group", "bld.inf"), "w")
+    tc2.write(
+            r"""
+PRJ_TESTMMPFILES
+tc2.mmp
+            """)
+    tc2.close()
+    tc2_mmp = open(path.joinpath(TSRC_DIR, "tsrc", "tc2", "group", "tc2.mmp"), 'w')
+    tc2_mmp.write(
+            r"""
+TARGET          tc2.dll
+TARGETTYPE      dll
+LIBRARY         EUnit.lib
+            """)
+    tc2_mmp.close()
+    
+    tc2_pkg = open(path.joinpath(TSRC_DIR, "tsrc", "tc2", "group", "tc2.pkg"), 'w')
+    tc2_pkg.write(
+                  r"""
+;Language - standard language definitions
+&EN
+
+; standard SIS file header
+#{"BTEngTestApp"},(0x04DA27D5),1,0,0
+
+;Supports Series 60 v 3.0
+(0x101F7961), 0, 0, 0, {"Series60ProductID"}
+
+;Localized Vendor Name
+%{"BTEngTestApp"}
+
+;Unique Vendor name
+:"Nokia"
+
+; Files to copy
+"..\data\file1.dll"-"c:\sys\bin\file1.dll"
+"..\data\file1.txt"-"e:\sys\bin\file1.txt"
+"..\data\file2.mp3"-"e:\sys\bin\file2.mp3"
+"..\data\TestFramework.ini"-"!:\sys\bin\TestFramework.ini" , FF   ; FF stands for Normal file
+"..\data\tc2.cfg"-"!:\sys\bin\tc2.cfg"
+        """.replace('\\', os.sep))
+    tc2_pkg.close()
+    
+    open(path.joinpath(TSRC_DIR, "tsrc", "tc2", "data", "file1.dll"), 'w').close()
+    open(path.joinpath(TSRC_DIR, "tsrc", "tc2", "data", "file1.txt"), 'w').close()
+    open(path.joinpath(TSRC_DIR, "tsrc", "tc2", "data", "file2.mp3"), 'w').close()
+    open(path.joinpath(TSRC_DIR, "tsrc", "tc2", "data", "TestFramework.ini"), 'w').close()
+    open(path.joinpath(TSRC_DIR, "tsrc", "tc2", "data", "tc2.cfg"), 'w').close()
+
+    
+    tc3 = open(path.joinpath(TSRC_DIR, "tsrc", "tc3", "group", "bld.inf"), "w")
+    tc3.write(
+            r"""
+PRJ_TESTMMPFILES
+tc3.mmp
+            """)
+    tc3.close()
+    tc3_mmp = open(path.joinpath(TSRC_DIR, "tsrc", "tc3", "group", "tc3.mmp"), 'w')
+    tc3_mmp.write(
+            r"""
+TARGET          tc3.dll
+TARGETTYPE      dll
+LIBRARY         EUnit.lib
+            """)
+    tc3_mmp.close()
+    
+    tc3_pkg = open(path.joinpath(TSRC_DIR, "tsrc", "tc2", "group", "tc2.pkg"), 'w')
+    tc3_pkg.write(
+                  r"""
+;Language - standard language definitions
+&EN
+
+; standard SIS file header
+#{"BTEngTestApp"},(0x04DA27D5),1,0,0
+
+;Supports Series 60 v 3.0
+(0x101F7961), 0, 0, 0, {"Series60ProductID"}
+
+;Localized Vendor Name
+%{"BTEngTestApp"}
+
+;Unique Vendor name
+:"Nokia"
+
+; Files to copy
+"..\data\file1.dll"-"c:\sys\bin\file1.dll"
+"..\data\file1.txt"-"e:\sys\bin\file1.txt"
+"..\data\file2.mp3"-"e:\sys\bin\file2.mp3" , FF   ; FF stands for Normal file
+"..\data\TestFramework.ini"-"!:\sys\bin\TestFramework.ini"
+"..\data\temp.ini"-"!:\sys\bin\temp.ini"
+"..\data\tc2.cfg"-"!:\sys\bin\tc2.cfg"
+        """.replace('\\', os.sep))
+    tc3_pkg.close()
+    
+    open(path.joinpath(TSRC_DIR, "tsrc", "tc3", "data", "file1.dll"), 'w').close()
+    open(path.joinpath(TSRC_DIR, "tsrc", "tc3", "data", "file1.txt"), 'w').close()
+    open(path.joinpath(TSRC_DIR, "tsrc", "tc3", "data", "file2.mp3"), 'w').close()
+    open(path.joinpath(TSRC_DIR, "tsrc", "tc3", "data", "TestFramework.ini"), 'w').close()
+    open(path.joinpath(TSRC_DIR, "tsrc", "tc3", "data", "temp.ini"), 'w').close()
+    open(path.joinpath(TSRC_DIR, "tsrc", "tc3", "data", "tc2.cfg"), 'w').close()
+    
+    macros = open(path.joinpath(TSRC_DIR, "tmp", "macros", "bldcodeline.hrh"), 'w')
+    macros.write(
+              r"""
+#ifndef __BLDCODELINE_HRH
+#define __BLDCODELINE_HRH
+
+/** #RD_TEST */
+#define RD_TEST1
+
+/** #RD_TEST2 */
+#define RD_TEST2
+
+/** #RD_TEST3 */
+#define RD_TEST3
+
+#endif  // __BLDCODELINE_HRH
+
+    """)
+    macros.close()
+
+    
+def teardown_module():
+    """ Cleanup environment after testing. """    
+    def __init__():
+        TSRC_DIR.rmtree()
+        
+        
+#        list_of_paths = []
+#        list_of_paths = path.walk(TSRC_DIR)
+#        for file in list_of_paths[2]:
+#            continue
+#        for dir in list_of_paths[1]:
+#            continue
+        
+
+class TestPkgFileParser(mocker.MockerTestCase):
+    """Testing Package file parser"""
+    def __init__(self, methodName="runTest"):
+        mocker.MockerTestCase.__init__(self, methodName)
+
+    def setUp(self):
+        """Setup for PkgFile parser"""
+        self.pkg_file_path1 = os.path.normpath(os.path.join(TSRC_DIR, "tsrc", "tc1", "group"))
+        self.pkg_file_path2 = os.path.normpath(os.path.join(TSRC_DIR, "tsrc", "tc2", "group"))
+        self.pkg_file_path3 = os.path.normpath(os.path.join(TSRC_DIR, "tsrc", "tc3", "group"))
+        self.tcp = ats3.parsers.PkgFileParser("tc1.pkg")        
+        
+        self.data_files = [
+            (path(TSRC_DIR+r"" + os.sep + "tsrc" + os.sep + "tc1" + os.sep + "data" + os.sep + "file1.dll").normpath(), path(r"c:" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1.dll").normpath(), "testmodule", 'tc1.pkg'),
+            (path(TSRC_DIR+r"" + os.sep + "tsrc" + os.sep + "tc1" + os.sep + "data" + os.sep + "file1.txt").normpath(), path(r"e:" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1.txt").normpath(), "data", 'tc1.pkg'),
+            (path(TSRC_DIR+r"" + os.sep + "tsrc" + os.sep + "tc1" + os.sep + "data" + os.sep + "file2.mp3").normpath(), path(r"e:" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2.mp3").normpath(), "data", 'tc1.pkg'),
+            (path(TSRC_DIR+r"" + os.sep + "tsrc" + os.sep + "tc1" + os.sep + "data" + os.sep + "TestFramework.ini").normpath(), path(r"c:" + os.sep + "sys" + os.sep + "bin" + os.sep + "TestFramework.ini").normpath(), "engine_ini", 'tc1.pkg'),
+            (path(TSRC_DIR+r"" + os.sep + "tsrc" + os.sep + "tc1" + os.sep + "data" + os.sep + "temp.ini").normpath(), path(r"c:" + os.sep + "sys" + os.sep + "bin" + os.sep + "temp.ini").normpath(), "engine_ini", 'tc1.pkg'),
+            (path(TSRC_DIR+r"" + os.sep + "tsrc" + os.sep + "tc1" + os.sep + "data" + os.sep + "tc1.cfg").normpath(), path(r"e:" + os.sep + "sys" + os.sep + "bin" + os.sep + "tc1.cfg").normpath(), "conf", 'tc1.pkg'),
+            (path(TSRC_DIR+r"" + os.sep + "tsrc" + os.sep + "tc1" + os.sep + "data" + os.sep + "tc1.sisx").normpath(), path(r"e:" + os.sep + "sys" + os.sep + "bin" + os.sep + "tc1.sisx").normpath(), "", 'tc1.pkg'),
+            (path(TSRC_DIR+r"" + os.sep + "tsrc" + os.sep + "tc1" + os.sep + "data" + os.sep + "DUMP.xyz").normpath(), path(r"e:" + os.sep + "sys" + os.sep + "bin" + os.sep + "DUMP.xyz").normpath(), "data", 'tc1.pkg'),
+            ]
+
+    def test_get_pkg_files(self):
+        """Test if pkg files are returned from a specified location"""
+        assert self.tcp.get_pkg_files(self.pkg_file_path1, False) == ["tc1.pkg"]
+
+
+
+    def test_parser_receives_path(self):      
+        """Test if None is returned when a path to PKG file is incorrect"""
+        assert self.tcp.get_data_files("string") == []
+            
+    def test_data_files_creation_without_exclude(self):
+        """ Tests if PKG file parser creates data files list as expected without exclude"""
+        assert self.tcp.get_data_files(self.pkg_file_path1, "d:") == self.data_files
+        
+    def test_data_files_creation_with_exclude(self):
+        """ Tests if PKG file parser creates data files list as expected with exclude"""
+        self.data_files.pop()
+        assert self.tcp.get_data_files(self.pkg_file_path1, "d:", "\.xyz") == self.data_files
+
+    def test_data_files_creation_without_drive_with_exclude(self):
+        """ Tests if PKG file parser creates data files list as expected without drive with exclude"""
+        
+        self.data_files.pop()
+        assert self.tcp.get_data_files(self.pkg_file_path1, "", "\.xyz") == self.data_files
+
+    def test_data_files_creation_without_drive_without_exclude(self):
+        """ Tests if PKG file parser creates data files list as expected without drive without exclude"""
+        
+        assert self.tcp.get_data_files(self.pkg_file_path1, "") == self.data_files
+            
+
+class TestCppParser(mocker.MockerTestCase):
+    """Testing CPP parser"""
+    def __init__(self, methodName="runTest"):
+        mocker.MockerTestCase.__init__(self, methodName)
+
+    def setUp(self):
+        self.bld_path = os.path.normpath(os.path.join(TSRC_DIR, "tsrc", "group"))
+        self.bld_path_comp1 = os.path.normpath(os.path.join(TSRC_DIR, "tsrc", "tc1", "group"))
+        self.tcp = ats3.parsers.CppParser()
+        upper_bld_path = os.path.dirname(self.bld_path)
+        
+        self.dependent_paths_dictionary = {(os.path.normpath(os.path.join(upper_bld_path, "../tsrc/tc1/subtest/if_test/group"))): {'content': {(os.path.normpath(os.path.join(upper_bld_path, "../tsrc/tc1/subtest/if_test/group"))): {'pkg_files': [], 'mmp_files': ['if_test.mmp'], 'harness': 'STIFUNIT', 'type': ''}}},
+                                            (os.path.normpath(os.path.join(upper_bld_path, "../tsrc/tc2//group"))): {'content': {(os.path.normpath(os.path.join(upper_bld_path, "../tsrc/tc2/group"))): {'pkg_files': ['tc2.pkg'], 'mmp_files': ['tc2.mmp'], 'harness': 'EUNIT', 'type': 'executable'}}}, 
+                                            (os.path.normpath(os.path.join(upper_bld_path, "../tsrc/tc3/group"))): {'content': {(os.path.normpath(os.path.join(upper_bld_path, "../tsrc/tc3/group"))): {'pkg_files':[], 'mmp_files': ['tc3.mmp'], 'harness': 'EUNIT', 'type': 'executable'}}},
+                                            (os.path.normpath(os.path.join(upper_bld_path, "../tsrc/tc1/group"))): {'content': {(os.path.normpath(os.path.join(upper_bld_path, "../tsrc/tc1/subtest/group"))): {'pkg_files': [], 'mmp_files': ['sub_test.mmp'], 'harness': 'STIF', 'type': 'executable'}, 
+                                                                                                                                (os.path.normpath(os.path.join(upper_bld_path, "../tsrc/tc1/dependent_1/group"))): {'pkg_files': [], 'mmp_files': ['dependent_1.mmp', 'onemore.mmp'], 'harness': "", 'type':''}, 
+                                                                                                                                (os.path.normpath(os.path.join(upper_bld_path, "../tsrc/tc1/dependent_2/group"))): {'pkg_files': [], 'mmp_files': ['dependent_2.mmp'], 'harness': "", 'type': 'dependent'}, 
+                                                                                                                                (os.path.normpath(os.path.join(upper_bld_path, "../tsrc/tc1/group"))): {'pkg_files': ['tc1.pkg'], 'mmp_files': ['tc1.mmp'],'harness': 'STIF', 'type': 'executable'}}}} 
+        
+        self.extended_path_list = [(os.path.normpath(upper_bld_path), upper_bld_path),
+                           (os.path.normpath(os.path.join(upper_bld_path, "../tsrc/tc1/group")), upper_bld_path),
+                           (os.path.normpath(os.path.join(upper_bld_path, "../tsrc/tc1/group/../dependent_1/group")), os.path.normpath(os.path.join(upper_bld_path, "../tc1/group"))),
+                           (os.path.normpath(os.path.join(upper_bld_path, "../tsrc/tc1/group/../dependent_2/group")), os.path.normpath(os.path.join(upper_bld_path, "../tc1/group"))),
+                           (os.path.normpath(os.path.join(upper_bld_path, "../tsrc/tc1/group/../subtest/group")), os.path.normpath(os.path.join(upper_bld_path, "../tc1/group"))),
+                           (os.path.normpath(os.path.join(upper_bld_path, "../tsrc/tc1/group/../subtest/group/../if_test/group")), os.path.normpath(os.path.join(upper_bld_path, "../tc1/group/../subtest/group"))),
+                           (os.path.normpath(os.path.join(upper_bld_path, "../tsrc/tc2/group")), upper_bld_path),
+                           (os.path.normpath(os.path.join(upper_bld_path, "../tsrc/tc3/group")), upper_bld_path),
+                           (os.path.normpath(os.path.join(upper_bld_path, "../tsrc/group/group")), upper_bld_path),
+                           ]
+        self.path_list = [os.path.normpath(os.path.join(upper_bld_path, "group")),
+                           os.path.normpath(os.path.join(upper_bld_path, "../tsrc/tc1/group")),
+                           os.path.normpath(os.path.join(upper_bld_path, "../tsrc/tc1/group/../dependent_1/group")),
+                           os.path.normpath(os.path.join(upper_bld_path, "../tsrc/tc1/group/../dependent_2/group")),
+                           os.path.normpath(os.path.join(upper_bld_path, "../tsrc/tc1/group/../subtest/group")),
+                           os.path.normpath(os.path.join(upper_bld_path, "../tsrc/tc1/group/../subtest/group/../if_test/group")),
+                           os.path.normpath(os.path.join(upper_bld_path, "../tsrc/tc2/group")),
+                           os.path.normpath(os.path.join(upper_bld_path, "../tsrc/tc3/group")),
+                           ]
+        self.path_list_without_undefined = [os.path.normpath(upper_bld_path),
+                           os.path.normpath(os.path.join(upper_bld_path, "../tc1/group")),
+                           os.path.normpath(os.path.join(upper_bld_path, "../tc1/group/../dependent_1/group")),
+                           os.path.normpath(os.path.join(upper_bld_path, "../tc1/group/../dependent_2/group")),
+                           os.path.normpath(os.path.join(upper_bld_path, "../tc1/group/../subtest/group")),
+                           os.path.normpath(os.path.join(upper_bld_path, "../tc2/group")),
+                           os.path.normpath(os.path.join(upper_bld_path, "../tc3/group")),
+                           ]
+        self.cpp_output = ['# 1 "bld.inf"', 
+                           '# 1 "../tc1/group/bld.inf" 1', 
+                           '# 1 "../tc1/group/../dependent_1/group/bld.inf" 1', 
+                           '# 4 "../tc1/group/bld.inf" 2', 
+                           '# 1 "../tc1/group/../dependent_2/group/bld.inf" 1', 
+                           '# 5 "../tc1/group/bld.inf" 2', 
+                           '# 1 "../tc1/group/../subtest/group/bld.inf" 1', 
+                           '# 1 "../tc1/group/../subtest/group/../if_test/group/bld.inf" 1', 
+                           '# 4 "../tc1/group/../subtest/group/bld.inf" 2', 
+                           '# 6 "../tc1/group/bld.inf" 2', 
+                           '# 3 "bld.inf" 2', 
+                           '# 1 "../tc2/group/bld.inf" 1', 
+                           '# 4 "bld.inf" 2', 
+                           '# 1 "../tc3/group/bld.inf" 1', 
+                           '# 5 "bld.inf" 2']
+        
+        
+         
+    def test_pathlist_output(self):
+        """Test get_cpp_output-method using "n" -parameter"""
+        assert self.path_list.sort() == self.tcp.get_cpp_output(self.bld_path, "n").sort()
+        
+    def test_extended_pathlist_output(self):
+        """Test get_cpp_output-method using "e" -parameter"""
+        assert self.extended_path_list.sort() == self.tcp.get_cpp_output(self.bld_path, "e").sort()
+
+    def test_dictionary_pathlist_output(self):
+        """Test get_cpp_output-method using "d" -parameter (dependent paths)"""
+        output = """# 1 "bld.inf"
+
+# 1 "../tc1/group/bld.inf" 1
+
+# 1 "../tc1/group/../dependent_1/group/bld.inf" 1
+
+PRJ_TESTMMPFILES
+dependent_1.mmp
+onemore.mmp
+            
+# 2 "../tc1/group/bld.inf" 2
+
+# 1 "../tc1/group/../dependent_2/group/bld.inf" 1
+
+PRJ_TESTMMPFILES
+dependent_2.mmp
+            
+# 3 "../tc1/group/bld.inf" 2
+
+# 1 "../tc1/group/../subtest/group/bld.inf" 1
+
+PRJ_TESTMMPFILES
+sub_test.mmp    
+
+# 1 "../tc1/group/../subtest/group/../if_test/group/bld.inf" 1
+
+PRJ_TESTMMPFILES
+if_test.mmp
+            
+# 5 "../tc1/group/../subtest/group/bld.inf" 2
+
+
+            
+# 4 "../tc1/group/bld.inf" 2
+
+
+PRJ_TESTMMPFILES
+tc1.mmp
+
+PRJ_MMPFILES
+not_included.mmp
+            
+# 2 "bld.inf" 2
+
+# 1 "../tc2/group/bld.inf" 1
+
+PRJ_TESTMMPFILES
+tc2.mmp
+            
+# 3 "bld.inf" 2
+
+# 1 "../tc3/group/bld.inf" 1
+
+PRJ_TESTMMPFILES
+tc3.mmp
+            
+# 4 "bld.inf" 2
+
+
+PRJ_TESTMMPFILES
+
+            
+"""
+        
+        result = self.tcp.create_dependency_dictionary(StringIO.StringIO(output), self.bld_path)
+        print "INPUT :", self.dependent_paths_dictionary
+        print "OUTPUT:", result 
+
+        assert self.dependent_paths_dictionary == result
+        
+    def test_conditional_cpp_parsing(self):
+        """Test functionality of cpp parser when removing conditionals"""
+        assert self.path_list_without_undefined.sort() == self.tcp.get_cpp_output(bld_path=self.bld_path, output_parameter="n", imacros=os.path.normpath(os.path.join(TSRC_DIR, "tmp", "macros", "bldcodeline.hrh"))).sort()
+
+class TestBldFileParser(mocker.MockerTestCase):
+    """Testing BldFileParser Class"""
+    
+    def __init__(self, methodName="runTest"):
+        mocker.MockerTestCase.__init__(self, methodName)
+    
+    def setUp(self):
+        """Setup for BldFile parser"""
+
+        self.bld_path = path.joinpath(TSRC_DIR, "tsrc", "group", "bld.inf").normpath()
+        upper_bld_path = self.bld_path.dirname()
+        self.tcp = ats3.parsers.BldFileParser()
+        
+        self.test_mmp_files = [
+                               ['tc1.mmp'], 
+                               ['dependent_1.mmp', 'onemore.mmp'], 
+                               ['dependent_2.mmp'], 
+                               ['sub_test.mmp'], 
+                               ['if_test.mmp'], 
+                               ['tc2.mmp'], 
+                               ["tc3.mmp"],
+                               ]
+
+        self.path_list = [path.joinpath(upper_bld_path, "../tc1/group").normpath(),
+                           path.joinpath(upper_bld_path, "../tc1/group/../dependent_1/group").normpath(),
+                           path.joinpath(upper_bld_path, "../tc1/group/../dependent_2/group").normpath(),
+                           path.joinpath(upper_bld_path, "../tc1/group/../subtest/group").normpath(),
+                           path.joinpath(upper_bld_path, "../tc1/group/../subtest/group/../if_test/group").normpath(),
+                           path.joinpath(upper_bld_path, "../tc2/group").normpath(),
+                           path.joinpath(upper_bld_path, "../tc3/group").normpath(),
+                           ]
+
+
+    def test_testmmp_files_with_full_path(self):
+        """Test if mmp file is returned with its full path"""
+        self.mmp_file_path = [path.joinpath(TSRC_DIR, "tsrc", "tc1", "group", "tc1.mmp").normpath()]
+        assert self.tcp.get_test_mmp_files(os.path.normpath(os.path.join(self.path_list[0], "bld.inf"))) == self.mmp_file_path
+        
+        
+
+    def test_testmmp_files(self):
+        """Tests if test mmp files are included"""
+        self.lst_test_mmp = []
+        
+        for p in self.path_list:
+            self.lst_test_mmp.append(self.tcp.get_test_mmp_files(os.path.normpath(os.path.join(p, "bld.inf")), False))
+
+        assert self.lst_test_mmp == self.test_mmp_files
+        
+    def test_ignore_comments(self):
+        """ Test if comments are ignored correctly. """
+        for input_, output in [
+            ("abc.mmp /* apuva.mmp */ xyz.mmp", ("abc.mmp xyz.mmp")),
+            ("abc.mmp /* apuva.mmp */", ("abc.mmp")),
+            ("/* apuva.mmp */", ""),
+            ("  // apuva.mmp", ""),
+            ("   apuva.mmp", "apuva.mmp"),
+            ("xyz.mmp // apuva.mmp", "xyz.mmp"),
+            ("abc.mmp /* apuva.mmp */ xyz.mmp //rst.mmp", ("abc.mmp xyz.mmp")),
+            ]:
+            assert self.tcp.ignore_comments_from_input(input_) == output
+        
+    def test_broken_path(self):
+        """Tests if 'None' is returned when path is broken"""
+        upper_bld_path = os.path.dirname(self.bld_path)
+        assert self.tcp.get_test_mmp_files(os.path.normpath(os.path.join(upper_bld_path, "../tc99/group"))) == None
+    
+    def test_empty_parameter(self):
+        """Tests if 'None' is returned when bld file path is empty"""
+        upper_bld_path = os.path.dirname(self.bld_path)
+        assert self.tcp.get_test_mmp_files("") == None
+
+    
+class TestMmpFileParser(mocker.MockerTestCase):
+    """Testing MmpFileParser Class"""
+    def __init__(self, methodName="runTest"):
+        mocker.MockerTestCase.__init__(self, methodName)
+        
+    def setUp(self):
+        self.bld_path = os.path.normpath(os.path.join(TSRC_DIR, "tsrc", "group", "bld.inf"))
+        upper_bld_path = os.path.dirname(self.bld_path)
+        self.tcp = ats3.parsers.MmpFileParser()
+        self.tc1_type = "dll"
+        self.tc1_name = "tc1.dll"
+        self.tc1_dll_type = "executable"
+        self.tc1_harness = "STIF"
+        self.tc1_libraries = ['stiftestinterface.lib', 'user.lib']
+        self.tc1_all = (self.tc1_name, self.tc1_type, self.tc1_libraries, self.tc1_harness)
+        self.tc1_no_harness = (self.tc1_name, self.tc1_type, self.tc1_libraries)
+        self.tc1_name_type = (self.tc1_name, self.tc1_type) 
+        self.tc1_iftest_harness = "STIFUNIT"
+        self.tc1_iftest_name = "tc1_if.dll"
+        self.tc1_iftest_type = "dll"
+        
+        self.test_mmp_files = [['tc1.mmp'], ['dependent_1.mmp', 'onemore.mmp'], ['dependent_2.mmp'], ['sub_test.mmp'], ['if_test.mmp'], 
+                               ['tc2.mmp'], ["tc3.mmp"]]
+
+        self.path_list = [os.path.normpath(os.path.join(upper_bld_path, "../tc1/group")),
+                           os.path.normpath(os.path.join(upper_bld_path, "../tc1/group/../dependent_1/group")),
+                           os.path.normpath(os.path.join(upper_bld_path, "../tc1/group/../dependent_2/group")),
+                           os.path.normpath(os.path.join(upper_bld_path, "../tc1/group/../subtest/group")),
+                           os.path.normpath(os.path.join(upper_bld_path, "../tc1/group/../subtest/group/../if_test/group")),
+                           os.path.normpath(os.path.join(upper_bld_path, "../tc2/group")),
+                           os.path.normpath(os.path.join(upper_bld_path, "../tc3/group")),
+                           ]
+    
+    def test_get_dlltype(self):
+        """Test if get_filetype returns right type for given mmp"""
+        assert self.tc1_dll_type == self.tcp.get_dll_type(os.path.normpath(os.path.join(self.path_list[0], 'tc1.mmp'))) 
+    
+    def test_get_target_filename(self):
+        """Test if get_filename returns right name for dll for given mmp"""
+        assert self.tc1_name == self.tcp.get_target_filename(os.path.normpath(os.path.join(self.path_list[0], 'tc1.mmp')))
+    
+    def test_get_libraries(self):
+        """Test if get_harness returns right harness for given mmp"""
+        assert self.tc1_libraries == self.tcp.get_libraries(os.path.normpath(os.path.join(self.path_list[0], 'tc1.mmp')))
+    
+    def test_get_harness(self):
+        """Test if get_harness returns right harness for given mmp"""
+        assert self.tc1_harness == self.tcp.get_harness(os.path.normpath(os.path.join(self.path_list[0], 'tc1.mmp')))
+    
+    def test_read_information_method(self):
+        """Test if read_information_from_mmp returns wanted output for given parameter and mmp-file"""
+        assert self.tc1_all == self.tcp.read_information_from_mmp(os.path.normpath(os.path.join(self.path_list[0], 'tc1.mmp')), 0)
+        assert self.tc1_no_harness == self.tcp.read_information_from_mmp(os.path.normpath(os.path.join(self.path_list[0], 'tc1.mmp')), 1)
+        assert self.tc1_name_type == self.tcp.read_information_from_mmp(os.path.normpath(os.path.join(self.path_list[0], 'tc1.mmp')), 2)
+        assert self.tc1_name == self.tcp.read_information_from_mmp(os.path.normpath(os.path.join(self.path_list[0], 'tc1.mmp')), 3)
+        assert self.tc1_type == self.tcp.read_information_from_mmp(os.path.normpath(os.path.join(self.path_list[0], 'tc1.mmp')), 4) 
+        assert self.tc1_libraries == self.tcp.read_information_from_mmp(os.path.normpath(os.path.join(self.path_list[0], 'tc1.mmp')), 5)
+        assert self.tc1_harness == self.tcp.read_information_from_mmp(os.path.normpath(os.path.join(self.path_list[0], 'tc1.mmp')), 6)
+        assert self.tc1_iftest_name == self.tcp.read_information_from_mmp(os.path.normpath(os.path.join(self.path_list[4], 'if_test.mmp')), 3)
+        assert self.tc1_iftest_type == self.tcp.read_information_from_mmp(os.path.normpath(os.path.join(self.path_list[4], 'if_test.mmp')), 4) 
+        assert self.tc1_iftest_harness == self.tcp.read_information_from_mmp(os.path.normpath(os.path.join(self.path_list[4], 'if_test.mmp')), 6)
+        assert self.tc1_dll_type == self.tcp.read_information_from_mmp(os.path.normpath(os.path.join(self.path_list[0], 'tc1.mmp')), 7)
+        
+class TestParsers(mocker.MockerTestCase):
+    """Testing Parsers functionality"""
+    def __init__(self, methodName="runTest"):
+        mocker.MockerTestCase.__init__(self, methodName)
+        
+    def setUp(self):
+        pass
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncorecpythontests/test_sis.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,76 @@
+#============================================================================ 
+#Name        : test_sis.py 
+#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:
+#===============================================================================
+
+""" Test sis module. """
+
+import logging
+import unittest
+import tempfile
+import os
+from lxml import etree
+
+import configuration
+import sis
+
+_logger = logging.getLogger('test.sis')
+
+
+class ArchivePreBuilderTest(unittest.TestCase):
+    """ Tests for sis module. """
+    
+    def test_sis_v1(self):
+        """ V1 config format. """
+        data = {'name': 'foo',
+                'path': 'bar'}
+        tree = self._setup_test_case(data)
+        assert tree.xpath("/project/target[@name='stage1']/parallel/*/arg/@line")[0] == '-v foo.pkg foo.sis'
+        
+    def test_sis_v2(self):
+        """ V2 config format. """
+        data = {'input': 'foo.pkg'}
+        tree = self._setup_test_case(data)
+        assert tree.xpath("/project/target[@name='stage1']/parallel/*/arg/@line")[0] == '-v foo.pkg foo.sis'
+
+    def test_sis_v2_1(self):
+        """ V2 config format for sisx. """
+        data = {'input': 'foo.pkg', 'output': 'foo.sisx'}
+        tree = self._setup_test_case(data)
+        assert tree.xpath("/project/target[@name='stage1']/parallel/*/arg/@line")[0] == '-v foo.pkg foo.sis'
+        assert tree.xpath("/project/target[@name='stage2']/parallel/*/arg/@line")[0] == '-v foo.sis foo.sisx cert1 key1'
+        
+    def _setup_test_case(self, additional_data):
+        """ Setup test case based on varying inputs. """
+        data = {'makesis.tool': 'makesis',
+                'signsis.tool': 'signsis',
+                'key': 'key1',
+                'cert': 'cert1',
+                'build.sisfiles.dir': 'dir'}
+        data.update(additional_data)
+        config = configuration.ConfigurationSet([configuration.Configuration(data)])
+        sis_prebuilder = sis.SisPreBuilder(config)
+        tmpfile = os.path.join(tempfile.mkdtemp(), 'test.xml')
+        sis_prebuilder.write(tmpfile)
+        tree = etree.parse(tmpfile)
+        return tree
+    
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncorecpythontests/test_timeout_launcher.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,172 @@
+#============================================================================ 
+#Name        : test_timeout_launcher.py 
+#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:
+#===============================================================================
+""" unit tests the timeout launcher """
+
+# pylint: disable-msg=E1101
+
+import logging
+import sys
+import mocker
+import subprocess
+
+
+_logger = logging.getLogger('test.configuration')
+logging.basicConfig(level=logging.INFO)
+
+# Platform
+WINDOWS = False
+if sys.platform == "win32":
+    import win32process
+    import win32con
+    import win32api
+    WINDOWS = True
+
+
+
+class os(object):
+    """ dummy the os function call"""
+    def kill(self, pid, value):
+        """dummy OS class"""
+        pid = value #just for pylint
+        return 1
+
+class TimeoutLauncherTest(mocker.MockerTestCase):
+    """class containing methods to test the timeout launcher"""
+
+    def test_cmdlineIsEmpty(self):
+        """test_cmdlineIsEmpty: nothing in the command line"""
+        import timeout_launcher
+        obj = self.mocker.replace(timeout_launcher.sys)
+        obj.exit(-1)
+        self.mocker.result(1)
+        self.mocker.replay()
+        
+        sys.argv = ['timeout_launcher.py', '--timeout=1', 'version']
+        timeout_launcher.main()
+
+    def test_valid_with_timeout(self):
+        """test_valid_with_timeout: initial test with valid values and timeout."""
+        import timeout_launcher
+        cmdline =  ['dir']
+        shell = True
+        if WINDOWS:
+            shell = False
+        process = self.mocker.mock()
+        process.poll()
+        self.mocker.result(None)
+        process.poll()
+        self.mocker.result(1)
+
+        obj = self.mocker.replace("subprocess.Popen")
+        obj(' '.join(cmdline), stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=shell)
+        self.mocker.result(process)
+
+        obj2 = self.mocker.replace(timeout_launcher.sys)
+        obj2.exit(mocker.ANY)
+        self.mocker.result(1)
+
+        process.communicate()[0]
+        self.mocker.result(None)
+        process.returncode
+        self.mocker.result(1)
+
+        self.mocker.replay()
+        
+        sys.argv = ['--timeout=1', '--', ' '.join(cmdline)]
+        timeout_launcher.main()
+
+    def test_valid_no_timeout(self):
+        """test_valid_no_timeout: initial test with valid values and no timeout."""
+        import timeout_launcher
+        cmdline =  ['dir']
+        process = self.mocker.mock()
+
+        obj = self.mocker.replace("subprocess.Popen")
+        obj(' '.join(cmdline), stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True)
+        self.mocker.result(process)
+
+        process.communicate()[0]
+        self.mocker.result(None)
+        process.returncode
+        self.mocker.result(1)
+
+        obj2 = self.mocker.replace(timeout_launcher.sys)
+        obj2.exit(mocker.ANY)
+        self.mocker.result(1)
+        self.mocker.replay()
+
+        sys.argv = ['--', ' '.join(cmdline)]
+        timeout_launcher.main()
+
+    def test_timedout(self):
+        """test_timedout: initial test with valid values but times out."""
+        import timeout_launcher
+        cmdline =  ['dir']
+        shell = True
+        if WINDOWS:
+            shell = False
+        process = self.mocker.mock()
+
+        timeValue = self.mocker.replace("time.time")
+        timeValue()
+        self.mocker.result(1)
+        #if debug not set then it won't call the logger functions and so these are not needed
+        if logging.DEBUG:
+            timeValue()
+            self.mocker.result(1)
+            timeValue()
+            self.mocker.result(1)
+            timeValue()
+            self.mocker.result(1)
+            timeValue()
+            self.mocker.result(1)
+
+        obj = self.mocker.replace("subprocess.Popen")
+        obj(' '.join(cmdline), stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=shell)
+        self.mocker.result(process)
+
+        self.mocker.order()
+        process.poll()
+        self.mocker.result(None)
+        timeValue()
+        self.mocker.result(5)
+        self.mocker.unorder()
+
+        process.pid
+        self.mocker.result(0x0129B460)
+
+        if WINDOWS:
+            handle = self.mocker.mock()
+            handle_1 = self.mocker.replace("win32api.OpenProcess")
+            handle_1(True, win32con.PROCESS_TERMINATE, mocker.ANY)
+            self.mocker.result(handle)
+            handle_1 = self.mocker.replace("win32process.TerminateProcess")
+            handle_1(handle, -1)
+            
+
+        self.mocker.replay()
+
+        sys.argv = ['--timeout=3', '--', ' '.join(cmdline)]
+        failed = False
+        try:
+            timeout_launcher.main()
+        except:
+            failed = True
+        assert failed
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/__init__.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,19 @@
+#============================================================================ 
+#Name        : __init__.py 
+#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:
+#===============================================================================
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_amara.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,81 @@
+#============================================================================ 
+#Name        : test_ant.py 
+#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:
+#===============================================================================
+
+""" amara.py module tests. """
+
+
+import amara
+from xmlhelper import node_scan, recursive_node_scan
+
+def test_amara():
+    x = amara.parse(r'<commentLog><branchInfo category="" error="kkk" file="tests/data/comments_test.txt" originator="sanummel" since="07-03-22">Add rofsfiles for usage in paged images</branchInfo></commentLog>')
+    assert str(x.commentLog.branchInfo) == 'Add rofsfiles for usage in paged images'
+    
+    x = amara.parse(r'<commentLog><branchInfo>1</branchInfo><branchInfo>2</branchInfo></commentLog>')
+    for y in x.commentLog.branchInfo:
+        assert str(y) == '1'
+        break
+          
+    myxml = """<DpComponent DpType="File" name="dp.cfg.xml" fileType="Binary" fileSubType="1" fileIndex="1" owner="SwUpdate" extract="true" signed="true" optional="true" crc="true" useCases="Refurbish,BackupRestore" variantPackage="true" include="true" EnableCRCVerification="true" parameters="test"/>"""
+    xcf = amara.parse(myxml)
+    assert xcf.DpComponent['name'] == 'dp.cfg.xml'
+    
+    myxml2 = """<bomDelta><buildFrom>ido_raptor_mcl_abs_MCL.52.57</buildFrom><buildTo>mock</buildTo><content/></bomDelta>"""
+    xcf2 = amara.parse(myxml2)
+    assert xcf2.bomDelta[0].buildFrom[0] == "ido_raptor_mcl_abs_MCL.52.57"
+    
+    print xcf.DpComponent.xml_attributes
+    
+    doc = amara.create_document(u'bom')
+    s60_input_node = doc.xml_create_element(u'input')
+    s60_input_node.xml_append(doc.xml_create_element(u'name', content=(unicode("s60"))))
+    print s60_input_node.xml()
+    
+    s60_input_source = s60_input_node.xml_create_element(u'source')
+    s60_input_source.xml_append(doc.xml_create_element(u'type', content=(unicode("grace"))))
+    print s60_input_source.xml()
+          
+    doc = amara.create_document(u'bom')
+    doc.bom.xml_append(doc.xml_create_element(u'build', content=unicode("a")))
+    
+    doc = amara.create_document(u'bomDelta')
+    content_node = doc.xml_create_element(u'content')
+    doc.bomDelta.xml_append(content_node)
+    content_node.xml_append(content_node.xml_create_element(u'b', content=unicode('a')))
+    assert doc.bomDelta.xml(indent=False) == '<bomDelta><content><b>a</b></content></bomDelta>'
+    
+    recursive_node_scan(doc, 'a')
+    
+    amara.create_document()
+    
+    xcf3 = amara.parse(r'<VariantPackingList><Variant/></VariantPackingList>')
+    assert hasattr(xcf3.VariantPackingList.Variant,"FileList") == False
+    if not hasattr(xcf3.VariantPackingList.Variant,"FileList"):
+        xcf3.VariantPackingList.Variant.xml_append(xcf3.xml_create_element(u"FileList"))
+    xcf3.VariantPackingList.Variant.FileList.xml_append_fragment(doc.xml(omitXmlDeclaration=u"yes"))
+    
+    xcf4 = amara.parse(r"<a><p name='1'/><p name='1'/></a>")
+    found = False
+    for p in xcf4.xml_xpath("//p"):
+        assert str(p.name) == '1'
+        found = True
+    assert found
+    
+    #xcf5 = amara.parse(open(r'C:\USERS\helium\helium-dev-forbuilds\helium\tests\data\bom\build_model_bom.xml'))
+    #u'%s' % xcf5.bom.content.project.folder.task.synopsis
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_ant.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,67 @@
+#============================================================================ 
+#Name        : test_ant.py 
+#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:
+#===============================================================================
+
+""" ant.py module tests. """
+
+
+import ant
+
+
+def test_get_property():
+    """ Test get_property function. """
+    assert ant.get_property('') == ''
+    
+    # Property was not defined in Ant
+    assert ant.get_property('${foo}') == None
+    
+    # Property was defined, should provide value
+    assert ant.get_property('foo') == 'foo'
+
+
+def test_get_property_macro():
+    """ Test the support of get_property inside macro. """
+    # Property was not defined in Ant
+    assert ant.get_property('@{foo}') == None
+    
+    # Property was defined, should provide value
+    assert ant.get_property('foo') == 'foo'
+    
+    
+def test_get_previous_build_number():
+    """ Test get_previous_build_number function. """
+    assert ant.get_previous_build_number('01') == ''
+    
+    assert ant.get_previous_build_number('02') == '01'
+    
+    assert ant.get_previous_build_number('oci.01') == ''
+    
+    assert ant.get_previous_build_number('t.02') == 't.01'
+    
+    assert ant.get_previous_build_number('oci.02') == 'oci.01'
+    
+    assert ant.get_previous_build_number('oci.002') == 'oci.001'
+    
+    assert ant.get_previous_build_number('oci.12') == 'oci.11'
+    
+    assert ant.get_previous_build_number('oci.patch.02') == 'oci.patch.01'
+    
+    assert ant.get_previous_build_number('oci.patch.10') == 'oci.patch.9'
+
+    assert ant.get_previous_build_number('oci.patch.010') == 'oci.patch.009'
+    
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_bomtofile.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,98 @@
+#============================================================================ 
+#Name        : test_bomtofile.py 
+#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:
+#===============================================================================
+
+import tempfile
+from shutil import rmtree
+import logging
+import unittest
+from bomtofile import BOMWriter
+
+_logger = logging.getLogger('test.bomtofile')
+logging.basicConfig(level=logging.INFO)
+
+class BomtofileTest(unittest.TestCase):
+    """Verifiying bomtofile module"""
+        
+    def test_writeprojects(self):
+        """Verifying writeprojects"""
+        tmpdir = tempfile.mkdtemp()
+        testProject = _emulateProject(("testProject1", "testProject2"))
+        bomWriter = BOMWriter(None, "PythonUnitTesting", testProject, tmpdir)
+        bomWriter.writeprojects()
+        myFile = open(tmpdir+"/PythonUnitTesting_projects.txt",'r')
+        contents = myFile.readlines()
+        myFile.close()
+        rmtree(tmpdir)
+        assert len(contents) == 2
+
+    def test_writebaselines(self):
+        """Verifying writebaselines"""
+        tmpdir = tempfile.mkdtemp()
+        testProject = _emulateProject(("testProject1", "testProject2"))
+        testSession = _emulateSession("testbaseline1")
+        bomWriter = BOMWriter(testSession, "PythonUnitTesting", testProject, tmpdir)
+        bomWriter.writebaselines()
+        myFile = open(tmpdir+"/PythonUnitTesting_baselines.txt",'r')
+        contents = myFile.readlines()
+        myFile.close()
+        rmtree(tmpdir)
+        assert len(contents) == 4
+
+    def test_writebaselines_withnodata(self):
+        """Verifying writebaselines with no baseline"""
+        tmpdir = tempfile.mkdtemp()
+        testProject = _emulateProject(("testProject1", "testProject2"))
+        testSession = _emulateSession(None)
+        bomWriter = BOMWriter(testSession, "PythonUnitTesting", testProject, tmpdir)
+        bomWriter.writebaselines()
+        myFile = open(tmpdir+"/PythonUnitTesting_baselines.txt",'r')
+        contents = myFile.readlines()
+        myFile.close()
+        rmtree(tmpdir)
+        assert len(contents) == 4
+
+
+    def test_writetasks(self):
+        """Verifying writetasks"""
+        tmpdir = tempfile.mkdtemp()
+        testProject = _emulateProject(None, ("testTask1", "testTask2"))
+        bomWriter = BOMWriter(None, "PythonUnitTesting", testProject, tmpdir)
+        bomWriter.writetasks()
+        myFile = open(tmpdir+"/PythonUnitTesting_tasks.txt",'r')
+        contents = myFile.readlines()
+        myFile.close()
+        rmtree(tmpdir)
+        assert len(contents) == 2
+           
+class _emulateProject():
+    """Emulate a project"""
+    def __init__(self, project = None, task = None):
+        self.baseline = project
+        self.task = task
+# just emulate amara xml_properties dictionary, as the idea is 
+# not to test xml file processing with amara 
+        self.xml_properties = { 'task': None } 
+
+class _emulateSession():
+    """Emulate a session"""
+    def __init__(self, baseline):
+        self.baseline = baseline
+
+    def create(self, project):
+        return _emulateProject(self.baseline)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_build_io.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,83 @@
+#============================================================================ 
+#Name        : test_build_io.py 
+#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:
+#===============================================================================
+
+""" Test the build.io module. """
+
+import logging
+import unittest
+import os
+import build.io
+
+
+logger = logging.getLogger('test.build.io')
+
+
+class AbldLogWhatReaderTest(unittest.TestCase):
+    """ Test reading Symbian build logs for extracting abld -what sections. """
+    
+    def test_abld_what_parsing(self):
+        """ Basic abld -what section parsing. """ 
+        reader = build.io.AbldLogWhatReader(os.path.join(os.environ['TEST_DATA'], 'data/build/io/abld_what.log'))
+        reader_iter = iter(reader)
+        (component1, binaries1) = reader_iter.next()
+        assert component1 == 'ibusal_chipset_product'
+        assert binaries1 == [r'\epoc32\release\ARMV5\UDEB\_product_NaviScrollPdd.pdd',
+                             r'\epoc32\release\ARMV5\UDEB\_product_NaviScrollPdd.pdd.map']
+        
+        (component2, binaries2) = reader_iter.next()
+        assert component2 == 'ibusal_chipset_product2'
+        assert binaries2 == [r'\epoc32\release\ARMV5\UDEB\_product2_accelerometerpdd.pdd',
+                             r'\epoc32\release\ARMV5\UDEB\_product2_accelerometerpdd.pdd.map']
+
+class RombuildLogBinarySizeReaderTest(unittest.TestCase):
+    """ Test reading Symbian ROM build logs for extracting binaries and their sizes. """
+    
+    def test_rom_log_parsing(self):
+        """ Basic ROM log binary size parsing. """ 
+        reader = build.io.RombuildLogBinarySizeReader(os.path.join(os.environ['TEST_DATA'], 'data/build/io/test_rom.log'))
+        reader_iter = iter(reader)
+        (binary, size, rom_type) = reader_iter.next()
+        assert binary == r'\epoc32\release\ARMV5\urel\__ekern.exe'
+        assert size == 221788
+        assert rom_type == 'rom'
+        
+        (binary, size, rom_type) = reader_iter.next()
+        assert binary == r'\epoc32\release\ARMV5\urel\elocd.ldd'
+        assert size == 15192
+        assert rom_type == 'rom'
+        
+        (binary, size, rom_type) = reader_iter.next()
+        assert binary == r'\epoc32\release\ARMV5\urel\__medint.pdd'
+        assert size == 2320
+        assert rom_type == 'rom'
+        
+    def test_rofs_log_parsing(self):
+        """ Basic ROFS log binary size parsing. """ 
+        reader = build.io.RombuildLogBinarySizeReader(os.path.join(os.environ['TEST_DATA'], 'data/build/io/test_rofs.log'))
+        reader_iter = iter(reader)
+        (binary, size, rom_type) = reader_iter.next()
+        assert binary == r'\epoc32\data\Z\Resource\ICL\jpegcodec_extra.rsc'
+        assert size == 202
+        assert rom_type == 'rofs'
+        
+        (binary, size, rom_type) = reader_iter.next()
+        assert binary == r'\epoc32\release\ARMV5\urel\jpegcodec.dll'
+        assert size == 89728
+        assert rom_type == 'rofs'
+        
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_buildtools.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,61 @@
+#============================================================================ 
+#Name        : test_buildtools.py 
+#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:
+#===============================================================================
+
+
+import os.path
+import shutil
+import unittest
+
+from buildtools import *
+
+
+class AntWriterTest(unittest.TestCase):
+    
+    def setUp(self):
+        self.temp = "temp"
+        os.makedirs(self.temp)
+    
+    def tearDown(self):
+        shutil.rmtree(self.temp)
+
+    def testOutput(self):
+        writer = AntWriter(os.path.join(self.temp, "buildtools_antwriter_test.ant.xml"))
+        commands = CommandList()
+        commands.addCommand(Command(self.temp, "foo"))
+        writer.write(commands)
+        writer.close()
+
+class MakerWriterTest(unittest.TestCase):
+    
+    def setUp(self):
+        self.temp = "temp"
+        os.makedirs(self.temp)
+    
+    def tearDown(self):
+        shutil.rmtree(self.temp)
+
+    def testOutput(self):
+        writer = AntWriter(os.path.join(self.temp, "buildtools_makewriter_test.mk"))
+        commands = CommandList()
+        commands.addCommand(Command(self.temp, "foo"))
+        writer.write(commands)
+        writer.close()
+
+if __name__ == "__main__":
+    unittest.main()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_ccm_4pn.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,145 @@
+#============================================================================ 
+#Name        : test_ccm_4pn.py 
+#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:
+#===============================================================================
+
+""" Test cases for ccm python toolkit.
+
+"""
+import unittest
+import sys
+import ccm
+import logging
+
+
+logger = logging.getLogger('test.ccm')
+
+
+class FourPartNameTest(unittest.TestCase):
+
+    def testSimpleFourPartNameParsing(self):
+        """Test the parsing of a simple four part name"""
+        strfpn = "simple.test-myversion1:ascii:mydb#1"
+        fpn = ccm.FourPartName(strfpn)
+        assert fpn.name == "simple.test"
+        assert fpn.version == "myversion1"
+        assert fpn.type == "ascii"
+        assert fpn.instance == "mydb#1"
+        assert strfpn == str(fpn)
+        assert strfpn == fpn.objectname
+
+    def testSpacesFourPartNameParsing(self):
+        """Test the parsing of a four part name that contains spaces"""
+        strfpn = "simple test.ext - myversion1 :ascii:mydb#1"
+        fpn = ccm.FourPartName(strfpn)
+        assert fpn.name == "simple test.ext "
+        assert fpn.version == " myversion1 "
+        assert fpn.type == "ascii"
+        assert fpn.instance == "mydb#1"
+        assert strfpn == str(fpn)
+        assert strfpn == fpn.objectname
+
+    def testHyphenedFourPartNameParsing(self):
+        """Test the parsing of a hyphened four part name"""
+        strfpn = "simple-test.ext-myversion1:ascii:mydb#1"
+        fpn = ccm.FourPartName(strfpn)
+        assert fpn.name == "simple-test.ext"
+        assert fpn.version == "myversion1"
+        assert fpn.type == "ascii"
+        assert fpn.instance == "mydb#1"
+        assert strfpn == str(fpn)
+        assert strfpn == fpn.objectname
+   
+    def testReleasedefParsing(self):
+        """Test the parsing of a releasedef four part name"""
+        strfpn = "myproject:myversion1:releasedef:mydb#1"
+        fpn = ccm.FourPartName(strfpn)
+        assert fpn.name == "myproject"
+        assert fpn.version == "myversion1"
+        assert fpn.type == "releasedef"
+        assert fpn.instance == "mydb#1"
+        assert strfpn == str(fpn)
+        assert strfpn == fpn.objectname
+
+    def testEquality(self):
+        """Test equality and same familly function"""
+        # testing different name
+        fpn1 = ccm.FourPartName("simple.test-myversion1:ascii:mydb#1")
+        fpn2 = ccm.FourPartName("simple.testx-myversion1:ascii:mydb#1")
+        assert fpn1 != fpn2
+        assert not fpn1.is_same_family(fpn2), "Should not be from the same family"
+        # testing different version
+        fpn2 = ccm.FourPartName("simple.test-myversion2:ascii:mydb#1")
+        assert fpn1 != fpn2
+        assert fpn1.is_same_family(fpn2), "Should be from the same family"
+        # testing different type
+        fpn2 = ccm.FourPartName("simple.test-myversion1:ascii2:mydb#1")
+        assert fpn1 != fpn2
+        assert not fpn1.is_same_family(fpn2), "Should not be from the same family"
+        # testing different instance
+        fpn2 = ccm.FourPartName("simple.test-myversion1:ascii:mydb#2")
+        assert fpn1 != fpn2
+        assert not fpn1.is_same_family(fpn2), "Should not be from the same family"
+
+    def testConvert(self):
+        # Test task displayname tranformation
+        fpn = ccm.FourPartName("Task mydb#123")
+        assert fpn.type == "task"
+        # Test folder displayname tranformation
+        fpn = ccm.FourPartName("Folder mydb#123")
+        assert fpn.type == "folder"
+        # Test Release tag displayname tranformation
+        fpn = ccm.FourPartName("mc/integration")
+        assert fpn.name == "mc"
+        assert fpn.version == "integration"
+        assert fpn.type == "releasedef"
+        assert fpn.instance == "1"
+
+        fpn = ccm.FourPartName("BTHID/3.2_2007_wk03")
+        assert fpn.name == "BTHID"
+        assert fpn.version == "3.2_2007_wk03"
+        assert fpn.type == "releasedef"
+        assert fpn.instance == "1"
+        
+        fpn = ccm.FourPartName("DRM_0.9")
+        assert fpn.name == "none"
+        assert fpn.version == "DRM_0.9"
+        assert fpn.type == "releasedef"
+        assert fpn.instance == "1"
+
+        try:
+            fpn = ccm.FourPartName("task mydb#123")
+            assert False, "Should raise InvalidFourPartNameException when parsing'task mydb#123'"
+        except ccm.InvalidFourPartNameException, e:
+            pass
+
+        try:
+            fpn = ccm.FourPartName("folder mydb#123")
+            assert False, "Should raise InvalidFourPartNameException when parsing'folder mydb#123'"
+        except ccm.InvalidFourPartNameException, e:
+            pass
+            
+            
+class InvalidFourPartNameExceptionTest(unittest.TestCase):
+    def testOutput(self):
+        """ Test the exception shows the arguments. """
+        ex = ccm.InvalidFourPartNameException('foo')
+        assert str(ex) == 'foo'
+
+
+if __name__ == "__main__":
+    unittest.main()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_ccm_object.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,117 @@
+#============================================================================ 
+#Name        : test_ccm_object.py 
+#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:
+#===============================================================================
+
+""" Test cases for ccm python toolkit.
+    unitesting CCMObject functionality
+"""
+import unittest
+import sys
+import ccm
+import logging
+
+# Uncomment this line to enable logging in this module, or configure logging elsewhere
+logging.basicConfig(level=logging.DEBUG)
+logger = logging.getLogger('test.ccm_objects')
+#
+#class CCMObjectTest(unittest.TestCase):
+#    """ Module related to CCMObject (and related) function testing. """
+#    
+#    def setUp(self):
+#        #vc1tltst
+#        self.session = ccm.open_session(database = 'to1tobet')
+#        if self.session is None:
+#            logger.error("Error creating connection.")
+#            raise Exception("Couldn't open a session.")
+#
+#    def tearDown(self):
+#        """ End of test: close opened synergy sessions. """
+#        if self.session is not None:
+#            self.session.close()
+#            self.session = None
+#        
+#    def test_query(self):
+#        """ Test simple synergy query that returns an object list. """
+#        result = self.session.execute("query \"name='mc'and type='project' and status='released'\" /u /f \"%objectname\"", ccm.ObjectListResult(self.session))
+#        for o in result.output:
+#            assert o.type == 'project'
+#            assert o['status'] == 'released'
+#                    
+#    def _test_checkout(self):
+#        """ Test project checkout. """
+#        project = self.session.create("mc-mc_4032_0728:project:vc1s60p1#1")
+#        release = self.session.create("mc/next")
+#        if not project.exists():
+#           logger.error("Project doesn't exists.")
+#           return       
+#        if not release.exists():           
+#           logger.error("Release doesn't exists.")
+#           return
+#           
+#        coproject = project.checkout(release).project
+#        assert coproject != None
+#        assert coproject.name == project.name
+#        assert coproject.type == project.type
+#        assert coproject.instance == project.instance
+#        try:
+#            coproject2 = project.checkout(release, coproject.version).project
+#            assert False, "Should fail as we are specifying an already existing version."
+#        except Exception, e:
+#            pass
+#        
+#
+
+class MockResultSession(ccm.AbstractSession):
+    """ Fake session used to test Result"""
+    def __init__(self, behave = {}, database="fakedb"):
+        ccm.AbstractSession.__init__(self, None, None, None, None)
+        self._behave = behave
+        self._database = database
+    
+    def database(self):
+        return self._database
+    
+    def execute(self, cmdline, result=None):
+        logger.debug(cmdline)
+        if result == None:
+            result = ccm.Result(self)        
+        if self._behave.has_key(cmdline):
+            result.status = 0  
+            result.output = self._behave[cmdline]
+        else:
+            result.status = -1  
+        return result
+
+class CCMObjectTest(unittest.TestCase):
+    
+    def test_get_baseline(self):
+        behave = {'up -show baseline_project "foo-1.0:project:db#1" -f "%displayname" -u': """foo-1.0:project:db#1 does not have a baseline project.
+""",
+                  'up -show baseline_project "foo-2.0:project:db#1" -f "%displayname" -u': """foo-1.0:project:db#1
+"""}
+        session = MockResultSession(behave)
+        objv1 = session.create('foo-1.0:project:db#1')
+        assert objv1.baseline == None
+        objv2 = session.create('foo-2.0:project:db#1')
+        assert objv2.baseline == objv1
+
+
+if __name__ == "__main__":
+    unittest.main()
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_ccm_results.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,483 @@
+#============================================================================ 
+#Name        : test_ccm_results.py 
+#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:
+#===============================================================================
+
+""" Test cases for ccm python toolkit.
+
+"""
+import unittest
+import sys
+import ccm
+import os
+import logging
+
+
+logger = logging.getLogger('test.ccm_results')
+logging.basicConfig(level=logging.INFO)
+
+class CounterHandler(logging.Handler):
+    def __init__(self, level=logging.NOTSET):
+        logging.Handler.__init__(self, level)
+        self.warnings = 0
+        self.errors = 0
+        self.infos = 0
+    
+    def emit(self, record):
+        """ Handle the count the errors. """
+        if record.levelno == logging.INFO:
+            self.infos += 1
+        elif record.levelno == logging.WARNING:
+            self.warnings += 1
+        elif record.levelno == logging.ERROR:
+            self.errors += 1
+
+class MockResultSession(ccm.AbstractSession):
+    """ Fake session used to test Result"""
+    def __init__(self, behave = {}, database="fakedb"):
+        ccm.AbstractSession.__init__(self, None, None, None, None)
+        self._behave = behave
+        self._database = database
+    
+    def database(self):
+        return self._database
+    
+    def execute(self, cmdline, result=None):
+        if result == None:
+            result = ccm.Result(self)        
+        if self._behave.has_key(cmdline):
+            result.statuserrors = 0  
+            result.output = self._behave[cmdline]
+        else:
+            result.status = -1  
+        return result
+
+    
+class ResultTest(unittest.TestCase):
+    """ Testing Results parsers. """
+    def test_Result(self):
+        """ Test result. """
+        result = ccm.Result(None)
+        result.output = u"Nokia"
+        assert result.output == u"Nokia"
+
+    def test_Result_unicode_character(self):
+        """ Test result with unicode character. """
+        result = ccm.Result(None)
+        result.output = u"Nokia\xc2"
+        print result.output.encode('ascii', 'replace')
+        assert result.output == u"Nokia?"
+
+    def test_Result_str(self):
+        """ Test result from str. """
+        result = ccm.Result(None)
+        result.output = "Nokia"
+        assert result.output == "Nokia"
+
+    def test_Result_str_not_ascii(self):
+        """ Test result from str with not ascii. """
+        result = ccm.Result(None)
+        result.output = "Noki\xe4"
+        print result.output
+        assert result.output == "Noki"
+
+   
+    def test_ObjectListResult(self):
+        behave = { 'test_ObjectListResult': """mc-mc_0638:project:vc1s60p1#1
+mc-mc_4031_0642:project:vc1s60p1#1
+mc-mc_4031_0646:project:vc1s60p1#1
+mc-mc_4031_0650:project:vc1s60p1#1
+mc-mc_4031_0702:project:vc1s60p1#1
+mc-mc_4031_0704:project:vc1s60p1#1
+mc-mc_4031_0706:project:vc1s60p1#1
+mc-mc_4031_0706_v2:project:vc1s60p1#1
+mc-mc_4032_0708:project:vc1s60p1#1
+mc-mc_4032_0710:project:vc1s60p1#1
+mc-mc_4032_0712:project:vc1s60p1#1
+mc-mc_4032_0714:project:vc1s60p1#1
+mc-mc_4032_0716:project:vc1s60p1#1
+mc-mc_4032_0718:project:vc1s60p1#1
+mc-mc_4032_0720:project:vc1s60p1#1
+mc-mc_4032_0722:project:vc1s60p1#1
+mc-mc_4032_0724:project:vc1s60p1#1
+mc-mc_4032_0726.lum.09:project:vc1s60p1#1
+mc-mc_4032_0726:project:vc1s60p1#1
+mc-mc_4032_0728:project:vc1s60p1#1
+mc-mc_4032_0730:project:vc1s60p1#1
+mc-mc_4032_0732:project:vc1s60p1#1
+mc-mc_4032_0734:project:vc1s60p1#1
+mc-mc_4032_0736:project:vc1s60p1#1
+
+"""}
+        session = MockResultSession(behave)
+        result = session.execute('test_ObjectListResult', ccm.ObjectListResult(session))
+        assert len(result.output) == 24, "output doesn't contains the right number of result project."
+        for o in result.output:
+            assert o.type == 'project'
+            assert o.name == 'mc'
+
+    def test_WorkAreaInfoResult(self):
+        behave = { 'test_WorkAreaInfoResult': """
+Project                                            Maintain Copies Relative Time Translate Modify Path
+-------------------------------------------------------------------
+mc_5132_build-fa1f5132#loc_0734:project:jk1f5132#1 TRUE     TRUE   TRUE     TRUE TRUE      FALSE  'E:\\WBERNARD\\ccm_wa\\fa1f5132\\mc-fa1f5132#loc_0734\\mc\\mc_build'
+
+"""}
+        session = MockResultSession(behave)
+        result = session.execute('test_WorkAreaInfoResult', ccm.WorkAreaInfoResult(session))
+        print result.output
+        print result.output['path']
+        assert str(result.output['project']) == "mc_5132_build-fa1f5132#loc_0734:project:jk1f5132#1", "wrong project name."
+        assert result.output['maintain'] == True, "maintain value is wrong."
+        assert result.output['copies'] == True, "copies value is wrong."
+        assert result.output['relative'] == True, "relative value is wrong."
+        assert result.output['time'] == True, "time value is wrong."
+        assert result.output['translate'] == True, "translate value is wrong."
+        assert result.output['modify'] == False, "modify value is wrong."
+        assert result.output['path'] == "E:\\WBERNARD\\ccm_wa\\fa1f5132\\mc-fa1f5132#loc_0734\\mc\\mc_build", "path value is wrong."
+            
+    def test_FinduseResult(self):
+        """ Test the parsing of the FinduseResult class. """
+        behave = { 'test_FinduseResult': """
+Ibusal_internal-fa1f5132#wbernard16:project:jk1imeng#1 working wbernard project Ibusal_internal jk1imeng#1 fa1f5132#2561
+        IBUSAL_RapidoYawe\Ibusal_internal-fa1f5132#wbernard16@IBUSAL_RapidoYawe-fa1f5132#wbernard16:project:jk1imeng#1
+        
+"""}
+        session = MockResultSession(behave)
+        object = session.create("Ibusal_internal-fa1f5132#wbernard16:project:jk1imeng#1")
+        result = session.execute('test_FinduseResult', ccm.FinduseResult(object))
+        print result.output
+        assert len(result.output) == 1
+        assert result.output[0]['project'].objectname == "IBUSAL_RapidoYawe-fa1f5132#wbernard16:project:jk1imeng#1"
+        assert result.output[0]['path'] == "IBUSAL_RapidoYawe"
+          
+          
+    def test_read_ccmwaid_info(self):
+        """ Testing read_ccmwaid_info, open a _ccmwaid.inf file and check the extracted data. """
+        data = ccm.read_ccmwaid_info(os.path.join(os.environ['TEST_DATA'], 'data', 'test_ccmwaid.inf'))
+        logger.debug(data)
+        assert data['database'] == "jk1f5132"
+        assert data['objectname'] == "sa1spp#1/project/S60/jk1f5132#wbernard"
+
+    def test_update_result(self):
+        """ Validating UpdateResult."""        
+        behave = {'test_update' :"""Starting update process...
+
+Updating project 'Cartman-wbernard5:project:tr1test1#1' from object version 'Cartman-wbernard5:project:tr1test1#1'...
+Refreshing baseline and tasks for project grouping 'My cartman/060530_v2 Collaborative Development Projects'.
+Replacing tasks in folder tr1test1#2008
+  Contents of folder tr1test1#2008 have not changed.
+Replacing tasks in folder tr1test1#2009
+  Contents of folder tr1test1#2009 have not changed.
+Added the following tasks to project grouping 'My cartman/060530_v2 Collaborative Development Projects':
+    Task tr1test1#3426: Update Cartman subprojects
+    Task tr1test1#3429: Create Kyle subprojects
+    Task tr1test1#3430: Add Kyle02 subpr hierarchy
+    Task tr1test1#3431: Add a file to cartman_sub_sub02
+
+
+Updating project 'Cartman_sub01-wbernard3:project:tr1test1#1', reselecting root object version...
+Update for 'Cartman-wbernard5:project:tr1test1#1' complete with 0 out of 3 objects replaced.
+
+Updating project 'Cartman_sub_sub01-wbernard3:project:tr1test1#1', reselecting root object version...
+Update for 'Cartman_sub01-wbernard3:project:tr1test1#1' complete with 0 out of 2 objects replaced.
+
+Updating project 'Cartman_sub02-wbernard3:project:tr1test1#1', reselecting root object version...
+Update for 'Cartman_sub_sub01-wbernard3:project:tr1test1#1' complete with 0 out of 1 objects replaced.
+    'Cartman_sub02-2:dir:tr1test1#1' replaces 'Cartman_sub02-1:dir:tr1test1#1' under 'Cartman_sub02-wbernard3:project:tr1test1#1'.
+
+Updating project 'Cartman_sub_sub02-wbernard6:project:tr1test1#1', reselecting root object version...
+Update for 'Cartman_sub02-wbernard3:project:tr1test1#1' complete with 2 out of 2 objects replaced.
+    Subproject 'Cartman_sub_sub02-wbernard6:project:tr1test1#1' is now bound under 'Cartman_sub02-2:dir:tr1test1#1'.
+    'Cartman_sub_sub02-2:dir:tr1test1#1' replaces 'Cartman_sub_sub02-1:dir:tr1test1#1' under 'Cartman_sub_sub02-wbernard6:project:tr1test1#1'.
+Update for 'Cartman_sub_sub02-wbernard6:project:tr1test1#1' complete with 2 out of 2 objects replaced.
+    'xzx.iby-1:epocrom:tr1test1#1' is now bound under 'Cartman_sub_sub02-2:dir:tr1test1#1'.
+
+
+Update Summary:
+ Cartman_sub_sub02:dir:tr1test1#1 in project Cartman_sub_sub02-wbernard2:project:tr1test1#1 had no candidates
+
+Update complete.
+"""}
+        session = MockResultSession(behave)
+        result = session.execute('test_update', ccm.UpdateResult(session))
+        #logger.debug(result.output)
+        assert len(result.output['tasks']) == 4, "Number of tasks doesn't match."
+        assert len(result.output['modifications']) == 4, "Number of modifications doesn't match."
+        assert len(result.output['errors']) == 1, "Number of errors doesn't match."
+
+    def test_update_result_serious_failure(self):
+        """ Validating UpdateResult with serious failure."""        
+        behave = {'test_update' :"""Starting update process...
+
+Updating project 'MinibuildDomain-wbernard3:project:tr1test1#1' from object version 'MinibuildDomain-wbernard3:project:tr1test1#1'...
+Refreshing baseline and tasks for project grouping 'My MinibuildDomain/next Insulated Development Projects'.
+Replacing tasks in folder tr1test1#2068
+  Contents of folder tr1test1#2068 have not changed.
+Setting path for work area of 'helloworldcons-wbernard2' to 'c:\users\ccm65\ccm_wa\tr1test1\MinibuildDomain'...
+Warning: 'c:\users\ccm65\ccm_wa\tr1test1\MinibuildDomain\helloworldcons' already used as work area for project 'helloworldcons-wbernard'
+Warning: Unable to update path for work area of 'helloworldcons-wbernard2'
+Warning: Unable to update membership of project 'MinibuildDomain-wbernard3'
+Work area delete of 'helloworldcons-wbernard2:project:tr1test1#1' failed
+Warning: Unable to update membership of project MinibuildDomain-wbernard3 with MinibuildDomain-2:dir:tr1test1#1
+Rebind of MinibuildDomain-1:dir:tr1test1#1 failed
+Warning: Update for project 'MinibuildDomain-wbernard3:project:tr1test1#1' failed.
+
+Update Summary
+2 failures to use the selected object version
+    Failed to remove selected object helloworldcons-wbernard2:project:tr1test1#1 under directory MinibuildDomain-1:dir:tr1test1#1 from project MinibuildDomain-wbernard3 : work area delete failed
+    Failed to use selected object MinibuildDomain-2:dir:tr1test1#1 under directory MinibuildDomain-wbernard3:project:tr1test1#1 in project MinibuildDomain-wbernard3
+Serious: 
+Update failed.
+"""}
+        session = MockResultSession(behave)
+        result = session.execute('test_update', ccm.UpdateResult(session))
+        #logger.debug(result.output)
+        #logger.debug(result.output.keys())
+        #logger.debug(len(result.output['tasks']))
+        #logger.debug(len(result.output['modifications']))
+        #logger.debug(len(result.output['errors']))
+        #logger.debug(len(result.output['warnings']))
+        
+        assert (len(result.output['tasks']) == 0), "Number of tasks doesn't match."
+        assert (len(result.output['modifications']) == 0), "Number of modifications doesn't match."
+        assert (len(result.output['errors']) == 1), "Number of errors doesn't match."
+        assert (len(result.output['warnings']) == 5), "Number of warnings doesn't match."
+
+
+    def test_UpdateTemplateInformation_result(self):        
+        """ Validating UpdateTemplateInformation."""                
+        behave = {'test_update' : """Baseline Selection Mode: Latest Baseline Projects
+Prep Allowed:            No
+Versions Matching:       *abs.50*
+Release Purposes:
+Use by Default:          Yes
+Modifiable in Database:  tr1s60
+In Use For Release:      Yes
+Folder Templates and Folders:
+    Template assigned or completed tasks for %owner for release %release
+    Template all completed tasks for release %release
+    Folder   tr1s60#4844: All completed Xuikon/Xuikon_rel_X tasks
+    Folder   tr1s60#4930: All tasks for release AppBaseDo_50        
+        """}
+        session = MockResultSession(behave)
+        result = session.execute('test_update', ccm.UpdateTemplateInformation(session))
+        #logger.debug(result.output)
+        assert result.output['baseline_selection_mode'] == "Latest Baseline Projects", "BSM doesn't match."
+        assert result.output['prep_allowed'] == False, "Prep allowed doesn't match."
+        assert result.output['version_matching'] == "*abs.50*", "Version matching doesn't match."
+        assert result.output['release_purpose'] == "", "Release purpose doesn't match."
+        assert result.output['modifiable_in_database'] == "tr1s60", "Modifiable in Database doesn't match."
+        assert result.output['in_use_for_release'] == True, "In Use For Release doesn't match."
+    
+    def test_ConflictsResult_result(self):        
+        """ Validating ConflictsResult."""                
+        behave = {'test_update' : """        
+Project: Cartman-Release_v4
+
+         No conflicts detected.
+
+Project: Cartman_sub03-next
+
+         No conflicts detected.
+
+Project: Cartman_sub01-Release_v2
+
+         No conflicts detected.
+
+Project: Cartman_sub02-Release_v4
+
+         No conflicts detected.
+
+Project: Cartman_sub_sub01-Release_v2
+
+         No conflicts detected.
+
+Project: Cartman_sub_sub02-Release_v4
+
+         No conflicts detected.
+
+Project: Cartman_sub_sub_sub02-Release_v4
+
+tr1test1#5224   Explicitly specified but not included
+tr1test1#5226   Explicitly specified but not included
+        """}
+        session = MockResultSession(behave)
+        result = session.execute('test_update', ccm.ConflictsResult(session))
+        #logger.debug(result.output)
+        # pylint: disable-msg=E1103
+        assert len(result.output.keys()) == 7, "Should detect 7 projects."
+        subproj = session.create("Cartman_sub_sub_sub02-Release_v4:project:%s#1" % session.database())
+        assert len(result.output[subproj]) == 2, "%s should contain 2 conflicts" % subproj.objectname
+
+
+    def test_DataMapperListResult_result(self):        
+        """ Validating DataMapperListResult."""                        
+        behave = {'test_query' : """>>>objectname>>>task5204-1:task:tr1test1>>>task_synopsis>>>Create Cartman_sub03>>>
+>>>objectname>>>task5223-1:task:tr1test1>>>task_synopsis>>>cartman/next test1>>>
+>>>objectname>>>task5224-1:task:tr1test1>>>task_synopsis>>>test.txt>>>
+>>>objectname>>>task5225-1:task:tr1test1>>>task_synopsis>>>test.txt 2>>>
+>>>objectname>>>task5226-1:task:tr1test1>>>task_synopsis>>>test.txt merge>>>
+>>>objectname>>>task5240-1:task:tr1test1>>>task_synopsis>>>add calculator>>>
+"""}
+        session = MockResultSession(behave)
+        result = session.execute('test_query', ccm.DataMapperListResult(session, '>>>', ['objectname', 'task_synopsis'], ['ccmobject', 'string']))        
+        logger.debug(result.output)
+        assert len(result.output) == 6
+        
+    def test_UpdatePropertiesRefreshResult_result(self):        
+        """ Validating UpdatePropertiesRefreshResult."""                        
+        behave = {'test_refresh' : """Refreshing baseline and tasks for project grouping 'All cartman/next Integration Testing Projects from Database tr1test1'.
+Replacing tasks in folder tr1test1#2045
+  Removed the following tasks from folder tr1test1#2045
+        Task tr1test1#5225: test.txt 2
+
+  Added the following tasks to folder tr1test1#2045
+        Task tr1test1#5223: cartman/next test1
+
+Added the following tasks to project grouping 'All cartman/next Integration Testing Projects from Database tr1test1':
+        Task tr1test1#5223: cartman/next test1
+
+Removed the following tasks from project grouping 'All cartman/next Integration Testing Projects from Database tr1test1':
+        Task tr1test1#5225: test.txt 2
+"""}
+        session = MockResultSession(behave)
+        result = session.execute('test_refresh', ccm.UpdatePropertiesRefreshResult(session))        
+        logger.debug(result.output)
+        assert result.output['added'] == [session.create("Task tr1test1#5223")]
+        assert result.output['removed'] == [session.create("Task tr1test1#5225")]
+
+    def test_update_log_result(self):
+        """ Testing update log parsing. """
+        log = """Starting update process...
+
+Updating project 'MinibuildDomain-wbernard3:project:tr1test1#1' from object version 'MinibuildDomain-wbernard3:project:tr1test1#1'...
+Refreshing baseline and tasks for project grouping 'My MinibuildDomain/next Insulated Development Projects'.
+Replacing tasks in folder tr1test1#2068
+  Contents of folder tr1test1#2068 have not changed.
+Setting path for work area of 'helloworldcons-wbernard2' to 'c:\users\ccm65\ccm_wa\tr1test1\MinibuildDomain'...
+Warning: 'c:\users\ccm65\ccm_wa\tr1test1\MinibuildDomain\helloworldcons' already used as work area for project 'helloworldcons-wbernard'
+Warning: Unable to update path for work area of 'helloworldcons-wbernard2'
+Warning: Unable to update membership of project 'MinibuildDomain-wbernard3'
+Work area delete of 'helloworldcons-wbernard2:project:tr1test1#1' failed
+Warning: Unable to update membership of project MinibuildDomain-wbernard3 with MinibuildDomain-2:dir:tr1test1#1
+Rebind of MinibuildDomain-1:dir:tr1test1#1 failed
+Warning: Update for project 'MinibuildDomain-wbernard3:project:tr1test1#1' failed.
+Warning: This work area 'c:\users\ccm65\ccm_wa\tr1sido\mrurlparserplugin\mrurlparserplugin' cannot be reused
+Warning:  No candidates found for directory entry ecompluginnotifier.cpp:cppsrc:e003sa01#1.  It will be left empty!
+WARNING: There is no matching baseline project for 'ci-hitchcock_nga' in baseline 'tr1s60#ABS_domain_mcl92-abs.mcl.92_200907'.  This baseline might not be complete
+
+Update Summary
+2 failures to use the selected object version
+    Failed to remove selected object helloworldcons-wbernard2:project:tr1test1#1 under directory MinibuildDomain-1:dir:tr1test1#1 from project MinibuildDomain-wbernard3 : work area delete failed
+    Failed to use selected object MinibuildDomain-2:dir:tr1test1#1 under directory MinibuildDomain-wbernard3:project:tr1test1#1 in project MinibuildDomain-wbernard3
+Serious: 
+Update failed.
+"""
+        logger = logging.getLogger('count.logger')
+        logger.setLevel(logging.WARNING)
+        handler = CounterHandler()
+        logger.addHandler(handler)
+        ccm.log_result(log, ccm.UPDATE_LOG_RULES, logger)
+        print handler.warnings
+        print handler.errors
+        assert handler.warnings == 5
+        assert handler.errors == 9
+
+
+    def test_checkout_log_result(self):
+        """ Testing checkout log parsing. """
+        log = """Setting path for work area of 'swservices_domain-ssdo_7132_200912_Shakira_Gwen1' to 'E:\Build_E\DaveS\Integration\_no_context_\swservices_domain'...
+Saved work area options for project: 'swservices_domain-ssdo_7132_200912_Shakira_Gwen1'
+Derive failed for MobileSearch-MobileSearch_4_10_09w09_S60_3_2:project:sa1mosx1#1
+Warning: Project name is either invalid or does not exist: 
+Warning: fa1ssdo#MobileSearch_4_10_09w09_S60_3_3 too long, use name less than 32 characters long.
+Warning: Object version 'fa1ssdo#MobileSearch_4_10_09w09_S60_3_3' too long, use version less than 32 characters long.
+Copy Project complete with 1 errors.
+WARNING: There is no matching baseline project for 'ci-hitchcock_nga' in baseline 'tr1s60#ABS_domain_mcl92-abs.mcl.92_200907'.  This baseline might not be complete
+"""
+        logger = logging.getLogger('count.logger')
+        logger.setLevel(logging.WARNING)
+        handler = CounterHandler()
+        logger.addHandler(handler)
+        ccm.log_result(log, ccm.CHECKOUT_LOG_RULES, logger)
+        print handler.warnings
+        print handler.errors
+        assert handler.warnings == 4
+        assert handler.errors == 1
+
+        
+    def test_sync_log_result(self):
+        """ Testing sync log parsing. """
+        log = """Synchronization summary:
+       0 Update(s) for project MinibuildDomain-wbernard7
+       0 Update(s) for project helloworldapi-wbernard7
+       0 Update(s) for project helloworldcons-wbernard5
+       0 Conflict(s) for project MinibuildDomain-wbernard7
+       1 Conflict(s) for project helloworldapi-wbernard7
+       0 Conflict(s) for project helloworldcons-wbernard5
+You can use Reconcile to resolve work area conflicts
+Warning: Conflicts detected during synchronization. Check your logs.
+"""
+        logger = logging.getLogger('count.logger')
+        logger.setLevel(logging.WARNING)
+        handler = CounterHandler()
+        logger.addHandler(handler)
+        ccm.log_result(log, ccm.SYNC_LOG_RULES, logger)
+        print handler.warnings
+        print handler.errors
+        assert handler.warnings == 0
+        assert handler.errors == 2
+
+    def test_ResultWithError(self):
+        """ Test result. """
+        result = ccm.ResultWithError(None)
+        result.output = u"Nokia"
+        result.error = u"Nokio"
+        assert result.output == u"Nokia"
+        assert result.error == u"Nokio"
+
+    def test_ResultWithError_unicode_character(self):
+        """ Test result with unicode character. """
+        result = ccm.ResultWithError(None)
+        result.output = u"Nokia\xc2"
+        result.error = u"Nokio\xc2"
+        print result.output.encode('ascii', 'replace')
+        print result.error.encode('ascii', 'replace')
+        assert result.output == u"Nokia?"
+        assert result.error == u"Nokio?"
+
+    def test_ResultWithError_str(self):
+        """ Test result from str. """
+        result = ccm.ResultWithError(None)
+        result.output = "Nokia"
+        result.error = "Nokio"
+        assert result.output == "Nokia"
+        assert result.error == "Nokio"
+
+    def test_ResultWithError_str_not_ascii(self):
+        """ Test result from str with not ascii. """
+        result = ccm.ResultWithError(None)
+        result.output = "Noki\xe4"
+        result.error = "Nokio\xe5"
+        print result.output
+        print result.error
+        assert result.output == "Noki"
+        assert result.error == "Nokio"
+
+if __name__ == "__main__":
+    unittest.main()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_ccmutil.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,97 @@
+#============================================================================ 
+#Name        : test_ccmutil.py 
+#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:
+#===============================================================================
+
+""" Unit test case for ccmutil.py """
+
+import unittest
+import ccmutil
+import logging
+import nokia.nokiaccm
+import ccm
+    
+_logger = logging.getLogger('test.ccmutil')
+logging.basicConfig(level=logging.INFO)
+
+def open_session(username=None, password=None, engine=None, dbpath=None, database=None, reuse=True):
+    return MockSession(None, username, password, engine, dbpath, database)
+
+nokia.nokiaccm.open_session = open_session
+    
+class CcmUtilTest(unittest.TestCase):
+    
+    def test_get_session_with_database_set(self):
+        """ Testing get_session method with database set"""
+        session = None    
+        database = 'testdb'
+        username = 'username'
+        password = 'password'
+        engine = "ccm.engine.host"
+        dbpath = "ccm.database.path"     
+        try:
+            session = ccmutil.get_session(database, username, password, engine, dbpath)
+        except Exception, ex:
+            print "Error creating session"
+        assert session is None        
+            
+    def test_get_session_without_database_set(self):
+        """ Testing get_session method without database set"""
+        session = None    
+        database = None
+        username = 'username'
+        password = 'password'
+        engine = "ccm.engine.host"
+        dbpath = "ccm.database.path"     
+        try:
+            session = ccmutil.get_session(database, username, password, engine, dbpath)
+        except Exception, ex:
+            print "Error creating session"            
+        assert session is None        
+
+    def test_get_session(self):
+        """ Testing get_session method """
+        session = ccmutil.get_session("fakedb", None, None, None, None)
+        assert session is not None   
+        
+        
+class MockSession(ccm.AbstractSession):
+    """ Fake session used to test """
+    def __init__(self, behave = {}, username=None, password=None, engine=None, dbpath=None, database=None):
+        if database == "fakedb":
+            self._behave = behave
+            self._database = database
+            self.dbpath = "/path/to/" + database
+            self._session_addr = "LOCALHOST:127.0.0.1:1234"
+        else:
+            ccm.Session.start(username, password, engine, dbpath)
+                
+    def database(self):
+        _logger.info("running database from MockResultSession")
+        return self._database
+    
+    def execute(self, cmdline, result=None):
+        if result == None:
+            result = ccm.Result(self)        
+        if self._behave.has_key(cmdline):
+            result.statuserrors = 0  
+            result.output = self._behave[cmdline]
+        else:
+            result.status = -1  
+        return result
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_compilation.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,80 @@
+#============================================================================ 
+#Name        : test_compilation.py 
+#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:
+#===============================================================================
+
+""" Unit test case for compilation.py """
+
+import unittest
+import compilation
+import logging
+import os
+import sysdef.api
+import tempfile
+from shutil import rmtree
+
+_logger = logging.getLogger('test.compilation')
+logging.basicConfig(level=logging.INFO)
+
+class CompilationTest(unittest.TestCase):
+    
+    def test_read_output_binaries_per_unit_with_empty_logs_list(self):
+        """ Testing read_output_binaries_per_unit method with empty log list """
+        sysdefpath = os.path.join(os.environ['TEST_DATA'], 'data', 'compile', 'sysdefs', 'canonical_system_definition.xml')
+        sysDef = sysdef.api.SystemDefinition(sysdefpath)
+        bsl = compilation.BinarySizeLogger(sysDef)
+        self.assertRaises(Exception, bsl.read_output_binaries_per_unit, "")
+
+    def test_read_output_binaries_per_unit(self):
+        """ Testing read_output_binaries_per_unit method """
+        sysdefpath = os.path.join(os.environ['TEST_DATA'], 'data', 'compile', 'sysdefs', 'canonical_system_definition.xml')
+        sysDef = sysdef.api.SystemDefinition(sysdefpath)
+        bsl = compilation.BinarySizeLogger(sysDef)
+        loglist = os.path.join(os.environ['TEST_DATA'], 'data', 'compile', 'logs', 'test_build.log')
+        bsl.read_output_binaries_per_unit(loglist.split(';'))
+        
+    def test_read_binary_sizes_in_rom_output_logs_with_empty_logs_list(self):
+        """ Testing read_binary_sizes_in_rom_output_logs method with empty log list """
+        sysdefpath = os.path.join(os.environ['TEST_DATA'], 'data', 'compile', 'sysdefs', 'canonical_system_definition.xml')
+        sysDef = sysdef.api.SystemDefinition(sysdefpath)
+        bsl = compilation.BinarySizeLogger(sysDef)
+        self.assertRaises(Exception, bsl.read_binary_sizes_in_rom_output_logs, "")
+
+    def test_read_binary_sizes_in_rom_output_logs(self):
+        """ Testing read_binary_sizes_in_rom_output_logs method """
+        sysdefpath = os.path.join(os.environ['TEST_DATA'], 'data', 'compile', 'sysdefs', 'canonical_system_definition.xml')
+        sysDef = sysdef.api.SystemDefinition(sysdefpath)
+        bsl = compilation.BinarySizeLogger(sysDef)
+        loglist = os.path.join(os.environ['TEST_DATA'], 'data', 'compile', 'logs', 'test_build.log')
+        bsl.read_output_binaries_per_unit(loglist.split(';'))
+        romloglist = os.path.join(os.environ['TEST_DATA'], 'data', 'compile', 'logs', 'test_rom.log')
+        bsl.read_binary_sizes_in_rom_output_logs(romloglist.split(';'))
+        
+    def test_write2csvfile(self):
+        """ Testing write2csvfile method """
+        sysdefpath = os.path.join(os.environ['TEST_DATA'], 'data', 'compile', 'sysdefs', 'canonical_system_definition.xml')
+        sysDef = sysdef.api.SystemDefinition(sysdefpath)
+        bsl = compilation.BinarySizeLogger(sysDef)
+        tmpdir = tempfile.mkdtemp()
+        output = os.path.join(tmpdir, 'test_flash_image_size_data.csv')
+        sysdeflist = os.path.join(os.environ['TEST_DATA'], 'data', 'compile', 'sysdefs', 'build.sysdef.xml') + ", " + os.path.join(os.environ['TEST_DATA'], 'data', 'compile', 'sysdefs', 'layers.sysdef.xml')
+        bsl.write2csvfile(output, sysdeflist.split(','))
+        tempFile = open(output,'r')
+        contents = tempFile.readlines()
+        tempFile.close()
+        rmtree(tmpdir)
+        assert len(contents) > 0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_configuration.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,284 @@
+#============================================================================ 
+#Name        : test_configuration.py 
+#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:
+#===============================================================================
+
+import logging
+import StringIO
+import unittest
+import os
+import tempfile
+import sys
+import configuration
+
+_logger = logging.getLogger('test.configuration')
+logging.basicConfig(level=logging.INFO)
+
+class NestedConfigurationBuilderTest(unittest.TestCase):
+    def setUp(self):
+        """ Setup. """
+        config_file = open(os.path.join(os.environ['TEST_DATA'], 'data/config_test.cfg.xml'), 'r')
+        self._builder = configuration.NestedConfigurationBuilder(config_file)
+        
+    def test_config_parsing(self):
+        """A basic configuration can be parsed."""
+        config_set = self._builder.getConfiguration()
+        configs = config_set.getConfigurations()
+        
+        assert len(configs) == 10
+        for config in configs:
+            print
+            for k in config.keys():
+                print k + ': ' + str(config[k])
+
+        assert configs[0]['A'] == 'foo'
+        assert configs[0]['B'] == 'child -> foo'
+        assert configs[0]['C'] == 'missing value test ${does_not_exist}'
+        assert configs[0]['node.content'].strip() == 'This is the value!'
+        assert configs[1]['A'] == 'foo'
+        assert configs[1]['B'] == 'parent: foo'
+        assert configs[1]['C'] == ['one', 'two']
+        assert 'C' in configs[1]
+        assert 'Z' not in configs[1]
+
+        configs = config_set.getConfigurations('spec.with.type')
+        assert len(configs) == 1
+        assert configs[0].type == 'test.type', "config.type must match 'test.type'."
+        
+        configs = config_set.getConfigurations(type='test.type')
+        assert len(configs) == 2
+        assert configs[0].type == 'test.type', "config.type must match 'test.type'."
+
+        configs = config_set.getConfigurations(name='test_spec', type='test.type')
+        assert len(configs) == 2
+        assert configs[0].type == 'test.type', "config.type must match 'test.type'."
+        
+    def test_append(self):
+        """A child value can be appended to a parent value."""
+        configs = self._builder.getConfigurations()
+        config = configs[4]
+        assert config['A'] == ['foo', 'bar']
+        
+    def test_parent_interpolated_by_child(self):
+        """ A child value can be interpolated into a parent template. """
+        configs = self._builder.getConfigurations()
+        parent_config = configs[5]
+        child_config = configs[6]
+        assert parent_config['template'] == 'value -> from parent'
+        assert child_config['template'] == 'value -> from child'
+     
+    def test_property_escaping(self):
+        """ Property values can be escaped in the values of other properties. """
+        config_text = """
+<build>
+    <config name="test_spec">
+        <set name="A" value="foo"/>
+        <set name="B" value="A = ${A}"/>
+    </config>
+</build>"""
+
+        builder = configuration.NestedConfigurationBuilder(StringIO.StringIO(config_text))
+        config = builder.getConfiguration().getConfigurations()[0]
+        print config['B']
+        #assert configs[1]['C'] == ['one', 'two']
+
+    def test_any_root_element(self):
+        """ Any root element name can be used. """
+        config_text = """
+<someConfigData>
+    <config name="test_spec">
+        <set name="A" value="foo"/>
+    </config>
+</someConfigData>"""
+
+        builder = configuration.NestedConfigurationBuilder(StringIO.StringIO(config_text))
+        config = builder.getConfiguration().getConfigurations()[0]
+        assert config['A'] == 'foo'
+
+    def test_list_templating(self):
+        """ Testing list templating. """
+        configs = self._builder.getConfigurations('test_list_config1')
+        # should return only one config.
+        assert len(configs) == 1
+        
+        _logger.debug(configs[0].get_list('include', []))
+        result = configs[0].get_list('include', [])
+        result.sort()
+        print result
+        assert len(result) == 3
+        assert result == [u'bar1_config1', u'bar2_config1', u'foo_config1']        
+
+    def test_list_templating2(self):
+        """ Testing list templating 2. """
+        configs = self._builder.getConfigurations('test_list_config2')
+        # should return only one config.
+        assert len(configs) == 1
+        
+        _logger.debug(configs[0].get_list('include', []))
+        result = configs[0].get_list('include', [])
+        result.sort()
+        print result
+        assert len(result) == 3
+        assert result == [u'bar1_config2', u'bar2_config2', u'foo_config2']        
+        
+
+    def test_append_list(self):
+        """ Testing if append handles the list correctly..."""
+        config_text = """
+<build>
+<config name="prebuild_zip" abstract="true">
+   <set name="exclude" value="**/_ccmwaid.inf" />
+   <set name="exclude" value="build/**" />
+   <set name="exclude" value="config/**" />
+   <set name="exclude" value="ncp_sw/**" />
+   <set name="exclude" value="ppd_sw/**" />
+   <set name="exclude" value="psw/**" />
+   <set name="exclude" value="tools/**" />
+   <set name="include" value="foo/**" />
+   <config>
+    <set name="root.dir" value="X:/rootdir" />
+    <set name="name" value="PF5250_200832_internal_code" />
+    <set name="include" value="**/internal/**" />
+    <set name="grace.filters" value="tsrc" />
+    <set name="grace.default" value="false" />
+   </config>
+   <config>
+    <set name="root.dir" value="X:/rootdir" />
+    <set name="name" value="PF5250_200832_doc" />
+    <append name="include" value="**/doc/**" />
+    <set name="include" value="**/docs/**" />
+    <append name="exclude" value="**/internal/**" />                            <!-- set changed to append -->
+    <set name="grace.filters" value="tsrc" />
+    <set name="grace.default" value="false" />
+   </config>
+  </config>
+</build>
+"""        
+        builder = configuration.NestedConfigurationBuilder(StringIO.StringIO(config_text))
+        configs = builder.getConfigurations()
+        config = configs[1]
+        print config['exclude']
+        print config['include']
+        exclude_match = [u'**/_ccmwaid.inf', u'build/**', u'config/**',
+                                          u'ncp_sw/**', u'ppd_sw/**', u'psw/**', u'tools/**',
+                                          u'**/internal/**']
+        exclude_result = config['exclude']
+        exclude_match.sort()
+        exclude_result.sort()
+        assert len(config['include']) == 3
+        assert exclude_result == exclude_match
+
+        config = configs[0]
+        assert config['include'] == '**/internal/**'
+        assert len(config['exclude']) == 7
+        
+    def test_writeToXML(self):
+        """ To write the configurations into XML file. """
+        config_text = """
+<build>
+    <config name="test_spec">
+        <set name="A" value="foo"/>
+        <set name="B" value="A = ${A}"/>
+        <config name="test_spec_1">
+            <set name="A" value="foo"/>
+            <set name="B" value="A = ${A}"/>        
+        </config>
+        <config name="test_spec_2">
+            <set name="A" value="foo"/>
+            <set name="B" value="A = ${A}"/>
+            <config name="test_spec_3">
+                <set name="A" value="foo"/>
+                <set name="B" value="A = ${A}"/>        
+            </config>        
+        </config>        
+    </config>
+</build>"""    
+        
+        builder = configuration.NestedConfigurationBuilder(StringIO.StringIO(config_text))
+        configSet = builder.getConfiguration()
+        configs = configSet.getConfigurations('test_spec_1')
+        (out, outputFile) = tempfile.mkstemp('.tmp', 'zip_test')
+        builder.writeToXML(outputFile, configs, 'test_spec_1')
+        
+        builder = configuration.NestedConfigurationBuilder(open(outputFile), 'r')
+        configSet = builder.getConfiguration()
+        configs = configSet.getConfigurations('test_spec_1')
+        config = configs[0]
+        assert config['A'] == 'foo'
+        
+        builder = configuration.NestedConfigurationBuilder(StringIO.StringIO(config_text))
+        configSet = builder.getConfiguration()
+        configs = configSet.getConfigurations('test_spec')
+        (out, outputFile) = tempfile.mkstemp('.tmp', 'zip_test')
+        builder.writeToXML(outputFile, configs )
+        
+        builder = configuration.NestedConfigurationBuilder(open(outputFile), 'r')
+        configSet = builder.getConfiguration()
+        configs = configSet.getConfigurations('test_spec')
+        config = configs[0]
+        assert config['B'] == 'A = foo'
+        
+        
+
+        
+class PropertiesConfigurationTest(unittest.TestCase):
+    """ Test plain text configuration files. """
+    def test_text_config(self):
+        """ Basic text properties can be read. """
+        config = configuration.PropertiesConfiguration(open(os.path.join(os.environ['TEST_DATA'], 'data/ant_config_test.txt'), 'r'))
+        
+        assert config['text.a'] == 'text.value.A'
+        assert config['text.b'] == 'text.value.B'
+
+    def test_text_config_store(self):
+        """ Basic text properties can be read. """
+        config = configuration.PropertiesConfiguration(open(os.path.join(os.environ['TEST_DATA'], 'data/ant_config_test.txt'), 'r'))
+
+        config['foo'] = "bar"
+        (fd, filename) = tempfile.mkstemp()
+        f = os.fdopen(fd, 'w')
+        config.store(f)
+        config = configuration.PropertiesConfiguration(open(filename))
+        
+        assert config['text.a'] == 'text.value.A'
+        assert config['text.b'] == 'text.value.B'
+        assert config['foo'] == 'bar'
+        
+        
+if 'java' not in sys.platform:
+    class XMLConfigurationTest(unittest.TestCase):
+        """ Test XML format configuration files. """
+        
+        def test_single_node_xml(self):
+            """ Properties can be read from 1 level of XML sub-elements. """
+            config = configuration.XMLConfiguration(open(os.path.join(os.environ['TEST_DATA'], 'data/ant_config_test.xml'), 'r'))
+            
+            assert config['foo'] == 'bar'
+            assert config['interpolated'] == 'foo value = bar'
+            
+        def test_nested_node_xml(self):
+            """ Properties can be read from multiple levels of XML sub-elements. """
+            config = configuration.XMLConfiguration(open(os.path.join(os.environ['TEST_DATA'], 'data/ant_config_test.xml'), 'r'))
+            
+            assert config['xml.c'] == 'C'
+            
+        def test_xml_list(self):
+            """ Multiple XML elements can be read as a list. """
+            config = configuration.XMLConfiguration(open(os.path.join(os.environ['TEST_DATA'], 'data/ant_config_test.xml'), 'r'))
+            
+            assert config['array.value'] == 'one,two,three'
+        
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_ctc.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,99 @@
+#============================================================================ 
+#Name        : test_ctc.py 
+#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:
+#===============================================================================
+
+import unittest
+import ctc
+import logging
+import time
+import os
+import fileutils
+import tempfile
+
+_logger = logging.getLogger('test.configuration')
+logging.basicConfig(level=logging.INFO)
+
+root_test_dir = tempfile.mkdtemp()
+_test_file_paths = [
+                    "ctc/dir/component1/group/MON.SYM",
+                    "ctc/dir/component2/group/",
+                    "ctc/dir/component3/group/MON.SYM",
+]
+
+def _testpath(subpath):
+    """ Normalised path for test paths. """
+    return os.path.normpath(os.path.join(root_test_dir, subpath))
+
+_test_file_content = {}
+
+def setup_module():
+    """ Setup files test config. 
+    
+    This creates a number of empty files in a temporary directory structure
+    for testing various file selection and archiving operations.
+    """
+    for child_path in _test_file_paths:
+        path = os.path.join(root_test_dir, child_path)
+        path_dir = path
+        path_dir = os.path.dirname(path)
+        
+        if (not os.path.exists(path_dir)):
+            _logger.debug('Creating dir:  ' + path_dir)
+            os.makedirs(path_dir)
+
+        if(not path.endswith('/') and not path.endswith('\\')):
+            _logger.debug('Creating file: ' + path)
+            handle = open(path, 'w')
+            # Write any file content that is needed
+            if _test_file_content.has_key(child_path):
+                handle.write(_test_file_content[child_path])
+            handle.close()
+
+def teardown_module():
+    """ Teardown test config. """
+    if os.path.exists(root_test_dir):
+        fileutils.rmtree(root_test_dir)
+    
+
+class MockUploader(ctc.MonSymFTPUploader):
+    
+    def _open(self):
+        pass
+    
+    def _close(self):
+        pass
+
+    def _ftpmkdirs(self, dir):
+        pass    
+    
+    def _send(self, src, dst):
+        pass
+
+class NestedConfigurationBuilderTest(unittest.TestCase):
+        
+    def test_uploader(self):
+        paths = [   "ctc/dir/component1/group/MON.SYM",
+                    "ctc/dir/component2/group/MON.SYM",
+                    "ctc/dir/component3/group/MON.SYM",
+                    ]
+        uploader = MockUploader("server", [_testpath(p) for p in paths], "1234")
+        result = uploader.upload()
+        print result
+        assert len(result) == 2
+        assert result[0] == "ctc_helium/1234/mon_syms/1/MON.SYM"
+        assert result[1] == "ctc_helium/1234/mon_syms/2/MON.SYM"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_deltazip.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,122 @@
+#============================================================================ 
+#Name        : test_deltazip.py 
+#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:
+#===============================================================================
+
+""" Unit tests for the delta zip tool.
+
+"""
+
+from __future__ import with_statement
+import unittest
+import delta_zip
+import logging
+import os
+import sys
+import tempfile
+
+class DeltaZipTest( unittest.TestCase ):
+    
+    def setUp(self):
+        self.cwd_backup = os.getcwd()
+        self.logger = logging.getLogger('test.deltazip')
+        self.root = os.environ['TEST_DATA']
+        self.output = os.path.join(tempfile.gettempdir(), 'deltazip')
+        self.output2 = os.path.join(tempfile.gettempdir(), 'deltazip2')
+        
+        logging.basicConfig(level=logging.INFO)
+
+    def test_MD5SignatureBuilder(self):
+        
+        output = os.path.join(self.output2, 'md5_list.txt')
+        md5output = os.path.join(self.output2, 'delta.md5')
+        
+        if os.path.exists(output):
+            os.remove(output)
+        
+        sig = delta_zip.MD5SignatureBuilderEBS(self.root, 1, self.output2, '', output)
+        sig.write_build_file()
+        if sys.platform == 'win32':
+            assert os.path.splitdrive(self.root)[0] + os.sep not in open(output).read()
+        assert os.path.exists(output)
+    def test_DeltaZipBuilder(self):
+        if not os.path.exists(self.output):
+            os.mkdir(self.output)
+      
+        md5output = os.path.join(self.output, 'delta.md5')
+        oldmd5output = os.path.join(self.output, 'olddelta.md5')
+      
+        thisfile = os.path.abspath(__file__)
+        md5string = """
+Host:fasym014
+Username:ssteiner
+Date-Time:Fri Aug 17 08:47:40 2007
+Version:0.02
+Directory:z:\
+FileList:z:\output/delta_zip\list_files.txt
+Exclusion(s):
+Inclusion(s):
+----------------
+%s TYPE=unknown format MD5=34dcda0d351c75e4942b55e1b2e2422f
+        """ % thisfile
+        
+
+        tempoutput = open(md5output, 'w')
+        tempoutput.write(md5string)
+        tempoutput.close()
+        
+        md5string = """
+Host:fasym014
+Username:ssteiner
+Date-Time:Fri Aug 17 08:47:40 2007
+Version:0.02
+Directory:z:\
+FileList:z:\output/delta_zip\list_files.txt
+Exclusion(s):
+Inclusion(s):
+----------------
+%s TYPE=unknown format MD5=34dcda0d351c75e4942b55e1b2e2422g
+        """ % thisfile
+        
+        tempoutput = open(oldmd5output, 'w')
+        tempoutput.write(md5string)
+        tempoutput.close()
+        
+        deltazipfile = os.path.join(self.output, 'delta.zip')
+        deltaantfile = os.path.join(self.output, 'delta.ant.xml')
+        deletefile = os.path.join(self.output, 'delta_zip_specialInstructions.xml')
+        
+      
+        delta = delta_zip.DeltaZipBuilder(self.root, self.output, oldmd5output, md5output)
+        delta.create_delta_zip(deltazipfile, deletefile, 1, deltaantfile)
+
+    def test_changedFiles(self):
+        dir1 = tempfile.mkdtemp()
+        dir2 = tempfile.mkdtemp()
+        
+        with open(os.path.join(dir1, '1'), 'w') as f1:
+            f1.write('Directory:%s\n' % self.root)
+            f1.write('myfile1 TYPE=unknown format MD5=34dcda0d351c75e4942b55e1b2e2422g')
+        with open(os.path.join(dir2, '2'), 'w') as f2:
+            f2.write('Directory:%s\n' % self.root)
+            f2.write('myfile1 TYPE=unknown format MD5=34dcda0d351c75e4542b55e1b2e2422g')
+        
+        assert delta_zip.changedFiles(dir1, dir2) == [os.path.join(self.root, 'myfile1')]
+
+    def tearDown(self):
+        """ Restore path """
+        os.chdir(self.cwd_backup)
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_dependancygraph.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,48 @@
+#============================================================================ 
+#Name        : test_dependancygraph.py 
+#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:
+#===============================================================================
+
+import unittest
+import dependancygraph
+import logging
+import tempfile
+import os
+import sys
+
+_logger = logging.getLogger('test.dependancygraph')
+logging.basicConfig(level=logging.INFO)
+
+class DependancygraphTest(unittest.TestCase):
+        
+    def test_dependancygraph(self):
+        (fd, filename) = tempfile.mkstemp()
+        f = os.fdopen(fd, 'w')
+        f.write('test')
+        f.close()
+        path1 = None
+        path2 = None
+        for p in sys.path:
+            for x in [p, os.path.join(p, '..')]:
+                if os.path.exists(x) and os.path.isdir(x):
+                    for egg in os.listdir(x):
+                        if egg.endswith('.egg'):
+                            if path1 == None:
+                                path1 = x
+                            if path1 and path1 != x:
+                                path2 = x
+        dependancygraph.createGraph(os.path.join(os.environ['TEST_DATA'], 'data', 'ivy.xml'), filename, path1, path2, False)
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_docs.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,61 @@
+#============================================================================ 
+#Name        : test_docs.py 
+#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:
+#===============================================================================
+
+""" Unit test case for docs.py """
+
+import unittest
+import docs
+import logging
+import amara
+import os
+import sys
+from cStringIO import StringIO
+
+_logger = logging.getLogger('test.docs')
+logging.basicConfig(level=logging.INFO)
+
+class DocsTest(unittest.TestCase):
+    
+    def test_find_python_dependencies(self):
+        """ Verifying find_python_dependencies method """
+        
+        old_stdout = sys.stdout
+        sys.stdout = mystdout = StringIO()
+        
+        setpath = os.path.join(os.environ['TEST_DATA'], 'data', 'docs', 'helium', 'tools')
+        
+        print "Searching under " + setpath
+
+        dbPath = os.path.join(os.environ['TEST_DATA'], 'data', 'docs', 'database_test.xml')
+        dbPath = 'file:///'+ dbPath.replace('\\', '/')
+        dbPrj = amara.parse(dbPath)
+        
+        docs.find_python_dependencies(setpath, dbPath, dbPrj)
+        
+        sys.stdout = old_stdout
+        assert mystdout.getvalue().find("Python module : ant") != -1
+        
+
+
+        
+        
+
+
+
+    
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_escapeddict.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,49 @@
+#============================================================================ 
+#Name        : test_escapeddict.py 
+#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:
+#===============================================================================
+
+import logging
+import unittest
+
+import escapeddict
+
+
+logger = logging.getLogger('test.escapeddict')
+
+
+class EscapedDictTest(unittest.TestCase):
+    def test_escape(self):
+        testdict = escapeddict.EscapedDict({'key1': 'value1', 'key2': 'value2 ${key1}'})
+        for key in testdict.keys():
+            logger.info(testdict[key])
+        assert testdict['key1'] == 'value1'
+        assert testdict['key2'] == 'value2 value1'
+        
+    def test_escape_no_value_present(self):
+        testdict = escapeddict.EscapedDict({'key1': 'value1', 'key2': 'value2 ${key_not_present} ${key1}'})
+        for key in testdict.keys():
+            print testdict[key]
+        assert testdict['key1'] == 'value1'
+        assert testdict['key2'] == 'value2 ${key_not_present} value1'
+        
+    def test_escape_value_as_list(self):
+        testdict = escapeddict.EscapedDict({'key1': 'value1', 'key2': ['value2', '${key1}']})
+        for key in testdict.keys():
+            print testdict[key]
+        assert testdict['key1'] == 'value1'
+        assert testdict['key2'] == ['value2', 'value1']
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_freedisk.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,112 @@
+#============================================================================ 
+#Name        : test_freedisk.py 
+#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:
+#===============================================================================
+
+""" Acceptance tests for freedisk.py
+
+"""
+
+import unittest
+import logging
+import os, string
+import sys
+
+class FreeDiskTest(unittest.TestCase):
+        
+    def test_freedisk(self):
+        import freedisk
+        freedisk.print_space_report(os.getcwd(), 1)
+
+if sys.platform == "win32":
+    from win32api import GetLogicalDriveStrings
+    
+    logger = logging.getLogger('test_freedisk')
+    
+    ## MAKE SURE that the drive being tested MUST be there.
+    class ToolTest(unittest.TestCase):
+        """
+        Setup and Tests for the script
+        """
+    
+        def setUp(self):
+            """
+            All the settings related to the tests are defined here
+            """
+            self.drive_letter = next_free_label()
+    
+        def test_when_enough_space(self):
+            """
+            Both drive and space parameters are correct with minimum required space
+            """
+            output = os.system('python -m freedisk -d c: -s 1')
+            assert(output==0)
+                       
+    
+        def test_when_not_enough_space(self):
+            """
+            Both drive and space parameters are correct with maximum required space
+            """
+            output = os.system('python -m freedisk -d c: -s 10000000000')
+            assert(output==-1)
+    
+        def test_wrong_drive_letter(self):
+            """
+            Tests with drive which does not exist
+            """
+            output = os.system('python -m freedisk -d %s: -s 10 ' % self.drive_letter)
+            assert(output==-2)
+            
+        def test_missing_parameters(self):
+            """
+            Several cases to give invalid parameters
+            """
+    
+            ##Required space parameter is missing
+            output = os.system('python -m freedisk -d c:')
+            assert(output==-3)
+            ##Drive parameter is missing
+            output = os.system('python -m freedisk -s 1')
+            assert(output==-3)
+            ##Both parameters are missing
+            output = os.system('python -m freedisk')
+            assert(output==-3)
+    
+        def test_wrong_drive_parameters(self):
+            """
+            Drive parameter is incorrect
+            """
+            output = os.system('python -m freedisk -d c -s 10')
+            assert(output==0)
+    
+    
+    def next_free_label():
+        """
+        Detects the next free drive letter for test_wrong_drive_letter
+        """
+        for letter in set(string.ascii_uppercase)-set(GetLogicalDriveStrings()):
+            try:
+                drv_letter = letter
+                os.chdir(drv_letter + ':\\')
+            except OSError:
+                break
+        else:
+            raise ValueError("Out of drives")
+        return drv_letter
+    
+    if __name__ == '__main__':
+        unittest.main()
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_gscm.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,78 @@
+#============================================================================ 
+#Name        : test_gscm.py 
+#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:
+#===============================================================================
+
+""" Test cases for gscm python wrapper.
+
+"""
+
+import logging
+import sys
+import unittest
+import os
+import nokia.gscm
+
+# Uncomment this line to enable logging in this module, or configure logging elsewhere
+#logging.basicConfig(level=logging.DEBUG)
+_logger = logging.getLogger('test.gscm')
+
+
+class TestGSCM(unittest.TestCase):
+    def setUp(self):
+        if os.environ.has_key('CCM_DATABASE'):
+            self.ccmdatabase = os.environ['CCM_DATABASE']
+        else:
+            self.ccmdatabase = 'fa1f5132'
+
+    def test_get_db_path(self):
+        """ Test the get_db_path function. """
+        dbpath = nokia.gscm.get_db_path(self.ccmdatabase)
+        assert self.ccmdatabase in dbpath, "Wrong value returned!"
+        
+    def test_get_db_path2(self):
+        """ Test the get_db_path function with unexistant database. """
+        try:        
+            _logger.info("get_db_path('not_valid_db'): %s" % nokia.gscm.get_db_path('not_valid_db'))
+            assert False, "Should raise Exception when giving unexisting db.'"
+        except Exception, exc:
+            _logger.info(exc)
+
+    def test_get_engine_host(self):
+        """ Test the get_engine_host function. """
+        engine = nokia.gscm.get_engine_host(self.ccmdatabase)
+        assert engine != None, "Wrong value returned!"
+        
+    def test_get_engine_host2(self):
+        """ Test the get_engine_host function with unexistant database. """
+        try:        
+            _logger.info("get_engine_host('not_valid_db'): %s" % nokia.gscm.get_engine_host('not_valid_db'))
+            assert False, "Should raise Exception when giving unexisting db.'"
+        except Exception, exc:
+            _logger.info(exc)
+
+    def test_get_router_address(self):
+        """ Test the get_router_address function. """
+        _logger.info("get_router_address(self.ccmdatabase): %s" % nokia.gscm.get_router_address(self.ccmdatabase))
+        
+    def test_get_router_address2(self):
+        """ Test the get_router_address function with unexistant database. """
+        try:        
+            _logger.info("get_router_address('not_valid_db'): %s" % nokia.gscm.get_router_address('not_valid_db'))
+            assert False, "Should raise Exception when giving unexisting db.'"
+        except Exception, exc:
+            _logger.info(exc)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_ido.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,59 @@
+#============================================================================ 
+#Name        : test_ido.py 
+#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:
+#===============================================================================
+
+import unittest
+import ido
+import logging
+from datetime import datetime
+from tempfile import mkstemp
+import os
+
+_logger = logging.getLogger('test.ido')
+logging.basicConfig(level=logging.INFO)
+
+class IDOTest(unittest.TestCase):
+    """ Verifying ido.py """
+        
+    def test_ido(self):
+        """ Verifying is_in_interval method """
+        now = datetime.now()
+        status = ido.is_in_interval(1, '00:00', 4, '12:00')
+
+# commenting it temproarily, will have to add a correct assertion here
+#        # in the odd week it should be True
+#        if int(now.strftime("%W")).__mod__(2):
+#            assert status == True
+#        # in the even week it should be False
+#        else :
+#            assert status == False
+
+    def test_ido_sysdef_valid(self):
+        """ Verifying get_sysdef_location method with valid sysdef"""
+        test_sysdef_file = os.path.join(os.environ['TEST_DATA'], 'data', 'packageiad', 'layers.sysdef.xml')
+        location = ido.get_sysdef_location(test_sysdef_file); 
+        assert location != None
+
+    def test_ido_sysdef_invalid(self):
+        """ Verifying get_sysdef_location method with invalid sysdef"""
+        (fd, filename) = mkstemp()
+        os.write(fd,'Test sysdef file')
+        os.close(fd)
+        location = ido.get_sysdef_location(filename); 
+        os.unlink(filename)
+        assert location == None
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_idoprep.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,136 @@
+#============================================================================ 
+#Name        : test_idoprep.py
+#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:
+#===============================================================================
+
+import tempfile
+import os
+import logging
+import unittest
+import idoprep
+import sys
+import ido
+
+_logger = logging.getLogger('test.idoprep')
+logging.basicConfig(level=logging.INFO)
+
+class IDOPrepTest(unittest.TestCase):
+    """Verifiying idoprep module"""
+    def setUp(self):   
+        self.server = os.path.join(os.environ['TEST_DATA'], "data/symrec/GRACE/")
+
+    def test_validate_grace(self):
+        """Verifiying validate(grace) method"""
+        self.assertRaises(Exception, idoprep.validate, None, 'test', 'test', 'test')
+
+    def test_validate_service(self):
+        """Verifiying validate(service) method"""
+        self.assertRaises(Exception, idoprep.validate, 'test', None, 'test', 'test')
+
+    def test_validate_product(self):
+        """Verifiying validate(product) method"""
+        self.assertRaises(Exception, idoprep.validate, 'test', 'test', None, 'test')
+
+    def test_validate_release(self):
+        """Verifiying validate(release) method"""
+        self.assertRaises(Exception, idoprep.validate, 'test', 'test', 'test', None) 
+
+    def test_get_s60_env_details_valid(self):
+        """Verifiying get_s60_env_details(valid args) method"""
+        (fileDes, cacheFilename) = tempfile.mkstemp()
+        resultname = idoprep.get_s60_env_details(self.server, "service", "product", "release_1", "(?:_\\d{3})?", cacheFilename , 1 , None)
+        os.close(fileDes)
+        os.unlink(cacheFilename)                        
+        assert resultname[0] is not None
+
+
+    def test_get_s60_env_details_invalid(self):
+        """Verifiying get_s60_env_details(invalid args) method"""
+        (fileDes, cacheFilename) = tempfile.mkstemp()
+        self.assertRaises(Exception, idoprep.get_s60_env_details, self.server, "service", "product", "dummy", "(?:_\\d{3})?", cacheFilename , None, None)
+        os.close(fileDes)
+        os.unlink(cacheFilename)                        
+
+
+    def test_get_version_valid(self):
+        """Verifiying get_version method"""
+        (fileDes, cacheFilename) = tempfile.mkstemp()
+        result = idoprep.get_s60_env_details(self.server, "service", "product", "release_1", "(?:_\\d{3})?", cacheFilename , None, None)
+        versionFilename = os.path.join(tempfile.gettempdir(), "s60_version.txt")
+        versionFile = open(versionFilename,'w')
+        resultname = os.path.basename(result[0])
+        versionFile.write(resultname)
+        versionFile.close()
+        version = idoprep.get_version(tempfile.gettempdir(), resultname)
+        os.close(fileDes)
+        os.unlink(cacheFilename)                        
+        os.unlink(versionFilename)                        
+        assert version.strip() == resultname
+
+    def test_get_version_invalid(self):
+        """Verifiying get_version(invalid args) method"""
+        version = idoprep.get_version('','test')
+        assert version is None
+
+    def test_create_ado_mapping(self):
+        """Verifiying create_ado_mapping method"""
+        (sysdefFileDes, sysdefConfig) = tempfile.mkstemp()
+        (adoFileDes, adoMappingFile) = tempfile.mkstemp()
+        (adoqtyFileDes, adoQualityMappingFile) = tempfile.mkstemp()
+        buildDrive = tempfile.gettempdir() 
+        adoQualityDirs = None
+        testSysdefFile = os.path.join(os.environ['TEST_DATA'], 'data', 'packageiad', 'layers.sysdef.xml')
+        os.write(sysdefFileDes, testSysdefFile)
+        os.close(sysdefFileDes)
+        idoprep.create_ado_mapping(sysdefConfig, adoMappingFile, adoQualityMappingFile, buildDrive, adoQualityDirs)
+        os.unlink(sysdefConfig)                        
+        os.close(adoFileDes)
+        os.close(adoqtyFileDes)
+        adoFile = open(adoMappingFile, 'r')
+        adoMappingFileContents = adoFile.readlines()
+        adoFile.close()
+        adoQtyFile = open(adoQualityMappingFile, 'r')
+        adoQualityMappingFileContents = adoQtyFile.readlines()
+        adoQtyFile.close()
+        os.unlink(adoMappingFile)                        
+        os.unlink(adoQualityMappingFile)                        
+        assert len(adoMappingFileContents) >= 1 and  len(adoQualityMappingFileContents) >= 1 
+
+    def test_create_ado_mapping_adoqualitydirs(self):
+        """Verifiying create_ado_mapping (with valid adoqualitydirs) method"""
+        (sysdefFileDes, sysdefConfig) = tempfile.mkstemp()
+        (adoFileDes, adoMappingFile) = tempfile.mkstemp()
+        (adoqtyFileDes, adoQualityMappingFile) = tempfile.mkstemp()
+        buildDrive = tempfile.gettempdir() 
+        testSysdefFile = os.path.join(os.environ['TEST_DATA'], 'data', 'packageiad', 'layers.sysdef.xml')
+        location = ido.get_sysdef_location(testSysdefFile)
+        adoQualityDirs = (os.path.normpath(os.path.join(buildDrive, os.environ['EPOCROOT'], location))) 
+        os.write(sysdefFileDes, testSysdefFile)
+        os.close(sysdefFileDes)
+        idoprep.create_ado_mapping(sysdefConfig, adoMappingFile, adoQualityMappingFile, buildDrive, adoQualityDirs)
+        os.unlink(sysdefConfig)                        
+        os.close(adoFileDes)
+        os.close(adoqtyFileDes)
+        adoFile = open(adoMappingFile, 'r')
+        adoMappingFileContents = adoFile.readlines()
+        adoFile.close()
+        adoQtyFile = open(adoQualityMappingFile, 'r')
+        adoQualityMappingFileContents = adoQtyFile.readlines()
+        adoQtyFile.close()
+        os.unlink(adoMappingFile)                        
+        os.unlink(adoQualityMappingFile)                        
+        assert len(adoMappingFileContents) >= 1 and  len(adoQualityMappingFileContents) >= 1 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_integration_ant.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,91 @@
+#============================================================================ 
+#Name        : test_integration_ant.py
+#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:
+#===============================================================================
+""" Testing integration.ant module """  
+
+import tempfile
+import os
+import logging
+import unittest
+import integration.ant
+
+_logger = logging.getLogger('test.integration.ant')
+logging.basicConfig(level=logging.INFO)
+
+class IntegrationAntTest(unittest.TestCase):
+    """Verifying integration ant module"""
+    def test_check_build_duplicates_task(self):
+        """Verifying check_build_duplicates_task method """
+        (fileDes, outputFilename) = tempfile.mkstemp()
+        os.close(fileDes)
+        integration.ant.check_build_duplicates_task(None, _emulateTask(), _emulateAttributes(outputFilename),  _emulateElements())
+        outputFile = open(outputFilename, 'r')
+        contents = outputFile.readlines() 
+        outputFile.close()
+        os.unlink(outputFilename)
+        assert len(contents) == 15
+    def test_check_build_duplicates_task_invalid(self):
+        """Verifying check_build_duplicates_task (invalid args) method"""
+        self.assertRaises(Exception, integration.ant.check_build_duplicates_task, None, None, None, None)
+
+class _emulateTask():
+    """Emulate task"""
+    def log(self, message):
+        """Emulate log method"""
+        pass
+
+class _emulateAttributes():
+    """Emulate attributes"""
+    def __init__(self, outputFilename):
+        self.outputFilename = outputFilename
+    def get(self, attribute):
+        """Emulate get method"""
+        return self.outputFilename
+
+class _emulateElements():
+    """Emulate elements"""
+    def get(self, fileset):
+        """Emulate get method"""
+        return _emulateFileset()
+
+class _emulateFileset():
+    """Emulate fileset"""
+    def get(self, eid):
+        """Emulate get method"""
+        return _emulateDirScanner()
+    def size(self):
+        """Emulate size method"""
+        return 1
+
+class _emulateDirScanner():
+    """Emulate dirscanner"""
+    def scan(self):
+        """Emulate scan method"""
+        pass
+    def getIncludedFiles(self):
+        """Emulate getIncludedFiles method """
+        if os.sep == '\\':
+            return ['test_build_compile.log']
+        elif os.sep == '/':
+            return ['test_build_compile_linux.log']
+    def getDirectoryScanner(self, project):
+        """Emulate getDirectoryScanner method """
+        return self
+    def getBasedir(self):
+        """Emulate getBasedir method """
+        return os.path.join(os.environ['TEST_DATA'], 'data', 'compile', 'logs')
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_log2xml.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,56 @@
+#============================================================================ 
+#Name        : test_log2xml.py 
+#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:
+#===============================================================================
+
+""" Acceptance tests for freedisk.py
+
+"""
+
+import unittest
+import logging
+import os
+import log2xml
+from xml.dom import minidom
+import tempfile
+
+logger = logging.getLogger('test.log2xml')
+
+
+class Log2XMLTest(unittest.TestCase):
+
+    def test_log_conversion(self):
+        """
+        Convert a log into xml.
+        """
+        logfile = os.path.join(os.environ['TEST_DATA'], 'data', 'log2xml_test.log')
+        testfile = os.path.join(tempfile.gettempdir(), "log2xml_test.xml")
+        log2xml.convert(logfile, testfile)        
+        minidom.parse(testfile)        
+
+    def test_log_utf16_conversion(self):
+        """
+        Convert a log into xml.
+        """
+        logfile = os.path.join(os.environ['TEST_DATA'], 'data', 'log2xml_failure.log')
+        testfile = os.path.join(tempfile.gettempdir(), "log2xml_test2.xml")
+        log2xml.convert(logfile, testfile)        
+        minidom.parse(testfile)        
+
+
+if __name__ == '__main__':
+    unittest.main()
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_misc.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,55 @@
+#============================================================================ 
+#Name        : test_misc.py 
+#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:
+#===============================================================================
+
+""" Miscellaneous tests.
+
+"""
+
+
+def test_optparse_import():
+    """Ensure 'optparse' module is not imported from within docutils.
+    
+    Docutils, as of docutils-0.5 at least, comes bundled with a version of the
+    `optparse` module that is older than what comes with Python 2.4 standard
+    library.
+    
+    This test, although implemented in a slightly unpythonic manner (thinking
+    pythonically, we should only care about a module's behaviour, not its
+    version), checks that the `optparse` module acquired without any import
+    magic is not the old buggy one from within docutils.
+    
+    """
+    import optparse
+    assert "docutils" not in optparse.__file__
+    
+def test_optparse_help():
+    """Test for this issue:
+    SF #960515: don't crash when generating help for callback
+    options that specify 'type', but not 'dest' or 'metavar'.from 
+    http://sourceforge.net/project/shownotes.php?release_id=278548&group_id=38019
+    """
+    
+    import optparse
+    
+    def testCallback(option, opt, value, parser):
+        pass
+    
+    parser = optparse.OptionParser()
+    parser.add_option("--x", help="x", callback=testCallback, action="callback", type="string", default=True)
+    parser.print_help()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_path_match.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,54 @@
+#============================================================================ 
+#Name        : test_path_match.py 
+#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:
+#===============================================================================
+
+""" path/match.py module tests. """
+
+import pathaddition.match
+
+
+def test_path_match_ant_match():
+    # Matching stuff
+    assert pathaddition.match.ant_match(r"CVS/Repository", r"**/CVS/*") == True
+    assert pathaddition.match.ant_match(r"org/apache/CVS/Entries", r"**/CVS/*") == True
+    assert pathaddition.match.ant_match(r"org/apache/jakarta/tools/ant/CVS/Entries", r"**/CVS/*") == True
+
+    assert pathaddition.match.ant_match(r"org/apache/jakarta/tools/ant/docs/index.html", r"org/apache/jakarta/**") == True
+    assert pathaddition.match.ant_match(r"org/apache/jakarta/test.xml", r"org/apache/jakarta/**") == True
+
+    assert pathaddition.match.ant_match(r"org/apache/CVS/Entries", r"org/apache/**/CVS/*") == True
+    assert pathaddition.match.ant_match(r"org/apache/jakarta/tools/ant/CVS/Entries", r"org/apache/**/CVS/*") == True
+
+    assert pathaddition.match.ant_match(r"/test/foo", r"**/test/**") == True
+    assert pathaddition.match.ant_match(r"/test", r"**/test/**") == True
+    
+    assert pathaddition.match.ant_match(r"C:\development\test\7zip.exe", r"**\*.exe") == True
+    assert pathaddition.match.ant_match(r"C:\development\test\7zip.exe", r"**\?zip.exe") == True
+    assert pathaddition.match.ant_match(r"C:\development\test\7zip.exe", r"**\?zip.*?") == True
+    assert pathaddition.match.ant_match(r"C:\development\test\7zip.exe", r"**/development/*/7zip.exe") == True
+    assert pathaddition.match.ant_match(r"C:\development\test\7zip.exe", r"C:\development\**") == True
+    assert pathaddition.match.ant_match(r"C:\deve.lopment\te.st\7zip.exe", r"**\*.exe") == True
+
+    # Not matching stuff
+    assert pathaddition.match.ant_match(r"org/apache/CVS/foo/bar/Entries", r"**/CVS/*") == False
+    assert pathaddition.match.ant_match(r"org/apache/xyz.java", r"org/apache/jakarta/**") == False
+    assert pathaddition.match.ant_match(r"org/apache/CVS/foo/bar/Entries", r"org/apache/**/CVS/*") == False
+
+    assert pathaddition.match.ant_match(r"C:\development\test\7zip.exe", r"**/foo/**\?zip.*?") == False
+    
+    
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_pathaddition_relative.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,48 @@
+#============================================================================ 
+#Name        : test_pathaddition_relative.py 
+#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:
+#===============================================================================
+
+""" path/match.py module tests. """
+
+import pathaddition.relative
+import os
+
+
+def test_commonprefix():
+    paths = ['E:/Build_E/ido_wa/ido_lcdo_mcl_product_52_ec/LC_Domain/LC_Domain/localconnectivity',
+             'E:/Build_E/ido_wa/ido_lcdo_mcl_product_52_ec/LC_Domain_osext/LC_Domain_osext/localconnectivityextensions',
+             'E:/Build_E/ido_wa/ido_lcdo_mcl_product_52_ec/LC_Domain_osext/LC_Domain_osext/localconnectivityextensions/src',
+             'E:/Build_E/ido_wa/different_root/LC_Domain_osext/LC_Domain_osext/localconnectivityextensions/src',
+             ]
+
+    paths2 = ['Y:/Build_E']
+    paths2.extend(paths)
+
+    # basic tests
+    # empty list => empty string 
+    assert pathaddition.relative.commonprefix([]) == ''
+    # one element list => return the element
+    assert pathaddition.relative.commonprefix(['foo']) == 'foo'
+    
+    print pathaddition.relative.commonprefix([paths[0], paths[1]])
+    assert os.path.normpath(pathaddition.relative.commonprefix([paths[0], paths[1]])) == os.path.normpath('E:/Build_E/ido_wa/ido_lcdo_mcl_product_52_ec')
+
+    assert os.path.normpath(pathaddition.relative.commonprefix(paths)) == os.path.normpath('E:/Build_E/ido_wa')
+
+    assert pathaddition.relative.commonprefix(paths2) == ''
+    
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_policy_validator.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,150 @@
+#============================================================================ 
+#Name        : test_policy_validator.py 
+#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:
+#===============================================================================
+
+"""Test the integration.quality module."""
+
+import os
+import unittest
+import sys
+import time
+import shutil
+import tempfile
+import integration.quality
+import logging
+
+_logger = logging.getLogger('test.archive')
+    
+    
+_test_file_paths = [
+    's60/Distribution.Policy.S60',
+    's60/ADO/Distribution.Policy.S60',
+    's60/ADO/group/Distribution.Policy.S60',
+    's60/ADO/internal/Distribution.Policy.S60',
+    's60/ADO/internal/good/Distribution.Policy.S60',
+    's60/ADO/internal/bad/Distribution.Policy.S60',
+    's60/ADO/tsrc/Distribution.Policy.S60',
+    's60/ADO/tsrc/group/Distribution.Policy.S60',
+    's60/ADO/tsrc/private/Distribution.Policy.S60',
+    's60/component_public/Distribution.Policy.S60',
+    's60/component_public/component_public_file.txt',
+    's60/component_private/Distribution.Policy.S60',
+    's60/component_private/component_private_file.txt',    
+    's60/missing/to_be_removed_9999.txt',
+    's60/missing/subdir/Distribution.Policy.S60',
+    's60/missing/subdir/to_be_removed_9999.txt',
+    's60/invalid/Distribution.Policy.S60',
+    's60/invalid/comment/Distribution.Policy.S60',
+    's60/invalid/utf16/Distribution.Policy.S60',
+    's60/invalid/letter/Distribution.Policy.S60',
+    's60/new_rules/',
+    's60/new_rules/subdir1/invalid.txt',
+    's60/new_rules/subdir2/',
+    ]
+
+_test_file_content = {
+    's60/Distribution.Policy.S60': '0',
+    's60/missing/subdir/Distribution.Policy.S60' : '0',
+    's60/component_public/Distribution.Policy.S60': '0',
+    's60/component_private/Distribution.Policy.S60': '1',
+    's60/ADO/Distribution.Policy.S60': '0',
+    's60/ADO/group/Distribution.Policy.S60': '0',
+    's60/ADO/internal/Distribution.Policy.S60': '1',
+    's60/ADO/internal/good/Distribution.Policy.S60': '1',
+    's60/ADO/internal/bad/Distribution.Policy.S60': '0',
+    's60/ADO/tsrc/Distribution.Policy.S60': '950',
+    's60/ADO/tsrc/group/Distribution.Policy.S60': '0',
+    's60/ADO/tsrc/private/Distribution.Policy.S60': '0',
+    's60/invalid/Distribution.Policy.S60': '0',
+    's60/invalid/comment/Distribution.Policy.S60': '0 ; some comment',
+    's60/invalid/utf16/Distribution.Policy.S60': '\xFF\xFE\x30\x00\x0D\x00\x0D\x00\x0D\x00\x0A\x00',
+    's60/invalid/letter/Distribution.Policy.S60': '9A0',
+    }
+    
+class PolicyValidatorTest(unittest.TestCase):
+    EXEC_FILE = "archive_create.ant.xml"
+    
+    def _testpath(self, subpath):
+        """ Normalised path for test paths. """
+        return os.path.normpath(os.path.join(self.root_test_dir, subpath))
+
+    def setUp(self):
+        """ Setup files test config. 
+        
+        This creates a number of empty files in a temporary directory structure
+        for testing various file selection and archiving operations.
+        """
+        #print 'setup_module()'
+        #print _test_file_content.keys()
+        self.root_test_dir = tempfile.mkdtemp()
+        for child_path in _test_file_paths:
+            path = os.path.join(self.root_test_dir, child_path)
+            path_dir = path
+            path_dir = os.path.dirname(path)
+            
+            if (not os.path.exists(path_dir)):
+                _logger.debug('Creating dir:  ' + path_dir)
+                os.makedirs(path_dir)
+    
+            if(not path.endswith('/') and not path.endswith('\\')):
+                _logger.debug('Creating file: ' + path)
+                handle = open(path, 'w')
+                # Write any file content that is needed
+                if _test_file_content.has_key(child_path):
+                    handle.write(_test_file_content[child_path])
+                handle.close()
+    
+    def tearDown(self):
+        """ Teardown test config. """
+        shutil.rmtree(self.root_test_dir)
+
+    def test_policy_validator(self):
+        """ Testing the policy validator behaviour. """
+        validator = integration.quality.PolicyValidator()
+        errors = [] 
+        errors.extend(validator.validate(self._testpath('s60')))
+        errors.sort()
+        print errors
+        assert len(errors) == 5
+
+        
+        # Invalid encoding: contains other stuff than policy id.
+        assert errors[0][0] == "invalidencoding"
+        assert errors[0][1].lower() == self._testpath('s60' + os.sep + 'invalid' + os.sep + 'comment' + os.sep + 'distribution.policy.s60').lower()
+        assert errors[0][2] == None
+        
+        # Invalid encoding: ID contains a letter.
+        assert errors[1][0] == "invalidencoding"
+        assert errors[1][1].lower() == self._testpath('s60' + os.sep + 'invalid' + os.sep + 'letter' + os.sep + 'distribution.policy.s60').lower()
+        assert errors[1][2] == None
+        
+        # Invalid encoding: not ascii.
+        assert errors[2][0] == "invalidencoding"
+        assert errors[2][1].lower() == self._testpath('s60' + os.sep + 'invalid' + os.sep + 'utf16' + os.sep + 'distribution.policy.s60').lower()
+        assert errors[2][2] == None
+        
+        # Policy file is missing
+        assert errors[3][0] == "missing"
+        assert errors[3][1].lower() == self._testpath('s60' + os.sep + 'missing').lower()
+        assert errors[3][2] == None
+
+        # Policy file is missing
+        assert errors[4][0] == "missing"
+        assert errors[4][1].lower() == self._testpath('s60' + os.sep + 'new_rules' + os.sep + 'subdir1').lower()
+        assert errors[4][2] == None
+        
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_preparation.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,588 @@
+#============================================================================ 
+#Name        : test_preparation.py
+#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:
+#===============================================================================
+""" Testing preparation module """  
+
+import tempfile
+from shutil import rmtree
+import os
+import logging
+import unittest
+import sys
+import preparation
+import ccm
+import ccm.extra
+
+_logger = logging.getLogger('test.preparation')
+logging.basicConfig(level=logging.INFO)
+_disable_is_relative = False
+_disable_sub_projects = False
+
+def _get_role_for_status(session, status): 
+    """ Emulate get_role_for_status method for unit testing """
+    pass
+
+def _get_role_for_purpose(session, purpose): 
+    """ Emulate get_role_for_purpose method for unit testing """
+    pass
+
+def _sessionPool(username, password, engine, dbpath, database, size, opener):
+    """ Emulate ccm.SessionPool method for unit testing """
+    return _emulateSession()
+
+def _fastSnapshot(project, target_dir, threads): 
+    """ Emulate ccm.extra.FastSnapshot method for unit testing """
+    "Snapshot Created"
+
+def _updateResultSimple(session): 
+    """ Emulate ccm.UpdateResultSimple method for unit testing """
+    pass
+
+def _fastMaintainWorkArea(project, dir, projectname, threads): 
+    """ Emulate ccm.extra.FastMaintainWorkArea method for unit testing """
+    pass
+
+def _is_same_family(self, project): 
+    """ Emulate project.is_same_family method for unit testing """
+    pass
+
+def _checkoutException( self, session, version, purpose ): 
+    """ Emulate project.checkout method for unit testing """
+    raise ccm.CCMException('unit testing')
+
+def _checkoutNone( self, session, version, purpose ): 
+    """ Emulate project.checkout method for unit testing """
+    return _checkout(True) 
+
+def _get_workarea_info_exception(self, path):
+    """ Emulate session.get_workarea_info method for unit testing """
+    raise ccm.CCMException('unit testing')
+
+
+class PreparationTest(unittest.TestCase):
+    """Verifying preparation module"""
+    def setUp(self):
+
+        self._sessionPool_safe = ccm.SessionPool 
+        self._getRoleForStatus_safe = ccm.get_role_for_status 
+        self._getRolesForPurpose_safe = ccm.get_role_for_purpose 
+        self._extraFastSnapshot_safe = ccm.extra.FastSnapshot 
+        self._updateResultSimple_safe = ccm.UpdateResultSimple 
+        self._extra_FastMaintainWorkArea_safe = ccm.extra.FastMaintainWorkArea 
+
+        ccm.SessionPool = _sessionPool
+        ccm.get_role_for_status = _get_role_for_status
+        ccm.get_role_for_purpose = _get_role_for_purpose
+        ccm.extra.FastSnapshot = _fastSnapshot
+        ccm.UpdateResultSimple = _updateResultSimple
+        ccm.extra.FastMaintainWorkArea = _fastMaintainWorkArea
+        """Setup a temporary project directory for unit testing"""
+        self.dirname = os.path.join(tempfile.gettempdir(), 'pyUnitTestHeliumProject')
+        self.filename = os.path.join(self.dirname, 'project.version')
+        if os.path.exists(self.dirname): 
+            rmtree(self.dirname)
+
+    def tearDown(self):
+        """Remove the temporary project directory after unit testing complete """
+        ccm.SessionPool = self._sessionPool_safe 
+        ccm.get_role_for_status = self._getRoleForStatus_safe 
+        ccm.get_role_for_purpose = self._getRolesForPurpose_safe 
+        ccm.extra.FastSnapshot = self._extraFastSnapshot_safe 
+        ccm.UpdateResultSimple = self._updateResultSimple_safe 
+        ccm.extra.FastMaintainWorkArea = self._extra_FastMaintainWorkArea_safe 
+        if os.path.exists(self.dirname): 
+            rmtree(self.dirname)
+
+    def test_find_valid(self):
+        """Verifying find (valid args) method"""
+        seq = range(2) 
+        assert preparation.find(dummyFunction, seq) is not None
+
+    def test_find_invalid(self):
+        """Verifying find (invalid args) method"""
+        seq = range(2, 5) 
+        assert preparation.find(dummyFunction, seq) is None
+
+    def test_prep_builder_sshot_check_valid_1(self):
+        """Verifying check (valid args - snapshot with database) method"""
+        builder = preparation.PreparationBuilder([_config('snapshot')], None, None, None)
+        assert builder.check() is None
+
+    def test_prep_builder_sshot_check_valid_2(self):
+        """Verifying check (valid args - snapshot with host + dbpath) method"""
+        confObj = _config('snapshot')
+        del confObj['database']
+        confObj['host'] = None
+        confObj['dbpath'] = None
+        builder = preparation.PreparationBuilder([confObj], None, None, None)
+        assert builder.check() is None
+
+    def test_prep_builder_sshot_check_expn_1(self):
+        """Verifying check (snapshot - exception 1) method"""
+        confObj = _config('snapshot')
+        del confObj['database']
+        builder = preparation.PreparationBuilder([confObj], None, None, None)
+        self.assertRaises(Exception, builder.check)
+
+    def test_prep_builder_sshot_check_expn_2(self):
+        """Verifying check (snapshot - exception 2) method"""
+        confObj = _config('snapshot')
+        del confObj['database']
+        confObj['host'] = None
+        builder = preparation.PreparationBuilder([confObj], None, None, None)
+        self.assertRaises(Exception, builder.check)
+
+    def test_prep_builder_sshot_check_expn_3(self):
+        """Verifying check (snapshot - exception 3) method"""
+        builder = preparation.PreparationBuilder([_config('snapshot')], None, None, None)
+        safe = _project.exists
+        _project.exists = lambda self: False
+        self.assertRaises(Exception, builder.check)
+        _project.exists = safe
+
+    def test_prep_builder_sshot_gtcnt_valid_1(self):
+        """Verifying get_content (valid args - snapshot - 1) method"""
+        builder = preparation.PreparationBuilder([_config('snapshot')], None, None, None)
+        builder.get_content()
+        versionFile = open(self.filename, 'r')
+        content = versionFile.readlines()
+        versionFile.close()
+        assert len(content) >= 1
+            
+    def test_prep_builder_sshot_gtcnt_valid_2(self):
+        """Verifying get_content (valid args - snapshot - 2) method"""
+        confObj = _config('snapshot')
+        confObj['threads'] = 2 
+        builder = preparation.PreparationBuilder([confObj], None, None, None)
+        builder.get_content()
+        versionFile = open(self.filename, 'r')
+        content = versionFile.readlines()
+        versionFile.close()
+        assert len(content) >= 1
+
+    def test_prep_builder_sshot_gtcnt_expn_1(self):
+        """Verifying get_content (exception - snapshot - 1) method"""
+        os.makedirs(self.dirname)
+        builder = preparation.PreparationBuilder([_config('snapshot')], None, None, None)
+        self.assertRaises(Exception, builder.get_content)
+
+    def test_prep_builder_ckt_check_valid(self):
+        """Verifying check (valid args - checkout) method"""
+        confObj = _config('checkout')
+        confObj['tasks'] = [ 'x', 'y' , 'z']
+        confObj['folders'] =  'x'
+        confObj['subbaselines'] = [ 'x', 'y' , 'z']
+        confObj['purpose'] = "samplePurpose"
+        builder = preparation.PreparationBuilder([confObj], None, None, None)
+        assert builder.check() is None
+
+    def test_prep_builder_ckt_check_expn_1(self):
+        """Verifying check (exception - checkout - 1) method"""
+        confObj = _config('checkout')
+        del confObj['release']
+        builder = preparation.PreparationBuilder([confObj], None, None, None)
+        self.assertRaises(Exception, builder.check)
+
+    def test_prep_builder_ckt_check_expn_2(self):
+        """Verifying check (exception - checkout - 2) method"""
+        confObj = _config('checkout')
+        confObj['folders'] = [ 'x', 'y' , 'z']
+        confObj['purpose'] = "PurposeThatDoesnotExist"
+        builder = preparation.PreparationBuilder([confObj], None, None, None)
+        self.assertRaises(Exception, builder.check)
+
+    def test_prep_builder_ckt_gtcnt_valid_1(self):
+        """Verifying get_content (valid args - checkout - 1) method"""
+        confObj = _config('checkout')
+        builder = preparation.PreparationBuilder([confObj], None, None, None)
+        result = builder.get_content() 
+        assert result is None
+
+    def test_prep_builder_ckt_gtcnt_valid_2(self):
+        """Verifying get_content (valid args - checkout - 2) method"""
+        if not os.path.exists(self.dirname): 
+            os.makedirs(self.dirname)
+        versionFile = open(self.filename , 'w+')
+        versionFile.close()
+        confObj = _config('checkout')
+        confObj['purpose'] = "samplePurpose"
+        confObj['version'] = "1"
+        confObj['use.reconfigure.template'] = "true"
+        confObj['threads'] = 2 
+        global _disable_is_relative
+        _disable_is_relative = True
+        builder = preparation.PreparationBuilder([confObj], None, None, None)
+        result = builder.get_content() 
+        _disable_is_relative = False
+        assert result is None
+
+    def test_prep_builder_ckt_gtcnt_valid_3(self):
+        """Verifying get_content (valid args - checkout - 3) method"""
+        if not os.path.exists(self.dirname): 
+            os.makedirs(self.dirname)
+        versionFile = open(self.filename , 'w+')
+        versionFile.close()
+        confObj = _config('checkout')
+        confObj['purpose'] = "samplePurpose"
+        confObj['version'] = "1"
+        confObj['use.reconfigure.template'] = "true"
+        confObj['fix.missing.baselines'] = "true"
+        confObj['threads'] = 2 
+        builder = preparation.PreparationBuilder([confObj], None, None, None)
+        global _disable_sub_projects 
+        _disable_sub_projects = True
+        result = builder.get_content() 
+        _disable_sub_projects = False
+        assert result is None
+
+    def test_prep_builder_ckt_gtcnt_valid_4(self):
+        """Verifying get_content (valid args - checkout - 4) method"""
+        if not os.path.exists(self.dirname): 
+            os.makedirs(self.dirname)
+        versionFile = open(self.filename , 'w+')
+        versionFile.close()
+        confObj = _config('checkout')
+        confObj['purpose'] = "samplePurpose"
+        confObj['version'] = "1"
+        confObj['sync'] = "true"
+        confObj['replace.subprojects'] = "true"
+        confObj['update.failonerror'] = "true"
+        confObj['fix.missing.baselines'] = "true"
+        confObj['show.conflict.objects'] = "true"
+        confObj['show.conflicts'] = "true"
+        confObj['subbaselines'] = [ 'x', 'y' , 'z']
+        confObj['tasks'] = [ 'x', 'y' , 'z']
+        confObj['folders'] = [ 'x', 'y' , 'z']
+        builder = preparation.PreparationBuilder([confObj], None, None, None)
+        result = builder.get_content() 
+        assert result is None
+
+
+    def test_prep_builder_ckt_gtcnt_expn_1(self):
+        """Verifying get_content (exception - checkout - 1) method"""
+        if not os.path.exists(self.dirname): 
+            os.makedirs(self.dirname)
+        versionFile = open(self.filename , 'w+')
+        versionFile.close()
+        confObj = _config('checkout')
+        confObj['purpose'] = "samplePurpose"
+        confObj['version'] = "1"
+        confObj['use.reconfigure.template'] = "true"
+        builder = preparation.PreparationBuilder([confObj], None, None, None)
+        safe = _project.checkout 
+        _project.checkout = _checkoutException
+        self.assertRaises(ccm.CCMException, builder.get_content)
+        _project.checkout  = safe
+
+    def test_prep_builder_ckt_gtcnt_expn_2(self):
+        """Verifying get_content (exception - checkout - 2) method"""
+        if not os.path.exists(self.dirname): 
+            os.makedirs(self.dirname)
+        versionFile = open(self.filename , 'w+')
+        versionFile.close()
+        confObj = _config('checkout')
+        confObj['purpose'] = "samplePurpose"
+        confObj['version'] = "1"
+        confObj['use.reconfigure.template'] = "true"
+        safe = _project.checkout 
+        _project.checkout = _checkoutNone
+        builder = preparation.PreparationBuilder([confObj], None, None, None)
+        self.assertRaises(Exception, builder.get_content)
+        _project.checkout  = safe
+
+    def test_prep_builder_ckt_gtcnt_expn_3(self):
+        """Verifying get_content (exception - checkout - 3) method"""
+        if not os.path.exists(self.dirname): 
+            os.makedirs(os.path.join(self.dirname, 'pyUnitTestHeliumProject'))
+        confObj = _config('checkout')
+        confObj['purpose'] = "samplePurpose"
+        confObj['version'] = "1"
+        confObj['use.reconfigure.template'] = "true"
+        safe = _emulateSession.get_workarea_info 
+        _emulateSession.get_workarea_info = _get_workarea_info_exception
+        builder = preparation.PreparationBuilder([confObj], None, None, None)
+        result = builder.get_content() 
+        _emulateSession.get_workarea_info  = safe
+        assert result is None
+
+    def test_prep_builder_ckt_gtcnt_expn_4(self):
+        """Verifying get_content (expcetion - checkout - 4) method"""
+        if not os.path.exists(self.dirname): 
+            os.makedirs(self.dirname)
+        versionFile = open(self.filename , 'w+')
+        versionFile.close()
+        confObj = _config('checkout')
+        confObj['purpose'] = "samplePurpose"
+        confObj['version'] = "1"
+        confObj['sync'] = "true"
+        confObj['fix.missing.baselines'] = "true"
+        confObj['show.conflict.objects'] = "true"
+        confObj['show.conflicts'] = "true"
+        confObj['subbaselines'] = [ 'x', 'y' , 'z']
+        safe = _subProject.is_same_family  
+        builder = preparation.PreparationBuilder([confObj], None, None, None)
+        _subProject.is_same_family = _is_same_family
+        self.assertRaises(Exception, builder.get_content)
+        _subProject.is_same_family = safe
+
+    def test_prep_builder_update_gtcnt_valid(self):
+        """Verifying get_content (valid args - update) method"""
+        confObj = _config('update')
+        confObj['replace.subprojects'] = 'False'
+        confObj['update.failonerror'] = 'true'
+        builder = preparation.PreparationBuilder([confObj], None, None, None)
+        result = builder.get_content()
+        assert result is None
+
+    def test_prep_action_execute(self):
+        """Verifying execute method"""
+        assert preparation.PreparationAction(None, None).execute() is None
+
+def dummyFunction(item):
+    """Emulating a callback method"""
+    if item in range(2):
+        return True
+    return None
+
+class _config():
+    """Emulating configuration class"""
+    def __init__(self, type):
+        self.database = 'test'
+        self.type = type
+        self.name = 'test'
+        self.data = {'database': 'test'}
+        self.data['dir'] = tempfile.gettempdir()
+        self.data['release'] = None
+        self.threads = 1
+
+    def get_int(self, key, default_value):
+        """ Get a value as an int. """
+        try:
+            value = self.__getitem__(key)
+            return int(value)
+        except KeyError:
+            return default_value
+        
+    def get_boolean(self, key, default_value):
+        """ Get a value as a boolean. """
+        try:
+            value = self.__getitem__(key)
+            return value == "true" or value == "yes" or value == "1" 
+        except KeyError:
+            return default_value
+
+    def has_key(self, key):
+        """ Check if key exists. """
+        return self.data.has_key(key)
+
+    def __getitem__(self, key):
+        """ Get an item from the configuration via dictionary interface. """
+        return self.data[key]                
+
+    def __setitem__(self, key, value):
+        """ Set an item from the configuration via dictionary interface. """
+        self.data[key] = value               
+
+    def __delitem__(self, key):
+        """ Remove an item from the configuration via dictionary interface. """
+        del self.data[key]                
+
+
+class _emulateSession():
+    """Emulating session class"""
+    def __init__(self):
+        self.size = 1
+        self.role = 'developer'
+        self.data = {'samplePurpose': None }
+
+    def __getitem__(self, key):
+        """ Get an item from the configuration via dictionary interface. """
+        return self.data[key]                
+
+    def __setitem__(self, key, value):
+        """ Set an item from the configuration via dictionary interface. """
+        self.data[key] = value               
+
+    def __delitem__(self, key):
+        """ Remove an item from the configuration via dictionary interface. """
+        del self.data[key]                
+
+    def _get_role(self):
+        """Emulating session._get_role method"""
+        pass
+
+    def has_key(self, key):
+        """ Check if key exists. """
+        return self.data.has_key(key)
+
+    def create(self, fpn):
+        """Emulating session.create method"""
+        return _project()
+
+    def purposes(self):
+        """Emulating session.purposes method"""
+        return self
+
+    def get_workarea_info(self, path):   
+        """Emulating session.get_workarea_info method"""
+        return _getWorkAreaInfo()
+
+class _getWorkAreaInfo():
+    """Emulating work area info """
+    def __init__(self):
+        self.data = {'project': _project()}
+
+    def __getitem__(self, key):
+        """ Get an item from the configuration via dictionary interface. """
+        return self.data[key]    
+
+class _project():
+    """Emulating project class"""
+    def __init__(self):
+        global _disable_sub_projects
+        global _disable_is_relative
+        self.name = 'pyUnitTestHeliumProject'
+        self.objectname = '1'
+        self.data = {'status':None} 
+        self.data['project'] =  _subProject()
+        if _disable_is_relative:
+            self.data['is_relative'] =  None
+        self.data['release'] =  None
+        self.release = None
+        self.subprojects = []
+        if not _disable_sub_projects:
+            self.subprojects.extend([ _subProject(), _subProject()])
+        self.session = _emulateSession()
+        self.tasks =  [ 'x' , 'y', 'z' ]
+        self.folders = [ 'x' , 'y', 'z' ]
+
+    def __getitem__(self, key):
+        """ Get an item from the configuration via dictionary interface. """
+        return self.data[key]    
+
+    def __setitem__(self, key, value):
+        """ Set an item from the configuration via dictionary interface. """
+        self.data[key] = value               
+
+    def keys(self):
+        """ Get the list of item keys. """
+        return self.data.keys()
+
+    def exists(self):
+        """Emulating project.exists method"""
+        return True                
+
+    def snapshot(self, target_dir, status):
+        """Emulating project.snapshot method"""
+        print "Snapshot created"
+
+    def update(self, status, replace_subprojects, update_keepgoing, result): 
+        """Emulating project.update method"""
+        pass
+
+    def work_area(self, boolean1, boolean2, boolean3 = None, dir=None, projectname=None ):
+        """Emulating project.work_area method"""
+        pass
+
+    def conflict(self, boolean, conflictsobjects):
+        """Emulating project.conflict method"""
+        pass
+
+    def checkout(self, session, version, purpose):
+        """Emulating project.checkout method"""
+        return  _checkout()
+
+    def set_update_method(self, mode, boolean):
+        """Emulating project.set_update_method method"""
+        pass
+
+    def set_baseline(self, project, boolean):
+        """Emulating project.set_baseline method"""
+        pass
+
+    def remove_task(self, task):
+        """Emulating project.remove_task method"""
+        pass
+
+    def remove_folder(self, folder):
+        """Emulating project.remove_folder method"""
+        pass
+
+    def apply_update_properties(self, baseline): 
+        """Emulating project.apply_update_properties method"""
+        pass
+
+    def create_attribute(self, is_relative, boolean1, boolean2):
+        """Emulating project.create_attribute method"""
+        pass
+
+    def sync(self, boolean1, boolean2):
+        """Emulating project.sync method"""
+        pass
+
+    def conflicts(self, boolean1, boolean2):
+        """Emulating project.conflicts method"""
+        pass
+
+    def add_task(self, project):
+        """Emulating project.add_task method"""
+        pass
+
+    def add_folder(self, project):
+        """Emulating project.add_folder method"""
+        pass
+
+class _checkout():
+    """Emulating checkout project """
+    def __init__(self, noProject=None):
+        if noProject:
+            self.project = None
+        else:
+            self.project = _project()
+
+class _subProject():
+    """Emulating sub project """
+    def __init__(self):
+        self.name = 'pyUnitTestHeliumProject'
+        self.objectname = '1'
+        self.data = {'status':'test'} 
+        self.session = _emulateSession()
+
+    def __getitem__(self, key):
+        """ Get an item from the configuration via dictionary interface. """
+        return self.data[key]    
+
+    def keys(self):
+        """ Get the list of item keys. """
+        return self.data.keys()
+
+    def exists(self):
+        """Emulating sub project.exists """
+        return True                
+
+    def checkout(self, session, version, purpose, subprojects=None):
+        """Emulating sub project.checkout """
+        return  _checkout()
+
+    def is_same_family(self, project):
+        """Emulating sub project.is_same_family """
+        return True
+
+    def set_baseline(self, subbaseline, boolean1):
+        """Emulating sub project.set_baseline """
+        pass
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_relnotes_variants.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,42 @@
+#============================================================================ 
+#Name        : test_relnotes_variants.py 
+#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:
+#===============================================================================
+
+""" 
+Testing release notes variant related functionalities.
+"""
+
+import relnotes.variants
+import unittest
+import os
+
+class ParseInfoTest(unittest.TestCase):
+
+    def test_parsing(self):
+        filename = logfile = os.path.join(os.environ['TEST_DATA'], 'data', 'XX_rnd_rofs2_langpack_01_info.txt')
+        data = relnotes.variants.parseInfo(filename)
+        
+        print data
+        
+        assert len(data) == 4
+        assert data['name'] == 'langpack_01'
+        assert data['default'] == 'English (01)'
+        assert data['languages'] == ['English', 'French', 'German', 'Italian', 'Portuguese', 'Spanish']
+        assert data['language.ids'] == ['01', '02', '03', '05', '13', '04']
+
+        
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_searchnextdrive.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,47 @@
+#============================================================================ 
+#Name        : test_searchnextdrive.py 
+#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:
+#===============================================================================
+
+""" Test searchnextdrive module. """
+import os
+from tempfile import mkdtemp
+
+if os.sep == '\\':
+    from searchnextdrive import search_next_free_drive
+    from fileutils import subst, unsubst
+import unittest
+
+class SearchNextDriveTest(unittest.TestCase):
+    """ Test search next drive script... """
+
+    def test_searchnextdrive(self):
+        """ Testing search next drive script... """
+        if os.sep == '\\':
+            freedrive1 = search_next_free_drive()
+            if freedrive1 != "Error: No free drive!":
+                mytmpdir = mkdtemp()
+                subst(freedrive1, mytmpdir)
+                freedrive2 = search_next_free_drive()
+                unsubst(freedrive1)
+                os.rmdir(mytmpdir)
+                if freedrive2 != "Error: No free drive!":
+                    self.assertNotEqual(freedrive1, freedrive2, "searchnextdrive.py couldn't find a valid free drive")
+                else:
+                    raise Exception("Couldn't find a valid free drive")
+            else:
+                raise Exception("Couldn't find a valid free drive")
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_session_provider.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,155 @@
+#============================================================================ 
+#Name        : test_session_provider.py 
+#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:
+#===============================================================================
+
+""" Test cases for ccm python toolkit.
+
+"""
+import unittest
+import sys
+import ccm
+import ccm.extra
+import os
+import logging
+import tempfile
+
+_logger = logging.getLogger('test.test_session_provider')
+logging.basicConfig(level=logging.INFO)
+
+class MockResultSession(ccm.AbstractSession):
+    """ Fake session used to test Result"""
+    def __init__(self, behave = {}, database="fakedb"):
+        ccm.AbstractSession.__init__(self, None, None, None, None)
+        self._behave = behave
+        self._database = database
+        self.dbpath = "/path/to/" + database
+        self._session_addr = "LOCALHOST:127.0.0.1:1234"
+    
+    def database(self):
+        _logger.info("running database from MockResultSession")
+        return self._database
+    
+    def execute(self, cmdline, result=None):
+        if result == None:
+            result = ccm.Result(self)        
+        if self._behave.has_key(cmdline):
+            result.statuserrors = 0  
+            result.output = self._behave[cmdline]
+        else:
+            result.status = -1  
+        return result
+
+class MockOpener(object):
+    def __init__(self):
+        self.failOnNewOpen = False
+    
+    def __call__(self, username=None, password=None, engine=None, dbpath=None, database=None, reuse=True):
+        assert self.failOnNewOpen == False, "This method should not be called again."
+        if database != "fakedb":
+            raise ccm.CCMException("Invalid database")
+        return MockResultSession()
+    
+class SessionProviderTest(unittest.TestCase):
+    """ Testing Results parsers. """
+    def test_get_valid_db(self):
+        """ Test the opening of a valid database. """
+        p = ccm.extra.SessionProvider(opener=MockOpener())
+        db = p.get(database="fakedb")
+        assert db is not None
+
+    def test_get_invalid_db(self):
+        """ Test the opening of an invalid database. """
+        p = ccm.extra.SessionProvider(opener=MockOpener())
+        try:            
+            db = p.get(database="invaliddb")
+            assert False, "Should raise Exception when giving unexisting db.'"
+        except Exception, exc:
+            _logger.info(exc)
+        
+        
+        
+class CachedSessionProviderTest(unittest.TestCase):
+    """ Testing Results parsers. """
+    session_cache = os.path.join(tempfile.mkdtemp(), 'session_cache.xml')
+    
+    def setUp(self):
+        if not os.path.exists(os.path.dirname(self.session_cache)):
+            os.makedirs(os.path.dirname(self.session_cache))
+        if os.path.exists(self.session_cache):
+            os.remove(self.session_cache)
+    
+    def tearDown(self):
+        if os.path.exists(self.session_cache):
+            os.remove(self.session_cache)
+    
+    def test_get_valid_db(self):
+        """ Test the opening of a valid database (cached). """
+        p = ccm.extra.CachedSessionProvider(opener=MockOpener())
+        db = p.get(database="fakedb")
+        assert db is not None
+
+    def test_get_invalid_db(self):
+        """ Test the opening of an invalid database (cached). """
+        p = ccm.extra.CachedSessionProvider(opener=MockOpener())
+        try:
+            db = p.get(database="invaliddb")
+            assert False, "Should raise Exception when giving unexisting db.'"
+        except Exception, exc:
+            _logger.info(exc)
+        
+    def test_open_session_twice(self):
+        """ Open session then free it then open it again... """
+        opener = MockOpener()
+        p = ccm.extra.CachedSessionProvider(opener=opener)
+        db = p.get(database="fakedb")
+        assert db is not None
+        db.close()
+        opener.failOnNewOpen = True
+        db2 = p.get(database="fakedb")
+        assert db2 is not None
+        
+    def test_write_cache(self):
+        p = ccm.extra.CachedSessionProvider(opener=MockOpener(), cache=self.session_cache)
+        db = p.get(database="fakedb")
+        assert db is not None
+        del db
+        p.save()
+        assert os.path.exists(self.session_cache), "Cache file %s is missing." % self.session_cache
+        
+    def test_write_and_load_cache(self):
+        
+        # patching the default implementation
+        def always_true(sid, db=None):
+            return True
+        ccm.session_exists = always_true
+        
+        p = ccm.extra.CachedSessionProvider(opener=MockOpener(), cache=self.session_cache)
+        db = p.get(database="fakedb")
+        assert db is not None
+        del db
+        p.close()
+        assert os.path.exists(self.session_cache), "Cache file %s is missing." % self.session_cache
+        
+        opener = MockOpener()
+        opener.failOnNewOpen = True
+        p = ccm.extra.CachedSessionProvider(opener=opener, cache=self.session_cache)        
+        assert 'fakedb' in p.cacheFree
+        assert len(p.cacheFree['fakedb']) == 1
+        
+        
+        
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_symbian_log.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,119 @@
+#============================================================================ 
+#Name        : test_symbian_log.py 
+#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:
+#===============================================================================
+
+import unittest
+import logging
+import StringIO
+import symbian.log
+
+
+# Uncomment this line to enable logging in this module, or configure logging elsewhere
+logging.basicConfig(level=logging.DEBUG)
+logger = logging.getLogger('test.symbian.log')
+
+test_output = """
+===-------------------------------------------------
+=== Stage=1
+===-------------------------------------------------
+=== Stage=1 started Fri Apr 18 21:09:55 2008
+=== Stage=1 == ncp_psw
+-- xcopy *.*  \\ /F /R /Y /S
+--- Client0 Executed ID 1
+++ Started at Fri Apr 18 21:09:55 2008
++++ HiRes Start 1208542195.09307
+Chdir \\psw\\ncp_psw\\psw
+S:\\psw\\ncp_psw\\psw\\s60\\tools\\customizationtool\\ct.ini -> S:\\s60\\tools\\customizationtool\\ct.ini
+S:\\psw\\ncp_psw\\psw\\s60\\tools\\customizationtool\\xml_data\\NCPAudioEqualizer_settings.xml -> S:\\s60\\tools\\customizationtool\\xml_data\\NCPAudioEqualizer_settings.xml
+S:\\psw\\ncp_psw\\psw\\s60\\tools\\customizationtool\\xml_data\\NCPHWGeneral_settings.xml -> S:\\s60\\tools\\customizationtool\\xml_data\\NCPHWGeneral_settings.xml
+S:\\psw\\ncp_psw\\psw\\s60\\tools\\customizationtool\\xml_data\\NCPLight_settings.xml -> S:\\s60\\tools\\customizationtool\\xml_data\\NCPLight_settings.xml
+S:\\psw\\ncp_psw\\psw\\s60\\tools\\customizationtool\\xml_data\\NCPSysAp_settings.xml -> S:\\s60\\tools\\customizationtool\\xml_data\\NCPSysAp_settings.xml
+S:\\psw\\ncp_psw\\psw\\s60\\tools\\customizationtool\\xml_data\\VariantFeatures.xml -> S:\\s60\\tools\\customizationtool\\xml_data\\VariantFeatures.xml
+6 File(s) copied
++++ HiRes End 1208542195.28056
+++ Finished at Fri Apr 18 21:09:55 2008
+=== Stage=1 finished Fri Apr 18 21:09:55 2008
+===-------------------------------------------------
+=== Stage=2
+===-------------------------------------------------
+=== Stage=2 started Fri Apr 18 21:29:33 2008
+=== Stage=2 == localconnectivityextensions
+-- abld export -keepgoing
+--- Client2 Executed ID 213
+++ Started at Fri Apr 18 21:29:33 2008
++++ HiRes Start 1208543373.36786
+Chdir \s60\osext\localconnectivityextensions\group
+  make -r  -k -f "\EPOC32\BUILD\s60\osext\localconnectivityextensions\group\EXPORT.make" EXPORT VERBOSE=-s KEEPGOING=-k
+copy "\s60\osext\localconnectivityextensions\lcext_dom\bluetooth_audio_adaptation_api\inc\btaudiostreaminputbase.h" "\epoc32\include\domain\osextensions\btaudiostreaminputbase.h"
+        1 file(s) copied.
+copy "\s60\osext\localconnectivityextensions\lcext_dom\bluetooth_power_management_api\inc\btpm.h" "\epoc32\include\domain\osextensions\btpm.h"
+        1 file(s) copied.
++++ HiRes End 1208543373.72723
+++ Finished at Fri Apr 18 21:29:33 2008
+=== Stage=2 == messagingextensions
+-- abld export -keepgoing
+--- Client6 Executed ID 217
+++ Started at Fri Apr 18 21:29:33 2008
++++ HiRes Start 1208543373.36786
+Chdir \s60\osext\messagingextensions\group
+  make -r  -k -f "\EPOC32\BUILD\s60\osext\messagingextensions\group\EXPORT.make" EXPORT VERBOSE=-s KEEPGOING=-k
+Creating \epoc32\include\domain\osextensions\loc\sc
+Creating \epoc32\rom\include\language\osext
+copy "\s60\osext\messagingextensions\msgbranched\rom\messageserver_rsc.iby" "\epoc32\rom\include\language\osext\messageserver_rsc.iby"
+        1 file(s) copied.
+copy "\s60\osext\messagingextensions\msgbranched\rom\gtemailmtmResources.iby" "\epoc32\rom\include\language\osext\gtemailmtmResources.iby"
+        1 file(s) copied.
+copy "\s60\osext\messagingextensions\msgbranched\messaging\email\clientmtms\loc\imcm.loc" "\epoc32\include\domain\osextensions\loc\sc\imcm.loc"
+        1 file(s) copied.
+copy "\s60\osext\messagingextensions\msgbranched\messaging\email\clientmtms\loc\imcm_default_charset.loc" "\epoc32\include\domain\osextensions\loc\sc\imcm_default_charset.loc"
+        1 file(s) copied.
+copy "\s60\osext\messagingextensions\msgbranched\messaging\framework\server\loc\msgs.loc" "\epoc32\include\domain\osextensions\loc\sc\msgs.loc"
+        1 file(s) copied.
++++ HiRes End 1208543373.80535
+++ Finished at Fri Apr 18 21:29:33 2008
+=== Stage=2 finished Fri Apr 18 21:09:55 2008
+"""
+
+
+
+class Parser(symbian.log.Parser):
+    def __init__(self, content=StringIO.StringIO(test_output)):        
+        symbian.log.Parser.__init__(self, content)
+        self.stages = []
+        self.tasks = []
+
+    def start_stage(self, name, time):
+        logger.debug(name) 
+        self.stages.append(name)
+
+    def task(self, name, cmdline, dir, output):
+        logger.debug("%s, %s, %s, %s" % (name, cmdline, dir, output)) 
+        self.tasks.append({'name': name, 'cmdline': cmdline, 'dir': dir, 'output': output})
+
+
+class TestSymbianLog(unittest.TestCase):
+    """ Test cases for Helium Symbian log parser. """
+    
+    def test_parser(self):
+        """ Test the parser
+        """
+        parser = Parser()
+        parser.parse()
+        assert len(parser.stages) == 2
+        assert len(parser.tasks) == 3
+        
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_symbian_raptor.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,44 @@
+#============================================================================ 
+#Name        : test_symbian_raptor.py 
+#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:
+#===============================================================================
+
+
+import unittest
+import logging
+import os
+import symbian.raptor
+
+logging.basicConfig(level=logging.DEBUG)
+logger = logging.getLogger('test.symbian.raptor')
+
+class TestSymbianRaptor(unittest.TestCase):
+    """ Test cases for Helium Symbian raptor module. """
+    
+    def test_raptor_installation_path(self):
+        """ Test raptor installation when SBS_HOME is not set. """
+        if "SBS_HOME" in os.environ: 
+            del os.environ["SBS_HOME"]
+        if os.path.sep == '\\':
+            assert symbian.raptor.getSBSHome() != None
+
+
+    def test_raptor_installation_path_home(self):
+        """ Test raptor installation when SBS_HOME is set. """
+        os.environ["SBS_HOME"] = r"c:/raptor"
+        assert symbian.raptor.getSBSHome() == r"c:/raptor"
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_symrec.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,249 @@
+#============================================================================ 
+#Name        : test_symrec.py 
+#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:
+#===============================================================================
+
+""" ant.py module tests. """
+
+
+import symrec
+import logging
+import os
+import tempfile
+from xml.dom.minidom import *
+
+logger = logging.getLogger("test.symrec")
+logging.basicConfig()
+logger.setLevel(logging.DEBUG)
+
+def test_symrec_creation():
+    """ Test metadata generation functions. """
+    metadata = symrec.ReleaseMetadata("release_metadata.xml",
+                                   service="myservice",
+                                   product="myproduct",
+                                   release="myrelease")
+    metadata.add_package(name="my_archive.zip")
+    metadata.add_package(name="my_archive2.zip", filters=['foo', 'bar'])
+    logger.debug(metadata.xml())
+    print metadata.service
+    assert metadata.service == "myservice"
+    assert metadata.product == "myproduct"
+    assert metadata.release == "myrelease"
+    assert metadata.dependsof_service == None
+    assert metadata.dependsof_product == None
+    assert metadata.dependsof_release == None
+    # Package validation
+    assert metadata.keys() == ['my_archive.zip', 'my_archive2.zip']
+    assert metadata['my_archive.zip'] == {'type': u'zip', 'extract': u'single', 'default': True, 'filters': [], 's60filter':[], 'md5checksum': None, 'size': None}
+    assert metadata['my_archive2.zip'] == {'type': u'zip', 'extract': u'single', 'default': True, 'filters': ['foo', 'bar'], 's60filter': ['foo', 'bar'], 'md5checksum': None, 'size': None}
+
+def test_symrec_loading():
+    """ Test loading generated metadata. """
+    filename = os.path.join(os.environ['TEST_DATA'], "data/symrec", "generated_release_metadata.xml")    
+    metadata = symrec.ReleaseMetadata(filename)
+    assert metadata.dependsof_service == None
+    assert metadata.dependsof_product == None
+    assert metadata.dependsof_release == None
+    print metadata.keys()
+    assert metadata.keys() == [u's60_app_organizer_clock.zip', u's60_app_organizer_clock_binary.zip', u's60_mw_classicui_and_app_radio.zip', u's60_mw_classicui_and_app_radio_internal.zip']
+    for name in metadata.keys():
+        print metadata[name]
+        assert metadata[name]['md5checksum'] == None
+        assert metadata[name]['size'] == None
+        assert metadata[name]['type'] == "zip"
+                           
+def test_symrec_update():
+    """ Testing symrec MD5updater class. """
+    filename = os.path.join(os.environ['TEST_DATA'], "data/symrec/GRACE", "service/product/release_1/release_metadata.xml")
+    updatemd5 = symrec.MD5Updater(filename)
+    updatemd5.update()
+    print updatemd5['test1.zip']['md5checksum']
+    print updatemd5['test2.zip']['md5checksum']
+    assert updatemd5['test1.zip']['md5checksum'] == "29b6ddc0265958641949c15e5c16c580"
+    assert updatemd5['test2.zip']['md5checksum'] == "433fd286bcf7e55be9d0e7e88f0cd84c"
+    assert updatemd5['test1.zip']['size'] == "112"
+    assert updatemd5['test2.zip']['size'] == "112"
+
+
+def test_symrec_releaseinfo_modification():
+    """ Testing symrec release information modifications. """
+    filename = os.path.join(os.environ['TEST_DATA'], "data/symrec/GRACE", "service/product/release_1/release_metadata.xml")
+    metadata = symrec.ReleaseMetadata(filename)
+    metadata.service = "test_service"
+    metadata.product = "test_product"
+    metadata.release = "test_release"
+    assert metadata.service == "test_service"
+    assert metadata.product == "test_product"
+    assert metadata.release == "test_release"
+    
+    metadata.dependsof_service = "test_service_dep"
+    metadata.dependsof_product = "test_product_dep"
+    metadata.dependsof_release = "test_release_dep"
+    assert metadata.dependsof_service == "test_service_dep"
+    assert metadata.dependsof_product == "test_product_dep"
+    assert metadata.dependsof_release == "test_release_dep"
+
+      
+def test_release_validator():
+    """ Testing release metadata xml validator. """
+    validator = symrec.ValidateReleaseMetadata(os.path.join(os.environ['TEST_DATA'], "data/symrec/GRACE",
+                                                            "service/product/release_1/release_metadata.xml"))
+    assert validator.is_valid() == True
+
+    validator = symrec.ValidateReleaseMetadata(os.path.join(os.environ['TEST_DATA'], "data/symrec/GRACE",
+                                                            "service/product/release_2/release_metadata.xml"))
+    assert validator.is_valid() == False
+
+    validator = symrec.ValidateReleaseMetadata(os.path.join(os.environ['TEST_DATA'], "data/symrec/GRACE",
+                                                            "service/product/release_1_001/release_metadata.xml"))
+    assert validator.is_valid() == True
+    
+    validator = symrec.ValidateReleaseMetadata(os.path.join(os.environ['TEST_DATA'], "data/symrec/GRACE",
+                                                            "service/product/release_1_001/release_metadata_1.xml"))
+    assert validator.is_valid() == True
+
+    validator = symrec.ValidateReleaseMetadata(os.path.join(os.environ['TEST_DATA'], "data/symrec/GRACE",
+                                                            "service/product/release_1_002/release_metadata.xml"))
+    assert validator.is_valid() == True
+    
+    validator = symrec.ValidateReleaseMetadata(os.path.join(os.environ['TEST_DATA'], "data/symrec/GRACE",
+                                                            "service/product/release_5/release_metadata.xml"))
+    assert validator.is_valid() == True
+    validator = symrec.ValidateReleaseMetadata(os.path.join(os.environ['TEST_DATA'], "data/symrec/GRACE",
+                                                            "service/product/release_6/release_metadata.xml"))
+    assert validator.is_valid() == False
+def test_xml_merge():
+    """ Testing the merge of metadata files. """
+    merger = symrec.MetadataMerger(os.path.join(os.environ['TEST_DATA'], "data/symrec/merge/main_metadata_1.xml"))
+    merger.merge(os.path.join(os.environ['TEST_DATA'], "data/symrec/merge/main_metadata_2.xml"))
+    merger.merge(os.path.join(os.environ['TEST_DATA'], "data/symrec/merge/main_metadata_3.xml"))
+    logger.debug(merger.xml())
+    output = open(os.path.join(tempfile.gettempdir(), "release_data.xml"), "w+")
+    output.write(merger.xml())
+    output.close()
+    
+    metadata = symrec.ReleaseMetadata(os.path.join(tempfile.gettempdir(), "release_data.xml"))
+    logger.debug(metadata.keys())
+    assert len(metadata.keys()) == 4
+    assert metadata.keys() == [u'test1.zip', u'test2.zip', u'test3_1.zip', u'test3_2.zip']
+    
+    
+
+def test_symrec_loading_sp_invalid():
+    """ Test loading generated metadata. """
+    filename = os.path.join(os.environ['TEST_DATA'], "data/symrec/GRACE/service/product/release_1_001", "release_metadata.xml")    
+    metadata = symrec.ReleaseMetadata(filename)
+    assert metadata.service == "service"
+    assert metadata.product == "product"
+    assert metadata.release == "release_1_001"
+    assert metadata.dependsof_service == "service"
+    assert metadata.dependsof_product == "product"
+    assert metadata.dependsof_release == "release_1"
+    assert metadata.keys() == [u'sp1.zip']
+
+    validator = symrec.ValidateReleaseMetadata(filename)
+    assert validator.is_valid() == True
+
+def test_symrec_loading_sp_valid():
+    """ Test loading generated metadata. """
+    filename = os.path.join(os.environ['TEST_DATA'], "data/symrec/GRACE/service/product/release_1_001", "release_metadata_1.xml")    
+    metadata = symrec.ReleaseMetadata(filename)
+    assert metadata.service == "service"
+    assert metadata.product == "product"
+    assert metadata.release == "release_1_001"
+    assert metadata.dependsof_service == "service"
+    assert metadata.dependsof_product == "product"
+    assert metadata.dependsof_release == "release_1"
+    assert metadata.keys() == []    
+    assert len(metadata.servicepacks) == 1
+    assert metadata.servicepacks[0].name == u'SP1'
+    assert metadata.servicepacks[0].files == [u'sp1.zip']
+    assert metadata.servicepacks[0].instructions == [u'specialInstructions.xml']
+
+    validator = symrec.ValidateReleaseMetadata(filename)
+    assert validator.is_valid() == True
+
+
+def test_symrec_to_tdd():
+    filename = os.path.join(os.environ['TEST_DATA'], "data/symrec/GRACE/service/product/release_1_001", "release_metadata.xml")        
+    logger.info(symrec.Metadata2TDD(filename).to_tdd())
+
+
+def test_find_latest_metadata():
+    """ Check find latest metadata. """
+    assert symrec.find_latest_metadata(os.path.join(os.environ['TEST_DATA'], "data/symrec/override/none")) == None
+    
+    expected = os.path.normpath(os.path.join(os.environ['TEST_DATA'], "data/symrec/override/one", "release_metadata.xml"))
+    filename = symrec.find_latest_metadata(os.path.dirname(expected))
+    assert expected == filename, "Should be %s (%s)" % (expected, filename)
+
+    expected = os.path.normpath(os.path.join(os.environ['TEST_DATA'], "data/symrec/override/several", "release_metadata_2.xml"))
+    filename = symrec.find_latest_metadata(os.path.dirname(expected))
+    assert expected == filename, "Should be %s (%s)" % (expected, filename)
+
+def test_find_latest_metadata_invalid_path():
+    """ Check find latest metadata with an invalid path. """
+    path = os.path.join(os.environ['TEST_DATA'], "data/symrec/override/invalid")
+    open(path, "w+").close()
+    assert symrec.find_latest_metadata(path) == None
+    os.remove(path)
+    
+def test_cached_release_validator():
+    """ Testing the cached release metadata xml validator. """
+    
+    (_, cachefile) = tempfile.mkstemp()
+    # 1st release
+    validator = symrec.ValidateReleaseMetadataCached(os.path.join(os.environ['TEST_DATA'], "data/symrec/GRACE",
+                                                            "service/product/release_2/release_metadata.xml"), cachefile)
+    assert validator.is_valid() == False
+    assert os.path.exists(cachefile), "Cache file has not been created"
+    assert len(validator.load_cache()) == 1
+    
+    # 2nd release
+    validator = symrec.ValidateReleaseMetadataCached(os.path.join(os.environ['TEST_DATA'], "data/symrec/GRACE",
+                                                            "service/product/release_1/release_metadata.xml"), cachefile)
+    assert validator.is_valid() == True
+    assert os.path.exists(cachefile), "Cache file has not been created"
+    assert len(validator.load_cache()) == 2
+
+    # 3st release
+    validator = symrec.ValidateReleaseMetadataCached(os.path.join(os.environ['TEST_DATA'], "data/symrec/GRACE",
+                                                            "service/product/release_1_001/release_metadata_1.xml"), cachefile)
+    assert validator.is_valid() == True
+    assert os.path.exists(cachefile), "Cache file has not been created"
+    print validator.load_cache()
+    assert len(validator.load_cache()) == 3
+
+    # testing 2nd release again
+    validator = symrec.ValidateReleaseMetadataCached(os.path.join(os.environ['TEST_DATA'], "data/symrec/GRACE",
+                                                            "service/product/release_1/release_metadata.xml"), cachefile)
+    assert validator.is_valid() == True
+    assert os.path.exists(cachefile), "Cache file has not been created"
+    assert len(validator.load_cache()) == 3
+
+
+def test_ignore_whitespace_writexml():
+    myText = '''<foo>    
+     <bar attr1="value" attr2="&gt;">   foo bar  
+     </bar>
+     <bar x="y"/>    
+     </foo>'''
+    result1 =  xml.dom.minidom.parseString(myText).toprettyxml()
+    result2 =  xml.dom.minidom.parseString(result1).toprettyxml()
+    print logger.debug(result1)
+    print logger.debug(result2)
+    assert result1 == result2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_sysdef.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,54 @@
+#============================================================================ 
+#Name        : test_sysdef.py 
+#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:
+#===============================================================================
+
+""" Test cases for the sysdef module. """
+
+import logging
+import sys
+import unittest
+import os
+import sysdef.api
+import StringIO
+
+# Uncomment this line to enable logging in this module, or configure logging elsewhere
+logging.basicConfig(level=logging.DEBUG)
+logger = logging.getLogger('test.sysdef')
+
+class SysdefTest(unittest.TestCase):
+    """ Testing sydef module. """
+    
+    def test_basic_parsing(self):
+        """ A System Definition file can be parsed and information extracted. """
+        sysDef = sysdef.api.SystemDefinition(os.path.join(os.environ['TEST_DATA'], 'data', 'sysdef2make', 'SDF.xml'))
+        assert len(sysDef.configurations) == 4
+        assert len(sysDef.layers) == 1
+        assert len(sysDef.unitlists) == 1
+        
+        # UnitList
+        assert sysDef.unitlists['unitlist1'].name == 'unitlist1'
+        assert len(sysDef.unitlists['unitlist1'].units) == 3
+        
+        # Layer
+        assert sysDef.layers['layer1'].name == 'layer1'
+        assert len(sysDef.layers['layer1'].units) == 3
+
+        # Configs
+        assert sysDef.configurations['config1'].name == 'config1'
+        assert len(sysDef.configurations['config1'].tasks) == 12
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_sysdef_io.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,68 @@
+#============================================================================ 
+#Name        : test_sysdef_io.py
+#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:
+#===============================================================================
+
+from cStringIO import StringIO
+import random
+import tempfile
+import os
+import logging
+import unittest
+from sysdef.io import FlashImageSizeWriter
+
+_logger = logging.getLogger('test.sysdef.io')
+logging.basicConfig(level=logging.INFO)
+
+class FlashImageSizeWriterTest(unittest.TestCase):
+    """Verifiying sysdef/io module"""
+        
+    def test_write(self):
+        """Verifiying write method"""
+        (fileDes, filename) = tempfile.mkstemp()
+        flashWriter = FlashImageSizeWriter(filename)
+        oldOut = flashWriter._out
+        flashWriter._out = duppedOut = StringIO()
+        config_list = ("testconfig1","testconfig2")
+        flashWriter.write(_sysdef(), config_list)
+        flashWriter._out = oldOut  
+        flashWriter.close()
+        os.close(fileDes)
+        os.unlink(filename)
+        assert len(duppedOut.getvalue().splitlines()) == 9        
+
+# dummy classes to emulate sysdef configuration
+class _sysdef():
+    """Emulate sysdef """
+    def __init__(self):
+        self.configurations = {"name1": _config("testconfig1"), "name2" : _config("testconfig2")}
+class _config():
+    """Emulate config"""
+    def __init__(self, name):
+        self.name = name
+        self.units = (_unit(), _unit())
+class _unit():
+    """Emulate unit"""
+    def __init__(self):
+        self.name = "testUnit"
+        self.binaries = (_binary(), _binary())
+class _binary():
+    """Emulate binary"""
+    def __init__(self):
+        self.name = "testBinary" 
+        self.size = 10248
+        self.rom_type = random.choice(("rom", "rofs1", "rofs2", "rofs3")) 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_threadpool.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,85 @@
+#============================================================================ 
+#Name        : test_threadpool.py 
+#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:
+#===============================================================================
+
+""" Test cases for threadpool module.
+
+"""
+
+import logging
+import sys
+import time
+import unittest
+
+import threadpool
+
+# Uncomment this line to enable logging in this module, or configure logging elsewhere
+logging.basicConfig(level=logging.DEBUG)
+_logger = logging.getLogger('test.threadpool')
+
+class Job:
+    """Job: a job created, used to test threadpool"""
+    def __init__(self, jid):
+        self.__id = jid
+        
+    def __call__(self):
+        _logger.debug("Job %d" % self.__id)
+        self.work()
+        _logger.debug("Job %d - done" % self.__id)
+        
+    def work(self):
+        time.sleep(1)
+
+class LeavingJob(Job):
+    """LeavingJob: sleeps and raises exception"""
+    def work(self):
+        time.sleep(1)
+        raise Exception("Error!")
+    
+
+class TestThreadPool(unittest.TestCase):
+    """TestThreadPool: sets up 6 jobs and clears them down again."""
+    def test_thread_pool(self):
+        """ Test the thread pool.
+        """
+        pool = threadpool.ThreadPool(4)
+        pool.addWork(Job(1))
+        pool.addWork(Job(2))
+        pool.addWork(Job(3))
+        pool.addWork(Job(4))
+        pool.addWork(Job(5))
+        pool.addWork(Job(6))
+        pool.wait()
+
+    def test_thread_pool_leaving(self):
+        """ Test the thread pool when exception happens.
+        """
+        exceptions = []
+        def handle_exception(request, exc_info):
+            _logger.debug( "Exception occured in request #%s: %s" % (request.requestID, exc_info[1]))
+            exceptions.append(exc_info[1])                        
+        pool = threadpool.ThreadPool(4)
+        pool.addWork(LeavingJob(1), exc_callback=handle_exception)
+        pool.addWork(LeavingJob(2), exc_callback=handle_exception)
+        pool.addWork(LeavingJob(3), exc_callback=handle_exception)
+        pool.addWork(LeavingJob(4), exc_callback=handle_exception)
+        pool.addWork(LeavingJob(5), exc_callback=handle_exception)
+        pool.addWork(LeavingJob(6), exc_callback=handle_exception)
+        pool.wait()
+        assert len(exceptions)==6
+        _logger.debug(exceptions)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/pythoncoretests/test_unittestadditions.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,47 @@
+#============================================================================ 
+#Name        : test_unittestadditions.py 
+#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:
+#===============================================================================
+import unittest
+from unittestadditions import skip
+
+class TestSkipDecorator(unittest.TestCase):
+
+    def test_skip_false(self):
+        """ A skip(False) decorated function is executed properly """
+        @skip(False)
+        def func(data):
+            return data
+        
+        self.assert_(func("test") == "test")
+    
+    def test_skip_true(self):
+        """ A skip(True) decorated function is executed properly """
+        @skip(True)
+        def func(data):
+            return data
+        
+        self.assert_(func("test") == None)
+
+
+    def test_skip_true_default_return(self):
+        """ A skip(True, 'some return value') decorated function is executed properly """
+        @skip(True, "stub")
+        def func(data):
+            return data
+        
+        self.assert_(func("test") == "stub")
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/relnotes/__init__.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,18 @@
+#============================================================================ 
+#Name        : __init__.py 
+#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:
+#===============================================================================
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/relnotes/variants.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,38 @@
+#============================================================================ 
+#Name        : variants.py 
+#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:
+#===============================================================================
+
+
+def parseInfo(filename):
+    """ Parsing the _info.txt files generated by iMaker. The function returns a dict containing
+        the variant information.
+    """
+    info = open(filename, "r")
+    data = {}
+    for line in info:
+        line = line.strip()
+        if line.startswith("Default Lang.") and ':' in line:
+            data['default'] = line.split(":")[1].strip()
+        elif line.startswith("Language IDs") and ':' in line:
+            data['language.ids'] = line.split(":")[1].strip().split(r' ')
+        elif line.startswith("Languages") and ':' in line:
+            data['languages'] = line.split(":")[1].strip().split(r' ')
+        elif line.startswith("Name") and ':' in line:
+            data['name'] = line.split(":")[1].strip()
+    return data
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/rom.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,55 @@
+#============================================================================ 
+#Name        : rom.py 
+#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:
+#===============================================================================
+
+""" This modules implements rombuilders.
+"""
+import logging
+import re
+
+# Uncomment this line to enable logging in this module, or configure logging elsewhere
+#logging.basicConfig(level=logging.DEBUG)
+logger = logging.getLogger("rom")
+
+
+def read_file_content(filename):
+    """ Read the whole file content.
+    """
+    ftr = open(filename, "r")
+    content = ftr.read()
+    ftr.close()
+    return content
+
+def escape_string(string, config):
+    """ Escape a string recursively.
+    """
+    #data = escapeddict.EscapedDict(config)
+    #string = re.sub(r'\${(?P<name>[._a-zA-Z0-9]+)}', r'%(\g<name>)s', string)
+    #return string % data
+    return config.interpolate(string)
+
+def get_makefile_target(text):
+    """ Retrieve the target name of a step
+    """
+    result = re.search(r"^(?P<target>.+?)\s*:", text, re.M)
+    if (result != None):
+        return result.groupdict()['target']
+    raise Exception("Could'nt determine target name")
+
+    
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/rtfutils.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,172 @@
+#============================================================================ 
+#Name        : rtfutils.py 
+#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:
+#===============================================================================
+
+import csv
+import os
+import PyRTF
+import StringIO
+import re
+import logging
+
+class RTFUtils(object):
+  
+    def __init__(self, template):
+        """ template would be a RTF file to modify """
+        self.template = template
+        
+        self.logger = logging.getLogger('test.relnotes')
+        logging.basicConfig(level=logging.DEBUG)
+        
+    def rtftable(self, errorsfilename, outputfilename, tagtoreplace):
+        """ Create a .rtf file from the errors.csv file. """
+        
+        errors = file(errorsfilename, 'rb')
+        template = file(self.template, 'rb' )
+        output = file(outputfilename, 'w' )
+        
+        self._rtftable(errors, output, tagtoreplace, template)
+        
+        errors.close()
+        output.close()
+        template.close()
+        
+    def _rtftable(self, errors, output, tagtoreplace, template):
+        PyRTF.Elements.StandardColours.append(PyRTF.PropertySets.Colour('NokiaBlue', 153, 204, 255))    
+       
+        DR = PyRTF.Renderer()
+        doc     = PyRTF.Document()
+        ss      = doc.StyleSheet
+        section = PyRTF.Section()
+        doc.Sections.append( section )
+    
+        table = PyRTF.Table( PyRTF.TabPS.DEFAULT_WIDTH * 7,
+                             PyRTF.TabPS.DEFAULT_WIDTH * 3,
+                             PyRTF.TabPS.DEFAULT_WIDTH * 3 )
+                       
+        reader = csv.reader(errors)
+        
+        style = None    
+        for row in reader:
+            assert len(row) == 3
+            
+            if style == None:
+                style = ss.ParagraphStyles.Heading2
+            else:
+                style = ss.ParagraphStyles.Normal
+            
+            # Handle each value from the row
+            rowcell = []
+            
+            for value in row:           
+                cell = PyRTF.Text( value )
+                rowcell.append(PyRTF.Cell( PyRTF.Paragraph(style, cell) ))
+            table.AddRow( *rowcell )
+    
+        section.append( table )
+        string = StringIO.StringIO()
+        DR.Write( doc, string )
+                
+        keep = ''
+        for line in string.getvalue().splitlines():
+            if keep != '' or line.startswith('{\\trowd'):
+                keep += line
+                    
+        #remove last '}'
+        keep = keep[0:-1]
+        
+        for line in template:
+            line = line.replace(tagtoreplace, keep)
+            output.write(line)
+    
+    def rtfimage(self, image, outputfilename, tagtoreplace):
+        """ Replaces tagtoreplace in a RTF file with a image """
+        
+        template = file(self.template, 'rb' )
+        output = file(outputfilename, 'w' )
+        
+        self._rtfimage(image, output, tagtoreplace, template)
+        
+        output.close()
+        template.close()
+    
+    def _rtfimage(self, image, output, tagtoreplace, template):
+        TEMP_FILE = 'image_temp.rtf'
+        
+        DR = PyRTF.Renderer()
+        doc = PyRTF.Document()
+        ss = doc.StyleSheet
+        section = PyRTF.Section()
+        doc.Sections.append( section )
+    
+        section.append( PyRTF.Image( image ) )    
+        
+        tempOutput = file( TEMP_FILE, 'w' )
+        DR.Write( doc, tempOutput )
+        
+        tempOutput = file( TEMP_FILE, 'rb' )
+        
+        keep = ''
+        for line in tempOutput:
+            if keep != '':
+                keep += line
+            elif line.startswith('{\pict'):
+                keep = line
+        
+        #remove last '}'
+        keep = keep[0:-1]
+        
+        tempOutput.close()
+        
+        for line in template:
+            line = line.replace(tagtoreplace, keep)
+            output.write(line)
+        
+        os.remove(TEMP_FILE)
+        
+    def rtfconvert(self, inputfilename, outputfilename):
+        """ Converts a property file to be RTF link syntax """
+        inputfile = file( inputfilename, 'r' )
+        outputfile = file( outputfilename, 'w' )
+        
+        self._rtfconvert(inputfile, outputfile)
+        
+        inputfile.close()
+        outputfile.close()
+        
+    def _rtfconvert(self, inputfile, outputfile):
+        p = re.compile(r'(.+=)((\\\\|http|\.\\|ftp)(.+))')
+        for line in inputfile:
+            newline = line
+            
+            #fix bad links generated in ant
+            if newline.count('\\\\')>0:
+                newline = newline.replace('//','\\')
+                newline = newline.replace('/','\\')
+                
+            if "\\n" in newline:
+                newline = newline.replace("\\n", " \\\\line ")
+            else:
+                newline = newline.replace('\\','\\\\\\\\\\\\\\\\')
+                
+            
+            newline = p.sub('\g<1>{_backslash_field{_backslash_*_backslash_fldinst HYPERLINK \g<2>}}', newline)
+            
+            newline = newline.replace('_backslash_', r'\\')
+            
+            outputfile.write(newline)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/searchnextdrive.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,34 @@
+#============================================================================ 
+#Name        : searchnextdrive.py 
+#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:
+#===============================================================================
+
+"""
+    Script that prints the next free drive on the current system.
+    If none available it returns "Error: No free drive!". 
+    win32 only!
+"""
+from fileutils import get_next_free_drive
+def search_next_free_drive():
+    """search for a free drive"""
+    try:
+        return get_next_free_drive()
+    except OSError:
+        return "Error: No free drive!"
+
+if __name__ == "__main__":
+    print search_next_free_drive()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/sis.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,111 @@
+#============================================================================ 
+#Name        : sis.py 
+#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:
+#===============================================================================
+
+import os
+import buildtools
+
+
+class SisPreBuilder(buildtools.PreBuilder):
+    """ Generates a set of build commands for processing a SIS/X build
+    configuration file. """
+    def __init__(self, config_set, config_name=None):
+        """ Initialisation. """
+        buildtools.PreBuilder.__init__(self, config_set)
+        self._config_name = config_name
+
+    def write(self, buildFilePath):
+        """ Generate the build file that will run the actual commands. """
+        sisConfigs = self.configSet.getConfigurations(self._config_name)
+        commandList = buildtools.CommandList()
+        for config in sisConfigs:
+            if 'input' in config:
+                SisPreBuilder._write_v2(config, commandList)
+            else:
+                SisPreBuilder._write_v1(config, commandList)
+                
+        self.writeBuildFile(commandList, buildFilePath)
+                
+    @staticmethod
+    def _write_v1(config, commandList):
+        """ v1 config that uses name and path properties. """
+        sis_filename = config['name'] + '.sis'
+        if config.get('sis.name', None) != None:
+            sis_filename = config['sis.name'] + '.sis'
+        makeSisArgs = ['-v', config['name'] + '.pkg', sis_filename]
+        makeSisCommand = buildtools.Command(config['makesis.tool'], config['path'], makeSisArgs)
+        commandList.addCommand(makeSisCommand)
+        
+        if config.get_boolean('publish.unsigned', False):
+            srcFile = os.path.join(config['path'], sis_filename)
+            todir = config['build.sisfiles.dir']
+            copyCommand = buildtools.Copy(srcFile, todir)
+            commandList.addCommand(copyCommand, newstage=True)
+
+        sisx_filename = sis_filename + 'x'
+        signSisArgs = ['-v', sis_filename, sisx_filename, config['cert'], config['key']]
+        signSisCommand = buildtools.Command(config['signsis.tool'], config['path'], signSisArgs)
+        commandList.addCommand(signSisCommand, newstage=True)
+
+        # Copy content to SIS files directory
+        srcFile = os.path.join(config['path'], sisx_filename)
+        todir = config['build.sisfiles.dir']
+        copyCommand = buildtools.Copy(srcFile, todir)
+        commandList.addCommand(copyCommand, newstage=True)
+
+    @staticmethod
+    def _write_v2(config, commandList):
+        """ v2 config that uses input and output properties. """ 
+        # Check for invalid old parameters
+        v1_properties = ['name', 'path', 'sis.name']
+        for property_ in v1_properties:
+            if property_ in config:
+                raise Exception("Invalid property %s if using new 'input' SIS configuration" % property_)
+        
+        input_ = config['input']
+        (input_path, input_name) = os.path.split(input_)
+        (input_root, input_ext) = os.path.splitext(input_)
+        valid_extensions = ['.pkg', '.sis', '.sisx']
+        if input_ext not in valid_extensions:
+            raise Exception('Invalid extension for SIS configuration.')
+        
+        # See if makesis needs to be run
+        if input_ext == '.pkg':
+            output = config.get('output', input_root + '.sis')
+            if output.endswith('.sisx'):
+                output = output[:-1]
+            # Set input for the next stage
+            makesis_args = ['-v', input_, output]
+            makesis_command = buildtools.Command(config['makesis.tool'], input_path, makesis_args)
+            commandList.addCommand(makesis_command)
+            input_ = output
+            
+        # See if signsis needs to be run
+        if 'key' in config:
+            output = config.get('output', input_root + '.sisx')
+            signsis_args = ['-v', input_, output, config['cert'], config['key']]
+            signsis_command = buildtools.Command(config['signsis.tool'], input_path, signsis_args)
+            commandList.addCommand(signsis_command, newstage=True)
+            
+        # Copy content to SIS files directory
+        copyCommand = buildtools.Copy(output, config['build.sisfiles.dir'])
+        commandList.addCommand(copyCommand, newstage=True)
+        
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/symbian/__init__.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,19 @@
+#============================================================================ 
+#Name        : __init__.py 
+#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:
+#===============================================================================
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/symbian/log.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,145 @@
+#============================================================================ 
+#Name        : log.py 
+#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:
+#===============================================================================
+
+"""
+Library that support Symbiam log parsing:
+
+===-------------------------------------------------
+=== Stage=1
+===-------------------------------------------------
+=== Stage=1 started Fri Apr 18 21:09:55 2008
+=== Stage=1 == ncp_psw
+-- xcopy *.*  \\ /F /R /Y /S
+--- Client0 Executed ID 1
+++ Started at Fri Apr 18 21:09:55 2008
++++ HiRes Start 1208542195.09307
+Chdir \\psw\\ncp_psw\\psw
+S:\\psw\\ncp_psw\\psw\\s60\\tools\\customizationtool\\ct.ini -> S:\\s60\\tools\\customizationtool\\ct.ini
+S:\\psw\\ncp_psw\\psw\\s60\\tools\\customizationtool\\xml_data\\NCPAudioEqualizer_settings.xml -> S:\\s60\\tools\\customizationtool\\xml_data\\NCPAudioEqualizer_settings.xml
+S:\\psw\\ncp_psw\\psw\\s60\\tools\\customizationtool\\xml_data\\NCPHWGeneral_settings.xml -> S:\\s60\\tools\\customizationtool\\xml_data\\NCPHWGeneral_settings.xml
+S:\\psw\\ncp_psw\\psw\\s60\\tools\\customizationtool\\xml_data\\NCPLight_settings.xml -> S:\\s60\\tools\\customizationtool\\xml_data\\NCPLight_settings.xml
+S:\\psw\\ncp_psw\\psw\\s60\\tools\\customizationtool\\xml_data\\NCPSysAp_settings.xml -> S:\\s60\\tools\\customizationtool\\xml_data\\NCPSysAp_settings.xml
+S:\\psw\\ncp_psw\\psw\\s60\\tools\\customizationtool\\xml_data\\VariantFeatures.xml -> S:\\s60\\tools\\customizationtool\\xml_data\\VariantFeatures.xml
+6 File(s) copied
++++ HiRes End 1208542195.28056
+++ Finished at Fri Apr 18 21:09:55 2008
+=== Stage=1 finished Fri Apr 18 21:09:55 2008
+...
+"""
+import re
+import logging
+import StringIO
+
+# Uncomment this line to enable logging in this module, or configure logging elsewhere
+#logging.basicConfig(level=logging.DEBUG)
+_logger = logging.getLogger('symbian.log')
+
+class Parser(object):
+    """ Generic Symbian log parser. You just need to derive that class an override few methods
+     from the interface to implement your own functionnalities.
+    """
+    
+    def __init__(self, fileobject):
+        """ The constructor, it accepts a file object:
+            parser = Parser(open('output.log', 'r'))
+        """
+        self.__file = fileobject
+
+    def parse(self):
+        """ Function that run the parsing of the log.        
+        """
+        #=== Stage=1 started Fri Apr 18 21:09:55 2008
+        match_stage = re.compile(r"===\s+(?:Stage=)?(.+)\s+(started|finished)\s+(.+)")
+
+        # === Stage=1 == ncp_psw 
+        match_component_start = re.compile(r"===\s+(?:Stage=)?(.+?)\s+==\s+(.+)")
+        match_component_finished = re.compile(r"\+\+\s+Finished\s+at")        
+        # === Stage=1 == ncp_psw 
+        match_component_cmdline = re.compile(r"--\s+(.+)")
+        match_component_chdir = re.compile(r"Chdir\s+(.+)|cd\s+(.*?)\s+.*")
+        component_name =  None
+        cmdline =  None
+        chdir =  None
+        content = StringIO.StringIO()
+        
+        # parsing the content
+        for line in self.__file:
+            line = line.strip()
+            _logger.debug(line)
+            if component_name == None:
+                _logger.debug("Searching stage")            
+                m = match_stage.match(line)
+                _logger.debug(m)
+                if m != None:
+                    _logger.debug("Found stage %s, %s" % (m.group(2), m.group(3)))
+                    if m.group(2) == "started":
+                        self.start_stage(m.group(1), m.group(3))
+                    else:                        
+                        component_name = None  
+                        cmdline = None
+                        chdir = None
+                        content = StringIO.StringIO()
+                        self.end_stage(m.group(1), m.group(3))
+                else:
+                    _logger.debug("Searching for component")
+                    m = match_component_start.match(line)
+                    if  m != None:
+                        _logger.debug("Found component: %s" % m.group(2))
+                        component_name = m.group(2)
+            else:
+                _logger.debug("Searching for component end")
+                m = match_component_finished.match(line)
+                if m != None:
+                    self.task(component_name, cmdline, chdir, content.getvalue())
+                    component_name = None  
+                    cmdline = None
+                    chdir = None
+                    content = StringIO.StringIO()                
+                if cmdline == None:
+                    _logger.debug("Searching for component command line")
+                    m = match_component_cmdline.match(line)
+                    if m != None:
+                        _logger.debug("Found command line: %s" % m.group(1))
+                        cmdline = m.group(1)
+                else:
+                    _logger.debug("Searching for component dir")
+                    if chdir == None:
+                        m = match_component_chdir.match(line)
+                        if m != None:
+                            chdir = m.group(1)
+                            if chdir == None:
+                                chdir = m.group(2)
+                            _logger.debug("Found dir: %s" % chdir)
+                            continue
+                    if not line.startswith("++ ") and not line.startswith("+++ "):                            
+                        _logger.debug("Adding content")
+                        content.write(line + "\n")
+                
+    def start_stage(self, name, date):
+        """ Method to override to catch the start stage event. """
+        pass
+    
+    def end_stage(self, name, date):
+        """ Method to override to catch the end stage event. """
+        pass
+    
+    def task(self, name, cmdline, dir, output):
+        """ Method to override to catch the task event. """
+        pass
+    
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/symbian/raptor.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,37 @@
+#============================================================================ 
+#Name        : raptor.py 
+#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:
+#===============================================================================
+
+
+import os
+import fileutils
+
+def getSBSHome():
+    """ Retrieve the SBS_HOME location based on the raptor
+        application location.
+    """
+    if "SBS_HOME" in os.environ:
+        return os.environ["SBS_HOME"]
+    if os.path.sep == '\\': 
+        raptor_cmd = fileutils.which("sbs.bat")
+    else:
+        raptor_cmd = fileutils.which("sbs")
+    if raptor_cmd:
+        return os.path.dirname(os.path.dirname(raptor_cmd))
+    return None
+    
Binary file buildframework/helium/external/helium-antlib/python/pythoncore/lib/symrec$py.class has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/symrec.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,544 @@
+#============================================================================ 
+#Name        : symrec.py 
+#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:
+#===============================================================================
+
+""" SYMREC metadata file generation. """
+import xml.dom.minidom
+import codecs
+import os
+import re
+import logging
+import fileutils
+import csv
+
+LOGGER = logging.getLogger("symrec")
+logging.basicConfig(level=logging.INFO)
+
+def _cleanup_list(input):
+    result = []
+    for chars in input:
+        if chars is not None and chars.strip() != "":
+            result.append(chars)
+    return result
+
+def xml_setattr(node, attr, value):
+    """ Create the attribute if needed. """
+    node.setAttribute(attr, value)
+
+def is_child_text_only(node):
+    """ Returns true if child node are all from TEXT_NODE type. """
+    for child in node.childNodes:
+        if child.nodeType != xml.dom.minidom.Node.TEXT_NODE:
+            return False
+    return True
+
+
+def ignore_whitespace_writexml(self, writer, indent="", addindent="", newl=""):
+    """ This version of writexml will ignore whitespace text to alway render
+    the output in a structure way.
+    indent = current indentation
+    addindent = indentation to add to higher levels
+    newl = newline string
+    """
+    writer.write(indent + "<" + self.tagName)
+
+    attrs = self._get_attributes()
+    a_names = attrs.keys()
+    a_names.sort()
+
+    for a_name in a_names:
+        writer.write(" %s=\"" % a_name)
+        xml.dom.minidom._write_data(writer, attrs[a_name].value)
+        writer.write("\"")
+    if self.childNodes:
+        writer.write(">")
+        if is_child_text_only(self):
+            for node in self.childNodes:
+                node.writexml(writer, '', '', '')
+            writer.write("</%s>%s" % (self.tagName, newl))
+        else:
+            writer.write(newl)
+            for node in self.childNodes:
+                if node.nodeType == xml.dom.minidom.Node.TEXT_NODE and node.data.isspace():
+                    pass
+                else:
+                    node.writexml(writer, indent + addindent, addindent, newl)
+            writer.write("%s</%s>%s" % (indent, self.tagName, newl))
+    else:
+        writer.write("/>%s" % (newl))
+
+xml.dom.minidom.Element.writexml = ignore_whitespace_writexml
+
+
+class ServicePack(object):
+    
+    def __init__(self, node):
+        self.__xml = node
+    
+    @property
+    def name(self):
+        return self.__xml.getAttribute('name')
+    
+    @property
+    def files(self):
+        result = []
+        for filen in self.__xml.getElementsByTagName('file'):
+            result.append(filen.getAttribute('name'))
+        return result
+
+    @property
+    def instructions(self):
+        result = []
+        for instr in self.__xml.getElementsByTagName('instructions'):
+            result.append(instr.getAttribute('name'))
+        return result
+
+class ReleaseMetadata(object):
+    """ Create or read Metadata XML from SYMREC/SYMDEC. """
+    
+    def __init__(self, filename, service=None, product=None, release=None):
+        self._filename = filename
+        if filename and os.path.exists(filename):
+            self._xml = xml.dom.minidom.parse(open(filename, "r"))
+            releaseInformation = self._xml.getElementsByTagName(u"releaseInformation")
+            if releaseInformation != []:
+                self._releaseInformation = releaseInformation[0]
+            else:
+                self._releaseInformation = self._xml.createElement(u"releaseInformation")
+            releaseDetails = self._xml.getElementsByTagName(u'releaseDetails')
+            if releaseDetails != []:
+                self._releaseDetails = releaseDetails[0]
+            else:
+                self._releaseDetails = self._xml.createElement(u'releaseDetails')
+            releaseFiles = self._xml.getElementsByTagName(u'releaseFiles')
+            if releaseFiles != []:
+                self._releaseFiles = releaseFiles[0]
+            else:
+                self._releaseFiles = self._xml.createElement(u'releaseFiles')
+                
+            if service != None:
+                self.service = service
+            if product != None:
+                self.product = product
+            if release != None:
+                self.release = release
+        elif service!=None and product!=None and release!=None:
+            self._xml = xml.dom.minidom.Document()
+            self._releaseInformation = self._xml.createElement(u"releaseInformation")
+            self._xml.appendChild(self._releaseInformation)
+            self._releaseDetails = self._xml.createElement(u'releaseDetails')
+            self._releaseInformation.appendChild(self._releaseDetails)
+            releaseID = self._xml.createElement(u'releaseID')
+            self._releaseDetails.appendChild(releaseID)
+            
+            #           service
+            serv = self._xml.createElement(u'service')            
+            xml_setattr(serv, 'name', unicode(service))
+            releaseID.appendChild(serv)
+            #           product
+            prod = self._xml.createElement(u'product')
+            xml_setattr(prod, 'name', unicode(product))
+            releaseID.appendChild(prod)
+            #           release
+            rel = self._xml.createElement(u'release')
+            xml_setattr(rel, 'name', unicode(release))
+            releaseID.appendChild(rel)
+            
+            #    releaseFiles
+            self._releaseFiles = self._xml.createElement(u'releaseFiles')
+            self._releaseInformation.appendChild(self._releaseFiles)
+
+            #    releaseFiles
+            self._releaseInformation.appendChild(self._xml.createElement(u'externalFiles'))
+        else:
+            raise Exception("Error metadata file doesn't exists.")
+
+
+    def get_dependsof(self):
+        """ Return a ReleaseMetada object pointing to the dependency release. """
+        if self.dependsof_service != None and self.dependsof_product != None and self.dependsof_release != None:
+            filename = os.path.join(os.path.dirname(self._filename), "../../..",
+                                self.dependsof_service,
+                                self.dependsof_product,
+                                self.dependsof_release)
+            return ReleaseMetadata(find_latest_metadata(filename))
+        else:
+            return None
+
+
+    def set_dependsof(self, filename):
+        """ Setting the dependency release. """
+        metadata  = ReleaseMetadata(filename)
+        self.dependsof_service  = metadata.service
+        self.dependsof_product  = metadata.product
+        self.dependsof_release  = metadata.release
+
+    def add_package(self, name, type=None, default=True, filters=None, extract="single", md5checksum=None, size=None):
+        """ Adding a package to the metadata file. """
+        # check if update mode
+        package = None
+        
+        for pkg in self._xml.getElementsByTagName('package'):
+            if (pkg.getAttribute('name').lower() == os.path.basename(name).lower()):
+                package = pkg
+                break
+        
+        # if not found create new package.
+        if package is None:
+            package = self._xml.createElement(u'package')
+            self._releaseFiles.appendChild(package)
+            
+        xml_setattr(package, 'name', os.path.basename(name))
+        if type != None:
+            xml_setattr(package, 'type', type)
+        else:
+            xml_setattr(package, 'type', os.path.splitext(name)[1].lstrip('.'))
+        xml_setattr(package, 'default', str(default).lower())
+        xml_setattr(package, 'extract', extract)
+        if filters and len(filters)>0:
+            xml_setattr(package, 'filters', ','.join(filters))
+            xml_setattr(package, 's60filter', ','.join(filters))
+        else:
+            xml_setattr(package, 'filters', '')
+            xml_setattr(package, 's60filter', '')
+        if md5checksum != None:
+            xml_setattr(package, unicode("md5checksum"), unicode(md5checksum))
+        if size != None:
+            xml_setattr(package, unicode("size"), unicode(size))
+        
+
+    def keys(self):
+        keys = []
+        for pkg in self._releaseFiles.getElementsByTagName('package'):
+            keys.append(pkg.getAttribute('name'))
+        return keys
+
+    def __getitem__(self, key):
+        for pkg in self._releaseFiles.getElementsByTagName('package'):
+            if pkg.getAttribute('name').lower() == key.lower():
+                filters = []
+                s60filters = []
+                md5checksum = None
+                size = None
+                if pkg.hasAttribute(u'filters'):
+                    filters = _cleanup_list(pkg.getAttribute('filters').split(','))
+                if pkg.hasAttribute(u's60filter'):
+                    s60filters = _cleanup_list(pkg.getAttribute('s60filter').split(','))
+                if pkg.hasAttribute(u'md5checksum'):
+                    md5checksum = pkg.getAttribute('md5checksum')
+                if pkg.hasAttribute(u'size'):
+                    size = pkg.getAttribute('size')
+                return {'type': pkg.getAttribute('type'), 'extract': pkg.getAttribute('extract'), 'default': (pkg.getAttribute('default')=="true"), \
+                         'filters': filters, 's60filter': s60filters, 'md5checksum': md5checksum, 'size': size}
+        raise Exception("Key '%s' not found." % key)
+
+    def __setitem__(self, key, value):
+        self.add_package(key, value['type'], value['default'], value['filters'], value['extract'], value['md5checksum'], value['size'])
+
+    def set_releasedetails_info(self, name, value, details="releaseID"):
+        """ Generic function to set releaseid info. """
+        detailsnode = None
+        if self._releaseDetails.getElementsByTagName(details) == []:
+            detailsnode = self._xml.createElement(details)
+            self._releaseDetails.appendChild(detailsnode)
+        else:
+            detailsnode = self._releaseDetails.getElementsByTagName(details)[0]
+        namenode = None
+        if detailsnode.getElementsByTagName(name) == []:
+            namenode = self._xml.createElement(name)
+            namenode.setAttribute(u'name', unicode(value))
+            detailsnode.appendChild(namenode)
+        else:  
+            namenode = detailsnode.getElementsByTagName(name)[0]
+            namenode.setAttribute('name', value)
+
+    
+    def get_releasedetails_info(self, name, details="releaseID"):
+        """ Generic function to extract releaseid info. """
+        for group in self._releaseDetails.getElementsByTagName(details):
+            for i in group.getElementsByTagName(name):
+                return i.getAttribute('name')
+        return None
+
+    def getVariantPackage(self, variant_name):
+        for variant in self._xml.getElementsByTagName('variant'):
+            if variant.getAttribute('name').lower() == variant_name.lower():
+                for x in variant.getElementsByTagName('file'):
+                    return x.getAttribute('name')        
+
+    def xml(self):
+        """ Returning the XML as a string. """
+        return self._xml.toprettyxml()
+        
+    def save(self, filename = None):
+        """ Saving the XML into the provided filename. """
+        if filename == None:
+            filename = self._filename
+        file_object = codecs.open(os.path.join(filename), 'w', "utf_8")
+        file_object.write(self.xml())
+        file_object.close()
+
+    @property
+    def servicepacks(self):
+        """ Getting the service pack names. """
+        result = []
+        for sp in self._releaseInformation.getElementsByTagName('servicePack'):
+            result.append(ServicePack(sp))
+        return result
+
+    filename = property(lambda self:self._filename)
+    service = property(lambda self:self.get_releasedetails_info('service'), lambda self, value:self.set_releasedetails_info('service', value))
+    product = property(lambda self:self.get_releasedetails_info('product'), lambda self, value:self.set_releasedetails_info('product', value))
+    release = property(lambda self:self.get_releasedetails_info('release'), lambda self, value:self.set_releasedetails_info('release', value))
+    dependsof_service = property(lambda self:self.get_releasedetails_info('service', 'dependsOf'), lambda self, value:self.set_releasedetails_info('service', value, 'dependsOf'))
+    dependsof_product = property(lambda self:self.get_releasedetails_info('product', 'dependsOf'), lambda self, value:self.set_releasedetails_info('product', value, 'dependsOf'))
+    dependsof_release = property(lambda self:self.get_releasedetails_info('release', 'dependsOf'), lambda self, value:self.set_releasedetails_info('release', value, 'dependsOf'))
+    baseline_service = property(lambda self:self.get_releasedetails_info('service', 'previousBaseline'), lambda self, value:self.set_releasedetails_info('service', value, 'previousBaseline'))
+    baseline_product = property(lambda self:self.get_releasedetails_info('product', 'previousBaseline'), lambda self, value:self.set_releasedetails_info('product', value, 'previousBaseline'))
+    baseline_release = property(lambda self:self.get_releasedetails_info('release', 'previousBaseline'), lambda self, value:self.set_releasedetails_info('release', value, 'previousBaseline'))
+
+
+class MD5Updater(ReleaseMetadata):
+    """ Update Metadata XML already created from SYMREC/SYMDEC. """
+    def __init__(self, filename):
+        ReleaseMetadata.__init__(self, filename)
+        self._filepath = os.path.dirname(filename)
+                  
+    def update(self):
+        """ Update each existing package md5checksum and size attribute."""
+        for name in self.keys():
+            fullname = os.path.join(self._filepath, name)                
+            if os.path.exists(fullname):
+                result = self[name]
+                result['md5checksum'] = unicode(fileutils.getmd5(fullname))
+                result['size'] = unicode(os.path.getsize(fullname))
+                self[name] = result
+
+
+class ValidateReleaseMetadata(ReleaseMetadata):
+    """ This class validate if a metadata file is stored in the correct location and
+        if all deps exists.
+    """
+    def __init__(self, filename):
+        ReleaseMetadata.__init__(self, filename)
+        self.location = os.path.dirname(filename)
+    
+    def is_valid(self, checkmd5=True, checkPath=True):
+        """ Run the validation mechanism. """
+        status = os.path.join(os.path.dirname(self._filename), 'HYDRASTATUS.xml')
+        if os.path.exists(status):
+            hydraxml = xml.dom.minidom.parse(open(status, "r"))
+            for t in hydraxml.getElementsByTagName('state')[0].childNodes:
+                if t.nodeType == t.TEXT_NODE:
+                    if t.nodeValue != 'Ready':
+                        LOGGER.error("HYDRASTATUS.xml is not ready")
+                        return False
+        if checkPath:
+            if os.path.basename(self.location) != self.release:
+                LOGGER.error("Release doesn't match.")
+                return False
+            if os.path.basename(os.path.dirname(self.location)) != self.product:
+                LOGGER.error("Product doesn't match.")
+                return False
+            if os.path.basename(os.path.dirname(os.path.dirname(self.location))) != self.service:
+                LOGGER.error("Service doesn't match.")
+                return False
+        
+        for name in self.keys():
+            path = os.path.join(self.location, name)
+            if not os.path.exists(path):
+                LOGGER.error("%s doesn't exist." % path)
+                return False
+            try:
+                LOGGER.debug("Trying to open %s" % path)
+                content_file = open(path)
+                content_file.read(1)
+            except IOError:
+                LOGGER.error("%s is not available yet" % path)
+                return False
+                
+            if checkmd5 and self[name].has_key('md5checksum'):
+                if self[name]['md5checksum'] != None:
+                    if fileutils.getmd5(path).lower() != self[name]['md5checksum']:
+                        LOGGER.error("%s md5checksum missmatch." % path)
+                        return False
+
+        for sp in self.servicepacks:
+            for name in sp.files:
+                path = os.path.join(self.location, name)
+                if not os.path.exists(path):
+                    LOGGER.error("%s doesn't exist." % path)
+                    return False
+            for name in sp.instructions:
+                path = os.path.join(self.location, name)
+                if not os.path.exists(path):
+                    LOGGER.error("%s doesn't exist." % path)
+                    return False
+        
+        dependency = self.get_dependsof()
+        if dependency != None:
+            return ValidateReleaseMetadata(dependency.filename).is_valid(checkmd5)
+        return True
+
+class MetadataMerger(object):
+    """ Merge packages definition to the root metadata. """
+    
+    def __init__(self, metadata):
+        """ Construct a metadata merger providing root metadata filename. """ 
+        self._metadata = ReleaseMetadata(metadata)
+                
+    def merge(self, filename):
+        """ Merge the content of filename into the root metadata. """
+        metadata = ReleaseMetadata(filename)
+        for name in metadata.keys():
+            if name in self._metadata.keys():
+                LOGGER.warning('Package %s already declared, overriding previous definition!' % name)        
+            self._metadata[name] = metadata[name]
+
+    def xml(self):
+        """ Returning the XML as a string. """
+        return self._metadata.xml()
+
+    def save(self, filename = None):
+        """ Saving the XML into the provided filename. """
+        return self._metadata.save(filename)
+ 
+class Metadata2TDD(ReleaseMetadata):
+
+    def __init__(self, filename, includes=None, excludes=None):
+        ReleaseMetadata.__init__(self, filename)
+        if includes is None:
+            includes = []
+        if excludes is None:
+            excludes = []
+        self.location = os.path.dirname(filename)
+        self.includes = includes
+        self.excludes = excludes
+
+    def archives_to_tdd(self, metadata):
+        tdd = "\t[\n"
+        for name in metadata.keys():
+            path_ = os.path.join(os.path.dirname(metadata.filename), name)
+            if (((len(self.includes) == 0) and metadata[name]['extract']) or (self.includes in metadata[name]['s60filter'])) and self.excludes not in metadata[name]['s60filter']:
+                tdd += "\t\t{\n"
+                tdd += "\t\t\t\"command\": \"unzip_%s\",\n" % metadata[name]['extract']
+                tdd += "\t\t\t\"src\": \"%s\",\n" % os.path.normpath(path_).replace('\\', '/')
+                tdd += "\t\t},\n"
+        tdd += "\t],\n"
+        return tdd
+        
+    def to_tdd(self):
+        """ Generating a TDD file that contains a list of list of filenames. """
+        tdd = "[\n"
+        # generates unarchiving steps for dependency
+        dependency = self.get_dependsof()
+        if dependency != None:
+            tdd += self.archives_to_tdd(dependency)
+        # generates unarchiving steps
+        tdd += self.archives_to_tdd(self)
+        tdd += "]\n"
+        return tdd
+
+
+
+def find_latest_metadata(releasedir):
+    """ Finding the release latest release metadata file. """ 
+    try:
+        metadatas = []
+        for filename in os.listdir(releasedir):
+            if re.match(r'^release_metadata(_\d+)?\.xml$', filename, re.I) is not None:
+                LOGGER.debug("Found %s" % filename)
+                metadatas.append(filename)
+        # reverse the order...
+        metadatas.sort(reverse=True)
+        if len(metadatas) > 0:
+            return os.path.normpath(os.path.join(releasedir, metadatas[0]))
+    except Exception, exc:
+        LOGGER.error(exc)
+        return None
+    return None
+
+class ValidateReleaseMetadataCached(ValidateReleaseMetadata):
+    """ Cached version of the metadata validation. """
+    def __init__(self, filename, cachefile=None):
+        ValidateReleaseMetadata.__init__(self, filename)
+        self.__cachefile = cachefile
+
+    def is_valid(self, checkmd5=True, checkPath=True):
+        """ Check if file is in the local cache.
+            Add valid release to the cache.
+        """
+        metadatas = self.load_cache()
+        if self.in_cache(metadatas, os.path.normpath(self._filename)):
+            LOGGER.debug("Release found in cache.")
+            return self.value_from_cache(metadatas, os.path.normpath(self._filename))
+        else:
+            result = ValidateReleaseMetadata.is_valid(self, checkmd5, checkPath)        
+            LOGGER.debug("Updating the cache.")
+            metadatas.append([os.path.normpath(self._filename), result])
+            self.update_cache(metadatas)
+        return result
+
+    def in_cache(self, metadatas, key):
+        for metadata in metadatas:
+            if metadata[0] == key:
+                return True 
+        return False
+    
+    def value_from_cache(self, metadatas, key):
+        for metadata in metadatas:
+            if metadata[0] == key:
+                return metadata[1]
+        return None
+    
+    def load_cache(self):
+        metadatas = []
+        if self.__cachefile is not None and os.path.exists(self.__cachefile):
+            f = open(self.__cachefile, "rb")
+            for row in csv.reader(f):
+                if len(row) == 2:
+                    metadatas.append([os.path.normpath(row[0]), row[1].lower() == "true"])
+                elif len(row) == 1:
+                    # backward compatibility with old cache.
+                    metadatas.append([os.path.normpath(row[0]), True])
+            f.close()
+        return metadatas
+
+    def update_cache(self, metadatas):
+        if self.__cachefile is not None and os.path.exists(os.path.dirname(self.__cachefile)):
+            f = open(self.__cachefile, "wb")
+            writer = csv.writer(f)
+            writer.writerows(metadatas)
+            f.close()
+
+class ValidateTicklerReleaseMetadata(ValidateReleaseMetadataCached):
+    """ This class validate if a metadata file is stored in the correct location and
+        if all deps exists.
+    """
+    def __init__(self, filename):
+        ReleaseMetadata.__init__(self, filename)
+        self.location = os.path.dirname(filename)
+    
+    def is_valid(self, checkmd5=True):
+        """ Run the validation mechanism. """
+        tickler_path = os.path.join(self.location,"TICKLER")
+        if not os.path.exists(tickler_path):
+            LOGGER.error("Release not available yet")
+            return False
+        else:
+            return ValidateReleaseMetadataCached.is_valid(self, checkmd5)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/sysdef/__init__.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,19 @@
+#============================================================================ 
+#Name        : __init__.py 
+#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:
+#===============================================================================
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/sysdef/api.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,615 @@
+#============================================================================ 
+#Name        : api.py 
+#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:
+#===============================================================================
+
+""" System Definition file parser.
+
+Priority are not handled yet.
+Nested task unitlist are not handled properly yet.
+    
+How to use it::
+
+    sdf = SystemDefinition(filename)
+    for name in sdf.layers:
+        print " + Units in layer %s" % name
+        for unit in sdf.layers[name].units:
+            print "     - " +  sdf.units[name].id
+
+    for name in sdf.units:
+        print sdf.units[name].id
+    
+"""
+
+import logging
+import os
+import re
+import sys
+import types
+
+from xmlhelper import node_scan, recursive_node_scan
+from xml.dom import Node
+import xml.dom.minidom
+
+logging.basicConfig(level=logging.INFO)
+_logger = logging.getLogger('sysdef.api')
+
+
+def filter_out(config_filters, unit_filters):
+    """ Function that determines if a unit should be included or not. 
+        returns None => could be included, string reason.
+    """
+
+    def hasvalue(filter_list, value):
+        """ Check if a filter list contains a particular value.
+            It handles list's item negation using "!".
+        """
+        for list_value in filter_list:
+            if list_value == value:
+                return True
+        return False
+    for filter_ in unit_filters:
+        if filter_.startswith("!"):
+            if hasvalue(config_filters, filter_[1:]):
+                return filter
+        else:
+            if not hasvalue(config_filters, filter_):
+                return filter_
+    return None
+
+
+def extract_filter_list(filters):
+    """ Convert a comma separated list of filters into a python list.
+        The method will skip empty filters (empty strings).
+    """
+    result = []
+    for filter_ in [filter_.strip() for filter_ in filters.split(",")]:
+        if len(filter_) > 0:
+            result.append(filter_)
+    return result
+
+
+class SysDefElement(object):
+    """ A generic element of a System Definition. """
+    def __init__(self, sysDef):
+        """ Initialisation """
+        self._sysDef = sysDef
+        
+    def _getname(self):
+        """ Name getter method """
+        return NotImplementedError()
+        
+    def get_id(self):
+        """ Use name as default ID. """
+        return getattr(self, 'name').lower()
+    
+    def __str__(self):
+        return self.get_id()
+        
+        
+class Unit(SysDefElement):
+    """ Abstract unit from SDF file. """
+    def __init__(self, node, sysDef):
+        """ Initialisation """
+        SysDefElement.__init__(self, sysDef)
+        self.__xml = node
+        self.binaries = []
+
+    def __getid(self):
+        """ Id getter. """
+        return self.__xml.getAttribute('unitID')
+
+    def _getname(self):
+        """ Name getter. """
+        if self.__xml.hasAttribute('name'):
+            return self.__xml.getAttribute('name')
+        if self.__xml.hasAttribute('bldFile'):
+            return self.__xml.getAttribute('bldFile')
+        return self.__xml.getAttribute('mrp')
+    
+    def __getpath(self):
+        """ Path getter. """
+        if self.__xml.hasAttribute('bldFile'):
+            return os.path.join(os.path.sep, self.__xml.getAttribute('bldFile'))
+        return os.path.join(os.sep, os.path.dirname(self.__xml.getAttribute('mrp')))
+            
+    def __getfilters(self):
+        """ filter getter. """
+        filters = []
+        if self.__xml.hasAttribute('filter'):
+            filters = extract_filter_list(self.__xml.getAttribute('filter'))
+        return filters
+
+    id = property(__getid)
+    name = property(_getname)
+    path = property(__getpath)
+    filters = property(__getfilters)
+    
+    
+class _UnitGroup(SysDefElement):
+    """ A group of units. """
+    def __init__(self, node, sysDef):
+        """ Initialisation """
+        SysDefElement.__init__(self, sysDef)
+        self._xml = node
+        self._units = []
+
+    def __getname(self):
+        """ Name getter method """
+        return self._xml.getAttribute('name')
+
+    def __getunits(self):
+        """ Units getter method """
+        return self._units
+
+    name = property(__getname)
+    units = property(__getunits)
+
+
+class Layer(_UnitGroup):
+    """ Abstract layer from SDF file. """    
+    def __init__(self, node, sysDef):
+        """ Initialisation """
+        _UnitGroup.__init__(self, node, sysDef)
+        self._modules = []
+        self._module_count = 0
+        for unitNode in recursive_node_scan(self._xml, 'unit'):
+            unit = Unit(unitNode, self._sysDef)
+            self._units.append(unit)
+            self._sysDef.addElement(unit)
+
+        for moduleNode in recursive_node_scan(self._xml, 'module') + recursive_node_scan(self._xml, 'collection'):
+            module = Module(moduleNode, self._sysDef)
+            self._modules.append(module)
+            self._module_count += 1
+            # Not added to the model.
+            #self._sysDef.addElement(module) 
+    
+    def __getmodules(self):
+        """ Module list accessor. """
+        return self._modules
+
+    def __getmodulescount(self):
+        """ Module cound accessor. """
+        return self._module_count
+    
+    modules = property(__getmodules)
+    modules_count = property(__getmodulescount)
+    
+    
+class Module(_UnitGroup):
+    """ Abstract module from SDF file. """    
+    def __init__(self, node, sysDef):
+        """ Initialisation """
+        _UnitGroup.__init__(self, node, sysDef)
+        for unitNode in recursive_node_scan(self._xml, "unit"):
+            unit = Unit(unitNode, self._sysDef)
+            self._units.append(unit)
+
+
+class UnitList(_UnitGroup):
+    """ Abstract unitlist from SDF file. """
+    def __init__(self, node, units, sysDef):
+        """ Initialisation """
+        _UnitGroup.__init__(self, node, sysDef)
+        for unitRef in node_scan(self._xml, "unitRef"):
+            try:
+                self._units.append(units[unitRef.getAttribute('unit')])
+            except KeyError, error:
+                sys.stderr.write("ERROR: Could not find unit '%s'\n" % unitRef.getAttribute('unit') + str(error) + "\n")
+
+
+class BuildLayer(SysDefElement):
+    """ Abstract buildlayer. """
+    def __init__(self, node, config, sysDef):
+        """ Initialisation """
+        SysDefElement.__init__(self, sysDef)
+        self.__xml = node
+        self.config = config
+        self.targetList = []
+        if self.__xml.hasAttribute('targetList'):
+            for tlname in re.split(r'\s+', self.__xml.getAttribute('targetList').strip()):
+                for target in self._sysDef.targetlists[tlname].targets:
+                    self.targetList.append(target)                
+    
+    def __getcommand(self):
+        """ Command getter method. """
+        return self.__xml.getAttribute('command')
+    
+    def __getunitParallel(self):
+        """ Unit Parallel getter method (boolean). """
+        return (self.__xml.getAttribute('unitParallel').upper() == "Y")
+
+    command = property(__getcommand)
+    unitParallel = property(__getunitParallel)
+    
+    
+class Option(SysDefElement):
+    """ Represents an option used in abld calls. """
+    def __init__(self, node, sysDef):
+        """ Initialisation """
+        SysDefElement.__init__(self, sysDef)
+        self.__xml = node
+    
+    def __getname(self):
+        """ Name getter method. """
+        return self.__xml.getAttribute('name')
+    
+    def __getabldOption(self):
+        """ Abld option getter method. """
+        return self.__xml.getAttribute('abldOption')
+    
+    def __getenable(self):
+        """ Unit Parallel getter method (boolean). """
+        return (self.__xml.getAttribute('enable').upper() == 'Y')
+
+    def __getfilteredOption(self):
+        """ Filtered abld option getter method. """
+        if not self.enable:
+            return ''
+        return self.abldOption
+   
+    name = property(__getname)
+    abldOption = property(__getabldOption)
+    enable = property(__getenable)
+    filteredOption = property(__getfilteredOption)
+    
+
+class SpecialInstruction(SysDefElement):
+    """ Reads special instruction command. """
+    def __init__(self, node, sysDef):
+        """ Initialisation """
+        SysDefElement.__init__(self, sysDef)
+        self.__xml = node
+
+    def __getname(self):
+        """ Name getter method """
+        return self.__xml.getAttribute('name')
+    
+    def __getcommand(self):
+        """ Command getter method """
+        return self.__xml.getAttribute('command')
+
+    def __getpath(self):
+        """ Path getter method """
+        return self.__xml.getAttribute('cwd')
+    
+    name = property(__getname)
+    command = property(__getcommand)
+    path = property(__getpath)
+    
+    
+class Task(SysDefElement):
+    """ Abstract task node from SDF xml. """
+    def __init__(self, node, config, sysDef):
+        """ Initialisation """
+        SysDefElement.__init__(self, sysDef)
+        self.__xml = node
+        self._config = config
+        self.__job = None
+
+    def units(self):
+        """ Process unit list from layers """
+        result = []
+        for ref in node_scan(self.__xml, "unitListRef"):
+            units = []
+            try:
+                units = self._config.sdf.unitlists[ref.getAttribute('unitList')].units
+                for unit in units:
+                    reason = filter_out(self._config.filters, unit.filters)
+                    if reason == None:
+                        result.append(unit)
+                    else:
+                        sys.stderr.write("Filter-out: %s (%s)\n" % (unit.id, reason)) 
+            except KeyError, error:
+                sys.stderr.write("ERROR: Could not find unitList of layer %s\n" % error)
+        return result
+        
+    def __getjob(self):
+        """ Return the job contained inside the task. """
+        for job in node_scan(self.__xml, r"buildLayer|specialInstructions"):
+            if job.nodeName == 'specialInstructions':
+                self.__job = SpecialInstruction(job, self._sysDef)
+            elif job.nodeName == 'buildLayer':
+                self.__job = BuildLayer(job, self._config, self._sysDef)
+        return self.__job
+
+    job = property(__getjob)
+
+
+class Configuration(SysDefElement):
+    """ Abstract configuration from SDF file. """
+    def __init__(self, node, sysDef):
+        """ Initialisation """
+        SysDefElement.__init__(self, sysDef)
+        self.__xml = node
+    
+    def __getname(self):
+        """ Name getter method """
+        return self.__xml.getAttribute('name')    
+
+    def __getfilters(self):
+        """ Filters getter method. """
+        filters = []
+        if self.__xml.hasAttribute('filter'):
+            filters = extract_filter_list(self.__xml.getAttribute('filter'))
+        return filters  
+    
+    def __getlayerrefs(self):
+        """ Layer's references getter method. """
+        result = []
+        for ref in node_scan(self.__xml, "layerRef"):
+            try:
+                result.append(self._sysDef.layers[ref.getAttribute('layerName')])
+            except KeyError, error:
+                sys.stderr.write("ERROR: Could not find layer '%s'\n" % error)
+        return result
+    
+    def __getunitlistrefs(self):
+        """ Unit list references getter method. """
+        result = []
+        for ref in node_scan(self.__xml, "unitListRef"):
+            try:
+                result.append(self._sysDef.unitlists[ref.getAttribute('unitList')])
+            except KeyError, error:
+                sys.stderr.write("ERROR: Could not find unitList %s\n" % error)
+        return result
+        
+    def __getunits(self):
+        """ Return unit from unitList or layer. """
+        result = []            
+        for ref in node_scan(self.__xml, "unitListRef|layerRef"):
+            units = []
+            try:
+                if ref.nodeName == 'unitListRef':
+                    units = self._sysDef.unitlists[ref.getAttribute('unitList')].units
+                else:
+                    units = self._sysDef.layers[ref.getAttribute('layerName')].units
+                for unit in units:
+                    reason = filter_out(self.filters, unit.filters)
+                    if reason == None:
+                        # Get the unit object from the cache if this is a string
+                        # TODO - remove once unitlist returns list of Unit objects
+                        if isinstance(unit, types.UnicodeType):
+                            unit = self._sysDef[unit]
+                        result.append(unit)
+                    else:
+                        sys.stderr.write("Filter-out: %s (%s)\n" % (unit.id, reason)) 
+            except KeyError, error:
+                sys.stderr.write("ERROR: Could not find unitList or layer %s\n" % error)
+        return result
+    
+    def __gettasks(self):
+        """ Tasks getter method. """
+        result = []
+        for task in node_scan(self.__xml, "task"):
+            result.append(Task(task, self, self._sysDef))
+        return result
+    
+    name = property(__getname)
+    filters = property(__getfilters)    
+    layerrefs = property(__getlayerrefs)
+    unitlistrefs = property(__getunitlistrefs)
+    units = property(__getunits)
+    tasks = property(__gettasks)
+
+
+class Target(SysDefElement):
+    """ Abstract target from SDF file. """
+    def __init__(self, node, sysDef):
+        """ Initialisation """
+        SysDefElement.__init__(self, sysDef)
+        self.__xml = node
+
+    def __getname(self):
+        """ Name getter method. """
+        return self.__xml.getAttribute('name')    
+
+    def __getabldTarget(self):
+        """ Abld target getter method. """
+        return self.__xml.getAttribute('abldTarget')
+
+    name = property(__getname)
+    abldTarget = property(__getabldTarget)
+
+
+class TargetList(SysDefElement):
+    """ Abstract targetlist from SDF file. """
+    def __init__(self, node, sysDef):
+        """ Initialisation """
+        SysDefElement.__init__(self, sysDef)
+        self.__xml = node
+
+    def __getname(self):
+        """ Name getter method. """
+        return self.__xml.getAttribute('name')    
+
+    def __gettargets(self):
+        """ Targets getter method. """
+        result = []
+        for target in re.split(r'\s+', self.__xml.getAttribute('target')):
+            result.append(self._sysDef.targets[target.strip()])
+        return result
+        
+    name = property(__getname)
+    targets = property(__gettargets)    
+
+
+class SystemDefinition(object):
+    """ Logical representation of the System Definition.
+    
+    The System Definition is defined in terms of a system model and a
+    build model. The default physical representation of this is the Symbian
+    XML format. """
+    def __init__(self, filename):
+        """ Initialisation """
+        self.__xml = xml.dom.minidom.parse(open(filename, "r"))
+        self._cache = {}
+        #TODO - why store these as hashes?
+        self._units = {}
+        self._layers = {}
+        self._modules = {}
+        self._unitlists = {}
+        self._configurations = {}
+        self._options = {}
+        self._targets = {}
+        self._targetlists = {}
+        self.__parse()
+    
+    def __getunits(self):
+        """ Units getter method. """
+        return self._units
+    
+    def __getmodules(self):
+        """ Modules getter method. """
+        return self._modules
+
+    def __getlayers(self):
+        """ Layers getter method. """
+        return self._layers
+    
+    def __getunitlists(self):
+        """ Unit lists getter method. """
+        return self._unitlists
+    
+    def __getoptions(self):
+        """ Options getter method. """
+        return self._options    
+    
+    def __getconfigurations(self):
+        """ Configurations getter method. """
+        return self._configurations
+
+    def __gettargetlists(self):
+        """ Targets lists getter method. """
+        return self._targetlists
+
+    def __gettargets(self):
+        """ Targets getter method. """
+        return self._targets
+    
+    units = property(__getunits)
+    unitlists = property(__getunitlists)
+    layers = property(__getlayers)
+    options = property(__getoptions)
+    configurations = property(__getconfigurations)
+    targetlists = property(__gettargetlists)
+    targets = property(__gettargets)
+    modules = property(__getmodules)
+    
+    def __parse(self):
+        for l in self.__xml.getElementsByTagName('layer'):
+            layer = Layer(l, self)
+            self.layers[layer.name] = layer
+            self.addElement(layer)
+            for unit in layer.units:
+                self._units[unit.get_id()] = unit
+            for mod in layer.modules:
+                self._modules[mod.name] = mod
+            
+        for build in self.__xml.getElementsByTagName('build'):
+            for ul in build.getElementsByTagName('unitList'):
+                unitlist = UnitList(ul, self._units, self)
+                self.unitlists[unitlist.name] = unitlist
+                self.addElement(unitlist)
+
+            for xml_config in build.getElementsByTagName('configuration'):
+                config = Configuration(xml_config, self)
+                self.configurations[config.name] = config
+                self.addElement(config)
+
+            for option_node in build.getElementsByTagName('option'):         
+                option = Option(option_node, self)
+                if option.name == 'SAVESPACE':
+                    continue
+                self.options[option.name] = option 
+                self.addElement(option)
+
+            for target_node in build.getElementsByTagName('target'):
+                target = Target(target_node, self)
+                self.targets[target.name] = target
+                self.addElement(target)
+
+            for targetlist_node in build.getElementsByTagName('targetList'):
+                targetlist = TargetList(targetlist_node, self)
+                self.targetlists[targetlist.name] = targetlist
+                self.addElement(targetlist)
+            
+    def addElement(self, element):
+        """ Adds SysDef element to cache. """
+        #TODO - handle duplicate names of different types
+        if not self._cache.has_key(element.get_id()):
+            self._cache[element.get_id()] = element
+            _logger.info('Adding SysDef element to cache: %s' % str(element))
+        else:
+            _logger.warning("Element already exists: %s" % element.name)
+        
+    def __getitem__(self, key):
+        """ Item getter method. """
+        return self._cache[key]
+    
+    def merge_binaries(self, binaries_reader):
+        """ Merge binaries based on build log and system definition. """
+        for (unit_name, binaries) in binaries_reader:
+            unit_name = unit_name.lower()
+            if self.units.has_key(unit_name):
+                for bin in binaries:
+                    #if bin.find('_stolon_ekern') != -1:
+                    _logger.debug("Merging: %s" % bin)
+                unit = self.units[unit_name]
+                unit.binaries = [Binary(bin.lower(), self) for bin in binaries]
+                for binary in unit.binaries:
+                    self.addElement(binary)
+                    _logger.info('Merging binary: %s' % str(binary))
+            else:
+                _logger.warning('Component found in the build log but not in sysdef: %s' % unit_name)
+                
+    def merge_binary_sizes(self, binary_sizes_reader):
+        """ Merge binary size base on binary sizes input and system definition. """
+        for (binary_name, size, rom_type) in binary_sizes_reader:
+            #if binary_name.find('_stolon_ekern') != -1:
+            
+            binary_name = binary_name.lower()
+            _logger.debug("Merging binary size: %s" % binary_name)
+            if self._cache.has_key(binary_name):
+                binary = self._cache[binary_name]
+                binary.size = size
+                binary.rom_type = rom_type
+            else:
+                _logger.warning('Binary found in the binary sizes input but not in the system definition: %s' % binary_name)
+                
+
+class Binary(SysDefElement):
+    """ A binary file that may go into a ROM image. """
+    
+    def __init__(self, name, sysDef):
+        """ Initialisation """
+        SysDefElement.__init__(self, sysDef)
+        self.name = name
+        
+    
+          
+          
+          
+                                 
+#if __name__ == "__main__":
+#    sdf = SystemDefinitionFile("Z:/output/build/canonical_system_definition.xml")
+#    writer = MakeWriter2("Z:/output/build/makefile")
+#    writer.write(sdf)
+#    writer.close()
+#    print sdf.toMakefile()
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/sysdef/io.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,57 @@
+#============================================================================ 
+#Name        : io.py 
+#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:
+#===============================================================================
+# pylint: disable-msg=W0212,W0141
+""" IO module for SystemDefinitionFile.
+    - Allow convertion to m,a 
+"""
+import re
+import sys
+import os
+import sysdef.api
+
+class FlashImageSizeWriter(object):
+    """ Writes a .csv file listing the content of the flash images. """
+    def __init__(self, output):
+        """ Initialisation. """
+        self.output = output
+        self._out = file(output, 'w')
+        
+    def write(self, sys_def, config_list):
+        """ Write the .csv data to a file for the given System Definition and configuration name. """
+        self._out.write('component,binary,rom,rofs1,rofs2,rofs3\n')
+        for configuration in sys_def.configurations.values():
+            #print configuration.name  
+            if configuration.name in config_list:
+                for unit in configuration.units:
+                    #print str(unit.name) + '  ' + str(unit.binaries)
+                    for binary in unit.binaries:
+                        # Only print out the binaries for which there is size information
+                        if hasattr(binary, 'size'):
+                            rom_types = {'rom': 0, 'rofs1': 1, 'rofs2': 2, 'rofs3': 3}
+                            rom_type_values = ['', '', '', '']
+                            rom_type_values[rom_types[binary.rom_type]] = str(binary.size)
+                            rom_type_text = ','.join(rom_type_values)
+                            self._out.write('%s,%s,%s\n' % (unit.name, binary.name, rom_type_text))
+                    
+    def close(self):
+        """ Closing the writer. """
+        self._out.close()
+    
+    
+    
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/timeout_launcher.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,99 @@
+#============================================================================ 
+#Name        : timeout_launcher.py 
+#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:
+#===============================================================================
+
+""" Application launcher supporting timeout. """
+import os
+import sys
+import re
+import subprocess
+import logging
+import time
+
+_logger = logging.getLogger('timeout_launcher')
+logging.basicConfig(level=logging.INFO)
+
+
+# Platform
+windows = False
+if sys.platform == "win32":
+    import win32process
+    import win32con
+    import win32api
+    windows = True
+
+def main():
+    cmdarg = False
+    cmdline = []
+    timeout = None
+    
+    for arg in sys.argv:
+        res = re.match("^--timeout=(\d+)$", arg)
+        if not cmdarg and res is not None:
+            timeout = int(res.group(1))
+            _logger.debug("Set timeout to %s" % timeout)
+        elif not cmdarg and arg == '--':
+            _logger.debug("Parsing command start")
+            cmdarg = True
+        elif cmdarg:
+            _logger.debug("Adding arg: %s" % arg)
+            cmdline.append(arg)
+    
+    if len(cmdline) == 0:
+        print "Empty command line."
+        print "e.g: timeout_launcher.py --timeout=1 -- cmd /c sleep 10"
+        sys.exit(-1)
+    else:
+        _logger.debug("Start command")
+        if timeout != None:
+            finish = time.time() + timeout
+            timedout = False
+            shell = True
+            if windows:
+                shell = False
+            p = subprocess.Popen(' '.join(cmdline), stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=shell)
+            while (p.poll() == None):
+                if time.time() > finish:
+                    timedout = True
+                    break
+                time.sleep(1)
+            if timedout:
+                print "ERROR: Application has timed out (timeout=%s)." % timeout
+                if windows:
+                    try:
+                        print "ERROR: Trying to kill the process..."
+                        handle = win32api.OpenProcess(True, win32con.PROCESS_TERMINATE, p.pid)
+                        win32process.TerminateProcess(handle, -1)
+                        print "ERROR: Process killed..."
+                    except Exception, exc:
+                        print "ERROR: %s" % exc
+                else:
+                    # pylint: disable-msg=E1101
+                    os.kill(p.pid, 9)
+                print "ERROR: exiting..."
+                raise Exception("Timeout exception.")
+            else:
+                print p.communicate()[0]
+                sys.exit(p.returncode)
+        else:
+            p = subprocess.Popen(' '.join(cmdline), stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True)
+            print p.communicate()[0]
+            sys.exit(p.returncode)
+
+if __name__ == '__main__':
+    main()
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/unittestadditions.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,45 @@
+#============================================================================ 
+#Name        : unittestadditions.py 
+#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:
+#===============================================================================
+
+import logging
+logger = logging.getLogger('unittestadditions')
+
+class skip(object):
+    """ Skip decorator. The decorated function will only be called
+        if the parameter is true.
+         
+        e.g: 
+        @skip(True)
+        def test():
+           assert True==False
+               
+    """
+    
+    def __init__(self, shouldSkip, returns=None):
+        self.shouldSkip = shouldSkip
+        self.returns = returns
+
+    def __call__(self, f):
+        """ Returns the function f if  shouldSkip is False. Else a stub function is returned. """
+        def __skiptest(*args, **kargs):
+            logger.warning("Skipping test %s" % f.__name__)
+            return self.returns
+        if self.shouldSkip:
+            return __skiptest
+        return f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/lib/xmlhelper.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,42 @@
+#============================================================================ 
+#Name        : xmlhelper.py 
+#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:
+#===============================================================================
+
+import re
+from xml.dom import Node
+
+def node_scan(node, name):
+    """
+        Replacement function for node.xml_xpath('./name').
+        name is a regular expression.
+    """
+    results = []
+    for subnode in node.childNodes:
+        if subnode.nodeType == Node.ELEMENT_NODE and re.match(name, subnode.nodeName) is not None:
+            results.append(subnode)
+    return results
+
+def recursive_node_scan(node, name):
+    """
+        Replacement function for node.xml_xpath('.//name').
+        name is a regular expression.
+    """
+    results = node_scan(node, name)
+    for subnode in node.childNodes:        
+        results.extend(recursive_node_scan(subnode, name))
+    return results
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/setup.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,35 @@
+#============================================================================ 
+#Name        : .py 
+#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:
+#===============================================================================
+import os
+from setuptools import setup, find_packages
+pyfiles = []
+for x in os.listdir('lib'):
+    if x.endswith('.py'):
+        pyfiles.append(x.replace('.py', ''))
+setup(
+    name = 'pythoncore',
+    version = '0.1',
+    description = "pythoncore",
+    license = 'EPL',
+    package_dir = {'': 'lib'},
+    py_modules = pyfiles,
+    packages = find_packages('lib', exclude=["*tests"]),
+    test_suite = 'nose.collector',
+    package_data = {'': ['*.xml', '**/*.xml', '*.pl']},
+    )
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : build.xml 
+Part of     : Helium AntLib
+
+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="pythoncore">
+    <description>Helium unittests.</description>
+    <property name="builder.dir" location="../../builder"/>
+    <import file="${builder.dir}/python/test-macros.ant.xml"/>
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/PythonTest.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,1 @@
+print "test complete!"
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/XX_rnd_rofs2_langpack_01_info.txt	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,7 @@
+Generated `G:/output/release_flash_images/product/rnd/langpack/langpack_01/rofs2/XX_rnd_rofs2_langpack_01_info.txt' for documenting the language selections
+
+Name         : langpack_01
+Default Lang.: English (01)
+Languages    : English French German Italian Portuguese Spanish
+Language IDs : 01 02 03 05 13 04
+Region       : Western
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/ant_config_test.txt	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,4 @@
+
+text.a = text.value.A
+text.b : text.value.B
+text.c : ${text.a}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/ant_config_test.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<config>
+    <foo>bar</foo>
+    <interpolated>foo value = ${foo}</interpolated>
+    <xml>
+        <c>C</c>
+        <d>D</d>
+    </xml>
+    <array>
+        <value>one</value>
+        <value>two</value>
+        <value>three</value>
+    </array>
+</config>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/archive_test_input.cfg.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<build>
+    <config>
+        <set name="max.uncompressed.size" value="2000000"/>
+        <set name="root.dir" value="${env.TEMP}/python"/>
+        <set name="max.files.per.archive" value="65000"/>
+        <set name="archive.tool" value="7za"/>
+        <set name="archives.dir" value="${env.TEMP}"/>
+        <set name="temp.build.dir" value="${env.TEMP}"/>
+        <set name="name" value="python_libs"/>
+        <set name="include" value="lib\*.egg"/>
+    </config>
+</build>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/bom/bom_validate_101_bom.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bom>
+  <build>bom_validate_101</build>
+  <content>
+    <project>
+      <name>wv_domain-bh1spp#wv.91_helium_dev:project:tr1nss#1</name>
+      <database>bh1spp</database>
+      <baseline overridden="false">flashlite_3_1-bh1spp#wv.mcl_200929:project:bh1s60#1</baseline>
+      <baseline overridden="false">helix_flash_video-bh1spp#wv.mcl_200929:project:bh1s60#1</baseline>
+      <baseline overridden="false">webvideo-bh1spp#wv.mcl_200929:project:tr1nss#1</baseline>
+      <baseline overridden="true">wv_domain-bh1spp#wv.mcl_200929:project:tr1nss#1</baseline>
+      <folder>
+        <name overridden="true">bh1spp#1369: swbuild's Assigned Or Completed Tasks for Release wv_domain/wv.91</name>
+      </folder>
+      <folder>
+        <name overridden="true">bh1spp#1594: wv_domain 9.1 All completed tasks</name>
+        <task overridden="false">
+          <id>bh1s60#51236</id>
+          <synopsis>Testing Task for Helium</synopsis>
+          <owner>swbuild</owner>
+        </task>
+      </folder>
+      <folder>
+        <name overridden="true">bh1spp#1635: Created for Helium Testing</name>
+        <task overridden="false">
+          <id>bh1spp#52093</id>
+          <synopsis>Testing Task for Helium</synopsis>
+          <owner>swbuild</owner>
+        </task>
+      </folder>
+    </project>
+    <input>
+      <name>N/A</name>
+      <year>0</year>
+      <week>0</week>
+      <version>N/A</version>
+      <icds/>
+    </input>
+    <input>
+      <name>s60</name>
+      <year>0</year>
+      <week>0</week>
+      <version>None</version>
+      <source>
+        <type>grace</type>
+        <service>s60_devices_sw</service>
+        <product>DFS70.91.91</product>
+        <release>S60.91_200927_hw70</release>
+      </source>
+    </input>
+  </content>
+</bom>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/bom/bom_validate_101_bom_delta.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bomDelta>
+  <buildFrom>bom_validate_100</buildFrom>
+  <buildTo>bom_validate_101</buildTo>
+  <content>
+    <folder status="added" overridden="true">bh1spp#1635: Created for Helium Testing</folder>
+    <task status="added" overridden="false">bh1spp#52093: Testing Task for Helium</task>
+  </content>
+</bomDelta>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/bom/bom_validate_102_bom.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bom>
+  <build>bom_validate_102</build>
+  <content>
+    <project>
+      <name>wv_domain-bh1spp#wv.91_helium_dev:project:tr1nss#1</name>
+      <database>bh1spp</database>
+      <baseline overridden="false">flashlite_3_1-bh1spp#wv.mcl_200929:project:bh1s60#1</baseline>
+      <baseline overridden="false">helix_flash_video-bh1spp#wv.mcl_200929:project:bh1s60#1</baseline>
+      <baseline overridden="false">webvideo-bh1spp#wv.mcl_200929:project:tr1nss#1</baseline>
+      <baseline overridden="true">wv_domain-bh1spp#wv.mcl_200929:project:tr1nss#1</baseline>
+      <folder>
+        <name overridden="true">bh1spp#1369: swbuild's Assigned Or Completed Tasks for Release wv_domain/wv.91</name>
+      </folder>
+      <folder>
+        <name overridden="true">bh1spp#1594: wv_domain 9.1 All completed tasks</name>
+        <task overridden="false">
+          <id>bh1s60#51236</id>
+          <synopsis>Testing Task for Helium</synopsis>
+          <owner>swbuild</owner>
+        </task>
+      </folder>
+    </project>
+    <input>
+      <name>N/A</name>
+      <year>0</year>
+      <week>0</week>
+      <version>N/A</version>
+      <icds/>
+    </input>
+    <input>
+      <name>s60</name>
+      <year>0</year>
+      <week>0</week>
+      <version>None</version>
+      <source>
+        <type>grace</type>
+        <service>s60_devices_sw</service>
+        <product>DFS70.91.91</product>
+        <release>S60.91_200927_hw70</release>
+      </source>
+    </input>
+  </content>
+</bom>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/bom/bom_validate_102_bom_delta.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bomDelta>
+  <buildFrom>bom_validate_101</buildFrom>
+  <buildTo>bom_validate_102</buildTo>
+  <content>
+    <folder status="deleted" overridden="true">bh1spp#1635: Created for Helium Testing</folder>
+    <task status="deleted" overridden="false">bh1spp#52093: Testing Task for Helium</task>
+  </content>
+</bomDelta>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/bom/bom_validate_103_bom.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bom>
+  <build>bom_validate_03</build>
+  <content>
+    <project>
+      <name>wv_domain-bh1spp#wv.91_helium_dev:project:tr1nss#1</name>
+      <database>bh1spp</database>
+      <baseline overridden="false">flashlite_3_1-bh1spp#wv.mcl_200929:project:bh1s60#1</baseline>
+      <baseline overridden="false">helix_flash_video-bh1spp#wv.mcl_200929:project:bh1s60#1</baseline>
+      <baseline overridden="false">webvideo-bh1spp#wv.mcl_200929:project:tr1nss#1</baseline>
+      <baseline overridden="true">wv_domain-bh1spp#wv.mcl_200929:project:tr1nss#1</baseline>
+      <folder>
+        <name overridden="true">bh1spp#1369: swbuild's Assigned Or Completed Tasks for Release wv_domain/wv.91</name>
+      </folder>
+      <folder>
+        <name overridden="true">bh1spp#1594: wv_domain 9.1 All completed tasks</name>
+        <task overridden="false">
+          <id>bh1s60#51236</id>
+          <synopsis>Testing Task for Helium</synopsis>
+          <owner>eswaraia</owner>
+        </task>
+      </folder>
+    </project>
+    <input>
+      <name>N/A</name>
+      <year>0</year>
+      <week>0</week>
+      <version>N/A</version>
+      <icds/>
+    </input>
+    <input>
+      <name>s60</name>
+      <year>0</year>
+      <week>0</week>
+      <version>None</version>
+      <source>
+        <type>grace</type>
+        <service>s60_devices_sw</service>
+        <product>DFS70.91.91</product>
+        <release>S60.91_200927_hw70</release>
+      </source>
+    </input>
+  </content>
+</bom>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/bom/bom_validate_103_bom_delta.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bomDelta>
+  <buildFrom>bom_validate_102</buildFrom>
+  <buildTo>bom_validate_103</buildTo>
+  <content/>
+</bomDelta>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/bom/bom_validate_104_bom_delta.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bomDelta>
+  <buildFrom>bom_validate_101</buildFrom>
+  <buildTo>bom_validate_102</buildTo>
+  <content>
+    <folder status="deleted" overridden="true">bh1spp#1635: Created for Helium Testing</folder>
+    <task status="deleted" overridden="false">bh1spp#52093: Task for Helium</task>
+  </content>
+</bomDelta>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/bom/build_model_bom.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,176 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bom>
+  <build>ido_raptor_mcl_abs_MCL.52.57</build>
+  <content>
+    <project>
+      <name>ABS_domain-abs.mcl_sbs_hewec001:project:tr1s60#1</name>
+      <database>tr1s60</database>
+      <baseline overridden="false">2D_OpenVG_1_0-S60_5.0_2008_wk37_t:project:ou1ape3#1</baseline>
+      <baseline overridden="false">3d_opengl_es_1_1-S60_5.0_2008_wk33:project:ou1ape3#1</baseline>
+      <baseline overridden="true">ABS_domain-abs.mcl_200843:project:tr1s60#1</baseline>
+      <baseline overridden="false">ActiveIdle2-tr1s60#abs.mcl_200843:project:he1s60#1</baseline>
+      <baseline overridden="false">AknGlobalUI-abs.mcl_200843:project:tr1s60#1</baseline>
+      <baseline overridden="false">AknIcon-tr1s60#abs.mcl_200843:project:ccm51#1</baseline>
+      <baseline overridden="false">AknInputLanguage-tr1s60#abs.50_200817:project:ccm51#1</baseline>
+      <baseline overridden="false">AknJapaneseReading-tr1s60#abs.50_200817:project:ccm51#1</baseline>
+      <baseline overridden="false">AknLayoutCompiler-tr1s60#abs.mcl_200839:project:ccm51#1</baseline>
+      <baseline overridden="false">AknPictograph-tr1s60#abs.mcl_200839:project:ccm51#1</baseline>
+      <baseline overridden="false">AknPictographBitmaps-tr1s60#abs.mcl_200839:project:ccm51#1</baseline>
+      <baseline overridden="false">AknSkinContent-tr1s60#abs.mcl_200843:project:ccm51#1</baseline>
+      <baseline overridden="false">AknSkinDescCompiler-tr1s60#abs.50_200813:project:ccm51#1</baseline>
+      <baseline overridden="false">AknSkins-tr1s60#abs.mcl_200843:project:ccm51#1</baseline>
+      <baseline overridden="false">AppShell-tr1s60#abs.mcl_200843:project:ou1s60ui#1</baseline>
+      <baseline overridden="false">Arabica-abs.50_200830:project:tr1s60#1</baseline>
+      <baseline overridden="false">AvKon-tr1s60#abs.mcl_200843:project:ccm51#1</baseline>
+      <baseline overridden="false">Bitmaps2-tr1s60#abs.mcl_200835:project:ccm51#1</baseline>
+      <baseline overridden="false">Charconv-tr1s60#abs.mcl_200843:project:ccm51#1</baseline>
+      <baseline overridden="false">Charconvplugin-tr1s60#abs.50_200813:project:ccm51#1</baseline>
+      <baseline overridden="false">Color-tr1s60#abs.50_200817:project:ccm51#1</baseline>
+      <baseline overridden="false">CommonAdapter-tr1s60#abs.50_200813:project:ccm51#1</baseline>
+      <baseline overridden="false">CommonDialogs-tr1s60#abs.mcl_200843:project:ccm51#1</baseline>
+      <baseline overridden="false">CommonUi-tr1s60#abs.mcl_200843:project:ccm51#1</baseline>
+      <baseline overridden="false">Csxhelp-tr1s60#abs.mcl_200843:project:bh1s60#1</baseline>
+      <baseline overridden="false">DirectoryLocalizerEx-tr1s60#abs.50_200817:project:e003sa01#1</baseline>
+      <baseline overridden="false">EikStd-tr1s60#abs.mcl_200843:project:ccm51#1</baseline>
+      <baseline overridden="false">Exa_CommonDialogs-tr1s60#abs.50_200817:project:e003sa01#1</baseline>
+      <baseline overridden="false">Exa_HierarchicalColumnList-tr1s60#abs.50_200817:project:e003sa01#1</baseline>
+      <baseline overridden="false">Findutil-tr1s60#abs.mcl_200843:project:ccm51#1</baseline>
+      <baseline overridden="false">FontProvider-abs.mcl_200843:project:tr1s60#1</baseline>
+      <baseline overridden="false">GSLangPlugin-abs.mcl_200843:project:tr1s60#1</baseline>
+      <baseline overridden="false">Icons-abs.mcl_200843:project:tr1s60#1</baseline>
+      <baseline overridden="false">JPLangUtil-tr1s60#abs.50_200817:project:ccm51#1</baseline>
+      <baseline overridden="false">Localizer-tr1s60#abs.50_200821:project:ccm51#1</baseline>
+      <baseline overridden="false">M3GCore11-tr1s60#abs.50_200813:project:tr1gfx#1</baseline>
+      <baseline overridden="false">Matsutake-tr1s60#abs.50_200817:project:ccm51#1</baseline>
+      <baseline overridden="false">OemNokia-abs.mcl_200839:project:tr1s60#1</baseline>
+      <baseline overridden="false">Psln-tr1s60#abs.mcl_200841:project:ccm51#1</baseline>
+      <baseline overridden="false">PtiAtokCore-tr1s60#abs.50_200817:project:ccm51#1</baseline>
+      <baseline overridden="false">PtiEngine-tr1s60#abs.mcl_200837:project:ccm51#1</baseline>
+      <baseline overridden="false">PtiT9Core-tr1s60#abs.50_200832:project:ccm51#1</baseline>
+      <baseline overridden="false">PtiT9Core_stub-abs.50_200813:project:tr1s60#1</baseline>
+      <baseline overridden="false">S60Helps-tr1s60#abs.mcl_200841:project:ccm51#1</baseline>
+      <baseline overridden="false">SVGTopt-tr1s60#abs.mcl_200843:project:ccm51#1</baseline>
+      <baseline overridden="false">ServiceHandler-tr1s60#abs.50_200813:project:ccm51#1</baseline>
+      <baseline overridden="false">SortUtil-tr1s60#abs.50_200817:project:ccm51#1</baseline>
+      <baseline overridden="false">SvgtViewerPlugin-tr1s60#abs.mcl_200841:project:bh1s60#1</baseline>
+      <baseline overridden="false">UserDict-tr1s60#abs.50_200813:project:ccm51#1</baseline>
+      <baseline overridden="false">VariatedBitmaps-tr1s60#abs.50_200817:project:ccm51#1</baseline>
+      <baseline overridden="false">XercesC-abs.50_200830:project:tr1s60#1</baseline>
+      <baseline overridden="false">Xuikon-tr1s60#abs.mcl_200843:project:ou1s60ui#1</baseline>
+      <baseline overridden="false">XuikonTestTools-tr1s60#abs.mcl_200839:project:ou1s60ui#1</baseline>
+      <baseline overridden="false">activeidle-tr1s60#abs.mcl_200843:project:he1s60#1</baseline>
+      <baseline overridden="false">aiwconsumerbasics-abs.50_200813:project:tr1s60#1</baseline>
+      <baseline overridden="false">aknfep-tr1s60#abs.mcl_200843:project:ccm51#1</baseline>
+      <baseline overridden="false">aknlayout2-tr1s60#abs.mcl_200843:project:ccm51#1</baseline>
+      <baseline overridden="false">applicationinterworkingfw-abs.50_200813:project:tr1s60#1</baseline>
+      <baseline overridden="false">backsteppingservice-hs_2008w42:project:ou1s60ui#1</baseline>
+      <baseline overridden="false">cdl-tr1s60#abs.mcl_200839:project:ccm51#1</baseline>
+      <baseline overridden="false">cdlcompiler-abs.50_200830:project:tr1s60#1</baseline>
+      <baseline overridden="false">cdlcompilertoolkit-abs.50_200826:project:tr1s60#1</baseline>
+      <baseline overridden="false">classicui-abs.mcl_200843:project:tr1s60#1</baseline>
+      <baseline overridden="false">classicui_dom-abs.mcl_200843:project:tr1s60#1</baseline>
+      <baseline overridden="false">classicui_sdk-abs.mcl_200843:project:tr1s60#1</baseline>
+      <baseline overridden="false">commonuis-abs.mcl_200843:project:tr1s60#1</baseline>
+      <baseline overridden="false">contentpublishingservice-hs_2008w42:project:ou1s60ui#1</baseline>
+      <baseline overridden="false">coreuiapps-abs.mcl_200843:project:tr1s60#1</baseline>
+      <baseline overridden="false">coreuiapps_dom-abs.mcl_200839:project:tr1s60#1</baseline>
+      <baseline overridden="false">eikctl-abs.mcl_200843:project:tr1s60#1</baseline>
+      <baseline overridden="false">fonts-tr1s60#abs.mcl_200843:project:ccm51#1</baseline>
+      <baseline overridden="false">gamerecognizer-tr1s60#abs.50_200817:project:ccm51#1</baseline>
+      <baseline overridden="false">gditools-tr1s60#abs.mcl_200839:project:ccm51#1</baseline>
+      <baseline overridden="false">gfxtools-abs.mcl_200839:project:tr1s60#1</baseline>
+      <baseline overridden="false">graphics-tr1s60#abs.mcl_200843:project:bs1s60#1</baseline>
+      <baseline overridden="false">graphics_dom-abs.mcl_200833:project:tr1s60#1</baseline>
+      <baseline overridden="false">graphicsaccelaration-abs.mcl_200837:project:tr1s60#1</baseline>
+      <baseline overridden="false">graphicsadapt_dom-abs.50_200825_001:project:tr1s60#1</baseline>
+      <baseline overridden="false">graphicsadapt_sdk-abs.50_200813:project:tr1s60#1</baseline>
+      <baseline overridden="false">graphicsadaptations-abs.mcl_200837:project:tr1s60#1</baseline>
+      <baseline overridden="false">graphicsuis-tr1s60#abs.mcl_200841:project:bs1s60#1</baseline>
+      <baseline overridden="false">graphicsuis_dom-abs.mcl_200841:project:tr1s60#1</baseline>
+      <baseline overridden="false">hitchcock-abs.mcl_200839:project:tr1s60#1</baseline>
+      <baseline overridden="false">iconsd-tr1s60#abs.mcl_200833:project:sa1ui#1</baseline>
+      <baseline overridden="false">inputmethods-abs.mcl_200843:project:tr1s60#1</baseline>
+      <baseline overridden="false">inputmethods_dom-abs.mcl_200843:project:tr1s60#1</baseline>
+      <baseline overridden="false">inputmethods_sdk-abs.mcl_200841:project:tr1s60#1</baseline>
+      <baseline overridden="false">layouts-abs.mcl_200843:project:tr1s60#1</baseline>
+      <baseline overridden="false">locales-abs.mcl_200841:project:tr1s60#1</baseline>
+      <baseline overridden="false">loce32-tr1s60#abs.mcl_200841:project:ccm51#1</baseline>
+      <baseline overridden="false">m3gapi-tr1s60#abs.50_200813:project:ou1s60ui#1</baseline>
+      <baseline overridden="false">numbergrouping-tr1s60#abs.50_200826:project:ccm51#1</baseline>
+      <baseline overridden="false">ocrsrv-abs.50_200830:project:tr1s60#1</baseline>
+      <baseline overridden="false">palette-tr1s60#abs.50_200817:project:ccm51#1</baseline>
+      <baseline overridden="false">peninputarc-tr1s60#abs.mcl_200843:project:be1s60pr#1</baseline>
+      <baseline overridden="false">peninputcommonctrls-abs.mcl_200843:project:tr1s60#1</baseline>
+      <baseline overridden="false">peninputcommonlayout-tr1s60#abs.mcl_200843:project:be1s60pr#1</baseline>
+      <baseline overridden="false">peninputgenerichwr-tr1s60#abs.mcl_200843:project:be1s60pr#1</baseline>
+      <baseline overridden="false">peninputgenericitut-abs.mcl_200843:project:tr1s60#1</baseline>
+      <baseline overridden="false">peninputgenericvkb-tr1s60#abs.mcl_200843:project:be1s60pr#1</baseline>
+      <baseline overridden="false">peninputhwrboxcn-abs.mcl_200843:project:tr1s60#1</baseline>
+      <baseline overridden="false">peninputhwrfscn-abs.mcl_200843:project:tr1s60#1</baseline>
+      <baseline overridden="false">peninputhwrtrui-tr1s60#abs.mcl_200843:project:be1s60pr#1</baseline>
+      <baseline overridden="false">peninputvkbcn-abs.mcl_200843:project:tr1s60#1</baseline>
+      <baseline overridden="false">pictographs-abs.mcl_200839:project:tr1s60#1</baseline>
+      <baseline overridden="false">power_save_display_mode_stub-abs.50_200813:project:tr1s60#1</baseline>
+      <baseline overridden="false">pticpicore-tr1s60#abs.mcl_200843:project:be1s60pr#1</baseline>
+      <baseline overridden="false">ptidecumacore-abs.mcl_200843:project:tr1s60#1</baseline>
+      <baseline overridden="false">ptienginev2-abs.mcl_200841:project:tr1s60#1</baseline>
+      <baseline overridden="false">ptihanwangcore-abs.mcl_200837:project:tr1s60#1</baseline>
+      <baseline overridden="false">ptiindicphoneticcore-abs.50_200817:project:tr1s60#1</baseline>
+      <baseline overridden="false">ptivocore-abs.mcl_200843:project:tr1s60#1</baseline>
+      <baseline overridden="false">ptixt9core-abs.50_200830:project:tr1s60#1</baseline>
+      <baseline overridden="false">reszip-tr1s60#abs.50_200817:project:ccm51#1</baseline>
+      <baseline overridden="false">s60config-abs.mcl_200843:project:tr1s60#1</baseline>
+      <baseline overridden="false">sapi_actionhandler-tr1s60#abs.mcl_200843:project:ou1s60ui#1</baseline>
+      <baseline overridden="false">sapi_backstepping-hs_2008w42:project:ou1s60ui#1</baseline>
+      <baseline overridden="false">sapi_contentpublishing-tr1s60#abs.mcl_200843:project:ou1s60ui#1</baseline>
+      <baseline overridden="false">screensaver-tr1s60#abs.mcl_200843:project:ccm51#1</baseline>
+      <baseline overridden="false">skincompiler-abs.50_200813:project:tr1s60#1</baseline>
+      <baseline overridden="false">skins-abs.mcl_200843:project:tr1s60#1</baseline>
+      <baseline overridden="false">srsf-mui.mcl_200843:project:tr1nss#1</baseline>
+      <baseline overridden="false">srsfenginestub-mui.mcl_200843:project:tr1nss#1</baseline>
+      <baseline overridden="false">svgtviewer-tr1s60#abs.mcl_200841:project:bs1s60#1</baseline>
+      <baseline overridden="false">tactileclickplugin_stub-tr1s60#abs.50_200813:project:e003sa01#1</baseline>
+      <baseline overridden="false">tactilefeedback-tr1s60#abs.mcl_200839:project:e003sa01#1</baseline>
+      <baseline overridden="false">textinput-abs.mcl_200843:project:tr1s60#1</baseline>
+      <baseline overridden="false">tfxserver-abs.mcl_200843:project:tr1s60#1</baseline>
+      <baseline overridden="false">themeinstaller-tr1s60#abs.50_200819:project:ou1s60ui#1</baseline>
+      <baseline overridden="false">toollibraries-abs.50_200830:project:tr1s60#1</baseline>
+      <baseline overridden="false">uiaccelerator-abs.mcl_200841:project:tr1s60#1</baseline>
+      <baseline overridden="false">uiacceltk-abs.mcl_200839:project:tr1s60#1</baseline>
+      <baseline overridden="false">uiconfig-abs.mcl_200843:project:tr1s60#1</baseline>
+      <baseline overridden="false">uifw-abs.mcl_200843:project:tr1s60#1</baseline>
+      <baseline overridden="false">uigraphics-abs.mcl_200843:project:tr1s60#1</baseline>
+      <baseline overridden="false">uiklaf-tr1s60#abs.50_200824:project:ccm51#1</baseline>
+      <baseline overridden="false">uiresources-abs.mcl_200843:project:tr1s60#1</baseline>
+      <baseline overridden="false">uiresources_dom-abs.mcl_200843:project:tr1s60#1</baseline>
+      <baseline overridden="false">uiresources_sdk-abs.mcl_200843:project:tr1s60#1</baseline>
+      <baseline overridden="false">uishellservices-tr1s60#abs.mcl_200843:project:bh1s60pm#1</baseline>
+      <baseline overridden="false">uishellservices_dom-tr1s60#abs.mcl_200843:project:bh1s60pm#1</baseline>
+      <baseline overridden="false">uitools-abs.mcl_200839:project:tr1s60#1</baseline>
+      <baseline overridden="false">uitools_dom-abs.mcl_200839:project:tr1s60#1</baseline>
+      <baseline overridden="false">uitools_sdk-abs.50_200817:project:tr1s60#1</baseline>
+      <baseline overridden="false">uiutils-abs.mcl_200843:project:tr1s60#1</baseline>
+      <baseline overridden="false">uniteditorex-abs.50_200817:project:tr1s60#1</baseline>
+      <baseline overridden="false">vcommand-mui.mcl_200843:project:tr1nss#1</baseline>
+      <baseline overridden="false">voiceservices-abs.mcl_200843:project:tr1s60#1</baseline>
+      <baseline overridden="false">voicesrv_dom-abs.mcl_200841:project:tr1s60#1</baseline>
+      <baseline overridden="false">voiceui-mui.mcl_200843:project:tr1nss#1</baseline>
+      <baseline overridden="false">voiceuis-abs.mcl_200843:project:tr1s60#1</baseline>
+      <baseline overridden="false">widgeteditors-tr1s60#abs.50_200819:project:ou1s60ui#1</baseline>
+      <baseline overridden="false">xcfw-tr1s60#abs.mcl_200839:project:ou1s60ui#1</baseline>
+      <baseline overridden="false">xmlui-abs.mcl_200843:project:tr1s60#1</baseline>
+      <baseline overridden="false">xmlui_dom-abs.mcl_200843:project:tr1s60#1</baseline>
+      <baseline overridden="false">xmluifw-abs.mcl_200843:project:tr1s60#1</baseline>
+      <folder>
+        <name overridden="true">tr1s60#5856: all completed tasks for release ABS_domain/abs.mcl for collaborative projects</name>
+        <task overridden="false">
+            <id>e002sa09#10745</id>
+            <synopsis>ActiveIdle2: Error:DPEE-7KEGRT: S60SW Language Variant Testing - E.T.: S60 5.0 PF52.50 wk41: Control panel: Truncation in menu item home screen theme (MCL)</synopsis>
+        </task>
+      </folder>
+      <folder>
+        <name overridden="true">tr1s60#6130: wbernard's Assigned Or Completed Tasks for Release ABS_domain/abs.mcl</name>
+      </folder>
+    </project>
+  </content>
+</bom>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/build/io/abld_what.log	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,20 @@
+=== Stage=3771 == ibusal_chipset_product
+-- abld -what build armv5
+--- EBS_CLIENT3 Executed ID 8616
+++ Started at Thu Sep 20 01:56:51 2007
++++ HiRes Start 1190278611.17028
+Chdir \ncp_sw\spp_core4.0\ibusal_chipset\group\product
+\epoc32\release\ARMV5\UDEB\_product_NaviScrollPdd.pdd
+\epoc32\release\ARMV5\UDEB\_product_NaviScrollPdd.pdd.map
++++ HiRes End 1190278612.21715
+++ Finished at Thu Sep 20 01:56:52 2007
+=== Stage=3771 == ibusal_chipset_product2
+-- abld -what build armv5
+--- EBS_CLIENT1 Executed ID 8617
+++ Started at Thu Sep 20 01:56:51 2007
++++ HiRes Start 1190278611.34216
+Chdir \ncp_sw\spp_core4.0\ibusal_chipset\group\product2
+\epoc32\release\ARMV5\UDEB\_product2_accelerometerpdd.pdd
+\epoc32\release\ARMV5\UDEB\_product2_accelerometerpdd.pdd.map
++++ HiRes End 1190278612.35777
+++ Finished at Thu Sep 20 01:56:52 2007
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/build/io/test_rofs.log	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,10 @@
+File block for dir 'Bootdata' @offs=0x5bf34, size=56
+File block for dir '101F72A6' @offs=0x5bf6c, size=112
+File block for dir 'Fonts' @offs=0x5bfdc, size=210
+File block for dir '101f7a85' @offs=0x5c0b0, size=60
+File block for dir '10009d8f' @offs=0x5c0ec, size=54
+Reading file \epoc32\data\Z\Resource\ICL\jpegcodec_extra.rsc to image
+File '\epoc32\data\Z\Resource\ICL\jpegcodec_extra.rsc' size: 000000ca
+Reading file \epoc32\release\ARMV5\urel\jpegcodec.dll to image
+Original file:'\epoc32\release\ARMV5\urel\jpegcodec.dll' is compressed by method:101f7afc
+Compressed executable File '\epoc32\release\ARMV5\urel\jpegcodec.dll' size: 00015e80, mode:101f7afc
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/build/io/test_rom.log	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,35 @@
+Primary details (Multiple Kernels):
+
+Kernel 1:
+Uids:                    1000007a 1000008b 100041af 6bf50df9
+Entry point:             f8008108
+Code start addr:         f8008000
+Data start addr:         f803dfec
+DataBssLinearBase:       64000000
+Text size:               00035fec
+Code size:               00035fec
+Data size:               000001f8
+BssSize:                 00001a38
+Total data size:         00001c30
+Heap min:                00008000
+Heap max:                00ffc000
+Stack size:              00001000
+Dll ref table:           00000000
+Export directory:        f803a1c8
+Export dir count:        00000328
+Hardware variant:        09080001
+Flags:                   8500002a
+Secure ID:               100041af
+Vendor ID:               70000001
+Capability:              00000000 000fffff
+Tools Version:           2.01(576)
+Module Version:          10.0
+Exception Descriptor:    00000000
+Priority:                350
+
+Summary of file sizes in rom:
+Overhead (bootstrap+gaps+sectioning)	10723
+Overhead (directory size)	25232
+\epoc32\release\ARMV5\urel\__ekern.exe	221788
+\epoc32\release\ARMV5\urel\elocd.ldd	15192
+\epoc32\release\ARMV5\urel\__medint.pdd	2320
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/build/metadata/abld_what_db_test.log	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,40 @@
+=== Stage=3771 == ibusal_chipset_product
+-- abld -what build armv5
+--- EBS_CLIENT3 Executed ID 8616
+++ Started at Thu Sep 20 01:56:51 2007
++++ HiRes Start 1190278611.17028
+Chdir \ncp_sw\spp_core4.0\ibusal_chipset\group\product
+\epoc32\release\ARMV5\UDEB\_product_NaviScrollPdd.pdd
+\epoc32\release\ARMV5\UDEB\_product_NaviScrollPdd.pdd.map
++++ HiRes End 1190278612.21715
+++ Finished at Thu Sep 20 01:56:52 2007
+=== Stage=3771 == ibusal_chipset_product
+-- abld -what build armv5
+--- EBS_CLIENT1 Executed ID 8617
+++ Started at Thu Sep 20 01:56:51 2007
++++ HiRes Start 1190278611.34216
+Chdir \ncp_sw\spp_core4.0\ibusal_chipset\group\product
+\epoc32\release\ARMV5\UDEB\_product_accelerometerpdd.pdd
+\epoc32\release\ARMV5\UDEB\_product_accelerometerpdd.pdd.map
++++ HiRes End 1190278612.35777
+++ Finished at Thu Sep 20 01:56:52 2007
+=== Stage=3771 == test_one
+-- abld -what build armv5
+--- EBS_CLIENT1 Executed ID 8617
+++ Started at Thu Sep 20 01:56:51 2007
++++ HiRes Start 1190278611.34216
+Chdir \ncp_sw\spp_core4.0\ibusal_chipset\group\product
+\epoc32\release\ARMV5\UDEB\foo.dll
+\epoc32\release\ARMV5\UDEB\bar.dll
++++ HiRes End 1190278612.35777
+++ Finished at Thu Sep 20 01:56:52 2007
+=== Stage=3771 == test_two
+-- abld -what build armv5
+--- EBS_CLIENT1 Executed ID 8617
+++ Started at Thu Sep 20 01:56:51 2007
++++ HiRes Start 1190278611.34216
+Chdir \ncp_sw\spp_core4.0\ibusal_chipset\group\product
+\epoc32\release\ARMV5\UDEB\foo.dll
+\epoc32\release\ARMV5\UDEB\bar.dll
++++ HiRes End 1190278612.35777
+++ Finished at Thu Sep 20 01:56:52 2007
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/comments_test.bat	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,4 @@
+REM <branchInfo originator="cishih">
+REM Testing if it's good~~~
+REM </branchInfo>
+REM BRANCH 17-09-07 :cishih
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/comments_test.cpp	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,6 @@
+// <branchInfo originator="prozeniu" error="wiki-07wk24-311" since="07-06-14" category="fix">
+// We need TwistOpen and TwistClose to cause display to change between
+// landscape and portrait, but SysAp is consuming the key events.  Try
+// treating them as Flip events are handled already by SysAp.
+// </branchInfo>
+// BRANCH 07-06-14
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/comments_test.h	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,5 @@
+// <branchInfo originator="prozeniu" error="wiki-07wk24-311" since="07-06-14" category="fix">
+// We need TwistOpen and TwistClose to cause display to change between
+// landscape and portrait, but SysAp is consuming the key events.  Try
+// treating them as Flip events are handled already by SysAp.
+// </branchInfo>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/comments_test.hrh	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,4 @@
+// <branchInfo>
+// puikko ME SCD DeSW: wk21 Flag fix
+// </branchInfo>
+// BRANCH 07-06-06
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/comments_test.iby	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,5 @@
+// <branchInfo originator="prozeniu" error="wiki-07wk22-002" since="07-05-22" category="fix">
+// Since Catalogs is not compiling at this point, and we are not building it, don't try to
+// pull it into the rom.  Also, tfxserver is crashing, so don't build or pull it in either.
+// </branchInfo>
+// BRANCH 07-05-22
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/comments_test.inf	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,4 @@
+// <branchInfo originator="wbernard">
+// Fix target export, which cause issue when cleanexport.
+// </branchInfo>
+// BRANCH 07-02-07
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/comments_test.java	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,4 @@
+// <branchInfo>
+// Test info, so whatever~
+// </branchInfo>
+// BRANCH  17-09-07 :cishih
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/comments_test.mk	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,4 @@
+# <branchInfo originator="rmetcalf" error="rm-wiki-060530-6" since="06-05-30" category="build_from_source">
+# Move command to makmake as EBS does not call abld build
+# </branchInfo>
+# BRANCH 06-05-30
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/comments_test.mmp	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,4 @@
+//<branchInfo originator="suchatte" since="07-04-16" category="merge"> 
+//Activate PCFW for Screensaver 
+//</branchInfo> 
+// BRANCH 07-04-16: suchatte
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/comments_test.pl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,4 @@
+# <branchInfo originator="wbernard">
+# Support SPP mechanism for flags support.
+# </branchInfo>
+# BRANCH 07-05-08
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/comments_test.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,4 @@
+# <branchInfo originator="cishih">
+# Again, it is just a test
+# </branchInfo>
+# BRANCH 17-09-07 :cishih
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/comments_test.txt	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,4 @@
+//<branchInfo originator="sanummel" since="07-03-22" category="" error="kkk"> 
+//Add rofsfiles for usage in paged images
+//</branchInfo> 
+// BRANCH 07-03-22: sanummel
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/comments_test.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,2 @@
+<!-- <branchInfo originator="broum">Enabling all the HWRM light zones target for product</branchInfo> -->
+	<!-- BRANCH 07-05-17 -->
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/comments_test1.cmd	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,4 @@
+REM <branchInfo originator="marhyvon" since="22-02-07" category="new feature" error="foobar123">
+REM k
+REM </branchInfo>
+REM BRANCH 22-02-07 :marhyvon
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/comments_test2.cmd	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,3 @@
+#<branchInfo originator="marhyvon" since="22-02-07" category="new feature" error="foobar123">
+#</branchInfo>
+# BRANCH 22-02-07 :marhyvon
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/compile/logs/test_build.log	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,462 @@
+===-------------------------------------------------
+=== Stage=1
+===-------------------------------------------------
+=== Stage=1 started Thu Jan 28 13:23:40 2010
+=== Stage=1 == posmsgpluginreferenceimpl
+-- bldmake bldfiles -keepgoing
+--- EBS_CLIENT5 Executed ID 5
+++ Started at Thu Jan 28 13:23:41 2010
++++ HiRes Start 1264665221.03126
+Chdir \s60/adaptation/stubs/posmsgpluginreferenceimpl/group
++++ HiRes End 1264665227.49992
+++ Finished at Thu Jan 28 13:23:47 2010
+=== Stage=1 == locationtools
+-- bldmake bldfiles -keepgoing
+--- EBS_CLIENT6 Executed ID 6
+++ Started at Thu Jan 28 13:23:41 2010
++++ HiRes Start 1264665221.04688
+Chdir \s60/tools/locationtools/group
++++ HiRes End 1264665228.43741
+++ Finished at Thu Jan 28 13:23:48 2010
+=== Stage=1 == locationrefapp
+-- bldmake bldfiles -keepgoing
+--- EBS_CLIENT2 Executed ID 4
+++ Started at Thu Jan 28 13:23:41 2010
++++ HiRes Start 1264665221.03126
+Chdir \s60/refapp/locationrefapp/group
++++ HiRes End 1264665228.45304
+++ Finished at Thu Jan 28 13:23:48 2010
+=== Stage=1 == location
+-- bldmake bldfiles -keepgoing
+--- EBS_CLIENT1 Executed ID 3
+++ Started at Thu Jan 28 13:23:41 2010
++++ HiRes Start 1264665221.03126
+Chdir \s60/app/location/group
++++ HiRes End 1264665229.93739
+++ Finished at Thu Jan 28 13:23:49 2010
+=== Stage=1 == locationextensions
+-- bldmake bldfiles -keepgoing
+--- EBS_CLIENT7 Executed ID 1
+++ Started at Thu Jan 28 13:23:40 2010
++++ HiRes Start 1264665220.90626
+Chdir \s60/osext/locationextensions/group
++++ HiRes End 1264665230.49989
+++ Finished at Thu Jan 28 13:23:50 2010
+=== Stage=1 == locationservices
+-- bldmake bldfiles -keepgoing
+--- EBS_CLIENT3 Executed ID 2
+++ Started at Thu Jan 28 13:23:41 2010
++++ HiRes Start 1264665221.01563
+Chdir \s60/mw/locationservices/group
++++ HiRes End 1264665233.57797
+++ Finished at Thu Jan 28 13:23:53 2010
+=== Stage=1 finished Thu Jan 28 13:23:53 2010
+===-------------------------------------------------
+=== Stage=2
+===-------------------------------------------------
+=== Stage=2 started Thu Jan 28 13:23:53 2010
+=== Stage=2 == locationtools
+-- abld export -keepgoing
+--- EBS_CLIENT5 Executed ID 12
+++ Started at Thu Jan 28 13:23:53 2010
++++ HiRes Start 1264665233.57797
+Chdir \s60/tools/locationtools/group
+  make -r  -k -f "\EPOC32\BUILD\s60\tools\locationtools\group\EXPORT.make" EXPORT VERBOSE=-s KEEPGOING=-k
+make: Nothing to done for `EXPORT'.
++++ HiRes End 1264665235.18733
+++ Finished at Thu Jan 28 13:23:55 2010
+=== Stage=2 == location
+-- abld export -keepgoing
+--- EBS_CLIENT2 Executed ID 9
+++ Started at Thu Jan 28 13:23:53 2010
++++ HiRes Start 1264665233.57797
+Chdir \s60/app/location/group
+  make -r  -k -f "\EPOC32\BUILD\s60\app\location\group\EXPORT.make" EXPORT VERBOSE=-s KEEPGOING=-k
+make: Nothing to done for `EXPORT'.
++++ HiRes End 1264665235.24983
+++ Finished at Thu Jan 28 13:23:55 2010
+=== Stage=2 == locationextensions
+-- abld export -keepgoing
+--- EBS_CLIENT0 Executed ID 7
+++ Started at Thu Jan 28 13:23:53 2010
++++ HiRes Start 1264665233.57797
+Chdir \s60/osext/locationextensions/group
+  make -r  -k -f "\EPOC32\BUILD\s60\osext\locationextensions\group\EXPORT.make" EXPORT VERBOSE=-s KEEPGOING=-k
+make: Nothing to done for `EXPORT'.
++++ HiRes End 1264665235.28108
+++ Finished at Thu Jan 28 13:23:55 2010
+=== Stage=2 == locationservices
+-- abld export -keepgoing
+--- EBS_CLIENT1 Executed ID 8
+++ Started at Thu Jan 28 13:23:53 2010
++++ HiRes Start 1264665233.57797
+Chdir \s60/mw/locationservices/group
+  make -r  -k -f "\EPOC32\BUILD\s60\mw\locationservices\group\EXPORT.make" EXPORT VERBOSE=-s KEEPGOING=-k
+copy "\s60\mw\locationservices\supl\locationomasuplprotocolhandler\asnconverter\inc\epos_comasuplasndecoder.h" "\s60\mw\locationservices\supl\locationomasuplprotocolhandler\inc\epos_comasuplasndecoder.h"
+        1 file(s) copied.
+copy "\s60\mw\locationservices\supl\locationomasuplprotocolhandler\asnconverter\inc\epos_comasuplasnmessagebase.h" "\s60\mw\locationservices\supl\locationomasuplprotocolhandler\inc\epos_comasuplasnmessagebase.h"
+        1 file(s) copied.
+copy "\s60\mw\locationservices\supl\locationomasuplprotocolhandler\asnconverter\inc\epos_comasuplend.h" "\s60\mw\locationservices\supl\locationomasuplprotocolhandler\inc\epos_comasuplend.h"
+        1 file(s) copied.
+copy "\s60\mw\locationservices\supl\locationomasuplprotocolhandler\asnconverter\inc\epos_comasuplinit.h" "\s60\mw\locationservices\supl\locationomasuplprotocolhandler\inc\epos_comasuplinit.h"
+        1 file(s) copied.
+copy "\s60\mw\locationservices\supl\locationomasuplprotocolhandler\asnconverter\inc\epos_comasupllocationid.h" "\s60\mw\locationservices\supl\locationomasuplprotocolhandler\inc\epos_comasupllocationid.h"
+        1 file(s) copied.
+copy "\s60\mw\locationservices\supl\locationomasuplprotocolhandler\asnconverter\inc\epos_comasuplnotification.h" "\s60\mw\locationservices\supl\locationomasuplprotocolhandler\inc\epos_comasuplnotification.h"
+        1 file(s) copied.
+copy "\s60\mw\locationservices\supl\locationomasuplprotocolhandler\asnconverter\inc\epos_comasuplpos.h" "\s60\mw\locationservices\supl\locationomasuplprotocolhandler\inc\epos_comasuplpos.h"
+        1 file(s) copied.
+copy "\s60\mw\locationservices\supl\locationomasuplprotocolhandler\asnconverter\inc\epos_comasuplposinit.h" "\s60\mw\locationservices\supl\locationomasuplprotocolhandler\inc\epos_comasuplposinit.h"
+        1 file(s) copied.
+copy "\s60\mw\locationservices\supl\locationomasuplprotocolhandler\asnconverter\inc\epos_comasuplresponse.h" "\s60\mw\locationservices\supl\locationomasuplprotocolhandler\inc\epos_comasuplresponse.h"
+        1 file(s) copied.
+copy "\s60\mw\locationservices\supl\locationomasuplprotocolhandler\asnconverter\inc\epos_comasuplauthresponse.h" "\s60\mw\locationservices\supl\locationomasuplprotocolhandler\inc\epos_comasuplauthresponse.h"
+        1 file(s) copied.
+copy "\s60\mw\locationservices\supl\locationomasuplprotocolhandler\asnconverter\inc\epos_comasuplauthrequest.h" "\s60\mw\locationservices\supl\locationomasuplprotocolhandler\inc\epos_comasuplauthrequest.h"
+        1 file(s) copied.
+copy "\s60\mw\locationservices\supl\locationomasuplprotocolhandler\asnconverter\inc\epos_comasuplsessionid.h" "\s60\mw\locationservices\supl\locationomasuplprotocolhandler\inc\epos_comasuplsessionid.h"
+        1 file(s) copied.
+copy "\s60\mw\locationservices\supl\locationomasuplprotocolhandler\asnconverter\inc\epos_comasuplstart.h" "\s60\mw\locationservices\supl\locationomasuplprotocolhandler\inc\epos_comasuplstart.h"
+        1 file(s) copied.
+copy "\s60\mw\locationservices\supl\locationomasuplprotocolhandler\asnconverter\inc\epos_suplconstants.h" "\s60\mw\locationservices\supl\locationomasuplprotocolhandler\inc\epos_suplconstants.h"
+        1 file(s) copied.
+copy "\s60\mw\locationservices\supl\locationomasuplprotocolhandler\asnconverter\inc\epos_tomasuplposmethod.h" "\s60\mw\locationservices\supl\locationomasuplprotocolhandler\inc\epos_tomasuplposmethod.h"
+        1 file(s) copied.
+copy "\s60\mw\locationservices\supl\locationomasuplprotocolhandler\asnconverter\inc\epos_tomasuplqop.h" "\s60\mw\locationservices\supl\locationomasuplprotocolhandler\inc\epos_tomasuplqop.h"
+        1 file(s) copied.
+copy "\s60\mw\locationservices\supl\locationomasuplprotocolhandler\asnconverter\inc\epos_tomasuplecellinfo.h" "\s60\mw\locationservices\supl\locationomasuplprotocolhandler\inc\epos_tomasuplecellinfo.h"
+        1 file(s) copied.
++++ HiRes End 1264665236.84356
+++ Finished at Thu Jan 28 13:23:56 2010
+=== Stage=2 == posmsgpluginreferenceimpl
+-- abld export -keepgoing
+--- EBS_CLIENT4 Executed ID 11
+++ Started at Thu Jan 28 13:23:53 2010
++++ HiRes Start 1264665233.57797
+Chdir \s60/adaptation/stubs/posmsgpluginreferenceimpl/group
+  make -r  -k -f "\EPOC32\BUILD\s60\adaptation\stubs\posmsgpluginreferenceimpl\group\EXPORT.make" EXPORT VERBOSE=-s KEEPGOING=-k
+Nothing to do
++++ HiRes End 1264665238.60916
+++ Finished at Thu Jan 28 13:23:58 2010
+=== Stage=2 == locationrefapp
+-- abld export -keepgoing
+--- EBS_CLIENT3 Executed ID 10
+++ Started at Thu Jan 28 13:23:53 2010
++++ HiRes Start 1264665233.57797
+Chdir \s60/refapp/locationrefapp/group
+  make -r  -k -f "\EPOC32\BUILD\s60\refapp\locationrefapp\group\EXPORT.make" EXPORT VERBOSE=-s KEEPGOING=-k
+Nothing to do
++++ HiRes End 1264665238.62478
+++ Finished at Thu Jan 28 13:23:58 2010
+=== Stage=2 finished Thu Jan 28 13:23:58 2010
+===-------------------------------------------------
+=== Stage=3
+===-------------------------------------------------
+=== Stage=3 started Thu Jan 28 13:23:58 2010
+=== Stage=3 == location
+-- abld makefile -keepgoing tools
+--- EBS_CLIENT2 Executed ID 15
+++ Started at Thu Jan 28 13:23:58 2010
++++ HiRes Start 1264665238.62478
+Chdir \s60/app/location/group
+This project does not support platform or  program "TOOLS"
++++ HiRes End 1264665240.03101
+++ Finished at Thu Jan 28 13:24:00 2010
+=== Stage=3 == posmsgpluginreferenceimpl
+-- abld makefile -keepgoing tools
+--- EBS_CLIENT4 Executed ID 17
+++ Started at Thu Jan 28 13:23:58 2010
++++ HiRes Start 1264665238.62478
+Chdir \s60/adaptation/stubs/posmsgpluginreferenceimpl/group
+This project does not support platform or  program "TOOLS"
++++ HiRes End 1264665240.04664
+++ Finished at Thu Jan 28 13:24:00 2010
+=== Stage=3 == locationtools
+-- abld makefile -keepgoing tools
+--- EBS_CLIENT5 Executed ID 18
+++ Started at Thu Jan 28 13:23:58 2010
++++ HiRes Start 1264665238.62478
+Chdir \s60/tools/locationtools/group
+This project does not support platform or  program "TOOLS"
++++ HiRes End 1264665240.12476
+++ Finished at Thu Jan 28 13:24:00 2010
+=== Stage=3 == locationextensions
+-- abld makefile -keepgoing tools
+--- EBS_CLIENT0 Executed ID 13
+++ Started at Thu Jan 28 13:23:58 2010
++++ HiRes Start 1264665238.62478
+Chdir \s60/osext/locationextensions/group
+This project does not support platform or  program "TOOLS"
++++ HiRes End 1264665240.12476
+++ Finished at Thu Jan 28 13:24:00 2010
+=== Stage=3 == locationservices
+-- abld makefile -keepgoing tools
+--- EBS_CLIENT1 Executed ID 14
+++ Started at Thu Jan 28 13:23:58 2010
++++ HiRes Start 1264665238.62478
+Chdir \s60/mw/locationservices/group
+This project does not support platform or  program "TOOLS"
++++ HiRes End 1264665240.18726
+++ Finished at Thu Jan 28 13:24:00 2010
+=== Stage=3 == locationrefapp
+-- abld makefile -keepgoing tools
+--- EBS_CLIENT3 Executed ID 16
+++ Started at Thu Jan 28 13:23:58 2010
++++ HiRes Start 1264665238.62478
+Chdir \s60/refapp/locationrefapp/group
+This project does not support platform or  program "TOOLS"
++++ HiRes End 1264665240.20289
+++ Finished at Thu Jan 28 13:24:00 2010
+=== Stage=3 finished Thu Jan 28 13:24:00 2010
+===-------------------------------------------------
+=== Stage=4
+===-------------------------------------------------
+=== Stage=4 started Thu Jan 28 13:24:00 2010
+=== Stage=4 == locationextensions
+-- abld library -keepgoing tools
+--- EBS_CLIENT0 Executed ID 19
+++ Started at Thu Jan 28 13:24:00 2010
++++ HiRes Start 1264665240.21851
+Chdir \s60/osext/locationextensions/group
+This project does not support platform or  program "TOOLS"
++++ HiRes End 1264665240.79663
+++ Finished at Thu Jan 28 13:24:00 2010
+=== Stage=4 finished Thu Jan 28 13:24:00 2010
+===-------------------------------------------------
+=== Stage=5
+===-------------------------------------------------
+=== Stage=5 started Thu Jan 28 13:24:00 2010
+=== Stage=5 == locationservices
+-- abld library -keepgoing tools
+--- EBS_CLIENT0 Executed ID 20
+++ Started at Thu Jan 28 13:24:00 2010
++++ HiRes Start 1264665240.79663
+Chdir \s60/mw/locationservices/group
+This project does not support platform or  program "TOOLS"
++++ HiRes End 1264665241.406
+++ Finished at Thu Jan 28 13:24:01 2010
+=== Stage=5 finished Thu Jan 28 13:24:01 2010
+===-------------------------------------------------
+=== Stage=6
+===-------------------------------------------------
+=== Stage=6 started Thu Jan 28 13:24:01 2010
+=== Stage=6 == location
+-- abld library -keepgoing tools
+--- EBS_CLIENT0 Executed ID 21
+++ Started at Thu Jan 28 13:24:01 2010
++++ HiRes Start 1264665241.406
+Chdir \s60/app/location/group
+This project does not support platform or  program "TOOLS"
++++ HiRes End 1264665241.99974
+++ Finished at Thu Jan 28 13:24:01 2010
+=== Stage=6 finished Thu Jan 28 13:24:01 2010
+===-------------------------------------------------
+=== Stage=7
+===-------------------------------------------------
+=== Stage=7 started Thu Jan 28 13:24:01 2010
+=== Stage=7 == locationrefapp
+-- abld library -keepgoing tools
+--- EBS_CLIENT0 Executed ID 22
+++ Started at Thu Jan 28 13:24:01 2010
++++ HiRes Start 1264665241.99974
+Chdir \s60/refapp/locationrefapp/group
+This project does not support platform or  program "TOOLS"
++++ HiRes End 1264665242.59348
+++ Finished at Thu Jan 28 13:24:02 2010
+=== Stage=7 finished Thu Jan 28 13:24:02 2010
+===-------------------------------------------------
+=== Stage=8
+===-------------------------------------------------
+=== Stage=8 started Thu Jan 28 13:24:02 2010
+=== Stage=8 == posmsgpluginreferenceimpl
+-- abld library -keepgoing tools
+--- EBS_CLIENT0 Executed ID 23
+++ Started at Thu Jan 28 13:24:02 2010
++++ HiRes Start 1264665242.59348
+Chdir \s60/adaptation/stubs/posmsgpluginreferenceimpl/group
+This project does not support platform or  program "TOOLS"
++++ HiRes End 1264665243.18723
+++ Finished at Thu Jan 28 13:24:03 2010
+=== Stage=8 finished Thu Jan 28 13:24:03 2010
+===-------------------------------------------------
+=== Stage=9
+===-------------------------------------------------
+=== Stage=9 started Thu Jan 28 13:24:03 2010
+=== Stage=9 == locationtools
+-- abld library -keepgoing tools
+--- EBS_CLIENT0 Executed ID 24
+++ Started at Thu Jan 28 13:24:03 2010
++++ HiRes Start 1264665243.18723
+Chdir \s60/tools/locationtools/group
+This project does not support platform or  program "TOOLS"
++++ HiRes End 1264665243.78097
+++ Finished at Thu Jan 28 13:24:03 2010
+=== Stage=9 finished Thu Jan 28 13:24:03 2010
+===-------------------------------------------------
+=== Stage=10
+===-------------------------------------------------
+=== Stage=10 started Thu Jan 28 13:24:03 2010
+=== Stage=10 == locationextensions
+-- abld target -keepgoing tools rel
+--- EBS_CLIENT0 Executed ID 25
+++ Started at Thu Jan 28 13:24:03 2010
++++ HiRes Start 1264665243.78097
+Chdir \s60/osext/locationextensions/group
+This project does not support platform, build or  program "TOOLS"
++++ HiRes End 1264665244.35909
+++ Finished at Thu Jan 28 13:24:04 2010
+=== Stage=10 finished Thu Jan 28 13:24:04 2010
+===-------------------------------------------------
+=== Stage=11
+===-------------------------------------------------
+=== Stage=11 started Thu Jan 28 13:24:04 2010
+=== Stage=11 == locationservices
+-- abld target -keepgoing tools rel
+--- EBS_CLIENT0 Executed ID 26
+++ Started at Thu Jan 28 13:24:04 2010
++++ HiRes Start 1264665244.35909
+Chdir \s60/mw/locationservices/group
+This project does not support platform, build or  program "TOOLS"
++++ HiRes End 1264665244.95283
+++ Finished at Thu Jan 28 13:24:04 2010
+=== Stage=11 finished Thu Jan 28 13:24:04 2010
+===-------------------------------------------------
+=== Stage=12
+===-------------------------------------------------
+=== Stage=12 started Thu Jan 28 13:24:04 2010
+=== Stage=12 == location
+-- abld target -keepgoing tools rel
+--- EBS_CLIENT0 Executed ID 27
+++ Started at Thu Jan 28 13:24:04 2010
++++ HiRes Start 1264665244.95283
+Chdir \s60/app/location/group
+This project does not support platform, build or  program "TOOLS"
++++ HiRes End 1264665245.53095
+++ Finished at Thu Jan 28 13:24:05 2010
+=== Stage=12 finished Thu Jan 28 13:24:05 2010
+===-------------------------------------------------
+=== Stage=13
+===-------------------------------------------------
+=== Stage=13 started Thu Jan 28 13:24:05 2010
+=== Stage=13 == locationrefapp
+-- abld target -keepgoing tools rel
+--- EBS_CLIENT0 Executed ID 28
+++ Started at Thu Jan 28 13:24:05 2010
++++ HiRes Start 1264665245.53095
+Chdir \s60/refapp/locationrefapp/group
+This project does not support platform, build or  program "TOOLS"
++++ HiRes End 1264665246.10906
+++ Finished at Thu Jan 28 13:24:06 2010
+=== Stage=13 finished Thu Jan 28 13:24:06 2010
+===-------------------------------------------------
+=== Stage=14
+===-------------------------------------------------
+=== Stage=14 started Thu Jan 28 13:24:06 2010
+=== Stage=14 == posmsgpluginreferenceimpl
+-- abld target -keepgoing tools rel
+--- EBS_CLIENT0 Executed ID 29
+++ Started at Thu Jan 28 13:24:06 2010
++++ HiRes Start 1264665246.10906
+Chdir \s60/adaptation/stubs/posmsgpluginreferenceimpl/group
+This project does not support platform, build or  program "TOOLS"
++++ HiRes End 1264665246.71843
+++ Finished at Thu Jan 28 13:24:06 2010
+=== Stage=14 finished Thu Jan 28 13:24:06 2010
+===-------------------------------------------------
+=== Stage=15
+===-------------------------------------------------
+=== Stage=15 started Thu Jan 28 13:24:06 2010
+=== Stage=15 == locationtools
+-- abld target -keepgoing tools rel
+--- EBS_CLIENT0 Executed ID 30
+++ Started at Thu Jan 28 13:24:06 2010
++++ HiRes Start 1264665246.71843
+Chdir \s60/tools/locationtools/group
+This project does not support platform, build or  program "TOOLS"
++++ HiRes End 1264665247.29655
+++ Finished at Thu Jan 28 13:24:07 2010
+=== Stage=15 finished Thu Jan 28 13:24:07 2010
+===-------------------------------------------------
+=== Stage=16
+===-------------------------------------------------
+=== Stage=16 started Thu Jan 28 13:24:07 2010
+=== Stage=16 == locationextensions
+-- abld final -keepgoing tools rel
+--- EBS_CLIENT0 Executed ID 31
+++ Started at Thu Jan 28 13:24:07 2010
++++ HiRes Start 1264665247.29655
+Chdir \s60/osext/locationextensions/group
+This project does not support platform, build or  program "TOOLS"
++++ HiRes End 1264665247.89029
+++ Finished at Thu Jan 28 13:24:07 2010
+=== Stage=16 finished Thu Jan 28 13:24:07 2010
+===-------------------------------------------------
+=== Stage=17
+===-------------------------------------------------
+=== Stage=17 started Thu Jan 28 13:24:07 2010
+=== Stage=17 == locationservices
+-- abld final -keepgoing tools rel
+--- EBS_CLIENT0 Executed ID 32
+++ Started at Thu Jan 28 13:24:07 2010
++++ HiRes Start 1264665247.89029
+Chdir \s60/mw/locationservices/group
+This project does not support platform, build or  program "TOOLS"
++++ HiRes End 1264665248.48403
+++ Finished at Thu Jan 28 13:24:08 2010
+=== Stage=17 finished Thu Jan 28 13:24:08 2010
+===-------------------------------------------------
+=== Stage=18
+===-------------------------------------------------
+=== Stage=18 started Thu Jan 28 13:24:08 2010
+=== Stage=18 == location
+-- abld final -keepgoing tools rel
+--- EBS_CLIENT0 Executed ID 33
+++ Started at Thu Jan 28 13:24:08 2010
++++ HiRes Start 1264665248.48403
+Chdir \s60/app/location/group
+This project does not support platform, build or  program "TOOLS"
++++ HiRes End 1264665249.07777
+++ Finished at Thu Jan 28 13:24:09 2010
+=== Stage=18 finished Thu Jan 28 13:24:09 2010
+===-------------------------------------------------
+=== Stage=19
+===-------------------------------------------------
+=== Stage=19 started Thu Jan 28 13:24:09 2010
+=== Stage=19 == locationrefapp
+-- abld final -keepgoing tools rel
+--- EBS_CLIENT0 Executed ID 34
+++ Started at Thu Jan 28 13:24:09 2010
++++ HiRes Start 1264665249.07777
+Chdir \s60/refapp/locationrefapp/group
+This project does not support platform, build or  program "TOOLS"
++++ HiRes End 1264665249.67152
+++ Finished at Thu Jan 28 13:24:09 2010
+=== Stage=19 finished Thu Jan 28 13:24:09 2010
+===-------------------------------------------------
+=== Stage=20
+===-------------------------------------------------
+=== Stage=20 started Thu Jan 28 13:24:09 2010
+=== Stage=20 == posmsgpluginreferenceimpl
+-- abld final -keepgoing tools rel
+--- EBS_CLIENT0 Executed ID 35
+++ Started at Thu Jan 28 13:24:09 2010
++++ HiRes Start 1264665249.67152
+Chdir \s60/adaptation/stubs/posmsgpluginreferenceimpl/group
+This project does not support platform, build or  program "TOOLS"
++++ HiRes End 1264665250.24963
+++ Finished at Thu Jan 28 13:24:10 2010
+=== Stage=20 finished Thu Jan 28 13:24:10 2010
+===-------------------------------------------------
+=== Stage=21
+===-------------------------------------------------
+=== Stage=21 started Thu Jan 28 13:24:10 2010
+=== Stage=21 == locationtools
+-- abld final -keepgoing tools rel
+--- EBS_CLIENT0 Executed ID 36
+++ Started at Thu Jan 28 13:24:10 2010
++++ HiRes Start 1264665250.24963
+Chdir \s60/tools/locationtools/group
+This project does not support platform, build or  program "TOOLS"
++++ HiRes End 1264665250.82775
+++ Finished at Thu Jan 28 13:24:10 2010
+=== Stage=21 finished Thu Jan 28 13:24:10 2010
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/compile/logs/test_build_compile.log	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,32 @@
+===-------------------------------------------------
+=== Stage=40
+===-------------------------------------------------
+=== Stage=40 started Mon Nov 30 17:17:24 2009
+=== Stage=40 == devicecontentservices
+-- abld -what build armv5
+--- EBS_CLIENT1 Executed ID 56
+++ Started at Mon Nov 30 17:17:24 2009
++++ HiRes Start 1259581644.81704
+Chdir \s60/mw/devicecontentservices/group
+\epoc32\rom\config\confml_data\s60\policy_management.confml
+\epoc32\release\ARMV5\UREL\ProvisioningSC.EXE
+\epoc32\release\ARMV5\UREL\ProvisioningSC.EXE.map
++++ HiRes End 1259581667.42685
+++ Finished at Mon Nov 30 17:17:47 2009
+=== Stage=40 finished Mon Nov 30 17:17:47 2009
+===-------------------------------------------------
+=== Stage=41
+===-------------------------------------------------
+=== Stage=41 started Mon Nov 30 17:17:24 2009
+=== Stage=41 == devicecontrol
+-- abld -what build armv5
+--- EBS_CLIENT1 Executed ID 56
+++ Started at Mon Nov 30 17:17:24 2009
++++ HiRes Start 1259581644.81704
+Chdir \s60/mw/devicecontrol/group
+\epoc32\rom\config\confml_data\s60\policy_management.confml
+\epoc32\release\ARMV5\UREL\ProvisioningSC.EXE
+\epoc32\release\ARMV5\UREL\ProvisioningSC.EXE.map
++++ HiRes End 1259581667.42685
+++ Finished at Mon Nov 30 17:17:47 2009
+=== Stage=41 finished Mon Nov 30 17:17:47 2009
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/compile/logs/test_build_compile_linux.log	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,32 @@
+===-------------------------------------------------
+=== Stage=40
+===-------------------------------------------------
+=== Stage=40 started Mon Nov 30 17:17:24 2009
+=== Stage=40 == devicecontentservices
+-- abld -what build armv5
+--- EBS_CLIENT1 Executed ID 56
+++ Started at Mon Nov 30 17:17:24 2009
++++ HiRes Start 1259581644.81704
+Chdir /s60/mw/devicecontentservices/group
+/epoc32/rom/config/confml_data/s60/policy_management.confml
+/epoc32/release/ARMV5/UREL/ProvisioningSC.EXE
+/epoc32/release/ARMV5/UREL/ProvisioningSC.EXE.map
++++ HiRes End 1259581667.42685
+++ Finished at Mon Nov 30 17:17:47 2009
+=== Stage=40 finished Mon Nov 30 17:17:47 2009
+===-------------------------------------------------
+=== Stage=41
+===-------------------------------------------------
+=== Stage=41 started Mon Nov 30 17:17:24 2009
+=== Stage=41 == devicecontrol
+-- abld -what build armv5
+--- EBS_CLIENT1 Executed ID 56
+++ Started at Mon Nov 30 17:17:24 2009
++++ HiRes Start 1259581644.81704
+Chdir /s60/mw/devicecontrol/group
+/epoc32/rom/config/confml_data/s60/policy_management.confml
+/epoc32/release/ARMV5/UREL/ProvisioningSC.EXE
+/epoc32/release/ARMV5/UREL/ProvisioningSC.EXE.map
++++ HiRes End 1259581667.42685
+++ Finished at Mon Nov 30 17:17:47 2009
+=== Stage=41 finished Mon Nov 30 17:17:47 2009
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/compile/sysdefs/build.sysdef.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,837 @@
+<?xml version="1.0"?>
+<!DOCTYPE SystemDefinition SYSTEM "sysdef_1_4_0.dtd" []>
+
+<SystemDefinition name="domain_build" schema="1.4.0">
+
+  <systemModel>
+
+<!-- START: New layer versions -->
+    <layer name="stubs_layer">
+    </layer>    
+
+    <layer name="complementary_layer">
+    </layer>    
+
+    <layer name="app_layer">
+    </layer>    
+
+    <layer name="mw_layer">
+    </layer>    
+
+    <layer name="os_layer">
+    </layer>    
+
+    <layer name="tools_layer">
+    </layer>    
+
+    <layer name="bldmefirst_layer">
+    </layer>
+
+    <layer name="bldmelast_layer">
+    </layer>
+
+    <layer name="addon_layer">
+    </layer>
+
+    <layer name="clean_only_layer">
+    </layer>
+
+    <layer name="bldfirst_mw_layer">
+    </layer>
+
+    <layer name="bldfirst_app_layer">
+    </layer>
+
+    <layer name="api_test_layer">
+    </layer>
+
+    <layer name="unit_test_layer">
+    </layer>
+
+    <layer name="perf_test_layer">
+    </layer>
+
+    <layer name="module_test_layer">
+    </layer>
+
+    <layer name="qt_unit_test_layer">
+    </layer>
+
+
+<!-- END: New layer versions -->
+    
+
+<!-- START: Old layer versions, will be removed at week 8 -->
+    <layer name="s60_stubs_layer">
+    </layer>    
+
+    <layer name="s60_complementary_layer">
+    </layer>    
+
+    <layer name="s60_app_layer">
+    </layer>    
+
+    <layer name="s60_mw_layer">
+    </layer>    
+
+    <layer name="s60_osext_layer">
+    </layer>    
+
+    <layer name="s60_bldmefirst_layer">
+    </layer>
+
+    <layer name="s60_bldmelast_layer">
+    </layer>
+
+    <layer name="mecevo_layer">
+    </layer>    
+<!-- END: Old layer versions, will be removed at week 8 -->
+
+  </systemModel>
+
+
+  <build> 
+    <option name="KEEPGOING" abldOption="-keepgoing" description="Causes make to keepgoing on errors" enable="Y"/>
+<!--    <option name="SAVESPACE" abldOption="-savespace" description="Causes the removal of intermediate files" enable="Y"/> -->
+    <target name="WINS" abldTarget="wins" description="MSVC Compiler"/>
+    <target name="WINS_REL" abldTarget="wins urel" description="MSVC Compiler"/>
+    <target name="WINS_DEB" abldTarget="wins udeb" description="MSVC Compiler"/>
+    <target name="WINSCW" abldTarget="winscw" description="CodeWarrior Compiler"/>
+    <target name="WINSCW_REL" abldTarget="winscw urel" description="CodeWarrior Compiler"/>
+    <target name="WINSCW_DEB" abldTarget="winscw udeb" description="CodeWarrior Compiler"/>
+    <target name="TOOLS" abldTarget="tools" description="MSVC Compiler for Tools"/>
+    <target name="TOOLS_REL" abldTarget="tools rel" description="MSVC Compiler for Tools Release mode only"/>
+    <target name="ARMV5" abldTarget="armv5" description="RVCT Compiler"/>
+    <target name="ARMV5_REL" abldTarget="armv5 urel" description="RVCT Compiler"/>
+    <target name="ARMV5_DEB" abldTarget="armv5 udeb" description="RVCT Compiler"/>
+    <target name="ARMV5_VAR" abldTarget="armv5.variants" description="RVCT Compiler"/>
+    <target name="ARMV5_ONLY" abldTarget="armv5" description="RVCT Compiler"/>
+
+
+    <!-- Aditional Targets -->
+    <target name="CWTOOLS" abldTarget="cwtools" description="CodeWarrior Compiler for Tools"/> <!-- Not supported -->
+    <target name="CWTOOLS_REL" abldTarget="cwtools rel" description="CodeWarrior Compiler for Tools Release mode only"/> <!-- Not supported -->
+    
+    <targetList name="default" description="Main Targets" target="WINSCW ARMV5"/>
+    <targetList name="default_winscw" description="Main Targets" target="WINSCW"></targetList>
+    <targetList name="default_armv5" description="Main Targets" target="ARMV5"/>
+    <targetList name="default_ctc" description="Main Targets" target="ARMV5_REL ARMV5_DEB"/>
+    <targetList name="default_rel" description="Main Targets for rel" target="WINSCW_REL ARMV5_REL"/>
+    <targetList name="default_deb" description="Main Targets for deb" target="WINSCW_DEB ARMV5_DEB"/>
+    <targetList name="default_tools" description="tools Targets" target="TOOLS"/>
+    <targetList name="tools_rel" description="tools Release Targets" target="TOOLS_REL"/>
+    <targetList name="cwtools" description="cwtools Targets" target="CWTOOLS"/>
+    <targetList name="cwtools_rel" description="cwtools Release Targets" target="CWTOOLS_REL"/>
+    <targetList name="armv5_variants" description="Main Targets" target="ARMV5_VAR"/>
+    <targetList name="armv5_only" description="Main Targets" target="ARMV5_ONLY"/>
+    <targetList name="armv5_urel" description="Main Targets" target="ARMV5_REL"/>
+
+   
+    <!--START: New configuration versions -->    
+    
+    <configuration name="build" description="build" filter ="raptor_build,no_stubs,${ido.build.filter}">
+      <layerRef layerName="os_layer"/>     
+      <layerRef layerName="bldfirst_mw_layer"/>
+      <layerRef layerName="bldfirst_app_layer"/>
+      <layerRef layerName="mw_layer"/>
+      <layerRef layerName="complementary_layer"/>
+      <layerRef layerName="app_layer"/>     
+      <layerRef layerName="stubs_layer"/>
+      <layerRef layerName="tools_layer"/>
+      <layerRef layerName="addon_layer"/>
+      
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld export" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="default_tools" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld final" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -what build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_winscw" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld library" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="default_armv5" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="default_armv5" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld final" targetList="default" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld -what build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+    </configuration>
+
+    <configuration name="dfs_build" description="armv5.variants build" filter ="raptor_dfs_build,dfs_build,${ido.build.filter}">
+      <layerRef layerName="os_layer"/>     
+      <layerRef layerName="bldfirst_mw_layer"/>
+      <layerRef layerName="bldfirst_app_layer"/>
+      <layerRef layerName="mw_layer"/>
+      <layerRef layerName="complementary_layer"/>
+      <layerRef layerName="app_layer"/>     
+      <layerRef layerName="tools_layer"/>
+      <layerRef layerName="addon_layer"/>
+      <layerRef layerName="ncp_layer"/>
+ 
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld export" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="default_tools" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld final" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -what build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="armv5_variants" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="armv5_urel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="armv5_variants" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="armv5_variants" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld final" targetList="armv5_variants" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld -what build" targetList="armv5_variants" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="armv5_variants" unitParallel="Y" targetParallel="Y"/></task>
+    </configuration>
+
+    <configuration name="dfs_build_armv5_only" description="armv5 build" filter ="raptor_dfs_build_armv5_only,dfs_build,${ido.build.filter}">
+      <layerRef layerName="os_layer"/>     
+      <layerRef layerName="bldfirst_mw_layer"/>
+      <layerRef layerName="bldfirst_app_layer"/>
+      <layerRef layerName="mw_layer"/>
+      <layerRef layerName="complementary_layer"/>
+      <layerRef layerName="app_layer"/>     
+      <layerRef layerName="tools_layer"/>
+      <layerRef layerName="addon_layer"/>
+      <layerRef layerName="ncp_layer"/>
+      
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld export" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="default_tools" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld final" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -what build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="armv5_only" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="armv5_only" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="armv5_only" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="armv5_only" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld final" targetList="armv5_only" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld -what build" targetList="armv5_only" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="armv5_only" unitParallel="Y" targetParallel="Y"/></task>
+    </configuration>
+
+    <configuration name="nonhw" description="build" filter ="raptor_nonhw,oem_build,${ido.build.filter}">
+      <layerRef layerName="os_layer"/>     
+      <layerRef layerName="bldfirst_mw_layer"/>
+      <layerRef layerName="bldfirst_app_layer"/>
+      <layerRef layerName="mw_layer"/>
+      <layerRef layerName="complementary_layer"/>
+      <layerRef layerName="app_layer"/>
+      <layerRef layerName="stubs_layer"/>     
+      <layerRef layerName="tools_layer"/>
+      
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld export" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="default_tools" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld final" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -what build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_winscw" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld library" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="default_winscw" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld final" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld -what build" targetList="default_winscw" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="default_winscw" unitParallel="Y" targetParallel="Y"/></task>
+    </configuration>
+
+    <configuration name="checksource" description="Checksource run" filter ="raptor_checksource,no_stubs,${ido.build.filter}">
+      <layerRef layerName="os_layer"/>     
+      <layerRef layerName="bldfirst_mw_layer"/>
+      <layerRef layerName="bldfirst_app_layer"/>
+      <layerRef layerName="mw_layer"/>
+      <layerRef layerName="complementary_layer"/>
+      <layerRef layerName="app_layer"/>     
+      <layerRef layerName="tools_layer"/>
+      <layerRef layerName="addon_layer"/>
+      
+      <task><buildLayer command="abld -checksource build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+    </configuration> 
+
+
+    <configuration name="build_ctc" description="build" filter ="raptor_build_ctc,no_stubs,${ido.build.filter}">
+      <layerRef layerName="os_layer"/>     
+      <layerRef layerName="bldfirst_mw_layer"/>
+      <layerRef layerName="bldfirst_app_layer"/>
+      <layerRef layerName="mw_layer"/>
+      <layerRef layerName="complementary_layer"/>
+      <layerRef layerName="app_layer"/>     
+      <layerRef layerName="stubs_layer"/>
+      <layerRef layerName="tools_layer"/>
+      <layerRef layerName="addon_layer"/>
+
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld export" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="default_tools" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld final" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -what build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="default_armv5" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="default_armv5" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="ctcwrap -i m abld target" targetList="default_ctc" unitParallel="Y" targetParallel="N"/></task>
+      <task><buildLayer command="abld final" targetList="default_armv5" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld -what build" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+    </configuration>
+
+    <configuration name="build_ctc_all" description="build" filter ="raptor_build_ctc_all,no_stubs,${ido.build.filter}">
+      <layerRef layerName="os_layer"/>     
+      <layerRef layerName="bldfirst_mw_layer"/>
+      <layerRef layerName="bldfirst_app_layer"/>
+      <layerRef layerName="mw_layer"/>
+      <layerRef layerName="complementary_layer"/>
+      <layerRef layerName="app_layer"/>     
+      <layerRef layerName="stubs_layer"/>
+      <layerRef layerName="tools_layer"/>
+      <layerRef layerName="addon_layer"/>
+
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld export" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="default_tools" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld final" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -what build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_winscw" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld library" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="default_armv5" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="default_armv5" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="ctcwrap -i m abld target" targetList="default_ctc" unitParallel="Y" targetParallel="N"/></task>
+      <task><buildLayer command="abld final" targetList="default" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld -what build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+    </configuration>    
+    
+    <configuration name="os" description="os build" filter="raptor_os">
+      <layerRef layerName="os_layer"/>     
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld export" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="default_tools" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld final" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -what build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_winscw" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld library" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="default_armv5" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="default_armv5" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld final" targetList="default" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld -what build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+    </configuration>
+
+    <configuration name="test" description="test build" filter="raptor_test,${ido.build.filter}">
+      <layerRef layerName="api_test_layer"/>     
+      <layerRef layerName="unit_test_layer"/>
+      <layerRef layerName="perf_test_layer"/>        
+      <layerRef layerName="module_test_layer"/>
+      <layerRef layerName="qt_unit_test_layer"/>
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld test export" unitParallel="Y"/></task>
+      <task><buildLayer command="abld test makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test library" targetList="default_tools" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld test target" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test final" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test -what build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test -check build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test makefile" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test resource" targetList="default_armv5" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test library" targetList="default_armv5" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld test target" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test final" targetList="default_armv5" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld test -what build" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test -check build" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+    </configuration>
+    
+    <configuration name="test_all" description="test build" filter="raptor_test_all,${ido.build.filter}">
+      <layerRef layerName="api_test_layer"/>     
+      <layerRef layerName="unit_test_layer"/>
+      <layerRef layerName="perf_test_layer"/>        
+      <layerRef layerName="module_test_layer"/>
+      <layerRef layerName="qt_unit_test_layer"/>
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld test export" unitParallel="Y"/></task>
+      <task><buildLayer command="abld test makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test library" targetList="default_tools" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld test target" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test final" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test -what build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test -check build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test makefile" targetList="default_winscw" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test resource" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld test library" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld test makefile" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test resource" targetList="default_armv5" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test library" targetList="default_armv5" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld test target" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test final" targetList="default" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld test -what build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test -check build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+    </configuration>
+    
+    <configuration name="bldmefirst" description="bldmefirst part" filter="raptor_bldmefirst">
+      <layerRef layerName="bldmefirst_layer"/>
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld export" unitParallel="Y"/></task>
+    </configuration>
+
+    <configuration name="bldmelast" description="bldmelast part" filter="raptor_bldmelast">
+      <layerRef layerName="bldmelast_layer"/>
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld export" unitParallel="Y"/></task>
+    </configuration>
+
+
+    <configuration name="complementary" description="complementary build" filter ="raptor_complementary">
+      <layerRef layerName="complementary_layer"/>
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld export" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="default_tools" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld final" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -what build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_winscw" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld library" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="default_armv5" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="default_armv5" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld final" targetList="default" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld -what build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+    </configuration>
+
+
+
+
+    <configuration name="build_clean" description="clean" filter="raptor_build_clean,no_stubs,${ido.build.filter}">
+      <layerRef layerName="os_layer"/>     
+      <layerRef layerName="bldfirst_mw_layer"/>
+      <layerRef layerName="bldfirst_app_layer"/>
+      <layerRef layerName="mw_layer"/>
+      <layerRef layerName="complementary_layer"/>      
+      <layerRef layerName="app_layer"/> 
+      <layerRef layerName="stubs_layer"/>
+      <layerRef layerName="tools_layer"/>
+      <layerRef layerName="clean_only_layer"/>
+      <layerRef layerName="addon_layer"/>
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="bldmake clean" unitParallel="Y"/></task>
+    </configuration>
+
+    <configuration name="dfs_build_clean" description="clean" filter="raptor_dfs_build_clean,dfs_build,${ido.build.filter}">
+      <layerRef layerName="os_layer"/>     
+      <layerRef layerName="bldfirst_mw_layer"/>
+      <layerRef layerName="bldfirst_app_layer"/>
+      <layerRef layerName="mw_layer"/>
+      <layerRef layerName="complementary_layer"/>      
+      <layerRef layerName="app_layer"/> 
+      <layerRef layerName="tools_layer"/>
+      <layerRef layerName="clean_only_layer"/>
+      <layerRef layerName="addon_layer"/>
+      <layerRef layerName="ncp_layer"/>
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="bldmake clean" unitParallel="Y"/></task>
+    </configuration>
+
+    <configuration name="dfs_build_armv5_only_clean" description="clean" filter="raptor_dfs_build_armv5_only_clean,dfs_build,${ido.build.filter}">
+      <layerRef layerName="os_layer"/>     
+      <layerRef layerName="bldfirst_mw_layer"/>
+      <layerRef layerName="bldfirst_app_layer"/>
+      <layerRef layerName="mw_layer"/>
+      <layerRef layerName="complementary_layer"/>      
+      <layerRef layerName="app_layer"/> 
+      <layerRef layerName="tools_layer"/>
+      <layerRef layerName="clean_only_layer"/>
+      <layerRef layerName="addon_layer"/>
+      <layerRef layerName="ncp_layer"/>
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="bldmake clean" unitParallel="Y"/></task>
+    </configuration>
+
+    <configuration name="nonhw_clean" description="clean" filter="raptor_nonhw_clean,oem_build,${ido.build.filter}">
+      <layerRef layerName="os_layer"/>     
+      <layerRef layerName="bldfirst_mw_layer"/>
+      <layerRef layerName="bldfirst_app_layer"/>
+      <layerRef layerName="mw_layer"/>
+      <layerRef layerName="complementary_layer"/>
+      <layerRef layerName="app_layer"/> 
+      <layerRef layerName="tools_layer"/>
+      <layerRef layerName="clean_only_layer"/>
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_winscw" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default_winscw" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="bldmake clean" unitParallel="Y"/></task>
+    </configuration>
+
+    <configuration name="stubs_clean" description="stubs clean" filter="raptor_stubs_clean,oem_build,${ido.build.filter}">
+      <layerRef layerName="stubs_layer"/>
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_winscw" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default_winscw" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="bldmake clean" unitParallel="Y"/></task>
+    </configuration>
+
+    <configuration name="build_ctc_clean" description="clean" filter="raptor_build_ctc_clean,no_stubs,${ido.build.filter}">
+      <layerRef layerName="os_layer"/>     
+      <layerRef layerName="bldfirst_mw_layer"/>
+      <layerRef layerName="bldfirst_app_layer"/>
+      <layerRef layerName="mw_layer"/>
+      <layerRef layerName="complementary_layer"/>      
+      <layerRef layerName="app_layer"/> 
+      <layerRef layerName="stubs_layer"/>
+      <layerRef layerName="tools_layer"/>
+      <layerRef layerName="clean_only_layer"/>
+      <layerRef layerName="addon_layer"/>
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="bldmake clean" unitParallel="Y"/></task>
+    </configuration>
+
+    <configuration name="build_ctc_all_clean" description="clean" filter="raptor_build_ctc_all_clean,no_stubs,${ido.build.filter}">
+      <layerRef layerName="os_layer"/>     
+      <layerRef layerName="bldfirst_mw_layer"/>
+      <layerRef layerName="bldfirst_app_layer"/>
+      <layerRef layerName="mw_layer"/>
+      <layerRef layerName="complementary_layer"/>      
+      <layerRef layerName="app_layer"/> 
+      <layerRef layerName="stubs_layer"/>
+      <layerRef layerName="tools_layer"/>
+      <layerRef layerName="clean_only_layer"/>
+      <layerRef layerName="addon_layer"/>
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="bldmake clean" unitParallel="Y"/></task>
+    </configuration>
+
+    
+    <configuration name="os_clean" description="os clean" filter="raptor_os_clean">
+      <layerRef layerName="os_layer"/>
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="bldmake clean" unitParallel="Y"/></task>
+    </configuration>
+
+    <configuration name="test_clean" description="os clean" filter="raptor_test_clean">
+      <layerRef layerName="api_test_layer"/>     
+      <layerRef layerName="unit_test_layer"/>
+      <layerRef layerName="perf_test_layer"/>
+      <layerRef layerName="module_test_layer"/>    
+      <layerRef layerName="qt_unit_test_layer"/>
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld test makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test reallyclean" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test makefile" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test reallyclean" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="bldmake clean" unitParallel="Y"/></task>
+    </configuration>
+
+    <configuration name="test_all_clean" description="os clean" filter="raptor_test_all_clean">
+      <layerRef layerName="api_test_layer"/>     
+      <layerRef layerName="unit_test_layer"/>
+      <layerRef layerName="perf_test_layer"/>
+      <layerRef layerName="module_test_layer"/>    
+      <layerRef layerName="qt_unit_test_layer"/>
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld test makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test reallyclean" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test makefile" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test reallyclean" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="bldmake clean" unitParallel="Y"/></task>
+    </configuration>
+
+    <configuration name="bldmefirst_clean" description="bldmefirst clean" filter="raptor_bldmefirst_clean">
+      <layerRef layerName="bldmefirst_layer"/>
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="bldmake clean" unitParallel="Y"/></task>
+    </configuration>
+
+    <configuration name="bldmelast_clean" description="bldmelast clean" filter="raptor_bldmelast_clean">
+      <layerRef layerName="bldmelast_layer"/>
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="bldmake clean" unitParallel="Y"/></task>
+    </configuration>
+
+    <configuration name="complementary_clean" description="complementary build clean" filter ="raptor_complementary_clean">
+      <layerRef layerName="complementary_layer"/>
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="bldmake clean" unitParallel="Y"/></task>
+    </configuration>
+
+    <!--END: New configuration versions -->    
+
+
+    <!--START: Old configuration versions, will be removed at week 8 -->    
+    
+    <configuration name="s60_build" description="S60 build" filter ="raptor_s60_build,no_stubs,${ido.s60_build.filter}">
+      <layerRef layerName="s60_osext_layer"/>     
+      <layerRef layerName="s60_mw_layer"/>
+      <layerRef layerName="s60_complementary_layer"/>
+      <layerRef layerName="s60_app_layer"/>     
+      <layerRef layerName="s60_stubs_layer"/>
+      <layerRef layerName="s60_tools_layer"/>
+      <layerRef layerName="addon_layer"/>
+      <layerRef layerName="mecevo_layer"/>
+      
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld export" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="default_tools" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld final" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -what build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_winscw" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld library" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="default_armv5" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="default_armv5" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld final" targetList="default" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld -what build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+    </configuration>
+
+    <configuration name="s60_build_ctc" description="S60 build" filter ="raptor_s60_build_ctc,no_stubs,${ido.s60_build.filter}">
+      <layerRef layerName="s60_osext_layer"/>     
+      <layerRef layerName="s60_mw_layer"/>
+      <layerRef layerName="s60_complementary_layer"/>
+      <layerRef layerName="s60_app_layer"/>     
+      <layerRef layerName="s60_stubs_layer"/>
+      <layerRef layerName="s60_tools_layer"/>
+      <layerRef layerName="addon_layer"/>
+      <layerRef layerName="mecevo_layer"/>
+            
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld export" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="default_tools" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld final" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -what build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_winscw" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld library" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="default_armv5" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="default_armv5" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="ctcwrap -i m abld target" targetList="default_ctc" unitParallel="Y" targetParallel="N"/></task>
+      <task><buildLayer command="abld final" targetList="default" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld -what build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+    </configuration>
+    
+    
+    <configuration name="s60_osext" description="S60 osext build" filter="raptor_s60_osext">
+      <layerRef layerName="s60_osext_layer"/>     
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld export" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="default_tools" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld final" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -what build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_winscw" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld library" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="default_armv5" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="default_armv5" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld final" targetList="default" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld -what build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+    </configuration>
+    
+    <configuration name="s60_test" description="S60 test build" filter="raptor_s60_test,${ido.s60_build.filter}">
+      <layerRef layerName="s60_api_test_layer"/>     
+      <layerRef layerName="s60_unit_test_layer"/>
+      <layerRef layerName="s60_perf_test_layer"/>        
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld test export" unitParallel="Y"/></task>
+      <task><buildLayer command="abld test makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test library" targetList="default_tools" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld test target" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test final" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test -what build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test -check build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test makefile" targetList="default_winscw" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test resource" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld test library" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld test makefile" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test resource" targetList="default_armv5" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test library" targetList="default_armv5" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld test target" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test final" targetList="default" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld test -what build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test -check build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+    </configuration>
+    
+    <configuration name="s60_bldmefirst" description="S60 bldmefirst part" filter="raptor_s60_bldmefirst">
+      <layerRef layerName="s60_bldmefirst_layer"/>
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld export" unitParallel="Y"/></task>
+    </configuration>
+
+    <configuration name="s60_bldmelast" description="S60 bldmelast part" filter="raptor_s60_bldmelast">
+      <layerRef layerName="s60_bldmelast_layer"/>
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld export" unitParallel="Y"/></task>
+    </configuration>
+
+
+    <configuration name="s60_complementary" description="S60 complementary build" filter ="raptor_s60_complementary">
+      <layerRef layerName="s60_complementary_layer"/>
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld export" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="default_tools" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld final" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -what build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_winscw" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld library" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="default_armv5" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="default_armv5" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld final" targetList="default" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld -what build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+    </configuration>
+
+
+
+
+    <configuration name="s60_build_clean" description="S60 clean" filter="raptor_s60_build_clean,no_stubs,${ido.s60_build.filter}">
+      <layerRef layerName="s60_osext_layer"/>     
+      <layerRef layerName="s60_mw_layer"/>
+      <layerRef layerName="s60_complementary_layer"/>      
+      <layerRef layerName="s60_app_layer"/> 
+      <layerRef layerName="s60_stubs_layer"/>
+      <layerRef layerName="s60_tools_layer"/>
+      <layerRef layerName="s60_clean_only_layer"/>
+      <layerRef layerName="addon_layer"/>
+      <layerRef layerName="mecevo_layer"/>
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="bldmake clean" unitParallel="Y"/></task>
+    </configuration>
+
+    <configuration name="s60_build_ctc_clean" description="S60 clean" filter="raptor_s60_build_ctc_clean,no_stubs,${ido.s60_build.filter}">
+      <layerRef layerName="s60_osext_layer"/>     
+      <layerRef layerName="s60_mw_layer"/>
+      <layerRef layerName="s60_complementary_layer"/>      
+      <layerRef layerName="s60_app_layer"/> 
+      <layerRef layerName="s60_stubs_layer"/>
+      <layerRef layerName="s60_tools_layer"/>
+      <layerRef layerName="s60_clean_only_layer"/>
+      <layerRef layerName="addon_layer"/>
+      <layerRef layerName="mecevo_layer"/>
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="bldmake clean" unitParallel="Y"/></task>
+    </configuration>
+    
+    <configuration name="s60_osext_clean" description="S60 osext clean" filter="raptor_s60_osext_clean">
+      <layerRef layerName="s60_osext_layer"/>     
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="bldmake clean" unitParallel="Y"/></task>
+    </configuration>
+
+    <configuration name="s60_bldmefirst_clean" description="S60 bldmefirst clean" filter="raptor_s60_bldmefirst_clean">
+      <layerRef layerName="s60_bldmefirst_layer"/>
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="bldmake clean" unitParallel="Y"/></task>
+    </configuration>
+
+    <configuration name="s60_bldmelast_clean" description="S60 bldmelast clean" filter="raptor_s60_bldmelast_clean">
+      <layerRef layerName="s60_bldmelast_layer"/>
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="bldmake clean" unitParallel="Y"/></task>
+    </configuration>
+
+    <configuration name="s60_complementary_clean" description="S60 complementary build clean" filter ="raptor_s60_complementary_clean">
+      <layerRef layerName="s60_complementary_layer"/>
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="bldmake clean" unitParallel="Y"/></task>
+    </configuration>
+
+<!--END: Old configuration versions, will be removed at week 8 -->    
+
+  </build>
+
+</SystemDefinition>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/compile/sysdefs/canonical_system_definition.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,1038 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE SystemDefinition [
+ <!ELEMENT SystemDefinition (systemModel?, build?)>
+ <!ATTLIST SystemDefinition
+  name CDATA #REQUIRED
+  schema CDATA #REQUIRED>
+ <!ELEMENT systemModel (layer+)>
+ <!ELEMENT layer (logicalset* | module*)*>
+ <!ATTLIST layer
+  name CDATA #REQUIRED
+  levels CDATA #IMPLIED
+  span CDATA #IMPLIED>
+ <!ELEMENT logicalset (logicalsubset* | module* | unit* | package* | prebuilt*)*>
+ <!ATTLIST logicalset name CDATA #REQUIRED>
+ <!ELEMENT logicalsubset (module* | unit* | package* | prebuilt*)*>
+ <!ATTLIST logicalsubset name CDATA #REQUIRED>
+ <!ELEMENT module (component* | unit* | package* | prebuilt*)*>
+ <!ATTLIST module
+  name CDATA #REQUIRED
+  level CDATA #IMPLIED>
+ <!ELEMENT component (unit* | package* | prebuilt*)*>
+ <!ATTLIST component name CDATA #REQUIRED>
+ <!ELEMENT unit EMPTY>
+ <!ATTLIST unit
+  unitID ID #REQUIRED
+  name CDATA #REQUIRED
+  mrp CDATA #REQUIRED
+  filter CDATA #IMPLIED
+  bldFile CDATA #REQUIRED
+  priority CDATA #IMPLIED
+  contract CDATA #IMPLIED>
+ <!ELEMENT package EMPTY>
+ <!ATTLIST package
+  name CDATA #REQUIRED
+  mrp CDATA #REQUIRED
+  filter CDATA #IMPLIED
+  contract CDATA #IMPLIED>
+ <!ELEMENT prebuilt EMPTY>
+ <!ATTLIST prebuilt
+  name CDATA #REQUIRED
+  version CDATA #REQUIRED
+  late (Y|N) #IMPLIED
+  filter CDATA #IMPLIED
+  contract CDATA #IMPLIED>
+ <!ELEMENT build (option* | target+ | targetList+ | unitList+ | configuration+)*>
+ <!ELEMENT unitList (unitRef+)>
+ <!ATTLIST unitList
+  name ID #REQUIRED
+  description CDATA #REQUIRED>
+ <!ELEMENT unitRef EMPTY>
+ <!ATTLIST unitRef unit IDREF #REQUIRED>
+ <!ELEMENT targetList EMPTY>
+ <!ATTLIST targetList
+  name ID #REQUIRED
+  description CDATA #REQUIRED
+  target IDREFS #REQUIRED>
+ <!ELEMENT target EMPTY>
+ <!ATTLIST target
+  name ID #REQUIRED
+  abldTarget CDATA #REQUIRED
+  description CDATA #REQUIRED>
+ <!ELEMENT option EMPTY>
+ <!ATTLIST option
+  name ID #REQUIRED
+  abldOption CDATA #REQUIRED
+  description CDATA #REQUIRED
+  enable (Y | N | y | n) #REQUIRED>
+ <!ELEMENT configuration (unitListRef+ | layerRef+ | task+)*>
+ <!ATTLIST configuration
+  name ID #REQUIRED
+  description CDATA #REQUIRED
+  filter CDATA #REQUIRED>
+ <!ELEMENT task ( unitListRef* , (buildLayer | specialInstructions))>
+ <!ELEMENT unitListRef EMPTY>
+ <!ATTLIST unitListRef unitList IDREF #REQUIRED>
+ <!ELEMENT layerRef EMPTY>
+ <!ATTLIST layerRef layerName CDATA #REQUIRED>
+ <!ELEMENT buildLayer EMPTY>
+ <!ATTLIST buildLayer
+  command CDATA #REQUIRED
+  targetList IDREFS #IMPLIED
+  unitParallel (Y | N | y | n) #REQUIRED
+  targetParallel (Y | N | y | n) #IMPLIED>
+ <!ELEMENT specialInstructions EMPTY>
+ <!ATTLIST specialInstructions
+  name CDATA #REQUIRED
+  cwd CDATA #REQUIRED
+  command CDATA #REQUIRED>
+]>
+<!-- 
+============================================================================ 
+Name        : sysdef_dtd_1_4_0.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:
+
+============================================================================
+-->
+<SystemDefinition name="sysdef_dtd_1_4_0_xml + location + locationextensions + locationrefapp + locationservices + locationtools + posmsgpluginreferenceimpl + domain_build + s60" schema="1.4.0"><systemModel>
+    <layer name="app_layer">
+      <module name="location">
+        <unit unitID="lodo.location" mrp="" bldFile="s60/app/location/group" name="location"/>
+      </module>
+    
+<module name="locationrefapp">
+        <unit unitID="lodo.locationrefapp" mrp="" bldFile="s60/refapp/locationrefapp/group" name="locationrefapp"/>
+      </module></layer>
+  
+<layer name="os_layer">
+      <module name="locationextensions">
+        <unit unitID="lodo.locationextensions" mrp="" bldFile="s60/osext/locationextensions/group" name="locationextensions"/>
+      </module>
+    </layer>
+<layer name="mw_layer">
+      <module name="locationservices">
+        <unit unitID="lodo.locationservices" mrp="" bldFile="s60/mw/locationservices/group" name="locationservices"/>
+      </module>
+    </layer>
+<layer name="tools_layer">
+      <module name="locationtools">
+        <unit unitID="lodo.locationtools" mrp="" bldFile="s60/tools/locationtools/group" name="locationtools"/>
+      </module>
+    </layer>
+<layer name="stubs_layer">
+      <module name="posmsgpluginreferenceimpl">
+        <unit unitID="lodo.posmsgpluginreferenceimpl" mrp="" bldFile="s60/adaptation/stubs/posmsgpluginreferenceimpl/group" name="posmsgpluginreferenceimpl"/>
+      </module>
+    </layer>
+<layer name="complementary_layer">
+    </layer>
+<layer name="bldmefirst_layer">
+    </layer>
+<layer name="bldmelast_layer">
+    </layer>
+<layer name="addon_layer">
+    </layer>
+<layer name="clean_only_layer">
+    </layer>
+<layer name="bldfirst_mw_layer">
+    </layer>
+<layer name="bldfirst_app_layer">
+    </layer>
+<layer name="api_test_layer">
+    </layer>
+<layer name="unit_test_layer">
+    </layer>
+<layer name="perf_test_layer">
+    </layer>
+<layer name="module_test_layer">
+    </layer>
+<layer name="qt_unit_test_layer">
+    </layer>
+<layer name="s60_stubs_layer">
+    </layer>
+<layer name="s60_complementary_layer">
+    </layer>
+<layer name="s60_app_layer">
+    </layer>
+<layer name="s60_mw_layer">
+    </layer>
+<layer name="s60_osext_layer">
+    </layer>
+<layer name="s60_bldmefirst_layer">
+    </layer>
+<layer name="s60_bldmelast_layer">
+    </layer>
+<layer name="mecevo_layer">
+    </layer>
+<layer name="custom_build_layer">
+    <module name="custombuild">
+				<component name="custombuild">
+					<unit unitID="custom_build_group" name="devicecontentservices" bldFile="s60\mw\devicecontentservices\omaprovisioning\group" mrp=""/>
+				</component>
+			</module>
+    </layer>
+<layer name="custom_bldmefirst_layer">
+    <module name="custombldmefirst">
+				<component name="custombldmefirst">
+					<unit unitID="custom_bldmefirst_group" name="systemswextensions" bldFile="s60\osext\systemswextensions\commonservices\featuremanager\group" mrp=""/>
+				</component>
+			</module>
+    </layer>
+<layer name="s60_api_test_layer">
+      <module name="lodo_api_tests">
+   <unit unitID="lodo.locext.tsrc1" mrp="" bldFile="s60\app\location\loc_sdk\landmarks_ui_addedit_api\tsrc\group" name="lodo_tsrc1"/>
+   <unit unitID="lodo.locext.tsrc2" mrp="" bldFile="s60\app\location\loc_sdk\landmarks_ui_selector_api\tsrc\group" name="lodo_tsrc2"/>
+   <unit unitID="lodo.locext.tsrc3" mrp="" bldFile="s60\osext\locationextensions\locext_sdk\location_acquisition_api\tsrc\group" name="lodo_tsrc3"/> 
+   <unit unitID="lodo.locext.tsrc4" mrp="" bldFile="s60\mw\locationservices\locsrv_sdk\landmarks_database_management_api\tsrc\group" name="lodo_tsrc4"/>
+   <unit unitID="lodo.locext.tsrc5" mrp="" bldFile="s60\osext\locationextensions\locext_dom\integrated_gps_hw_status_api\tsrc\group" name="lodo_tsrc5"/>
+   <unit unitID="lodo.locext.tsrc6" mrp="" bldFile="s60\osext\locationextensions\locext_dom\location_framework_trace_api\tsrc\group" name="lodo_tsrc6"/> 
+   <unit unitID="lodo.locext.tsrc7" mrp="" bldFile="s60\osext\locationextensions\locext_dom\location_settings_api\tsrc\group" name="lodo_tsrc7"/> 
+   <unit unitID="lodo.locext.tsrc8" mrp="" bldFile="s60\osext\locationextensions\locext_dom\network_privacy_api\tsrc\group" name="lodo_tsrc8"/> 
+   <unit unitID="lodo.locext.tsrc9" mrp="" bldFile="s60\osext\locationextensions\locext_dom\positioning_plugin_api\tsrc\group" name="lodo_tsrc9"/> 
+   <unit unitID="lodo.locext.tsrc10" mrp="" bldFile="s60\mw\locationservices\locsrv_dom\map_and_navigation_provider_discovery_api\tsrc\group" name="lodo_tsrc10"/> 
+   <unit unitID="lodo.locext.tsrc11" mrp="" bldFile="s60\osext\locationextensions\locext_dom\privacy_data_types_api\tsrc\group" name="lodo_tsrc11"/> 
+   <unit unitID="lodo.locext.tsrc12" mrp="" bldFile="s60\mw\locationservices\locsrv_sdk\landmarks_api\tsrc\group" name="lodo_tsrc12"/> 
+   <unit unitID="lodo.locext.tsrc15" mrp="" bldFile="s60\mw\locationservices\locsrv_dom\geocoding_api\tsrc\group" name="lodo_tsrc15"/> 
+   <unit unitID="lodo.locext.tsrc16" mrp="" bldFile="s60\mw\locationservices\locsrv_dom\location_centre_api\tsrc\group" name="lodo_tsrc16"/> 
+   <unit unitID="lodo.locext.tsrc17" mrp="" bldFile="s60\mw\locationservices\locsrv_dom\location_settings_launch_api\tsrc\group" name="lodo_tsrc17"/> 
+   <unit unitID="lodo.locext.tsrc18" mrp="" bldFile="s60\mw\locationservices\locsrv_dom\map_and_navigation_api\tsrc\group" name="lodo_tsrc18"/> 
+   <unit unitID="lodo.locext.tsrc20" mrp="" bldFile="s60\mw\locationservices\locsrv_dom\map_image_api\tsrc\group" name="lodo_tsrc20"/> 
+   <unit unitID="lodo.locext.tsrc21" mrp="" bldFile="s60\mw\locationservices\locsrv_dom\map_image_conversion_plugin_api\tsrc\group" name="lodo_tsrc21"/> 
+   <unit unitID="lodo.locext.tsrc22" mrp="" bldFile="s60\mw\locationservices\locsrv_dom\supl_network_initiation_api\tsrc\group" name="lodo_tsrc22"/> 
+   <unit unitID="lodo.locext.tsrc23" mrp="" bldFile="s60\mw\locationservices\locsrv_dom\supl_settings_api\tsrc\group" name="lodo_tsrc23"/> 
+   <unit unitID="lodo.locext.tsrc25" mrp="" bldFile="s60\mw\locationservices\locsrv_dom\supl_terminal_initiation_api\tsrc\group" name="lodo_tsrc25"/>  
+      </module>
+          </layer></systemModel>
+
+
+<build> 
+    <option name="KEEPGOING" abldOption="-keepgoing" description="Causes make to keepgoing on errors" enable="Y"/>
+<!--    <option name="SAVESPACE" abldOption="-savespace" description="Causes the removal of intermediate files" enable="Y"/> -->
+    <target name="WINS" abldTarget="wins" description="MSVC Compiler"/>
+    <target name="WINS_REL" abldTarget="wins urel" description="MSVC Compiler"/>
+    <target name="WINS_DEB" abldTarget="wins udeb" description="MSVC Compiler"/>
+    <target name="WINSCW" abldTarget="winscw" description="CodeWarrior Compiler"/>
+    <target name="WINSCW_REL" abldTarget="winscw urel" description="CodeWarrior Compiler"/>
+    <target name="WINSCW_DEB" abldTarget="winscw udeb" description="CodeWarrior Compiler"/>
+    <target name="TOOLS" abldTarget="tools" description="MSVC Compiler for Tools"/>
+    <target name="TOOLS_REL" abldTarget="tools rel" description="MSVC Compiler for Tools Release mode only"/>
+    <target name="ARMV5" abldTarget="armv5" description="RVCT Compiler"/>
+    <target name="ARMV5_REL" abldTarget="armv5 urel" description="RVCT Compiler"/>
+    <target name="ARMV5_DEB" abldTarget="armv5 udeb" description="RVCT Compiler"/>
+    <target name="ARMV5_VAR" abldTarget="armv5.variants" description="RVCT Compiler"/>
+    <target name="ARMV5_ONLY" abldTarget="armv5" description="RVCT Compiler"/>
+
+
+    <!-- Aditional Targets -->
+    <target name="CWTOOLS" abldTarget="cwtools" description="CodeWarrior Compiler for Tools"/> <!-- Not supported -->
+    <target name="CWTOOLS_REL" abldTarget="cwtools rel" description="CodeWarrior Compiler for Tools Release mode only"/> <!-- Not supported -->
+    
+    <targetList name="default" description="Main Targets" target="WINSCW ARMV5"/>
+    <targetList name="default_winscw" description="Main Targets" target="WINSCW"/>
+    <targetList name="default_armv5" description="Main Targets" target="ARMV5"/>
+    <targetList name="default_ctc" description="Main Targets" target="ARMV5_REL ARMV5_DEB"/>
+    <targetList name="default_rel" description="Main Targets for rel" target="WINSCW_REL ARMV5_REL"/>
+    <targetList name="default_deb" description="Main Targets for deb" target="WINSCW_DEB ARMV5_DEB"/>
+    <targetList name="default_tools" description="tools Targets" target="TOOLS"/>
+    <targetList name="tools_rel" description="tools Release Targets" target="TOOLS_REL"/>
+    <targetList name="cwtools" description="cwtools Targets" target="CWTOOLS"/>
+    <targetList name="cwtools_rel" description="cwtools Release Targets" target="CWTOOLS_REL"/>
+    <targetList name="armv5_variants" description="Main Targets" target="ARMV5_VAR"/>
+    <targetList name="armv5_only" description="Main Targets" target="ARMV5_ONLY"/>
+    <targetList name="armv5_urel" description="Main Targets" target="ARMV5_REL"/>
+
+   
+    <!--START: New configuration versions -->    
+    
+    <configuration name="build" description="build" filter="raptor_build,no_stubs,${ido.build.filter}">
+      <layerRef layerName="os_layer"/>     
+      <layerRef layerName="bldfirst_mw_layer"/>
+      <layerRef layerName="bldfirst_app_layer"/>
+      <layerRef layerName="mw_layer"/>
+      <layerRef layerName="complementary_layer"/>
+      <layerRef layerName="app_layer"/>     
+      <layerRef layerName="stubs_layer"/>
+      <layerRef layerName="tools_layer"/>
+      <layerRef layerName="addon_layer"/>
+      
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld export" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="default_tools" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld final" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -what build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_winscw" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld library" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="default_armv5" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="default_armv5" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld final" targetList="default" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld -what build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+    </configuration>
+
+    <configuration name="dfs_build" description="armv5.variants build" filter="raptor_dfs_build,dfs_build,${ido.build.filter}">
+      <layerRef layerName="os_layer"/>     
+      <layerRef layerName="bldfirst_mw_layer"/>
+      <layerRef layerName="bldfirst_app_layer"/>
+      <layerRef layerName="mw_layer"/>
+      <layerRef layerName="complementary_layer"/>
+      <layerRef layerName="app_layer"/>     
+      <layerRef layerName="tools_layer"/>
+      <layerRef layerName="addon_layer"/>
+      <layerRef layerName="ncp_layer"/>
+ 
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld export" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="default_tools" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld final" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -what build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="armv5_variants" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="armv5_urel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="armv5_variants" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="armv5_variants" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld final" targetList="armv5_variants" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld -what build" targetList="armv5_variants" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="armv5_variants" unitParallel="Y" targetParallel="Y"/></task>
+    </configuration>
+
+    <configuration name="dfs_build_armv5_only" description="armv5 build" filter="raptor_dfs_build_armv5_only,dfs_build,${ido.build.filter}">
+      <layerRef layerName="os_layer"/>     
+      <layerRef layerName="bldfirst_mw_layer"/>
+      <layerRef layerName="bldfirst_app_layer"/>
+      <layerRef layerName="mw_layer"/>
+      <layerRef layerName="complementary_layer"/>
+      <layerRef layerName="app_layer"/>     
+      <layerRef layerName="tools_layer"/>
+      <layerRef layerName="addon_layer"/>
+      <layerRef layerName="ncp_layer"/>
+      
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld export" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="default_tools" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld final" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -what build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="armv5_only" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="armv5_only" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="armv5_only" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="armv5_only" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld final" targetList="armv5_only" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld -what build" targetList="armv5_only" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="armv5_only" unitParallel="Y" targetParallel="Y"/></task>
+    </configuration>
+
+    <configuration name="nonhw" description="build" filter="raptor_nonhw,oem_build,${ido.build.filter}">
+      <layerRef layerName="os_layer"/>     
+      <layerRef layerName="bldfirst_mw_layer"/>
+      <layerRef layerName="bldfirst_app_layer"/>
+      <layerRef layerName="mw_layer"/>
+      <layerRef layerName="complementary_layer"/>
+      <layerRef layerName="app_layer"/>
+      <layerRef layerName="stubs_layer"/>     
+      <layerRef layerName="tools_layer"/>
+      
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld export" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="default_tools" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld final" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -what build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_winscw" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld library" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="default_winscw" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld final" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld -what build" targetList="default_winscw" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="default_winscw" unitParallel="Y" targetParallel="Y"/></task>
+    </configuration>
+
+    <configuration name="checksource" description="Checksource run" filter="raptor_checksource,no_stubs,${ido.build.filter}">
+      <layerRef layerName="os_layer"/>     
+      <layerRef layerName="bldfirst_mw_layer"/>
+      <layerRef layerName="bldfirst_app_layer"/>
+      <layerRef layerName="mw_layer"/>
+      <layerRef layerName="complementary_layer"/>
+      <layerRef layerName="app_layer"/>     
+      <layerRef layerName="tools_layer"/>
+      <layerRef layerName="addon_layer"/>
+      
+      <task><buildLayer command="abld -checksource build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+    </configuration> 
+
+
+    <configuration name="build_ctc" description="build" filter="raptor_build_ctc,no_stubs,${ido.build.filter}">
+      <layerRef layerName="os_layer"/>     
+      <layerRef layerName="bldfirst_mw_layer"/>
+      <layerRef layerName="bldfirst_app_layer"/>
+      <layerRef layerName="mw_layer"/>
+      <layerRef layerName="complementary_layer"/>
+      <layerRef layerName="app_layer"/>     
+      <layerRef layerName="stubs_layer"/>
+      <layerRef layerName="tools_layer"/>
+      <layerRef layerName="addon_layer"/>
+
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld export" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="default_tools" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld final" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -what build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="default_armv5" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="default_armv5" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="ctcwrap -i m abld target" targetList="default_ctc" unitParallel="Y" targetParallel="N"/></task>
+      <task><buildLayer command="abld final" targetList="default_armv5" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld -what build" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+    </configuration>
+
+    <configuration name="build_ctc_all" description="build" filter="raptor_build_ctc_all,no_stubs,${ido.build.filter}">
+      <layerRef layerName="os_layer"/>     
+      <layerRef layerName="bldfirst_mw_layer"/>
+      <layerRef layerName="bldfirst_app_layer"/>
+      <layerRef layerName="mw_layer"/>
+      <layerRef layerName="complementary_layer"/>
+      <layerRef layerName="app_layer"/>     
+      <layerRef layerName="stubs_layer"/>
+      <layerRef layerName="tools_layer"/>
+      <layerRef layerName="addon_layer"/>
+
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld export" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="default_tools" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld final" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -what build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_winscw" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld library" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="default_armv5" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="default_armv5" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="ctcwrap -i m abld target" targetList="default_ctc" unitParallel="Y" targetParallel="N"/></task>
+      <task><buildLayer command="abld final" targetList="default" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld -what build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+    </configuration>    
+    
+    <configuration name="os" description="os build" filter="raptor_os">
+      <layerRef layerName="os_layer"/>     
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld export" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="default_tools" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld final" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -what build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_winscw" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld library" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="default_armv5" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="default_armv5" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld final" targetList="default" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld -what build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+    </configuration>
+
+    <configuration name="test" description="test build" filter="raptor_test,${ido.build.filter}">
+      <layerRef layerName="api_test_layer"/>     
+      <layerRef layerName="unit_test_layer"/>
+      <layerRef layerName="perf_test_layer"/>        
+      <layerRef layerName="module_test_layer"/>
+      <layerRef layerName="qt_unit_test_layer"/>
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld test export" unitParallel="Y"/></task>
+      <task><buildLayer command="abld test makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test library" targetList="default_tools" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld test target" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test final" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test -what build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test -check build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test makefile" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test resource" targetList="default_armv5" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test library" targetList="default_armv5" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld test target" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test final" targetList="default_armv5" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld test -what build" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test -check build" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+    </configuration>
+    
+    <configuration name="test_all" description="test build" filter="raptor_test_all,${ido.build.filter}">
+      <layerRef layerName="api_test_layer"/>     
+      <layerRef layerName="unit_test_layer"/>
+      <layerRef layerName="perf_test_layer"/>        
+      <layerRef layerName="module_test_layer"/>
+      <layerRef layerName="qt_unit_test_layer"/>
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld test export" unitParallel="Y"/></task>
+      <task><buildLayer command="abld test makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test library" targetList="default_tools" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld test target" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test final" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test -what build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test -check build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test makefile" targetList="default_winscw" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test resource" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld test library" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld test makefile" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test resource" targetList="default_armv5" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test library" targetList="default_armv5" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld test target" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test final" targetList="default" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld test -what build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test -check build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+    </configuration>
+    
+    <configuration name="bldmefirst" description="bldmefirst part" filter="raptor_bldmefirst">
+      <layerRef layerName="bldmefirst_layer"/>
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld export" unitParallel="Y"/></task>
+    </configuration>
+
+    <configuration name="bldmelast" description="bldmelast part" filter="raptor_bldmelast">
+      <layerRef layerName="bldmelast_layer"/>
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld export" unitParallel="Y"/></task>
+    </configuration>
+
+
+    <configuration name="complementary" description="complementary build" filter="raptor_complementary">
+      <layerRef layerName="complementary_layer"/>
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld export" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="default_tools" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld final" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -what build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_winscw" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld library" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="default_armv5" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="default_armv5" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld final" targetList="default" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld -what build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+    </configuration>
+
+
+
+
+    <configuration name="build_clean" description="clean" filter="raptor_build_clean,no_stubs,${ido.build.filter}">
+      <layerRef layerName="os_layer"/>     
+      <layerRef layerName="bldfirst_mw_layer"/>
+      <layerRef layerName="bldfirst_app_layer"/>
+      <layerRef layerName="mw_layer"/>
+      <layerRef layerName="complementary_layer"/>      
+      <layerRef layerName="app_layer"/> 
+      <layerRef layerName="stubs_layer"/>
+      <layerRef layerName="tools_layer"/>
+      <layerRef layerName="clean_only_layer"/>
+      <layerRef layerName="addon_layer"/>
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="bldmake clean" unitParallel="Y"/></task>
+    </configuration>
+
+    <configuration name="dfs_build_clean" description="clean" filter="raptor_dfs_build_clean,dfs_build,${ido.build.filter}">
+      <layerRef layerName="os_layer"/>     
+      <layerRef layerName="bldfirst_mw_layer"/>
+      <layerRef layerName="bldfirst_app_layer"/>
+      <layerRef layerName="mw_layer"/>
+      <layerRef layerName="complementary_layer"/>      
+      <layerRef layerName="app_layer"/> 
+      <layerRef layerName="tools_layer"/>
+      <layerRef layerName="clean_only_layer"/>
+      <layerRef layerName="addon_layer"/>
+      <layerRef layerName="ncp_layer"/>
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="bldmake clean" unitParallel="Y"/></task>
+    </configuration>
+
+    <configuration name="dfs_build_armv5_only_clean" description="clean" filter="raptor_dfs_build_armv5_only_clean,dfs_build,${ido.build.filter}">
+      <layerRef layerName="os_layer"/>     
+      <layerRef layerName="bldfirst_mw_layer"/>
+      <layerRef layerName="bldfirst_app_layer"/>
+      <layerRef layerName="mw_layer"/>
+      <layerRef layerName="complementary_layer"/>      
+      <layerRef layerName="app_layer"/> 
+      <layerRef layerName="tools_layer"/>
+      <layerRef layerName="clean_only_layer"/>
+      <layerRef layerName="addon_layer"/>
+      <layerRef layerName="ncp_layer"/>
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="bldmake clean" unitParallel="Y"/></task>
+    </configuration>
+
+    <configuration name="nonhw_clean" description="clean" filter="raptor_nonhw_clean,oem_build,${ido.build.filter}">
+      <layerRef layerName="os_layer"/>     
+      <layerRef layerName="bldfirst_mw_layer"/>
+      <layerRef layerName="bldfirst_app_layer"/>
+      <layerRef layerName="mw_layer"/>
+      <layerRef layerName="complementary_layer"/>
+      <layerRef layerName="app_layer"/> 
+      <layerRef layerName="tools_layer"/>
+      <layerRef layerName="clean_only_layer"/>
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_winscw" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default_winscw" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="bldmake clean" unitParallel="Y"/></task>
+    </configuration>
+
+    <configuration name="stubs_clean" description="stubs clean" filter="raptor_stubs_clean,oem_build,${ido.build.filter}">
+      <layerRef layerName="stubs_layer"/>
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_winscw" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default_winscw" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="bldmake clean" unitParallel="Y"/></task>
+    </configuration>
+
+    <configuration name="build_ctc_clean" description="clean" filter="raptor_build_ctc_clean,no_stubs,${ido.build.filter}">
+      <layerRef layerName="os_layer"/>     
+      <layerRef layerName="bldfirst_mw_layer"/>
+      <layerRef layerName="bldfirst_app_layer"/>
+      <layerRef layerName="mw_layer"/>
+      <layerRef layerName="complementary_layer"/>      
+      <layerRef layerName="app_layer"/> 
+      <layerRef layerName="stubs_layer"/>
+      <layerRef layerName="tools_layer"/>
+      <layerRef layerName="clean_only_layer"/>
+      <layerRef layerName="addon_layer"/>
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="bldmake clean" unitParallel="Y"/></task>
+    </configuration>
+
+    <configuration name="build_ctc_all_clean" description="clean" filter="raptor_build_ctc_all_clean,no_stubs,${ido.build.filter}">
+      <layerRef layerName="os_layer"/>     
+      <layerRef layerName="bldfirst_mw_layer"/>
+      <layerRef layerName="bldfirst_app_layer"/>
+      <layerRef layerName="mw_layer"/>
+      <layerRef layerName="complementary_layer"/>      
+      <layerRef layerName="app_layer"/> 
+      <layerRef layerName="stubs_layer"/>
+      <layerRef layerName="tools_layer"/>
+      <layerRef layerName="clean_only_layer"/>
+      <layerRef layerName="addon_layer"/>
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="bldmake clean" unitParallel="Y"/></task>
+    </configuration>
+
+    
+    <configuration name="os_clean" description="os clean" filter="raptor_os_clean">
+      <layerRef layerName="os_layer"/>
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="bldmake clean" unitParallel="Y"/></task>
+    </configuration>
+
+    <configuration name="test_clean" description="os clean" filter="raptor_test_clean">
+      <layerRef layerName="api_test_layer"/>     
+      <layerRef layerName="unit_test_layer"/>
+      <layerRef layerName="perf_test_layer"/>
+      <layerRef layerName="module_test_layer"/>    
+      <layerRef layerName="qt_unit_test_layer"/>
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld test makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test reallyclean" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test makefile" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test reallyclean" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="bldmake clean" unitParallel="Y"/></task>
+    </configuration>
+
+    <configuration name="test_all_clean" description="os clean" filter="raptor_test_all_clean">
+      <layerRef layerName="api_test_layer"/>     
+      <layerRef layerName="unit_test_layer"/>
+      <layerRef layerName="perf_test_layer"/>
+      <layerRef layerName="module_test_layer"/>    
+      <layerRef layerName="qt_unit_test_layer"/>
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld test makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test reallyclean" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test makefile" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test reallyclean" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="bldmake clean" unitParallel="Y"/></task>
+    </configuration>
+
+    <configuration name="bldmefirst_clean" description="bldmefirst clean" filter="raptor_bldmefirst_clean">
+      <layerRef layerName="bldmefirst_layer"/>
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="bldmake clean" unitParallel="Y"/></task>
+    </configuration>
+
+    <configuration name="bldmelast_clean" description="bldmelast clean" filter="raptor_bldmelast_clean">
+      <layerRef layerName="bldmelast_layer"/>
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="bldmake clean" unitParallel="Y"/></task>
+    </configuration>
+
+    <configuration name="complementary_clean" description="complementary build clean" filter="raptor_complementary_clean">
+      <layerRef layerName="complementary_layer"/>
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="bldmake clean" unitParallel="Y"/></task>
+    </configuration>
+
+    <!--END: New configuration versions -->    
+
+
+    <!--START: Old configuration versions, will be removed at week 8 -->    
+    
+    <configuration name="s60_build" description="S60 build" filter="raptor_s60_build,no_stubs,${ido.s60_build.filter}">
+      <layerRef layerName="s60_osext_layer"/>     
+      <layerRef layerName="s60_mw_layer"/>
+      <layerRef layerName="s60_complementary_layer"/>
+      <layerRef layerName="s60_app_layer"/>     
+      <layerRef layerName="s60_stubs_layer"/>
+      <layerRef layerName="s60_tools_layer"/>
+      <layerRef layerName="addon_layer"/>
+      <layerRef layerName="mecevo_layer"/>
+      
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld export" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="default_tools" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld final" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -what build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_winscw" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld library" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="default_armv5" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="default_armv5" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld final" targetList="default" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld -what build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+    </configuration>
+
+    <configuration name="s60_build_ctc" description="S60 build" filter="raptor_s60_build_ctc,no_stubs,${ido.s60_build.filter}">
+      <layerRef layerName="s60_osext_layer"/>     
+      <layerRef layerName="s60_mw_layer"/>
+      <layerRef layerName="s60_complementary_layer"/>
+      <layerRef layerName="s60_app_layer"/>     
+      <layerRef layerName="s60_stubs_layer"/>
+      <layerRef layerName="s60_tools_layer"/>
+      <layerRef layerName="addon_layer"/>
+      <layerRef layerName="mecevo_layer"/>
+            
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld export" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="default_tools" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld final" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -what build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_winscw" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld library" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="default_armv5" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="default_armv5" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="ctcwrap -i m abld target" targetList="default_ctc" unitParallel="Y" targetParallel="N"/></task>
+      <task><buildLayer command="abld final" targetList="default" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld -what build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+    </configuration>
+    
+    
+    <configuration name="s60_osext" description="S60 osext build" filter="raptor_s60_osext">
+      <layerRef layerName="s60_osext_layer"/>     
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld export" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="default_tools" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld final" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -what build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_winscw" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld library" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="default_armv5" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="default_armv5" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld final" targetList="default" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld -what build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+    </configuration>
+    
+    <configuration name="s60_test" description="S60 test build" filter="raptor_s60_test,${ido.s60_build.filter}">
+      <layerRef layerName="s60_api_test_layer"/>     
+      <layerRef layerName="s60_unit_test_layer"/>
+      <layerRef layerName="s60_perf_test_layer"/>        
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld test export" unitParallel="Y"/></task>
+      <task><buildLayer command="abld test makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test library" targetList="default_tools" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld test target" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test final" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test -what build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test -check build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test makefile" targetList="default_winscw" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test resource" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld test library" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld test makefile" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test resource" targetList="default_armv5" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test library" targetList="default_armv5" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld test target" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test final" targetList="default" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld test -what build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld test -check build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+    </configuration>
+    
+    <configuration name="s60_bldmefirst" description="S60 bldmefirst part" filter="raptor_s60_bldmefirst">
+      <layerRef layerName="s60_bldmefirst_layer"/>
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld export" unitParallel="Y"/></task>
+    </configuration>
+
+    <configuration name="s60_bldmelast" description="S60 bldmelast part" filter="raptor_s60_bldmelast">
+      <layerRef layerName="s60_bldmelast_layer"/>
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld export" unitParallel="Y"/></task>
+    </configuration>
+
+
+    <configuration name="s60_complementary" description="S60 complementary build" filter="raptor_s60_complementary">
+      <layerRef layerName="s60_complementary_layer"/>
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld export" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="default_tools" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld final" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -what build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_winscw" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld library" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="default_armv5" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="default_armv5" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld final" targetList="default" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld -what build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+    </configuration>
+
+
+
+
+    <configuration name="s60_build_clean" description="S60 clean" filter="raptor_s60_build_clean,no_stubs,${ido.s60_build.filter}">
+      <layerRef layerName="s60_osext_layer"/>     
+      <layerRef layerName="s60_mw_layer"/>
+      <layerRef layerName="s60_complementary_layer"/>      
+      <layerRef layerName="s60_app_layer"/> 
+      <layerRef layerName="s60_stubs_layer"/>
+      <layerRef layerName="s60_tools_layer"/>
+      <layerRef layerName="s60_clean_only_layer"/>
+      <layerRef layerName="addon_layer"/>
+      <layerRef layerName="mecevo_layer"/>
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="bldmake clean" unitParallel="Y"/></task>
+    </configuration>
+
+    <configuration name="s60_build_ctc_clean" description="S60 clean" filter="raptor_s60_build_ctc_clean,no_stubs,${ido.s60_build.filter}">
+      <layerRef layerName="s60_osext_layer"/>     
+      <layerRef layerName="s60_mw_layer"/>
+      <layerRef layerName="s60_complementary_layer"/>      
+      <layerRef layerName="s60_app_layer"/> 
+      <layerRef layerName="s60_stubs_layer"/>
+      <layerRef layerName="s60_tools_layer"/>
+      <layerRef layerName="s60_clean_only_layer"/>
+      <layerRef layerName="addon_layer"/>
+      <layerRef layerName="mecevo_layer"/>
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="bldmake clean" unitParallel="Y"/></task>
+    </configuration>
+    
+    <configuration name="s60_osext_clean" description="S60 osext clean" filter="raptor_s60_osext_clean">
+      <layerRef layerName="s60_osext_layer"/>     
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="bldmake clean" unitParallel="Y"/></task>
+    </configuration>
+
+    <configuration name="s60_bldmefirst_clean" description="S60 bldmefirst clean" filter="raptor_s60_bldmefirst_clean">
+      <layerRef layerName="s60_bldmefirst_layer"/>
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="bldmake clean" unitParallel="Y"/></task>
+    </configuration>
+
+    <configuration name="s60_bldmelast_clean" description="S60 bldmelast clean" filter="raptor_s60_bldmelast_clean">
+      <layerRef layerName="s60_bldmelast_layer"/>
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="bldmake clean" unitParallel="Y"/></task>
+    </configuration>
+
+    <configuration name="s60_complementary_clean" description="S60 complementary build clean" filter="raptor_s60_complementary_clean">
+      <layerRef layerName="s60_complementary_layer"/>
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="bldmake clean" unitParallel="Y"/></task>
+    </configuration>
+
+<!--END: Old configuration versions, will be removed at week 8 -->    
+
+  
+<configuration name="s60_test_lodo" description="S60 test build" filter="${ido.s60_build.filter}">
+      <layerRef layerName="s60_api_test_layer"/>     
+      <layerRef layerName="s60_unit_test_layer"/>
+      <layerRef layerName="s60_perf_test_layer"/>        
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld export" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="default_tools" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld final" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -what build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_winscw" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld library" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="default_armv5" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="default_armv5" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld final" targetList="default" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld -what build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+    </configuration>
+<configuration name="custom_build" description="S60 build" filter="no_stubs">
+      <layerRef layerName="custom_build_layer"/>     
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld export" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="default_tools" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld final" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -what build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_winscw" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld library" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="default_armv5" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="default_armv5" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld final" targetList="default" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld -what build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+    </configuration>
+<configuration name="custom_build_clean" description="Custom build clean" filter="no_stubs">
+      <layerRef layerName="custom_build_layer"/>  
+      <layerRef layerName="custom_bldmefirst_layer"/> 
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld clean" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld reallyclean" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="bldmake clean" unitParallel="Y"/></task>
+    </configuration>
+<configuration name="custom_bldmefirst" description="S60 build" filter="no_stubs">
+      <layerRef layerName="custom_bldmefirst_layer"/> 
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld export" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="default_tools" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld final" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -what build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_winscw" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld library" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="default_armv5" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="default_armv5" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld final" targetList="default" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld -what build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+    </configuration></build></SystemDefinition>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/compile/sysdefs/layers.sysdef.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<!DOCTYPE SystemDefinition SYSTEM "sysdef_1_4_0.dtd" [
+  <!ENTITY layer_real_source_path "s60/app/location" >
+]>
+
+<SystemDefinition name="location" schema="1.4.0">
+  <systemModel>
+    <layer name="app_layer">
+      <module name="location">
+        <unit unitID="lodo.location" mrp="" bldFile="&layer_real_source_path;/group" name="location" />
+      </module>
+    </layer>
+  </systemModel>
+</SystemDefinition>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/config_test.cfg.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<build>
+    <config name="test_spec" abstract="true">
+        <set name="A" value="foo"/>
+        <set name="B" value="parent: ${A}"/>
+        <!-- 0 -->
+        <config>
+            <set name="B" value="child -> ${A}"/>
+            <set name="C" value="missing value test ${does_not_exist}"/>
+            <set name="node.content">
+This is the value!
+            </set>
+        </config>
+        
+        <!-- 1 -->
+        <config>
+            <set name="C" value="one"/>
+            <set name="C" value="two"/>
+        </config>
+        
+        <!-- 2 -->
+        <config/>
+        
+        <!-- 3 -->
+        <config name="spec.with.type" type="test.type"/>
+        
+        <!-- 4 -->
+        <config>
+            <append name="A" value="bar"/>
+        </config>
+        
+        <!-- 5 -->
+        <config name="parent">
+            <set name="template" value="value -> ${my.value}"/>
+            <set name="my.value" value="from parent"/>
+    
+            <config name="child">
+                <set name="my.value" value="from child"/>
+            </config>
+        </config>
+
+        <!-- 6 -->
+        <config name="spec.with.type2" type="test.type"/>
+    
+    </config>
+    
+    
+    <config name="test_list" abstract="true">
+        <append name="include" value="foo_${custom.property}"/>
+        <config abstract="true">
+            <append name="include" value="bar1_${custom.property}"/>
+            <set name="include" value="bar2_${custom.property}"/>
+            <config name="test_list_config1">
+                    <set name="custom.property" value="config1"/>
+            </config>
+
+            <config name="test_list_config2">
+                    <set name="custom.property" value="config2"/>
+            </config>    
+        </config>
+    </config>
+
+</build>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/data_model_test.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<heliumDataModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="..\tools\common\schema\helium_data_model.xsd">
+    <property>
+        <name>test.property.1</name>
+        <usage>required</usage>
+        <editStatus>never</editStatus>
+        <type>string</type>
+        <description>Test property one.</description>
+    </property>
+    <property>
+        <name>test.property.2</name>
+        <usage>optional</usage>
+        <editStatus>never</editStatus>
+        <type>string</type>
+        <description>Test property two.</description>
+    </property>
+    <property>
+        <name>test.property.3</name>
+        <usage>optional</usage>
+        <editStatus>never</editStatus>
+        <type>string</type>
+        <description>Test property three.</description>
+    </property>    
+    <group>
+        <name>testGroup</name>
+        <description/>
+        <propertyRef usage="required">test.property.2</propertyRef>
+        <propertyRef usage="optional">test.property.3</propertyRef>
+        <propertyRef usage="optional">test.property.1</propertyRef>
+    </group>
+</heliumDataModel>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/data_model_validation_group_test.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<heliumDataModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="..\tools\common\schema\helium_data_model.xsd">
+    <property>
+        <name>test.property.1</name>
+        <usage>required</usage>
+        <editStatus>never</editStatus>
+        <type>string</type>
+        <description>Test property one.</description>
+    </property>    
+    <group>
+        <name>testGroup</name>
+        <description/>
+        <propertyRef usage="required">test.property.1</propertyRef>
+        <propertyRef usage="required">test.property.2</propertyRef>
+    </group>
+</heliumDataModel>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/data_model_validation_property_test.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<heliumDataModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="..\tools\common\schema\helium_data_model.xsd">
+    <property>
+        <name>test.property.1</name>
+        <description>Test property one.</description>
+    </property>      
+    <group>
+        <name>testGroup</name>
+        <description/>
+        <propertyRef usage="required">test.property.1</propertyRef>
+    </group>
+</heliumDataModel>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/data_model_validation_test.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<heliumDataModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="..\tools\common\schema\helium_data_model.xsd">
+    <property>
+        <name>test.property.1</name>
+        <usage>required</usage>
+        <editStatus>never</editStatus>
+        <type>string</type>
+        <description>Test property one.</description>
+    </property>
+    <property>
+        <name>test.property.2</name>
+        <usage>optional</usage>
+        <editStatus>never</editStatus>
+        <type>string</type>
+        <description>Test property two.</description>
+    </property>
+    <property>
+        <name>test.property.3</name>
+        <usage>optional</usage>
+        <editStatus>never</editStatus>
+        <type>string</type>
+        <description>**Test property Three.</description>
+    </property>   
+    <group>
+        <name>testGroup</name>
+        <description>Group description test.</description>
+        <propertyRef usage="required">test.property.1</propertyRef>
+        <propertyRef usage="required">test.property.2</propertyRef>
+    </group>
+</heliumDataModel>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/distribution.policy.extended_for_sf.id_status.csv	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,5 @@
+ID,Include in build?,Regexp,Symbian Foundation License,Eclipse Public License,Supplier,Description,Contact,Other Notes
+0,Yes,Nokia,,,Company1,Open,,
+1,No,Nokia,,,Company1,Private,,
+3,Yes,Public,Yes,No,Company1,XXX,,
+7,Yes,Public,No,Yes,Company1,YYY,,
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/distribution.policy.id_status.csv	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,5 @@
+ID,Include in build?,Description,Contract status,Supplier
+0,Yes,Public,Delivered,Company1
+1,No,Internal,Not delivered,Company1
+2,Yes,Some app,,Company2
+,,,, 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/docs/database_test.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<antDatabase>
+    <project>
+        <name>test.docs.valid</name>
+        <documentation> 
+            <p>Test docs</p>
+        </documentation>
+        <default/>
+        <pythonDependency/>
+        <target>
+            <name>validate-at-startup</name>
+            <ifDependency/>
+            <unlessDependency/>
+            <description/>
+            <tasks>1</tasks>
+            <location>helium\tools\common\common.ant.xml:493:</location>
+            <dependency type="direct">create-data-model-db</dependency>
+            <documentation/> 
+            <source>&lt;target name="validate-at-startup" depends="create-data-model-db"&gt;
+            &lt;hlm:python xmlns:hlm="http://www.nokia.com/helium"&gt;
+import ant
+            &lt;/hlm:python&gt;
+        &lt;/target&gt;</source>
+        </target>
+    </project>  
+</antDatabase>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/docs/helium/tools/test_docs_invalid.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : test_docs_invalid.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="test.docs.invalid" xmlns:hlm="http://www.nokia.com/helium">
+    <description>
+        Test docs
+    </description>
+    
+    <target name="validate-at-startup" depends="create-data-model-db">
+        <hlm:python>
+import invalidmodule        
+        </hlm:python>
+    </target>
+</project>    
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/docs/helium/tools/test_docs_valid.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : test_docs_valid.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="test.docs.valid" xmlns:hlm="http://www.nokia.com/helium">
+    <description>
+        Test docs
+    </description>
+    
+    <target name="validate-at-startup" depends="create-data-model-db">
+        <hlm:python>
+import ant        
+        </hlm:python>
+    </target>
+</project>    
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/docs/sample_new_db.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<antDatabase>
+  <project>
+    <name>test.project2</name>
+    <target>
+      <name>test-target2</name>
+    </target>
+    <macro>
+      <name>testMacro2</name>
+    </macro>
+    <property>
+      <name>test.property2</name>
+    </property>
+    <taskdef>
+      <name>testtask2</name>
+      <classname>xyz.testtask2</classname>
+    </taskdef>
+  </project>
+</antDatabase>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/docs/sample_old_db.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<antDatabase>
+  <project>
+    <name>test.project1</name>
+    <target>
+      <name>test-target1</name>
+    </target>
+    <macro>
+      <name>testMacro1</name>
+    </macro>
+    <property>
+      <name>test.property1</name>
+    </property>
+    <taskdef>
+      <name>testtask1</name>
+      <classname>xyz.testtask1</classname>
+    </taskdef>
+  </project>
+</antDatabase>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/example_corernd.iconfig.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<build>
+    <config type="core">
+        <set name="CORE_NAME" value="RX-60_00_rnd"/>
+        <set name="ROFS2_NAME" value="RX-60_00.01_rnd"/>
+        <set name="ROFS3_NAME" value="RX-60_00_rnd"/>
+        <set name="LANGPACK_ID" value="01"/>
+        <set name="CUSTVARIANT_ID" value=""/>
+        <set name="PRODUCT_NAME" value="phone"/>
+        <set name="PRODUCT_TYPE" value="RX-60"/>
+        <set name="TYPE" value="rnd"/>
+        <set name="CORE_VERSION" value="V DFS79.92.0.0.1 RND"/>
+        <set name="LANGPACK_VERSION" value=""/>
+        <set name="ROFS3_VERSION" value="V DFS79.92.0.0.1 RND"/>
+        <set name="CORE_DIR" value="W:/output/release_flash_images/phone/rnd/core/RX-60_00_rnd"/>
+        <set name="ROFS2_DIR" value="W:/output/release_flash_images/phone/rnd/langpack/langpack_01/rofs2"/>
+        <set name="ROFS3_DIR" value="W:/output/release_flash_images/phone/rnd/customer/vanilla/rofs3"/>
+    </config>
+</build>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/flash_config/rom_image_config_test.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<build>
+    <config name="mc" abstract="true">
+        <set name="target.dir" value="${release.images.dir}"/>
+        <set name="today" value="$(TODAY)"/>
+        
+        <set name="rom.output.dir" value="${build.drive}\output\development_flash_images"/>
+        <set name="image.type" value="prd,rnd"/>
+        <set name="build.drive" value="${build.drive}"/>
+        <set name="build.version" value="0.0728.3.0.1"/>
+        
+        <!-- Template dirs  -->
+        <set name="core.image.path" value="${image.type}/core"/>
+        <set name="languagepack.image.path" value="${image.type}/language/${languagepack.id}_variant_${description}/"/>
+        <set name="customer.image.path" value="${image.type}/customer/vanilla/${customer.id}_variant_${description}"/>
+        <set name="flash.config.path" value="${customer.image.path}"/>
+        
+        <!-- Template outputdir  -->
+        <set name="flash.output.dir" value="${rom.output.dir}/${rommake.product.name}/${image.type}"/>
+        <set name="core.output.dir" value="${rom.output.dir}/${rommake.product.name}/${core.image.path}"/>
+        <set name="languagepack.output.dir" value="${rom.output.dir}/${rommake.product.name}/${languagepack.image.path}"/>
+        <set name="customer.output.dir" value="${rom.output.dir}/${rommake.product.name}/${customer.image.path}"/>
+        <set name="eraseuda.output.dir" value="${rom.output.dir}/${rommake.product.name}/${languagepack.image.path}"/>
+        
+        <!-- Flash image name -->
+        <set name="core.image.name" value="${version.product.type}_${build.version}_${image.type}"/>
+        <set name="languagepack.image.name" value="${version.product.type}_${build.version}_${image.type}_${languagepack.id}"/>
+        <set name="customer.image.name" value="${version.product.type}_${build.version}_${image.type}_${variant.id}_${build.id}_${customer.id}_${revision}"/>
+        <set name="eraseuda.image.name" value="${config.name}_${build.version}"/>
+        <set name="flash.config.name" value="${customer.image.name}.config.xml"/>
+        
+        <!-- default localisation settings -->
+        <set name="variation" value="western"/>
+        <set name="languagepack.revision" value="0"/>
+        <set name="description" value=""/>
+        
+        <!-- Do not build target in parallel by default -->
+        <set name="build.parallel" value="false"/>
+        
+        <!-- templates to generate the makefiles -->
+        <set name="output.makefile.filename" value="${rombuild.makefile.name}"/>
+        <set name="main.makefile.template" value="${build.drive}\mc\mc_config\mc_5132_config\rombuild\main.mk"/>
+        <set name="flash.makefile.template" value="${build.drive}\mc\mc_config\mc_5132_config\rombuild\flash.mk"/>
+        <set name="core.makefile.template" value="${build.drive}\mc\mc_config\mc_5132_config\rombuild\core.mk"/>
+        <set name="languagepack.makefile.template" value="${build.drive}\mc\mc_config\mc_5132_config\rombuild\languagepack.mk"/>
+        <set name="customer.makefile.template" value="${build.drive}\mc\mc_config\mc_5132_config\rombuild\customer.mk"/>
+        <set name="uda.makefile.template" value="${build.drive}\mc\mc_config\mc_5132_config\rombuild\uda.mk"/>
+        <set name="eraseuda.makefile.template" value="${build.drive}\mc\mc_config\mc_5132_config\rombuild\eraseuda.mk"/>
+        <set name="flash.config.template" value="${build.drive}\mc\mc_config\mc_5132_config\rombuild\template.config.xml"/>
+        
+        <config name="product" abstract="true">
+            <set name="config.name" value="product"/>
+            <set name="rommake.hwid" value="2048"/>
+            <set name="version.product.type" value="RM-235"/>
+            <set name="rommake.product.name" value="product"/>
+            <set name="rommake.product.type" value="RM-235"/>
+            
+            <!-- Language pack and Variant -->
+            <config name="variants" abstract="true">
+                <set name="target.dir" value="${release.images.dir}"/>
+                <set name="build.parallel" value="false"/>
+                <!-- core -->
+                <config type="core">
+                    <set name="core.id" value="00"/>
+                    <set name="image.type" value="rnd,prd"/>
+                </config>
+                
+                <!-- western group -->
+                <config name="western" abstract="true">
+                    <set name="build.parallel" value="true"/>
+                    <config type="languagepack">
+                        <set name="languagepack.id" value="01"/>
+                        <set name="default" value="01"/>
+                        <set name="languages" value="01,02,03,05,04,13"/>
+                        <set name="description" value="EURO1"/>
+                        <set name="variation" value="western"/>
+                        <set name="revision" value="0"/>
+                    </config>
+                    <config type="languagepack">
+                        <set name="languagepack.id" value="02"/>
+                        <set name="default" value="01"/>
+                        <set name="languages" value="01,02,03,14,05,18"/>
+                        <set name="description" value="EURO2"/>
+                    </config>
+                    <config type="languagepack">
+                        <set name="languagepack.id" value="23"/>
+                        <set name="default" value="01"/>
+                        <set name="languages" value="01,02,18,03,05"/>
+                        <set name="description" value="AFRICA2"/>
+                    </config>
+                </config>
+                
+                <config name="customer_roms" abstract="true">
+                    <set name="build.parallel" value="true"/>
+                    <config type="customer">
+                        <set name="customer.id" value="01"/>
+                        <set name="description" value="vanilla_customer_variant"/>
+                        <set name="compatible.languagepack" value="01,02,03"/>
+                    </config>
+                </config>
+            </config>
+            
+            <!-- china group -->
+            <config name="china" abstract="true">
+                <set name="build.parallel" value="true"/>
+                <set name="variation" value="china"/>
+                <config type="languagepack">
+                    <set name="languagepack.id" value="11"/>
+                    <set name="default" value="29"/>
+                    <set name="languages" value="29,157"/>
+                    <set name="description" value="TAIWAN"/>
+                </config>
+            </config>
+            
+        </config>
+    </config>
+</build>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/ido/ido_project/ido_project/classicui/layers.sysdef.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,163 @@
+<?xml version="1.0"?>
+<!DOCTYPE SystemDefinition [
+<!ELEMENT SystemDefinition (systemModel?, build?)>
+<!ATTLIST SystemDefinition
+  name CDATA #REQUIRED
+  schema CDATA #REQUIRED
+>
+<!-- all paths are relative to the root of the source -->
+
+<!-- System Model Section of DTD -->
+<!ELEMENT systemModel (layer+)>
+
+<!ELEMENT layer (logicalset* | module*)*>
+<!-- Kernel Services, Base Services, OS Services, Etc -->
+<!ATTLIST layer
+  name CDATA #REQUIRED
+  levels CDATA #IMPLIED
+  span CDATA #IMPLIED
+>
+
+<!ELEMENT logicalset (logicalsubset* | module* | unit* | package* | prebuilt*)*>
+ <!-- Generic OS services, Comms Services, etc -->
+<!ATTLIST logicalset 
+  name CDATA #REQUIRED
+>
+
+<!ELEMENT logicalsubset (module* | unit* | package* | prebuilt*)*>
+<!-- Telephony services, Networking Services, etc -->
+<!ATTLIST logicalsubset 
+  name CDATA #REQUIRED
+>
+
+<!ELEMENT module (component* | unit* | package* | prebuilt*)*>
+<!-- Screen Driver, Content Handling, etc -->
+<!ATTLIST module
+  name CDATA #REQUIRED
+  level CDATA #IMPLIED  
+>
+
+<!ELEMENT component (unit* | package* | prebuilt*)*>
+<!-- units or packages -->
+<!ATTLIST component
+  name CDATA #REQUIRED
+>
+
+<!ELEMENT unit EMPTY >
+<!-- must be buildable (bld.inf) -->
+<!-- bldFile will soon be removed in favour of mrp -->
+<!ATTLIST unit
+  unitID ID #REQUIRED
+  name CDATA #REQUIRED
+  mrp CDATA #REQUIRED
+  filter CDATA #IMPLIED
+  bldFile CDATA #REQUIRED
+  priority CDATA #IMPLIED
+  contract CDATA #IMPLIED
+>
+
+<!ELEMENT package EMPTY >
+<!-- like a unit, but not buildable -->
+<!ATTLIST package
+  name CDATA #REQUIRED
+  mrp CDATA #REQUIRED
+  filter CDATA #IMPLIED
+  contract CDATA #IMPLIED
+>
+
+<!ELEMENT prebuilt EMPTY>
+<!-- pre-built CBR component -->
+<!ATTLIST prebuilt
+  name CDATA #REQUIRED
+  version CDATA #REQUIRED
+  late (Y|N) #IMPLIED
+  filter CDATA #IMPLIED
+  contract CDATA #IMPLIED
+>
+
+
+
+<!-- Build Section of DTD -->
+<!ELEMENT build (option* | target+ | targetList+ | unitList+ | configuration+)*>
+
+<!ELEMENT unitList (unitRef+)>
+<!-- e.g. common, beech, cedar, etc -->
+<!ATTLIST unitList
+  name ID #REQUIRED
+  description CDATA #REQUIRED
+>
+
+<!ELEMENT unitRef EMPTY>
+<!-- Reference to unit in System Model -->
+<!ATTLIST unitRef
+  unit IDREF #REQUIRED
+>
+
+<!ELEMENT targetList EMPTY>
+<!-- e.g. DEFAULT_7.0S, TOOLS_7.0S, etc -->
+<!ATTLIST targetList
+  name ID #REQUIRED
+  description CDATA #REQUIRED
+  target IDREFS #REQUIRED
+>
+
+<!ELEMENT target EMPTY>
+<!-- e.g. WINS, WINSCW, ARM4, etc -->
+<!ATTLIST target
+  name ID #REQUIRED
+  abldTarget CDATA #REQUIRED
+  description CDATA #REQUIRED
+>
+
+<!ELEMENT option EMPTY>
+<!-- e.g. Keepgoing, SaveSpace, etc -->
+<!ATTLIST option
+  name ID #REQUIRED
+  abldOption CDATA #REQUIRED
+  description CDATA #REQUIRED
+  enable (Y | N | y | n) #REQUIRED
+>
+
+<!ELEMENT configuration (unitListRef+ | layerRef+ | task+)*>
+<!-- 7.0s, 8.0a, 8.0b, cuskit, etc -->
+<!ATTLIST configuration
+  name ID #REQUIRED
+  description CDATA #REQUIRED
+  filter CDATA #REQUIRED
+>
+<!ELEMENT task ( unitListRef* , (buildLayer | specialInstructions))>
+
+<!ELEMENT unitListRef EMPTY>
+<!-- Reference to unitList -->
+<!ATTLIST unitListRef
+  unitList IDREF #REQUIRED
+>
+
+<!ELEMENT layerRef EMPTY>
+<!-- Reference to named entity in the model, usually a layer -->
+<!ATTLIST layerRef
+  layerName CDATA #REQUIRED
+>
+
+<!ELEMENT buildLayer EMPTY>
+<!-- bldmake, abld export, etc -->
+<!ATTLIST buildLayer
+  command CDATA #REQUIRED
+  targetList IDREFS #IMPLIED
+  unitParallel (Y | N | y | n) #REQUIRED
+  targetParallel (Y | N | y | n) #IMPLIED
+>
+
+<!ELEMENT specialInstructions EMPTY>
+<!-- BootStrap -->
+<!ATTLIST specialInstructions
+  name CDATA #REQUIRED
+  cwd CDATA #REQUIRED
+  command CDATA #REQUIRED
+>
+
+<!ENTITY layer_real_source_path "s60/mw/classicui">
+
+]>
+
+<SystemDefinition name="MCL" schema="1.4.0"/>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/ido/ido_project/ido_project/myapp/layers.sysdef.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,163 @@
+<?xml version="1.0"?>
+<!DOCTYPE SystemDefinition [
+<!ELEMENT SystemDefinition (systemModel?, build?)>
+<!ATTLIST SystemDefinition
+  name CDATA #REQUIRED
+  schema CDATA #REQUIRED
+>
+<!-- all paths are relative to the root of the source -->
+
+<!-- System Model Section of DTD -->
+<!ELEMENT systemModel (layer+)>
+
+<!ELEMENT layer (logicalset* | module*)*>
+<!-- Kernel Services, Base Services, OS Services, Etc -->
+<!ATTLIST layer
+  name CDATA #REQUIRED
+  levels CDATA #IMPLIED
+  span CDATA #IMPLIED
+>
+
+<!ELEMENT logicalset (logicalsubset* | module* | unit* | package* | prebuilt*)*>
+ <!-- Generic OS services, Comms Services, etc -->
+<!ATTLIST logicalset 
+  name CDATA #REQUIRED
+>
+
+<!ELEMENT logicalsubset (module* | unit* | package* | prebuilt*)*>
+<!-- Telephony services, Networking Services, etc -->
+<!ATTLIST logicalsubset 
+  name CDATA #REQUIRED
+>
+
+<!ELEMENT module (component* | unit* | package* | prebuilt*)*>
+<!-- Screen Driver, Content Handling, etc -->
+<!ATTLIST module
+  name CDATA #REQUIRED
+  level CDATA #IMPLIED  
+>
+
+<!ELEMENT component (unit* | package* | prebuilt*)*>
+<!-- units or packages -->
+<!ATTLIST component
+  name CDATA #REQUIRED
+>
+
+<!ELEMENT unit EMPTY >
+<!-- must be buildable (bld.inf) -->
+<!-- bldFile will soon be removed in favour of mrp -->
+<!ATTLIST unit
+  unitID ID #REQUIRED
+  name CDATA #REQUIRED
+  mrp CDATA #REQUIRED
+  filter CDATA #IMPLIED
+  bldFile CDATA #REQUIRED
+  priority CDATA #IMPLIED
+  contract CDATA #IMPLIED
+>
+
+<!ELEMENT package EMPTY >
+<!-- like a unit, but not buildable -->
+<!ATTLIST package
+  name CDATA #REQUIRED
+  mrp CDATA #REQUIRED
+  filter CDATA #IMPLIED
+  contract CDATA #IMPLIED
+>
+
+<!ELEMENT prebuilt EMPTY>
+<!-- pre-built CBR component -->
+<!ATTLIST prebuilt
+  name CDATA #REQUIRED
+  version CDATA #REQUIRED
+  late (Y|N) #IMPLIED
+  filter CDATA #IMPLIED
+  contract CDATA #IMPLIED
+>
+
+
+
+<!-- Build Section of DTD -->
+<!ELEMENT build (option* | target+ | targetList+ | unitList+ | configuration+)*>
+
+<!ELEMENT unitList (unitRef+)>
+<!-- e.g. common, beech, cedar, etc -->
+<!ATTLIST unitList
+  name ID #REQUIRED
+  description CDATA #REQUIRED
+>
+
+<!ELEMENT unitRef EMPTY>
+<!-- Reference to unit in System Model -->
+<!ATTLIST unitRef
+  unit IDREF #REQUIRED
+>
+
+<!ELEMENT targetList EMPTY>
+<!-- e.g. DEFAULT_7.0S, TOOLS_7.0S, etc -->
+<!ATTLIST targetList
+  name ID #REQUIRED
+  description CDATA #REQUIRED
+  target IDREFS #REQUIRED
+>
+
+<!ELEMENT target EMPTY>
+<!-- e.g. WINS, WINSCW, ARM4, etc -->
+<!ATTLIST target
+  name ID #REQUIRED
+  abldTarget CDATA #REQUIRED
+  description CDATA #REQUIRED
+>
+
+<!ELEMENT option EMPTY>
+<!-- e.g. Keepgoing, SaveSpace, etc -->
+<!ATTLIST option
+  name ID #REQUIRED
+  abldOption CDATA #REQUIRED
+  description CDATA #REQUIRED
+  enable (Y | N | y | n) #REQUIRED
+>
+
+<!ELEMENT configuration (unitListRef+ | layerRef+ | task+)*>
+<!-- 7.0s, 8.0a, 8.0b, cuskit, etc -->
+<!ATTLIST configuration
+  name ID #REQUIRED
+  description CDATA #REQUIRED
+  filter CDATA #REQUIRED
+>
+<!ELEMENT task ( unitListRef* , (buildLayer | specialInstructions))>
+
+<!ELEMENT unitListRef EMPTY>
+<!-- Reference to unitList -->
+<!ATTLIST unitListRef
+  unitList IDREF #REQUIRED
+>
+
+<!ELEMENT layerRef EMPTY>
+<!-- Reference to named entity in the model, usually a layer -->
+<!ATTLIST layerRef
+  layerName CDATA #REQUIRED
+>
+
+<!ELEMENT buildLayer EMPTY>
+<!-- bldmake, abld export, etc -->
+<!ATTLIST buildLayer
+  command CDATA #REQUIRED
+  targetList IDREFS #IMPLIED
+  unitParallel (Y | N | y | n) #REQUIRED
+  targetParallel (Y | N | y | n) #IMPLIED
+>
+
+<!ELEMENT specialInstructions EMPTY>
+<!-- BootStrap -->
+<!ATTLIST specialInstructions
+  name CDATA #REQUIRED
+  cwd CDATA #REQUIRED
+  command CDATA #REQUIRED
+>
+
+<!ENTITY layer_real_source_path "s60/app/myapp">
+
+]>
+
+<SystemDefinition name="MCL" schema="1.4.0"/>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/ido/ido_project/ido_project/xmlui/layers.sysdef.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,161 @@
+<?xml version="1.0"?>
+<!DOCTYPE SystemDefinition [
+<!ELEMENT SystemDefinition (systemModel?, build?)>
+<!ATTLIST SystemDefinition
+  name CDATA #REQUIRED
+  schema CDATA #REQUIRED
+>
+<!-- all paths are relative to the root of the source -->
+
+<!-- System Model Section of DTD -->
+<!ELEMENT systemModel (layer+)>
+
+<!ELEMENT layer (logicalset* | module*)*>
+<!-- Kernel Services, Base Services, OS Services, Etc -->
+<!ATTLIST layer
+  name CDATA #REQUIRED
+  levels CDATA #IMPLIED
+  span CDATA #IMPLIED
+>
+
+<!ELEMENT logicalset (logicalsubset* | module* | unit* | package* | prebuilt*)*>
+ <!-- Generic OS services, Comms Services, etc -->
+<!ATTLIST logicalset 
+  name CDATA #REQUIRED
+>
+
+<!ELEMENT logicalsubset (module* | unit* | package* | prebuilt*)*>
+<!-- Telephony services, Networking Services, etc -->
+<!ATTLIST logicalsubset 
+  name CDATA #REQUIRED
+>
+
+<!ELEMENT module (component* | unit* | package* | prebuilt*)*>
+<!-- Screen Driver, Content Handling, etc -->
+<!ATTLIST module
+  name CDATA #REQUIRED
+  level CDATA #IMPLIED  
+>
+
+<!ELEMENT component (unit* | package* | prebuilt*)*>
+<!-- units or packages -->
+<!ATTLIST component
+  name CDATA #REQUIRED
+>
+
+<!ELEMENT unit EMPTY >
+<!-- must be buildable (bld.inf) -->
+<!-- bldFile will soon be removed in favour of mrp -->
+<!ATTLIST unit
+  unitID ID #REQUIRED
+  name CDATA #REQUIRED
+  mrp CDATA #REQUIRED
+  filter CDATA #IMPLIED
+  bldFile CDATA #REQUIRED
+  priority CDATA #IMPLIED
+  contract CDATA #IMPLIED
+>
+
+<!ELEMENT package EMPTY >
+<!-- like a unit, but not buildable -->
+<!ATTLIST package
+  name CDATA #REQUIRED
+  mrp CDATA #REQUIRED
+  filter CDATA #IMPLIED
+  contract CDATA #IMPLIED
+>
+
+<!ELEMENT prebuilt EMPTY>
+<!-- pre-built CBR component -->
+<!ATTLIST prebuilt
+  name CDATA #REQUIRED
+  version CDATA #REQUIRED
+  late (Y|N) #IMPLIED
+  filter CDATA #IMPLIED
+  contract CDATA #IMPLIED
+>
+
+
+
+<!-- Build Section of DTD -->
+<!ELEMENT build (option* | target+ | targetList+ | unitList+ | configuration+)*>
+
+<!ELEMENT unitList (unitRef+)>
+<!-- e.g. common, beech, cedar, etc -->
+<!ATTLIST unitList
+  name ID #REQUIRED
+  description CDATA #REQUIRED
+>
+
+<!ELEMENT unitRef EMPTY>
+<!-- Reference to unit in System Model -->
+<!ATTLIST unitRef
+  unit IDREF #REQUIRED
+>
+
+<!ELEMENT targetList EMPTY>
+<!-- e.g. DEFAULT_7.0S, TOOLS_7.0S, etc -->
+<!ATTLIST targetList
+  name ID #REQUIRED
+  description CDATA #REQUIRED
+  target IDREFS #REQUIRED
+>
+
+<!ELEMENT target EMPTY>
+<!-- e.g. WINS, WINSCW, ARM4, etc -->
+<!ATTLIST target
+  name ID #REQUIRED
+  abldTarget CDATA #REQUIRED
+  description CDATA #REQUIRED
+>
+
+<!ELEMENT option EMPTY>
+<!-- e.g. Keepgoing, SaveSpace, etc -->
+<!ATTLIST option
+  name ID #REQUIRED
+  abldOption CDATA #REQUIRED
+  description CDATA #REQUIRED
+  enable (Y | N | y | n) #REQUIRED
+>
+
+<!ELEMENT configuration (unitListRef+ | layerRef+ | task+)*>
+<!-- 7.0s, 8.0a, 8.0b, cuskit, etc -->
+<!ATTLIST configuration
+  name ID #REQUIRED
+  description CDATA #REQUIRED
+  filter CDATA #REQUIRED
+>
+<!ELEMENT task ( unitListRef* , (buildLayer | specialInstructions))>
+
+<!ELEMENT unitListRef EMPTY>
+<!-- Reference to unitList -->
+<!ATTLIST unitListRef
+  unitList IDREF #REQUIRED
+>
+
+<!ELEMENT layerRef EMPTY>
+<!-- Reference to named entity in the model, usually a layer -->
+<!ATTLIST layerRef
+  layerName CDATA #REQUIRED
+>
+
+<!ELEMENT buildLayer EMPTY>
+<!-- bldmake, abld export, etc -->
+<!ATTLIST buildLayer
+  command CDATA #REQUIRED
+  targetList IDREFS #IMPLIED
+  unitParallel (Y | N | y | n) #REQUIRED
+  targetParallel (Y | N | y | n) #IMPLIED
+>
+
+<!ELEMENT specialInstructions EMPTY>
+<!-- BootStrap -->
+<!ATTLIST specialInstructions
+  name CDATA #REQUIRED
+  cwd CDATA #REQUIRED
+  command CDATA #REQUIRED
+>
+<!ENTITY layer_real_source_path "s60/mw/xmlui">
+]>
+
+<SystemDefinition name="MCL" schema="1.4.0"/>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/iqrf/imaker_5250.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,1279 @@
+<?xml version="1.0" encoding="ASCII"?>
+<IMaker xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns="iqrf" query="help-config">
+  <result>
+    <interfaces name="An interface">
+      <configurationElements name="BLDROBY" description="For passing extra oby files (from command line) to the buildrom.pl" values="(string)"/>
+      <configurationElements name="BLDROM_OPT" description="The default buildrom.pl options" values="(string)"/>
+      <configurationElements name="BLDROPT" description="For passing extra parameters (from command line) to the buildrom.pl" values="(string)"/>
+      <configurationElements name="CONFIGROOT" description="Define the default configuration root directory." values="(string)"/>
+      <configurationElements name="CORE_CDPROMFILE" description="The name of the core Code Demand Paging rom file (Code paging)." values="(string)"/>
+      <configurationElements name="CORE_DIR" description="The working directory, when creating core image" values="(string)"/>
+      <configurationElements name="CORE_E2FNAME" description="The core elf2flash filename. This is the final core flash file." values="(string)"/>
+      <configurationElements name="CORE_FWIDFILE" description="The (generated) _core_fwid.txt file name." values="(string)"/>
+      <configurationElements name="CORE_IMEISVFILE" description="The (generated) _core_imeisv.txt file name." values="(string)"/>
+      <configurationElements name="CORE_IMEISVINFO" description="The content string for the imeisv.txt file." values="(string)"/>
+      <configurationElements name="CORE_MODELFILE" description="The (generated) _core_model.txt file name." values="(string)"/>
+      <configurationElements name="CORE_MODELINFO" description="The content string for the model.txt file." values="(string)"/>
+      <configurationElements name="CORE_MSTOBY" description="The generated master oby file name, which includes the CORE_OBY files" values="(string)"/>
+      <configurationElements name="CORE_NAME" description="The full name of the core image" values="(string)"/>
+      <configurationElements name="CORE_NDPROMFILE" description="The name of the core Non Demand Paging rom file." values="(string)"/>
+      <configurationElements name="CORE_OBY" description="The oby file(s) included to the core image creation" values="(string)"/>
+      <configurationElements name="CORE_ODPROMFILE" description="The name of the core On Demand Paging rom file (Rom paging)." values="(string)"/>
+      <configurationElements name="CORE_OPT" description="The core specific buildrom options" values="(string)"/>
+      <configurationElements name="CORE_PLATFILE" description="The (generated) _core_platform.txt file name." values="(string)"/>
+      <configurationElements name="CORE_PLATINFO" description="The content string for the fwid.txt file." values="(string)"/>
+      <configurationElements name="CORE_PRODFILE" description="The (generated) _core_product.txt file name." values="(string)"/>
+      <configurationElements name="CORE_ROFSFILE" description="The name of the core rofs file." values="(string)"/>
+      <configurationElements name="CORE_ROMVER" description="The rom version parameter passed to the version.iby" values="(string)"/>
+      <configurationElements name="CORE_SWVERFILE" description="The (generated) _core_sw.txt version file name. This generated file is included in the CORE_VERIBY file." values="(string)"/>
+      <configurationElements name="CORE_SWVERINFO" description="The content string for the sw.txt file." values="(string)"/>
+      <configurationElements name="CORE_TIME" description="The time defined to the core image" values="(string)"/>
+      <configurationElements name="CORE_UDEBFILE" description="The name of the core udeb file. See USE_UDEB." values="(string)"/>
+      <configurationElements name="CORE_VERIBY" description="The name of the generated core *version.iby, which included version files and info" values="(string)"/>
+      <configurationElements name="CORE_VERSION" description="The version of the core. Used in sw.txt generation." values="(string)"/>
+      <configurationElements name="COREPLAT_NAME" description="Name of the core platform" values="(string)"/>
+      <configurationElements name="CUSTVARIANT_DIR" description="Configure the directory where to included the customer variant content. By default all content under /content is included to the image as it exists in the folder." values="(string)"/>
+      <configurationElements name="DEFAULT_LANGUAGE" description="Default language is the language where the device will boot to (SIM language overrides this selection)" values="(string)"/>
+      <configurationElements name="FLASH_EXT" description="The flash file extension." values="(string)"/>
+      <configurationElements name="HWID" description="Hardware Id" values="([0-9]4)"/>
+      <configurationElements name="HWID_LIST" description="Possible Hardware Ids of the product." values="([0-9]4)*"/>
+      <configurationElements name="KEEPTEMP" description="Keep the buildrom.pl temp files (copied to the WORKDIR). E.g. tmp1.oby tmp2.oby..tmp9.oby" values="([0|1])"/>
+      <configurationElements name="LABEL" description="A label to the NAME of the image" values="(string)"/>
+      <configurationElements name="LANGID" description="Language id used in the lang.txt generation" values="(string)"/>
+      <configurationElements name="LANGUAGES" description="Languages are the languages that are taken to the image (SC language is is defaulting to 01 in languages.txt)" values="(string)"/>
+      <configurationElements name="NAME" description="The name of the image" values="(string)"/>
+      <configurationElements name="OPERATOR_OBY" description="The name for generated operator oby, which is a file generated based on an operator specific content." values="(string)"/>
+      <configurationElements name="OPERATOR_OBYGEN" description="The name, path, rule for collecting content to the operator specific oby (E.g. operator.oby | /epoc32/rom/include/operator | *.iby collects all iby files from operator folder)." values="(string)|(string)|(string)"/>
+      <configurationElements name="PRODUCT_MODEL" description="The model of the product" values="(string)"/>
+      <configurationElements name="PRODUCT_NAME" description="Name of the product" values="(string)"/>
+      <configurationElements name="PRODUCT_REVISION" description="The reision of the product" values="(string)"/>
+      <configurationElements name="RELEASEDIR" description="The RELEASEDIR is used in the RELEASE step that copies the created files to a separate folder defined by the RELEASEDIR." values="(string)"/>
+      <configurationElements name="RELEASEFILES" description="The RELEASEFILES define the source files that are copied in the RELEASE step. The files must be given as a space delimited list. Wildcards can be used. E.g. \epoc32\rombuild\product\theflash.fpsx \epoc32\rombuild\product\*.log" values="(string)"/>
+      <configurationElements name="RELEASENAME" description="The RELEASENAME is used in the RELEASE step that copies the created files to a separate folder with a new name." values="(string)"/>
+      <configurationElements name="ROFS2_DIR" description="The working directory, when creating the rofs2 image" values="(string)"/>
+      <configurationElements name="ROFS2_E2FNAME" description="The rofs2 elf2flash filename. This is the final rofs2 flash file." values="(string)"/>
+      <configurationElements name="ROFS2_FOOTER" description="This variable can contain a footer section for the rofs2 master oby." values="(string)"/>
+      <configurationElements name="ROFS2_FWIDFILE" description="The (generated) _rofs2_fwid.txt file name." values="(string)"/>
+      <configurationElements name="ROFS2_FWIDINFO" description="The content string for the fwid2.txt file." values="(string)"/>
+      <configurationElements name="ROFS2_HEADER" description="This variable can contain a header section for the rofs2 master oby." values="(string)"/>
+      <configurationElements name="ROFS2_MSTOBY" description="The (generated) rofs2 master oby file name. This file includes the ROFS2_OBY files and other parameters" values="(string)"/>
+      <configurationElements name="ROFS2_NAME" description="The full name of the rofs2 image" values="(string)"/>
+      <configurationElements name="ROFS2_OBY" description="The oby file(s) included to the rofs2 image creation" values="(string)"/>
+      <configurationElements name="ROFS2_OPT" description="The rofs2 specific buildrom options" values="(string)"/>
+      <configurationElements name="ROFS2_ROMVER" description="The rofs2 ROM version string" values="(string)"/>
+      <configurationElements name="ROFS2_TIME" description="The time defined to the rofs2 image." values="(string)"/>
+      <configurationElements name="ROFS2_VERIBY" description="The (generated) version iby file name for the rofs2 image. This file included the version text files and other version parameters." values="(string)"/>
+      <configurationElements name="ROFS3_CUSTFILE" description="The (generated) source file name for customersw.txt." values="(string)"/>
+      <configurationElements name="ROFS3_CUSTINFO" description="The content string for the customersw.txt." values="(string)"/>
+      <configurationElements name="ROFS3_DIR" description="The working directory, when creating the rofs3 image" values="(string)"/>
+      <configurationElements name="ROFS3_E2FNAME" description="The rofs3 elf2flash filename. This is the final rofs3 flash file." values="(string)"/>
+      <configurationElements name="ROFS3_FOOTER" description="This variable can contain a footer section for the rofs3 master oby." values="(string)"/>
+      <configurationElements name="ROFS3_FWIDFILE" description="The (generated) _rofs3_fwid.txt file name." values="(string)"/>
+      <configurationElements name="ROFS3_FWIDINFO" description="The content string for the fwid3.txt file." values="(string)"/>
+      <configurationElements name="ROFS3_HEADER" description="This variable can contain a header section for the rofs3 master oby." values="(string)"/>
+      <configurationElements name="ROFS3_MSTOBY" description="The (generated) version iby file name for the rofs3 image. This file included the version text files and other version parameters." values="(string)"/>
+      <configurationElements name="ROFS3_NAME" description="The full name of the rofs3 image" values="(string)"/>
+      <configurationElements name="ROFS3_OBY" description="The oby file(s) included to the rofs3 image creation" values="(string)"/>
+      <configurationElements name="ROFS3_OPT" description="The rofs3 specific buildrom options" values="(string)"/>
+      <configurationElements name="ROFS3_ROMVER" description="The rofs3 ROM version string" values="(string)"/>
+      <configurationElements name="ROFS3_TIME" description="The time defined to the rofs3 image." values="(string)"/>
+      <configurationElements name="ROFS3_VERIBY" description="The (generated) version iby file name for the rofs3 image. This file included the version text files and other version parameters." values="(string)"/>
+      <configurationElements name="SOS_VERSION" description="Symbian OS version number. The value is used in the version info generation (platform.txt).(see USE_VERGEN)" values="([0-9]+.[0-9]+)"/>
+      <configurationElements name="SWUPD_EXT" description="The software update file extension." values="(string)"/>
+      <configurationElements name="TYPE" description="Defines the image type." values="(rnd|prd|subcon)"/>
+      <configurationElements name="USE_OVERRIDE" description="Define whether the override.pm Buildrom.pl plugin is used (Includes automatically also \epoc32\rom\override.oby)." values="([0|1])"/>
+      <configurationElements name="USE_PAGING" description="Define the usage of On Demand Pagin (ODP). (E.g. 0,rom,code)." values="((0|rom|code[:[(1|2|3)]+]?))"/>
+      <configurationElements name="USE_ROFS" description="Define the rofs sections in use. A comma separated list can be given of possible values. (E.g. 1,2,3)." values="([[dummy|]0..6][,[dummy|]0..6]*)"/>
+      <configurationElements name="USE_ROMFILE" description="Define whether the \epoc32\rombuild\romfiles.txt is used. Files in romfiles are automatically moved to ROM, everything else in core is moved to ROFS1." values="([0|1])"/>
+      <configurationElements name="USE_ROMSYMGEN" description="Generate the rom symbol file. 0=Do not generate, 1=Generate" values="([0|1])"/>
+      <configurationElements name="USE_UDEB" description="Include the usage of the debug binary *.txt to define the list of binaries that are taken from udeb folder instead of the urel." values="([0|1|full])"/>
+      <configurationElements name="USE_VERGEN" description="Use iMaker version info generation" values="([0|1])"/>
+      <configurationElements name="BLDROBY" description="For passing extra oby files (from command line) to the buildrom.pl" values="(string)"/>
+      <configurationElements name="BLDROM_OPT" description="The default buildrom.pl options" values="(string)"/>
+      <configurationElements name="BLDROPT" description="For passing extra parameters (from command line) to the buildrom.pl" values="(string)"/>
+      <configurationElements name="CONFIGROOT" description="Define the default configuration root directory." values="(string)"/>
+      <configurationElements name="CORE_CDPROMFILE" description="The name of the core Code Demand Paging rom file (Code paging)." values="(string)"/>
+      <configurationElements name="CORE_DIR" description="The working directory, when creating core image" values="(string)"/>
+      <configurationElements name="CORE_E2FNAME" description="The core elf2flash filename. This is the final core flash file." values="(string)"/>
+      <configurationElements name="CORE_FWIDFILE" description="The (generated) _core_fwid.txt file name." values="(string)"/>
+      <configurationElements name="CORE_IMEISVFILE" description="The (generated) _core_imeisv.txt file name." values="(string)"/>
+      <configurationElements name="CORE_IMEISVINFO" description="The content string for the imeisv.txt file." values="(string)"/>
+      <configurationElements name="CORE_MODELFILE" description="The (generated) _core_model.txt file name." values="(string)"/>
+      <configurationElements name="CORE_MODELINFO" description="The content string for the model.txt file." values="(string)"/>
+      <configurationElements name="CORE_MSTOBY" description="The generated master oby file name, which includes the CORE_OBY files" values="(string)"/>
+      <configurationElements name="CORE_NAME" description="The full name of the core image" values="(string)"/>
+      <configurationElements name="CORE_NDPROMFILE" description="The name of the core Non Demand Paging rom file." values="(string)"/>
+      <configurationElements name="CORE_OBY" description="The oby file(s) included to the core image creation" values="(string)"/>
+      <configurationElements name="CORE_ODPROMFILE" description="The name of the core On Demand Paging rom file (Rom paging)." values="(string)"/>
+      <configurationElements name="CORE_OPT" description="The core specific buildrom options" values="(string)"/>
+      <configurationElements name="CORE_PLATFILE" description="The (generated) _core_platform.txt file name." values="(string)"/>
+      <configurationElements name="CORE_PLATINFO" description="The content string for the fwid.txt file." values="(string)"/>
+      <configurationElements name="CORE_PRODFILE" description="The (generated) _core_product.txt file name." values="(string)"/>
+      <configurationElements name="CORE_ROFSFILE" description="The name of the core rofs file." values="(string)"/>
+      <configurationElements name="CORE_ROMVER" description="The rom version parameter passed to the version.iby" values="(string)"/>
+      <configurationElements name="CORE_SWVERFILE" description="The (generated) _core_sw.txt version file name. This generated file is included in the CORE_VERIBY file." values="(string)"/>
+      <configurationElements name="CORE_SWVERINFO" description="The content string for the sw.txt file." values="(string)"/>
+      <configurationElements name="CORE_TIME" description="The time defined to the core image" values="(string)"/>
+      <configurationElements name="CORE_UDEBFILE" description="The name of the core udeb file. See USE_UDEB." values="(string)"/>
+      <configurationElements name="CORE_VERIBY" description="The name of the generated core *version.iby, which included version files and info" values="(string)"/>
+      <configurationElements name="CORE_VERSION" description="The version of the core. Used in sw.txt generation." values="(string)"/>
+      <configurationElements name="COREPLAT_NAME" description="Name of the core platform" values="(string)"/>
+      <configurationElements name="CUSTVARIANT_DIR" description="Configure the directory where to included the customer variant content. By default all content under /content is included to the image as it exists in the folder." values="(string)"/>
+      <configurationElements name="DEFAULT_LANGUAGE" description="Default language is the language where the device will boot to (SIM language overrides this selection)" values="(string)"/>
+      <configurationElements name="FLASH_EXT" description="The flash file extension." values="(string)"/>
+      <configurationElements name="HWID" description="Hardware Id" values="([0-9]4)"/>
+      <configurationElements name="HWID_LIST" description="Possible Hardware Ids of the product." values="([0-9]4)*"/>
+      <configurationElements name="KEEPTEMP" description="Keep the buildrom.pl temp files (copied to the WORKDIR). E.g. tmp1.oby tmp2.oby..tmp9.oby" values="([0|1])"/>
+      <configurationElements name="LABEL" description="A label to the NAME of the image" values="(string)"/>
+      <configurationElements name="LANGID" description="Language id used in the lang.txt generation" values="(string)"/>
+      <configurationElements name="LANGUAGES" description="Languages are the languages that are taken to the image (SC language is is defaulting to 01 in languages.txt)" values="(string)"/>
+      <configurationElements name="NAME" description="The name of the image" values="(string)"/>
+      <configurationElements name="OPERATOR_OBY" description="The name for generated operator oby, which is a file generated based on an operator specific content." values="(string)"/>
+      <configurationElements name="OPERATOR_OBYGEN" description="The name, path, rule for collecting content to the operator specific oby (E.g. operator.oby | /epoc32/rom/include/operator | *.iby collects all iby files from operator folder)." values="(string)|(string)|(string)"/>
+      <configurationElements name="PRODUCT_MODEL" description="The model of the product" values="(string)"/>
+      <configurationElements name="PRODUCT_NAME" description="Name of the product" values="(string)"/>
+      <configurationElements name="PRODUCT_REVISION" description="The reision of the product" values="(string)"/>
+      <configurationElements name="RELEASEDIR" description="The RELEASEDIR is used in the RELEASE step that copies the created files to a separate folder defined by the RELEASEDIR." values="(string)"/>
+      <configurationElements name="RELEASEFILES" description="The RELEASEFILES define the source files that are copied in the RELEASE step. The files must be given as a space delimited list. Wildcards can be used. E.g. \epoc32\rombuild\product\theflash.fpsx \epoc32\rombuild\product\*.log" values="(string)"/>
+      <configurationElements name="RELEASENAME" description="The RELEASENAME is used in the RELEASE step that copies the created files to a separate folder with a new name." values="(string)"/>
+      <configurationElements name="ROFS2_DIR" description="The working directory, when creating the rofs2 image" values="(string)"/>
+      <configurationElements name="ROFS2_E2FNAME" description="The rofs2 elf2flash filename. This is the final rofs2 flash file." values="(string)"/>
+      <configurationElements name="ROFS2_FOOTER" description="This variable can contain a footer section for the rofs2 master oby." values="(string)"/>
+      <configurationElements name="ROFS2_FWIDFILE" description="The (generated) _rofs2_fwid.txt file name." values="(string)"/>
+      <configurationElements name="ROFS2_FWIDINFO" description="The content string for the fwid2.txt file." values="(string)"/>
+      <configurationElements name="ROFS2_HEADER" description="This variable can contain a header section for the rofs2 master oby." values="(string)"/>
+      <configurationElements name="ROFS2_MSTOBY" description="The (generated) rofs2 master oby file name. This file includes the ROFS2_OBY files and other parameters" values="(string)"/>
+      <configurationElements name="ROFS2_NAME" description="The full name of the rofs2 image" values="(string)"/>
+      <configurationElements name="ROFS2_OBY" description="The oby file(s) included to the rofs2 image creation" values="(string)"/>
+      <configurationElements name="ROFS2_OPT" description="The rofs2 specific buildrom options" values="(string)"/>
+      <configurationElements name="ROFS2_ROMVER" description="The rofs2 ROM version string" values="(string)"/>
+      <configurationElements name="ROFS2_TIME" description="The time defined to the rofs2 image." values="(string)"/>
+      <configurationElements name="ROFS2_VERIBY" description="The (generated) version iby file name for the rofs2 image. This file included the version text files and other version parameters." values="(string)"/>
+      <configurationElements name="ROFS3_CUSTFILE" description="The (generated) source file name for customersw.txt." values="(string)"/>
+      <configurationElements name="ROFS3_CUSTINFO" description="The content string for the customersw.txt." values="(string)"/>
+      <configurationElements name="ROFS3_DIR" description="The working directory, when creating the rofs3 image" values="(string)"/>
+      <configurationElements name="ROFS3_E2FNAME" description="The rofs3 elf2flash filename. This is the final rofs3 flash file." values="(string)"/>
+      <configurationElements name="ROFS3_FOOTER" description="This variable can contain a footer section for the rofs3 master oby." values="(string)"/>
+      <configurationElements name="ROFS3_FWIDFILE" description="The (generated) _rofs3_fwid.txt file name." values="(string)"/>
+      <configurationElements name="ROFS3_FWIDINFO" description="The content string for the fwid3.txt file." values="(string)"/>
+      <configurationElements name="ROFS3_HEADER" description="This variable can contain a header section for the rofs3 master oby." values="(string)"/>
+      <configurationElements name="ROFS3_MSTOBY" description="The (generated) version iby file name for the rofs3 image. This file included the version text files and other version parameters." values="(string)"/>
+      <configurationElements name="ROFS3_NAME" description="The full name of the rofs3 image" values="(string)"/>
+      <configurationElements name="ROFS3_OBY" description="The oby file(s) included to the rofs3 image creation" values="(string)"/>
+      <configurationElements name="ROFS3_OPT" description="The rofs3 specific buildrom options" values="(string)"/>
+      <configurationElements name="ROFS3_ROMVER" description="The rofs3 ROM version string" values="(string)"/>
+      <configurationElements name="ROFS3_TIME" description="The time defined to the rofs3 image." values="(string)"/>
+      <configurationElements name="ROFS3_VERIBY" description="The (generated) version iby file name for the rofs3 image. This file included the version text files and other version parameters." values="(string)"/>
+      <configurationElements name="SOS_VERSION" description="Symbian OS version number. The value is used in the version info generation (platform.txt).(see USE_VERGEN)" values="([0-9]+.[0-9]+)"/>
+      <configurationElements name="SWUPD_EXT" description="The software update file extension." values="(string)"/>
+      <configurationElements name="TYPE" description="Defines the image type." values="(rnd|prd|subcon)"/>
+      <configurationElements name="USE_OVERRIDE" description="Define whether the override.pm Buildrom.pl plugin is used (Includes automatically also \epoc32\rom\override.oby)." values="([0|1])"/>
+      <configurationElements name="USE_PAGING" description="Define the usage of On Demand Pagin (ODP). (E.g. 0,rom,code)." values="((0|rom|code[:[(1|2|3)]+]?))"/>
+      <configurationElements name="USE_ROFS" description="Define the rofs sections in use. A comma separated list can be given of possible values. (E.g. 1,2,3)." values="([[dummy|]0..6][,[dummy|]0..6]*)"/>
+      <configurationElements name="USE_ROMFILE" description="Define whether the \epoc32\rombuild\romfiles.txt is used. Files in romfiles are automatically moved to ROM, everything else in core is moved to ROFS1." values="([0|1])"/>
+      <configurationElements name="USE_ROMSYMGEN" description="Generate the rom symbol file. 0=Do not generate, 1=Generate" values="([0|1])"/>
+      <configurationElements name="USE_UDEB" description="Include the usage of the debug binary *.txt to define the list of binaries that are taken from udeb folder instead of the urel." values="([0|1|full])"/>
+      <configurationElements name="USE_VERGEN" description="Use iMaker version info generation" values="([0|1])"/>
+      <configurationElements name="BLDROBY" description="For passing extra oby files (from command line) to the buildrom.pl" values="(string)"/>
+      <configurationElements name="BLDROM_OPT" description="The default buildrom.pl options" values="(string)"/>
+      <configurationElements name="BLDROPT" description="For passing extra parameters (from command line) to the buildrom.pl" values="(string)"/>
+      <configurationElements name="CONFIGROOT" description="Define the default configuration root directory." values="(string)"/>
+      <configurationElements name="CORE_CDPROMFILE" description="The name of the core Code Demand Paging rom file (Code paging)." values="(string)"/>
+      <configurationElements name="CORE_DIR" description="The working directory, when creating core image" values="(string)"/>
+      <configurationElements name="CORE_E2FNAME" description="The core elf2flash filename. This is the final core flash file." values="(string)"/>
+      <configurationElements name="CORE_FWIDFILE" description="The (generated) _core_fwid.txt file name." values="(string)"/>
+      <configurationElements name="CORE_IMEISVFILE" description="The (generated) _core_imeisv.txt file name." values="(string)"/>
+      <configurationElements name="CORE_IMEISVINFO" description="The content string for the imeisv.txt file." values="(string)"/>
+      <configurationElements name="CORE_MODELFILE" description="The (generated) _core_model.txt file name." values="(string)"/>
+      <configurationElements name="CORE_MODELINFO" description="The content string for the model.txt file." values="(string)"/>
+      <configurationElements name="CORE_MSTOBY" description="The generated master oby file name, which includes the CORE_OBY files" values="(string)"/>
+      <configurationElements name="CORE_NAME" description="The full name of the core image" values="(string)"/>
+      <configurationElements name="CORE_NDPROMFILE" description="The name of the core Non Demand Paging rom file." values="(string)"/>
+      <configurationElements name="CORE_OBY" description="The oby file(s) included to the core image creation" values="(string)"/>
+      <configurationElements name="CORE_ODPROMFILE" description="The name of the core On Demand Paging rom file (Rom paging)." values="(string)"/>
+      <configurationElements name="CORE_OPT" description="The core specific buildrom options" values="(string)"/>
+      <configurationElements name="CORE_PLATFILE" description="The (generated) _core_platform.txt file name." values="(string)"/>
+      <configurationElements name="CORE_PLATINFO" description="The content string for the fwid.txt file." values="(string)"/>
+      <configurationElements name="CORE_PRODFILE" description="The (generated) _core_product.txt file name." values="(string)"/>
+      <configurationElements name="CORE_ROFSFILE" description="The name of the core rofs file." values="(string)"/>
+      <configurationElements name="CORE_ROMVER" description="The rom version parameter passed to the version.iby" values="(string)"/>
+      <configurationElements name="CORE_SWVERFILE" description="The (generated) _core_sw.txt version file name. This generated file is included in the CORE_VERIBY file." values="(string)"/>
+      <configurationElements name="CORE_SWVERINFO" description="The content string for the sw.txt file." values="(string)"/>
+      <configurationElements name="CORE_TIME" description="The time defined to the core image" values="(string)"/>
+      <configurationElements name="CORE_UDEBFILE" description="The name of the core udeb file. See USE_UDEB." values="(string)"/>
+      <configurationElements name="CORE_VERIBY" description="The name of the generated core *version.iby, which included version files and info" values="(string)"/>
+      <configurationElements name="CORE_VERSION" description="The version of the core. Used in sw.txt generation." values="(string)"/>
+      <configurationElements name="COREPLAT_NAME" description="Name of the core platform" values="(string)"/>
+      <configurationElements name="CUSTVARIANT_DIR" description="Configure the directory where to included the customer variant content. By default all content under /content is included to the image as it exists in the folder." values="(string)"/>
+      <configurationElements name="DEFAULT_LANGUAGE" description="Default language is the language where the device will boot to (SIM language overrides this selection)" values="(string)"/>
+      <configurationElements name="FLASH_EXT" description="The flash file extension." values="(string)"/>
+      <configurationElements name="HWID" description="Hardware Id" values="([0-9]4)"/>
+      <configurationElements name="HWID_LIST" description="Possible Hardware Ids of the product." values="([0-9]4)*"/>
+      <configurationElements name="KEEPTEMP" description="Keep the buildrom.pl temp files (copied to the WORKDIR). E.g. tmp1.oby tmp2.oby..tmp9.oby" values="([0|1])"/>
+      <configurationElements name="LABEL" description="A label to the NAME of the image" values="(string)"/>
+      <configurationElements name="LANGID" description="Language id used in the lang.txt generation" values="(string)"/>
+      <configurationElements name="LANGUAGES" description="Languages are the languages that are taken to the image (SC language is is defaulting to 01 in languages.txt)" values="(string)"/>
+      <configurationElements name="NAME" description="The name of the image" values="(string)"/>
+      <configurationElements name="OPERATOR_OBY" description="The name for generated operator oby, which is a file generated based on an operator specific content." values="(string)"/>
+      <configurationElements name="OPERATOR_OBYGEN" description="The name, path, rule for collecting content to the operator specific oby (E.g. operator.oby | /epoc32/rom/include/operator | *.iby collects all iby files from operator folder)." values="(string)|(string)|(string)"/>
+      <configurationElements name="PRODUCT_MODEL" description="The model of the product" values="(string)"/>
+      <configurationElements name="PRODUCT_NAME" description="Name of the product" values="(string)"/>
+      <configurationElements name="PRODUCT_REVISION" description="The reision of the product" values="(string)"/>
+      <configurationElements name="RELEASEDIR" description="The RELEASEDIR is used in the RELEASE step that copies the created files to a separate folder defined by the RELEASEDIR." values="(string)"/>
+      <configurationElements name="RELEASEFILES" description="The RELEASEFILES define the source files that are copied in the RELEASE step. The files must be given as a space delimited list. Wildcards can be used. E.g. \epoc32\rombuild\product\theflash.fpsx \epoc32\rombuild\product\*.log" values="(string)"/>
+      <configurationElements name="RELEASENAME" description="The RELEASENAME is used in the RELEASE step that copies the created files to a separate folder with a new name." values="(string)"/>
+      <configurationElements name="ROFS2_DIR" description="The working directory, when creating the rofs2 image" values="(string)"/>
+      <configurationElements name="ROFS2_E2FNAME" description="The rofs2 elf2flash filename. This is the final rofs2 flash file." values="(string)"/>
+      <configurationElements name="ROFS2_FOOTER" description="This variable can contain a footer section for the rofs2 master oby." values="(string)"/>
+      <configurationElements name="ROFS2_FWIDFILE" description="The (generated) _rofs2_fwid.txt file name." values="(string)"/>
+      <configurationElements name="ROFS2_FWIDINFO" description="The content string for the fwid2.txt file." values="(string)"/>
+      <configurationElements name="ROFS2_HEADER" description="This variable can contain a header section for the rofs2 master oby." values="(string)"/>
+      <configurationElements name="ROFS2_MSTOBY" description="The (generated) rofs2 master oby file name. This file includes the ROFS2_OBY files and other parameters" values="(string)"/>
+      <configurationElements name="ROFS2_NAME" description="The full name of the rofs2 image" values="(string)"/>
+      <configurationElements name="ROFS2_OBY" description="The oby file(s) included to the rofs2 image creation" values="(string)"/>
+      <configurationElements name="ROFS2_OPT" description="The rofs2 specific buildrom options" values="(string)"/>
+      <configurationElements name="ROFS2_ROMVER" description="The rofs2 ROM version string" values="(string)"/>
+      <configurationElements name="ROFS2_TIME" description="The time defined to the rofs2 image." values="(string)"/>
+      <configurationElements name="ROFS2_VERIBY" description="The (generated) version iby file name for the rofs2 image. This file included the version text files and other version parameters." values="(string)"/>
+      <configurationElements name="ROFS3_CUSTFILE" description="The (generated) source file name for customersw.txt." values="(string)"/>
+      <configurationElements name="ROFS3_CUSTINFO" description="The content string for the customersw.txt." values="(string)"/>
+      <configurationElements name="ROFS3_DIR" description="The working directory, when creating the rofs3 image" values="(string)"/>
+      <configurationElements name="ROFS3_E2FNAME" description="The rofs3 elf2flash filename. This is the final rofs3 flash file." values="(string)"/>
+      <configurationElements name="ROFS3_FOOTER" description="This variable can contain a footer section for the rofs3 master oby." values="(string)"/>
+      <configurationElements name="ROFS3_FWIDFILE" description="The (generated) _rofs3_fwid.txt file name." values="(string)"/>
+      <configurationElements name="ROFS3_FWIDINFO" description="The content string for the fwid3.txt file." values="(string)"/>
+      <configurationElements name="ROFS3_HEADER" description="This variable can contain a header section for the rofs3 master oby." values="(string)"/>
+      <configurationElements name="ROFS3_MSTOBY" description="The (generated) version iby file name for the rofs3 image. This file included the version text files and other version parameters." values="(string)"/>
+      <configurationElements name="ROFS3_NAME" description="The full name of the rofs3 image" values="(string)"/>
+      <configurationElements name="ROFS3_OBY" description="The oby file(s) included to the rofs3 image creation" values="(string)"/>
+      <configurationElements name="ROFS3_OPT" description="The rofs3 specific buildrom options" values="(string)"/>
+      <configurationElements name="ROFS3_ROMVER" description="The rofs3 ROM version string" values="(string)"/>
+      <configurationElements name="ROFS3_TIME" description="The time defined to the rofs3 image." values="(string)"/>
+      <configurationElements name="ROFS3_VERIBY" description="The (generated) version iby file name for the rofs3 image. This file included the version text files and other version parameters." values="(string)"/>
+      <configurationElements name="SOS_VERSION" description="Symbian OS version number. The value is used in the version info generation (platform.txt).(see USE_VERGEN)" values="([0-9]+.[0-9]+)"/>
+      <configurationElements name="SWUPD_EXT" description="The software update file extension." values="(string)"/>
+      <configurationElements name="TYPE" description="Defines the image type." values="(rnd|prd|subcon)"/>
+      <configurationElements name="USE_OVERRIDE" description="Define whether the override.pm Buildrom.pl plugin is used (Includes automatically also \epoc32\rom\override.oby)." values="([0|1])"/>
+      <configurationElements name="USE_PAGING" description="Define the usage of On Demand Pagin (ODP). (E.g. 0,rom,code)." values="((0|rom|code[:[(1|2|3)]+]?))"/>
+      <configurationElements name="USE_ROFS" description="Define the rofs sections in use. A comma separated list can be given of possible values. (E.g. 1,2,3)." values="([[dummy|]0..6][,[dummy|]0..6]*)"/>
+      <configurationElements name="USE_ROMFILE" description="Define whether the \epoc32\rombuild\romfiles.txt is used. Files in romfiles are automatically moved to ROM, everything else in core is moved to ROFS1." values="([0|1])"/>
+      <configurationElements name="USE_ROMSYMGEN" description="Generate the rom symbol file. 0=Do not generate, 1=Generate" values="([0|1])"/>
+      <configurationElements name="USE_UDEB" description="Include the usage of the debug binary *.txt to define the list of binaries that are taken from udeb folder instead of the urel." values="([0|1|full])"/>
+      <configurationElements name="USE_VERGEN" description="Use iMaker version info generation" values="([0|1])"/>
+      <configurationElements name="BLDROBY" description="For passing extra oby files (from command line) to the buildrom.pl" values="(string)"/>
+      <configurationElements name="BLDROM_OPT" description="The default buildrom.pl options" values="(string)"/>
+      <configurationElements name="BLDROPT" description="For passing extra parameters (from command line) to the buildrom.pl" values="(string)"/>
+      <configurationElements name="CONFIGROOT" description="Define the default configuration root directory." values="(string)"/>
+      <configurationElements name="CORE_CDPROMFILE" description="The name of the core Code Demand Paging rom file (Code paging)." values="(string)"/>
+      <configurationElements name="CORE_DIR" description="The working directory, when creating core image" values="(string)"/>
+      <configurationElements name="CORE_E2FNAME" description="The core elf2flash filename. This is the final core flash file." values="(string)"/>
+      <configurationElements name="CORE_FWIDFILE" description="The (generated) _core_fwid.txt file name." values="(string)"/>
+      <configurationElements name="CORE_IMEISVFILE" description="The (generated) _core_imeisv.txt file name." values="(string)"/>
+      <configurationElements name="CORE_IMEISVINFO" description="The content string for the imeisv.txt file." values="(string)"/>
+      <configurationElements name="CORE_MODELFILE" description="The (generated) _core_model.txt file name." values="(string)"/>
+      <configurationElements name="CORE_MODELINFO" description="The content string for the model.txt file." values="(string)"/>
+      <configurationElements name="CORE_MSTOBY" description="The generated master oby file name, which includes the CORE_OBY files" values="(string)"/>
+      <configurationElements name="CORE_NAME" description="The full name of the core image" values="(string)"/>
+      <configurationElements name="CORE_NDPROMFILE" description="The name of the core Non Demand Paging rom file." values="(string)"/>
+      <configurationElements name="CORE_OBY" description="The oby file(s) included to the core image creation" values="(string)"/>
+      <configurationElements name="CORE_ODPROMFILE" description="The name of the core On Demand Paging rom file (Rom paging)." values="(string)"/>
+      <configurationElements name="CORE_OPT" description="The core specific buildrom options" values="(string)"/>
+      <configurationElements name="CORE_PLATFILE" description="The (generated) _core_platform.txt file name." values="(string)"/>
+      <configurationElements name="CORE_PLATINFO" description="The content string for the fwid.txt file." values="(string)"/>
+      <configurationElements name="CORE_PRODFILE" description="The (generated) _core_product.txt file name." values="(string)"/>
+      <configurationElements name="CORE_ROFSFILE" description="The name of the core rofs file." values="(string)"/>
+      <configurationElements name="CORE_ROMVER" description="The rom version parameter passed to the version.iby" values="(string)"/>
+      <configurationElements name="CORE_SWVERFILE" description="The (generated) _core_sw.txt version file name. This generated file is included in the CORE_VERIBY file." values="(string)"/>
+      <configurationElements name="CORE_SWVERINFO" description="The content string for the sw.txt file." values="(string)"/>
+      <configurationElements name="CORE_TIME" description="The time defined to the core image" values="(string)"/>
+      <configurationElements name="CORE_UDEBFILE" description="The name of the core udeb file. See USE_UDEB." values="(string)"/>
+      <configurationElements name="CORE_VERIBY" description="The name of the generated core *version.iby, which included version files and info" values="(string)"/>
+      <configurationElements name="CORE_VERSION" description="The version of the core. Used in sw.txt generation." values="(string)"/>
+      <configurationElements name="COREPLAT_NAME" description="Name of the core platform" values="(string)"/>
+      <configurationElements name="CUSTVARIANT_DIR" description="Configure the directory where to included the customer variant content. By default all content under /content is included to the image as it exists in the folder." values="(string)"/>
+      <configurationElements name="DEFAULT_LANGUAGE" description="Default language is the language where the device will boot to (SIM language overrides this selection)" values="(string)"/>
+      <configurationElements name="FLASH_EXT" description="The flash file extension." values="(string)"/>
+      <configurationElements name="HWID" description="Hardware Id" values="([0-9]4)"/>
+      <configurationElements name="HWID_LIST" description="Possible Hardware Ids of the product." values="([0-9]4)*"/>
+      <configurationElements name="KEEPTEMP" description="Keep the buildrom.pl temp files (copied to the WORKDIR). E.g. tmp1.oby tmp2.oby..tmp9.oby" values="([0|1])"/>
+      <configurationElements name="LABEL" description="A label to the NAME of the image" values="(string)"/>
+      <configurationElements name="LANGID" description="Language id used in the lang.txt generation" values="(string)"/>
+      <configurationElements name="LANGUAGES" description="Languages are the languages that are taken to the image (SC language is is defaulting to 01 in languages.txt)" values="(string)"/>
+      <configurationElements name="NAME" description="The name of the image" values="(string)"/>
+      <configurationElements name="OPERATOR_OBY" description="The name for generated operator oby, which is a file generated based on an operator specific content." values="(string)"/>
+      <configurationElements name="OPERATOR_OBYGEN" description="The name, path, rule for collecting content to the operator specific oby (E.g. operator.oby | /epoc32/rom/include/operator | *.iby collects all iby files from operator folder)." values="(string)|(string)|(string)"/>
+      <configurationElements name="PRODUCT_MODEL" description="The model of the product" values="(string)"/>
+      <configurationElements name="PRODUCT_NAME" description="Name of the product" values="(string)"/>
+      <configurationElements name="PRODUCT_REVISION" description="The reision of the product" values="(string)"/>
+      <configurationElements name="RELEASEDIR" description="The RELEASEDIR is used in the RELEASE step that copies the created files to a separate folder defined by the RELEASEDIR." values="(string)"/>
+      <configurationElements name="RELEASEFILES" description="The RELEASEFILES define the source files that are copied in the RELEASE step. The files must be given as a space delimited list. Wildcards can be used. E.g. \epoc32\rombuild\product\theflash.fpsx \epoc32\rombuild\product\*.log" values="(string)"/>
+      <configurationElements name="RELEASENAME" description="The RELEASENAME is used in the RELEASE step that copies the created files to a separate folder with a new name." values="(string)"/>
+      <configurationElements name="ROFS2_DIR" description="The working directory, when creating the rofs2 image" values="(string)"/>
+      <configurationElements name="ROFS2_E2FNAME" description="The rofs2 elf2flash filename. This is the final rofs2 flash file." values="(string)"/>
+      <configurationElements name="ROFS2_FOOTER" description="This variable can contain a footer section for the rofs2 master oby." values="(string)"/>
+      <configurationElements name="ROFS2_FWIDFILE" description="The (generated) _rofs2_fwid.txt file name." values="(string)"/>
+      <configurationElements name="ROFS2_FWIDINFO" description="The content string for the fwid2.txt file." values="(string)"/>
+      <configurationElements name="ROFS2_HEADER" description="This variable can contain a header section for the rofs2 master oby." values="(string)"/>
+      <configurationElements name="ROFS2_MSTOBY" description="The (generated) rofs2 master oby file name. This file includes the ROFS2_OBY files and other parameters" values="(string)"/>
+      <configurationElements name="ROFS2_NAME" description="The full name of the rofs2 image" values="(string)"/>
+      <configurationElements name="ROFS2_OBY" description="The oby file(s) included to the rofs2 image creation" values="(string)"/>
+      <configurationElements name="ROFS2_OPT" description="The rofs2 specific buildrom options" values="(string)"/>
+      <configurationElements name="ROFS2_ROMVER" description="The rofs2 ROM version string" values="(string)"/>
+      <configurationElements name="ROFS2_TIME" description="The time defined to the rofs2 image." values="(string)"/>
+      <configurationElements name="ROFS2_VERIBY" description="The (generated) version iby file name for the rofs2 image. This file included the version text files and other version parameters." values="(string)"/>
+      <configurationElements name="ROFS3_CUSTFILE" description="The (generated) source file name for customersw.txt." values="(string)"/>
+      <configurationElements name="ROFS3_CUSTINFO" description="The content string for the customersw.txt." values="(string)"/>
+      <configurationElements name="ROFS3_DIR" description="The working directory, when creating the rofs3 image" values="(string)"/>
+      <configurationElements name="ROFS3_E2FNAME" description="The rofs3 elf2flash filename. This is the final rofs3 flash file." values="(string)"/>
+      <configurationElements name="ROFS3_FOOTER" description="This variable can contain a footer section for the rofs3 master oby." values="(string)"/>
+      <configurationElements name="ROFS3_FWIDFILE" description="The (generated) _rofs3_fwid.txt file name." values="(string)"/>
+      <configurationElements name="ROFS3_FWIDINFO" description="The content string for the fwid3.txt file." values="(string)"/>
+      <configurationElements name="ROFS3_HEADER" description="This variable can contain a header section for the rofs3 master oby." values="(string)"/>
+      <configurationElements name="ROFS3_MSTOBY" description="The (generated) version iby file name for the rofs3 image. This file included the version text files and other version parameters." values="(string)"/>
+      <configurationElements name="ROFS3_NAME" description="The full name of the rofs3 image" values="(string)"/>
+      <configurationElements name="ROFS3_OBY" description="The oby file(s) included to the rofs3 image creation" values="(string)"/>
+      <configurationElements name="ROFS3_OPT" description="The rofs3 specific buildrom options" values="(string)"/>
+      <configurationElements name="ROFS3_ROMVER" description="The rofs3 ROM version string" values="(string)"/>
+      <configurationElements name="ROFS3_TIME" description="The time defined to the rofs3 image." values="(string)"/>
+      <configurationElements name="ROFS3_VERIBY" description="The (generated) version iby file name for the rofs3 image. This file included the version text files and other version parameters." values="(string)"/>
+      <configurationElements name="SOS_VERSION" description="Symbian OS version number. The value is used in the version info generation (platform.txt).(see USE_VERGEN)" values="([0-9]+.[0-9]+)"/>
+      <configurationElements name="SWUPD_EXT" description="The software update file extension." values="(string)"/>
+      <configurationElements name="TYPE" description="Defines the image type." values="(rnd|prd|subcon)"/>
+      <configurationElements name="USE_OVERRIDE" description="Define whether the override.pm Buildrom.pl plugin is used (Includes automatically also \epoc32\rom\override.oby)." values="([0|1])"/>
+      <configurationElements name="USE_PAGING" description="Define the usage of On Demand Pagin (ODP). (E.g. 0,rom,code)." values="((0|rom|code[:[(1|2|3)]+]?))"/>
+      <configurationElements name="USE_ROFS" description="Define the rofs sections in use. A comma separated list can be given of possible values. (E.g. 1,2,3)." values="([[dummy|]0..6][,[dummy|]0..6]*)"/>
+      <configurationElements name="USE_ROMFILE" description="Define whether the \epoc32\rombuild\romfiles.txt is used. Files in romfiles are automatically moved to ROM, everything else in core is moved to ROFS1." values="([0|1])"/>
+      <configurationElements name="USE_ROMSYMGEN" description="Generate the rom symbol file. 0=Do not generate, 1=Generate" values="([0|1])"/>
+      <configurationElements name="USE_UDEB" description="Include the usage of the debug binary *.txt to define the list of binaries that are taken from udeb folder instead of the urel." values="([0|1|full])"/>
+      <configurationElements name="USE_VERGEN" description="Use iMaker version info generation" values="([0|1])"/>
+      <configurationElements name="BLDROBY" description="For passing extra oby files (from command line) to the buildrom.pl" values="(string)"/>
+      <configurationElements name="BLDROM_OPT" description="The default buildrom.pl options" values="(string)"/>
+      <configurationElements name="BLDROPT" description="For passing extra parameters (from command line) to the buildrom.pl" values="(string)"/>
+      <configurationElements name="CONFIGROOT" description="Define the default configuration root directory." values="(string)"/>
+      <configurationElements name="CORE_CDPROMFILE" description="The name of the core Code Demand Paging rom file (Code paging)." values="(string)"/>
+      <configurationElements name="CORE_DIR" description="The working directory, when creating core image" values="(string)"/>
+      <configurationElements name="CORE_E2FNAME" description="The core elf2flash filename. This is the final core flash file." values="(string)"/>
+      <configurationElements name="CORE_FWIDFILE" description="The (generated) _core_fwid.txt file name." values="(string)"/>
+      <configurationElements name="CORE_IMEISVFILE" description="The (generated) _core_imeisv.txt file name." values="(string)"/>
+      <configurationElements name="CORE_IMEISVINFO" description="The content string for the imeisv.txt file." values="(string)"/>
+      <configurationElements name="CORE_MODELFILE" description="The (generated) _core_model.txt file name." values="(string)"/>
+      <configurationElements name="CORE_MODELINFO" description="The content string for the model.txt file." values="(string)"/>
+      <configurationElements name="CORE_MSTOBY" description="The generated master oby file name, which includes the CORE_OBY files" values="(string)"/>
+      <configurationElements name="CORE_NAME" description="The full name of the core image" values="(string)"/>
+      <configurationElements name="CORE_NDPROMFILE" description="The name of the core Non Demand Paging rom file." values="(string)"/>
+      <configurationElements name="CORE_OBY" description="The oby file(s) included to the core image creation" values="(string)"/>
+      <configurationElements name="CORE_ODPROMFILE" description="The name of the core On Demand Paging rom file (Rom paging)." values="(string)"/>
+      <configurationElements name="CORE_OPT" description="The core specific buildrom options" values="(string)"/>
+      <configurationElements name="CORE_PLATFILE" description="The (generated) _core_platform.txt file name." values="(string)"/>
+      <configurationElements name="CORE_PLATINFO" description="The content string for the fwid.txt file." values="(string)"/>
+      <configurationElements name="CORE_PRODFILE" description="The (generated) _core_product.txt file name." values="(string)"/>
+      <configurationElements name="CORE_ROFSFILE" description="The name of the core rofs file." values="(string)"/>
+      <configurationElements name="CORE_ROMVER" description="The rom version parameter passed to the version.iby" values="(string)"/>
+      <configurationElements name="CORE_SWVERFILE" description="The (generated) _core_sw.txt version file name. This generated file is included in the CORE_VERIBY file." values="(string)"/>
+      <configurationElements name="CORE_SWVERINFO" description="The content string for the sw.txt file." values="(string)"/>
+      <configurationElements name="CORE_TIME" description="The time defined to the core image" values="(string)"/>
+      <configurationElements name="CORE_UDEBFILE" description="The name of the core udeb file. See USE_UDEB." values="(string)"/>
+      <configurationElements name="CORE_VERIBY" description="The name of the generated core *version.iby, which included version files and info" values="(string)"/>
+      <configurationElements name="CORE_VERSION" description="The version of the core. Used in sw.txt generation." values="(string)"/>
+      <configurationElements name="COREPLAT_NAME" description="Name of the core platform" values="(string)"/>
+      <configurationElements name="CUSTVARIANT_DIR" description="Configure the directory where to included the customer variant content. By default all content under /content is included to the image as it exists in the folder." values="(string)"/>
+      <configurationElements name="DEFAULT_LANGUAGE" description="Default language is the language where the device will boot to (SIM language overrides this selection)" values="(string)"/>
+      <configurationElements name="FLASH_EXT" description="The flash file extension." values="(string)"/>
+      <configurationElements name="HWID" description="Hardware Id" values="([0-9]4)"/>
+      <configurationElements name="HWID_LIST" description="Possible Hardware Ids of the product." values="([0-9]4)*"/>
+      <configurationElements name="KEEPTEMP" description="Keep the buildrom.pl temp files (copied to the WORKDIR). E.g. tmp1.oby tmp2.oby..tmp9.oby" values="([0|1])"/>
+      <configurationElements name="LABEL" description="A label to the NAME of the image" values="(string)"/>
+      <configurationElements name="LANGID" description="Language id used in the lang.txt generation" values="(string)"/>
+      <configurationElements name="LANGUAGES" description="Languages are the languages that are taken to the image (SC language is is defaulting to 01 in languages.txt)" values="(string)"/>
+      <configurationElements name="NAME" description="The name of the image" values="(string)"/>
+      <configurationElements name="OPERATOR_OBY" description="The name for generated operator oby, which is a file generated based on an operator specific content." values="(string)"/>
+      <configurationElements name="OPERATOR_OBYGEN" description="The name, path, rule for collecting content to the operator specific oby (E.g. operator.oby | /epoc32/rom/include/operator | *.iby collects all iby files from operator folder)." values="(string)|(string)|(string)"/>
+      <configurationElements name="PRODUCT_MODEL" description="The model of the product" values="(string)"/>
+      <configurationElements name="PRODUCT_NAME" description="Name of the product" values="(string)"/>
+      <configurationElements name="PRODUCT_REVISION" description="The reision of the product" values="(string)"/>
+      <configurationElements name="RELEASEDIR" description="The RELEASEDIR is used in the RELEASE step that copies the created files to a separate folder defined by the RELEASEDIR." values="(string)"/>
+      <configurationElements name="RELEASEFILES" description="The RELEASEFILES define the source files that are copied in the RELEASE step. The files must be given as a space delimited list. Wildcards can be used. E.g. \epoc32\rombuild\product\theflash.fpsx \epoc32\rombuild\product\*.log" values="(string)"/>
+      <configurationElements name="RELEASENAME" description="The RELEASENAME is used in the RELEASE step that copies the created files to a separate folder with a new name." values="(string)"/>
+      <configurationElements name="ROFS2_DIR" description="The working directory, when creating the rofs2 image" values="(string)"/>
+      <configurationElements name="ROFS2_E2FNAME" description="The rofs2 elf2flash filename. This is the final rofs2 flash file." values="(string)"/>
+      <configurationElements name="ROFS2_FOOTER" description="This variable can contain a footer section for the rofs2 master oby." values="(string)"/>
+      <configurationElements name="ROFS2_FWIDFILE" description="The (generated) _rofs2_fwid.txt file name." values="(string)"/>
+      <configurationElements name="ROFS2_FWIDINFO" description="The content string for the fwid2.txt file." values="(string)"/>
+      <configurationElements name="ROFS2_HEADER" description="This variable can contain a header section for the rofs2 master oby." values="(string)"/>
+      <configurationElements name="ROFS2_MSTOBY" description="The (generated) rofs2 master oby file name. This file includes the ROFS2_OBY files and other parameters" values="(string)"/>
+      <configurationElements name="ROFS2_NAME" description="The full name of the rofs2 image" values="(string)"/>
+      <configurationElements name="ROFS2_OBY" description="The oby file(s) included to the rofs2 image creation" values="(string)"/>
+      <configurationElements name="ROFS2_OPT" description="The rofs2 specific buildrom options" values="(string)"/>
+      <configurationElements name="ROFS2_ROMVER" description="The rofs2 ROM version string" values="(string)"/>
+      <configurationElements name="ROFS2_TIME" description="The time defined to the rofs2 image." values="(string)"/>
+      <configurationElements name="ROFS2_VERIBY" description="The (generated) version iby file name for the rofs2 image. This file included the version text files and other version parameters." values="(string)"/>
+      <configurationElements name="ROFS3_CUSTFILE" description="The (generated) source file name for customersw.txt." values="(string)"/>
+      <configurationElements name="ROFS3_CUSTINFO" description="The content string for the customersw.txt." values="(string)"/>
+      <configurationElements name="ROFS3_DIR" description="The working directory, when creating the rofs3 image" values="(string)"/>
+      <configurationElements name="ROFS3_E2FNAME" description="The rofs3 elf2flash filename. This is the final rofs3 flash file." values="(string)"/>
+      <configurationElements name="ROFS3_FOOTER" description="This variable can contain a footer section for the rofs3 master oby." values="(string)"/>
+      <configurationElements name="ROFS3_FWIDFILE" description="The (generated) _rofs3_fwid.txt file name." values="(string)"/>
+      <configurationElements name="ROFS3_FWIDINFO" description="The content string for the fwid3.txt file." values="(string)"/>
+      <configurationElements name="ROFS3_HEADER" description="This variable can contain a header section for the rofs3 master oby." values="(string)"/>
+      <configurationElements name="ROFS3_MSTOBY" description="The (generated) version iby file name for the rofs3 image. This file included the version text files and other version parameters." values="(string)"/>
+      <configurationElements name="ROFS3_NAME" description="The full name of the rofs3 image" values="(string)"/>
+      <configurationElements name="ROFS3_OBY" description="The oby file(s) included to the rofs3 image creation" values="(string)"/>
+      <configurationElements name="ROFS3_OPT" description="The rofs3 specific buildrom options" values="(string)"/>
+      <configurationElements name="ROFS3_ROMVER" description="The rofs3 ROM version string" values="(string)"/>
+      <configurationElements name="ROFS3_TIME" description="The time defined to the rofs3 image." values="(string)"/>
+      <configurationElements name="ROFS3_VERIBY" description="The (generated) version iby file name for the rofs3 image. This file included the version text files and other version parameters." values="(string)"/>
+      <configurationElements name="SOS_VERSION" description="Symbian OS version number. The value is used in the version info generation (platform.txt).(see USE_VERGEN)" values="([0-9]+.[0-9]+)"/>
+      <configurationElements name="SWUPD_EXT" description="The software update file extension." values="(string)"/>
+      <configurationElements name="TYPE" description="Defines the image type." values="(rnd|prd|subcon)"/>
+      <configurationElements name="USE_OVERRIDE" description="Define whether the override.pm Buildrom.pl plugin is used (Includes automatically also \epoc32\rom\override.oby)." values="([0|1])"/>
+      <configurationElements name="USE_PAGING" description="Define the usage of On Demand Pagin (ODP). (E.g. 0,rom,code)." values="((0|rom|code[:[(1|2|3)]+]?))"/>
+      <configurationElements name="USE_ROFS" description="Define the rofs sections in use. A comma separated list can be given of possible values. (E.g. 1,2,3)." values="([[dummy|]0..6][,[dummy|]0..6]*)"/>
+      <configurationElements name="USE_ROMFILE" description="Define whether the \epoc32\rombuild\romfiles.txt is used. Files in romfiles are automatically moved to ROM, everything else in core is moved to ROFS1." values="([0|1])"/>
+      <configurationElements name="USE_ROMSYMGEN" description="Generate the rom symbol file. 0=Do not generate, 1=Generate" values="([0|1])"/>
+      <configurationElements name="USE_UDEB" description="Include the usage of the debug binary *.txt to define the list of binaries that are taken from udeb folder instead of the urel." values="([0|1|full])"/>
+      <configurationElements name="USE_VERGEN" description="Use iMaker version info generation" values="([0|1])"/>
+      <configurationElements name="BLDROBY" description="For passing extra oby files (from command line) to the buildrom.pl" values="(string)"/>
+      <configurationElements name="BLDROM_OPT" description="The default buildrom.pl options" values="(string)"/>
+      <configurationElements name="BLDROPT" description="For passing extra parameters (from command line) to the buildrom.pl" values="(string)"/>
+      <configurationElements name="CONFIGROOT" description="Define the default configuration root directory." values="(string)"/>
+      <configurationElements name="CORE_CDPROMFILE" description="The name of the core Code Demand Paging rom file (Code paging)." values="(string)"/>
+      <configurationElements name="CORE_DIR" description="The working directory, when creating core image" values="(string)"/>
+      <configurationElements name="CORE_E2FNAME" description="The core elf2flash filename. This is the final core flash file." values="(string)"/>
+      <configurationElements name="CORE_FWIDFILE" description="The (generated) _core_fwid.txt file name." values="(string)"/>
+      <configurationElements name="CORE_IMEISVFILE" description="The (generated) _core_imeisv.txt file name." values="(string)"/>
+      <configurationElements name="CORE_IMEISVINFO" description="The content string for the imeisv.txt file." values="(string)"/>
+      <configurationElements name="CORE_MODELFILE" description="The (generated) _core_model.txt file name." values="(string)"/>
+      <configurationElements name="CORE_MODELINFO" description="The content string for the model.txt file." values="(string)"/>
+      <configurationElements name="CORE_MSTOBY" description="The generated master oby file name, which includes the CORE_OBY files" values="(string)"/>
+      <configurationElements name="CORE_NAME" description="The full name of the core image" values="(string)"/>
+      <configurationElements name="CORE_NDPROMFILE" description="The name of the core Non Demand Paging rom file." values="(string)"/>
+      <configurationElements name="CORE_OBY" description="The oby file(s) included to the core image creation" values="(string)"/>
+      <configurationElements name="CORE_ODPROMFILE" description="The name of the core On Demand Paging rom file (Rom paging)." values="(string)"/>
+      <configurationElements name="CORE_OPT" description="The core specific buildrom options" values="(string)"/>
+      <configurationElements name="CORE_PLATFILE" description="The (generated) _core_platform.txt file name." values="(string)"/>
+      <configurationElements name="CORE_PLATINFO" description="The content string for the fwid.txt file." values="(string)"/>
+      <configurationElements name="CORE_PRODFILE" description="The (generated) _core_product.txt file name." values="(string)"/>
+      <configurationElements name="CORE_ROFSFILE" description="The name of the core rofs file." values="(string)"/>
+      <configurationElements name="CORE_ROMVER" description="The rom version parameter passed to the version.iby" values="(string)"/>
+      <configurationElements name="CORE_SWVERFILE" description="The (generated) _core_sw.txt version file name. This generated file is included in the CORE_VERIBY file." values="(string)"/>
+      <configurationElements name="CORE_SWVERINFO" description="The content string for the sw.txt file." values="(string)"/>
+      <configurationElements name="CORE_TIME" description="The time defined to the core image" values="(string)"/>
+      <configurationElements name="CORE_UDEBFILE" description="The name of the core udeb file. See USE_UDEB." values="(string)"/>
+      <configurationElements name="CORE_VERIBY" description="The name of the generated core *version.iby, which included version files and info" values="(string)"/>
+      <configurationElements name="CORE_VERSION" description="The version of the core. Used in sw.txt generation." values="(string)"/>
+      <configurationElements name="COREPLAT_NAME" description="Name of the core platform" values="(string)"/>
+      <configurationElements name="CUSTVARIANT_DIR" description="Configure the directory where to included the customer variant content. By default all content under /content is included to the image as it exists in the folder." values="(string)"/>
+      <configurationElements name="DEFAULT_LANGUAGE" description="Default language is the language where the device will boot to (SIM language overrides this selection)" values="(string)"/>
+      <configurationElements name="FLASH_EXT" description="The flash file extension." values="(string)"/>
+      <configurationElements name="HWID" description="Hardware Id" values="([0-9]4)"/>
+      <configurationElements name="HWID_LIST" description="Possible Hardware Ids of the product." values="([0-9]4)*"/>
+      <configurationElements name="KEEPTEMP" description="Keep the buildrom.pl temp files (copied to the WORKDIR). E.g. tmp1.oby tmp2.oby..tmp9.oby" values="([0|1])"/>
+      <configurationElements name="LABEL" description="A label to the NAME of the image" values="(string)"/>
+      <configurationElements name="LANGID" description="Language id used in the lang.txt generation" values="(string)"/>
+      <configurationElements name="LANGUAGES" description="Languages are the languages that are taken to the image (SC language is is defaulting to 01 in languages.txt)" values="(string)"/>
+      <configurationElements name="NAME" description="The name of the image" values="(string)"/>
+      <configurationElements name="OPERATOR_OBY" description="The name for generated operator oby, which is a file generated based on an operator specific content." values="(string)"/>
+      <configurationElements name="OPERATOR_OBYGEN" description="The name, path, rule for collecting content to the operator specific oby (E.g. operator.oby | /epoc32/rom/include/operator | *.iby collects all iby files from operator folder)." values="(string)|(string)|(string)"/>
+      <configurationElements name="PRODUCT_MODEL" description="The model of the product" values="(string)"/>
+      <configurationElements name="PRODUCT_NAME" description="Name of the product" values="(string)"/>
+      <configurationElements name="PRODUCT_REVISION" description="The reision of the product" values="(string)"/>
+      <configurationElements name="RELEASEDIR" description="The RELEASEDIR is used in the RELEASE step that copies the created files to a separate folder defined by the RELEASEDIR." values="(string)"/>
+      <configurationElements name="RELEASEFILES" description="The RELEASEFILES define the source files that are copied in the RELEASE step. The files must be given as a space delimited list. Wildcards can be used. E.g. \epoc32\rombuild\product\theflash.fpsx \epoc32\rombuild\product\*.log" values="(string)"/>
+      <configurationElements name="RELEASENAME" description="The RELEASENAME is used in the RELEASE step that copies the created files to a separate folder with a new name." values="(string)"/>
+      <configurationElements name="ROFS2_DIR" description="The working directory, when creating the rofs2 image" values="(string)"/>
+      <configurationElements name="ROFS2_E2FNAME" description="The rofs2 elf2flash filename. This is the final rofs2 flash file." values="(string)"/>
+      <configurationElements name="ROFS2_FOOTER" description="This variable can contain a footer section for the rofs2 master oby." values="(string)"/>
+      <configurationElements name="ROFS2_FWIDFILE" description="The (generated) _rofs2_fwid.txt file name." values="(string)"/>
+      <configurationElements name="ROFS2_FWIDINFO" description="The content string for the fwid2.txt file." values="(string)"/>
+      <configurationElements name="ROFS2_HEADER" description="This variable can contain a header section for the rofs2 master oby." values="(string)"/>
+      <configurationElements name="ROFS2_MSTOBY" description="The (generated) rofs2 master oby file name. This file includes the ROFS2_OBY files and other parameters" values="(string)"/>
+      <configurationElements name="ROFS2_NAME" description="The full name of the rofs2 image" values="(string)"/>
+      <configurationElements name="ROFS2_OBY" description="The oby file(s) included to the rofs2 image creation" values="(string)"/>
+      <configurationElements name="ROFS2_OPT" description="The rofs2 specific buildrom options" values="(string)"/>
+      <configurationElements name="ROFS2_ROMVER" description="The rofs2 ROM version string" values="(string)"/>
+      <configurationElements name="ROFS2_TIME" description="The time defined to the rofs2 image." values="(string)"/>
+      <configurationElements name="ROFS2_VERIBY" description="The (generated) version iby file name for the rofs2 image. This file included the version text files and other version parameters." values="(string)"/>
+      <configurationElements name="ROFS3_CUSTFILE" description="The (generated) source file name for customersw.txt." values="(string)"/>
+      <configurationElements name="ROFS3_CUSTINFO" description="The content string for the customersw.txt." values="(string)"/>
+      <configurationElements name="ROFS3_DIR" description="The working directory, when creating the rofs3 image" values="(string)"/>
+      <configurationElements name="ROFS3_E2FNAME" description="The rofs3 elf2flash filename. This is the final rofs3 flash file." values="(string)"/>
+      <configurationElements name="ROFS3_FOOTER" description="This variable can contain a footer section for the rofs3 master oby." values="(string)"/>
+      <configurationElements name="ROFS3_FWIDFILE" description="The (generated) _rofs3_fwid.txt file name." values="(string)"/>
+      <configurationElements name="ROFS3_FWIDINFO" description="The content string for the fwid3.txt file." values="(string)"/>
+      <configurationElements name="ROFS3_HEADER" description="This variable can contain a header section for the rofs3 master oby." values="(string)"/>
+      <configurationElements name="ROFS3_MSTOBY" description="The (generated) version iby file name for the rofs3 image. This file included the version text files and other version parameters." values="(string)"/>
+      <configurationElements name="ROFS3_NAME" description="The full name of the rofs3 image" values="(string)"/>
+      <configurationElements name="ROFS3_OBY" description="The oby file(s) included to the rofs3 image creation" values="(string)"/>
+      <configurationElements name="ROFS3_OPT" description="The rofs3 specific buildrom options" values="(string)"/>
+      <configurationElements name="ROFS3_ROMVER" description="The rofs3 ROM version string" values="(string)"/>
+      <configurationElements name="ROFS3_TIME" description="The time defined to the rofs3 image." values="(string)"/>
+      <configurationElements name="ROFS3_VERIBY" description="The (generated) version iby file name for the rofs3 image. This file included the version text files and other version parameters." values="(string)"/>
+      <configurationElements name="SOS_VERSION" description="Symbian OS version number. The value is used in the version info generation (platform.txt).(see USE_VERGEN)" values="([0-9]+.[0-9]+)"/>
+      <configurationElements name="SWUPD_EXT" description="The software update file extension." values="(string)"/>
+      <configurationElements name="TYPE" description="Defines the image type." values="(rnd|prd|subcon)"/>
+      <configurationElements name="USE_OVERRIDE" description="Define whether the override.pm Buildrom.pl plugin is used (Includes automatically also \epoc32\rom\override.oby)." values="([0|1])"/>
+      <configurationElements name="USE_PAGING" description="Define the usage of On Demand Pagin (ODP). (E.g. 0,rom,code)." values="((0|rom|code[:[(1|2|3)]+]?))"/>
+      <configurationElements name="USE_ROFS" description="Define the rofs sections in use. A comma separated list can be given of possible values. (E.g. 1,2,3)." values="([[dummy|]0..6][,[dummy|]0..6]*)"/>
+      <configurationElements name="USE_ROMFILE" description="Define whether the \epoc32\rombuild\romfiles.txt is used. Files in romfiles are automatically moved to ROM, everything else in core is moved to ROFS1." values="([0|1])"/>
+      <configurationElements name="USE_ROMSYMGEN" description="Generate the rom symbol file. 0=Do not generate, 1=Generate" values="([0|1])"/>
+      <configurationElements name="USE_UDEB" description="Include the usage of the debug binary *.txt to define the list of binaries that are taken from udeb folder instead of the urel." values="([0|1|full])"/>
+      <configurationElements name="USE_VERGEN" description="Use iMaker version info generation" values="([0|1])"/>
+    </interfaces>
+    <configurations name="image_conf_product52.mk" filePath="\epoc32\rom\config\platform\product52\image_conf_product52.mk" targetrefs="//@result/@targets.0 //@result/@targets.1 //@result/@targets.2 //@result/@targets.3 //@result/@targets.4 //@result/@targets.5 //@result/@targets.6 //@result/@targets.7 //@result/@targets.8 //@result/@targets.9 //@result/@targets.10 //@result/@targets.11 //@result/@targets.12 //@result/@targets.13 //@result/@targets.14 //@result/@targets.15 //@result/@targets.16 //@result/@targets.17 //@result/@targets.18 //@result/@targets.19 //@result/@targets.20 //@result/@targets.21 //@result/@targets.22 //@result/@targets.23 //@result/@targets.24 //@result/@targets.25 //@result/@targets.26 //@result/@targets.27 //@result/@targets.28 //@result/@targets.29 //@result/@targets.30 //@result/@targets.31 //@result/@targets.32 //@result/@targets.33 //@result/@targets.34 //@result/@targets.35 //@result/@targets.36 //@result/@targets.37">
+      <settings name="BLDROBY" ref="//@result/@interfaces.0/@configurationElements.0"/>
+      <settings name="BLDROM_OPT" value="-p -v -nosymbols   -D_IMAGE_TYPE_RND" ref="//@result/@interfaces.0/@configurationElements.1"/>
+      <settings name="BLDROPT" ref="//@result/@interfaces.0/@configurationElements.2"/>
+      <settings name="CONFIGROOT" value="/epoc32/rom/config" ref="//@result/@interfaces.0/@configurationElements.3"/>
+      <settings name="CORE_CDPROMFILE" value="/epoc32/rombuild/odpcoderomfiles.txt" ref="//@result/@interfaces.0/@configurationElements.4"/>
+      <settings name="CORE_DIR" value="/epoc32/rombuild/product52/core" ref="//@result/@interfaces.0/@configurationElements.5"/>
+      <settings name="CORE_E2FNAME" value="/epoc32/rombuild/product52/core/elf2flash/product52_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.6"/>
+      <settings name="CORE_FWIDFILE" value="/epoc32/rombuild/product52/core/product52_5230_rnd_core_fwid.txt" ref="//@result/@interfaces.0/@configurationElements.7"/>
+      <settings name="CORE_IMEISVFILE" value="/epoc32/rombuild/product52/core/product52_5230_rnd_core_imeisv.txt" ref="//@result/@interfaces.0/@configurationElements.8"/>
+      <settings name="CORE_IMEISVINFO" value="00" ref="//@result/@interfaces.0/@configurationElements.9"/>
+      <settings name="CORE_MODELFILE" value="/epoc32/rombuild/product52/core/product52_5230_rnd_core_model.txt" ref="//@result/@interfaces.0/@configurationElements.10"/>
+      <settings name="CORE_MODELINFO" value="S60" ref="//@result/@interfaces.0/@configurationElements.11"/>
+      <settings name="CORE_MSTOBY" value="/epoc32/rombuild/product52/core/product52_5230_rnd_core_master.oby" ref="//@result/@interfaces.0/@configurationElements.12"/>
+      <settings name="CORE_NAME" value="/epoc32/rombuild/product52/core/product52_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.13"/>
+      <settings name="CORE_NDPROMFILE" value="/epoc32/rombuild/romfiles.txt" ref="//@result/@interfaces.0/@configurationElements.14"/>
+      <settings name="CORE_OBY" value="/epoc32/rom/ncp.oby" ref="//@result/@interfaces.0/@configurationElements.15"/>
+      <settings name="CORE_ODPROMFILE" value="/epoc32/rombuild/odpromfiles.txt" ref="//@result/@interfaces.0/@configurationElements.16"/>
+      <settings name="CORE_OPT" value="-p -v -nosymbols   -D_IMAGE_TYPE_RND -D_EABI=ARMV5 -D_ASIC_VER_11  -Dproduct52  -DLCD_SHELL" ref="//@result/@interfaces.0/@configurationElements.17"/>
+      <settings name="CORE_PLATFILE" value="/epoc32/rombuild/product52/core/product52_5230_rnd_core_platform.txt" ref="//@result/@interfaces.0/@configurationElements.18"/>
+      <settings name="CORE_PLATINFO" value="SymbianOSMajorVersion=9\nSymbianOSMinorVersion=4\n" ref="//@result/@interfaces.0/@configurationElements.19"/>
+      <settings name="CORE_PRODFILE" value="/epoc32/rombuild/product52/core/product52_5230_rnd_core_product.txt" ref="//@result/@interfaces.0/@configurationElements.20"/>
+      <settings name="CORE_ROFSFILE" value="/epoc32/rombuild/odpcoderofsfiles.txt" ref="//@result/@interfaces.0/@configurationElements.21"/>
+      <settings name="CORE_ROMVER" value="0.01(0)" ref="//@result/@interfaces.0/@configurationElements.22"/>
+      <settings name="CORE_SWVERFILE" value="/epoc32/rombuild/product52/core/product52_5230_rnd_core_sw.txt" ref="//@result/@interfaces.0/@configurationElements.23"/>
+      <settings name="CORE_SWVERINFO" value="V 52.2008.29.xx RND\n14-07-08\nRX-47\n(c) Nokia" ref="//@result/@interfaces.0/@configurationElements.24"/>
+      <settings name="CORE_TIME" value="14/07/2008" ref="//@result/@interfaces.0/@configurationElements.25"/>
+      <settings name="CORE_UDEBFILE" value="/epoc32/rombuild/mytraces.txt" ref="//@result/@interfaces.0/@configurationElements.26"/>
+      <settings name="CORE_VERIBY" value="/epoc32/rombuild/product52/core/product52_5230_rnd_core_version.iby" ref="//@result/@interfaces.0/@configurationElements.27"/>
+      <settings name="CORE_VERSION" value="V 52.2008.29.xx RND" ref="//@result/@interfaces.0/@configurationElements.28"/>
+      <settings name="COREPLAT_NAME" value="platform" ref="//@result/@interfaces.0/@configurationElements.29"/>
+      <settings name="CUSTVARIANT_DIR" ref="//@result/@interfaces.0/@configurationElements.30"/>
+      <settings name="DEFAULT_LANGUAGE" value="SC" ref="//@result/@interfaces.0/@configurationElements.31"/>
+      <settings name="FLASH_EXT" value=".fpsx" ref="//@result/@interfaces.0/@configurationElements.32"/>
+      <settings name="HWID" value="5161 5210 5211 5220 5230* 5240" ref="//@result/@interfaces.0/@configurationElements.33"/>
+      <settings name="HWID_LIST" value="5161 5210 5211 5220 5230 5240" ref="//@result/@interfaces.0/@configurationElements.34"/>
+      <settings name="KEEPTEMP" value="0" ref="//@result/@interfaces.0/@configurationElements.35"/>
+      <settings name="LABEL" ref="//@result/@interfaces.0/@configurationElements.36"/>
+      <settings name="LANGID" value="01" ref="//@result/@interfaces.0/@configurationElements.37"/>
+      <settings name="LANGUAGES" value="SC" ref="//@result/@interfaces.0/@configurationElements.38"/>
+      <settings name="NAME" value="product52_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.39"/>
+      <settings name="OPERATOR_OBY" value="/epoc32/rombuild/product52/rofs3/product52_5230_rnd_rofs3_operator.oby" ref="//@result/@interfaces.0/@configurationElements.40"/>
+      <settings name="OPERATOR_OBYGEN" value="/epoc32/rombuild/product52/rofs3/product52_5230_rnd_rofs3_operator.oby | /epoc32/rom/include/operator | *.iby" ref="//@result/@interfaces.0/@configurationElements.41"/>
+      <settings name="PRODUCT_MODEL" value="N00" ref="//@result/@interfaces.0/@configurationElements.42"/>
+      <settings name="PRODUCT_NAME" value="product52" ref="//@result/@interfaces.0/@configurationElements.43"/>
+      <settings name="PRODUCT_REVISION" value="01" ref="//@result/@interfaces.0/@configurationElements.44"/>
+      <settings name="RELEASEDIR" value="/flash_images/product52" ref="//@result/@interfaces.0/@configurationElements.45"/>
+      <settings name="RELEASEFILES" value="/epoc32/rombuild/product52/product52_5230_rnd.fpsx /epoc32/rombuild/product52/core/product52_5230_rnd.rom.log /epoc32/rombuild/product52/core/product52_5230_rnd.rofs1.log /epoc32/rombuild/product52/rofs2/product52_5230_rnd.rofs2.log /epoc32/rombuild/product52/rofs3/product52_5230_rnd.rofs3.log" ref="//@result/@interfaces.0/@configurationElements.46"/>
+      <settings name="RELEASENAME" value="product52_rnd_20080714082810_haismail" ref="//@result/@interfaces.0/@configurationElements.47"/>
+      <settings name="ROFS2_DIR" value="/epoc32/rombuild/product52/rofs2" ref="//@result/@interfaces.0/@configurationElements.48"/>
+      <settings name="ROFS2_E2FNAME" value="/epoc32/rombuild/product52/rofs2/elf2flash/product52_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.49"/>
+      <settings name="ROFS2_FOOTER" ref="//@result/@interfaces.0/@configurationElements.50"/>
+      <settings name="ROFS2_FWIDFILE" value="/epoc32/rombuild/product52/rofs2/product52_5230_rnd_rofs2_fwid.txt" ref="//@result/@interfaces.0/@configurationElements.51"/>
+      <settings name="ROFS2_FWIDINFO" value="id=language\nversion=01\n" ref="//@result/@interfaces.0/@configurationElements.52"/>
+      <settings name="ROFS2_HEADER" value="#include &lt;data_caging_paths_for_iby.hrh> \n\n// TEMPORARY FIXES BEGIN\n // Enable faster variant creation, to be removed when iby header hierarchy is fixed\n #define __platform_OBY__  // Define platform.oby out\n #include &lt;Variant\Header.iby>\n #include &lt;header.iby>  // Symbian common definitions\n // TEMPORARY FIXES END\n" ref="//@result/@interfaces.0/@configurationElements.53"/>
+      <settings name="ROFS2_MSTOBY" value="/epoc32/rombuild/product52/rofs2/product52_5230_rnd_rofs2_master.oby" ref="//@result/@interfaces.0/@configurationElements.54"/>
+      <settings name="ROFS2_NAME" value="/epoc32/rombuild/product52/rofs2/product52_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.55"/>
+      <settings name="ROFS2_OBY" ref="//@result/@interfaces.0/@configurationElements.56"/>
+      <settings name="ROFS2_OPT" ref="//@result/@interfaces.0/@configurationElements.57"/>
+      <settings name="ROFS2_ROMVER" value="0.01(0)" ref="//@result/@interfaces.0/@configurationElements.58"/>
+      <settings name="ROFS2_TIME" value="14/07/2008" ref="//@result/@interfaces.0/@configurationElements.59"/>
+      <settings name="ROFS2_VERIBY" value="/epoc32/rombuild/product52/rofs2/product52_5230_rnd_rofs2_version.iby" ref="//@result/@interfaces.0/@configurationElements.60"/>
+      <settings name="ROFS3_CUSTFILE" value="/epoc32/rombuild/product52/rofs3/product52_5230_rnd_rofs3_customersw.txt" ref="//@result/@interfaces.0/@configurationElements.61"/>
+      <settings name="ROFS3_CUSTINFO" value="V 0.00.0\n14-07-08" ref="//@result/@interfaces.0/@configurationElements.62"/>
+      <settings name="ROFS3_DIR" value="/epoc32/rombuild/product52/rofs3" ref="//@result/@interfaces.0/@configurationElements.63"/>
+      <settings name="ROFS3_E2FNAME" value="/epoc32/rombuild/product52/rofs3/elf2flash/product52_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.64"/>
+      <settings name="ROFS3_FOOTER" ref="//@result/@interfaces.0/@configurationElements.65"/>
+      <settings name="ROFS3_FWIDFILE" value="/epoc32/rombuild/product52/rofs3/product52_5230_rnd_rofs3_fwid.txt" ref="//@result/@interfaces.0/@configurationElements.66"/>
+      <settings name="ROFS3_FWIDINFO" value="id=customer\nversion=V 0.00.0 RND Customer\n" ref="//@result/@interfaces.0/@configurationElements.67"/>
+      <settings name="ROFS3_HEADER" value="#include &lt;data_caging_paths_for_iby.hrh> \n\n// TEMPORARY FIXES BEGIN\n // Enable faster variant creation, to be removed when iby header hierarchy is fixed\n #define __platform_OBY__  // Define platform.oby out\n #include &lt;Variant\Header.iby>\n #include &lt;header.iby>  // Symbian common definitions\n // TEMPORARY FIXES END\n" ref="//@result/@interfaces.0/@configurationElements.68"/>
+      <settings name="ROFS3_MSTOBY" value="/epoc32/rombuild/product52/rofs3/product52_5230_rnd_rofs3_master.oby" ref="//@result/@interfaces.0/@configurationElements.69"/>
+      <settings name="ROFS3_NAME" value="/epoc32/rombuild/product52/rofs3/product52_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.70"/>
+      <settings name="ROFS3_OBY" value="/epoc32/rombuild/product52/rofs3/product52_5230_rnd_rofs3_operator.oby" ref="//@result/@interfaces.0/@configurationElements.71"/>
+      <settings name="ROFS3_OPT" ref="//@result/@interfaces.0/@configurationElements.72"/>
+      <settings name="ROFS3_ROMVER" value="0.01(0)" ref="//@result/@interfaces.0/@configurationElements.73"/>
+      <settings name="ROFS3_TIME" value="14/07/2008" ref="//@result/@interfaces.0/@configurationElements.74"/>
+      <settings name="ROFS3_VERIBY" value="/epoc32/rombuild/product52/rofs3/product52_5230_rnd_rofs3_version.iby" ref="//@result/@interfaces.0/@configurationElements.75"/>
+      <settings name="SOS_VERSION" value="9.4" ref="//@result/@interfaces.0/@configurationElements.76"/>
+      <settings name="SWUPD_EXT" value=".swupd" ref="//@result/@interfaces.0/@configurationElements.77"/>
+      <settings name="TYPE" value="rnd" ref="//@result/@interfaces.0/@configurationElements.78"/>
+      <settings name="USE_OVERRIDE" value="0" ref="//@result/@interfaces.0/@configurationElements.79"/>
+      <settings name="USE_PAGING" value="code:123" ref="//@result/@interfaces.0/@configurationElements.80"/>
+      <settings name="USE_ROFS" value="1" ref="//@result/@interfaces.0/@configurationElements.81"/>
+      <settings name="USE_ROMFILE" value="1" ref="//@result/@interfaces.0/@configurationElements.82"/>
+      <settings name="USE_ROMSYMGEN" value="0" ref="//@result/@interfaces.0/@configurationElements.83"/>
+      <settings name="USE_UDEB" value="0" ref="//@result/@interfaces.0/@configurationElements.84"/>
+      <settings name="USE_VERGEN" value="0" ref="//@result/@interfaces.0/@configurationElements.85"/>
+    </configurations>
+    <configurations name="image_conf_product52_ui.mk" filePath="\epoc32\rom\config\platform\product52\image_conf_product52_ui.mk" targetrefs="//@result/@targets.38 //@result/@targets.39 //@result/@targets.40 //@result/@targets.41 //@result/@targets.42 //@result/@targets.43 //@result/@targets.44 //@result/@targets.45 //@result/@targets.46 //@result/@targets.47 //@result/@targets.48 //@result/@targets.49 //@result/@targets.50 //@result/@targets.51 //@result/@targets.52 //@result/@targets.53 //@result/@targets.54 //@result/@targets.55 //@result/@targets.56 //@result/@targets.57 //@result/@targets.58 //@result/@targets.59 //@result/@targets.60 //@result/@targets.61 //@result/@targets.62 //@result/@targets.63 //@result/@targets.64 //@result/@targets.65 //@result/@targets.66 //@result/@targets.67 //@result/@targets.68 //@result/@targets.69 //@result/@targets.70 //@result/@targets.71 //@result/@targets.72 //@result/@targets.73 //@result/@targets.74 //@result/@targets.75">
+      <settings name="BLDROBY" ref="//@result/@interfaces.0/@configurationElements.86"/>
+      <settings name="BLDROM_OPT" value="-p -v -nosymbols -eoverride  -D_IMAGE_TYPE_RND" ref="//@result/@interfaces.0/@configurationElements.87"/>
+      <settings name="BLDROPT" ref="//@result/@interfaces.0/@configurationElements.88"/>
+      <settings name="CONFIGROOT" value="/epoc32/rom/config" ref="//@result/@interfaces.0/@configurationElements.89"/>
+      <settings name="CORE_CDPROMFILE" value="/epoc32/rombuild/odpcoderomfiles.txt" ref="//@result/@interfaces.0/@configurationElements.90"/>
+      <settings name="CORE_DIR" value="/epoc32/rombuild/product52/core" ref="//@result/@interfaces.0/@configurationElements.91"/>
+      <settings name="CORE_E2FNAME" value="/epoc32/rombuild/product52/core/elf2flash/product52_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.92"/>
+      <settings name="CORE_FWIDFILE" value="/epoc32/rombuild/product52/core/product52_5230_rnd_core_fwid.txt" ref="//@result/@interfaces.0/@configurationElements.93"/>
+      <settings name="CORE_IMEISVFILE" value="/epoc32/rombuild/product52/core/product52_5230_rnd_core_imeisv.txt" ref="//@result/@interfaces.0/@configurationElements.94"/>
+      <settings name="CORE_IMEISVINFO" value="00" ref="//@result/@interfaces.0/@configurationElements.95"/>
+      <settings name="CORE_MODELFILE" value="/epoc32/rombuild/product52/core/product52_5230_rnd_core_model.txt" ref="//@result/@interfaces.0/@configurationElements.96"/>
+      <settings name="CORE_MODELINFO" value="S60" ref="//@result/@interfaces.0/@configurationElements.97"/>
+      <settings name="CORE_MSTOBY" value="/epoc32/rombuild/product52/core/product52_5230_rnd_core_master.oby" ref="//@result/@interfaces.0/@configurationElements.98"/>
+      <settings name="CORE_NAME" value="/epoc32/rombuild/product52/core/product52_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.99"/>
+      <settings name="CORE_NDPROMFILE" value="/epoc32/rombuild/romfiles.txt" ref="//@result/@interfaces.0/@configurationElements.100"/>
+      <settings name="CORE_OBY" value="/epoc32/rom/master.oby /epoc32/rom/ppd.oby /epoc32/rom/rnd.oby /epoc32/rom/override.oby /epoc32/rombuild/product52/core/product52_5230_rnd_core_collected.oby /epoc32/rom/include/symbianos.iby /epoc32/rom/variant/patchdata.iby" ref="//@result/@interfaces.0/@configurationElements.101"/>
+      <settings name="CORE_ODPROMFILE" value="/epoc32/rombuild/odpromfiles.txt" ref="//@result/@interfaces.0/@configurationElements.102"/>
+      <settings name="CORE_OPT" value="-p -v -nosymbols -eoverride  -D_IMAGE_TYPE_RND -D_EABI=ARMV5 -D_ASIC_VER_11 -DUSE_MULTIROFS -Dproduct52  -es60ibymacros -DSECTION -DRND_CONTENT " ref="//@result/@interfaces.0/@configurationElements.103"/>
+      <settings name="CORE_PLATFILE" value="/epoc32/rombuild/product52/core/product52_5230_rnd_core_platform.txt" ref="//@result/@interfaces.0/@configurationElements.104"/>
+      <settings name="CORE_PLATINFO" value="SymbianOSMajorVersion=9\nSymbianOSMinorVersion=4\n" ref="//@result/@interfaces.0/@configurationElements.105"/>
+      <settings name="CORE_PRODFILE" value="/epoc32/rombuild/product52/core/product52_5230_rnd_core_product.txt" ref="//@result/@interfaces.0/@configurationElements.106"/>
+      <settings name="CORE_ROFSFILE" value="/epoc32/rombuild/odpcoderofsfiles.txt" ref="//@result/@interfaces.0/@configurationElements.107"/>
+      <settings name="CORE_ROMVER" value="0.01(0)" ref="//@result/@interfaces.0/@configurationElements.108"/>
+      <settings name="CORE_SWVERFILE" value="/epoc32/rombuild/product52/core/product52_5230_rnd_core_sw.txt" ref="//@result/@interfaces.0/@configurationElements.109"/>
+      <settings name="CORE_SWVERINFO" value="V 52.50.2008.23. RnD\n13-06-08\nRX-47\n(c)NMP" ref="//@result/@interfaces.0/@configurationElements.110"/>
+      <settings name="CORE_TIME" value="14/07/2008" ref="//@result/@interfaces.0/@configurationElements.111"/>
+      <settings name="CORE_UDEBFILE" value="/epoc32/rombuild/mytraces.txt" ref="//@result/@interfaces.0/@configurationElements.112"/>
+      <settings name="CORE_VERIBY" value="/epoc32/rombuild/product52/core/product52_5230_rnd_core_version.iby" ref="//@result/@interfaces.0/@configurationElements.113"/>
+      <settings name="CORE_VERSION" value="V 52.50.2008.23. RnD" ref="//@result/@interfaces.0/@configurationElements.114"/>
+      <settings name="COREPLAT_NAME" value="platform" ref="//@result/@interfaces.0/@configurationElements.115"/>
+      <settings name="CUSTVARIANT_DIR" ref="//@result/@interfaces.0/@configurationElements.116"/>
+      <settings name="DEFAULT_LANGUAGE" value="01" ref="//@result/@interfaces.0/@configurationElements.117"/>
+      <settings name="FLASH_EXT" value=".fpsx" ref="//@result/@interfaces.0/@configurationElements.118"/>
+      <settings name="HWID" value="5161 5210 5211 5220 5230* 5240" ref="//@result/@interfaces.0/@configurationElements.119"/>
+      <settings name="HWID_LIST" value="5161 5210 5211 5220 5230 5240" ref="//@result/@interfaces.0/@configurationElements.120"/>
+      <settings name="KEEPTEMP" value="0" ref="//@result/@interfaces.0/@configurationElements.121"/>
+      <settings name="LABEL" ref="//@result/@interfaces.0/@configurationElements.122"/>
+      <settings name="LANGID" value="01" ref="//@result/@interfaces.0/@configurationElements.123"/>
+      <settings name="LANGUAGES" value="01" ref="//@result/@interfaces.0/@configurationElements.124"/>
+      <settings name="NAME" value="product52_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.125"/>
+      <settings name="OPERATOR_OBY" ref="//@result/@interfaces.0/@configurationElements.126"/>
+      <settings name="OPERATOR_OBYGEN" value=" | /epoc32/rom/include/operator | *.iby" ref="//@result/@interfaces.0/@configurationElements.127"/>
+      <settings name="PRODUCT_MODEL" value="N00" ref="//@result/@interfaces.0/@configurationElements.128"/>
+      <settings name="PRODUCT_NAME" value="product52" ref="//@result/@interfaces.0/@configurationElements.129"/>
+      <settings name="PRODUCT_REVISION" value="01" ref="//@result/@interfaces.0/@configurationElements.130"/>
+      <settings name="RELEASEDIR" value="/flash_images/product52" ref="//@result/@interfaces.0/@configurationElements.131"/>
+      <settings name="RELEASEFILES" value="/epoc32/rombuild/product52/product52_5230_rnd.fpsx /epoc32/rombuild/product52/core/product52_5230_rnd.rom.log /epoc32/rombuild/product52/core/product52_5230_rnd.rofs1.log /epoc32/rombuild/product52/rofs2/product52_5230_rnd.rofs2.log /epoc32/rombuild/product52/rofs3/product52_5230_rnd.rofs3.log" ref="//@result/@interfaces.0/@configurationElements.132"/>
+      <settings name="RELEASENAME" value="product52_rnd_20080714082814_haismail" ref="//@result/@interfaces.0/@configurationElements.133"/>
+      <settings name="ROFS2_DIR" value="/epoc32/rombuild/product52/rofs2" ref="//@result/@interfaces.0/@configurationElements.134"/>
+      <settings name="ROFS2_E2FNAME" value="/epoc32/rombuild/product52/rofs2/elf2flash/product52_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.135"/>
+      <settings name="ROFS2_FOOTER" ref="//@result/@interfaces.0/@configurationElements.136"/>
+      <settings name="ROFS2_FWIDFILE" value="/epoc32/rombuild/product52/rofs2/product52_5230_rnd_rofs2_fwid.txt" ref="//@result/@interfaces.0/@configurationElements.137"/>
+      <settings name="ROFS2_FWIDINFO" value="id=language\nversion=01\n" ref="//@result/@interfaces.0/@configurationElements.138"/>
+      <settings name="ROFS2_HEADER" value="#include &lt;data_caging_paths_for_iby.hrh> \n\n// TEMPORARY FIXES BEGIN\n // Enable faster variant creation, to be removed when iby header hierarchy is fixed\n #define __platform_OBY__  // Define platform.oby out\n #include &lt;Variant\Header.iby>\n #include &lt;header.iby>  // Symbian common definitions\n // TEMPORARY FIXES END\n" ref="//@result/@interfaces.0/@configurationElements.139"/>
+      <settings name="ROFS2_MSTOBY" value="/epoc32/rombuild/product52/rofs2/product52_5230_rnd_rofs2_master.oby" ref="//@result/@interfaces.0/@configurationElements.140"/>
+      <settings name="ROFS2_NAME" value="/epoc32/rombuild/product52/rofs2/product52_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.141"/>
+      <settings name="ROFS2_OBY" value="&lt;Variant.oby> &lt;ppd_variant.oby> &lt;ppd_locales.iby> /epoc32/rom/override.oby /epoc32/rombuild/product52/rofs2/product52_5230_rnd_rofs2_language_collected.oby /epoc32/rombuild/product52/rofs2/product52_5230_rnd_rofs2_customer_collected.oby" ref="//@result/@interfaces.0/@configurationElements.142"/>
+      <settings name="ROFS2_OPT" value="-p -v -nosymbols -eoverride  -D_IMAGE_TYPE_RND -D_EABI=ARMV5 -D_ASIC_VER_11 -DUSE_MULTIROFS -Dproduct52  -es60ibymacros -elocalise -DRND_CONTENT" ref="//@result/@interfaces.0/@configurationElements.143"/>
+      <settings name="ROFS2_ROMVER" value="0.01(0)" ref="//@result/@interfaces.0/@configurationElements.144"/>
+      <settings name="ROFS2_TIME" value="14/07/2008" ref="//@result/@interfaces.0/@configurationElements.145"/>
+      <settings name="ROFS2_VERIBY" value="/epoc32/rombuild/product52/rofs2/product52_5230_rnd_rofs2_version.iby" ref="//@result/@interfaces.0/@configurationElements.146"/>
+      <settings name="ROFS3_CUSTFILE" value="/epoc32/rombuild/product52/rofs3/product52_5230_rnd_rofs3_customersw.txt" ref="//@result/@interfaces.0/@configurationElements.147"/>
+      <settings name="ROFS3_CUSTINFO" value="V 52.50.2008.23. RnD\n14-07-08" ref="//@result/@interfaces.0/@configurationElements.148"/>
+      <settings name="ROFS3_DIR" value="/epoc32/rombuild/product52/rofs3" ref="//@result/@interfaces.0/@configurationElements.149"/>
+      <settings name="ROFS3_E2FNAME" value="/epoc32/rombuild/product52/rofs3/elf2flash/product52_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.150"/>
+      <settings name="ROFS3_FOOTER" ref="//@result/@interfaces.0/@configurationElements.151"/>
+      <settings name="ROFS3_FWIDFILE" value="/epoc32/rombuild/product52/rofs3/product52_5230_rnd_rofs3_fwid.txt" ref="//@result/@interfaces.0/@configurationElements.152"/>
+      <settings name="ROFS3_FWIDINFO" value="id=customer\nversion=V 52.50.2008.23. RnD RND Customer\n" ref="//@result/@interfaces.0/@configurationElements.153"/>
+      <settings name="ROFS3_HEADER" value="#include &lt;data_caging_paths_for_iby.hrh> \n\n// TEMPORARY FIXES BEGIN\n // Enable faster variant creation, to be removed when iby header hierarchy is fixed\n #define __platform_OBY__  // Define platform.oby out\n #include &lt;Variant\Header.iby>\n #include &lt;header.iby>  // Symbian common definitions\n // TEMPORARY FIXES END\n" ref="//@result/@interfaces.0/@configurationElements.154"/>
+      <settings name="ROFS3_MSTOBY" value="/epoc32/rombuild/product52/rofs3/product52_5230_rnd_rofs3_master.oby" ref="//@result/@interfaces.0/@configurationElements.155"/>
+      <settings name="ROFS3_NAME" value="/epoc32/rombuild/product52/rofs3/product52_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.156"/>
+      <settings name="ROFS3_OBY" value=" /epoc32/rombuild/product52/rofs3/product52_5230_rnd_rofs3_collected.oby" ref="//@result/@interfaces.0/@configurationElements.157"/>
+      <settings name="ROFS3_OPT" value="-p -v -nosymbols -eoverride  -D_IMAGE_TYPE_RND -D_EABI=ARMV5 -D_ASIC_VER_11 -DUSE_MULTIROFS -Dproduct52  -es60ibymacros" ref="//@result/@interfaces.0/@configurationElements.158"/>
+      <settings name="ROFS3_ROMVER" value="0.01(0)" ref="//@result/@interfaces.0/@configurationElements.159"/>
+      <settings name="ROFS3_TIME" value="14/07/2008" ref="//@result/@interfaces.0/@configurationElements.160"/>
+      <settings name="ROFS3_VERIBY" value="/epoc32/rombuild/product52/rofs3/product52_5230_rnd_rofs3_version.iby" ref="//@result/@interfaces.0/@configurationElements.161"/>
+      <settings name="SOS_VERSION" value="9.4" ref="//@result/@interfaces.0/@configurationElements.162"/>
+      <settings name="SWUPD_EXT" value=".swupd" ref="//@result/@interfaces.0/@configurationElements.163"/>
+      <settings name="TYPE" value="rnd" ref="//@result/@interfaces.0/@configurationElements.164"/>
+      <settings name="USE_OVERRIDE" value="1" ref="//@result/@interfaces.0/@configurationElements.165"/>
+      <settings name="USE_PAGING" value="code:123" ref="//@result/@interfaces.0/@configurationElements.166"/>
+      <settings name="USE_ROFS" value="1,2,3" ref="//@result/@interfaces.0/@configurationElements.167"/>
+      <settings name="USE_ROMFILE" value="1" ref="//@result/@interfaces.0/@configurationElements.168"/>
+      <settings name="USE_ROMSYMGEN" value="0" ref="//@result/@interfaces.0/@configurationElements.169"/>
+      <settings name="USE_UDEB" value="1" ref="//@result/@interfaces.0/@configurationElements.170"/>
+      <settings name="USE_VERGEN" value="1" ref="//@result/@interfaces.0/@configurationElements.171"/>
+    </configurations>
+    <configurations name="image_conf_product.mk" filePath="\epoc32\rom\config\platform\product\image_conf_product.mk" targetrefs="//@result/@targets.76 //@result/@targets.77 //@result/@targets.78 //@result/@targets.79 //@result/@targets.80 //@result/@targets.81 //@result/@targets.82 //@result/@targets.83 //@result/@targets.84 //@result/@targets.85 //@result/@targets.86 //@result/@targets.87 //@result/@targets.88 //@result/@targets.89 //@result/@targets.90 //@result/@targets.91 //@result/@targets.92 //@result/@targets.93 //@result/@targets.94 //@result/@targets.95 //@result/@targets.96 //@result/@targets.97 //@result/@targets.98 //@result/@targets.99 //@result/@targets.100 //@result/@targets.101 //@result/@targets.102 //@result/@targets.103 //@result/@targets.104 //@result/@targets.105 //@result/@targets.106 //@result/@targets.107 //@result/@targets.108 //@result/@targets.109 //@result/@targets.110 //@result/@targets.111 //@result/@targets.112 //@result/@targets.113">
+      <settings name="BLDROBY" ref="//@result/@interfaces.0/@configurationElements.172"/>
+      <settings name="BLDROM_OPT" value="-p -v -nosymbols   -D_IMAGE_TYPE_RND" ref="//@result/@interfaces.0/@configurationElements.173"/>
+      <settings name="BLDROPT" ref="//@result/@interfaces.0/@configurationElements.174"/>
+      <settings name="CONFIGROOT" value="/epoc32/rom/config" ref="//@result/@interfaces.0/@configurationElements.175"/>
+      <settings name="CORE_CDPROMFILE" value="/epoc32/rombuild/odpcoderomfiles.txt" ref="//@result/@interfaces.0/@configurationElements.176"/>
+      <settings name="CORE_DIR" value="/epoc32/rombuild/product/core" ref="//@result/@interfaces.0/@configurationElements.177"/>
+      <settings name="CORE_E2FNAME" value="/epoc32/rombuild/product/core/elf2flash/product_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.178"/>
+      <settings name="CORE_FWIDFILE" value="/epoc32/rombuild/product/core/product_5230_rnd_core_fwid.txt" ref="//@result/@interfaces.0/@configurationElements.179"/>
+      <settings name="CORE_IMEISVFILE" value="/epoc32/rombuild/product/core/product_5230_rnd_core_imeisv.txt" ref="//@result/@interfaces.0/@configurationElements.180"/>
+      <settings name="CORE_IMEISVINFO" value="00" ref="//@result/@interfaces.0/@configurationElements.181"/>
+      <settings name="CORE_MODELFILE" value="/epoc32/rombuild/product/core/product_5230_rnd_core_model.txt" ref="//@result/@interfaces.0/@configurationElements.182"/>
+      <settings name="CORE_MODELINFO" value="S60" ref="//@result/@interfaces.0/@configurationElements.183"/>
+      <settings name="CORE_MSTOBY" value="/epoc32/rombuild/product/core/product_5230_rnd_core_master.oby" ref="//@result/@interfaces.0/@configurationElements.184"/>
+      <settings name="CORE_NAME" value="/epoc32/rombuild/product/core/product_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.185"/>
+      <settings name="CORE_NDPROMFILE" value="/epoc32/rombuild/romfiles.txt" ref="//@result/@interfaces.0/@configurationElements.186"/>
+      <settings name="CORE_OBY" value="/epoc32/rom/ncp.oby" ref="//@result/@interfaces.0/@configurationElements.187"/>
+      <settings name="CORE_ODPROMFILE" value="/epoc32/rombuild/odpromfiles.txt" ref="//@result/@interfaces.0/@configurationElements.188"/>
+      <settings name="CORE_OPT" value="-p -v -nosymbols   -D_IMAGE_TYPE_RND -D_EABI=ARMV5 -D_ASIC_VER_11  -Dproduct  -DLCD_SHELL" ref="//@result/@interfaces.0/@configurationElements.189"/>
+      <settings name="CORE_PLATFILE" value="/epoc32/rombuild/product/core/product_5230_rnd_core_platform.txt" ref="//@result/@interfaces.0/@configurationElements.190"/>
+      <settings name="CORE_PLATINFO" value="SymbianOSMajorVersion=9\nSymbianOSMinorVersion=4\n" ref="//@result/@interfaces.0/@configurationElements.191"/>
+      <settings name="CORE_PRODFILE" value="/epoc32/rombuild/product/core/product_5230_rnd_core_product.txt" ref="//@result/@interfaces.0/@configurationElements.192"/>
+      <settings name="CORE_ROFSFILE" value="/epoc32/rombuild/odpcoderofsfiles.txt" ref="//@result/@interfaces.0/@configurationElements.193"/>
+      <settings name="CORE_ROMVER" value="0.01(0)" ref="//@result/@interfaces.0/@configurationElements.194"/>
+      <settings name="CORE_SWVERFILE" value="/epoc32/rombuild/product/core/product_5230_rnd_core_sw.txt" ref="//@result/@interfaces.0/@configurationElements.195"/>
+      <settings name="CORE_SWVERINFO" value="V 52.2008.29.xx RND\n14-07-08\nRM-356\n(c) Nokia" ref="//@result/@interfaces.0/@configurationElements.196"/>
+      <settings name="CORE_TIME" value="14/07/2008" ref="//@result/@interfaces.0/@configurationElements.197"/>
+      <settings name="CORE_UDEBFILE" value="/epoc32/rombuild/mytraces.txt" ref="//@result/@interfaces.0/@configurationElements.198"/>
+      <settings name="CORE_VERIBY" value="/epoc32/rombuild/product/core/product_5230_rnd_core_version.iby" ref="//@result/@interfaces.0/@configurationElements.199"/>
+      <settings name="CORE_VERSION" value="V 52.2008.29.xx RND" ref="//@result/@interfaces.0/@configurationElements.200"/>
+      <settings name="COREPLAT_NAME" value="platform" ref="//@result/@interfaces.0/@configurationElements.201"/>
+      <settings name="CUSTVARIANT_DIR" ref="//@result/@interfaces.0/@configurationElements.202"/>
+      <settings name="DEFAULT_LANGUAGE" value="SC" ref="//@result/@interfaces.0/@configurationElements.203"/>
+      <settings name="FLASH_EXT" value=".fpsx" ref="//@result/@interfaces.0/@configurationElements.204"/>
+      <settings name="HWID" value="5230*" ref="//@result/@interfaces.0/@configurationElements.205"/>
+      <settings name="HWID_LIST" value="5230" ref="//@result/@interfaces.0/@configurationElements.206"/>
+      <settings name="KEEPTEMP" value="0" ref="//@result/@interfaces.0/@configurationElements.207"/>
+      <settings name="LABEL" ref="//@result/@interfaces.0/@configurationElements.208"/>
+      <settings name="LANGID" value="01" ref="//@result/@interfaces.0/@configurationElements.209"/>
+      <settings name="LANGUAGES" value="SC" ref="//@result/@interfaces.0/@configurationElements.210"/>
+      <settings name="NAME" value="product_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.211"/>
+      <settings name="OPERATOR_OBY" value="/epoc32/rombuild/product/rofs3/product_5230_rnd_rofs3_operator.oby" ref="//@result/@interfaces.0/@configurationElements.212"/>
+      <settings name="OPERATOR_OBYGEN" value="/epoc32/rombuild/product/rofs3/product_5230_rnd_rofs3_operator.oby | /epoc32/rom/include/operator | *.iby" ref="//@result/@interfaces.0/@configurationElements.213"/>
+      <settings name="PRODUCT_MODEL" value="N00" ref="//@result/@interfaces.0/@configurationElements.214"/>
+      <settings name="PRODUCT_NAME" value="product" ref="//@result/@interfaces.0/@configurationElements.215"/>
+      <settings name="PRODUCT_REVISION" value="01" ref="//@result/@interfaces.0/@configurationElements.216"/>
+      <settings name="RELEASEDIR" value="/flash_images/product" ref="//@result/@interfaces.0/@configurationElements.217"/>
+      <settings name="RELEASEFILES" value="/epoc32/rombuild/product/product_5230_rnd.fpsx /epoc32/rombuild/product/core/product_5230_rnd.rom.log /epoc32/rombuild/product/core/product_5230_rnd.rofs1.log /epoc32/rombuild/product/rofs2/product_5230_rnd.rofs2.log /epoc32/rombuild/product/rofs3/product_5230_rnd.rofs3.log" ref="//@result/@interfaces.0/@configurationElements.218"/>
+      <settings name="RELEASENAME" value="product_rnd_20080714082818_haismail" ref="//@result/@interfaces.0/@configurationElements.219"/>
+      <settings name="ROFS2_DIR" value="/epoc32/rombuild/product/rofs2" ref="//@result/@interfaces.0/@configurationElements.220"/>
+      <settings name="ROFS2_E2FNAME" value="/epoc32/rombuild/product/rofs2/elf2flash/product_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.221"/>
+      <settings name="ROFS2_FOOTER" ref="//@result/@interfaces.0/@configurationElements.222"/>
+      <settings name="ROFS2_FWIDFILE" value="/epoc32/rombuild/product/rofs2/product_5230_rnd_rofs2_fwid.txt" ref="//@result/@interfaces.0/@configurationElements.223"/>
+      <settings name="ROFS2_FWIDINFO" value="id=language\nversion=01\n" ref="//@result/@interfaces.0/@configurationElements.224"/>
+      <settings name="ROFS2_HEADER" value="#include &lt;data_caging_paths_for_iby.hrh> \n\n// TEMPORARY FIXES BEGIN\n // Enable faster variant creation, to be removed when iby header hierarchy is fixed\n #define __platform_OBY__  // Define platform.oby out\n #include &lt;Variant\Header.iby>\n #include &lt;header.iby>  // Symbian common definitions\n // TEMPORARY FIXES END\n" ref="//@result/@interfaces.0/@configurationElements.225"/>
+      <settings name="ROFS2_MSTOBY" value="/epoc32/rombuild/product/rofs2/product_5230_rnd_rofs2_master.oby" ref="//@result/@interfaces.0/@configurationElements.226"/>
+      <settings name="ROFS2_NAME" value="/epoc32/rombuild/product/rofs2/product_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.227"/>
+      <settings name="ROFS2_OBY" ref="//@result/@interfaces.0/@configurationElements.228"/>
+      <settings name="ROFS2_OPT" ref="//@result/@interfaces.0/@configurationElements.229"/>
+      <settings name="ROFS2_ROMVER" value="0.01(0)" ref="//@result/@interfaces.0/@configurationElements.230"/>
+      <settings name="ROFS2_TIME" value="14/07/2008" ref="//@result/@interfaces.0/@configurationElements.231"/>
+      <settings name="ROFS2_VERIBY" value="/epoc32/rombuild/product/rofs2/product_5230_rnd_rofs2_version.iby" ref="//@result/@interfaces.0/@configurationElements.232"/>
+      <settings name="ROFS3_CUSTFILE" value="/epoc32/rombuild/product/rofs3/product_5230_rnd_rofs3_customersw.txt" ref="//@result/@interfaces.0/@configurationElements.233"/>
+      <settings name="ROFS3_CUSTINFO" value="V 0.00.0\n14-07-08" ref="//@result/@interfaces.0/@configurationElements.234"/>
+      <settings name="ROFS3_DIR" value="/epoc32/rombuild/product/rofs3" ref="//@result/@interfaces.0/@configurationElements.235"/>
+      <settings name="ROFS3_E2FNAME" value="/epoc32/rombuild/product/rofs3/elf2flash/product_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.236"/>
+      <settings name="ROFS3_FOOTER" ref="//@result/@interfaces.0/@configurationElements.237"/>
+      <settings name="ROFS3_FWIDFILE" value="/epoc32/rombuild/product/rofs3/product_5230_rnd_rofs3_fwid.txt" ref="//@result/@interfaces.0/@configurationElements.238"/>
+      <settings name="ROFS3_FWIDINFO" value="id=customer\nversion=V 0.00.0 RND Customer\n" ref="//@result/@interfaces.0/@configurationElements.239"/>
+      <settings name="ROFS3_HEADER" value="#include &lt;data_caging_paths_for_iby.hrh> \n\n// TEMPORARY FIXES BEGIN\n // Enable faster variant creation, to be removed when iby header hierarchy is fixed\n #define __platform_OBY__  // Define platform.oby out\n #include &lt;Variant\Header.iby>\n #include &lt;header.iby>  // Symbian common definitions\n // TEMPORARY FIXES END\n" ref="//@result/@interfaces.0/@configurationElements.240"/>
+      <settings name="ROFS3_MSTOBY" value="/epoc32/rombuild/product/rofs3/product_5230_rnd_rofs3_master.oby" ref="//@result/@interfaces.0/@configurationElements.241"/>
+      <settings name="ROFS3_NAME" value="/epoc32/rombuild/product/rofs3/product_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.242"/>
+      <settings name="ROFS3_OBY" value="/epoc32/rombuild/product/rofs3/product_5230_rnd_rofs3_operator.oby" ref="//@result/@interfaces.0/@configurationElements.243"/>
+      <settings name="ROFS3_OPT" ref="//@result/@interfaces.0/@configurationElements.244"/>
+      <settings name="ROFS3_ROMVER" value="0.01(0)" ref="//@result/@interfaces.0/@configurationElements.245"/>
+      <settings name="ROFS3_TIME" value="14/07/2008" ref="//@result/@interfaces.0/@configurationElements.246"/>
+      <settings name="ROFS3_VERIBY" value="/epoc32/rombuild/product/rofs3/product_5230_rnd_rofs3_version.iby" ref="//@result/@interfaces.0/@configurationElements.247"/>
+      <settings name="SOS_VERSION" value="9.4" ref="//@result/@interfaces.0/@configurationElements.248"/>
+      <settings name="SWUPD_EXT" value=".swupd" ref="//@result/@interfaces.0/@configurationElements.249"/>
+      <settings name="TYPE" value="rnd" ref="//@result/@interfaces.0/@configurationElements.250"/>
+      <settings name="USE_OVERRIDE" value="0" ref="//@result/@interfaces.0/@configurationElements.251"/>
+      <settings name="USE_PAGING" value="code:123" ref="//@result/@interfaces.0/@configurationElements.252"/>
+      <settings name="USE_ROFS" value="1" ref="//@result/@interfaces.0/@configurationElements.253"/>
+      <settings name="USE_ROMFILE" value="1" ref="//@result/@interfaces.0/@configurationElements.254"/>
+      <settings name="USE_ROMSYMGEN" value="0" ref="//@result/@interfaces.0/@configurationElements.255"/>
+      <settings name="USE_UDEB" value="0" ref="//@result/@interfaces.0/@configurationElements.256"/>
+      <settings name="USE_VERGEN" value="0" ref="//@result/@interfaces.0/@configurationElements.257"/>
+    </configurations>
+    <configurations name="image_conf_product_ui.mk" filePath="\epoc32\rom\config\platform\product\image_conf_product_ui.mk" targetrefs="//@result/@targets.114 //@result/@targets.115 //@result/@targets.116 //@result/@targets.117 //@result/@targets.118 //@result/@targets.119 //@result/@targets.120 //@result/@targets.121 //@result/@targets.122 //@result/@targets.123 //@result/@targets.124 //@result/@targets.125 //@result/@targets.126 //@result/@targets.127 //@result/@targets.128 //@result/@targets.129 //@result/@targets.130 //@result/@targets.131 //@result/@targets.132 //@result/@targets.133 //@result/@targets.134 //@result/@targets.135 //@result/@targets.136 //@result/@targets.137 //@result/@targets.138 //@result/@targets.139 //@result/@targets.140 //@result/@targets.141 //@result/@targets.142 //@result/@targets.143 //@result/@targets.144 //@result/@targets.145 //@result/@targets.146 //@result/@targets.147 //@result/@targets.148 //@result/@targets.149 //@result/@targets.150 //@result/@targets.151">
+      <settings name="BLDROBY" ref="//@result/@interfaces.0/@configurationElements.258"/>
+      <settings name="BLDROM_OPT" value="-p -v -nosymbols -eoverride  -D_IMAGE_TYPE_RND" ref="//@result/@interfaces.0/@configurationElements.259"/>
+      <settings name="BLDROPT" ref="//@result/@interfaces.0/@configurationElements.260"/>
+      <settings name="CONFIGROOT" value="/epoc32/rom/config" ref="//@result/@interfaces.0/@configurationElements.261"/>
+      <settings name="CORE_CDPROMFILE" value="/epoc32/rombuild/odpcoderomfiles.txt" ref="//@result/@interfaces.0/@configurationElements.262"/>
+      <settings name="CORE_DIR" value="/epoc32/rombuild/product/core" ref="//@result/@interfaces.0/@configurationElements.263"/>
+      <settings name="CORE_E2FNAME" value="/epoc32/rombuild/product/core/elf2flash/product_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.264"/>
+      <settings name="CORE_FWIDFILE" value="/epoc32/rombuild/product/core/product_5230_rnd_core_fwid.txt" ref="//@result/@interfaces.0/@configurationElements.265"/>
+      <settings name="CORE_IMEISVFILE" value="/epoc32/rombuild/product/core/product_5230_rnd_core_imeisv.txt" ref="//@result/@interfaces.0/@configurationElements.266"/>
+      <settings name="CORE_IMEISVINFO" value="00" ref="//@result/@interfaces.0/@configurationElements.267"/>
+      <settings name="CORE_MODELFILE" value="/epoc32/rombuild/product/core/product_5230_rnd_core_model.txt" ref="//@result/@interfaces.0/@configurationElements.268"/>
+      <settings name="CORE_MODELINFO" value="S60" ref="//@result/@interfaces.0/@configurationElements.269"/>
+      <settings name="CORE_MSTOBY" value="/epoc32/rombuild/product/core/product_5230_rnd_core_master.oby" ref="//@result/@interfaces.0/@configurationElements.270"/>
+      <settings name="CORE_NAME" value="/epoc32/rombuild/product/core/product_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.271"/>
+      <settings name="CORE_NDPROMFILE" value="/epoc32/rombuild/romfiles.txt" ref="//@result/@interfaces.0/@configurationElements.272"/>
+      <settings name="CORE_OBY" value="/epoc32/rom/master.oby /epoc32/rom/ppd.oby /epoc32/rom/rnd.oby /epoc32/rom/override.oby /epoc32/rombuild/product/core/product_5230_rnd_core_collected.oby /epoc32/rom/include/symbianos.iby /epoc32/rom/variant/patchdata.iby" ref="//@result/@interfaces.0/@configurationElements.273"/>
+      <settings name="CORE_ODPROMFILE" value="/epoc32/rombuild/odpromfiles.txt" ref="//@result/@interfaces.0/@configurationElements.274"/>
+      <settings name="CORE_OPT" value="-p -v -nosymbols -eoverride  -D_IMAGE_TYPE_RND -D_EABI=ARMV5 -D_ASIC_VER_11 -DUSE_MULTIROFS -Dproduct  -es60ibymacros -DSECTION -DRND_CONTENT " ref="//@result/@interfaces.0/@configurationElements.275"/>
+      <settings name="CORE_PLATFILE" value="/epoc32/rombuild/product/core/product_5230_rnd_core_platform.txt" ref="//@result/@interfaces.0/@configurationElements.276"/>
+      <settings name="CORE_PLATINFO" value="SymbianOSMajorVersion=9\nSymbianOSMinorVersion=4\n" ref="//@result/@interfaces.0/@configurationElements.277"/>
+      <settings name="CORE_PRODFILE" value="/epoc32/rombuild/product/core/product_5230_rnd_core_product.txt" ref="//@result/@interfaces.0/@configurationElements.278"/>
+      <settings name="CORE_ROFSFILE" value="/epoc32/rombuild/odpcoderofsfiles.txt" ref="//@result/@interfaces.0/@configurationElements.279"/>
+      <settings name="CORE_ROMVER" value="0.01(0)" ref="//@result/@interfaces.0/@configurationElements.280"/>
+      <settings name="CORE_SWVERFILE" value="/epoc32/rombuild/product/core/product_5230_rnd_core_sw.txt" ref="//@result/@interfaces.0/@configurationElements.281"/>
+      <settings name="CORE_SWVERINFO" value="V 52.50.2008.24 RnD\n13-06-08\nRM-356\n(c)NMP" ref="//@result/@interfaces.0/@configurationElements.282"/>
+      <settings name="CORE_TIME" value="14/07/2008" ref="//@result/@interfaces.0/@configurationElements.283"/>
+      <settings name="CORE_UDEBFILE" value="/epoc32/rombuild/mytraces.txt" ref="//@result/@interfaces.0/@configurationElements.284"/>
+      <settings name="CORE_VERIBY" value="/epoc32/rombuild/product/core/product_5230_rnd_core_version.iby" ref="//@result/@interfaces.0/@configurationElements.285"/>
+      <settings name="CORE_VERSION" value="V 52.50.2008.24 RnD" ref="//@result/@interfaces.0/@configurationElements.286"/>
+      <settings name="COREPLAT_NAME" value="platform" ref="//@result/@interfaces.0/@configurationElements.287"/>
+      <settings name="CUSTVARIANT_DIR" ref="//@result/@interfaces.0/@configurationElements.288"/>
+      <settings name="DEFAULT_LANGUAGE" value="01" ref="//@result/@interfaces.0/@configurationElements.289"/>
+      <settings name="FLASH_EXT" value=".fpsx" ref="//@result/@interfaces.0/@configurationElements.290"/>
+      <settings name="HWID" value="5230*" ref="//@result/@interfaces.0/@configurationElements.291"/>
+      <settings name="HWID_LIST" value="5230" ref="//@result/@interfaces.0/@configurationElements.292"/>
+      <settings name="KEEPTEMP" value="0" ref="//@result/@interfaces.0/@configurationElements.293"/>
+      <settings name="LABEL" ref="//@result/@interfaces.0/@configurationElements.294"/>
+      <settings name="LANGID" value="01" ref="//@result/@interfaces.0/@configurationElements.295"/>
+      <settings name="LANGUAGES" value="01" ref="//@result/@interfaces.0/@configurationElements.296"/>
+      <settings name="NAME" value="product_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.297"/>
+      <settings name="OPERATOR_OBY" ref="//@result/@interfaces.0/@configurationElements.298"/>
+      <settings name="OPERATOR_OBYGEN" value=" | /epoc32/rom/include/operator | *.iby" ref="//@result/@interfaces.0/@configurationElements.299"/>
+      <settings name="PRODUCT_MODEL" value="N00" ref="//@result/@interfaces.0/@configurationElements.300"/>
+      <settings name="PRODUCT_NAME" value="product" ref="//@result/@interfaces.0/@configurationElements.301"/>
+      <settings name="PRODUCT_REVISION" value="01" ref="//@result/@interfaces.0/@configurationElements.302"/>
+      <settings name="RELEASEDIR" value="/flash_images/product" ref="//@result/@interfaces.0/@configurationElements.303"/>
+      <settings name="RELEASEFILES" value="/epoc32/rombuild/product/product_5230_rnd.fpsx /epoc32/rombuild/product/core/product_5230_rnd.rom.log /epoc32/rombuild/product/core/product_5230_rnd.rofs1.log /epoc32/rombuild/product/rofs2/product_5230_rnd.rofs2.log /epoc32/rombuild/product/rofs3/product_5230_rnd.rofs3.log" ref="//@result/@interfaces.0/@configurationElements.304"/>
+      <settings name="RELEASENAME" value="product_rnd_20080714082822_haismail" ref="//@result/@interfaces.0/@configurationElements.305"/>
+      <settings name="ROFS2_DIR" value="/epoc32/rombuild/product/rofs2" ref="//@result/@interfaces.0/@configurationElements.306"/>
+      <settings name="ROFS2_E2FNAME" value="/epoc32/rombuild/product/rofs2/elf2flash/product_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.307"/>
+      <settings name="ROFS2_FOOTER" ref="//@result/@interfaces.0/@configurationElements.308"/>
+      <settings name="ROFS2_FWIDFILE" value="/epoc32/rombuild/product/rofs2/product_5230_rnd_rofs2_fwid.txt" ref="//@result/@interfaces.0/@configurationElements.309"/>
+      <settings name="ROFS2_FWIDINFO" value="id=language\nversion=01\n" ref="//@result/@interfaces.0/@configurationElements.310"/>
+      <settings name="ROFS2_HEADER" value="#include &lt;data_caging_paths_for_iby.hrh> \n\n// TEMPORARY FIXES BEGIN\n // Enable faster variant creation, to be removed when iby header hierarchy is fixed\n #define __platform_OBY__  // Define platform.oby out\n #include &lt;Variant\Header.iby>\n #include &lt;header.iby>  // Symbian common definitions\n // TEMPORARY FIXES END\n" ref="//@result/@interfaces.0/@configurationElements.311"/>
+      <settings name="ROFS2_MSTOBY" value="/epoc32/rombuild/product/rofs2/product_5230_rnd_rofs2_master.oby" ref="//@result/@interfaces.0/@configurationElements.312"/>
+      <settings name="ROFS2_NAME" value="/epoc32/rombuild/product/rofs2/product_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.313"/>
+      <settings name="ROFS2_OBY" value="&lt;Variant.oby> &lt;ppd_variant.oby> &lt;ppd_locales.iby> /epoc32/rom/override.oby /epoc32/rombuild/product/rofs2/product_5230_rnd_rofs2_language_collected.oby /epoc32/rombuild/product/rofs2/product_5230_rnd_rofs2_customer_collected.oby" ref="//@result/@interfaces.0/@configurationElements.314"/>
+      <settings name="ROFS2_OPT" value="-p -v -nosymbols -eoverride  -D_IMAGE_TYPE_RND -D_EABI=ARMV5 -D_ASIC_VER_11 -DUSE_MULTIROFS -Dproduct  -es60ibymacros -elocalise -DRND_CONTENT" ref="//@result/@interfaces.0/@configurationElements.315"/>
+      <settings name="ROFS2_ROMVER" value="0.01(0)" ref="//@result/@interfaces.0/@configurationElements.316"/>
+      <settings name="ROFS2_TIME" value="14/07/2008" ref="//@result/@interfaces.0/@configurationElements.317"/>
+      <settings name="ROFS2_VERIBY" value="/epoc32/rombuild/product/rofs2/product_5230_rnd_rofs2_version.iby" ref="//@result/@interfaces.0/@configurationElements.318"/>
+      <settings name="ROFS3_CUSTFILE" value="/epoc32/rombuild/product/rofs3/product_5230_rnd_rofs3_customersw.txt" ref="//@result/@interfaces.0/@configurationElements.319"/>
+      <settings name="ROFS3_CUSTINFO" value="V 52.50.2008.24 RnD\n14-07-08" ref="//@result/@interfaces.0/@configurationElements.320"/>
+      <settings name="ROFS3_DIR" value="/epoc32/rombuild/product/rofs3" ref="//@result/@interfaces.0/@configurationElements.321"/>
+      <settings name="ROFS3_E2FNAME" value="/epoc32/rombuild/product/rofs3/elf2flash/product_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.322"/>
+      <settings name="ROFS3_FOOTER" ref="//@result/@interfaces.0/@configurationElements.323"/>
+      <settings name="ROFS3_FWIDFILE" value="/epoc32/rombuild/product/rofs3/product_5230_rnd_rofs3_fwid.txt" ref="//@result/@interfaces.0/@configurationElements.324"/>
+      <settings name="ROFS3_FWIDINFO" value="id=customer\nversion=V 52.50.2008.24 RnD RND Customer\n" ref="//@result/@interfaces.0/@configurationElements.325"/>
+      <settings name="ROFS3_HEADER" value="#include &lt;data_caging_paths_for_iby.hrh> \n\n// TEMPORARY FIXES BEGIN\n // Enable faster variant creation, to be removed when iby header hierarchy is fixed\n #define __platform_OBY__  // Define platform.oby out\n #include &lt;Variant\Header.iby>\n #include &lt;header.iby>  // Symbian common definitions\n // TEMPORARY FIXES END\n" ref="//@result/@interfaces.0/@configurationElements.326"/>
+      <settings name="ROFS3_MSTOBY" value="/epoc32/rombuild/product/rofs3/product_5230_rnd_rofs3_master.oby" ref="//@result/@interfaces.0/@configurationElements.327"/>
+      <settings name="ROFS3_NAME" value="/epoc32/rombuild/product/rofs3/product_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.328"/>
+      <settings name="ROFS3_OBY" value=" /epoc32/rombuild/product/rofs3/product_5230_rnd_rofs3_collected.oby" ref="//@result/@interfaces.0/@configurationElements.329"/>
+      <settings name="ROFS3_OPT" value="-p -v -nosymbols -eoverride  -D_IMAGE_TYPE_RND -D_EABI=ARMV5 -D_ASIC_VER_11 -DUSE_MULTIROFS -Dproduct  -es60ibymacros" ref="//@result/@interfaces.0/@configurationElements.330"/>
+      <settings name="ROFS3_ROMVER" value="0.01(0)" ref="//@result/@interfaces.0/@configurationElements.331"/>
+      <settings name="ROFS3_TIME" value="14/07/2008" ref="//@result/@interfaces.0/@configurationElements.332"/>
+      <settings name="ROFS3_VERIBY" value="/epoc32/rombuild/product/rofs3/product_5230_rnd_rofs3_version.iby" ref="//@result/@interfaces.0/@configurationElements.333"/>
+      <settings name="SOS_VERSION" value="9.4" ref="//@result/@interfaces.0/@configurationElements.334"/>
+      <settings name="SWUPD_EXT" value=".swupd" ref="//@result/@interfaces.0/@configurationElements.335"/>
+      <settings name="TYPE" value="rnd" ref="//@result/@interfaces.0/@configurationElements.336"/>
+      <settings name="USE_OVERRIDE" value="1" ref="//@result/@interfaces.0/@configurationElements.337"/>
+      <settings name="USE_PAGING" value="code:123" ref="//@result/@interfaces.0/@configurationElements.338"/>
+      <settings name="USE_ROFS" value="1,2,3" ref="//@result/@interfaces.0/@configurationElements.339"/>
+      <settings name="USE_ROMFILE" value="1" ref="//@result/@interfaces.0/@configurationElements.340"/>
+      <settings name="USE_ROMSYMGEN" value="0" ref="//@result/@interfaces.0/@configurationElements.341"/>
+      <settings name="USE_UDEB" value="1" ref="//@result/@interfaces.0/@configurationElements.342"/>
+      <settings name="USE_VERGEN" value="1" ref="//@result/@interfaces.0/@configurationElements.343"/>
+    </configurations>
+    <configurations name="image_conf_product.mk" filePath="\epoc32\rom\config\platform\product_oem\image_conf_product.mk" targetrefs="//@result/@targets.152 //@result/@targets.153 //@result/@targets.154 //@result/@targets.155 //@result/@targets.156 //@result/@targets.157 //@result/@targets.158 //@result/@targets.159 //@result/@targets.160 //@result/@targets.161 //@result/@targets.162 //@result/@targets.163 //@result/@targets.164 //@result/@targets.165 //@result/@targets.166 //@result/@targets.167 //@result/@targets.168 //@result/@targets.169 //@result/@targets.170 //@result/@targets.171 //@result/@targets.172 //@result/@targets.173 //@result/@targets.174 //@result/@targets.175 //@result/@targets.176 //@result/@targets.177 //@result/@targets.178 //@result/@targets.179 //@result/@targets.180 //@result/@targets.181 //@result/@targets.182 //@result/@targets.183 //@result/@targets.184 //@result/@targets.185 //@result/@targets.186 //@result/@targets.187 //@result/@targets.188 //@result/@targets.189">
+      <settings name="BLDROBY" ref="//@result/@interfaces.0/@configurationElements.344"/>
+      <settings name="BLDROM_OPT" value="-p -v -nosymbols   -D_IMAGE_TYPE_RND" ref="//@result/@interfaces.0/@configurationElements.345"/>
+      <settings name="BLDROPT" ref="//@result/@interfaces.0/@configurationElements.346"/>
+      <settings name="CONFIGROOT" value="/epoc32/rom/config" ref="//@result/@interfaces.0/@configurationElements.347"/>
+      <settings name="CORE_CDPROMFILE" value="/epoc32/rombuild/odpcoderomfiles.txt" ref="//@result/@interfaces.0/@configurationElements.348"/>
+      <settings name="CORE_DIR" value="/epoc32/rombuild/product/core" ref="//@result/@interfaces.0/@configurationElements.349"/>
+      <settings name="CORE_E2FNAME" value="/epoc32/rombuild/product/core/elf2flash/product_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.350"/>
+      <settings name="CORE_FWIDFILE" value="/epoc32/rombuild/product/core/product_5230_rnd_core_fwid.txt" ref="//@result/@interfaces.0/@configurationElements.351"/>
+      <settings name="CORE_IMEISVFILE" value="/epoc32/rombuild/product/core/product_5230_rnd_core_imeisv.txt" ref="//@result/@interfaces.0/@configurationElements.352"/>
+      <settings name="CORE_IMEISVINFO" value="00" ref="//@result/@interfaces.0/@configurationElements.353"/>
+      <settings name="CORE_MODELFILE" value="/epoc32/rombuild/product/core/product_5230_rnd_core_model.txt" ref="//@result/@interfaces.0/@configurationElements.354"/>
+      <settings name="CORE_MODELINFO" value="S60" ref="//@result/@interfaces.0/@configurationElements.355"/>
+      <settings name="CORE_MSTOBY" value="/epoc32/rombuild/product/core/product_5230_rnd_core_master.oby" ref="//@result/@interfaces.0/@configurationElements.356"/>
+      <settings name="CORE_NAME" value="/epoc32/rombuild/product/core/product_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.357"/>
+      <settings name="CORE_NDPROMFILE" value="/epoc32/rombuild/romfiles.txt" ref="//@result/@interfaces.0/@configurationElements.358"/>
+      <settings name="CORE_OBY" value="/epoc32/rom/ncp.oby" ref="//@result/@interfaces.0/@configurationElements.359"/>
+      <settings name="CORE_ODPROMFILE" value="/epoc32/rombuild/odpromfiles.txt" ref="//@result/@interfaces.0/@configurationElements.360"/>
+      <settings name="CORE_OPT" value="-p -v -nosymbols   -D_IMAGE_TYPE_RND -D_EABI=ARMV5 -D_ASIC_VER_11  -Dproduct  -DLCD_SHELL" ref="//@result/@interfaces.0/@configurationElements.361"/>
+      <settings name="CORE_PLATFILE" value="/epoc32/rombuild/product/core/product_5230_rnd_core_platform.txt" ref="//@result/@interfaces.0/@configurationElements.362"/>
+      <settings name="CORE_PLATINFO" value="SymbianOSMajorVersion=9\nSymbianOSMinorVersion=4\n" ref="//@result/@interfaces.0/@configurationElements.363"/>
+      <settings name="CORE_PRODFILE" value="/epoc32/rombuild/product/core/product_5230_rnd_core_product.txt" ref="//@result/@interfaces.0/@configurationElements.364"/>
+      <settings name="CORE_ROFSFILE" value="/epoc32/rombuild/odpcoderofsfiles.txt" ref="//@result/@interfaces.0/@configurationElements.365"/>
+      <settings name="CORE_ROMVER" value="0.01(0)" ref="//@result/@interfaces.0/@configurationElements.366"/>
+      <settings name="CORE_SWVERFILE" value="/epoc32/rombuild/product/core/product_5230_rnd_core_sw.txt" ref="//@result/@interfaces.0/@configurationElements.367"/>
+      <settings name="CORE_SWVERINFO" value="V 52.2008.29.xx RND\n14-07-08\nRM-356\n(c) Nokia" ref="//@result/@interfaces.0/@configurationElements.368"/>
+      <settings name="CORE_TIME" value="14/07/2008" ref="//@result/@interfaces.0/@configurationElements.369"/>
+      <settings name="CORE_UDEBFILE" value="/epoc32/rombuild/mytraces.txt" ref="//@result/@interfaces.0/@configurationElements.370"/>
+      <settings name="CORE_VERIBY" value="/epoc32/rombuild/product/core/product_5230_rnd_core_version.iby" ref="//@result/@interfaces.0/@configurationElements.371"/>
+      <settings name="CORE_VERSION" value="V 52.2008.29.xx RND" ref="//@result/@interfaces.0/@configurationElements.372"/>
+      <settings name="COREPLAT_NAME" value="platform" ref="//@result/@interfaces.0/@configurationElements.373"/>
+      <settings name="CUSTVARIANT_DIR" ref="//@result/@interfaces.0/@configurationElements.374"/>
+      <settings name="DEFAULT_LANGUAGE" value="SC" ref="//@result/@interfaces.0/@configurationElements.375"/>
+      <settings name="FLASH_EXT" value=".fpsx" ref="//@result/@interfaces.0/@configurationElements.376"/>
+      <settings name="HWID" value="5230*" ref="//@result/@interfaces.0/@configurationElements.377"/>
+      <settings name="HWID_LIST" value="5230" ref="//@result/@interfaces.0/@configurationElements.378"/>
+      <settings name="KEEPTEMP" value="0" ref="//@result/@interfaces.0/@configurationElements.379"/>
+      <settings name="LABEL" ref="//@result/@interfaces.0/@configurationElements.380"/>
+      <settings name="LANGID" value="01" ref="//@result/@interfaces.0/@configurationElements.381"/>
+      <settings name="LANGUAGES" value="SC" ref="//@result/@interfaces.0/@configurationElements.382"/>
+      <settings name="NAME" value="product_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.383"/>
+      <settings name="OPERATOR_OBY" value="/epoc32/rombuild/product/rofs3/product_5230_rnd_rofs3_operator.oby" ref="//@result/@interfaces.0/@configurationElements.384"/>
+      <settings name="OPERATOR_OBYGEN" value="/epoc32/rombuild/product/rofs3/product_5230_rnd_rofs3_operator.oby | /epoc32/rom/include/operator | *.iby" ref="//@result/@interfaces.0/@configurationElements.385"/>
+      <settings name="PRODUCT_MODEL" value="N00" ref="//@result/@interfaces.0/@configurationElements.386"/>
+      <settings name="PRODUCT_NAME" value="product" ref="//@result/@interfaces.0/@configurationElements.387"/>
+      <settings name="PRODUCT_REVISION" value="01" ref="//@result/@interfaces.0/@configurationElements.388"/>
+      <settings name="RELEASEDIR" value="/flash_images/product" ref="//@result/@interfaces.0/@configurationElements.389"/>
+      <settings name="RELEASEFILES" value="/epoc32/rombuild/product/product_5230_rnd.fpsx /epoc32/rombuild/product/core/product_5230_rnd.rom.log /epoc32/rombuild/product/core/product_5230_rnd.rofs1.log /epoc32/rombuild/product/rofs2/product_5230_rnd.rofs2.log /epoc32/rombuild/product/rofs3/product_5230_rnd.rofs3.log" ref="//@result/@interfaces.0/@configurationElements.390"/>
+      <settings name="RELEASENAME" value="product_rnd_20080714082826_haismail" ref="//@result/@interfaces.0/@configurationElements.391"/>
+      <settings name="ROFS2_DIR" value="/epoc32/rombuild/product/rofs2" ref="//@result/@interfaces.0/@configurationElements.392"/>
+      <settings name="ROFS2_E2FNAME" value="/epoc32/rombuild/product/rofs2/elf2flash/product_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.393"/>
+      <settings name="ROFS2_FOOTER" ref="//@result/@interfaces.0/@configurationElements.394"/>
+      <settings name="ROFS2_FWIDFILE" value="/epoc32/rombuild/product/rofs2/product_5230_rnd_rofs2_fwid.txt" ref="//@result/@interfaces.0/@configurationElements.395"/>
+      <settings name="ROFS2_FWIDINFO" value="id=language\nversion=01\n" ref="//@result/@interfaces.0/@configurationElements.396"/>
+      <settings name="ROFS2_HEADER" value="#include &lt;data_caging_paths_for_iby.hrh> \n\n// TEMPORARY FIXES BEGIN\n // Enable faster variant creation, to be removed when iby header hierarchy is fixed\n #define __platform_OBY__  // Define platform.oby out\n #include &lt;Variant\Header.iby>\n #include &lt;header.iby>  // Symbian common definitions\n // TEMPORARY FIXES END\n" ref="//@result/@interfaces.0/@configurationElements.397"/>
+      <settings name="ROFS2_MSTOBY" value="/epoc32/rombuild/product/rofs2/product_5230_rnd_rofs2_master.oby" ref="//@result/@interfaces.0/@configurationElements.398"/>
+      <settings name="ROFS2_NAME" value="/epoc32/rombuild/product/rofs2/product_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.399"/>
+      <settings name="ROFS2_OBY" ref="//@result/@interfaces.0/@configurationElements.400"/>
+      <settings name="ROFS2_OPT" ref="//@result/@interfaces.0/@configurationElements.401"/>
+      <settings name="ROFS2_ROMVER" value="0.01(0)" ref="//@result/@interfaces.0/@configurationElements.402"/>
+      <settings name="ROFS2_TIME" value="14/07/2008" ref="//@result/@interfaces.0/@configurationElements.403"/>
+      <settings name="ROFS2_VERIBY" value="/epoc32/rombuild/product/rofs2/product_5230_rnd_rofs2_version.iby" ref="//@result/@interfaces.0/@configurationElements.404"/>
+      <settings name="ROFS3_CUSTFILE" value="/epoc32/rombuild/product/rofs3/product_5230_rnd_rofs3_customersw.txt" ref="//@result/@interfaces.0/@configurationElements.405"/>
+      <settings name="ROFS3_CUSTINFO" value="V 0.00.0\n14-07-08" ref="//@result/@interfaces.0/@configurationElements.406"/>
+      <settings name="ROFS3_DIR" value="/epoc32/rombuild/product/rofs3" ref="//@result/@interfaces.0/@configurationElements.407"/>
+      <settings name="ROFS3_E2FNAME" value="/epoc32/rombuild/product/rofs3/elf2flash/product_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.408"/>
+      <settings name="ROFS3_FOOTER" ref="//@result/@interfaces.0/@configurationElements.409"/>
+      <settings name="ROFS3_FWIDFILE" value="/epoc32/rombuild/product/rofs3/product_5230_rnd_rofs3_fwid.txt" ref="//@result/@interfaces.0/@configurationElements.410"/>
+      <settings name="ROFS3_FWIDINFO" value="id=customer\nversion=V 0.00.0 RND Customer\n" ref="//@result/@interfaces.0/@configurationElements.411"/>
+      <settings name="ROFS3_HEADER" value="#include &lt;data_caging_paths_for_iby.hrh> \n\n// TEMPORARY FIXES BEGIN\n // Enable faster variant creation, to be removed when iby header hierarchy is fixed\n #define __platform_OBY__  // Define platform.oby out\n #include &lt;Variant\Header.iby>\n #include &lt;header.iby>  // Symbian common definitions\n // TEMPORARY FIXES END\n" ref="//@result/@interfaces.0/@configurationElements.412"/>
+      <settings name="ROFS3_MSTOBY" value="/epoc32/rombuild/product/rofs3/product_5230_rnd_rofs3_master.oby" ref="//@result/@interfaces.0/@configurationElements.413"/>
+      <settings name="ROFS3_NAME" value="/epoc32/rombuild/product/rofs3/product_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.414"/>
+      <settings name="ROFS3_OBY" value="/epoc32/rombuild/product/rofs3/product_5230_rnd_rofs3_operator.oby" ref="//@result/@interfaces.0/@configurationElements.415"/>
+      <settings name="ROFS3_OPT" ref="//@result/@interfaces.0/@configurationElements.416"/>
+      <settings name="ROFS3_ROMVER" value="0.01(0)" ref="//@result/@interfaces.0/@configurationElements.417"/>
+      <settings name="ROFS3_TIME" value="14/07/2008" ref="//@result/@interfaces.0/@configurationElements.418"/>
+      <settings name="ROFS3_VERIBY" value="/epoc32/rombuild/product/rofs3/product_5230_rnd_rofs3_version.iby" ref="//@result/@interfaces.0/@configurationElements.419"/>
+      <settings name="SOS_VERSION" value="9.4" ref="//@result/@interfaces.0/@configurationElements.420"/>
+      <settings name="SWUPD_EXT" value=".swupd" ref="//@result/@interfaces.0/@configurationElements.421"/>
+      <settings name="TYPE" value="rnd" ref="//@result/@interfaces.0/@configurationElements.422"/>
+      <settings name="USE_OVERRIDE" value="0" ref="//@result/@interfaces.0/@configurationElements.423"/>
+      <settings name="USE_PAGING" value="code:123" ref="//@result/@interfaces.0/@configurationElements.424"/>
+      <settings name="USE_ROFS" value="1" ref="//@result/@interfaces.0/@configurationElements.425"/>
+      <settings name="USE_ROMFILE" value="1" ref="//@result/@interfaces.0/@configurationElements.426"/>
+      <settings name="USE_ROMSYMGEN" value="0" ref="//@result/@interfaces.0/@configurationElements.427"/>
+      <settings name="USE_UDEB" value="0" ref="//@result/@interfaces.0/@configurationElements.428"/>
+      <settings name="USE_VERGEN" value="0" ref="//@result/@interfaces.0/@configurationElements.429"/>
+    </configurations>
+    <configurations name="image_conf_product_oem_ui.mk" filePath="\epoc32\rom\config\platform\product_oem\image_conf_product_oem_ui.mk" targetrefs="//@result/@targets.190 //@result/@targets.191 //@result/@targets.192 //@result/@targets.193 //@result/@targets.194 //@result/@targets.195 //@result/@targets.196 //@result/@targets.197 //@result/@targets.198 //@result/@targets.199 //@result/@targets.200 //@result/@targets.201 //@result/@targets.202 //@result/@targets.203 //@result/@targets.204 //@result/@targets.205 //@result/@targets.206 //@result/@targets.207 //@result/@targets.208 //@result/@targets.209 //@result/@targets.210 //@result/@targets.211 //@result/@targets.212 //@result/@targets.213 //@result/@targets.214 //@result/@targets.215 //@result/@targets.216 //@result/@targets.217 //@result/@targets.218 //@result/@targets.219 //@result/@targets.220 //@result/@targets.221 //@result/@targets.222 //@result/@targets.223 //@result/@targets.224 //@result/@targets.225 //@result/@targets.226 //@result/@targets.227">
+      <settings name="BLDROBY" ref="//@result/@interfaces.0/@configurationElements.430"/>
+      <settings name="BLDROM_OPT" value="-p -v -nosymbols -eoverride  -D_IMAGE_TYPE_RND" ref="//@result/@interfaces.0/@configurationElements.431"/>
+      <settings name="BLDROPT" ref="//@result/@interfaces.0/@configurationElements.432"/>
+      <settings name="CONFIGROOT" value="/epoc32/rom/config" ref="//@result/@interfaces.0/@configurationElements.433"/>
+      <settings name="CORE_CDPROMFILE" value="/epoc32/rombuild/odpcoderomfiles.txt" ref="//@result/@interfaces.0/@configurationElements.434"/>
+      <settings name="CORE_DIR" value="/epoc32/rombuild/product/core" ref="//@result/@interfaces.0/@configurationElements.435"/>
+      <settings name="CORE_E2FNAME" value="/epoc32/rombuild/product/core/elf2flash/product_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.436"/>
+      <settings name="CORE_FWIDFILE" value="/epoc32/rombuild/product/core/product_5230_rnd_core_fwid.txt" ref="//@result/@interfaces.0/@configurationElements.437"/>
+      <settings name="CORE_IMEISVFILE" value="/epoc32/rombuild/product/core/product_5230_rnd_core_imeisv.txt" ref="//@result/@interfaces.0/@configurationElements.438"/>
+      <settings name="CORE_IMEISVINFO" value="00" ref="//@result/@interfaces.0/@configurationElements.439"/>
+      <settings name="CORE_MODELFILE" value="/epoc32/rombuild/product/core/product_5230_rnd_core_model.txt" ref="//@result/@interfaces.0/@configurationElements.440"/>
+      <settings name="CORE_MODELINFO" value="S60" ref="//@result/@interfaces.0/@configurationElements.441"/>
+      <settings name="CORE_MSTOBY" value="/epoc32/rombuild/product/core/product_5230_rnd_core_master.oby" ref="//@result/@interfaces.0/@configurationElements.442"/>
+      <settings name="CORE_NAME" value="/epoc32/rombuild/product/core/product_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.443"/>
+      <settings name="CORE_NDPROMFILE" value="/epoc32/rombuild/romfiles.txt" ref="//@result/@interfaces.0/@configurationElements.444"/>
+      <settings name="CORE_OBY" value="/epoc32/rom/master.oby /epoc32/rom/ppd.oby /epoc32/rom/rnd.oby /epoc32/rom/override.oby /epoc32/rombuild/product/core/product_5230_rnd_core_collected.oby /epoc32/rom/include/symbianos.iby /epoc32/rom/variant/patchdata.iby" ref="//@result/@interfaces.0/@configurationElements.445"/>
+      <settings name="CORE_ODPROMFILE" value="/epoc32/rombuild/odpromfiles.txt" ref="//@result/@interfaces.0/@configurationElements.446"/>
+      <settings name="CORE_OPT" value="-p -v -nosymbols -eoverride  -D_IMAGE_TYPE_RND -D_EABI=ARMV5 -D_ASIC_VER_11 -DUSE_MULTIROFS -Dproduct  -es60ibymacros -DSECTION -DRND_CONTENT " ref="//@result/@interfaces.0/@configurationElements.447"/>
+      <settings name="CORE_PLATFILE" value="/epoc32/rombuild/product/core/product_5230_rnd_core_platform.txt" ref="//@result/@interfaces.0/@configurationElements.448"/>
+      <settings name="CORE_PLATINFO" value="SymbianOSMajorVersion=9\nSymbianOSMinorVersion=4\n" ref="//@result/@interfaces.0/@configurationElements.449"/>
+      <settings name="CORE_PRODFILE" value="/epoc32/rombuild/product/core/product_5230_rnd_core_product.txt" ref="//@result/@interfaces.0/@configurationElements.450"/>
+      <settings name="CORE_ROFSFILE" value="/epoc32/rombuild/odpcoderofsfiles.txt" ref="//@result/@interfaces.0/@configurationElements.451"/>
+      <settings name="CORE_ROMVER" value="0.01(0)" ref="//@result/@interfaces.0/@configurationElements.452"/>
+      <settings name="CORE_SWVERFILE" value="/epoc32/rombuild/product/core/product_5230_rnd_core_sw.txt" ref="//@result/@interfaces.0/@configurationElements.453"/>
+      <settings name="CORE_SWVERINFO" value="V 52.50.2008.24 RnD\n13-06-08\nRM-356\n(c)NMP" ref="//@result/@interfaces.0/@configurationElements.454"/>
+      <settings name="CORE_TIME" value="14/07/2008" ref="//@result/@interfaces.0/@configurationElements.455"/>
+      <settings name="CORE_UDEBFILE" value="/epoc32/rombuild/mytraces.txt" ref="//@result/@interfaces.0/@configurationElements.456"/>
+      <settings name="CORE_VERIBY" value="/epoc32/rombuild/product/core/product_5230_rnd_core_version.iby" ref="//@result/@interfaces.0/@configurationElements.457"/>
+      <settings name="CORE_VERSION" value="V 52.50.2008.24 RnD" ref="//@result/@interfaces.0/@configurationElements.458"/>
+      <settings name="COREPLAT_NAME" value="platform" ref="//@result/@interfaces.0/@configurationElements.459"/>
+      <settings name="CUSTVARIANT_DIR" ref="//@result/@interfaces.0/@configurationElements.460"/>
+      <settings name="DEFAULT_LANGUAGE" value="01" ref="//@result/@interfaces.0/@configurationElements.461"/>
+      <settings name="FLASH_EXT" value=".fpsx" ref="//@result/@interfaces.0/@configurationElements.462"/>
+      <settings name="HWID" value="5230*" ref="//@result/@interfaces.0/@configurationElements.463"/>
+      <settings name="HWID_LIST" value="5230" ref="//@result/@interfaces.0/@configurationElements.464"/>
+      <settings name="KEEPTEMP" value="0" ref="//@result/@interfaces.0/@configurationElements.465"/>
+      <settings name="LABEL" ref="//@result/@interfaces.0/@configurationElements.466"/>
+      <settings name="LANGID" value="01" ref="//@result/@interfaces.0/@configurationElements.467"/>
+      <settings name="LANGUAGES" value="01" ref="//@result/@interfaces.0/@configurationElements.468"/>
+      <settings name="NAME" value="product_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.469"/>
+      <settings name="OPERATOR_OBY" ref="//@result/@interfaces.0/@configurationElements.470"/>
+      <settings name="OPERATOR_OBYGEN" value=" | /epoc32/rom/include/operator | *.iby" ref="//@result/@interfaces.0/@configurationElements.471"/>
+      <settings name="PRODUCT_MODEL" value="N00" ref="//@result/@interfaces.0/@configurationElements.472"/>
+      <settings name="PRODUCT_NAME" value="product" ref="//@result/@interfaces.0/@configurationElements.473"/>
+      <settings name="PRODUCT_REVISION" value="01" ref="//@result/@interfaces.0/@configurationElements.474"/>
+      <settings name="RELEASEDIR" value="/flash_images/product" ref="//@result/@interfaces.0/@configurationElements.475"/>
+      <settings name="RELEASEFILES" value="/epoc32/rombuild/product/product_5230_rnd.fpsx /epoc32/rombuild/product/core/product_5230_rnd.rom.log /epoc32/rombuild/product/core/product_5230_rnd.rofs1.log /epoc32/rombuild/product/rofs2/product_5230_rnd.rofs2.log /epoc32/rombuild/product/rofs3/product_5230_rnd.rofs3.log" ref="//@result/@interfaces.0/@configurationElements.476"/>
+      <settings name="RELEASENAME" value="product_rnd_20080714082829_haismail" ref="//@result/@interfaces.0/@configurationElements.477"/>
+      <settings name="ROFS2_DIR" value="/epoc32/rombuild/product/rofs2" ref="//@result/@interfaces.0/@configurationElements.478"/>
+      <settings name="ROFS2_E2FNAME" value="/epoc32/rombuild/product/rofs2/elf2flash/product_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.479"/>
+      <settings name="ROFS2_FOOTER" ref="//@result/@interfaces.0/@configurationElements.480"/>
+      <settings name="ROFS2_FWIDFILE" value="/epoc32/rombuild/product/rofs2/product_5230_rnd_rofs2_fwid.txt" ref="//@result/@interfaces.0/@configurationElements.481"/>
+      <settings name="ROFS2_FWIDINFO" value="id=language\nversion=01\n" ref="//@result/@interfaces.0/@configurationElements.482"/>
+      <settings name="ROFS2_HEADER" value="#include &lt;data_caging_paths_for_iby.hrh> \n\n// TEMPORARY FIXES BEGIN\n // Enable faster variant creation, to be removed when iby header hierarchy is fixed\n #define __platform_OBY__  // Define platform.oby out\n #include &lt;Variant\Header.iby>\n #include &lt;header.iby>  // Symbian common definitions\n // TEMPORARY FIXES END\n" ref="//@result/@interfaces.0/@configurationElements.483"/>
+      <settings name="ROFS2_MSTOBY" value="/epoc32/rombuild/product/rofs2/product_5230_rnd_rofs2_master.oby" ref="//@result/@interfaces.0/@configurationElements.484"/>
+      <settings name="ROFS2_NAME" value="/epoc32/rombuild/product/rofs2/product_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.485"/>
+      <settings name="ROFS2_OBY" value="&lt;Variant.oby> &lt;ppd_variant.oby> &lt;ppd_locales.iby> /epoc32/rom/override.oby /epoc32/rombuild/product/rofs2/product_5230_rnd_rofs2_language_collected.oby /epoc32/rombuild/product/rofs2/product_5230_rnd_rofs2_customer_collected.oby" ref="//@result/@interfaces.0/@configurationElements.486"/>
+      <settings name="ROFS2_OPT" value="-p -v -nosymbols -eoverride  -D_IMAGE_TYPE_RND -D_EABI=ARMV5 -D_ASIC_VER_11 -DUSE_MULTIROFS -Dproduct  -es60ibymacros -elocalise -DRND_CONTENT" ref="//@result/@interfaces.0/@configurationElements.487"/>
+      <settings name="ROFS2_ROMVER" value="0.01(0)" ref="//@result/@interfaces.0/@configurationElements.488"/>
+      <settings name="ROFS2_TIME" value="14/07/2008" ref="//@result/@interfaces.0/@configurationElements.489"/>
+      <settings name="ROFS2_VERIBY" value="/epoc32/rombuild/product/rofs2/product_5230_rnd_rofs2_version.iby" ref="//@result/@interfaces.0/@configurationElements.490"/>
+      <settings name="ROFS3_CUSTFILE" value="/epoc32/rombuild/product/rofs3/product_5230_rnd_rofs3_customersw.txt" ref="//@result/@interfaces.0/@configurationElements.491"/>
+      <settings name="ROFS3_CUSTINFO" value="V 52.50.2008.24 RnD\n14-07-08" ref="//@result/@interfaces.0/@configurationElements.492"/>
+      <settings name="ROFS3_DIR" value="/epoc32/rombuild/product/rofs3" ref="//@result/@interfaces.0/@configurationElements.493"/>
+      <settings name="ROFS3_E2FNAME" value="/epoc32/rombuild/product/rofs3/elf2flash/product_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.494"/>
+      <settings name="ROFS3_FOOTER" ref="//@result/@interfaces.0/@configurationElements.495"/>
+      <settings name="ROFS3_FWIDFILE" value="/epoc32/rombuild/product/rofs3/product_5230_rnd_rofs3_fwid.txt" ref="//@result/@interfaces.0/@configurationElements.496"/>
+      <settings name="ROFS3_FWIDINFO" value="id=customer\nversion=V 52.50.2008.24 RnD RND Customer\n" ref="//@result/@interfaces.0/@configurationElements.497"/>
+      <settings name="ROFS3_HEADER" value="#include &lt;data_caging_paths_for_iby.hrh> \n\n// TEMPORARY FIXES BEGIN\n // Enable faster variant creation, to be removed when iby header hierarchy is fixed\n #define __platform_OBY__  // Define platform.oby out\n #include &lt;Variant\Header.iby>\n #include &lt;header.iby>  // Symbian common definitions\n // TEMPORARY FIXES END\n" ref="//@result/@interfaces.0/@configurationElements.498"/>
+      <settings name="ROFS3_MSTOBY" value="/epoc32/rombuild/product/rofs3/product_5230_rnd_rofs3_master.oby" ref="//@result/@interfaces.0/@configurationElements.499"/>
+      <settings name="ROFS3_NAME" value="/epoc32/rombuild/product/rofs3/product_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.500"/>
+      <settings name="ROFS3_OBY" value=" /epoc32/rombuild/product/rofs3/product_5230_rnd_rofs3_collected.oby" ref="//@result/@interfaces.0/@configurationElements.501"/>
+      <settings name="ROFS3_OPT" value="-p -v -nosymbols -eoverride  -D_IMAGE_TYPE_RND -D_EABI=ARMV5 -D_ASIC_VER_11 -DUSE_MULTIROFS -Dproduct  -es60ibymacros" ref="//@result/@interfaces.0/@configurationElements.502"/>
+      <settings name="ROFS3_ROMVER" value="0.01(0)" ref="//@result/@interfaces.0/@configurationElements.503"/>
+      <settings name="ROFS3_TIME" value="14/07/2008" ref="//@result/@interfaces.0/@configurationElements.504"/>
+      <settings name="ROFS3_VERIBY" value="/epoc32/rombuild/product/rofs3/product_5230_rnd_rofs3_version.iby" ref="//@result/@interfaces.0/@configurationElements.505"/>
+      <settings name="SOS_VERSION" value="9.4" ref="//@result/@interfaces.0/@configurationElements.506"/>
+      <settings name="SWUPD_EXT" value=".swupd" ref="//@result/@interfaces.0/@configurationElements.507"/>
+      <settings name="TYPE" value="rnd" ref="//@result/@interfaces.0/@configurationElements.508"/>
+      <settings name="USE_OVERRIDE" value="1" ref="//@result/@interfaces.0/@configurationElements.509"/>
+      <settings name="USE_PAGING" value="code:123" ref="//@result/@interfaces.0/@configurationElements.510"/>
+      <settings name="USE_ROFS" value="1,2,3" ref="//@result/@interfaces.0/@configurationElements.511"/>
+      <settings name="USE_ROMFILE" value="1" ref="//@result/@interfaces.0/@configurationElements.512"/>
+      <settings name="USE_ROMSYMGEN" value="0" ref="//@result/@interfaces.0/@configurationElements.513"/>
+      <settings name="USE_UDEB" value="1" ref="//@result/@interfaces.0/@configurationElements.514"/>
+      <settings name="USE_VERGEN" value="1" ref="//@result/@interfaces.0/@configurationElements.515"/>
+    </configurations>
+    <targets name="all" description="Create all image sections and symbol files."/>
+    <targets name="clean" description="Clean all target files."/>
+    <targets name="core" description="Create the core image (ROM,ROFS1)"/>
+    <targets name="core-image" description="Create the core image files (rom.img, rofs1.img)"/>
+    <targets name="custrofs2" description="Create an image from a variant with rofs2. Be sure to define the CUSTVARIANT_DIR."/>
+    <targets name="custuda" description="Create an image from a variant userdata folder. Be sure to define the CUSTVARIANT_DIR."/>
+    <targets name="custvariant" description="Create an image from a customer variant folder. Be sure to define the CUSTVARIANT_DIR."/>
+    <targets name="e2flash" description="Create the elf2flash (flash) file."/>
+    <targets name="f2image" description="Revert the Symbian image file (.img) from the elf2flash (flash) file.(See CORE_FLASH,ROFS2_FLASH,ROFS3_FLASH)"/>
+    <targets name="flash" description="Create all image sections files. Not any symbol files."/>
+    <targets name="flash-all" description="Create all image sections and symbol files."/>
+    <targets name="help" description="Print help on help targets."/>
+    <targets name="help-%" description="Print help on help items matching the pattern."/>
+    <targets name="help-%-list" description="Print a list of help items matching the pattern."/>
+    <targets name="help-config" description="Print a list of available configurations in the current working environment."/>
+    <targets name="help-target" description="Print help on all targets (same as help-target-*)."/>
+    <targets name="help-target-%" description="Print help on targets matching the pattern."/>
+    <targets name="help-target-%-list" description="Print a list of targets matching the pattern."/>
+    <targets name="help-target-%-wiki" description="Print wiki-formatted help on targets matching the pattern."/>
+    <targets name="help-variable" description="Print help on all variables (same as help-variable-*)."/>
+    <targets name="help-variable-%" description="Print help on variables matching the pattern."/>
+    <targets name="help-variable-%-all" description="Print full help on variables matching the pattern."/>
+    <targets name="help-variable-%-list" description="Print a list of variables matching the pattern."/>
+    <targets name="help-variable-%-value" description="Print a list of variables with values matching the pattern."/>
+    <targets name="help-variable-%-wiki" description="Print wiki-formatted help on variables matching the pattern."/>
+    <targets name="image" description="Create only the image file(s) (*.img)"/>
+    <targets name="print-*" description="Print the value of the given variable to the screen."/>
+    <targets name="release" description="Run the RELEASE step, that copies the created image files to the release folder. (See RELEASENAME,RELEASEDIR,RELEASEFILES)"/>
+    <targets name="rofs2" description="Create the rofs2 image"/>
+    <targets name="rofs2-image" description="Create the rofs2 image file (rofs2.img)"/>
+    <targets name="rofs3" description="Create the rofs3 image"/>
+    <targets name="rofs3-image" description="Create the rofs3 image file (rofs3.img)"/>
+    <targets name="romsymbol" description="Create the rom symbol file"/>
+    <targets name="step-*" description="Generic target to execute any step inside the iMaker configuration. Any step (e.g. BUILD_*,CLEAN_*) can be executed with step-STEPNAME. Example: step-ROFS2PRE executes the CLEAN_ROFS2PRE and BUILD_ROFS2PRE commands."/>
+    <targets name="toolinfo" description="Print info about the tool"/>
+    <targets name="uda-image" description="Create the User Data area (uda) flash file."/>
+    <targets name="variant" description="Create the variant image (rofs2,rofs3)"/>
+    <targets name="variant-image" description="Create the variant image files (rofs3.img,rofs3.img)"/>
+    <targets name="all" description="Create all image sections and symbol files."/>
+    <targets name="clean" description="Clean all target files."/>
+    <targets name="core" description="Create the core image (ROM,ROFS1)"/>
+    <targets name="core-image" description="Create the core image files (rom.img, rofs1.img)"/>
+    <targets name="custrofs2" description="Create an image from a variant with rofs2. Be sure to define the CUSTVARIANT_DIR."/>
+    <targets name="custuda" description="Create an image from a variant userdata folder. Be sure to define the CUSTVARIANT_DIR."/>
+    <targets name="custvariant" description="Create an image from a customer variant folder. Be sure to define the CUSTVARIANT_DIR."/>
+    <targets name="e2flash" description="Create the elf2flash (flash) file."/>
+    <targets name="f2image" description="Revert the Symbian image file (.img) from the elf2flash (flash) file.(See CORE_FLASH,ROFS2_FLASH,ROFS3_FLASH)"/>
+    <targets name="flash" description="Create all image sections files. Not any symbol files."/>
+    <targets name="flash-all" description="Create all image sections and symbol files."/>
+    <targets name="help" description="Print help on help targets."/>
+    <targets name="help-%" description="Print help on help items matching the pattern."/>
+    <targets name="help-%-list" description="Print a list of help items matching the pattern."/>
+    <targets name="help-config" description="Print a list of available configurations in the current working environment."/>
+    <targets name="help-target" description="Print help on all targets (same as help-target-*)."/>
+    <targets name="help-target-%" description="Print help on targets matching the pattern."/>
+    <targets name="help-target-%-list" description="Print a list of targets matching the pattern."/>
+    <targets name="help-target-%-wiki" description="Print wiki-formatted help on targets matching the pattern."/>
+    <targets name="help-variable" description="Print help on all variables (same as help-variable-*)."/>
+    <targets name="help-variable-%" description="Print help on variables matching the pattern."/>
+    <targets name="help-variable-%-all" description="Print full help on variables matching the pattern."/>
+    <targets name="help-variable-%-list" description="Print a list of variables matching the pattern."/>
+    <targets name="help-variable-%-value" description="Print a list of variables with values matching the pattern."/>
+    <targets name="help-variable-%-wiki" description="Print wiki-formatted help on variables matching the pattern."/>
+    <targets name="image" description="Create only the image file(s) (*.img)"/>
+    <targets name="print-*" description="Print the value of the given variable to the screen."/>
+    <targets name="release" description="Run the RELEASE step, that copies the created image files to the release folder. (See RELEASENAME,RELEASEDIR,RELEASEFILES)"/>
+    <targets name="rofs2" description="Create the rofs2 image"/>
+    <targets name="rofs2-image" description="Create the rofs2 image file (rofs2.img)"/>
+    <targets name="rofs3" description="Create the rofs3 image"/>
+    <targets name="rofs3-image" description="Create the rofs3 image file (rofs3.img)"/>
+    <targets name="romsymbol" description="Create the rom symbol file"/>
+    <targets name="step-*" description="Generic target to execute any step inside the iMaker configuration. Any step (e.g. BUILD_*,CLEAN_*) can be executed with step-STEPNAME. Example: step-ROFS2PRE executes the CLEAN_ROFS2PRE and BUILD_ROFS2PRE commands."/>
+    <targets name="toolinfo" description="Print info about the tool"/>
+    <targets name="uda-image" description="Create the User Data area (uda) flash file."/>
+    <targets name="variant" description="Create the variant image (rofs2,rofs3)"/>
+    <targets name="variant-image" description="Create the variant image files (rofs3.img,rofs3.img)"/>
+    <targets name="all" description="Create all image sections and symbol files."/>
+    <targets name="clean" description="Clean all target files."/>
+    <targets name="core" description="Create the core image (ROM,ROFS1)"/>
+    <targets name="core-image" description="Create the core image files (rom.img, rofs1.img)"/>
+    <targets name="custrofs2" description="Create an image from a variant with rofs2. Be sure to define the CUSTVARIANT_DIR."/>
+    <targets name="custuda" description="Create an image from a variant userdata folder. Be sure to define the CUSTVARIANT_DIR."/>
+    <targets name="custvariant" description="Create an image from a customer variant folder. Be sure to define the CUSTVARIANT_DIR."/>
+    <targets name="e2flash" description="Create the elf2flash (flash) file."/>
+    <targets name="f2image" description="Revert the Symbian image file (.img) from the elf2flash (flash) file.(See CORE_FLASH,ROFS2_FLASH,ROFS3_FLASH)"/>
+    <targets name="flash" description="Create all image sections files. Not any symbol files."/>
+    <targets name="flash-all" description="Create all image sections and symbol files."/>
+    <targets name="help" description="Print help on help targets."/>
+    <targets name="help-%" description="Print help on help items matching the pattern."/>
+    <targets name="help-%-list" description="Print a list of help items matching the pattern."/>
+    <targets name="help-config" description="Print a list of available configurations in the current working environment."/>
+    <targets name="help-target" description="Print help on all targets (same as help-target-*)."/>
+    <targets name="help-target-%" description="Print help on targets matching the pattern."/>
+    <targets name="help-target-%-list" description="Print a list of targets matching the pattern."/>
+    <targets name="help-target-%-wiki" description="Print wiki-formatted help on targets matching the pattern."/>
+    <targets name="help-variable" description="Print help on all variables (same as help-variable-*)."/>
+    <targets name="help-variable-%" description="Print help on variables matching the pattern."/>
+    <targets name="help-variable-%-all" description="Print full help on variables matching the pattern."/>
+    <targets name="help-variable-%-list" description="Print a list of variables matching the pattern."/>
+    <targets name="help-variable-%-value" description="Print a list of variables with values matching the pattern."/>
+    <targets name="help-variable-%-wiki" description="Print wiki-formatted help on variables matching the pattern."/>
+    <targets name="image" description="Create only the image file(s) (*.img)"/>
+    <targets name="print-*" description="Print the value of the given variable to the screen."/>
+    <targets name="release" description="Run the RELEASE step, that copies the created image files to the release folder. (See RELEASENAME,RELEASEDIR,RELEASEFILES)"/>
+    <targets name="rofs2" description="Create the rofs2 image"/>
+    <targets name="rofs2-image" description="Create the rofs2 image file (rofs2.img)"/>
+    <targets name="rofs3" description="Create the rofs3 image"/>
+    <targets name="rofs3-image" description="Create the rofs3 image file (rofs3.img)"/>
+    <targets name="romsymbol" description="Create the rom symbol file"/>
+    <targets name="step-*" description="Generic target to execute any step inside the iMaker configuration. Any step (e.g. BUILD_*,CLEAN_*) can be executed with step-STEPNAME. Example: step-ROFS2PRE executes the CLEAN_ROFS2PRE and BUILD_ROFS2PRE commands."/>
+    <targets name="toolinfo" description="Print info about the tool"/>
+    <targets name="uda-image" description="Create the User Data area (uda) flash file."/>
+    <targets name="variant" description="Create the variant image (rofs2,rofs3)"/>
+    <targets name="variant-image" description="Create the variant image files (rofs3.img,rofs3.img)"/>
+    <targets name="all" description="Create all image sections and symbol files."/>
+    <targets name="clean" description="Clean all target files."/>
+    <targets name="core" description="Create the core image (ROM,ROFS1)"/>
+    <targets name="core-image" description="Create the core image files (rom.img, rofs1.img)"/>
+    <targets name="custrofs2" description="Create an image from a variant with rofs2. Be sure to define the CUSTVARIANT_DIR."/>
+    <targets name="custuda" description="Create an image from a variant userdata folder. Be sure to define the CUSTVARIANT_DIR."/>
+    <targets name="custvariant" description="Create an image from a customer variant folder. Be sure to define the CUSTVARIANT_DIR."/>
+    <targets name="e2flash" description="Create the elf2flash (flash) file."/>
+    <targets name="f2image" description="Revert the Symbian image file (.img) from the elf2flash (flash) file.(See CORE_FLASH,ROFS2_FLASH,ROFS3_FLASH)"/>
+    <targets name="flash" description="Create all image sections files. Not any symbol files."/>
+    <targets name="flash-all" description="Create all image sections and symbol files."/>
+    <targets name="help" description="Print help on help targets."/>
+    <targets name="help-%" description="Print help on help items matching the pattern."/>
+    <targets name="help-%-list" description="Print a list of help items matching the pattern."/>
+    <targets name="help-config" description="Print a list of available configurations in the current working environment."/>
+    <targets name="help-target" description="Print help on all targets (same as help-target-*)."/>
+    <targets name="help-target-%" description="Print help on targets matching the pattern."/>
+    <targets name="help-target-%-list" description="Print a list of targets matching the pattern."/>
+    <targets name="help-target-%-wiki" description="Print wiki-formatted help on targets matching the pattern."/>
+    <targets name="help-variable" description="Print help on all variables (same as help-variable-*)."/>
+    <targets name="help-variable-%" description="Print help on variables matching the pattern."/>
+    <targets name="help-variable-%-all" description="Print full help on variables matching the pattern."/>
+    <targets name="help-variable-%-list" description="Print a list of variables matching the pattern."/>
+    <targets name="help-variable-%-value" description="Print a list of variables with values matching the pattern."/>
+    <targets name="help-variable-%-wiki" description="Print wiki-formatted help on variables matching the pattern."/>
+    <targets name="image" description="Create only the image file(s) (*.img)"/>
+    <targets name="print-*" description="Print the value of the given variable to the screen."/>
+    <targets name="release" description="Run the RELEASE step, that copies the created image files to the release folder. (See RELEASENAME,RELEASEDIR,RELEASEFILES)"/>
+    <targets name="rofs2" description="Create the rofs2 image"/>
+    <targets name="rofs2-image" description="Create the rofs2 image file (rofs2.img)"/>
+    <targets name="rofs3" description="Create the rofs3 image"/>
+    <targets name="rofs3-image" description="Create the rofs3 image file (rofs3.img)"/>
+    <targets name="romsymbol" description="Create the rom symbol file"/>
+    <targets name="step-*" description="Generic target to execute any step inside the iMaker configuration. Any step (e.g. BUILD_*,CLEAN_*) can be executed with step-STEPNAME. Example: step-ROFS2PRE executes the CLEAN_ROFS2PRE and BUILD_ROFS2PRE commands."/>
+    <targets name="toolinfo" description="Print info about the tool"/>
+    <targets name="uda-image" description="Create the User Data area (uda) flash file."/>
+    <targets name="variant" description="Create the variant image (rofs2,rofs3)"/>
+    <targets name="variant-image" description="Create the variant image files (rofs3.img,rofs3.img)"/>
+    <targets name="all" description="Create all image sections and symbol files."/>
+    <targets name="clean" description="Clean all target files."/>
+    <targets name="core" description="Create the core image (ROM,ROFS1)"/>
+    <targets name="core-image" description="Create the core image files (rom.img, rofs1.img)"/>
+    <targets name="custrofs2" description="Create an image from a variant with rofs2. Be sure to define the CUSTVARIANT_DIR."/>
+    <targets name="custuda" description="Create an image from a variant userdata folder. Be sure to define the CUSTVARIANT_DIR."/>
+    <targets name="custvariant" description="Create an image from a customer variant folder. Be sure to define the CUSTVARIANT_DIR."/>
+    <targets name="e2flash" description="Create the elf2flash (flash) file."/>
+    <targets name="f2image" description="Revert the Symbian image file (.img) from the elf2flash (flash) file.(See CORE_FLASH,ROFS2_FLASH,ROFS3_FLASH)"/>
+    <targets name="flash" description="Create all image sections files. Not any symbol files."/>
+    <targets name="flash-all" description="Create all image sections and symbol files."/>
+    <targets name="help" description="Print help on help targets."/>
+    <targets name="help-%" description="Print help on help items matching the pattern."/>
+    <targets name="help-%-list" description="Print a list of help items matching the pattern."/>
+    <targets name="help-config" description="Print a list of available configurations in the current working environment."/>
+    <targets name="help-target" description="Print help on all targets (same as help-target-*)."/>
+    <targets name="help-target-%" description="Print help on targets matching the pattern."/>
+    <targets name="help-target-%-list" description="Print a list of targets matching the pattern."/>
+    <targets name="help-target-%-wiki" description="Print wiki-formatted help on targets matching the pattern."/>
+    <targets name="help-variable" description="Print help on all variables (same as help-variable-*)."/>
+    <targets name="help-variable-%" description="Print help on variables matching the pattern."/>
+    <targets name="help-variable-%-all" description="Print full help on variables matching the pattern."/>
+    <targets name="help-variable-%-list" description="Print a list of variables matching the pattern."/>
+    <targets name="help-variable-%-value" description="Print a list of variables with values matching the pattern."/>
+    <targets name="help-variable-%-wiki" description="Print wiki-formatted help on variables matching the pattern."/>
+    <targets name="image" description="Create only the image file(s) (*.img)"/>
+    <targets name="print-*" description="Print the value of the given variable to the screen."/>
+    <targets name="release" description="Run the RELEASE step, that copies the created image files to the release folder. (See RELEASENAME,RELEASEDIR,RELEASEFILES)"/>
+    <targets name="rofs2" description="Create the rofs2 image"/>
+    <targets name="rofs2-image" description="Create the rofs2 image file (rofs2.img)"/>
+    <targets name="rofs3" description="Create the rofs3 image"/>
+    <targets name="rofs3-image" description="Create the rofs3 image file (rofs3.img)"/>
+    <targets name="romsymbol" description="Create the rom symbol file"/>
+    <targets name="step-*" description="Generic target to execute any step inside the iMaker configuration. Any step (e.g. BUILD_*,CLEAN_*) can be executed with step-STEPNAME. Example: step-ROFS2PRE executes the CLEAN_ROFS2PRE and BUILD_ROFS2PRE commands."/>
+    <targets name="toolinfo" description="Print info about the tool"/>
+    <targets name="uda-image" description="Create the User Data area (uda) flash file."/>
+    <targets name="variant" description="Create the variant image (rofs2,rofs3)"/>
+    <targets name="variant-image" description="Create the variant image files (rofs3.img,rofs3.img)"/>
+    <targets name="all" description="Create all image sections and symbol files."/>
+    <targets name="clean" description="Clean all target files."/>
+    <targets name="core" description="Create the core image (ROM,ROFS1)"/>
+    <targets name="core-image" description="Create the core image files (rom.img, rofs1.img)"/>
+    <targets name="custrofs2" description="Create an image from a variant with rofs2. Be sure to define the CUSTVARIANT_DIR."/>
+    <targets name="custuda" description="Create an image from a variant userdata folder. Be sure to define the CUSTVARIANT_DIR."/>
+    <targets name="custvariant" description="Create an image from a customer variant folder. Be sure to define the CUSTVARIANT_DIR."/>
+    <targets name="e2flash" description="Create the elf2flash (flash) file."/>
+    <targets name="f2image" description="Revert the Symbian image file (.img) from the elf2flash (flash) file.(See CORE_FLASH,ROFS2_FLASH,ROFS3_FLASH)"/>
+    <targets name="flash" description="Create all image sections files. Not any symbol files."/>
+    <targets name="flash-all" description="Create all image sections and symbol files."/>
+    <targets name="help" description="Print help on help targets."/>
+    <targets name="help-%" description="Print help on help items matching the pattern."/>
+    <targets name="help-%-list" description="Print a list of help items matching the pattern."/>
+    <targets name="help-config" description="Print a list of available configurations in the current working environment."/>
+    <targets name="help-target" description="Print help on all targets (same as help-target-*)."/>
+    <targets name="help-target-%" description="Print help on targets matching the pattern."/>
+    <targets name="help-target-%-list" description="Print a list of targets matching the pattern."/>
+    <targets name="help-target-%-wiki" description="Print wiki-formatted help on targets matching the pattern."/>
+    <targets name="help-variable" description="Print help on all variables (same as help-variable-*)."/>
+    <targets name="help-variable-%" description="Print help on variables matching the pattern."/>
+    <targets name="help-variable-%-all" description="Print full help on variables matching the pattern."/>
+    <targets name="help-variable-%-list" description="Print a list of variables matching the pattern."/>
+    <targets name="help-variable-%-value" description="Print a list of variables with values matching the pattern."/>
+    <targets name="help-variable-%-wiki" description="Print wiki-formatted help on variables matching the pattern."/>
+    <targets name="image" description="Create only the image file(s) (*.img)"/>
+    <targets name="print-*" description="Print the value of the given variable to the screen."/>
+    <targets name="release" description="Run the RELEASE step, that copies the created image files to the release folder. (See RELEASENAME,RELEASEDIR,RELEASEFILES)"/>
+    <targets name="rofs2" description="Create the rofs2 image"/>
+    <targets name="rofs2-image" description="Create the rofs2 image file (rofs2.img)"/>
+    <targets name="rofs3" description="Create the rofs3 image"/>
+    <targets name="rofs3-image" description="Create the rofs3 image file (rofs3.img)"/>
+    <targets name="romsymbol" description="Create the rom symbol file"/>
+    <targets name="step-*" description="Generic target to execute any step inside the iMaker configuration. Any step (e.g. BUILD_*,CLEAN_*) can be executed with step-STEPNAME. Example: step-ROFS2PRE executes the CLEAN_ROFS2PRE and BUILD_ROFS2PRE commands."/>
+    <targets name="toolinfo" description="Print info about the tool"/>
+    <targets name="uda-image" description="Create the User Data area (uda) flash file."/>
+    <targets name="variant" description="Create the variant image (rofs2,rofs3)"/>
+    <targets name="variant-image" description="Create the variant image files (rofs3.img,rofs3.img)"/>
+  </result>
+</IMaker>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/ivy.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : ivy.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:
+
+============================================================================
+-->
+<ivy-module version="1.0">
+
+    <info organisation="S60_SAM"
+          module="helium"
+          revision="2.32"
+          status="integration"
+          publication="">
+        <license name="Nokia" url="http://www.my.org/mymodule/mylicense.html"/>
+        <ivyauthor name="Helium team" url="http://helium.nmp.company.com"/>
+        <repository name="Helium" url="http://www.jayasoft.fr/org/ivyrep/" pattern="[organisation]/[module]/ivy-[revision].xml" ivys="true" artifacts="false"/>
+        <description homepage="http://www.my.org/mymodule/">
+        </description>
+    </info>
+
+    <configurations>
+        <conf name="core" description="Core Helium tools."/>
+        <conf name="subcon" extends="core" description="Helium libraries for SF and Nokia."/>
+        <conf name="core_install" extends="subcon" description="Core Helium libraries."/>
+    </configurations>
+    
+    <publications/>
+    
+    <dependencies defaultconfmapping="core->default;subcon->default;core_install->default;ido_install->default;sf_install->default">
+        <!-- Core dependencies -->
+        <dependency org="SWEPT" name="ant" rev="1.7" conf="core"/>
+        
+        <!-- These dependencies are not in Ibiblio Maven2 so they need to be referenced explicitly by url -->
+        <dependency org="python" name="eggs_subcon" rev="1.0" conf="subcon"/>
+
+        <!-- License: Apache 2.0 -->
+        <dependency org="commons-collections" name="commons-collections" rev="3.2" transitive="false" conf="subcon"/>
+    </dependencies>
+</ivy-module>
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/log2xml_failure.log	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,4929 @@
+Starting build: 839
+mkdir \epoc32\rombuild\imaker_temp
+=== config_1 == configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_core
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... core
+++ Started at Thu Nov 13 14:11:27 2008
++++ HiRes Start 1226578287.10578
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=rnd"  core  WORKDIR=\epoc32\rombuild\imaker_temp/conf_0
+iMaker 08.43.01, 20-Oct-2008.
+Generating file(s) for Core image creation
+Creating Core (ROM & ROFS1) SOS image
+
+Y:\output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd>rem @echo off 
+
+Y:\output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd>setlocal
+
+Y:\output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd>perl -S buildrom.pl -loglevel1 -v -nosymbols -DFEATUREVARIANT=devlon52 -D_IMAGE_TYPE_RND -D_EABI=ARMV5 -D_ASIC_VER_11 -DUSE_MULTIROFS -DDEVLON52 -es60ibymacros -DSECTION -DRND_CONTENT -cbytepair -oRX-47_200846_rnd.img y:\output/release_flash_images/devlon52/rnd/core/RX-47_200846_rnd/RX-47_200846_rnd_core_master.oby 
+* cpp -o tmp1.oby -nostdinc -undef -DFEATUREVARIANT=devlon52 -D_IMAGE_TYPE_RND -D_EABI=ARMV5 -D_ASIC_VER_11 -DUSE_MULTIROFS -DDEVLON52 -DSECTION -DRND_CONTENT -I. -I "Y:\epoc32\rom\config\platform\devlon52" -I "Y:\epoc32\include\config\platform\devlon52" -I "Y:\epoc32\rom\config\platform" -I "Y:\epoc32\include\config\platform" -I "Y:\epoc32\rom\config" -I "Y:\epoc32\include\config" -I "Y:\epoc32\rom" -I "Y:\epoc32\rom\include" -I "Y:\epoc32\include\oem" -include "Y:\epoc32\include\oem\feature_settings.hrh"
+In file included from Y:\epoc32\include\config\platform\adaptation_features.hrh:25,
+                 from Y:\epoc32\include\oem\feature_settings.hrh:43,
+                 from :1:
+Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
+*Initialization*:1: warning: this is the location of the previous definition
+In file included from Y:\epoc32\rom\config\platform\ncp_components.iby:124,
+                 from Y:\epoc32\rom\config\platform\Variant\BasePorting.iby:26,
+                 from ../../../../../../epoc32/rom/master.oby:34,
+                 from y:output/release_flash_images/devlon52/rnd/core/RX-47_200846_rnd/RX-47_200846_rnd_core_master.oby:50:
+Y:\epoc32\rom\include\H4PlusHci.iby:4: warning: `#ifndef' argument starts with punctuation
+* reading y:\output/release_flash_images/devlon52/rnd/core/RX-47_200846_rnd/RX-47_200846_rnd_core_master.oby
+override.pm: Initializing; logfile =`y:\output/release_flash_images/devlon52/rnd/core/RX-47_200846_rnd/RX-47_200846_rnd_core_bldromplugin.log', debug = 0
+configpaging.pm: Initializing with configpaging_nokia.cfg
+Using export-restricted strong crytography implementation
+ROM_IMAGE[1] rofs1 size=0x10000000 xip=0 compress=0 extension=0 composite=none uncompress=0 
+* Writing tmp2.oby - result of substitution phase
+* Writing tmp3.oby - result of reorganisation phase
+* Writing tmp4.oby - result of Plugin stage
+* No language codes specified, defaulting to 01
+Converting >\epoc32\data\Z\Resource\Charconv\BUILTIN.R01< to RSC
+Converting >\epoc32\data\Z\Resource\swtlstokentype.R01< to RSC
+Converting >\epoc32\data\Z\Resource\TlsCacheServer\TlsCacheTimeouts.R01< to RSC
+Converting >\epoc32\data\Z\Resource\logeng\logwrap.R01< to RSC
+Converting >\epoc32\data\Z\Resource\Charconv\ISO88592.R01< to RSC
+Converting >\epoc32\data\Z\Resource\Charconv\ISO88593.R01< to RSC
+Converting >\epoc32\data\Z\Resource\Charconv\ISO88594.R01< to RSC
+Converting >\epoc32\data\Z\Resource\Charconv\ISO88595.R01< to RSC
+Converting >\epoc32\data\Z\Resource\Charconv\ISO88596.R01< to RSC
+Converting >\epoc32\data\Z\Resource\Charconv\ISO88597.R01< to RSC
+Converting >\epoc32\data\Z\Resource\Charconv\ISO88598.R01< to RSC
+Converting >\epoc32\data\Z\Resource\Charconv\ISO88599.R01< to RSC
+Converting >\epoc32\data\Z\Resource\Charconv\ISO885910.R01< to RSC
+Converting >\epoc32\data\Z\Resource\Charconv\ISO885913.R01< to RSC
+Converting >\epoc32\data\Z\Resource\Charconv\ISO885914.R01< to RSC
+Converting >\epoc32\data\Z\Resource\Charconv\ISO885915.R01< to RSC
+Converting >\epoc32\data\Z\Resource\Charconv\CP850.R01< to RSC
+Converting >\epoc32\data\Z\Resource\Charconv\UCS2.R01< to RSC
+Converting >\epoc32\data\Z\Resource\APPS\ApfMimeContentPolicy.R01< to RSC
+Converting >\epoc32\data\Z\resource\messaging\smss.R01< to RSC
+Converting >\epoc32\data\Z\resource\messaging\wappstr.R01< to RSC
+Converting >\epoc32\data\Z\RESOURCE\messaging\wappushunknown.R01< to RSC
+Converting >\epoc32\data\Z\Resource\fstokenserver.R01< to RSC
+Converting >\epoc32\data\Z\resource\defaultbeep.R01< to RSC
+Converting >\epoc32\data\Z\Resource\JavaHelper\JavaHelper.R01< to RSC
+Converting >\epoc32\data\Z\resource\Apps\trkapplication.R01< to RSC
+Converting >\epoc32\data\Z\resource\Apps\trkapplication_loc.R01< to RSC
+Converting >\epoc32\data\Z\private\10003a3f\Apps\trkapplication_reg.R01< to RSC
+Converting >\epoc32\data\Z\resource\Apps\trkapplication.M01< to MIF
+* Writing tmp5.oby - result of choosing language-specific files
+* Invalid image file name: \epoc32\data\Z\resource\apps\VideoEditorBitmaps.mbm or .mif
+Created ecom-0-0.spi
+Created ecom-0-1.s01
+* Writing tmp6.oby - result of SPI stage
+override.pm: ------------------------------------------------------------------
+Handling overrides...
+Replace ROM_IMAGE[0] `file=\epoc32\release\ARMV5\urel\FeatMgr.DLL		sys\bin\FEATMGR.DLL' with `file=\epoc32\release\ARMV5\urel\FeatMgr.Devlon52.DLL  sys\bin\FEATMGR.DLL'
+Replace ROM_IMAGE[0] `data=\epoc32\release\ARMV5\urel\R1_Mobile_4_0_Platform.cfg   resource\R1_Mobile_4_0_Platform.cfg' with `data=\epoc32\release\ARMV5\urel\R1_Mobile_4_0_Platform_ppd.cfg  resource\R1_Mobile_4_0_Platform.cfg'
+Replace ROM_IMAGE[0] `data=\Epoc32\Data\WSINI.ini                 System\Data\Wsini.ini' with `data=\Epoc32\Data\WSINI_devlon52.ini  System\Data\Wsini.ini'
+Replace ROM_IMAGE[0] `data=\epoc32\data\Z\Resource\versions\sw.txt		resource\versions\sw.txt' with `data=\epoc32\data\Z\Resource\versions\sw_devlon52.txt  resource\versions\sw.txt'
+Replace ROM_IMAGE[0] `data=\epoc32\data\Z\resource\Starter_Arm.rsc                resource\Starter_Arm.rsc' with `data=\epoc32\data\Z\resource\Starter_Arm_Devlon52_wop_wopc_wat_ww_wss.rsc  resource\Starter_Arm.rsc'
+Replace ROM_IMAGE[0] `data=\epoc32\data\Z\resource\starter_non_critical_1_arm.rsc resource\starter_non_critical_1.rsc' with `data=\epoc32\data\Z\resource\Starter_non_critical_1_arm_Devlon52_wop_wopc_wat_ww_wss.rsc  resource\starter_non_critical_1.rsc'
+Replace ROM_IMAGE[0] `data=\epoc32\data\Z\Resource\versions\sw_devlon52.txt  resource\versions\sw.txt' with `data=y:\output/release_flash_images/devlon52/rnd/core/RX-47_200846_rnd/RX-47_200846_rnd_core_sw.txt  resource\versions\sw.txt'
+Replace ROM_IMAGE[0] `data=\epoc32\data\Z\Resource\versions\model.txt	resource\versions\model.txt' with `data=y:\output/release_flash_images/devlon52/rnd/core/RX-47_200846_rnd/RX-47_200846_rnd_core_model.txt  resource\versions\model.txt'
+Replace ROM_IMAGE[0] `data=\epoc32\data\Z\Resource\versions\imeisv.txt	resource\versions\imeisv.txt' with `data=y:\output/release_flash_images/devlon52/rnd/core/RX-47_200846_rnd/RX-47_200846_rnd_core_imeisv.txt  resource\versions\imeisv.txt'
+Add ROM_IMAGE[0] `data=y:\output/release_flash_images/devlon52/rnd/core/RX-47_200846_rnd/RX-47_200846_rnd_core_platform.txt  resource\versions\platform.txt' from `data-override=y:\output/release_flash_images/devlon52/rnd/core/RX-47_200846_rnd/RX-47_200846_rnd_core_platform.txt  resource\versions\platform.txt'
+Add ROM_IMAGE[0] `data=y:\output/release_flash_images/devlon52/rnd/core/RX-47_200846_rnd/RX-47_200846_rnd_core_product.txt  resource\versions\product.txt' from `data-override=y:\output/release_flash_images/devlon52/rnd/core/RX-47_200846_rnd/RX-47_200846_rnd_core_product.txt  resource\versions\product.txt'
+Add ROM_IMAGE[0] `data=y:\output/release_flash_images/devlon52/rnd/core/RX-47_200846_rnd/RX-47_200846_rnd_core_fwid.txt  resource\versions\fwid1.txt' from `data-override=y:\output/release_flash_images/devlon52/rnd/core/RX-47_200846_rnd/RX-47_200846_rnd_core_fwid.txt  resource\versions\fwid1.txt'
+Replace ROM_IMAGE[0] `data=\epoc32\data\ost_dictionaries.zip                                             \Data\ost_dictionaries.zip' with `data=y:\output/release_flash_images/devlon52/rnd/core/RX-47_200846_rnd/ost_dictionaries.zip  \Data\ost_dictionaries.zip'
+override.pm: Duration: 1 seconds ----------------------------------------------
+obyparse.pm: Reading /epoc32/rombuild/odpcoderomfiles.txt
+obyparse.pm: Reading /epoc32/rombuild/odp_code_romfiles.txt
+obyparse.pm: Reading /epoc32/rombuild/odpcoderofsfiles.txt
+obyparse.pm: Reading /epoc32/rombuild/IAD_rofsfiles.txt
+obyparse.pm: Reading /epoc32/rombuild/mytraces.txt
+obyparse.pm: Processing...
+obyparse.pm: Duration: 0 seconds
+configpaging.pm: Modifying demand paging configuration using \epoc32\rom\configpaging\configpaging_nokia.cfg
+Y:\epoc32\rom\include\lightsacoreservices.iby(72): Missing file: '\epoc32\release\ARMV5\urel\LightSAIscService.DLL' in statement 'file='
+Y:\epoc32\rom\include\lightadaptation.iby(110): Missing file: '\epoc32\release\ARMV5\urel\light_sensor_adaptation.DLL' in statement 'file='
+..\..\..\..\..\..\epoc32\rom\include\core\app\IpVideo.iby(112): Missing file: '\epoc32\release\ARMV5\urel\vcxnsappui_test.exe' in statement 'file='
+..\..\..\..\..\..\epoc32\rom\include\core\app\IpVideo.iby(392): Missing file: '\epoc32\release\ARMV5\urel\VcXNotifierPlugin.DLL' in statement 'file='
+..\..\..\..\..\..\epoc32\rom\include\core\mw\advancedtspcontroller.iby(48): Missing file: '\epoc32\release\ARMV5\urel\AdvancedTspController.dll' in statement 'file='
+Y:\epoc32\rom\include\declarativeui.iby(9): Missing file: '\epoc32\release\ARMV5\urel\duiengine.dll' in statement 'file='
+Y:\epoc32\rom\include\declarativeui.iby(11): Missing file: '\epoc32\release\ARMV5\urel\duiinterpreter.dll' in statement 'file='
+Y:\epoc32\rom\include\widgetmodel.iby(9): Missing file: '\epoc32\release\ARMV5\urel\alfwidgetmodel.dll' in statement 'file='
+..\..\..\..\..\..\epoc32\rom\include\core\mw\alfwidgets.iby(19): Missing file: '\epoc32\release\ARMV5\urel\alfcontainerwidget.dll' in statement 'file='
+..\..\..\..\..\..\epoc32\rom\include\core\mw\alfwidgets.iby(23): Missing file: '\epoc32\release\ARMV5\urel\alfviewwidget.dll' in statement 'file='
+Y:\epoc32\rom\include\j9midpS60.iby(233): Missing file: '\epoc32\release\ARMV5\urel\j9_23_sip.dll' in statement 'file='
+..\..\..\..\..\..\epoc32\rom\include\core\mw\midp20.iby(224): Missing file: '\epoc32\release\ARMV5\urel\MIDP2RECOGNIZER.dll' in statement 'file='
+..\..\..\..\..\..\epoc32\rom\include\core\mw\mulcoverflowwidget.iby(46): Missing file: '\epoc32\release\ARMV5\urel\mulcoverflowwidget.dll' in statement 'file='
+..\..\..\..\..\..\epoc32\rom\include\core\mw\mullistwidget.iby(46): Missing file: '\epoc32\release\ARMV5\urel\mullistwidget.dll' in statement 'file='
+..\..\..\..\..\..\epoc32\rom\include\core\mw\mulutility.iby(46): Missing file: '\epoc32\release\armv5\urel\mulutility.dll' in statement 'file='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(250): Missing file: '\epoc32\data\Z\resource\ActivePalette2Bitmaps.mbm' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(251): Missing file: '\epoc32\data\Z\resource\activepalette2genericicons.mif' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(294): Missing file: '\epoc32\data\Z\system\sounds\audiothemes\public\Orchestral fold open.aac' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(295): Missing file: '\epoc32\data\Z\system\sounds\audiothemes\public\Orchestral fold close.aac' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(335): Missing file: '\epoc32\data\Z\Private\101f85a0\acccircle.png' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(336): Missing file: '\epoc32\data\Z\Private\101f85a0\bigtrip.png' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(337): Missing file: '\epoc32\data\Z\Private\101f85a0\compass.png' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(338): Missing file: '\epoc32\data\Z\Private\101f85a0\flag.png' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(339): Missing file: '\epoc32\data\Z\Private\101f85a0\flagwave.gif' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(340): Missing file: '\epoc32\data\Z\Private\101f85a0\globe.gif' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(341): Missing file: '\epoc32\data\Z\Private\101f85a0\north.png' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(342): Missing file: '\epoc32\data\Z\Private\101f85a0\pointer.png' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(343): Missing file: '\epoc32\data\Z\Private\101f85a0\satellite.png' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(344): Missing file: '\epoc32\data\Z\Private\101f85a0\signal_01.png' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(345): Missing file: '\epoc32\data\Z\Private\101f85a0\signal_02.png' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(346): Missing file: '\epoc32\data\Z\Private\101f85a0\signal_03.png' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(347): Missing file: '\epoc32\data\Z\Private\101f85a0\signal_04.png' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(348): Missing file: '\epoc32\data\Z\Private\101f85a0\signal_05.png' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(349): Missing file: '\epoc32\data\Z\Private\101f85a0\spwatch.png' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(350): Missing file: '\epoc32\data\Z\Private\101f85a0\table.png' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(351): Missing file: '\epoc32\data\Z\Private\101f85a0\time.png' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(352): Missing file: '\epoc32\data\Z\Private\101f85a0\navigation_ring.png' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(353): Missing file: '\epoc32\data\Z\Private\101f85a0\signal_bar_01.png' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(354): Missing file: '\epoc32\data\Z\Private\101f85a0\signal_bar_02.png' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(355): Missing file: '\epoc32\data\Z\Private\101f85a0\signal_bar_03.png' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(356): Missing file: '\epoc32\data\Z\Private\101f85a0\signal_bar_04.png' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(357): Missing file: '\epoc32\data\Z\Private\101f85a0\signal_bar_05.png' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(358): Missing file: '\epoc32\data\Z\Private\101f85a0\blid_searching.gif' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(359): Missing file: '\epoc32\data\Z\Private\101f85a0\blid_searching_small.gif' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(360): Missing file: '\epoc32\data\Z\Private\101f85a0\blid_startup.gif' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(361): Missing file: '\epoc32\data\Z\Private\101f85a0\blid_unavail.png' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(384): Missing file: '\epoc32\data\Z\resource\apps\calendefaulteditors.mif' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(401): Missing file: '\epoc32\data\Z\Private\2001B29B\backup_registration.xml' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(456): Missing file: '\epoc32\data\Z\app_resource_dir\glxmetadataview.rsc' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(593): Missing file: '\epoc32\data\Z\private\10003a3f\apps\vcxnsappui_test_reg.RSC' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(594): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test_icon.mif' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(605): Missing file: '\epoc32\data\z\resource\videostorageschema.mde' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(959): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0000' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(960): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\sources\qsn_fr_popup_sub_mask_icon.svg' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(961): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0000' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(962): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\sources\idle_toolbaricons.mif' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(963): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0000' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(964): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0000' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(965): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\sources\idle_toolbaricons.mif' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(966): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\sources\fmradioclassicidle.mif' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1005): Missing file: '\epoc32\data\z\resource\hc_list_itemtypes.xml' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1006): Missing file: '\epoc32\data\z\resource\lctgridimagetext.xml' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1007): Missing file: '\epoc32\data\z\resource\lctgridimage.xml.xml' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1008): Missing file: '\epoc32\data\z\resource\lctgridtext.xml' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1059): Missing file: '\epoc32\data\z\system\install\callprovider_stub.SIS' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1153): Missing file: '\epoc32\release\ARMV5\urel\Z\Resource\ive\lib\jclcldc11\ext\0_j9_23_sip_jxe.odc' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1310): Missing file: '\epoc32\data\Z\Resource\JavaHelper\javahelper.mif' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1340): Missing file: '\epoc32\data\Z\Private\10202BE9\20010976.txt' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1372): Missing file: '\epoc32\data\z\resource\coverflow\logical_template_1.xml' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1373): Missing file: '\epoc32\data\z\resource\coverflow\logical_template_2.xml' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1374): Missing file: '\epoc32\data\z\resource\coverflow\logical_template_3.xml' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1375): Missing file: '\epoc32\data\z\resource\coverflow\logical_template_4.xml' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1376): Missing file: '\epoc32\data\z\resource\grid\logical_template_1.xml' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1377): Missing file: '\epoc32\data\z\resource\grid\logical_template_2.xml' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1378): Missing file: '\epoc32\data\z\resource\grid\logical_template_3.xml' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1379): Missing file: '\epoc32\data\z\resource\grid\logical_template_4.xml' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1380): Missing file: '\epoc32\winscw\c\logical_template_1_list.xml' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1381): Missing file: '\epoc32\winscw\c\logical_template_2_list.xml' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1382): Missing file: '\epoc32\winscw\c\logical_template_3_list.xml' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1383): Missing file: '\epoc32\winscw\c\logical_template_4_list.xml' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1384): Missing file: '\epoc32\winscw\c\logical_template_5_list.xml' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1385): Missing file: '\epoc32\winscw\c\logical_template_6_list.xml' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1386): Missing file: '\epoc32\winscw\c\logical_template_7_list.xml' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1387): Missing file: '\epoc32\winscw\c\logical_template_8_list.xml' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1388): Missing file: '\epoc32\data\z\resource\slider\logical_template_1.xml' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1389): Missing file: '\epoc32\data\z\resource\slider\logical_template_2.xml' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1390): Missing file: '\epoc32\data\z\resource\slider\logical_template_3.xml' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1391): Missing file: '\epoc32\data\z\resource\slider\logical_template_4.xml' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1392): Missing file: '\epoc32\data\z\resource\slider\logical_template_5.xml' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1393): Missing file: '\epoc32\data\z\resource\slider\logical_template_6.xml' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1394): Missing file: '\epoc32\data\z\resource\slider\logical_template_7.xml' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1395): Missing file: '\epoc32\data\z\resource\slider\logical_template_8.xml' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1396): Missing file: '\epoc32\data\z\resource\slider\logical_template_9.xml' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1397): Missing file: '\\epoc32\winscw\c\resource\slider\lct\logical_template_1.xml' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1398): Missing file: '\\epoc32\winscw\c\resource\slider\lct\logical_template_2.xml' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1399): Missing file: '\\epoc32\winscw\c\resource\slider\lct\logical_template_3.xml' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1400): Missing file: '\\epoc32\winscw\c\resource\slider\lct\logical_template_4.xml' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1401): Missing file: '\\epoc32\winscw\c\resource\slider\lct\logical_template_5.xml' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1402): Missing file: '\\epoc32\winscw\c\resource\slider\lct\logical_template_6.xml' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1403): Missing file: '\\epoc32\winscw\c\resource\slider\lct\logical_template_7.xml' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1404): Missing file: '\\epoc32\winscw\c\resource\slider\lct\logical_template_8.xml' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1644): Missing file: '\epoc32\data\Z\system\install\ximpfw.sis' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1690): Missing file: '\epoc32\Data\z\resource\services' in statement 'data='
+y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1691): Missing file: '\epoc32\Data\z\resource\locales.txt' in statement 'data='
+* Writing tmp7.oby - result of problem-suppression phase
+* Writing tmp8.oby - result of bitmap conversion phase
+* Removing previous image and logs...
+* Writing tmp9.oby - result of cleaning phase
+* Writing RX-47_200846_rnd.oby - final OBY file
+* Writing RX-47_200846_rnd.rofs1.oby - final OBY file
+* Writing RX-47_200846_rnd.dir - ROM directory listing
+* compression method: bytepair* Executing rombuild -slog -loglevel1 -type-safe-link -geninc -compressionmethod bytepair RX-47_200846_rnd.oby
+
+ROMBUILD - Rom builder V2.08 (Build 596)
+ Software Ltd.
+
+WARNING: Unknown keyword 'ROFS_HEADER'.  Line 781 ignored
+WARNING: Unknown keyword 'LOCALISE_ALL_RESOURCES_BEGIN'.  Line 2520 ignored
+WARNING: Unknown keyword 'LOCALISE_ALL_RESOURCES_END'.  Line 2522 ignored
+WARNING: Unknown keyword '/'.  Line 2641 ignored
+WARNING: Unknown keyword ''.  Line 2806 ignored
+WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 2875 ignored
+WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 3554 ignored
+WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 3558 ignored
+WARNING: Unknown keyword '***'.  Line 4226 ignored
+WARNING: Unknown keyword '***'.  Line 4228 ignored
+WARNING: Unknown keyword '***'.  Line 4558 ignored
+WARNING: Unknown keyword '***'.  Line 4560 ignored
+WARNING: Unknown keyword '***'.  Line 4741 ignored
+WARNING: Unknown keyword '***'.  Line 5302 ignored
+WARNING: Unknown keyword '***'.  Line 5304 ignored
+WARNING: Unknown keyword '***'.  Line 5330 ignored
+WARNING: Unknown keyword '***'.  Line 5332 ignored
+ERROR: Can't build dependence graph for
+	\epoc32\release\ARMV5\urel\glxcloudview.dll (UID3:200071ba HWVD:01000000 VER:10.0)
+because
+	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
+is not in rom.
+ERROR: Can't build dependence graph for
+	\epoc32\release\ARMV5\urel\glxfetcher.dll (UID3:200071b3 HWVD:01000000 VER:10.0)
+because
+	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
+is not in rom.
+ERROR: Can't build dependence graph for
+	\epoc32\release\ARMV5\urel\glxdataprovider.dll (UID3:200104da HWVD:01000000 VER:10.0)
+because
+	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
+is not in rom.
+ERROR: Can't build dependence graph for
+	\epoc32\release\ARMV5\urel\glxgridview.dll (UID3:200009ef HWVD:01000000 VER:10.0)
+because
+	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
+is not in rom.
+ERROR: Can't build dependence graph for
+	\epoc32\release\ARMV5\urel\glxfullscreenview.dll (UID3:20000a07 HWVD:01000000 VER:10.0)
+because
+	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
+is not in rom.
+ERROR: Can't build dependence graph for
+	\epoc32\release\ARMV5\urel\glxlistview.dll (UID3:20000a0d HWVD:01000000 VER:10.0)
+because
+	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
+is not in rom.
+ERROR: Can't build dependence graph for
+	\epoc32\release\ARMV5\urel\glxunifiedmetadataview.dll (UID3:20007193 HWVD:01000000 VER:10.0)
+because
+	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
+is not in rom.
+ERROR: Can't build dependence graph for
+	\epoc32\release\ARMV5\urel\vcxnsvodui.dll (UID3:102750db HWVD:01000000 VER:10.0)
+because
+	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
+is not in rom.
+ERROR: Can't build dependence graph for
+	\epoc32\release\ARMV5\urel\vcxnsmyvideos.dll (UID3:2000b439 HWVD:01000000 VER:10.0)
+because
+	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
+is not in rom.
+ERROR: Can't build dependence graph for
+	\epoc32\release\ARMV5\urel\vcxnslivetvui.dll (UID3:00000000 HWVD:01000000 VER:10.0)
+because
+	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
+is not in rom.
+ERROR: Can't build dependence graph for
+	\epoc32\release\ARMV5\urel\alflctlayoutmanagers.dll (UID3:20012475 HWVD:01000000 VER:10.0)
+because
+	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
+is not in rom.
+ERROR: Can't build dependence graph for
+	\epoc32\release\ARMV5\urel\alfscrollbarwidget.dll (UID3:20010105 HWVD:01000000 VER:10.0)
+because
+	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
+is not in rom.
+ERROR: Can't build dependence graph for
+	\epoc32\release\armv5\urel\mulmodelutility.dll (UID3:2000d246 HWVD:01000000 VER:10.0)
+because
+	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
+is not in rom.
+ERROR: Can't build dependence graph for
+	\epoc32\release\armv5\urel\muldatamodel.dll (UID3:2000d247 HWVD:01000000 VER:10.0)
+because
+	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
+is not in rom.
+ERROR: Can't build dependence graph for
+	\epoc32\release\ARMV5\urel\mulgridwidget.dll (UID3:2000d244 HWVD:01000000 VER:10.0)
+because
+	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
+is not in rom.
+ERROR: Can't build dependence graph for
+	\epoc32\release\ARMV5\urel\mulgridwidget.dll (UID3:2000d244 HWVD:01000000 VER:10.0)
+because
+	mulutility.dll (UID3:2000fa83 HWVD:01000000 VER:10.0)
+is not in rom.
+ERROR: Can't build dependence graph for
+	\epoc32\release\armv5\urel\mulsingleitemmodel.dll (UID3:2000fa84 HWVD:01000000 VER:10.0)
+because
+	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
+is not in rom.
+ERROR: Can't build dependence graph for
+	\epoc32\release\ARMV5\urel\mulsliderwidget.dll (UID3:2000fa7f HWVD:01000000 VER:10.0)
+because
+	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
+is not in rom.
+ERROR: Can't build dependence graph for
+	\epoc32\release\ARMV5\urel\mulsliderwidget.dll (UID3:2000fa7f HWVD:01000000 VER:10.0)
+because
+	mulutility.dll (UID3:2000fa83 HWVD:01000000 VER:10.0)
+is not in rom.
+ERROR: LoadContents failed - return code -1
+* rombuild failed
+
+*** Error: (S:CORE,C:1,B:1,K:0,V:1): Command `buildrom -loglevel1 -v -nosymbols -DFEATUREVARIANT=devlon52 -D_IMAGE_TYPE_RND -D_EABI=ARMV5 -D_ASIC_VER_11 -DUSE_MULTIROFS -DDEVLON52 -es60ibymacros -DSECTION -DRND_CONTENT -cbytepair -oRX-47_200846_rnd.img y:\output/release_flash_images/devlon52/rnd/core/RX-47_200846_rnd/RX-47_200846_rnd_core_master.oby' failed (1).
+mingw_make[1]: *** [core] Error 1
+make: [configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_core] Error 2 (ignored)
++++ HiRes End 1226578474.19474
+++ Finished at Thu Nov 13 14:14:34 2008
+=== config_1 == configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_01
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_01
+++ Started at Thu Nov 13 14:11:27 2008
++++ HiRes Start 1226578288.09013
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=rnd"  langpack_01  WORKDIR=\epoc32\rombuild\imaker_temp/conf_1
+iMaker 08.43.01, 20-Oct-2008.
+Variant target             USE_VARIANTBLD = `2'
+Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_01'
+Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_01/language_variant.mk'
+Variant include directory  VARIANT_INCDIR = -
+Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_01/variant.confml'
+Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
+Variant SIS directory      VARIANT_SISDIR = -
+Variant operator cache dir VARIANT_OPCDIR = -
+Variant zip content dir    VARIANT_ZIPDIR = -
+Variant copy content dir   VARIANT_CPDIR  = -
+Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/rnd/langpack/langpack_01/variant'
+Calling S60 Configuration Tool
+Generating file(s) for ROFS2 image creation
+Generating language files for Language Package image creation
+Creating ROFS2 SOS image
+
+Missing file(s):
+ 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(47): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
+ 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(48): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r02' in statement 'data='
+ 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(49): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r03' in statement 'data='
+ 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(50): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r04' in statement 'data='
+ 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(51): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r05' in statement 'data='
+ 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(52): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r13' in statement 'data='
+ 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\02\appshelldata.dtd' in statement 'data='
+ 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\03\appshelldata.dtd' in statement 'data='
+ 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\04\appshelldata.dtd' in statement 'data='
+10) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(44): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\05\appshelldata.dtd' in statement 'data='
+11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\13\appshelldata.dtd' in statement 'data='
+12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(48): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0002' in statement 'data='
+13) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(49): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0003' in statement 'data='
+14) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0004' in statement 'data='
+15) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0005' in statement 'data='
+16) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(52): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0013' in statement 'data='
+17) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(54): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0002' in statement 'data='
+18) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(55): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0003' in statement 'data='
+19) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0004' in statement 'data='
+20) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0005' in statement 'data='
+21) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(58): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0013' in statement 'data='
+22) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(70): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
+23) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(71): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0002' in statement 'data='
+24) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(72): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0003' in statement 'data='
+25) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(73): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0004' in statement 'data='
+26) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(74): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0005' in statement 'data='
+27) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(75): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0013' in statement 'data='
+28) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(80): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
+29) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(81): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0002' in statement 'data='
+30) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(82): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0003' in statement 'data='
+31) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(83): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0004' in statement 'data='
+32) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(84): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0005' in statement 'data='
+33) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(85): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0013' in statement 'data='
+34) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(90): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
+35) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(91): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0002' in statement 'data='
+36) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(92): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0003' in statement 'data='
+37) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(93): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0004' in statement 'data='
+38) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(94): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0005' in statement 'data='
+39) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(95): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0013' in statement 'data='
+40) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(100): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
+41) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(101): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0002' in statement 'data='
+42) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(102): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0003' in statement 'data='
+43) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(103): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0004' in statement 'data='
+44) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(104): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0005' in statement 'data='
+45) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(105): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0013' in statement 'data='
+46) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
+47) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
+48) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
+49) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
+50) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
+51) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
+52) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
+53) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
+
+Warning(s):
+ 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
+ 2) *Initialization*:1: warning: this is the location of the previous definition
+ 3) WARNING: Unknown keyword ''.  Line 370 ignored
+ 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1982 ignored
+ 5) WARNING: Unknown keyword '***'.  Line 2612 ignored
+ 6) WARNING: Unknown keyword '***'.  Line 2836 ignored
+ 7) WARNING: Unknown keyword '***'.  Line 3330 ignored
+ 8) WARNING: Unknown keyword '***'.  Line 3363 ignored
+ 9) WARNING: Unknown keyword ''.  Line 370 ignored
+10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1982 ignored
+11) WARNING: Unknown keyword '***'.  Line 2612 ignored
+12) WARNING: Unknown keyword '***'.  Line 2836 ignored
+13) WARNING: Unknown keyword '***'.  Line 3330 ignored
+14) WARNING: Unknown keyword '***'.  Line 3363 ignored
+Creating ROFS2 symbol file
++++ HiRes End 1226578438.91439
+++ Finished at Thu Nov 13 14:13:58 2008
+=== config_1 == configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_02
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_02
+++ Started at Thu Nov 13 14:14:35 2008
++++ HiRes Start 1226578476.02282
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=rnd"  langpack_02  WORKDIR=\epoc32\rombuild\imaker_temp/conf_2
+iMaker 08.43.01, 20-Oct-2008.
+Variant target             USE_VARIANTBLD = `2'
+Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_02'
+Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_02/language_variant.mk'
+Variant include directory  VARIANT_INCDIR = -
+Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_02/variant.confml'
+Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
+Variant SIS directory      VARIANT_SISDIR = -
+Variant operator cache dir VARIANT_OPCDIR = -
+Variant zip content dir    VARIANT_ZIPDIR = -
+Variant copy content dir   VARIANT_CPDIR  = -
+Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/rnd/langpack/langpack_02/variant'
+Calling S60 Configuration Tool
+Generating file(s) for ROFS2 image creation
+Generating language files for Language Package image creation
+Creating ROFS2 SOS image
+
+Missing file(s):
+ 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(47): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
+ 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(48): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r02' in statement 'data='
+ 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(49): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r03' in statement 'data='
+ 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(50): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r05' in statement 'data='
+ 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(51): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r14' in statement 'data='
+ 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(52): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r18' in statement 'data='
+ 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\02\appshelldata.dtd' in statement 'data='
+ 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\03\appshelldata.dtd' in statement 'data='
+ 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\05\appshelldata.dtd' in statement 'data='
+10) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(44): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\14\appshelldata.dtd' in statement 'data='
+11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\18\appshelldata.dtd' in statement 'data='
+12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(48): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0002' in statement 'data='
+13) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(49): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0003' in statement 'data='
+14) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0005' in statement 'data='
+15) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0014' in statement 'data='
+16) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(52): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0018' in statement 'data='
+17) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(54): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0002' in statement 'data='
+18) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(55): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0003' in statement 'data='
+19) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0005' in statement 'data='
+20) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0014' in statement 'data='
+21) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(58): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0018' in statement 'data='
+22) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(70): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
+23) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(71): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0002' in statement 'data='
+24) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(72): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0003' in statement 'data='
+25) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(73): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0005' in statement 'data='
+26) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(74): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0014' in statement 'data='
+27) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(75): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0018' in statement 'data='
+28) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(80): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
+29) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(81): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0002' in statement 'data='
+30) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(82): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0003' in statement 'data='
+31) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(83): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0005' in statement 'data='
+32) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(84): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0014' in statement 'data='
+33) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(85): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0018' in statement 'data='
+34) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(90): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
+35) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(91): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0002' in statement 'data='
+36) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(92): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0003' in statement 'data='
+37) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(93): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0005' in statement 'data='
+38) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(94): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0014' in statement 'data='
+39) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(95): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0018' in statement 'data='
+40) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(100): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
+41) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(101): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0002' in statement 'data='
+42) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(102): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0003' in statement 'data='
+43) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(103): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0005' in statement 'data='
+44) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(104): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0014' in statement 'data='
+45) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(105): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0018' in statement 'data='
+46) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
+47) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
+48) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
+49) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
+50) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
+51) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
+52) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
+53) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
+
+Warning(s):
+ 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
+ 2) *Initialization*:1: warning: this is the location of the previous definition
+ 3) WARNING: Unknown keyword ''.  Line 370 ignored
+ 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1982 ignored
+ 5) WARNING: Unknown keyword '***'.  Line 2612 ignored
+ 6) WARNING: Unknown keyword '***'.  Line 2836 ignored
+ 7) WARNING: Unknown keyword '***'.  Line 3330 ignored
+ 8) WARNING: Unknown keyword '***'.  Line 3363 ignored
+ 9) WARNING: Unknown keyword ''.  Line 370 ignored
+10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1982 ignored
+11) WARNING: Unknown keyword '***'.  Line 2612 ignored
+12) WARNING: Unknown keyword '***'.  Line 2836 ignored
+13) WARNING: Unknown keyword '***'.  Line 3330 ignored
+14) WARNING: Unknown keyword '***'.  Line 3363 ignored
+Creating ROFS2 symbol file
++++ HiRes End 1226578538.55288
+++ Finished at Thu Nov 13 14:15:38 2008
+=== config_1 == configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_03
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_03
+++ Started at Thu Nov 13 14:15:39 2008
++++ HiRes Start 1226578539.80286
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=rnd"  langpack_03  WORKDIR=\epoc32\rombuild\imaker_temp/conf_3
+iMaker 08.43.01, 20-Oct-2008.
+Variant target             USE_VARIANTBLD = `2'
+Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_03'
+Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_03/language_variant.mk'
+Variant include directory  VARIANT_INCDIR = -
+Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_03/variant.confml'
+Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
+Variant SIS directory      VARIANT_SISDIR = -
+Variant operator cache dir VARIANT_OPCDIR = -
+Variant zip content dir    VARIANT_ZIPDIR = -
+Variant copy content dir   VARIANT_CPDIR  = -
+Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/rnd/langpack/langpack_03/variant'
+Calling S60 Configuration Tool
+Generating file(s) for ROFS2 image creation
+Generating language files for Language Package image creation
+Creating ROFS2 SOS image
+
+Missing file(s):
+ 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(47): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
+ 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(48): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r06' in statement 'data='
+ 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(49): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r07' in statement 'data='
+ 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(50): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r08' in statement 'data='
+ 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(51): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r09' in statement 'data='
+ 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(52): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r15' in statement 'data='
+ 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\06\appshelldata.dtd' in statement 'data='
+ 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\07\appshelldata.dtd' in statement 'data='
+ 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\08\appshelldata.dtd' in statement 'data='
+10) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(44): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\09\appshelldata.dtd' in statement 'data='
+11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\15\appshelldata.dtd' in statement 'data='
+12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(48): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0006' in statement 'data='
+13) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(49): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0007' in statement 'data='
+14) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0008' in statement 'data='
+15) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0009' in statement 'data='
+16) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(52): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0015' in statement 'data='
+17) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(54): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0006' in statement 'data='
+18) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(55): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0007' in statement 'data='
+19) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0008' in statement 'data='
+20) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0009' in statement 'data='
+21) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(58): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0015' in statement 'data='
+22) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(70): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
+23) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(71): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0006' in statement 'data='
+24) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(72): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0007' in statement 'data='
+25) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(73): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0008' in statement 'data='
+26) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(74): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0009' in statement 'data='
+27) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(75): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0015' in statement 'data='
+28) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(80): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
+29) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(81): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0006' in statement 'data='
+30) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(82): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0007' in statement 'data='
+31) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(83): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0008' in statement 'data='
+32) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(84): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0009' in statement 'data='
+33) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(85): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0015' in statement 'data='
+34) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(90): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
+35) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(91): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0006' in statement 'data='
+36) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(92): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0007' in statement 'data='
+37) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(93): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0008' in statement 'data='
+38) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(94): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0009' in statement 'data='
+39) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(95): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0015' in statement 'data='
+40) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(100): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
+41) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(101): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0006' in statement 'data='
+42) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(102): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0007' in statement 'data='
+43) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(103): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0008' in statement 'data='
+44) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(104): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0009' in statement 'data='
+45) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(105): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0015' in statement 'data='
+46) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
+47) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
+48) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
+49) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
+50) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
+51) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
+52) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
+53) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
+
+Warning(s):
+ 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
+ 2) *Initialization*:1: warning: this is the location of the previous definition
+ 3) WARNING: Unknown keyword ''.  Line 370 ignored
+ 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1982 ignored
+ 5) WARNING: Unknown keyword '***'.  Line 2612 ignored
+ 6) WARNING: Unknown keyword '***'.  Line 2836 ignored
+ 7) WARNING: Unknown keyword '***'.  Line 3330 ignored
+ 8) WARNING: Unknown keyword '***'.  Line 3363 ignored
+ 9) WARNING: Unknown keyword ''.  Line 370 ignored
+10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1982 ignored
+11) WARNING: Unknown keyword '***'.  Line 2612 ignored
+12) WARNING: Unknown keyword '***'.  Line 2836 ignored
+13) WARNING: Unknown keyword '***'.  Line 3330 ignored
+14) WARNING: Unknown keyword '***'.  Line 3363 ignored
+Creating ROFS2 symbol file
++++ HiRes End 1226578601.02083
+++ Finished at Thu Nov 13 14:16:41 2008
+=== config_1 == configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_04
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_04
+++ Started at Thu Nov 13 14:16:42 2008
++++ HiRes Start 1226578602.22394
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=rnd"  langpack_04  WORKDIR=\epoc32\rombuild\imaker_temp/conf_4
+iMaker 08.43.01, 20-Oct-2008.
+Variant target             USE_VARIANTBLD = `2'
+Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_04'
+Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_04/language_variant.mk'
+Variant include directory  VARIANT_INCDIR = -
+Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_04/variant.confml'
+Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
+Variant SIS directory      VARIANT_SISDIR = -
+Variant operator cache dir VARIANT_OPCDIR = -
+Variant zip content dir    VARIANT_ZIPDIR = -
+Variant copy content dir   VARIANT_CPDIR  = -
+Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/rnd/langpack/langpack_04/variant'
+Calling S60 Configuration Tool
+Generating file(s) for ROFS2 image creation
+Generating language files for Language Package image creation
+Creating ROFS2 SOS image
+
+Missing file(s):
+ 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(47): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
+ 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(48): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r03' in statement 'data='
+ 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(49): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r16' in statement 'data='
+ 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(50): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r49' in statement 'data='
+ 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(51): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r67' in statement 'data='
+ 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(52): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r68' in statement 'data='
+ 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\03\appshelldata.dtd' in statement 'data='
+ 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\16\appshelldata.dtd' in statement 'data='
+ 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\49\appshelldata.dtd' in statement 'data='
+10) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(44): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\67\appshelldata.dtd' in statement 'data='
+11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\68\appshelldata.dtd' in statement 'data='
+12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(48): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0003' in statement 'data='
+13) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(49): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0016' in statement 'data='
+14) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0049' in statement 'data='
+15) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0067' in statement 'data='
+16) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(52): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0068' in statement 'data='
+17) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(54): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0003' in statement 'data='
+18) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(55): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0016' in statement 'data='
+19) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0049' in statement 'data='
+20) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0067' in statement 'data='
+21) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(58): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0068' in statement 'data='
+22) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(70): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
+23) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(71): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0003' in statement 'data='
+24) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(72): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0016' in statement 'data='
+25) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(73): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0049' in statement 'data='
+26) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(74): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0067' in statement 'data='
+27) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(75): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0068' in statement 'data='
+28) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(80): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
+29) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(81): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0003' in statement 'data='
+30) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(82): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0016' in statement 'data='
+31) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(83): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0049' in statement 'data='
+32) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(84): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0067' in statement 'data='
+33) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(85): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0068' in statement 'data='
+34) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(90): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
+35) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(91): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0003' in statement 'data='
+36) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(92): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0016' in statement 'data='
+37) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(93): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0049' in statement 'data='
+38) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(94): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0067' in statement 'data='
+39) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(95): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0068' in statement 'data='
+40) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(100): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
+41) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(101): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0003' in statement 'data='
+42) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(102): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0016' in statement 'data='
+43) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(103): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0049' in statement 'data='
+44) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(104): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0067' in statement 'data='
+45) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(105): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0068' in statement 'data='
+46) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
+47) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
+48) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
+49) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
+50) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
+51) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
+52) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
+53) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
+
+Warning(s):
+ 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
+ 2) *Initialization*:1: warning: this is the location of the previous definition
+ 3) WARNING: Unknown keyword ''.  Line 370 ignored
+ 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1982 ignored
+ 5) WARNING: Unknown keyword '***'.  Line 2612 ignored
+ 6) WARNING: Unknown keyword '***'.  Line 2836 ignored
+ 7) WARNING: Unknown keyword '***'.  Line 3330 ignored
+ 8) WARNING: Unknown keyword '***'.  Line 3363 ignored
+ 9) WARNING: Unknown keyword ''.  Line 370 ignored
+10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1982 ignored
+11) WARNING: Unknown keyword '***'.  Line 2612 ignored
+12) WARNING: Unknown keyword '***'.  Line 2836 ignored
+13) WARNING: Unknown keyword '***'.  Line 3330 ignored
+14) WARNING: Unknown keyword '***'.  Line 3363 ignored
+Creating ROFS2 symbol file
++++ HiRes End 1226578662.62942
+++ Finished at Thu Nov 13 14:17:42 2008
+=== config_1 == configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_05
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_05
+++ Started at Thu Nov 13 14:17:43 2008
++++ HiRes Start 1226578663.8794
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=rnd"  langpack_05  WORKDIR=\epoc32\rombuild\imaker_temp/conf_5
+iMaker 08.43.01, 20-Oct-2008.
+Variant target             USE_VARIANTBLD = `2'
+Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_05'
+Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_05/language_variant.mk'
+Variant include directory  VARIANT_INCDIR = -
+Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_05/variant.confml'
+Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
+Variant SIS directory      VARIANT_SISDIR = -
+Variant operator cache dir VARIANT_OPCDIR = -
+Variant zip content dir    VARIANT_ZIPDIR = -
+Variant copy content dir   VARIANT_CPDIR  = -
+Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/rnd/langpack/langpack_05/variant'
+Calling S60 Configuration Tool
+Generating file(s) for ROFS2 image creation
+Generating language files for Language Package image creation
+Creating ROFS2 SOS image
+
+Missing file(s):
+ 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(52): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
+ 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(53): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r03' in statement 'data='
+ 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(54): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r16' in statement 'data='
+ 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(55): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r17' in statement 'data='
+ 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(56): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r42' in statement 'data='
+ 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(57): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r78' in statement 'data='
+ 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(58): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r93' in statement 'data='
+ 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\03\appshelldata.dtd' in statement 'data='
+ 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\16\appshelldata.dtd' in statement 'data='
+10) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(44): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\17\appshelldata.dtd' in statement 'data='
+11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\42\appshelldata.dtd' in statement 'data='
+12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(46): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\78\appshelldata.dtd' in statement 'data='
+13) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(47): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\93\appshelldata.dtd' in statement 'data='
+14) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0003' in statement 'data='
+15) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0016' in statement 'data='
+16) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(52): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0017' in statement 'data='
+17) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(53): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0042' in statement 'data='
+18) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(54): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0078' in statement 'data='
+19) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(55): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0093' in statement 'data='
+20) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0003' in statement 'data='
+21) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(58): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0016' in statement 'data='
+22) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(59): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0017' in statement 'data='
+23) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(60): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0042' in statement 'data='
+24) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(61): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0078' in statement 'data='
+25) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(62): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0093' in statement 'data='
+26) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(75): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
+27) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(76): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0003' in statement 'data='
+28) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(77): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0016' in statement 'data='
+29) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(78): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0017' in statement 'data='
+30) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(79): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0042' in statement 'data='
+31) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(80): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0078' in statement 'data='
+32) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(81): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0093' in statement 'data='
+33) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(86): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
+34) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(87): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0003' in statement 'data='
+35) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(88): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0016' in statement 'data='
+36) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(89): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0017' in statement 'data='
+37) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(90): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0042' in statement 'data='
+38) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(91): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0078' in statement 'data='
+39) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(92): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0093' in statement 'data='
+40) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(97): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
+41) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(98): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0003' in statement 'data='
+42) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(99): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0016' in statement 'data='
+43) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(100): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0017' in statement 'data='
+44) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(101): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0042' in statement 'data='
+45) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(102): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0078' in statement 'data='
+46) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(103): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0093' in statement 'data='
+47) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(108): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
+48) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(109): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0003' in statement 'data='
+49) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(110): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0016' in statement 'data='
+50) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(111): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0017' in statement 'data='
+51) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(112): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0042' in statement 'data='
+52) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(113): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0078' in statement 'data='
+53) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(114): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0093' in statement 'data='
+54) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
+55) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
+56) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
+57) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
+58) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
+59) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
+60) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
+61) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
+
+Warning(s):
+ 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
+ 2) *Initialization*:1: warning: this is the location of the previous definition
+ 3) WARNING: Unknown keyword ''.  Line 421 ignored
+ 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 2271 ignored
+ 5) WARNING: Unknown keyword '***'.  Line 2992 ignored
+ 6) WARNING: Unknown keyword '***'.  Line 3248 ignored
+ 7) WARNING: Unknown keyword '***'.  Line 3813 ignored
+ 8) WARNING: Unknown keyword '***'.  Line 3851 ignored
+ 9) WARNING: Unknown keyword ''.  Line 421 ignored
+10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 2271 ignored
+11) WARNING: Unknown keyword '***'.  Line 2992 ignored
+12) WARNING: Unknown keyword '***'.  Line 3248 ignored
+13) WARNING: Unknown keyword '***'.  Line 3813 ignored
+14) WARNING: Unknown keyword '***'.  Line 3851 ignored
+Creating ROFS2 symbol file
++++ HiRes End 1226578726.36297
+++ Finished at Thu Nov 13 14:18:46 2008
+=== config_1 == configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_06
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_06
+++ Started at Thu Nov 13 14:18:47 2008
++++ HiRes Start 1226578727.73796
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=rnd"  langpack_06  WORKDIR=\epoc32\rombuild\imaker_temp/conf_6
+iMaker 08.43.01, 20-Oct-2008.
+Variant target             USE_VARIANTBLD = `2'
+Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_06'
+Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_06/language_variant.mk'
+Variant include directory  VARIANT_INCDIR = -
+Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_06/variant.confml'
+Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
+Variant SIS directory      VARIANT_SISDIR = -
+Variant operator cache dir VARIANT_OPCDIR = -
+Variant zip content dir    VARIANT_ZIPDIR = -
+Variant copy content dir   VARIANT_CPDIR  = -
+Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/rnd/langpack/langpack_06/variant'
+Calling S60 Configuration Tool
+Generating file(s) for ROFS2 image creation
+Generating language files for Language Package image creation
+Creating ROFS2 SOS image
+
+Missing file(s):
+ 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(47): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
+ 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(48): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r03' in statement 'data='
+ 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(49): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r17' in statement 'data='
+ 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(50): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r25' in statement 'data='
+ 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(51): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r26' in statement 'data='
+ 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(52): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r27' in statement 'data='
+ 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\03\appshelldata.dtd' in statement 'data='
+ 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\17\appshelldata.dtd' in statement 'data='
+ 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\25\appshelldata.dtd' in statement 'data='
+10) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(44): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\26\appshelldata.dtd' in statement 'data='
+11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\27\appshelldata.dtd' in statement 'data='
+12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(48): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0003' in statement 'data='
+13) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(49): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0017' in statement 'data='
+14) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0025' in statement 'data='
+15) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0026' in statement 'data='
+16) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(52): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0027' in statement 'data='
+17) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(54): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0003' in statement 'data='
+18) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(55): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0017' in statement 'data='
+19) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0025' in statement 'data='
+20) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0026' in statement 'data='
+21) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(58): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0027' in statement 'data='
+22) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(70): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
+23) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(71): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0003' in statement 'data='
+24) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(72): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0017' in statement 'data='
+25) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(73): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0025' in statement 'data='
+26) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(74): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0026' in statement 'data='
+27) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(75): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0027' in statement 'data='
+28) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(80): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
+29) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(81): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0003' in statement 'data='
+30) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(82): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0017' in statement 'data='
+31) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(83): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0025' in statement 'data='
+32) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(84): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0026' in statement 'data='
+33) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(85): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0027' in statement 'data='
+34) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(90): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
+35) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(91): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0003' in statement 'data='
+36) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(92): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0017' in statement 'data='
+37) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(93): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0025' in statement 'data='
+38) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(94): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0026' in statement 'data='
+39) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(95): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0027' in statement 'data='
+40) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(100): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
+41) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(101): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0003' in statement 'data='
+42) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(102): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0017' in statement 'data='
+43) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(103): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0025' in statement 'data='
+44) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(104): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0026' in statement 'data='
+45) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(105): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0027' in statement 'data='
+46) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
+47) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
+48) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
+49) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
+50) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
+51) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
+52) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
+53) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
+
+Warning(s):
+ 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
+ 2) *Initialization*:1: warning: this is the location of the previous definition
+ 3) WARNING: Unknown keyword ''.  Line 370 ignored
+ 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1982 ignored
+ 5) WARNING: Unknown keyword '***'.  Line 2612 ignored
+ 6) WARNING: Unknown keyword '***'.  Line 2836 ignored
+ 7) WARNING: Unknown keyword '***'.  Line 3330 ignored
+ 8) WARNING: Unknown keyword '***'.  Line 3363 ignored
+ 9) WARNING: Unknown keyword ''.  Line 370 ignored
+10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1982 ignored
+11) WARNING: Unknown keyword '***'.  Line 2612 ignored
+12) WARNING: Unknown keyword '***'.  Line 2836 ignored
+13) WARNING: Unknown keyword '***'.  Line 3330 ignored
+14) WARNING: Unknown keyword '***'.  Line 3363 ignored
+Creating ROFS2 symbol file
++++ HiRes End 1226578786.40908
+++ Finished at Thu Nov 13 14:19:46 2008
+=== config_1 == configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_07
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_07
+++ Started at Thu Nov 13 14:19:47 2008
++++ HiRes Start 1226578787.62782
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=rnd"  langpack_07  WORKDIR=\epoc32\rombuild\imaker_temp/conf_7
+iMaker 08.43.01, 20-Oct-2008.
+Variant target             USE_VARIANTBLD = `2'
+Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_07'
+Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_07/language_variant.mk'
+Variant include directory  VARIANT_INCDIR = -
+Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_07/variant.confml'
+Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
+Variant SIS directory      VARIANT_SISDIR = -
+Variant operator cache dir VARIANT_OPCDIR = -
+Variant zip content dir    VARIANT_ZIPDIR = -
+Variant copy content dir   VARIANT_CPDIR  = -
+Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/rnd/langpack/langpack_07/variant'
+Calling S60 Configuration Tool
+Generating file(s) for ROFS2 image creation
+Generating language files for Language Package image creation
+Creating ROFS2 SOS image
+
+Missing file(s):
+ 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(47): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
+ 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(48): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r03' in statement 'data='
+ 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(49): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r28' in statement 'data='
+ 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(50): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r45' in statement 'data='
+ 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(51): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r54' in statement 'data='
+ 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(52): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r79' in statement 'data='
+ 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\03\appshelldata.dtd' in statement 'data='
+ 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\28\appshelldata.dtd' in statement 'data='
+ 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\45\appshelldata.dtd' in statement 'data='
+10) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(44): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\54\appshelldata.dtd' in statement 'data='
+11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\79\appshelldata.dtd' in statement 'data='
+12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(48): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0003' in statement 'data='
+13) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(49): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0028' in statement 'data='
+14) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0045' in statement 'data='
+15) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0054' in statement 'data='
+16) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(52): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0079' in statement 'data='
+17) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(54): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0003' in statement 'data='
+18) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(55): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0028' in statement 'data='
+19) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0045' in statement 'data='
+20) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0054' in statement 'data='
+21) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(58): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0079' in statement 'data='
+22) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(70): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
+23) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(71): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0003' in statement 'data='
+24) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(72): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0028' in statement 'data='
+25) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(73): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0045' in statement 'data='
+26) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(74): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0054' in statement 'data='
+27) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(75): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0079' in statement 'data='
+28) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(80): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
+29) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(81): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0003' in statement 'data='
+30) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(82): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0028' in statement 'data='
+31) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(83): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0045' in statement 'data='
+32) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(84): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0054' in statement 'data='
+33) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(85): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0079' in statement 'data='
+34) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(90): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
+35) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(91): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0003' in statement 'data='
+36) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(92): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0028' in statement 'data='
+37) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(93): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0045' in statement 'data='
+38) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(94): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0054' in statement 'data='
+39) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(95): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0079' in statement 'data='
+40) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(100): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
+41) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(101): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0003' in statement 'data='
+42) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(102): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0028' in statement 'data='
+43) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(103): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0045' in statement 'data='
+44) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(104): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0054' in statement 'data='
+45) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(105): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0079' in statement 'data='
+46) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
+47) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
+48) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
+49) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
+50) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
+51) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
+52) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
+53) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
+
+Warning(s):
+ 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
+ 2) *Initialization*:1: warning: this is the location of the previous definition
+ 3) WARNING: Unknown keyword ''.  Line 370 ignored
+ 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1982 ignored
+ 5) WARNING: Unknown keyword '***'.  Line 2612 ignored
+ 6) WARNING: Unknown keyword '***'.  Line 2836 ignored
+ 7) WARNING: Unknown keyword '***'.  Line 3330 ignored
+ 8) WARNING: Unknown keyword '***'.  Line 3363 ignored
+ 9) WARNING: Unknown keyword ''.  Line 370 ignored
+10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1982 ignored
+11) WARNING: Unknown keyword '***'.  Line 2612 ignored
+12) WARNING: Unknown keyword '***'.  Line 2836 ignored
+13) WARNING: Unknown keyword '***'.  Line 3330 ignored
+14) WARNING: Unknown keyword '***'.  Line 3363 ignored
+Creating ROFS2 symbol file
++++ HiRes End 1226578847.51767
+++ Finished at Thu Nov 13 14:20:47 2008
+=== config_1 == configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_08
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_08
+++ Started at Thu Nov 13 14:20:48 2008
++++ HiRes Start 1226578848.75203
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=rnd"  langpack_08  WORKDIR=\epoc32\rombuild\imaker_temp/conf_8
+iMaker 08.43.01, 20-Oct-2008.
+Variant target             USE_VARIANTBLD = `2'
+Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_08'
+Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_08/language_variant.mk'
+Variant include directory  VARIANT_INCDIR = -
+Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_08/variant.confml'
+Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
+Variant SIS directory      VARIANT_SISDIR = -
+Variant operator cache dir VARIANT_OPCDIR = -
+Variant zip content dir    VARIANT_ZIPDIR = -
+Variant copy content dir   VARIANT_CPDIR  = -
+Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/rnd/langpack/langpack_08/variant'
+Calling S60 Configuration Tool
+Generating file(s) for ROFS2 image creation
+Generating language files for Language Package image creation
+Creating ROFS2 SOS image
+
+Missing file(s):
+ 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(47): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
+ 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(48): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r04' in statement 'data='
+ 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(49): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r16' in statement 'data='
+ 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(50): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r37' in statement 'data='
+ 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(51): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r57' in statement 'data='
+ 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(52): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r78' in statement 'data='
+ 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\04\appshelldata.dtd' in statement 'data='
+ 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\16\appshelldata.dtd' in statement 'data='
+ 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\37\appshelldata.dtd' in statement 'data='
+10) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(44): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\57\appshelldata.dtd' in statement 'data='
+11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\78\appshelldata.dtd' in statement 'data='
+12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(48): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0004' in statement 'data='
+13) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(49): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0016' in statement 'data='
+14) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0037' in statement 'data='
+15) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0057' in statement 'data='
+16) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(52): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0078' in statement 'data='
+17) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(54): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0004' in statement 'data='
+18) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(55): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0016' in statement 'data='
+19) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0037' in statement 'data='
+20) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0057' in statement 'data='
+21) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(58): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0078' in statement 'data='
+22) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(70): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
+23) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(71): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0004' in statement 'data='
+24) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(72): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0016' in statement 'data='
+25) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(73): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0037' in statement 'data='
+26) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(74): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0057' in statement 'data='
+27) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(75): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0078' in statement 'data='
+28) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(80): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
+29) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(81): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0004' in statement 'data='
+30) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(82): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0016' in statement 'data='
+31) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(83): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0037' in statement 'data='
+32) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(84): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0057' in statement 'data='
+33) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(85): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0078' in statement 'data='
+34) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(90): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
+35) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(91): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0004' in statement 'data='
+36) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(92): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0016' in statement 'data='
+37) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(93): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0037' in statement 'data='
+38) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(94): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0057' in statement 'data='
+39) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(95): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0078' in statement 'data='
+40) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(100): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
+41) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(101): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0004' in statement 'data='
+42) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(102): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0016' in statement 'data='
+43) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(103): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0037' in statement 'data='
+44) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(104): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0057' in statement 'data='
+45) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(105): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0078' in statement 'data='
+46) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
+47) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
+48) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
+49) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
+50) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
+51) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
+52) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
+53) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
+
+Warning(s):
+ 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
+ 2) *Initialization*:1: warning: this is the location of the previous definition
+ 3) WARNING: Unknown keyword ''.  Line 370 ignored
+ 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1982 ignored
+ 5) WARNING: Unknown keyword '***'.  Line 2612 ignored
+ 6) WARNING: Unknown keyword '***'.  Line 2836 ignored
+ 7) WARNING: Unknown keyword '***'.  Line 3330 ignored
+ 8) WARNING: Unknown keyword '***'.  Line 3363 ignored
+ 9) WARNING: Unknown keyword ''.  Line 370 ignored
+10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1982 ignored
+11) WARNING: Unknown keyword '***'.  Line 2612 ignored
+12) WARNING: Unknown keyword '***'.  Line 2836 ignored
+13) WARNING: Unknown keyword '***'.  Line 3330 ignored
+14) WARNING: Unknown keyword '***'.  Line 3363 ignored
+Creating ROFS2 symbol file
++++ HiRes End 1226578909.57938
+++ Finished at Thu Nov 13 14:21:49 2008
+=== config_1 == configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_09
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_09
+++ Started at Thu Nov 13 14:21:50 2008
++++ HiRes Start 1226578910.84499
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=rnd"  langpack_09  WORKDIR=\epoc32\rombuild\imaker_temp/conf_9
+iMaker 08.43.01, 20-Oct-2008.
+Variant target             USE_VARIANTBLD = `2'
+Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_09'
+Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_09/language_variant.mk'
+Variant include directory  VARIANT_INCDIR = -
+Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_09/variant.confml'
+Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
+Variant SIS directory      VARIANT_SISDIR = -
+Variant operator cache dir VARIANT_OPCDIR = -
+Variant zip content dir    VARIANT_ZIPDIR = -
+Variant copy content dir   VARIANT_CPDIR  = -
+Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/rnd/langpack/langpack_09/variant'
+Calling S60 Configuration Tool
+Generating file(s) for ROFS2 image creation
+Generating language files for Language Package image creation
+Creating ROFS2 SOS image
+
+Missing file(s):
+ 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\audiothemesresources.iby(29): Missing file: '\epoc32\data\Z\resource\PslnATPluginRsc.r102' in statement 'data='
+ 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\audiothemesresources.iby(30): Missing file: '\epoc32\data\Z\resource\PslnATPluginRsc.r103' in statement 'data='
+ 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(57): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
+ 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(58): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r02' in statement 'data='
+ 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(59): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r03' in statement 'data='
+ 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(60): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r04' in statement 'data='
+ 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(61): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r102' in statement 'data='
+ 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(62): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r103' in statement 'data='
+ 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(63): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r13' in statement 'data='
+10) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(64): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r44' in statement 'data='
+11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\02\appshelldata.dtd' in statement 'data='
+12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(44): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\03\appshelldata.dtd' in statement 'data='
+13) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\04\appshelldata.dtd' in statement 'data='
+14) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(46): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\102\appshelldata.dtd' in statement 'data='
+15) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(47): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\103\appshelldata.dtd' in statement 'data='
+16) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(48): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\13\appshelldata.dtd' in statement 'data='
+17) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(49): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\44\appshelldata.dtd' in statement 'data='
+18) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(52): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0002' in statement 'data='
+19) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(53): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0003' in statement 'data='
+20) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(54): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0004' in statement 'data='
+21) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(55): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0102' in statement 'data='
+22) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0103' in statement 'data='
+23) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0013' in statement 'data='
+24) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(58): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0044' in statement 'data='
+25) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(60): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0002' in statement 'data='
+26) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(61): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0003' in statement 'data='
+27) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(62): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0004' in statement 'data='
+28) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(63): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0102' in statement 'data='
+29) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(64): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0103' in statement 'data='
+30) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(65): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0013' in statement 'data='
+31) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(66): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0044' in statement 'data='
+32) ..\..\..\..\..\..\epoc32\rom\include\language\app\mobiledictionaryresources.iby(19): Missing file: '\epoc32\data\Z\resource\Apps\mobiledictionary.r102' in statement 'data='
+33) ..\..\..\..\..\..\epoc32\rom\include\language\app\mobiledictionaryresources.iby(20): Missing file: '\epoc32\data\Z\resource\Apps\mobiledictionary.r103' in statement 'data='
+34) ..\..\..\..\..\..\epoc32\rom\include\language\app\NcdCatalogsUiResources.iby(32): Missing file: '\epoc32\data\Z\resource\apps\Ncd.r102' in statement 'data='
+35) ..\..\..\..\..\..\epoc32\rom\include\language\app\NcdCatalogsUiResources.iby(33): Missing file: '\epoc32\data\Z\resource\apps\Ncd.r103' in statement 'data='
+36) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(80): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
+37) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(81): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0002' in statement 'data='
+38) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(82): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0003' in statement 'data='
+39) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(83): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0004' in statement 'data='
+40) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(84): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0102' in statement 'data='
+41) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(85): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0103' in statement 'data='
+42) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(86): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0013' in statement 'data='
+43) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(87): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0044' in statement 'data='
+44) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(92): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
+45) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(93): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0002' in statement 'data='
+46) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(94): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0003' in statement 'data='
+47) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(95): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0004' in statement 'data='
+48) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(96): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0102' in statement 'data='
+49) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(97): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0103' in statement 'data='
+50) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(98): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0013' in statement 'data='
+51) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(99): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0044' in statement 'data='
+52) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(104): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
+53) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(105): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0002' in statement 'data='
+54) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(106): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0003' in statement 'data='
+55) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(107): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0004' in statement 'data='
+56) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(108): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0102' in statement 'data='
+57) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(109): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0103' in statement 'data='
+58) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(110): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0013' in statement 'data='
+59) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(111): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0044' in statement 'data='
+60) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(116): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
+61) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(117): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0002' in statement 'data='
+62) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(118): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0003' in statement 'data='
+63) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(119): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0004' in statement 'data='
+64) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(120): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0102' in statement 'data='
+65) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(121): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0103' in statement 'data='
+66) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(122): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0013' in statement 'data='
+67) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(123): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0044' in statement 'data='
+68) ..\..\..\..\..\..\epoc32\rom\include\language\mw\elocl.iby(28): Missing file: '\epoc32\release\ARMV5\urel\Elocl.102' in statement 'file='
+69) ..\..\..\..\..\..\epoc32\rom\include\language\mw\elocl.iby(29): Missing file: '\epoc32\release\ARMV5\urel\Elocl.103' in statement 'file='
+70) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
+71) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
+72) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
+73) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
+74) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
+75) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
+76) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
+77) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
+
+Warning(s):
+ 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
+ 2) *Initialization*:1: warning: this is the location of the previous definition
+ 3) WARNING: Unknown keyword ''.  Line 472 ignored
+ 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 2560 ignored
+ 5) WARNING: Unknown keyword '***'.  Line 3372 ignored
+ 6) WARNING: Unknown keyword '***'.  Line 3660 ignored
+ 7) WARNING: Unknown keyword '***'.  Line 4296 ignored
+ 8) WARNING: Unknown keyword '***'.  Line 4339 ignored
+ 9) WARNING: Unknown keyword ''.  Line 472 ignored
+10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 2560 ignored
+11) WARNING: Unknown keyword '***'.  Line 3372 ignored
+12) WARNING: Unknown keyword '***'.  Line 3660 ignored
+13) WARNING: Unknown keyword '***'.  Line 4296 ignored
+14) WARNING: Unknown keyword '***'.  Line 4339 ignored
+Creating ROFS2 symbol file
++++ HiRes End 1226578977.98475
+++ Finished at Thu Nov 13 14:22:58 2008
+=== config_1 == configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_11
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_11
+++ Started at Thu Nov 13 14:22:59 2008
++++ HiRes Start 1226578979.37536
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=rnd"  langpack_11  WORKDIR=\epoc32\rombuild\imaker_temp/conf_10
+iMaker 08.43.01, 20-Oct-2008.
+Variant target             USE_VARIANTBLD = `2'
+Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_11'
+Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_11/language_variant.mk'
+Variant include directory  VARIANT_INCDIR = -
+Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_11/variant.confml'
+Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
+Variant SIS directory      VARIANT_SISDIR = -
+Variant operator cache dir VARIANT_OPCDIR = -
+Variant zip content dir    VARIANT_ZIPDIR = -
+Variant copy content dir   VARIANT_CPDIR  = -
+Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/rnd/langpack/langpack_11/variant'
+Calling S60 Configuration Tool
+Generating file(s) for ROFS2 image creation
+Generating language files for Language Package image creation
+Creating ROFS2 SOS image
+
+Missing file(s):
+ 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(32): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
+ 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(33): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r02' in statement 'data='
+ 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(34): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r37' in statement 'data='
+ 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(38): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\02\appshelldata.dtd' in statement 'data='
+ 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(39): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\37\appshelldata.dtd' in statement 'data='
+ 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0002' in statement 'data='
+ 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0037' in statement 'data='
+ 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0002' in statement 'data='
+ 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(46): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0037' in statement 'data='
+10) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(55): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
+11) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0002' in statement 'data='
+12) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0037' in statement 'data='
+13) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(62): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
+14) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(63): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0002' in statement 'data='
+15) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(64): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0037' in statement 'data='
+16) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(69): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
+17) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(70): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0002' in statement 'data='
+18) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(71): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0037' in statement 'data='
+19) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(76): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
+20) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(77): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0002' in statement 'data='
+21) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(78): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0037' in statement 'data='
+22) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
+23) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
+24) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
+25) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
+26) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
+27) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
+28) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
+29) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
+
+Warning(s):
+ 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
+ 2) *Initialization*:1: warning: this is the location of the previous definition
+ 3) WARNING: Unknown keyword ''.  Line 217 ignored
+ 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1115 ignored
+ 5) WARNING: Unknown keyword '***'.  Line 1472 ignored
+ 6) WARNING: Unknown keyword '***'.  Line 1600 ignored
+ 7) WARNING: Unknown keyword '***'.  Line 1881 ignored
+ 8) WARNING: Unknown keyword '***'.  Line 1899 ignored
+ 9) WARNING: Unknown keyword ''.  Line 217 ignored
+10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1115 ignored
+11) WARNING: Unknown keyword '***'.  Line 1472 ignored
+12) WARNING: Unknown keyword '***'.  Line 1600 ignored
+13) WARNING: Unknown keyword '***'.  Line 1881 ignored
+14) WARNING: Unknown keyword '***'.  Line 1899 ignored
+Creating ROFS2 symbol file
++++ HiRes End 1226579017.23425
+++ Finished at Thu Nov 13 14:23:37 2008
+=== config_1 == configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_12
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_12
+++ Started at Thu Nov 13 14:23:38 2008
++++ HiRes Start 1226579018.07799
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=rnd"  langpack_12  WORKDIR=\epoc32\rombuild\imaker_temp/conf_11
+iMaker 08.43.01, 20-Oct-2008.
+Variant target             USE_VARIANTBLD = `2'
+Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_12'
+Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_12/language_variant.mk'
+Variant include directory  VARIANT_INCDIR = -
+Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_12/variant.confml'
+Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
+Variant SIS directory      VARIANT_SISDIR = -
+Variant operator cache dir VARIANT_OPCDIR = -
+Variant zip content dir    VARIANT_ZIPDIR = -
+Variant copy content dir   VARIANT_CPDIR  = -
+Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/rnd/langpack/langpack_12/variant'
+Calling S60 Configuration Tool
+Generating file(s) for ROFS2 image creation
+Generating language files for Language Package image creation
+Creating ROFS2 SOS image
+
+Missing file(s):
+ 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(37): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
+ 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(38): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r37' in statement 'data='
+ 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(39): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r50' in statement 'data='
+ 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(40): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r94' in statement 'data='
+ 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(39): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\37\appshelldata.dtd' in statement 'data='
+ 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(40): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\50\appshelldata.dtd' in statement 'data='
+ 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\94\appshelldata.dtd' in statement 'data='
+ 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(44): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0037' in statement 'data='
+ 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0050' in statement 'data='
+10) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(46): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0094' in statement 'data='
+11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(48): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0037' in statement 'data='
+12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(49): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0050' in statement 'data='
+13) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0094' in statement 'data='
+14) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(60): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
+15) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(61): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0037' in statement 'data='
+16) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(62): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0050' in statement 'data='
+17) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(63): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0094' in statement 'data='
+18) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(68): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
+19) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(69): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0037' in statement 'data='
+20) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(70): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0050' in statement 'data='
+21) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(71): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0094' in statement 'data='
+22) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(76): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
+23) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(77): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0037' in statement 'data='
+24) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(78): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0050' in statement 'data='
+25) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(79): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0094' in statement 'data='
+26) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(84): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
+27) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(85): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0037' in statement 'data='
+28) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(86): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0050' in statement 'data='
+29) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(87): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0094' in statement 'data='
+30) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
+31) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
+32) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
+33) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
+34) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
+35) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
+36) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
+37) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
+
+Warning(s):
+ 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
+ 2) *Initialization*:1: warning: this is the location of the previous definition
+ 3) WARNING: Unknown keyword ''.  Line 268 ignored
+ 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1404 ignored
+ 5) WARNING: Unknown keyword '***'.  Line 1852 ignored
+ 6) WARNING: Unknown keyword '***'.  Line 2012 ignored
+ 7) WARNING: Unknown keyword '***'.  Line 2364 ignored
+ 8) WARNING: Unknown keyword '***'.  Line 2387 ignored
+ 9) WARNING: Unknown keyword ''.  Line 268 ignored
+10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1404 ignored
+11) WARNING: Unknown keyword '***'.  Line 1852 ignored
+12) WARNING: Unknown keyword '***'.  Line 2012 ignored
+13) WARNING: Unknown keyword '***'.  Line 2364 ignored
+14) WARNING: Unknown keyword '***'.  Line 2387 ignored
+Creating ROFS2 symbol file
++++ HiRes End 1226579063.9524
+++ Finished at Thu Nov 13 14:24:23 2008
+=== config_1 == configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_13
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_13
+++ Started at Thu Nov 13 14:24:24 2008
++++ HiRes Start 1226579064.95239
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=rnd"  langpack_13  WORKDIR=\epoc32\rombuild\imaker_temp/conf_12
+iMaker 08.43.01, 20-Oct-2008.
+Variant target             USE_VARIANTBLD = `2'
+Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_13'
+Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_13/language_variant.mk'
+Variant include directory  VARIANT_INCDIR = -
+Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_13/variant.confml'
+Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
+Variant SIS directory      VARIANT_SISDIR = -
+Variant operator cache dir VARIANT_OPCDIR = -
+Variant zip content dir    VARIANT_ZIPDIR = -
+Variant copy content dir   VARIANT_CPDIR  = -
+Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/rnd/langpack/langpack_13/variant'
+Calling S60 Configuration Tool
+Generating file(s) for ROFS2 image creation
+Generating language files for Language Package image creation
+Creating ROFS2 SOS image
+
+Missing file(s):
+ 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(27): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
+ 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(28): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r13' in statement 'data='
+ 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(37): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\13\appshelldata.dtd' in statement 'data='
+ 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(40): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0013' in statement 'data='
+ 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0013' in statement 'data='
+ 6) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
+ 7) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0013' in statement 'data='
+ 8) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
+ 9) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0013' in statement 'data='
+10) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(62): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
+11) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(63): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0013' in statement 'data='
+12) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(68): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
+13) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(69): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0013' in statement 'data='
+14) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
+15) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
+16) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
+17) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
+18) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
+19) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
+20) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
+21) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
+
+Warning(s):
+ 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
+ 2) *Initialization*:1: warning: this is the location of the previous definition
+ 3) WARNING: Unknown keyword ''.  Line 166 ignored
+ 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 826 ignored
+ 5) WARNING: Unknown keyword '***'.  Line 1092 ignored
+ 6) WARNING: Unknown keyword '***'.  Line 1188 ignored
+ 7) WARNING: Unknown keyword '***'.  Line 1398 ignored
+ 8) WARNING: Unknown keyword '***'.  Line 1411 ignored
+ 9) WARNING: Unknown keyword ''.  Line 166 ignored
+10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 826 ignored
+11) WARNING: Unknown keyword '***'.  Line 1092 ignored
+12) WARNING: Unknown keyword '***'.  Line 1188 ignored
+13) WARNING: Unknown keyword '***'.  Line 1398 ignored
+14) WARNING: Unknown keyword '***'.  Line 1411 ignored
+Creating ROFS2 symbol file
++++ HiRes End 1226579096.78011
+++ Finished at Thu Nov 13 14:24:56 2008
+=== config_1 == configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_14
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_14
+++ Started at Thu Nov 13 14:24:57 2008
++++ HiRes Start 1226579097.51447
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=rnd"  langpack_14  WORKDIR=\epoc32\rombuild\imaker_temp/conf_13
+iMaker 08.43.01, 20-Oct-2008.
+Variant target             USE_VARIANTBLD = `2'
+Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_14'
+Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_14/language_variant.mk'
+Variant include directory  VARIANT_INCDIR = -
+Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_14/variant.confml'
+Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
+Variant SIS directory      VARIANT_SISDIR = -
+Variant operator cache dir VARIANT_OPCDIR = -
+Variant zip content dir    VARIANT_ZIPDIR = -
+Variant copy content dir   VARIANT_CPDIR  = -
+Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/rnd/langpack/langpack_14/variant'
+Calling S60 Configuration Tool
+Generating file(s) for ROFS2 image creation
+Generating language files for Language Package image creation
+Creating ROFS2 SOS image
+
+Missing file(s):
+ 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(42): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
+ 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(43): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r02' in statement 'data='
+ 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(44): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r03' in statement 'data='
+ 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(45): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r05' in statement 'data='
+ 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(46): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r18' in statement 'data='
+ 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(40): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\02\appshelldata.dtd' in statement 'data='
+ 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\03\appshelldata.dtd' in statement 'data='
+ 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\05\appshelldata.dtd' in statement 'data='
+ 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\18\appshelldata.dtd' in statement 'data='
+10) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(46): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0002' in statement 'data='
+11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(47): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0003' in statement 'data='
+12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(48): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0005' in statement 'data='
+13) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(49): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0018' in statement 'data='
+14) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0002' in statement 'data='
+15) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(52): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0003' in statement 'data='
+16) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(53): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0005' in statement 'data='
+17) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(54): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0018' in statement 'data='
+18) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(65): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
+19) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(66): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0002' in statement 'data='
+20) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(67): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0003' in statement 'data='
+21) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(68): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0005' in statement 'data='
+22) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(69): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0018' in statement 'data='
+23) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(74): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
+24) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(75): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0002' in statement 'data='
+25) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(76): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0003' in statement 'data='
+26) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(77): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0005' in statement 'data='
+27) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(78): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0018' in statement 'data='
+28) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(83): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
+29) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(84): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0002' in statement 'data='
+30) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(85): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0003' in statement 'data='
+31) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(86): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0005' in statement 'data='
+32) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(87): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0018' in statement 'data='
+33) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(92): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
+34) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(93): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0002' in statement 'data='
+35) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(94): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0003' in statement 'data='
+36) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(95): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0005' in statement 'data='
+37) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(96): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0018' in statement 'data='
+38) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
+39) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
+40) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
+41) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
+42) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
+43) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
+44) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
+45) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
+
+Warning(s):
+ 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
+ 2) *Initialization*:1: warning: this is the location of the previous definition
+ 3) WARNING: Unknown keyword ''.  Line 319 ignored
+ 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1693 ignored
+ 5) WARNING: Unknown keyword '***'.  Line 2232 ignored
+ 6) WARNING: Unknown keyword '***'.  Line 2424 ignored
+ 7) WARNING: Unknown keyword '***'.  Line 2847 ignored
+ 8) WARNING: Unknown keyword '***'.  Line 2875 ignored
+ 9) WARNING: Unknown keyword ''.  Line 319 ignored
+10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1693 ignored
+11) WARNING: Unknown keyword '***'.  Line 2232 ignored
+12) WARNING: Unknown keyword '***'.  Line 2424 ignored
+13) WARNING: Unknown keyword '***'.  Line 2847 ignored
+14) WARNING: Unknown keyword '***'.  Line 2875 ignored
+Creating ROFS2 symbol file
++++ HiRes End 1226579142.96725
+++ Finished at Thu Nov 13 14:25:42 2008
+=== config_1 == configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_16
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_16
+++ Started at Thu Nov 13 14:25:44 2008
++++ HiRes Start 1226579144.07662
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=rnd"  langpack_16  WORKDIR=\epoc32\rombuild\imaker_temp/conf_14
+iMaker 08.43.01, 20-Oct-2008.
+Variant target             USE_VARIANTBLD = `2'
+Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_16'
+Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_16/language_variant.mk'
+Variant include directory  VARIANT_INCDIR = -
+Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_16/variant.confml'
+Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
+Variant SIS directory      VARIANT_SISDIR = -
+Variant operator cache dir VARIANT_OPCDIR = -
+Variant zip content dir    VARIANT_ZIPDIR = -
+Variant copy content dir   VARIANT_CPDIR  = -
+Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/rnd/langpack/langpack_16/variant'
+Calling S60 Configuration Tool
+Generating file(s) for ROFS2 image creation
+Generating language files for Language Package image creation
+Creating ROFS2 SOS image
+
+Missing file(s):
+ 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(42): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r02' in statement 'data='
+ 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(43): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r10' in statement 'data='
+ 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(44): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r18' in statement 'data='
+ 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(45): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r76' in statement 'data='
+ 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(46): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r83' in statement 'data='
+ 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(39): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\02\appshelldata.dtd' in statement 'data='
+ 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(40): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\10\appshelldata.dtd' in statement 'data='
+ 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\18\appshelldata.dtd' in statement 'data='
+ 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\76\appshelldata.dtd' in statement 'data='
+10) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\83\appshelldata.dtd' in statement 'data='
+11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0002' in statement 'data='
+12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(46): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0010' in statement 'data='
+13) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(47): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0018' in statement 'data='
+14) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(48): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0076' in statement 'data='
+15) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(49): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0083' in statement 'data='
+16) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0002' in statement 'data='
+17) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0010' in statement 'data='
+18) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(52): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0018' in statement 'data='
+19) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(53): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0076' in statement 'data='
+20) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(54): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0083' in statement 'data='
+21) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(65): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0002' in statement 'data='
+22) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(66): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0010' in statement 'data='
+23) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(67): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0018' in statement 'data='
+24) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(68): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0076' in statement 'data='
+25) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(69): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0083' in statement 'data='
+26) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(74): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0002' in statement 'data='
+27) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(75): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0010' in statement 'data='
+28) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(76): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0018' in statement 'data='
+29) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(77): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0076' in statement 'data='
+30) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(78): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0083' in statement 'data='
+31) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(83): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0002' in statement 'data='
+32) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(84): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0010' in statement 'data='
+33) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(85): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0018' in statement 'data='
+34) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(86): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0076' in statement 'data='
+35) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(87): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0083' in statement 'data='
+36) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(92): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0002' in statement 'data='
+37) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(93): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0010' in statement 'data='
+38) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(94): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0018' in statement 'data='
+39) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(95): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0076' in statement 'data='
+40) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(96): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0083' in statement 'data='
+
+Warning(s):
+ 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
+ 2) *Initialization*:1: warning: this is the location of the previous definition
+ 3) WARNING: Unknown keyword ''.  Line 319 ignored
+ 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1695 ignored
+ 5) WARNING: Unknown keyword '***'.  Line 2234 ignored
+ 6) WARNING: Unknown keyword '***'.  Line 2426 ignored
+ 7) WARNING: Unknown keyword '***'.  Line 2849 ignored
+ 8) WARNING: Unknown keyword '***'.  Line 2877 ignored
+ 9) WARNING: Unknown keyword ''.  Line 319 ignored
+10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1695 ignored
+11) WARNING: Unknown keyword '***'.  Line 2234 ignored
+12) WARNING: Unknown keyword '***'.  Line 2426 ignored
+13) WARNING: Unknown keyword '***'.  Line 2849 ignored
+14) WARNING: Unknown keyword '***'.  Line 2877 ignored
+Creating ROFS2 symbol file
++++ HiRes End 1226579195.70129
+++ Finished at Thu Nov 13 14:26:35 2008
+=== config_1 == configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_17
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_17
+++ Started at Thu Nov 13 14:26:36 2008
++++ HiRes Start 1226579196.82628
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=rnd"  langpack_17  WORKDIR=\epoc32\rombuild\imaker_temp/conf_15
+iMaker 08.43.01, 20-Oct-2008.
+Variant target             USE_VARIANTBLD = `2'
+Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_17'
+Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_17/language_variant.mk'
+Variant include directory  VARIANT_INCDIR = -
+Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_17/variant.confml'
+Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
+Variant SIS directory      VARIANT_SISDIR = -
+Variant operator cache dir VARIANT_OPCDIR = -
+Variant zip content dir    VARIANT_ZIPDIR = -
+Variant copy content dir   VARIANT_CPDIR  = -
+Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/rnd/langpack/langpack_17/variant'
+Calling S60 Configuration Tool
+Generating file(s) for ROFS2 image creation
+Generating language files for Language Package image creation
+Creating ROFS2 SOS image
+
+Missing file(s):
+ 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(37): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r10' in statement 'data='
+ 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(38): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r51' in statement 'data='
+ 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(39): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r76' in statement 'data='
+ 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(40): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r83' in statement 'data='
+ 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(38): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\10\appshelldata.dtd' in statement 'data='
+ 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(39): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\51\appshelldata.dtd' in statement 'data='
+ 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(40): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\76\appshelldata.dtd' in statement 'data='
+ 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\83\appshelldata.dtd' in statement 'data='
+ 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0010' in statement 'data='
+10) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(44): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0051' in statement 'data='
+11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0076' in statement 'data='
+12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(46): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0083' in statement 'data='
+13) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(47): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0010' in statement 'data='
+14) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(48): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0051' in statement 'data='
+15) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(49): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0076' in statement 'data='
+16) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0083' in statement 'data='
+17) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(60): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0010' in statement 'data='
+18) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(61): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0051' in statement 'data='
+19) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(62): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0076' in statement 'data='
+20) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(63): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0083' in statement 'data='
+21) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(68): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0010' in statement 'data='
+22) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(69): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0051' in statement 'data='
+23) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(70): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0076' in statement 'data='
+24) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(71): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0083' in statement 'data='
+25) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(76): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0010' in statement 'data='
+26) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(77): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0051' in statement 'data='
+27) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(78): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0076' in statement 'data='
+28) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(79): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0083' in statement 'data='
+29) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(84): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0010' in statement 'data='
+30) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(85): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0051' in statement 'data='
+31) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(86): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0076' in statement 'data='
+32) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(87): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0083' in statement 'data='
+
+Warning(s):
+ 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
+ 2) *Initialization*:1: warning: this is the location of the previous definition
+ 3) WARNING: Unknown keyword ''.  Line 268 ignored
+ 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1406 ignored
+ 5) WARNING: Unknown keyword '***'.  Line 1854 ignored
+ 6) WARNING: Unknown keyword '***'.  Line 2014 ignored
+ 7) WARNING: Unknown keyword '***'.  Line 2366 ignored
+ 8) WARNING: Unknown keyword '***'.  Line 2389 ignored
+ 9) WARNING: Unknown keyword ''.  Line 268 ignored
+10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1406 ignored
+11) WARNING: Unknown keyword '***'.  Line 1854 ignored
+12) WARNING: Unknown keyword '***'.  Line 2014 ignored
+13) WARNING: Unknown keyword '***'.  Line 2366 ignored
+14) WARNING: Unknown keyword '***'.  Line 2389 ignored
+Creating ROFS2 symbol file
++++ HiRes End 1226579241.326
+++ Finished at Thu Nov 13 14:27:21 2008
+=== config_1 == configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_18
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_18
+++ Started at Thu Nov 13 14:27:22 2008
++++ HiRes Start 1226579242.26349
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=rnd"  langpack_18  WORKDIR=\epoc32\rombuild\imaker_temp/conf_16
+iMaker 08.43.01, 20-Oct-2008.
+Variant target             USE_VARIANTBLD = `2'
+Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_18'
+Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_18/language_variant.mk'
+Variant include directory  VARIANT_INCDIR = -
+Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_18/variant.confml'
+Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
+Variant SIS directory      VARIANT_SISDIR = -
+Variant operator cache dir VARIANT_OPCDIR = -
+Variant zip content dir    VARIANT_ZIPDIR = -
+Variant copy content dir   VARIANT_CPDIR  = -
+Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/rnd/langpack/langpack_18/variant'
+Calling S60 Configuration Tool
+Generating file(s) for ROFS2 image creation
+Generating language files for Language Package image creation
+Creating ROFS2 SOS image
+
+Missing file(s):
+ 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(27): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
+ 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(28): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r33' in statement 'data='
+ 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(37): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\33\appshelldata.dtd' in statement 'data='
+ 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(40): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0033' in statement 'data='
+ 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0033' in statement 'data='
+ 6) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
+ 7) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0033' in statement 'data='
+ 8) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
+ 9) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0033' in statement 'data='
+10) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(62): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
+11) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(63): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0033' in statement 'data='
+12) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(68): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
+13) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(69): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0033' in statement 'data='
+14) Y:\epoc32\rom\Variant\localized_resources.iby(905): Missing file: '\epoc32\data\Z\resource\CalenThaiPluginData.r33' in statement 'data='
+15) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
+16) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
+17) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
+18) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
+19) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
+20) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
+21) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
+22) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
+
+Warning(s):
+ 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
+ 2) *Initialization*:1: warning: this is the location of the previous definition
+ 3) WARNING: Unknown keyword ''.  Line 166 ignored
+ 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 826 ignored
+ 5) WARNING: Unknown keyword '***'.  Line 1092 ignored
+ 6) WARNING: Unknown keyword '***'.  Line 1188 ignored
+ 7) WARNING: Unknown keyword '***'.  Line 1398 ignored
+ 8) WARNING: Unknown keyword '***'.  Line 1411 ignored
+ 9) WARNING: Unknown keyword ''.  Line 166 ignored
+10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 826 ignored
+11) WARNING: Unknown keyword '***'.  Line 1092 ignored
+12) WARNING: Unknown keyword '***'.  Line 1188 ignored
+13) WARNING: Unknown keyword '***'.  Line 1398 ignored
+14) WARNING: Unknown keyword '***'.  Line 1411 ignored
+Creating ROFS2 symbol file
++++ HiRes End 1226579276.81014
+++ Finished at Thu Nov 13 14:27:56 2008
+=== config_1 == configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_19
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_19
+++ Started at Thu Nov 13 14:27:57 2008
++++ HiRes Start 1226579277.49764
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=rnd"  langpack_19  WORKDIR=\epoc32\rombuild\imaker_temp/conf_17
+iMaker 08.43.01, 20-Oct-2008.
+Variant target             USE_VARIANTBLD = `2'
+Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_19'
+Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_19/language_variant.mk'
+Variant include directory  VARIANT_INCDIR = -
+Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_19/variant.confml'
+Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
+Variant SIS directory      VARIANT_SISDIR = -
+Variant operator cache dir VARIANT_OPCDIR = -
+Variant zip content dir    VARIANT_ZIPDIR = -
+Variant copy content dir   VARIANT_CPDIR  = -
+Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/rnd/langpack/langpack_19/variant'
+Calling S60 Configuration Tool
+Generating file(s) for ROFS2 image creation
+Generating language files for Language Package image creation
+Creating ROFS2 SOS image
+
+Missing file(s):
+ 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(27): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
+ 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(28): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r39' in statement 'data='
+ 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(37): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\39\appshelldata.dtd' in statement 'data='
+ 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(40): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0039' in statement 'data='
+ 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0039' in statement 'data='
+ 6) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
+ 7) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0039' in statement 'data='
+ 8) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
+ 9) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0039' in statement 'data='
+10) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(62): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
+11) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(63): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0039' in statement 'data='
+12) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(68): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
+13) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(69): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0039' in statement 'data='
+14) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
+15) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
+16) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
+17) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
+18) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
+19) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
+20) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
+21) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
+
+Warning(s):
+ 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
+ 2) *Initialization*:1: warning: this is the location of the previous definition
+ 3) WARNING: Unknown keyword ''.  Line 166 ignored
+ 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 826 ignored
+ 5) WARNING: Unknown keyword '***'.  Line 1092 ignored
+ 6) WARNING: Unknown keyword '***'.  Line 1188 ignored
+ 7) WARNING: Unknown keyword '***'.  Line 1398 ignored
+ 8) WARNING: Unknown keyword '***'.  Line 1411 ignored
+ 9) WARNING: Unknown keyword ''.  Line 166 ignored
+10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 826 ignored
+11) WARNING: Unknown keyword '***'.  Line 1092 ignored
+12) WARNING: Unknown keyword '***'.  Line 1188 ignored
+13) WARNING: Unknown keyword '***'.  Line 1398 ignored
+14) WARNING: Unknown keyword '***'.  Line 1411 ignored
+Creating ROFS2 symbol file
++++ HiRes End 1226579311.52867
+++ Finished at Thu Nov 13 14:28:31 2008
+=== config_1 == configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_20
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_20
+++ Started at Thu Nov 13 14:28:32 2008
++++ HiRes Start 1226579312.21617
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=rnd"  langpack_20  WORKDIR=\epoc32\rombuild\imaker_temp/conf_18
+iMaker 08.43.01, 20-Oct-2008.
+Variant target             USE_VARIANTBLD = `2'
+Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_20'
+Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_20/language_variant.mk'
+Variant include directory  VARIANT_INCDIR = -
+Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_20/variant.confml'
+Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
+Variant SIS directory      VARIANT_SISDIR = -
+Variant operator cache dir VARIANT_OPCDIR = -
+Variant zip content dir    VARIANT_ZIPDIR = -
+Variant copy content dir   VARIANT_CPDIR  = -
+Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/rnd/langpack/langpack_20/variant'
+Calling S60 Configuration Tool
+Generating file(s) for ROFS2 image creation
+Generating language files for Language Package image creation
+Creating ROFS2 SOS image
+
+Missing file(s):
+ 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(27): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
+ 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(28): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r96' in statement 'data='
+ 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(37): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\96\appshelldata.dtd' in statement 'data='
+ 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(40): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0096' in statement 'data='
+ 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0096' in statement 'data='
+ 6) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
+ 7) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0096' in statement 'data='
+ 8) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
+ 9) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0096' in statement 'data='
+10) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(62): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
+11) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(63): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0096' in statement 'data='
+12) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(68): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
+13) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(69): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0096' in statement 'data='
+14) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
+15) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
+16) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
+17) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
+18) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
+19) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
+20) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
+21) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
+
+Warning(s):
+ 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
+ 2) *Initialization*:1: warning: this is the location of the previous definition
+ 3) WARNING: Unknown keyword ''.  Line 166 ignored
+ 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 826 ignored
+ 5) WARNING: Unknown keyword '***'.  Line 1092 ignored
+ 6) WARNING: Unknown keyword '***'.  Line 1188 ignored
+ 7) WARNING: Unknown keyword '***'.  Line 1398 ignored
+ 8) WARNING: Unknown keyword '***'.  Line 1411 ignored
+ 9) WARNING: Unknown keyword ''.  Line 166 ignored
+10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 826 ignored
+11) WARNING: Unknown keyword '***'.  Line 1092 ignored
+12) WARNING: Unknown keyword '***'.  Line 1188 ignored
+13) WARNING: Unknown keyword '***'.  Line 1398 ignored
+14) WARNING: Unknown keyword '***'.  Line 1411 ignored
+Creating ROFS2 symbol file
++++ HiRes End 1226579346.9347
+++ Finished at Thu Nov 13 14:29:06 2008
+=== config_1 == configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_22
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_22
+++ Started at Thu Nov 13 14:29:07 2008
++++ HiRes Start 1226579347.60657
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=rnd"  langpack_22  WORKDIR=\epoc32\rombuild\imaker_temp/conf_19
+iMaker 08.43.01, 20-Oct-2008.
+Variant target             USE_VARIANTBLD = `2'
+Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_22'
+Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_22/language_variant.mk'
+Variant include directory  VARIANT_INCDIR = -
+Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_22/variant.confml'
+Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
+Variant SIS directory      VARIANT_SISDIR = -
+Variant operator cache dir VARIANT_OPCDIR = -
+Variant zip content dir    VARIANT_ZIPDIR = -
+Variant copy content dir   VARIANT_CPDIR  = -
+Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/rnd/langpack/langpack_22/variant'
+Calling S60 Configuration Tool
+Generating file(s) for ROFS2 image creation
+Generating language files for Language Package image creation
+Creating ROFS2 SOS image
+
+Missing file(s):
+ 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(37): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r159' in statement 'data='
+ 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(38): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r31' in statement 'data='
+ 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(39): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r326' in statement 'data='
+ 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(40): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r327' in statement 'data='
+ 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(38): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\159\appshelldata.dtd' in statement 'data='
+ 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(39): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\31\appshelldata.dtd' in statement 'data='
+ 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(40): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\326\appshelldata.dtd' in statement 'data='
+ 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\327\appshelldata.dtd' in statement 'data='
+ 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0159' in statement 'data='
+10) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(44): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0031' in statement 'data='
+11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0326' in statement 'data='
+12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(46): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0327' in statement 'data='
+13) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(47): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0159' in statement 'data='
+14) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(48): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0031' in statement 'data='
+15) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(49): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0326' in statement 'data='
+16) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0327' in statement 'data='
+17) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(60): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0159' in statement 'data='
+18) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(61): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0031' in statement 'data='
+19) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(62): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0326' in statement 'data='
+20) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(63): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0327' in statement 'data='
+21) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(68): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0159' in statement 'data='
+22) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(69): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0031' in statement 'data='
+23) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(70): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0326' in statement 'data='
+24) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(71): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0327' in statement 'data='
+25) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(76): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0159' in statement 'data='
+26) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(77): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0031' in statement 'data='
+27) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(78): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0326' in statement 'data='
+28) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(79): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0327' in statement 'data='
+29) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(84): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0159' in statement 'data='
+30) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(85): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0031' in statement 'data='
+31) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(86): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0326' in statement 'data='
+32) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(87): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0327' in statement 'data='
+
+Warning(s):
+ 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
+ 2) *Initialization*:1: warning: this is the location of the previous definition
+ 3) WARNING: Unknown keyword ''.  Line 268 ignored
+ 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1406 ignored
+ 5) WARNING: Unknown keyword '***'.  Line 1854 ignored
+ 6) WARNING: Unknown keyword '***'.  Line 2014 ignored
+ 7) WARNING: Unknown keyword '***'.  Line 2366 ignored
+ 8) WARNING: Unknown keyword '***'.  Line 2389 ignored
+ 9) WARNING: Unknown keyword ''.  Line 268 ignored
+10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1406 ignored
+11) WARNING: Unknown keyword '***'.  Line 1854 ignored
+12) WARNING: Unknown keyword '***'.  Line 2014 ignored
+13) WARNING: Unknown keyword '***'.  Line 2366 ignored
+14) WARNING: Unknown keyword '***'.  Line 2389 ignored
+Creating ROFS2 symbol file
++++ HiRes End 1226579392.32503
+++ Finished at Thu Nov 13 14:29:52 2008
+=== config_1 == configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_23
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_23
+++ Started at Thu Nov 13 14:29:53 2008
++++ HiRes Start 1226579393.1219
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=rnd"  langpack_23  WORKDIR=\epoc32\rombuild\imaker_temp/conf_20
+iMaker 08.43.01, 20-Oct-2008.
+Variant target             USE_VARIANTBLD = `2'
+Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_23'
+Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_23/language_variant.mk'
+Variant include directory  VARIANT_INCDIR = -
+Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_23/variant.confml'
+Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
+Variant SIS directory      VARIANT_SISDIR = -
+Variant operator cache dir VARIANT_OPCDIR = -
+Variant zip content dir    VARIANT_ZIPDIR = -
+Variant copy content dir   VARIANT_CPDIR  = -
+Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/rnd/langpack/langpack_23/variant'
+Calling S60 Configuration Tool
+Generating file(s) for ROFS2 image creation
+Generating language files for Language Package image creation
+Creating ROFS2 SOS image
+
+Missing file(s):
+ 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(32): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r158' in statement 'data='
+ 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(33): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r30' in statement 'data='
+ 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(34): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r31' in statement 'data='
+ 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(37): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\158\appshelldata.dtd' in statement 'data='
+ 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(38): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\30\appshelldata.dtd' in statement 'data='
+ 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(39): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\31\appshelldata.dtd' in statement 'data='
+ 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0158' in statement 'data='
+ 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0030' in statement 'data='
+ 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0031' in statement 'data='
+10) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(44): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0158' in statement 'data='
+11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0030' in statement 'data='
+12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(46): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0031' in statement 'data='
+13) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(55): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0158' in statement 'data='
+14) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0030' in statement 'data='
+15) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0031' in statement 'data='
+16) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(62): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0158' in statement 'data='
+17) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(63): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0030' in statement 'data='
+18) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(64): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0031' in statement 'data='
+19) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(69): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0158' in statement 'data='
+20) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(70): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0030' in statement 'data='
+21) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(71): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0031' in statement 'data='
+22) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(76): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0158' in statement 'data='
+23) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(77): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0030' in statement 'data='
+24) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(78): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0031' in statement 'data='
+
+Warning(s):
+ 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
+ 2) *Initialization*:1: warning: this is the location of the previous definition
+ 3) WARNING: Unknown keyword ''.  Line 217 ignored
+ 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1117 ignored
+ 5) WARNING: Unknown keyword '***'.  Line 1474 ignored
+ 6) WARNING: Unknown keyword '***'.  Line 1602 ignored
+ 7) WARNING: Unknown keyword '***'.  Line 1883 ignored
+ 8) WARNING: Unknown keyword '***'.  Line 1901 ignored
+ 9) WARNING: Unknown keyword ''.  Line 217 ignored
+10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1117 ignored
+11) WARNING: Unknown keyword '***'.  Line 1474 ignored
+12) WARNING: Unknown keyword '***'.  Line 1602 ignored
+13) WARNING: Unknown keyword '***'.  Line 1883 ignored
+14) WARNING: Unknown keyword '***'.  Line 1901 ignored
+Creating ROFS2 symbol file
++++ HiRes End 1226579433.99664
+++ Finished at Thu Nov 13 14:30:34 2008
+=== config_1 == configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_24
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_24
+++ Started at Thu Nov 13 14:30:34 2008
++++ HiRes Start 1226579434.76226
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=rnd"  langpack_24  WORKDIR=\epoc32\rombuild\imaker_temp/conf_21
+iMaker 08.43.01, 20-Oct-2008.
+Variant target             USE_VARIANTBLD = `2'
+Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_24'
+Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_24/language_variant.mk'
+Variant include directory  VARIANT_INCDIR = -
+Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_24/variant.confml'
+Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
+Variant SIS directory      VARIANT_SISDIR = -
+Variant operator cache dir VARIANT_OPCDIR = -
+Variant zip content dir    VARIANT_ZIPDIR = -
+Variant copy content dir   VARIANT_CPDIR  = -
+Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/rnd/langpack/langpack_24/variant'
+Calling S60 Configuration Tool
+Generating file(s) for ROFS2 image creation
+Generating language files for Language Package image creation
+Creating ROFS2 SOS image
+
+Missing file(s):
+ 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(27): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r157' in statement 'data='
+ 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(28): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r29' in statement 'data='
+ 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(36): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\157\appshelldata.dtd' in statement 'data='
+ 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(37): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\29\appshelldata.dtd' in statement 'data='
+ 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(39): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0157' in statement 'data='
+ 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(40): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0029' in statement 'data='
+ 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0157' in statement 'data='
+ 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0029' in statement 'data='
+ 9) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0157' in statement 'data='
+10) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0029' in statement 'data='
+11) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0157' in statement 'data='
+12) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0029' in statement 'data='
+13) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(62): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0157' in statement 'data='
+14) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(63): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0029' in statement 'data='
+15) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(68): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0157' in statement 'data='
+16) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(69): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0029' in statement 'data='
+
+Warning(s):
+ 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
+ 2) *Initialization*:1: warning: this is the location of the previous definition
+ 3) WARNING: Unknown keyword ''.  Line 166 ignored
+ 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 828 ignored
+ 5) WARNING: Unknown keyword '***'.  Line 1094 ignored
+ 6) WARNING: Unknown keyword '***'.  Line 1190 ignored
+ 7) WARNING: Unknown keyword '***'.  Line 1400 ignored
+ 8) WARNING: Unknown keyword '***'.  Line 1413 ignored
+ 9) WARNING: Unknown keyword ''.  Line 166 ignored
+10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 828 ignored
+11) WARNING: Unknown keyword '***'.  Line 1094 ignored
+12) WARNING: Unknown keyword '***'.  Line 1190 ignored
+13) WARNING: Unknown keyword '***'.  Line 1400 ignored
+14) WARNING: Unknown keyword '***'.  Line 1413 ignored
+Creating ROFS2 symbol file
++++ HiRes End 1226579469.90266
+++ Finished at Thu Nov 13 14:31:09 2008
+=== config_1 == configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_25
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_25
+++ Started at Thu Nov 13 14:31:10 2008
++++ HiRes Start 1226579470.6214
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=rnd"  langpack_25  WORKDIR=\epoc32\rombuild\imaker_temp/conf_22
+iMaker 08.43.01, 20-Oct-2008.
+Variant target             USE_VARIANTBLD = `2'
+Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_25'
+Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_25/language_variant.mk'
+Variant include directory  VARIANT_INCDIR = -
+Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_25/variant.confml'
+Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
+Variant SIS directory      VARIANT_SISDIR = -
+Variant operator cache dir VARIANT_OPCDIR = -
+Variant zip content dir    VARIANT_ZIPDIR = -
+Variant copy content dir   VARIANT_CPDIR  = -
+Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/rnd/langpack/langpack_25/variant'
+Calling S60 Configuration Tool
+Generating file(s) for ROFS2 image creation
+Generating language files for Language Package image creation
+Creating ROFS2 SOS image
+
+Missing file(s):
+ 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(27): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r159' in statement 'data='
+ 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(28): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r31' in statement 'data='
+ 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(36): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\159\appshelldata.dtd' in statement 'data='
+ 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(37): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\31\appshelldata.dtd' in statement 'data='
+ 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(39): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0159' in statement 'data='
+ 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(40): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0031' in statement 'data='
+ 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0159' in statement 'data='
+ 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0031' in statement 'data='
+ 9) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0159' in statement 'data='
+10) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0031' in statement 'data='
+11) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0159' in statement 'data='
+12) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0031' in statement 'data='
+13) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(62): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0159' in statement 'data='
+14) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(63): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0031' in statement 'data='
+15) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(68): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0159' in statement 'data='
+16) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(69): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0031' in statement 'data='
+
+Warning(s):
+ 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
+ 2) *Initialization*:1: warning: this is the location of the previous definition
+ 3) WARNING: Unknown keyword ''.  Line 166 ignored
+ 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 828 ignored
+ 5) WARNING: Unknown keyword '***'.  Line 1094 ignored
+ 6) WARNING: Unknown keyword '***'.  Line 1190 ignored
+ 7) WARNING: Unknown keyword '***'.  Line 1400 ignored
+ 8) WARNING: Unknown keyword '***'.  Line 1413 ignored
+ 9) WARNING: Unknown keyword ''.  Line 166 ignored
+10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 828 ignored
+11) WARNING: Unknown keyword '***'.  Line 1094 ignored
+12) WARNING: Unknown keyword '***'.  Line 1190 ignored
+13) WARNING: Unknown keyword '***'.  Line 1400 ignored
+14) WARNING: Unknown keyword '***'.  Line 1413 ignored
+Creating ROFS2 symbol file
++++ HiRes End 1226579500.90246
+++ Finished at Thu Nov 13 14:31:40 2008
+=== config_1 == configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_27
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_27
+++ Started at Thu Nov 13 14:31:41 2008
++++ HiRes Start 1226579501.68371
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=rnd"  langpack_27  WORKDIR=\epoc32\rombuild\imaker_temp/conf_23
+iMaker 08.43.01, 20-Oct-2008.
+Variant target             USE_VARIANTBLD = `2'
+Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_27'
+Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_27/language_variant.mk'
+Variant include directory  VARIANT_INCDIR = -
+Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_27/variant.confml'
+Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
+Variant SIS directory      VARIANT_SISDIR = -
+Variant operator cache dir VARIANT_OPCDIR = -
+Variant zip content dir    VARIANT_ZIPDIR = -
+Variant copy content dir   VARIANT_CPDIR  = -
+Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/rnd/langpack/langpack_27/variant'
+Calling S60 Configuration Tool
+Generating file(s) for ROFS2 image creation
+Generating language files for Language Package image creation
+Creating ROFS2 SOS image
+
+Missing file(s):
+ 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(27): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r160' in statement 'data='
+ 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(28): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r32' in statement 'data='
+ 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(36): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\160\appshelldata.dtd' in statement 'data='
+ 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(37): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\32\appshelldata.dtd' in statement 'data='
+ 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(39): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0160' in statement 'data='
+ 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(40): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0032' in statement 'data='
+ 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0160' in statement 'data='
+ 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0032' in statement 'data='
+ 9) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0160' in statement 'data='
+10) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0032' in statement 'data='
+11) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0160' in statement 'data='
+12) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0032' in statement 'data='
+13) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(62): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0160' in statement 'data='
+14) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(63): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0032' in statement 'data='
+15) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(68): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0160' in statement 'data='
+16) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(69): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0032' in statement 'data='
+
+Warning(s):
+ 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
+ 2) *Initialization*:1: warning: this is the location of the previous definition
+ 3) WARNING: Unknown keyword ''.  Line 166 ignored
+ 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 828 ignored
+ 5) WARNING: Unknown keyword '***'.  Line 1094 ignored
+ 6) WARNING: Unknown keyword '***'.  Line 1190 ignored
+ 7) WARNING: Unknown keyword '***'.  Line 1400 ignored
+ 8) WARNING: Unknown keyword '***'.  Line 1413 ignored
+ 9) WARNING: Unknown keyword ''.  Line 166 ignored
+10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 828 ignored
+11) WARNING: Unknown keyword '***'.  Line 1094 ignored
+12) WARNING: Unknown keyword '***'.  Line 1190 ignored
+13) WARNING: Unknown keyword '***'.  Line 1400 ignored
+14) WARNING: Unknown keyword '***'.  Line 1413 ignored
+Creating ROFS2 symbol file
++++ HiRes End 1226579536.43348
+++ Finished at Thu Nov 13 14:32:16 2008
+=== config_1 == signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_core
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... core
+++ Started at Thu Nov 13 14:32:17 2008
++++ HiRes Start 1226579537.7145
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=rnd"  core  WORKDIR=\epoc32\rombuild\imaker_temp/conf_0
+iMaker 08.43.01, 20-Oct-2008.
+Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
+Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
+*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
+make: [signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_core] Error 1 (ignored)
++++ HiRes End 1226579538.46442
+++ Finished at Thu Nov 13 14:32:18 2008
+=== config_1 == signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_01
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_01
+++ Started at Thu Nov 13 14:32:18 2008
++++ HiRes Start 1226579538.57378
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=rnd"  langpack_01  WORKDIR=\epoc32\rombuild\imaker_temp/conf_1
+iMaker 08.43.01, 20-Oct-2008.
+Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
+Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
+*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
+make: [signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_01] Error 1 (ignored)
++++ HiRes End 1226579538.74563
+++ Finished at Thu Nov 13 14:32:18 2008
+=== config_1 == signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_02
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_02
+++ Started at Thu Nov 13 14:32:18 2008
++++ HiRes Start 1226579538.83937
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=rnd"  langpack_02  WORKDIR=\epoc32\rombuild\imaker_temp/conf_2
+iMaker 08.43.01, 20-Oct-2008.
+Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
+Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
+*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
+make: [signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_02] Error 1 (ignored)
++++ HiRes End 1226579538.99561
+++ Finished at Thu Nov 13 14:32:19 2008
+=== config_1 == signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_03
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_03
+++ Started at Thu Nov 13 14:32:19 2008
++++ HiRes Start 1226579539.08935
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=rnd"  langpack_03  WORKDIR=\epoc32\rombuild\imaker_temp/conf_3
+iMaker 08.43.01, 20-Oct-2008.
+Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
+Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
+*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
+make: [signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_03] Error 1 (ignored)
++++ HiRes End 1226579539.24558
+++ Finished at Thu Nov 13 14:32:19 2008
+=== config_1 == signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_04
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_04
+++ Started at Thu Nov 13 14:32:19 2008
++++ HiRes Start 1226579539.33932
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=rnd"  langpack_04  WORKDIR=\epoc32\rombuild\imaker_temp/conf_4
+iMaker 08.43.01, 20-Oct-2008.
+Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
+Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
+*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
+make: [signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_04] Error 1 (ignored)
++++ HiRes End 1226579539.49555
+++ Finished at Thu Nov 13 14:32:19 2008
+=== config_1 == signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_05
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_05
+++ Started at Thu Nov 13 14:32:19 2008
++++ HiRes Start 1226579539.58929
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=rnd"  langpack_05  WORKDIR=\epoc32\rombuild\imaker_temp/conf_5
+iMaker 08.43.01, 20-Oct-2008.
+Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
+Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
+*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
+make: [signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_05] Error 1 (ignored)
++++ HiRes End 1226579539.74553
+++ Finished at Thu Nov 13 14:32:19 2008
+=== config_1 == signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_06
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_06
+++ Started at Thu Nov 13 14:32:19 2008
++++ HiRes Start 1226579539.83927
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=rnd"  langpack_06  WORKDIR=\epoc32\rombuild\imaker_temp/conf_6
+iMaker 08.43.01, 20-Oct-2008.
+Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
+Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
+*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
+make: [signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_06] Error 1 (ignored)
++++ HiRes End 1226579540.01112
+++ Finished at Thu Nov 13 14:32:20 2008
+=== config_1 == signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_07
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_07
+++ Started at Thu Nov 13 14:32:20 2008
++++ HiRes Start 1226579540.10486
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=rnd"  langpack_07  WORKDIR=\epoc32\rombuild\imaker_temp/conf_7
+iMaker 08.43.01, 20-Oct-2008.
+Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
+Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
+*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
+make: [signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_07] Error 1 (ignored)
++++ HiRes End 1226579540.26109
+++ Finished at Thu Nov 13 14:32:20 2008
+=== config_1 == signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_08
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_08
+++ Started at Thu Nov 13 14:32:20 2008
++++ HiRes Start 1226579540.35483
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=rnd"  langpack_08  WORKDIR=\epoc32\rombuild\imaker_temp/conf_8
+iMaker 08.43.01, 20-Oct-2008.
+Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
+Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
+*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
+make: [signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_08] Error 1 (ignored)
++++ HiRes End 1226579540.51107
+++ Finished at Thu Nov 13 14:32:20 2008
+=== config_1 == signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_09
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_09
+++ Started at Thu Nov 13 14:32:20 2008
++++ HiRes Start 1226579540.60481
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=rnd"  langpack_09  WORKDIR=\epoc32\rombuild\imaker_temp/conf_9
+iMaker 08.43.01, 20-Oct-2008.
+Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
+Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
+*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
+make: [signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_09] Error 1 (ignored)
++++ HiRes End 1226579540.77666
+++ Finished at Thu Nov 13 14:32:20 2008
+=== config_1 == signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_11
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_11
+++ Started at Thu Nov 13 14:32:20 2008
++++ HiRes Start 1226579540.8704
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=rnd"  langpack_11  WORKDIR=\epoc32\rombuild\imaker_temp/conf_10
+iMaker 08.43.01, 20-Oct-2008.
+Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
+Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
+*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
+make: [signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_11] Error 1 (ignored)
++++ HiRes End 1226579541.02664
+++ Finished at Thu Nov 13 14:32:21 2008
+=== config_1 == signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_12
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_12
+++ Started at Thu Nov 13 14:32:21 2008
++++ HiRes Start 1226579541.12038
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=rnd"  langpack_12  WORKDIR=\epoc32\rombuild\imaker_temp/conf_11
+iMaker 08.43.01, 20-Oct-2008.
+Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
+Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
+*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
+make: [signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_12] Error 1 (ignored)
++++ HiRes End 1226579541.29223
+++ Finished at Thu Nov 13 14:32:21 2008
+=== config_1 == signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_13
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_13
+++ Started at Thu Nov 13 14:32:21 2008
++++ HiRes Start 1226579541.38597
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=rnd"  langpack_13  WORKDIR=\epoc32\rombuild\imaker_temp/conf_12
+iMaker 08.43.01, 20-Oct-2008.
+Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
+Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
+*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
+make: [signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_13] Error 1 (ignored)
++++ HiRes End 1226579541.54221
+++ Finished at Thu Nov 13 14:32:21 2008
+=== config_1 == signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_14
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_14
+++ Started at Thu Nov 13 14:32:21 2008
++++ HiRes Start 1226579541.63595
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=rnd"  langpack_14  WORKDIR=\epoc32\rombuild\imaker_temp/conf_13
+iMaker 08.43.01, 20-Oct-2008.
+Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
+Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
+*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
+make: [signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_14] Error 1 (ignored)
++++ HiRes End 1226579541.8078
+++ Finished at Thu Nov 13 14:32:21 2008
+=== config_1 == signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_16
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_16
+++ Started at Thu Nov 13 14:32:21 2008
++++ HiRes Start 1226579541.90154
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=rnd"  langpack_16  WORKDIR=\epoc32\rombuild\imaker_temp/conf_14
+iMaker 08.43.01, 20-Oct-2008.
+Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
+Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
+*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
+make: [signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_16] Error 1 (ignored)
++++ HiRes End 1226579542.05777
+++ Finished at Thu Nov 13 14:32:22 2008
+=== config_1 == signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_17
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_17
+++ Started at Thu Nov 13 14:32:22 2008
++++ HiRes Start 1226579542.15151
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=rnd"  langpack_17  WORKDIR=\epoc32\rombuild\imaker_temp/conf_15
+iMaker 08.43.01, 20-Oct-2008.
+Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
+Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
+*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
+make: [signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_17] Error 1 (ignored)
++++ HiRes End 1226579542.32337
+++ Finished at Thu Nov 13 14:32:22 2008
+=== config_1 == signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_18
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_18
+++ Started at Thu Nov 13 14:32:22 2008
++++ HiRes Start 1226579542.41711
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=rnd"  langpack_18  WORKDIR=\epoc32\rombuild\imaker_temp/conf_16
+iMaker 08.43.01, 20-Oct-2008.
+Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
+Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
+*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
+make: [signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_18] Error 1 (ignored)
++++ HiRes End 1226579542.57334
+++ Finished at Thu Nov 13 14:32:22 2008
+=== config_1 == signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_19
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_19
+++ Started at Thu Nov 13 14:32:22 2008
++++ HiRes Start 1226579542.66708
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=rnd"  langpack_19  WORKDIR=\epoc32\rombuild\imaker_temp/conf_17
+iMaker 08.43.01, 20-Oct-2008.
+Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
+Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
+*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
+make: [signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_19] Error 1 (ignored)
++++ HiRes End 1226579542.83894
+++ Finished at Thu Nov 13 14:32:22 2008
+=== config_1 == signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_20
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_20
+++ Started at Thu Nov 13 14:32:22 2008
++++ HiRes Start 1226579542.93268
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=rnd"  langpack_20  WORKDIR=\epoc32\rombuild\imaker_temp/conf_18
+iMaker 08.43.01, 20-Oct-2008.
+Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
+Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
+*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
+make: [signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_20] Error 1 (ignored)
++++ HiRes End 1226579543.08891
+++ Finished at Thu Nov 13 14:32:23 2008
+=== config_1 == signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_22
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_22
+++ Started at Thu Nov 13 14:32:23 2008
++++ HiRes Start 1226579543.18265
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=rnd"  langpack_22  WORKDIR=\epoc32\rombuild\imaker_temp/conf_19
+iMaker 08.43.01, 20-Oct-2008.
+Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
+Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
+*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
+make: [signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_22] Error 1 (ignored)
++++ HiRes End 1226579543.35451
+++ Finished at Thu Nov 13 14:32:23 2008
+=== config_1 == signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_23
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_23
+++ Started at Thu Nov 13 14:32:23 2008
++++ HiRes Start 1226579543.44825
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=rnd"  langpack_23  WORKDIR=\epoc32\rombuild\imaker_temp/conf_20
+iMaker 08.43.01, 20-Oct-2008.
+Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
+Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
+*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
+make: [signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_23] Error 1 (ignored)
++++ HiRes End 1226579543.60448
+++ Finished at Thu Nov 13 14:32:23 2008
+=== config_1 == signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_24
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_24
+++ Started at Thu Nov 13 14:32:23 2008
++++ HiRes Start 1226579543.69822
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=rnd"  langpack_24  WORKDIR=\epoc32\rombuild\imaker_temp/conf_21
+iMaker 08.43.01, 20-Oct-2008.
+Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
+Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
+*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
+make: [signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_24] Error 1 (ignored)
++++ HiRes End 1226579543.87008
+++ Finished at Thu Nov 13 14:32:23 2008
+=== config_1 == signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_25
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_25
+++ Started at Thu Nov 13 14:32:23 2008
++++ HiRes Start 1226579543.94819
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=rnd"  langpack_25  WORKDIR=\epoc32\rombuild\imaker_temp/conf_22
+iMaker 08.43.01, 20-Oct-2008.
+Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
+Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
+*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
+make: [signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_25] Error 1 (ignored)
++++ HiRes End 1226579544.12005
+++ Finished at Thu Nov 13 14:32:24 2008
+=== config_1 == signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_27
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_27
+++ Started at Thu Nov 13 14:32:24 2008
++++ HiRes Start 1226579544.21379
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=rnd"  langpack_27  WORKDIR=\epoc32\rombuild\imaker_temp/conf_23
+iMaker 08.43.01, 20-Oct-2008.
+Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
+Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
+*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
+make: [signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_27] Error 1 (ignored)
++++ HiRes End 1226579544.37002
+++ Finished at Thu Nov 13 14:32:24 2008
+=== config_2 == configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_core
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... core
+++ Started at Thu Nov 13 14:32:24 2008
++++ HiRes Start 1226579545.07405
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=subcon"  core  WORKDIR=\epoc32\rombuild\imaker_temp/conf_24
+iMaker 08.43.01, 20-Oct-2008.
+Generating file(s) for Core image creation
+Creating Core (ROM & ROFS1) SOS image
+
+Y:\output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon>rem @echo off 
+
+Y:\output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon>setlocal
+
+Y:\output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon>perl -S buildrom.pl -loglevel1 -v -nosymbols -DFEATUREVARIANT=devlon52 -D_IMAGE_TYPE_SUBCON -D_EABI=ARMV5 -D_ASIC_VER_11 -DUSE_MULTIROFS -DDEVLON52 -es60ibymacros -DSECTION -DRND_CONTENT -cbytepair -oRX-47_200846_subcon.img y:\output/release_flash_images/devlon52/subcon/core/RX-47_200846_subcon/RX-47_200846_subcon_core_master.oby 
+* cpp -o tmp1.oby -nostdinc -undef -DFEATUREVARIANT=devlon52 -D_IMAGE_TYPE_SUBCON -D_EABI=ARMV5 -D_ASIC_VER_11 -DUSE_MULTIROFS -DDEVLON52 -DSECTION -DRND_CONTENT -I. -I "Y:\epoc32\rom\config\platform\devlon52" -I "Y:\epoc32\include\config\platform\devlon52" -I "Y:\epoc32\rom\config\platform" -I "Y:\epoc32\include\config\platform" -I "Y:\epoc32\rom\config" -I "Y:\epoc32\include\config" -I "Y:\epoc32\rom" -I "Y:\epoc32\rom\include" -I "Y:\epoc32\include\oem" -include "Y:\epoc32\include\oem\feature_settings.hrh"
+In file included from Y:\epoc32\include\config\platform\adaptation_features.hrh:25,
+                 from Y:\epoc32\include\oem\feature_settings.hrh:43,
+                 from :1:
+Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
+*Initialization*:1: warning: this is the location of the previous definition
+In file included from Y:\epoc32\rom\config\platform\ncp_components.iby:124,
+                 from Y:\epoc32\rom\config\platform\Variant\BasePorting.iby:26,
+                 from ../../../../../../epoc32/rom/master.oby:34,
+                 from y:output/release_flash_images/devlon52/subcon/core/RX-47_200846_subcon/RX-47_200846_subcon_core_master.oby:50:
+Y:\epoc32\rom\include\H4PlusHci.iby:4: warning: `#ifndef' argument starts with punctuation
+* reading y:\output/release_flash_images/devlon52/subcon/core/RX-47_200846_subcon/RX-47_200846_subcon_core_master.oby
+override.pm: Initializing; logfile =`y:\output/release_flash_images/devlon52/subcon/core/RX-47_200846_subcon/RX-47_200846_subcon_core_bldromplugin.log', debug = 0
+configpaging.pm: Initializing with configpaging_nokia.cfg
+Using export-restricted strong crytography implementation
+ROM_IMAGE[1] rofs1 size=0x10000000 xip=0 compress=0 extension=0 composite=none uncompress=0 
+* Writing tmp2.oby - result of substitution phase
+* Writing tmp3.oby - result of reorganisation phase
+* Writing tmp4.oby - result of Plugin stage
+* No language codes specified, defaulting to 01
+Converting >\epoc32\data\Z\Resource\Charconv\BUILTIN.R01< to RSC
+Converting >\epoc32\data\Z\Resource\swtlstokentype.R01< to RSC
+Converting >\epoc32\data\Z\Resource\TlsCacheServer\TlsCacheTimeouts.R01< to RSC
+Converting >\epoc32\data\Z\Resource\logeng\logwrap.R01< to RSC
+Converting >\epoc32\data\Z\Resource\Charconv\ISO88592.R01< to RSC
+Converting >\epoc32\data\Z\Resource\Charconv\ISO88593.R01< to RSC
+Converting >\epoc32\data\Z\Resource\Charconv\ISO88594.R01< to RSC
+Converting >\epoc32\data\Z\Resource\Charconv\ISO88595.R01< to RSC
+Converting >\epoc32\data\Z\Resource\Charconv\ISO88596.R01< to RSC
+Converting >\epoc32\data\Z\Resource\Charconv\ISO88597.R01< to RSC
+Converting >\epoc32\data\Z\Resource\Charconv\ISO88598.R01< to RSC
+Converting >\epoc32\data\Z\Resource\Charconv\ISO88599.R01< to RSC
+Converting >\epoc32\data\Z\Resource\Charconv\ISO885910.R01< to RSC
+Converting >\epoc32\data\Z\Resource\Charconv\ISO885913.R01< to RSC
+Converting >\epoc32\data\Z\Resource\Charconv\ISO885914.R01< to RSC
+Converting >\epoc32\data\Z\Resource\Charconv\ISO885915.R01< to RSC
+Converting >\epoc32\data\Z\Resource\Charconv\CP850.R01< to RSC
+Converting >\epoc32\data\Z\Resource\Charconv\UCS2.R01< to RSC
+Converting >\epoc32\data\Z\Resource\APPS\ApfMimeContentPolicy.R01< to RSC
+Converting >\epoc32\data\Z\resource\messaging\smss.R01< to RSC
+Converting >\epoc32\data\Z\resource\messaging\wappstr.R01< to RSC
+Converting >\epoc32\data\Z\RESOURCE\messaging\wappushunknown.R01< to RSC
+Converting >\epoc32\data\Z\Resource\fstokenserver.R01< to RSC
+Converting >\epoc32\data\Z\resource\defaultbeep.R01< to RSC
+Converting >\epoc32\data\Z\Resource\JavaHelper\JavaHelper.R01< to RSC
+Converting >\epoc32\data\Z\resource\Apps\trkapplication.R01< to RSC
+Converting >\epoc32\data\Z\resource\Apps\trkapplication_loc.R01< to RSC
+Converting >\epoc32\data\Z\private\10003a3f\Apps\trkapplication_reg.R01< to RSC
+Converting >\epoc32\data\Z\resource\Apps\trkapplication.M01< to MIF
+* Writing tmp5.oby - result of choosing language-specific files
+* Invalid image file name: \epoc32\data\Z\resource\apps\VideoEditorBitmaps.mbm or .mif
+Created ecom-0-0.spi
+Created ecom-0-1.s01
+* Writing tmp6.oby - result of SPI stage
+override.pm: ------------------------------------------------------------------
+Handling overrides...
+Replace ROM_IMAGE[0] `file=\epoc32\release\ARMV5\urel\FeatMgr.DLL		sys\bin\FEATMGR.DLL' with `file=\epoc32\release\ARMV5\urel\FeatMgr.Devlon52.DLL  sys\bin\FEATMGR.DLL'
+Replace ROM_IMAGE[0] `data=\epoc32\release\ARMV5\urel\R1_Mobile_4_0_Platform.cfg   resource\R1_Mobile_4_0_Platform.cfg' with `data=\epoc32\release\ARMV5\urel\R1_Mobile_4_0_Platform_ppd.cfg  resource\R1_Mobile_4_0_Platform.cfg'
+Replace ROM_IMAGE[0] `data=\Epoc32\Data\WSINI.ini                 System\Data\Wsini.ini' with `data=\Epoc32\Data\WSINI_devlon52.ini  System\Data\Wsini.ini'
+Replace ROM_IMAGE[0] `data=\epoc32\data\Z\Resource\versions\sw.txt		resource\versions\sw.txt' with `data=\epoc32\data\Z\Resource\versions\sw_devlon52.txt  resource\versions\sw.txt'
+Replace ROM_IMAGE[0] `data=\epoc32\data\Z\resource\Starter_Arm.rsc                resource\Starter_Arm.rsc' with `data=\epoc32\data\Z\resource\Starter_Arm_Devlon52_wop_wopc_wat_ww_wss.rsc  resource\Starter_Arm.rsc'
+Replace ROM_IMAGE[0] `data=\epoc32\data\Z\resource\starter_non_critical_1_arm.rsc resource\starter_non_critical_1.rsc' with `data=\epoc32\data\Z\resource\Starter_non_critical_1_arm_Devlon52_wop_wopc_wat_ww_wss.rsc  resource\starter_non_critical_1.rsc'
+Replace ROM_IMAGE[0] `data=\epoc32\data\Z\Resource\versions\sw_devlon52.txt  resource\versions\sw.txt' with `data=y:\output/release_flash_images/devlon52/subcon/core/RX-47_200846_subcon/RX-47_200846_subcon_core_sw.txt  resource\versions\sw.txt'
+Replace ROM_IMAGE[0] `data=\epoc32\data\Z\Resource\versions\model.txt	resource\versions\model.txt' with `data=y:\output/release_flash_images/devlon52/subcon/core/RX-47_200846_subcon/RX-47_200846_subcon_core_model.txt  resource\versions\model.txt'
+Replace ROM_IMAGE[0] `data=\epoc32\data\Z\Resource\versions\imeisv.txt	resource\versions\imeisv.txt' with `data=y:\output/release_flash_images/devlon52/subcon/core/RX-47_200846_subcon/RX-47_200846_subcon_core_imeisv.txt  resource\versions\imeisv.txt'
+Add ROM_IMAGE[0] `data=y:\output/release_flash_images/devlon52/subcon/core/RX-47_200846_subcon/RX-47_200846_subcon_core_platform.txt  resource\versions\platform.txt' from `data-override=y:\output/release_flash_images/devlon52/subcon/core/RX-47_200846_subcon/RX-47_200846_subcon_core_platform.txt  resource\versions\platform.txt'
+Add ROM_IMAGE[0] `data=y:\output/release_flash_images/devlon52/subcon/core/RX-47_200846_subcon/RX-47_200846_subcon_core_product.txt  resource\versions\product.txt' from `data-override=y:\output/release_flash_images/devlon52/subcon/core/RX-47_200846_subcon/RX-47_200846_subcon_core_product.txt  resource\versions\product.txt'
+Add ROM_IMAGE[0] `data=y:\output/release_flash_images/devlon52/subcon/core/RX-47_200846_subcon/RX-47_200846_subcon_core_fwid.txt  resource\versions\fwid1.txt' from `data-override=y:\output/release_flash_images/devlon52/subcon/core/RX-47_200846_subcon/RX-47_200846_subcon_core_fwid.txt  resource\versions\fwid1.txt'
+Replace ROM_IMAGE[0] `data=\epoc32\data\ost_dictionaries.zip                                             \Data\ost_dictionaries.zip' with `data=y:\output/release_flash_images/devlon52/subcon/core/RX-47_200846_subcon/ost_dictionaries.zip  \Data\ost_dictionaries.zip'
+override.pm: Duration: 1 seconds ----------------------------------------------
+obyparse.pm: Reading /epoc32/rombuild/odpcoderomfiles.txt
+obyparse.pm: Reading /epoc32/rombuild/odp_code_romfiles.txt
+obyparse.pm: Reading /epoc32/rombuild/odpcoderofsfiles.txt
+obyparse.pm: Reading /epoc32/rombuild/IAD_rofsfiles.txt
+obyparse.pm: Reading /epoc32/rombuild/mytraces.txt
+obyparse.pm: Processing...
+obyparse.pm: Duration: 0 seconds
+configpaging.pm: Modifying demand paging configuration using \epoc32\rom\configpaging\configpaging_nokia.cfg
+Y:\epoc32\rom\include\lightsacoreservices.iby(72): Missing file: '\epoc32\release\ARMV5\urel\LightSAIscService.DLL' in statement 'file='
+Y:\epoc32\rom\include\lightadaptation.iby(110): Missing file: '\epoc32\release\ARMV5\urel\light_sensor_adaptation.DLL' in statement 'file='
+..\..\..\..\..\..\epoc32\rom\include\core\app\IpVideo.iby(112): Missing file: '\epoc32\release\ARMV5\urel\vcxnsappui_test.exe' in statement 'file='
+..\..\..\..\..\..\epoc32\rom\include\core\app\IpVideo.iby(392): Missing file: '\epoc32\release\ARMV5\urel\VcXNotifierPlugin.DLL' in statement 'file='
+..\..\..\..\..\..\epoc32\rom\include\core\mw\advancedtspcontroller.iby(48): Missing file: '\epoc32\release\ARMV5\urel\AdvancedTspController.dll' in statement 'file='
+Y:\epoc32\rom\include\declarativeui.iby(9): Missing file: '\epoc32\release\ARMV5\urel\duiengine.dll' in statement 'file='
+Y:\epoc32\rom\include\declarativeui.iby(11): Missing file: '\epoc32\release\ARMV5\urel\duiinterpreter.dll' in statement 'file='
+Y:\epoc32\rom\include\widgetmodel.iby(9): Missing file: '\epoc32\release\ARMV5\urel\alfwidgetmodel.dll' in statement 'file='
+..\..\..\..\..\..\epoc32\rom\include\core\mw\alfwidgets.iby(19): Missing file: '\epoc32\release\ARMV5\urel\alfcontainerwidget.dll' in statement 'file='
+..\..\..\..\..\..\epoc32\rom\include\core\mw\alfwidgets.iby(23): Missing file: '\epoc32\release\ARMV5\urel\alfviewwidget.dll' in statement 'file='
+Y:\epoc32\rom\include\j9midpS60.iby(233): Missing file: '\epoc32\release\ARMV5\urel\j9_23_sip.dll' in statement 'file='
+..\..\..\..\..\..\epoc32\rom\include\core\mw\midp20.iby(224): Missing file: '\epoc32\release\ARMV5\urel\MIDP2RECOGNIZER.dll' in statement 'file='
+..\..\..\..\..\..\epoc32\rom\include\core\mw\mulcoverflowwidget.iby(46): Missing file: '\epoc32\release\ARMV5\urel\mulcoverflowwidget.dll' in statement 'file='
+..\..\..\..\..\..\epoc32\rom\include\core\mw\mullistwidget.iby(46): Missing file: '\epoc32\release\ARMV5\urel\mullistwidget.dll' in statement 'file='
+..\..\..\..\..\..\epoc32\rom\include\core\mw\mulutility.iby(46): Missing file: '\epoc32\release\armv5\urel\mulutility.dll' in statement 'file='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(250): Missing file: '\epoc32\data\Z\resource\ActivePalette2Bitmaps.mbm' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(251): Missing file: '\epoc32\data\Z\resource\activepalette2genericicons.mif' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(294): Missing file: '\epoc32\data\Z\system\sounds\audiothemes\public\Orchestral fold open.aac' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(295): Missing file: '\epoc32\data\Z\system\sounds\audiothemes\public\Orchestral fold close.aac' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(335): Missing file: '\epoc32\data\Z\Private\101f85a0\acccircle.png' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(336): Missing file: '\epoc32\data\Z\Private\101f85a0\bigtrip.png' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(337): Missing file: '\epoc32\data\Z\Private\101f85a0\compass.png' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(338): Missing file: '\epoc32\data\Z\Private\101f85a0\flag.png' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(339): Missing file: '\epoc32\data\Z\Private\101f85a0\flagwave.gif' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(340): Missing file: '\epoc32\data\Z\Private\101f85a0\globe.gif' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(341): Missing file: '\epoc32\data\Z\Private\101f85a0\north.png' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(342): Missing file: '\epoc32\data\Z\Private\101f85a0\pointer.png' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(343): Missing file: '\epoc32\data\Z\Private\101f85a0\satellite.png' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(344): Missing file: '\epoc32\data\Z\Private\101f85a0\signal_01.png' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(345): Missing file: '\epoc32\data\Z\Private\101f85a0\signal_02.png' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(346): Missing file: '\epoc32\data\Z\Private\101f85a0\signal_03.png' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(347): Missing file: '\epoc32\data\Z\Private\101f85a0\signal_04.png' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(348): Missing file: '\epoc32\data\Z\Private\101f85a0\signal_05.png' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(349): Missing file: '\epoc32\data\Z\Private\101f85a0\spwatch.png' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(350): Missing file: '\epoc32\data\Z\Private\101f85a0\table.png' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(351): Missing file: '\epoc32\data\Z\Private\101f85a0\time.png' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(352): Missing file: '\epoc32\data\Z\Private\101f85a0\navigation_ring.png' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(353): Missing file: '\epoc32\data\Z\Private\101f85a0\signal_bar_01.png' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(354): Missing file: '\epoc32\data\Z\Private\101f85a0\signal_bar_02.png' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(355): Missing file: '\epoc32\data\Z\Private\101f85a0\signal_bar_03.png' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(356): Missing file: '\epoc32\data\Z\Private\101f85a0\signal_bar_04.png' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(357): Missing file: '\epoc32\data\Z\Private\101f85a0\signal_bar_05.png' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(358): Missing file: '\epoc32\data\Z\Private\101f85a0\blid_searching.gif' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(359): Missing file: '\epoc32\data\Z\Private\101f85a0\blid_searching_small.gif' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(360): Missing file: '\epoc32\data\Z\Private\101f85a0\blid_startup.gif' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(361): Missing file: '\epoc32\data\Z\Private\101f85a0\blid_unavail.png' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(384): Missing file: '\epoc32\data\Z\resource\apps\calendefaulteditors.mif' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(401): Missing file: '\epoc32\data\Z\Private\2001B29B\backup_registration.xml' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(456): Missing file: '\epoc32\data\Z\app_resource_dir\glxmetadataview.rsc' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(593): Missing file: '\epoc32\data\Z\private\10003a3f\apps\vcxnsappui_test_reg.RSC' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(594): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test_icon.mif' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(605): Missing file: '\epoc32\data\z\resource\videostorageschema.mde' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(959): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0000' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(960): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\sources\qsn_fr_popup_sub_mask_icon.svg' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(961): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0000' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(962): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\sources\idle_toolbaricons.mif' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(963): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0000' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(964): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0000' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(965): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\sources\idle_toolbaricons.mif' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(966): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\sources\fmradioclassicidle.mif' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1005): Missing file: '\epoc32\data\z\resource\hc_list_itemtypes.xml' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1006): Missing file: '\epoc32\data\z\resource\lctgridimagetext.xml' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1007): Missing file: '\epoc32\data\z\resource\lctgridimage.xml.xml' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1008): Missing file: '\epoc32\data\z\resource\lctgridtext.xml' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1059): Missing file: '\epoc32\data\z\system\install\callprovider_stub.SIS' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1153): Missing file: '\epoc32\release\ARMV5\urel\Z\Resource\ive\lib\jclcldc11\ext\0_j9_23_sip_jxe.odc' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1310): Missing file: '\epoc32\data\Z\Resource\JavaHelper\javahelper.mif' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1340): Missing file: '\epoc32\data\Z\Private\10202BE9\20010976.txt' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1372): Missing file: '\epoc32\data\z\resource\coverflow\logical_template_1.xml' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1373): Missing file: '\epoc32\data\z\resource\coverflow\logical_template_2.xml' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1374): Missing file: '\epoc32\data\z\resource\coverflow\logical_template_3.xml' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1375): Missing file: '\epoc32\data\z\resource\coverflow\logical_template_4.xml' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1376): Missing file: '\epoc32\data\z\resource\grid\logical_template_1.xml' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1377): Missing file: '\epoc32\data\z\resource\grid\logical_template_2.xml' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1378): Missing file: '\epoc32\data\z\resource\grid\logical_template_3.xml' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1379): Missing file: '\epoc32\data\z\resource\grid\logical_template_4.xml' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1380): Missing file: '\epoc32\winscw\c\logical_template_1_list.xml' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1381): Missing file: '\epoc32\winscw\c\logical_template_2_list.xml' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1382): Missing file: '\epoc32\winscw\c\logical_template_3_list.xml' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1383): Missing file: '\epoc32\winscw\c\logical_template_4_list.xml' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1384): Missing file: '\epoc32\winscw\c\logical_template_5_list.xml' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1385): Missing file: '\epoc32\winscw\c\logical_template_6_list.xml' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1386): Missing file: '\epoc32\winscw\c\logical_template_7_list.xml' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1387): Missing file: '\epoc32\winscw\c\logical_template_8_list.xml' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1388): Missing file: '\epoc32\data\z\resource\slider\logical_template_1.xml' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1389): Missing file: '\epoc32\data\z\resource\slider\logical_template_2.xml' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1390): Missing file: '\epoc32\data\z\resource\slider\logical_template_3.xml' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1391): Missing file: '\epoc32\data\z\resource\slider\logical_template_4.xml' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1392): Missing file: '\epoc32\data\z\resource\slider\logical_template_5.xml' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1393): Missing file: '\epoc32\data\z\resource\slider\logical_template_6.xml' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1394): Missing file: '\epoc32\data\z\resource\slider\logical_template_7.xml' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1395): Missing file: '\epoc32\data\z\resource\slider\logical_template_8.xml' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1396): Missing file: '\epoc32\data\z\resource\slider\logical_template_9.xml' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1397): Missing file: '\\epoc32\winscw\c\resource\slider\lct\logical_template_1.xml' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1398): Missing file: '\\epoc32\winscw\c\resource\slider\lct\logical_template_2.xml' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1399): Missing file: '\\epoc32\winscw\c\resource\slider\lct\logical_template_3.xml' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1400): Missing file: '\\epoc32\winscw\c\resource\slider\lct\logical_template_4.xml' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1401): Missing file: '\\epoc32\winscw\c\resource\slider\lct\logical_template_5.xml' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1402): Missing file: '\\epoc32\winscw\c\resource\slider\lct\logical_template_6.xml' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1403): Missing file: '\\epoc32\winscw\c\resource\slider\lct\logical_template_7.xml' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1404): Missing file: '\\epoc32\winscw\c\resource\slider\lct\logical_template_8.xml' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1644): Missing file: '\epoc32\data\Z\system\install\ximpfw.sis' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1690): Missing file: '\epoc32\Data\z\resource\services' in statement 'data='
+y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1691): Missing file: '\epoc32\Data\z\resource\locales.txt' in statement 'data='
+* Writing tmp7.oby - result of problem-suppression phase
+* Writing tmp8.oby - result of bitmap conversion phase
+* Removing previous image and logs...
+* Writing tmp9.oby - result of cleaning phase
+* Writing RX-47_200846_subcon.oby - final OBY file
+* Writing RX-47_200846_subcon.rofs1.oby - final OBY file
+* Writing RX-47_200846_subcon.dir - ROM directory listing
+* compression method: bytepair* Executing rombuild -slog -loglevel1 -type-safe-link -geninc -compressionmethod bytepair RX-47_200846_subcon.oby
+
+ROMBUILD - Rom builder V2.08 (Build 596)
+ Software Ltd.
+
+WARNING: Unknown keyword 'ROFS_HEADER'.  Line 781 ignored
+WARNING: Unknown keyword 'LOCALISE_ALL_RESOURCES_BEGIN'.  Line 2520 ignored
+WARNING: Unknown keyword 'LOCALISE_ALL_RESOURCES_END'.  Line 2522 ignored
+WARNING: Unknown keyword '/'.  Line 2641 ignored
+WARNING: Unknown keyword ''.  Line 2806 ignored
+WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 2875 ignored
+WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 3554 ignored
+WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 3558 ignored
+WARNING: Unknown keyword '***'.  Line 4226 ignored
+WARNING: Unknown keyword '***'.  Line 4228 ignored
+WARNING: Unknown keyword '***'.  Line 4558 ignored
+WARNING: Unknown keyword '***'.  Line 4560 ignored
+WARNING: Unknown keyword '***'.  Line 4741 ignored
+WARNING: Unknown keyword '***'.  Line 5302 ignored
+WARNING: Unknown keyword '***'.  Line 5304 ignored
+WARNING: Unknown keyword '***'.  Line 5330 ignored
+WARNING: Unknown keyword '***'.  Line 5332 ignored
+ERROR: Can't build dependence graph for
+	\epoc32\release\ARMV5\urel\glxcloudview.dll (UID3:200071ba HWVD:01000000 VER:10.0)
+because
+	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
+is not in rom.
+ERROR: Can't build dependence graph for
+	\epoc32\release\ARMV5\urel\glxfetcher.dll (UID3:200071b3 HWVD:01000000 VER:10.0)
+because
+	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
+is not in rom.
+ERROR: Can't build dependence graph for
+	\epoc32\release\ARMV5\urel\glxdataprovider.dll (UID3:200104da HWVD:01000000 VER:10.0)
+because
+	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
+is not in rom.
+ERROR: Can't build dependence graph for
+	\epoc32\release\ARMV5\urel\glxgridview.dll (UID3:200009ef HWVD:01000000 VER:10.0)
+because
+	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
+is not in rom.
+ERROR: Can't build dependence graph for
+	\epoc32\release\ARMV5\urel\glxfullscreenview.dll (UID3:20000a07 HWVD:01000000 VER:10.0)
+because
+	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
+is not in rom.
+ERROR: Can't build dependence graph for
+	\epoc32\release\ARMV5\urel\glxlistview.dll (UID3:20000a0d HWVD:01000000 VER:10.0)
+because
+	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
+is not in rom.
+ERROR: Can't build dependence graph for
+	\epoc32\release\ARMV5\urel\glxunifiedmetadataview.dll (UID3:20007193 HWVD:01000000 VER:10.0)
+because
+	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
+is not in rom.
+ERROR: Can't build dependence graph for
+	\epoc32\release\ARMV5\urel\vcxnsvodui.dll (UID3:102750db HWVD:01000000 VER:10.0)
+because
+	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
+is not in rom.
+ERROR: Can't build dependence graph for
+	\epoc32\release\ARMV5\urel\vcxnsmyvideos.dll (UID3:2000b439 HWVD:01000000 VER:10.0)
+because
+	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
+is not in rom.
+ERROR: Can't build dependence graph for
+	\epoc32\release\ARMV5\urel\vcxnslivetvui.dll (UID3:00000000 HWVD:01000000 VER:10.0)
+because
+	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
+is not in rom.
+ERROR: Can't build dependence graph for
+	\epoc32\release\ARMV5\urel\alflctlayoutmanagers.dll (UID3:20012475 HWVD:01000000 VER:10.0)
+because
+	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
+is not in rom.
+ERROR: Can't build dependence graph for
+	\epoc32\release\ARMV5\urel\alfscrollbarwidget.dll (UID3:20010105 HWVD:01000000 VER:10.0)
+because
+	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
+is not in rom.
+ERROR: Can't build dependence graph for
+	\epoc32\release\armv5\urel\mulmodelutility.dll (UID3:2000d246 HWVD:01000000 VER:10.0)
+because
+	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
+is not in rom.
+ERROR: Can't build dependence graph for
+	\epoc32\release\armv5\urel\muldatamodel.dll (UID3:2000d247 HWVD:01000000 VER:10.0)
+because
+	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
+is not in rom.
+ERROR: Can't build dependence graph for
+	\epoc32\release\ARMV5\urel\mulgridwidget.dll (UID3:2000d244 HWVD:01000000 VER:10.0)
+because
+	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
+is not in rom.
+ERROR: Can't build dependence graph for
+	\epoc32\release\ARMV5\urel\mulgridwidget.dll (UID3:2000d244 HWVD:01000000 VER:10.0)
+because
+	mulutility.dll (UID3:2000fa83 HWVD:01000000 VER:10.0)
+is not in rom.
+ERROR: Can't build dependence graph for
+	\epoc32\release\armv5\urel\mulsingleitemmodel.dll (UID3:2000fa84 HWVD:01000000 VER:10.0)
+because
+	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
+is not in rom.
+ERROR: Can't build dependence graph for
+	\epoc32\release\ARMV5\urel\mulsliderwidget.dll (UID3:2000fa7f HWVD:01000000 VER:10.0)
+because
+	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
+is not in rom.
+ERROR: Can't build dependence graph for
+	\epoc32\release\ARMV5\urel\mulsliderwidget.dll (UID3:2000fa7f HWVD:01000000 VER:10.0)
+because
+	mulutility.dll (UID3:2000fa83 HWVD:01000000 VER:10.0)
+is not in rom.
+ERROR: LoadContents failed - return code -1
+* rombuild failed
+
+*** Error: (S:CORE,C:1,B:1,K:0,V:1): Command `buildrom -loglevel1 -v -nosymbols -DFEATUREVARIANT=devlon52 -D_IMAGE_TYPE_SUBCON -D_EABI=ARMV5 -D_ASIC_VER_11 -DUSE_MULTIROFS -DDEVLON52 -es60ibymacros -DSECTION -DRND_CONTENT -cbytepair -oRX-47_200846_subcon.img y:\output/release_flash_images/devlon52/subcon/core/RX-47_200846_subcon/RX-47_200846_subcon_core_master.oby' failed (1).
+mingw_make[1]: *** [core] Error 1
+make: [configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_core] Error 2 (ignored)
++++ HiRes End 1226579662.47955
+++ Finished at Thu Nov 13 14:34:22 2008
+=== config_2 == configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_01
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_01
+++ Started at Thu Nov 13 14:34:23 2008
++++ HiRes Start 1226579663.47955
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=subcon"  langpack_01  WORKDIR=\epoc32\rombuild\imaker_temp/conf_25
+iMaker 08.43.01, 20-Oct-2008.
+Variant target             USE_VARIANTBLD = `2'
+Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_01'
+Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_01/language_variant.mk'
+Variant include directory  VARIANT_INCDIR = -
+Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_01/variant.confml'
+Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
+Variant SIS directory      VARIANT_SISDIR = -
+Variant operator cache dir VARIANT_OPCDIR = -
+Variant zip content dir    VARIANT_ZIPDIR = -
+Variant copy content dir   VARIANT_CPDIR  = -
+Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/subcon/langpack/langpack_01/variant'
+Calling S60 Configuration Tool
+Generating file(s) for ROFS2 image creation
+Generating language files for Language Package image creation
+Creating ROFS2 SOS image
+
+Missing file(s):
+ 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(47): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
+ 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(48): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r02' in statement 'data='
+ 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(49): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r03' in statement 'data='
+ 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(50): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r04' in statement 'data='
+ 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(51): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r05' in statement 'data='
+ 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(52): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r13' in statement 'data='
+ 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\02\appshelldata.dtd' in statement 'data='
+ 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\03\appshelldata.dtd' in statement 'data='
+ 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\04\appshelldata.dtd' in statement 'data='
+10) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(44): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\05\appshelldata.dtd' in statement 'data='
+11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\13\appshelldata.dtd' in statement 'data='
+12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(48): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0002' in statement 'data='
+13) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(49): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0003' in statement 'data='
+14) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0004' in statement 'data='
+15) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0005' in statement 'data='
+16) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(52): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0013' in statement 'data='
+17) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(54): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0002' in statement 'data='
+18) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(55): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0003' in statement 'data='
+19) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0004' in statement 'data='
+20) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0005' in statement 'data='
+21) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(58): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0013' in statement 'data='
+22) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(70): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
+23) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(71): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0002' in statement 'data='
+24) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(72): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0003' in statement 'data='
+25) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(73): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0004' in statement 'data='
+26) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(74): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0005' in statement 'data='
+27) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(75): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0013' in statement 'data='
+28) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(80): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
+29) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(81): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0002' in statement 'data='
+30) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(82): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0003' in statement 'data='
+31) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(83): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0004' in statement 'data='
+32) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(84): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0005' in statement 'data='
+33) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(85): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0013' in statement 'data='
+34) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(90): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
+35) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(91): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0002' in statement 'data='
+36) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(92): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0003' in statement 'data='
+37) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(93): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0004' in statement 'data='
+38) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(94): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0005' in statement 'data='
+39) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(95): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0013' in statement 'data='
+40) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(100): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
+41) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(101): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0002' in statement 'data='
+42) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(102): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0003' in statement 'data='
+43) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(103): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0004' in statement 'data='
+44) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(104): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0005' in statement 'data='
+45) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(105): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0013' in statement 'data='
+46) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
+47) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
+48) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
+49) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
+50) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
+51) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
+52) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
+53) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
+
+Warning(s):
+ 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
+ 2) *Initialization*:1: warning: this is the location of the previous definition
+ 3) WARNING: Unknown keyword ''.  Line 370 ignored
+ 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1982 ignored
+ 5) WARNING: Unknown keyword '***'.  Line 2612 ignored
+ 6) WARNING: Unknown keyword '***'.  Line 2836 ignored
+ 7) WARNING: Unknown keyword '***'.  Line 3330 ignored
+ 8) WARNING: Unknown keyword '***'.  Line 3363 ignored
+ 9) WARNING: Unknown keyword ''.  Line 370 ignored
+10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1982 ignored
+11) WARNING: Unknown keyword '***'.  Line 2612 ignored
+12) WARNING: Unknown keyword '***'.  Line 2836 ignored
+13) WARNING: Unknown keyword '***'.  Line 3330 ignored
+14) WARNING: Unknown keyword '***'.  Line 3363 ignored
+Creating ROFS2 symbol file
++++ HiRes End 1226579721.79167
+++ Finished at Thu Nov 13 14:35:21 2008
+=== config_2 == configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_02
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_02
+++ Started at Thu Nov 13 14:35:23 2008
++++ HiRes Start 1226579723.04166
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=subcon"  langpack_02  WORKDIR=\epoc32\rombuild\imaker_temp/conf_26
+iMaker 08.43.01, 20-Oct-2008.
+Variant target             USE_VARIANTBLD = `2'
+Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_02'
+Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_02/language_variant.mk'
+Variant include directory  VARIANT_INCDIR = -
+Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_02/variant.confml'
+Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
+Variant SIS directory      VARIANT_SISDIR = -
+Variant operator cache dir VARIANT_OPCDIR = -
+Variant zip content dir    VARIANT_ZIPDIR = -
+Variant copy content dir   VARIANT_CPDIR  = -
+Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/subcon/langpack/langpack_02/variant'
+Calling S60 Configuration Tool
+Generating file(s) for ROFS2 image creation
+Generating language files for Language Package image creation
+Creating ROFS2 SOS image
+
+Missing file(s):
+ 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(47): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
+ 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(48): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r02' in statement 'data='
+ 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(49): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r03' in statement 'data='
+ 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(50): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r05' in statement 'data='
+ 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(51): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r14' in statement 'data='
+ 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(52): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r18' in statement 'data='
+ 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\02\appshelldata.dtd' in statement 'data='
+ 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\03\appshelldata.dtd' in statement 'data='
+ 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\05\appshelldata.dtd' in statement 'data='
+10) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(44): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\14\appshelldata.dtd' in statement 'data='
+11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\18\appshelldata.dtd' in statement 'data='
+12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(48): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0002' in statement 'data='
+13) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(49): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0003' in statement 'data='
+14) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0005' in statement 'data='
+15) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0014' in statement 'data='
+16) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(52): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0018' in statement 'data='
+17) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(54): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0002' in statement 'data='
+18) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(55): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0003' in statement 'data='
+19) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0005' in statement 'data='
+20) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0014' in statement 'data='
+21) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(58): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0018' in statement 'data='
+22) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(70): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
+23) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(71): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0002' in statement 'data='
+24) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(72): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0003' in statement 'data='
+25) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(73): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0005' in statement 'data='
+26) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(74): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0014' in statement 'data='
+27) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(75): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0018' in statement 'data='
+28) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(80): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
+29) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(81): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0002' in statement 'data='
+30) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(82): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0003' in statement 'data='
+31) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(83): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0005' in statement 'data='
+32) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(84): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0014' in statement 'data='
+33) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(85): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0018' in statement 'data='
+34) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(90): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
+35) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(91): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0002' in statement 'data='
+36) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(92): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0003' in statement 'data='
+37) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(93): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0005' in statement 'data='
+38) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(94): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0014' in statement 'data='
+39) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(95): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0018' in statement 'data='
+40) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(100): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
+41) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(101): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0002' in statement 'data='
+42) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(102): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0003' in statement 'data='
+43) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(103): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0005' in statement 'data='
+44) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(104): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0014' in statement 'data='
+45) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(105): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0018' in statement 'data='
+46) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
+47) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
+48) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
+49) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
+50) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
+51) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
+52) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
+53) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
+
+Warning(s):
+ 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
+ 2) *Initialization*:1: warning: this is the location of the previous definition
+ 3) WARNING: Unknown keyword ''.  Line 370 ignored
+ 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1982 ignored
+ 5) WARNING: Unknown keyword '***'.  Line 2612 ignored
+ 6) WARNING: Unknown keyword '***'.  Line 2836 ignored
+ 7) WARNING: Unknown keyword '***'.  Line 3330 ignored
+ 8) WARNING: Unknown keyword '***'.  Line 3363 ignored
+ 9) WARNING: Unknown keyword ''.  Line 370 ignored
+10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1982 ignored
+11) WARNING: Unknown keyword '***'.  Line 2612 ignored
+12) WARNING: Unknown keyword '***'.  Line 2836 ignored
+13) WARNING: Unknown keyword '***'.  Line 3330 ignored
+14) WARNING: Unknown keyword '***'.  Line 3363 ignored
+Creating ROFS2 symbol file
++++ HiRes End 1226579780.93192
+++ Finished at Thu Nov 13 14:36:20 2008
+=== config_2 == configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_03
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_03
+++ Started at Thu Nov 13 14:36:22 2008
++++ HiRes Start 1226579782.11941
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=subcon"  langpack_03  WORKDIR=\epoc32\rombuild\imaker_temp/conf_27
+iMaker 08.43.01, 20-Oct-2008.
+Variant target             USE_VARIANTBLD = `2'
+Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_03'
+Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_03/language_variant.mk'
+Variant include directory  VARIANT_INCDIR = -
+Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_03/variant.confml'
+Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
+Variant SIS directory      VARIANT_SISDIR = -
+Variant operator cache dir VARIANT_OPCDIR = -
+Variant zip content dir    VARIANT_ZIPDIR = -
+Variant copy content dir   VARIANT_CPDIR  = -
+Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/subcon/langpack/langpack_03/variant'
+Calling S60 Configuration Tool
+Generating file(s) for ROFS2 image creation
+Generating language files for Language Package image creation
+Creating ROFS2 SOS image
+
+Missing file(s):
+ 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(47): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
+ 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(48): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r06' in statement 'data='
+ 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(49): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r07' in statement 'data='
+ 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(50): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r08' in statement 'data='
+ 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(51): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r09' in statement 'data='
+ 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(52): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r15' in statement 'data='
+ 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\06\appshelldata.dtd' in statement 'data='
+ 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\07\appshelldata.dtd' in statement 'data='
+ 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\08\appshelldata.dtd' in statement 'data='
+10) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(44): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\09\appshelldata.dtd' in statement 'data='
+11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\15\appshelldata.dtd' in statement 'data='
+12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(48): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0006' in statement 'data='
+13) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(49): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0007' in statement 'data='
+14) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0008' in statement 'data='
+15) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0009' in statement 'data='
+16) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(52): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0015' in statement 'data='
+17) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(54): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0006' in statement 'data='
+18) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(55): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0007' in statement 'data='
+19) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0008' in statement 'data='
+20) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0009' in statement 'data='
+21) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(58): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0015' in statement 'data='
+22) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(70): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
+23) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(71): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0006' in statement 'data='
+24) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(72): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0007' in statement 'data='
+25) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(73): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0008' in statement 'data='
+26) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(74): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0009' in statement 'data='
+27) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(75): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0015' in statement 'data='
+28) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(80): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
+29) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(81): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0006' in statement 'data='
+30) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(82): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0007' in statement 'data='
+31) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(83): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0008' in statement 'data='
+32) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(84): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0009' in statement 'data='
+33) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(85): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0015' in statement 'data='
+34) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(90): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
+35) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(91): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0006' in statement 'data='
+36) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(92): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0007' in statement 'data='
+37) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(93): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0008' in statement 'data='
+38) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(94): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0009' in statement 'data='
+39) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(95): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0015' in statement 'data='
+40) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(100): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
+41) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(101): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0006' in statement 'data='
+42) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(102): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0007' in statement 'data='
+43) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(103): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0008' in statement 'data='
+44) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(104): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0009' in statement 'data='
+45) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(105): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0015' in statement 'data='
+46) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
+47) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
+48) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
+49) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
+50) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
+51) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
+52) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
+53) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
+
+Warning(s):
+ 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
+ 2) *Initialization*:1: warning: this is the location of the previous definition
+ 3) WARNING: Unknown keyword ''.  Line 370 ignored
+ 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1982 ignored
+ 5) WARNING: Unknown keyword '***'.  Line 2612 ignored
+ 6) WARNING: Unknown keyword '***'.  Line 2836 ignored
+ 7) WARNING: Unknown keyword '***'.  Line 3330 ignored
+ 8) WARNING: Unknown keyword '***'.  Line 3363 ignored
+ 9) WARNING: Unknown keyword ''.  Line 370 ignored
+10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1982 ignored
+11) WARNING: Unknown keyword '***'.  Line 2612 ignored
+12) WARNING: Unknown keyword '***'.  Line 2836 ignored
+13) WARNING: Unknown keyword '***'.  Line 3330 ignored
+14) WARNING: Unknown keyword '***'.  Line 3363 ignored
+Creating ROFS2 symbol file
++++ HiRes End 1226579841.88465
+++ Finished at Thu Nov 13 14:37:21 2008
+=== config_2 == configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_04
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_04
+++ Started at Thu Nov 13 14:37:23 2008
++++ HiRes Start 1226579843.13465
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=subcon"  langpack_04  WORKDIR=\epoc32\rombuild\imaker_temp/conf_28
+iMaker 08.43.01, 20-Oct-2008.
+Variant target             USE_VARIANTBLD = `2'
+Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_04'
+Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_04/language_variant.mk'
+Variant include directory  VARIANT_INCDIR = -
+Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_04/variant.confml'
+Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
+Variant SIS directory      VARIANT_SISDIR = -
+Variant operator cache dir VARIANT_OPCDIR = -
+Variant zip content dir    VARIANT_ZIPDIR = -
+Variant copy content dir   VARIANT_CPDIR  = -
+Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/subcon/langpack/langpack_04/variant'
+Calling S60 Configuration Tool
+Generating file(s) for ROFS2 image creation
+Generating language files for Language Package image creation
+Creating ROFS2 SOS image
+
+Missing file(s):
+ 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(47): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
+ 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(48): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r03' in statement 'data='
+ 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(49): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r16' in statement 'data='
+ 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(50): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r49' in statement 'data='
+ 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(51): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r67' in statement 'data='
+ 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(52): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r68' in statement 'data='
+ 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\03\appshelldata.dtd' in statement 'data='
+ 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\16\appshelldata.dtd' in statement 'data='
+ 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\49\appshelldata.dtd' in statement 'data='
+10) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(44): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\67\appshelldata.dtd' in statement 'data='
+11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\68\appshelldata.dtd' in statement 'data='
+12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(48): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0003' in statement 'data='
+13) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(49): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0016' in statement 'data='
+14) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0049' in statement 'data='
+15) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0067' in statement 'data='
+16) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(52): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0068' in statement 'data='
+17) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(54): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0003' in statement 'data='
+18) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(55): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0016' in statement 'data='
+19) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0049' in statement 'data='
+20) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0067' in statement 'data='
+21) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(58): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0068' in statement 'data='
+22) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(70): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
+23) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(71): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0003' in statement 'data='
+24) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(72): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0016' in statement 'data='
+25) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(73): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0049' in statement 'data='
+26) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(74): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0067' in statement 'data='
+27) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(75): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0068' in statement 'data='
+28) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(80): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
+29) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(81): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0003' in statement 'data='
+30) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(82): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0016' in statement 'data='
+31) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(83): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0049' in statement 'data='
+32) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(84): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0067' in statement 'data='
+33) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(85): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0068' in statement 'data='
+34) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(90): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
+35) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(91): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0003' in statement 'data='
+36) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(92): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0016' in statement 'data='
+37) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(93): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0049' in statement 'data='
+38) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(94): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0067' in statement 'data='
+39) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(95): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0068' in statement 'data='
+40) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(100): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
+41) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(101): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0003' in statement 'data='
+42) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(102): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0016' in statement 'data='
+43) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(103): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0049' in statement 'data='
+44) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(104): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0067' in statement 'data='
+45) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(105): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0068' in statement 'data='
+46) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
+47) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
+48) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
+49) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
+50) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
+51) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
+52) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
+53) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
+
+Warning(s):
+ 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
+ 2) *Initialization*:1: warning: this is the location of the previous definition
+ 3) WARNING: Unknown keyword ''.  Line 370 ignored
+ 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1982 ignored
+ 5) WARNING: Unknown keyword '***'.  Line 2612 ignored
+ 6) WARNING: Unknown keyword '***'.  Line 2836 ignored
+ 7) WARNING: Unknown keyword '***'.  Line 3330 ignored
+ 8) WARNING: Unknown keyword '***'.  Line 3363 ignored
+ 9) WARNING: Unknown keyword ''.  Line 370 ignored
+10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1982 ignored
+11) WARNING: Unknown keyword '***'.  Line 2612 ignored
+12) WARNING: Unknown keyword '***'.  Line 2836 ignored
+13) WARNING: Unknown keyword '***'.  Line 3330 ignored
+14) WARNING: Unknown keyword '***'.  Line 3363 ignored
+Creating ROFS2 symbol file
++++ HiRes End 1226579902.32177
+++ Finished at Thu Nov 13 14:38:22 2008
+=== config_2 == configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_05
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_05
+++ Started at Thu Nov 13 14:38:23 2008
++++ HiRes Start 1226579903.54051
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=subcon"  langpack_05  WORKDIR=\epoc32\rombuild\imaker_temp/conf_29
+iMaker 08.43.01, 20-Oct-2008.
+Variant target             USE_VARIANTBLD = `2'
+Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_05'
+Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_05/language_variant.mk'
+Variant include directory  VARIANT_INCDIR = -
+Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_05/variant.confml'
+Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
+Variant SIS directory      VARIANT_SISDIR = -
+Variant operator cache dir VARIANT_OPCDIR = -
+Variant zip content dir    VARIANT_ZIPDIR = -
+Variant copy content dir   VARIANT_CPDIR  = -
+Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/subcon/langpack/langpack_05/variant'
+Calling S60 Configuration Tool
+Generating file(s) for ROFS2 image creation
+Generating language files for Language Package image creation
+Creating ROFS2 SOS image
+
+Missing file(s):
+ 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(52): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
+ 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(53): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r03' in statement 'data='
+ 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(54): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r16' in statement 'data='
+ 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(55): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r17' in statement 'data='
+ 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(56): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r42' in statement 'data='
+ 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(57): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r78' in statement 'data='
+ 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(58): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r93' in statement 'data='
+ 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\03\appshelldata.dtd' in statement 'data='
+ 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\16\appshelldata.dtd' in statement 'data='
+10) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(44): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\17\appshelldata.dtd' in statement 'data='
+11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\42\appshelldata.dtd' in statement 'data='
+12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(46): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\78\appshelldata.dtd' in statement 'data='
+13) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(47): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\93\appshelldata.dtd' in statement 'data='
+14) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0003' in statement 'data='
+15) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0016' in statement 'data='
+16) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(52): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0017' in statement 'data='
+17) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(53): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0042' in statement 'data='
+18) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(54): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0078' in statement 'data='
+19) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(55): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0093' in statement 'data='
+20) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0003' in statement 'data='
+21) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(58): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0016' in statement 'data='
+22) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(59): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0017' in statement 'data='
+23) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(60): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0042' in statement 'data='
+24) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(61): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0078' in statement 'data='
+25) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(62): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0093' in statement 'data='
+26) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(75): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
+27) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(76): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0003' in statement 'data='
+28) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(77): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0016' in statement 'data='
+29) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(78): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0017' in statement 'data='
+30) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(79): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0042' in statement 'data='
+31) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(80): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0078' in statement 'data='
+32) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(81): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0093' in statement 'data='
+33) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(86): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
+34) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(87): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0003' in statement 'data='
+35) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(88): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0016' in statement 'data='
+36) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(89): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0017' in statement 'data='
+37) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(90): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0042' in statement 'data='
+38) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(91): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0078' in statement 'data='
+39) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(92): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0093' in statement 'data='
+40) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(97): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
+41) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(98): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0003' in statement 'data='
+42) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(99): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0016' in statement 'data='
+43) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(100): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0017' in statement 'data='
+44) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(101): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0042' in statement 'data='
+45) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(102): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0078' in statement 'data='
+46) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(103): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0093' in statement 'data='
+47) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(108): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
+48) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(109): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0003' in statement 'data='
+49) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(110): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0016' in statement 'data='
+50) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(111): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0017' in statement 'data='
+51) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(112): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0042' in statement 'data='
+52) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(113): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0078' in statement 'data='
+53) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(114): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0093' in statement 'data='
+54) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
+55) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
+56) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
+57) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
+58) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
+59) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
+60) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
+61) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
+
+Warning(s):
+ 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
+ 2) *Initialization*:1: warning: this is the location of the previous definition
+ 3) WARNING: Unknown keyword ''.  Line 421 ignored
+ 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 2271 ignored
+ 5) WARNING: Unknown keyword '***'.  Line 2992 ignored
+ 6) WARNING: Unknown keyword '***'.  Line 3248 ignored
+ 7) WARNING: Unknown keyword '***'.  Line 3813 ignored
+ 8) WARNING: Unknown keyword '***'.  Line 3851 ignored
+ 9) WARNING: Unknown keyword ''.  Line 421 ignored
+10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 2271 ignored
+11) WARNING: Unknown keyword '***'.  Line 2992 ignored
+12) WARNING: Unknown keyword '***'.  Line 3248 ignored
+13) WARNING: Unknown keyword '***'.  Line 3813 ignored
+14) WARNING: Unknown keyword '***'.  Line 3851 ignored
+Creating ROFS2 symbol file
++++ HiRes End 1226579964.63387
+++ Finished at Thu Nov 13 14:39:24 2008
+=== config_2 == configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_06
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_06
+++ Started at Thu Nov 13 14:39:25 2008
++++ HiRes Start 1226579965.99323
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=subcon"  langpack_06  WORKDIR=\epoc32\rombuild\imaker_temp/conf_30
+iMaker 08.43.01, 20-Oct-2008.
+Variant target             USE_VARIANTBLD = `2'
+Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_06'
+Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_06/language_variant.mk'
+Variant include directory  VARIANT_INCDIR = -
+Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_06/variant.confml'
+Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
+Variant SIS directory      VARIANT_SISDIR = -
+Variant operator cache dir VARIANT_OPCDIR = -
+Variant zip content dir    VARIANT_ZIPDIR = -
+Variant copy content dir   VARIANT_CPDIR  = -
+Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/subcon/langpack/langpack_06/variant'
+Calling S60 Configuration Tool
+Generating file(s) for ROFS2 image creation
+Generating language files for Language Package image creation
+Creating ROFS2 SOS image
+
+Missing file(s):
+ 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(47): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
+ 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(48): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r03' in statement 'data='
+ 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(49): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r17' in statement 'data='
+ 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(50): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r25' in statement 'data='
+ 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(51): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r26' in statement 'data='
+ 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(52): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r27' in statement 'data='
+ 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\03\appshelldata.dtd' in statement 'data='
+ 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\17\appshelldata.dtd' in statement 'data='
+ 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\25\appshelldata.dtd' in statement 'data='
+10) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(44): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\26\appshelldata.dtd' in statement 'data='
+11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\27\appshelldata.dtd' in statement 'data='
+12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(48): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0003' in statement 'data='
+13) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(49): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0017' in statement 'data='
+14) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0025' in statement 'data='
+15) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0026' in statement 'data='
+16) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(52): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0027' in statement 'data='
+17) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(54): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0003' in statement 'data='
+18) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(55): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0017' in statement 'data='
+19) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0025' in statement 'data='
+20) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0026' in statement 'data='
+21) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(58): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0027' in statement 'data='
+22) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(70): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
+23) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(71): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0003' in statement 'data='
+24) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(72): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0017' in statement 'data='
+25) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(73): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0025' in statement 'data='
+26) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(74): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0026' in statement 'data='
+27) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(75): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0027' in statement 'data='
+28) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(80): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
+29) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(81): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0003' in statement 'data='
+30) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(82): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0017' in statement 'data='
+31) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(83): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0025' in statement 'data='
+32) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(84): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0026' in statement 'data='
+33) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(85): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0027' in statement 'data='
+34) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(90): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
+35) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(91): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0003' in statement 'data='
+36) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(92): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0017' in statement 'data='
+37) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(93): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0025' in statement 'data='
+38) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(94): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0026' in statement 'data='
+39) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(95): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0027' in statement 'data='
+40) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(100): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
+41) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(101): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0003' in statement 'data='
+42) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(102): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0017' in statement 'data='
+43) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(103): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0025' in statement 'data='
+44) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(104): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0026' in statement 'data='
+45) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(105): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0027' in statement 'data='
+46) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
+47) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
+48) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
+49) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
+50) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
+51) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
+52) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
+53) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
+
+Warning(s):
+ 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
+ 2) *Initialization*:1: warning: this is the location of the previous definition
+ 3) WARNING: Unknown keyword ''.  Line 370 ignored
+ 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1982 ignored
+ 5) WARNING: Unknown keyword '***'.  Line 2612 ignored
+ 6) WARNING: Unknown keyword '***'.  Line 2836 ignored
+ 7) WARNING: Unknown keyword '***'.  Line 3330 ignored
+ 8) WARNING: Unknown keyword '***'.  Line 3363 ignored
+ 9) WARNING: Unknown keyword ''.  Line 370 ignored
+10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1982 ignored
+11) WARNING: Unknown keyword '***'.  Line 2612 ignored
+12) WARNING: Unknown keyword '***'.  Line 2836 ignored
+13) WARNING: Unknown keyword '***'.  Line 3330 ignored
+14) WARNING: Unknown keyword '***'.  Line 3363 ignored
+Creating ROFS2 symbol file
++++ HiRes End 1226580023.55537
+++ Finished at Thu Nov 13 14:40:23 2008
+=== config_2 == configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_07
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_07
+++ Started at Thu Nov 13 14:40:24 2008
++++ HiRes Start 1226580024.82098
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=subcon"  langpack_07  WORKDIR=\epoc32\rombuild\imaker_temp/conf_31
+iMaker 08.43.01, 20-Oct-2008.
+Variant target             USE_VARIANTBLD = `2'
+Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_07'
+Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_07/language_variant.mk'
+Variant include directory  VARIANT_INCDIR = -
+Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_07/variant.confml'
+Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
+Variant SIS directory      VARIANT_SISDIR = -
+Variant operator cache dir VARIANT_OPCDIR = -
+Variant zip content dir    VARIANT_ZIPDIR = -
+Variant copy content dir   VARIANT_CPDIR  = -
+Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/subcon/langpack/langpack_07/variant'
+Calling S60 Configuration Tool
+Generating file(s) for ROFS2 image creation
+Generating language files for Language Package image creation
+Creating ROFS2 SOS image
+
+Missing file(s):
+ 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(47): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
+ 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(48): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r03' in statement 'data='
+ 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(49): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r28' in statement 'data='
+ 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(50): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r45' in statement 'data='
+ 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(51): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r54' in statement 'data='
+ 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(52): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r79' in statement 'data='
+ 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\03\appshelldata.dtd' in statement 'data='
+ 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\28\appshelldata.dtd' in statement 'data='
+ 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\45\appshelldata.dtd' in statement 'data='
+10) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(44): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\54\appshelldata.dtd' in statement 'data='
+11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\79\appshelldata.dtd' in statement 'data='
+12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(48): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0003' in statement 'data='
+13) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(49): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0028' in statement 'data='
+14) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0045' in statement 'data='
+15) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0054' in statement 'data='
+16) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(52): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0079' in statement 'data='
+17) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(54): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0003' in statement 'data='
+18) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(55): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0028' in statement 'data='
+19) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0045' in statement 'data='
+20) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0054' in statement 'data='
+21) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(58): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0079' in statement 'data='
+22) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(70): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
+23) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(71): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0003' in statement 'data='
+24) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(72): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0028' in statement 'data='
+25) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(73): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0045' in statement 'data='
+26) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(74): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0054' in statement 'data='
+27) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(75): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0079' in statement 'data='
+28) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(80): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
+29) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(81): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0003' in statement 'data='
+30) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(82): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0028' in statement 'data='
+31) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(83): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0045' in statement 'data='
+32) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(84): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0054' in statement 'data='
+33) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(85): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0079' in statement 'data='
+34) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(90): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
+35) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(91): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0003' in statement 'data='
+36) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(92): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0028' in statement 'data='
+37) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(93): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0045' in statement 'data='
+38) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(94): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0054' in statement 'data='
+39) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(95): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0079' in statement 'data='
+40) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(100): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
+41) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(101): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0003' in statement 'data='
+42) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(102): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0028' in statement 'data='
+43) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(103): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0045' in statement 'data='
+44) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(104): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0054' in statement 'data='
+45) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(105): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0079' in statement 'data='
+46) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
+47) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
+48) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
+49) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
+50) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
+51) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
+52) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
+53) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
+
+Warning(s):
+ 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
+ 2) *Initialization*:1: warning: this is the location of the previous definition
+ 3) WARNING: Unknown keyword ''.  Line 370 ignored
+ 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1982 ignored
+ 5) WARNING: Unknown keyword '***'.  Line 2612 ignored
+ 6) WARNING: Unknown keyword '***'.  Line 2836 ignored
+ 7) WARNING: Unknown keyword '***'.  Line 3330 ignored
+ 8) WARNING: Unknown keyword '***'.  Line 3363 ignored
+ 9) WARNING: Unknown keyword ''.  Line 370 ignored
+10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1982 ignored
+11) WARNING: Unknown keyword '***'.  Line 2612 ignored
+12) WARNING: Unknown keyword '***'.  Line 2836 ignored
+13) WARNING: Unknown keyword '***'.  Line 3330 ignored
+14) WARNING: Unknown keyword '***'.  Line 3363 ignored
+Creating ROFS2 symbol file
++++ HiRes End 1226580081.86749
+++ Finished at Thu Nov 13 14:41:21 2008
+=== config_2 == configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_08
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_08
+++ Started at Thu Nov 13 14:41:23 2008
++++ HiRes Start 1226580083.08623
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=subcon"  langpack_08  WORKDIR=\epoc32\rombuild\imaker_temp/conf_32
+iMaker 08.43.01, 20-Oct-2008.
+Variant target             USE_VARIANTBLD = `2'
+Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_08'
+Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_08/language_variant.mk'
+Variant include directory  VARIANT_INCDIR = -
+Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_08/variant.confml'
+Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
+Variant SIS directory      VARIANT_SISDIR = -
+Variant operator cache dir VARIANT_OPCDIR = -
+Variant zip content dir    VARIANT_ZIPDIR = -
+Variant copy content dir   VARIANT_CPDIR  = -
+Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/subcon/langpack/langpack_08/variant'
+Calling S60 Configuration Tool
+Generating file(s) for ROFS2 image creation
+Generating language files for Language Package image creation
+Creating ROFS2 SOS image
+
+Missing file(s):
+ 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(47): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
+ 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(48): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r04' in statement 'data='
+ 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(49): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r16' in statement 'data='
+ 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(50): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r37' in statement 'data='
+ 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(51): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r57' in statement 'data='
+ 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(52): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r78' in statement 'data='
+ 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\04\appshelldata.dtd' in statement 'data='
+ 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\16\appshelldata.dtd' in statement 'data='
+ 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\37\appshelldata.dtd' in statement 'data='
+10) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(44): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\57\appshelldata.dtd' in statement 'data='
+11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\78\appshelldata.dtd' in statement 'data='
+12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(48): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0004' in statement 'data='
+13) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(49): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0016' in statement 'data='
+14) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0037' in statement 'data='
+15) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0057' in statement 'data='
+16) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(52): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0078' in statement 'data='
+17) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(54): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0004' in statement 'data='
+18) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(55): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0016' in statement 'data='
+19) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0037' in statement 'data='
+20) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0057' in statement 'data='
+21) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(58): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0078' in statement 'data='
+22) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(70): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
+23) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(71): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0004' in statement 'data='
+24) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(72): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0016' in statement 'data='
+25) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(73): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0037' in statement 'data='
+26) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(74): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0057' in statement 'data='
+27) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(75): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0078' in statement 'data='
+28) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(80): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
+29) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(81): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0004' in statement 'data='
+30) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(82): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0016' in statement 'data='
+31) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(83): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0037' in statement 'data='
+32) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(84): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0057' in statement 'data='
+33) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(85): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0078' in statement 'data='
+34) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(90): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
+35) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(91): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0004' in statement 'data='
+36) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(92): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0016' in statement 'data='
+37) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(93): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0037' in statement 'data='
+38) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(94): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0057' in statement 'data='
+39) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(95): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0078' in statement 'data='
+40) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(100): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
+41) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(101): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0004' in statement 'data='
+42) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(102): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0016' in statement 'data='
+43) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(103): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0037' in statement 'data='
+44) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(104): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0057' in statement 'data='
+45) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(105): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0078' in statement 'data='
+46) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
+47) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
+48) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
+49) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
+50) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
+51) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
+52) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
+53) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
+
+Warning(s):
+ 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
+ 2) *Initialization*:1: warning: this is the location of the previous definition
+ 3) WARNING: Unknown keyword ''.  Line 370 ignored
+ 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1982 ignored
+ 5) WARNING: Unknown keyword '***'.  Line 2612 ignored
+ 6) WARNING: Unknown keyword '***'.  Line 2836 ignored
+ 7) WARNING: Unknown keyword '***'.  Line 3330 ignored
+ 8) WARNING: Unknown keyword '***'.  Line 3363 ignored
+ 9) WARNING: Unknown keyword ''.  Line 370 ignored
+10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1982 ignored
+11) WARNING: Unknown keyword '***'.  Line 2612 ignored
+12) WARNING: Unknown keyword '***'.  Line 2836 ignored
+13) WARNING: Unknown keyword '***'.  Line 3330 ignored
+14) WARNING: Unknown keyword '***'.  Line 3363 ignored
+Creating ROFS2 symbol file
++++ HiRes End 1226580141.39836
+++ Finished at Thu Nov 13 14:42:21 2008
+=== config_2 == configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_09
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_09
+++ Started at Thu Nov 13 14:42:22 2008
++++ HiRes Start 1226580142.78898
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=subcon"  langpack_09  WORKDIR=\epoc32\rombuild\imaker_temp/conf_33
+iMaker 08.43.01, 20-Oct-2008.
+Variant target             USE_VARIANTBLD = `2'
+Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_09'
+Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_09/language_variant.mk'
+Variant include directory  VARIANT_INCDIR = -
+Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_09/variant.confml'
+Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
+Variant SIS directory      VARIANT_SISDIR = -
+Variant operator cache dir VARIANT_OPCDIR = -
+Variant zip content dir    VARIANT_ZIPDIR = -
+Variant copy content dir   VARIANT_CPDIR  = -
+Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/subcon/langpack/langpack_09/variant'
+Calling S60 Configuration Tool
+Generating file(s) for ROFS2 image creation
+Generating language files for Language Package image creation
+Creating ROFS2 SOS image
+
+Missing file(s):
+ 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\audiothemesresources.iby(29): Missing file: '\epoc32\data\Z\resource\PslnATPluginRsc.r102' in statement 'data='
+ 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\audiothemesresources.iby(30): Missing file: '\epoc32\data\Z\resource\PslnATPluginRsc.r103' in statement 'data='
+ 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(57): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
+ 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(58): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r02' in statement 'data='
+ 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(59): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r03' in statement 'data='
+ 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(60): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r04' in statement 'data='
+ 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(61): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r102' in statement 'data='
+ 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(62): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r103' in statement 'data='
+ 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(63): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r13' in statement 'data='
+10) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(64): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r44' in statement 'data='
+11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\02\appshelldata.dtd' in statement 'data='
+12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(44): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\03\appshelldata.dtd' in statement 'data='
+13) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\04\appshelldata.dtd' in statement 'data='
+14) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(46): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\102\appshelldata.dtd' in statement 'data='
+15) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(47): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\103\appshelldata.dtd' in statement 'data='
+16) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(48): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\13\appshelldata.dtd' in statement 'data='
+17) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(49): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\44\appshelldata.dtd' in statement 'data='
+18) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(52): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0002' in statement 'data='
+19) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(53): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0003' in statement 'data='
+20) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(54): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0004' in statement 'data='
+21) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(55): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0102' in statement 'data='
+22) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0103' in statement 'data='
+23) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0013' in statement 'data='
+24) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(58): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0044' in statement 'data='
+25) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(60): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0002' in statement 'data='
+26) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(61): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0003' in statement 'data='
+27) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(62): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0004' in statement 'data='
+28) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(63): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0102' in statement 'data='
+29) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(64): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0103' in statement 'data='
+30) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(65): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0013' in statement 'data='
+31) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(66): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0044' in statement 'data='
+32) ..\..\..\..\..\..\epoc32\rom\include\language\app\mobiledictionaryresources.iby(19): Missing file: '\epoc32\data\Z\resource\Apps\mobiledictionary.r102' in statement 'data='
+33) ..\..\..\..\..\..\epoc32\rom\include\language\app\mobiledictionaryresources.iby(20): Missing file: '\epoc32\data\Z\resource\Apps\mobiledictionary.r103' in statement 'data='
+34) ..\..\..\..\..\..\epoc32\rom\include\language\app\NcdCatalogsUiResources.iby(32): Missing file: '\epoc32\data\Z\resource\apps\Ncd.r102' in statement 'data='
+35) ..\..\..\..\..\..\epoc32\rom\include\language\app\NcdCatalogsUiResources.iby(33): Missing file: '\epoc32\data\Z\resource\apps\Ncd.r103' in statement 'data='
+36) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(80): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
+37) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(81): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0002' in statement 'data='
+38) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(82): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0003' in statement 'data='
+39) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(83): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0004' in statement 'data='
+40) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(84): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0102' in statement 'data='
+41) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(85): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0103' in statement 'data='
+42) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(86): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0013' in statement 'data='
+43) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(87): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0044' in statement 'data='
+44) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(92): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
+45) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(93): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0002' in statement 'data='
+46) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(94): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0003' in statement 'data='
+47) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(95): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0004' in statement 'data='
+48) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(96): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0102' in statement 'data='
+49) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(97): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0103' in statement 'data='
+50) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(98): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0013' in statement 'data='
+51) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(99): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0044' in statement 'data='
+52) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(104): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
+53) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(105): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0002' in statement 'data='
+54) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(106): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0003' in statement 'data='
+55) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(107): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0004' in statement 'data='
+56) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(108): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0102' in statement 'data='
+57) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(109): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0103' in statement 'data='
+58) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(110): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0013' in statement 'data='
+59) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(111): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0044' in statement 'data='
+60) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(116): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
+61) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(117): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0002' in statement 'data='
+62) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(118): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0003' in statement 'data='
+63) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(119): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0004' in statement 'data='
+64) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(120): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0102' in statement 'data='
+65) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(121): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0103' in statement 'data='
+66) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(122): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0013' in statement 'data='
+67) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(123): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0044' in statement 'data='
+68) ..\..\..\..\..\..\epoc32\rom\include\language\mw\elocl.iby(28): Missing file: '\epoc32\release\ARMV5\urel\Elocl.102' in statement 'file='
+69) ..\..\..\..\..\..\epoc32\rom\include\language\mw\elocl.iby(29): Missing file: '\epoc32\release\ARMV5\urel\Elocl.103' in statement 'file='
+70) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
+71) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
+72) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
+73) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
+74) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
+75) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
+76) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
+77) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
+
+Warning(s):
+ 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
+ 2) *Initialization*:1: warning: this is the location of the previous definition
+ 3) WARNING: Unknown keyword ''.  Line 472 ignored
+ 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 2560 ignored
+ 5) WARNING: Unknown keyword '***'.  Line 3372 ignored
+ 6) WARNING: Unknown keyword '***'.  Line 3660 ignored
+ 7) WARNING: Unknown keyword '***'.  Line 4296 ignored
+ 8) WARNING: Unknown keyword '***'.  Line 4339 ignored
+ 9) WARNING: Unknown keyword ''.  Line 472 ignored
+10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 2560 ignored
+11) WARNING: Unknown keyword '***'.  Line 3372 ignored
+12) WARNING: Unknown keyword '***'.  Line 3660 ignored
+13) WARNING: Unknown keyword '***'.  Line 4296 ignored
+14) WARNING: Unknown keyword '***'.  Line 4339 ignored
+Creating ROFS2 symbol file
++++ HiRes End 1226580209.9448
+++ Finished at Thu Nov 13 14:43:29 2008
+=== config_2 == configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_11
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_11
+++ Started at Thu Nov 13 14:43:31 2008
++++ HiRes Start 1226580211.33541
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=subcon"  langpack_11  WORKDIR=\epoc32\rombuild\imaker_temp/conf_34
+iMaker 08.43.01, 20-Oct-2008.
+Variant target             USE_VARIANTBLD = `2'
+Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_11'
+Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_11/language_variant.mk'
+Variant include directory  VARIANT_INCDIR = -
+Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_11/variant.confml'
+Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
+Variant SIS directory      VARIANT_SISDIR = -
+Variant operator cache dir VARIANT_OPCDIR = -
+Variant zip content dir    VARIANT_ZIPDIR = -
+Variant copy content dir   VARIANT_CPDIR  = -
+Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/subcon/langpack/langpack_11/variant'
+Calling S60 Configuration Tool
+Generating file(s) for ROFS2 image creation
+Generating language files for Language Package image creation
+Creating ROFS2 SOS image
+
+Missing file(s):
+ 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(32): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
+ 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(33): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r02' in statement 'data='
+ 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(34): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r37' in statement 'data='
+ 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(38): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\02\appshelldata.dtd' in statement 'data='
+ 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(39): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\37\appshelldata.dtd' in statement 'data='
+ 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0002' in statement 'data='
+ 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0037' in statement 'data='
+ 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0002' in statement 'data='
+ 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(46): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0037' in statement 'data='
+10) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(55): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
+11) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0002' in statement 'data='
+12) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0037' in statement 'data='
+13) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(62): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
+14) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(63): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0002' in statement 'data='
+15) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(64): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0037' in statement 'data='
+16) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(69): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
+17) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(70): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0002' in statement 'data='
+18) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(71): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0037' in statement 'data='
+19) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(76): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
+20) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(77): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0002' in statement 'data='
+21) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(78): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0037' in statement 'data='
+22) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
+23) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
+24) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
+25) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
+26) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
+27) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
+28) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
+29) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
+
+Warning(s):
+ 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
+ 2) *Initialization*:1: warning: this is the location of the previous definition
+ 3) WARNING: Unknown keyword ''.  Line 217 ignored
+ 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1115 ignored
+ 5) WARNING: Unknown keyword '***'.  Line 1472 ignored
+ 6) WARNING: Unknown keyword '***'.  Line 1600 ignored
+ 7) WARNING: Unknown keyword '***'.  Line 1881 ignored
+ 8) WARNING: Unknown keyword '***'.  Line 1899 ignored
+ 9) WARNING: Unknown keyword ''.  Line 217 ignored
+10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1115 ignored
+11) WARNING: Unknown keyword '***'.  Line 1472 ignored
+12) WARNING: Unknown keyword '***'.  Line 1600 ignored
+13) WARNING: Unknown keyword '***'.  Line 1881 ignored
+14) WARNING: Unknown keyword '***'.  Line 1899 ignored
+Creating ROFS2 symbol file
++++ HiRes End 1226580248.80392
+++ Finished at Thu Nov 13 14:44:08 2008
+=== config_2 == configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_12
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_12
+++ Started at Thu Nov 13 14:44:09 2008
++++ HiRes Start 1226580249.63204
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=subcon"  langpack_12  WORKDIR=\epoc32\rombuild\imaker_temp/conf_35
+iMaker 08.43.01, 20-Oct-2008.
+Variant target             USE_VARIANTBLD = `2'
+Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_12'
+Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_12/language_variant.mk'
+Variant include directory  VARIANT_INCDIR = -
+Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_12/variant.confml'
+Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
+Variant SIS directory      VARIANT_SISDIR = -
+Variant operator cache dir VARIANT_OPCDIR = -
+Variant zip content dir    VARIANT_ZIPDIR = -
+Variant copy content dir   VARIANT_CPDIR  = -
+Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/subcon/langpack/langpack_12/variant'
+Calling S60 Configuration Tool
+Generating file(s) for ROFS2 image creation
+Generating language files for Language Package image creation
+Creating ROFS2 SOS image
+
+Missing file(s):
+ 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(37): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
+ 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(38): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r37' in statement 'data='
+ 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(39): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r50' in statement 'data='
+ 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(40): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r94' in statement 'data='
+ 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(39): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\37\appshelldata.dtd' in statement 'data='
+ 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(40): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\50\appshelldata.dtd' in statement 'data='
+ 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\94\appshelldata.dtd' in statement 'data='
+ 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(44): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0037' in statement 'data='
+ 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0050' in statement 'data='
+10) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(46): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0094' in statement 'data='
+11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(48): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0037' in statement 'data='
+12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(49): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0050' in statement 'data='
+13) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0094' in statement 'data='
+14) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(60): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
+15) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(61): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0037' in statement 'data='
+16) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(62): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0050' in statement 'data='
+17) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(63): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0094' in statement 'data='
+18) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(68): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
+19) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(69): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0037' in statement 'data='
+20) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(70): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0050' in statement 'data='
+21) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(71): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0094' in statement 'data='
+22) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(76): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
+23) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(77): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0037' in statement 'data='
+24) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(78): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0050' in statement 'data='
+25) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(79): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0094' in statement 'data='
+26) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(84): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
+27) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(85): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0037' in statement 'data='
+28) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(86): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0050' in statement 'data='
+29) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(87): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0094' in statement 'data='
+30) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
+31) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
+32) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
+33) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
+34) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
+35) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
+36) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
+37) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
+
+Warning(s):
+ 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
+ 2) *Initialization*:1: warning: this is the location of the previous definition
+ 3) WARNING: Unknown keyword ''.  Line 268 ignored
+ 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1404 ignored
+ 5) WARNING: Unknown keyword '***'.  Line 1852 ignored
+ 6) WARNING: Unknown keyword '***'.  Line 2012 ignored
+ 7) WARNING: Unknown keyword '***'.  Line 2364 ignored
+ 8) WARNING: Unknown keyword '***'.  Line 2387 ignored
+ 9) WARNING: Unknown keyword ''.  Line 268 ignored
+10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1404 ignored
+11) WARNING: Unknown keyword '***'.  Line 1852 ignored
+12) WARNING: Unknown keyword '***'.  Line 2012 ignored
+13) WARNING: Unknown keyword '***'.  Line 2364 ignored
+14) WARNING: Unknown keyword '***'.  Line 2387 ignored
+Creating ROFS2 symbol file
++++ HiRes End 1226580292.78802
+++ Finished at Thu Nov 13 14:44:52 2008
+=== config_2 == configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_13
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_13
+++ Started at Thu Nov 13 14:44:53 2008
++++ HiRes Start 1226580293.75676
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=subcon"  langpack_13  WORKDIR=\epoc32\rombuild\imaker_temp/conf_36
+iMaker 08.43.01, 20-Oct-2008.
+Variant target             USE_VARIANTBLD = `2'
+Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_13'
+Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_13/language_variant.mk'
+Variant include directory  VARIANT_INCDIR = -
+Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_13/variant.confml'
+Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
+Variant SIS directory      VARIANT_SISDIR = -
+Variant operator cache dir VARIANT_OPCDIR = -
+Variant zip content dir    VARIANT_ZIPDIR = -
+Variant copy content dir   VARIANT_CPDIR  = -
+Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/subcon/langpack/langpack_13/variant'
+Calling S60 Configuration Tool
+Generating file(s) for ROFS2 image creation
+Generating language files for Language Package image creation
+Creating ROFS2 SOS image
+
+Missing file(s):
+ 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(27): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
+ 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(28): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r13' in statement 'data='
+ 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(37): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\13\appshelldata.dtd' in statement 'data='
+ 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(40): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0013' in statement 'data='
+ 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0013' in statement 'data='
+ 6) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
+ 7) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0013' in statement 'data='
+ 8) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
+ 9) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0013' in statement 'data='
+10) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(62): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
+11) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(63): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0013' in statement 'data='
+12) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(68): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
+13) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(69): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0013' in statement 'data='
+14) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
+15) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
+16) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
+17) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
+18) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
+19) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
+20) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
+21) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
+
+Warning(s):
+ 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
+ 2) *Initialization*:1: warning: this is the location of the previous definition
+ 3) WARNING: Unknown keyword ''.  Line 166 ignored
+ 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 826 ignored
+ 5) WARNING: Unknown keyword '***'.  Line 1092 ignored
+ 6) WARNING: Unknown keyword '***'.  Line 1188 ignored
+ 7) WARNING: Unknown keyword '***'.  Line 1398 ignored
+ 8) WARNING: Unknown keyword '***'.  Line 1411 ignored
+ 9) WARNING: Unknown keyword ''.  Line 166 ignored
+10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 826 ignored
+11) WARNING: Unknown keyword '***'.  Line 1092 ignored
+12) WARNING: Unknown keyword '***'.  Line 1188 ignored
+13) WARNING: Unknown keyword '***'.  Line 1398 ignored
+14) WARNING: Unknown keyword '***'.  Line 1411 ignored
+Creating ROFS2 symbol file
++++ HiRes End 1226580326.70968
+++ Finished at Thu Nov 13 14:45:26 2008
+=== config_2 == configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_14
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_14
+++ Started at Thu Nov 13 14:45:27 2008
++++ HiRes Start 1226580327.39717
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=subcon"  langpack_14  WORKDIR=\epoc32\rombuild\imaker_temp/conf_37
+iMaker 08.43.01, 20-Oct-2008.
+Variant target             USE_VARIANTBLD = `2'
+Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_14'
+Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_14/language_variant.mk'
+Variant include directory  VARIANT_INCDIR = -
+Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_14/variant.confml'
+Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
+Variant SIS directory      VARIANT_SISDIR = -
+Variant operator cache dir VARIANT_OPCDIR = -
+Variant zip content dir    VARIANT_ZIPDIR = -
+Variant copy content dir   VARIANT_CPDIR  = -
+Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/subcon/langpack/langpack_14/variant'
+Calling S60 Configuration Tool
+Generating file(s) for ROFS2 image creation
+Generating language files for Language Package image creation
+Creating ROFS2 SOS image
+
+Missing file(s):
+ 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(42): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
+ 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(43): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r02' in statement 'data='
+ 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(44): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r03' in statement 'data='
+ 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(45): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r05' in statement 'data='
+ 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(46): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r18' in statement 'data='
+ 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(40): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\02\appshelldata.dtd' in statement 'data='
+ 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\03\appshelldata.dtd' in statement 'data='
+ 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\05\appshelldata.dtd' in statement 'data='
+ 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\18\appshelldata.dtd' in statement 'data='
+10) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(46): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0002' in statement 'data='
+11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(47): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0003' in statement 'data='
+12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(48): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0005' in statement 'data='
+13) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(49): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0018' in statement 'data='
+14) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0002' in statement 'data='
+15) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(52): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0003' in statement 'data='
+16) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(53): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0005' in statement 'data='
+17) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(54): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0018' in statement 'data='
+18) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(65): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
+19) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(66): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0002' in statement 'data='
+20) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(67): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0003' in statement 'data='
+21) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(68): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0005' in statement 'data='
+22) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(69): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0018' in statement 'data='
+23) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(74): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
+24) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(75): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0002' in statement 'data='
+25) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(76): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0003' in statement 'data='
+26) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(77): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0005' in statement 'data='
+27) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(78): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0018' in statement 'data='
+28) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(83): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
+29) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(84): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0002' in statement 'data='
+30) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(85): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0003' in statement 'data='
+31) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(86): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0005' in statement 'data='
+32) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(87): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0018' in statement 'data='
+33) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(92): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
+34) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(93): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0002' in statement 'data='
+35) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(94): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0003' in statement 'data='
+36) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(95): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0005' in statement 'data='
+37) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(96): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0018' in statement 'data='
+38) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
+39) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
+40) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
+41) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
+42) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
+43) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
+44) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
+45) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
+
+Warning(s):
+ 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
+ 2) *Initialization*:1: warning: this is the location of the previous definition
+ 3) WARNING: Unknown keyword ''.  Line 319 ignored
+ 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1693 ignored
+ 5) WARNING: Unknown keyword '***'.  Line 2232 ignored
+ 6) WARNING: Unknown keyword '***'.  Line 2424 ignored
+ 7) WARNING: Unknown keyword '***'.  Line 2847 ignored
+ 8) WARNING: Unknown keyword '***'.  Line 2875 ignored
+ 9) WARNING: Unknown keyword ''.  Line 319 ignored
+10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1693 ignored
+11) WARNING: Unknown keyword '***'.  Line 2232 ignored
+12) WARNING: Unknown keyword '***'.  Line 2424 ignored
+13) WARNING: Unknown keyword '***'.  Line 2847 ignored
+14) WARNING: Unknown keyword '***'.  Line 2875 ignored
+Creating ROFS2 symbol file
++++ HiRes End 1226580373.85
+++ Finished at Thu Nov 13 14:46:13 2008
+=== config_2 == configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_16
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_16
+++ Started at Thu Nov 13 14:46:14 2008
++++ HiRes Start 1226580374.99062
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=subcon"  langpack_16  WORKDIR=\epoc32\rombuild\imaker_temp/conf_38
+iMaker 08.43.01, 20-Oct-2008.
+Variant target             USE_VARIANTBLD = `2'
+Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_16'
+Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_16/language_variant.mk'
+Variant include directory  VARIANT_INCDIR = -
+Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_16/variant.confml'
+Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
+Variant SIS directory      VARIANT_SISDIR = -
+Variant operator cache dir VARIANT_OPCDIR = -
+Variant zip content dir    VARIANT_ZIPDIR = -
+Variant copy content dir   VARIANT_CPDIR  = -
+Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/subcon/langpack/langpack_16/variant'
+Calling S60 Configuration Tool
+Generating file(s) for ROFS2 image creation
+Generating language files for Language Package image creation
+Creating ROFS2 SOS image
+
+Missing file(s):
+ 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(42): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r02' in statement 'data='
+ 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(43): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r10' in statement 'data='
+ 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(44): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r18' in statement 'data='
+ 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(45): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r76' in statement 'data='
+ 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(46): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r83' in statement 'data='
+ 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(39): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\02\appshelldata.dtd' in statement 'data='
+ 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(40): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\10\appshelldata.dtd' in statement 'data='
+ 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\18\appshelldata.dtd' in statement 'data='
+ 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\76\appshelldata.dtd' in statement 'data='
+10) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\83\appshelldata.dtd' in statement 'data='
+11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0002' in statement 'data='
+12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(46): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0010' in statement 'data='
+13) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(47): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0018' in statement 'data='
+14) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(48): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0076' in statement 'data='
+15) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(49): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0083' in statement 'data='
+16) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0002' in statement 'data='
+17) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0010' in statement 'data='
+18) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(52): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0018' in statement 'data='
+19) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(53): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0076' in statement 'data='
+20) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(54): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0083' in statement 'data='
+21) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(65): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0002' in statement 'data='
+22) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(66): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0010' in statement 'data='
+23) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(67): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0018' in statement 'data='
+24) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(68): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0076' in statement 'data='
+25) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(69): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0083' in statement 'data='
+26) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(74): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0002' in statement 'data='
+27) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(75): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0010' in statement 'data='
+28) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(76): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0018' in statement 'data='
+29) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(77): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0076' in statement 'data='
+30) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(78): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0083' in statement 'data='
+31) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(83): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0002' in statement 'data='
+32) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(84): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0010' in statement 'data='
+33) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(85): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0018' in statement 'data='
+34) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(86): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0076' in statement 'data='
+35) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(87): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0083' in statement 'data='
+36) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(92): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0002' in statement 'data='
+37) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(93): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0010' in statement 'data='
+38) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(94): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0018' in statement 'data='
+39) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(95): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0076' in statement 'data='
+40) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(96): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0083' in statement 'data='
+
+Warning(s):
+ 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
+ 2) *Initialization*:1: warning: this is the location of the previous definition
+ 3) WARNING: Unknown keyword ''.  Line 319 ignored
+ 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1695 ignored
+ 5) WARNING: Unknown keyword '***'.  Line 2234 ignored
+ 6) WARNING: Unknown keyword '***'.  Line 2426 ignored
+ 7) WARNING: Unknown keyword '***'.  Line 2849 ignored
+ 8) WARNING: Unknown keyword '***'.  Line 2877 ignored
+ 9) WARNING: Unknown keyword ''.  Line 319 ignored
+10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1695 ignored
+11) WARNING: Unknown keyword '***'.  Line 2234 ignored
+12) WARNING: Unknown keyword '***'.  Line 2426 ignored
+13) WARNING: Unknown keyword '***'.  Line 2849 ignored
+14) WARNING: Unknown keyword '***'.  Line 2877 ignored
+Creating ROFS2 symbol file
++++ HiRes End 1226580424.50592
+++ Finished at Thu Nov 13 14:47:04 2008
+=== config_2 == configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_17
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_17
+++ Started at Thu Nov 13 14:47:05 2008
++++ HiRes Start 1226580425.64654
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=subcon"  langpack_17  WORKDIR=\epoc32\rombuild\imaker_temp/conf_39
+iMaker 08.43.01, 20-Oct-2008.
+Variant target             USE_VARIANTBLD = `2'
+Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_17'
+Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_17/language_variant.mk'
+Variant include directory  VARIANT_INCDIR = -
+Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_17/variant.confml'
+Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
+Variant SIS directory      VARIANT_SISDIR = -
+Variant operator cache dir VARIANT_OPCDIR = -
+Variant zip content dir    VARIANT_ZIPDIR = -
+Variant copy content dir   VARIANT_CPDIR  = -
+Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/subcon/langpack/langpack_17/variant'
+Calling S60 Configuration Tool
+Generating file(s) for ROFS2 image creation
+Generating language files for Language Package image creation
+Creating ROFS2 SOS image
+
+Missing file(s):
+ 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(37): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r10' in statement 'data='
+ 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(38): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r51' in statement 'data='
+ 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(39): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r76' in statement 'data='
+ 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(40): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r83' in statement 'data='
+ 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(38): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\10\appshelldata.dtd' in statement 'data='
+ 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(39): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\51\appshelldata.dtd' in statement 'data='
+ 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(40): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\76\appshelldata.dtd' in statement 'data='
+ 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\83\appshelldata.dtd' in statement 'data='
+ 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0010' in statement 'data='
+10) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(44): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0051' in statement 'data='
+11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0076' in statement 'data='
+12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(46): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0083' in statement 'data='
+13) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(47): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0010' in statement 'data='
+14) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(48): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0051' in statement 'data='
+15) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(49): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0076' in statement 'data='
+16) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0083' in statement 'data='
+17) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(60): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0010' in statement 'data='
+18) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(61): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0051' in statement 'data='
+19) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(62): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0076' in statement 'data='
+20) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(63): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0083' in statement 'data='
+21) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(68): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0010' in statement 'data='
+22) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(69): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0051' in statement 'data='
+23) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(70): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0076' in statement 'data='
+24) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(71): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0083' in statement 'data='
+25) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(76): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0010' in statement 'data='
+26) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(77): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0051' in statement 'data='
+27) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(78): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0076' in statement 'data='
+28) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(79): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0083' in statement 'data='
+29) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(84): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0010' in statement 'data='
+30) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(85): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0051' in statement 'data='
+31) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(86): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0076' in statement 'data='
+32) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(87): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0083' in statement 'data='
+
+Warning(s):
+ 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
+ 2) *Initialization*:1: warning: this is the location of the previous definition
+ 3) WARNING: Unknown keyword ''.  Line 268 ignored
+ 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1406 ignored
+ 5) WARNING: Unknown keyword '***'.  Line 1854 ignored
+ 6) WARNING: Unknown keyword '***'.  Line 2014 ignored
+ 7) WARNING: Unknown keyword '***'.  Line 2366 ignored
+ 8) WARNING: Unknown keyword '***'.  Line 2389 ignored
+ 9) WARNING: Unknown keyword ''.  Line 268 ignored
+10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1406 ignored
+11) WARNING: Unknown keyword '***'.  Line 1854 ignored
+12) WARNING: Unknown keyword '***'.  Line 2014 ignored
+13) WARNING: Unknown keyword '***'.  Line 2366 ignored
+14) WARNING: Unknown keyword '***'.  Line 2389 ignored
+Creating ROFS2 symbol file
++++ HiRes End 1226580468.27127
+++ Finished at Thu Nov 13 14:47:48 2008
+=== config_2 == configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_18
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_18
+++ Started at Thu Nov 13 14:47:49 2008
++++ HiRes Start 1226580469.27126
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=subcon"  langpack_18  WORKDIR=\epoc32\rombuild\imaker_temp/conf_40
+iMaker 08.43.01, 20-Oct-2008.
+Variant target             USE_VARIANTBLD = `2'
+Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_18'
+Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_18/language_variant.mk'
+Variant include directory  VARIANT_INCDIR = -
+Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_18/variant.confml'
+Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
+Variant SIS directory      VARIANT_SISDIR = -
+Variant operator cache dir VARIANT_OPCDIR = -
+Variant zip content dir    VARIANT_ZIPDIR = -
+Variant copy content dir   VARIANT_CPDIR  = -
+Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/subcon/langpack/langpack_18/variant'
+Calling S60 Configuration Tool
+Generating file(s) for ROFS2 image creation
+Generating language files for Language Package image creation
+Creating ROFS2 SOS image
+
+Missing file(s):
+ 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(27): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
+ 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(28): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r33' in statement 'data='
+ 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(37): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\33\appshelldata.dtd' in statement 'data='
+ 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(40): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0033' in statement 'data='
+ 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0033' in statement 'data='
+ 6) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
+ 7) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0033' in statement 'data='
+ 8) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
+ 9) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0033' in statement 'data='
+10) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(62): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
+11) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(63): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0033' in statement 'data='
+12) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(68): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
+13) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(69): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0033' in statement 'data='
+14) Y:\epoc32\rom\Variant\localized_resources.iby(905): Missing file: '\epoc32\data\Z\resource\CalenThaiPluginData.r33' in statement 'data='
+15) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
+16) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
+17) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
+18) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
+19) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
+20) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
+21) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
+22) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
+
+Warning(s):
+ 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
+ 2) *Initialization*:1: warning: this is the location of the previous definition
+ 3) WARNING: Unknown keyword ''.  Line 166 ignored
+ 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 826 ignored
+ 5) WARNING: Unknown keyword '***'.  Line 1092 ignored
+ 6) WARNING: Unknown keyword '***'.  Line 1188 ignored
+ 7) WARNING: Unknown keyword '***'.  Line 1398 ignored
+ 8) WARNING: Unknown keyword '***'.  Line 1411 ignored
+ 9) WARNING: Unknown keyword ''.  Line 166 ignored
+10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 826 ignored
+11) WARNING: Unknown keyword '***'.  Line 1092 ignored
+12) WARNING: Unknown keyword '***'.  Line 1188 ignored
+13) WARNING: Unknown keyword '***'.  Line 1398 ignored
+14) WARNING: Unknown keyword '***'.  Line 1411 ignored
+Creating ROFS2 symbol file
++++ HiRes End 1226580502.8023
+++ Finished at Thu Nov 13 14:48:22 2008
+=== config_2 == configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_19
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_19
+++ Started at Thu Nov 13 14:48:23 2008
++++ HiRes Start 1226580503.52104
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=subcon"  langpack_19  WORKDIR=\epoc32\rombuild\imaker_temp/conf_41
+iMaker 08.43.01, 20-Oct-2008.
+Variant target             USE_VARIANTBLD = `2'
+Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_19'
+Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_19/language_variant.mk'
+Variant include directory  VARIANT_INCDIR = -
+Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_19/variant.confml'
+Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
+Variant SIS directory      VARIANT_SISDIR = -
+Variant operator cache dir VARIANT_OPCDIR = -
+Variant zip content dir    VARIANT_ZIPDIR = -
+Variant copy content dir   VARIANT_CPDIR  = -
+Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/subcon/langpack/langpack_19/variant'
+Calling S60 Configuration Tool
+Generating file(s) for ROFS2 image creation
+Generating language files for Language Package image creation
+Creating ROFS2 SOS image
+
+Missing file(s):
+ 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(27): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
+ 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(28): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r39' in statement 'data='
+ 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(37): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\39\appshelldata.dtd' in statement 'data='
+ 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(40): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0039' in statement 'data='
+ 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0039' in statement 'data='
+ 6) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
+ 7) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0039' in statement 'data='
+ 8) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
+ 9) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0039' in statement 'data='
+10) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(62): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
+11) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(63): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0039' in statement 'data='
+12) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(68): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
+13) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(69): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0039' in statement 'data='
+14) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
+15) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
+16) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
+17) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
+18) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
+19) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
+20) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
+21) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
+
+Warning(s):
+ 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
+ 2) *Initialization*:1: warning: this is the location of the previous definition
+ 3) WARNING: Unknown keyword ''.  Line 166 ignored
+ 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 826 ignored
+ 5) WARNING: Unknown keyword '***'.  Line 1092 ignored
+ 6) WARNING: Unknown keyword '***'.  Line 1188 ignored
+ 7) WARNING: Unknown keyword '***'.  Line 1398 ignored
+ 8) WARNING: Unknown keyword '***'.  Line 1411 ignored
+ 9) WARNING: Unknown keyword ''.  Line 166 ignored
+10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 826 ignored
+11) WARNING: Unknown keyword '***'.  Line 1092 ignored
+12) WARNING: Unknown keyword '***'.  Line 1188 ignored
+13) WARNING: Unknown keyword '***'.  Line 1398 ignored
+14) WARNING: Unknown keyword '***'.  Line 1411 ignored
+Creating ROFS2 symbol file
++++ HiRes End 1226580537.14583
+++ Finished at Thu Nov 13 14:48:57 2008
+=== config_2 == configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_20
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_20
+++ Started at Thu Nov 13 14:48:57 2008
++++ HiRes Start 1226580537.91145
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=subcon"  langpack_20  WORKDIR=\epoc32\rombuild\imaker_temp/conf_42
+iMaker 08.43.01, 20-Oct-2008.
+Variant target             USE_VARIANTBLD = `2'
+Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_20'
+Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_20/language_variant.mk'
+Variant include directory  VARIANT_INCDIR = -
+Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_20/variant.confml'
+Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
+Variant SIS directory      VARIANT_SISDIR = -
+Variant operator cache dir VARIANT_OPCDIR = -
+Variant zip content dir    VARIANT_ZIPDIR = -
+Variant copy content dir   VARIANT_CPDIR  = -
+Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/subcon/langpack/langpack_20/variant'
+Calling S60 Configuration Tool
+Generating file(s) for ROFS2 image creation
+Generating language files for Language Package image creation
+Creating ROFS2 SOS image
+
+Missing file(s):
+ 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(27): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
+ 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(28): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r96' in statement 'data='
+ 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(37): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\96\appshelldata.dtd' in statement 'data='
+ 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(40): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0096' in statement 'data='
+ 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0096' in statement 'data='
+ 6) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
+ 7) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0096' in statement 'data='
+ 8) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
+ 9) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0096' in statement 'data='
+10) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(62): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
+11) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(63): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0096' in statement 'data='
+12) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(68): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
+13) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(69): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0096' in statement 'data='
+14) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
+15) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
+16) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
+17) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
+18) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
+19) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
+20) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
+21) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
+
+Warning(s):
+ 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
+ 2) *Initialization*:1: warning: this is the location of the previous definition
+ 3) WARNING: Unknown keyword ''.  Line 166 ignored
+ 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 826 ignored
+ 5) WARNING: Unknown keyword '***'.  Line 1092 ignored
+ 6) WARNING: Unknown keyword '***'.  Line 1188 ignored
+ 7) WARNING: Unknown keyword '***'.  Line 1398 ignored
+ 8) WARNING: Unknown keyword '***'.  Line 1411 ignored
+ 9) WARNING: Unknown keyword ''.  Line 166 ignored
+10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 826 ignored
+11) WARNING: Unknown keyword '***'.  Line 1092 ignored
+12) WARNING: Unknown keyword '***'.  Line 1188 ignored
+13) WARNING: Unknown keyword '***'.  Line 1398 ignored
+14) WARNING: Unknown keyword '***'.  Line 1411 ignored
+Creating ROFS2 symbol file
++++ HiRes End 1226580571.02061
+++ Finished at Thu Nov 13 14:49:31 2008
+=== config_2 == configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_22
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_22
+++ Started at Thu Nov 13 14:49:31 2008
++++ HiRes Start 1226580571.72373
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=subcon"  langpack_22  WORKDIR=\epoc32\rombuild\imaker_temp/conf_43
+iMaker 08.43.01, 20-Oct-2008.
+Variant target             USE_VARIANTBLD = `2'
+Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_22'
+Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_22/language_variant.mk'
+Variant include directory  VARIANT_INCDIR = -
+Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_22/variant.confml'
+Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
+Variant SIS directory      VARIANT_SISDIR = -
+Variant operator cache dir VARIANT_OPCDIR = -
+Variant zip content dir    VARIANT_ZIPDIR = -
+Variant copy content dir   VARIANT_CPDIR  = -
+Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/subcon/langpack/langpack_22/variant'
+Calling S60 Configuration Tool
+Generating file(s) for ROFS2 image creation
+Generating language files for Language Package image creation
+Creating ROFS2 SOS image
+
+Missing file(s):
+ 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(37): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r159' in statement 'data='
+ 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(38): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r31' in statement 'data='
+ 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(39): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r326' in statement 'data='
+ 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(40): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r327' in statement 'data='
+ 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(38): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\159\appshelldata.dtd' in statement 'data='
+ 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(39): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\31\appshelldata.dtd' in statement 'data='
+ 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(40): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\326\appshelldata.dtd' in statement 'data='
+ 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\327\appshelldata.dtd' in statement 'data='
+ 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0159' in statement 'data='
+10) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(44): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0031' in statement 'data='
+11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0326' in statement 'data='
+12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(46): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0327' in statement 'data='
+13) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(47): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0159' in statement 'data='
+14) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(48): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0031' in statement 'data='
+15) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(49): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0326' in statement 'data='
+16) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0327' in statement 'data='
+17) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(60): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0159' in statement 'data='
+18) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(61): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0031' in statement 'data='
+19) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(62): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0326' in statement 'data='
+20) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(63): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0327' in statement 'data='
+21) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(68): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0159' in statement 'data='
+22) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(69): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0031' in statement 'data='
+23) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(70): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0326' in statement 'data='
+24) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(71): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0327' in statement 'data='
+25) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(76): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0159' in statement 'data='
+26) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(77): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0031' in statement 'data='
+27) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(78): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0326' in statement 'data='
+28) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(79): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0327' in statement 'data='
+29) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(84): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0159' in statement 'data='
+30) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(85): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0031' in statement 'data='
+31) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(86): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0326' in statement 'data='
+32) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(87): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0327' in statement 'data='
+
+Warning(s):
+ 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
+ 2) *Initialization*:1: warning: this is the location of the previous definition
+ 3) WARNING: Unknown keyword ''.  Line 268 ignored
+ 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1406 ignored
+ 5) WARNING: Unknown keyword '***'.  Line 1854 ignored
+ 6) WARNING: Unknown keyword '***'.  Line 2014 ignored
+ 7) WARNING: Unknown keyword '***'.  Line 2366 ignored
+ 8) WARNING: Unknown keyword '***'.  Line 2389 ignored
+ 9) WARNING: Unknown keyword ''.  Line 268 ignored
+10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1406 ignored
+11) WARNING: Unknown keyword '***'.  Line 1854 ignored
+12) WARNING: Unknown keyword '***'.  Line 2014 ignored
+13) WARNING: Unknown keyword '***'.  Line 2366 ignored
+14) WARNING: Unknown keyword '***'.  Line 2389 ignored
+Creating ROFS2 symbol file
++++ HiRes End 1226580610.19224
+++ Finished at Thu Nov 13 14:50:10 2008
+=== config_2 == configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_23
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_23
+++ Started at Thu Nov 13 14:50:11 2008
++++ HiRes Start 1226580611.27035
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=subcon"  langpack_23  WORKDIR=\epoc32\rombuild\imaker_temp/conf_44
+iMaker 08.43.01, 20-Oct-2008.
+Variant target             USE_VARIANTBLD = `2'
+Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_23'
+Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_23/language_variant.mk'
+Variant include directory  VARIANT_INCDIR = -
+Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_23/variant.confml'
+Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
+Variant SIS directory      VARIANT_SISDIR = -
+Variant operator cache dir VARIANT_OPCDIR = -
+Variant zip content dir    VARIANT_ZIPDIR = -
+Variant copy content dir   VARIANT_CPDIR  = -
+Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/subcon/langpack/langpack_23/variant'
+Calling S60 Configuration Tool
+Generating file(s) for ROFS2 image creation
+Generating language files for Language Package image creation
+Creating ROFS2 SOS image
+
+Missing file(s):
+ 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(32): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r158' in statement 'data='
+ 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(33): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r30' in statement 'data='
+ 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(34): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r31' in statement 'data='
+ 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(37): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\158\appshelldata.dtd' in statement 'data='
+ 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(38): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\30\appshelldata.dtd' in statement 'data='
+ 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(39): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\31\appshelldata.dtd' in statement 'data='
+ 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0158' in statement 'data='
+ 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0030' in statement 'data='
+ 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0031' in statement 'data='
+10) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(44): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0158' in statement 'data='
+11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0030' in statement 'data='
+12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(46): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0031' in statement 'data='
+13) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(55): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0158' in statement 'data='
+14) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0030' in statement 'data='
+15) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0031' in statement 'data='
+16) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(62): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0158' in statement 'data='
+17) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(63): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0030' in statement 'data='
+18) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(64): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0031' in statement 'data='
+19) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(69): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0158' in statement 'data='
+20) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(70): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0030' in statement 'data='
+21) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(71): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0031' in statement 'data='
+22) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(76): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0158' in statement 'data='
+23) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(77): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0030' in statement 'data='
+24) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(78): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0031' in statement 'data='
+
+Warning(s):
+ 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
+ 2) *Initialization*:1: warning: this is the location of the previous definition
+ 3) WARNING: Unknown keyword ''.  Line 217 ignored
+ 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1117 ignored
+ 5) WARNING: Unknown keyword '***'.  Line 1474 ignored
+ 6) WARNING: Unknown keyword '***'.  Line 1602 ignored
+ 7) WARNING: Unknown keyword '***'.  Line 1883 ignored
+ 8) WARNING: Unknown keyword '***'.  Line 1901 ignored
+ 9) WARNING: Unknown keyword ''.  Line 217 ignored
+10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1117 ignored
+11) WARNING: Unknown keyword '***'.  Line 1474 ignored
+12) WARNING: Unknown keyword '***'.  Line 1602 ignored
+13) WARNING: Unknown keyword '***'.  Line 1883 ignored
+14) WARNING: Unknown keyword '***'.  Line 1901 ignored
+Creating ROFS2 symbol file
++++ HiRes End 1226580648.41074
+++ Finished at Thu Nov 13 14:50:48 2008
+=== config_2 == configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_24
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_24
+++ Started at Thu Nov 13 14:50:49 2008
++++ HiRes Start 1226580649.25449
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=subcon"  langpack_24  WORKDIR=\epoc32\rombuild\imaker_temp/conf_45
+iMaker 08.43.01, 20-Oct-2008.
+Variant target             USE_VARIANTBLD = `2'
+Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_24'
+Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_24/language_variant.mk'
+Variant include directory  VARIANT_INCDIR = -
+Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_24/variant.confml'
+Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
+Variant SIS directory      VARIANT_SISDIR = -
+Variant operator cache dir VARIANT_OPCDIR = -
+Variant zip content dir    VARIANT_ZIPDIR = -
+Variant copy content dir   VARIANT_CPDIR  = -
+Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/subcon/langpack/langpack_24/variant'
+Calling S60 Configuration Tool
+Generating file(s) for ROFS2 image creation
+Generating language files for Language Package image creation
+Creating ROFS2 SOS image
+
+Missing file(s):
+ 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(27): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r157' in statement 'data='
+ 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(28): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r29' in statement 'data='
+ 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(36): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\157\appshelldata.dtd' in statement 'data='
+ 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(37): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\29\appshelldata.dtd' in statement 'data='
+ 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(39): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0157' in statement 'data='
+ 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(40): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0029' in statement 'data='
+ 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0157' in statement 'data='
+ 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0029' in statement 'data='
+ 9) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0157' in statement 'data='
+10) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0029' in statement 'data='
+11) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0157' in statement 'data='
+12) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0029' in statement 'data='
+13) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(62): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0157' in statement 'data='
+14) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(63): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0029' in statement 'data='
+15) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(68): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0157' in statement 'data='
+16) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(69): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0029' in statement 'data='
+
+Warning(s):
+ 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
+ 2) *Initialization*:1: warning: this is the location of the previous definition
+ 3) WARNING: Unknown keyword ''.  Line 166 ignored
+ 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 828 ignored
+ 5) WARNING: Unknown keyword '***'.  Line 1094 ignored
+ 6) WARNING: Unknown keyword '***'.  Line 1190 ignored
+ 7) WARNING: Unknown keyword '***'.  Line 1400 ignored
+ 8) WARNING: Unknown keyword '***'.  Line 1413 ignored
+ 9) WARNING: Unknown keyword ''.  Line 166 ignored
+10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 828 ignored
+11) WARNING: Unknown keyword '***'.  Line 1094 ignored
+12) WARNING: Unknown keyword '***'.  Line 1190 ignored
+13) WARNING: Unknown keyword '***'.  Line 1400 ignored
+14) WARNING: Unknown keyword '***'.  Line 1413 ignored
+Creating ROFS2 symbol file
++++ HiRes End 1226580682.41052
+++ Finished at Thu Nov 13 14:51:22 2008
+=== config_2 == configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_25
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_25
+++ Started at Thu Nov 13 14:51:23 2008
++++ HiRes Start 1226580683.06677
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=subcon"  langpack_25  WORKDIR=\epoc32\rombuild\imaker_temp/conf_46
+iMaker 08.43.01, 20-Oct-2008.
+Variant target             USE_VARIANTBLD = `2'
+Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_25'
+Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_25/language_variant.mk'
+Variant include directory  VARIANT_INCDIR = -
+Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_25/variant.confml'
+Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
+Variant SIS directory      VARIANT_SISDIR = -
+Variant operator cache dir VARIANT_OPCDIR = -
+Variant zip content dir    VARIANT_ZIPDIR = -
+Variant copy content dir   VARIANT_CPDIR  = -
+Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/subcon/langpack/langpack_25/variant'
+Calling S60 Configuration Tool
+Generating file(s) for ROFS2 image creation
+Generating language files for Language Package image creation
+Creating ROFS2 SOS image
+
+Missing file(s):
+ 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(27): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r159' in statement 'data='
+ 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(28): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r31' in statement 'data='
+ 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(36): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\159\appshelldata.dtd' in statement 'data='
+ 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(37): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\31\appshelldata.dtd' in statement 'data='
+ 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(39): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0159' in statement 'data='
+ 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(40): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0031' in statement 'data='
+ 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0159' in statement 'data='
+ 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0031' in statement 'data='
+ 9) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0159' in statement 'data='
+10) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0031' in statement 'data='
+11) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0159' in statement 'data='
+12) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0031' in statement 'data='
+13) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(62): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0159' in statement 'data='
+14) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(63): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0031' in statement 'data='
+15) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(68): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0159' in statement 'data='
+16) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(69): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0031' in statement 'data='
+
+Warning(s):
+ 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
+ 2) *Initialization*:1: warning: this is the location of the previous definition
+ 3) WARNING: Unknown keyword ''.  Line 166 ignored
+ 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 828 ignored
+ 5) WARNING: Unknown keyword '***'.  Line 1094 ignored
+ 6) WARNING: Unknown keyword '***'.  Line 1190 ignored
+ 7) WARNING: Unknown keyword '***'.  Line 1400 ignored
+ 8) WARNING: Unknown keyword '***'.  Line 1413 ignored
+ 9) WARNING: Unknown keyword ''.  Line 166 ignored
+10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 828 ignored
+11) WARNING: Unknown keyword '***'.  Line 1094 ignored
+12) WARNING: Unknown keyword '***'.  Line 1190 ignored
+13) WARNING: Unknown keyword '***'.  Line 1400 ignored
+14) WARNING: Unknown keyword '***'.  Line 1413 ignored
+Creating ROFS2 symbol file
++++ HiRes End 1226580714.37907
+++ Finished at Thu Nov 13 14:51:54 2008
+=== config_2 == configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_27
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_27
+++ Started at Thu Nov 13 14:51:55 2008
++++ HiRes Start 1226580715.05094
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=subcon"  langpack_27  WORKDIR=\epoc32\rombuild\imaker_temp/conf_47
+iMaker 08.43.01, 20-Oct-2008.
+Variant target             USE_VARIANTBLD = `2'
+Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_27'
+Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_27/language_variant.mk'
+Variant include directory  VARIANT_INCDIR = -
+Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_27/variant.confml'
+Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
+Variant SIS directory      VARIANT_SISDIR = -
+Variant operator cache dir VARIANT_OPCDIR = -
+Variant zip content dir    VARIANT_ZIPDIR = -
+Variant copy content dir   VARIANT_CPDIR  = -
+Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/subcon/langpack/langpack_27/variant'
+Calling S60 Configuration Tool
+Generating file(s) for ROFS2 image creation
+Generating language files for Language Package image creation
+Creating ROFS2 SOS image
+
+Missing file(s):
+ 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(27): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r160' in statement 'data='
+ 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(28): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r32' in statement 'data='
+ 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(36): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\160\appshelldata.dtd' in statement 'data='
+ 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(37): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\32\appshelldata.dtd' in statement 'data='
+ 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(39): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0160' in statement 'data='
+ 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(40): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0032' in statement 'data='
+ 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0160' in statement 'data='
+ 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0032' in statement 'data='
+ 9) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0160' in statement 'data='
+10) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0032' in statement 'data='
+11) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0160' in statement 'data='
+12) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0032' in statement 'data='
+13) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(62): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0160' in statement 'data='
+14) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(63): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0032' in statement 'data='
+15) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(68): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0160' in statement 'data='
+16) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(69): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0032' in statement 'data='
+
+Warning(s):
+ 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
+ 2) *Initialization*:1: warning: this is the location of the previous definition
+ 3) WARNING: Unknown keyword ''.  Line 166 ignored
+ 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 828 ignored
+ 5) WARNING: Unknown keyword '***'.  Line 1094 ignored
+ 6) WARNING: Unknown keyword '***'.  Line 1190 ignored
+ 7) WARNING: Unknown keyword '***'.  Line 1400 ignored
+ 8) WARNING: Unknown keyword '***'.  Line 1413 ignored
+ 9) WARNING: Unknown keyword ''.  Line 166 ignored
+10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 828 ignored
+11) WARNING: Unknown keyword '***'.  Line 1094 ignored
+12) WARNING: Unknown keyword '***'.  Line 1190 ignored
+13) WARNING: Unknown keyword '***'.  Line 1400 ignored
+14) WARNING: Unknown keyword '***'.  Line 1413 ignored
+Creating ROFS2 symbol file
++++ HiRes End 1226580747.58198
+++ Finished at Thu Nov 13 14:52:27 2008
+=== config_2 == signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_core
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... core
+++ Started at Thu Nov 13 14:52:28 2008
++++ HiRes Start 1226580748.17016
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=subcon"  core  WORKDIR=\epoc32\rombuild\imaker_temp/conf_24
+iMaker 08.43.01, 20-Oct-2008.
+Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
+Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
+*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
+make: [signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_core] Error 1 (ignored)
++++ HiRes End 1226580748.32641
+++ Finished at Thu Nov 13 14:52:28 2008
+=== config_2 == signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_01
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_01
+++ Started at Thu Nov 13 14:52:28 2008
++++ HiRes Start 1226580748.42015
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=subcon"  langpack_01  WORKDIR=\epoc32\rombuild\imaker_temp/conf_25
+iMaker 08.43.01, 20-Oct-2008.
+Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
+Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
+*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
+make: [signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_01] Error 1 (ignored)
++++ HiRes End 1226580748.5764
+++ Finished at Thu Nov 13 14:52:28 2008
+=== config_2 == signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_02
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_02
+++ Started at Thu Nov 13 14:52:28 2008
++++ HiRes Start 1226580748.67015
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=subcon"  langpack_02  WORKDIR=\epoc32\rombuild\imaker_temp/conf_26
+iMaker 08.43.01, 20-Oct-2008.
+Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
+Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
+*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
+make: [signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_02] Error 1 (ignored)
++++ HiRes End 1226580748.84202
+++ Finished at Thu Nov 13 14:52:28 2008
+=== config_2 == signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_03
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_03
+++ Started at Thu Nov 13 14:52:28 2008
++++ HiRes Start 1226580748.93576
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=subcon"  langpack_03  WORKDIR=\epoc32\rombuild\imaker_temp/conf_27
+iMaker 08.43.01, 20-Oct-2008.
+Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
+Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
+*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
+make: [signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_03] Error 1 (ignored)
++++ HiRes End 1226580749.09201
+++ Finished at Thu Nov 13 14:52:29 2008
+=== config_2 == signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_04
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_04
+++ Started at Thu Nov 13 14:52:29 2008
++++ HiRes Start 1226580749.18576
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=subcon"  langpack_04  WORKDIR=\epoc32\rombuild\imaker_temp/conf_28
+iMaker 08.43.01, 20-Oct-2008.
+Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
+Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
+*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
+make: [signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_04] Error 1 (ignored)
++++ HiRes End 1226580749.342
+++ Finished at Thu Nov 13 14:52:29 2008
+=== config_2 == signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_05
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_05
+++ Started at Thu Nov 13 14:52:29 2008
++++ HiRes Start 1226580749.43575
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=subcon"  langpack_05  WORKDIR=\epoc32\rombuild\imaker_temp/conf_29
+iMaker 08.43.01, 20-Oct-2008.
+Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
+Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
+*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
+make: [signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_05] Error 1 (ignored)
++++ HiRes End 1226580749.592
+++ Finished at Thu Nov 13 14:52:29 2008
+=== config_2 == signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_06
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_06
+++ Started at Thu Nov 13 14:52:29 2008
++++ HiRes Start 1226580749.68575
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=subcon"  langpack_06  WORKDIR=\epoc32\rombuild\imaker_temp/conf_30
+iMaker 08.43.01, 20-Oct-2008.
+Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
+Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
+*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
+make: [signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_06] Error 1 (ignored)
++++ HiRes End 1226580749.85762
+++ Finished at Thu Nov 13 14:52:29 2008
+=== config_2 == signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_07
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_07
+++ Started at Thu Nov 13 14:52:29 2008
++++ HiRes Start 1226580749.95136
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=subcon"  langpack_07  WORKDIR=\epoc32\rombuild\imaker_temp/conf_31
+iMaker 08.43.01, 20-Oct-2008.
+Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
+Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
+*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
+make: [signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_07] Error 1 (ignored)
++++ HiRes End 1226580750.10761
+++ Finished at Thu Nov 13 14:52:30 2008
+=== config_2 == signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_08
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_08
+++ Started at Thu Nov 13 14:52:30 2008
++++ HiRes Start 1226580750.20136
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=subcon"  langpack_08  WORKDIR=\epoc32\rombuild\imaker_temp/conf_32
+iMaker 08.43.01, 20-Oct-2008.
+Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
+Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
+*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
+make: [signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_08] Error 1 (ignored)
++++ HiRes End 1226580750.3576
+++ Finished at Thu Nov 13 14:52:30 2008
+=== config_2 == signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_09
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_09
+++ Started at Thu Nov 13 14:52:30 2008
++++ HiRes Start 1226580750.45135
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=subcon"  langpack_09  WORKDIR=\epoc32\rombuild\imaker_temp/conf_33
+iMaker 08.43.01, 20-Oct-2008.
+Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
+Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
+*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
+make: [signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_09] Error 1 (ignored)
++++ HiRes End 1226580750.62322
+++ Finished at Thu Nov 13 14:52:30 2008
+=== config_2 == signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_11
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_11
+++ Started at Thu Nov 13 14:52:30 2008
++++ HiRes Start 1226580750.71697
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=subcon"  langpack_11  WORKDIR=\epoc32\rombuild\imaker_temp/conf_34
+iMaker 08.43.01, 20-Oct-2008.
+Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
+Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
+*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
+make: [signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_11] Error 1 (ignored)
++++ HiRes End 1226580750.87322
+++ Finished at Thu Nov 13 14:52:30 2008
+=== config_2 == signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_12
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_12
+++ Started at Thu Nov 13 14:52:30 2008
++++ HiRes Start 1226580750.96696
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=subcon"  langpack_12  WORKDIR=\epoc32\rombuild\imaker_temp/conf_35
+iMaker 08.43.01, 20-Oct-2008.
+Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
+Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
+*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
+make: [signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_12] Error 1 (ignored)
++++ HiRes End 1226580751.12321
+++ Finished at Thu Nov 13 14:52:31 2008
+=== config_2 == signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_13
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_13
+++ Started at Thu Nov 13 14:52:31 2008
++++ HiRes Start 1226580751.21696
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=subcon"  langpack_13  WORKDIR=\epoc32\rombuild\imaker_temp/conf_36
+iMaker 08.43.01, 20-Oct-2008.
+Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
+Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
+*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
+make: [signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_13] Error 1 (ignored)
++++ HiRes End 1226580751.3732
+++ Finished at Thu Nov 13 14:52:31 2008
+=== config_2 == signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_14
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_14
+++ Started at Thu Nov 13 14:52:31 2008
++++ HiRes Start 1226580751.46695
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=subcon"  langpack_14  WORKDIR=\epoc32\rombuild\imaker_temp/conf_37
+iMaker 08.43.01, 20-Oct-2008.
+Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
+Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
+*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
+make: [signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_14] Error 1 (ignored)
++++ HiRes End 1226580751.63882
+++ Finished at Thu Nov 13 14:52:31 2008
+=== config_2 == signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_16
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_16
+++ Started at Thu Nov 13 14:52:31 2008
++++ HiRes Start 1226580751.73257
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=subcon"  langpack_16  WORKDIR=\epoc32\rombuild\imaker_temp/conf_38
+iMaker 08.43.01, 20-Oct-2008.
+Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
+Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
+*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
+make: [signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_16] Error 1 (ignored)
++++ HiRes End 1226580751.88881
+++ Finished at Thu Nov 13 14:52:31 2008
+=== config_2 == signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_17
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_17
+++ Started at Thu Nov 13 14:52:31 2008
++++ HiRes Start 1226580751.98256
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=subcon"  langpack_17  WORKDIR=\epoc32\rombuild\imaker_temp/conf_39
+iMaker 08.43.01, 20-Oct-2008.
+Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
+Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
+*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
+make: [signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_17] Error 1 (ignored)
++++ HiRes End 1226580752.13881
+++ Finished at Thu Nov 13 14:52:32 2008
+=== config_2 == signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_18
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_18
+++ Started at Thu Nov 13 14:52:32 2008
++++ HiRes Start 1226580752.23255
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=subcon"  langpack_18  WORKDIR=\epoc32\rombuild\imaker_temp/conf_40
+iMaker 08.43.01, 20-Oct-2008.
+Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
+Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
+*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
+make: [signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_18] Error 1 (ignored)
++++ HiRes End 1226580752.3888
+++ Finished at Thu Nov 13 14:52:32 2008
+=== config_2 == signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_19
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_19
+++ Started at Thu Nov 13 14:52:32 2008
++++ HiRes Start 1226580752.48255
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=subcon"  langpack_19  WORKDIR=\epoc32\rombuild\imaker_temp/conf_41
+iMaker 08.43.01, 20-Oct-2008.
+Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
+Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
+*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
+make: [signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_19] Error 1 (ignored)
++++ HiRes End 1226580752.65442
+++ Finished at Thu Nov 13 14:52:32 2008
+=== config_2 == signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_20
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_20
+++ Started at Thu Nov 13 14:52:32 2008
++++ HiRes Start 1226580752.76379
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=subcon"  langpack_20  WORKDIR=\epoc32\rombuild\imaker_temp/conf_42
+iMaker 08.43.01, 20-Oct-2008.
+Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
+Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
+*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
+make: [signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_20] Error 1 (ignored)
++++ HiRes End 1226580752.93566
+++ Finished at Thu Nov 13 14:52:32 2008
+=== config_2 == signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_22
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_22
+++ Started at Thu Nov 13 14:52:32 2008
++++ HiRes Start 1226580753.02941
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=subcon"  langpack_22  WORKDIR=\epoc32\rombuild\imaker_temp/conf_43
+iMaker 08.43.01, 20-Oct-2008.
+Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
+Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
+*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
+make: [signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_22] Error 1 (ignored)
++++ HiRes End 1226580753.18566
+++ Finished at Thu Nov 13 14:52:33 2008
+=== config_2 == signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_23
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_23
+++ Started at Thu Nov 13 14:52:33 2008
++++ HiRes Start 1226580753.2794
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=subcon"  langpack_23  WORKDIR=\epoc32\rombuild\imaker_temp/conf_44
+iMaker 08.43.01, 20-Oct-2008.
+Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
+Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
+*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
+make: [signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_23] Error 1 (ignored)
++++ HiRes End 1226580753.43565
+++ Finished at Thu Nov 13 14:52:33 2008
+=== config_2 == signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_24
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_24
+++ Started at Thu Nov 13 14:52:33 2008
++++ HiRes Start 1226580753.5294
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=subcon"  langpack_24  WORKDIR=\epoc32\rombuild\imaker_temp/conf_45
+iMaker 08.43.01, 20-Oct-2008.
+Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
+Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
+*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
+make: [signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_24] Error 1 (ignored)
++++ HiRes End 1226580753.70127
+++ Finished at Thu Nov 13 14:52:33 2008
+=== config_2 == signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_25
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_25
+++ Started at Thu Nov 13 14:52:33 2008
++++ HiRes Start 1226580753.77939
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=subcon"  langpack_25  WORKDIR=\epoc32\rombuild\imaker_temp/conf_46
+iMaker 08.43.01, 20-Oct-2008.
+Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
+Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
+*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
+make: [signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_25] Error 1 (ignored)
++++ HiRes End 1226580753.95126
+++ Finished at Thu Nov 13 14:52:33 2008
+=== config_2 == signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_27
+-- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_27
+++ Started at Thu Nov 13 14:52:34 2008
++++ HiRes Start 1226580754.04501
+imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=subcon"  langpack_27  WORKDIR=\epoc32\rombuild\imaker_temp/conf_47
+iMaker 08.43.01, 20-Oct-2008.
+Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
+Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
+*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
+make: [signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_27] Error 1 (ignored)
++++ HiRes End 1226580754.20125
+++ Finished at Thu Nov 13 14:52:34 2008
+Finished build: 839   Duration: 41:09 (m:s)   Cluster availability: 100%
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/log2xml_test.log	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,468 @@
+     [exec] === Stage=mceraseuda == mceraseuda
+     [exec] ++ Started at Mon Sep 17 06:36:19 2007
+     [exec] +++ HiRes Start 1190000179.23461
+     [exec] =========== Configuration =================
+     [exec] PRODUCT:  product
+     [exec] WORKNAME: q:\output\development_flash_images\engineering_english/product\product_0.0738.3.X.201
+     [exec] TYPE:     rnd
+     [exec] ===========================================
+     [exec] *** Error: Can't read iMaker command file `/output/development_flash_images/engineering_english/product/product_0.0738.3.X.201_udaerase.icmd'.
+     [exec] mingw_make.exe[1]: *** [udaerase] Error 1
+     [exec] mingw_make.exe: *** [eraseudarnd] Error 2
+     [exec] Unzipping variation western...
+     [exec] unzip -o -qq -d / /output/build_area/localised/delta_western_package.zip
+     [exec] === Stage=flashuirnd == flashuirnd
+     [exec] ++ Started at Mon Sep 17 06:36:19 2007
+     [exec] +++ HiRes Start 1190000179.95337
+     [exec] =========== Configuration =================
+     [exec] PRODUCT          : product
+     [exec] TYPE             : rnd
+     [exec] NAME             : mc_5132_0.0738.3.X.201_rnd_ui
+     [exec] USE_OVERRIDE     : 1
+     [exec] BLDROM_OBY       : \epoc32\rom\master.oby /epoc32/rom/ppd.oby /epoc32/rom/rnd.oby
+     [exec] BLDROM_OPTION    : -p -v -nosymbols -D_IMAGE_TYPE_RND -D_EABI=ARMV5 -Dproduct -D_ASIC_VER_11 -DUSE_MULTIROFS -es60ibymacros -DXTI_TRACES -DNO_PLATSEC -DSECTION -DUSE_MULTIROFS  q:\output\development_flash_images\engineering_english/product/rnd/mc_5132_0.0738.3.X.201_rnd_ui_override_version.iby    -eoverride 
+     [exec] WORKDIR          : q:\output\development_flash_images\engineering_english/product/rnd
+     [exec] UDEBFILE         : 0
+     [exec] UDEBFILE_LIST    : 
+     [exec] USE_FOTI         : 
+     [exec] USE_FOTA         : 
+     [exec] PREBUILD_STEPS   :  
+     [exec] SOSCORE_VERSION  : 0.0738.3.0.201
+     [exec] SOSROFS1_VERSION : 0.0738.3.0.201	
+     [exec] SOSROFS2_VERSION : 0.0738.3.0.201.ee
+     [exec] SOSROFS3_VERSION : 0.0738.3.0.201.ee
+     [exec] ENABLE_ROMSYMBOL : 1
+     [exec] ===========================================
+     [exec] iMaker - The Image Maker, version 07.34.04, 24-Aug-2007.
+     [exec] Deleting q:\output\development_flash_images\engineering_english/product/rnd/mc_5132_0.0738.3.X.201_rnd_ui_sw.txt
+     [exec] Deleting q:\output\development_flash_images\engineering_english/product/rnd/mc_5132_0.0738.3.X.201_rnd_ui_model.txt
+     [exec] Deleting q:\output\development_flash_images\engineering_english/product/rnd/mc_5132_0.0738.3.X.201_rnd_ui_override_version.iby
+     [exec] Generating header iby for Core ROM image creation
+     [exec] Generating header iby for Core ROFS1 image creation
+     [exec] Generating Core FWID txt file
+     [exec] Generating Core FWID iby file
+     [exec] Generating file: q:\output\development_flash_images\engineering_english/product/rnd/mc_5132_0.0738.3.X.201_rnd_ui_sw.txt
+     [exec] Generating file: q:\output\development_flash_images\engineering_english/product/rnd/mc_5132_0.0738.3.X.201_rnd_ui_model.txt
+     [exec] Generating the q:\output\development_flash_images\engineering_english/product/rnd/mc_5132_0.0738.3.X.201_rnd_ui_override_version.iby
+     [exec] Generating the q:\output\development_flash_images\engineering_english/product/rnd/mc_5132_0.0738.3.X.201_rnd_ui_core_fwid.iby
+     [exec] Generating full Core ROM oby
+     [exec] 
+     [exec] Missing file(s):
+     [exec]  1) ..\..\epoc32\rom\include\ssc.iby(31): Missing file: '\epoc32\release\ARMV5\urel\ssc.ext' in statement 'extension[0x09080004]='
+     [exec]  2) ..\..\epoc32\rom\include\SWATI_Symbian_Tools.iby(163): Missing file: '\epoc32\release\ARMV5\urel\MobileCrashTimer.exe' in statement 'file='
+     [exec]  3) ..\..\epoc32\rom\include\PhoneCntFinderExt.iby(24): Missing file: '\epoc32\data\Z\System\install\phcntvoicerecoghandler_stub.SIS' in statement 'data='
+     [exec]  4) ..\..\epoc32\rom\include\screensaver.iby(24): Missing file: '\epoc32\release\ARMV5\urel\screensaver.product.exe' in statement 'file='
+     [exec]  5) ..\..\epoc32\rom\include\eSWT.iby(44): Missing file: '\epoc32\RELEASE\ARMV5\UREL\Z\Resource\ive\lib\jclcldc11\ext\odc\eswt-core.jar' in statement 'data='
+     [exec]  6) ..\..\epoc32\rom\include\eSWT.iby(45): Missing file: '\epoc32\RELEASE\ARMV5\UREL\Z\Resource\ive\lib\jclcldc11\ext\odc\esw.jar' in statement 'data='
+     [exec]  7) ..\..\epoc32\rom\include\eSWT.iby(46): Missing file: '\epoc32\RELEASE\ARMV5\UREL\Z\Resource\ive\lib\jclcldc11\ext\odc\eswt-expanded.jar' in statement 'data='
+     [exec]  8) ..\..\epoc32\rom\include\eSWT.iby(49): Missing file: '\epoc32\RELEASE\ARMV5\UREL\Z\Resource\ive\lib\jclcldc11\ext\eswt-core.odc' in statement 'data='
+     [exec]  9) ..\..\epoc32\rom\include\eSWT.iby(50): Missing file: '\epoc32\RELEASE\ARMV5\UREL\Z\Resource\ive\lib\jclcldc11\ext\esw.odc' in statement 'data='
+     [exec] 10) ..\..\epoc32\rom\include\eSWT.iby(51): Missing file: '\epoc32\RELEASE\ARMV5\UREL\Z\Resource\ive\lib\jclcldc11\ext\eswt-expanded.odc' in statement 'data='
+     [exec] 11) ..\..\epoc32\rom\include\advancedtspcontroller.iby(24): Missing file: '\epoc32\release\ARMV5\urel\AdvancedTspController.dll' in statement 'file='
+     [exec] 12) ..\..\epoc32\rom\include\.oby(30): Missing file: '\epoc32\data\Z\System\install\enh_drv.sis' in statement 'data='
+     [exec] 13) ..\..\epoc32\rom\include\d2d.iby(22): Missing file: '\epoc32\release\ARMV5\urel\d2dwlanconnector.dll' in statement 'file='
+     [exec] 14) ..\..\epoc32\rom\include\sysaplightpluginsource.iby(25): Missing file: '\epoc32\release\ARMV5\urel\sysaplightpluginsource.dll' in statement 'file='
+     [exec] 15) ..\..\epoc32\rom\include\animplugin.iby(8): Missing file: '\epoc32\release\ARMV5\urel\KeyCapturerPlugin.dll' in statement 'file='
+     [exec] 16) ..\..\epoc32\rom\include\OnlinePrint.iby(25): Missing file: '\epoc32\data\Z\system\install\OnlinePrint.sis' in statement 'data='
+     [exec] 17) ..\..\epoc32\rom\include\msync.iby(30): Missing file: '\epoc32\release\ARMV5\urel\msyncpluginmedia.dll' in statement 'file='
+     [exec] 18) ..\..\epoc32\rom\include\msync.iby(31): Missing file: '\epoc32\release\ARMV5\urel\msyncpluginmessaging.dll' in statement 'file='
+     [exec] 19) q:outputdevelopment_flash_images\033ngineering_english\product\rnd\mc_5132_0.0738.3.X.201_rnd_ui_core_fwid.iby(6): Missing file: 'q:\output\development_flash_images\engineering_english/product/rnd/mc_5132_0.0738.3.X.201_rnd_ui_fwid1.txt' in statement 'data='
+     [exec] 
+     [exec] Warning(s):
+     [exec]  1) WARNING: Unknown keyword '/'.  Line 193 ignored
+     [exec]  2) WARNING: Unknown keyword 'ROFS_HEADER'.  Line 212 ignored
+     [exec]  3) WARNING: Unknown keyword '..\data\VoiceRecorder_stub.SIS'.  Line 3242 ignored
+     [exec]  4) WARNING: Unknown keyword '***'.  Line 3580 ignored
+     [exec]  5) WARNING: Unknown keyword ';;'.  Line 7183 ignored
+     [exec]  6) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 7817 ignored
+     [exec]  7) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 7827 ignored
+     [exec]  8) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 7832 ignored
+     [exec]  9) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 7836 ignored
+     [exec] 10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 7842 ignored
+     [exec] 11) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 7864 ignored
+     [exec] 
+     [exec] Error(s):
+     [exec] 1) ERROR: Override target \private\101fe1db\usbman.rsc was not found!
+     [exec] 2) ERROR: Override target private\10207254\themes\271012080\270513751\271063147\1.0\ci.o0001 was not found!
+     [exec] 3) ERROR: Override target resource\versions\langsw.txt was not found!
+     [exec] 4) ERROR: Override target private\10207254\themes\271012080\270513751\271063149\1.0\ai.o0001 was not found!
+     [exec] 5) ERROR: Override target resource\apps\startup.rsc was not found!
+     [exec] Creating Core ROM image
+     [exec] * cpp -o tmp1.oby -nostdinc -undef -I "..\..\..\..\..\EPOC32\include\oem\" -include "..\..\..\..\..\EPOC32\include\oem\feature_settings.hrh" -I. -I../../../../../epoc32/rom/include
+     [exec] * reading q:\output\development_flash_images\engineering_english/product/rnd/mc_5132_0.0738.3.X.201_rnd_ui_rom_hdr.iby
+     [exec] * reading q:\output\development_flash_images\engineering_english/product/rnd/mc_5132_0.0738.3.X.201_rnd_ui_rom_split.oby
+     [exec] * Writing tmp2.oby - result of substitution phase
+     [exec] * Writing tmp3.oby - result of reorganisation phase
+     [exec] * Writing tmp4.oby - result of Plugin stage
+     [exec] * No language codes specified, defaulting to 01
+     [exec] * Writing tmp5.oby - result of choosing language-specific files
+     [exec] * Writing tmp6.oby - result of SPI stage
+     [exec] configpaging.pm: Modifying demand paging configuration using \epoc32\rom\configpaging\configpaging.cfg
+     [exec] * Writing tmp7.oby - result of problem-suppression phase
+     [exec] * Writing tmp8.oby - result of bitmap conversion phase
+     [exec] * Removing previous image and logs...
+     [exec] * Writing tmp9.oby - result of cleaning phase
+     [exec] * Writing mc_5132_0.0738.3.X.201_rnd_ui.rom.oby - final OBY file
+     [exec] * Writing mc_5132_0.0738.3.X.201_rnd_ui.rom.dir - ROM directory listing
+     [exec] * Compression method: NONE
+     [exec] * Executing rombuild -slog  -type-safe-link -geninc -no-header mc_5132_0.0738.3.X.201_rnd_ui.rom.oby
+     [exec] 
+     [exec] ROMBUILD - Rom builder V2.07 (Build 576)
+     [exec] = Software Ltd.
+     [exec] 
+     [exec] WARNING: Unknown keyword '..\data\VoiceRecorder_stub.SIS'.  Line 1249 ignored
+     [exec] WARNING: Unknown keyword '***'.  Line 1408 ignored
+     [exec] WARNING: Unknown keyword ';;'.  Line 2891 ignored
+     [exec] WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 3100 ignored
+     [exec] WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 3104 ignored
+     [exec] WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 3106 ignored
+     [exec] WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 3108 ignored
+     [exec] WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 3111 ignored
+     [exec] WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 3118 ignored
+     [exec] ERROR: Can't build dependence graph for
+     [exec] 	\epoc32\release\ARMV5\urel\armh264enchwdevice_11.dll (UID3:20001c12 HWVD:01000000 VER:10.0)
+     [exec] because
+     [exec] 	armutilities_11.dll (UID3:102749fe HWVD:01000000 VER:10.0)
+     [exec] is not in rom.
+     [exec] ERROR: Can't build dependence graph for
+     [exec] 	\epoc32\release\ARMV5\urel\armh264enchwdevice_11.dll (UID3:20001c12 HWVD:01000000 VER:10.0)
+     [exec] because
+     [exec] 	armprocessengine_11.dll (UID3:1020db93 HWVD:01000000 VER:10.0)
+     [exec] is not in rom.
+     [exec] ERROR: Can't build dependence graph for
+     [exec] 	\epoc32\release\ARMV5\urel\glxuiutilities.dll (UID3:20000a08 HWVD:01000000 VER:10.0)
+     [exec] because
+     [exec] 	glxtvout.dll (UID3:2000a7bc HWVD:01000000 VER:10.0)
+     [exec] is not in rom.
+     [exec] ERROR: LoadContents failed - return code -1
+     [exec] 
+     [exec] ROMBUILD - Rom builder V2.07 (Build 576)
+     [exec] = Software Ltd.
+     [exec] 
+     [exec] WARNING: Unknown keyword '..\data\VoiceRecorder_stub.SIS'.  Line 1249 ignored
+     [exec] WARNING: Unknown keyword '***'.  Line 1408 ignored
+     [exec] WARNING: Unknown keyword ';;'.  Line 2891 ignored
+     [exec] WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 3100 ignored
+     [exec] WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 3104 ignored
+     [exec] WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 3106 ignored
+     [exec] WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 3108 ignored
+     [exec] WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 3111 ignored
+     [exec] WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 3118 ignored
+     [exec] ERROR: Can't build dependence graph for
+     [exec] *** Error: (S:COREBLDROM,C:1,B:1,K:0,V:1): Command `(perl /epoc32/tools/buildrom.pl -v -nosymbols -omc_5132_0.0738.3.X.201_rnd_ui.rom.img q:\output\development_flash_images\engineering_english/product/rnd/mc_5132_0.0738.3.X.201_rnd_ui_rom_hdr.iby q:\output\development_flash_images\engineering_english/product/rnd/mc_5132_0.0738.3.X.201_rnd_ui_rom_split.oby)' failed.
+     [exec] 	\epoc32\release\ARMV5\urel\armh264enchwdevice_11.dll (UID3:20001c12 HWVD:01000000 VER:10.0)
+     [exec] mingw_make.exe[1]: *** [flash] Error 1
+     [exec] because
+     [exec] 	armutilities_11.dll (UID3:102749fe HWVD:01000000 VER:10.0)
+     [exec] is not in rom.
+     [exec] ERROR: Can't build dependence graph for
+     [exec] 	\epoc32\release\ARMV5\urel\armh264enchwdevice_11.dll (UID3:20001c12 HWVD:01000000 VER:10.0)
+     [exec] because
+     [exec] 	armprocessengine_11.dll (UID3:1020db93 HWVD:01000000 VER:10.0)
+     [exec] is not in rom.
+     [exec] ERROR: Can't build dependence graph for
+     [exec] 	\epoc32\release\ARMV5\urel\glxuiutilities.dll (UID3:20000a08 HWVD:01000000 VER:10.0)
+     [exec] because
+     [exec] 	glxtvout.dll (UID3:2000a7bc HWVD:01000000 VER:10.0)
+     [exec] is not in rom.
+     [exec] ERROR: LoadContents failed - return code -1
+     [exec] * ROMBUILD failed
+     [exec] 
+     [exec] Creating Core ROM symbol file
+     [exec] 
+     [exec] Total duration: 03:13
+     [exec] mingw_make.exe: [flashuirnd] Error 2 (ignored)
+     [exec] +++ HiRes End 1190000371.08327
+     [exec] ++ Finished at Mon Sep 17 06:39:31 2007
+     [exec] === Stage=flashuiprd == flashuiprd
+     [exec] ++ Started at Mon Sep 17 06:39:31 2007
+     [exec] +++ HiRes Start 1190000371.22389
+     [exec] =========== Configuration =================
+     [exec] PRODUCT          : product
+     [exec] TYPE             : prd
+     [exec] NAME             : mc_5132_0.0738.3.X.201_prd_ui
+     [exec] USE_OVERRIDE     : 1
+     [exec] BLDROM_OBY       : \epoc32\rom\master.oby /epoc32/rom/ppd.oby 
+     [exec] BLDROM_OPTION    : -p -v -nosymbols -D_IMAGE_TYPE_PRD -D_EABI=ARMV5 -Dproduct -D_ASIC_VER_11 -DUSE_MULTIROFS -es60ibymacros -DXTI_TRACES -DNO_PLATSEC -DSECTION -DUSE_MULTIROFS  q:\output\development_flash_images\engineering_english/product/prd/mc_5132_0.0738.3.X.201_prd_ui_override_version.iby    -eoverride 
+     [exec] WORKDIR          : q:\output\development_flash_images\engineering_english/product/prd
+     [exec] UDEBFILE         : 0
+     [exec] UDEBFILE_LIST    : 
+     [exec] USE_FOTI         : 
+     [exec] USE_FOTA         : 
+     [exec] PREBUILD_STEPS   :  
+     [exec] SOSCORE_VERSION  : 0.0738.3.0.201
+     [exec] SOSROFS1_VERSION : 0.0738.3.0.201	
+     [exec] SOSROFS2_VERSION : 0.0738.3.0.201.ee
+     [exec] SOSROFS3_VERSION : 0.0738.3.0.201.ee
+     [exec] ENABLE_ROMSYMBOL : 1
+     [exec] ===========================================
+     [exec] iMaker - The Image Maker, version 07.34.04, 24-Aug-2007.
+     [exec] Deleting q:\output\development_flash_images\engineering_english/product/prd/mc_5132_0.0738.3.X.201_prd_ui_sw.txt
+     [exec] Deleting q:\output\development_flash_images\engineering_english/product/prd/mc_5132_0.0738.3.X.201_prd_ui_model.txt
+     [exec] Deleting q:\output\development_flash_images\engineering_english/product/prd/mc_5132_0.0738.3.X.201_prd_ui_override_version.iby
+     [exec] Generating header iby for Core ROM image creation
+     [exec] Generating header iby for Core ROFS1 image creation
+     [exec] Generating Core FWID txt file
+     [exec] Generating Core FWID iby file
+     [exec] Generating file: q:\output\development_flash_images\engineering_english/product/prd/mc_5132_0.0738.3.X.201_prd_ui_sw.txt
+     [exec] Generating file: q:\output\development_flash_images\engineering_english/product/prd/mc_5132_0.0738.3.X.201_prd_ui_model.txt
+     [exec] Generating the q:\output\development_flash_images\engineering_english/product/prd/mc_5132_0.0738.3.X.201_prd_ui_override_version.iby
+     [exec] Generating the q:\output\development_flash_images\engineering_english/product/prd/mc_5132_0.0738.3.X.201_prd_ui_core_fwid.iby
+     [exec] Generating full Core ROM oby
+     [exec] 
+     [exec] Missing file(s):
+     [exec]  1) ..\..\epoc32\rom\include\ssc.iby(31): Missing file: '\epoc32\release\ARMV5\urel\ssc.ext' in statement 'extension[0x09080004]='
+     [exec]  2) ..\..\epoc32\rom\include\SWATI_Symbian_Tools.iby(163): Missing file: '\epoc32\release\ARMV5\urel\MobileCrashTimer.exe' in statement 'file='
+     [exec]  3) ..\..\epoc32\rom\include\PhoneCntFinderExt.iby(24): Missing file: '\epoc32\data\Z\System\install\phcntvoicerecoghandler_stub.SIS' in statement 'data='
+     [exec]  4) ..\..\epoc32\rom\include\screensaver.iby(24): Missing file: '\epoc32\release\ARMV5\urel\screensaver.product.exe' in statement 'file='
+     [exec]  5) ..\..\epoc32\rom\include\eSWT.iby(44): Missing file: '\epoc32\RELEASE\ARMV5\UREL\Z\Resource\ive\lib\jclcldc11\ext\odc\eswt-core.jar' in statement 'data='
+     [exec]  6) ..\..\epoc32\rom\include\eSWT.iby(45): Missing file: '\epoc32\RELEASE\ARMV5\UREL\Z\Resource\ive\lib\jclcldc11\ext\odc\esw.jar' in statement 'data='
+     [exec]  7) ..\..\epoc32\rom\include\eSWT.iby(46): Missing file: '\epoc32\RELEASE\ARMV5\UREL\Z\Resource\ive\lib\jclcldc11\ext\odc\eswt-expanded.jar' in statement 'data='
+     [exec]  8) ..\..\epoc32\rom\include\eSWT.iby(49): Missing file: '\epoc32\RELEASE\ARMV5\UREL\Z\Resource\ive\lib\jclcldc11\ext\eswt-core.odc' in statement 'data='
+     [exec]  9) ..\..\epoc32\rom\include\eSWT.iby(50): Missing file: '\epoc32\RELEASE\ARMV5\UREL\Z\Resource\ive\lib\jclcldc11\ext\esw.odc' in statement 'data='
+     [exec] 10) ..\..\epoc32\rom\include\eSWT.iby(51): Missing file: '\epoc32\RELEASE\ARMV5\UREL\Z\Resource\ive\lib\jclcldc11\ext\eswt-expanded.odc' in statement 'data='
+     [exec] 11) ..\..\epoc32\rom\include\advancedtspcontroller.iby(24): Missing file: '\epoc32\release\ARMV5\urel\AdvancedTspController.dll' in statement 'file='
+     [exec] 12) ..\..\epoc32\rom\include\.oby(30): Missing file: '\epoc32\data\Z\System\install\enh_drv.sis' in statement 'data='
+     [exec] 13) ..\..\epoc32\rom\include\d2d.iby(22): Missing file: '\epoc32\release\ARMV5\urel\d2dwlanconnector.dll' in statement 'file='
+     [exec] 14) ..\..\epoc32\rom\include\sysaplightpluginsource.iby(25): Missing file: '\epoc32\release\ARMV5\urel\sysaplightpluginsource.dll' in statement 'file='
+     [exec] 15) ..\..\epoc32\rom\include\animplugin.iby(8): Missing file: '\epoc32\release\ARMV5\urel\KeyCapturerPlugin.dll' in statement 'file='
+     [exec] 16) ..\..\epoc32\rom\include\OnlinePrint.iby(25): Missing file: '\epoc32\data\Z\system\install\OnlinePrint.sis' in statement 'data='
+     [exec] 17) ..\..\epoc32\rom\include\msync.iby(30): Missing file: '\epoc32\release\ARMV5\urel\msyncpluginmedia.dll' in statement 'file='
+     [exec] 18) ..\..\epoc32\rom\include\msync.iby(31): Missing file: '\epoc32\release\ARMV5\urel\msyncpluginmessaging.dll' in statement 'file='
+     [exec] 19) q:outputdevelopment_flash_images\033ngineering_english\product\prd\mc_5132_0.0738.3.X.201_prd_ui_core_fwid.iby(6): Missing file: 'q:\output\development_flash_images\engineering_english/product/prd/mc_5132_0.0738.3.X.201_prd_ui_fwid1.txt' in statement 'data='
+     [exec] 
+     [exec] Warning(s):
+     [exec]  1) WARNING: Unknown keyword '/'.  Line 193 ignored
+     [exec]  2) WARNING: Unknown keyword 'ROFS_HEADER'.  Line 212 ignored
+     [exec]  3) WARNING: Unknown keyword '..\data\VoiceRecorder_stub.SIS'.  Line 3242 ignored
+     [exec]  4) WARNING: Unknown keyword '***'.  Line 3580 ignored
+     [exec]  5) WARNING: Unknown keyword ';;'.  Line 7183 ignored
+     [exec]  6) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 7817 ignored
+     [exec]  7) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 7827 ignored
+     [exec]  8) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 7832 ignored
+     [exec]  9) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 7836 ignored
+     [exec] 10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 7842 ignored
+     [exec] 11) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 7864 ignored
+     [exec] 
+     [exec] Error(s):
+     [exec] 1) ERROR: Override target \private\101fe1db\usbman.rsc was not found!
+     [exec] 2) ERROR: Override target private\10207254\themes\271012080\270513751\271063147\1.0\ci.o0001 was not found!
+     [exec] 3) ERROR: Override target resource\versions\langsw.txt was not found!
+     [exec] 4) ERROR: Override target private\10207254\themes\271012080\270513751\271063149\1.0\ai.o0001 was not found!
+     [exec] 5) ERROR: Override target resource\apps\startup.rsc was not found!
+     [exec] Creating Core ROM image
+     [exec] * cpp -o tmp1.oby -nostdinc -undef -I "..\..\..\..\..\EPOC32\include\oem\" -include "..\..\..\..\..\EPOC32\include\oem\feature_settings.hrh" -I. -I../../../../../epoc32/rom/include
+     [exec] * reading q:\output\development_flash_images\engineering_english/product/prd/mc_5132_0.0738.3.X.201_prd_ui_rom_hdr.iby
+     [exec] * reading q:\output\development_flash_images\engineering_english/product/prd/mc_5132_0.0738.3.X.201_prd_ui_rom_split.oby
+     [exec] * Writing tmp2.oby - result of substitution phase
+     [exec] * Writing tmp3.oby - result of reorganisation phase
+     [exec] * Writing tmp4.oby - result of Plugin stage
+     [exec] * No language codes specified, defaulting to 01
+     [exec] * Writing tmp5.oby - result of choosing language-specific files
+     [exec] * Writing tmp6.oby - result of SPI stage
+     [exec] configpaging.pm: Modifying demand paging configuration using \epoc32\rom\configpaging\configpaging.cfg
+     [exec] * Writing tmp7.oby - result of problem-suppression phase
+     [exec] * Writing tmp8.oby - result of bitmap conversion phase
+     [exec] * Removing previous image and logs...
+     [exec] * Writing tmp9.oby - result of cleaning phase
+     [exec] * Writing mc_5132_0.0738.3.X.201_prd_ui.rom.oby - final OBY file
+     [exec] * Writing mc_5132_0.0738.3.X.201_prd_ui.rom.dir - ROM directory listing
+     [exec] * Compression method: NONE
+     [exec] * Executing rombuild -slog  -type-safe-link -geninc -no-header mc_5132_0.0738.3.X.201_prd_ui.rom.oby
+     [exec] 
+     [exec] ROMBUILD - Rom builder V2.07 (Build 576)
+     [exec] = Software Ltd.
+     [exec] 
+     [exec] WARNING: Unknown keyword '..\data\VoiceRecorder_stub.SIS'.  Line 1249 ignored
+     [exec] WARNING: Unknown keyword '***'.  Line 1408 ignored
+     [exec] WARNING: Unknown keyword ';;'.  Line 2891 ignored
+     [exec] WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 3100 ignored
+     [exec] WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 3104 ignored
+     [exec] WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 3106 ignored
+     [exec] WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 3108 ignored
+     [exec] WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 3111 ignored
+     [exec] WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 3118 ignored
+     [exec] ERROR: Can't build dependence graph for
+     [exec] 	\epoc32\release\ARMV5\urel\armh264enchwdevice_11.dll (UID3:20001c12 HWVD:01000000 VER:10.0)
+     [exec] because
+     [exec] 	armutilities_11.dll (UID3:102749fe HWVD:01000000 VER:10.0)
+     [exec] is not in rom.
+     [exec] ERROR: Can't build dependence graph for
+     [exec] 	\epoc32\release\ARMV5\urel\armh264enchwdevice_11.dll (UID3:20001c12 HWVD:01000000 VER:10.0)
+     [exec] because
+     [exec] 	armprocessengine_11.dll (UID3:1020db93 HWVD:01000000 VER:10.0)
+     [exec] is not in rom.
+     [exec] ERROR: Can't build dependence graph for
+     [exec] 	\epoc32\release\ARMV5\urel\glxuiutilities.dll (UID3:20000a08 HWVD:01000000 VER:10.0)
+     [exec] because
+     [exec] 	glxtvout.dll (UID3:2000a7bc HWVD:01000000 VER:10.0)
+     [exec] is not in rom.
+     [exec] ERROR: LoadContents failed - return code -1
+     [exec] 
+     [exec] ROMBUILD - Rom builder V2.07 (Build 576)
+     [exec] = Software Ltd.
+     [exec] 
+     [exec] WARNING: Unknown keyword '..\data\VoiceRecorder_stub.SIS'.  Line 1249 ignored
+     [exec] WARNING: Unknown keyword '***'.  Line 1408 ignored
+     [exec] WARNING: Unknown keyword ';;'.  Line 2891 ignored
+     [exec] WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 3100 ignored
+     [exec] WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 3104 ignored
+     [exec] WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 3106 ignored
+     [exec] WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 3108 ignored
+     [exec] WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 3111 ignored
+     [exec] WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 3118 ignored
+     [exec] ERROR: Can't build dependence graph for
+     [exec] 	\epoc32\release\ARMV5\urel\armh264enchwdevice_11.dll (UID3:20001c12 HWVD:01000000 VER:10.0)
+     [exec] because
+     [exec] 	armutilities_11.dll (UID3:102749fe HWVD:01000000 VER:10.0)
+     [exec] is not in rom.
+     [exec] ERROR: Can't build dependence graph for
+     [exec] 	\epoc32\release\ARMV5\urel\armh264enchwdevice_11.dll (UID3:20001c12 HWVD:01000000 VER:10.0)
+     [exec] because
+     [exec] *** Error: (S:COREBLDROM,C:1,B:1,K:0,V:1): Command `(perl /epoc32/tools/buildrom.pl -v -nosymbols -omc_5132_0.0738.3.X.201_prd_ui.rom.img q:\output\development_flash_images\engineering_english/product/prd/mc_5132_0.0738.3.X.201_prd_ui_rom_hdr.iby q:\output\development_flash_images\engineering_english/product/prd/mc_5132_0.0738.3.X.201_prd_ui_rom_split.oby)' failed.
+     [exec] 	armprocessengine_11.dll (UID3:1020db93 HWVD:01000000 VER:10.0)
+     [exec] is not in rom.
+     [exec] ERROR: Can't build dependence graph for
+     [exec] 	\epoc32\release\ARMV5\urel\glxuiutilities.dll (UID3:20000a08 HWVD:01000000 VER:10.0)
+     [exec] because
+     [exec] 	glxtvout.dll (UID3:2000a7bc HWVD:01000000 VER:10.0)
+     [exec] is not in rom.
+     [exec] ERROR: LoadContents failed - return code -1
+     [exec] * ROMBUILD failed
+     [exec] 
+     [exec] mingw_make.exe[1]: *** [flash] Error 1
+     [exec] Creating Core ROM symbol file
+     [exec] 
+     [exec] Total duration: 05:16
+     [exec] mingw_make.exe: [flashuiprd] Error 2 (ignored)
+     [exec] +++ HiRes End 1190000494.52393
+     [exec] ++ Finished at Mon Sep 17 06:41:34 2007
+     [exec] === Stage=mceraseuda == mceraseuda
+     [exec] ++ Started at Mon Sep 17 06:41:34 2007
+     [exec] +++ HiRes Start 1190000494.64893
+     [exec] =========== Configuration =================
+     [exec] PRODUCT:  product
+     [exec] WORKNAME: q:\output\development_flash_images\engineering_english/product\product_0.0738.3.X.201
+     [exec] TYPE:     prd
+     [exec] ===========================================
+     [exec] Generating UDA erase Elf2flash configuration
+     [exec] Creating flashable UDA erase image
+     [exec] 
+     [exec] Total duration: 05:17
+     [exec] +++ HiRes End 1190000495.28957
+     [exec] ++ Finished at Mon Sep 17 06:41:35 2007
+     [exec] mingw_make.exe: Target `ee_roms' not remade because of errors.
+     [exec] Result: 2
+     [exec] Unzipping variation western...
+     [exec] unzip -o -qq -d / /output/build_area/localised/delta_western_package.zip
+     [exec] === Stage=flashuirnd == flashuirnd
+     [exec] ++ Started at Mon Sep 17 06:41:35 2007
+     [exec] +++ HiRes Start 1190000495.74271
+     [exec] =========== Configuration =================
+     [exec] PRODUCT          : product_edge
+     [exec] TYPE             : rnd
+     [exec] NAME             : mc_5132_0.0738.3.X.201_rnd_ui
+     [exec] USE_OVERRIDE     : 1
+     [exec] BLDROM_OBY       : \epoc32\rom\master.oby /epoc32/rom/ppd.oby /epoc32/rom/rnd.oby
+     [exec] BLDROM_OPTION    : -p -v -nosymbols -D_IMAGE_TYPE_RND -D_EABI=ARMV5 -Dproduct_EDGE -D_ASIC_VER_11 -DUSE_MULTIROFS -es60ibymacros -DXTI_TRACES -DNO_PLATSEC -DSECTION -DUSE_MULTIROFS  q:\output\development_flash_images\engineering_english/product_edge/rnd/mc_5132_0.0738.3.X.201_rnd_ui_override_version.iby    -eoverride 
+     [exec] WORKDIR          : q:\output\development_flash_images\engineering_english/product_edge/rnd
+     [exec] UDEBFILE         : 0
+     [exec] UDEBFILE_LIST    : 
+     [exec] USE_FOTI         : 
+     [exec] USE_FOTA         : 
+     [exec] PREBUILD_STEPS   :  
+     [exec] SOSCORE_VERSION  : 0.0738.3.1.201
+     [exec] SOSROFS1_VERSION : 0.0738.3.1.201	
+     [exec] SOSROFS2_VERSION : 00
+     [exec] SOSROFS3_VERSION : 00
+     [exec] ENABLE_ROMSYMBOL : 1
+     [exec] ===========================================
+     [exec] iMaker - The Image Maker, version 07.34.04, 24-Aug-2007.
+     [exec] Deleting q:\output\development_flash_images\engineering_english/product_edge/rnd/mc_5132_0.0738.3.X.201_rnd_ui_sw.txt
+     [exec] Deleting q:\output\development_flash_images\engineering_english/product_edge/rnd/mc_5132_0.0738.3.X.201_rnd_ui_model.txt
+     [exec] Deleting q:\output\development_flash_images\engineering_english/product_edge/rnd/mc_5132_0.0738.3.X.201_rnd_ui_override_version.iby
+     [exec] Generating header iby for Core ROM image creation
+     [exec] Generating header iby for Core ROFS1 image creation
+     [exec] Generating Core FWID txt file
+     [exec] Generating Core FWID iby file
+     [exec] Generating file: q:\output\development_flash_images\engineering_english/product_edge/rnd/mc_5132_0.0738.3.X.201_rnd_ui_sw.txt
+     [exec] Generating file: q:\output\development_flash_images\engineering_english/product_edge/rnd/mc_5132_0.0738.3.X.201_rnd_ui_model.txt
+     [exec] Generating the q:\output\development_flash_images\engineering_english/product_edge/rnd/mc_5132_0.0738.3.X.201_rnd_ui_override_version.iby
+     [exec] Generating the q:\output\development_flash_images\engineering_english/product_edge/rnd/mc_5132_0.0738.3.X.201_rnd_ui_core_fwid.iby
+     [exec] Generating full Core ROM oby
+     [exec] * cpp -o tmp1.oby -nostdinc -undef -D_IMAGE_TYPE_RND -D_EABI=ARMV5 -Dproduct_EDGE -D_ASIC_VER_11 -DUSE_MULTIROFS -DXTI_TRACES -DNO_PLATSEC -DSECTION -DUSE_MULTIROFS -DPAGED_ROM -I "..\.\rom\CONFIG\platform\product_EDGE" -I "..\include\CONFIG\platform\product_EDGE" -I "..\.\rom\CONFIG\platform" -I "..\include\CONFIG\platform" -I "..\.\rom\CONFIG" -I "..\include\CONFIG" -I "..\include\oem\" -include "..\include\oem\feature_settings.hrh" -I. -I../../epoc32/rom/include
+     [exec] In file included from /epoc32/rom/ppd.oby:32:
+     [exec] ..\.\rom\CONFIG\platform\ppd_product.iby:28: spp_product.iby: No such file or directory
+     [exec] poc32
+     [exec] omoverride.oby:6: product_override.iby: No such file or directorypoc32
+     [exec] omoverride.oby:7: product_override_resources.iby: No such file or directory* cpp failed
+     [exec] * reading q:\output\development_flash_images\engineering_english/product_edge/rnd/mc_5132_0.0738.3.X.201_rnd_ui_override_version.iby
+     [exec] * reading \epoc32\rom\master.oby
+     [exec] * reading /epoc32/rom/ppd.oby
+     [exec] * reading /epoc32/rom/rnd.oby
+     [exec] * reading q:\output\development_flash_images\engineering_english/product_edge/rnd/mc_5132_0.0738.3.X.201_rnd_ui_core_fwid.iby
+     [exec] * reading \epoc32\rom\override.oby
+     [exec] *** Error: (S:COREBLDFULL,C:1,B:1,K:0,V:1): Command `(set VARIANT=product_edge) && (perl /epoc32/tools/buildrom.pl -p -v -nosymbols -D_IMAGE_TYPE_RND -D_EABI=ARMV5 -Dproduct_EDGE -D_ASIC_VER_11 -DUSE_MULTIROFS -es60ibymacros -DXTI_TRACES -DNO_PLATSEC -DSECTION -DUSE_MULTIROFS  q:\output\development_flash_images\engineering_english/product_edge/rnd/mc_5132_0.0738.3.X.201_rnd_ui_override_version.iby    -eoverride  -DPAGED_ROM   -omc_5132_0.0738.3.X.201_rnd_ui.full.img \epoc32\rom\master.oby /epoc32/rom/ppd.oby /epoc32/rom/rnd.oby q:\output\development_flash_images\engineering_english/product_edge/rnd/mc_5132_0.0738.3.X.201_rnd_ui_core_fwid.iby \epoc32\rom\override.oby )' failed.
+     [exec] mingw_make.exe[1]: *** [flash] Error 1
+     [exec] Creating Core ROM symbol file
+     [exec] ERROR: Can't open rombuild log file "q:\output\development_flash_images\engineering_english\product_edge\rnd\mc_5132_0.0738.3.X.201_rnd_ui.rom.log"
+     [exec] *** Error: (S:COREBLDROMSYM,C:1,B:1,K:0,V:1): Command `perl /epoc32/tools/maksym.pl q:\output\development_flash_images\engineering_english\product_edge\rnd\mc_5132_0.0738.3.X.201_rnd_ui.rom.log' failed.
+     [exec] mingw_make.exe[1]: *** [romsymbol] Error 1
+     [exec] mingw_make.exe: [flashuirnd] Error 2 (ignored)
+     [exec] +++ HiRes End 1190000501.1491
+     [exec] ++ Finished at Mon Sep 17 06:41:41 2007
+     [exec] === Stage=flashuiprd == flashuiprd
+     [exec] ++ Started at Mon Sep 17 06:41:41 2007
+     [exec] +++ HiRes Start 1190000501.28972
+     [exec] =========== Configuration =================
+     [exec] PRODUCT          : product_edge
+     [exec] TYPE             : prd
+     [exec] NAME             : mc_5132_0.0738.3.X.201_prd_ui
+     [exec] USE_OVERRIDE     : 1
+     [exec] BLDROM_OBY       : \epoc32\rom\master.oby /epoc32/rom/ppd.oby 
+     [exec] BLDROM_OPTION    : -p -v -nosymbols -D_IMAGE_TYPE_PRD -D_EABI=ARMV5 -Dproduct_EDGE -D_ASIC_VER_11 -DUSE_MULTIROFS -es60ibymacros -DXTI_TRACES -DNO_PLATSEC -DSECTION -DUSE_MULTIROFS  q:\output\development_flash_images\engineering_english/product_edge/prd/mc_5132_0.0738.3.X.201_prd_ui_override_version.iby    -eoverride 
+     [exec] WORKDIR          : q:\output\development_flash_images\engineering_english/product_edge/prd
+     [exec] UDEBFILE         : 0
+     [exec] UDEBFILE_LIST    : 
+     [exec] USE_FOTI         : 
+     [exec] USE_FOTA         : 
+     [exec] PREBUILD_STEPS   :  
+     [exec] SOSCORE_VERSION  : 0.0738.3.1.201
+     [exec] SOSROFS1_VERSION : 0.0738.3.1.201	
+     [exec] SOSROFS2_VERSION : 00
+     [exec] SOSROFS3_VERSION : 00
+     [exec] ENABLE_ROMSYMBOL : 1
+     [exec] ===========================================
+     [exec] iMaker - The Image Maker, version 07.34.04, 24-Aug-2007.
+     [exec] Deleting q:\output\development_flash_images\engineering_english/product_edge/prd/mc_5132_0.0738.3.X.201_prd_ui_sw.txt
+     [exec] Deleting q:\output\development_flash_images\engineering_english/product_edge/prd/mc_5132_0.0738.3.X.201_prd_ui_model.txt
+     [exec] Deleting q:\output\development_flash_images\engineering_english/product_edge/prd/mc_5132_0.0738.3.X.201_prd_ui_override_version.iby
+     [exec] Generating header iby for Core ROM image creation
+     [exec] Generating header iby for Core ROFS1 image creation
+     [exec] Generating Core FWID txt file
+     [exec] Generating Core FWID iby file
+     [exec] Generating file: q:\output\development_flash_images\engineering_english/product_edge/prd/mc_5132_0.0738.3.X.201_prd_ui_sw.txt
+     [exec] Generating file: q:\output\development_flash_images\engineering_english/product_edge/prd/mc_5132_0.0738.3.X.201_prd_ui_model.txt
+     [exec] Generating the q:\output\development_flash_images\engineering_english/product_edge/prd/mc_5132_0.0738.3.X.201_prd_ui_override_version.iby
+     [exec] Generating the q:\output\development_flash_images\engineering_english/product_edge/prd/mc_5132_0.0738.3.X.201_prd_ui_core_fwid.iby
+     [exec] Generating full Core ROM oby
+     [exec] * cpp -o tmp1.oby -nostdinc -undef -D_IMAGE_TYPE_PRD -D_EABI=ARMV5 -Dproduct_EDGE -D_ASIC_VER_11 -DUSE_MULTIROFS -DXTI_TRACES -DNO_PLATSEC -DSECTION -DUSE_MULTIROFS -DPAGED_ROM -I "..\.\rom\CONFIG\platform\product_EDGE" -I "..\include\CONFIG\platform\product_EDGE" -I "..\.\rom\CONFIG\platform" -I "..\include\CONFIG\platform" -I "..\.\rom\CONFIG" -I "..\include\CONFIG" -I "..\include\oem\" -include "..\include\oem\feature_settings.hrh" -I. -I../../epoc32/rom/include
+     [exec] In file included from /epoc32/rom/ppd.oby:32:
+     [exec] ..\.\rom\CONFIG\platform\ppd_product.iby:28: spp_product.iby: No such file or directory
+     [exec] poc32
+     [exec] omoverride.oby:6: product_override.iby: No such file or directorypoc32
+     [exec] omoverride.oby:7: product_override_resources.iby: No such file or directory* cpp failed
+     [exec] * reading q:\output\development_flash_images\engineering_english/product_edge/prd/mc_5132_0.0738.3.X.201_prd_ui_override_version.iby
+     [exec] * reading \epoc32\rom\master.oby
+     [exec] * reading /epoc32/rom/ppd.oby
+     [exec] * reading q:\output\development_flash_images\engineering_english/product_edge/prd/mc_5132_0.0738.3.X.201_prd_ui_core_fwid.iby
+     [exec] * reading \epoc32\rom\override.oby
+     [exec] *** Error: (S:COREBLDFULL,C:1,B:1,K:0,V:1): Command `(set VARIANT=product_edge) && (perl /epoc32/tools/buildrom.pl -p -v -nosymbols -D_IMAGE_TYPE_PRD -D_EABI=ARMV5 -Dproduct_EDGE -D_ASIC_VER_11 -DUSE_MULTIROFS -es60ibymacros -DXTI_TRACES -DNO_PLATSEC -DSECTION -DUSE_MULTIROFS  q:\output\development_flash_images\engineering_english/product_edge/prd/mc_5132_0.0738.3.X.201_prd_ui_override_version.iby    -eoverride  -DPAGED_ROM   -omc_5132_0.0738.3.X.201_prd_ui.full.img \epoc32\rom\master.oby /epoc32/rom/ppd.oby  q:\output\development_flash_images\engineering_english/product_edge/prd/mc_5132_0.0738.3.X.201_prd_ui_core_fwid.iby \epoc32\rom\override.oby )' failed.
+     [exec] mingw_make.exe[1]: *** [flash] Error 1
+     [exec] Creating Core ROM symbol file
+     [exec] ERROR: Can't open rombuild log file "q:\output\development_flash_images\engineering_english\product_edge\prd\mc_5132_0.0738.3.X.201_prd_ui.rom.log"
+     [exec] *** Error: (S:COREBLDROMSYM,C:1,B:1,K:0,V:1): Command `perl /epoc32/tools/maksym.pl q:\output\development_flash_images\engineering_english\product_edge\prd\mc_5132_0.0738.3.X.201_prd_ui.rom.log' failed.
+     [exec] mingw_make.exe[1]: *** [romsymbol] Error 1
+     [exec] mingw_make.exe: [flashuiprd] Error 2 (ignored)
+     [exec] +++ HiRes End 1190000506.71174
+     [exec] ++ Finished at Mon Sep 17 06:41:46 2007
Binary file buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/logo.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/logs/test_log.log	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,23 @@
+Some text...
+
+ERROR: This is an error!
+
+WARNING: This is a warning.
+
+
+copy "\conf\test1.confml" "\epoc32\rom\config\assets\s60\confml\test1.confml"
+copy "\conf\test2.confml" "\epoc32\rom\config\assets\s60\confml\test2.confml"
+copy "\conf\test3.confml" "\epoc32\rom\config\assets\s60\confml\test3.confml"
+copy "\conf\test4.confml" "\epoc32\rom\config\assets\s60\confml\test4.confml"
+\epoc32\rom\config\assets\s60\confml\test1.confml
+\epoc32\rom\config\assets\s60\confml\test2.confml
+\epoc32\rom\config\assets\s60\confml\test3.confml
+\epoc32\rom\config\assets\s60\confml\test4.confml
+
+More text...
+
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/matti/test.rb	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,34 @@
+# require needed Ruby, MATTI and Orbit files
+require 'test/unit'
+require 'otest/testcase'
+
+    
+  #TODO: Give suitable name for test class 
+class TestClassName < Test::Unit::TestCase
+    
+    #no need to do anything for initialize method
+  def initialize (args)
+    super(args)
+    # TODO define application name
+    app_path("hbinputtest.exe")
+  end 
+  
+  # Test case method
+  #TODO: name test method with suitable name
+  # Must: Test method must start test_
+  # Recomended: really descriping name
+  def test_do_something
+
+  # create test object app from defined sut
+    app = @sut.run(:name => @app_name)  
+      sleep(10)
+  
+  #Application is closed after test
+  app.close
+  #Verifies it is closed
+      
+  end #End of test case test_do_something
+ 
+
+end#Testsuite
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/packageiad/layers.sysdef.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,34 @@
+<?xml version="1.0"?>
+<!DOCTYPE SystemDefinition SYSTEM "sysdef_1_4_0.dtd" [
+  <!ENTITY layer_real_source_path "sf/app/camera" >
+]>
+
+<SystemDefinition name="camera" schema="1.4.0">
+  <systemModel>
+    <layer name="app_layer">
+      <module name="camera">
+        <unit unitID="imm.camera" mrp="" bldFile="&layer_real_source_path;/group" name="camera" />
+        <unit unitID="imm.camera.help" mrp="" bldFile="&layer_real_source_path;/camerauis/cameraapp/help/group" name="camera_help" />
+      </module>
+    </layer>
+    
+    <configuration name="developer_mc_403">
+        <layerRef layerName="api_test_layer">
+            <layer name="api_test_layer">
+              <module name="camera_api_tests">
+              	<unit unitID="imm.camera.camcorder_ui_constants_api" mrp="" bldFile="sf/app/camera/camera_plat/camcorder_ui_constants_api/tsrc/group"  name="camcorder_ui_constants_api"  />
+              </module>
+              <module name="active_palette_2_api_tests">
+              	<unit unitID="imm.camera.active_palette_2_api" mrp="" bldFile="sf/app/camera/camera_plat/active_palette_2_api/tsrc/group"  name="active_palette_2_api"  />
+              </module>
+            </layer>
+        </layerRef>
+    </configuration>
+        
+    <layer name="unit_test_layer">
+      <module name="camera_unit_tests">
+      </module>
+    </layer>
+        
+  </systemModel>
+</SystemDefinition>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/packageiad/sis/testPackage/depends.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<SystemDefinition name="sysdef_dtd_1_4_0_xml + domain_build + s60 + domain_build + PoC + camera + commonemail + contacts + contentcontrol + conversations + systemswextensions + devicecontrol + editors + extrapimui + filemanageruis + gallery + graphicsuis + homescreen + imgviewer + imppapplications + iptelephony + location + messaging + avdomain + multimediasharing + avdomain + organizer + photos + printingapps + profile + avdomain + security + telephony + videocenter + videotelephony + avdomain + webui + VpnClient + eas + redbend + tfxserver + webvideo + wmdrmkeystorage_dist + wmdrmpd_dist + appexts + camerasrv + classicui + compaccutils + contactservices + contentmanagement + conversationservices + devicecontentservices + devicemanagement + drm + eapol + editorengines + flashapi + graphics + imagehandling + imppservices + inputmethods + ipappservices + java + localconnectivity + locationservices + mds + mediamanagement + avdomain + avdomain + avdomain + mmuifw + avdomain + ncdengines + networking + openfw + openservices + organizerservices + presenceservices + remotestorage + searchengines + securityservices + serviceapi + systemswservices + telephonyservices + uiaccelerator + uiresources + uishellservices + upnpapplications + upnpservices + videoutils + voiceservices + web + webservices + xmlsrv + xmlui + graphicsadaptations + imagingextensions + localconnectivityextensions + locationextensions + messagingextensions + avdomainosext + mobileruntime + networkingextensions + systemswextensions + telephonyextensions + wlan + locationrefapp + avdomain + rtctest + analysistools + commontools + locationtools + nettools + performancetools + platformtools + systemswtools + toolsextensions + uitools + wlan_tools + ezynotes + tubefmradio + multimodal_interaction_sw.fmtx + multimodal_interaction_sw.hqtts + multimodal_interaction_sw.mobiledictionary + multimodal_interaction_sw.srsfengine + multimodal_interaction_sw.srsflanguagecomponents + multimodal_interaction_sw.voicesearch + analyzetool + bappeaprofiler + btproxy_rnd + ctc + eunit + hti + mc_rnd + nep + prism_rnd + traceswitch + trk_rnd + avdomain + avdomain + dictionary + j2mecerts + netdo_config + ocrsrv + phoneswitch + ptiezitypecore + ME_Music_VC + Me2ePlatform + OviIMPS + ShareOnline + TopContactsWidget + Juniper + Maps + ncdui + pec_sdk + iconsd + avdomain + Licensee_Tsy_Stub + PtiT9Core_stub + SIMATK_TSY_Stub + iaupdateapi_stub + posmsgpluginreferenceimpl + power_save_display_mode_stub + systemswstubs + wlanhwinit_stub" schema="1.4.0"><systemModel>
+
+    <layer name="s60_osext_layer">
+    
+    <module name="networkingextensions">
+        <unit unitID="netdo.networkingextensions" mrp="" bldFile="s60/osext/networkingextensions/group" name="networkingextensions"/>
+    </module>
+
+  
+    
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/packageiad/sis/testPackage/sisinfo.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<SystemDefinition name="sysdef_dtd_1_4_0_xml + domain_build + s60 + domain_build + PoC + camera + commonemail + contacts + contentcontrol + conversations + systemswextensions + devicecontrol + editors + extrapimui + filemanageruis + gallery + graphicsuis + homescreen + imgviewer + imppapplications + iptelephony + location + messaging + avdomain + multimediasharing + avdomain + organizer + photos + printingapps + profile + avdomain + security + telephony + videocenter + videotelephony + avdomain + webui + VpnClient + eas + redbend + tfxserver + webvideo + wmdrmkeystorage_dist + wmdrmpd_dist + appexts + camerasrv + classicui + compaccutils + contactservices + contentmanagement + conversationservices + devicecontentservices + devicemanagement + drm + eapol + editorengines + flashapi + graphics + imagehandling + imppservices + inputmethods + ipappservices + java + localconnectivity + locationservices + mds + mediamanagement + avdomain + avdomain + avdomain + mmuifw + avdomain + ncdengines + networking + openfw + openservices + organizerservices + presenceservices + remotestorage + searchengines + securityservices + serviceapi + systemswservices + telephonyservices + uiaccelerator + uiresources + uishellservices + upnpapplications + upnpservices + videoutils + voiceservices + web + webservices + xmlsrv + xmlui + graphicsadaptations + imagingextensions + localconnectivityextensions + locationextensions + messagingextensions + avdomainosext + mobileruntime + networkingextensions + systemswextensions + telephonyextensions + wlan + locationrefapp + avdomain + rtctest + analysistools + commontools + locationtools + nettools + performancetools + platformtools + systemswtools + toolsextensions + uitools + wlan_tools + ezynotes + tubefmradio + multimodal_interaction_sw.fmtx + multimodal_interaction_sw.hqtts + multimodal_interaction_sw.mobiledictionary + multimodal_interaction_sw.srsfengine + multimodal_interaction_sw.srsflanguagecomponents + multimodal_interaction_sw.voicesearch + analyzetool + bappeaprofiler + btproxy_rnd + ctc + eunit + hti + mc_rnd + nep + prism_rnd + traceswitch + trk_rnd + avdomain + avdomain + dictionary + j2mecerts + netdo_config + ocrsrv + phoneswitch + ptiezitypecore + ME_Music_VC + Me2ePlatform + OviIMPS + ShareOnline + TopContactsWidget + Juniper + Maps + ncdui + pec_sdk + iconsd + avdomain + Licensee_Tsy_Stub + PtiT9Core_stub + SIMATK_TSY_Stub + iaupdateapi_stub + posmsgpluginreferenceimpl + power_save_display_mode_stub + systemswstubs + wlanhwinit_stub" schema="1.4.0"><systemModel>
+
+    <layer name="s60_osext_layer">
+    
+    <module name="networkingextensions">
+        <unit unitID="netdo.networkingextensions" mrp="" bldFile="s60/osext/networkingextensions/group" name="networkingextensions"/>
+    </module>
+
+  
+    
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/packageiad/sis/testPackage/testPackage.sis	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+    <layer name="s60_osext_layer">
+    
+    <module name="networkingextensions">
+        <unit unitID="netdo.networkingextensions" mrp="" bldFile="s60/osext/networkingextensions/group" name="networkingextensions"/>
+    </module>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/pythonTest2.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,9 @@
+from optparse import OptionParser
+
+def main():
+    parser = OptionParser(usage="%prog VERSION")
+    opts, args = parser.parse_args()
+    input = args[0]
+    print input
+    
+main()
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/scanlog/all_regex_type.log	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<buildlog sbs_version="2.5.3 [2009-03-12 release]" xmlns="http://symbian.com/xml/build/log" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symbian.com/xml/build/log http://symbian.com/xml/build/log/1_0.xsd">
+<info>sbs: version 2.5.3 [2009-03-12 release]
+</info>
+<info>SBS_HOME E:/Build_E/ido-config-df/sbs</info>
+<info>Set-up E:/Build_E/ido-config-df/sbs/sbs_init.xml</info>
+<info>Command-line-arguments -s z:\output/build/canonical_system_definition_build.xml -k -c armv5 -j 4 -m z:\output\logs/ido_imm_mcl_devlon70_robot_5.1.005__armv5_multiple_thread_build_Makefile --filters=FilterHeliumLog -f z:\output\logs/ido_imm_mcl_devlon70_robot_5.1.005__armv5_multiple_thread_build_compile.log</info>
+<recipe name='resourcedependencies' target='z:/epoc32/build/camera/c_87f62b1af2e7d874/gscameraplugin_dll/gscameraplugin_resource_plugins_27.rpp.d' host='fawec012' layer='app_layer' component='' bldinf='z:/sf/app/camera/group/bld.inf' mmp='z:/sf/app/camera/camerauis/cameraapp/generic/GsCamcorderPlugin/group/gscameraplugin.mmp' config='armv5_udeb' platform='' phase='RESOURCE_DEPS' source=''>
+<![CDATA[
+mingw_make.exe: error
+test FATAL ERROR(S):abcd
+): Missing file:
+abcd FLEXlm error:
+ABLD ERROR: 1234
+BLDMAKE ERROR: 43543
+test FATAL ERROR 
+fatal error U1077 error occured
+test warning U4010
+Warning:
+WARNING:
+LINK : warning
+REMARK: 
+:10: warning: cannot find matching deallocation function
+INFO:
+make[10]: ***abcd
+make[10]: abcd not remade because of errors
+error: ((Internal fault)):
+ERROR,error: ((Internal fault):)$,
+ error given more than once in the same rule
+ERROR: build error
+ERROR EC95940: ec error
+Errors caused tool to abort. asdfasdf
+test no rule to make target
+ERROR,.*no rule to make.*,
+ERROR	testing
+100) : WARNING: TEST123
+MAKEDEF WARNING: TEST
+TEST 123 \\(10) : Warning: (400)
+BLDMAKE WARNING: bldm warning
+MAKEDEF WARNING: make warning
+atest(100) : warning C aasdfa
+testas 100: warning: test123
+usage Usage Warning: warn1
+abcd mwld.exe: abcd
+Command line warning abcd
+anything ERROR: bad relocation: test123
+10 warning in component1
+EventType: Error Source: SweepNTabcde
+WARNING,.EventType:\s+Error\s+Source:\s+SweepNT.*,
+WARN	test
+anything Command line warning D4025 : test
+REMARK: test remark anything
+EventType: Error Source: GNU Make.
+abcd :10: warning: cannot find matching deallocation function 100:note abcd
+INFO: any info match
+"abcd" 
+line 100+: Warning:', : warning 30:,
+"abcd , line 100: Error: 100abcd:. abcd
+line 10: Warning:\', r\': warning 10: abcd
+"abcd, line 100: Warning: 100 abcd: abcd",
+]]><time start='1238421421.153697000' elapsed='0.171' />
++ RV=0
++ set +x
+<status exit='ok' attempt='1' />
+</recipe>
+</buildlog>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/scanlog/all_regex_type.log_sbs_info.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sbsinfo>
+<logfile name="test-scanlog-metadata-1.log"/>
+<duration time="01:00:28"/>
+</sbsinfo>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/GRACE/service/product/release_1/release_metadata.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<releaseInformation>
+	<releaseDetails>
+		<releaseID>
+			<service name="service"/>
+			<product name="product"/>
+			<release name="release_1"/>
+		</releaseID>
+	</releaseDetails>
+	<releaseFiles>
+		<package default="true" extract="single" type=".zip" name="test1.zip" md5checksum="29b6ddc0265958641949c15e5c16c580" size="112"/>
+		<package default="true" extract="single" type=".zip" name="test2.zip"  md5checksum="433fd286bcf7e55be9d0e7e88f0cd84c" size="112"/>
+	</releaseFiles>
+	<externalFiles/>
+</releaseInformation>
\ No newline at end of file
Binary file buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/GRACE/service/product/release_1/test1.zip has changed
Binary file buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/GRACE/service/product/release_1/test2.zip has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/GRACE/service/product/release_1_001/release_metadata.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<releaseInformation>
+	<releaseDetails>
+		<releaseID>
+			<service name="service"/>
+			<product name="product"/>
+			<release name="release_1_001"/>
+		</releaseID>
+		<dependsOf>
+			<service name="service"/>
+			<product name="product"/>
+			<release name="release_1"/>
+		</dependsOf>
+	</releaseDetails>
+	<releaseFiles>
+		<package default="true" extract="single" type=".zip" name="sp1.zip"/>
+	</releaseFiles>
+	<externalFiles/>
+</releaseInformation>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/GRACE/service/product/release_1_001/release_metadata_1.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<releaseInformation>
+	<releaseDetails>
+		<releaseID>
+			<service name="service"/>
+			<product name="product"/>
+			<release name="release_1_001"/>
+		</releaseID>
+		<dependsOf>
+			<service name="service"/>
+			<product name="product"/>
+			<release name="release_1"/>
+		</dependsOf>
+	</releaseDetails>
+
+    <servicePacks>
+        <servicePack name="SP1" reInstallNeeded="false">
+            <file name="sp1.zip"/>
+            <instructions name="specialInstructions.xml"/>
+        </servicePack>
+    </servicePacks>
+	<externalFiles/>
+</releaseInformation>
\ No newline at end of file
Binary file buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/GRACE/service/product/release_1_001/sp1.zip has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/GRACE/service/product/release_1_002/release_metadata.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<releaseInformation>
+	<releaseDetails>
+		<releaseID>
+			<service name="service"/>
+			<product name="product"/>
+			<release name="release_1_002"/>
+		</releaseID>
+		<dependsOf>
+			<service name="service"/>
+			<product name="product"/>
+			<release name="release_1_001"/>
+		</dependsOf>
+	</releaseDetails>
+
+    <servicePacks>
+        <servicePack name="SP2" reInstallNeeded="false">
+            <file name="sp2.zip"/>
+            <instructions name="specialInstructions.xml"/>
+        </servicePack>
+    </servicePacks>
+	<externalFiles/>
+</releaseInformation>
\ No newline at end of file
Binary file buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/GRACE/service/product/release_1_002/sp2.zip has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/GRACE/service/product/release_2/release_metadata.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<releaseInformation>
+	<releaseDetails>
+		<releaseID>
+			<service name="service"/>
+			<product name="product"/>
+			<release name="release_2"/>
+		</releaseID>
+	</releaseDetails>
+	<releaseFiles>
+		<package default="true" extract="single" type=".zip" name="test1.zip"/>
+		<package default="true" extract="single" type=".zip" name="missing.zip"/>
+	</releaseFiles>
+	<externalFiles/>
+</releaseInformation>
\ No newline at end of file
Binary file buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/GRACE/service/product/release_2/test1.zip has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/GRACE/service/product/release_3/release_metadata.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<releaseInformation>
+	<releaseDetails>
+		<releaseID>
+			<service name="service"/>
+			<product name="product"/>
+			<release name="release_2"/>
+		</releaseID>
+	</releaseDetails>
+	<releaseFiles>
+		<package default="true" extract="single" type=".zip" name="test1.zip"/>
+		<package default="true" extract="single" type=".zip" name="missing.zip"/>
+	</releaseFiles>
+	<externalFiles/>
+</releaseInformation>
\ No newline at end of file
Binary file buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/GRACE/service/product/release_3/test1.zip has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/GRACE/service/product/release_4/TICKLER	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,31 @@
+
+Title:  site Grace Server
+User:   symuser
+Date:   2008-11-06 15:36:56
+Screen: View Release
++---------------------------+----------------------------------+-------------------+-----------------+--------+
+|Description                |V1                                |V2                 |V3               |V4      |
++---------------------------+----------------------------------+-------------------+-----------------+--------+
+|Release is currently       |LOCKED                            |                   |                 |        |
+|Packages Total / Size Total|     1 /            .01 MB        |                   |                 |        |
+|Packages / Released From   |     1 / fasrrm01.europe.nokia.com|                   |                 |        |
+|Packages / Released By     |     1 / varamana                 |                   |                 |        |
+|--                         |                                  |                   |                 |        |
+|Packages Sent / Site       |Start                             |Finish             |Moved            |Saved   |
+|1 / site              |                                  |                   |                 |        |
+|1 / site                |2008-11-06 14:41:47               |2008-11-06 14:41:54|           .01 MB|  -1.4 %|
+|1 / site                 |                                  |                   |                 |        |
+|1 / site             |2008-11-06 14:41:53               |2008-11-06 14:41:54|           .01 MB|  -1.4 %|
+|1 / site                 |                                  |                   |                 |        |
+|1 / site               |2008-11-06 14:41:54               |2008-11-06 14:41:56|           .01 MB|  -1.4 %|
+|1 / site              |2008-11-06 14:41:56               |2008-11-06 14:41:58|           .01 MB|  -1.4 %|
+|1 / site                   |2008-11-06 14:41:45               |2008-11-06 14:41:47|           .01 MB|  -1.4 %|
+|1 / site                   |2008-11-06 15:19:02               |2008-11-06 15:19:04|           .01 MB|  -1.4 %|
+|1 / site              |                                  |                   |                 |        |
+|1 / site                |2008-11-06 14:41:53               |2008-11-06 14:41:55|           .01 MB|  -1.4 %|
+|1 / site                  |2008-11-06 14:47:39               |2008-11-06 14:47:43|           .01 MB|  -1.4 %|
+|1 / site              |                                  |                   |                 |        |
++---------------------------+----------------------------------+-------------------+-----------------+--------+
+Rows: 19  Page: 1  RPP: 25
+
+ 
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/GRACE/service/product/release_4/release_metadata.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<releaseInformation>
+	<releaseDetails>
+		<releaseID>
+			<service name="service"/>
+			<product name="product"/>
+			<release name="release_2"/>
+		</releaseID>
+	</releaseDetails>
+	<releaseFiles>
+		<package default="true" extract="single" type=".zip" name="test1.zip"/>
+		<package default="true" extract="single" type=".zip" name="missing.zip"/>
+	</releaseFiles>
+	<externalFiles/>
+</releaseInformation>
\ No newline at end of file
Binary file buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/GRACE/service/product/release_4/test1.zip has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/GRACE/service/product/release_5/HYDRASTATUS.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<release xmlns="http://hydra.nokia.com/schema/hydrastatus">
+  <name>5.0</name>
+  <state>Ready</state>
+  <service>service</service>
+  <ctime>2009-06-23T14:29:47+00:00</ctime>
+  <owner>a</owner>
+  <direction>OUT</direction>
+  <total-file-count>1</total-file-count>
+  <total-file-size>236313771</total-file-size>
+  <transports>
+    <transport>
+      <peer>z</peer>
+      <direction>OUT</direction>
+      <state>Done</state>
+      <file-count>1</file-count>
+      <file-size>236313771</file-size>
+      <retries>0</retries>
+    </transport>
+  </transports>
+</release>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/GRACE/service/product/release_5/release_metadata.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<releaseInformation>
+	<releaseDetails>
+		<releaseID>
+			<service name="service"/>
+			<product name="product"/>
+			<release name="release_5"/>
+		</releaseID>
+	</releaseDetails>
+	<releaseFiles>
+		<package default="true" extract="single" type=".zip" name="test1.zip" md5checksum="29b6ddc0265958641949c15e5c16c580" size="112"/>
+	</releaseFiles>
+	<externalFiles/>
+</releaseInformation>
\ No newline at end of file
Binary file buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/GRACE/service/product/release_5/test1.zip has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/GRACE/service/product/release_6/HYDRASTATUS.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<release xmlns="http://hydra.nokia.com/schema/hydrastatus">
+  <name>5.0</name>
+  <state>Created</state>
+  <service>service</service>
+  <ctime>2009-06-23T14:29:47+00:00</ctime>
+  <owner>a</owner>
+  <direction>OUT</direction>
+  <total-file-count>1</total-file-count>
+  <total-file-size>236313771</total-file-size>
+  <transports>
+    <transport>
+      <peer>z</peer>
+      <direction>OUT</direction>
+      <state>Done</state>
+      <file-count>1</file-count>
+      <file-size>236313771</file-size>
+      <retries>0</retries>
+    </transport>
+  </transports>
+</release>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/GRACE/service/product/release_6/release_metadata.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<releaseInformation>
+	<releaseDetails>
+		<releaseID>
+			<service name="service"/>
+			<product name="product"/>
+			<release name="release_6"/>
+		</releaseID>
+	</releaseDetails>
+	<releaseFiles>
+		<package default="true" extract="single" type=".zip" name="test1.zip" md5checksum="29b6ddc0265958641949c15e5c16c580" size="112"/>
+	</releaseFiles>
+	<externalFiles/>
+</releaseInformation>
\ No newline at end of file
Binary file buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/GRACE/service/product/release_6/test1.zip has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/GRACE/service/product/release_7/release_metadata.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<releaseInformation>
+	<releaseDetails>
+		<releaseID>
+			<service name="Helium"/>
+			<product name="test"/>
+			<release name="${env.PID}"/>
+		</releaseID>
+	</releaseDetails>
+	<releaseFiles>
+		<package default="true" extract="single" type=".zip" name="test1.zip" md5checksum="29b6ddc0265958641949c15e5c16c580" size="112"/>
+		<package default="true" extract="single" type=".zip" name="test2.zip"  md5checksum="433fd286bcf7e55be9d0e7e88f0cd84c" size="112"/>
+	</releaseFiles>
+	<externalFiles/>
+</releaseInformation>
\ No newline at end of file
Binary file buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/GRACE/service/product/release_7/test1.zip has changed
Binary file buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/GRACE/service/product/release_7/test2.zip has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/generated_release_metadata.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<releaseInformation>
+    <releaseDetails>
+        <releaseID>
+            <service name="minibuild"/>
+            <product name="PF5250"/>
+            <release name="PF5250_minibuild_630"/>
+        </releaseID>
+    </releaseDetails>
+    <releaseFiles>
+    <package s60filter="" name="s60_app_organizer_clock.zip" default="true" type="zip" filters="" extract="single"/>
+  <package s60filter="" name="s60_app_organizer_clock_binary.zip" default="true" type="zip" filters="" extract="single"/>
+  <package s60filter="" name="s60_mw_classicui_and_app_radio.zip" default="true" type="zip" filters="" extract="single"/>
+    <package s60filter="" name="s60_mw_classicui_and_app_radio_internal.zip" default="true" type="zip" filters="" extract="double"/>
+  </releaseFiles>
+    <externalFiles/>
+
+	<filters>
+		<!-- Filter definitions -->
+		<!-- 	code = code used in package attribute "filters" 
+					text = Filter name
+					description = filter description
+		-->
+    <filter text="Emulator binaries" code="foo" description="Files needed for emulator."/> 
+    <filter text="complementary binaries and sources" code="bar" description="complementary components binaries and sources"/>
+    <filter text="source files" code="test" description="symbian and S60 source files"/>
+	</filters>
+    
+</releaseInformation>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/merge/main_metadata_1.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<releaseInformation>
+	<releaseDetails>
+		<releaseID>
+			<service name="service"/>
+			<product name="product"/>
+			<release name="release_1"/>
+		</releaseID>
+	</releaseDetails>
+	<releaseFiles>
+		<package default="true" extract="single" type=".zip" name="test1.zip" md5checksum="29b6ddc0265958641949c15e5c16c580" size="112"/>
+	</releaseFiles>
+	<externalFiles/>
+</releaseInformation>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/merge/main_metadata_2.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<releaseInformation>
+	<releaseDetails>
+		<releaseID>
+			<service name="service"/>
+			<product name="product"/>
+			<release name="release_1"/>
+		</releaseID>
+	</releaseDetails>
+	<releaseFiles>
+		<package default="true" extract="single" type=".zip" name="test2.zip"  md5checksum="433fd286bcf7e55be9d0e7e88f0cd84c" size="112"/>
+	</releaseFiles>
+	<externalFiles/>
+</releaseInformation>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/merge/main_metadata_3.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<releaseInformation>
+	<releaseDetails>
+		<releaseID>
+			<service name="service"/>
+			<product name="product"/>
+			<release name="release_1"/>
+		</releaseID>
+	</releaseDetails>
+	<releaseFiles>
+		<package default="true" extract="single" type=".zip" name="test3_1.zip"  md5checksum="433fd286bcf7e55be9d0e7e88f0cd84c" size="112"/>
+		<package default="true" extract="single" type=".zip" name="test3_2.zip"  md5checksum="433fd286bcf7e55be9d0e7e88f0cd84c" size="112"/>
+	</releaseFiles>
+	<externalFiles/>
+</releaseInformation>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/override/one/release_metadata.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<releaseInformation>
+	<releaseDetails>
+		<releaseID>
+			<service name="service"/>
+			<product name="product"/>
+			<release name="release_1"/>
+		</releaseID>
+	</releaseDetails>
+	<releaseFiles>
+		<package default="true" extract="single" type=".zip" name="test1.zip" md5checksum="29b6ddc0265958641949c15e5c16c580" size="112"/>
+		<package default="true" extract="single" type=".zip" name="test2.zip"  md5checksum="433fd286bcf7e55be9d0e7e88f0cd84c" size="112"/>
+	</releaseFiles>
+	<externalFiles/>
+</releaseInformation>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/override/several/release_metadata.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<releaseInformation>
+	<releaseDetails>
+		<releaseID>
+			<service name="service"/>
+			<product name="product"/>
+			<release name="release_1"/>
+		</releaseID>
+	</releaseDetails>
+	<releaseFiles>
+		<package default="true" extract="single" type=".zip" name="test1.zip" md5checksum="29b6ddc0265958641949c15e5c16c580" size="112"/>
+		<package default="true" extract="single" type=".zip" name="test2.zip"  md5checksum="433fd286bcf7e55be9d0e7e88f0cd84c" size="112"/>
+	</releaseFiles>
+	<externalFiles/>
+</releaseInformation>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/override/several/release_metadata_1.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<releaseInformation>
+	<releaseDetails>
+		<releaseID>
+			<service name="service"/>
+			<product name="product"/>
+			<release name="release_1"/>
+		</releaseID>
+	</releaseDetails>
+	<releaseFiles>
+		<package default="true" extract="single" type=".zip" name="test1.zip" md5checksum="29b6ddc0265958641949c15e5c16c580" size="112"/>
+		<package default="true" extract="single" type=".zip" name="test2.zip"  md5checksum="433fd286bcf7e55be9d0e7e88f0cd84c" size="112"/>
+	</releaseFiles>
+	<externalFiles/>
+</releaseInformation>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/override/several/release_metadata_2.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<releaseInformation>
+	<releaseDetails>
+		<releaseID>
+			<service name="service"/>
+			<product name="product"/>
+			<release name="release_1"/>
+		</releaseID>
+	</releaseDetails>
+	<releaseFiles>
+		<package default="true" extract="single" type=".zip" name="test1.zip" md5checksum="29b6ddc0265958641949c15e5c16c580" size="112"/>
+		<package default="true" extract="single" type=".zip" name="test2.zip"  md5checksum="433fd286bcf7e55be9d0e7e88f0cd84c" size="112"/>
+	</releaseFiles>
+	<externalFiles/>
+</releaseInformation>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/symrec/revision_release_metadata.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<releaseInformation hidden="false">
+	<releaseDetails>
+		<releaseID>	
+			<service name="S60RnD"/>
+			<product name="pf_5250"/>
+			<release name="pf_5250_200836_001"/>
+		</releaseID>
+		<dependsOf>
+			<service name="S60RnD"/>
+			<product name="pf_5250"/>
+			<release name="pf_5250_200836"/>
+		</dependsOf>
+		<!-- <previousBaseline>
+			<service name="S60RnD" />
+			<product name="pf_5250" />
+			<release name="pf_5250_200835" />
+		</previousBaseline> -->
+	</releaseDetails>
+
+	<releaseFiles>
+	<package s60filter="emu" name="pf_5250_200836_SP1.zip" default="true" type="zip" filters="emu" extract="single"/>
+  </releaseFiles>
+
+	<!-- <servicePacks>
+		<servicePack name="SP1" reInstallNeeded="false">
+			<file name="pf_5250_200836_SP1.zip"/>
+			<instructions name="specialInstructions.xml"/>
+		</servicePack>
+	</servicePacks> -->
+
+	<localeVariants>
+		<variant name="western">
+			<file name="pf_5250_200836_delta_western.zip"/>
+		</variant>
+		<variant name="china">
+			<file name="pf_5250_200836_delta_china.zip"/>
+		</variant>
+		<variant name="japan">
+			<file name="pf_5250_200836_delta_japan.zip"/>
+		</variant>
+	</localeVariants>
+	
+	<filters>
+		<!-- Filter definitions -->
+		<!-- 	code = code used in package attribute "filters" 
+					text = Filter name
+					description = filter description
+		-->
+    <filter text="Emulator binaries" code="emu" description="Files needed for emulator."/> 
+    <filter text="complementary binaries and sources" code="compl" description="complementary components binaries and sources"/>
+    <filter text="source files" code="src" description="symbian and S60 source files"/>
+    <filter text="source files" code="tsrc" description="test source files"/>
+    <filter text="binary files" code="jvm" description="java virtual machine binaries and sources"/>
+	</filters>
+	
+</releaseInformation>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/sysdef2make/SDF.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,184 @@
+<?xml version="1.0"?>
+<!-- Enable this after dtd is available with OsExt release -->
+<!DOCTYPE SystemDefinition [
+ <!ELEMENT SystemDefinition (systemModel?, build?)>
+ <!ATTLIST SystemDefinition
+  name CDATA #REQUIRED
+  schema CDATA #REQUIRED>
+ <!ELEMENT systemModel (layer+)>
+ <!ELEMENT layer (logicalset* | module*)*>
+ <!ATTLIST layer
+  name CDATA #REQUIRED
+  levels CDATA #IMPLIED
+  span CDATA #IMPLIED>
+ <!ELEMENT logicalset (logicalsubset* | module* | unit* | package* | prebuilt*)*>
+ <!ATTLIST logicalset name CDATA #REQUIRED>
+ <!ELEMENT logicalsubset (module* | unit* | package* | prebuilt*)*>
+ <!ATTLIST logicalsubset name CDATA #REQUIRED>
+ <!ELEMENT module (component* | unit* | package* | prebuilt*)*>
+ <!ATTLIST module
+  name CDATA #REQUIRED
+  level CDATA #IMPLIED>
+ <!ELEMENT component (unit* | package* | prebuilt*)*>
+ <!ATTLIST component name CDATA #REQUIRED>
+ <!ELEMENT unit EMPTY>
+ <!ATTLIST unit
+  unitID ID #REQUIRED
+  name CDATA #REQUIRED
+  mrp CDATA #REQUIRED
+  filter CDATA #IMPLIED
+  bldFile CDATA #REQUIRED
+  priority CDATA #IMPLIED
+  contract CDATA #IMPLIED>
+ <!ELEMENT package EMPTY>
+ <!ATTLIST package
+  name CDATA #REQUIRED
+  mrp CDATA #REQUIRED
+  filter CDATA #IMPLIED
+  contract CDATA #IMPLIED>
+ <!ELEMENT prebuilt EMPTY>
+ <!ATTLIST prebuilt
+  name CDATA #REQUIRED
+  version CDATA #REQUIRED
+  late (Y|N) #IMPLIED
+  filter CDATA #IMPLIED
+  contract CDATA #IMPLIED>
+ <!ELEMENT build (option* | target+ | targetList+ | unitList+ | configuration+)*>
+ <!ELEMENT unitList (unitRef+)>
+ <!ATTLIST unitList
+  name ID #REQUIRED
+  description CDATA #REQUIRED>
+ <!ELEMENT unitRef EMPTY>
+ <!ATTLIST unitRef unit IDREF #REQUIRED>
+ <!ELEMENT targetList EMPTY>
+ <!ATTLIST targetList
+  name ID #REQUIRED
+  description CDATA #REQUIRED
+  target IDREFS #REQUIRED>
+ <!ELEMENT target EMPTY>
+ <!ATTLIST target
+  name ID #REQUIRED
+  abldTarget CDATA #REQUIRED
+  description CDATA #REQUIRED>
+ <!ELEMENT option EMPTY>
+ <!ATTLIST option
+  name ID #REQUIRED
+  abldOption CDATA #REQUIRED
+  description CDATA #REQUIRED
+  enable (Y | N | y | n) #REQUIRED>
+ <!ELEMENT configuration (unitListRef+ | layerRef+ | task+)*>
+ <!ATTLIST configuration
+  name ID #REQUIRED
+  description CDATA #REQUIRED
+  filter CDATA #REQUIRED>
+ <!ELEMENT task ( unitListRef* , (buildLayer | specialInstructions))>
+ <!ELEMENT unitListRef EMPTY>
+ <!ATTLIST unitListRef unitList IDREF #REQUIRED>
+ <!ELEMENT layerRef EMPTY>
+ <!ATTLIST layerRef layerName CDATA #REQUIRED>
+ <!ELEMENT buildLayer EMPTY>
+ <!ATTLIST buildLayer
+  command CDATA #REQUIRED
+  targetList IDREFS #IMPLIED
+  unitParallel (Y | N | y | n) #REQUIRED
+  targetParallel (Y | N | y | n) #IMPLIED>
+ <!ELEMENT specialInstructions EMPTY>
+ <!ATTLIST specialInstructions
+  name CDATA #REQUIRED
+  cwd CDATA #REQUIRED
+  command CDATA #REQUIRED>  
+]>
+
+
+
+<SystemDefinition name="PPD_build" schema="1.4.0">
+
+  <systemModel>
+  	<!-- Common file for prebuild layers-->
+  	
+  	
+    <layer name="layer1">  
+	    <module name="module1"> 
+		    <component name="component1"> 
+			    <unit unitID="unit1"  name="unit1" bldFile="unit1\location" mrp="" filter=""/> 
+			    <unit unitID="unit2"  name="unit2" bldFile="unit2\location" mrp="" filter="!skip"/> 
+			    <unit unitID="unit3"  name="unit3" bldFile="unit3\location" mrp="" filter="skip"/>
+            </component> 
+        </module> 
+    </layer>
+
+  </systemModel>
+
+  <build>
+  
+    <option name="KEEPGOING" abldOption="-keepgoing" description="Causes make to keepgoing on errors" enable="Y"/>
+    <option name="SAVESPACE" abldOption="-savespace" description="Causes the removal of intermediate files" enable="N"/>
+    <target name="WINS" abldTarget="wins" description="MSVC Compiler"/>
+    <target name="WINS_REL" abldTarget="wins urel" description="MSVC Compiler"/>
+    <target name="WINS_DEB" abldTarget="wins udeb" description="MSVC Compiler"/>
+    <target name="WINSCW" abldTarget="winscw" description="CodeWarrior Compiler"/>
+    <target name="WINSCW_REL" abldTarget="winscw urel" description="CodeWarrior Compiler"/>
+    <target name="WINSCW_DEB" abldTarget="winscw udeb" description="CodeWarrior Compiler"/>
+    <target name="TOOLS" abldTarget="tools" description="MSVC Compiler for Tools"/>
+    <target name="TOOLS_REL" abldTarget="tools rel" description="MSVC Compiler for Tools Release mode only"/>
+    <target name="ARMV5" abldTarget="armv5" description="RVCT Compiler"/>
+    <target name="ARMV5_REL" abldTarget="armv5 urel" description="RVCT Compiler"/>
+    <target name="ARMV5_DEB" abldTarget="armv5 udeb" description="RVCT Compiler"/>
+
+    <!-- Aditional Targets -->
+    <target name="CWTOOLS" abldTarget="cwtools" description="CodeWarrior Compiler for Tools"/> <!-- Not supported -->
+    <target name="CWTOOLS_REL" abldTarget="cwtools rel" description="CodeWarrior Compiler for Tools Release mode only"/> <!-- Not supported -->
+    
+    <targetList name="default" description="Main Targets" target="WINSCW ARMV5"/>
+    <targetList name="default_winscw" description="Main Targets" target="WINSCW"/>
+    <targetList name="default_armv5" description="Main Targets" target="ARMV5"/>
+    <targetList name="default_rel" description="Main Targets for rel" target="ARMV5_REL"/>
+    <targetList name="default_deb" description="Main Targets for deb" target="ARMV5_DEB"/>
+    <targetList name="default_tools" description="tools Targets" target="TOOLS"/>
+    <targetList name="tools_rel" description="tools Release Targets" target="TOOLS_REL"/>
+    <targetList name="cwtools" description="cwtools Targets" target="CWTOOLS"/>
+    <targetList name="cwtools_rel" description="cwtools Release Targets" target="CWTOOLS_REL"/>
+  
+    <configuration name="config1" description="config1" filter="">
+			<task><specialInstructions name="attrib" cwd="%EPOCROOT%" command="attrib -R \*.* /S /D"/></task>
+			<task><specialInstructions name="touch_s60" cwd="%EPOCROOT%" command="toucher.exe \s60"/></task>
+			<task><specialInstructions name="touch_ppd_sw" cwd="%EPOCROOT%" command="toucher.exe \ppd_sw"/></task>
+			<task><specialInstructions name="touch_ncp_sw" cwd="%EPOCROOT%" command="toucher.exe \ncp_sw"/></task>
+			<task><specialInstructions name="touch_tools_ncp_tools" cwd="%EPOCROOT%" command="toucher.exe \tools\ncp_tools"/></task>
+			<task><specialInstructions name="touch_config" cwd="%EPOCROOT%" command="toucher.exe \config"/></task>
+			<task><specialInstructions name="touch_psw" cwd="%EPOCROOT%" command="toucher.exe \psw"/></task>			
+			<task><specialInstructions name="CopyCommonVariation" cwd="\psw\ncp_psw\psw" command="xcopy *.*  \ /F /R /Y /S"/></task>
+			<task><specialInstructions name="CopySPP_ABLD" cwd="\tools\ncp_tools\toolsmod_93" command="xcopy *.*  \ /F /R /Y /S"/></task>
+			<task><specialInstructions name="CopyNCP52Variation" cwd="\psw\ncp_psw\platform_psw\psw" command="xcopy *.*  \ /F /R /Y /S"/></task>
+			<task><specialInstructions name="CopyS6050Variation" cwd="\psw\s60_50_psw\psw" command="xcopy *.*  \ /F /R /Y /S"/></task>
+			<task><specialInstructions name="psw\s60_50_psw\52.50_psw" cwd="\psw\s60_50_psw\52.50_psw\psw" command="xcopy *.*  \ /F /R /Y /S"/></task>
+    </configuration>
+
+
+	<configuration name="config2" description="config2" filter="">			
+			<layerRef layerName="layer1" />
+			<task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+			<task><buildLayer command="abld export" unitParallel="Y"/></task>
+	</configuration>
+    
+	<configuration name="config3" description="config3" filter="skip">			
+			<layerRef layerName="layer1" />
+			<task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+			<task><buildLayer command="abld export" unitParallel="Y"/></task>
+	</configuration>
+
+
+	<unitList name="unitlist1">
+		<unitRef unit="unit1" />
+		<unitRef unit="unit2" />
+		<unitRef unit="unit3" />
+	</unitList>
+	<configuration name="config4" description="config4" filter="skip">			
+			<unitListRef unitList="unitlist1" />
+			<task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+			<task><buildLayer command="abld export" unitParallel="Y"/></task>
+			<task><buildLayer command="abld build" targetList="default" unitParallel="Y"/></task>
+	</configuration>
+
+</build>
+</SystemDefinition>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/test_ccmwaid.inf	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,3 @@
+/nokia/jk_nmp/groups/gscm/dbs/jk1f5132/db
+2073797
+sa1spp#1/project/S60/jk1f5132#wbernard
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/test_database.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<antDatabase>
+  <project>
+    <name>compile.cmaker</name>
+    <documentation> 
+      <p>cMaker support.</p>
+    </documentation>
+    <default/>
+    <pythonDependency/>
+    <target>
+      <name>cmaker-install</name>
+      <ifDependency/>
+      <unlessDependency/>
+      <description/>
+      <tasks>3</tasks>
+      <location>C:\Helium_svn\helium\tools\compile\cmaker.ant.xml:78:</location>
+      <log>${build.id}_install.cmaker.log</log>
+      <executable>${build.drive}/epoc32/tools/make.exe</executable>
+      <documentation> 
+        <p>Installing CMaker.</p>
+      </documentation>
+      <propertyDependency>build.id</propertyDependency>
+      <propertyDependency>build.drive</propertyDependency>
+      <propertyDependency>cmaker.component.dir</propertyDependency>
+      <source>&lt;target name="cmaker-install"&gt;
+        &lt;hlm:recordStartMacro xmlns:hlm="http://www.nokia.com/helium" name="${build.id}_install.cmaker.log" emacsmode="true"/&gt;
+        &lt;exec executable="${build.drive}/epoc32/tools/make.exe" dir="${cmaker.component.dir}"&gt;
+            &lt;arg line="install"/&gt;
+        &lt;/exec&gt;
+        &lt;hlm:recordStopMacro xmlns:hlm="http://www.nokia.com/helium" name="${build.id}_install.cmaker.log"/&gt;
+    &lt;/target&gt;</source>
+    </target>
+    <target>
+      <name>cmaker-export</name>
+      <ifDependency>enable.cmaker</ifDependency>
+      <unlessDependency/>
+      <description/>
+      <tasks>3</tasks>
+      <location>C:\Helium_svn\helium\tools\compile\cmaker.ant.xml:87:</location>
+      <dependency type="direct">cmaker-install</dependency>
+      <log>${build.id}.export.cmaker.log</log>
+      <documentation> 
+        <p>CMaker export configuration.</p>
+      </documentation>
+      <propertyDependency>build.id</propertyDependency>
+      <propertyDependency>cmaker.pp.version</propertyDependency>
+      <propertyDependency>cmaker.s60.version</propertyDependency>
+      <source>&lt;target name="cmaker-export" depends="cmaker-install" if="enable.cmaker"&gt;
+        &lt;hlm:recordStartMacro xmlns:hlm="http://www.nokia.com/helium" name="${build.id}.export.cmaker.log" emacsmode="true"/&gt;
+        &lt;hlm:cmakerMacro xmlns:hlm="http://www.nokia.com/helium" ncp="${cmaker.pp.version}" s60="${cmaker.s60.version}" action="export"/&gt;
+        &lt;hlm:recordStopMacro xmlns:hlm="http://www.nokia.com/helium" name="${build.id}.export.cmaker.log"/&gt;
+    &lt;/target&gt;</source>
+    </target>
+  </project>
+</antDatabase>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/test_delivery.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,12 @@
+<?xml version="1.0" ?>
+<build>
+
+	<config name="delivery" abstract="true">
+		<set  name="database" value="to1tobet"/>
+		<set  name="thread" value="1"/>
+		<set  name="dir" value="C:\temp"/>
+		
+    	<config type="snapshot" name="2D_OpenVG_1_0-to1tobet#ekhuq:project:ou1ape3#1"/>
+    </config>
+    
+</build>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/test_prep.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,213 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<prepSpec>
+    <config>
+        <exclude name="abld.bat"/>
+        <exclude name=".static_wa"/>
+        <exclude name="_ccmwaid.inf"/>
+    </config>
+    <source label="Symbian" basedir="${symbian.release.dir}">
+        <unzip name="${symbian.zip.prefix}${symbian.release}_src_generic_part1.zip"/>
+        <unzip name="${symbian.zip.prefix}${symbian.release}_src_generic_part2.zip"/>
+        <unzip name="${symbian.zip.prefix}${symbian.release}_src_generic_part3.zip"/>
+        <unzip name="${symbian.zip.prefix}${symbian.release}_src_cedar.zip"/>
+        <unzip name="${symbian.zip.prefix}${symbian.release}_epoc32.zip">
+            <include name="epoc32/tools/*"/>
+            <include name="epoc32/gcc/*"/>
+            <include name="epoc32/rom/include/mscomp.iby"/>
+            <include name="epoc32/rom/include/staccomp.iby"/>
+            <include name="epoc32/rom/include/profiler.iby"/>
+            <include name="epoc32/INCLUDE/variant/Symbian_OS_v9.3.hrh"/>
+        </unzip>
+        <unzip name="${symbian.zip.prefix}${symbian.release}_epoc32_RELEASE_ARMV5.zip">
+            <include name="epoc32/RELEASE/ARMV5/UDEB/mscomp.dll"/>
+            <include name="epoc32/RELEASE/ARMV5/UDEB/staccomp.dll"/>
+            <include name="epoc32/RELEASE/ARMV5/UREL/mscomp.dll"/>
+            <include name="epoc32/RELEASE/ARMV5/UREL/staccomp.dll"/>
+            <!-- Crypto binaries -->
+            <include name="epoc32/RELEASE/ARMV5/lib/hash.lib"/>
+            <include name="epoc32/RELEASE/ARMV5/udeb/hash.dll"/>
+            <include name="epoc32/RELEASE/ARMV5/urel/hash.dll"/>
+            <include name="epoc32/RELEASE/ARMV5/lib/random.lib"/>
+            <include name="epoc32/RELEASE/ARMV5/udeb/random.dll"/>
+            <include name="epoc32/RELEASE/ARMV5/urel/random.dll"/>
+            <include name="epoc32/RELEASE/ARMV5/lib/randsvr.lib"/>
+            <include name="epoc32/RELEASE/ARMV5/udeb/randsvr.exe"/>
+            <include name="epoc32/RELEASE/ARMV5/urel/randsvr.exe"/>
+            <include name="epoc32/RELEASE/ARMV5/lib/pbe.lib"/>
+            <include name="epoc32/RELEASE/ARMV5/udeb/pbe.dll"/>
+            <include name="epoc32/RELEASE/ARMV5/urel/pbe.dll"/>
+            <include name="epoc32/RELEASE/ARMV5/lib/cryptography.lib"/>
+            <include name="epoc32/RELEASE/ARMV5/udeb/strong_cryptography.dll"/>
+            <include name="epoc32/RELEASE/ARMV5/urel/strong_cryptography.dll"/>
+            <include name="epoc32/RELEASE/ARMV5/udeb/weak_cryptography.dll"/>
+            <include name="epoc32/RELEASE/ARMV5/urel/weak_cryptography.dll"/>
+        </unzip>
+    </source>
+
+    
+    <!-- unzip ICF/ICD's for this baseline-->
+		<source name="icds" basedir="">
+			<unzipicds dest="${build.drive}\">
+				<!-- Unzipping from following location
+						 * S60
+						 * common
+						 * product
+				  -->
+				<location name="${ccm.base.dir}/S60/S60/Symbian_ICD_ICF/${symbian.release}">
+				</location>
+				<location name="${ccm.base.dir}/mc/mc_overlay/mc_4032_overlay/common/files/Symbian_ICD_ICF/${symbian.release}" />
+				<location name="${ccm.base.dir}/mc/mc_overlay/mc_4032_overlay/${product.name}_overlay/files/Symbian_ICD_ICF/${symbian.release}" />
+				
+				<include name="src/*" />
+			</unzipicds>
+		</source>
+ 
+    <source label="S60" basedir="${s60.release.dir}">
+        <unzip name="S60_3_2_${s60.version}_epoc32.zip" if="NO_NCP">
+            <!-- use default commdb for chip build -->
+    	    <include name="epoc32/data/Z/private/10202be9/cccccc00.cre"/>
+        </unzip>
+    </source>
+    
+    <source label="S60" basedir="${ccm.base.dir}/S60">
+        <copy name="S60" dest="s60"/>
+    </source>
+ 
+    <source label="ME" basedir="${ccm.base.dir}">
+        <copy name="me_scd_desw/me_scd_desw" dest="me/me_scd_desw"/>
+    </source>
+    
+    <source label="ppd_sw" basedir="${ccm.base.dir}">
+        <copy name="ppd_sw/ppd_sw" dest="ppd_sw"/>
+        <copy name="ppd_sw/ppd_sw/s60_dd/T9TegicDelivery" dest="s60/mw/inputmethods/textinput/T9TegicDelivery"/>
+    </source>
+
+    <source label="multimedia_sw" basedir="${ccm.base.dir}">
+        <copy name="productconceptfw/productconceptfw" dest="multimedia_sw/productconceptfw"/>
+    </source>
+
+    <source label="extra_apps" basedir="${ccm.base.dir}">
+        <copy name="DvbhTestApplication/DvbhTestApplication" dest="extra_apps/DvbhTestApplication"/>
+    </source>
+
+    <source label="chipset" basedir="${ccm.base.dir}/IBUSAL_chipset/IBUSAL_chipset">
+        <copy name="config" dest="config" unless="NO_NCP"/>
+        <copy name="ncp_sw" dest="ncp_sw" unless="NO_NCP"/>
+        <copy name="psw" dest="psw" unless="NO_NCP"/>
+        <copy name="tools" dest="tools" unless="NO_NCP"/>
+    </source>
+   
+    <source label="mc" basedir="${ccm.base.dir}">
+        <copy name="mc/mc_build" dest="mc/mc_build"/>
+        <copy name="mc/mc_config" dest="mc/mc_config"/>
+        <copy name="mc/mc_overlay/mc_4032_overlay" dest="mc/mc_overlay/mc_4032_overlay"/>
+<!--         <copy name="mc/mc_sw/mc_4032_sw/common" dest="mc/mc_sw/mc_4032_sw/common"/> -->
+<!--         <copy name="mc/mc_sw/mc_4032_sw/${product.name}" dest="mc/mc_sw/mc_4032_sw/${product.name}"/> -->
+        <copy name="mc/helium" dest="mc/helium"/>
+    </source>
+
+    <source label="chipset_cellmo" basedir="${ibusal.cellmo.dir}">
+        <copy name="product4" dest="${build.drive}/epoc32/include/product4/cellmo" unless="NO_NCP"/>
+        <copy name="product4" dest="${build.drive}/output/development_flash_images/cellmo/product4" unless="NO_NCP"/>
+        <copy name="product" dest="${build.drive}/epoc32/include/product/cellmo" unless="NO_NCP"/>
+        <copy name="product" dest="${build.drive}/output/development_flash_images/cellmo/product" unless="NO_NCP"/>
+    </source>
+
+
+
+    <source label="overlays" basedir="${build.drive}">
+        <copy name="mc/mc_overlay/mc_4032_overlay/common/files"/>
+        <copy name="mc/mc_overlay/mc_4032_overlay/${product.name}_overlay/files"/>
+
+		<!-- manual exports required before bldmake bldfiles phase -->
+        <copy name="mc/mc_config/mc_4032_config/${product.name}/include/ProductVariant.hrh" tofile="epoc32/include/oem/ProductVariant.hrh"/>
+        <copy name="mc/mc_config/mc_4032_config/${product.name}/include/ProductVariant.hrh" tofile="S60/misc/release/bldvariant/common/ProductVariant.hrh"/>
+        <copy name="mc/mc_config/mc_4032_config/${product.name}/include/ProductVariant.hrh" tofile="config/ncp_config/platform_config/config/inc/productvariant.hrh"/>
+        <copy name="me/me_scd_desw/variation/product/DeSwFlagsproduct.hrh" tofile="epoc32/include/oem/DeSwFlagsproduct.hrh"/>
+		<!--Ensure correct iby version gets exported regardless of timestamp: -->
+        <copy name="mc/mc_config/mc_4032_config/common/rom/include/NCPCenrep_variant.iby" tofile="config/ncp_config/config/rom/include/NCPCenrep_variant.iby"/>
+		<!--Ensure correct certificate gets exported regardless of timestamp: -->
+        <copy name="mc/mc_config/mc_4032_config/common/certificates/S60_root_certificates/rnd/swicertstore.dat" tofile="s60/mw/securityservices/pkiutilities/certificates/data/swicertstore.dat"/>
+
+
+    	<!-- S60 manual exports required before bldmake bldfiles phase phase where  bldvariant is included-->
+
+        <!-- special copy for subcon package -->
+        <copy name="mc/mc_config/mc_4032_config/common/certificates/S60_root_certificates/s60_licensees/swicertstore.dat" tofile="epoc32/data/z/resource/swicertstore.dat_for_s60_licensees"/>
+
+        <!-- special copy for localisation -->
+        <copy name="S60/tools/build_platforms/build/tools/parse_what_log.pl" tofile="epoc32/tools/s60tools/parse_what_log.pl"/>
+        <copy name="S60/tools/build_platforms/build/tools/add_build_definition_filter.pl" tofile="epoc32/tools/s60tools/add_build_definition_filter.pl"/>
+
+
+      <!-- chipset overlay;  manual exports required due to missing bld.inf-->
+    	<!-- from \build\ncp_build\build\variation.txt -->
+        <copy name="/psw/ncp_psw/psw" unless="NO_NCP"/>
+        <copy name="/tools/toolsmod_93" unless="NO_NCP"/>
+    	<!-- from \build\ncp_build\platform_build\build\variation.txt -->
+        <copy name="/psw/ncp_psw/platform_psw/psw" unless="NO_NCP"/>
+    	<!-- from \build\ncp_build\platform_build\platform_product_build\build\variation.txt -->
+        <copy name="/psw/ncp_psw/platform_psw/platform_product_psw/psw" unless="NO_NCP"/>
+  
+      <!-- chipset manual exports required before bldmake bldfiles phase where  bldvariant is included-->
+        <copy name="config/ncp_config/config/inc/feature_settings.hrh" tofile="epoc32/include/oem/feature_settings.hrh" unless="NO_NCP"/>
+        <copy name="config/ncp_config/config/inc/st_consts.hrh" tofile="epoc32/include/oem/st_consts.hrh" unless="NO_NCP"/>
+        <copy name="config/ncp_config/platform_config/config/inc/adaptation_features.hrh" tofile="epoc32/include/oem/adaptation_features.hrh" unless="NO_NCP"/>
+        <copy name="config/ncp_config/platform_config/config/inc/st_feature_settings.hrh" tofile="epoc32/include/oem/st_feature_settings.hrh" unless="NO_NCP"/>
+        <copy name="config/ncp_config/platform_config/config/inc/st_features_common.hrh" tofile="epoc32/include/oem/st_features_common.hrh" unless="NO_NCP"/>
+        <copy name="config/ncp_config/config/inc/spp_variant.cfg" tofile="epoc32/tools/variant/spp_variant.cfg" unless="NO_NCP"/>
+        <copy name="config/ncp_config/platform_config/config/inc/spp_feature_settings.hrh" tofile="epoc32/include/oem/spp_feature_settings.hrh" unless="NO_NCP"/>
+        <copy name="config/ncp_config/platform_config/config/inc/ncp_feature_settings.hrh" tofile="epoc32/include/oem/ncp_feature_settings.hrh" unless="NO_NCP"/>
+        <copy name="config/ncp_config/config/inc/ncp_feature_consts.hrh" tofile="epoc32/include/oem/ncp_feature_consts.hrh" unless="NO_NCP"/>
+        <copy name="config/ncp_config/config/inc/ncp_consts.hrh" tofile="epoc32/include/oem/ncp_consts.hrh" unless="NO_NCP"/>
+        <copy name="config/ncp_config/platform_config/config/inc/adaptation_conf.h" tofile="epoc32/include/internal/adaptation_conf.h" unless="NO_NCP"/>
+        <copy name="config/ncp_config/platform_config/config/inc/st_settings.hrh" tofile="epoc32/include/st_settings.hrh" unless="NO_NCP"/>
+        <copy name="ncp_sw/corecom/aasw/AaCommonTools/config/audio_sw_external_conf.hrh" tofile="epoc32/include/internal/audio_sw_external_conf.hrh" unless="NO_NCP"/>
+        <copy name="ncp_sw/corecom/aasw/AaCommonTools/config/audio_sw_conf.hrh" tofile="epoc32/include/internal/audio_sw_conf.hrh" unless="NO_NCP"/>
+
+      <!-- chipset manual exports required before bldmake bldfiles phase so build does not hang -->
+        <copy name="config/ncp_config/config/tools" dest="epoc32/tools" unless="NO_NCP"/>
+
+      <!-- fix for LightService-->
+        <copy name="/config/ncp_config/platform_config/config/inc/ncp_feature_settings.hrh" tofile="/epoc32/include/config/platform/ncp_feature_settings.hrh" unless="NO_NCP"/>
+        <copy name="/config/ncp_config/platform_config/config/inc/st_feature_settings.hrh" tofile="/epoc32/include/config/platform/st_feature_settings.hrh" unless="NO_NCP"/>
+        <copy name="/config/ncp_config/platform_config/config/inc/st_features_common.hrh" tofile="/epoc32/include/st_features_common.hrh" unless="NO_NCP"/>
+        <copy name="/config/ncp_config/platform_config/config/inc/st_features_common.hrh" tofile="/epoc32/include/config/platform/st_features_common.hrh" unless="NO_NCP"/>
+        <copy name="/config/ncp_config/platform_config/config/inc/VariationItemValues.hrh" tofile="/epoc32/include/oem/VariationItemValues.hrh" unless="NO_NCP"/>
+        <copy name="/config/ncp_config/platform_config/config/inc/VariationItemValues.hrh" tofile="/epoc32/include/config/platform/VariationItemValues.hrh" unless="NO_NCP"/>
+        <copy name="/config/ncp_config/platform_config/config/inc/VariationItemDetailedValues.hrh" tofile="/epoc32/include/oem/VariationItemDetailedValues.hrh" unless="NO_NCP"/>
+        <copy name="/config/ncp_config/platform_config/config/inc/VariationItemDetailedValues.hrh" tofile="/epoc32/include/config/platform/VariationItemDetailedValues.hrh" unless="NO_NCP"/>
+        <copy name="/config/ncp_config/platform_config/config/inc/st_features.hrh" tofile="/epoc32/include/st_features.hrh" unless="NO_NCP"/>
+        <copy name="/config/ncp_config/platform_config/config/inc/casw_light_settings.hrh" tofile="/epoc32/include/oem/casw_light_settings.hrh" unless="NO_NCP"/>
+        <copy name="/config/ncp_config/platform_config/config/inc/casw_light_settings.hrh" tofile="/epoc32/include/config/platform/casw_light_settings.hrh" unless="NO_NCP"/>
+        <copy name="/config/ncp_config/platform_config/config/inc/adaptation_features.hrh" tofile="/epoc32/include/config/platform/adaptation_features.hrh" unless="NO_NCP"/>
+        <copy name="/config/ncp_config/platform_config/config/tools/platform.bsf" tofile="/epoc32/tools/platform.bsf" unless="NO_NCP"/>
+
+        <copy name="/config/ncp_config/platform_config/platform_product_config/config/inc/ncp_feature_settings.hrh" tofile="/epoc32/include/config/platform/product4/ncp_feature_settings.hrh" unless="NO_NCP"/>
+        <copy name="/config/ncp_config/platform_config/platform_product_config/config/inc/VariationItemValues.hrh" tofile="/epoc32/include/config/platform/product4/VariationItemValues.hrh" unless="NO_NCP"/>
+        <copy name="/config/ncp_config/platform_config/platform_product_config/config/inc/VariationItemDetailedValues.hrh" tofile="/epoc32/include/config/platform/product4/VariationItemDetailedValues.hrh" unless="NO_NCP"/>
+        <copy name="/config/ncp_config/platform_config/platform_product_config/config/inc/st_feature_settings.hrh" tofile="/epoc32/include/config/platform/product4/st_feature_settings.hrh" unless="NO_NCP"/>
+        <copy name="/config/ncp_config/platform_config/platform_product_config/config/inc/casw_light_settings.hrh" tofile="/epoc32/include/config/platform/product4/casw_light_settings.hrh" unless="NO_NCP"/>
+        <copy name="/config/ncp_config/platform_config/platform_product_config/config/rom/config/x_conf_product4.txt" tofile="/ncp_sw/spp_core4.0/base_ca_product/stn8815/product/product4/x_conf_product4.txt" unless="NO_NCP"/>
+        <copy name="/config/ncp_config/platform_config/platform_product_config/config/tools/product4.bsf" tofile="/epoc32/tools/product4.bsf" unless="NO_NCP"/>
+
+        <copy name="/config/ncp_config/platform_config/platform_product_config/config/inc/ncp_feature_settings.hrh" tofile="/epoc32/include/config/platform/product/ncp_feature_settings.hrh" unless="NO_NCP"/>
+        <copy name="/config/ncp_config/platform_config/platform_product_config/config/inc/VariationItemValues.hrh" tofile="/epoc32/include/config/platform/product/VariationItemValues.hrh" unless="NO_NCP"/>
+        <copy name="/config/ncp_config/platform_config/platform_product_config/config/inc/VariationItemDetailedValues.hrh" tofile="/epoc32/include/config/platform/product/VariationItemDetailedValues.hrh" unless="NO_NCP"/>
+        <copy name="/config/ncp_config/platform_config/platform_product_config/config/inc/st_feature_settings.hrh" tofile="/epoc32/include/config/platform/product/st_feature_settings.hrh" unless="NO_NCP"/>
+        <copy name="/config/ncp_config/platform_config/platform_product_config/config/inc/casw_light_settings.hrh" tofile="/epoc32/include/config/platform/product/casw_light_settings.hrh" unless="NO_NCP"/>
+        <copy name="/config/ncp_config/platform_config/platform_product_config/config/tools/product.bsf" tofile="/epoc32/tools/product.bsf" unless="NO_NCP"/>
+
+      <!-- temporary chipset manual exports -->
+        <copy name="config/s60_32_config/config/rom/include/commsdat_db_variant.iby" tofile="epoc32/rom/include/commsdat_db_variant.iby" unless="NO_NCP"/>
+        <copy name="config/s60_32_config/config/rom/include/commsdat.iby" tofile="epoc32/rom/include/commsdat.iby" unless="NO_NCP"/>
+        <copy name="config/s60_32_config/config/rombuild/s60_romfiles.txt" tofile="epoc32/rombuild/s60_romfiles.txt" unless="NO_NCP"/>
+        <copy name="ncp_sw/spp_core4.0/product/targets/product/variant.mmh" tofile="epoc32/include/product/variant.mmh" unless="NO_NCP"/>
+    </source>
+
+    <source label="Temporary unzip of DVB-H" basedir="${build.drive}">
+        <unzip name="me/me_scd_desw/source/JugnooTSW.zip"/>
+    </source>
+
+ 
+</prepSpec>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/zip_archive_test.cfg.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<build>
+    <archiveSpec>
+        <set name="name" value="python_libs"/>
+        <set name="include" value="lib\*.egg"/>
+    </archiveSpec>
+    <config>
+        <set name="max.uncompressed.size" value="2000000"/>
+        <set name="root.dir" value="c:/Temp/python"/>
+        <set name="max.files.per.archive" value="65000"/>
+        <set name="archive.tool" value="zip"/>
+        <set name="archives.dir" value="c:\temp\output\build_area"/>
+        <set name="temp.build.dir" value="c:/Temp/output/temp_build_files"/>
+    </config>
+</build>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/zip_checkDrive_test.cfg.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,43 @@
+<?xml    version="1.0"    encoding="UTF-8"?>
+<build>
+    <config name="wvdo_sources" abstract="true">
+        <set name="archive.tool" value="7za"/>
+       <set name="root.dir" value="C:\"/>
+                
+        <config name="wvdo_sources_1">
+            <set name="name" value="${build.id}_wvdo_sources_3"/>
+            <set name="root.dir" value="\\bhwec0100\build_e$\swbuild\ido_wa\wv_domain\wv_domain\"/>
+                 <set name="include" value="flashapi\"/>
+        </config>
+        
+        <config name="wvdo_sources_2">
+            <set name="name" value="${build.id}_wvdo_sources_3"/>
+            <set name="root.dir" value="\\bhwec0100\build_e$\swbuild\ido_wa\wv_domain"/>
+                 <set name="include" value="flashapi\"/>
+        </config>
+        
+        <config name="wvdo_sources_3">
+            <set name="name" value="${build.id}_wvdo_sources_3"/>
+            <set name="root.dir" value="Y:\wv_domain\"/>
+                 <set name="include" value="flashapi\"/>
+        </config>
+        
+        <config name="wvdo_sources_4">
+            <set name="name" value="${build.id}_wvdo_sources_3"/>
+                 <set name="include" value="flashapi\"/>
+        </config>
+        
+        <config name="medo_sources_1">
+            <set name="name" value="${build.id}_medo_sources_1"/>
+            <set name="root.dir" value="\\bhwec0100\build_e$\swbuild\ido_wa\Messaging_Domain\Messaging_Domain\"/>
+            <set name="include" value="messagingextensions\"/>
+        </config>
+        
+        <config name="medo_sources_2">
+            <set name="name" value="${build.id}_medo_sources_2"/>
+            <set name="root.dir" value="\\bhwec0100\build_e$\swbuild\ido_wa\Messaging_Domain\Messaging_Domain\"/>
+            <set name="include" value="messagingextensions\"/>
+        </config>
+        
+     </config>
+</build>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/python/pythoncore/tests/data/zip_checkDrive_test.cfg.xml.parsed	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,43 @@
+<?xml version="1.0" ?>
+<build>
+	
+
+	<config abstract="true" name="wvdo_sources">
+		<config name="wvdo_sources_1">
+			<set name="include" value="flashapi\"/>
+			<set name="root.dir" value="X:\wv_domain\wv_domain\"/>
+			<set name="name" value="${build.id}_wvdo_sources_3"/>
+			<set name="archive.tool" value="7za"/>
+		</config>
+		<config name="wvdo_sources_2">
+			<set name="include" value="flashapi\"/>
+			<set name="root.dir" value="X:\wv_domain\"/>
+			<set name="name" value="${build.id}_wvdo_sources_3"/>
+			<set name="archive.tool" value="7za"/>
+		</config>
+		<config name="wvdo_sources_3">
+			<set name="include" value="flashapi\"/>
+			<set name="root.dir" value="Y:\wv_domain\"/>
+			<set name="name" value="${build.id}_wvdo_sources_3"/>
+			<set name="archive.tool" value="7za"/>
+		</config>
+		<config name="wvdo_sources_4">
+			<set name="include" value="flashapi\"/>
+			<set name="name" value="${build.id}_wvdo_sources_3"/>
+			<set name="archive.tool" value="7za"/>
+			<set name="root.dir" value="C:\"/>
+		</config>
+		<config name="medo_sources_1">
+			<set name="include" value="messagingextensions\"/>
+			<set name="root.dir" value="X:\Messaging_Domain\Messaging_Domain\"/>
+			<set name="name" value="${build.id}_medo_sources_1"/>
+			<set name="archive.tool" value="7za"/>
+		</config>
+		<config name="medo_sources_2">
+			<set name="include" value="messagingextensions\"/>
+			<set name="root.dir" value="X:\Messaging_Domain\Messaging_Domain\"/>
+			<set name="name" value="${build.id}_medo_sources_2"/>
+			<set name="archive.tool" value="7za"/>
+		</config>
+	</config>
+</build>
--- a/buildframework/helium/external/helium-antlib/quality/bld.bat	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-@echo off
-
-rem
-rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-rem All rights reserved.
-rem This component and the accompanying materials are made available
-rem under the terms of the License "Eclipse Public License v1.0"
-rem which accompanies this distribution, and is available
-rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
-rem
-rem Initial Contributors:
-rem Nokia Corporation - initial contribution.
-rem
-rem Contributors:
-rem
-rem Description: 
-rem
-
-setlocal
-if not defined JAVA_6_HOME (
-set TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
-) ELSE  set TESTED_JAVA=%JAVA_6_HOME%
-if exist %TESTED_JAVA% (set JAVA_HOME=%TESTED_JAVA%)
-
-REM Configure Ant 
-if not defined TESTED_ANT_HOME (
-set TESTED_ANT_HOME=C:\Apps\ant_1.7
-) 
-if exist %TESTED_ANT_HOME% (set ANT_HOME=%TESTED_ANT_HOME%)
-
-REM Configure the expected Ant Version details below
-SET expMajorVer=1
-SET expMinorVer=7
-
-rem *** Verify Ant Version ***
-rem -- Run the 'ant -version' command and capture the output to a variable 
-for /f "tokens=*" %%a in ('ant -version') do (set antversion=%%a)
-echo *** Installed Version : %antversion%
-
-rem -- Parse the version string obtained above and get the version number
-for /f "tokens=4 delims= " %%a in ("%antversion%") do set val=%%a
-rem -- Parse the version number delimiting the '.' and set the major and
-rem    minor versions
-for /f "tokens=1-2 delims=." %%a in ("%val%") do (
-set /A majorVersion=%%a
-set /A minorVersion=%%b
-)
-rem -- Check whether major version is greater than or equal to the expected.
-if %majorVersion% geq %expMajorVer% ( 
-rem -- if major version is valid, check minor version. If minor version is less
-rem    than expected display message and abort the execution.
-if %minorVersion% lss %expMinorVer% (echo *** Incorrect version of Ant found. Please check you have atleast Ant 1.7.0 & goto :errorstop ) 
-)
-
-ant %*
-endlocal
-
-:errorstop
-@echo *** Build aborted with error
-exit /b 1
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/quality/build.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : build.xml 
-Part of     : Helium AntLib
-
-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="helium-quality">
-    <description>Helium Antlib Quality build file.</description>
-    
-    <import file="../macros.ant.xml"/>
-    
-    <property name="name" value="quality"/>
-    
-    <path id="helium.quality.classpath"/>
-
-</project>
-
-
--- a/buildframework/helium/external/helium-antlib/quality/demo/build.bat	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-@echo off
-
-rem
-rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-rem All rights reserved.
-rem This component and the accompanying materials are made available
-rem under the terms of the License "Eclipse Public License v1.0"
-rem which accompanies this distribution, and is available
-rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
-rem
-rem Initial Contributors:
-rem Nokia Corporation - initial contribution.
-rem
-rem Contributors:
-rem
-rem Description: 
-rem
-
-setlocal
-if not defined JAVA_6_HOME (
-set TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
-) ELSE  set TESTED_JAVA=%JAVA_6_HOME%
-if exist %TESTED_JAVA% (set JAVA_HOME=%TESTED_JAVA%)
-set ANT_ARGS=-lib %CD%\..\lib  -lib  %CD%\..\..\bin\helium-quality.jar -lib %CD%\..\..\antlibs
-ant %*
-endlocal
-
--- a/buildframework/helium/external/helium-antlib/quality/demo/build.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : build.xml 
-Part of     : Helium AntLib
-
-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="helium-antlib-quality-demo" xmlns:hlm="http://www.nokia.com/helium">
-    <description>Helium Antlib quality demo.</description>
-
-    <taskdef resource="com/nokia/helium/quality/ant/antlib.xml" uri="http://www.nokia.com/helium" />
-
-    <property name="codescanner.output.dir" location="./cs" />
-    <property name="codescanner.output.type" value="html" />
-    <property name="codescanner.config" location="./codescanner_config.xml" />
-    <path id="src.path">
-        <pathelement path="../tests/data/src" />
-        <pathelement path="../tests/data/src2" />
-    </path>
-
-    <target name="demo-codescanner">
-        <hlm:codescanner dest="${codescanner.output.dir}" format="${codescanner.output.type}" configuration="${codescanner.config}">
-            <path refid="src.path" />
-        </hlm:codescanner>
-    </target>
-
-</project>
--- a/buildframework/helium/external/helium-antlib/quality/demo/codescanner_config.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,172 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : codescanner_config.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:
-
-============================================================================
--->
-<!-- This is a configuration file for Codescanner from Mobile Innovation Ltd. -->
-<codescannerConfig>
-    <sources>
-        <!-- source files matching any of the exclude patterns below will not be scanned -->
-
-        <!-- binary files -->
-        <exclude>.*\.jpg</exclude>
-        <exclude>.*\.wav</exclude>
-        <exclude>.*\.au</exclude>
-        <exclude>.*\.bmp</exclude>
-        <exclude>.*\.wbmp</exclude>
-        <exclude>.*\.gif</exclude>
-        <exclude>.*\.tif</exclude>
-        <exclude>.*\.exe</exclude>
-        <exclude>.*\.mp3</exclude>
-        <exclude>.*\.mpg</exclude>
-        <exclude>.*\.avi</exclude>
-        <exclude>.*\.raw</exclude>
-        <exclude>.*\.mbm</exclude>
-        <exclude>.*\.doc</exclude>
-        <exclude>.*\.xls</exclude>
-        <exclude>.*\.rtf</exclude>
-        <exclude>.*\.png</exclude>
-        <exclude>.*\.wmf</exclude>
-        <exclude>.*\\exclude.txt</exclude>
-
-        <!-- typical test directory names -->
-        <exclude>.*\\ts_.*</exclude>
-        <exclude>.*\\tsrc\\.*</exclude>
-        <exclude>.*\\test\\.*</exclude>
-        <exclude>.*\\.svn\\.*</exclude>
-    </sources>
-    <scripts>
-        <!-- Every element in this section corresponds to a Codescanner script -->
-        <!-- Every element has the following common attributes: -->
-        <!--    enable="true" or "false" -->
-        <!-- Some scripts have additional attributes or elements. -->
-
-        <accessArrayElementWithoutCheck enable="true"/>
-        <accessArrayElementWithoutCheck2 enable="true"/>
-        <activestart enable="true"/>
-        <activestop enable="true"/>
-        <arraypassing enable="true"/>
-        <arrayptrcleanup enable="true"/>
-        <assertdebuginvariant enable="true"/>
-        <baddefines enable="true"/>
-        <baseconstruct enable="true"/>
-        <callActiveObjectWithoutCheckingOrStopping enable="true"/>
-        <changenotification enable="true"/>
-        <cleanup enable="true"/>
-        <commentcode enable="true"/>
-        <connect enable="true"/>
-        <ConnectAndDontCloseMemberVariable enable="true"/>
-        <constnames enable="true"/>
-        <consttdescptr enable="true"/>
-        <controlornull enable="true"/>
-        <ctltargettype enable="true"/>
-        <debugrom enable="true"/>
-        <declarename enable="true"/>
-        <deleteMemberVariable enable="true"/>
-        <destructor enable="true"/>
-        <doubleSemiColon enable="true"/>
-        <driveletters enable="true"/>
-        <eikbuttons enable="true"/>
-        <eikonenvstatic enable="true"/>
-        <enummembers enable="true"/>
-        <enumnames enable="true"/>
-        <exportinline enable="true"/>
-        <exportpurevirtual enable="true"/>
-        <externaldriveletters enable="true"/>
-        <foff enable="true"/>
-        <forbiddenwords enable="true">
-            <!-- the following regular expression specifies the forbidden words detected by this script -->
-            <wordsRE>bad words</wordsRE>
-        </forbiddenwords>
-        <forgottoputptroncleanupstack enable="true"/>
-        <friend enable="true"/>
-        <goto enable="true"/>
-        <ifassignments enable="true"/>
-        <ifpreprocessor enable="true"/>
-        <intleaves enable="true"/>
-        <jmp enable="true"/>
-        <leave enable="true"/>
-        <LeaveNoError enable="true"/>
-        <leavingoperators enable="true"/>
-        <LFunctionCantLeave enable="true"/>
-        <!-- the length attribute specifies the largest number of characters permitted by this script -->
-        <longlines enable="true" length="160" />
-        <magicnumbers enable="true"/>
-        <mclassdestructor enable="true"/>
-        <memberlc enable="true"/>
-        <membervariablecallld enable="true"/>
-        <missingcclass enable="true"/>
-        <mmpsourcepath enable="true"/>
-        <multilangrsc enable="true"/>
-        <multipledeclarations enable="true"/>
-        <multipleinheritance enable="true"/>
-        <mydocs enable="true"/>
-        <namespace enable="true"/>
-        <newlreferences enable="true"/>
-        <noleavetrap enable="true"/>
-        <nonconsthbufc enable="true"/>
-        <nonconsttdesc enable="true"/>
-        <nonleavenew enable="true"/>
-        <nonunicodeskins enable="true"/>
-        <null enable="true"/>
-        <open enable="true"/>
-        <pointertoarrays enable="true"/>
-        <pragmadisable enable="true"/>
-        <pragmamessage enable="true"/>
-        <pragmaother enable="true"/>
-        <privateinheritance enable="true"/>
-        <pushaddrvar enable="true"/>
-        <pushmember enable="true"/>
-        <readresource enable="true"/>
-        <resourcesonheap enable="true"/>
-        <returndescriptoroutofscope enable="true"/>
-        <rfs enable="true"/>
-        <rssnames enable="true"/>
-        <stringliterals enable="true"/>
-        <stringsinresourcefiles enable="true"/>
-        <struct enable="true"/>
-        <tcclasses enable="true"/>
-        <tclassdestructor enable="true"/>
-        <todocomments enable="true"/>
-        <trapcleanup enable="true"/>
-        <trapeleave enable="true"/>
-        <traprunl enable="true"/>
-        <trspassing enable="true"/>
-        <uids enable="true"/>
-        <uncompressedaif enable="true"/>
-        <uncompressedbmp enable="true"/>
-        <unicodesource enable="true"/>
-        <userafter enable="true"/>
-        <userfree enable="true"/>
-        <userWaitForRequest enable="true"/>
-        <variablenames enable="true"/>
-        <voidparameter enable="true"/>
-        <worryingcomments enable="true">
-            <!-- the following regular expression specifies the worrying comments detected by this script -->
-            <worryRE>\!|\?|[Zz]{3}|kludge|workaround|\scrap|hack</worryRE>
-        </worryingcomments>
-    </scripts>
-    <severities>
-        <low enable="true"/>
-    </severities>
-    <categories>
-        <codereview enable="true"/>
-    </categories>
-</codescannerConfig>
--- a/buildframework/helium/external/helium-antlib/quality/src/com/nokia/helium/quality/ant/antlib.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : antlib.xml 
-Part of     : Helium AntLib
-
-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:
-
-============================================================================
--->
-<antlib>
-    <!-- Task definition -->
-    <taskdef name="codescanner" classname="com.nokia.helium.quality.ant.taskdefs.CodeScanner" onerror="ignore"/>
-</antlib>
--- a/buildframework/helium/external/helium-antlib/quality/src/com/nokia/helium/quality/ant/helium.antlib.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : helium.antlib.xml 
-Part of     : Helium Antlib 
-
-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="libs-quality" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
-    <description>
-        Ant task definition declarations.
-    </description>    
-    <taskdef resource="com/nokia/helium/quality/ant/antlib.xml" uri="http://www.nokia.com/helium"/>
-</project>
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/quality/src/com/nokia/helium/quality/ant/taskdefs/CodeScanner.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,239 +0,0 @@
-/*
- * Copyright (c) 2007-2008 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:  
- *
- */
-
-package com.nokia.helium.quality.ant.taskdefs;
-
-import java.io.*;
-import java.util.Vector;
-
-import org.apache.tools.ant.Task;
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.types.Path;
-import org.apache.tools.ant.taskdefs.ExecTask;
-
-/**
- * This task executes codescanner - and writes the results to the output directory.
- * Codescanner parses C++ code and flags any inconsistencies or errors in output files. 
- * Configuration files are used to determine what passes and fails the checking e.g. maximum length of lines,
- * whether 'C' type comments are allowed as well as C++ comments, does it adhere to the company coding 
- * guidelines and much more. Every person writing any C++ code 
- * should run codescanner on their code to ensure it follows the coding guidelines. The output logs 
- * should have no errors and preferably no warnings before the code should be checked into SCM, e.g. synergy or SVN.
- *
- * Below is an example of how to use the target to run codescanner.
- *
- * <pre>
- * &lt;property name="codescanner.output.dir" location="./cs" /&gt;
- * &lt;property name="codescanner.output.type" value="html" /&gt;
- * &lt;property name="codescanner.config" location="./codescanner_config.xml" /&gt;
- *
- * &lt;hlm:codescanner dest="${codescanner.output.dir}"
- *      format="${codescanner.output.type}"
- *      failonerror="true"
- *      configuration="${codescanner.config}"&gt;
- *      &lt;path refid="src.path"/&gt;
- *  &lt;/hlm:codescanner&gt;
- *  &lt;au:assertLogContains text="Successfully executed codescanner"/&gt;
- *  &lt;au:assertLogContains text="Output format: xml,html"/&gt;
- *  &lt;au:assertFileExists file="${codescanner.output.dir}/problemIndex.xml"/&gt;
- * </pre>
- * 
- * @ant.task name="codescanner" category="Quality"
- */
-public class CodeScanner extends Task {
-    private Vector<Path> paths = new Vector<Path>();
-    private File configuration;
-    private String dest;
-    private String format = "xml,html";
-    private boolean auto;
-    private File log;
-    private boolean failonerror;
-
-    /**
-     * This defines if the task should fails in case of error while 
-     * executing codescanner.
-     * 
-     * @param failonerror
-     * @ant.not-required Default is false for backward compatibility.
-     */
-    public void setFailonerror(boolean failonerror) {
-        this.failonerror = failonerror;
-    }
-
-    /**
-     * Add path datatype to the task.
-     * 
-     * @param path
-     */
-    public void add(Path path) {
-        paths.add(path);
-    }
-
-    /**
-     * Get dest attribute.
-     * 
-     */
-    public String getDest() {
-        return this.dest;
-    }
-
-    /**
-     * Set dest attribute.
-     * 
-     * @param dest
-     * @ant.required
-     */
-    public void setDest(String dest) {
-        this.dest = dest;
-    }
-
-    /**
-     * Get format attribute.
-     * 
-     */
-    public String getFormat() {
-        return this.format;
-    }
-
-    /**
-     * Set format attribute.
-     * 
-     * @param format
-     * @ant.not-required Default is xml,html
-     */
-    public void setFormat(String format) {
-        this.format = format;
-    }
-
-    /**
-     * Get configuration attribute.
-     * 
-     */
-    public File getConfiguration() {
-        return this.configuration;
-    }
-
-    /**
-     * Set configuration attribute.
-     * 
-     * @param configuration
-     * @ant.required
-     */
-    public void setConfiguration(File configuration) {
-        this.configuration = configuration;
-    }
-
-    /**
-     * Set auto attribute.
-     * 
-     * @param auto
-     * @ant.not-required Default is false.
-     */
-    public void setAuto(boolean auto) {
-        this.auto = auto;
-    }
-
-    /**
-     * Set log attribute.
-     * 
-     * @param log
-     * @ant.not-required
-     */
-    public void setLog(File log) {
-        this.log = log;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void execute() {
-        // creating the exec subtask
-        String osType = System.getProperty("os.name");
-        if (!osType.toLowerCase().startsWith("win")) {
-            this.log("CODESCANNER: run in windows only");
-            return;
-        }
-        ExecTask task = new ExecTask();
-        task.setProject(getProject());
-        task.setTaskName(this.getTaskName());
-        task.setFailonerror(failonerror);
-        task.setExecutable("codescanner");
-        task.setDir(new File("."));
-        if (dest == null) {
-            throw new BuildException("'dest' attribute must be defined");
-        }
-        if (configuration != null) {
-            if (!configuration.exists()) {
-                throw new BuildException("Could not find the file "
-                        + configuration);
-            } else {
-                task.createArg().setValue("-c");
-                task.createArg().setValue(configuration.getAbsolutePath());
-            }
-        } else {
-            throw new BuildException(
-                    "'configuration' attribute must be defined");
-        }
-        if (!format.contains("xml")) {
-           setFormat("xml," + format);
-        }
-        this.log("Output format: " + format);
-        // -t off
-        task.createArg().setValue("-t");
-        task.createArg().setValue(auto ? "on" : "off");
-
-        // -l log
-        if (log != null) {
-            this.log("Output log: " + log.getAbsolutePath());
-            task.createArg().setValue("-l");
-            task.createArg().setValue(log.getAbsolutePath());
-        }
-
-        // -o type
-        task.createArg().setValue("-o");
-        task.createArg().setValue(format);
-        if (paths.isEmpty()) {
-            throw new BuildException("No input directory defined");
-        }
-        // Getting the list of source dir to scan
-        Vector<String> srcs = new Vector<String>();
-        for (Path path : paths) {
-            if (path.isReference()) {
-                path = (Path) path.getRefid().getReferencedObject();
-            }
-            for (String apath : path.list()) {
-                srcs.add(apath);
-            }
-        }
-        for (int i = 0; i < srcs.size(); i++) {
-            if (i != srcs.size() - 1) {
-                task.createArg().setValue("-i");
-                task.createArg().setValue(srcs.elementAt(i));
-            } else {
-                task.createArg().setValue(srcs.elementAt(i));
-                task.createArg().setValue(dest.toString());
-            }
-        }
-        // output path
-        this.log("Output dir " + dest);
-
-        // Run codescanner
-        task.execute();
-        this.log("Successfully executed codescanner");
-    }
-}
--- a/buildframework/helium/external/helium-antlib/quality/tests/bld.sh	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-#!/bin/csh
-
-#
-# 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: 
-#
-
-
-
-module load java/1.6.0
-setenv ANT_ARGS "-lib ../../antlibs -lib ../../bin/helium-core.jar -lib ../../bin/helium-quality.jar -lib ../../lib" 
-ant -Dant.executor.class="com.nokia.helium.core.ant.HeliumExecutor" $*
--- a/buildframework/helium/external/helium-antlib/quality/tests/build.bat	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-@echo off
-
-rem
-rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-rem All rights reserved.
-rem This component and the accompanying materials are made available
-rem under the terms of the License "Eclipse Public License v1.0"
-rem which accompanies this distribution, and is available
-rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
-rem
-rem Initial Contributors:
-rem Nokia Corporation - initial contribution.
-rem
-rem Contributors:
-rem
-rem Description: 
-rem
-
-setlocal
-if not defined JAVA_6_HOME (
-set TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
-) ELSE  set TESTED_JAVA=%JAVA_6_HOME%
-if exist %TESTED_JAVA% (set JAVA_HOME=%TESTED_JAVA%)
-set ANT_ARGS=-lib %CD%\..\lib  -lib  %CD%\..\..\bin\helium-quality.jar -lib %CD%\..\..\antlibs
-ant %*
-endlocal
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/quality/tests/build.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : build.xml 
-Part of     : Helium AntLib
-
-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="helium-antlib-unittest" xmlns:au="antlib:org.apache.ant.antunit">
-    <description>Helium antlib quality tests.</description>
-    
-    <import file="../../test-macros.ant.xml" />
-
-    <target name="unittest" depends="unittest-quality" />
-
-    <target name="unittest-quality">
-        <antunitModule name="quality" />
-    </target>
-</project>
--- a/buildframework/helium/external/helium-antlib/quality/tests/codescanner_config.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,172 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : codescanner_config.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:
-
-============================================================================
--->
-<!-- This is a configuration file for Codescanner from Mobile Innovation Ltd. -->
-<codescannerConfig>
-    <sources>
-        <!-- source files matching any of the exclude patterns below will not be scanned -->
-
-        <!-- binary files -->
-        <exclude>.*\.jpg</exclude>
-        <exclude>.*\.wav</exclude>
-        <exclude>.*\.au</exclude>
-        <exclude>.*\.bmp</exclude>
-        <exclude>.*\.wbmp</exclude>
-        <exclude>.*\.gif</exclude>
-        <exclude>.*\.tif</exclude>
-        <exclude>.*\.exe</exclude>
-        <exclude>.*\.mp3</exclude>
-        <exclude>.*\.mpg</exclude>
-        <exclude>.*\.avi</exclude>
-        <exclude>.*\.raw</exclude>
-        <exclude>.*\.mbm</exclude>
-        <exclude>.*\.doc</exclude>
-        <exclude>.*\.xls</exclude>
-        <exclude>.*\.rtf</exclude>
-        <exclude>.*\.png</exclude>
-        <exclude>.*\.wmf</exclude>
-        <exclude>.*\\exclude.txt</exclude>
-
-        <!-- typical test directory names -->
-        <exclude>.*\\ts_.*</exclude>
-        <exclude>.*\\tsrc\\.*</exclude>
-        <exclude>.*\\test\\.*</exclude>
-        <exclude>.*\\\.svn\\.*</exclude>
-    </sources>
-    <scripts>
-        <!-- Every element in this section corresponds to a Codescanner script -->
-        <!-- Every element has the following common attributes: -->
-        <!--    enable="true" or "false" -->
-        <!-- Some scripts have additional attributes or elements. -->
-
-        <accessArrayElementWithoutCheck enable="true"/>
-        <accessArrayElementWithoutCheck2 enable="true"/>
-        <activestart enable="true"/>
-        <activestop enable="true"/>
-        <arraypassing enable="true"/>
-        <arrayptrcleanup enable="true"/>
-        <assertdebuginvariant enable="true"/>
-        <baddefines enable="true"/>
-        <baseconstruct enable="true"/>
-        <callActiveObjectWithoutCheckingOrStopping enable="true"/>
-        <changenotification enable="true"/>
-        <cleanup enable="true"/>
-        <commentcode enable="true"/>
-        <connect enable="true"/>
-        <ConnectAndDontCloseMemberVariable enable="true"/>
-        <constnames enable="true"/>
-        <consttdescptr enable="true"/>
-        <controlornull enable="true"/>
-        <ctltargettype enable="true"/>
-        <debugrom enable="true"/>
-        <declarename enable="true"/>
-        <deleteMemberVariable enable="true"/>
-        <destructor enable="true"/>
-        <doubleSemiColon enable="true"/>
-        <driveletters enable="true"/>
-        <eikbuttons enable="true"/>
-        <eikonenvstatic enable="true"/>
-        <enummembers enable="true"/>
-        <enumnames enable="true"/>
-        <exportinline enable="true"/>
-        <exportpurevirtual enable="true"/>
-        <externaldriveletters enable="true"/>
-        <foff enable="true"/>
-        <forbiddenwords enable="true">
-            <!-- the following regular expression specifies the forbidden words detected by this script -->
-            <wordsRE>bad words</wordsRE>
-        </forbiddenwords>
-        <forgottoputptroncleanupstack enable="true"/>
-        <friend enable="true"/>
-        <goto enable="true"/>
-        <ifassignments enable="true"/>
-        <ifpreprocessor enable="true"/>
-        <intleaves enable="true"/>
-        <jmp enable="true"/>
-        <leave enable="true"/>
-        <LeaveNoError enable="true"/>
-        <leavingoperators enable="true"/>
-        <LFunctionCantLeave enable="true"/>
-        <!-- the length attribute specifies the largest number of characters permitted by this script -->
-        <longlines enable="true" length="160" />
-        <magicnumbers enable="true"/>
-        <mclassdestructor enable="true"/>
-        <memberlc enable="true"/>
-        <membervariablecallld enable="true"/>
-        <missingcclass enable="true"/>
-        <mmpsourcepath enable="true"/>
-        <multilangrsc enable="true"/>
-        <multipledeclarations enable="true"/>
-        <multipleinheritance enable="true"/>
-        <mydocs enable="true"/>
-        <namespace enable="true"/>
-        <newlreferences enable="true"/>
-        <noleavetrap enable="true"/>
-        <nonconsthbufc enable="true"/>
-        <nonconsttdesc enable="true"/>
-        <nonleavenew enable="true"/>
-        <nonunicodeskins enable="true"/>
-        <null enable="true"/>
-        <open enable="true"/>
-        <pointertoarrays enable="true"/>
-        <pragmadisable enable="true"/>
-        <pragmamessage enable="true"/>
-        <pragmaother enable="true"/>
-        <privateinheritance enable="true"/>
-        <pushaddrvar enable="true"/>
-        <pushmember enable="true"/>
-        <readresource enable="true"/>
-        <resourcesonheap enable="true"/>
-        <returndescriptoroutofscope enable="true"/>
-        <rfs enable="true"/>
-        <rssnames enable="true"/>
-        <stringliterals enable="true"/>
-        <stringsinresourcefiles enable="true"/>
-        <struct enable="true"/>
-        <tcclasses enable="true"/>
-        <tclassdestructor enable="true"/>
-        <todocomments enable="true"/>
-        <trapcleanup enable="true"/>
-        <trapeleave enable="true"/>
-        <traprunl enable="true"/>
-        <trspassing enable="true"/>
-        <uids enable="true"/>
-        <uncompressedaif enable="true"/>
-        <uncompressedbmp enable="true"/>
-        <unicodesource enable="true"/>
-        <userafter enable="true"/>
-        <userfree enable="true"/>
-        <userWaitForRequest enable="true"/>
-        <variablenames enable="true"/>
-        <voidparameter enable="true"/>
-        <worryingcomments enable="true">
-            <!-- the following regular expression specifies the worrying comments detected by this script -->
-            <worryRE>\!|\?|[Zz]{3}|kludge|workaround|\scrap|hack</worryRE>
-        </worryingcomments>
-    </scripts>
-    <severities>
-        <low enable="true"/>
-    </severities>
-    <categories>
-        <codereview enable="true"/>
-    </categories>
-</codescannerConfig>
--- a/buildframework/helium/external/helium-antlib/quality/tests/data/src/helloworld.cpp	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-int main (int argc, char **argv) {
-	return 0;
-}
-
--- a/buildframework/helium/external/helium-antlib/quality/tests/data/src2/helloworld.cpp	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-int main (int argc, char **argv) {
-	return 0;
-}
-
--- a/buildframework/helium/external/helium-antlib/quality/tests/test_codescanner.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,116 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : test_serializepath.ant.xml 
-Part of     : Helium AntLib
-
-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="test-quality" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
-    <description>Helium antlib core serializepath tests.</description>
-
-    <taskdef resource="com/nokia/helium/quality/ant/antlib.xml" uri="http://www.nokia.com/helium" />
-    <property name="codescanner.output.dir" location="./cs"/>
-    <property name="codescanner.output.type" value="html"  />
-    <property name="codescanner.config" location="${basedir}/codescanner_config.xml"  />
-    <path id="src.path">
-        <pathelement path="./data" />
-    </path>
-
-    <condition property="do.codescanner.test">
-        <os family="windows" />
-    </condition>
-
-    <!-- is called prior to the test -->
-    <target name="setUp">
-        <delete dir="${codescanner.output.dir}" failonerror="false" />
-        <mkdir dir="${codescanner.output.dir}" />
-    </target>
-
-    <!-- is called after the test, even if that caused an error -->
-    <target name="tearDown">
-        <delete dir="${codescanner.output.dir}" failonerror="false" />
-    </target>
-
-    <target name="test-codescanner-linux" unless="do.codescanner.test">
-        <echo message="Codescanner supported only for windows" />
-    </target>
-
-    <!--
-     **************************************************************
-     ** test codescanner only for windows
-     **************************************************************
-    -->
-
-    <target name="test-codescanner" if="do.codescanner.test">
-        <hlm:codescanner dest="${codescanner.output.dir}"
-            format="${codescanner.output.type}"
-            configuration="${codescanner.config}">
-            <path refid="src.path"/>
-        </hlm:codescanner>
-        <au:assertLogContains text="Successfully executed codescanner"/>
-        <au:assertLogContains text="Output format: xml,html"/>
-        <au:assertLogContains text="data\src\exclude.txt"/>
-        <au:assertLogContains text="data\src2\exclude.txt"/>
-        <au:assertFileExists file="${codescanner.output.dir}/problemIndex.xml"/>
-    </target>
-
-    <!--
-     **************************************************************
-     ** test noargs
-     **************************************************************
-    -->
-    <target name="test-norargs" if="do.codescanner.test">
-        <au:expectfailure expectedMessage="'dest' attribute must be defined">
-            <hlm:codescanner/>
-        </au:expectfailure>
-    </target>
-
-    <!--
-     **************************************************************
-     ** test noconf
-     **************************************************************
-    -->
-    <target name="test-noconf" if="do.codescanner.test">
-        <au:expectfailure expectedMessage="'configuration' attribute must be defined">
-            <hlm:codescanner dest="${codescanner.output.dir}"/>
-        </au:expectfailure>
-    </target>
-
-    
-    <!--
-     **************************************************************
-     ** test noconf
-     **************************************************************
-    -->
-    <target name="test-codescanner-two-inputs" if="do.codescanner.test">
-        <path id="src.path.two.path">
-            <pathelement path="./data/src" />
-            <pathelement path="./data/src2" />
-        </path>
-        <hlm:codescanner dest="${codescanner.output.dir}"
-            format="${codescanner.output.type}"
-            configuration="${codescanner.config}">
-            <path refid="src.path.two.path"/>
-        </hlm:codescanner>
-        <au:assertLogContains text="Successfully executed codescanner"/>
-        <au:assertLogContains text="Output format: xml,html"/>
-        <au:assertLogContains text="data\src\exclude.txt"/>
-        <au:assertLogContains text="data\src2\exclude.txt"/>
-        <au:assertFileExists file="${codescanner.output.dir}/problemIndex.xml"/>
-    </target>
-</project>
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/sbs/bld.bat	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-@echo off
-
-rem
-rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-rem All rights reserved.
-rem This component and the accompanying materials are made available
-rem under the terms of the License "Eclipse Public License v1.0"
-rem which accompanies this distribution, and is available
-rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
-rem
-rem Initial Contributors:
-rem Nokia Corporation - initial contribution.
-rem
-rem Contributors:
-rem
-rem Description: 
-rem
-
-setlocal
-if not defined JAVA_6_HOME (
-set TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
-) ELSE  set TESTED_JAVA=%JAVA_6_HOME%
-if exist %TESTED_JAVA% (set JAVA_HOME=%TESTED_JAVA%)
-
-REM Configure Ant 
-if not defined TESTED_ANT_HOME (
-set TESTED_ANT_HOME=C:\Apps\ant_1.7
-) 
-if exist %TESTED_ANT_HOME% (set ANT_HOME=%TESTED_ANT_HOME%)
-
-REM Configure the expected Ant Version details below
-SET expMajorVer=1
-SET expMinorVer=7
-
-rem *** Verify Ant Version ***
-rem -- Run the 'ant -version' command and capture the output to a variable 
-for /f "tokens=*" %%a in ('ant -version') do (set antversion=%%a)
-echo *** Installed Version : %antversion%
-
-rem -- Parse the version string obtained above and get the version number
-for /f "tokens=4 delims= " %%a in ("%antversion%") do set val=%%a
-rem -- Parse the version number delimiting the '.' and set the major and
-rem    minor versions
-for /f "tokens=1-2 delims=." %%a in ("%val%") do (
-set /A majorVersion=%%a
-set /A minorVersion=%%b
-)
-rem -- Check whether major version is greater than or equal to the expected.
-if %majorVersion% geq %expMajorVer% ( 
-rem -- if major version is valid, check minor version. If minor version is less
-rem    than expected display message and abort the execution.
-if %minorVersion% lss %expMinorVer% (echo *** Incorrect version of Ant found. Please check you have atleast Ant 1.7.0 & goto :errorstop ) 
-)
-
-ant %*
-endlocal
-
-:errorstop
-@echo *** Build aborted with error
-exit /b 1
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/sbs/build.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : build.xml 
-Part of     : Helium AntLib
-
-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="helium-sbs">
-    <description>Helium Antlib sbs build file.</description>
-    
-    <import file="../macros.ant.xml"/>
-    
-    <property name="name" value="sbs"/>
-    
-    <path id="helium.sbs.classpath">
-        <fileset dir="${helium.antlib.root.dir}/bin" includes="*.jar"/>
-        <fileset dir="${helium.antlib.root.dir}/sbs/lib" includes="*.jar"/>
-    </path>
-
-</project>
-
-
--- a/buildframework/helium/external/helium-antlib/sbs/src/com/nokia/helium/sbs/SAXSysdefParser.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,94 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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: 
-*
-*/
- 
-package com.nokia.helium.sbs;
-
-import org.dom4j.Document;
-import org.apache.tools.ant.BuildException;
-import org.dom4j.Element;
-import org.dom4j.Attribute;
-import org.dom4j.ElementPath;
-import org.dom4j.ElementHandler;
-import org.dom4j.io.SAXReader;
-import org.apache.log4j.Logger;
-
-import java.io.*;
-import java.util.*;
-
-/**
- * Parses the sysdef config file and extracts the available configurations
- */
-public class SAXSysdefParser {
-    private File sysdefFile;
-    private String configs = "";
-    private List<String> layers;
-    private boolean initialized;
-    private Logger log = Logger.getLogger(SAXSysdefParser.class);
-
-    /**
-     * Constructor
-     * @param fileName - name of the sysdef file to parse
-     */
-    public SAXSysdefParser(File fileName) {
-        
-        sysdefFile = fileName;
-    }
-    
-    public List<String> getLayers() {
-        if (!initialized ) {
-            initialized = true;
-            parseConfig("layer");
-            if (layers == null) {
-                throw new BuildException("No layers found from sysdef");
-            }
-        }
-        return layers;
-    }
-
-    /**
-     * Constructor
-     * @return list of available configurations that can be built.
-     */    
-     public void parseConfig(String nodeToGet) {
-        layers = new ArrayList<String>();
-        SAXReader reader = new SAXReader();
-            reader.addHandler( "/SystemDefinition/systemModel/" + nodeToGet,
-                new ElementHandler() {
-                    public void onStart(ElementPath path) {
-                    }
-                    public void onEnd(ElementPath path) {
-                        Element row = path.getCurrent();
-                        Iterator itr = row.attributeIterator();
-                        while (itr.hasNext())
-                        {
-                            Attribute child = (Attribute) itr.next();
-                            String attrName = child.getQualifiedName();
-                            if (attrName.equals("name")) {
-                                layers.add((String)child.getValue());
-                            }
-                        }
-                        row.detach();
-                    }
-                }
-            );
-        try {
-            Document doc = reader.read(sysdefFile);
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/sbs/src/com/nokia/helium/sbs/SBSCommandBase.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,83 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-package com.nokia.helium.sbs;
-
-import java.io.File;
-import java.util.HashMap;
-
-import com.nokia.helium.core.plexus.CommandBase;
-
-/**
- * Simple SBS wrapper based on the CommandBase class.
- *
- */
-public class SBSCommandBase extends CommandBase<SBSException> {
-
-    private File workingDir;
-    
-    private String cleanLogPath;
-    
-    /**
-     * @return sbs.
-     */
-    @Override
-    protected String getExecutable() {
-        return "sbs";
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    protected void throwException(String message, Throwable t) throws SBSException {
-        throw new SBSException(message, t);
-    }
-
-    /**
-     * Set the working directory where emake should be called.
-     * @param workingDir the working directory.
-     */
-    public void setWorkingDir(File workingDir) {
-        this.workingDir = workingDir;
-    }
-
-    /**
-     * Get the workingDir defined by the user.
-     * @return the working dir.
-     */
-    @Override
-    public File getWorkingDir() {
-        return workingDir;
-    }
-
-    public void setCleanLogFilePath(String path) {
-        cleanLogPath = path;
-    }
-
-    /**
-     * Executes the command using as argline, instead of argument.
-     * @param argLine, argline to execute.
-     */
-    public void execute(String argLine) throws SBSException {
-        HashMap<String, String> envMap = new HashMap<String, String>();
-        envMap.put("PYTHONPATH", "");
-        if ( cleanLogPath != null) {
-            envMap.put("SBS_CLEAN_LOG_FILE", cleanLogPath);
-        }
-        executeCmdLine(argLine, envMap, null);
-    }
-}
--- a/buildframework/helium/external/helium-antlib/sbs/src/com/nokia/helium/sbs/SBSException.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-package com.nokia.helium.sbs;
-
-/**
- * Exception raise by the SBS Modules.
- *
- */
-public class SBSException extends Exception {
-
-    /**
-     * An exception with message. 
-     * @param message
-     */
-    public SBSException(String message) {
-        super(message);
-    }
-
-    /**
-     * An exception with message and cause.
-     * @param message
-     */
-    public SBSException(String message, Throwable t) {
-        super(message, t);
-    }
-    
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/sbs/src/com/nokia/helium/sbs/ant/SBSBuildList.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,65 +0,0 @@
-/*
- * Copyright (c) 2007-2008 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:  
- *
- */
-
-package com.nokia.helium.sbs.ant;
-
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.BuildException;
-import java.util.Hashtable;
-import java.util.List;
-import java.util.HashMap;
-import com.nokia.helium.sbs.ant.types.*;
-import com.nokia.helium.sbs.ant.taskdefs.*;
-import org.apache.log4j.Logger;
-
-public final class SBSBuildList {
-
-
-
-    private static HashMap<Object, SBSBuild> sbsBuildMap;
-
-    private static Logger log = Logger.getLogger(SBSBuildList.class);
-
-    private SBSBuildList() {
-    }
-    
-    public static List<SBSInput> getSBSInputList(Project project, String buildName) {
-        if (sbsBuildMap == null) {
-            initialize(project);
-        }
-        SBSBuild sbsBuild = sbsBuildMap.get(buildName);
-        if (sbsBuild == null) {
-            throw new BuildException("Config name : " + buildName + " is not valid");
-        }
-        List<SBSInput> retList = null;
-        if (sbsBuild != null) {
-            retList = sbsBuild.getSBSInputList();
-        }
-        return retList;
-    }
-
-    private static void initialize(Project project) {
-        Hashtable references = project.getReferences();
-        sbsBuildMap = new HashMap<Object, SBSBuild>();
-        for (Object key : references.keySet()) {
-            Object sbsBuildObject = references.get(key); 
-            if ( sbsBuildObject != null && sbsBuildObject instanceof SBSBuild) {
-                sbsBuildMap.put(key, (SBSBuild)sbsBuildObject);
-            }
-        }
-    }
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/sbs/src/com/nokia/helium/sbs/ant/antlib.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : antlib.xml 
-Part of     : Helium AntLib
-
-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:
-
-============================================================================
--->
-<antlib>
-    <!-- Task definition -->
-    <taskdef name="sbstask" classname="com.nokia.helium.sbs.ant.taskdefs.SBSTask"/>
-    <taskdef name="getsbsinputs" classname="com.nokia.helium.sbs.ant.taskdefs.GetSBSInputs"/>
-    <!-- Type definition -->
-    <typedef name="sbsbuild" classname="com.nokia.helium.sbs.ant.types.SBSBuild"/>
-    <typedef name="sbsinput" classname="com.nokia.helium.sbs.ant.types.SBSInput"/>
-    <typedef name="sbsmakeoptions" classname="com.nokia.helium.sbs.ant.types.SBSMakeOptions"/>
-    <typedef name="sbsoptions" classname="com.nokia.helium.core.ant.types.VariableSet"/>
-</antlib>
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/sbs/src/com/nokia/helium/sbs/ant/taskdefs/GetSBSInputs.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-/*
- * Copyright (c) 2007-2008 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:  
- *
- */
-
-package com.nokia.helium.sbs.ant.taskdefs;
-
-import java.util.List;
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Task;
-import com.nokia.helium.sbs.ant.types.*;
-import com.nokia.helium.sbs.ant.*;
-import org.apache.log4j.Logger;
-
-public class GetSBSInputs extends Task {
-
-    private Logger log = Logger.getLogger(GetSBSInputs.class);
-    private String configName;
-    private String outputProperty;
-    
-
-    public void setConfig(String name) {
-        configName = name;
-    }
-
-    public void setOutputProperty(String property) {
-        outputProperty = property;
-    }
-
-    /**
-     *  Execute the task. Set the property with number of severities.  
-     * @throws BuildException
-     */
-    public void execute() {
-        if (configName == null) {
-            throw new BuildException("configInput is not defined");
-        }
-        List<SBSInput> sbsInputList = SBSBuildList.getSBSInputList(getProject(), configName);
-        StringBuffer inputs = new StringBuffer();
-        for (SBSInput input : sbsInputList) {
-            if (inputs.length() > 0) {
-                inputs.append(",");
-            }
-            inputs.append(input.getRefid().getRefId());
-            getProject().setProperty(outputProperty,inputs.toString());
-        }
-    }
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/sbs/src/com/nokia/helium/sbs/ant/taskdefs/SBSTask.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,311 +0,0 @@
-/*
- * Copyright (c) 2007-2008 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:  
- *
- */
-
-package com.nokia.helium.sbs.ant.taskdefs;
-
-import java.util.List;
-import org.w3c.dom.*;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.transform.*;
-import javax.xml.transform.dom.*;
-import javax.xml.transform.stream.*;
-import java.io.FileWriter;
-import java.text.DecimalFormat;
-import java.util.Date;
-import com.nokia.helium.core.plexus.AntStreamConsumer;
-import java.io.File;
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Task;
-import com.nokia.helium.core.ant.types.Variable;
-import com.nokia.helium.core.ant.types.VariableSet;
-import com.nokia.helium.sbs.ant.types.*;
-import com.nokia.helium.sbs.ant.*;
-import org.apache.log4j.Logger;
-import org.apache.tools.ant.types.PatternSet;
-import com.nokia.helium.sbs.SAXSysdefParser;
-import com.nokia.helium.sbs.SBSCommandBase;
-import com.nokia.helium.sbs.SBSException;
-import java.util.ArrayList;
-import java.util.Hashtable;
-import com.nokia.helium.core.plexus.FileStreamConsumer;
-import java.util.Collection;
-
-public class SBSTask extends Task {
-
-    private Logger log = Logger.getLogger(SBSTask.class);
-    private String sbsInputName;
-    private String layerPatternSetRef;
-    private File sysDefFile;
-    private File workingDir;
-    private File errorFile;
-    private String logSuffix;
-    private String cleanLog;
-    private String outputLogName;
-    private File statsLog;
-    private boolean executeCmd = true;
-    private boolean failOnError = true;
-    private Date startTime;
-    private Date endTime;
-
-
-    public void setCleanLog(String logPath) {
-        cleanLog = logPath;
-    }
-
-    public void setOutputLog(String logName) {
-        outputLogName = logName;
-    }
-
-    public void setStatsLog(File log) {
-        statsLog = log;
-    }
-    
-    public void setSBSInput(String inputName) {
-        sbsInputName = inputName;
-    }
-
-    public void setErrorOutput(File file) {
-        errorFile = file;
-    }
-
-    public void setSysDefFile(File file) {
-        sysDefFile = file;
-    }
-
-    public void setLogSuffix(String suffix) {
-        logSuffix = suffix;
-    }
-
-    public void setLayerPatternSetRef(String id) {
-        layerPatternSetRef = id;
-    }
-
-    public void setWorkingDir(File dir) {
-        workingDir = dir;
-    }
-
-    public void setExecute(boolean execute) {
-        executeCmd = execute;
-    }
-
-    public void setFailOnError(boolean failBuild) {
-        failOnError = failBuild;
-    }
-
-    /**
-     *  Execute the task. Set the property with number of severities.  
-     * @throws BuildException
-     */
-    public void execute() {
-        if (sbsInputName == null) {
-            throw new BuildException("sbsInputName is not defined");
-        }
-        if (sysDefFile == null) {
-            throw new BuildException("System Definition file is missing");
-        }
-        if (workingDir == null) {
-            throw new BuildException("workingDir must be set");
-        }
-        
-        List <String> filteredLayers = getFilteredLayers();
-        SBSCommandBase sbsCmd = new SBSCommandBase();
-        sbsCmd.setWorkingDir(workingDir);
-        if (cleanLog != null) {
-            sbsCmd.setCleanLogFilePath(cleanLog);
-        }
-        try {
-            log.debug("error stream file : " + errorFile);
-            sbsCmd.addOutputLineHandler(new AntStreamConsumer(this));
-            if (errorFile == null) {
-                log.debug("redirecting error to Antstream");
-                sbsCmd.addErrorLineHandler(new AntStreamConsumer(this));
-            } else {
-                log.debug("redirecting error to file stream");
-                sbsCmd.addErrorLineHandler(new FileStreamConsumer(errorFile));
-            }
-        } catch (java.io.FileNotFoundException ex) {
-            log.info("file path: " + errorFile + "Not valid" );
-        }
-        Object refObject = getProject().getReferences().get(sbsInputName);
-        if (refObject == null) {
-            throw new BuildException("invalid sbs input reference: " + sbsInputName);
-        }
-        if ( refObject != null && ! (refObject instanceof SBSInput)) {
-            throw new BuildException("sbs input name " + sbsInputName + "is not valid");
-        }
-        SBSInput sbsInput = (SBSInput)refObject;
-        StringBuffer cmdOptions = new StringBuffer();
-        VariableSet sbsOptions = sbsInput.getFullSBSOptions();
-        cmdOptions.append(" -s " + sysDefFile);
-        Collection<Variable> variableList = sbsOptions.getVariables(); 
-        if (sbsOptions != null ) {
-           if (variableList.isEmpty()) {
-               throw new BuildException("sbsoptions cannot be empty for input: " + sbsInputName);
-           }
-        }
-        for (Variable variable : variableList) {
-            cmdOptions.append(" " + variable.getParameter());
-        }
-        SBSMakeOptions sbsMakeOptions = sbsInput.getFullSBSMakeOptions();
-        variableList = null;
-        if (sbsMakeOptions != null) {
-            cmdOptions.append(" -e " + sbsMakeOptions.getEngine());
-            String ppThreads = sbsMakeOptions.getPPThreads();
-            if (ppThreads != null) {
-                cmdOptions.append(" -j " + ppThreads);
-            }
-            variableList = sbsMakeOptions.getVariables(); 
-            //if (variableList.isEmpty()) {
-            //    throw new BuildException("sbs make options cannot be empty for input: " + sbsInputName);
-            //}
-            for (Variable variable : variableList) {
-                cmdOptions.append(" --mo=");
-                cmdOptions.append(variable.getParameter());
-            }
-        }
-        if (filteredLayers != null) {
-            if (filteredLayers.isEmpty()) {
-                log.info("Warning: No matching layers to build from system definition file, skipped");
-                return;
-            } else {
-                for (String layer : filteredLayers) {
-                    cmdOptions.append(" -l " + layer);
-                }
-            }
-        }
-        startTime = new Date();
-        try {
-            log("sbs commands: " + cmdOptions.toString());
-            if (executeCmd) {
-                sbsCmd.execute(cmdOptions.toString());
-            }
-        } catch (SBSException sex) {
-            log.info("SBS exception occured during sbs execution");
-            if (failOnError) {
-                throw new BuildException("exception during SBS execution", sex);
-            }
-        } catch (Exception ex) {
-            log.info("Exception occured during sbs execution");
-            if (failOnError) {
-                throw new BuildException("exception during SBS execution", ex);
-            }
-        }
-        endTime = new Date();
-        updateSBSLogStatistics(statsLog, outputLogName);
-    }
-
-    private List<String> getFilteredLayers() {
-        List<String> filteredLayers = null;
-        if (layerPatternSetRef != null) {
-            Hashtable references = getProject().getReferences();
-            Object layerPatternSetObject = references.get(layerPatternSetRef); 
-            if ( layerPatternSetObject != null && ! (layerPatternSetObject instanceof PatternSet)) {
-                throw new BuildException("Layer Pattern set is not of type PatternSet");
-            }
-            if (layerPatternSetObject != null) {
-                PatternSet layerPatternSet = (PatternSet) layerPatternSetObject;
-                SAXSysdefParser sysDefParser = new SAXSysdefParser(sysDefFile);
-                List<String> fullLayerList = sysDefParser.getLayers(); 
-                filteredLayers = new ArrayList<String>();
-                String[] includes = layerPatternSet.getIncludePatterns(getProject());
-                String[] excludes = layerPatternSet.getExcludePatterns(getProject());
-                if (includes == null && excludes == null) {
-                    throw new BuildException("No patterns specified");
-                }
-                for (String layer : fullLayerList) {
-                    if (includes == null) {
-                        if (!isExcluded(layer, excludes)) {
-                            filteredLayers.add(layer);
-                        }
-                        continue;
-                    }
-                    if (isIncluded(layer, includes) ) {
-                        if (!isExcluded(layer, excludes)) {
-                            filteredLayers.add(layer);
-                        }
-                    }
-                }
-            }
-        }
-        return filteredLayers;
-    }
-
-    
-    private boolean isIncluded(String text, String[] includes) {
-        if (includes != null) {
-            for (String pattern : includes) {
-                if (text.matches(pattern)) {
-                    return true;
-                }
-            }
-        }
-        return false;
-    }
-
-    private void updateSBSLogStatistics(File infoFileName, 
-            String logFileName) {
-
-        try {
-            DocumentBuilderFactory sbsInfo = DocumentBuilderFactory.newInstance();
-            DocumentBuilder docBuilder = sbsInfo.newDocumentBuilder();
-            Document doc = docBuilder.newDocument();
-            Element root = doc.createElement("sbsinfo");
-            doc.appendChild(root);
-            Element child = doc.createElement("logfile");
-            child.setAttribute("name", logFileName);
-            root.appendChild(child);
-
-            long timeDiff = (endTime.getTime() - startTime.getTime()) / 1000;
-            child = doc.createElement("durationlong");
-            child.setAttribute("time", "" + timeDiff);
-            root.appendChild(child);
-            child = doc.createElement("duration");
-            int hours = (int) (timeDiff / 3600);
-            int minutesSeconds = (int)(timeDiff % 3600);
-            int minutes = minutesSeconds / 60;
-            int seconds = minutesSeconds % 60;
-            DecimalFormat decimalFormat =  new DecimalFormat();
-            decimalFormat.setMinimumIntegerDigits(2);
-            String duration = decimalFormat.format(hours) + "H:" +  
-                    decimalFormat.format(minutes) +  "M:"  + decimalFormat.format(seconds) + "S";
-            //Todo: handle if the time difference is greater than 24 hours
-            child.setAttribute("time", duration);
-            root.appendChild(child);
-            Transformer transformer = TransformerFactory.newInstance().newTransformer();
-            transformer.setOutputProperty(OutputKeys.INDENT, "yes");
-            FileWriter sbsWriter = new FileWriter(infoFileName);
-            StreamResult result = new StreamResult(sbsWriter);
-            DOMSource sbsSource = new DOMSource(doc);
-            transformer.transform(sbsSource, result);
-        } catch (Exception ex) {
-            log.debug("exception while xml writing sbs log info", ex);
-        }
-        
-    }
-
-    private boolean isExcluded(String text, String[] excludes) {
-        if (excludes != null) {
-            for (String pattern : excludes) {
-                if (text.matches(pattern)) {
-                    return true;
-                }
-            }
-        }
-        return false;
-    }
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/sbs/src/com/nokia/helium/sbs/ant/types/SBSBuild.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,92 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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: 
-*
-*/
- 
-package com.nokia.helium.sbs.ant.types;
-
-import org.apache.tools.ant.types.DataType;
-import org.apache.tools.ant.BuildException;
-import java.util.Vector;
-import java.util.List;
-import java.util.ArrayList;
-import org.apache.tools.ant.types.Reference;
-import org.apache.log4j.Logger;
-
-
-/**
- * Helper class to store the command line variables
- * with name / value pair.
- * @ant.type name="arg"
- * @ant.type name="makeOption"
- */
-public class SBSBuild extends DataType
-{
-    private static Logger log = Logger.getLogger(SBSBuild.class);
-
-    private String name;
-
-    private Vector<SBSInput> sbsInputList = new Vector<SBSInput>();
-
-
-    public SBSBuild() {
-    }
-    
-    /**
-     * Set the name of the variable.
-     * @param name
-     */
-    public void setName(String nm) {
-        name = nm;
-    }
-
-    /**
-     * Gets the name of the build input.
-     * @param name
-     */
-    public String getName() {
-        return name;
-    }
-    
-    /**
-     * Creates an empty variable element and adds 
-     * it to the variables list
-     * @return empty Variable pair
-     */
-    public SBSInput createSBSInput() {
-        SBSInput input =  new SBSInput();
-        sbsInputList.add(input);
-        return input;
-    }
-    
-    public List<SBSInput> getSBSInputList() {
-        List<SBSInput> inputList = new ArrayList<SBSInput>();
-        Reference refId = getRefid();
-        Object sbsInputObject = null;
-        if (refId != null) {
-            try {
-                sbsInputObject = refId.getReferencedObject();
-            } catch ( Exception ex) {
-                //log.info("Reference id of sbsinput list is not valid");
-                throw new BuildException("Reference id (" + refId.getRefId() + ") of sbsinput list is not valid");
-            }
-            if (sbsInputObject != null && sbsInputObject instanceof SBSInput) {
-                inputList.add((SBSInput)sbsInputObject);
-            }
-        }
-        inputList.addAll(sbsInputList);
-        return inputList;
-    }
-}
--- a/buildframework/helium/external/helium-antlib/sbs/src/com/nokia/helium/sbs/ant/types/SBSInput.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,251 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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: 
-*
-*/
- 
-package com.nokia.helium.sbs.ant.types;
-
-import com.nokia.helium.core.ant.types.VariableSet;
-import com.nokia.helium.core.ant.VariableIFImpl;
-import java.util.Collection;
-import com.nokia.helium.core.ant.types.Variable;
-import org.apache.tools.ant.BuildException;
-import java.util.Vector;
-import org.apache.tools.ant.types.Reference;
-import org.apache.log4j.Logger;
-
-/**
- * Helper class to store the variable set (list of variables
- * with name / value pair)
- * @ant.type name="argSet"
- */
-public class SBSInput extends VariableIFImpl {
-    
-    private static Logger log = Logger.getLogger(SBSInput.class);
-    
-    private Vector<VariableSet> sbsOptions = new Vector<VariableSet>();
-    private Vector<SBSMakeOptions> sbsMakeOptions = new Vector<SBSMakeOptions>();
-    private Vector<SBSInput> sbsInputList = new Vector<SBSInput>();
-    
-    /**
-     * Constructor
-     */
-    public SBSInput() {
-    }    
-
-    /**
-     * Creates an empty variable element and adds 
-     * it to the variables list
-     * @return empty Variable pair
-     */
-    public VariableSet createSBSOptions() {
-        SBSInput sbsInput = new SBSInput();
-        VariableSet varSet =  new VariableSet();
-        sbsInput.addSBSOptions(varSet);
-        sbsInputList.add(sbsInput);
-        return varSet;
-    }
-    
-    public void addSBSOptions(VariableSet varSet) {
-        sbsOptions.add(varSet);
-    }
-    
-    /**
-     * Creates an empty variable element and adds 
-     * it to the variables list
-     * @return empty Variable pair
-     */
-    public VariableSet createSBSMakeOptions() {
-        SBSInput sbsInput = new SBSInput();
-        SBSMakeOptions varSet =  new SBSMakeOptions();
-        sbsInput.addSBSMakeOptions(varSet);
-        sbsInputList.add(sbsInput);
-        return varSet;
-    }
-
-    public void addSBSMakeOptions(SBSMakeOptions varSet) {
-        sbsMakeOptions.add(varSet);
-    }
-
-    public SBSInput createSBSInput() {
-        SBSInput sbsInput = new SBSInput();
-        sbsInputList.add(sbsInput);
-        return sbsInput;
-    }
-    
-    public Vector<VariableSet> getSBSOptions() {
-        return sbsOptions;
-    }
-
-    public Vector<SBSMakeOptions> getSBSMakeOptions() {
-        return sbsMakeOptions;
-    }
-    
-    private void validateInput() {
-        if (getRefid() != null && (!sbsMakeOptions.isEmpty() || !sbsOptions.isEmpty())) {
-            throw new BuildException("SBSInput with refid should not have sbsoptions / sbsmakeoptions");
-        }
-    }
-
-    private Vector<VariableSet> getSBSOptions(SBSInput sbsInput) {
-        Vector<VariableSet> fullList = null;
-        sbsInput.validateInput();
-        Reference refId = sbsInput.getRefid();
-        Object sbsInputObject = null;
-        if (refId != null) {
-            try {
-                sbsInputObject = refId.getReferencedObject();
-            } catch ( Exception ex) {
-                //log.info("Reference id of sbsinput list is not valid");
-                throw new BuildException("Reference id (" + refId.getRefId() + ") of sbsinput list is not valid");
-            }
-            if (sbsInputObject != null && sbsInputObject instanceof SBSInput) {
-                VariableSet options = ((SBSInput)sbsInputObject).getFullSBSOptions();
-                if (options != null ) {
-                    if (fullList == null) {
-                        fullList = new Vector<VariableSet>();
-                    }
-                    fullList.add(options);
-                }
-            }
-        }
-        Vector<VariableSet> optionsList = sbsInput.getSBSOptions();
-        if (optionsList != null ) {
-            if (fullList == null) {
-                fullList = new Vector<VariableSet>();
-            }
-            fullList.addAll(optionsList);
-        }
-        return fullList;
-    }
-
-    private Vector<SBSMakeOptions> getSBSMakeOptions(SBSInput sbsInput) {
-        Vector<SBSMakeOptions> sbsMakeOptionsList = null;
-        Reference refId = sbsInput.getRefid();
-        Object sbsInputObject = null;
-        if (refId != null) {
-            try {
-                sbsInputObject = refId.getReferencedObject();
-            } catch ( Exception ex) {
-               throw new BuildException("Reference id (" + refId.getRefId() + ") of sbsinput list is not valid");
-            }
-            if (sbsInputObject != null && sbsInputObject instanceof SBSInput) {
-                SBSMakeOptions options = ((SBSInput)sbsInputObject).getFullSBSMakeOptions(); 
-                if (options != null ) {
-                    if (sbsMakeOptionsList == null) {
-                        sbsMakeOptionsList = new Vector<SBSMakeOptions>();
-                    }
-                    sbsMakeOptionsList.add(options);
-                }
-            }
-        }
-        Vector<SBSMakeOptions> options = sbsInput.getSBSMakeOptions();
-        if (options != null) {
-            if (sbsMakeOptionsList == null) {
-                sbsMakeOptionsList = new Vector<SBSMakeOptions>();
-            }
-            sbsMakeOptionsList.addAll(options);
-        }
-        return sbsMakeOptionsList;
-    }
-
-    public VariableSet getFullSBSOptions() {
-        Vector<VariableSet> fullList = null;
-        VariableSet resultSet = null;
-        Vector<VariableSet> currentOptions = getSBSOptions(this);
-        if (currentOptions != null && !currentOptions.isEmpty()) {
-            if (fullList == null ) {
-                fullList = new Vector<VariableSet>();
-            }
-            fullList.addAll(currentOptions);
-        }
-        for (SBSInput sbsInput : sbsInputList) {
-            Vector<VariableSet> options = getSBSOptions(sbsInput);
-            if (options != null && !options.isEmpty()) {
-                if (fullList == null ) {
-                    fullList = new Vector<VariableSet>();
-                }
-                fullList.addAll(options);
-            }
-        }
-        if (fullList != null) {
-            for (VariableSet varSet : fullList) {
-                for (Variable var : varSet.getVariables()) {
-                    if (resultSet == null) {
-                        resultSet = new VariableSet();
-                    }
-                    resultSet.add(var);
-                }
-            }
-        }
-        return resultSet;
-    }
-
-    public SBSMakeOptions getFullSBSMakeOptions() {
-        Vector<SBSMakeOptions> sbsMakeOptionsList = null;
-        SBSMakeOptions resultSet = null;
-        Vector<SBSMakeOptions> currentOptions = getSBSMakeOptions(this);
-        if (currentOptions != null && !currentOptions.isEmpty()) {
-            if (sbsMakeOptionsList == null ) {
-                sbsMakeOptionsList = new Vector<SBSMakeOptions>();
-            }
-            sbsMakeOptionsList.addAll(currentOptions);
-        }
-        for (SBSInput sbsInput : sbsInputList) {
-            Vector<SBSMakeOptions> options = getSBSMakeOptions(sbsInput);
-            if (options != null && !options.isEmpty()) {
-                if (sbsMakeOptionsList == null ) {
-                    sbsMakeOptionsList = new Vector<SBSMakeOptions>();
-                }
-                sbsMakeOptionsList.addAll(options);
-            }
-        }
-        if (sbsMakeOptionsList != null ) {
-            String engine = null;
-            for (SBSMakeOptions varSet : sbsMakeOptionsList) {
-                String currentEngine = varSet.getEngine();
-                if (currentEngine != null) {
-                    if (engine == null) {
-                        engine = currentEngine;
-                        if (resultSet == null ) {
-                            resultSet = new SBSMakeOptions();
-                        }
-                        resultSet.setEngine(currentEngine);
-                    } else {
-                        if (!engine.equals(currentEngine) ) {
-                            throw new BuildException("inheriting engine types mismatch: " + engine + " != " + currentEngine);
-                        }
-                    }
-                }
-                if (resultSet == null ) {
-                    resultSet = new SBSMakeOptions();
-                }
-                for (Variable var : varSet.getVariables()) {
-                    resultSet.add(var);
-                }
-            }
-        }
-        return resultSet;
-    }
-    
-    public Collection<Variable> getVariables() {
-        Collection<Variable> varList = null;
-        VariableSet  options = getFullSBSOptions();
-        if (options != null) {
-            varList = options.getVariables();
-        }
-        return varList;
-    }
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/sbs/src/com/nokia/helium/sbs/ant/types/SBSMakeOptions.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,136 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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: 
-*
-*/
- 
-package com.nokia.helium.sbs.ant.types;
-
-import com.nokia.helium.core.ant.types.VariableSet;
-import org.apache.log4j.Logger;
-import org.apache.tools.ant.types.Reference;
-import org.apache.tools.ant.BuildException;
-import java.util.List;
-
-/**
- * Helper class to store the variable set (list of variables
- * with name / value pair)
- * @ant.type name="argSet"
- */
-public class  SBSMakeOptions extends VariableSet {
-
-    private static Logger log = Logger.getLogger(SBSMakeOptions.class);
-
-    private String engine;
-
-    private String ppThreads;
-
-    
-    private boolean initialized;
-    /**
-     * Constructor
-     */
-    public SBSMakeOptions() {
-    }    
-
-    /**
-     * Helper function called by ant to create the new varset
-     */
-    public SBSMakeOptions createSBSMakeOptions() {
-        SBSMakeOptions options =  new SBSMakeOptions();
-        add(options);
-        return options;
-    }
-
-    /**
-     * Helper function to add the created varset
-     * @param filter to be added to the varset
-     */
-    public void add(SBSMakeOptions option) {
-        super.add(option);
-    }
-
-    /**
-     * Sets the engine type for this options 
-     * @param engine for which the make options are used
-     */
-    public void setEngine(String engineName) {
-        engine = engineName;
-    }
-
-    /**
-     * Sets the ppthreads (no. bldinfs to process) 
-     * @param ppBlock no. bldinfs to process per block
-     */
-    public void setPPThreads(String ppBlock) {
-        ppThreads = ppBlock;
-    }
-    
-    public String getPPThreads() {
-        if (!initialized) {
-            initializeAll();
-            initialized = true;
-        }
-        return ppThreads;
-    }
-
-    /**
-     * Returns the engine name 
-     * @return type of make engine
-     */
-    public String getEngine() {
-        if (!initialized) {
-            initializeAll();
-            initialized = true;
-        }
-        if (engine == null) {
-            throw new BuildException("engine should not be null");
-        }
-        return engine;
-    }
-    private void initializeAll() {
-        Object sbsInputObject = null;
-        List<VariableSet> varSets = getVariableSets();
-        initialize(this);
-        for (VariableSet varSet : varSets) {
-            initialize(varSet);
-        }
-    }
-    
-    private void initialize(VariableSet varSet) {
-        SBSMakeOptions makeOptions = null;
-        Reference refId = varSet.getRefid();
-        if (refId != null) {
-            try {
-                makeOptions = (SBSMakeOptions)refId.getReferencedObject();
-                if (makeOptions != null) {
-                    String refEngine = makeOptions.getEngine();
-                    String threads = makeOptions.getPPThreads();
-                    if (engine != null && !(engine.equals(refEngine))) {
-                        throw new BuildException(" Config's engine type " + engine + " not matching with reference : " 
-                                + refId.getRefId() + ": engine: " + refEngine);
-                    }
-                    if (ppThreads == null) {
-                        ppThreads = threads;
-                    }
-                    if (engine == null) {
-                        engine = refEngine;
-                    }
-                }
-            } catch ( Exception ex) {
-                throw new BuildException(ex.getMessage());
-            }
-        }
-    }
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/sbs/tests/bld.sh	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,24 +0,0 @@
-#!/bin/csh
-
-#
-# 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: 
-#
-
-
-
-module load java/1.6.0
-module load mercurial
-setenv ANT_ARGS "-lib ../lib -lib ../../lib -lib ../../core/lib  -lib ../../bin/helium-core.jar -lib ../../bin/helium-sbs.jar -lib ../../antlibs"
-ant $*
--- a/buildframework/helium/external/helium-antlib/sbs/tests/build.bat	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-@echo off
-
-rem
-rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-rem All rights reserved.
-rem This component and the accompanying materials are made available
-rem under the terms of the License "Eclipse Public License v1.0"
-rem which accompanies this distribution, and is available
-rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
-rem
-rem Initial Contributors:
-rem Nokia Corporation - initial contribution.
-rem
-rem Contributors:
-rem
-rem Description: 
-rem
-
-setlocal
-if not defined JAVA_6_HOME (
-set TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
-) ELSE  set TESTED_JAVA=%JAVA_6_HOME%
-if exist %TESTED_JAVA% (set JAVA_HOME=%TESTED_JAVA%)
-set ANT_ARGS=-lib ..\lib -lib ..\..\lib -lib ..\..\core\lib -lib ..\..\bin\helium-core.jar -lib ..\..\bin\helium-sbs.jar -lib ..\..\antlibs
-ant %*
-endlocal
-
--- a/buildframework/helium/external/helium-antlib/sbs/tests/build.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : build.xml 
-Part of     : Helium AntLib
-
-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="helium-antlib-sbs-unittest" xmlns:au="antlib:org.apache.ant.antunit">
-    <description>Helium Antlib sbs tests.</description>
-    <import file="../../test-macros.ant.xml" />
-  
-    <dirname property="sbs.unitest.dir" file="${ant.file.helium-antlib-sbs-unittest}" />
-    <property environment="env" />
-    <import file="../../../nokia/companyproperties.ant.xml" optional="true"/>
-    <import file="../../../../extensions/nokia/external/helium-nokia-antlib/companyproperties.ant.xml" optional="true"/>
-
-    <target name="unittest" depends="unittest-sbs"/>
-
-    <target name="unittest-sbs">
-        <antunitModule name="sbs" />
-    </target>
-</project>
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/sbs/tests/sbs_default_config.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,164 +0,0 @@
-<?xml version="1.0"?>
-<!-- 
-============================================================================ 
-Name        : test_diamonds.ant.xml 
-Part of     : Helium AntLib
-
-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="sbs-default-config" xmlns:hlm="http://www.nokia.com/helium">
-    <description>Helium Antlib default sbs configuration.</description>
-    
-    <dirname property="project.dir" file="${ant.file.sbs-default-config}" />
-
-    <taskdef resource="com/nokia/helium/sbs/ant/antlib.xml" uri="http://www.nokia.com/helium" />
-    <taskdef resource="com/nokia/helium/core/ant/antlib.xml" uri="http://www.nokia.com/helium" />
-
-    <hlm:sbsbuild id="pf_7952">
-        <sbsInput refid="mainbuild-sbs-ec" >
-            <sbsOptions>
-                <arg line="-f armv5.log" />
-            </sbsOptions>
-        </sbsInput>
-    </hlm:sbsbuild>
-    
-    <hlm:sbsbuild id="sf_build">
-        <sbsInput refid="tools-sbs" />
-        <sbsInput refid="mainbuild-sbs" />
-    </hlm:sbsbuild>
-    
-    <!-- In future migrationg to 3.0 schema <sbsbuild> would also to handle layers and filters 
-        and also to include / exclude layers to be built 
-    -->
-
-    <!-- Common make options for particular engine values of it could be overridden by referencing it-->
-    <hlm:sbsmakeoptions id="commonEMakeOptions" engine="emake">
-        <arg name="--emake-emulation" value="gmake" />
-        <arg name="--emake-annodetail" value="basic,history,waiting" />
-        <arg name="--emake-class" value="${ec.build.class}" />
-        <arg name="--emake-historyfile" value="${ec.historyfile.dir}/raptor_clean.emake.data" />
-        <arg name="--case-sensitive" value="0" />
-    </hlm:sbsmakeoptions>
-        
-    <hlm:sbsmakeoptions id="commonGmakeOptions" engine="gmake" />
-
-    <hlm:sbsmakeoptions id="commonPVMGmakeOptions" engine="pvmgmake" />
-        
-    <!-- Tools specific make options inheriting the commone make option-->
-    <hlm:sbsmakeoptions id="toolsmake-sbs-ec">
-        <sbsmakeoptions refid="commonEMakeOptions" />
-        <arg name="--emake-maxagents" value="1" />
-    </hlm:sbsmakeoptions>
-            
-    <!-- Main build make option directly refering to common emake option -->
-    <hlm:sbsmakeoptions id="mainbuildmake-sbs-ec" engine="emake">
-        <sbsmakeoptions refid="commonEMakeOptions" />
-    </hlm:sbsmakeoptions>
-        
-    <!-- sbs input consists of sbs options and sbs make options, the sbs options remains same for all
-    the build system, the make options varies
-     -->
-    <hlm:sbsinput id="tools-sbs">
-        <sbsoptions>
-            <arg line="-c tools_rel -c tools2_rel" />
-            <arg name="-j" value="1" />
-        </sbsoptions>
-    </hlm:sbsinput>
-
-    <!-- sbs input for main build.
-     -->
-    <hlm:sbsinput id="mainbuild-sbs">
-        <sbsoptions>
-            <arg line="-c winscw -c armv5" />
-            <arg line="-f winscw.log" />
-        </sbsoptions>
-    </hlm:sbsinput>
-
-    <hlm:sbsinput id="mainbuild-sbs-ec">
-        <sbsoptions>
-            <arg line="-c winscw -c armv5" />
-            <arg line="-f winscw.log" />
-        </sbsoptions>
-        <sbsmakeoptions refid="mainbuildmake-sbs-ec" />
-    </hlm:sbsinput>
-
-    <!-- Main build make option directly refering to common emake option -->
-    <hlm:sbsmakeoptions id="common-inherit-ec-without-engine">
-        <arg name="--emake-emulation" value="gmake" />
-        <arg name="--emake-annodetail" value="basic,history,waiting" />
-        <arg name="--emake-class" value="${ec.build.class}" />
-        <arg name="--emake-historyfile" value="${ec.historyfile.dir}/raptor_clean.emake.data" />
-    </hlm:sbsmakeoptions>
-
-    <hlm:sbsmakeoptions id="common-inherit-ec-with-engine" engine="emake">
-        <arg name="--emake-emulation" value="gmake" />
-        <arg name="--emake-annodetail" value="basic,history,waiting" />
-        <arg name="--emake-class" value="${ec.build.class}" />
-        <arg name="--emake-historyfile" value="${ec.historyfile.dir}/raptor_clean.emake.data" />
-    </hlm:sbsmakeoptions>
-
-    <hlm:sbsinput id="engine-inherit1-sbs-ec">
-        <sbsoptions>
-            <arg line="-c winscw -c armv5" />
-            <arg line="-f winscw.log" />
-        </sbsoptions>
-        <sbsmakeoptions refid="common-inherit-ec-without-engine" />
-    </hlm:sbsinput>
-
-    <hlm:sbsinput id="engine-inherit2-sbs-ec">
-        <sbsoptions>
-            <arg line="-c winscw -c armv5" />
-            <arg line="-f winscw.log" />
-        </sbsoptions>
-        <sbsmakeoptions refid="common-inherit-ec-with-engine" />
-    </hlm:sbsinput>
-
-    <hlm:sbsinput id="engine-inherit3-sbs-ec">
-        <sbsoptions>
-            <arg line="-c winscw -c armv5" />
-        </sbsoptions>
-        <sbsmakeoptions refid="common-inherit-ec-with-engine" engine="ec-helium" />
-    </hlm:sbsinput>
-
-    <hlm:sbsbuild id="inherit1">
-        <sbsInput refid="engine-inherit1-sbs-ec" >
-            <sbsOptions>
-                <arg line="-f armv5.log" />
-            </sbsOptions>
-        </sbsInput>
-    </hlm:sbsbuild>
-
-    <hlm:sbsbuild id="inherit2">
-        <sbsInput refid="engine-inherit2-sbs-ec" >
-            <sbsOptions>
-                <arg line="-f armv5.log" />
-            </sbsOptions>
-        </sbsInput>
-    </hlm:sbsbuild>
-
-    <hlm:sbsinput id="inherit3_sbs_input"> 
-        <sbsInput refid="engine-inherit3-sbs-ec" />
-        <sbsoptions>
-            <arg line="-f armv5.log" />
-        </sbsoptions>
-    </hlm:sbsinput>
-
-    <hlm:sbsbuild id="inherit3">
-        <sbsinput refid="inherit3_sbs_input" />
-    </hlm:sbsbuild>
-
-</project>
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/sbs/tests/test.sysdef.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,142 +0,0 @@
-<?xml version="1.0"?>
-<!-- 
-============================================================================ 
-Name        : test.sysdef.xml 
-Part of     : Helium AntLib
-
-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:
-
-============================================================================
--->
-<!DOCTYPE SystemDefinition [
- <!ELEMENT SystemDefinition (systemModel?, build?)>
- <!ATTLIST SystemDefinition
-  name CDATA #REQUIRED
-  schema CDATA #REQUIRED>
- <!ELEMENT systemModel (layer+)>
- <!ELEMENT layer (logicalset* | module*)*>
- <!ATTLIST layer
-  name CDATA #REQUIRED
-  levels CDATA #IMPLIED
-  span CDATA #IMPLIED>
- <!ELEMENT logicalset (logicalsubset* | module* | unit* | package* | prebuilt*)*>
- <!ATTLIST logicalset 
-  name CDATA #REQUIRED
-  levels CDATA #IMPLIED  
-  span CDATA #IMPLIED
-  level CDATA #IMPLIED>
- <!ELEMENT logicalsubset (module* | unit* | package* | prebuilt*)*>
- <!ATTLIST logicalsubset name CDATA #REQUIRED>
- <!ELEMENT module (component* | unit* | package* | prebuilt*)*>
- <!ATTLIST module
-  name CDATA #REQUIRED
-  level CDATA #IMPLIED>
- <!ELEMENT component (unit* | package* | prebuilt*)*>
- <!ATTLIST component name CDATA #REQUIRED>
- <!ELEMENT unit EMPTY>
- <!ATTLIST unit
-  unitID ID #REQUIRED
-  name CDATA #REQUIRED
-  mrp CDATA #REQUIRED
-  filter CDATA #IMPLIED
-  bldFile CDATA #REQUIRED
-  priority CDATA #IMPLIED
-  contract CDATA #IMPLIED>
- <!ELEMENT package EMPTY>
- <!ATTLIST package
-  name CDATA #REQUIRED
-  mrp CDATA #REQUIRED
-  filter CDATA #IMPLIED
-  contract CDATA #IMPLIED>
- <!ELEMENT prebuilt EMPTY>
- <!ATTLIST prebuilt
-  name CDATA #REQUIRED
-  version CDATA #REQUIRED
-  late (Y|N) #IMPLIED
-  filter CDATA #IMPLIED
-  contract CDATA #IMPLIED>
- <!ELEMENT build (option* | target+ | targetList+ | unitList+ | configuration+)*>
- <!ELEMENT unitList (unitRef+)>
- <!ATTLIST unitList
-  name ID #REQUIRED
-  description CDATA #REQUIRED>
- <!ELEMENT unitRef EMPTY>
- <!ATTLIST unitRef unit IDREF #REQUIRED>
- <!ELEMENT targetList EMPTY>
- <!ATTLIST targetList
-  name ID #REQUIRED
-  description CDATA #REQUIRED
-  target IDREFS #REQUIRED>
- <!ELEMENT target EMPTY>
- <!ATTLIST target
-  name ID #REQUIRED
-  abldTarget CDATA #REQUIRED
-  description CDATA #REQUIRED>
- <!ELEMENT option EMPTY>
- <!ATTLIST option
-  name ID #REQUIRED
-  abldOption CDATA #REQUIRED
-  description CDATA #REQUIRED
-  enable (Y | N | y | n) #REQUIRED>
- <!ELEMENT configuration (unitListRef+ | layerRef+ | task+)*>
- <!ATTLIST configuration
-  name ID #REQUIRED
-  description CDATA #REQUIRED
-  filter CDATA #REQUIRED>
- <!ELEMENT task ( unitListRef* , (buildLayer | specialInstructions))>
- <!ELEMENT unitListRef EMPTY>
- <!ATTLIST unitListRef unitList IDREF #REQUIRED>
- <!ELEMENT layerRef EMPTY>
- <!ATTLIST layerRef layerName CDATA #REQUIRED>
- <!ELEMENT buildLayer EMPTY>
- <!ATTLIST buildLayer
-  command CDATA #REQUIRED
-  targetList IDREFS #IMPLIED
-  unitParallel (Y | N | y | n) #REQUIRED
-  targetParallel (Y | N | y | n) #IMPLIED>
- <!ELEMENT specialInstructions EMPTY>
- <!ATTLIST specialInstructions
-  name CDATA #REQUIRED
-  cwd CDATA #REQUIRED
-  command CDATA #REQUIRED>
- <!ENTITY layer_real_source_path "/sf/os/mm" >
-]>
-<SystemDefinition name="test_model" schema="1.4.0">
-    <systemModel>
-        <layer name="include_layer_set">
-            <module name="multimedia_mdf">
-                <unit name="mmdevicefw" unitID="sos.mmdevicefw" bldFile="sf\os\mm\mmdevicefw\mdf\group" mrp="sf\os\mm\mmdevicefw\mdf\group\multimedia_mdf.mrp"/>
-            </module>
-            <module name="multimedia_testframework">
-                <unit name="mmtestfw" unitID="sos.mmtestfw" bldFile="sf\os\mm\mmtestenv\mmtestfw\group" mrp="sf\os\mm\mmtestenv\mmtestfw\group\multimedia_testframework_source.mrp"/>
-            </module>
-        </layer>
-        <layer name="exclude_layer_set">
-            <module name="mmimg_component_test_rom">
-                <unit name="mdfunittest" unitID="sos.mdfunittest" bldFile="sf\os\mm\mmdevicefw\mdfunittest\codecapi\audio\tsrc\group" mrp="" filter="mmimg_component_test_rom"/>
-            </module>
-        </layer>
-        <layer name="include_exclude_matcher">
-            <module name="mmimg_component_test_rom">
-                <unit name="mdfunittest" unitID="sos.mdfunittest" bldFile="sf\os\mm\mmdevicefw\mdfunittest\codecapi\audio\tsrc\group" mrp="" filter="mmimg_component_test_rom"/>
-            </module>
-        </layer>
-        <layer name="include_exclude_non-matcher">
-            <module name="mmimg_component_test_rom">
-                <unit name="mdfunittest" unitID="sos.mdfunittest" bldFile="sf\os\mm\mmdevicefw\mdfunittest\codecapi\audio\tsrc\group" mrp="" filter="mmimg_component_test_rom"/>
-            </module>
-        </layer>
-  </systemModel>
-</SystemDefinition>
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/sbs/tests/test_sbs_input.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,179 +0,0 @@
-<?xml version="1.0"?>
-<!-- 
-============================================================================ 
-Name        : test_sbs_input.ant.xml 
-Part of     : Helium AntLib
-
-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="test-sbs-input" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
-    <description>Helium Antlib sbs unittests.</description>
-
-    <taskdef resource="com/nokia/helium/core/ant/antlib.xml" uri="http://www.nokia.com/helium"/>
-    <taskdef resource="com/nokia/helium/sbs/ant/antlib.xml" uri="http://www.nokia.com/helium"/>
-    <taskdef name="getVariableValue" classname="com.nokia.helium.core.ant.taskdefs.GetValueFromVariableSet"/>
-    <dirname property="test.sbs.dir" file="${ant.file.test-sbs-input}"/>
-    <property name="working.dir" value="${test.sbs.dir}" />
-    <patternset id="includeLayerPatternSet" >
-        <include name="include_layer_.*"/>
-    </patternset>
-
-    <patternset id="emptySet" />
-
-    <patternset id="excludeLayerPatternSet" >
-        <exclude name="exclude_layer_.*" />
-    </patternset>
-
-    <patternset id="incExcludeLayerPatternSet" >
-        <include name="include_exclude_.*" />
-        <exclude name="include_exclude_non-matcher.*" />
-    </patternset>
-
-    <dirname property="project.dir" file="${ant.file.test-sbs-input}" />
-
-    <property name="build.system" value="sbs" />
-
-    <import file="${project.dir}/sbs_default_config.ant.xml" />
-
-    <target name="test-7952">
-        <hlm:getsbsinputs config="pf_7952" outputProperty="sbs-inputs"/>
-        <hlm:sbstask sbsinput="${sbs-inputs}" sysdefFile="test.sysdef.xml" 
-            workingDir="${working.dir}" execute="false"/>
-    </target>
-
-    <target name="test-without-sysdef">
-        <property name="build.system" value="sbs" />
-        <au:expectfailure>
-            <hlm:getsbsinputs config="pf_7952" outputProperty="sbs-inputs"/>
-            <hlm:sbstask sbsinput="pf_7952" workingDir="${working.dir}" execute="false"/>
-        </au:expectfailure>
-    </target>
-
-    <target name="test-without-working-dir">
-        <property name="build.system" value="sbs" />
-        <au:expectfailure>
-            <hlm:getsbsinputs config="pf_7952" outputProperty="sbs-inputs"/>
-            <hlm:sbstask sbsinput="${sbs-inputs}" sysdefFile="test.sysdef.xml" execute="false" />
-        </au:expectfailure>
-    </target>
-
-    <target name="test-sbs">
-        <property name="build.system" value="sbs" />
-        <hlm:getsbsinputs config="pf_7952" outputProperty="sbs-inputs"/>
-        <hlm:sbstask sbsinput="${sbs-inputs}" sysdefFile="test.sysdef.xml" 
-            workingDir="${working.dir}" execute="false"/>
-    </target>
-
-    <target name="test-sbs-ec">
-        <property name="build.system" value="sbs-ec" />
-        <hlm:getsbsinputs config="pf_7952" outputProperty="sbs-inputs"/>
-        <hlm:sbstask sbsinput="${sbs-inputs}" sysdefFile="test.sysdef.xml" 
-            workingDir="${working.dir}" execute="false"/>
-    </target>
-
-    <target name="test-all-layers">
-        <property name="build.system" value="sbs" />
-        <hlm:getsbsinputs config="pf_7952" outputProperty="sbs-inputs"/>
-        <hlm:sbstask sbsinput="${sbs-inputs}" sysdefFile="test.sysdef.xml" 
-            workingDir="${working.dir}" execute="false"/>
-    </target>
-
-    <target name="test-include-layers">
-        <property name="build.system" value="sbs" />
-        <hlm:getsbsinputs config="pf_7952" outputProperty="sbs-inputs"/>
-        <hlm:sbstask sbsinput="${sbs-inputs}" sysdefFile="test.sysdef.xml" 
-            layerPatternSetRef="includeLayerPatternSet" workingDir="${working.dir}"
-            execute="false"/>
-        <au:assertLogContains text="sbs" />
-        <au:expectfailure>
-            <au:assertLogContains text="-l exclude_layer_set" />
-        </au:expectfailure>
-        <au:expectfailure>
-            <au:assertLogContains text="-l include_exclude_matcher" />
-        </au:expectfailure>
-        <au:expectfailure>
-            <au:assertLogContains text="-l include_exclude_non-matcher" />
-        </au:expectfailure>
-    </target>
-
-    <target name="test-exclude-layers">
-        <property name="build.system" value="sbs-ec" />
-        <hlm:getsbsinputs config="pf_7952" outputProperty="sbs-inputs"/>
-        <hlm:sbstask sbsinput="${sbs-inputs}" sysdefFile="test.sysdef.xml" 
-            layerPatternSetRef="excludeLayerPatternSet" 
-            workingDir="${working.dir}" execute="false"/>
-        <au:assertLogContains text="-l include_layer_set" />
-        <au:assertLogContains text="-l include_exclude_matcher" />
-        <au:assertLogContains text="-l include_exclude_non-matcher" />
-    </target>
-
-<!--
-    <target name="test-include-exclude-layers">
-        <property name="build.system" value="sbs" />
-        <hlm:getsbsinputs config="pf_7952" outputProperty="sbs-inputs"/>
-        <hlm:sbstask sbsinput="${sbs-inputs}" sysdefFile="test.sysdef.xml" 
-            layerPatternSetRef="incExcludeLayerPatternSet" 
-            workingDir="${working.dir}" execute="false"/>
-        <au:assertLogContains text="-l include_exclude_matcher" />
-    </target>
--->
-    <target name="test-empty-pattern-set">
-        <property name="build.system" value="sbs-ec" />
-        <au:expectfailure>
-            <hlm:getsbsinputs config="pf_7952" outputProperty="sbs-inputs"/>
-            <hlm:sbstask config="${sbs-inputs}" sysdefFile="test.sysdef.xml" 
-                layerPatternSetRef="emptySet" 
-                workingDir="${working.dir}" execute="false"/>
-        </au:expectfailure>
-    </target>
-
-    <target name="test-engine-inheritence1">
-        <property name="build.system" value="sbs-ec" />
-        <au:expectfailure>
-            <hlm:getsbsinputs config="inherit1" outputProperty="sbs-inputs"/>
-            <hlm:sbstask sbsinput="${sbs-inputs}" sysdefFile="test.sysdef.xml" 
-                workingDir="${working.dir}" execute="false"/>
-        </au:expectfailure>
-    </target>
-
-    <target name="test-engine-inheritence2">
-        <property name="build.system" value="sbs-ec" />
-        <hlm:getsbsinputs config="inherit2" outputProperty="sbs-inputs"/>
-        <hlm:sbstask sbsinput="${sbs-inputs}" sysdefFile="test.sysdef.xml" workingDir="${working.dir}" execute="false"/>
-        <au:assertLogContains text="-e emake" />
-    </target>
-
-    <target name="test-engine-inheritence3">
-        <property name="build.system" value="sbs-ec" />
-        <au:expectfailure>
-            <hlm:getsbsinputs config="inherit3" outputProperty="sbs-inputs"/>
-            <hlm:sbstask sbsinput="${sbs-inputs}" sysdefFile="test.sysdef.xml" 
-                workingDir="${working.dir}" execute="false"/>
-        </au:expectfailure>
-    </target>
-
-    <target name="test-getinputs">
-        <property name="build.system" value="sbs-ec" />
-        <hlm:getsbsinputs config="inherit3" outputProperty="sbs-inputs"/>
-        <echo message="sbs-inputs: ${sbs-inputs}" />
-        <getVariableValue name="-f" property="sbs.log.file">
-            <hlm:sbsinput refid="${sbs-inputs}" />
-        </getVariableValue>
-        <echo message="${sbs-inputs}" />
-    </target>
-</project>
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/scm/bld.bat	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-@echo off
-
-rem
-rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-rem All rights reserved.
-rem This component and the accompanying materials are made available
-rem under the terms of the License "Eclipse Public License v1.0"
-rem which accompanies this distribution, and is available
-rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
-rem
-rem Initial Contributors:
-rem Nokia Corporation - initial contribution.
-rem
-rem Contributors:
-rem
-rem Description: 
-rem
-
-setlocal
-if not defined JAVA_6_HOME (
-set TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
-) ELSE  set TESTED_JAVA=%JAVA_6_HOME%
-if exist %TESTED_JAVA% (set JAVA_HOME=%TESTED_JAVA%)
-
-REM Configure Ant 
-if not defined TESTED_ANT_HOME (
-set TESTED_ANT_HOME=C:\Apps\ant_1.7
-) 
-if exist %TESTED_ANT_HOME% (set ANT_HOME=%TESTED_ANT_HOME%)
-
-REM Configure the expected Ant Version details below
-SET expMajorVer=1
-SET expMinorVer=7
-
-rem *** Verify Ant Version ***
-rem -- Run the 'ant -version' command and capture the output to a variable 
-for /f "tokens=*" %%a in ('ant -version') do (set antversion=%%a)
-echo *** Installed Version : %antversion%
-
-rem -- Parse the version string obtained above and get the version number
-for /f "tokens=4 delims= " %%a in ("%antversion%") do set val=%%a
-rem -- Parse the version number delimiting the '.' and set the major and
-rem    minor versions
-for /f "tokens=1-2 delims=." %%a in ("%val%") do (
-set /A majorVersion=%%a
-set /A minorVersion=%%b
-)
-rem -- Check whether major version is greater than or equal to the expected.
-if %majorVersion% geq %expMajorVer% ( 
-rem -- if major version is valid, check minor version. If minor version is less
-rem    than expected display message and abort the execution.
-if %minorVersion% lss %expMinorVer% (echo *** Incorrect version of Ant found. Please check you have atleast Ant 1.7.0 & goto :errorstop ) 
-)
-
-ant %*
-endlocal
-
-:errorstop
-@echo *** Build aborted with error
-exit /b 1
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/scm/build.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : build.xml 
-Part of     : Helium AntLib
-
-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="helium-scm">
-    <description>Helium Antlib SCM.</description>
-    
-    <import file="../macros.ant.xml"/>
-    
-    <property name="name" value="scm"/>
-    
-    <path id="helium.scm.classpath">
-        <fileset dir="${helium.antlib.root.dir}/scm/lib" includes="*.jar"/>
-    </path>
-    
-</project>
-
-
--- a/buildframework/helium/external/helium-antlib/scm/demo/build.bat	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-@echo off
-
-rem
-rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-rem All rights reserved.
-rem This component and the accompanying materials are made available
-rem under the terms of the License "Eclipse Public License v1.0"
-rem which accompanies this distribution, and is available
-rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
-rem
-rem Initial Contributors:
-rem Nokia Corporation - initial contribution.
-rem
-rem Contributors:
-rem
-rem Description: 
-rem
-
-setlocal
-if not defined JAVA_6_HOME (
-set TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
-) ELSE  set TESTED_JAVA=%JAVA_6_HOME%
-if exist %TESTED_JAVA% (set JAVA_HOME=%TESTED_JAVA%)
-ant -lib ..\..\bin -lib ..\..\lib -lib ..\lib %*
-endlocal
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/scm/demo/build.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,409 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : build.xml 
-Part of     : Helium AntLib
-
-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="demo" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
-    <description>Helium Antlib SCM demo.</description>
-
-    <taskdef name="scm" classname="com.nokia.helium.scm.ant.taskdefs.ScmTask" uri="http://www.nokia.com/helium" />
-    <typedef name="latestTag" classname="com.nokia.helium.scm.ant.types.LatestTag" uri="http://www.nokia.com/helium" />
-    <typedef name="tagSet" classname="com.nokia.helium.scm.ant.types.TagSet" uri="http://www.nokia.com/helium" />
-
-    <target name="setup">
-        <delete dir="./temp" failonerror="false" />
-        <unzip src="hg_test1.zip" dest="./temp" />
-        <unzip src="hg_test2.zip" dest="./temp" />
-        <unzip src="hg_test3.zip" dest="./temp" />
-        <property name="test1.dir" location="./temp/test1" />
-        <property name="test2.dir" location="./temp/test2" />
-        <property name="test3.dir" location="./temp/test3" />
-    </target>
-
-    <target name="get-status">
-        <hlm:scm verbose="true" scmUrl="scm:hg:${ant.file.demo}/../temp/test1">
-            <hlm:status>
-                <fileset dir="${ant.file.demo}/../temp/test1">
-                    <include name="**" />
-                    <exclude name="**/.hg/**" />
-                </fileset>
-            </hlm:status>
-        </hlm:scm>
-    </target>
-
-    <target name="demo-status">
-        <antcall target="get-status" />
-        <echo file="${ant.file.demo}/../temp/test1/not_in_repo.txt">Not in repo</echo>
-        <antcall target="get-status" />
-        <hlm:scm verbose="true" scmUrl="scm:hg:${ant.file.demo}/../temp/test1">
-            <hlm:add>
-                <fileset dir="${ant.file.demo}/../temp/test1">
-                    <include name="**" />
-                    <exclude name="**/.hg/**" />
-                </fileset>
-            </hlm:add>
-        </hlm:scm>
-        <antcall target="get-status" />
-    </target>
-
-    <target name="demo-diff" depends="setup">
-        <echo file="${ant.file.demo}/../temp/test1/not_in_repo.txt">Not in repo</echo>
-        <hlm:scm verbose="true" scmUrl="scm:hg:${ant.file.demo}/../temp/test1">
-            <hlm:add>
-                <fileset dir="${ant.file.demo}/../temp/test1">
-                    <include name="**" />
-                    <exclude name="**/.hg/**" />
-                </fileset>
-            </hlm:add>
-        </hlm:scm>
-
-        <hlm:scm verbose="true" scmUrl="scm:hg:${ant.file.demo}/../temp/test1">
-            <hlm:diff>
-                <fileset dir="${ant.file.demo}/../temp/test1">
-                    <include name="**" />
-                    <exclude name="**/.hg/**" />
-                </fileset>
-            </hlm:diff>
-        </hlm:scm>
-    </target>
-
-
-    <!--DEMO "checkout" -->
-    <target name="demo-checkout" depends="setup">
-        <property name="temp.dir" location="${ant.file.demo}/../temp" />
-        <hlm:scm verbose="true" scmUrl="scm:hg:${temp.dir}/test3">
-            <!--Clone-->
-            <hlm:checkout baseDir="${temp.dir}/clones/clone" />
-
-            <!--Clone to revision '0'-->
-            <hlm:checkout baseDir="${temp.dir}/clones/clone_rev_0">
-                <hlm:revision name="0" />
-            </hlm:checkout>
-
-            <!--Clone to revision '1'-->
-            <hlm:checkout baseDir="${temp.dir}/clones/clone_rev_1">
-                <hlm:revision name="1" />
-            </hlm:checkout>
-        </hlm:scm>
-    </target>
-
-    <target name="demo-all" depends="setup">
-        <mkdir dir="${ant.file.demo}/../temp/cloned" />
-        <echo file="${ant.file.demo}/../temp/test1/not_in_repo.txt">Not in repo</echo>
-        <echo file="${ant.file.demo}/../temp/test1/not_in_repo2.txt">Not in repo2</echo>
-
-        <hlm:scm verbose="false" scmUrl="scm:hg:${test1.dir}">
-            <hlm:checkout baseDir="${ant.file.demo}/../temp/cloned" />
-            <hlm:add>
-                <fileset dir="${ant.file.demo}/../temp/test1">
-                    <include name="not_in_repo.txt" />
-                </fileset>
-            </hlm:add>
-            <hlm:checkin message="Adding not_in_repo.txt...">
-                <fileset dir="${ant.file.demo}/../temp/test1">
-                    <include name="not_in_repo.txt" />
-                </fileset>
-            </hlm:checkin>
-            <hlm:tag baseDir="${ant.file.demo}/../temp/test1" name="1.0.0" />
-            <hlm:add>
-                <fileset dir="${ant.file.demo}/../temp/test1">
-                    <include name="not_in_repo2.txt" />
-                </fileset>
-            </hlm:add>
-            <hlm:checkin message="Adding not_in_repo2.txt...">
-                <fileset dir="${ant.file.demo}/../temp/test1">
-                    <include name="not_in_repo2.txt" />
-                </fileset>
-            </hlm:checkin>
-            <hlm:tag baseDir="${ant.file.demo}/../temp/test1" name="1.0.1" />
-        </hlm:scm>
-
-
-        <hlm:scm verbose="false" scmUrl="scm:hg:${ant.file.demo}/../temp/cloned">
-            <hlm:pull baseDir="${ant.file.demo}/../temp/cloned" />
-            <hlm:update baseDir="${ant.file.demo}/../temp/cloned" />
-            <hlm:tags baseDir="${ant.file.demo}/../temp/cloned" reference="cloned.tags" />
-            <hlm:update baseDir="${ant.file.demo}/../temp/cloned">
-                <hlm:latestTag pattern="1.0.*">
-                    <hlm:tagSet refid="cloned.tags" />
-                </hlm:latestTag>
-            </hlm:update>
-        </hlm:scm>
-
-        <hlm:scm verbose="true" scmUrl="scm:hg:${ant.file.demo}/../temp/cloned">
-            <hlm:remove message="Nothing to remove...">
-                <fileset dir="${ant.file.demo}/../temp/cloned">
-                    <include name="*.txt" />
-                </fileset>
-            </hlm:remove>
-        </hlm:scm>
-
-    </target>
-
-    <target name="demo-export" depends="setup">
-        <mkdir dir="${ant.file.demo}/../temp/export" />
-
-        <hlm:scm verbose="false" scmUrl="scm:hg:${ant.file.demo}/../temp/test2">
-            <hlm:export baseDir="${ant.file.demo}/../temp/test2" destPath="${ant.file.demo}/../temp/export">
-                <tag name="2" />
-            </hlm:export>
-        </hlm:scm>
-    </target>
-
-    <!--DEMO "Tagging" -->
-    <target name="demo-tag" depends="setup">
-        <property name="temp.dir" location="${ant.file.demo}/../temp" />
-
-        <hlm:scm verbose="true" scmUrl="scm:hg:${temp.dir}/test1">
-            <hlm:checkout baseDir="${temp.dir}/tag" />
-        </hlm:scm>
-
-        <echo file="${temp.dir}/tag/newfile.txt">newly added</echo>
-
-        <hlm:scm verbose="false" scmUrl="scm:hg:${temp.dir}/tag">
-            <hlm:add>
-                <fileset dir="${temp.dir}/tag">
-                    <include name="*.txt" />
-                </fileset>
-            </hlm:add>
-            <hlm:checkin message="Adding files .....">
-                <fileset dir="${temp.dir}/tag">
-                    <include name="*.txt" />
-                </fileset>
-            </hlm:checkin>
-
-            <hlm:tag baseDir="${temp.dir}/tag" name="tag_0.1" level="local" />
-            <hlm:tag baseDir="${temp.dir}/tag" name="tag_0.2" />
-
-        </hlm:scm>
-    </target>
-
-    <!--DEMO "Branch" -->
-    <target name="demo-branch" depends="setup">
-        <property name="temp.dir" location="${ant.file.demo}/../temp" />
-
-        <hlm:scm verbose="true" scmUrl="scm:hg:${temp.dir}/test1">
-            <hlm:checkout baseDir="${temp.dir}/branch" revision="0" />
-        </hlm:scm>
-
-        <echo file="${temp.dir}/branch/newfile.txt">newly added</echo>
-        <echo file="${temp.dir}/branch/newfile2.txt">newly added</echo>
-        <echo file="${temp.dir}/branch/newfile3.txt">newly added</echo>
-
-        <hlm:scm verbose="false" scmUrl="scm:hg:${temp.dir}/branch">
-            <hlm:branch baseDir="${temp.dir}/branch" name="test_0.1" />
-            <hlm:add>
-                <fileset dir="${temp.dir}/branch">
-                    <include name="*.txt" />
-                </fileset>
-            </hlm:add>
-            <hlm:checkin message="Adding files .....">
-                <fileset dir="${temp.dir}/branch">
-                    <include name="*.txt" />
-                </fileset>
-            </hlm:checkin>
-        </hlm:scm>
-    </target>
-
-    <!--DEMO "update" -->
-    <target name="demo-update" depends="setup">
-        <property name="temp.dir" location="${ant.file.demo}/../temp" />
-
-        <!--Create the first revision -->
-        <echo file="${temp.dir}/test1/not_in_repo1.txt">Not in repo1</echo>
-        <hlm:scm verbose="true" scmUrl="scm:hg:${temp.dir}/test1">
-            <hlm:add>
-                <fileset dir="${temp.dir}/test1">
-                    <include name="not_in_repo1.txt" />
-                    <exclude name="**/.hg/**" />
-                </fileset>
-            </hlm:add>
-        </hlm:scm>
-        <hlm:scm verbose="true" scmUrl="scm:hg:${temp.dir}/test1">
-            <hlm:checkin message="Adding not_in_repo1.txt...">
-                <fileset dir="${temp.dir}/test1">
-                    <include name="not_in_repo1.txt" />
-                </fileset>
-            </hlm:checkin>
-        </hlm:scm>
-
-        <!--Create the second revision -->
-        <echo file="${temp.dir}/test1/not_in_repo2.txt">Not in repo2</echo>
-        <hlm:scm verbose="true" scmUrl="scm:hg:${temp.dir}/test1">
-            <hlm:add>
-                <fileset dir="${temp.dir}/test1">
-                    <include name="not_in_repo2.txt" />
-                    <exclude name="**/.hg/**" />
-                </fileset>
-            </hlm:add>
-        </hlm:scm>
-        <hlm:scm verbose="true" scmUrl="scm:hg:${temp.dir}/test1">
-            <hlm:checkin message="Adding not_in_repo2.txt...">
-                <fileset dir="${temp.dir}/test1">
-                    <include name="not_in_repo2.txt" />
-                </fileset>
-            </hlm:checkin>
-        </hlm:scm>
-
-        <!-- Update to first revision -->
-        <hlm:scm verbose="true" scmUrl="scm:hg:${temp.dir}/test1">
-            <hlm:update baseDir="${temp.dir}/test1">
-                <hlm:revision name="0" />
-            </hlm:update>
-        </hlm:scm>
-
-    </target>
-
-    <!--DEMO "Change Log" -->
-    <target name="demo-changelog" depends="setup">
-        <property name="temp.dir" location="${ant.file.demo}/../temp" />
-
-        <hlm:scm verbose="true" scmUrl="scm:hg:${temp.dir}/test1">
-            <hlm:checkout baseDir="${temp.dir}/changelog" />
-            <hlm:tag baseDir="${temp.dir}/changelog" name="tag_0.2" />
-            <hlm:branch baseDir="${temp.dir}/changelog" name="test_0.1" />
-        </hlm:scm>
-
-        <echo file="${temp.dir}/changelog/newfile.txt">newly added</echo>
-        <echo file="${temp.dir}/changelog/newfile2.txt">newly added</echo>
-        <echo file="${temp.dir}/changelog/newfile3.txt">newly added</echo>
-
-        <hlm:scm verbose="false" scmUrl="scm:hg:${temp.dir}/changelog">
-            <hlm:add>
-                <fileset dir="${temp.dir}/changelog">
-                    <include name="*.txt" />
-                </fileset>
-            </hlm:add>
-            <hlm:checkin message="Adding files .....">
-                <fileset dir="${temp.dir}/changelog">
-                    <include name="*.txt" />
-                </fileset>
-            </hlm:checkin>
-            <hlm:changelog basedir="${temp.dir}/changelog" startVersion="0" />
-        </hlm:scm>
-
-        <echo file="${temp.dir}/changelog/newfile4.txt">newly added</echo>
-        <echo file="${temp.dir}/changelog/newfile5.txt">newly added</echo>
-        <echo file="${temp.dir}/changelog/newfile6.txt">newly added</echo>
-
-        <hlm:scm verbose="false" scmUrl="scm:hg:${temp.dir}/changelog">
-            <hlm:add>
-                <fileset dir="${temp.dir}/changelog">
-                    <include name="*.txt" />
-                </fileset>
-            </hlm:add>
-            <hlm:checkin message="Adding files .....">
-                <fileset dir="${temp.dir}/changelog">
-                    <include name="*.txt" />
-                </fileset>
-            </hlm:checkin>
-            <!--hlm:changelog baseDir="${temp.dir}/changelog" numDays='1' /-->
-            <!--hlm:changelog baseDir="${temp.dir}/changelog" startDate="20090317 18:49:31" endDate="20090323 24:49:31" datePattern="yyyyMMdd HH:mm:ss" /-->
-            <!--hlm:changelog basedir="${temp.dir}/changelog" startVersion="0" /-->
-            <hlm:changelog basedir="${temp.dir}/changelog" startVersion="1" endVersion="2"/>
-            <!--hlm:changelog basedir="${temp.dir}/changelog" startVersion="1" endVersion="2" logOutput="xml" /-->
-        </hlm:scm>
-    </target>
-    
-    <!--DEMO "info" -->
-    <target name="demo-info" depends="setup">
-        <property name="temp.dir" location="${ant.file.demo}/../temp" />
-
-        <hlm:scm verbose="true" scmUrl="scm:hg:${temp.dir}/test1">
-            <hlm:checkout baseDir="${temp.dir}/info" />            
-        </hlm:scm>
-
-        <echo file="${temp.dir}/info/newfile.txt">newly added</echo>
-        <echo file="${temp.dir}/info/newfile2.txt">newly added</echo>
-        <echo file="${temp.dir}/info/newfile3.txt">newly added</echo>
-
-        <hlm:scm verbose="false" scmUrl="scm:hg:${temp.dir}/info">
-            <hlm:add>
-                <fileset dir="${temp.dir}/info">
-                    <include name="*.txt" />
-                </fileset>
-            </hlm:add>
-            <hlm:checkin message="Adding files .....">
-                <fileset dir="${temp.dir}/info">
-                    <include name="*.txt" />
-                </fileset>
-            </hlm:checkin>
-            <hlm:info baseDir="${ant.file.demo}/../temp/info"/>
-        </hlm:scm>
-    </target>
-      
-    <!--DEMO "failonerror-false" -->
-    <target name="demo-failonerror-false" depends="setup">
-        <property name="temp.dir" location="${ant.file.demo}/../temp" />        
-        <hlm:scm verbose="true" scmUrl="scm:hg:${temp.dir}/test1">
-            <hlm:checkout baseDir="${temp.dir}/tag" />
-        </hlm:scm>        
-        <echo file="${temp.dir}/tag/newfile.txt">newly added</echo>        
-        <hlm:scm verbose="false" scmUrl="scm:hg:${temp.dir}/tag" failonerror="false">
-            <hlm:add>
-                <fileset dir="${temp.dir}/tag">
-                    <include name="*.txt" />
-                </fileset>
-            </hlm:add>
-            <hlm:checkin message="Adding files .....">
-                <fileset dir="${temp.dir}/tag">
-                    <include name="*.txt" />
-                </fileset>
-            </hlm:checkin>            
-            <!-- Build should continue as failonerror="false" -->
-            <hlm:tag baseDir="${temp.dir}/tag" name="tag_0.2"/>
-            <hlm:tag baseDir="${temp.dir}/tag" name="tag_0.2"/>            
-        </hlm:scm>        
-        <echo> Build continue.... </echo>        
-    </target>
-    
-    <!--DEMO "failonerror-true" -->
-    <target name="demo-failonerror-true" depends="setup">
-        <property name="temp.dir" location="${ant.file.demo}/../temp" />
-        <hlm:scm verbose="true" scmUrl="scm:hg:${temp.dir}/test1">
-            <hlm:checkout baseDir="${temp.dir}/tag" />
-        </hlm:scm>
-        <echo file="${temp.dir}/tag/newfile.txt">newly added</echo>    
-        <hlm:scm verbose="false" scmUrl="scm:hg:${temp.dir}/tag" failonerror="true">
-            <hlm:add>
-                <fileset dir="${temp.dir}/tag">
-                    <include name="*.txt" />
-                </fileset>
-            </hlm:add>
-            <hlm:checkin message="Adding files .....">
-                <fileset dir="${temp.dir}/tag">
-                    <include name="*.txt" />
-                </fileset>
-            </hlm:checkin>            
-            <!-- Build should fail as failonerror="true" -->
-            <hlm:tag baseDir="${temp.dir}/tag" name="tag_0.3"/>
-            <hlm:tag baseDir="${temp.dir}/tag" name="tag_0.3"/>
-        </hlm:scm>
-    </target>
-    
-    
-    <target name="demo-init" depends="setup">
-        <property name="temp.dir" location="${ant.file.demo}/../temp" />
-        <hlm:scm verbose="true" scmUrl="scm:hg:${temp.dir}/new">
-            <hlm:init />
-        </hlm:scm>
-    </target>
-
-</project>
Binary file buildframework/helium/external/helium-antlib/scm/demo/hg_test1.zip has changed
Binary file buildframework/helium/external/helium-antlib/scm/demo/hg_test2.zip has changed
Binary file buildframework/helium/external/helium-antlib/scm/demo/hg_test3.zip has changed
Binary file buildframework/helium/external/helium-antlib/scm/lib/maven-scm-api-1.1.jar has changed
Binary file buildframework/helium/external/helium-antlib/scm/lib/maven-scm-provider-hg-1.1.jar has changed
Binary file buildframework/helium/external/helium-antlib/scm/lib/maven-scm-provider-svn-commons-1.1.jar has changed
Binary file buildframework/helium/external/helium-antlib/scm/lib/maven-scm-provider-synergy-1.1.jar has changed
Binary file buildframework/helium/external/helium-antlib/scm/lib/plexus-utils-1.5.6.jar has changed
--- a/buildframework/helium/external/helium-antlib/scm/src/com/nokia/helium/scm/ant/antlib.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : antlib.xml 
-Part of     : Helium AntLib
-
-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:
-
-============================================================================
--->
-<antlib>
-    <!-- Task definition -->
-    <taskdef name="scm" classname="com.nokia.helium.scm.ant.taskdefs.ScmTask" onerror="ignore"/>
-    <!-- Type definition -->
-    <typedef name="latestTag" classname="com.nokia.helium.scm.ant.types.LatestTag"/>
-    <typedef name="tagSet" classname="com.nokia.helium.scm.ant.types.TagSet"/>
-</antlib>
--- a/buildframework/helium/external/helium-antlib/scm/src/com/nokia/helium/scm/ant/helium.antlib.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : helium.antlib.xml 
-Part of     : Helium Antlib 
-
-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="libs-scm" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
-    <description>
-        Ant task definition declarations.
-    </description>    
-    <taskdef resource="com/nokia/helium/scm/ant/antlib.xml" uri="http://www.nokia.com/helium"/>
-</project>
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/scm/src/com/nokia/helium/scm/ant/taskdefs/AddAction.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-/*
- * Copyright (c) 2007-2008 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:  
- *
- */
-
-package com.nokia.helium.scm.ant.taskdefs;
-
-import org.apache.maven.scm.ScmException;
-import org.apache.maven.scm.command.add.AddScmResult;
-import org.apache.maven.scm.manager.ScmManager;
-import org.apache.maven.scm.repository.ScmRepository;
-import org.apache.tools.ant.BuildException;
-
-/**
- * Adding a set of files into SCM control.
- *
- * <pre>
- * &lt;hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1"&gt;
- *   &lt;hlm:add&gt;
- *      &lt;fileset dir="${repo.dir}/test1"&gt;
- *         &lt;include name="**" /&gt;
- *         &lt;exclude name="** /.${repo.type}/**" /&gt;
- *      &lt;/fileset&gt;
- *   &lt;/hlm:add&gt;
- * &lt;/hlm:scm&gt;
- *
- * </pre>
- * 
- * @ant.type name="add" category="SCM"
- */
-public class AddAction extends BaseDirectoryScmAction {
-
-    /**
-     * {@inheritDoc}
-     * @throws ScmException 
-     */
-    @Override
-    public void execute(ScmRepository repository) throws ScmException {
-        ScmManager scmManager = getTask().getScmManager();
-
-        AddScmResult result = scmManager.add(repository, getScmFileSet());
-
-        if (!result.isSuccess()) {
-            throw new BuildException("SCM add action failed.");
-        }
-    }
-
-}
--- a/buildframework/helium/external/helium-antlib/scm/src/com/nokia/helium/scm/ant/taskdefs/BaseDirectoryScmAction.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,88 +0,0 @@
-/*
- * Copyright (c) 2007-2008 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:  
- *
- */
-
-package com.nokia.helium.scm.ant.taskdefs;
-
-import java.io.File;
-import java.util.ArrayList;
-
-import org.apache.maven.scm.ScmFileSet;
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.DirectoryScanner;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.types.FileSet;
-
-/**
- * Handles configuration of directory-based SCM task commands.
- */
-public abstract class BaseDirectoryScmAction extends ScmAction {
-    private String basedir;
-
-    /**
-     * Only one fileset is valid because all the SCM commands work on just one
-     * Sdirectory.
-     */
-    private FileSet fileSet;
-
-    /**
-     * Get the basedir.
-     * 
-     * @return the basedir attribute as a string.
-     */
-    public String getBasedir() {
-        if (fileSet != null) {
-            return fileSet.getDir(getProject()).getAbsolutePath();
-        }
-        return basedir;
-    }
-
-    /**
-     * Location of the current checkout in most of the case.
-     * 
-     * @param basedir
-     *            the directory to use on the local machine
-     * 
-     * @ant.required
-     */
-    public void setBasedir(String basedir) {
-        this.basedir = basedir;
-    }
-
-    public void addFileset(FileSet set) {
-        fileSet = set;
-    }
-
-    public ScmFileSet getScmFileSet() {
-        ArrayList<File> files = new ArrayList<File>();
-        if (fileSet == null) {
-            if (basedir == null) {
-                throw new BuildException(
-                        "Need a fileset or basedir attribute to be defined.");
-            }
-            return new ScmFileSet(new File(basedir));
-        }
-        DirectoryScanner scanner = fileSet.getDirectoryScanner(getTask()
-                .getProject());
-        String[] fileNames = scanner.getIncludedFiles();
-        for (String fileName : fileNames) {
-            log("ScmFileSet: adding " + fileName, Project.MSG_DEBUG);
-            files.add(new File(fileName));
-        }
-        ScmFileSet scmFileSet = new ScmFileSet(fileSet.getDir(), files);
-        return scmFileSet;
-    }
-}
--- a/buildframework/helium/external/helium-antlib/scm/src/com/nokia/helium/scm/ant/taskdefs/BranchAction.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,77 +0,0 @@
-/*
- * Copyright (c) 2007-2008 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:  
- *
- */
-
-package com.nokia.helium.scm.ant.taskdefs;
-
-import org.apache.maven.scm.ScmException;
-import org.apache.maven.scm.command.branch.BranchScmResult;
-import org.apache.maven.scm.manager.ScmManager;
-import org.apache.maven.scm.repository.ScmRepository;
-import org.apache.tools.ant.BuildException;
-
-/**
- * This action will create new branch using a specific name.
- *
- * <pre>
- * &lt;hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1"&gt;
- *    &lt;hlm:branch baseDir="${repo.dir}/test1" name="test branch 1.0" /&gt;
- * &lt;/hlm:scm&gt;
- * </pre>
- *
- * @ant.type name="branch" category="SCM"
- */
-public class BranchAction extends BaseDirectoryScmAction {
-
-    private String name;
-
-    /**
-     * Sets the branch name
-     * 
-     * @param name
-     * @ant.required
-     */
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void execute(ScmRepository repository) {
-
-        if (name == null)
-            throw new BuildException("'name' attribute is not defined.");
-
-        ScmManager scmManager = getTask().getScmManager();
-        BranchScmResult result;
-
-        try {
-            result = scmManager.branch(repository, getScmFileSet(), name);
-            if (!result.isSuccess()) {
-                throw new BuildException("SCM branch action error: "
-                        + result.getProviderMessage());
-            }
-            getTask().log(
-                    "Branch '" + name + "' has been created successfully.");
-        } catch (ScmException e) {
-            throw new BuildException("SCM Branch action failed: "
-                    + e.toString());
-        }
-
-    }
-}
--- a/buildframework/helium/external/helium-antlib/scm/src/com/nokia/helium/scm/ant/taskdefs/ChangelogAction.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,254 +0,0 @@
-/*
- * Copyright (c) 2007-2008 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:  
- *
- */
-
-package com.nokia.helium.scm.ant.taskdefs;
-
-import java.util.Date;
-import java.text.SimpleDateFormat;
-import java.util.Iterator;
-import java.io.*;
-
-import org.dom4j.Document;
-import org.dom4j.Element;
-import org.dom4j.io.SAXReader;
-
-import org.apache.maven.scm.ScmException;
-import org.apache.maven.scm.ScmRevision;
-import org.apache.maven.scm.ChangeSet;
-import org.apache.maven.scm.command.changelog.ChangeLogScmResult;
-import org.apache.maven.scm.command.changelog.ChangeLogSet;
-import org.apache.maven.scm.manager.ScmManager;
-import org.apache.maven.scm.repository.ScmRepository;
-import org.apache.tools.ant.BuildException;
-
-/**
- * Get change log within a date range i.e startDate and endDate; 
- * OR get change log of a number of days i.e numDays
- * OR get change log within a range of starVersion and endVersion
- * Parameters either startDate="20090317 18:49:31" endDate="20090318 24:49:31" datePattern="yyyyMMdd HH:mm:ss"
- * Or numDays='1'
- * Or startVersion="1" endVersion="2"
- * Add logOutput="xml" to output log in xml format
- * 
- * <pre>
- * &lt;hlm:scm verbose="false" scmUrl="scm:hg:${repo.dir}/changelog"&gt;
- *     &lt;hlm:changelog basedir="${repo.dir}/changelog" startVersion="1" endVersion="2"/&gt;
- *     &lt;hlm:changelog baseDir="${repo.dir}/changelog" numDays='1' /&gt;
- * &lt;/hlm:scm&gt;
- * </pre>
- *
- * @ant.type name="changelog" category="SCM"
- */
-public class ChangelogAction extends BaseDirectoryScmAction {
-
-    private String startDate;
-
-    private String endDate;
-
-    private String datePattern;
-
-    private String logOutput;
-    
-    private int numDays;
-
-    private String startVersion;
-
-    private String endVersion;
-    private File xmlbom;
-
-
-    /**
-     * Start version
-     * 
-     * @ant.not-required
-     */
-    public void setStartVersion(String startVersion) {
-        this.startVersion = startVersion;
-    }
-
-    /**
-     * End version
-     * 
-     * @ant.not-required
-     */
-    public void setEndVersion(String endVersion) {
-        this.endVersion = endVersion;
-    }
-
-    /**
-     * Start date
-     * 
-     * @ant.not-required
-     */
-    public void setStartDate(String startDate) {
-        this.startDate = startDate;
-    }
-
-    /**
-     * End date
-     * 
-     * @ant.not-required
-     */
-    public void setEndDate(String endDate) {
-        this.endDate = endDate;
-    }
-
-    /**
-     * Number of days
-     * 
-     * @ant.not-required
-     */
-    public void setNumDays(int numDays) {
-        this.numDays = numDays;
-    }
-
-    /**
-     * Date pattern default is EEE MMM dd HH:mm:ss yyyy Z
-     * 
-     * @ant.not-required
-     */
-    public void setDatePattern(String datePattern) {
-        this.datePattern = datePattern;
-    }
-
-    /**
-     * Output pattern default is log output, to get xml output set logoutput=xml
-     * 
-     * @ant.not-required
-     */    
-    public void setLogOutput(String logOutput)
-    {
-        this.logOutput = logOutput;
-    }
-    
-    /**
-     * File for xml output of changeset list
-     * 
-     * @ant.not-required
-     */ 
-    public void setXmlbom(File xmlbom)
-    {
-        this.xmlbom = xmlbom;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @SuppressWarnings("unchecked")
-    @Override
-    public void execute(ScmRepository repository) throws ScmException
-    {
-        ScmManager scmManager = getTask().getScmManager();
-        ScmRevision startRevision = new ScmRevision(startVersion);
-        ScmRevision endRevision = new ScmRevision(endVersion);
-
-        ChangeLogScmResult result;
-        Date start = null;
-        Date end = null;
-
-        if (numDays == 0 && (startDate != null || endDate != null) )
-        {
-            try {
-                SimpleDateFormat format = new SimpleDateFormat(datePattern);
-                start = format.parse(startDate);
-                end = format.parse(endDate);
-             }
-             catch (Exception e)
-             {
-                 throw new ScmException("Date Format not supported:" + e.getMessage());
-             }
-         }
-         else 
-         {
-             start = null;
-             end = null;
-         }
-        try
-        {
-        if (startVersion == null)
-            result = scmManager.changeLog(repository, getScmFileSet(), start, end, numDays, null, datePattern);
-        else
-            result = scmManager.changeLog(repository, getScmFileSet(), startRevision, endRevision, datePattern);
-        } catch (ScmException e) {
-            throw new BuildException(
-                    "Execution of SCM changelog action failed.");
-        }
-        if (!result.isSuccess()) {
-            throw new BuildException("SCM changelog command unsuccessful.");
-        }
-        // Output changelog information
-        ChangeLogSet changelogSet = result.getChangeLog();
-        if (logOutput != null && logOutput.equals("xml"))
-        {
-            getTask().log(changelogSet.toXML());
-        }
-        else if (xmlbom != null)
-        {
-            String output = "";
-            for (Object o : changelogSet.getChangeSets())
-            {
-                String revision = "";
-                ChangeSet c = (ChangeSet)o;
-                for (String x : c.toString().split("\n"))
-                {
-                    if (x.contains("revision:"))
-                        revision = x.replace("revision:", "");
-                }
-                
-                output = output + "<task><id>" + revision + "</id><synopsis>" + c.getComment() + "</synopsis><completed>" + new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss").format(c.getDate()) + "</completed></task>";
-            }
-            String[] path = getTask().getScmUrl().split("/");
-            String xml = "<bom><build>untitled</build><content>\n";
-            String thisproject = "<project>" + "<name>" + path[path.length - 1] + "</name>" + "<baseline>" + getTask().getScmUrl() + "</baseline>" + "<database>mercurial</database>" + output + "</project>\n";
-            xml = xml + thisproject;
-            try {
-                if (xmlbom.exists())
-                {
-                    SAXReader xmlReader = new SAXReader();
-                    Document antDoc = xmlReader.read(xmlbom);
-                    for (Iterator iterator = antDoc.selectNodes("//project").iterator(); iterator.hasNext();)
-                    {
-                        boolean equal = false;
-                        Element e = (Element) iterator.next();
-                        for (Iterator iterator2 = antDoc.selectNodes("//baseline").iterator(); iterator2.hasNext();)
-                        {
-                              Element e2 = (Element) iterator2.next();
-                              if (e2.getText().equals(getTask().getScmUrl()))
-                                  equal = true;
-                        }
-                        if (!equal)
-                            xml = xml + e.asXML() + "\n";
-                    }
-                }
-                xml = xml + "</content></bom>";
-                
-                FileWriter fstream = new FileWriter(xmlbom);
-                BufferedWriter out = new BufferedWriter(fstream);
-                out.write(xml);
-                out.close();
-            } catch (Exception e) { e.printStackTrace(); }
-        }
-        else
-        {
-            Iterator iterator = changelogSet.getChangeSets().iterator();
-            while (iterator.hasNext())
-            {
-                getTask().log(iterator.next().toString());
-            }
-        }
-    }
-}
--- a/buildframework/helium/external/helium-antlib/scm/src/com/nokia/helium/scm/ant/taskdefs/CheckinAction.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,77 +0,0 @@
-/*
- * Copyright (c) 2007-2008 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:  
- *
- */
-
-package com.nokia.helium.scm.ant.taskdefs;
-
-import org.apache.maven.scm.ScmException;
-import org.apache.maven.scm.command.checkin.CheckInScmResult;
-import org.apache.maven.scm.manager.ScmManager;
-import org.apache.maven.scm.repository.ScmRepository;
-import org.apache.tools.ant.BuildException;
-
-/**
- * Check in a specific set of files to the repository.
- *
- * <pre>
- * &lt;hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
- *    &lt;hlm:checkin message="Adding not_in_repo.txt..."&gt;
- *        &lt;fileset dir="${repo.dir}/test1"&gt;
- *            &lt;include name="not_in_repo.txt" /&gt;
- *            &lt;exclude name="** /.${repo.type}/**" / &gt;
- *        &lt;/fileset &gt;
- *    &lt;/hlm:checkin &gt;
- * &lt;/hlm:scm&gt;
- * </pre>
- * 
- * @ant.type name="checkin" category="SCM"
- */
-public class CheckinAction extends BaseDirectoryScmAction {
-    private String message;
-
-    public String getMessage() {
-        return message;
-    }
-
-    /**
-     * @param message
-     *            the message associated to the commit.
-     * @ant.required
-     */
-    public void setMessage(String message) {
-        this.message = message;
-    }
-
-    @Override
-    public void execute(ScmRepository repository) throws ScmException {
-        ScmManager scmManager = getTask().getScmManager();
-
-        if (message == null)
-            throw new BuildException(
-                    "'message attribute has not been defined.'");
-
-        CheckInScmResult result;
-        try {
-            result = scmManager.checkIn(repository, getScmFileSet(), message);
-        } catch (ScmException e) {
-            throw new BuildException("SCM checkin action failed.");
-        }
-
-        if (!result.isSuccess()) {
-            throw new BuildException("SCM checkin action failed.");
-        }
-    }
-}
--- a/buildframework/helium/external/helium-antlib/scm/src/com/nokia/helium/scm/ant/taskdefs/CheckoutAction.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,107 +0,0 @@
-/*
- * Copyright (c) 2007-2008 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:  
- *
- */
-
-package com.nokia.helium.scm.ant.taskdefs;
-
-import org.apache.maven.scm.ScmException;
-import org.apache.maven.scm.command.checkout.CheckOutScmResult;
-import org.apache.maven.scm.manager.ScmManager;
-import org.apache.maven.scm.repository.ScmRepository;
-import org.apache.tools.ant.BuildException;
-import org.apache.maven.scm.ScmRevision;
-import org.apache.maven.scm.ScmTag;
-
-import com.nokia.helium.scm.ant.types.Tag;
-import com.nokia.helium.scm.ant.types.Revision;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Checkout the defined project. Depending on the kind of repository used this
- * can mean for example the cloning of a repository in the case of Mercurial or the copying of 
- * a repository in the case of SVN.
- *
- * <pre>
- * &lt;hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test3"&gt;
- *     &lt;hlm:checkout baseDir="${repo.dir}/cloned" /&gt;
- * &lt;/hlm:scm&gt;
- * </pre>
- *
- * @ant.type name="checkout" category="SCM"
- */
-public class CheckoutAction extends BaseDirectoryScmAction {
-    private List<Tag> tags = new ArrayList<Tag>();
-    private List<Revision> revisions = new ArrayList<Revision>();
-
-    public Tag createTag() {
-        Tag tag = new Tag();
-        add(tag);
-        return tag;
-    }
-
-    public void add(Tag tag) {
-        tags.add(tag);
-    }
-
-    public Revision createRevision() {
-        Revision revision = new Revision();
-        add(revision);
-        return revision;
-    }
-
-    public void add(Revision revision) {
-        revisions.add(revision);
-    }
-
-    @Override
-    public void execute(ScmRepository repository) throws ScmException {
-        ScmManager scmManager = getTask().getScmManager();
-
-        if (tags.size() > 1)
-            throw new ScmException(
-                    "You can only specify one tag nested element.");
-
-        if (revisions.size() > 1)
-            throw new ScmException(
-                    "You can only specify one revision nested element.");
-
-        if ((tags.size() == 1) && (revisions.size() == 1)) {
-            throw new ScmException(
-                    "You can not specify nested element 'revision' and 'tag' together.");
-        }
-
-        CheckOutScmResult result;
-        try {
-            if (tags.size() == 1) {
-                result = scmManager.checkOut(repository, getScmFileSet(),
-                        new ScmTag(tags.get(0).getName()));
-            } else if (revisions.size() == 1) {
-                result = scmManager.checkOut(repository, getScmFileSet(),
-                        new ScmRevision(revisions.get(0).getName()));
-            } else {
-                result = scmManager.checkOut(repository, getScmFileSet());
-            }
-        } catch (ScmException e) {
-            throw new BuildException("SCM checkout action failed: " + e);
-        }
-
-        if (!result.isSuccess()) {
-            throw new BuildException("SCM checkout action failed.");
-        }
-    }
-}
--- a/buildframework/helium/external/helium-antlib/scm/src/com/nokia/helium/scm/ant/taskdefs/DiffAction.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,85 +0,0 @@
-/*
- * Copyright (c) 2007-2008 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:  
- *
- */
-
-package com.nokia.helium.scm.ant.taskdefs;
-
-import org.apache.maven.scm.ScmException;
-import org.apache.maven.scm.ScmRevision;
-import org.apache.maven.scm.command.diff.DiffScmResult;
-import org.apache.maven.scm.manager.ScmManager;
-import org.apache.maven.scm.repository.ScmRepository;
-import org.apache.tools.ant.BuildException;
-
-/**
- * Display the difference of the working copy with the latest copy in the
- * configured scm url.
- *
- * <pre>
- * &lt;hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1"&gt;
- *    &lt;hlm:diff&gt;
- *        &lt;fileset dir="${repo.dir}/test1"&gt;
- *            &lt;include name="**" /&gt;
- *            &lt;exclude name="** /.${repo.type}/**" /&gt;
- *        &lt;/fileset&gt;
- *    &lt;/hlm:diff&gt;
- * &lt;/hlm:scm&gt;
- * </pre>
- *
- * @ant.type name="diff" category="SCM"
- */
-public class DiffAction extends BaseDirectoryScmAction {
-    private String startVersion;
-    private String endVersion;
-
-    public String getStartVersion() {
-        return startVersion;
-    }
-
-    public void setStartVersion(String startVersion) {
-        this.startVersion = startVersion;
-    }
-
-    public String getEndVersion() {
-        return endVersion;
-    }
-
-    public void setEndVersion(String endVersion) {
-        this.endVersion = endVersion;
-    }
-
-    @Override
-    public void execute(ScmRepository repository) throws ScmException {
-
-        ScmManager scmManager = getTask().getScmManager();
-        DiffScmResult result;
-
-        try {
-            result = scmManager.diff(repository, getScmFileSet(),
-                    new ScmRevision(startVersion), new ScmRevision(endVersion));
-        } catch (ScmException e) {
-            throw new BuildException("SCM diff action failed." + e.getMessage());
-        }
-
-        if (!result.isSuccess()) {
-            throw new BuildException("SCM diff action failed."
-                    + result.getProviderMessage());
-        }
-
-        // Output diff information
-        log(result.getPatch());
-    }
-}
--- a/buildframework/helium/external/helium-antlib/scm/src/com/nokia/helium/scm/ant/taskdefs/ExportAction.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,119 +0,0 @@
-/*
- * Copyright (c) 2007-2008 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:  
- *
- */
-
-package com.nokia.helium.scm.ant.taskdefs;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.maven.scm.ScmException;
-import org.apache.maven.scm.ScmTag;
-import org.apache.maven.scm.command.export.ExportScmResult;
-import org.apache.maven.scm.manager.ScmManager;
-import org.apache.maven.scm.repository.ScmRepository;
-import org.apache.tools.ant.BuildException;
-
-import com.nokia.helium.scm.ant.types.Tag;
-
-/**
- * Get a snapshot of a particular revision into a folder.
- *
- * <pre>
- * &lt;hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test2"&gt;
- *    &lt;hlm:export basedir="${repo.dir}/test2" destpath="${repo.dir}/export" /&gt;
- * &lt;/hlm:scm&gt;
- * </pre>
- *
- * @ant.type name="export" category="SCM"
- */
-public class ExportAction extends BaseDirectoryScmAction {
-
-    private File destPath;
-    private List<Tag> tags = new ArrayList<Tag>();
-
-    /**
-     * Create a tag sub-element.
-     * @return the tag element.
-     */
-    public Tag createTag() {
-        Tag tag = new Tag();
-        add(tag);
-        return tag;
-    }
-
-    /**
-     * Add a tag.
-     * @param tag
-     */
-    public void add(Tag tag) {
-        tags.add(tag);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void execute(ScmRepository repository) throws ScmException {
-        ScmManager scmManager = getTask().getScmManager();
-
-        if (getDestPath() == null)
-            throw new ScmException("destPath attribute has not been provided.");
-
-        if (tags.size() > 1)
-            throw new ScmException(
-                    "You can only specify one tag nested element.");
-
-        ExportScmResult result;
-        try {
-            if (tags.size() == 0) {
-                getTask().log(
-                        "Exporting " + getScmFileSet().getBasedir() + " under "
-                                + getDestPath().getAbsolutePath() + ".");
-                result = scmManager.export(repository, getScmFileSet(),
-                        getDestPath().getAbsolutePath());
-            } else {
-                String t = tags.get(0).getName();
-                getTask().log(
-                        "Exporting revision " + t + " of "
-                                + getScmFileSet().getBasedir() + " under "
-                                + getDestPath().getAbsolutePath() + ".");
-                result = scmManager.export(repository, getScmFileSet(),
-                        new ScmTag(t), getDestPath().getAbsolutePath());
-            }
-        } catch (ScmException e) {
-            throw new BuildException("SCM export action failed: " + e);
-        }
-        if (!result.isSuccess()) {
-            throw new BuildException("SCM export action failed: "
-                    + result.getProviderMessage());
-        }
-        // Dump created files.
-        for (Object file : result.getExportedFiles().toArray()) {
-            getTask().log(file.toString());
-        }
-    }
-
-    public File getDestPath() {
-        return destPath;
-    }
-
-    public void setDestPath(File destPath) {
-        this.destPath = destPath;
-    }
-
-}
--- a/buildframework/helium/external/helium-antlib/scm/src/com/nokia/helium/scm/ant/taskdefs/InfoAction.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,64 +0,0 @@
-/*
- * Copyright (c) 2007-2008 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:  
- *
- */
-
-package com.nokia.helium.scm.ant.taskdefs;
-
-import java.io.File;
-
-import org.apache.maven.scm.ScmException;
-import org.apache.maven.scm.repository.ScmRepository;
-import org.apache.tools.ant.BuildException;
-
-import com.nokia.maven.scm.command.info.InfoScmResult;
-import com.nokia.maven.scm.manager.ExtendedScmManager;
-
-/**
- * This action will display the global revision id for the repository.
- *
- * <pre>
- * &lt;hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1"&gt;
- *    &lt;hlm:checkout baseDir="${repo.dir}/info" /&gt;
- *    &lt;hlm:info baseDir="${repo.dir}/info"/&gt;
- * &lt;/hlm:scm&gt;
- * </pre>
- *
- * @ant.type name="info" category="SCM"
- */ 
-public class InfoAction extends BaseDirectoryScmAction {
-
-    
-    @Override
-    public void execute(ScmRepository repository) throws ScmException {
-        InfoScmResult result;
-        try {
-            ExtendedScmManager scmManager = (ExtendedScmManager) getTask()
-                    .getScmManager();
-            result = scmManager.info(repository, new File(this.getBasedir()));
-            
-            if (!result.isSuccess()) {
-                throw new BuildException("SCM tags action error: "
-                        + result.getProviderMessage());
-            }
-            getTask().log(result.getRevision());
-            
-        } catch (ScmException e) {
-            throw new BuildException("SCM info action failed: "
-                    + e.getMessage());
-        }
-
-    }
-}
--- a/buildframework/helium/external/helium-antlib/scm/src/com/nokia/helium/scm/ant/taskdefs/InitAction.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-/*
- * Copyright (c) 2007-2008 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:  
- *
- */
-
-package com.nokia.helium.scm.ant.taskdefs;
-
-import org.apache.maven.scm.ScmException;
-import org.apache.maven.scm.manager.ScmManager;
-import org.apache.maven.scm.provider.ScmProvider;
-import org.apache.maven.scm.repository.ScmRepository;
-
-import com.nokia.maven.scm.provider.ScmProviderExt;
-
-/**
- * Create a new repository. In the following example the new_repo mercurial repository 
- * will be created under /some/path/. E.g:
- * 
- * <pre>
- * &lt;hlm:scm verbose="true" scmUrl="scm:hg:/some/path/new_repo"&gt;
- *     &lt;hlm:checkout baseDir="scm:hg:/some/path/new_repo" /&gt;
- * &lt;/hlm:scm&gt;
- * </pre>
- * 
- * @ant.type name="init" category="SCM"
- */
-public class InitAction extends BaseDirectoryScmAction {
-    
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void execute(ScmRepository repository) throws ScmException {
-        ScmManager scmManager = getTask().getScmManager();
-        ScmProvider provider = scmManager.getProviderByUrl(getTask().getScmUrl());
-
-        getTask().log("InitAction: " + repository);
-        ScmProviderExt providerExt = (ScmProviderExt) provider;
-        providerExt.init(repository);
-    }
-}
--- a/buildframework/helium/external/helium-antlib/scm/src/com/nokia/helium/scm/ant/taskdefs/PullAction.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-/*
- * Copyright (c) 2007-2008 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:  
- *
- */
-
-package com.nokia.helium.scm.ant.taskdefs;
-
-import java.io.File;
-
-import org.apache.maven.scm.ScmException;
-import org.apache.maven.scm.repository.ScmRepository;
-import org.apache.tools.ant.BuildException;
-
-import com.nokia.maven.scm.command.pull.PullScmResult;
-import com.nokia.maven.scm.manager.ExtendedScmManager;
-
-/**
- * Retrieve a set of changes from a remote database. This action is only
- * supported in distributed SCM such as Mercurial or Git.
- * 
- * @ant.type name="pull" category="SCM"
- */
-public class PullAction extends BaseDirectoryScmAction {
-    @Override
-    public void execute(ScmRepository repository) throws ScmException {
-        PullScmResult result;
-        try {
-            ExtendedScmManager scmManager = (ExtendedScmManager) getTask()
-                    .getScmManager();
-            result = scmManager.pull(repository, new File(this.getBasedir()));
-            if (!result.isSuccess()) {
-                throw new BuildException("SCM pull action error: "
-                        + result.getProviderMessage());
-            }
-        } catch (ScmException e) {
-            throw new BuildException("SCM pull action failed: "
-                    + e.getMessage());
-        }
-
-    }
-}
--- a/buildframework/helium/external/helium-antlib/scm/src/com/nokia/helium/scm/ant/taskdefs/RemoveAction.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-/*
- * Copyright (c) 2007-2008 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:  
- *
- */
-
-package com.nokia.helium.scm.ant.taskdefs;
-
-import org.apache.maven.scm.ScmException;
-import org.apache.maven.scm.command.remove.RemoveScmResult;
-import org.apache.maven.scm.manager.ScmManager;
-import org.apache.maven.scm.repository.ScmRepository;
-import org.apache.tools.ant.BuildException;
-
-/**
- * Remove a set of file(s) from SCM control.
- * 
- * <pre>
- * &lt;hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1"&gt;
- *    &lt;hlm:remove message="Nothing to remove..."&gt;
- *        &lt;fileset dir="${repo.dir}/test1"&gt;
- *            &lt;include name="not_in_repo.txt" /&gt;
- *        &lt;/fileset&gt;
- *    &lt;/hlm:remove&gt;
- * &lt;/hlm:scm&gt;
- * </pre>
- *
- * @ant.type name="remove" category="SCM"
- */
-public class RemoveAction extends BaseDirectoryScmAction {
-    private String message;
-
-    public String getMessage() {
-        return message;
-    }
-
-    /**
-     * @param message
-     *            the message associated to the change
-     * @ant.required
-     */
-    public void setMessage(String message) {
-        this.message = message;
-    }
-
-    @Override
-    public void execute(ScmRepository repository) throws ScmException {
-        if (message == null)
-            throw new BuildException("message attribute has not been defined.");
-        // if (getBasedir() == null)
-        // throw new BuildException("basedir attribute has not been defined.");
-
-        ScmManager scmManager = getTask().getScmManager();
-        RemoveScmResult result;
-        try {
-            result = scmManager.remove(repository, getScmFileSet(), message);
-        } catch (ScmException e) {
-            throw new BuildException("SCM remove action failed: " + e);
-        }
-
-        if (!result.isSuccess()) {
-            throw new BuildException("SCM remove action failed.");
-        }
-    }
-}
--- a/buildframework/helium/external/helium-antlib/scm/src/com/nokia/helium/scm/ant/taskdefs/ScmAction.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
-/*
- * Copyright (c) 2007-2008 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:  
- *
- */
-
-package com.nokia.helium.scm.ant.taskdefs;
-
-import org.apache.maven.scm.ScmException;
-import org.apache.maven.scm.repository.ScmRepository;
-import org.apache.tools.ant.ProjectComponent;
-
-/**
- * Abstract class which implements common setting between
- * ScmAction implementations.
- * 
- * Any implementing action must implement the execute method as
- * a execution of the action. The owning task should be used
- * to log message to the user.  
- */
-public abstract class ScmAction extends ProjectComponent {
-    private ScmTask scmtask;
-
-    /**
-     * @return the task
-     */
-    public ScmTask getTask() {
-        return scmtask;
-    }
-
-    /**
-     * @param task
-     *            the task to set
-     */
-    public void setTask(ScmTask task) {
-        this.scmtask = task;
-    }
-
-    /**
-     * Get the action name based on the classname.
-     * @return the lowercase class name. 
-     */
-    public String getName() {
-        String className = getClass().getName();
-        String commandName = className
-                .substring(className.lastIndexOf('.') + 1).toLowerCase();
-        return commandName;
-    }
-
-    /**
-     * This method needs to be implemented by your subclass.
-     * It is executed during the Task execute to achieve
-     * the relevant action.
-     * @param repository
-     * @throws ScmException
-     */
-    public abstract void execute(ScmRepository repository) throws ScmException;
-}
--- a/buildframework/helium/external/helium-antlib/scm/src/com/nokia/helium/scm/ant/taskdefs/ScmTask.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,249 +0,0 @@
-/*
- * Copyright (c) 2007-2008 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:  
- *
- */
-
-package com.nokia.helium.scm.ant.taskdefs;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.apache.maven.scm.manager.NoSuchScmProviderException;
-import org.apache.maven.scm.manager.ScmManager;
-import org.apache.maven.scm.repository.ScmRepository;
-import org.apache.maven.scm.repository.ScmRepositoryException;
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Task;
-
-import com.nokia.maven.scm.manager.BasicExtendedScmManager;
-import com.nokia.maven.scm.manager.ExtendedScmManager;
-import com.nokia.maven.scm.provider.hg.HgScmProviderExt;
-
-/**
- * This provides Ant support for a range of common SCM operations. They should work on 
- * any Maven based SCM e.g. SVN, Mercurial, synergy.  The
- * underlying SCM tool is defined by the URL format.
- *
- * <pre>
- * &lt;hlm:scm verbose="true" scmUrl="scm:hg:${pkg_detail.source}"&gt;
- *    &lt;hlm:checkout basedir="${build.drive}${pkg_detail.dst}"/&gt;
- *    &lt;hlm:tags basedir="${build.drive}${pkg_detail.dst}" reference="hg.tags.id${refid}"/&gt;
- *    &lt;hlm:update basedir="${build.drive}${pkg_detail.dst}"&gt;
- *        &lt;hlm:latestTag pattern="${pkg_detail.tag}"&gt;
- *            &lt;hlm:tagSet refid="hg.tags.id${refid}" /&gt;
- *        &lt;/hlm:latestTag&gt;
- *    &lt;/hlm:update&gt;
- * &lt;/hlm:scm&gt;
- * </pre>
- * 
- * @ant.task name="scm" category="SCM"
- */
-public class ScmTask extends Task {
-
-    private ExtendedScmManager scmManager;
-
-    private String username;
-
-    private String password;
-
-    private String scmUrl;
-
-    private String basedir;
-
-    private List<ScmAction> actions = new ArrayList<ScmAction>();
-
-    private boolean verbose;
-    
-    private boolean failonerror = true;
-    
-
-    public ScmTask() {
-        setTaskName("scm");
-
-        scmManager = new BasicExtendedScmManager();
-
-        // Add all SCM providers we want to use
-        scmManager.setScmProvider("hg", new HgScmProviderExt());
-    }
-
-    public ScmManager getScmManager() {
-        return scmManager;
-    }
-
-    /**
-     * Set if the task should use verbose output on Maven SCM framework.
-     * 
-     * @param value
-     * @ant.not-required Default is false
-     */
-    public void setVerbose(boolean value) {
-        verbose = value;
-    }
-
-    /**
-     * Set the username, this field is required while user requires to be
-     * authenticated.
-     * 
-     * @param username
-     *            The user login
-     * @ant.not-required
-     */
-    public void setUsername(String username) {
-        this.username = username;
-    }
-
-    /**
-     * Set the password, this field is required while user requires to be
-     * authenticated.
-     * 
-     * @param password
-     *            The user password
-     * @ant.not-required
-     */
-    public void setPassword(String password) {
-        this.password = password;
-    }
-    
-    /**
-     * Set if the build should keep going while any exception.
-     * 
-     * @param failonerror
-     * @ant.not-required Default is true
-     */
-    public void setFailonerror(boolean failonerror) {
-        this.failonerror = failonerror;
-    }
-
-    public String getScmUrl() {
-        return scmUrl;
-    }
-
-    /**
-     * Sets the SCM URL so the task knows what repository to use.
-     * 
-     * @param scmUrl
-     *            The URL to connect to
-     * @ant.required
-     */
-    public void setScmUrl(String scmUrl) {
-        this.scmUrl = scmUrl;
-    }
-
-    /**
-     * Add an SCM add action.
-     * 
-     * @param action
-     *            The add action.
-     * @ant.optional
-     */
-    public void addAdd(AddAction action) {
-        addAction(action);
-    }
-
-    public void addChangelog(ChangelogAction action) {
-        addAction(action);
-    }
-
-    public void addBranch(BranchAction action) {
-        addAction(action);
-    }
-
-    public void addCheckin(CheckinAction action) {
-        addAction(action);
-    }
-
-    public void addCheckout(CheckoutAction action) {
-        addAction(action);
-    }
-
-    public void addDiff(DiffAction action) {
-        addAction(action);
-    }
-
-    public void addRemove(RemoveAction action) {
-        addAction(action);
-    }
-
-    public void addStatus(StatusAction action) {
-        addAction(action);
-    }
-
-    public void addUpdate(UpdateAction action) {
-        addAction(action);
-    }
-
-    public ScmAction[] getActions() {
-        return (ScmAction[]) actions.toArray(new ScmAction[0]);
-    }
-
-    // Additional actions not supported by the core Maven API
-
-    public void addPull(PullAction action) {
-        addAction(action);
-    }
-
-    public void addTag(TagAction action) {
-        addAction(action);
-    }
-
-    public void addTags(TagsAction action) {
-        addAction(action);
-    }
-    
-    public void addInfo(InfoAction action) {
-        addAction(action);
-    }
-
-    public void addInit(InitAction action) {
-        addAction(action);
-    }
-
-    public void addExport(ExportAction action) {
-        addAction(action);
-    }
-
-    private void addAction(ScmAction action) {
-        action.setTask(this);
-        actions.add(action);
-    }
-
-    public void add(ScmAction action) {
-        addAction(action);
-    }
-
-    @Override
-    public final void execute() {        
-        try {
-            log("scm url: " + scmUrl);
-            ScmRepository repository = scmManager.makeScmRepository(scmUrl);
-            // Process all scm commands
-            for (ScmAction action : actions) {
-                action.execute(repository);
-            }
-        } catch (NoSuchScmProviderException ex) {
-            throw new BuildException("Could not find a provider.");
-        } catch (ScmRepositoryException ex) {
-            throw new BuildException(
-                    "Error while connecting to the repository: " + ex.getMessage());
-        } catch (Exception e) {
-          if ( failonerror ) {
-            e.printStackTrace();
-            throw new BuildException(e.getMessage());
-            }
-          else {
-            e.printStackTrace();
-            }
-        }
-    }
-}
--- a/buildframework/helium/external/helium-antlib/scm/src/com/nokia/helium/scm/ant/taskdefs/StatusAction.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-/*
- * Copyright (c) 2007-2008 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:  
- *
- */
-
-package com.nokia.helium.scm.ant.taskdefs;
-
-import org.apache.maven.scm.ScmException;
-import org.apache.maven.scm.command.status.StatusScmResult;
-import org.apache.maven.scm.manager.ScmManager;
-import org.apache.maven.scm.repository.ScmRepository;
-import org.apache.tools.ant.BuildException;
-
-/**
- * Status will execute status action on the relevant repository, and reports
- * basedir, or a specific set of file status.
- *
- * <pre>
- * &lt;hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1"&gt;
- *    &lt;hlm:status&gt;
- *       &lt;fileset dir="${repo.dir}/test1"&gt;
- *          &lt;include name="**" /&gt;
- *          &lt;exclude name="** /.${repo.type}/**" /&gt;
- *       &lt;/fileset&gt;
- *    &lt;/hlm:status&gt;
- * &lt;/hlm:scm &gt;
- * </pre>
- * 
- * @ant.type name="status" category="SCM"
- */
-public class StatusAction extends BaseDirectoryScmAction {
-
-    @Override
-    public void execute(ScmRepository repository) throws ScmException {
-        ScmManager scmManager = getTask().getScmManager();
-
-        StatusScmResult result = scmManager.status(repository, getScmFileSet());
-
-        if (!result.isSuccess()) {
-            throw new BuildException("SCM status action failed: "
-                    + result.getProviderMessage());
-        }
-    }
-
-}
--- a/buildframework/helium/external/helium-antlib/scm/src/com/nokia/helium/scm/ant/taskdefs/TagAction.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,98 +0,0 @@
-/*
- * Copyright (c) 2007-2008 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:  
- *
- */
-
-package com.nokia.helium.scm.ant.taskdefs;
-
-import java.io.File;
-
-import org.apache.maven.scm.ScmException;
-import org.apache.maven.scm.ScmFileSet;
-import org.apache.maven.scm.command.tag.TagScmResult;
-import org.apache.maven.scm.repository.ScmRepository;
-import org.apache.tools.ant.BuildException;
-
-import com.nokia.maven.scm.manager.ExtendedScmManager;
-
-/**
- * This action will tag current repository revision using a specific name.
- * 
- * <pre>
- * &lt;hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1"&gt;
- *     &lt;hlm:tag baseDir="${repo.dir}/test1" name="0.0.1" /&gt;
- * &lt;/hlm:scm&gt;
- * </pre>
- *
- * @ant.type name="tag" category="SCM"
- */
-public class TagAction extends BaseDirectoryScmAction {
-    private String name;
-    private String level = "normal";
-
-    /**
-     * String that will be used to tag the current revision.
-     * 
-     * @param name
-     *            Name of the tag
-     * @ant.required
-     */
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    /**
-     * String that will be used to determine tag types, eg. local.
-     * 
-     * @param level
-     *            Level of the tag eg.local
-     * @ant.not-required
-     */
-    public void setLevel(String level) {
-        this.level = level;
-    }
-
-    @Override
-    public void execute(ScmRepository repository) throws ScmException {
-        TagScmResult result;
-
-        if (name == null)
-            throw new BuildException("'name' attribute is not defined.");
-
-        if (getBasedir() == null)
-            throw new BuildException("'basedir' attribute is not defined.");
-
-        try {
-            ExtendedScmManager scmManager = (ExtendedScmManager) getTask()
-                    .getScmManager();
-            if (level.equals(new String("local"))) {
-                result = scmManager.tag(repository, new ScmFileSet(new File(
-                        getBasedir())), name, level);
-            } else {
-                result = scmManager.tag(repository, new ScmFileSet(new File(
-                        getBasedir())), name);
-            }
-
-            if (!result.isSuccess()) {
-                throw new BuildException("SCM tag action error: "
-                        + result.getProviderMessage());
-            }
-            getTask().log("Tag '" + name + "' has been created successfully.");
-        } catch (ScmException e) {
-            throw new BuildException("SCM tag action failed: " + e.toString());
-        }
-
-    }
-}
--- a/buildframework/helium/external/helium-antlib/scm/src/com/nokia/helium/scm/ant/taskdefs/TagsAction.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,92 +0,0 @@
-/*
- * Copyright (c) 2007-2008 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:  
- *
- */
-
-package com.nokia.helium.scm.ant.taskdefs;
-
-import java.io.File;
-import java.util.List;
-
-import org.apache.maven.scm.ScmException;
-import org.apache.maven.scm.ScmTag;
-import org.apache.maven.scm.repository.ScmRepository;
-import org.apache.tools.ant.BuildException;
-
-import com.nokia.helium.scm.ant.types.TagSet;
-import com.nokia.maven.scm.command.tags.TagsScmResult;
-import com.nokia.maven.scm.manager.ExtendedScmManager;
-
-/**
- * This action will tag current repository revision using a specific name.
- * 
- * <pre>
- * &lt;hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1"&gt;
- *     &lt;hlm:tags baseDir="${repo.dir}/test1" reference="my.tags" /&gt;
- * &lt;/hlm:scm&gt;
- * </pre>
- *
- * @ant.type name="tags" category="SCM"
- */
-public class TagsAction extends BaseDirectoryScmAction {
-
-    private String reference;
-
-    /**
-     * Defines the id of the result type generated by the query.
-     * @param reference the name of the reference to use.
-     * @ant.not-required Only log result by default.
-     */
-    public void setReference(String reference) {
-        this.reference = reference;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void execute(ScmRepository repository) throws ScmException {
-        TagsScmResult result;
-        try {
-            ExtendedScmManager scmManager = (ExtendedScmManager) getTask()
-                    .getScmManager();
-            result = scmManager.tags(repository, new File(this.getBasedir()));
-            if (!result.isSuccess()) {
-                throw new BuildException("SCM tags action error: "
-                        + result.getProviderMessage());
-            }
-
-            // Creating a TagSet
-            List<ScmTag> tags = result.getTags();
-            TagSet tagSet = new TagSet();
-            tagSet.setProject(getProject());
-            getTask().log("Tag list:");
-            for (ScmTag tag : tags) {
-                tagSet.createTag().setName(tag.getName());
-                getTask().log(" * " + tag.getName());
-            }
-            // Creating new reference
-            if (reference != null) {
-                getTask().log("Creating reference: " + reference);
-                getProject().addReference(reference, tagSet);
-            }
-
-        } catch (ScmException e) {
-            throw new BuildException("SCM tags action failed: "
-                    + e.getMessage());
-        }
-
-    }
-}
--- a/buildframework/helium/external/helium-antlib/scm/src/com/nokia/helium/scm/ant/taskdefs/UpdateAction.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,101 +0,0 @@
-/*
- * Copyright (c) 2007-2008 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:  
- *
- */
-
-package com.nokia.helium.scm.ant.taskdefs;
-
-import java.util.List;
-
-import org.apache.maven.scm.ScmException;
-import org.apache.maven.scm.ScmFile;
-import org.apache.maven.scm.ScmTag;
-import org.apache.maven.scm.command.update.UpdateScmResult;
-import org.apache.maven.scm.manager.ScmManager;
-import org.apache.maven.scm.repository.ScmRepository;
-import org.apache.tools.ant.BuildException;
-import org.apache.maven.scm.ScmRevision;
-
-import com.nokia.helium.scm.ant.types.Tag;
-import com.nokia.helium.scm.ant.types.Revision;
-
-/**
- * Update the defined project for a specific revision or tag.
- * 
- * <pre>
- * &lt;hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1"&gt;
- *     &lt;hlm:update basedir="${repo.dir}/test1" /&gt;
- * &lt;/hlm:scm&gt;
- *</pre>
- *
- * @ant.type name="update" category="SCM"
- */
-public class UpdateAction extends BaseDirectoryScmAction {
-
-    private Tag tag;
-    private Revision revision;
-
-    public void add(Tag tag) {
-        this.tag = tag;
-    }
-
-    public Tag createTag() {
-        this.tag = new Tag();
-        return this.tag;
-    }
-
-    public void add(Revision revision) {
-        this.revision = revision;
-    }
-
-    public Revision createRevision() {
-        this.revision = new Revision();
-        return this.revision;
-    }
-
-    @Override
-    @SuppressWarnings("unchecked")
-    public void execute(ScmRepository repository) throws ScmException {
-        ScmManager scmManager = getTask().getScmManager();
-
-        UpdateScmResult result;
-        try {
-            if (tag != null) {
-                result = scmManager.update(repository, getScmFileSet(),
-                        new ScmTag(tag.getName()));
-            } else if (revision != null) {
-                result = scmManager.update(repository, getScmFileSet(),
-                        new ScmRevision(revision.getName()));
-            } else {
-                result = scmManager.update(repository, getScmFileSet());
-            }
-
-            if (!result.isSuccess()) {
-                throw new BuildException("SCM update action error: "
-                        + result.getProviderMessage());
-            }
-
-            List<ScmFile> files = result.getUpdatedFiles();
-            for (ScmFile scmFile : files) {
-                getTask().log(scmFile.toString());
-            }
-        } catch (RuntimeException e) {
-            throw new BuildException("SCM update action failed: "
-                    + e.getMessage());
-        }
-
-    }
-
-}
--- a/buildframework/helium/external/helium-antlib/scm/src/com/nokia/helium/scm/ant/types/LatestTag.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,186 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-
-package com.nokia.helium.scm.ant.types;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Project;
-
-/**
- * The latestTag element will help you to find the latest revision based
- * on a pattern.
- * 
- *  <pre>
- *  &lt;latestTag name="1.0.*"&gt;
- *     &lt;tagSet id="set.of.tags"/&gt;
- *  latestTag
- *  </pre>
- * 
- * @ant.type name="latestTag" category="SCM"
- */
-public class LatestTag extends Tag {
-
-    private String pattern;
-    private List<TagSet> tagSets = new ArrayList<TagSet>();
-    
-    /**
-     * Defines the pattern.
-     * @ant.required
-     */
-    public void setPattern(String pattern) {
-        this.pattern = pattern;
-    }
-    
-    /**
-     * Add a set of release to search the latest release in.
-     * @param tagSet
-     */
-    public void add(TagSet tagSet) {
-        tagSets.add(tagSet);
-    }
-
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public String getName() {
-        if (pattern == null)
-            throw new BuildException("'pattern' attribute has not been defined.");
-
-        List<Tag> tags = getCleanedList();
-        Collections.sort(tags, new TagComparator<Tag>(getPattern()));
-        
-        if (tags.isEmpty())
-            throw new BuildException("No tag found.");
-
-        getProject().log("Latest tag: " + tags.get(0).getName());
-        return tags.get(0).getName();
-    }
-
-    /**
-     * Get a reduce set of tags, only tag matching the pattern will be
-     * included.
-     * @return the reduce list of tags.
-     */
-    protected List<Tag> getCleanedList() {
-        Pattern pVer = getPattern();
-        List<Tag> tags = new ArrayList<Tag>();
-        for (Tag tag : getTags()) {
-            if (pVer.matcher(tag.getName()).matches()) {
-                tags.add(tag);
-            }
-        }
-        return tags;
-    }
-    
-    /**
-     * Get the pattern as a regular expression.
-     * '*' will be transformed into (\d+) (which means only numbers
-     *  will be considered). Other character will be quoted.
-     * For example:
-     * 1.0.* => 1\.0\.(\d+)
-     * 
-     * @return the transformed pattern.
-     */
-    protected Pattern getPattern() {
-        // Quoting the current pattern
-        getProject().log("pattern: " + pattern, Project.MSG_DEBUG);
-        String qVer = pattern.replaceAll("([.\\:_()])", "\\\\$1");
-        getProject().log("quoted: " + qVer, Project.MSG_DEBUG);
-        // Replacing quoted \* into \d+
-        qVer = qVer.replaceAll("\\*", "(\\\\d+)");        
-        qVer = "^" + qVer + "$";
-        getProject().log("final: " + qVer, Project.MSG_DEBUG);
-        return Pattern.compile(qVer);
-    }
-    
-    /**
-     * Get the list of tags, from the tagSets. 
-     * @return a list of Tags objects.
-     */
-    protected List<Tag> getTags() {
-        List<Tag> tags = new ArrayList<Tag>();
-        for (TagSet ts : tagSets) {
-            if (ts.isReference()) {
-                ts = (TagSet)ts.getRefid().getReferencedObject(getProject());
-            }
-            for (Tag tag : ts.getTags()) {
-                tags.add(tag);
-            }
-        }
-        return tags;
-    }
-    
-    /**
-     * This class implements the comparator interface, which will help to
-     * order the tag compare to the pattern. For example:
-     * 1.0.2 > 1.0.1 (for pattern 1.0.*)
-     * 1.1.1 > 1.0.2 (for pattern 1.*.*)
-     *
-     * @param <T> A Tag kind of class.
-     */
-    public class TagComparator<T extends Tag> implements Comparator<T> {
-        
-        // Pattern to match for the comparison
-        private Pattern pVer;
-        
-        /**
-         * Configure the Comparator with the pattern.
-         * @param pattern
-         */
-        public TagComparator(Pattern pattern) {
-            pVer = pattern;
-        }
-        
-        /**
-         * {@inheritDoc}
-         */
-        @Override
-        public int compare(T o1, T o2) {
-            getProject().log("Comparing: " + o1.getName() + ">" + o2.getName(), Project.MSG_DEBUG);
-            
-            if (o1.getName().equals(o2.getName()))
-                return 0;
-            Matcher m1 = pVer.matcher(o1.getName());
-            Matcher m2 = pVer.matcher(o2.getName());
-            m1.matches();
-            m2.matches();
-            int max = (m1.groupCount() > m2.groupCount()) ? m2.groupCount() : m1.groupCount();            
-            int i = 1;
-            while (i <= max) {
-                int i1 = Integer.decode(m1.group(i)).intValue();
-                int i2 = Integer.decode(m2.group(i)).intValue();
-                getProject().log("Comparing index " + i + ": " + i1 + " < " + i2, Project.MSG_DEBUG);
-                if (i1 != i2) {
-                    return i2 - i1;
-                }
-                i++;
-            }
-            return 0;
-        }
-    }
-    
-}
--- a/buildframework/helium/external/helium-antlib/scm/src/com/nokia/helium/scm/ant/types/Revision.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-
-package com.nokia.helium.scm.ant.types;
-
-import org.apache.tools.ant.types.DataType;
-
-/**
- * The revision element store a particular revision id. 
-
- *  <pre>
- *  &lt;revision name="release_1.0" /&gt;
- *  </pre>
- *
- */
-public class Revision extends DataType {
-
-    private String name;
-    
-    /**
-    * Sets the revision name  
-     *  
-     * @param name 
-     * @ant.required 
-     */
-     
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    /**
-     * Get the revision.
-     * @return the revision.
-     */
-    public String getName() {
-        return name;
-    }
-    
-}
--- a/buildframework/helium/external/helium-antlib/scm/src/com/nokia/helium/scm/ant/types/Tag.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-
-package com.nokia.helium.scm.ant.types;
-
-import org.apache.tools.ant.types.DataType;
-
-/**
- * The tag type store the value of a desired SCM tag.
- * 
- *  <pre>
- *  &lt;tag name="release_1.0" /&gt;
- *  </pre>
- *
- */
-public class Tag extends DataType {
-
-    private String name;
-    
-    /**
-    * Sets the tag name  
-     *  
-     * @param name
-     * @ant.required 
-     */
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    /**
-     * Get the tag value.
-     * @return the tag value
-     */
-    public String getName() {
-        return name;
-    }
-    
-}
--- a/buildframework/helium/external/helium-antlib/scm/src/com/nokia/helium/scm/ant/types/TagSet.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-
-package com.nokia.helium.scm.ant.types;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.tools.ant.types.DataType;
-
-/**
- * This tagSet type is a container of tag elements.
- * 
- * Example:
- *  <pre>
- *  &lt;tagSet&gt;
- *      &lt;tag name="release_1.0" /&gt;
- *      &lt;tag name="release_1.0.1" /&gt;
- *  &lt;7tagSet&gt;
- *  </pre>
- *  
- * @ant.type name="tagSet" category="SCM"
- */
-public class TagSet extends DataType {
-
-    private List<Tag> tags = new ArrayList<Tag>();
-    
-    /**
-     * Add a Tag element.
-     * @param tag
-     */
-    public void add(Tag tag) {
-        tags.add(tag);
-    }
-    
-    /**
-     * Create and add a Taf element.
-     * @return the newly created Tag.
-     */
-    public Tag createTag() {
-        Tag tag = new Tag();
-        tags.add(tag);
-        return tag;
-    }
-
-    /**
-     * Get the list of tags.
-     * @return the list of stored tag elements.
-     */
-    public List<Tag> getTags() {
-        return new ArrayList<Tag>(tags);
-    }
-    
-}
--- a/buildframework/helium/external/helium-antlib/scm/src/com/nokia/maven/scm/command/info/AbstractInfoCommand.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
- 
-package com.nokia.maven.scm.command.info;
-
-import org.apache.maven.scm.CommandParameters;
-import org.apache.maven.scm.ScmException;
-import org.apache.maven.scm.ScmFileSet;
-import org.apache.maven.scm.command.AbstractCommand;
-import org.apache.maven.scm.provider.ScmProviderRepository;
-
-public abstract class AbstractInfoCommand extends AbstractCommand
-{
-    
-    public InfoScmResult executeCommand(ScmProviderRepository repository, ScmFileSet fileSet,
-            CommandParameters parameters) throws ScmException
-    {
-        return executeInfoCommand(repository, fileSet, parameters);
-    }
-    
-    protected abstract InfoScmResult executeInfoCommand(ScmProviderRepository repository, ScmFileSet fileSetCommand, CommandParameters parameters) throws ScmException;
-
-}
--- a/buildframework/helium/external/helium-antlib/scm/src/com/nokia/maven/scm/command/info/InfoScmResult.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-
-package com.nokia.maven.scm.command.info;
-
-import org.apache.maven.scm.ScmResult;
-
-public class InfoScmResult extends ScmResult {
-    private String scmRevision = new String();
-    
-    public InfoScmResult(String commandLine, String providerMessage,
-            String commandOutput, boolean success) {
-        super(commandLine, providerMessage, commandOutput, success);
-    }
-
-    public InfoScmResult(String commandLine, String providerMessage,
-            String commandOutput, boolean success,
-            String scmRevision) {
-        super(commandLine, providerMessage, commandOutput, success);        
-        this.scmRevision = scmRevision;
-        }
-    
-    public String getRevision() {
-        return scmRevision;
-    }
-
-}
-
--- a/buildframework/helium/external/helium-antlib/scm/src/com/nokia/maven/scm/command/init/InitScmResult.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-
-package com.nokia.maven.scm.command.init;
-
-import org.apache.maven.scm.ScmResult;
-
-/**
- * Class to store the result of the init command.  
- *
- */
-public class InitScmResult extends ScmResult {
-    
-    /**
-     * {@inheritDoc}
-     */
-    public InitScmResult(String commandLine, String providerMessage,
-            String commandOutput, boolean success) {
-        super(commandLine, providerMessage, commandOutput, success);
-    }
-}
--- a/buildframework/helium/external/helium-antlib/scm/src/com/nokia/maven/scm/command/pull/AbstractPullCommand.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
- 
-package com.nokia.maven.scm.command.pull;
-
-import org.apache.maven.scm.CommandParameter;
-import org.apache.maven.scm.CommandParameters;
-import org.apache.maven.scm.ScmException;
-import org.apache.maven.scm.ScmFileSet;
-import org.apache.maven.scm.ScmResult;
-import org.apache.maven.scm.ScmTag;
-import org.apache.maven.scm.ScmVersion;
-import org.apache.maven.scm.command.AbstractCommand;
-import org.apache.maven.scm.provider.ScmProviderRepository;
-
-/**
- * Abstract class to representing a pull command.
- * This functionality is mainly targeted for distributed 
- * repository like Git or Mercurial.  
- */
-public abstract class AbstractPullCommand extends AbstractCommand
-{
-    
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public ScmResult executeCommand(ScmProviderRepository repository, ScmFileSet fileSet,
-            CommandParameters parameters) throws ScmException
-    {
-        return executePullCommand(repository, fileSet, parameters.getScmVersion(CommandParameter.SCM_VERSION, new ScmTag("tip")));
-    }
-    
-    /**
-     * Implements the pull functionality.
-     * @param repository the reporsitory.
-     * @param fileSet
-     * @param scmVersion what revision to pull.
-     * @return
-     * @throws ScmException
-     */
-    protected abstract PullScmResult executePullCommand(ScmProviderRepository repository, ScmFileSet fileSet, ScmVersion scmVersion) throws ScmException;
-
-}
--- a/buildframework/helium/external/helium-antlib/scm/src/com/nokia/maven/scm/command/pull/PullScmResult.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
- 
-package com.nokia.maven.scm.command.pull;
-
-import org.apache.maven.scm.ScmResult;
-
-/**
- * 
- *
- */
-public class PullScmResult extends ScmResult
-{
-    public PullScmResult( String commandLine, String providerMessage, String commandOutput, boolean success )
-    {
-        super( commandLine, providerMessage, commandOutput, success );
-    }
-}
-
-
--- a/buildframework/helium/external/helium-antlib/scm/src/com/nokia/maven/scm/command/tags/AbstractTagsCommand.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
- 
-package com.nokia.maven.scm.command.tags;
-
-import org.apache.maven.scm.CommandParameters;
-import org.apache.maven.scm.ScmException;
-import org.apache.maven.scm.ScmFileSet;
-import org.apache.maven.scm.command.AbstractCommand;
-import org.apache.maven.scm.provider.ScmProviderRepository;
-
-/**
- * Abstract class representing a tags command. 
- * Tags consist in retrieving existing tags for a particular repository.
- * 
- */
-public abstract class AbstractTagsCommand extends AbstractCommand
-{
-    /**
-     * {@inheritDoc} 
-     */
-    public TagsScmResult executeCommand(ScmProviderRepository repository, ScmFileSet fileSet,
-            CommandParameters parameters) throws ScmException
-    {
-        return executeTagsCommand(repository, fileSet, parameters);
-    }
-    
-    
-    /**
-     * Execute the tags operation on the repository.
-     * @param repository the repository to use for the action
-     * @param fileSetCommand 
-     * @param parameters
-     * @return a TagsScmResult representing the output of the command.
-     * @throws ScmException
-     */
-    protected abstract TagsScmResult executeTagsCommand(ScmProviderRepository repository, ScmFileSet fileSetCommand, CommandParameters parameters) throws ScmException;
-
-}
--- a/buildframework/helium/external/helium-antlib/scm/src/com/nokia/maven/scm/command/tags/TagsScmResult.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,73 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-
-package com.nokia.maven.scm.command.tags;
-
-import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.List;
-
-import org.apache.maven.scm.ScmResult;
-import org.apache.maven.scm.ScmTag;
-
-/**
- *  Class to store the result from the tags operation.
- *
- */
-public class TagsScmResult extends ScmResult {
-    private List<ScmTag> scmVersions = new ArrayList<ScmTag>();
-
-    /**
-     * Default constructor.
-     * @param commandLine
-     * @param providerMessage
-     * @param commandOutput
-     * @param success
-     */
-    public TagsScmResult(String commandLine, String providerMessage,
-            String commandOutput, boolean success) {
-        super(commandLine, providerMessage, commandOutput, success);
-    }
-
-    /**
-     * This constructor stores also the ScmTag retrieved.
-     * @param commandLine
-     * @param providerMessage
-     * @param commandOutput
-     * @param success
-     * @param scmVersions
-     */
-    public TagsScmResult(String commandLine, String providerMessage,
-            String commandOutput, boolean success,
-            Enumeration<ScmTag> scmVersions) {
-        super(commandLine, providerMessage, commandOutput, success);
-        while (scmVersions.hasMoreElements()) {
-            ScmTag scmVersion = scmVersions.nextElement();
-            this.scmVersions.add(scmVersion);
-        }
-    }
-
-    /**
-     * Get the list of tags from the command.
-     * @return
-     */
-    public List<ScmTag> getTags() {
-        return scmVersions;
-    }
-
-}
--- a/buildframework/helium/external/helium-antlib/scm/src/com/nokia/maven/scm/manager/BasicExtendedScmManager.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,88 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-
-package com.nokia.maven.scm.manager;
-
-import java.io.File;
-
-import org.apache.maven.scm.CommandParameters;
-import org.apache.maven.scm.ScmException;
-import org.apache.maven.scm.ScmFileSet;
-import org.apache.maven.scm.manager.BasicScmManager;
-import org.apache.maven.scm.repository.ScmRepository;
-
-import com.nokia.maven.scm.command.pull.PullScmResult;
-import com.nokia.maven.scm.command.tags.TagsScmResult;
-import com.nokia.maven.scm.command.info.InfoScmResult;
-import com.nokia.maven.scm.provider.ScmProviderExt;
-
-/**
- * Extended SCM manager which implements the additional functionalities
- * defined by the ExtendedScmManager.
- *
- */
-public class BasicExtendedScmManager extends BasicScmManager implements
-        ExtendedScmManager {
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public PullScmResult pull(ScmRepository repository, File path)
-            throws ScmException {
-        try {
-            ScmProviderExt provider = (ScmProviderExt) this
-                    .getProviderByRepository(repository);
-            return provider.pull(repository, path);
-        } catch (ClassCastException exc) {
-            throw new ScmException("The " + repository.getProvider().toString()
-                    + " does not support extended functionalities.");
-        }
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public TagsScmResult tags(ScmRepository repository, File path) throws ScmException {
-        try {
-            ScmProviderExt provider = (ScmProviderExt) this
-                    .getProviderByRepository(repository);
-            return provider.tags(repository, new ScmFileSet(path), new CommandParameters());
-        } catch (ClassCastException exc) {
-            throw new ScmException("The " + repository.getProvider().toString()
-                    + " does not support extended functionalities.");
-        }
-    }
-    
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public InfoScmResult info(ScmRepository repository, File path) throws ScmException {
-        try {
-            ScmProviderExt provider = (ScmProviderExt) this
-                    .getProviderByRepository(repository);
-            return provider.info(repository, new ScmFileSet(path), new CommandParameters());
-        } catch (ClassCastException exc) {
-            throw new ScmException("The " + repository.getProvider().toString()
-                    + " does not support extended functionalities.");
-        }
-    }
-
-}
--- a/buildframework/helium/external/helium-antlib/scm/src/com/nokia/maven/scm/manager/ExtendedScmManager.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-
-package com.nokia.maven.scm.manager;
-
-import java.io.File;
-
-import org.apache.maven.scm.ScmException;
-import org.apache.maven.scm.manager.ScmManager;
-import org.apache.maven.scm.repository.ScmRepository;
-
-import com.nokia.maven.scm.command.pull.PullScmResult;
-import com.nokia.maven.scm.command.tags.TagsScmResult;
-import com.nokia.maven.scm.command.info.InfoScmResult;
-
-/**
- * Extended verison of the Maven ScmManager
- */
-public interface ExtendedScmManager extends ScmManager
-{
-    String ROLE = ExtendedScmManager.class.getName();
-
-    /**
-     * Download changes from remote repository.
-     *
-     * @param repository  the source control system
-     * @param path     location of your local copy
-     * @return
-     * @throws ScmException if any
-     */
-    PullScmResult pull(ScmRepository repository, File path)
-        throws ScmException;
-
-    /**
-     * Get the tag list.
-     *
-     * @param repository  the source control system
-     * @param path     location of your local copy
-     * @return
-     * @throws ScmException if any
-     */
-    TagsScmResult tags(ScmRepository repository, File path)
-        throws ScmException;
-
-    /**
-     * Get the global revision number for the repository.
-     *
-     * @param repository  the source control system
-     * @param path     location of your local copy
-     * @return
-     * @throws ScmException if any
-     */
-    InfoScmResult info(ScmRepository repository, File path)
-        throws ScmException;
-}
--- a/buildframework/helium/external/helium-antlib/scm/src/com/nokia/maven/scm/provider/ScmProviderExt.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,79 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-
-package com.nokia.maven.scm.provider;
-
-import java.io.File;
-
-import org.apache.maven.scm.CommandParameters;
-import org.apache.maven.scm.ScmException;
-import org.apache.maven.scm.ScmFileSet;
-import org.apache.maven.scm.ScmResult;
-import org.apache.maven.scm.repository.ScmRepository;
-
-import com.nokia.maven.scm.command.pull.PullScmResult;
-import com.nokia.maven.scm.command.tags.TagsScmResult;
-import com.nokia.maven.scm.command.info.InfoScmResult;
-
-/**
- * This interface describe additional functionalities provider could implement 
- * compare to the default ScmProvider interface
- *  
- */
-public interface ScmProviderExt {
-
-    /**
-     * Create a new repository.
-     * @param repository the repository to create.
-     * @return ScmResult result.
-     * @throws ScmException
-     */
-    ScmResult init(ScmRepository repository) throws ScmException;
-
-    /**
-     * Pull changes, this function is target for distributed SCM file Hg or Git.
-     * @param repository
-     * @param path the location of the checkout.
-     * @return a PullScmResult result object.
-     * @throws ScmException
-     */
-    PullScmResult pull(ScmRepository repository, File path)
-            throws ScmException;
-
-    /**
-     * Get a list of tags from a repository.
-     * @param repository the repository
-     * @param fileSet
-     * @param parameters
-     * @return a TagsScmResult with the list of tags if successful.
-     * @throws ScmException
-     */
-    TagsScmResult tags(ScmRepository repository, ScmFileSet fileSet, CommandParameters parameters)
-            throws ScmException;
-
-    /**
-     * Get information about current revision.
-     * @param repository
-     * @param fileSet
-     * @param parameters
-     * @return a InfoScmResult with current revision if successful.
-     * @throws ScmException
-     */
-    InfoScmResult info(ScmRepository repository, ScmFileSet fileSet, CommandParameters parameters)
-            throws ScmException;
-}
--- a/buildframework/helium/external/helium-antlib/scm/src/com/nokia/maven/scm/provider/hg/HgScmProviderExt.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,242 +0,0 @@
-/*
- * Copyright (c) 2007-2008 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:  
- *
- */
-
-package com.nokia.maven.scm.provider.hg;
-
-import java.io.File;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.List;
-
-import com.nokia.maven.scm.provider.hg.command.log.HgChangeLogCommand;
-import org.apache.maven.scm.command.changelog.ChangeLogScmResult;
-
-import org.apache.log4j.Logger;
-import org.apache.maven.scm.CommandParameters;
-import org.apache.maven.scm.ScmException;
-import org.apache.maven.scm.ScmFileSet;
-import org.apache.maven.scm.ScmResult;
-import org.apache.maven.scm.command.checkout.CheckOutScmResult;
-import org.apache.maven.scm.command.export.ExportScmResult;
-import org.apache.maven.scm.command.remove.RemoveScmResult;
-import org.apache.maven.scm.command.branch.BranchScmResult;
-import org.apache.maven.scm.command.update.UpdateScmResult;
-import org.apache.maven.scm.command.tag.TagScmResult;
-import org.apache.maven.scm.provider.ScmProviderRepository;
-import org.apache.maven.scm.provider.hg.HgScmProvider;
-import org.apache.maven.scm.repository.ScmRepository;
-import org.apache.maven.scm.repository.ScmRepositoryException;
-
-import com.nokia.maven.scm.command.pull.PullScmResult;
-import com.nokia.maven.scm.command.tags.TagsScmResult;
-import com.nokia.maven.scm.command.info.InfoScmResult;
-import com.nokia.maven.scm.provider.ScmProviderExt;
-import com.nokia.maven.scm.provider.hg.command.init.HgInitCommand;
-import com.nokia.maven.scm.provider.hg.command.pull.HgPullCommand;
-import com.nokia.maven.scm.provider.hg.command.remove.HgRemoveCommand;
-import com.nokia.maven.scm.provider.hg.command.tags.HgTagsCommand;
-import com.nokia.maven.scm.provider.hg.command.info.HgInfoCommand;
-import com.nokia.maven.scm.provider.hg.command.update.HgUpdateCommand;
-import com.nokia.maven.scm.provider.hg.command.checkout.HgCheckOutCommand;
-import com.nokia.maven.scm.provider.hg.command.export.HgExportCommand;
-import com.nokia.maven.scm.provider.hg.command.branch.HgBranchCommand;
-import com.nokia.maven.scm.provider.hg.command.tag.HgTagCommand;
-import com.nokia.maven.scm.provider.hg.repository.HgScmProviderRepository;
-
-public class HgScmProviderExt extends HgScmProvider implements ScmProviderExt {
-
-    private static Logger log = Logger.getLogger(HgScmProviderExt.class);
-    
-    public ScmResult init(ScmRepository repository) throws ScmException {
-        log.info("HgScmProviderExt.init()");
-
-        HgInitCommand command = new HgInitCommand();
-
-        return command.executeInitCommand(repository.getProviderRepository());
-    }
-
-    @Override
-    public CheckOutScmResult checkout(ScmProviderRepository repository,
-            ScmFileSet fileSet, CommandParameters parameters)
-            throws ScmException {
-
-        HgCheckOutCommand command = new HgCheckOutCommand();
-        command.setLogger(getLogger());
-        return (CheckOutScmResult) command.executeCommand(repository, fileSet,
-                parameters);
-    }
-
-    @Override
-    public ChangeLogScmResult changelog(ScmProviderRepository repository,
-            ScmFileSet fileSet, CommandParameters parameters)
-            throws ScmException {
-
-        HgChangeLogCommand command = new HgChangeLogCommand();
-        command.setLogger(getLogger());
-        return (ChangeLogScmResult) command.executeCommand(repository, fileSet,
-                parameters);
-    }
-
-    public PullScmResult pull(ScmRepository repository, File path)
-            throws ScmException {
-        HgPullCommand command = new HgPullCommand();
-        command.setLogger(getLogger());
-        return (PullScmResult) command.executeCommand(repository
-                .getProviderRepository(), new ScmFileSet(path),
-                new CommandParameters());
-    }
-
-    @Override
-    public UpdateScmResult update(ScmProviderRepository repository,
-            ScmFileSet fileSet, CommandParameters parameters)
-            throws ScmException {
-        HgUpdateCommand command = new HgUpdateCommand();
-        command.setLogger(getLogger());
-        return (UpdateScmResult) command.executeCommand(repository, fileSet,
-                parameters);
-    }
-
-    public TagsScmResult tags(ScmRepository repository, ScmFileSet fileSet,
-            CommandParameters parameters) throws ScmException {
-        HgTagsCommand command = new HgTagsCommand();
-        command.setLogger(getLogger());
-        return (TagsScmResult) command.executeCommand(repository
-                .getProviderRepository(), fileSet, parameters);
-    }
-    
-    public InfoScmResult info(ScmRepository repository, ScmFileSet fileSet,
-            CommandParameters parameters) throws ScmException {
-        HgInfoCommand command = new HgInfoCommand();
-        command.setLogger(getLogger());
-        return (InfoScmResult) command.executeCommand(repository
-                .getProviderRepository(), fileSet, parameters);
-    }
-
-    @Override
-    public RemoveScmResult remove(ScmProviderRepository repository,
-            ScmFileSet fileSet, CommandParameters parameters)
-            throws ScmException {
-        HgRemoveCommand command = new HgRemoveCommand();
-        command.setLogger(getLogger());
-        return (RemoveScmResult) command.execute(repository, fileSet,
-                parameters);
-    }
-
-    protected BranchScmResult branch(ScmProviderRepository repository,
-            ScmFileSet fileSet, CommandParameters parameters)
-            throws ScmException {
-        HgBranchCommand command = new HgBranchCommand();
-        command.setLogger(getLogger());
-        return (BranchScmResult) command.execute(repository, fileSet,
-                parameters);
-    }
-
-    protected ExportScmResult export(ScmProviderRepository repository,
-            ScmFileSet fileSet, CommandParameters parameters)
-            throws ScmException {
-        HgExportCommand command = new HgExportCommand();
-        command.setLogger(getLogger());
-        return (ExportScmResult) command.execute(repository, fileSet,
-                parameters);
-    }
-
-    @Override
-    public TagScmResult tag(ScmProviderRepository repository,
-            ScmFileSet fileSet, CommandParameters parameters)
-            throws ScmException {
-        HgTagCommand command = new HgTagCommand();
-        command.setLogger(getLogger());
-        return (TagScmResult) command.execute(repository, fileSet, parameters);
-    }
-
-    /* From official implementation */
-    private final class HgUrlParserResult {
-        private List<String> messages = new ArrayList<String>();
-        private ScmProviderRepository repository;
-        
-        public List<String> getMessages() {
-            return messages;
-        }
-        
-        public void setMessages(List<String> messages) {
-            this.messages = messages;
-        }
-        
-        public ScmProviderRepository getRepository() {
-            return repository;
-        }
-        
-        public void setRepository(ScmProviderRepository repository) {
-            this.repository = repository;
-        }
-        
-    }
-
-    private HgUrlParserResult parseScmUrl(String scmSpecificUrl) {
-        HgUrlParserResult result = new HgUrlParserResult();
-
-        URL url = null;
-        log.debug("HgScmProviderExt:parseScmUrl:" + scmSpecificUrl);
-        // try if it is an URL
-        try {
-            url = new URL(scmSpecificUrl);
-            HgScmProviderRepository repo = new HgScmProviderRepository(
-                    "file://localhost/");
-            repo.configure(url);
-            result.repository = repo;
-        } catch (MalformedURLException e) {
-            log.debug("HgScmProviderExt:parseScmUrl:MalformedURLException:"
-                    + e.getMessage());
-            // if the url is invalid then try a simple file. 
-            try {
-                result.setRepository(new HgScmProviderRepository(scmSpecificUrl));
-            } catch (Throwable et) {
-                log.debug("HgScmProviderExt:parseScmUrl:Throwable:"
-                        + et.getMessage());
-                result.getMessages().add("The filename provided is not valid: "
-                        + et.getMessage());
-                return result;
-            }
-        }
-        return result;
-    }
-
-    /**
-     * Overriding default implementation.
-     */
-    public List<String> validateScmUrl(String scmSpecificUrl, char delimiter) {
-        HgUrlParserResult result = parseScmUrl(scmSpecificUrl);
-        return result.messages;
-    }
-
-    /**
-     * Overriding default implementation.
-     */
-    public ScmProviderRepository makeProviderScmRepository(
-            String scmSpecificUrl, char delimiter)
-            throws ScmRepositoryException {
-        HgUrlParserResult result = parseScmUrl(scmSpecificUrl);
-
-        if (result.messages.size() > 0) {
-            throw new ScmRepositoryException("The scm url is invalid.",
-                    result.messages);
-        }
-        return result.repository;
-    }
-
-}
--- a/buildframework/helium/external/helium-antlib/scm/src/com/nokia/maven/scm/provider/hg/VersionChangeSet.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,176 +0,0 @@
-/*
- * Copyright (c) 2007-2008 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:  
- *
- */
- 
-package com.nokia.maven.scm.provider.hg;
-
-
-import org.apache.maven.scm.ChangeSet;
-import org.apache.maven.scm.ScmVersion;
-import org.apache.maven.scm.ScmException;
-import org.apache.maven.scm.ChangeFile;
-
-import java.util.ArrayList;
-import java.util.List;
-
-
-public class VersionChangeSet extends ChangeSet
-{
-
-    private static final String DATE_PATTERN = "yyyy-MM-dd";
-    private static final String TIME_PATTERN = "HH:mm:ss";
-    private List<ScmVersion> scmVersionList;
-
-    /**
-     * Constructor used when attributes aren't available until later
-     */
-    public VersionChangeSet()
-    {
-        super();
-        scmVersionList = new ArrayList<ScmVersion>();
-    }
-
-    /**
-    * Setter for ScmVersion
-    */
-    public void setScmVersion(ScmVersion scmVersion) throws ScmException
-    {
-        scmVersionList.add(scmVersion);
-    }
-    
-    /**
-     * Getter for ChangeFile list.
-     *
-     * @return List of ScmVersion list.
-    */
-    public List<ScmVersion> getScmVersion()
-    {
-        return scmVersionList;
-    }
-    
-    /**
-    * Added tbranch\tag\revision and changed format to match "hg log --verbose" output. 
-    * File version has been removed, showing only file name
-    * @return String to output the VersionChangeSet result
-    */
-    @SuppressWarnings("unchecked")
-    @Override
-    public String toString()
-    {
-        String result = "";
-        for (ScmVersion versions : getScmVersion()) {
-           if (!versions.getName().equals("")) 
-           {
-               result += versions.getType().toLowerCase() + ":" + versions.getName() + "\n";
-            }
-        }
-        if (getAuthor() != null)
-            result += "user:" + getAuthor() + "\n";
-        if (getDate() != null)
-            result += "date:" + getDate() + "\n";
-        List<ChangeFile> files = getFiles();
-        if ( files.size() != 0 )
-        {
-            result += "files:";
-            for ( ChangeFile changeFile : files )
-            {
-                result += changeFile.getName() + " ";
-            }
-        }
-        if (!getComment().equals(""))
-            result += "\ndescription:" + getComment() + "\n";
-        return result;
-    }
-    
-     /**
-     * Provide the changelog entry as an XML snippet.
-     *
-     * @return a changelog-entry in xml format
-     * @task make sure comment doesn't contain CDATA tags - MAVEN114
-     */
-
-    @SuppressWarnings("unchecked")
-    @Override
-    public String toXML()
-    {
-        StringBuffer buffer = new StringBuffer();
-
-        buffer.append( "\t<changelog-entry>\n" );
-
-        if ( getDate() != null )
-        {
-            buffer.append( "\t\t<date pattern=\"" + getDateFormatted() + "\">" )
-                .append( getDateFormatted() )
-                .append( "</date>\n" )
-                .append( "\t\t<time pattern=\"" + TIME_PATTERN + "\">" )
-                .append( getTimeFormatted() )
-                .append( "</time>\n" );
-        }
-
-        for (ScmVersion versions : getScmVersion()) {
-           if (!versions.getName().equals("")) 
-           {
-               buffer.append("\t\t<" + versions.getType().toLowerCase() + ">\n")
-                     .append("\t\t\t<name>")
-                     .append(versions.getName())
-                     .append("</name>\n");
-               buffer.append("\t\t</" + versions.getType().toLowerCase() + ">\n");
-            }
-        }
-
-        buffer.append( "\t\t<author><![CDATA[" )
-            .append( getAuthor() )
-            .append( "]]></author>\n" );
-        
-        List<ChangeFile> changeFiles = getFiles();
-        for ( ChangeFile changeFile :  changeFiles)
-        {
-            buffer.append( "\t\t<file>\n" )
-                .append( "\t\t\t<name>" )
-                .append( escapeValue( changeFile.getName() ) )
-                .append( "</name>\n" )
-                .append( "\t\t\t<revision>" )
-                .append( changeFile.getRevision() )
-                .append( "</revision>\n" );
-            buffer.append( "\t\t</file>\n" );
-        }
-        buffer.append( "\t\t<msg><![CDATA[" )
-            .append( removeCDataEnd( getComment() ) )
-            .append( "]]></msg>\n" );
-        buffer.append( "\t</changelog-entry>\n" );
-
-        return buffer.toString();
-    }
-
-     /**
-     * remove a <code>]]></code> from comments (replace it with <code>] ] ></code>).
-     *
-     * @param message The message to modify
-     * @return a clean string
-     */
-
-    private String removeCDataEnd( String message )
-    {
-        // check for invalid sequence ]]>
-        int endCdata;
-        while ( message != null && ( message.indexOf( "]]>" ) ) > -1 )
-        {
-            endCdata = message.indexOf( "]]>" );
-            message = message.substring( 0, endCdata ) + "] ] >" + message.substring( endCdata + 3, message.length() );
-        }
-        return message;
-    }
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/scm/src/com/nokia/maven/scm/provider/hg/command/branch/HgBranchCommand.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-package com.nokia.maven.scm.provider.hg.command.branch;
-
-import org.apache.maven.scm.ScmException;
-import org.apache.maven.scm.ScmFileSet;
-import org.apache.maven.scm.ScmResult;
-import org.apache.maven.scm.command.branch.AbstractBranchCommand;
-import org.apache.maven.scm.command.branch.BranchScmResult;
-import org.apache.maven.scm.provider.ScmProviderRepository;
-import org.apache.maven.scm.provider.hg.HgUtils;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Branch command to create a new branch
- */
-public class HgBranchCommand
-    extends AbstractBranchCommand    
-{
-    /** {@inheritDoc} */
-    protected ScmResult executeBranchCommand( ScmProviderRepository repository, ScmFileSet fileSet, String name, String message )
-        throws ScmException
-    {
-        // Create command
-        File workingDir = fileSet.getBasedir();
-        List<String> branchCmd = new ArrayList<String>();
-        
-        //branch command
-        branchCmd.add("branch");
-        branchCmd.add(name);
-        
-        ScmResult branchResult = HgUtils.execute(workingDir, branchCmd.toArray(new String[branchCmd.size()]));
-
-        return new BranchScmResult(branchResult.getCommandLine(),
-                    branchResult.getProviderMessage(), branchResult
-                            .getCommandOutput(), branchResult.isSuccess());
-    }
-}
--- a/buildframework/helium/external/helium-antlib/scm/src/com/nokia/maven/scm/provider/hg/command/checkout/HgCheckOutCommand.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-
-package com.nokia.maven.scm.provider.hg.command.checkout;
-
-import org.apache.maven.scm.provider.ScmProviderRepository;
-import org.apache.maven.scm.ScmFileSet;
-import org.apache.maven.scm.command.checkout.CheckOutScmResult;
-import org.apache.maven.scm.ScmResult;
-import org.apache.maven.scm.ScmVersion;
-import org.apache.maven.scm.ScmException;
-
-/**
- */
-public class HgCheckOutCommand
-    extends org.apache.maven.scm.provider.hg.command.checkout.HgCheckOutCommand
-{
-    /** {@inheritDoc} */
-    protected CheckOutScmResult executeCheckOutCommand( ScmProviderRepository repo, ScmFileSet fileSet,
-                                                        ScmVersion scmVersion )
-        throws ScmException
-    {
-           CheckOutScmResult result = super.executeCheckOutCommand(repo, fileSet, scmVersion);
-           if (result.getCheckedOutFiles().size() == 0 && !result.isSuccess() && result.getProviderMessage().contains("locate failed with exit code: 1.")) {
-               getLogger().info("Fixing locate calls which returns 1 when no files are found.");
-               result = new CheckOutScmResult(result.getCheckedOutFiles(), new ScmResult(result.getCommandLine(), result.getProviderMessage(), result.getCommandOutput(), true));
-           }
-           return result;
-    }
-       
-}
--- a/buildframework/helium/external/helium-antlib/scm/src/com/nokia/maven/scm/provider/hg/command/export/HgExportCommand.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,94 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-
-package com.nokia.maven.scm.provider.hg.command.export;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.maven.scm.ScmException;
-import org.apache.maven.scm.ScmFileSet;
-import org.apache.maven.scm.ScmResult;
-import org.apache.maven.scm.ScmVersion;
-import org.apache.maven.scm.command.export.AbstractExportCommand;
-import org.apache.maven.scm.command.export.ExportScmResult;
-import org.apache.maven.scm.provider.ScmProviderRepository;
-import org.apache.maven.scm.provider.hg.HgUtils;
-
-/**
- * Implements the export command base on the Mercurial archiving functionality.
- *
- */
-public class HgExportCommand extends AbstractExportCommand {
-    @Override
-    protected ExportScmResult executeExportCommand(
-            ScmProviderRepository repository, ScmFileSet fileSet,
-            ScmVersion version, String outputDir) throws ScmException {
-        File workingDir = fileSet.getBasedir();
-        File outputDirFile = new File(outputDir);
-        if (!outputDirFile.isDirectory()) {
-            throw new ScmException("Could not find directory: " + outputDirFile);
-        }
-        if (outputDirFile.list().length > 0) {
-            throw new ScmException("Output directory must be empty.");
-        }
-
-        // Create command
-        List<String> exportCmd = new ArrayList<String>();
-        exportCmd.add("archive");
-        exportCmd.add("--no-decode");
-        exportCmd.add("-t");
-        exportCmd.add("files");
-
-        // Which revision
-        exportCmd.add("-r");
-        exportCmd.add((version != null) ? version.getName() : "tip");
-
-        // Target dir
-        exportCmd.add(outputDirFile.getAbsolutePath());
-
-        getLogger().debug(
-                "hg:export:workingDir: " + workingDir.getAbsolutePath());
-        getLogger().debug(
-                "hg:export:outputDir: " + outputDirFile.getAbsolutePath());
-        ScmResult exportResult = HgUtils.execute(workingDir, exportCmd
-                .toArray(new String[exportCmd.size()]));
-
-        if (!exportResult.isSuccess()) {
-            return new ExportScmResult(exportResult.getCommandLine(),
-                    exportResult.getProviderMessage(), exportResult
-                            .getCommandOutput(), exportResult.isSuccess());
-        }
-
-        return new ExportScmResult(exportResult.getCommandLine(),
-                getFiles(outputDirFile));
-    }
-
-    protected List<String> getFiles(File dir) {
-        List<String> files = new ArrayList<String>();
-        for (File f : dir.listFiles()) {
-            if (f.isFile()) {
-                files.add(f.getAbsolutePath());
-            } else if (f.isDirectory()) {
-                files.addAll(getFiles(f));
-            }
-        }
-        return files;
-    }
-}
--- a/buildframework/helium/external/helium-antlib/scm/src/com/nokia/maven/scm/provider/hg/command/info/HgInfoCommand.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-
-package com.nokia.maven.scm.provider.hg.command.info;
-
-import java.io.File;
-
-import org.apache.maven.scm.CommandParameters;
-import org.apache.maven.scm.ScmException;
-import org.apache.maven.scm.ScmFileSet;
-import org.apache.maven.scm.ScmResult;
-import org.apache.maven.scm.provider.ScmProviderRepository;
-import org.apache.maven.scm.provider.hg.HgUtils;
-import org.apache.maven.scm.provider.hg.command.HgCommandConstants;
-
-import com.nokia.maven.scm.command.info.AbstractInfoCommand;
-import com.nokia.maven.scm.command.info.InfoScmResult;
-
-public class HgInfoCommand extends AbstractInfoCommand
-{
-    @Override
-    protected InfoScmResult executeInfoCommand(ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters) throws ScmException {
-
-        File workingDir = fileSet.getBasedir();
-        // Update branch
-        String[] updateCmd = new String[] {
-            HgCommandConstants.REVNO_CMD
-        };
-        
-        HgInfoConsumer consumer = new HgInfoConsumer( getLogger() );
-        
-        ScmResult infoResult = HgUtils.execute(consumer , getLogger(), workingDir, updateCmd );
-
-        if ( !infoResult.isSuccess() )
-        {
-            return new InfoScmResult(infoResult.getCommandLine(), infoResult.getProviderMessage(), infoResult.getCommandOutput(), infoResult.isSuccess() );
-        }
-        
-        this.getLogger().info(infoResult.getCommandOutput());
-        return new InfoScmResult(infoResult.getCommandLine(), infoResult.getProviderMessage(), infoResult.getCommandOutput(), infoResult.isSuccess(), consumer.getRevision());
-        
-    }
-}
-
-
--- a/buildframework/helium/external/helium-antlib/scm/src/com/nokia/maven/scm/provider/hg/command/info/HgInfoConsumer.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-package com.nokia.maven.scm.provider.hg.command.info;
-
-import org.apache.maven.scm.provider.hg.command.HgConsumer;
-import org.apache.maven.scm.log.ScmLogger;
-import org.apache.maven.scm.ScmFileStatus;
-
-public class HgInfoConsumer
-    extends HgConsumer
-{
-    private String scmRevision = new String();
-    public HgInfoConsumer( ScmLogger logger )
-    {
-        super( logger );
-    }
-
-    /** {@inheritDoc} */
-    public void doConsume( ScmFileStatus status, String trimmedLine )
-    {
-        String[] tagging = trimmedLine.split(" ");
-        if (tagging.length == 2) {
-            this.scmRevision = tagging[0];            
-            }
-    }
-    
-    public String getRevision()
-    {
-        return scmRevision;
-    }
-}
--- a/buildframework/helium/external/helium-antlib/scm/src/com/nokia/maven/scm/provider/hg/command/init/HgInitCommand.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,74 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-
-package com.nokia.maven.scm.provider.hg.command.init;
-
-import java.io.File;
-
-import org.apache.log4j.Logger;
-import org.apache.maven.scm.CommandParameters;
-import org.apache.maven.scm.ScmException;
-import org.apache.maven.scm.ScmFileSet;
-import org.apache.maven.scm.ScmResult;
-import org.apache.maven.scm.command.AbstractCommand;
-import org.apache.maven.scm.command.Command;
-import org.apache.maven.scm.provider.ScmProviderRepository;
-import org.apache.maven.scm.provider.hg.HgUtils;
-import org.apache.maven.scm.provider.hg.command.HgCommandConstants;
-import com.nokia.maven.scm.provider.hg.repository.HgScmProviderRepository;
-
-import com.nokia.maven.scm.command.init.InitScmResult;
-
-public class HgInitCommand extends AbstractCommand implements Command {
-    
-    private static Logger log = Logger.getLogger(HgInitCommand.class);
-
-    @Override
-    protected ScmResult executeCommand(ScmProviderRepository repository,
-            ScmFileSet basedir, CommandParameters args) throws ScmException {
-        return executeInitCommand(repository);
-    }
-
-    public InitScmResult executeInitCommand(ScmProviderRepository repository)
-            throws ScmException {
-        // Get the directory in which to create a new repository. Only local
-        // filesystems supported.
-        log.info("executeInitCommand: " + repository);
-        HgScmProviderRepository hgRepo = (HgScmProviderRepository) repository;
-        String uri = hgRepo.getURI();
-        log.info(uri);
-        File hgRepoDir = new File(uri);
-        File hgRepoRootDir = hgRepoDir.getParentFile();
-
-        if (!hgRepoRootDir.exists()) {
-            boolean workingDirReady = hgRepoRootDir.mkdirs();
-            if (!workingDirReady) {
-                throw new ScmException("Could not initiate test branch at: "
-                        + hgRepoRootDir);
-            }
-        }
-
-        // Create and run the command
-        String[] initCmd = new String[] { HgCommandConstants.INIT_CMD, hgRepoDir.getName()};
-        ScmResult result = HgUtils.execute(hgRepoRootDir, initCmd);
-        return new InitScmResult(result.getCommandLine(),
-                result.getProviderMessage(),
-                result.getCommandOutput(),
-                result.isSuccess());
-    }
-}
--- a/buildframework/helium/external/helium-antlib/scm/src/com/nokia/maven/scm/provider/hg/command/log/HgChangeLogCommand.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,95 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-package com.nokia.maven.scm.provider.hg.command.log;
-
-
-import com.nokia.maven.scm.provider.hg.VersionChangeSet;
-
-import org.apache.maven.scm.ScmBranch;
-import org.apache.maven.scm.ScmVersion;
-import org.apache.maven.scm.ScmException;
-import org.apache.maven.scm.ScmFileSet;
-import org.apache.maven.scm.ScmResult;
-import org.apache.maven.scm.command.Command;
-import org.apache.maven.scm.command.changelog.AbstractChangeLogCommand;
-import org.apache.maven.scm.command.changelog.ChangeLogScmResult;
-import org.apache.maven.scm.command.changelog.ChangeLogSet;
-import org.apache.maven.scm.provider.ScmProviderRepository;
-import org.apache.maven.scm.provider.hg.HgUtils;
-import org.apache.maven.scm.provider.hg.command.HgCommandConstants;
-
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-
-
-public class HgChangeLogCommand
-    extends AbstractChangeLogCommand
-    implements Command
-{
-    /** {@inheritDoc} */
-    @SuppressWarnings("unchecked")
-    @Override
-    protected ChangeLogScmResult executeChangeLogCommand( ScmProviderRepository scmProviderRepository,
-                                                          ScmFileSet fileSet, Date startDate, Date endDate,
-                                                          ScmBranch branch, String datePattern )
-        throws ScmException
-    {
-        String[] cmd = new String[] { HgCommandConstants.LOG_CMD, HgCommandConstants.VERBOSE_OPTION };
-        com.nokia.maven.scm.provider.hg.command.log.HgChangeLogConsumer consumer = new com.nokia.maven.scm.provider.hg.command.log.HgChangeLogConsumer( getLogger(), datePattern );
-        ScmResult result = HgUtils.execute( consumer, getLogger(), fileSet.getBasedir(), cmd );
-
-        List<VersionChangeSet> logEntries = consumer.getModifications();
-        List<VersionChangeSet> inRangeAndValid = new ArrayList<VersionChangeSet>();
-        startDate = startDate == null ? new Date( 0 ) : startDate; // From 1. Jan 1970
-        endDate = endDate == null ? new Date() : endDate; // Upto now
-
-        for ( VersionChangeSet logEntry : logEntries )
-        {
-            if ( logEntry.getFiles().size() > 0 )
-            {
-                if ( !logEntry.getDate().before( startDate ) && !logEntry.getDate().after( endDate ) )
-                {
-                    inRangeAndValid.add( logEntry );
-                }
-            }
-        }
-
-        ChangeLogSet changeLogSet = new ChangeLogSet( inRangeAndValid, startDate, endDate );
-        return new ChangeLogScmResult( changeLogSet, result );
-    }
-    
-    /** {@inheritDoc} */
-    @SuppressWarnings("unchecked")
-    @Override
-    protected ChangeLogScmResult executeChangeLogCommand( ScmProviderRepository repository, ScmFileSet fileSet,
-                                                      ScmVersion startVersion, ScmVersion endVersion,
-                                                      String datePattern )
-        throws ScmException
-    {
-        String param = "" + startVersion.getName() + ":" + ((endVersion.getName() != null) ? endVersion.getName() : "");
-        String[] cmd = new String[] { HgCommandConstants.LOG_CMD, HgCommandConstants.VERBOSE_OPTION, HgCommandConstants.REVISION_OPTION, param};
-        com.nokia.maven.scm.provider.hg.command.log.HgChangeLogConsumer consumer = new com.nokia.maven.scm.provider.hg.command.log.HgChangeLogConsumer( getLogger(), datePattern );
-        ScmResult result = HgUtils.execute( consumer, getLogger(), fileSet.getBasedir(), cmd );
-        List<VersionChangeSet> logEntries = consumer.getModifications();
-        Date startDate = new Date( 0 ); // From 1. Jan 1970
-        Date endDate = new Date(); // Upto now
-        ChangeLogSet changeLogSet = new ChangeLogSet(logEntries,startDate,endDate);
-        return new ChangeLogScmResult( changeLogSet, result );
-    }
-}
--- a/buildframework/helium/external/helium-antlib/scm/src/com/nokia/maven/scm/provider/hg/command/log/HgChangeLogConsumer.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,214 +0,0 @@
-/*
- * Copyright (c) 2007-2008 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:  
- *
- */
-
-package com.nokia.maven.scm.provider.hg.command.log;
-
-import com.nokia.maven.scm.provider.hg.VersionChangeSet;
-
-import org.apache.maven.scm.ScmException;
-import org.apache.maven.scm.ScmTag;
-import org.apache.maven.scm.ScmBranch;
-import org.apache.maven.scm.ScmRevision;
-import org.apache.maven.scm.ChangeFile;
-import org.apache.maven.scm.ScmFileStatus;
-import org.apache.maven.scm.log.ScmLogger;
-import org.apache.maven.scm.provider.hg.command.HgConsumer;
-
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.text.SimpleDateFormat;
-
-public class HgChangeLogConsumer extends HgConsumer {
-
-    private static final String TIME_PATTERN = "EEE MMM dd HH:mm:ss yyyy Z";
-
-    private static final String REVNO_TAG = "changeset: ";
-
-    private static final String TAG_BRANCH = "branch: ";
-
-    private static final String TAG_TAG = "tag: ";
-
-    private static final String AUTHOR_TAG = "user: ";
-
-    private static final String TIME_STAMP_TOKEN = "date: ";
-
-    private static final String MESSAGE_TOKEN = "description:";
-
-    private static final String MERGED_TOKEN = "merged: ";
-
-    private static final String FILES_TOKEN = "files: ";
-
-    private String prevLine = "";
-
-    private String prevPrevLine = "";
-
-    private ArrayList<VersionChangeSet> logEntries = new ArrayList<VersionChangeSet>();
-
-    private VersionChangeSet currentChange;
-
-    private VersionChangeSet lastChange;
-
-    private boolean isMergeEntry;
-
-    private String currentRevision;
-
-    private String currentTag; // don't know what to do with this
-
-    private String currentBranch;
-
-    private String userDatePattern;
-
-    private boolean spoolingComments;
-
-    private List<String> currentComment;
-
-    public HgChangeLogConsumer(ScmLogger logger, String userDatePattern) {
-        super(logger);
-        this.userDatePattern = userDatePattern;
-    }
-
-    public List<VersionChangeSet> getModifications() {
-        return logEntries;
-    }
-
-    /** {@inheritDoc} */
-    public void consumeLine(String line) {
-
-        // override default behavior which tries to pick through things for
-        // some standard messages. that
-        // does not apply here
-        doConsume(null, line);
-    }
-
-    /** {@inheritDoc} */
-    public void doConsume(ScmFileStatus status, String line) {
-        String tmpLine = line;
-        // If current status == null then this is a new entry
-        // If the line == "" and previous line was "", then this is also a new
-        // entry
-        if ((line.equals("") && (prevLine.equals("") && prevPrevLine.equals("")))
-                || currentComment == null) {
-            if (currentComment != null) {
-                StringBuffer comment = new StringBuffer();
-                int i = 0;
-                for (String eachComment : currentComment) {
-                    comment.append(eachComment);
-                    if (i + 1 < currentComment.size() - 1) {
-                        comment.append('\n');
-                    }
-                    i += 1;
-                }
-                currentChange.setComment(comment.toString());
-            }
-
-            spoolingComments = false;
-
-            // If last entry was part a merged entry
-            if (isMergeEntry && lastChange != null) {
-                String comment = lastChange.getComment();
-                comment += "\n[MAVEN]: Merged from "
-                        + currentChange.getAuthor();
-                comment += "\n[MAVEN]:    " + currentChange.getDateFormatted();
-                comment += "\n[MAVEN]:    " + currentChange.getComment();
-                lastChange.setComment(comment);
-            }
-
-            // Init a new changeset
-            currentChange = new VersionChangeSet();
-            currentChange.setFiles(new ArrayList<ChangeFile>());
-            logEntries.add(currentChange);
-
-            // Reset member vars
-            currentComment = new ArrayList<String>();
-            currentRevision = "";
-            isMergeEntry = false;
-        }
-
-        if (spoolingComments) {
-            currentComment.add(line);
-        } else if (line.startsWith(MESSAGE_TOKEN)) {
-            spoolingComments = true;
-        } else if (line.startsWith(MERGED_TOKEN)) {
-            // This is part of lastChange and is not a separate log entry
-            isMergeEntry = true;
-            logEntries.remove(currentChange);
-            if (logEntries.size() > 0) {
-                lastChange = logEntries.get(logEntries
-                        .size() - 1);
-            } else {
-                getLogger().warn("First entry was unexpectedly a merged entry");
-                lastChange = null;
-            }
-        } else if (line.startsWith(REVNO_TAG)) {
-            tmpLine = line.substring(REVNO_TAG.length()).trim();
-            currentRevision = tmpLine;
-            try {
-                currentChange.setScmVersion(new ScmRevision(tmpLine));
-            } catch (ScmException se) {
-                getLogger().warn(se.getMessage());
-            }
-        } else if (line.startsWith(TAG_TAG)) {
-            tmpLine = line.substring(TAG_TAG.length()).trim();
-            currentTag = tmpLine;
-            try {
-                currentChange.setScmVersion(new ScmTag(tmpLine));
-            } catch (ScmException se) {
-                getLogger().warn(se.getMessage());
-            }
-        } else if (line.startsWith(TAG_BRANCH)) {
-            tmpLine = line.substring(TAG_BRANCH.length()).trim();
-            currentBranch = tmpLine;
-            try {
-                currentChange.setScmVersion(new ScmBranch(tmpLine));
-            } catch (ScmException se) {
-                getLogger().warn(se.getMessage());
-            }
-        } else if (line.startsWith(AUTHOR_TAG)) {
-            tmpLine = line.substring(AUTHOR_TAG.length());
-            tmpLine = tmpLine.trim();
-            currentChange.setAuthor(tmpLine);
-        } else if (line.startsWith(TIME_STAMP_TOKEN)) {
-            tmpLine = line.substring(TIME_STAMP_TOKEN.length()).trim();
-            Date date = null;
-            try {
-                SimpleDateFormat format = new SimpleDateFormat(TIME_PATTERN);
-                date = format.parse(tmpLine);
-                currentChange.setDate(date);
-            } catch (Exception e) {
-                getLogger().warn(
-                        "Consumer Change Log Date Format not supported:"
-                                + e.getMessage());
-            }
-        } else if (line.startsWith(FILES_TOKEN)) {
-            tmpLine = line.substring(FILES_TOKEN.length()).trim();
-            String[] files = tmpLine.split(" ");
-            for (String eachFile : files) {
-                ChangeFile changeFile = new ChangeFile(eachFile, currentRevision);
-                currentChange.addFile(changeFile);
-            }
-        } else {
-            if (!line.equals("")) {
-                getLogger().warn("Could not figure out: " + line);
-            }
-        }
-
-        // record previous line
-        prevLine = line;
-        prevPrevLine = prevLine;
-    }
-}
--- a/buildframework/helium/external/helium-antlib/scm/src/com/nokia/maven/scm/provider/hg/command/pull/HgPullCommand.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-
-package com.nokia.maven.scm.provider.hg.command.pull;
-
-import java.io.File;
-
-import org.apache.maven.scm.ScmException;
-import org.apache.maven.scm.ScmFileSet;
-import org.apache.maven.scm.ScmResult;
-import org.apache.maven.scm.ScmVersion;
-import org.apache.maven.scm.provider.ScmProviderRepository;
-import org.apache.maven.scm.provider.hg.HgUtils;
-import org.apache.maven.scm.provider.hg.command.HgCommandConstants;
-import org.apache.maven.scm.provider.hg.command.HgConsumer;
-
-import com.nokia.maven.scm.command.pull.AbstractPullCommand;
-import com.nokia.maven.scm.command.pull.PullScmResult;
-
-
-public class HgPullCommand extends AbstractPullCommand
-{
-
-    @Override
-    protected PullScmResult executePullCommand(ScmProviderRepository repository,
-            ScmFileSet fileSet, ScmVersion scmVersion) throws ScmException {
-
-        File workingDir = fileSet.getBasedir();
-
-        // Update branch
-        String[] updateCmd = new String[] {
-            HgCommandConstants.PULL_CMD,
-        };
-        ScmResult pullResult = HgUtils.execute( new HgConsumer( getLogger() ), getLogger(), workingDir, updateCmd );
-
-        if ( !pullResult.isSuccess() )
-        {
-            return new PullScmResult(pullResult.getCommandLine(), pullResult.getProviderMessage(), pullResult.getCommandOutput(), pullResult.isSuccess() );
-        }
-        
-        this.getLogger().info(pullResult.getCommandOutput());
-        return new PullScmResult(pullResult.getCommandLine(), pullResult.getProviderMessage(), pullResult.getCommandOutput(), pullResult.isSuccess() );
-    }
-}
-
-
--- a/buildframework/helium/external/helium-antlib/scm/src/com/nokia/maven/scm/provider/hg/command/remove/HgRemoveCommand.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-/* Portion Copyright (c) 2007-2008 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.*/
-
-package com.nokia.maven.scm.provider.hg.command.remove;
-
-import org.apache.maven.scm.ScmException;
-import org.apache.maven.scm.ScmFileSet;
-import org.apache.maven.scm.ScmResult;
-import org.apache.maven.scm.command.Command;
-import org.apache.maven.scm.command.remove.AbstractRemoveCommand;
-import org.apache.maven.scm.command.remove.RemoveScmResult;
-import org.apache.maven.scm.provider.ScmProviderRepository;
-import org.apache.maven.scm.provider.hg.HgUtils;
-import org.apache.maven.scm.provider.hg.command.HgCommandConstants;
-import org.apache.maven.scm.provider.hg.command.remove.HgRemoveConsumer;
-
-import java.io.File;
-
-/**
- * Branch version of the remove command, to fix the command line generation.
- */
-public class HgRemoveCommand
-    extends AbstractRemoveCommand
-    implements Command
-{
-    /** {@inheritDoc} */
-    protected ScmResult executeRemoveCommand( ScmProviderRepository repository, ScmFileSet fileSet, String message )
-        throws ScmException
-    {
-
-        String[] command = new String[] { HgCommandConstants.REMOVE_CMD };
-        command = HgUtils.expandCommandLine( command, fileSet );
-
-        File workingDir = fileSet.getBasedir();
-        HgRemoveConsumer consumer = new HgRemoveConsumer( getLogger(), workingDir );
-
-        ScmResult result = HgUtils.execute( consumer, getLogger(), workingDir, command );
-        return new RemoveScmResult( consumer.getRemovedFiles(), result );
-    }
-}
--- a/buildframework/helium/external/helium-antlib/scm/src/com/nokia/maven/scm/provider/hg/command/tag/HgTagCommand.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,137 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-/* Portion Copyright (c) 2007-2008 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.*/
-
-package com.nokia.maven.scm.provider.hg.command.tag;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.maven.scm.ScmException;
-import org.apache.maven.scm.ScmFile;
-import org.apache.maven.scm.ScmFileSet;
-import org.apache.maven.scm.ScmFileStatus;
-import org.apache.maven.scm.ScmResult;
-import org.apache.maven.scm.command.Command;
-import org.apache.maven.scm.command.tag.AbstractTagCommand;
-import org.apache.maven.scm.command.tag.TagScmResult;
-import org.apache.maven.scm.provider.ScmProviderRepository;
-import org.apache.maven.scm.provider.hg.HgUtils;
-import org.apache.maven.scm.provider.hg.command.HgCommandConstants;
-import org.apache.maven.scm.provider.hg.command.HgConsumer;
-import org.apache.maven.scm.provider.hg.command.inventory.HgListConsumer;
-import org.apache.maven.scm.provider.hg.command.tag.HgTagConsumer;
-import org.apache.maven.scm.provider.hg.repository.HgScmProviderRepository;
-import org.codehaus.plexus.util.StringUtils;
-
-/**
- * Tag
- * 
- * @author <a href="mailto:ryan@darksleep.com">ryan daum</a>
- * @version $Id: HgTagCommand.java 686566 2008-08-16 21:52:46Z olamy $
- */
-public class HgTagCommand extends AbstractTagCommand implements Command {
-    /** {@inheritDoc} */
-    @SuppressWarnings("unchecked")
-    protected ScmResult executeTagCommand(
-            ScmProviderRepository scmProviderRepository, ScmFileSet fileSet,
-            String tag, String level) throws ScmException {
-        if (tag == null || StringUtils.isEmpty(tag.trim())) {
-            throw new ScmException("tag must be specified");
-        }
-
-        if (fileSet.getFileList().size() != 0) {
-            throw new ScmException(
-                    "This provider doesn't support tagging subsets of a directory");
-        }
-
-        File workingDir = fileSet.getBasedir();
-
-        // build the command
-        String[] tagCmd;
-        if (level.equals(new String("local"))) {
-            tagCmd = new String[] { HgCommandConstants.TAG_CMD, "--local",
-                    HgCommandConstants.MESSAGE_OPTION,
-                    "[maven-scm] copy for tag " + tag, tag };
-        } else {
-            tagCmd = new String[] { HgCommandConstants.TAG_CMD,
-                    HgCommandConstants.MESSAGE_OPTION,
-                    "[maven-scm] copy for tag " + tag, tag };
-        }
-        // keep the command about in string form for reporting
-        StringBuffer cmd = joinCmd(tagCmd);
-
-        HgTagConsumer consumer = new HgTagConsumer(getLogger());
-        ScmResult result = HgUtils.execute(consumer, getLogger(), workingDir,
-                tagCmd);
-        HgScmProviderRepository repository = (HgScmProviderRepository) scmProviderRepository;
-        if (result.isSuccess()) {
-            // now push
-            // Push to parent branch if any
-            if (!repository.getURI().equals(
-                    fileSet.getBasedir().getAbsolutePath())) {
-                String[] pushCmd = new String[] { HgCommandConstants.PUSH_CMD,
-                        repository.getURI() };
-                result = HgUtils.execute(new HgConsumer(getLogger()),
-                        getLogger(), fileSet.getBasedir(), pushCmd);
-            }
-        } else {
-            throw new ScmException("Error while executing command "
-                    + cmd.toString());
-        }
-
-        // do an inventory to return the files tagged (all of them)
-        String[] listCmd = new String[] { HgCommandConstants.INVENTORY_CMD };
-        HgListConsumer listconsumer = new HgListConsumer(getLogger());
-        result = HgUtils.execute(listconsumer, getLogger(), fileSet
-                .getBasedir(), listCmd);
-        if (result.isSuccess()) {
-            List<ScmFile> files = listconsumer.getFiles();
-            ArrayList<ScmFile> fileList = new ArrayList<ScmFile>();
-            for (ScmFile scmFile : files) {
-                
-                if (!scmFile.getPath().endsWith(".hgtags")) {
-                    fileList
-                            .add(new ScmFile(scmFile.getPath(), ScmFileStatus.TAGGED));
-                }
-            }
-
-            return new TagScmResult(fileList, result);
-        } else {
-            throw new ScmException("Error while executing command "
-                    + cmd.toString());
-        }
-    }
-
-    private StringBuffer joinCmd(String[] cmds) {
-        StringBuffer result = new StringBuffer();
-        int i = 0;
-        for (String cmd : cmds) {
-            String s = cmd;
-            result.append(s);
-            if (i < cmds.length - 1) {
-                result.append(" ");
-            }
-            i += 1;
-        }
-        return result;
-    }
-}
--- a/buildframework/helium/external/helium-antlib/scm/src/com/nokia/maven/scm/provider/hg/command/tags/HgTagsCommand.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-
-package com.nokia.maven.scm.provider.hg.command.tags;
-
-import java.io.File;
-
-import org.apache.maven.scm.CommandParameters;
-import org.apache.maven.scm.ScmException;
-import org.apache.maven.scm.ScmFileSet;
-import org.apache.maven.scm.ScmResult;
-import org.apache.maven.scm.provider.ScmProviderRepository;
-import org.apache.maven.scm.provider.hg.HgUtils;
-
-import com.nokia.maven.scm.command.tags.AbstractTagsCommand;
-import com.nokia.maven.scm.command.tags.TagsScmResult;
-
-
-public class HgTagsCommand extends AbstractTagsCommand
-{
-
-    @Override
-    protected TagsScmResult executeTagsCommand(ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters) throws ScmException {
-
-        File workingDir = fileSet.getBasedir();
-        // Update branch
-        String[] updateCmd = new String[] {
-            "tags",
-        };
-        HgTagsConsumer consumer = new HgTagsConsumer( getLogger() );
-        ScmResult tagsResult = HgUtils.execute(consumer , getLogger(), workingDir, updateCmd );
-
-        if ( !tagsResult.isSuccess() )
-        {
-            return new TagsScmResult(tagsResult.getCommandLine(), tagsResult.getProviderMessage(), tagsResult.getCommandOutput(), tagsResult.isSuccess() );
-        }
-        
-        this.getLogger().info(tagsResult.getCommandOutput());
-        return new TagsScmResult(tagsResult.getCommandLine(), tagsResult.getProviderMessage(), tagsResult.getCommandOutput(), tagsResult.isSuccess(), consumer.getTags());
-    }
-}
-
-
--- a/buildframework/helium/external/helium-antlib/scm/src/com/nokia/maven/scm/provider/hg/command/tags/HgTagsConsumer.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-package com.nokia.maven.scm.provider.hg.command.tags;
-
-import org.apache.maven.scm.provider.hg.command.HgConsumer;
-import org.apache.maven.scm.log.ScmLogger;
-import org.apache.maven.scm.ScmFileStatus;
-import org.apache.maven.scm.ScmRevision;
-import org.apache.maven.scm.ScmTag;
-
-import java.util.Enumeration;
-import java.util.Hashtable;
-
-/**
- */
-public class HgTagsConsumer
-    extends HgConsumer
-{
-
-    private Hashtable<ScmTag, ScmRevision> tagMapping = new Hashtable<ScmTag, ScmRevision>();
-
-    public HgTagsConsumer( ScmLogger logger )
-    {
-        super( logger );
-    }
-
-    /** {@inheritDoc} */
-    public void doConsume( ScmFileStatus status, String trimmedLine )
-    {
-        String[] tagging = trimmedLine.split("\\s+");
-        if (tagging.length == 2) {
-            tagMapping.put(new ScmTag( tagging[0] ), new ScmRevision( tagging[1] ));
-        }
-    }
-
-    public Enumeration<ScmTag> getTags()
-    {
-        return tagMapping.keys();
-    }
-
-    public Hashtable<ScmTag, ScmRevision> getMapping()
-    {
-        return tagMapping;
-    }
-}
--- a/buildframework/helium/external/helium-antlib/scm/src/com/nokia/maven/scm/provider/hg/command/update/HgUpdateCommand.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,102 +0,0 @@
-/*
- * Copyright (c) 2007-2008 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:  
- *
- */
-
-package com.nokia.maven.scm.provider.hg.command.update;
-
-import org.apache.maven.scm.provider.ScmProviderRepository;
-import org.apache.maven.scm.provider.hg.HgUtils;
-import org.apache.maven.scm.provider.hg.command.HgCommandConstants;
-import org.apache.maven.scm.provider.hg.command.HgConsumer;
-import org.apache.maven.scm.provider.hg.command.diff.HgDiffConsumer;
-import org.apache.maven.scm.ScmFileSet;
-import org.apache.maven.scm.command.update.UpdateScmResult;
-import org.apache.maven.scm.command.update.UpdateScmResultWithRevision;
-import org.apache.maven.scm.ScmFile;
-import org.apache.maven.scm.ScmFileStatus;
-import org.apache.maven.scm.ScmResult;
-import org.apache.maven.scm.ScmVersion;
-import org.apache.maven.scm.ScmException;
-import org.codehaus.plexus.util.StringUtils;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-import java.io.File;
-
-/**
- */
-public class HgUpdateCommand extends
-        org.apache.maven.scm.provider.hg.command.update.HgUpdateCommand {
-
-    /** {@inheritDoc} */
-    @SuppressWarnings("unchecked")
-    protected UpdateScmResult executeUpdateCommand(ScmProviderRepository repo,
-            ScmFileSet fileSet, ScmVersion tag) throws ScmException {
-        File workingDir = fileSet.getBasedir();
-
-        // Find changes from last revision
-        int previousRevision = HgUtils.getCurrentRevisionNumber(getLogger(),
-                workingDir);
-        // Update branch
-        String[] updateCmd = new String[] {
-                "update",
-                HgCommandConstants.REVISION_OPTION,
-                tag != null && !StringUtils.isEmpty(tag.getName()) ? tag
-                        .getName() : "tip" };
-        ScmResult updateResult = HgUtils.execute(new HgConsumer(getLogger()),
-                getLogger(), workingDir, updateCmd);
-
-        if (!updateResult.isSuccess()) {
-            return new UpdateScmResult(null, null, updateResult);
-        }
-
-        // Find changes from last revision
-        int currentRevision = HgUtils.getCurrentRevisionNumber(getLogger(),
-                workingDir);
-        List<ScmFile> updatedFiles = new ArrayList<ScmFile>();
-        List changes = new ArrayList();
-        String[] diffCmd = null;
-        if (currentRevision == 0) {
-            diffCmd = new String[] { HgCommandConstants.DIFF_CMD,
-                    "-c", "" + currentRevision};
-        } else {
-            diffCmd = new String[] { HgCommandConstants.DIFF_CMD,
-                    HgCommandConstants.REVISION_OPTION, "" + previousRevision,
-                    HgCommandConstants.REVISION_OPTION, "" + currentRevision};
-        }
-        HgDiffConsumer diffConsumer = new HgDiffConsumer(getLogger(),
-                    workingDir);
-        updateResult = HgUtils.execute(diffConsumer, getLogger(),
-                workingDir, diffCmd);
-
-        // Now translate between diff and update file status
-        List<ScmFile> diffFiles = diffConsumer.getChangedFiles();
-        Map diffChanges = diffConsumer.getDifferences();
-        for (ScmFile diffFile : diffFiles) {
-            changes.add(diffChanges.get(diffFile.getPath()));
-            if (diffFile.getStatus() == ScmFileStatus.MODIFIED) {
-                updatedFiles.add(new ScmFile(diffFile.getPath(), ScmFileStatus.PATCHED));
-            } else {
-                updatedFiles.add(diffFile);
-            }
-        }
-        return new UpdateScmResultWithRevision(updatedFiles, changes, String
-                .valueOf(currentRevision), updateResult);
-    }
-
-}
--- a/buildframework/helium/external/helium-antlib/scm/src/com/nokia/maven/scm/provider/hg/repository/HgScmProviderRepository.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,81 +0,0 @@
-/*
- * Copyright (c) 2007-2008 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:  
- *
- */
-package com.nokia.maven.scm.provider.hg.repository;
-
-import java.net.URL;
-
-/**
- * Custom implementation use to patch official hg implementation. It uses the
- * URL class for the URL parsing rather than using custom parsing.
- */
-public class HgScmProviderRepository extends
-        org.apache.maven.scm.provider.hg.repository.HgScmProviderRepository {
-    private URL orgUrl;
-    private String url;
-
-    /**
-     * Default constructor.
-     */
-    public HgScmProviderRepository(String url) {
-        super(url);
-        this.url = url;
-    }
-
-    /**
-     * This method is used to do the actual repository settings.
-     * 
-     * @param url
-     *            the url which points to the repo.
-     */
-    public void configure(URL url) {
-        orgUrl = url;
-        setHost(url.getHost());
-        if (url.getUserInfo() != null) {
-            String[] info = url.getUserInfo().split(":");
-            if (info.length == 2) {
-                setUser(info[0]);
-                setPassword(info[1]);
-            }
-        }
-        if (url.getPort() != -1) {
-            setPort(url.getPort());
-        }
-    }
-
-    public String getURI() {
-        return (orgUrl != null) ? orgUrl.toString() : url;
-    }
-
-    /**
-     * @return A message if the repository as an invalid URI, null if the URI
-     *         seems fine.
-     */
-    public String validateURI() {
-        return null;
-    }
-
-    /** {@inheritDoc} */
-    public String toString() {
-        if (orgUrl != null) {
-            return "Hg Repository Interpreted from: " + orgUrl + ":\nProtocol: "
-                + orgUrl.getProtocol() + "\nHost: " + getHost() + "\nPort: "
-                + getPort() + "\nUsername: " + getUser() + "\nPassword: "
-                + getPassword() + "\nPath: " + orgUrl.getPath();
-        }
-        return "Hg Repository Interpreted from: " + url;
-    }
-}
--- a/buildframework/helium/external/helium-antlib/scm/tests/abstract_unittest_scmtask.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,696 +0,0 @@
-<?xml version="1.0"?>
-<!-- 
-============================================================================ 
-Name        : abstract_unittest_scmtask.ant.xml 
-Part of     : Helium AntLib
-
-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="abstract-unittest-scmtask" xmlns:hlm="http://www.nokia.com/helium" xmlns:au="org.apache.ant.antunit">
-    <description>Helium Antlib SCM abtract unittests.</description>
-    
-    <property name="repo.type" value="hg" />
-    <property name="temp.dir" location="${ant.file.abstract-unittest-scmtask}/../temp" />
-    <property name="repo.dir" location="${temp.dir}/repo/${repo.type}" />
-
-    <!-- Defining the features -->
-    <taskdef name="scm" classname="com.nokia.helium.scm.ant.taskdefs.ScmTask" uri="http://www.nokia.com/helium" />
-    <typedef name="latestTag" classname="com.nokia.helium.scm.ant.types.LatestTag" uri="http://www.nokia.com/helium" />
-    <typedef name="tagSet" classname="com.nokia.helium.scm.ant.types.TagSet" uri="http://www.nokia.com/helium" />
-
-
-    <target name="setUp">
-        <delete dir="${temp.dir}" failonerror="false" />
-        <mkdir dir="${temp.dir}" />
-        <mkdir dir="${repo.dir}" />
-        <unzip src="./data/${repo.type}_test1.zip" dest="${repo.dir}" />
-        <unzip src="./data/${repo.type}_test2.zip" dest="${repo.dir}" />
-        <unzip src="./data/${repo.type}_test3.zip" dest="${repo.dir}" />
-    </target>
-
-    <target name="tearDown">
-        <delete dir="${temp.dir}" />
-    </target>
-
-    <!--
-     **************************************************************
-     ** STATUS
-     **************************************************************
-    -->
-    <target name="test-status">
-        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
-            <hlm:status>
-                <fileset dir="${repo.dir}/test1">
-                    <include name="**" />
-                    <exclude name="**/.${repo.type}/**" />
-                </fileset>
-            </hlm:status>
-        </hlm:scm>
-        <echo file="${repo.dir}/test1/not_in_repo.txt">Not in repo</echo>
-        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
-            <hlm:status>
-                <fileset dir="${repo.dir}/test1">
-                    <include name="**" />
-                    <exclude name="**/.${repo.type}/**" />
-                </fileset>
-            </hlm:status>
-        </hlm:scm>
-        <au:assertLogContains text="[not_in_repo.txt:unknown]" />
-    </target>
-
-    <!--
-     **************************************************************
-     ** DIFF
-     **************************************************************
-    -->
-    <target name="test-diff">
-        <echo file="${repo.dir}/test1/not_in_repo.txt">Not in repo</echo>
-        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
-            <hlm:add>
-                <fileset dir="${repo.dir}/test1">
-                    <include name="**" />
-                    <exclude name="**/.${repo.type}/**" />
-                </fileset>
-            </hlm:add>
-        </hlm:scm>
-        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
-            <hlm:diff>
-                <fileset dir="${repo.dir}/test1">
-                    <include name="**" />
-                    <exclude name="**/.${repo.type}/**" />
-                </fileset>
-            </hlm:diff>
-        </hlm:scm>
-        <au:assertLogContains text="+Not in repo" />
-    </target>
-
-
-    <!--
-     **************************************************************
-     ** ADD
-     **************************************************************
-    -->
-    <target name="test-add">
-        <echo file="${repo.dir}/test1/not_in_repo.txt">Not in repo</echo>
-        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
-            <hlm:add>
-                <fileset dir="${repo.dir}/test1">
-                    <include name="**" />
-                    <exclude name="**/.${repo.type}/**" />
-                </fileset>
-            </hlm:add>
-        </hlm:scm>
-        <au:assertLogContains text="[not_in_repo.txt:added]" />
-    </target>
-
-    <!--
-     **************************************************************
-     ** CHECKOUT
-     **************************************************************
-    -->
-    <target name="test-checkout-tip">
-        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test3">
-            <hlm:checkout baseDir="${repo.dir}/cloned" />
-        </hlm:scm>
-        <au:assertLogContains text="hg clone -r tip" />
-        <au:assertFileExists file="${repo.dir}/cloned/revision0.txt" />
-        <au:assertFileExists file="${repo.dir}/cloned/revision1.txt" />
-    </target>
-
-    <target name="test-checkout-revision">
-        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test3">
-            <hlm:checkout baseDir="${repo.dir}/cloned">
-                <revision name="1" />
-            </hlm:checkout>
-        </hlm:scm>
-        <au:assertLogContains text="hg clone -r 1" />
-        <au:assertFileExists file="${repo.dir}/cloned/revision0.txt" />
-        <au:assertFileDoesntExist file="${repo.dir}/cloned/revision2.txt" />
-    </target>
-
-    <target name="test-checkout-revision-error">
-        <au:expectfailure>
-            <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test3">
-                <hlm:checkout baseDir="${repo.dir}/cloned" revision="3" />
-            </hlm:scm>
-        </au:expectfailure>
-    </target>
-
-    <!--
-     **************************************************************
-     ** CHECKIN
-     **************************************************************
-    -->
-    <target name="test-checkin-message-missing" depends="test-add">
-        <au:expectfailure>
-            <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
-                <hlm:checkin>
-                    <fileset dir="${repo.dir}/test1">
-                        <include name="not_in_repo.txt" />
-                        <exclude name="**/.${repo.type}/**" />
-                    </fileset>
-                </hlm:checkin>
-            </hlm:scm>
-        </au:expectfailure>
-    </target>
-
-    <target name="test-checkin" depends="test-add">
-        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
-            <hlm:checkin message="Adding not_in_repo.txt...">
-                <fileset dir="${repo.dir}/test1">
-                    <include name="not_in_repo.txt" />
-                    <exclude name="**/.${repo.type}/**" />
-                </fileset>
-            </hlm:checkin>
-        </hlm:scm>
-    </target>
-
-
-    <!--
-     **************************************************************
-     ** TAGGING
-     **************************************************************
-    -->
-
-    <target name="test-tag-name-missing" depends="test-checkin">
-        <au:expectfailure>
-            <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
-                <hlm:tag baseDir="${repo.dir}/test1" />
-            </hlm:scm>
-        </au:expectfailure>
-    </target>
-
-    <target name="test-tag-basedir-missing" depends="test-checkin">
-        <au:expectfailure>
-            <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
-                <hlm:tag name="1.0.0" />
-            </hlm:scm>
-        </au:expectfailure>
-    </target>
-
-    <target name="test-tag" depends="setUp">
-        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
-            <hlm:tag baseDir="${repo.dir}/test1" name="0.0.1" />
-        </hlm:scm>
-        <au:assertLogContains text="Tag '0.0.1' has been created successfully" />
-    </target>
-
-    <target name="test-tag-local" depends="setUp">
-        <echo file="${repo.dir}/test1/newfile.txt">newly added</echo>
-        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
-            <hlm:add>
-                <fileset dir="${repo.dir}/test1">
-                    <include name="*.txt" />
-                </fileset>
-            </hlm:add>
-            <hlm:checkin message="Adding files .....">
-                <fileset dir="${repo.dir}/test1">
-                    <include name="*.txt" />
-                </fileset>
-            </hlm:checkin>
-            <hlm:tag baseDir="${repo.dir}/test1" name="0.0.2" level="local" />
-        </hlm:scm>
-        <au:assertLogContains text="Tag '0.0.2' has been created successfully" />
-    </target>
-
-    <!--
-     **************************************************************
-     ** Remove
-     **************************************************************
-    -->
-    <target name="test-remove-message-missing" depends="test-checkin">
-        <au:expectfailure>
-            <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
-                <hlm:remove />
-            </hlm:scm>
-        </au:expectfailure>
-    </target>
-
-    <target name="test-remove-nothing" depends="test-checkin">
-        <au:expectfailure>
-            <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
-                <hlm:remove message="Nothing to remove..." />
-            </hlm:scm>
-        </au:expectfailure>
-    </target>
-
-    <target name="test-remove" depends="test-checkin">
-        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
-            <hlm:remove message="Nothing to remove...">
-                <fileset dir="${repo.dir}/test1">
-                    <include name="not_in_repo.txt" />
-                </fileset>
-            </hlm:remove>
-        </hlm:scm>
-        <au:assertFileDoesntExist file="${repo.dir}/test1/not_in_repo.txt" />
-    </target>
-
-
-    <!--
-     **************************************************************
-     ** Update
-     **************************************************************
-    -->
-    <target name="test-update-noarg" depends="test-checkin">
-        <au:expectfailure>
-            <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
-                <hlm:update />
-            </hlm:scm>
-        </au:expectfailure>
-    </target>
-
-    <target name="test-update-basedir" depends="test-checkin">
-        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
-            <hlm:update basedir="${repo.dir}/test1" />
-        </hlm:scm>
-    </target>
-
-    <target name="test-update-empty-repo">
-        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/new">
-            <hlm:init />
-        </hlm:scm>
-        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/new">
-            <hlm:update basedir="${repo.dir}/new" />
-        </hlm:scm>
-    </target>
-        
-    <target name="test-update-basedir-tag" depends="test-checkin">
-        <echo file="${repo.dir}/test1/not_in_repo2.txt">Not in repo2</echo>
-        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
-            <hlm:add>
-                <fileset dir="${repo.dir}/test1">
-                    <include name="**" />
-                    <exclude name="**/.${repo.type}/**" />
-                </fileset>
-            </hlm:add>
-        </hlm:scm>
-        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
-            <hlm:checkin message="Adding not_in_repo2.txt...">
-                <fileset dir="${repo.dir}/test1">
-                    <include name="not_in_repo2.txt" />
-                </fileset>
-            </hlm:checkin>
-        </hlm:scm>
-        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
-            <hlm:update basedir="${repo.dir}/test1">
-                <hlm:tag name="0" />
-            </hlm:update>
-        </hlm:scm>
-        <au:assertFileDoesntExist file="${repo.dir}/test1/not_in_repo2.txt" />
-    </target>
-
-    <target name="test-update-basedir-revision" depends="test-checkin">
-        <echo file="${repo.dir}/test1/not_in_repo2.txt">Not in repo2</echo>
-        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
-            <hlm:add>
-                <fileset dir="${repo.dir}/test1">
-                    <include name="**" />
-                    <exclude name="**/.${repo.type}/**" />
-                </fileset>
-            </hlm:add>
-        </hlm:scm>
-        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
-            <hlm:checkin message="Adding not_in_repo2.txt...">
-                <fileset dir="${repo.dir}/test1">
-                    <include name="not_in_repo2.txt" />
-                </fileset>
-            </hlm:checkin>
-        </hlm:scm>
-        <echo file="${repo.dir}/test1/not_in_repo3.txt">Not in repo3</echo>
-        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
-            <hlm:add>
-                <fileset dir="${repo.dir}/test1">
-                    <include name="**" />
-                    <exclude name="**/.${repo.type}/**" />
-                </fileset>
-            </hlm:add>
-        </hlm:scm>
-        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
-            <hlm:checkin message="Adding not_in_repo3.txt...">
-                <fileset dir="${repo.dir}/test1">
-                    <include name="not_in_repo3.txt" />
-                </fileset>
-            </hlm:checkin>
-        </hlm:scm>
-        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
-            <hlm:update basedir="${repo.dir}/test1">
-                <hlm:revision name="0" />
-            </hlm:update>
-        </hlm:scm>
-        <au:assertFileDoesntExist file="${repo.dir}/test1/not_in_repo3.txt" />
-    </target>
-
-    <!--
-     **************************************************************
-     ** EXPORT
-     **************************************************************
-    -->
-    <target name="test-export-noarg">
-        <au:expectfailure>
-            <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test2">
-                <hlm:export />
-            </hlm:scm>
-        </au:expectfailure>
-    </target>
-
-    <target name="test-export-basedir">
-        <au:expectfailure>
-            <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test2">
-                <hlm:export basedir="${repo.dir}/test2" />
-            </hlm:scm>
-        </au:expectfailure>
-    </target>
-
-    <target name="test-export-basedir-destPath">
-        <mkdir dir="${repo.dir}/export" />
-        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test2">
-            <hlm:export basedir="${repo.dir}/test2" destpath="${repo.dir}/export" />
-        </hlm:scm>
-    </target>
-
-    <target name="test-export-basedir-destPath-tag-rev1">
-        <mkdir dir="${repo.dir}/export" />
-        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test2">
-            <hlm:export basedir="${repo.dir}/test2" destpath="${repo.dir}/export">
-                <tag name="1" />
-            </hlm:export>
-        </hlm:scm>
-        <au:assertFileDoesntExist file="${repo.dir}/export/file3.txt" />
-    </target>
-
-    <target name="test-export-basedir-destPath-tag-rev2">
-        <mkdir dir="${repo.dir}/export" />
-        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test2">
-            <hlm:export basedir="${repo.dir}/test2" destpath="${repo.dir}/export">
-                <tag name="2" />
-            </hlm:export>
-        </hlm:scm>
-        <au:assertFileExists file="${repo.dir}/export/file3.txt" />
-    </target>
-
-    <target name="test-export-basedir-destPath-invalid-tag">
-        <mkdir dir="${repo.dir}/export" />
-        <au:expectfailure>
-            <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test2">
-                <hlm:export basedir="${repo.dir}/test2" destpath="${repo.dir}/export">
-                    <tag name="1.0.0" />
-                </hlm:export>
-            </hlm:scm>
-        </au:expectfailure>
-    </target>
-
-    <target name="test-export-basedir-destPath-2tags">
-        <mkdir dir="${repo.dir}/export" />
-        <au:expectfailure>
-            <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test2">
-                <hlm:export basedir="${repo.dir}/test2" destpath="${repo.dir}/export">
-                    <tag name="1" />
-                    <tag name="2" />
-                </hlm:export>
-            </hlm:scm>
-        </au:expectfailure>
-    </target>
-
-    <!--
-     **************************************************************
-     ** Branch
-     **************************************************************
-    -->
-    <target name="test-branch-name-missing">
-        <au:expectfailure>
-            <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
-                <hlm:branch />
-            </hlm:scm>
-        </au:expectfailure>
-    </target>
-
-    <target name="test-branch-basedir-missing">
-        <au:expectfailure>
-            <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
-                <hlm:branch name="test branch" />
-            </hlm:scm>
-        </au:expectfailure>
-    </target>
-
-    <target name="test-branch" depends="setUp">
-        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
-            <hlm:branch baseDir="${repo.dir}/test1" name="test branch 1.0" />
-        </hlm:scm>
-        <au:assertLogContains text="Branch 'test branch 1.0' has been created successfully." />
-    </target>
-
-    <!--
-     **************************************************************
-     ** Changelog
-     **************************************************************
-    -->
-    <target name="test-changelog-basedir-missing">
-        <au:expectfailure>
-            <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
-                <hlm:changelog />
-            </hlm:scm>
-        </au:expectfailure>
-    </target>
-
-    <target name="test-changelog" depends="setUp">
-
-        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
-            <hlm:checkout baseDir="${repo.dir}/changelog" />
-            <hlm:tag baseDir="${repo.dir}/changelog" name="tag_0.2" />
-            <hlm:branch baseDir="${repo.dir}/changelog" name="test_0.1" />
-        </hlm:scm>
-
-        <echo file="${repo.dir}/changelog/newfile.txt">newly added</echo>
-        <echo file="${repo.dir}/changelog/newfile2.txt">newly added</echo>
-        <echo file="${repo.dir}/changelog/newfile3.txt">newly added</echo>
-
-        <hlm:scm verbose="false" scmUrl="scm:${repo.type}:${repo.dir}/changelog">
-            <hlm:add>
-                <fileset dir="${repo.dir}/changelog">
-                    <include name="*.txt" />
-                </fileset>
-            </hlm:add>
-            <hlm:checkin message="Adding files .....">
-                <fileset dir="${repo.dir}/changelog">
-                    <include name="*.txt" />
-                </fileset>
-            </hlm:checkin>
-            <hlm:changelog baseDir="${repo.dir}/changelog" numDays='1' />
-        </hlm:scm>
-
-        <au:assertLogContains text="tag:tip" />
-        <au:assertLogContains text="branch:test_0.1" />
-        <au:assertLogContains text="files:newfile.txt newfile2.txt newfile3.txt" />
-        
-        <echo file="${repo.dir}/changelog/newfile4.txt">newly added</echo>
-        <echo file="${repo.dir}/changelog/newfile5.txt">newly added</echo>
-        <echo file="${repo.dir}/changelog/newfile6.txt">newly added</echo>
-
-        <hlm:scm verbose="false" scmUrl="scm:hg:${repo.dir}/changelog">
-            <hlm:add>
-                <fileset dir="${repo.dir}/changelog">
-                    <include name="*.txt" />
-                </fileset>
-            </hlm:add>
-            <hlm:checkin message="Adding files .....">
-                <fileset dir="${repo.dir}/changelog">
-                    <include name="*.txt" />
-                </fileset>
-            </hlm:checkin>
-            <hlm:changelog basedir="${repo.dir}/changelog" startVersion="2" />
-        </hlm:scm>
-        <au:assertLogContains text="revision:2:" />
-        
-        <hlm:scm verbose="false" scmUrl="scm:hg:${repo.dir}/changelog">
-            <hlm:changelog basedir="${repo.dir}/changelog" startVersion="1" endVersion="2"/>
-        </hlm:scm>
-        <au:assertLogContains text="revision:1:" />
-        <au:assertLogContains text="revision:2:" />
-        
-        <hlm:scm verbose="false" scmUrl="scm:hg:${repo.dir}/changelog">
-            <hlm:changelog basedir="${repo.dir}/changelog" xmlbom="${repo.dir}/bom.xml"/>
-        </hlm:scm>
-        <au:assertFileExists file="${repo.dir}/bom.xml" />
-    </target>
-    
-    <!--
-     **************************************************************
-     ** Info
-     **************************************************************
-    -->
-    <target name="test-info-basedir-missing">
-        <au:expectfailure>
-            <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
-                <hlm:info />
-            </hlm:scm>
-        </au:expectfailure>
-    </target>
-
-    <target name="test-info-command" depends="setUp">
-        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">            
-            <hlm:checkout baseDir="${repo.dir}/info" /> 
-            <hlm:info baseDir="${repo.dir}/info"/>
-        </hlm:scm>
-
-        <au:assertLogContains text="hg id" />
-    </target>
-    
-    <target name="test-info-command-result" depends="setUp">
-        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">            
-            <hlm:checkout baseDir="${repo.dir}/info" /> 
-            <hlm:info baseDir="${repo.dir}/info"/>
-        </hlm:scm>
-
-        <au:assertLogContains text="00000000000" />
-    </target>
-    
-    <target name="test-info-command-result-failur" depends="setUp">
-        <au:expectfailure>
-            <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">            
-                <hlm:checkout baseDir="${repo.dir}/info" /> 
-                <hlm:info baseDir="${repo.dir}/info"/>
-            </hlm:scm>
-            <au:assertLogContains text="00000000001" />
-        </au:expectfailure>
-    </target>
-    
-    <!--
-     **************************************************************
-     ** Keep Going (faile on error)
-     **************************************************************
-    -->
-    <target name="test-keepgoing-false" depends="setUp">
-        <echo file="${repo.dir}/test1/newfile.txt">newly added</echo>
-        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1" failonerror="false">
-            <hlm:add>
-                <fileset dir="${repo.dir}/test1">
-                    <include name="*.txt" />
-                </fileset>
-            </hlm:add>
-            <hlm:checkin message="Adding files .....">
-                <fileset dir="${repo.dir}/test1">
-                    <include name="*.txt" />
-                </fileset>
-            </hlm:checkin>
-            <hlm:tag baseDir="${repo.dir}/test1" name="0.0.2" />
-            <hlm:tag baseDir="${repo.dir}/test1" name="0.0.2" />            
-        </hlm:scm>
-        <echo> Build Continue... </echo>
-        <au:assertLogContains text="Build Continue..." />
-    </target>
-    
-    <target name="test-keepgoing-true" depends="setUp">
-        <au:expectfailure>
-            <echo file="${repo.dir}/test1/newfile.txt">newly added</echo>
-            <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1" failonerror="true">
-                <hlm:add>
-                    <fileset dir="${repo.dir}/test1">
-                        <include name="*.txt" />
-                    </fileset>
-                </hlm:add>
-                <hlm:checkin message="Adding files .....">
-                    <fileset dir="${repo.dir}/test1">
-                        <include name="*.txt" />
-                    </fileset>
-                </hlm:checkin>
-                <hlm:tag baseDir="${repo.dir}/test1" name="0.0.3" />
-                <hlm:tag baseDir="${repo.dir}/test1" name="0.0.3" />
-            </hlm:scm>
-        </au:expectfailure>
-    </target>
-    
-    <target name="test-keepgoing-true-default" depends="setUp">
-        <au:expectfailure>
-            <echo file="${repo.dir}/test1/newfile.txt">newly added</echo>
-            <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
-                <hlm:add>
-                    <fileset dir="${repo.dir}/test1">
-                        <include name="*.txt" />
-                    </fileset>
-                </hlm:add>
-                <hlm:checkin message="Adding files .....">
-                    <fileset dir="${repo.dir}/test1">
-                        <include name="*.txt" />
-                    </fileset>
-                </hlm:checkin>
-                <hlm:tag baseDir="${repo.dir}/test1" name="0.0.3" />
-                <hlm:tag baseDir="${repo.dir}/test1" name="0.0.3" />
-            </hlm:scm>
-        </au:expectfailure>
-    </target>
-
-    
-    <!--
-     **************************************************************
-     ** Init
-     **************************************************************
-     -->
-    <target name="test-init">
-        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/new">
-            <hlm:init />
-        </hlm:scm>
-        <au:assertFileExists file="${repo.dir}/new" />
-    </target>
-
-    
-    <!--
-     **************************************************************
-     ** Pull
-     **************************************************************
-     -->
-    <target name="test-pull">
-        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
-            <hlm:checkout baseDir="${repo.dir}/pull" />
-        </hlm:scm>
-        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
-            <hlm:tag baseDir="${repo.dir}/test1" name="tag_0.2" />
-        </hlm:scm>
-        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/pull">
-            <hlm:pull baseDir="${repo.dir}/pull" />
-            <hlm:changelog baseDir="${repo.dir}/pull" numDays="1" />
-        </hlm:scm>
-        <au:assertLogContains text="files:.hgtags" />
-        <au:assertLogContains text="description:[maven-scm] copy for tag tag_0.2" />
-    </target>
-    
-    <!--
-     **************************************************************
-     ** Tags
-     **************************************************************
-     -->
-    <target name="test-tags">
-        <echo file="${repo.dir}/test1/content.txt">content...</echo>
-        <hlm:scm verbose="true" scmUrl="scm:${repo.type}:${repo.dir}/test1">
-            <hlm:add>
-                <fileset dir="${repo.dir}/test1">
-                    <include name="*.txt" />
-                </fileset>
-            </hlm:add>
-            <hlm:checkin message="Adding files .....">
-                <fileset dir="${repo.dir}/test1">
-                    <include name="*.txt" />
-                </fileset>
-            </hlm:checkin>            
-            <hlm:tag baseDir="${repo.dir}/test1" name="tag_0.1" />
-            <hlm:tags baseDir="${repo.dir}/test1" />
-        </hlm:scm>
-        <au:assertLogContains text=" * tag_0.1" />
-        <au:assertLogContains text=" * tip" />
-    </target>
-    
-    
-</project>
--- a/buildframework/helium/external/helium-antlib/scm/tests/bld.sh	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,24 +0,0 @@
-#!/bin/csh
-
-#
-# 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: 
-#
-
-
-
-module load java/1.6.0
-module load mercurial
-setenv ANT_ARGS "-lib ../lib -lib ../../lib -lib ../../bin/helium-core.jar -lib ../../bin/helium-scm.jar -lib ../../antlibs"
-ant -Dant.executor.class="com.nokia.helium.core.ant.HeliumExecutor" $*
--- a/buildframework/helium/external/helium-antlib/scm/tests/build.bat	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-@echo off
-
-rem
-rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-rem All rights reserved.
-rem This component and the accompanying materials are made available
-rem under the terms of the License "Eclipse Public License v1.0"
-rem which accompanies this distribution, and is available
-rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
-rem
-rem Initial Contributors:
-rem Nokia Corporation - initial contribution.
-rem
-rem Contributors:
-rem
-rem Description: 
-rem
-
-setlocal
-if not defined JAVA_6_HOME (
-set TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
-) ELSE  set TESTED_JAVA=%JAVA_6_HOME%
-if exist %TESTED_JAVA% (set JAVA_HOME=%TESTED_JAVA%)
-set ANT_ARGS=-lib %CD%\..\lib -lib %CD%\..\..\lib -lib %CD%\..\..\bin\helium-core.jar -lib %CD%\..\..\bin\helium-scm.jar -lib %CD%\..\..\antlibs
-ant -Dant.executor.class=com.nokia.helium.core.ant.HeliumExecutor %*
-endlocal
-
--- a/buildframework/helium/external/helium-antlib/scm/tests/build.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : build.xml 
-Part of     : Helium AntLib
-
-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="helium-antlib-unittest" xmlns:au="antlib:org.apache.ant.antunit">
-    <description>Helium Antlib SCM unittests.</description>
-
-    
-    <import file="../../test-macros.ant.xml" />
-
-    <target name="unittest" depends="unittest-scm" />
-
-    <target name="unittest-scm">
-        <antunitModule name="scm" />
-    </target>
-
-</project>
Binary file buildframework/helium/external/helium-antlib/scm/tests/data/hg_test1.zip has changed
Binary file buildframework/helium/external/helium-antlib/scm/tests/data/hg_test2.zip has changed
Binary file buildframework/helium/external/helium-antlib/scm/tests/data/hg_test3.zip has changed
Binary file buildframework/helium/external/helium-antlib/scm/tests/data/svn_test1.zip has changed
--- a/buildframework/helium/external/helium-antlib/scm/tests/test_hg_scmtask.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-<?xml version="1.0"?>
-<!-- 
-============================================================================ 
-Name        : test_hg_scmtask.ant.xml 
-Part of     : Helium AntLib
-
-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="test-hg-scmtask" xmlns:hlm="http://www.nokia.com/helium" xmlns:au="org.apache.ant.antunit">
-    <description>Helium Antlib SCM Mercurial unittest.</description>
-
-    <property name="repo.type" value="hg" />
-
-    <import file="abstract_unittest_scmtask.ant.xml"/>
-
-</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/settings/ivysettings.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,46 @@
+<!--
+============================================================================ 
+Name        : ivysettings.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:
+
+============================================================================    
+-->
+<ivysettings>
+    <caches useOrigin="true" defaultCacheDir="${build.temp.dir}/ivy"/>
+    <property name="ivy.default.ivy.user.dir" value="${build.temp.dir}/ivy"/>
+    <settings defaultResolver="helium-sf-build"/>
+    <include url="${ivy.default.settings.dir}/ivysettings-public.xml"/>
+    <include url="${ivy.default.settings.dir}/ivysettings-shared.xml"/>
+    <include url="${ivy.default.settings.dir}/ivysettings-local.xml"/>
+    <include url="${ivy.default.settings.dir}/ivysettings-main-chain.xml"/>
+    <include url="${ivy.default.settings.dir}/ivysettings-default-chain.xml"/>
+
+    <resolvers>
+        <chain name="helium-sf-build" returnFirst="true">
+            <filesystem name="sf-deps">
+                <ivy pattern="${sf.source.root.dir}/deps/[organisation]/[module]/[revision]/ivy.xml" />
+                <artifact pattern="${sf.source.root.dir}/deps/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
+            </filesystem>
+            <filesystem>
+                <artifact pattern="${module.bin.dir}/[artifact].[ext]" />
+            </filesystem>
+            <resolver ref="local"/>
+        </chain>
+    </resolvers>
+
+</ivysettings>
+
--- a/buildframework/helium/external/helium-antlib/signaling/bld.bat	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-@echo off
-
-rem
-rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-rem All rights reserved.
-rem This component and the accompanying materials are made available
-rem under the terms of the License "Eclipse Public License v1.0"
-rem which accompanies this distribution, and is available
-rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
-rem
-rem Initial Contributors:
-rem Nokia Corporation - initial contribution.
-rem
-rem Contributors:
-rem
-rem Description: 
-rem
-
-setlocal
-if not defined JAVA_6_HOME (
-set TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
-) ELSE  set TESTED_JAVA=%JAVA_6_HOME%
-if exist %TESTED_JAVA% (set JAVA_HOME=%TESTED_JAVA%)
-
-REM Configure Ant 
-if not defined TESTED_ANT_HOME (
-set TESTED_ANT_HOME=C:\Apps\ant_1.7
-) 
-if exist %TESTED_ANT_HOME% (set ANT_HOME=%TESTED_ANT_HOME%)
-
-REM Configure the expected Ant Version details below
-SET expMajorVer=1
-SET expMinorVer=7
-
-rem *** Verify Ant Version ***
-rem -- Run the 'ant -version' command and capture the output to a variable 
-for /f "tokens=*" %%a in ('ant -version') do (set antversion=%%a)
-echo *** Installed Version : %antversion%
-
-rem -- Parse the version string obtained above and get the version number
-for /f "tokens=4 delims= " %%a in ("%antversion%") do set val=%%a
-rem -- Parse the version number delimiting the '.' and set the major and
-rem    minor versions
-for /f "tokens=1-2 delims=." %%a in ("%val%") do (
-set /A majorVersion=%%a
-set /A minorVersion=%%b
-)
-rem -- Check whether major version is greater than or equal to the expected.
-if %majorVersion% geq %expMajorVer% ( 
-rem -- if major version is valid, check minor version. If minor version is less
-rem    than expected display message and abort the execution.
-if %minorVersion% lss %expMinorVer% (echo *** Incorrect version of Ant found. Please check you have atleast Ant 1.7.0 & goto :errorstop ) 
-)
-
-ant %*
-endlocal
-
-:errorstop
-@echo *** Build aborted with error
-exit /b 1
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/signaling/build.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : build.xml 
-Part of     : Helium AntLib
-
-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="helium-signaling">
-    <description>Helium Antlib signaling.</description>
-    
-    <import file="../macros.ant.xml"/>
-    
-    <property name="name" value="signaling"/>
-    
-    <import file="../core/build.xml"/>
-    
-    <path id="helium.signaling.classpath">
-        <fileset dir="${helium.antlib.root.dir}/bin" includes="helium-core.jar"/>
-        <fileset dir="${helium.antlib.root.dir}/bin" includes="helium-signaling.jar"/>
-    </path>
-
-</project>
-
-
--- a/buildframework/helium/external/helium-antlib/signaling/demo/build.bat	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-@echo off
-
-rem
-rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-rem All rights reserved.
-rem This component and the accompanying materials are made available
-rem under the terms of the License "Eclipse Public License v1.0"
-rem which accompanies this distribution, and is available
-rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
-rem
-rem Initial Contributors:
-rem Nokia Corporation - initial contribution.
-rem
-rem Contributors:
-rem
-rem Description: 
-rem
-
-setlocal
-if not defined JAVA_6_HOME (
-set TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
-) ELSE  set TESTED_JAVA=%JAVA_6_HOME%
-if exist %TESTED_JAVA% (set JAVA_HOME=%TESTED_JAVA%)
-set ANT_ARGS=-lib %CD%\..\lib -lib %CD%\..\..\lib -lib  %CD%\..\..\bin\helium-core.jar -lib  %CD%\..\..\bin\helium-signaling.jar -lib %CD%\..\..\antlibs
-ant %*
-endlocal
-
--- a/buildframework/helium/external/helium-antlib/signaling/demo/build.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : build.xml 
-Part of     : Helium AntLib
-
-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="helium-antlib-signal-demo" xmlns:hlm="http://www.nokia.com/helium">
-    <description>Helium Antlib signal demo.</description>
-
-    <taskdef resource="com/nokia/helium/signal/ant/antlib.xml" uri="http://www.nokia.com/helium" />
-
-    <!-- Fail now signal -->
-    <hlm:notifierList id="testSignalNotifiers">
-        <hlm:executeTaskNotifier>
-            <echo>Signal name:   ${signal.name}</echo>
-            <echo>Signal status: ${signal.status}</echo>
-            <echo>Notifier input: ${signal.notifier.inputs}</echo>
-        </hlm:executeTaskNotifier>
-    </hlm:notifierList>
-
-    <hlm:signalInput id="testSignalInput" failBuild="never">
-        <hlm:notifierListRef refid="testSignalNotifiers" />
-        <notifierInput file="build.xml" />
-    </hlm:signalInput>
-
-    <target name="demo-signal">
-        <hlm:signal name="testSignal">
-            <hlm:signalInput refid="testSignalInput">
-                <notifierInput file="build.bat" />
-            </hlm:signalInput>
-        </hlm:signal>
-    </target>
-    
-</project>
--- a/buildframework/helium/external/helium-antlib/signaling/src/com/nokia/helium/signal/Notifier.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-
-package com.nokia.helium.signal;
-
-import java.util.List;
-import org.apache.tools.ant.Project;
-import com.nokia.helium.signal.ant.types.NotifierInput;
-
-/**
- * This interface describe what method a Notifier needs to implement.
- * 
- */
-public interface Notifier {
-
-    /**
-     * Setting the project.
-     * 
-     * @param project
-     */
-    void setProject(Project project);
-
-    /**
-     * Sends the data to the requested sender list with specified notifier
-     * 
-     * @param signalName is the name of the signal that has been raised.
-     * @param failStatus indicates whether to fail the build or not
-     * @param notifierInput contains signal notifier info
-     * @param message is the message from the signal that has been raised.           
-     */
-    void sendData(String signalName, boolean failStatus,
-            NotifierInput notifierInput, String message );
-
-    /**
-     * Sends the data to the requested sender list with specified notifier
-     * 
-     * @deprecated
-     */    
-    void sendData(String signalName, boolean failStatus,
-            List<String> fileList);
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/signaling/src/com/nokia/helium/signal/SignalExceptionMessage.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:To print the message on the shell in case of build fails for deffered Signals. 
-*
-*/
- 
-package com.nokia.helium.signal;
-
-
-import org.apache.tools.ant.Project;
-import com.nokia.helium.core.ant.HlmExceptionHandler;
-import org.apache.log4j.Logger;
-
-/**
- * Class to check the signal is present in the deferred and now signal list.
- * Print the message on the shell "Build completed with errors and warnings".
- * 
- */
-
-public class SignalExceptionMessage implements HlmExceptionHandler {
-    private Logger log = Logger.getLogger(SignalExceptionMessage.class);
-    
-    /**
-     * Implements the Exception method to print the build completed message.
-     * @param project
-     * @param module
-     * @param e
-     */
-    public void handleException(Project project, String module, Exception e) {
-        
-        if (SignalStatusList.getDeferredSignalList().hasSignalInList()) {
-            log.info("Build completed with errors and warnings.");
-        }
-        
-        if (SignalStatusList.getNowSignalList().hasSignalInList()) {
-            log.info("Build completed with errors and warnings.");
-        }
-    }
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/signaling/src/com/nokia/helium/signal/SignalNeverFailMessage.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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: To print the message on the shell in case of build has errors
-* is user sets failbuild status to never in signal configuration file.
-*
-*/
- 
-package com.nokia.helium.signal;
-
-
-import org.apache.tools.ant.Project;
-import com.nokia.helium.core.ant.types.*;
-import org.apache.log4j.Logger;
-
-/**
- * Class to check the signal is present in the never signal list.
- * Print the message on the shell "Build completed with errors and warnings".
- * 
- */
-public class SignalNeverFailMessage extends HlmPostDefImpl
-{
-    private Logger log = Logger.getLogger(SignalNeverFailMessage.class); 
-    
-    /**
-     * Override execute method to print build completed message.
-     * @param prj
-     * @param module
-     * @param targetNames
-     */
-    
-    public void execute(Project prj, String module, String[] targetNames) {
-        
-        if (SignalStatusList.getNeverSignalList().hasSignalInList()) {
-            log.info("Build completed with errors and warnings.");
-        }
-        
-    }
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/signaling/src/com/nokia/helium/signal/SignalStatus.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,89 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-
-package com.nokia.helium.signal;
-
-import java.util.Date;
-
-/**
- * Signal data holder;
- */
-public class SignalStatus {
-
-    // Signal attributes.
-    private String name;
-    private String message;
-    private String targetName;
-    private Date signalTimeStamp;
-
-    /**
-     * Deferred signal holder.
-     * 
-     * @param signalName
-     *            name of the signal been raised
-     * @param message
-     *            message for the user
-     * @param targetName
-     *            current target.
-     */
-    public SignalStatus(String signalName, String message, String targetName, Date signalDateAndTime) {
-        this.name = signalName;
-        this.message = message;
-        this.targetName = targetName;
-        this.signalTimeStamp = signalDateAndTime;
-        
-    }
-    /**
-     * Returns the signal message.
-     * @return
-     */
-    public String getMessage() {
-        return message;
-    }
-
-    /**
-     * Returns signal name.
-     * @return
-     */
-    public String getName() {
-        return name;
-    }
-
-    /**
-     * Returns target name.
-     * @return
-     */
-    public String getTargetName() {
-        return targetName;
-    }
-    
-    /**
-     * Returns signal date and time.
-     * @return
-     */
-    public Date getTimestamp() {
-        return signalTimeStamp;
-    }
-    
-    /**
-     * Converts signal status object to string.
-     */
-    public String toString() {
-        return name + ": " + message + " : " + targetName;
-    }
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/signaling/src/com/nokia/helium/signal/SignalStatusList.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,119 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-package com.nokia.helium.signal;
-
-import java.util.Vector;
-
-import org.apache.log4j.Logger;
-
-/**
- * This class implements at storage for SignalStatus object.
- * It cannot be instantiated, it must be used through the typed list:
- * getDeferredSignalList, getNowSignalList, getNeverSignalList
- *
- */
-public final class SignalStatusList {
-    
-    private static SignalStatusList deferSignalList = new SignalStatusList();
-    private static SignalStatusList nowSignalList = new SignalStatusList();
-    private static SignalStatusList neverSignalList = new SignalStatusList();
-
-    private Vector<SignalStatus> signals = new Vector<SignalStatus>();
-    
-    private Logger log = Logger.getLogger(this.getClass());
-    
-    
-    private SignalStatusList() { }
-    
-    /**
-     * Get the list of stored SignalStatus object.
-     * @return a Vector of SignalStatus instances.
-     */
-    public Vector<SignalStatus>getSignalStatusList() {
-        return new Vector<SignalStatus>(signals);
-    }
-    
-    /**
-     * Add a SignalStatus object to the list.
-     * 
-     * @param status
-     *            a signal
-     */
-    public void addSignalStatus(SignalStatus status) {
-        log.debug("SignalStatusList:addSignalStatus:msg:" + status);
-        signals.add(status);
-    }
-
-    /**
-     * Converts the error list into a user readable message.
-     * 
-     * @return the error message.
-     */
-    public String getErrorMsg() {
-        StringBuffer statusBuffer = new StringBuffer();
-        for (SignalStatus signalStatus : signals) {
-            statusBuffer.append(signalStatus);
-            statusBuffer.append("\n");
-        }
-        log.debug("getErrorMsg:msg:" + statusBuffer.toString());
-        return statusBuffer.toString();
-    }
-
-    /**
-     * Check if it has any pending signals stored.
-     * 
-     * @return true if any signal are pending.
-     */
-    public boolean hasSignalInList() {
-        log.debug("asDeferMsgInList:size:"
-                + signals.size());
-        return signals.size() > 0;
-    }
-
-    /**
-     * Clear all deferred signals.
-     */
-    public void clearStatusList() {
-        log.debug("clearStatusList:size1:"
-                + signals.size());
-        signals.clear();
-        log.debug("clearStatusList:size2:"
-                + signals.size());
-    }
-    
-    /*
-     * Returns the deferred signal list.
-     */
-    public static SignalStatusList getDeferredSignalList() {
-        return deferSignalList;
-    }
-    
-    /*
-     * Returns the now signal list.
-     */
-    public static SignalStatusList getNowSignalList() {
-        return nowSignalList;
-    }
-    
-    /*
-     * Returns the never signal list.
-     */
-    public static SignalStatusList getNeverSignalList() {
-        return neverSignalList;
-    }
-
-}
--- a/buildframework/helium/external/helium-antlib/signaling/src/com/nokia/helium/signal/ant/SignalList.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,475 +0,0 @@
-/*
- * Copyright (c) 2007-2008 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:  
- *
- */
-
-package com.nokia.helium.signal.ant;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.taskdefs.condition.Condition;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.Target;
-import com.nokia.helium.signal.Notifier;
-import com.nokia.helium.signal.SignalStatus;
-import com.nokia.helium.signal.SignalStatusList;
-import com.nokia.helium.core.LogSource;
-import com.nokia.helium.signal.ant.types.SignalListenerConfig;
-import com.nokia.helium.signal.ant.types.SignalInput;
-import com.nokia.helium.signal.ant.types.SignalNotifierInput;
-import com.nokia.helium.signal.ant.types.SignalConfig;
-import com.nokia.helium.signal.ant.types.NotifierInput;
-import com.nokia.helium.signal.ant.types.SignalNotifierList;
-import com.nokia.helium.signal.ant.types.TargetCondition;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-import java.util.Vector;
-import java.util.HashMap;
-import java.util.Date;
-import java.util.Enumeration;
-import org.apache.log4j.Logger;
-
-/**
- * Helper class to store the list of notifiers.
- */
-public class SignalList {
-
-    // default id list name
-    public static final String DEFAULT_NOTIFIER_LIST_REFID = "defaultSignalInput";
-
-
-    private Hashtable<String, SignalListenerConfig> signalListenerConfigs = new Hashtable<String, SignalListenerConfig>();
-
-    private HashMap<String, List<SignalListenerConfig>> targetsMap = new HashMap<String, List<SignalListenerConfig>>();
-
-    private Hashtable<String, SignalConfig> signalConfigs = new Hashtable<String, SignalConfig>();
-
-    private HashMap<String, List<SignalConfig>> targetsConfigMap = new HashMap<String, List<SignalConfig>>();
-
-    private Project project;
-
-    private Logger log = Logger.getLogger(this.getClass());
-
-     /**
-     * Constructor
-     */
-    @SuppressWarnings("unchecked")
-    public SignalList(Project project) {
-        this.project = project;
-        Hashtable<String, Object> references = project.getReferences();
-        Enumeration<String> keyEnum = references.keys();
-        while (keyEnum.hasMoreElements()) {
-            String key = keyEnum.nextElement();
-            if (references.get(key) instanceof SignalListenerConfig) {
-                log.debug("SignalList: Found reference: " + key);
-                SignalListenerConfig config = (SignalListenerConfig) references
-                        .get(key);
-                config.setConfigId(key);
-                signalListenerConfigs.put(key, config);
-                String targetName = config.getTargetName();
-                List<SignalListenerConfig> list;
-                if (targetsMap.get(targetName) == null) {
-                    list = new ArrayList<SignalListenerConfig>();
-                } else {
-                    list = targetsMap.get(targetName);
-                }
-                list.add(config);
-                targetsMap.put(targetName, list);
-            }
-            if (references.get(key) instanceof SignalConfig) {
-                log.debug("SignalList: Found reference: " + key);
-                SignalConfig config = (SignalConfig) references.get(key);
-                config.setConfigId(key);
-                signalConfigs.put(key, config);
-                Set targetNameSet = config.getTargetNameSet();
-                Iterator iter = targetNameSet.iterator();
-                while (iter.hasNext()) {
-                    String targetName = (String) iter.next();
-                    List<SignalConfig> list;
-                    if (targetsConfigMap.get(targetName) == null)
-                    {
-                        list = new ArrayList<SignalConfig>();
-                    }
-                    else
-                    {
-                        list = targetsConfigMap.get(targetName);
-                    }
-                    list.add(config);
-                    targetsConfigMap.put(targetName, list);
-                }
-            }
-        }
-    }
-
-    public Project getProject() {
-        return project;
-    }
-
-    /**
-     * Returns the list of SignalConfig discovered.
-     * @return a Vector of SignalList objects.
-     */
-    public Vector<SignalListenerConfig> getSignalListenerConfigList() {
-        return new Vector<SignalListenerConfig>(signalListenerConfigs.values());
-    }
-
-    /**
-     * Check if targetName is defined is defined by a targetCondition.
-     * @param targetName the target name
-     * @return a boolean, true if found, false otherwise.
-     */
-    public boolean isTargetInSignalList(String targetName) {
-        return targetsMap.get(targetName) != null;
-    }
-
-    /**
-     * Return the list of signalConfig defining a target.
-     * @param targetName
-     * @return
-     */
-    public List<SignalListenerConfig> getSignalListenerConfig(String targetName) {
-        return targetsMap.get(targetName);
-    }
-
-    protected void sendNotifications(Vector<Notifier> notifierList, String signalName, String errorMessage ) {
-        sendNotifications( notifierList, signalName, false, null, errorMessage );
-    }
-
-    public void processForSignal(Project prj, SignalNotifierInput signalNotifierInput, String signalName, String targetName, 
-            String errorMessage, boolean failBuild) {
-        SignalInput signalInput = signalNotifierInput.getSignalInput();
-        Vector<Notifier> notifierList = signalInput.getSignalNotifierList();
-        if (notifierList == null) {
-            Object obj = (Object) prj
-                    .getReference(DEFAULT_NOTIFIER_LIST_REFID);
-            if (obj instanceof SignalNotifierList) {
-                notifierList = ((SignalNotifierList) obj)
-                        .getNotifierList();
-            }
-        }
-        NotifierInput notifierInput = signalNotifierInput.getNotifierInput();
-        sendNotifications(notifierList, signalName, failBuild,
-                notifierInput, errorMessage );
-        if (failBuild) {
-            String failStatus = "now";
-            if (signalInput != null) {
-                failStatus = signalInput.getFailBuild();
-            } else {
-                log.debug("Could not find config for signal: " + signalName);
-            }
-            if (failStatus == null || failStatus.equals("now")) {
-                log.debug("Adding now signal. Signal name is " + signalName);
-                SignalStatusList.getNowSignalList().addSignalStatus(new SignalStatus(signalName,
-                        errorMessage, targetName, new Date()));
-                throw new BuildException(new SignalStatus(signalName,
-                        errorMessage, targetName, new Date()).toString());
-            } else if (failStatus.equals("defer")) {
-                log.debug("Adding deffer signal. Signal " + signalName + " will be deferred.");
-                SignalStatusList.getDeferredSignalList().addSignalStatus(new SignalStatus(
-                        signalName, errorMessage, targetName, new Date()));
-            } else if (failStatus.equals("never")) {
-                log.debug("Adding never signal. Signal name is " + signalName);
-                SignalStatusList.getNeverSignalList().addSignalStatus(new SignalStatus(signalName,
-                        errorMessage, targetName, new Date()));
-            } else if (!failStatus.equals("never")) {
-                SignalStatusList.getNowSignalList().addSignalStatus(new SignalStatus(signalName,
-                        errorMessage, targetName, new Date()));
-                throw new BuildException(new SignalStatus(signalName,
-                        errorMessage, targetName, new Date()).toString());
-            } else {
-                log.info("Signal " + signalName
-                        + " set to be ignored by the configuration.");
-            }
-        }
-    }
-    /**
-     * Send notification using the notification list.
-     * 
-     * @param notifierList
-     */
-    protected void sendNotifications(Vector<Notifier> notifierList, String signalName,
-            boolean failStatus, NotifierInput notifierInput, String errorMessage ) {
-        if (notifierList == null) {
-            return;
-        }
-        for (Notifier notifier : notifierList) {
-            if (notifier != null) {
-                notifier.sendData(signalName, failStatus, notifierInput, errorMessage );
-            }
-        }
-    }
-
-    public boolean checkAndNotifyFailure(Target target, Project prj) {
-        String targetName = target.getName();
-        String signalName = "unknown";
-        boolean retValue = false;
-        
-        if (isTargetInSignalList(targetName)) {
-            retValue = true;
-            for (SignalListenerConfig config : getSignalListenerConfig(targetName))
-            {
-                TargetCondition targetCondition = config
-                        .getTargetCondition();
-                String errorMessage = null;
-                log.debug("targetcondition:" + targetCondition);
-                Condition condition = null;
-                if (targetCondition != null) {
-                    condition = getFailureCondition(targetCondition);
-                }
-                errorMessage = config.getErrorMessage();
-                String refid = config.getConfigId();
-                log.debug("refid:" + refid);
-                Object  configCurrent = prj.getReference(refid);
-                if (configCurrent != null && configCurrent instanceof SignalListenerConfig) {
-                    signalName = refid;
-                }
-                processForSignal(prj, config.getSignalNotifierInput(), signalName, 
-                        targetName, errorMessage, condition != null);
-                log.debug("checkAndNotifyFailure: SignalName: " + signalName);
-            }
-        }
-        return retValue;
-    }
-    
-    private Condition getFailureCondition(TargetCondition targetCondition) {
-        Condition retCondition = null;
-        Vector<Condition> conditionList = targetCondition.getConditions();
-        for (Condition condition : conditionList) {
-            log.debug("getFailureCondition:" + condition.eval());
-            if (condition.eval()) {
-                retCondition = condition;
-                break;
-            }
-        }
-        return retCondition;
-    }
-
-
-    
-    /**
-     * Returns the list of variables available in the VariableSet
-     * 
-     * @return variable list
-     */
-    public Vector<SignalConfig> getSignalConfigList() {
-        return new Vector<SignalConfig>(signalConfigs.values());
-    }
-
-    public boolean isTargetInSignalConfigList(String targetName) {
-        return targetsConfigMap.get(targetName) != null;
-    }
-
-    public List<SignalConfig> getSignalConfigs(String targetName) {
-        return targetsConfigMap.get(targetName);
-    }
-
-    /**
-     * Send signal notification by running configured notifiers.
-     * 
-     * @param targetName
-     */
-    public void sendSignal(String signalName, boolean failStatus)
-    {
-        log.debug("Sending signal for:" + signalName);
-        if (signalConfigs.containsKey(signalName)) {
-            SignalConfig config = signalConfigs.get(signalName);
-            sendNotify(config.getSignalInput().getSignalNotifierList(),
-                    signalName, failStatus, 
-                    getFileList(project,config.getLogSourceList(), config.getSourceType()));
-        } else if (project.getReference(DEFAULT_NOTIFIER_LIST_REFID) != null) {
-            // sending using default settings
-            sendNotify(((SignalInput) project
-                    .getReference(DEFAULT_NOTIFIER_LIST_REFID))
-                    .getSignalNotifierList(), signalName, failStatus,null);
-        }
-    }
-
-    protected void sendNotify(Vector<Notifier> notifierList, String signalName) {
-        sendNotify(notifierList, signalName, false, null);
-    }
-
-    /**
-     * Send notification using the notification list.
-     * 
-     * @param notifierList
-     */
-    @SuppressWarnings("deprecation")
-    protected void sendNotify(Vector<Notifier> notifierList, String signalName,
-            boolean failStatus, List<String> fileList) {
-        if (notifierList == null) {
-            return;
-        }
-        for (Notifier notifier : notifierList) {
-            if (notifier != null) {
-                notifier.sendData(signalName, failStatus, fileList);
-            }
-        }
-    }
-
-    /**
-     * Handle the signal, either fail now, or defer the failure.
-     * 
-     * @param targetName
-     *            , target where the failure happened.
-     * @param errMsg
-     *            , the error message
-     */
-    public void fail(String signalName, String targetName, String errorMessage)
-    {
-        String failStatus = "now";
-        if (signalConfigs.containsKey(signalName)) {
-            SignalConfig config = signalConfigs.get(signalName);
-            SignalInput si = config.getSignalInput();
-            log.debug("failStatus: " + si);
-            if (si != null) {
-                failStatus = si.getFailBuild();
-                
-            }
-        } else {
-            log.debug("Could not find config for signal: " + signalName);
-        }
-        log.debug("failStatus: " + failStatus);
-        if (failStatus == null || failStatus.equals("now")) {
-            log.debug("Adding now signal. Signal name is " + signalName);
-            SignalStatusList.getNowSignalList().addSignalStatus(new SignalStatus(signalName,
-                    errorMessage, targetName, new Date()));
-            throw new BuildException(new SignalStatus(signalName,
-                    errorMessage, targetName, new Date()).toString());
-        } else if (failStatus.equals("defer")) {
-            log.debug("Adding deffer signal. Signal name is " + signalName);
-            SignalStatusList.getDeferredSignalList().addSignalStatus(new SignalStatus(
-                    signalName, errorMessage, targetName, new Date()));
-        } else if (failStatus.equals("never")) {
-            log.debug("Adding never signal. Signal name is " + signalName);
-            SignalStatusList.getNeverSignalList().addSignalStatus(new SignalStatus(signalName,
-                    errorMessage, targetName, new Date()));
-        } else if (!failStatus.equals("never")) {
-            SignalStatusList.getNowSignalList().addSignalStatus(new SignalStatus(signalName,
-                    errorMessage, targetName, new Date()));
-            throw new BuildException(new SignalStatus(signalName,
-                    errorMessage, targetName, new Date()).toString());
-        } else {
-            log.debug("Signal " + signalName
-                    + " set to be ignored by the configuration.");
-        }
-    }
-
-    @SuppressWarnings("deprecation")
-    public void checkAndNotify(Target target, Project prj) {
-        String targetName = target.getName();
-        String signalName = "unknown";
-        
-        if (isTargetInSignalConfigList(targetName)) {
-            for (SignalConfig config : getSignalConfigs(targetName))
-            {
-                Vector<Notifier> notifierList = null;
-                TargetCondition targetCondition = config
-                        .getTargetCondition(targetName);
-                String errorMessage = null;
-                String failStatus = null;
-                boolean buildFailed = false;
-                if (targetCondition != null) {
-                    List<String> fileList = getFileList(prj, config.getLogSourceList(),config.getSourceType());
-                    log.debug("targetcondition:" + targetCondition);
-                    Condition condition = getFailureCondition(targetName,
-                            targetCondition, fileList);
-                    errorMessage = targetCondition.getMessage();
-                    String refid = config.getConfigId();
-                    log.debug("refid:" + refid);
-                    Object  configCurrent = prj.getReference(refid);
-                    if (configCurrent != null && configCurrent instanceof SignalConfig) {
-                        signalName = refid;
-                    }
-                    log.debug("checkAndNotify:signalName: " + signalName);
-                    notifierList = config.getSignalInput().getSignalNotifierList();
-                    if (notifierList == null) {
-                        Object obj = (Object) prj
-                                .getReference(DEFAULT_NOTIFIER_LIST_REFID);
-                        if (obj instanceof SignalNotifierList) {
-                            notifierList = ((SignalNotifierList) obj)
-                                    .getNotifierList();
-                        }
-                    }
-                    failStatus = config.getSignalInput().getFailBuild();
-                    log.debug("checkAndNotify:failStatus:" + failStatus);
-                    buildFailed = condition != null;
-                    sendNotify(notifierList, signalName, buildFailed,
-                            fileList);
-                }
-                if (buildFailed) {
-                    if (failStatus == null || failStatus.equals("now")) {
-                        log.debug("Adding now signal. Signal name is " + signalName);
-                        SignalStatusList.getNowSignalList().addSignalStatus(new SignalStatus(signalName,
-                                errorMessage, targetName, new Date()));
-                        throw new BuildException(new SignalStatus(signalName,
-                                errorMessage, targetName, new Date()).toString());
-                    } else if (failStatus.equals("defer")) {
-                        log.debug("Signal " + signalName + " will be deferred.");
-                        SignalStatusList.getDeferredSignalList().addSignalStatus(new SignalStatus(
-                                signalName, errorMessage, targetName, new Date()));
-                    } else if (failStatus.equals("never")) {
-                        log.debug("Adding never signal. Signal name is " + signalName);
-                        SignalStatusList.getNeverSignalList().addSignalStatus(new SignalStatus(signalName,
-                                errorMessage, targetName, new Date()));
-                    } else if (!failStatus.equals("never")) {
-                        SignalStatusList.getNowSignalList().addSignalStatus(new SignalStatus(signalName,
-                                errorMessage, targetName, new Date()));
-                        throw new BuildException(new SignalStatus(signalName,
-                                errorMessage, targetName, new Date()).toString());
-                    } else {
-                        log.debug("Signal " + signalName
-                                + " set to be ignored by the configuration.");
-                    }
-                }
-            }
-        }
-    }
-
-    private List<String> getFileList(Project project, Vector<LogSource>sourceList,
-            String sourceType) {
-        List<String> fileList = new ArrayList<String>();
-        if (sourceList != null) {
-            for (LogSource l : sourceList)
-            {
-                File file = l.getFilename();
-                if (file != null && file.exists()) {
-                    fileList.add(project.replaceProperties(file.toString()));
-                }
-                if (sourceType == null || !sourceType.equals("combined")) {
-                    break;
-                    }
-            }
-        }
-        return fileList;
-    }
-    
-    private Condition getFailureCondition(String targetName,
-            TargetCondition targetCondition, List<String> fileList) {
-        Condition retCondition = null;
-        
-        for (Condition condition : targetCondition.getConditions()) {
-            log.debug("SignalList:getErrorMessage:" + condition.eval());
-            if (condition.eval()) {
-                retCondition = condition;
-                break;
-            }
-        }
-        return retCondition;
-    }
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/signaling/src/com/nokia/helium/signal/ant/SignalListener.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,118 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-
-package com.nokia.helium.signal.ant;
-
-import org.apache.tools.ant.BuildListener;
-
-import org.apache.tools.ant.BuildEvent;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.BuildException;
-import org.apache.log4j.Logger;
-
-/**
- * Listener class that can connect to Ant and log information regarding to build
- * times, number of errors and such. Data is sent to Diamonds server, where it
- * is processed further.
- * 
- * This class is listening all build related events. It catches the build
- * start-finish, target start-finish events of Ant and gather build start-end
- * time, errors/warnings and store in BuildData class. Stored data will be
- * exported to XML and uploaded to Diamonds server after each specific target.
- * For example after target "create-bom" this class will upload all BOM data to
- * Diamonds.
- * 
- * 
- */
-public class SignalListener implements BuildListener {
-
-    public static final String MODULE_NAME = "signaling";
-    
-    private boolean initialized;
-
-    private SignalList signalList;
-
-    private Project project;
-
-    private Logger log = Logger.getLogger(this.getClass());
-
-    /**
-     * Ant call this function when build start.
-     */
-    public void buildStarted(BuildEvent event) {
-        project = event.getProject();
-    }
-
-    /**
-     * Triggered when a target starts.
-     */
-    public void targetStarted(BuildEvent event) {
-        if (project == null) {
-            project = event.getProject();
-        }
-    }
-
-    private void initialize() {
-        signalList = new SignalList(project);
-        //signalList1 = new SignalList(project);
-    }
-
-    /**
-     * Triggered when a target finishes.
-     */
-    public void targetFinished(BuildEvent event) {
-        if (!initialized) {
-            log.debug("Signaling: Initializing Signaling");
-            initialize();
-            initialized = true;
-        }
-        log.debug("Signaling:targetFinished:sendsignal: " + event.getTarget());
-        try {
-            //boolean status = signalList1.checkAndNotifyFailure(event.getTarget(),event.getProject());
-            //if (!status) {
-            signalList.checkAndNotifyFailure(event.getTarget(),event.getProject());
-            //}
-        } catch (Exception e) {
-            throw new BuildException(e.getMessage(), e);
-        }
-    }
-
-    /**
-     * Triggered when the build finishes.
-     */
-    public void buildFinished(BuildEvent event) {
-    }
-
-    /**
-     * Triggered when a task starts.
-     */
-    public void taskStarted(BuildEvent event) {
-    }
-
-    /**
-     * Triggered when a task finishes.
-     */
-    public void taskFinished(BuildEvent event) {
-    }
-
-    /**
-     * Triggered when a build message is logged.
-     */
-    public void messageLogged(BuildEvent event) {
-    }
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/signaling/src/com/nokia/helium/signal/ant/antlib.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : antlib.xml 
-Part of     : Helium AntLib
-
-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:
-
-============================================================================
--->
-<antlib>
-    <!-- Task definition -->
-    <taskdef name="signal" classname="com.nokia.helium.signal.ant.taskdefs.Signal"/>
-    <taskdef name="clearDeferredFailures" classname="com.nokia.helium.signal.ant.taskdefs.ClearDeferredFailures"/>
-    
-    <!-- Type definition -->
-    <typedef name="hasDeferredFailure" classname="com.nokia.helium.signal.ant.conditions.DeferredFailureCondition"/>
-    <typedef name="signalInput" classname="com.nokia.helium.signal.ant.types.SignalInput"/> 
-    <typedef name="signalConfig" classname="com.nokia.helium.signal.ant.types.SignalConfig"/>
-    <typedef name="signalListenerConfig" classname="com.nokia.helium.signal.ant.types.SignalListenerConfig"/>
-    <typedef name="notifierList" classname="com.nokia.helium.signal.ant.types.SignalNotifierList"/>
-    <typedef name="emailNotifier" classname="com.nokia.helium.signal.ant.types.EMAILNotifier"/>
-    <typedef name="executeTaskNotifier" classname="com.nokia.helium.signal.ant.types.ExecuteTaskNotifier"/>
-    <typedef name="xmlsource" classname="com.nokia.helium.signal.ant.types.XmlSource"/>
-</antlib>
--- a/buildframework/helium/external/helium-antlib/signaling/src/com/nokia/helium/signal/ant/conditions/DeferredFailureCondition.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,84 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-
-package com.nokia.helium.signal.ant.conditions;
-
-import org.apache.tools.ant.taskdefs.condition.Condition;
-import com.nokia.helium.signal.SignalStatus;
-import com.nokia.helium.signal.SignalStatusList;
-
-import org.apache.tools.ant.ProjectComponent;
-
-/**
- * The hasDeferredFailure condition allows you to know if any diferred failure are pending,
- * or simply if a specific kind of failure has been deferred.
- *
- * Check for any pending failure, e.g: 
- * <pre>
- * &lt;condition property="pending.failure"&gt;
- *     &lt;hlm:hasDeferredFailure/&gt;
- * &lt;/condition&gt;
- * </pre>
-
- * Check for a particular pending failure e.g:
- * <pre>
- * &lt;condition property="pending.compile.failure"&gt;
- *     &lt;hlm:hasDeferredFailure name="compileSignal"/&gt;
- * &lt;/condition&gt;
- * </pre>
- * @ant.type name="hasDeferredFailure" category="Signaling"
- * 
- */
-public class DeferredFailureCondition extends ProjectComponent implements
-        Condition {
-
-    private String name;
-
-    /**
-     * Set the signal name.
-     * @ant.not-required Ignored by default
-     */
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    /**
-     * Evaluate to true if name is not defined and has any pending failure. Or
-     * if name is defined and has any pending failure with that particular
-     * signal name.
-     */
-    public boolean eval() {
-        if (name != null) {
-            getProject().log("Has deferred " + name + " failure?");
-            for (SignalStatus signal : SignalStatusList.getDeferredSignalList().getSignalStatusList()) {
-                if (signal.getName().equals(name)) {
-                    getProject().log("Failure " + name + " found.");
-                    return true;
-                }
-            }
-        } else {
-            getProject().log(
-                    "Deferred failure: "
-                            + ((SignalStatusList.getDeferredSignalList().hasSignalInList()) ? "Yes"
-                                    : "No"));
-            return SignalStatusList.getDeferredSignalList().hasSignalInList();
-        }
-        return false;
-    }
-
-}
--- a/buildframework/helium/external/helium-antlib/signaling/src/com/nokia/helium/signal/ant/helium.antlib.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : libs.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="libs-signal" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
-    <description>
-        Ant task definition declarations.
-    </description>
-    <taskdef resource="com/nokia/helium/core/ant/antlib.xml" uri="http://www.nokia.com/helium"/>
-    <taskdef resource="com/nokia/helium/signal/ant/antlib.xml" uri="http://www.nokia.com/helium"/>
-
-    <typedef name="signalstatusdef" classname="com.nokia.helium.signal.ant.types.SignalStatusDef" uri="http://www.nokia.com/helium"/>
-    <typedef name="exceptionsignal" classname="com.nokia.helium.signal.ant.types.SignalExceptionHandler" uri="http://www.nokia.com/helium"/>
-    <typedef name="buildfailmessage" classname="com.nokia.helium.signal.SignalExceptionMessage" uri="http://www.nokia.com/helium"/>
-    <typedef name="buildneverfailmessage" classname="com.nokia.helium.signal.SignalNeverFailMessage" uri="http://www.nokia.com/helium"/>
-
-    <hlm:deflist id="helium-signaling.list">
-        <hlm:listenerdef classname="com.nokia.helium.signal.ant.SignalListener" />
-        <hlm:signalstatusdef/>
-        <hlm:exceptionsignal/>
-        <hlm:buildfailmessage/>
-        <hlm:buildneverfailmessage/>
-    </hlm:deflist>
-</project>
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/signaling/src/com/nokia/helium/signal/ant/taskdefs/ClearDeferredFailures.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-
-package com.nokia.helium.signal.ant.taskdefs;
-
-import org.apache.tools.ant.Task;
-import com.nokia.helium.signal.SignalStatusList;
-
-/**
- * This class implements a task that clear all pending failure. It is quite
- * useful for testing.
- */
-public class ClearDeferredFailures extends Task {
-
-    /**
-     * Does the cleaning.
-     */
-    @Override
-    public void execute() {
-        log("Clearing all pending failures.");
-        SignalStatusList.getDeferredSignalList().clearStatusList();
-    }
-
-}
--- a/buildframework/helium/external/helium-antlib/signaling/src/com/nokia/helium/signal/ant/taskdefs/Signal.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,189 +0,0 @@
-/*
- * Copyright (c) 2007-2008 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:  
- *
- */
-
-package com.nokia.helium.signal.ant.taskdefs;
-
-import org.apache.tools.ant.BuildException;
-//import org.apache.tools.ant.Project;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.Task;
-import org.apache.tools.ant.Target;
-import java.util.Vector;
-import com.nokia.helium.signal.ant.SignalList;
-import com.nokia.helium.signal.ant.types.SignalNotifierInput;
-import com.nokia.helium.signal.ant.types.SignalConfig;
-
-/**
- * This task provide a way to raise a signal.
- * If the provided result is different from 0 then the mentioned signal
- * is raised.
- * 
- * You can emit a signal based from the signal task, its behavior will get defined by the
- * nested signalInput element. e.g:
- * <pre>
- * &lt;target name=&quot;raise-signal&quot;&gt;
- *   &lt;-- Some computation that sets result property --&gt;
- *   &lt;property name=&quot;result&quot; value=&quot;1&quot;/&gt;
- *   
- *   &lt;hlm:signal name=&quot;compileSignal&quot; result=&quot;${result}&quot;&gt;
- *       &lt;-- Let's refer to some existing signal input configuration --&gt;
- *       &lt;hlm:signalInput refid=&quot;testDeferredSignalInput&quot; /&gt;
- *   &lt;/hlm:signal&gt;
- * &lt;/target&gt;
- * </pre>
-
- * The following usage of the task has now been depreciated. 
- * <pre>
- * &lt;target name=&quot;raise-signal&quot;&gt;
- *   &lt;-- Some computation that sets result property --&gt;
- *   &lt;property name=&quot;result&quot; value=&quot;1&quot;/&gt;
- *   
- *   &lt;hlm:signal name=&quot;compileSignal&quot; result=&quot;${result}&quot;/&gt;
- * &lt;/target&gt;
- * </pre>
- * 
- * The execution of the <code>signal</code> task will behave depending on the <code>compileSignal</code> configuration,
- * if not defined the build will fail.
- * 
- * @ant.task name="signal" category="Signaling"
- */
-public class Signal extends Task {
-
-    private String name;
-    private String message;
-    private Integer result;
-
-    private Vector<SignalNotifierInput> signalNotifierInputs = new Vector<SignalNotifierInput>();
-    
-    public String getMessage() {
-        return message;
-    }
-
-    /**
-     * Helper function called by ant to create the new signalinput
-     */
-    public SignalNotifierInput createSignalNotifierInput() {
-        SignalNotifierInput input =  new SignalNotifierInput();
-        add(input);
-        return input;
-    }
-
-    public SignalNotifierInput getSignalNotifierInput() {
-        return (SignalNotifierInput)signalNotifierInputs.elementAt(0);
-    }
-    /**
-     * Helper function to add the created signalinput
-     * @param filter to be added to the filterset
-     */
-    public void add(SignalNotifierInput input) {
-        signalNotifierInputs.add(input);
-    }
-    
-    
-    /**
-     * Error message.
-     * 
-     * @ant.not-required
-     */
-    public void setMessage(String message) {
-        this.message = message;
-    }
-
-
-    public String getName() {
-        return name;
-    }
-
-    /**
-     * Signal name to emit.
-     * 
-     * @ant.required
-     */
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    /**
-     * integer value representing the number of errors.
-     * 
-     * @ant.required
-     */
-    public void setResult(int result) {
-        this.result = new Integer(result);
-    }
-
-    @Override
-    public void execute() {
-        if (name == null)
-            throw new BuildException("'name' attribute is not defined.");
-        if (result == null) {
-            result = new Integer(0);
-        }
-
-        SignalList signalList = new SignalList(getProject());
-        boolean failStatus = result.intValue() != 0; 
-        if (failStatus) {
-            // keep same message as earlier.
-            log(name
-                    + ": "
-                    + name
-                    + " signal failed. Expected result was 0, actual result was "
-                    + result);
-
-            if (message == null) {
-                message = "Expected result was 0, actual result was " + result;
-            }
-        }
-        
-        // notify the user
-        String targetName = "signalExceptionTarget";  
-        Target target = this.getOwningTarget();
-        if (target != null) {
-            targetName = target.getName();
-        }
-
-        if (signalNotifierInputs.isEmpty()) {
-            log(
-                "Configuring a signal based on signalConfig is now deprecated. Please consider using nested signalInput.",
-                Project.MSG_WARN);
-            
-            Object config = getProject().getReference(name);
-            if (config == null || !(config instanceof SignalConfig)) {
-                throw new BuildException("Could not find signal config for signal name: " + name);
-            }
-            signalList.sendSignal(getName(), result.intValue() != 0);
-            if (result.intValue() != 0) {
-                // keep same message as earlier.
-                log(name
-                        + ": "
-                        + name
-                        + " signal failed. Expected result was 0, actual result was "
-                        + result);
-
-                if (message == null) {
-                    message = "Expected result was 0, actual result was " + result;
-                }
-                signalList.fail(getName(), this.getOwningTarget().getName(), message);
-            }
-            
-        } else {
-            signalList.processForSignal(getProject(), getSignalNotifierInput(), getName(),
-                targetName, message, failStatus);
-        }
-    }
-
-}
--- a/buildframework/helium/external/helium-antlib/signaling/src/com/nokia/helium/signal/ant/types/EMAILNotifier.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,332 +0,0 @@
-/*
- * Copyright (c) 2007-2008 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:  
- *
- */
-
-package com.nokia.helium.signal.ant.types;
-
-import com.nokia.helium.core.EmailDataSender;
-import java.util.Iterator;
-import com.nokia.helium.core.PropertiesSource;
-import com.nokia.helium.core.TemplateInputSource;
-import com.nokia.helium.core.XMLTemplateSource;
-import com.nokia.helium.signal.Notifier;
-import com.nokia.helium.signal.ant.SignalListener;
-import com.nokia.helium.core.TemplateProcessor;
-import com.nokia.helium.core.HlmAntLibException;
-import java.util.List;
-import java.util.Hashtable;
-import java.util.ArrayList;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.types.DataType;
-import org.apache.log4j.Logger;
-import java.io.File;
-
-/**
- * The emailNotifier provides you an easy way to send a you and email containing
- * the summary of a build failure.
- * 
- * @ant.type name="emailNotifier" category="Signaling"
- */
-public class EMAILNotifier extends DataType implements Notifier {
-
-    private Logger log = Logger.getLogger(EmailDataSender.class);
-    private TemplateProcessor templateProcessor = new TemplateProcessor();
-    private File defaultTemplate;
-    private File templateSrc; // Deprecated    
-    private String title;
-    private String smtp;
-    private String ldap;
-    private String rootdn;
-    private String notifyWhen = "never";
-    private String from;
-    private String additionalRecipients;
-
-    /**
-     * Rendering the template, and sending the result through email.
-     * @deprecated
-     * @param signalName
-     *            - Name of the signal that has been raised.
-     */
-    @SuppressWarnings("unchecked")
-    public void sendData(String signalName, boolean failStatus,
-            List<String> fileList) {
-        if (notifyWhen != null
-                && (notifyWhen.equals("always") || (notifyWhen.equals("fail") && failStatus)
-                        || (notifyWhen.equals("pass") && !failStatus))) {
-            if (templateSrc == null) {
-                throw new HlmAntLibException(SignalListener.MODULE_NAME,
-                        "templateSrc attribute has not been defined.");
-            }
-
-            if (title == null) {
-                throw new HlmAntLibException(SignalListener.MODULE_NAME,
-                        "title attribute has not been defined.");
-            }
-
-            if (smtp == null) {
-                throw new HlmAntLibException(SignalListener.MODULE_NAME,
-                        "smtp attribute has not been defined.");
-            }
-
-            if (ldap == null) {
-                throw new HlmAntLibException(SignalListener.MODULE_NAME,
-                        "ldap attribute has not been defined.");
-            }
-
-            log.debug("Sending data by e-mail.");
-            File emailOutputFile;
-            try {
-                emailOutputFile = File.createTempFile("helium_", "email.html");
-                emailOutputFile.deleteOnExit();
-                log.debug("sending data by e-mail:outputDir: "
-                        + emailOutputFile.getAbsolutePath());
-
-                List<TemplateInputSource> sourceList = new ArrayList<TemplateInputSource>();
-                sourceList.add(new PropertiesSource("ant", getProject()
-                        .getProperties()));
-                Iterator iter = fileList.iterator();
-                String sourceBaseName = "doc";
-                int count = 0;
-                while (iter.hasNext()) {
-                    String srcFile = (String) iter.next();
-                    sourceList.add(new XMLTemplateSource(sourceBaseName + count, 
-                            new File(srcFile)));
-                    count++;
-                }
-                Hashtable<String, String> signalProperties = new Hashtable<String, String>();
-                signalProperties.put("signal.name", signalName);
-                signalProperties.put("signal.status", "" + failStatus);
-                sourceList.add(new PropertiesSource("signaling",
-                        signalProperties));
-
-                templateProcessor.convertTemplate(templateSrc, emailOutputFile,
-                        sourceList);
-                EmailDataSender emailSender;
-                if (rootdn != null)
-                {
-                    String[] to = null;
-                    if (additionalRecipients != null)
-                    {
-                        to = additionalRecipients.split(",");
-                    }
-                    emailSender = new EmailDataSender(to, smtp, ldap, rootdn);
-                }
-                else
-                {
-                    emailSender = new EmailDataSender(
-                        additionalRecipients, smtp, ldap);
-                }
-                if (from != null)
-                {
-                    emailSender.setFrom(from);
-                }
-                log.debug("EmailNotifier:arlist: " + additionalRecipients);
-                Project subProject = getProject().createSubProject();
-                subProject.setProperty("signal.name", signalName);
-                subProject.setProperty("signal.status", "" + failStatus);
-                emailSender.addCurrentUserToAddressList();
-                emailSender.sendData("signaling", emailOutputFile
-                        .getAbsolutePath(), "application/html", subProject
-                        .replaceProperties(title), null);
-            } catch (Exception e) {
-                log.debug("EmailNotifier:exception: ", e);
-            }
-        }
-    }
-            
-    
-    /**
-     * Rendering the template, and sending the result through email.
-     * 
-     * @param signalName - is the name of the signal that has been raised.
-     * @param failStatus - indicates whether to fail the build or not
-     * @param notifierInput - contains signal notifier info
-     * @param message - is the message from the signal that has been raised. 
-     */
-
-    @SuppressWarnings("unchecked")
-    public void sendData(String signalName, boolean failStatus,
-            NotifierInput notifierInput, String message ) {
-        if (notifyWhen != null
-                && (notifyWhen.equals("always") || (notifyWhen.equals("fail") && failStatus)
-                        || (notifyWhen.equals("pass") && !failStatus))) {
-            if (title == null) {
-                throw new HlmAntLibException(SignalListener.MODULE_NAME,
-                        "title attribute has not been defined.");
-            }
-
-            if (smtp == null) {
-                throw new HlmAntLibException(SignalListener.MODULE_NAME,
-                        "smtp attribute has not been defined.");
-            }
-
-            if (ldap == null) {
-                throw new HlmAntLibException(SignalListener.MODULE_NAME,
-                        "ldap attribute has not been defined.");
-            }
-            
-            String smtpUpdated = getProject().replaceProperties(smtp);
-            String ldapUpdated = getProject().replaceProperties(ldap);
-            String rootdnUpdated = getProject().replaceProperties(rootdn);
-            String additionalRecipientsUpdated = getProject().replaceProperties(additionalRecipients);
-
-            log.debug("Sending data by e-mail.");
-                EmailDataSender emailSender;
-                if (rootdnUpdated != null)
-                {
-                    String[] to = null;
-                    if (additionalRecipientsUpdated != null)
-                    {
-                        to = additionalRecipientsUpdated.split(",");
-                    }
-                    emailSender = new EmailDataSender(to, smtpUpdated, ldapUpdated, rootdnUpdated);
-                }
-                else
-                {
-                    emailSender = new EmailDataSender(
-                        additionalRecipientsUpdated, smtpUpdated, ldapUpdated);
-                }
-                if (from != null)
-                {
-                    emailSender.setFrom(from);
-                }
-                log.debug("EmailNotifier:arlist: " + additionalRecipientsUpdated);
-                Project subProject = getProject().createSubProject();
-                subProject.setProperty("signal.name", signalName);
-                subProject.setProperty("signal.status", "" + failStatus);
-                subProject.setProperty("signal.message", "" + message);
-                
-                emailSender.addCurrentUserToAddressList();
-                String filePath = "";
-                File fileToSend = null;
-                if (notifierInput != null) {
-                    fileToSend = notifierInput.getFile(".*.html");
-                    if (fileToSend != null) {
-                        filePath = fileToSend.toString();
-                    }
-                    
-                } 
-                if (fileToSend == null) {
-                    File emailOutputFile;
-                    try {
-                        emailOutputFile = File.createTempFile("helium_", "email.html");
-                        emailOutputFile.deleteOnExit();
-                        log.debug("sending data by e-mail:outputDir: "
-                                + emailOutputFile.getAbsolutePath());
-
-                        List<TemplateInputSource> sourceList = new ArrayList<TemplateInputSource>();
-                        sourceList.add(new PropertiesSource("ant", getProject()
-                                .getProperties()));
-                        Hashtable<String, String> signalProperties = new Hashtable<String, String>();
-                        signalProperties.put("signal.name", signalName);
-                        signalProperties.put("signal.status", "" + failStatus);
-                        signalProperties.put("signal.message", "" + message);
-                        sourceList.add(new PropertiesSource("signaling",
-                                signalProperties));
-
-                        templateProcessor.convertTemplate(defaultTemplate, emailOutputFile,
-                                sourceList);
-                        filePath = emailOutputFile.toString();
-                    } catch (Exception e) {
-                        log.debug("EmailNotifier:exception: ", e);
-                    }
-                }
-                emailSender.sendData("signaling", filePath, 
-                        "application/html", subProject
-                        .replaceProperties(title), null);
-        }
-    }
-
-    /**
-     * Set when the notifier should emit the massage. Possible values are: never, always, fail, pass.
-     * @ant.not-required Default is never.
-     */
-    public void setNotifyWhen(String ntfyWhen) {
-        notifyWhen = ntfyWhen;
-    }
-
-    public String getNotifyWhen() {
-        return notifyWhen;
-    }
-
-    /**
-     * Define the template source file to use while rendering the message.
-     * 
-     * @ant.required
-     */
-    public void setDefaultTemplate(File template) {
-        this.defaultTemplate = template;
-    }
-
-    /**
-     * Define the template source file to use while rendering the message.
-     * @deprecated
-     * @ant.required
-     */
-    public void setTemplateSrc(File template) {
-        this.templateSrc = template;
-    }
-    
-    /**
-     * The title of the email.
-     * 
-     * @ant.required
-     */
-    public void setTitle(String title) {
-        this.title = title;
-    }
-
-    /**
-     * The STMP server address.
-     * 
-     * @ant.required
-     */
-    public void setSmtp(String smtp) {
-        this.smtp = smtp;
-    }
-    
-    /**
-     * Who the email is sent from.
-     * 
-     * @ant.not-required
-     */
-    public void setFrom(String from) {
-        this.from = from;
-    }
-
-    /**
-     * Comma separated list of additional email addresses.
-     * 
-     * @ant.not-required
-     */
-    public void setAdditionalRecipients(String ar) {
-        this.additionalRecipients = ar;
-    }
-
-    /**
-     * The LDAP server URL.
-     * 
-     * @ant.required
-     */
-    public void setLdap(String ldap) {
-        this.ldap = ldap;
-    }
-    
-    public void setRootdn(String rootdn) {
-        this.rootdn = rootdn;
-    }
-
-}
--- a/buildframework/helium/external/helium-antlib/signaling/src/com/nokia/helium/signal/ant/types/ExecuteTaskNotifier.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,114 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-
-package com.nokia.helium.signal.ant.types;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Vector;
-
-import org.apache.log4j.Logger;
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.BuildListener;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.Task;
-import org.apache.tools.ant.TaskContainer;
-import org.apache.tools.ant.types.DataType;
-
-import com.nokia.helium.signal.Notifier;
-
-/**
- * This notifier allows you to execute a task sequence when a specific signal
- * is raised.
- * 
- * Task are executed in a subproject, and the 'signal.name' property is set
- * to the emit signal name. The 'signal.status' property will contains the 
- * status of the signal. Finally the 'signal.notifier.inputs' property will
- * contains the list of NotifierInput passed to this Notifier.
- * 
- * If an error occur during the execution of the task sequence it will get ignored.
- * 
- * E.g:
- * <pre>
- * &lt;hlm:executeTaskNotifier&gt;
- *    &lt;echo&gt;Something goes wrong, signal ${signal.name} has been raised.&lt;/echo&gt;
- * &lt;/hlm:executeTaskNotifier&gt;
- * </pre>
- * 
- * @ant.type name="executeTaskNotifier" category="Signaling"
- */
-@SuppressWarnings("deprecation")
-public class ExecuteTaskNotifier extends DataType implements Notifier,
-        TaskContainer {
-
-    private Logger log = Logger.getLogger(ExecuteTaskNotifier.class);
-    private List<Task> tasks = new ArrayList<Task>();
-
-    /**
-     * Method executes a series of given tasks on raising of the specified signal.
-     * 
-     * @param signalName is the name of the signal that has been raised.
-     * @param failStatus indicates whether to fail the build or not
-     * @param notifierInput contains signal notifier info
-     * @param message is the message from the signal that has been raised.           
-     */
-    @SuppressWarnings("unchecked")
-    public void sendData(String signalName, boolean failStatus,
-            NotifierInput notifierInput, String message ) {
-        try {
-            // Configure the project
-            Project prj = getProject().createSubProject();
-            prj.initProperties();
-            prj.setInputHandler(getProject().getInputHandler());
-            for (BuildListener bl : (Vector<BuildListener>)getProject().getBuildListeners()) {
-                prj.addBuildListener(bl);
-            }
-            getProject().copyUserProperties(prj);
-            
-            
-            prj.setProperty("signal.name", signalName);
-            prj.setProperty("signal.status", "" + failStatus);
-            prj.setProperty("signal.message", message );
-            // Converting the list of inputs into a string.
-            String inputs = "";
-            if (notifierInput != null) {
-                inputs += notifierInput.getFile().toString();
-            }
-            prj.setProperty("signal.notifier.inputs", inputs);
-            for (Task task : tasks) {
-                log.debug("Executing task: " + task.getTaskName());
-                task.setProject(prj);
-                task.perform();
-            }
-        } catch (BuildException e) {
-            // We are Ignoring the errors as no need to fail the build.
-            log.debug(e.toString(), e);
-        }
-    }
-
-    @Override
-    public void addTask(Task task) {
-        log.debug("Adding task: " + task.getTaskName());
-        tasks.add(task);
-    }
-
-    @Override
-    public void sendData(String signalName, boolean failStatus, List fileList) {        
-    }
-
-}
--- a/buildframework/helium/external/helium-antlib/signaling/src/com/nokia/helium/signal/ant/types/FailBuildEnum.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-package com.nokia.helium.signal.ant.types;
-
-import org.apache.tools.ant.types.EnumeratedAttribute;
-
-/**
- * Enum class for the failbuild attribute.
- */
-public class FailBuildEnum extends EnumeratedAttribute {
-
-    /**
-     * @return the list of allowed values.
-     */
-    @Override
-    public String[] getValues() {
-        String[] values = new String[3];
-        values[0] = "now";
-        values[1] = "defer";
-        values[2] = "never";
-        return values;
-    }
-}
--- a/buildframework/helium/external/helium-antlib/signaling/src/com/nokia/helium/signal/ant/types/LogSourceList.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
- 
-package com.nokia.helium.signal.ant.types;
-
-import org.apache.tools.ant.types.DataType;
-import com.nokia.helium.core.LogSource;
-import org.apache.tools.ant.BuildException;
-
-import java.util.Vector;
-
-    
-/**
- * This type is used by the signalConfig to store a list of 
- * LogSource that will get passed to the notifiers.
- * 
- * @ant.type name="sources" category="Signaling"
- * 
- */
-public class LogSourceList extends DataType {
-
-    private Vector<LogSource> sourceList = new Vector<LogSource>();
-    
-    private String type;
-    
-    /**
-     * Creates a type of LogSource.
-     * @return logsource which will be processed during signaling.
-     */
-    public LogSource createLogSource() {
-        LogSource source =  new LogSource();
-        add(source);
-        return source;
-    }
-    
-    /**
-     * Adding a logsource to signal config.
-     * @param logsource
-     */
-    public void add(LogSource logSource) {
-        sourceList.add(logSource);
-    }
-
-    public void setType(String sourcesType) {
-        type = sourcesType; 
-    }
-    /**
-     * Returns the list of logsource available 
-     * @return logsource list
-     */
-    public Vector<LogSource> getLogSourceList() {
-        if (sourceList.isEmpty()) {
-            throw new BuildException("Signal notifierlist is empty.");
-        }
-        return sourceList;
-    }
-
-    public String getSourceType() {
-        return type;
-    }    
-}
--- a/buildframework/helium/external/helium-antlib/signaling/src/com/nokia/helium/signal/ant/types/NotifierInput.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,128 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
- 
-package com.nokia.helium.signal.ant.types;
-
-
-import java.io.File;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Vector;
-import org.apache.tools.ant.types.DataType;
-import org.apache.tools.ant.types.FileSet;
-import org.apache.tools.ant.DirectoryScanner;
-import org.apache.log4j.Logger;
-
-/**
- * Helper class to store the signal notifier info.
- */
-public class NotifierInput extends DataType
-{
-
-    private File file;
-
-    //Different notifier could choose specific file
-    private String pattern = ".html";
-
-    private Vector<FileSet> fileSetList = new Vector<FileSet>();
-
-    private Logger log = Logger.getLogger(this.getClass());
-
-    /**
-     * Adds the fileset (list of input log files to be processed).
-     *  @param fileSet fileset to be added
-     * 
-     */
-    public void add(FileSet fileSet) {
-        fileSetList.add(fileSet);
-    }   
-
-    public File getFile() {
-        return getFile(pattern);
-    }
-    
-    /**
-     * Return a file from the input fileset.
-     *  @param pattern pattern to match from the input fileset
-     *  @return the matched files including the base dir. 
-     */
-    public File getFile(String pattern) {
-        File fileToReturn = null;
-        if (file != null) {
-            if (file.toString().matches(pattern)) {
-                fileToReturn = file;
-            }
-            return fileToReturn;
-        }
-        for (FileSet fs : fileSetList) {
-            DirectoryScanner ds = fs.getDirectoryScanner(getProject());
-            String[] includedFiles = ds.getIncludedFiles();
-            for ( String filePath : includedFiles ) {
-                if (filePath.matches(pattern)) {
-                    fileToReturn = new File(ds.getBasedir(), filePath);
-                    log.debug("matched file for pattern: " + pattern + ":" + fileToReturn);
-                    break;
-                }
-            }
-        }
-        return fileToReturn;
-    }
-
-    /**
-     * Returns the list of filelist from the input fileset.
-     *  @param pattern pattern to match from the input fileset
-     *  @return the matched files including the base dir. 
-     */
-    public List<File> getFileList(String pattern) {
-        List<File> fileList = new ArrayList<File>();
-        for (FileSet fs : fileSetList) {
-            DirectoryScanner ds = fs.getDirectoryScanner(getProject());
-            String[] includedFiles = ds.getIncludedFiles();
-            for ( String filePath : includedFiles ) {
-                if (filePath.matches(pattern)) {
-                    fileList.add(new File(ds.getBasedir(), filePath));
-                }
-            }
-        }
-        return fileList;
-    }
-
-    /**
-     * Helper function called by ant to set the input file.
-     * @param inputFile input file for notifier
-     */
-    public void setFile(File inputFile) {
-        file = inputFile;
-    }
-
-    /**
-     * Helper function called by ant to get the file
-     * @return the input file for notifier.
-     */
-    public String getPattern() {
-        return pattern ;
-    }
-
-    /**
-     * Helper function called by ant to get the file
-     * @return the input file for notifier.
-     */
-    public void setPattern(String ptn) {
-        pattern = ptn;
-    }
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/signaling/src/com/nokia/helium/signal/ant/types/SMSNotifier.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
- 
-package com.nokia.helium.signal.ant.types;
-
-
-import org.apache.tools.ant.types.DataType;
-import com.nokia.helium.signal.Notifier;
-import java.util.List;
-
-public class SMSNotifier extends DataType implements Notifier {
-
-    public SMSNotifier() {
-    }
-    /**
-     * Sends the data to the requested sender list with specified notifier
-     * 
-     * @param signalName is the name of the signal that has been raised.
-     * @param failStatus indicates whether to fail the build or not
-     * @param notifierInput contains signal notifier info
-     * @param message is the message from the signal that has been raised.           
-     */
-    public void sendData(String signalName, boolean failStatus,
-            NotifierInput notifierInput, String message ) {
-    }
-
-    /**
-     * Sends the data to the requested sender list with specified notifier
-     * 
-     * @deprecated
-     *    sends the data to the list of requested user.
-     */
-    public void sendData(String signalName, boolean failStatus,
-            List<String> fileList) {
-    }
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/signaling/src/com/nokia/helium/signal/ant/types/SignalConfig.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,223 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
- 
-package com.nokia.helium.signal.ant.types;
-
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.types.DataType;
-
-import com.nokia.helium.core.HlmAntLibException;
-import com.nokia.helium.core.ant.types.ReferenceType;
-import com.nokia.helium.core.LogSource;
-import com.nokia.helium.signal.ant.SignalListener;
-
-import java.util.Set;
-import java.util.Vector;
-import java.util.HashMap;
-
-/**
- * Deprecated: This Ant type defines a signal configuration. Please use signalListenerConfig element or signal task nested element.
- * E.g:
- * <pre>
- * &lt;hlm:signalConfig name="mySignal" &gt;
- *    &lt;hlm:targetCondition name="some-target-name" message="some-target-name triggered a signal" &gt;
- *         &lt;/available file="some-file.txt" /&gt;
- *    &lt;/hlm:targetCondition&gt;
- * &lt;/hlm:signalConfig&gt;
- * </pre>
- *
- * @ant.type name="signalConfig" category="Signaling"
- * @deprecated
- */
-
-public class SignalConfig extends DataType
-{
-   
-    private static boolean warningPrinted;
-    
-    private Vector<ReferenceType> signalInputListRef = new Vector<ReferenceType>();
-    private HashMap<String, TargetCondition> targetConditionsMap = new HashMap<String, TargetCondition>();
-    private Vector<TargetCondition> targetConditions = new Vector<TargetCondition>();
-    
-    private Vector<LogSourceList> sourceList = new Vector<LogSourceList>();
-    
-    private String configID;
-    
-   
-    
-    /**
-     * {@inheritDoc}
-     */
-    public void setProject(Project project) {
-        super.setProject(project);
-        if (!warningPrinted) {
-            getProject().log("signalConfig element is now deprecated. Please consider moving to signalListenerConfig element or" + 
-                " signal task nested element.", Project.MSG_WARN);
-            warningPrinted = true;
-        }
-    }
-    
-    /**
-     * Creates data type ReferenceType and adds to the vector.
-     * @return ReferenceType which is created and stored by the config.
-     */
-    public ReferenceType createInputRef() {
-        ReferenceType inputRef =  new ReferenceType();
-        add(inputRef);
-        return (ReferenceType)inputRef;
-    }
-
-    /**
-     * Adds the reference to the container.
-     * @param ReferenceType to be added to the container
-     */
-    public void add(ReferenceType input) {
-        if (input != null) {
-            signalInputListRef.add(input);
-        }
-    }
-
-
-    /**
-     * Creates data type of list of sources and adds to the sourcelist.
-     * @return sourcelist which is created and stored by the config.
-     */
-    public LogSourceList createSources() {
-        LogSourceList source =  new LogSourceList();
-        add(source);
-        return (LogSourceList)source;
-    }
-
-    /**
-     * Adds the source list to the container.
-     * @param source list to be added to the container
-     */
-    public void add(LogSourceList source) {
-        if (source != null) {
-            if (sourceList.isEmpty()) {
-                sourceList.add(source);
-            }
-        }
-    }
-    
-    public Vector<LogSource> getLogSourceList() {
-        Vector<LogSource> logSource = null;
-        if (!sourceList.isEmpty()) {
-            logSource = sourceList.elementAt(0).getLogSourceList();
-        }
-        return logSource;
-    }
-    
-    public String getSourceType() {
-        if (!sourceList.isEmpty()) {        
-            return sourceList.elementAt(0).getSourceType();
-        }
-        return "default";
-    }
-
-    /**
-     * Creates type target condition of type TargetCondition.
-     * @return ReferenceType which is created and stored by the config.
-     */
-    public TargetCondition createTargetCondition() {
-        TargetCondition condition =  new TargetCondition();
-        add(condition);
-        return (TargetCondition)condition;
-    }
-
-    /**
-     * Helper function to store the config id
-     * @param config id to store.
-     */    
-    public void setConfigId(String confID) {
-        configID = confID;
-    }
-
-    /**
-     * Helper function to return the config id
-     * @return The configuration id
-     */   
-    public String getConfigId() {
-        return configID;
-    }
-
-    /**
-     * Adds the TargetCondition reference to the container.
-     * @param TargetCondition to be added to the container, to be processed during signaling.
-     */    
-    public void add(TargetCondition condition) {
-        if (condition != null) {
-            targetConditions.add(condition);
-        }
-    }    
-
-    /**
-     * Gets the signal input of this config.
-     * @return signal input stored in the config, by dereferencing the input ref. 
-     */    
-    public SignalInput getSignalInput() {
-        if (signalInputListRef == null) {
-            throw new HlmAntLibException(SignalListener.MODULE_NAME,"signalInputList null exception");
-        }
-        ReferenceType inputRef = (ReferenceType)signalInputListRef.elementAt(0);
-        Object obj = inputRef.getReferencedObject();
-        if (obj instanceof SignalInput) {
-            return (SignalInput)obj;
-        }
-        throw new HlmAntLibException(SignalListener.MODULE_NAME,"input type is not of type SignalInput");
-    }
-
-    /**
-     * Helper function to return the TargetCondition matching the target name.
-     * @param String name of the target for which the TargetCondition is returned,
-     */    
-    public TargetCondition getTargetCondition(String targetName) {
-        if (targetConditionsMap.isEmpty()) {
-            initializeTargetConditionsMap();
-        }
-        return targetConditionsMap.get(targetName);
-    }
-
-    /**
-     * Helper function to return the complete target name set of the config.
-     * @return Set, full set of target names referred by this config.
-     * @throws HlmAntLibException
-     */    
-    public Set<String> getTargetNameSet() {
-        if (targetConditionsMap.isEmpty()) {
-            initializeTargetConditionsMap();
-        }
-        return targetConditionsMap.keySet();
-    }
-
-    /**
-     * Initializes the TargetConditionsMap, mapping target name with corresponding TargetCondition
-     * for fast lookup. 
-     */    
-    @SuppressWarnings("deprecation")
-    private void initializeTargetConditionsMap() {
-        java.util.ListIterator<TargetCondition> iter = targetConditions.listIterator();
-        while (iter.hasNext()) {
-            TargetCondition condition = iter.next();
-            String name = condition.getName();
-            if (name != null) {
-                targetConditionsMap.put(name, condition);
-            }
-        }
-    }
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/signaling/src/com/nokia/helium/signal/ant/types/SignalExceptionHandler.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
- 
-package com.nokia.helium.signal.ant.types;
-import net.sf.antcontrib.logic.RunTargetTask;
-import org.apache.tools.ant.Project;
-import com.nokia.helium.core.ant.HlmExceptionHandler;
-import com.nokia.helium.signal.ant.taskdefs.*;
-import com.nokia.helium.signal.ant.SignalListener;
-import org.apache.log4j.Logger;
-
-
-/**
- * Class to store the status of the signal of a particular target.
- */
-public class SignalExceptionHandler implements HlmExceptionHandler
-{
-    private Logger log = Logger.getLogger(SignalListener.class);
-    
-    /**
-     * This post action will fail the build if any pending failure exists. 
-     * @throws BuildException
-     */
-    public void handleException(Project project, String module, Exception e) {
-        String exceptionTarget = project.getProperty("exceptions.target");
-        if (exceptionTarget != null) {
-            RunTargetTask runTargetTask = new RunTargetTask();
-            runTargetTask.setProject(project);
-            runTargetTask.setTarget(exceptionTarget);
-            runTargetTask.execute();
-        }
-   }
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/signaling/src/com/nokia/helium/signal/ant/types/SignalInput.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,135 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
- 
-package com.nokia.helium.signal.ant.types;
-
-
-import java.util.Vector;
-
-import org.apache.tools.ant.types.DataType;
-import com.nokia.helium.core.ant.types.ReferenceType;
-import org.apache.log4j.Logger;
-
-import com.nokia.helium.signal.Notifier;
-
-import org.apache.tools.ant.BuildException;
-
-/**
- * SignalInput class which is a type to store input for signals
- * Signals..
- * &lt;targetCondition&gt;
- *    &lt;hasSeverity severity="error" file="${build.cache.log.dir}/signals/prep_work_status.xml" /&gt;
- * &lt;/targetCondition&gt;
- * 
- */
-public class SignalInput extends DataType
-{
-    private Vector<ReferenceType> notifierListRef = new Vector<ReferenceType>();
-
-    private Vector<NotifierInput> notifierInputList = new Vector<NotifierInput>();
-
-    // By default it is configured to fail the build.
-    private String failBuild = "now";
-
-    private Logger log = Logger.getLogger(SignalInput.class);
-
-    
-    /**
-     * Helper function called by ant to set the failbuild type
-     * @param failBuild type of failure for this input.
-     */
-    public void setFailBuild(FailBuildEnum failInput) {
-        failBuild = failInput.getValue();
-    }
-
-    /**
-     * Helper function called by ant to set the failbuild type
-     * @param failBuild type of failure for this input.
-     */
-    public String getFailBuild() {
-        return failBuild;
-    }
-
-    /**
-     * Helper function called by ant to create a new notifier for
-     * this input.
-     * @return ReferenceType created ReferenceType.
-     */    
-    public NotifierInput createNotifierInput() {
-        NotifierInput notifierInput =  new NotifierInput();
-        add(notifierInput);
-        return notifierInput;
-    }
-
-    /**
-     * Adds the created notifier to the list
-     * @param ReferenceType notifier to be added to the list.
-     */    
-    public void add(NotifierInput notifierInput) {
-        if (notifierInput != null) {
-            notifierInputList.add(notifierInput);
-        }
-    }
-    
-    /**
-     * Helper function called by ant to create a new notifier for
-     * this input.
-     * @return ReferenceType created ReferenceType.
-     */    
-    public ReferenceType createNotifierListRef() {
-        ReferenceType notifierRef =  new ReferenceType();
-        add(notifierRef);
-        return notifierRef;
-    }
-
-    /**
-     * Adds the created notifier to the list
-     * @param ReferenceType notifier to be added to the list.
-     */    
-    public void add(ReferenceType notifier) {
-        if (notifier != null) {
-            notifierListRef.add(notifier);
-        }
-    }
-    
-    public Vector<NotifierInput> getNotifierInput() {
-        return notifierInputList;
-    }
-    
-    /**
-     * Gets the NotifierList associated with this input. If the
-     * notifier list reference is empty then it throws exception. 
-     * @return List of notifier associated with this input.
-     * @throws HlmAntLibException
-     */    
-    public Vector<Notifier> getSignalNotifierList() {
-        Vector<Notifier> notifierList = null;
-        if (notifierListRef != null) {
-            log.debug("getSignalNotifierList:list.size:" + notifierListRef.size());
-            for (ReferenceType notifierRef : notifierListRef) {
-                Object obj = notifierRef.getReferencedObject();
-                if (obj instanceof SignalNotifierList) {
-                    notifierList = ((SignalNotifierList)obj).getNotifierList();
-                    break;
-                }
-            }
-            return notifierList;
-        }
-        throw new BuildException("No signal notifierlist reference defined.");
-    }    
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/signaling/src/com/nokia/helium/signal/ant/types/SignalListenerConfig.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,182 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
- 
-package com.nokia.helium.signal.ant.types;
-
-import org.apache.tools.ant.types.DataType;
-import java.util.Vector;
-
-/**
- * This Ant type defines a signal input for listener based signals.
- *
- * E.g:
- * <pre>
- * &lt;hlm:signalListenerConfig id="prepSignal" target="prep-signal-test" message="some-target-name triggered a signal" &gt;
- *    &lt;hlm:targetCondition  &gt;
- *         &lt;/available file="some-file.txt" /&gt;
- *    &lt;/hlm:targetCondition&gt;
- *      &lt;signalInput refid="prepSignalInput" &gt;
- *           &lt;notifierInput file = "${build.cache.log.dir}/signals/${build.id}_prep_status.html" /&gt;
- *      &lt;/signalInput&gt;
- *    
- * &lt;/hlm:signalListenerConfig&gt;
- * </pre>
- *
- * @ant.type name="signalListenerConfig" category="Signaling"
- */
-
-public class SignalListenerConfig extends DataType
-{
-   
-    private Vector<SignalNotifierInput> signalNotifierInputs = new Vector<SignalNotifierInput>();
-
-    private String target;
-    
-    private String errMsg;
-
-    private Vector<TargetCondition> targetConditions = new Vector<TargetCondition>();
-        
-    private String configID;
-
-    public String getTargetName() {
-        return target;
-    }
-    
-    public String getErrorMessage() {
-        return errMsg;
-    }
-
-    /**
-     * Helper function to store the Name of the target for which
-     * the signal to be processed. 
-     * @param targetName to be stored.
-     */    
-    public void setTarget(String targetName) {
-        target = targetName;
-    }
-
-    /**
-     * Helper function to store the error message of
-     * @param errorMessage to be displayed after failure.
-     */        
-    public void setMessage(String errorMessage) {
-        errMsg = errorMessage;
-    }
-
-
-    /**
-     * Helper function called by ant to create the new signalinput
-     */
-    public SignalNotifierInput createSignalNotifierInput() {
-        SignalNotifierInput input =  new SignalNotifierInput();
-        add(input);
-        return input;
-    }
-
-    /**
-     * Helper function to add the created signalinput
-     * @param filter to be added to the filterset
-     */
-    public void add(SignalNotifierInput input) {
-        signalNotifierInputs.add(input);
-    }
-
-
-    /**
-     * Creates type target condition of type TargetCondition.
-     * @return ReferenceType which is created and stored by the config.
-     */
-    public TargetCondition createTargetCondition() {
-        TargetCondition condition =  new TargetCondition();
-        add(condition);
-        return condition;
-    }
-
-    /**
-     * Helper function to store the config id
-     * @param config id to store.
-     */    
-    public void setConfigId(String confID) {
-        configID = confID;
-    }
-
-    /**
-     * Helper function to return the config id
-     * @return The configuration id
-     */   
-    public String getConfigId() {
-        return configID;
-    }
-
-    /**
-     * Adds the TargetCondition reference to the container.
-     * @param TargetCondition to be added to the container, to be processed during signaling.
-     */    
-    public void add(TargetCondition condition) {
-        if (condition != null) {
-            targetConditions.add(condition);
-        }
-    }    
-
-    /**
-     * Helper function to return the Targetcondition matching the target name.
-     * @param String name of the target for which the targetcondition is returned,
-     */    
-    public TargetCondition getTargetCondition() {
-        if (targetConditions.isEmpty()) {
-            return null;
-        }
-        return targetConditions.get(0);
-    }
-
-    /**
-     * Helper function to return the Targetcondition matching the target name.
-     * @param String name of the target for which the targetcondition is returned,
-     */    
-    public SignalNotifierInput getSignalNotifierInput() {
-        if (signalNotifierInputs.isEmpty()) {
-            return null;
-        }
-        return signalNotifierInputs.get(0);
-    }
-
-    /**
-     * Helper function to return the complete target name set of the config.
-     * @return Set, full set of target names referred by this config.
-     * @throws HlmAntLibException
-     */    
-    //public Set<String> getTargetNameSet() {
-    //    if (targetConditionsMap.isEmpty()) {
-    //        initializeTargetConditionsMap();
-    //    }
-    //    return targetConditionsMap.keySet();
-    //}
-
-    /**
-     * Initializes the TargetConditionsMap, mapping target name with corresponding targetcondition
-     * for fast lookup. 
-     */    
-    //private void initializeTargetConditionsMap() {
-    //    for (TargetCondition condition : targetConditions) {
-    //        String name = condition.getName();
-    //        if (name != null) {
-    //            targetConditionsMap.put(name, condition);
-    //        }
-    //    }
-    //}
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/signaling/src/com/nokia/helium/signal/ant/types/SignalNotifierInput.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,112 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
- 
-package com.nokia.helium.signal.ant.types;
-
-
-import java.util.Vector;
-
-import org.apache.tools.ant.types.DataType;
-
-import org.apache.tools.ant.BuildException;
-
-
-/**
- * SignalInput class which is a type to store input for signals
- * Signals..
- * &lt;targetCondition&gt;
- *    &lt;hasSeverity severity="error" file="${build.cache.log.dir}/signals/prep_work_status.xml" /&gt;
- * &lt;/targetCondition&gt;
- * 
- */
-public class SignalNotifierInput extends DataType
-{
-    private Vector<SignalInput> signalInputs = new Vector<SignalInput>();
-
-    private Vector<NotifierInput> notifierInputList = new Vector<NotifierInput>();
-
-    /**
-     * Helper function called by ant to create a new notifier for
-     * this input.
-     * @return ReferenceType created ReferenceType.
-     */    
-    public NotifierInput createNotifierInput() {
-        NotifierInput notifierInput =  new NotifierInput();
-        add(notifierInput);
-        return notifierInput;
-    }
-
-    /**
-     * Adds the created notifier to the list
-     * @param ReferenceType notifier to be added to the list.
-     */    
-    public void add(NotifierInput notifierInput) {
-        if (notifierInput != null) {
-            notifierInputList.add(notifierInput);
-        }
-    }
-
-    /**
-     * Helper function to add the created signalinput
-     * @param filter to be added to the filterset
-     */
-    public void add(SignalInput input) {
-        signalInputs.add(input);
-    }
-
-    /**
-     * Helper function called by ant to create the new signalinput
-     */
-    public SignalInput createSignalInput() {
-        SignalInput input =  new SignalInput();
-        add(input);
-        return input;
-    }
-
-    public NotifierInput getNotifierInput() {
-        NotifierInput input = null;
-        if (notifierInputList.size() > 1) {
-            throw new BuildException("One and only signal input can be defined");
-        }
-        if (!notifierInputList.isEmpty()) {
-            input = notifierInputList.elementAt(0);
-        }
-        return input;
-    }
-
-    /**
-     * Gets the signal input of this config.
-     * @return signal input stored in the config, by dereferencing the input ref. 
-     */    
-    public SignalInput getSignalInput() {
-        if (signalInputs.isEmpty()) {
-            throw new BuildException("No signal input in signal config, failed: ");
-        }
-        if (signalInputs.size() > 1) {
-            throw new BuildException("One and only signal input can be defined");
-        }
-
-        Object refObject =  signalInputs.elementAt(0).getRefid().getReferencedObject();
-        if (refObject == null) {
-            throw new BuildException("Signal Input Reference not exists");
-        }
-        
-        SignalInput signalInput = (SignalInput)refObject;
-        return signalInput;
-    }
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/signaling/src/com/nokia/helium/signal/ant/types/SignalNotifierList.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,65 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
- 
-package com.nokia.helium.signal.ant.types;
-
-import org.apache.tools.ant.types.DataType;
-import org.apache.tools.ant.BuildException;
-import com.nokia.helium.signal.Notifier;
-
-
-import java.util.Vector;
-
-    
-/**
- * Helper class to store the list of notifiers.
- *
- * Example:
- * <pre>
- *   &lt;hlm:notifierList id="defaultSignalFailNotifier"&gt;
- *       &lt;hlm:emailNotifier templateSrc="${helium.dir}/tools/common/templates/log/email_new.html.ftl" title="[signal] ${signal.name}"
- *          smtp="${email.smtp.server}" ldap="${email.ldap.server}" notifyWhen="fail"&gt;
- *       &lt;/hlm:emailNotifier&gt;
- *   &lt;/hlm:notifierList&gt;
- * </pre>
- * @ant.task name="notifierList" category="Signaling" 
- */
-public class SignalNotifierList extends DataType {
-
-    private Vector<Notifier> notifierlist = new Vector<Notifier>();
-    
-    /**
-     * Adding a Notifier.
-     * @param notifier
-     */
-    public void add(Notifier notifier) {
-        notifierlist.add(notifier);
-    }
-            
-    /**
-     * Returns the list of variables available in the VariableSet 
-     * @return variable list
-     * @throws HlmAntLibException
-     */
-    public Vector<Notifier> getNotifierList() {
-        if (notifierlist.isEmpty()) {
-            throw new BuildException(" Signal notifierlist is empty.");
-        }
-        return notifierlist;
-    }
-}
--- a/buildframework/helium/external/helium-antlib/signaling/src/com/nokia/helium/signal/ant/types/SignalStatusDef.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
- 
-package com.nokia.helium.signal.ant.types;
-
-import org.apache.tools.ant.Project;
-import com.nokia.helium.core.ant.types.*;
-import org.apache.tools.ant.BuildException;
-import com.nokia.helium.signal.*;
-import com.nokia.helium.signal.ant.SignalListener;
-import org.apache.log4j.Logger;
-
-
-/**
- * Class to store the status of the signal of a particular target.
- */
-public class SignalStatusDef extends HlmPostDefImpl
-{
-    private Logger log = Logger.getLogger(SignalListener.class);
-    
-    /**
-     * This post action will fail the build if any pending failure exists. 
-     * @throws BuildException
-     */
-    public void execute(Project prj, String module, String[] targetNames) {
-        if (SignalStatusList.getDeferredSignalList().hasSignalInList()) {
-            throw new BuildException(SignalStatusList.getDeferredSignalList().getErrorMsg());
-        }
-    }
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/signaling/src/com/nokia/helium/signal/ant/types/TargetCondition.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,96 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
- 
-package com.nokia.helium.signal.ant.types;
-
-import org.apache.tools.ant.types.DataType;
-import java.util.Vector;
-import org.apache.tools.ant.taskdefs.condition.Condition;
-
-/**
- * TargetCondition class which is a type to store the condition for generating
- * Signals..
- * &lt;targetCondition&gt;
- *    &lt;hasSeverity severity="error" file="${build.cache.log.dir}/signals/prep_work_status.xml" /&gt;
- * &lt;/targetCondition&gt;
- */
-public class TargetCondition extends DataType {
-
-    private String name;
-    
-    private String errMsg;
-    
-    private Vector<Condition> conditionList = new Vector<Condition>();
-    
-    /**
-     * Constructor
-     */
-    public TargetCondition() {
-    }
-
-    /**
-     * Helper function to store the Name of the target for which
-     * the signal to be processed. 
-     * @param targetName to be stored.
-     */    
-    public void setName(String targetName) {
-        name = targetName;
-    }
-
-    /**
-     * Helper function to store the error message of
-     * @param errorMessage to be displayed after failure.
-     */        
-    public void setMessage(String errorMessage) {
-        errMsg = errorMessage;
-    }
-    
-    /**
-     * Add a given variable to the list 
-     * @param condition variable to add
-     */
-    public void add(Condition condition) {
-        conditionList.add(condition);
-    }
-
-    /**
-     * Gets the list of conditions to be checked for the signal config. 
-     * @return conditions variable for this configuration.
-     */
-    public Vector<Condition> getConditions() {
-        return conditionList;
-    }    
-    /**
-     * Helper function to return the Name of the target for which
-     * the signal to be processed. 
-     * @return name of the target of this targetcondition.
-     * @deprecated
-     */        
-    public String getName() {
-        return name;
-    }
-
-    /**
-     * Helper function to return the error message of this target condition.
-     * @return error message of this target condition.
-     * @deprecated
-     */        
-    public String getMessage() {
-        return errMsg;
-    }
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/signaling/src/com/nokia/helium/signal/ant/types/XmlSource.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
- 
-package com.nokia.helium.signal.ant.types;
-
-
-import java.io.File;
-
-import com.nokia.helium.core.LogSource;
-
-/**
- * This type define an input source that will be communicated to the notifiers.
- *
- * @ant.type name="xmlsource" category="Signaling"
- * 
- */
-public class XmlSource extends LogSource {
-    private File fileName;
-
-    public File getFilename() {
-        if (fileName.exists()) {
-            return fileName;
-        } else {
-            return null;
-        }
-    }
-
-    /**
-     * The filename of the input source.
-     * 
-     * @ant.required
-     */
-    public void setFilename(File filename) {
-        this.fileName = filename;
-    }
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/signaling/src/templates/email.html.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,113 +0,0 @@
-<#--
-============================================================================ 
-Name        : email.html.ftl 
-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:
-
-============================================================================
---> 
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html>
-  <head>
-  <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
-    <title>
-      Build result e-mail from ${ant["env.COMPUTERNAME"]}.
-    </title>
-    <style type="text/css">
-        body{font-family:Verdana; font-size:10pt; line-height:1.1em; padding: 10px 10px; background-color:#E4F0F4;}
-        h1{
-          font-size:14pt;
-          color:#000;
-          padding: 20px 15px;
-              margin:0;
-         }
-        h2{font-size:12pt;}
-        h5{
-          font-size:10pt;
-          background-color:#8495BA;
-          color:#fff;
-          heigth:20pt;
-          padding: 5px 15px;
-          border-left:2px solid #5A6FA0;
-          border-bottom:2px solid #5A6FA0;
-          border-top:2px solid #98A6C6;
-          border-right:2px solid #98A6C6;
-          margin:0;
-         }
- 
-  
-        p {
-          font-size:10pt;
-          padding: 0em 1em 1em 1em;
-          margin: 0 1em 0.5em 1em;
-          border-right:1px solid #5A6FA0;
-          border-top:0;
-          border-bottom:1px solid #98A6C6;
-          border-left:1px solid #98A6C6;
-          background-color:#CDE4EB;
-          white-space:normal;
-        }
- 
-        .data{color:#00F;}
-        .okmessage{color:#24A22D;font-weight:bold; display:block; margin-bottom: 1em;padding-top: 1em;}
-        .errormessage{color:#F00;font-weight:bold; display:block; margin-bottom: 1em;padding-top: 1em;}
- 
-        span.items{text-indent:-1em; padding-left: 1em; display:block; word-wrap:normal;}
-
-        span.bold{font-weight:bold; display:block; padding: 1em 0;}
-        p.maintext{padding-top: 1em;}
-        p.logfolder{color:#000;font-weight:bold; padding-top: 1em;}
-        p.distrib{font-weight:bold;}
- 
- 
-        a:link,a:visited{color:#00E;}
-        
-    </style>
-  </head>
-  <body>
-      <!-- The title -->
-      <div id="buildname">
-        <h1>This is an e-mail notification that a build has been completed on ${ant["env.COMPUTERNAME"]}</h1>
-      </div>
-
-    <!-- section -->
-    <#macro create_section title type>
-           <div id="foldername">
-               <h5>${title}</h5>
-               <p class="maintext">
-                   <!-- content span -->
-                   <span class="${type}"><#nested></span>
-               </p>
-           </div>
-       </#macro>
-
-<#list doc.logSummary.log as lognode>
-    <#if (lognode.build[".//message[@priority='error']"]?size > 0)>
-        <span class="errormessage">
-            <#if (lognode.@filename[0])?exists>${lognode.@filename[0]}...FAIL<br/></#if>                    
-            <ul>
-            <#list lognode.build[".//message[@priority='error']"] as message>
-                ${message}<br/>
-            </#list>
-            </ul>
-        </span>
-    <#else>
-        <span class="okmessage"><#if (lognode.@filename[0])?exists>${lognode.@filename[0]}...OK<br/></#if></span>
-    </#if>
-</#list>
-</body>
-</html>
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/signaling/src/templates/email_default.html.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,88 +0,0 @@
-<#--
-============================================================================ 
-Name        : email.html.ftl 
-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:
-
-============================================================================
---> 
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html>
-  <head>
-  <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
-    <title>
-      Build result e-mail from ${ant["env.COMPUTERNAME"]}.
-    </title>
-    <style type="text/css">
-        body{font-family:Verdana; font-size:10pt; line-height:1.1em; padding: 10px 10px; background-color:#E4F0F4;}
-        h1{
-          font-size:14pt;
-          color:#000;
-          padding: 20px 15px;
-              margin:0;
-         }
-        h2{font-size:12pt;}
-        h5{
-          font-size:10pt;
-          background-color:#8495BA;
-          color:#fff;
-          heigth:20pt;
-          padding: 5px 15px;
-          border-left:2px solid #5A6FA0;
-          border-bottom:2px solid #5A6FA0;
-          border-top:2px solid #98A6C6;
-          border-right:2px solid #98A6C6;
-          margin:0;
-         }
- 
-  
-        p {
-          font-size:10pt;
-          padding: 0em 1em 1em 1em;
-          margin: 0 1em 0.5em 1em;
-          border-right:1px solid #5A6FA0;
-          border-top:0;
-          border-bottom:1px solid #98A6C6;
-          border-left:1px solid #98A6C6;
-          background-color:#CDE4EB;
-          white-space:normal;
-        }
- 
-        .data{color:#00F;}
-        .okmessage{color:#24A22D;font-weight:bold; display:block; margin-bottom: 1em;padding-top: 1em;}
-        .errormessage{color:#F00;font-weight:bold; display:block; margin-bottom: 1em;padding-top: 1em;}
- 
-        span.items{text-indent:-1em; padding-left: 1em; display:block; word-wrap:normal;}
-
-        span.bold{font-weight:bold; display:block; padding: 1em 0;}
-        p.maintext{padding-top: 1em;}
-        p.logfolder{color:#000;font-weight:bold; padding-top: 1em;}
-        p.distrib{font-weight:bold;}
- 
- 
-        a:link,a:visited{color:#00E;}
-        
-    </style>
-  </head>
-  <body>
-      <!-- The title -->
-      <div id="buildname">
-        <h1>This is an e-mail notification that a build has been completed on ${ant["env.COMPUTERNAME"]}</h1>
-      </div>
-      <span class="okmessage">${signaling['signal.name']} is finished.</span>
-    </body>
-</html>
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/signaling/src/templates/email_subject.txt.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-<#--
-============================================================================ 
-Name        : email_subject.txt.ftl 
-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:
-
-============================================================================
---> 
-${ant["build.id"]}:${ant["env.COMPUTERNAME"]}: ${signalname} alert
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/signaling/tests/bld.sh	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-#!/bin/csh
-
-#
-# 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: 
-#
-
-module load java/1.6.0
-
-setenv ANT_ARGS "-lib ../lib -lib ../../lib -lib ../../bin/helium-core.jar -lib ../../bin/helium-signaling.jar -lib ../../antlibs"
-ant -Dant.executor.class="com.nokia.helium.core.ant.HeliumExecutor" -Dskip.diamonds=true $*
--- a/buildframework/helium/external/helium-antlib/signaling/tests/build.bat	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-@echo off
-
-rem
-rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-rem All rights reserved.
-rem This component and the accompanying materials are made available
-rem under the terms of the License "Eclipse Public License v1.0"
-rem which accompanies this distribution, and is available
-rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
-rem
-rem Initial Contributors:
-rem Nokia Corporation - initial contribution.
-rem
-rem Contributors:
-rem
-rem Description: 
-rem
-
-setlocal
-if not defined JAVA_6_HOME (
-set TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
-) ELSE  set TESTED_JAVA=%JAVA_6_HOME%
-if exist %TESTED_JAVA% (set JAVA_HOME=%TESTED_JAVA%)
-set ANT_ARGS=-lib %CD%..\lib -lib %CD%\..\..\lib -lib %CD%\..\..\bin\helium-core.jar -lib %CD%\..\..\bin\helium-signaling.jar -lib %CD%\..\..\antlibs
-ant -Dant.executor.class=com.nokia.helium.core.ant.HeliumExecutor -Dskip.diamonds=true %*
-endlocal
-
--- a/buildframework/helium/external/helium-antlib/signaling/tests/build.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : build.xml 
-Part of     : Helium AntLib
-
-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="helium-antlib-signaling-unittest" xmlns:au="antlib:org.apache.ant.antunit">
-    <description>Helium Antlib signaling tests.</description>
-    <import file="../../test-macros.ant.xml" />
-
-    <property environment="env" />
-    <dirname property="signaling.test.project.dir" file="${ant.file.helium-antlib-signaling-unittest}" />
-    <property name="build.summary.file" location="${signaling.test.project.dir}/test_signal/data/ido_tedo_mcl_devlon52_ec_MCL.52.105_summary.log.xml" />
-    <property name="build.id" value="test_new_hlm"/>
-  
-    <import file="${signaling.test.project.dir}/test_signal/signaling_test.ant.xml" />
-    
-    <target name="unittest" depends="unittest-signaling,unittest-signaling-antunit" />
-
-    <target name="unittest-signaling">
-        <antcall target="test-all" />
-    </target>
-
-    <target name="unittest-signaling-antunit">
-        <antunitModule name="signaling" />
-    </target>
-
-</project>
--- a/buildframework/helium/external/helium-antlib/signaling/tests/src/com/nokia/helium/signaling/tests/TestEmailSender.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-
-package com.nokia.helium.signaling.tests;
-
-import org.junit.*;
-import static org.junit.Assert.*;
-import java.io.*;
-import java.util.*;
-import com.nokia.helium.signal.ant.types.*;
-import org.apache.tools.ant.Project;
-
-public class TestEmailSender {
-    
-    @Before
-    public void setUp() {
-    }
-
-    @After
-    public void tearDown() {
-    }
-    
-    /**
-     * @throws Exception
-     */
-    @Test
-    public void test_simpleMergeNode() throws Exception {
-        EMAILNotifier en = new EMAILNotifier();
-        Project p = new Project();
-        p.setNewProperty("user.name", "test");
-        en.setProject(p);
-        en.setNotifyWhen("always");
-        en.setTitle("test");
-        en.setSmtp("test");
-        en.setLdap("test");
-        NotifierInput input = new NotifierInput();
-        input.setFile(new File(System.getProperty("testdir") + "/tests/test_signal/data/test.log_status.html"));
-        en.sendData("test", true, input, "Test Message");
-    }
-
-   
-
-}
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/signaling/tests/test_signal/data/test.log_status.html	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,74 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html>
-  <head>
-  <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
-    <title>
-      Build result e-mail from FASYM013.
-    </title>
-    <style type="text/css">
-        body{font-family:Verdana; font-size:10pt; line-height:1.1em; padding: 10px 10px; background-color:#E4F0F4;}
-        h1{
-          font-size:14pt;
-          color:#000;
-          padding: 20px 15px;
-              margin:0;
-         }
-        h2{font-size:12pt;}
-        h5{
-          font-size:10pt;
-          background-color:#8495BA;
-          color:#fff;
-          heigth:20pt;
-          padding: 5px 15px;
-          border-left:2px solid #5A6FA0;
-          border-bottom:2px solid #5A6FA0;
-          border-top:2px solid #98A6C6;
-          border-right:2px solid #98A6C6;
-          margin:0;
-         }
- 
-  
-        p {
-          font-size:10pt;
-          padding: 0em 1em 1em 1em;
-          margin: 0 1em 0.5em 1em;
-          border-right:1px solid #5A6FA0;
-          border-top:0;
-          border-bottom:1px solid #98A6C6;
-          border-left:1px solid #98A6C6;
-          background-color:#CDE4EB;
-          white-space:normal;
-        }
- 
-        .data{color:#00F;}
-        .okmessage{color:#24A22D;font-weight:bold; display:block; margin-bottom: 1em;padding-top: 1em;}
-        .errormessage{color:#F00;font-weight:bold; display:block; margin-bottom: 1em;padding-top: 1em;}
- 
-        span.items{text-indent:-1em; padding-left: 1em; display:block; word-wrap:normal;}
-
-        span.bold{font-weight:bold; display:block; padding: 1em 0;}
-        p.maintext{padding-top: 1em;}
-        p.logfolder{color:#000;font-weight:bold; padding-top: 1em;}
-        p.distrib{font-weight:bold;}
- 
- 
-        a:link,a:visited{color:#00E;}
-        
-    </style>
-  </head>
-  <body>
-      <!-- The title -->
-      <div id="buildname">
-        <h1>This is an e-mail notification that a build has been completed on FASYM013</h1>
-      </div>
-
-    <!-- section -->
-        <span class="errormessage">
-            test.log...FAIL<br/>
-            <ul>
-            ERROR: an error<br/>
-            </ul>
-        </span>
-</body>
-</html>
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/signaling/tests/test_signal/email.html.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,113 +0,0 @@
-<#--
-============================================================================ 
-Name        : email.html.ftl 
-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:
-
-============================================================================
---> 
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html>
-  <head>
-  <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
-    <title>
-      Build result e-mail from ${ant["env.COMPUTERNAME"]}.
-    </title>
-    <style type="text/css">
-        body{font-family:Verdana; font-size:10pt; line-height:1.1em; padding: 10px 10px; background-color:#E4F0F4;}
-        h1{
-          font-size:14pt;
-          color:#000;
-          padding: 20px 15px;
-              margin:0;
-         }
-        h2{font-size:12pt;}
-        h5{
-          font-size:10pt;
-          background-color:#8495BA;
-          color:#fff;
-          heigth:20pt;
-          padding: 5px 15px;
-          border-left:2px solid #5A6FA0;
-          border-bottom:2px solid #5A6FA0;
-          border-top:2px solid #98A6C6;
-          border-right:2px solid #98A6C6;
-          margin:0;
-         }
- 
-  
-        p {
-          font-size:10pt;
-          padding: 0em 1em 1em 1em;
-          margin: 0 1em 0.5em 1em;
-          border-right:1px solid #5A6FA0;
-          border-top:0;
-          border-bottom:1px solid #98A6C6;
-          border-left:1px solid #98A6C6;
-          background-color:#CDE4EB;
-          white-space:normal;
-        }
- 
-        .data{color:#00F;}
-        .okmessage{color:#24A22D;font-weight:bold; display:block; margin-bottom: 1em;padding-top: 1em;}
-        .errormessage{color:#F00;font-weight:bold; display:block; margin-bottom: 1em;padding-top: 1em;}
- 
-        span.items{text-indent:-1em; padding-left: 1em; display:block; word-wrap:normal;}
-
-        span.bold{font-weight:bold; display:block; padding: 1em 0;}
-        p.maintext{padding-top: 1em;}
-        p.logfolder{color:#000;font-weight:bold; padding-top: 1em;}
-        p.distrib{font-weight:bold;}
- 
- 
-        a:link,a:visited{color:#00E;}
-        
-    </style>
-  </head>
-  <body>
-      <!-- The title -->
-      <div id="buildname">
-        <h1>This is an e-mail notification that a build has been completed on ${ant["env.COMPUTERNAME"]}</h1>
-      </div>
-
-    <!-- section -->
-    <#macro create_section title type>
-           <div id="foldername">
-               <h5>${title}</h5>
-               <p class="maintext">
-                   <!-- content span -->
-                   <span class="${type}"><#nested></span>
-               </p>
-           </div>
-       </#macro>
-
-<#list doc.logSummary.log as lognode>
-    <#if (lognode.build[".//message[@priority='error']"]?size > 0)>
-        <span class="errormessage">
-            <#if (lognode.@filename[0])?exists>${lognode.@filename[0]}...FAIL<br/></#if>                    
-            <ul>
-            <#list lognode.build[".//message[@priority='error']"] as message>
-                ${message}<br/>
-            </#list>
-            </ul>
-        </span>
-    <#else>
-        <span class="okmessage"><#if (lognode.@filename[0])?exists>${lognode.@filename[0]}...OK<br/></#if></span>
-    </#if>
-</#list>
-</body>
-</html>
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/signaling/tests/test_signal/example.html.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-<#--
-============================================================================ 
-Name        : email.html.ftl 
-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:
-
-============================================================================
---> 
-${ant['user.name']}
--- a/buildframework/helium/external/helium-antlib/signaling/tests/test_signal/signaling_test.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,272 +0,0 @@
-<?xml version="1.0"?>
-<!-- 
-============================================================================ 
-Name        : test_signaling.ant.xml 
-Part of     : Helium AntLib
-
-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="test-signaling" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
-    <description>
-        Test all the helium signals
-    </description>
-
-    <dirname property="project.dir.signaling" file="${ant.file.test-signaling}" />
-
-    <taskdef resource="com/nokia/helium/core/ant/antlib.xml" uri="http://www.nokia.com/helium" />
-    <import file="test_signaling_config.ant.xml" />
-
-    <property name="build.summary.file" location="${project.dir.signaling}/data/ido_tedo_mcl_devlon52_ec_MCL.52.105_summary.log.xml" />
-
-    <target name="target-valid-config1">
-        <echo message="valid configuration1" />
-    </target>
-
-    <target name="target-valid-config2">
-        <echo message="valid configuration2" />
-    </target>
-
-    <target name="target-valid-config3">
-        <echo message="valid configuration3" />
-    </target>
-
-    <target name="target-valid-config4">
-        <echo message="valid configuration4" />
-    </target>
-
-    <target name="target-valid-config5">
-        <echo message="valid configuration5" />
-    </target>
-
-    <target name="target-invalid-config1">
-        <echo message="invalid configuration1" />
-    </target>
-
-    <target name="target-invalid-config2">
-        <echo message="invalid configuration2" />
-    </target>
-
-    <target name="target-invalid-config3">
-        <echo message="invalid configuration3" />
-    </target>
-
-    <target name="target-invalid-config4">
-        <echo message="invalid configuration4" />
-    </target>
-
-    <target name="target-invalid-config5">
-        <echo message="invalid configuration5" />
-    </target>
-
-    <target name="target-invalid-config6">
-        <echo message="invalid configuration6" />
-    </target>
-
-    <target name="target-invalid-config7">
-        <echo message="invalid configuration7" />
-    </target>
-
-    <target name="target-invalid-config8">
-        <echo message="invalid configuration8" />
-    </target>
-
-    <target name="target-invalid-config9">
-        <echo message="invalid configuration9" />
-    </target>
-
-    <target name="test-case1">
-        <echo message="testing config without signal input" />
-        <antcall target="target-valid-config1" inheritRefs="true"/>
-    </target>
-
-    <target name="test-case2">
-        <echo message="testing config without signal input" />
-        <antcall target="target-valid-config2" inheritRefs="true" />
-    </target>
-
-    <target name="test-case3">
-        <echo message="testing config without signal input" />
-        <antcall target="target-valid-config3" inheritRefs="true" />
-    </target>
-
-    <target name="test-case4">
-        <echo message="testing config without signal input" />
-        <antcall target="target-valid-config4" inheritRefs="true" />
-    </target>
-
-    <target name="test-case5">
-        <echo message="testing config without signal input" />
-        <antcall target="target-valid-config5" inheritRefs="true" />
-    </target>
-
-    <target name="test-case6">
-        <echo message="testing config without signal input" />
-        <au:expectfailure>
-            <antcall target="target-invalid-config1" inheritRefs="true" />
-        </au:expectfailure>
-    </target>
-
-    <target name="test-case7">
-        <echo message="testing when the named target is not exists, so signal" />
-        <antcall target="target-invalid-config2" inheritRefs="true" />
-    </target>
-
-    <target name="test-case8">
-        <!-- This test case is not valid anymore, now the attribute validation is done 
-    	     at Ant parsing level -->
-        <!--echo message="testing config without signal input" />
-        <au:expectfailure>
-            <antcall target="target-invalid-config3" inheritRefs="true" />
-        </au:expectfailure-->
-    </target>
-
-    <target name="test-case9">
-        <echo message="testing config without signal input" />
-        <au:expectfailure>
-            <antcall target="target-invalid-config4" inheritRefs="true" />
-        </au:expectfailure>
-    </target>
-
-    <target name="test-case10">
-        <echo message="testing config without signal input" />
-        <au:expectfailure>
-            <antcall target="target-invalid-config5" inheritRefs="true" />
-        </au:expectfailure>
-    </target>
-
-    <target name="test-case11">
-        <echo message="testing config without signal input" />
-        <au:expectfailure>
-            <antcall target="target-invalid-config6" inheritRefs="true" />
-        </au:expectfailure>
-    </target>
-
-    <target name="test-signal-exception">
-        <property name="exceptions.target" value="final-exception-target"/>
-        <echo message="signal exception target" />
-        <fail message="fail for signal exception" />
-    </target>
-
-    <target name="final-exception-target">
-        <echo message="final-exception-target executed" />
-    </target>
-    
-    <target name="test-case12">
-        <echo message="testing config without signal input" />
-        <au:expectfailure>
-            <antcall target="target-invalid-config7" inheritRefs="true" />
-        </au:expectfailure>
-    </target>
-
-    <target name="test-case13">
-        <echo message="testing config without signal input" />
-        <au:expectfailure>
-            <antcall target="target-invalid-config8" inheritRefs="true" />
-        </au:expectfailure>
-    </target>
-
-    <target name="test-case14">
-        <echo message="testing config without signal input" />
-        <au:expectfailure>
-            <antcall target="target-invalid-config9" inheritRefs="true" />
-        </au:expectfailure>
-    </target>
-
-    <!-- functionality testing -->
-    <target name="fail-now-false-condition">
-        <echo message="fail-now-false-condition target: configured to fail now - false condition" />
-    </target>
-
-    <target name="fail-now-true-condition">
-        <echo message="fail-now-true-condition target: configured to fail now - true condition" />
-    </target>
-
-    <target name="fail-no-condition">
-        <echo message="fail-now-false-condition target: configured to fail now - true condition" />
-    </target>
-
-    <target name="fail-defer-false-condition">
-        <echo message="fail-defer-false-condition target: configured to fail later - false condition" />
-    </target>
-
-    <target name="fail-defer-true-condition">
-        <echo message="${number.of.errors}" />
-        <echo message="fail-defer-true-condition target: configured to fail later - true condition" />
-    </target>
-
-    <target name="fail-never-false-condition">
-        <echo message="fail-never-false-condition target: configured to fail never - false condition" />
-    </target>
-
-    <target name="fail-never-true-condition">
-        <echo message="fail-never-true-condition target: configured to fail never - true condition" />
-    </target>
-
-    <target name="test-fail-now-false-condition">
-        <antcall target="fail-now-false-condition" inheritRefs="true" />
-    </target>
-
-    <target name="compile-signal-test">
-        <au:expectfailure>
-            <echo message="compile-signal failure test" />
-        </au:expectfailure>
-    </target>
-
-    <target name="test-compile-signal-test">
-        <au:expectfailure>
-            <antcall target="compile-signal-test" inheritRefs="true" />
-        </au:expectfailure>
-    </target>
-
-    <target name="test-fail-now-true-condition">
-        <au:expectfailure>
-            <antcall target="fail-now-true-condition" inheritRefs="true" />
-        </au:expectfailure>
-    </target>
-
-    <target name="test-fail-no-condition" >
-        <antcall target="fail-no-condition" inheritRefs="true" />
-    </target>
-
-    <target name="test-fail-defer-false-condition">
-        <antcall target="fail-defer-false-condition" inheritRefs="true" />
-    </target>
-
-    <target name="test-fail-defer-true-condition">
-        <antcall target="fail-defer-true-condition" inheritRefs="true"/>
-        <au:assertTrue>
-            <hlm:hasDeferredFailure name="inputFailDefer"/>
-        </au:assertTrue>
-        <hlm:clearDeferredFailures/>
-    </target>
-
-    <target name="test-fail-never-false-condition">
-        <antcall target="fail-never-false-condition" inheritRefs="true" />
-    </target>
-
-    <target name="test-fail-never-true-condition">
-        <antcall target="fail-never-true-condition" inheritRefs="true" />
-    </target>
-
-
-    <target name="test-all" depends="test-fail-all, test-case-all,test-compile-signal-test" />
-    <target name="test-fail-all" depends="test-fail-now-false-condition, test-fail-now-true-condition,
-                test-fail-no-condition,test-fail-defer-false-condition, test-fail-defer-true-condition,
-                test-fail-never-false-condition, fail-never-false-condition, fail-never-true-condition" />
-    <target name="test-case-all" depends="test-case1, test-case2, test-case3, test-case4, test-case5, test-case6,
-                test-case7,test-case8,test-case9,test-case10,test-case11,test-case12,test-case13,test-case14" />
-</project>
--- a/buildframework/helium/external/helium-antlib/signaling/tests/test_signal/test_hasdeferredfailure.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : test_hasdeferredfailure.ant.xml 
-Part of     : Helium AntLib
-
-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="test-hasdeferredfailure" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
-
-    <description>
-        Test deferred failure signal
-    </description>
-
-    <taskdef resource="com/nokia/helium/core/ant/antlib.xml" uri="http://www.nokia.com/helium"/>
-    <taskdef resource="com/nokia/helium/signal/ant/antlib.xml" uri="http://www.nokia.com/helium"/>
-
-    <dirname property="project.dir.signalhasdefer" file="${ant.file.test-signaltask}" />
-    <property name="build.summary.file" location="${project.dir.signalhasdefer}/data/ido_tedo_mcl_devlon52_ec_MCL.52.105_summary.log.xml" />
-
-    <property environment="env" />
-    <property name="email.input.file" location="${signaling.test.project.dir}/test_signal/ido_tedo_mcl_devlon52_ec_MCL.52.105_summary.log.xml" />
-
-    <!-- Deferred signal -->
-    <hlm:notifierList id="testDeferredSignalNotifiers">
-        <hlm:executeTaskNotifier>
-            <echo>Signal: ${signal.name}</echo>
-        </hlm:executeTaskNotifier>
-    </hlm:notifierList>
-
-    <hlm:signalInput id="testDeferredSignalInput" failBuild="defer">
-        <hlm:notifierListRef refid="testDeferredSignalNotifiers"/>
-    </hlm:signalInput>
-
-    <!-- 
-    <hlm:signalConfig id="testDeferredSignal">
-        <hlm:inputRef refid="testDeferredSignalInput"/>
-    </hlm:signalConfig>
-    -->
-    <!-- Fail now signal -->
-    <hlm:notifierList id="testSignalNotifiers">
-        <hlm:executeTaskNotifier>
-            <echo>Signal: ${signal.name}</echo>
-        </hlm:executeTaskNotifier>
-    </hlm:notifierList>
-
-    <hlm:signalInput id="testSignalInput" failBuild="now">
-        <hlm:notifierListRef refid="testSignalNotifiers"/>
-    </hlm:signalInput>
-
-    <!-- 
-    <hlm:signalConfig id="testSignal">
-        <hlm:inputRef refid="testSignalInput"/>        
-    </hlm:signalConfig>
-    -->
-    <!-- is called prior to the test -->
-    <target name="setUp">
-        <!-- cleaning deferred pending failures. -->
-        <hlm:clearDeferredFailures/>
-    </target>
-
-    <!-- is called after the test, even if that caused an error -->
-    <target name="tearDown">
-        <!-- cleaning deferred pending failures. -->
-        <hlm:clearDeferredFailures/>
-    </target>
-
-    <target name="test-no-pending-failure">
-        <au:assertFalse>
-            <hlm:hasDeferredFailure/>
-        </au:assertFalse>
-    </target>
-
-    <target name="raise-signal">
-        <!-- This raise a  testSignal. -->
-        <hlm:signal name="testDeferredSignal" result="1" >
-            <signalNotifierInput>
-                <hlm:signalInput refid="testDeferredSignalInput" />
-            </signalNotifierInput>
-        </hlm:signal>
-    </target>
-
-    <target name="test-pending-failure" depends="raise-signal">
-        <au:assertTrue>
-            <hlm:hasDeferredFailure/>
-        </au:assertTrue>
-    </target>
-
-    <target name="test-pending-failure-named" depends="raise-signal">
-        <au:assertTrue>
-            <hlm:hasDeferredFailure name="testDeferredSignal"/>
-        </au:assertTrue>
-    </target>
-
-    <target name="test-pending-failure-named-missing" depends="raise-signal">
-        <au:assertFalse>
-            <hlm:hasDeferredFailure name="testFooSignal"/>
-        </au:assertFalse>
-    </target>
-
-</project>
--- a/buildframework/helium/external/helium-antlib/signaling/tests/test_signal/test_signaling_config.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,335 +0,0 @@
-<?xml version="1.0"?>
-<!-- 
-============================================================================ 
-Name        : test_signaling.ant.xml 
-Part of     : Helium AntLib
-
-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="test-signaling-config" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
-    <description>
-        signalInput and notifierList test configuration
-    </description>
-    <dirname property="project.dir.signaling" file="${ant.file.test-signaling-config}" />
-
-    <property name="build.summary.file" location="${project.dir.signaling}/data/ido_tedo_mcl_devlon52_ec_MCL.52.105_summary.log.xml" />
-    <taskdef resource="org/apache/tools/ant/types/conditions/antlib.xml" />
-    <taskdef resource="com/nokia/helium/signal/ant/antlib.xml" uri="http://www.nokia.com/helium" />
-
-    <hlm:notifierList id="defaultsignalnotifier">
-        <hlm:executeTaskNotifier>
-            <echo>Signal: ${signal.name}</echo>
-        </hlm:executeTaskNotifier>
-        <hlm:emailNotifier defaultTemplate="${project.dir.signaling}/email_default.html.ftl" title="[signal] ${signal.name}" smtp="${email.smtp.server}" ldap="${email.ldap.server}" from="I_EXT_HELIUM@nokia.com" />
-    </hlm:notifierList>
-
-    <hlm:notifierList id="compilesignalnotifier">
-        <hlm:executeTaskNotifier>
-            <echo>Signal: ${signal.name}</echo>
-        </hlm:executeTaskNotifier>
-        <hlm:emailNotifier defaultTemplate="${project.dir.signaling}/email_default.html.ftl" title="[signal] ${signal.name}" smtp="${email.smtp.server}" ldap="${email.ldap.server}" />
-    </hlm:notifierList>
-
-
-    <hlm:signalInput id="compilesignalinput" failbuild="now">
-        <hlm:notifierListRef refid="compilesignalnotifier" />
-    </hlm:signalInput>
-
-    <property name="number.of.errors" value="4" />
-
-    <hlm:signalInput id="fotasignalinput" failbuild="defer" />
-
-    <hlm:signalInput id="validSignalInput" failbuild="defer">
-        <hlm:notifierListRef refid="defaultsignalnotifier" />
-    </hlm:signalInput>
-
-    <hlm:signalListenerConfig id="compileSignal" target="compile-signal-test" message="Errors happened during compilation">
-        <signalNotifierInput>
-            <signalInput refid="compilesignalinput" />
-        </signalNotifierInput>
-        <targetCondition >
-            <not>
-                <equals arg1="0" arg2="${number.of.errors}" />
-            </not>
-        </targetCondition>
-    </hlm:signalListenerConfig>
-
-    <hlm:signalInput id="publishsignalinput" failbuild="never" />
-
-    <hlm:signalInput id="input-fail-build-now" failbuild="now" />
-
-    <hlm:signalInput id="input-fail-build-defer" failbuild="defer" />
-    <hlm:signalInput id="input-fail-build-never" failbuild="never" />
-
-    <hlm:signalListenerConfig id="fotaSignal" target="fota" message="Fota execution finished">
-        <signalNotifierInput>
-            <signalInput refid="fotasignalinput" />
-        </signalNotifierInput>
-        <targetCondition  />
-    </hlm:signalListenerConfig>
-
-    <hlm:signalListenerConfig id="publishSignal" target="publish" message="Errors due to publish">
-        <signalNotifierInput>
-            <signalInput refid="publishsignalinput" />
-        </signalNotifierInput>
-        <targetCondition  />
-    </hlm:signalListenerConfig>
-    <!--hlm:signallist id="all-signals">
-        <hlm:notifierlistref refid="defaultsignalnotifier" />
-        <hlm:configref refid="compileSignal" />
-        <hlm:configref refid="fotaSignal" />
-    </hlm:signallist-->
-
-    <!--Invalid configurations -->
-    <hlm:notifierList id="invalid-notifier1" />
-
-    <hlm:notifierList id="invalid-notifier2">
-        <!--hlm:notifier type="test" senderlist="${env.username}" /-->
-    </hlm:notifierList>
-
-    <hlm:notifierList id="invalid-notifier3">
-        <!--hlm:notifier type="email" /-->
-    </hlm:notifierList>
-
-    <hlm:notifierList id="invalid-notifier4">
-        <!--hlm:notifier senderlist="${env.username}" /-->
-    </hlm:notifierList>
-
-
-    <hlm:signalInput id="invalid-input2" failbuild="never">
-        <hlm:notifierListRef refid="noreference" />
-    </hlm:signalInput>
-
-    <hlm:signalInput id="invalid-input3" failbuild="never">
-        <hlm:notifierListRef refid="invalid-notifier1" />
-    </hlm:signalInput>
-
-    <hlm:signalInput id="invalid-input4" failbuild="never">
-        <hlm:notifierListRef refid="invalid-notifier2" />
-    </hlm:signalInput>
-
-    <hlm:signalInput id="invalid-input5" failbuild="never">
-        <hlm:notifierListRef refid="invalid-notifier3" />
-    </hlm:signalInput>
-
-    <hlm:signalInput id="invalid-input6" failbuild="never">
-        <hlm:notifierListRef refid="invalid-notifier4" />
-    </hlm:signalInput>
-
-    <hlm:signalListenerConfig id="noreferenceSignal" target="target-invalid-config1" message="Errors happened during compilation">
-        <signalNotifierInput>
-            <hlm:signalInput refid="noreference" />
-        </signalNotifierInput>
-        <targetCondition>
-            <not>
-                <equals arg1="0" arg2="${number.of.errors}" />
-            </not>
-        </targetCondition>
-    </hlm:signalListenerConfig>
-
-    <hlm:signalListenerConfig id="noTarget" target="no-target" message="Errors happened during compilation" >
-        <targetCondition />
-    </hlm:signalListenerConfig>
-
-    <hlm:signalListenerConfig id="invalidInputSignal" target="target-invalid-config4" message="Errors happened during compilation">
-        <!-- <hlm:signalInput refid="invalid-input2" /> -->
-        <targetCondition >
-            <not>
-                <equals arg1="0" arg2="${number.of.errors}" />
-            </not>
-        </targetCondition>
-    </hlm:signalListenerConfig>
-
-    <hlm:signalListenerConfig id="invalidInput3" target="target-invalid-config5" message="Errors happened during compilation">
-        <signalNotifierInput>
-            <signalInput refid="invalid-input3" />
-        </signalNotifierInput>
-        <targetCondition >
-            <not>
-                <equals arg1="0" arg2="${number.of.errors}" />
-            </not>
-        </targetCondition>
-    </hlm:signalListenerConfig>
-
-    <hlm:signalListenerConfig id="invalidInput4" target="target-invalid-config6" message="Errors happened during compilation">
-        <signalNotifierInput>
-            <signalInput refid="invalid-input4" />
-        </signalNotifierInput>
-        <targetCondition >
-            <not>
-                <equals arg1="0" arg2="${number.of.errors}" />
-            </not>
-        </targetCondition>
-    </hlm:signalListenerConfig>
-
-    <hlm:signalListenerConfig id="invalidInput5" target="target-invalid-config7" message="Errors happened during compilation">
-        <signalNotifierInput>
-            <signalInput refid="invalid-input5" />
-        </signalNotifierInput>
-
-        <targetCondition >
-            <not>
-                <equals arg1="0" arg2="${number.of.errors}" />
-            </not>
-        </targetCondition>
-    </hlm:signalListenerConfig>
-
-    <hlm:signalListenerConfig id="invalidInput6" target="target-invalid-config8" message="Errors happened during compilation">
-        <signalNotifierInput>
-            <signalInput refid="invalid-input6" />
-        </signalNotifierInput>
-        <targetCondition >
-            <not>
-                <equals arg1="0" arg2="${number.of.errors}" />
-            </not>
-        </targetCondition>
-    </hlm:signalListenerConfig>
-
-    <hlm:signalListenerConfig id="invalidInput7" target="target-invalid-config9" message="Errors happened during compilation">
-        <signalNotifierInput>
-            <signalInput refid="invalid-input7" />
-        </signalNotifierInput>
-        <targetCondition >
-            <not>
-                <equals arg1="0" arg2="${number.of.errors}" />
-            </not>
-        </targetCondition>
-    </hlm:signalListenerConfig>
-
-    <hlm:signalListenerConfig id="validInput" target="test-valid-config1">
-        <targetCondition >
-        </targetCondition>
-    </hlm:signalListenerConfig>
-
-    <hlm:signalListenerConfig id="validSignal1" target="target-valid-config2" message="Errors during testing">
-        <signalNotifierInput>
-            <signalInput refid="validSignalInput" />
-        </signalNotifierInput>
-        <targetCondition>
-            <hlm:hasSeverity severity="error" file="${build.summary.file}" />
-        </targetCondition>
-    </hlm:signalListenerConfig>
-
-    <hlm:signalListenerConfig id="validSignal2" target="target-valid-config3" message="Errors during testing">
-        <signalNotifierInput>
-            <signalInput refid="validSignalInput" />
-        </signalNotifierInput>
-
-        <targetCondition >
-            <!-- <xml severity="error" file="./data/helium_minibuild_ido_compile.log.xml" /> -->
-        </targetCondition>
-    </hlm:signalListenerConfig>
-
-    <hlm:signalListenerConfig id="validSignal3" target="target-valid-config4" message="Errors during testing">
-        <signalNotifierInput>
-            <signalInput refid="validSignalInput" />
-        </signalNotifierInput>
-        <targetCondition >
-            <!-- <not><equals arg1="0" arg2="${number.of.error}"/></not> -->
-        </targetCondition>
-    </hlm:signalListenerConfig>
-
-    <hlm:signalListenerConfig id="validSignal4" target="target-valid-config5" message="Errors during testing">
-        <signalNotifierInput>
-            <signalInput refid="validSignalInput" />
-        </signalNotifierInput>
-        <targetCondition >
-            <!--<not><equals arg1="0" arg2="0"/></not> -->
-        </targetCondition>
-    </hlm:signalListenerConfig>
-
-    <hlm:signalListenerConfig id="validSignal5" target="fail-now-false-condition" message="Errors during testing">
-        <signalNotifierInput>
-            <signalInput refid="input-fail-build-now" />
-        </signalNotifierInput>
-        <targetCondition>
-            <not>
-                <equals arg1="0" arg2="0" />
-            </not>
-        </targetCondition>
-    </hlm:signalListenerConfig>
-
-    <hlm:signalListenerConfig id="validSignal6" target="fail-now-true-condition" message="Errors during testing">
-        <signalNotifierInput>
-            <signalInput refid="input-fail-build-now" />
-        </signalNotifierInput>
-        <targetCondition >
-            <not>
-                <equals arg1="0" arg2="${number.of.errors}" />
-            </not>
-        </targetCondition>
-    </hlm:signalListenerConfig>
-
-    <hlm:signalListenerConfig id="failNow" target="fail-no-condition" message="Errors during testing" >
-        <signalNotifierInput>
-            <signalInput refid="input-fail-build-never" />
-        </signalNotifierInput>
-        <targetCondition />
-    </hlm:signalListenerConfig>
-
-    <hlm:signalListenerConfig id="failbuildDefer" target="fail-defer-false-condition" message="Errors during testing">
-        <signalNotifierInput>
-            <signalInput refid="input-fail-build-defer" />
-        </signalNotifierInput>
-        <targetCondition >
-            <not>
-                <equals arg1="0" arg2="0" />
-            </not>
-        </targetCondition>
-    </hlm:signalListenerConfig>
-
-    <hlm:signalListenerConfig id="inputFailDefer" target="fail-defer-true-condition" message="Errors during testing">
-        <signalNotifierInput>
-            <signalInput refid="input-fail-build-defer" />
-        </signalNotifierInput>
-        <targetCondition>
-            <not>
-                <equals arg1="0" arg2="${number.of.errors}" />
-            </not>
-        </targetCondition>
-    </hlm:signalListenerConfig>
-
-    <hlm:signalListenerConfig id="inputFailNever1" target="fail-defer-never-condition" message="Errors during testing">
-        <signalNotifierInput>
-            <signalInput refid="input-fail-build-never" />
-        </signalNotifierInput>
-
-        <targetCondition>
-            <not>
-                <equals arg1="0" arg2="0" />
-            </not>
-        </targetCondition>
-    </hlm:signalListenerConfig>
-
-    <hlm:signalListenerConfig id="failbuildNever2" target="fail-never-true-condition" message="Errors during testing">
-        <signalNotifierInput>
-            <signalInput refid="input-fail-build-never" />
-        </signalNotifierInput>
-
-        <targetCondition  >
-            <not>
-                <equals arg1="0" arg2="${number.of.errors}" />
-            </not>
-        </targetCondition>
-    </hlm:signalListenerConfig>
-
-    <target name="test-wrong-type">
-        <au:expectfailure>
-            <hlm:signalInput id="invalid-input1" failbuild="wrong-type" />
-        </au:expectfailure>
-    </target>
-</project>
--- a/buildframework/helium/external/helium-antlib/signaling/tests/test_signal/test_signaltask.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,147 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : test_signaltask.ant.xml 
-Part of     : Helium AntLib
-
-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="test-signaltask" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
-    <description>Helium Antlib Signal unittests.</description>
-    <dirname property="project.dir.signaltask" file="${ant.file.test-signaltask}" />
-    <taskdef resource="com/nokia/helium/core/ant/antlib.xml" uri="http://www.nokia.com/helium" />
-    <taskdef resource="com/nokia/helium/signal/ant/antlib.xml" uri="http://www.nokia.com/helium" />
-    <property environment="env" />
-    <property name="build.summary.file" location="${project.dir.signaltask}/data/ido_tedo_mcl_devlon52_ec_MCL.52.105_summary.log.xml" />
-
-    <!-- Deferred signal -->
-    <hlm:notifierList id="testDeferredSignalNotifiers">
-        <hlm:executeTaskNotifier>
-            <echo>Signal: ${signal.name}</echo>
-        </hlm:executeTaskNotifier>
-    </hlm:notifierList>
-
-    <hlm:signalInput id="testDeferredSignalInput" failBuild="defer">
-        <hlm:notifierListRef refid="testDeferredSignalNotifiers" />
-    </hlm:signalInput>
-
-    <!-- Fail now signal -->
-    <hlm:notifierList id="testSignalNotifiers">
-        <hlm:executeTaskNotifier>
-            <echo>Signal: ${signal.name}</echo>
-        </hlm:executeTaskNotifier>
-    </hlm:notifierList>
-
-    <hlm:signalInput id="testSignalInput" failBuild="now">
-        <hlm:notifierListRef refid="testSignalNotifiers" />
-    </hlm:signalInput>
-
-    <hlm:signalConfig id="testSignal">
-        <hlm:inputRef refid="testSignalInput" />
-    </hlm:signalConfig>
-
-    <!-- is called prior to the test -->
-    <target name="setUp">
-        <!-- cleaning deferred pending failures. -->
-        <hlm:clearDeferredFailures />
-    </target>
-
-    <!-- is called after the test, even if that caused an error -->
-    <target name="tearDown">
-        <!-- cleaning deferred pending failures. -->
-        <hlm:clearDeferredFailures />
-    </target>
-
-    <target name="raise-deferred-failure">
-        <!-- This raise a  testSignal. -->
-        <hlm:signal name="testDeferredSignal" result="1" message="message">
-            <signalNotifierInput>
-                <hlm:signalInput refid="testDeferredSignalInput" />
-            </signalNotifierInput>
-        </hlm:signal>
-    </target>
-
-    <target name="raise-failure-now">
-        <!-- This raise a  testSignal. -->
-        <hlm:signal name="testSignal" result="1" message="message">
-            <signalNotifierInput>
-                <hlm:signalInput refid="testSignalInput" />
-            </signalNotifierInput>
-        </hlm:signal>
-    </target>
-
-    <target name="raise-no-failure">
-        <!-- This raise a  testSignal. -->
-        <hlm:signal name="testSignal" result="0" message="message">
-            <signalNotifierInput>
-                <hlm:signalInput refid="testSignalInput" />
-            </signalNotifierInput>
-        </hlm:signal>
-    </target>
-
-    <target name="test-raise-no-failure" depends="raise-no-failure" />
-
-    <target name="test-raise-failure-now">
-        <!-- Should fail the build now -->
-        <au:expectfailure>
-            <antcall target="raise-failure-now" />
-        </au:expectfailure>
-    </target>
-
-    <target name="test-raise-deferred-failure">
-        <!-- This will not fail the build -->
-        <antcall target="raise-deferred-failure" />
-    </target>
-
-    <target name="test-raise-deferred-now-failure">
-        <!-- This will not fail the build -->
-        <antcall target="raise-deferred-failure" />
-        <!-- But next one should. -->
-        <au:expectfailure expectedMessage="testSignal: message : raise-failure-now">
-            <antcall target="raise-failure-now" />
-        </au:expectfailure>
-    </target>
-
-    <target name="test-no-args">
-        <!-- This raise a  testSignal. -->
-        <au:expectfailure expectedMessage="'name' attribute is not defined.">
-            <hlm:signal />
-        </au:expectfailure>
-    </target>
-
-    <target name="test-name-args">
-        <hlm:signal name="testSignal" />
-    </target>
-
-    <target name="test-name-args-not-existing">
-        <au:expectfailure expectedMessage="Could not find signal config for signal name: testNonExistingSignal">
-            <hlm:signal name="testNonExistingSignal" />
-        </au:expectfailure>
-    </target>
-
-    <target name="test-too-many-nested-element">
-        <au:expectfailure expectedMessage="One and only signal input can be defined">
-            <hlm:signal name="testNonExistingSignal">
-                <signalNotifierInput>
-                    <hlm:signalInput refid="testSignalInput" />
-                    <hlm:signalInput refid="testSignalInput" />
-                </signalNotifierInput>
-            </hlm:signal>
-        </au:expectfailure>
-    </target>
-
-</project>
--- a/buildframework/helium/external/helium-antlib/sysdef/bld.bat	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-@echo off
-
-rem
-rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-rem All rights reserved.
-rem This component and the accompanying materials are made available
-rem under the terms of the License "Eclipse Public License v1.0"
-rem which accompanies this distribution, and is available
-rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
-rem
-rem Initial Contributors:
-rem Nokia Corporation - initial contribution.
-rem
-rem Contributors:
-rem
-rem Description: 
-rem
-
-setlocal
-if not defined JAVA_6_HOME (
-set TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
-) ELSE  set TESTED_JAVA=%JAVA_6_HOME%
-if exist %TESTED_JAVA% (set JAVA_HOME=%TESTED_JAVA%)
-
-REM Configure Ant 
-if not defined TESTED_ANT_HOME (
-set TESTED_ANT_HOME=C:\Apps\ant_1.7
-) 
-if exist %TESTED_ANT_HOME% (set ANT_HOME=%TESTED_ANT_HOME%)
-
-REM Configure the expected Ant Version details below
-SET expMajorVer=1
-SET expMinorVer=7
-
-rem *** Verify Ant Version ***
-rem -- Run the 'ant -version' command and capture the output to a variable 
-for /f "tokens=*" %%a in ('ant -version') do (set antversion=%%a)
-echo *** Installed Version : %antversion%
-
-rem -- Parse the version string obtained above and get the version number
-for /f "tokens=4 delims= " %%a in ("%antversion%") do set val=%%a
-rem -- Parse the version number delimiting the '.' and set the major and
-rem    minor versions
-for /f "tokens=1-2 delims=." %%a in ("%val%") do (
-set /A majorVersion=%%a
-set /A minorVersion=%%b
-)
-rem -- Check whether major version is greater than or equal to the expected.
-if %majorVersion% geq %expMajorVer% ( 
-rem -- if major version is valid, check minor version. If minor version is less
-rem    than expected display message and abort the execution.
-if %minorVersion% lss %expMinorVer% (echo *** Incorrect version of Ant found. Please check you have atleast Ant 1.7.0 & goto :errorstop ) 
-)
-
-ant %*
-endlocal
-
-:errorstop
-@echo *** Build aborted with error
-exit /b 1
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/sysdef/build.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : build.xml 
-Part of     : Helium AntLib
-
-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="helium-sysdef">
-    <description>Helium Antlib Sydef.</description>
-    
-    <import file="../macros.ant.xml"/>
-    
-    <property name="name" value="sysdef"/>
-    
-    <path id="helium.sysdef.classpath">
-        <fileset dir="${helium.antlib.root.dir}/sysdef/lib" includes="*.jar"/>
-    </path>
-    
-</project>
-
-
--- a/buildframework/helium/external/helium-antlib/sysdef/demo/build.bat	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-@echo off
-
-rem
-rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-rem All rights reserved.
-rem This component and the accompanying materials are made available
-rem under the terms of the License "Eclipse Public License v1.0"
-rem which accompanies this distribution, and is available
-rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
-rem
-rem Initial Contributors:
-rem Nokia Corporation - initial contribution.
-rem
-rem Contributors:
-rem
-rem Description: 
-rem
-
-setlocal
-if not defined JAVA_6_HOME (
-set TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
-) ELSE  set TESTED_JAVA=%JAVA_6_HOME%
-if exist %TESTED_JAVA% (set JAVA_HOME=%TESTED_JAVA%)
-set ANT_ARGS=-lib %CD%\..\lib  -lib  %CD%\..\..\bin\helium-sysdef.jar -lib %CD%\..\..\antlibs
-ant %*
-endlocal
-
--- a/buildframework/helium/external/helium-antlib/sysdef/demo/build.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : build.xml 
-Part of     : Helium AntLib
-
-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="helium-antlib-sysdef-demo" xmlns:hlm="http://www.nokia.com/helium">
-    <description>Helium Antlib sysdef demo.</description>
-
-    <taskdef resource="com/nokia/helium/sysdef/ant/antlib.xml" uri="http://www.nokia.com/helium" />
-    <property name="epocroot" location="data" />
-
-    <target name="demo-join">
-        <hlm:joinSysdef epocroot="${epocroot}" srcfile="${epocroot}/root/system_definition_layer1.xml" destfile="${epocroot}/layer1.sysdef.xml" />
-        <hlm:joinSysdef epocroot="${epocroot}" srcfile="${epocroot}/root/system_definition_layer2.xml" destfile="${epocroot}/layer2.sysdef.xml" />
-        <hlm:mergeSysdef epocroot="${epocroot}" destfile="${epocroot}/full_model.sysdef.xml" srcfile="${epocroot}/layer1.sysdef.xml" downstreamfile="${epocroot}/layer2.sysdef.xml" />
-        <hlm:downgradeSysdef epocroot="${epocroot}" srcfile="${epocroot}/full_model.sysdef.xml" destfile="${epocroot}/downgraded_model.sysdef.xml"/>
-    </target>
-
-</project>
--- a/buildframework/helium/external/helium-antlib/sysdef/demo/data/layer1/package1/package_definition.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : package_definition.xml 
-Part of     : Helium AntLib
-
-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:
-
-============================================================================
--->
-<SystemDefinition schema="3.0.0">
-  <package id="package1" name="Package 1" levels="demo">
-    <collection id="collection" name="Collection" level="demo">
-      <component id="component" name="Component" purpose="development">
-        <unit bldFile="collection/component/group" mrp=""/>
-      </component>
-    </collection>
-  </package>
-</SystemDefinition>
--- a/buildframework/helium/external/helium-antlib/sysdef/demo/data/layer1/package2/package_definition.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : package_definition.xml 
-Part of     : Helium AntLib
-
-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:
-
-============================================================================
--->
-<SystemDefinition schema="3.0.0" xmlns:qt="http://qt.nokia.com">
-  <package id="package2" name="Package 2" levels="demo">
-    <collection id="collection2" name="Collection 2" level="demo">
-      <component id="component2" name="Component 2" purpose="development">
-        <unit bldFile="collection2/component2/group" mrp="" qt:proFile="foo.pro" />
-      </component>
-    </collection>
-  </package>
-</SystemDefinition>
--- a/buildframework/helium/external/helium-antlib/sysdef/demo/data/layer2/package3/package_definition.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : package_definition.xml 
-Part of     : Helium AntLib
-
-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:
-
-============================================================================
--->
-<SystemDefinition schema="3.0.0" xmlns:qt="http://qt.nokia.com">
-  <package id="package3" name="Package 3" levels="demo">
-    <collection id="collection3" name="Collection 3" level="demo">
-      <component id="component3" name="Component 3" purpose="development">
-        <unit bldFile="collection3/component3/group" mrp="" />
-      </component>
-    </collection>
-  </package>
-</SystemDefinition>
--- a/buildframework/helium/external/helium-antlib/sysdef/demo/data/layer2/package4/package_definition.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : package_definition.xml 
-Part of     : Helium AntLib
-
-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:
-
-============================================================================
--->
-<SystemDefinition schema="3.0.0">
-  <package id="package4" name="Package 4" levels="demo">
-    <collection id="collection4" name="Collection 4" level="demo">
-      <component id="component4" name="Component 4" purpose="development">
-        <unit bldFile="collection4/component4/group" mrp=""/>
-      </component>
-    </collection>
-  </package>
-</SystemDefinition>
--- a/buildframework/helium/external/helium-antlib/sysdef/demo/data/layer3/package5/package_definition.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : package_definition.xml 
-Part of     : Helium AntLib
-
-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:
-
-============================================================================
--->
-<SystemDefinition schema="3.0.0" xmlns:qt="http://qt.nokia.com">
-  <package id="package5" name="Package 5" levels="demo">
-    <!-- the xml syntax of this file is voluntarly wrong. -->
-    <collection id="collection5" name="Collection 5" level="demo" />
-      <component id="component5" name="Component 5" purpose="development">
-        <unit bldFile="collection5/component5/group" mrp="" />
-      </component>
-    </collection>
-  </package>
-</SystemDefinition>
--- a/buildframework/helium/external/helium-antlib/sysdef/demo/data/root/system_definition_layer1.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,131 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : package_definition.xml 
-Part of     : Helium AntLib
-
-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:
-
-============================================================================
--->
-<!DOCTYPE SystemDefinition [
-<!ELEMENT SystemDefinition ( systemModel | layer | package | collection | component)>
-<!ATTLIST SystemDefinition
-  schema CDATA #REQUIRED
-  id-namespace CDATA "http://www.symbian.org/system-definition"
->
-<!-- this DTD describes schema="3.0.0" --> 
-
-<!-- all relative paths are relative to this file
-	all absolute paths are relative to the environment variable specified by the root attribute, or SRCROOT if not.  -->
-
-<!-- Container for metadata
-	meta, if present, should always be the first element in the parent 
-	 -->
-<!ELEMENT meta ANY>
-<!ATTLIST meta
-  href		CDATA #IMPLIED
-  type	CDATA "auto"
-  rel	CDATA "Generic"
->
-
-<!-- systemModel element has name but no ID -->
-<!ELEMENT systemModel (meta*, layer+)>
-<!ATTLIST systemModel
-  name CDATA #IMPLIED
->
-
-<!-- All items from layer down to component should have either @href or at least one valid child item.
-	Anything else will be considered a placeholder
-	-->
-
-<!ELEMENT layer (meta*, (package | collection)*)  >
-<!ATTLIST layer
-  id ID #REQUIRED
-  name CDATA #IMPLIED
-  href		CDATA #IMPLIED
-  levels NMTOKENS #IMPLIED
-  span CDATA #IMPLIED
-  before NMTOKEN #IMPLIED
->
-
-<!ELEMENT package (meta*,  (package | collection)*)>
- <!-- Nested packages are for backwards compatibility only -->
-<!ATTLIST package
-  id ID #REQUIRED
-  name CDATA #IMPLIED
-  version CDATA #IMPLIED
-  tech-domain CDATA #IMPLIED
-  href	 CDATA #IMPLIED
-  levels NMTOKENS #IMPLIED
-  span CDATA #IMPLIED
-  level NMTOKEN #IMPLIED
-  before NMTOKEN #IMPLIED  
->
-
-<!ELEMENT collection (meta*, (component* ))>
-<!ATTLIST collection
-  id ID #REQUIRED
-  name CDATA #IMPLIED
-  href		CDATA #IMPLIED
-  level NMTOKEN #IMPLIED
-  before NMTOKEN #IMPLIED  
->
-
-<!ELEMENT component (meta*, unit*)>
-<!-- contains units or is a placeholder -->
-<!ATTLIST component
-  id ID #REQUIRED
-  name CDATA #IMPLIED
-  href		CDATA #IMPLIED
-  deprecated CDATA #IMPLIED
-  introduced CDATA #IMPLIED
-  target  ( device | desktop | other ) "device"
-  purpose ( optional | mandatory | development ) "optional"  
-  class NMTOKENS #IMPLIED
-  filter CDATA #IMPLIED
-  before NMTOKEN #IMPLIED  
-  origin-model CDATA #IMPLIED
->
-<!--
-	"filter" attribute is deprecated
-	"origin-model" attribute is only to be inserted by tools when merging models
- 	recommended class values are: doc, config, plugin, tool, api -->
-
-<!ELEMENT unit EMPTY >
-<!ATTLIST unit
-  mrp CDATA #IMPLIED
-  bldFile CDATA #IMPLIED
-  base CDATA #IMPLIED
-  root CDATA #IMPLIED
-  version NMTOKEN #IMPLIED
-  prebuilt NMTOKEN #IMPLIED
-  late (yes|no) #IMPLIED
-  filter CDATA #IMPLIED
-  priority CDATA #IMPLIED
->
-<!-- filter and priority are deprecated 
-	"root" attribute will usually be inserted by tools when merging models, although it can be set manually-->
-
-<!ENTITY layer_real_source_path "/sf/os/mm" >
-]>
-<SystemDefinition schema="3.0.0">
-  <systemModel name="Demo">
-    <layer id="layer1">
-      <package id="package1" href="../layer1/package1/package_definition.xml"/>
-      <package id="package2" href="../layer1/package2/package_definition.xml"/>
-    </layer>
-  </systemModel>
-</SystemDefinition>
--- a/buildframework/helium/external/helium-antlib/sysdef/demo/data/root/system_definition_layer2.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,129 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : package_definition.xml 
-Part of     : Helium AntLib
-
-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:
-
-============================================================================
--->
-<!DOCTYPE SystemDefinition [
-<!ELEMENT SystemDefinition ( systemModel | layer | package | collection | component)>
-<!ATTLIST SystemDefinition
-  schema CDATA #REQUIRED
-  id-namespace CDATA "http://www.symbian.org/system-definition"
->
-<!-- this DTD describes schema="3.0.0" --> 
-
-<!-- all relative paths are relative to this file
-	all absolute paths are relative to the environment variable specified by the root attribute, or SRCROOT if not.  -->
-
-<!-- Container for metadata
-	meta, if present, should always be the first element in the parent 
-	 -->
-<!ELEMENT meta ANY>
-<!ATTLIST meta
-  href		CDATA #IMPLIED
-  type	CDATA "auto"
-  rel	CDATA "Generic"
->
-
-<!-- systemModel element has name but no ID -->
-<!ELEMENT systemModel (meta*, layer+)>
-<!ATTLIST systemModel
-  name CDATA #IMPLIED
->
-
-<!-- All items from layer down to component should have either @href or at least one valid child item.
-	Anything else will be considered a placeholder
-	-->
-
-<!ELEMENT layer (meta*, (package | collection)*)  >
-<!ATTLIST layer
-  id ID #REQUIRED
-  name CDATA #IMPLIED
-  href		CDATA #IMPLIED
-  levels NMTOKENS #IMPLIED
-  span CDATA #IMPLIED
-  before NMTOKEN #IMPLIED
->
-
-<!ELEMENT package (meta*,  (package | collection)*)>
- <!-- Nested packages are for backwards compatibility only -->
-<!ATTLIST package
-  id ID #REQUIRED
-  name CDATA #IMPLIED
-  version CDATA #IMPLIED
-  tech-domain CDATA #IMPLIED
-  href	 CDATA #IMPLIED
-  levels NMTOKENS #IMPLIED
-  span CDATA #IMPLIED
-  level NMTOKEN #IMPLIED
-  before NMTOKEN #IMPLIED  
->
-
-<!ELEMENT collection (meta*, (component* ))>
-<!ATTLIST collection
-  id ID #REQUIRED
-  name CDATA #IMPLIED
-  href		CDATA #IMPLIED
-  level NMTOKEN #IMPLIED
-  before NMTOKEN #IMPLIED  
->
-
-<!ELEMENT component (meta*, unit*)>
-<!-- contains units or is a placeholder -->
-<!ATTLIST component
-  id ID #REQUIRED
-  name CDATA #IMPLIED
-  href		CDATA #IMPLIED
-  deprecated CDATA #IMPLIED
-  introduced CDATA #IMPLIED
-  target  ( device | desktop | other ) "device"
-  purpose ( optional | mandatory | development ) "optional"  
-  class NMTOKENS #IMPLIED
-  filter CDATA #IMPLIED
-  before NMTOKEN #IMPLIED  
-  origin-model CDATA #IMPLIED
->
-<!--
-	"filter" attribute is deprecated
-	"origin-model" attribute is only to be inserted by tools when merging models
- 	recommended class values are: doc, config, plugin, tool, api -->
-
-<!ELEMENT unit EMPTY >
-<!ATTLIST unit
-  mrp CDATA #IMPLIED
-  bldFile CDATA #IMPLIED
-  base CDATA #IMPLIED
-  root CDATA #IMPLIED
-  version NMTOKEN #IMPLIED
-  prebuilt NMTOKEN #IMPLIED
-  late (yes|no) #IMPLIED
-  filter CDATA #IMPLIED
-  priority CDATA #IMPLIED
->
-<!-- filter and priority are deprecated 
-	"root" attribute will usually be inserted by tools when merging models, although it can be set manually-->
-]>
-<SystemDefinition schema="3.0.0">
-  <systemModel name="Demo2">
-    <layer id="layer2" name="layer2" levels="demo">
-      <package id="package3" href="../layer2/package3/package_definition.xml"/>
-      <package id="package4" href="../layer2/package4/package_definition.xml"/>
-    </layer>
-  </systemModel>
-</SystemDefinition>
--- a/buildframework/helium/external/helium-antlib/sysdef/demo/data/root/system_definition_layer3.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,128 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : package_definition.xml 
-Part of     : Helium AntLib
-
-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:
-
-============================================================================
--->
-<!DOCTYPE SystemDefinition [
-<!ELEMENT SystemDefinition ( systemModel | layer | package | collection | component)>
-<!ATTLIST SystemDefinition
-  schema CDATA #REQUIRED
-  id-namespace CDATA "http://www.symbian.org/system-definition"
->
-<!-- this DTD describes schema="3.0.0" --> 
-
-<!-- all relative paths are relative to this file
-	all absolute paths are relative to the environment variable specified by the root attribute, or SRCROOT if not.  -->
-
-<!-- Container for metadata
-	meta, if present, should always be the first element in the parent 
-	 -->
-<!ELEMENT meta ANY>
-<!ATTLIST meta
-  href		CDATA #IMPLIED
-  type	CDATA "auto"
-  rel	CDATA "Generic"
->
-
-<!-- systemModel element has name but no ID -->
-<!ELEMENT systemModel (meta*, layer+)>
-<!ATTLIST systemModel
-  name CDATA #IMPLIED
->
-
-<!-- All items from layer down to component should have either @href or at least one valid child item.
-	Anything else will be considered a placeholder
-	-->
-
-<!ELEMENT layer (meta*, (package | collection)*)  >
-<!ATTLIST layer
-  id ID #REQUIRED
-  name CDATA #IMPLIED
-  href		CDATA #IMPLIED
-  levels NMTOKENS #IMPLIED
-  span CDATA #IMPLIED
-  before NMTOKEN #IMPLIED
->
-
-<!ELEMENT package (meta*,  (package | collection)*)>
- <!-- Nested packages are for backwards compatibility only -->
-<!ATTLIST package
-  id ID #REQUIRED
-  name CDATA #IMPLIED
-  version CDATA #IMPLIED
-  tech-domain CDATA #IMPLIED
-  href	 CDATA #IMPLIED
-  levels NMTOKENS #IMPLIED
-  span CDATA #IMPLIED
-  level NMTOKEN #IMPLIED
-  before NMTOKEN #IMPLIED  
->
-
-<!ELEMENT collection (meta*, (component* ))>
-<!ATTLIST collection
-  id ID #REQUIRED
-  name CDATA #IMPLIED
-  href		CDATA #IMPLIED
-  level NMTOKEN #IMPLIED
-  before NMTOKEN #IMPLIED  
->
-
-<!ELEMENT component (meta*, unit*)>
-<!-- contains units or is a placeholder -->
-<!ATTLIST component
-  id ID #REQUIRED
-  name CDATA #IMPLIED
-  href		CDATA #IMPLIED
-  deprecated CDATA #IMPLIED
-  introduced CDATA #IMPLIED
-  target  ( device | desktop | other ) "device"
-  purpose ( optional | mandatory | development ) "optional"  
-  class NMTOKENS #IMPLIED
-  filter CDATA #IMPLIED
-  before NMTOKEN #IMPLIED  
-  origin-model CDATA #IMPLIED
->
-<!--
-	"filter" attribute is deprecated
-	"origin-model" attribute is only to be inserted by tools when merging models
- 	recommended class values are: doc, config, plugin, tool, api -->
-
-<!ELEMENT unit EMPTY >
-<!ATTLIST unit
-  mrp CDATA #IMPLIED
-  bldFile CDATA #IMPLIED
-  base CDATA #IMPLIED
-  root CDATA #IMPLIED
-  version NMTOKEN #IMPLIED
-  prebuilt NMTOKEN #IMPLIED
-  late (yes|no) #IMPLIED
-  filter CDATA #IMPLIED
-  priority CDATA #IMPLIED
->
-<!-- filter and priority are deprecated 
-	"root" attribute will usually be inserted by tools when merging models, although it can be set manually-->
-]>
-<SystemDefinition schema="3.0.0">
-  <systemModel name="Demo2">
-    <layer id="layer2" name="layer3" levels="demo">
-      <package id="package5" href="../layer2/package5/package_definition.xml"/>
-    </layer>
-  </systemModel>
-</SystemDefinition>
--- a/buildframework/helium/external/helium-antlib/sysdef/demo/data/root/system_model.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,129 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : package_definition.xml 
-Part of     : Helium AntLib
-
-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:
-
-============================================================================
--->
-<!DOCTYPE SystemDefinition [
-<!ELEMENT SystemDefinition ( systemModel | layer | package | collection | component)>
-<!ATTLIST SystemDefinition
-  schema CDATA #REQUIRED
-  id-namespace CDATA "http://www.symbian.org/system-definition"
->
-<!-- this DTD describes schema="3.0.0" --> 
-
-<!-- all relative paths are relative to this file
-	all absolute paths are relative to the environment variable specified by the root attribute, or SRCROOT if not.  -->
-
-<!-- Container for metadata
-	meta, if present, should always be the first element in the parent 
-	 -->
-<!ELEMENT meta ANY>
-<!ATTLIST meta
-  href		CDATA #IMPLIED
-  type	CDATA "auto"
-  rel	CDATA "Generic"
->
-
-<!-- systemModel element has name but no ID -->
-<!ELEMENT systemModel (meta*, layer+)>
-<!ATTLIST systemModel
-  name CDATA #IMPLIED
->
-
-<!-- All items from layer down to component should have either @href or at least one valid child item.
-	Anything else will be considered a placeholder
-	-->
-
-<!ELEMENT layer (meta*, (package | collection)*)  >
-<!ATTLIST layer
-  id ID #REQUIRED
-  name CDATA #IMPLIED
-  href		CDATA #IMPLIED
-  levels NMTOKENS #IMPLIED
-  span CDATA #IMPLIED
-  before NMTOKEN #IMPLIED
->
-
-<!ELEMENT package (meta*,  (package | collection)*)>
- <!-- Nested packages are for backwards compatibility only -->
-<!ATTLIST package
-  id ID #REQUIRED
-  name CDATA #IMPLIED
-  version CDATA #IMPLIED
-  tech-domain CDATA #IMPLIED
-  href	 CDATA #IMPLIED
-  levels NMTOKENS #IMPLIED
-  span CDATA #IMPLIED
-  level NMTOKEN #IMPLIED
-  before NMTOKEN #IMPLIED  
->
-
-<!ELEMENT collection (meta*, (component* ))>
-<!ATTLIST collection
-  id ID #REQUIRED
-  name CDATA #IMPLIED
-  href		CDATA #IMPLIED
-  level NMTOKEN #IMPLIED
-  before NMTOKEN #IMPLIED  
->
-
-<!ELEMENT component (meta*, unit*)>
-<!-- contains units or is a placeholder -->
-<!ATTLIST component
-  id ID #REQUIRED
-  name CDATA #IMPLIED
-  href		CDATA #IMPLIED
-  deprecated CDATA #IMPLIED
-  introduced CDATA #IMPLIED
-  target  ( device | desktop | other ) "device"
-  purpose ( optional | mandatory | development ) "optional"  
-  class NMTOKENS #IMPLIED
-  filter CDATA #IMPLIED
-  before NMTOKEN #IMPLIED  
-  origin-model CDATA #IMPLIED
->
-<!--
-	"filter" attribute is deprecated
-	"origin-model" attribute is only to be inserted by tools when merging models
- 	recommended class values are: doc, config, plugin, tool, api -->
-
-<!ELEMENT unit EMPTY >
-<!ATTLIST unit
-  mrp CDATA #IMPLIED
-  bldFile CDATA #IMPLIED
-  base CDATA #IMPLIED
-  root CDATA #IMPLIED
-  version NMTOKEN #IMPLIED
-  prebuilt NMTOKEN #IMPLIED
-  late (yes|no) #IMPLIED
-  filter CDATA #IMPLIED
-  priority CDATA #IMPLIED
->
-<!-- filter and priority are deprecated 
-	"root" attribute will usually be inserted by tools when merging models, although it can be set manually-->
-]>
-<SystemDefinition schema="3.0.0">
-  <systemModel name="multimedia">
-    <layer id="mw" name="mw" levels="middleware framework">
-      <package id="mmmw" href="file:///i:/sf/mw/mmmw/package_definition.xml"/>
-      <!--<package id="mm" href="i:/sf/os/mm/package_definition.xml"/>-->
-    </layer>
-  </systemModel>
-</SystemDefinition>
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/sysdef/demo/data/sf/os/buildtools/bldsystemtools/buildsystemtools/filter-module.xsl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,110 +0,0 @@
-<?xml version="1.0"?>
- <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exslt="http://exslt.org/common"  exclude-result-prefixes="exslt">
-	<xsl:output method="xml" indent="yes"/>
-
-
-<!-- filters can only return hide or show -->
-
-<!-- filter-only =  item's @filter can only have items from the list
-	anything with no filters passes
--->
-<xsl:template match="filter-only" mode="filter"><xsl:param name="item"/>
-	<xsl:if test="$item[@filter]">
-		<xsl:variable name="this" select="."/>
-		<xsl:variable name="my-filters">
-			<xsl:call-template name="filter-list">
-				<xsl:with-param name="f" select="$item/parent::component/@filter"/>
-			</xsl:call-template>
-			<xsl:call-template name="filter-list">
-				<xsl:with-param name="f" select="$item/@filter"/>
-			</xsl:call-template>
-		</xsl:variable>
-		<xsl:variable name="match">
-			<xsl:for-each select="exslt:node-set($my-filters)/*">
-				<xsl:if test="not($this/*[name()=name(current())  and @v=current()/@v])">x</xsl:if>
-			</xsl:for-each>
-		</xsl:variable>
-		<xsl:if test="$match!=''">hide</xsl:if>
-	</xsl:if>
-</xsl:template>
-
-
-
-<!-- filter-has =  item's @filter must have all filters in the list. ie it can have any other filters, but these must all be present	
--->
-<xsl:template match="filter-has" mode="filter"><xsl:param name="item"/>
-	<xsl:if test="$item[(self::component or self::unit)  and not(unit/@filter or self::unit[not(../unit[@filter])])]">
-		<xsl:variable name="my-filters">
-			<xsl:call-template name="filter-list">
-				<xsl:with-param name="f" select="$item/parent::component/@filter"/>
-			</xsl:call-template>
-			<xsl:call-template name="filter-list">
-				<xsl:with-param name="f" select="$item/@filter"/>
-			</xsl:call-template>
-		</xsl:variable>
-		<xsl:variable name="match">
-			<xsl:for-each select="*">
-				<!-- 	if(f in this) {return true}  else if(!f in this) {return false} else {return !(f is positive)} -->
-				<xsl:choose>
-					<xsl:when test="exslt:node-set($my-filters)/*[name()=name(current()) and @v=current()/@v]"/> <!-- filter in item -->
-					<xsl:when test="exslt:node-set($my-filters)/*[name()!=name(current()) and @v=current()/@v]">x</xsl:when> <!-- !filter in item -->
-					<xsl:when test="self::filter">x</xsl:when> <!-- !(filter is positive) -->
-				</xsl:choose>
-			</xsl:for-each>
-		</xsl:variable>
-		<xsl:if test="$match!=''">hide</xsl:if>
-	</xsl:if>
-</xsl:template>
-
-<xsl:template match="filter-with" mode="filter"><xsl:param name="item"/>
-	<xsl:if test="$item[(self::component or self::unit)  and not(unit/@filter or self::unit[not(../unit[@filter])])]">
-		<xsl:variable name="my-filters">
-			<xsl:call-template name="filter-list">
-				<xsl:with-param name="f" select="$item/parent::component/@filter"/>
-			</xsl:call-template>
-			<xsl:call-template name="filter-list">
-				<xsl:with-param name="f" select="$item/@filter"/>
-			</xsl:call-template>
-		</xsl:variable>
-		<xsl:variable name="match">
-			<xsl:for-each select="*">
-				<xsl:if test="exslt:node-set($my-filters)/*[name()!=name(current()) and @v=current()/@v]">x</xsl:if> <!-- !filter in item -->
-			</xsl:for-each>
-		</xsl:variable>
-		<xsl:if test="$match!=''">hide</xsl:if>
-	</xsl:if>
-</xsl:template>
-
-
-
-<xsl:template name="filter-item"> <xsl:param name="f"/>
-	<!-- create an element for a given filter. If the filter's empty make nothing -->
-	<xsl:choose>
-		<xsl:when test="$f=''"/>
-		<xsl:when test="starts-with($f,'!')">
-				<not v="{substring($f,2)}"/>
-		</xsl:when>
-		<xsl:otherwise>
-				<filter v="{$f}"/>
-		</xsl:otherwise>
-	</xsl:choose>
-</xsl:template>
-
-<xsl:template name="filter-list"><xsl:param name="f"/>
-	<!-- turn a filter list into a set of elements (<filter> or <not>) with the attribute "v" containing the "absolute value" of the filter
-		filter="A,B,!C" becomes  <filter v="A"/><filter v="B"/><not v="C"/> 
-	  -->
-	<xsl:choose>
-		<xsl:when test="contains($f,',')">
-			<xsl:call-template name="filter-item"><xsl:with-param name="f" select="normalize-space(substring-before($f,','))"/></xsl:call-template>
-			<xsl:call-template name="filter-list">
-				<xsl:with-param name="f" select="substring-after($f,',')"/>
-			</xsl:call-template>
-		</xsl:when>
-		<xsl:otherwise>
-			<xsl:call-template name="filter-item"><xsl:with-param name="f" select="normalize-space($f)"/></xsl:call-template>
-		</xsl:otherwise>
-	</xsl:choose>
-</xsl:template>
-
-</xsl:stylesheet> 
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/sysdef/demo/data/sf/os/buildtools/bldsystemtools/buildsystemtools/filtersysdef.xsl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-<?xml version="1.0"?>
- <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exslt="http://exslt.org/common"  exclude-result-prefixes="exslt">
-	<xsl:output method="xml" indent="yes"/>
-
-<!-- create a stand-alone sysdef from a linked set of fragments -->
-
-<xsl:param name="path">/os/deviceplatformrelease/foundation_system/system_model/system_definition.xml</xsl:param>
-
-<xsl:param name="filter-type">only</xsl:param> <!-- only, has or with -->
-
-<xsl:param name="filter"/> <!-- comma-separated list -->
-
-
-<xsl:template match="/*">
-	<xsl:apply-templates select="." mode="join"/>
-</xsl:template>
-
-
-<xsl:template match="/SystemDefinition[systemModel]">
-
-	<xsl:variable name="f">
-		<xsl:element name="filter-{$filter-type}">
-			<xsl:call-template name="filter-list">
-				<xsl:with-param name="f" select="$filter"/>
-			</xsl:call-template>
-		</xsl:element>
-	</xsl:variable>
-
-<xsl:apply-templates select="." mode="join">
-	<xsl:with-param name="filename" select="$path"/>
-	<xsl:with-param name="data" select="exslt:node-set($f)/*"/>
-</xsl:apply-templates>
-</xsl:template>
-
-
-
-<xsl:include href="joinsysdef-module.xsl"/>
-<xsl:include href="filter-module.xsl"/>
-
-</xsl:stylesheet>	
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/sysdef/demo/data/sf/os/buildtools/bldsystemtools/buildsystemtools/joinsysdef-module.xsl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,402 +0,0 @@
-<?xml version="1.0"?>
-<!-- 
-============================================================================ 
-Name        : joinsysdef-module.xsl 
-Part of     : Helium AntLib
-
-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:
-
-============================================================================
--->
- <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exslt="http://exslt.org/common" exclude-result-prefixes="exslt">
-	<!-- save SF namespace as a constant to avoid the risk of typos-->
- <xsl:variable name="defaultns">http://www.symbian.org/system-definition</xsl:variable>
- 
-<!-- create a stand-alone sysdef from a linked set of fragments -->
-
-<xsl:template match="/*" mode="join">
-	<xsl:message terminate="yes">Cannot process this document</xsl:message>
-</xsl:template>
-
-
-<xsl:template match="/SystemDefinition[@schema='3.0.0' and count(*)=1]" mode="join">
-	<xsl:param name="origin" select="/.."/>
-	<xsl:param name="root"/>
-	<xsl:param name="filename"/>
-	<xsl:param name="namespaces"/>
-	<xsl:choose>
-		<xsl:when test="$origin">	<!-- this sysdef fragment was linked from a parent sysdef -->
-			<xsl:for-each select="*"> <!-- can be only one -->
-				<xsl:variable name="upid"><xsl:apply-templates select="$origin/@id" mode="my-id"/></xsl:variable>		<!-- namespaceless ID of this in parent doc -->
-				<xsl:variable name="id"><xsl:apply-templates select="@id" mode="my-id"/></xsl:variable>						<!-- namespaceless ID of this here -->
-				<xsl:variable name="upns"><xsl:apply-templates select="$origin/@id" mode="my-namespace"/></xsl:variable>	<!-- ID's namespace in parent doc -->
-				<xsl:variable name="ns"><xsl:apply-templates select="@id" mode="my-namespace"/></xsl:variable>	<!-- ID's namespace -->
-				<xsl:if test="$id!=$upid or $ns!=$upns">
-					<xsl:message terminate="yes">Linked ID "<xsl:value-of select="$id"/>" (<xsl:value-of select="$ns"/>) must match linking document "<xsl:value-of select="$upid"/>" (<xsl:value-of select="$upns"/>)</xsl:message>
-				</xsl:if>
-				<!-- copy any attributes not already defined (parent doc overrides child doc)-->
-				<xsl:for-each select="@*">
-					<xsl:variable name="n" select="name()"/>
-					<xsl:choose>
-						<xsl:when test="$n='id'"/> <!-- never copy this, always set -->
-						<xsl:when test="$origin/@*[name()=$n]"> <!-- don't copy if already set -->
-							<xsl:message>Cannot set "<xsl:value-of select="$n"/>", already set</xsl:message>
-						</xsl:when>
-						<xsl:when test="$n='before'">
-							<!-- ensure ns is correct (if any future attribtues will ever use an ID, process it here too)-->
-							<xsl:apply-templates select="." mode="join">
-								<xsl:with-param name="namespaces" select="$namespaces"/>
-							</xsl:apply-templates>
-						</xsl:when> 
-						<xsl:otherwise><xsl:copy-of select="."/></xsl:otherwise> <!-- just copy anything else -->
-					</xsl:choose>
-				</xsl:for-each>
-				<xsl:copy-of select="../namespace::*[not(.=$namespaces)]"/> <!-- set any namespaces not already set (they should all alreayd be, but some XSLT processors are quirky) -->
-				<xsl:apply-templates select="*|comment()" mode="join">
-					<xsl:with-param name="root" select="$root"/>
-					<xsl:with-param name="filename" select="$filename"/>
-					<xsl:with-param name="namespaces" select="$namespaces | ../namespace::*[not(.=$namespaces)]"/>
-				</xsl:apply-templates>
-			</xsl:for-each>
-		</xsl:when>
-		<xsl:when test="function-available('exslt:node-set')">
-			<!--try to put all namespaces in root element -->
-			<xsl:variable name="nss">
-				<!-- contains node set of namespaces to add to root element.
-					May panic if there are too many single-letter namespaces and this can't create a new one -->
-				<xsl:call-template name="needed-namespaces">
-					<xsl:with-param name="foundns">
-						<xsl:apply-templates select="//*[(self::component or self::collection or self::package or self::layer) and @href]" mode="scan-for-namespaces"/>
-					</xsl:with-param>
-				</xsl:call-template>
-			</xsl:variable>
-			<xsl:variable name="ns" select="@id-namespace | namespace::* | exslt:node-set($nss)/*"/>
-			<xsl:copy><xsl:copy-of select="@*"/>
-				<xsl:for-each select="exslt:node-set($nss)/*"> <!-- add namespace definitions -->
-					<xsl:attribute name="xmlns:{name()}">
-						<xsl:value-of select="."/>
-					</xsl:attribute>
-				</xsl:for-each>
-				<xsl:apply-templates select="*|comment()" mode="join">
-					<xsl:with-param name="namespaces" select="$ns"/>
-					<xsl:with-param name="root" select="$root"/>
-					<xsl:with-param name="filename" select="$filename"/>
-				</xsl:apply-templates>
-			</xsl:copy>
-		</xsl:when>
-		<xsl:otherwise> <!-- can't handle node-set() so put the namespaces in the document instead of the root -->
-			<xsl:variable name="ns" select="@id-namespace | namespace::*"/>
-			<xsl:copy><xsl:copy-of select="@*"/>
-				<xsl:apply-templates select="*|comment()" mode="join">
-					<xsl:with-param name="namespaces" select="$ns"/>
-					<xsl:with-param name="root" select="$root"/>
-					<xsl:with-param name="filename" select="$filename"/>
-				</xsl:apply-templates>
-			</xsl:copy>
-		</xsl:otherwise>
-	</xsl:choose>
-</xsl:template>
-
-<xsl:template match="*" mode="scan-for-namespaces"/> <!-- just in case of errors, consider replacing by terminate -->
-<xsl:template match="*[@href and not(self::meta)]" mode="scan-for-namespaces">
-	<!-- produce a list of namespace-prefix namespace pairs separated by newlines, in reverse order found in documents 
-		reverse order so we can try to use the first namespace prefix defined if it's available-->
-	<xsl:for-each select="document(@href,.)/*">
-		<xsl:apply-templates select="//*[(self::component or self::collection or self::package or self::layer) and @href]" mode="scan-for-namespaces"/>
-		<xsl:for-each select="//namespace::* | @id-namespace">
-			<xsl:value-of select="concat(name(),' ',.,'&#xa;')"/>
-		</xsl:for-each>
-	</xsl:for-each>			
-</xsl:template>
-
-<xsl:template name="needed-namespaces">
-	<xsl:param name="foundns"/>
-	<xsl:param name="usedpre"/>
-	<xsl:variable name="line" select="substring-before($foundns,'&#xa;')"/> <!-- always has trailing newline -->
-	<xsl:variable name="name" select="substring-after($line,' ')"/> <!-- namespace prefix -->
-	<xsl:variable name="remainder" select="substring-after($foundns,'&#xa;')"/>
-	<xsl:variable name="newprefix">
-		<xsl:if test="not(contains(concat('&#xa;',$remainder),concat('&#xa;',$line,'&#xa;'))) and
-			not(//namespace::*[.=$name] or @id-namespace[.=$name] or (not(@id-namespace) and $defaultns=$name))">
-					<xsl:apply-templates select="." mode="ns-prefix">
-						<xsl:with-param name="ns" select="$name"/>
-						<xsl:with-param name="pre" select="substring-before($line,' ')"/>
-						<xsl:with-param name="dontuse" select="$usedpre"/>
-					</xsl:apply-templates>
-		</xsl:if>
-	</xsl:variable>
-	<xsl:if test="$newprefix!=''">
-		<!-- can treat this as if it were a namespace node -->
-		<xsl:element name="{$newprefix}">
-			<xsl:value-of select="$name"/>
-		</xsl:element>
-	</xsl:if>
-	<xsl:if test="$remainder!=''">
-		<xsl:call-template name="needed-namespaces">
-			<xsl:with-param name="foundns" select="$remainder"/>
-			<xsl:with-param name="usedpre" select="concat($usedpre,' ',$newprefix,' ')"/>
-		</xsl:call-template>
-	</xsl:if>
-</xsl:template>
-
-<xsl:template match="/SystemDefinition" mode="ns-prefix">
-	<!-- should be able to replace this with mechanism that uses the XSLT processor's own ability to generate namespaces -->
-	<xsl:param name="ns"/>
-	<xsl:param name="pre"/>
-	<xsl:param name="dontuse"/>
-	<xsl:param name="chars">ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz</xsl:param>
-	<xsl:variable name="name" select="substring(substring-after($ns,'http://www.'),1,1)"/>
-	<xsl:choose>
-		<xsl:when test="$pre!='' and $pre!='id-namespace' and not(//namespace::*[name()=$pre]) and not(contains($dontuse,concat(' ',$pre,' ')))">
-			<xsl:value-of select="$pre"/>
-		</xsl:when>
-		<xsl:when test="$ns='' and $chars=''">
-			<xsl:message terminate="yes">Cannot create namespace prefix for downstream default namespace</xsl:message>
-		</xsl:when>
-		<xsl:when test="$name!='' and not(contains($dontuse,concat(' ',$name,' ')))"><xsl:value-of select="$name"/></xsl:when>
-		<xsl:when test="namespace::*[name()=substring($chars,1,1)] or contains($dontuse,concat(' ',substring($chars,1,1),' '))">
-			<xsl:apply-templates mode="ns-prefix">
-				<xsl:with-param name="chars" select="substring($chars,2)"/>
-			</xsl:apply-templates>
-		</xsl:when>
-		<xsl:otherwise>
-			<xsl:value-of select="substring($chars,1,1)"/>
-		</xsl:otherwise>
-	</xsl:choose>
-</xsl:template>
-
-
-<xsl:template match="unit" mode="join">	<xsl:param name="root"/><xsl:param name="filename"/>
-	<xsl:element name="{name()}">
-		<xsl:apply-templates select="@*" mode="join">
-			<xsl:with-param name="root" select="$root"/>
-			<xsl:with-param name="filename" select="$filename"/>
-		</xsl:apply-templates>
-	</xsl:element>
-</xsl:template>
-
-<!-- copy metadata verbatim
-	Should add mechanism to selectively include or filter metadata sections -->
-<xsl:template match="meta" priority="2">
-	<xsl:element name="{name()}">
-		<xsl:apply-templates select="@*" mode="join"/>
-		<xsl:choose>
-			<xsl:when test="@href">
-				<xsl:copy-of select="document(@href,.)/*"/> 
-			</xsl:when>
-			<xsl:otherwise>
-				<xsl:copy-of select="*|comment()"/>
-			</xsl:otherwise>
-		</xsl:choose>
-	</xsl:element>
-</xsl:template>
-
-<xsl:template match="*" mode="join">	<xsl:param name="root"/><xsl:param name="filename"/><xsl:param name="namespaces"/>
-	<xsl:element name="{name()}"> <!-- use this instead of <copy> so xalan doesn't add extra wrong namespaces -->
-		<xsl:apply-templates select="@*" mode="join">
-			<xsl:with-param name="namespaces" select="$namespaces"/>
-		</xsl:apply-templates>
-		
-		<xsl:choose>
-			<xsl:when test="@href">
-				<xsl:variable name="origin" select="."/>
-				<xsl:apply-templates select="document(@href,.)/*" mode="join">
-					<xsl:with-param name="origin" select="$origin"/>
-					<xsl:with-param name="namespaces" select="$namespaces"/>
-					<xsl:with-param name="filename">
-						<xsl:call-template name="joinpath">
-							<xsl:with-param name="file" select="$filename"/>
-							<xsl:with-param name="rel" select="$origin/@href"/>
-						</xsl:call-template>					
-					</xsl:with-param>
-					<xsl:with-param name="root">
-							<xsl:value-of select="$root"/>/<xsl:call-template name="lastbefore">
-							<xsl:with-param name="string" select="$origin/@href"/>
-						</xsl:call-template>
-					</xsl:with-param>
-				</xsl:apply-templates> 
-			</xsl:when>
-			<xsl:otherwise>
-				<xsl:apply-templates select="*|comment()" mode="join">
-					<xsl:with-param name="root" select="$root"/>
-					<xsl:with-param name="filename" select="$filename"/>
-					<xsl:with-param name="namespaces" select="$namespaces"/>
-				</xsl:apply-templates>
-			</xsl:otherwise>
-		</xsl:choose>
-	</xsl:element>
-</xsl:template>
-
-<xsl:template match="@mrp[starts-with(.,'/')] | @bldFile[starts-with(.,'/')] | @base[starts-with(.,'/')]" mode="join">
-	<xsl:copy-of select="."/>
-</xsl:template>
-
-<xsl:template match="@mrp|@bldFile|@base" mode="join">	<xsl:param name="root"/><xsl:param name="filename"/>
-	<xsl:attribute name="{name()}">
-		<xsl:call-template name="joinpath">
-			<xsl:with-param name="file" select="$filename"/>
-			<xsl:with-param name="rel" select="."/>
-		</xsl:call-template>	
-	</xsl:attribute>	
-</xsl:template>
-
-
-<xsl:template match="@href" mode="join"/>
-
-<xsl:template match="@*" mode="my-namespace"> <!-- the namespace of an ID -->
-	<xsl:choose>
-		<xsl:when test="contains(.,':')">
-			<xsl:value-of select="ancestor::*/namespace::*[name()=substring-before(current(),':')]"/>
-		</xsl:when>
-		<xsl:when test="/SystemDefinition/@id-namespace">
-			<xsl:value-of select="/SystemDefinition/@id-namespace"/>
-		</xsl:when>
-		<xsl:otherwise>
-			<xsl:value-of select="$defaultns"/>
-		</xsl:otherwise>
-	</xsl:choose>
-</xsl:template>
-
-
-<xsl:template match="@*" mode="my-id"> <!-- the ID with namespace prefix removed -->
-	<xsl:choose>
-		<xsl:when test="contains(.,':')">
-			<xsl:value-of select="substring-after(.,':')"/>
-		</xsl:when>
-		<xsl:otherwise>
-			<xsl:value-of select="."/>
-		</xsl:otherwise>
-	</xsl:choose>
-</xsl:template>
-
-
-
-<xsl:template match="@id|@before" mode="join">
-	<xsl:param name="namespaces"/>
-	<!-- this will change the namespace prefixes for all IDs to match the root document -->
-	<xsl:variable name="ns">
-		<xsl:apply-templates select="." mode="my-namespace"/>
-	</xsl:variable>
-	<xsl:if test="$ns=''">
-		<xsl:message terminate="yes">Could not find namespace for <xsl:value-of select="."/>
-		</xsl:message>
-	</xsl:if>
-	<xsl:variable name="prefix" select="name($namespaces[.=$ns])"/>
-	<xsl:attribute name="{name()}">
-	<xsl:choose>
-		<xsl:when test="$prefix = 'id-namespace' or  (not($namespaces[name()='id-prefix']) and $ns=$defaultns)"/> <!-- it's the default namespace, no prefix -->
-		<xsl:when test="$prefix='' and contains(.,':')">
-			<!-- complex: copy id and copy namespace (namespace should be copied already)-->
-			<xsl:value-of select="."/>
-		</xsl:when>
-		<xsl:when test="$prefix='' and $ns=$defaultns"/> <!-- no prefix and it's the default --> 
-		<xsl:when test="$prefix!=''">			<!-- just change the prefix -->
-			<xsl:value-of select="concat($prefix,':')"/>
-		</xsl:when>
-		<xsl:otherwise>
-		<xsl:message terminate="yes">Error</xsl:message>
-		</xsl:otherwise>
-	</xsl:choose>
-		<xsl:apply-templates select="." mode="my-id"/>
-	</xsl:attribute>
-</xsl:template>
-
-
-
-<xsl:template match="@*|comment()" mode="join"><xsl:copy-of select="."/></xsl:template>
-
-
-<!-- path handling follows -->
-
- <xsl:template name="lastbefore"><xsl:param name="string"/><xsl:param name="substr" select="'/'"/>
-        <xsl:if test="contains($string,$substr)">
-                <xsl:value-of select="substring-before($string,$substr)"/>
-                <xsl:if test="contains(substring-after($string,$substr),$substr)">
-	                <xsl:value-of select="$substr"/>
-	              </xsl:if>
-        <xsl:call-template name="lastbefore">
-                <xsl:with-param name="string" select="substring-after($string,$substr)"/>
-                <xsl:with-param name="substr" select="$substr"/>
-        </xsl:call-template>
-        </xsl:if>
-</xsl:template>
-
- <xsl:template name="joinpath"><xsl:param name="file"/><xsl:param name="rel"/>
-        <xsl:call-template name="reducepath">
-        <xsl:with-param name="file">
-	        <xsl:call-template name="lastbefore">
-	                <xsl:with-param name="string" select="$file"/>
-	        </xsl:call-template>
-	        <xsl:text>/</xsl:text>
-	        <xsl:value-of select="$rel"/>
-	       </xsl:with-param>
-	      </xsl:call-template>
- </xsl:template>
-
-<xsl:template name="reducepath"><xsl:param name="file"/>
-	<xsl:call-template name="reducedotdotpath">
-    	<xsl:with-param name="file">
-			<xsl:call-template name="reducedotpath">
-		    	<xsl:with-param name="file" select="$file"/>
-		    </xsl:call-template>
-		</xsl:with-param>
-	</xsl:call-template>
-</xsl:template>
-
-<xsl:template name="reducedotdotpath"><xsl:param name="file"/>
-	<xsl:choose>
-		<xsl:when test="starts-with($file,'../')">
-			<xsl:text>../</xsl:text>
-			<xsl:call-template name="reducedotdotpath">
-        		<xsl:with-param name="file" select="substring($file,4)"/>
-			</xsl:call-template>
-		</xsl:when>
-		<xsl:when test="contains($file,'/../')">							
-			<xsl:call-template name="reducepath">
-        		<xsl:with-param name="file">
-			        <xsl:call-template name="lastbefore">
-			                <xsl:with-param name="string" select="substring-before($file,'/../')"/>
-			        </xsl:call-template>
-			        <xsl:text>/</xsl:text>
-					<xsl:value-of select="substring-after($file,'/../')"/>
-				</xsl:with-param>
-			</xsl:call-template>
-		</xsl:when>
-		<xsl:otherwise><xsl:value-of select="$file"/></xsl:otherwise>
-	</xsl:choose>
- </xsl:template>
-
-<xsl:template name="reducedotpath"><xsl:param name="file"/>
-	<xsl:choose>	
-		<xsl:when test="starts-with($file,'./')">
-			<xsl:call-template name="reducedotpath">
-        		<xsl:with-param name="file" select="substring($file,3)"/>
-			</xsl:call-template>
-		</xsl:when>
-		<xsl:when test="contains($file,'/./')">
-			<xsl:call-template name="reducepath">
-        		<xsl:with-param name="file">
-	                <xsl:value-of select="substring-before($file,'/./')"/>
-			        <xsl:text>/</xsl:text>
-					<xsl:value-of select="substring-after($file,'/./')"/>
-				</xsl:with-param>
-			</xsl:call-template>
-		</xsl:when>
-		<xsl:otherwise><xsl:value-of select="$file"/></xsl:otherwise>
-	</xsl:choose>
- </xsl:template>
-
-
-</xsl:stylesheet>
--- a/buildframework/helium/external/helium-antlib/sysdef/demo/data/sf/os/buildtools/bldsystemtools/buildsystemtools/joinsysdef.xsl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-<?xml version="1.0"?>
-<!-- 
-============================================================================ 
-Name        : joinsysdef.xsl 
-Part of     : Helium AntLib
-
-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:
-
-============================================================================
--->
- <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
- 	<xsl:output method="xml" indent="yes"/>
-<!-- create a stand-alone sysdef from a linked set of fragments -->
-
-<xsl:param name="path">/os/deviceplatformrelease/foundation_system/system_model/system_definition.xml</xsl:param>
-
-<xsl:template match="/*">
-	<xsl:apply-templates select="." mode="join"/>
-</xsl:template>
-
-
-<xsl:template match="/SystemDefinition[systemModel]">
-<xsl:apply-templates select="." mode="join">
-	<xsl:with-param name="filename" select="$path"/>
-</xsl:apply-templates>
-</xsl:template>
-
-
-
-
-<xsl:include href="joinsysdef-module.xsl"/>
-
-</xsl:stylesheet>
--- a/buildframework/helium/external/helium-antlib/sysdef/demo/data/sf/os/buildtools/bldsystemtools/buildsystemtools/mergesysdef-module.xsl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,513 +0,0 @@
-<!-- 
-============================================================================ 
-Name        : mergesysdef-module.xsl 
-Part of     : Helium AntLib
-
-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:
-
-============================================================================
--->
-<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exslt="http://exslt.org/common"  exclude-result-prefixes="exslt">
-	
-<!--  this merge only two files according to the 3.0.0 rules. Old syntax not supported. Must be converetd before calling -->
-<xsl:variable name="defaultns">http://www.symbian.org/system-definition</xsl:variable>
-
-<xsl:template match="/SystemDefinition[starts-with(@schema,'2.') or starts-with(@schema,'1.')]" priority="2" mode="merge-models">
-	<xsl:message terminate="yes">Syntax <xsl:value-of select="@schema"/> not supported</xsl:message>
-</xsl:template>
-<xsl:template match="/SystemDefinition[not(systemModel)]" priority="2" mode="merge-models">
-	<xsl:message terminate="yes">Can only merge stand-alone system models</xsl:message>
-</xsl:template>
-
-<!-- stuff for dealing with namespaces -->
-
-
-<xsl:template match="node()|@*" mode="translate-namespaces"><xsl:copy-of select="."/></xsl:template>
-<!-- don't translate meta or unit tags, just copy verbatim -->
-<xsl:template match="meta|unit" mode="translate-namespaces" priority="2">
-<xsl:element name="{name()}">
-<xsl:copy-of select="@*|*|comment()"/>
-</xsl:element>
-</xsl:template>
-
-<xsl:template match="*" mode="translate-namespaces"><xsl:param name="nsdoc"/>
-<xsl:element name="{name()}">
-<xsl:apply-templates select="@*|node()" mode="translate-namespaces">
-	<xsl:with-param name="nsdoc" select="$nsdoc"/>
-</xsl:apply-templates>
-</xsl:element>
-</xsl:template>
-
-
-<xsl:template match="@id|@before" mode="translate-namespaces"><xsl:param name="nsdoc"/>
-	<xsl:attribute name="{name()}">
-		<xsl:variable name="id">
-			<xsl:choose>
-				<xsl:when test="contains(.,':')">
-					<xsl:value-of select="substring-after(.,':')"/>
-				</xsl:when>
-				<xsl:otherwise>
-					<xsl:value-of select="."/>
-				</xsl:otherwise>
-			</xsl:choose>
-		</xsl:variable>
-		<xsl:variable name="ns">
-			<xsl:choose>
-				<xsl:when test="contains(.,':')">
-					<xsl:value-of select="ancestor-or-self::*/namespace::*[name()=substring-before(current()/.,':')]"/>
-				</xsl:when>
-				<xsl:when test="/SystemDefinition/@id-namespace">
-					<xsl:value-of select="/SystemDefinition/@id-namespace"/>
-				</xsl:when>
-				<xsl:otherwise>
-					<xsl:value-of select="$defaultns"/>
-				</xsl:otherwise>
-			</xsl:choose>
-		</xsl:variable>
-		<xsl:choose>
-			<xsl:when test="not($nsdoc/@id-namespace) and $defaultns=$ns">
-				<xsl:value-of select="$id"/>
-			</xsl:when>
-			<xsl:when test="$nsdoc/@id-namespace=$ns">
-				<xsl:value-of select="$id"/>
-			</xsl:when>
-			<xsl:when test="$nsdoc/namespace::*[.=$ns]">
-				<xsl:value-of select="concat(name($nsdoc/namespace::*[.=$ns]),':',$id)"/>
-			</xsl:when>
-			<xsl:when test="/SystemDefinition/@id-namespace=$ns">
-				<xsl:variable name="myns">
-					<xsl:apply-templates mode="ns-prefix" select="$nsdoc">
-						<xsl:with-param name="ns" select="$ns"/>
-					</xsl:apply-templates>
-				</xsl:variable>			
-				<xsl:value-of select="concat($myns,':',$id)"/>
-			</xsl:when>
-			<xsl:otherwise> <!-- some namespace that needed to be defined --> 
-			<xsl:message>"<xsl:value-of select="$ns"/>" for <xsl:value-of select="$id"/></xsl:message>
-				<xsl:value-of select="."/>					
-			</xsl:otherwise>
-		</xsl:choose>		
-	</xsl:attribute>
-</xsl:template>
-
-<xsl:template match="/SystemDefinition" mode="ns-prefix">
-	<xsl:param name="ns"/> <!-- the namespace URI -->
-	<xsl:param name="pre"/> <!-- the preferred prefix to use if possbile -->
-	<xsl:param name="dontuse"/> <!-- space prefixed, separated and terminated list of namespace prefixes to not use -->
-	<xsl:param name="chars">ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz</xsl:param> <!-- single letter namespace prefixes to try -->
-	<xsl:variable name="name" select="substring(substring-after($ns,'http://www.'),1,1)"/>
-	<xsl:choose>
-		<xsl:when test="$pre!='' and $pre!='id-namespace' and not(//namespace::*[name()=$pre]) and not(contains($dontuse,concat(' ',$pre,' ')))">
-			<xsl:value-of select="$pre"/>
-		</xsl:when>
-		<xsl:when test="$ns='' and $chars=''">
-			<xsl:message terminate="yes">Cannot create namespace prefix for downstream default namespace</xsl:message>
-		</xsl:when>
-		<xsl:when test="$name!='' and not(contains($dontuse,concat(' ',$name,' ')))"><xsl:value-of select="$name"/></xsl:when>
-		<xsl:when test="namespace::*[name()=substring($chars,1,1)] or contains($dontuse,concat(' ',substring($chars,1,1),' '))">
-			<xsl:apply-templates mode="ns-prefix">
-				<xsl:with-param name="chars" select="substring($chars,2)"/>
-			</xsl:apply-templates>
-		</xsl:when>
-		<xsl:otherwise>
-			<xsl:value-of select="substring($chars,1,1)"/>
-		</xsl:otherwise>
-	</xsl:choose>
-</xsl:template>
-
-
-<!--  need to make sure this handles <meta> correctly -->
-
-<xsl:template match="/SystemDefinition" mode="merge-models">
-	<xsl:param name="other"/>	<!-- the downstream SystemDefinition this is merged with -->
-	<xsl:param name="up" select="systemModel"/>	<!-- the element containing the origin @name used for any component from "this" model. -->
-	<xsl:param name="down" select="$other/systemModel"/> <!-- the element containing origin @name used for any component from $other model. -->
-	
-	<!-- do some testing -->
- 	<xsl:if test="$other[starts-with(@schema,'2.') or starts-with(@schema,'1.')]">
-		<xsl:message terminate="yes">Syntax <xsl:value-of select="$other/@schema"/> not supported</xsl:message>
-	</xsl:if>
-	<xsl:if test="not($other/systemModel)">
-		<xsl:message terminate="yes">Can only merge stand-alone system models</xsl:message>
-	</xsl:if>
-	 
-	<xsl:copy>
-		<xsl:copy-of  select="@*"/> <!--  use attributes from origin model -->
-		<xsl:variable name="namespaces">
-			<xsl:copy> <!-- needs <copy> so the processor doesn't lose the namespaces -->
-				<!--copy namespaces as needed -->
-				
-				<xsl:copy-of select="namespace::*[name()!='xml']"/> <!-- all upstream namespaces -->
-
-				<xsl:variable name="cur" select="."/>
-				<xsl:for-each select="$other/namespace::*"> <!-- all namespaces in downstream not already in upstream -->
-					<xsl:if test="not((. = $cur/@id-namespace) or (not($cur/@id-namespace) and .= $defaultns) or  $cur/namespace::*[.=current()])">
-							<!-- namespace in downstream not in upstream doc -->
-							<xsl:variable name="newprefix">
-								 <!-- test to see if the ns prefix already exists -->
-								<xsl:apply-templates select="$cur" mode="ns-prefix">
-									<xsl:with-param name="ns" select="."/>
-									<xsl:with-param name="pre" select="name()"/>
-								</xsl:apply-templates>
-							</xsl:variable>
-							<xsl:copy/>
-					</xsl:if>   
-				</xsl:for-each>
-				
-					<xsl:if test="not(($other/@id-namespace = @id-namespace) or (not($other/@id-namespace) and not(@id-namespace)) or (not(@id-namespace) and $other/@id-namespace = $defaultns) or namespace::*[.=$other/@id-namespace])">  
-						<!-- default namespace in downstream not in upstream doc -->
-						<!-- need to make created ns a bit more intelligent -->
-						<xsl:attribute name="bar" namespace="{$other/@id-namespace}">
-							<xsl:value-of select="$other/@id-namespace"/>
-						</xsl:attribute>
-				</xsl:if>
-			</xsl:copy>
-		</xsl:variable>
-
-		
-		<!-- copy the namespaces to currently open element (the root one) -->
-		<xsl:copy-of select="namespace::*"/>
-		<xsl:for-each select="$other/namespace::*[.!=current()/namespace::*]"><xsl:copy/></xsl:for-each>
-		<xsl:for-each select="exslt:node-set($namespaces)/*/namespace::*"><xsl:copy/></xsl:for-each>
-	<!-- translate all IDs in downstream doc to use namespaces from upstream doc  
-		This is so much easier than having to propigate this info around while creating the doc-->
-	<xsl:variable name="otherdoc">
-		<xsl:apply-templates mode="translate-namespaces" select="$other">
-			<xsl:with-param name="nsdoc" select="exslt:node-set($namespaces)/* | ."/>
-		</xsl:apply-templates>
-	</xsl:variable>
-		<xsl:apply-templates mode="merge-models">
-			<xsl:with-param name="other" select="exslt:node-set($otherdoc)/*"/>
-			<xsl:with-param name="up" select="$up"/>
-			<xsl:with-param name="down" select="$down"/>
-		</xsl:apply-templates>
-	
-	</xsl:copy>
-</xsl:template>
-
-<xsl:template match="systemModel" mode="merge-models">
-	<xsl:param name="other"/>	<!-- the parent of the downstream systemModel this is merged with -->
-	<xsl:param name="up"/>
-	<xsl:param name="down"/>
-	<xsl:copy><xsl:copy-of  select="@*"/>
-		<!--  copy metas and comments in between meta. Do not try to merge metadata between models -->
-			<xsl:copy-of select="meta | $other/systemModel/meta | comment()[following-sibling::meta]"/>	
-		<xsl:apply-templates mode="merge-models">
-			<xsl:with-param name="other" select="$other/systemModel"/>
-			<xsl:with-param name="up" select="$up"/>
-			<xsl:with-param name="down" select="$down"/>
-		</xsl:apply-templates>
-	</xsl:copy>
-</xsl:template>
-
-<xsl:template match="@*|*|comment()" mode="merge-models"><xsl:copy-of select="."/></xsl:template>
-
-
-<xsl:template match="meta|comment()[following-sibling::meta]" mode="merge-models"/>
-	<!-- copy elesewhere, not here so that metas always appear first-->
-
-
-
-<!-- merge levels attribute via std rules -->
-<xsl:template match="layer/@levels|package/@levels" mode="merge-models">
-	<xsl:param name="other"/><!-- the element contains the other @levels -->
-	<xsl:choose>
-		<!--  if they are the same, or not specified in the other,  just copy -->
-		<xsl:when test=".=$other/@levels or not($other/@levels)"><xsl:copy-of select="."/></xsl:when>
-		<xsl:when test="contains(concat(' ',normalize-space(.),' '),concat(' ',normalize-space($other/@levels),' '))">
-			<!--upstream completely contains downstream, just copy --> 
-			<xsl:copy-of select="."/>
-		</xsl:when>
-		<xsl:when test="contains(concat(' ',normalize-space($other/@levels),' '),concat(' ',normalize-space(.),' '))">
-			<!--  If this is contained is other, then use other-->
-			<xsl:copy-of select="$other/@levels"/>
-		</xsl:when>
-		<xsl:when test="contains($other/@levels,'+')">
-			<!-- if other uses + syntax, then pre/append -->
-			<xsl:variable name="lev">
-				<xsl:value-of select="substring-before($other/@levels,'+')"/>
-				<xsl:value-of select="concat(' ',.,' ')"/>
-				<xsl:value-of select="substring-after($other/@levels,'+')"/>
-			</xsl:variable>
-			<xsl:attribute name="levels"><xsl:value-of select="normalize-space($lev)"/></xsl:attribute>
-		</xsl:when>
-		<xsl:otherwise> <!--  if they differ, use the origin's levels -->
-			<xsl:message>Note: levels differ "<xsl:value-of select="."/>" vs "<xsl:value-of select="$other/@levels"/>"</xsl:message>
-			<xsl:copy-of select="."/>
-		</xsl:otherwise>
-	</xsl:choose>
-</xsl:template>
-
-<xsl:template name="copy-sorted-content">
-	<xsl:param name="base"/>
-	<xsl:param name="to-sort"/>
-	<xsl:param name="start"/>
-	<xsl:param name="end"/>
-	<xsl:param name="down"/>
-	<xsl:param name="remainder" select="/.."/>
-
-	<xsl:choose>
-		<xsl:when test="not($to-sort)"/>  <!-- nothing left to copy. stop -->
-		<xsl:when test="not($base)"/>  <!-- reached end. stop -->
-		<xsl:when test="$base[1]/@id=$end/following-sibling::*[1]/@id"/> <!-- passed $end. Stop -->
-		<xsl:when test="$base[1]/@id = $to-sort[1]/@id">  <!-- both lists start with same item -->
-			<xsl:if test="$base[1]/@id!=$end/@id"> <!-- not at end, so keep going -->
-				<xsl:call-template name="copy-sorted-content">
-					<xsl:with-param name="base" select="$base[position() != 1]"/>
-					<xsl:with-param name="to-sort" select="$to-sort[position() != 1]"/>
-					<xsl:with-param name="remainder" select="$remainder"/>
-					<xsl:with-param name="start" select="$start"/>
-					<xsl:with-param name="end" select="$end"/>
-					<xsl:with-param name="down" select="$down"/>
-				</xsl:call-template>		
-			</xsl:if>
-		</xsl:when>	
-		<xsl:when test="$remainder[@id = $base[1]/@id]"> <!-- left over item is in $base -->
-			<xsl:call-template name="copy-sorted-content">
-				<xsl:with-param name="base" select="$base[position() != 1]"/>
-				<xsl:with-param name="to-sort" select="$to-sort"/>
-				<xsl:with-param name="remainder" select="$remainder[@id != $base[1]/@id]"/>
-				<xsl:with-param name="start" select="$start"/>
-				<xsl:with-param name="end" select="$end"/>
-				<xsl:with-param name="down" select="$down"/>
-			</xsl:call-template>		
-		</xsl:when>
-		<xsl:when test="not($base[@id = $to-sort[1]/@id])"> <!-- in to-sort, but not base -->		
-			<xsl:if test="$base[1]/@id=$end/@id  and not($base[@id=$to-sort[1]/@before])">
-			 	<!-- if at end, then this needs to be copied
-					don't copy if the before ID is found in $base	-->
-				<xsl:apply-templates mode="merge-copy-of" select="$to-sort[1]">
-					<xsl:with-param name="origin" select="$down"/>
-					<xsl:with-param name="root" select="$end/ancestor::systemModel"/>
-				</xsl:apply-templates>
-			</xsl:if>			
-		<xsl:call-template name="copy-sorted-content">
-			<xsl:with-param name="base" select="$base"/>
-			<xsl:with-param name="to-sort" select="$to-sort[position() != 1]"/>
-			<xsl:with-param name="remainder" select="$remainder"/>
-			<xsl:with-param name="start" select="$start"/>
-			<xsl:with-param name="end" select="$end"/>
-			<xsl:with-param name="down" select="$down"/>
-		</xsl:call-template>		
-		</xsl:when>	
-		<xsl:when test="not($to-sort[@id = $base[1]/@id])"> <!-- in base, but not to-sort -->		
-		<xsl:call-template name="copy-sorted-content">
-			<xsl:with-param name="base" select="$base[position() != 1]"/>
-			<xsl:with-param name="to-sort" select="$to-sort"/>
-			<xsl:with-param name="remainder" select="$remainder"/>
-			<xsl:with-param name="start" select="$start"/>
-			<xsl:with-param name="end" select="$end"/>
-			<xsl:with-param name="down" select="$down"/>
-		</xsl:call-template>		
-		</xsl:when>	
-		<xsl:when test="$base[@id = $to-sort[1]/@id]"> <!-- is in base, but not 1st one-->
-			<xsl:call-template name="copy-sorted-content">
-				<xsl:with-param name="base" select="$base"/>
-				<xsl:with-param name="to-sort" select="$to-sort[position() != 1] "/>
-				<xsl:with-param name="remainder" select="$remainder | $to-sort[1]"/>
-				<xsl:with-param name="start" select="$start"/>
-				<xsl:with-param name="end" select="$end"/>
-				<xsl:with-param name="down" select="$down"/>
-			</xsl:call-template>
-		</xsl:when>	
-	</xsl:choose>
-</xsl:template>
-
-<xsl:template match="layer | package | collection | component" mode="merge-models">
-	<xsl:param name="other"/>	<!-- the downstream item of the parent's rank that contains a potential items this is merged with -->
-	<xsl:param name="up"/>
-	<xsl:param name="down"/>
-	<xsl:variable name="this" select="."/>	<!-- current item -->
-	
-	<!-- match = this item in the downstream model -->	
-	<xsl:variable name="match" select="$other/*[@id=current()/@id]"/>
-	
-	<!-- prev = the previous item before the current one (no metas, only named items)-->
-	<xsl:variable name="prev" select="preceding-sibling::*[@id][1]"/> 
-
-	<!-- copy all items between this and prev  that are solely in the downstream model -->	 		
-
-	<xsl:choose>
-		<xsl:when test="$match and (not($prev) or $other/*[@id= $prev/@id] )">
-			<xsl:call-template name="copy-sorted-content">
-				<xsl:with-param name="base" select="../*[@id]"/>
-				<xsl:with-param name="to-sort" select="$other/*[@id]"/>
-				<xsl:with-param name="start" select="$prev"/>
-				<xsl:with-param name="end" select="."/>
-				<xsl:with-param name="down" select="$down"/>
-			</xsl:call-template>
-		</xsl:when>
-	<xsl:when test="not($match/preceding-sibling::*[@id=$this/../*/@id]) and $other/*[@id= current()/@id]/preceding-sibling::*[@id and not(@before)]">
-		<!-- if this is the first item in other that's also in this, then put all new items from other here -->
-		<xsl:apply-templates mode="merge-copy-of" select="$match/preceding-sibling::*[@id and not(@before)]">
-			<xsl:with-param name="origin" select="$down"/>
-			<xsl:with-param name="root" select="$this/ancestor::systemModel"/>	
-		</xsl:apply-templates>
-	</xsl:when>
-	</xsl:choose>
-
- 	<!-- just copy anything identified as being before this, assume they're all ok -->
-	<xsl:apply-templates mode="merge-copy-of" select="$other/*[@before=current()/@id]">
-		<xsl:with-param name="remove-before" select="1"/>
-		<xsl:with-param name="origin" select="$down"/>
-		<xsl:with-param name="root" select="$this/ancestor::systemModel"/>	
-	</xsl:apply-templates>
-
-	
-	<xsl:copy>
-		<xsl:apply-templates select="@*" mode="merge-models"> <!-- copy upstream attributes -->
-			<xsl:with-param name="other" select="$match"/>
-		</xsl:apply-templates>
-		
-		<xsl:if test="self::component and not(@origin-model) and $up/@name">
-			<!-- insert origin-model and optional root for components only -->
-			<xsl:attribute name="origin-model">
-				<xsl:value-of select="$up/@name"/>
-			</xsl:attribute>
-			<xsl:if test="not(@root)">
-				<xsl:copy-of select="$up/@root"/>
-			</xsl:if>
-		</xsl:if>
-		
-		<xsl:for-each select="$match/@*">  <!-- copy downstream attributes, only if not set on upstream -->
-			<xsl:if test="not($this/@*[name()=name(current())])"><xsl:copy-of select="."/></xsl:if>
-		</xsl:for-each>
-		
-		<xsl:choose>
-			<xsl:when test="self::component">
-				<!-- copy all units, metas and comments from this
-					copy all metas in the merged component
-					copy any new comments in the merged component (not duplicates)
-					if there are no units in the this, copy all units in the merged component
-					if there are units in this, copy only the versioned units in the merged component (only those versions not already specified) -->
-				<xsl:copy-of select="*|comment() | $match/meta |$match/unit[not($this/unit)] | $match/unit[$this/unit and @version[.!=$this/unit/@version]] | $match/comment()[.!=$this/comment()]"/>				
-			</xsl:when>
-			<xsl:otherwise>
-
-				<!--  copy metas and comments in between meta. Do not try to merge metadata between models -->
-				<xsl:copy-of select="meta | $match/meta | comment()[following-sibling::meta]"/>
-				
-				<xsl:apply-templates mode="merge-models">
-					<xsl:with-param name="other" select="$match"/>
-					<xsl:with-param name="up" select="$up"/>
-					<xsl:with-param name="down" select="$down"/>
-				</xsl:apply-templates>
-				<!--  don't copy if explicitly or implicitly placed already-->
-				<xsl:for-each select="$match/*[not(@before) and not(following-sibling::*[@id=$this/*/@id])]">
-					<xsl:if test="not($this/*[@id=current()/@id])">
-						<xsl:apply-templates mode="merge-copy-of" select=".">
-							<xsl:with-param name="origin" select="$down"/>
-							<xsl:with-param name="root" select="$this/ancestor::systemModel"/>			
-						</xsl:apply-templates>
-					</xsl:if>
-				</xsl:for-each>
-			</xsl:otherwise>
-		</xsl:choose>
-	</xsl:copy>
-	
-	<xsl:if test="self::layer and not(following-sibling::layer)">
-		<!-- for the last layer, tack on any remaining layers -->
-		<xsl:apply-templates mode="merge-copy-of" select="$other/layer[not(@before) and not(following-sibling::*[@id=$this/../layer/@id]) and not(@id=$this/@id)]">
-			<xsl:with-param name="origin" select="$down"/>
-			<xsl:with-param name="root" select="$this/ancestor::systemModel"/>			
-		</xsl:apply-templates>		
-	</xsl:if>
-</xsl:template>
-
-
-
-<xsl:template match="*" mode="merge-copy-of">
-	<xsl:param name="remove-before" select="0"/> <!-- set to true if any before attribute is to be removed -->
-	<xsl:param name="origin"/>	<!--the element containing the @name to use the origin-model attribute  -->
-	<xsl:param name="root"/> 	<!--the systemModel element in the upstream doc  -->
-
-	<xsl:choose>
-		<!-- this might slow things down, consider making optional -->
-		<xsl:when test="not(self::layer) and count($root/descendant::*[name()=name(current()/..) and @id!=current()/../@id]/*[@id=current()/@id])">
-			<xsl:message>Warning: <xsl:value-of select="name()"/> "<xsl:value-of select="@id"/>" moved in downstream model. Ignoring moved <xsl:value-of select="name()"/>
-				<xsl:text>&#xa;</xsl:text>
-			</xsl:message>
-		</xsl:when>
-		<xsl:otherwise>
-			<!-- save all content in a variable to test to see if it's got any problems (ie been removed due to errors)-->
-			<xsl:variable name="content">
-				<xsl:apply-templates select="*|comment()" mode="merge-copy-of">
-					<xsl:with-param name="origin" select="$origin"/>
-					<xsl:with-param name="root" select="$root"/>
-				</xsl:apply-templates>
-			</xsl:variable>
-			<xsl:choose>
-				<!-- if all elements in this have been deleted, throw out this element -->
-				<xsl:when test="not(exslt:node-set($content)/*) and *">
-					<xsl:message>Warning: All content in downstream <xsl:value-of select="name()"/> "<xsl:value-of select="@id"/>" is invalid. Ignoring <xsl:value-of select="name()"/>
-						<xsl:text>&#xa;</xsl:text>
-					</xsl:message>
-				</xsl:when>
-				<xsl:otherwise>
-					<xsl:copy>
-						<xsl:choose>
-							<xsl:when test="$remove-before">
-								<xsl:copy-of select="@*[name()!='before']"/>
-							</xsl:when>
-							<xsl:otherwise><xsl:copy-of select="@*"/></xsl:otherwise>
-						</xsl:choose>
-						<xsl:copy-of select="exslt:node-set($content)"/>
-					</xsl:copy>
-				</xsl:otherwise>
-			</xsl:choose>					
-		</xsl:otherwise>
-	</xsl:choose>
-</xsl:template>
-
-
-<xsl:template match="comment()|@*" mode="merge-copy-of">
-	<xsl:copy-of select="."/>
-</xsl:template>
-
-<xsl:template match="component" mode="merge-copy-of">
-	<xsl:param name="remove-before" select="0"/> <!-- set to true if any before attribute is to be removed -->
-	<xsl:param name="origin"/>	<!--the element containing the @name to use the origin-model attribute  -->
-	<xsl:param name="root"/> 	<!--the systemModel element in the upstream doc  -->
-	
-	<xsl:choose>
-		<!-- this might slow things down, consider making optional -->
-		<xsl:when test="$root/descendant::collection[@id!=current()/../@id]/component[@id=current()/@id]">
-			<xsl:message>Warning: <xsl:value-of select="name()"/> "<xsl:value-of select="@id"/>" moved in downstream model. Ignoring moved <xsl:value-of select="name()"/>
-				<xsl:text>&#xa;</xsl:text>
-			</xsl:message>
-		</xsl:when>
-		<xsl:otherwise>
-			<xsl:copy>
-				<xsl:choose>
-					<xsl:when test="$remove-before">
-						<xsl:copy-of select="@*[name()!='before']"/>
-					</xsl:when>
-					<xsl:otherwise><xsl:copy-of select="@*"/></xsl:otherwise>
-				</xsl:choose>
-				<xsl:if test="not(@origin-model) and $origin/@name">
-					<xsl:attribute name="origin-model">
-						<xsl:value-of select="$origin/@name"/>
-					</xsl:attribute>
-					<xsl:if test="not(@root)">
-						<xsl:copy-of select="$origin/@root"/>
-					</xsl:if>
-				</xsl:if>
-				<xsl:copy-of select="*|comment()"/>
-			</xsl:copy>
-		</xsl:otherwise>
-	</xsl:choose>
-</xsl:template>
-
-</xsl:stylesheet>
--- a/buildframework/helium/external/helium-antlib/sysdef/demo/data/sf/os/buildtools/bldsystemtools/buildsystemtools/mergesysdef.xsl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,107 +0,0 @@
-<!-- 
-============================================================================ 
-Name        : mergesysdef.xsl 
-Part of     : Helium AntLib
-
-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:
-
-============================================================================
--->
-<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exslt="http://exslt.org/common">
-	<xsl:output method="xml" indent="yes"/>
-	<xsl:param name="Downstream">mcl/System_Definition_Template.xml</xsl:param>
-	 <xsl:key name="origin" match="component" use="@origin-model"/>
-
-<!-- only supports 3.x syntax and only operates on stand-alone models -->
-
-<xsl:variable name="downstream" select="document($Downstream,.)/SystemDefinition"/>
-<xsl:param name="upname">
-	<xsl:choose>
-		<xsl:when test="$downstream[starts-with(@schema,'2.') or starts-with(@schema,'1.')  or not(systemModel)]">
-			<xsl:message terminate="yes">Syntax <xsl:value-of select="@schema"/> not supported</xsl:message>
-		</xsl:when>
-		<xsl:when test="/SystemDefinition/systemModel/@name=$downstream/systemModel/@name">
-			<xsl:apply-templates mode="origin-term" select="/*">
-				<xsl:with-param name="root">Upstream</xsl:with-param>
-			</xsl:apply-templates>
-			</xsl:when>
-		<xsl:otherwise><xsl:value-of select="/SystemDefinition/systemModel/@name"/></xsl:otherwise>
-	</xsl:choose>
-</xsl:param>
-
-<xsl:param name="downname">
-	<xsl:choose>
-		<xsl:when test="/SystemDefinition/systemModel/@name=$downstream/systemModel/@name">
-			<xsl:apply-templates mode="origin-term" select="$downstream">	
-				<xsl:with-param name="root">Downstream</xsl:with-param>
-			</xsl:apply-templates>
-			</xsl:when>
-		<xsl:otherwise><xsl:value-of select="$downstream/systemModel/@name"/></xsl:otherwise>
-	</xsl:choose>
-</xsl:param>
-
-<xsl:template mode="origin-term" match="*">
-	<xsl:param name="root"/>
-	<xsl:param name="index"/>
-	<xsl:choose>
-		<xsl:when test="not(key('origin',concat($root,$index)))">
-			<xsl:value-of select="concat($root,$index)"/>
-		</xsl:when>
-		<xsl:when test="$index=''">
-			<xsl:apply-templates mode="origin-term" select=".">	
-				<xsl:with-param name="root" select="$root"/>
-				<xsl:with-param name="index" select="1"/>
-			</xsl:apply-templates>
-		</xsl:when>
-		<xsl:otherwise>
-			<xsl:apply-templates mode="origin-term" select=".">	
-				<xsl:with-param name="root" select="$root"/>
-				<xsl:with-param name="index" select="$index + 1"/>
-			</xsl:apply-templates>		
-		</xsl:otherwise>
-	</xsl:choose>
-</xsl:template>
-
-
-<!--  this merge only two files according to the 3.0.0 rules. Old syntax not supported. Must be converetd before calling -->
-
-
-
-<xsl:template match="/*">
-	<xsl:variable name="upmodel">
-		<sysdef name="{$upname}"/>
-	</xsl:variable>
-	<xsl:variable name="downmodel">
-		<sysdef name="{$downname}"/>
-	</xsl:variable>
-	
-	<xsl:choose>
-		<xsl:when test="function-available('exslt:node-set')">
-			<xsl:apply-templates mode="merge-models" select=".">
-				<xsl:with-param name="other" select="$downstream"/>
-				<xsl:with-param name="up" select="exslt:node-set($upmodel)/sysdef"/>
-				<xsl:with-param name="down" select="exslt:node-set($downmodel)/sysdef"/>
-			</xsl:apply-templates>
-		</xsl:when>
-		<xsl:otherwise> <!-- no node set funcion, so don't bother setting the names -->
-			<xsl:apply-templates mode="merge-models" select=".">
-				<xsl:with-param name="other" select="$downstream"/>
-			</xsl:apply-templates> 		
-		</xsl:otherwise>
-	</xsl:choose>
-</xsl:template>
-
-<xsl:include href="mergesysdef-module.xsl"/>
-</xsl:stylesheet>
--- a/buildframework/helium/external/helium-antlib/sysdef/demo/data/sf/os/buildtools/bldsystemtools/buildsystemtools/sysdefdowngrade.xsl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,397 +0,0 @@
-<?xml version="1.0"?>
-<!-- 
-============================================================================ 
-Name        : sysdefdowngrade.xsl 
-Part of     : Helium AntLib
-
-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:
-
-============================================================================
--->
- <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
-	<xsl:output method="xml" indent="yes"/>
-	
-	<xsl:param name="Path">os/deviceplatformrelease/foundation_system/system_model</xsl:param>
-	<!-- $Path is the location of the root system definition XML file. Must not end in /
-		This is used to compute the absolute paths the 2.0 syntax needs-->
-	<xsl:param name="Root"/> <!-- space separated list of root variables in the form "VAR1=value1 VAR=value2" --> 
-	<xsl:variable name="root" select="concat(' ',$Root,' ')"/> <!-- sort of hack to allow absolute paths in downgraded output -->
-	<xsl:variable name="srcroot" select="substring-before(substring-after($root,' SRCROOT='),' ')"/> <!-- the default path prefix -->
-
-<xsl:template match="/*">
-	<xsl:message terminate="yes">Cannot process this document</xsl:message>
-</xsl:template>
-
-<!-- can only handle 3.0.0 to 2.0.1 transforms
-	Assumes only packages are using href
- -->
-<xsl:template match="/SystemDefinition[@schema='3.0.0']"> 
-	<!-- process root system definition or package definition-->
-	<xsl:call-template name="DTD"/> <!-- insert 2.0.01 DTD -->
-  <SystemDefinition name="{*/@name}" schema="2.0.1">
-  	<xsl:apply-templates select="*|comment()"/>
-  </SystemDefinition>
-</xsl:template>
-
-<xsl:template match="/SystemDefinition[@schema='3.0.0' and systemModel]"> 
-	<xsl:call-template name="DTD"/> <!-- insert 2.0.01 DTD -->
-  <SystemDefinition name="{systemModel/@name}" schema="2.0.1">
-  	<xsl:apply-templates select="*|comment()"/>
-  </SystemDefinition>
-</xsl:template>
-
-<xsl:template match="/SystemDefinition/package[@href]" priority="2">
-	<xsl:message terminate="yes">Package definition cannot link another package</xsl:message>
-</xsl:template>
-
-<xsl:template match="/SystemDefinition/package" priority="1">
-	<!-- process package definition file--> 
-  <systemModel>
-  	<layer name="anonymous"> <!-- fake layer -->
-		<block>
-			<xsl:apply-templates mode="copy" select="@id|@name|@span|@level|@levels"/><!--  valid attribuites for 2.0 -->
-		  	<xsl:apply-templates select="*|comment()">
-		  		<xsl:with-param name="path" select="concat($Path,'/')"/> <!-- need to keep tack of where the current document is -->
-		  	</xsl:apply-templates>			
-		</block>  
-   	</layer>
-  </systemModel>
-</xsl:template>
-
-
-
-<xsl:template match="/"><xsl:apply-templates select="*"/></xsl:template>
-<xsl:template match="@*|comment()"><xsl:copy-of select="."/></xsl:template> 
-	<!-- comments are copied verbatim. Attribtues are copied by default -->
-
-<xsl:template match="systemModel">
-	<systemModel>
-  	<xsl:apply-templates select="*|comment()"> <!-- no attributes -->
-  		<xsl:with-param name="path" select="$Path"/> <!-- need to keep tack of where the current document is -->
-  	</xsl:apply-templates>
-	</systemModel>
-</xsl:template>
-
-<xsl:template mode="copy" match="@*">
-	<xsl:copy-of select="."/>
-</xsl:template>
-
-<xsl:template mode="copy" match="@id"> <!-- id in 3.0 is name in 2.0 -->
-	<xsl:attribute name="name"><xsl:value-of select="."/></xsl:attribute>
-</xsl:template>
-
-<xsl:template mode="copy" match="@name">  <!-- name in 3.0 is long-name in 2.0.1 -->
-	<xsl:if test=".!=../@id"> <!-- don't bother if it will be the same as name -->
-		<xsl:attribute name="long-name"><xsl:value-of select="."/></xsl:attribute>
-	</xsl:if>
-</xsl:template>
-	
-<xsl:template match="layer"><xsl:param name="path"/>
-	<layer>
-		<xsl:apply-templates mode="copy" select="@id|@name|@span|@levels"/> <!--  valid attribuites for 2.0 -->
-		<xsl:apply-templates select="*|comment()"> 
-			<xsl:with-param name="path" select="$path"/> 
-		</xsl:apply-templates>
-	</layer>
-</xsl:template>
-
-<xsl:template match="layer/package"><!-- translates to block -->
-	<xsl:param name="path"/>
-	<block>
-		<xsl:apply-templates mode="copy" select="@id|@name|@span|@level|@levels"/><!--  valid attribuites for 2.0 -->
-		<xsl:choose>
-			<xsl:when test="@href">
-				<xsl:variable name="this" select="."/>
-				<xsl:for-each select="document(@href,.)/SystemDefinition/*">
-					<xsl:variable name="my-id"><xsl:apply-templates mode="normalize-id" select="@id"/></xsl:variable>
-					<xsl:variable name="other-id"><xsl:apply-templates mode="normalize-id" select="$this/@id"/></xsl:variable>
-					<xsl:if test="$my-id != $other-id">
-						<xsl:message terminate="yes">Error: IDs do not match: <xsl:value-of select="$my-id"/> vs <xsl:value-of select="$other-id"/></xsl:message>
-					</xsl:if>
-					<xsl:if test="@name and @name!=@id and not($this/@name and $this/@name=$this/@id)">
-						<!-- set long-name only if name is different from the id and not set in child doc -->
-						<xsl:attribute name="long-name"><xsl:value-of select="@name"/></xsl:attribute>
-					</xsl:if>						
-					<xsl:for-each select="@span|@levels|@level">
-						<!-- copy only if not set in child doc -->
-						<xsl:if test="not(this/@*[name()=name(current())])">
-							<xsl:copy-of select="."/>
-						</xsl:if>
-					</xsl:for-each>
-					<xsl:apply-templates select="*|comment()">
-	  					<xsl:with-param name="path">
-	  						<xsl:call-template name="normpath">
-	  							<xsl:with-param name="path" select="concat($path,'/',$this/@href)"/>
-	  						</xsl:call-template>
-	  					</xsl:with-param> 
-	  				</xsl:apply-templates>
-				</xsl:for-each>
-			</xsl:when>
-			<xsl:otherwise>
-				<xsl:apply-templates select="*|comment()">
-  					<xsl:with-param name="path" select="$path"/> 
-  				</xsl:apply-templates>
-			</xsl:otherwise>
-		</xsl:choose>
-	</block>
-</xsl:template>
-
-<xsl:template match="package/package">	<!-- translates to subblock --><xsl:param name="path"/>
-	<subblock>
-		<xsl:apply-templates mode="copy" select="@id|@name"/>
-		<xsl:apply-templates select="*|comment()">
-			<xsl:with-param name="path" select="$path"/> 
-		</xsl:apply-templates>
-	</subblock>
-</xsl:template>
-
-<xsl:template match="package/package/pacakge"> <!-- cannot nest this deep --><xsl:param name="path"/>
-	<xsl:message>Excessive nesting of packages: Ignoring <xsl:value-of select="@id"/></xsl:message>
-	<xsl:apply-templates select="*|comment()">
-		<xsl:with-param name="path" select="$path"/> 
-	</xsl:apply-templates>
-</xsl:template>
-
-
-<xsl:template match="collection"><xsl:param name="path"/>
-	<collection>
-		<xsl:apply-templates mode="copy" select="@id|@name|@level"/>
-		<xsl:apply-templates select="*|comment()">
-			<xsl:with-param name="path" select="$path"/> 
-		</xsl:apply-templates>
-	</collection>
-</xsl:template>
-
-
-<xsl:template match="component"><xsl:param name="path"/>
-	<component>
-		<xsl:apply-templates mode="copy" select="@id|@name|@deprecated|@introduced|@filter|@purpose"/>
-		<xsl:if test="contains(concat(' ',@class,' '),' plugin ')">
-			<xsl:attribute name="plugin">Y</xsl:attribute>
-		</xsl:if>
-		<xsl:call-template name="class">
-			<xsl:with-param name="remove">plugin</xsl:with-param>
-			<xsl:with-param name="add">
-				<xsl:if test="not(*) and comment()">placeholder</xsl:if>
-				<xsl:if test="@target='desktop'"> PC</xsl:if>
-			</xsl:with-param>
-		</xsl:call-template>
-	  	<xsl:apply-templates select="*|comment()">
-			<xsl:with-param name="path" select="$path"/> 
-		</xsl:apply-templates>
-	</component>
-</xsl:template>
-
-<xsl:template match="unit[@base and not(@mrp or @bldFile)]"/>
-
-<xsl:template match="unit"><xsl:param name="path"/>
-	<unit>
-		<xsl:apply-templates select="@mrp|@bldFile|@late">
-			<xsl:with-param name="path" select="$path"/> 
-		</xsl:apply-templates>
-		<xsl:copy-of select="@filter|@root[not(contains($root,concat(' ',.,'=')))]|@version|@prebuilt|@priority"/>
-	</unit>
-</xsl:template>
-
-<xsl:template match="unit/@late"> <!-- 2.0 uses Y/N, 3.0 uses yes/no -->
-	<xsl:attribute name="{name()}">
-		<xsl:choose>
-			<xsl:when test=".='yes'">Y</xsl:when>
-			<xsl:when test=".='no'">N</xsl:when>
-		</xsl:choose>
-	</xsl:attribute>
-</xsl:template>
-
-<xsl:template match="@mrp|@bldFile"><xsl:param name="path"/>
-	<xsl:attribute name="{name()}">
-		<xsl:choose>
-			<xsl:when test="../@root">
-				<xsl:variable name="pre" select="substring-before(substring-after($root,concat(' ',../@root,'=')),' ')"/>
-				<xsl:if test="$pre!=''"><xsl:value-of select="concat($pre,'/')"/></xsl:if>
-			</xsl:when>
-			<xsl:when test="$srcroot!=''">
-				<xsl:value-of select="concat($srcroot,'/')"/>
-			</xsl:when>
-		</xsl:choose>
-		<xsl:choose>
-		<xsl:when test="starts-with(.,'/')"> <!-- keep absolute paths verbatim (barring the leading / ) -->
-			<xsl:value-of select="substring-after(.,'/')"/>
-		</xsl:when>
-		<xsl:otherwise>	
-			<xsl:call-template name="normpath">
-  				<xsl:with-param name="path">
-  					<xsl:call-template name="before">
-						<xsl:with-param name="text" select="$path"/>
-					</xsl:call-template>
-					<xsl:value-of select="."/>
-  				</xsl:with-param>
-  			</xsl:call-template>
-		</xsl:otherwise>
-	</xsl:choose>
-	</xsl:attribute>
-</xsl:template>
-
-<xsl:template match="meta"/> <!-- strip all meta tags -->
-
-<xsl:template match="meta[info/@contract]"> <!-- except contract -->
-	<xsl:copy-of select="info/@contract"/>
-</xsl:template>
-
-<xsl:template match="@id" mode="normalize-id">
-	<xsl:choose>
-		<xsl:when test="contains(@id,':')"><xsl:value-of select="substring-after(@id,':')"/></xsl:when>
-		<xsl:otherwise><xsl:value-of select="@id"/></xsl:otherwise>
-	</xsl:choose>
-</xsl:template>
-
-<xsl:template name="class"><xsl:param name="remove"/><xsl:param name="add"/>
-<!--  returns the value of the class attribute with the space-separated list of names in $remove taken out and those in $add added on (does not check for duplicates) -->
-	<xsl:param name="class" select="normalize-space(@class)"/>
-	<xsl:variable name="r">
-		<xsl:text> </xsl:text>
-		<xsl:choose>
-			<xsl:when test="contains($remove,' ')"><xsl:value-of select="substring-before($remove,' ')"/></xsl:when>
-			<xsl:otherwise><xsl:value-of select="$remove"/></xsl:otherwise>
-		</xsl:choose>
-		<xsl:text> </xsl:text>
-	</xsl:variable>
-	<xsl:variable name="c">
-		<xsl:choose>
-			<xsl:when test="contains(concat(' ',$class,' '),$r)">
-				<xsl:value-of select="substring-before(concat(' ',$class,' '),$r)"/>
-				<xsl:text> </xsl:text>
-				<xsl:value-of select="substring-after(concat(' ',$class,' '),$r)"/>
-			</xsl:when>
-			<xsl:otherwise><xsl:value-of select="$class"/></xsl:otherwise>
-		</xsl:choose>
-		<xsl:if test="normalize-space($add)!=''"><xsl:value-of select="concat(' ',normalize-space($add))"/></xsl:if>
-	</xsl:variable>
-	<xsl:choose>
-		<xsl:when test="contains($remove,' ')">
-			<xsl:call-template name="class">
-				<xsl:with-param name="remove" select="substring-after($remove,' ')"/>
-				<xsl:with-param name="class" select="$c"/>
-			</xsl:call-template>
-		</xsl:when>
-		<xsl:when test="normalize-space($c)!=''">
-			<xsl:attribute name="class">
-				<xsl:value-of select="normalize-space($c)"/>
-			</xsl:attribute>
-		</xsl:when>
-	</xsl:choose>
-</xsl:template>
-
-<xsl:template name="normpath"><xsl:param name="path"/>
-<!-- normalize out any ".." in the path in $path  -->
-<xsl:choose>
-	<xsl:when test="contains($path,'/../')">
-	<xsl:call-template name="normpath">
-		<xsl:with-param name="path">
-		<xsl:call-template name="before">
-			<xsl:with-param name="text" select="substring-before($path,'/../')"/>
-		</xsl:call-template>
-		<xsl:value-of select="substring-after($path,'/../')"/>
-		</xsl:with-param>
-		</xsl:call-template>
-	</xsl:when>
-	<xsl:otherwise><xsl:value-of select="$path"/></xsl:otherwise>
-</xsl:choose>
-</xsl:template>
-
-<!-- return all text before the last / -->
-<xsl:template name="before"><xsl:param name="text"/>
-<xsl:if test="contains($text,'/')">
-	<xsl:value-of select="substring-before($text,'/')"/>/<xsl:call-template name="before"><xsl:with-param name="text" select="substring-after($text,'/')"/></xsl:call-template>
-	</xsl:if>
-</xsl:template>
-
-<xsl:template name="DTD">
-<xsl:text disable-output-escaping="yes"><![CDATA[<!DOCTYPE SystemDefinition [
-<!ELEMENT SystemDefinition ( systemModel )>
-<!ATTLIST SystemDefinition
-  name CDATA #REQUIRED
-  schema CDATA #REQUIRED
->
-<!-- all paths are relative to the environment variable specified by the root attribute, or SOURCEROOT if not.  -->
-
-<!-- System Model Section of DTD -->
-<!ELEMENT systemModel (layer+)>
-
-<!ELEMENT layer (block* | collection*)*>
-<!-- Kernel Services, Base Services, OS Services, Etc -->
-<!ATTLIST layer
-  name CDATA #REQUIRED
-  long-name CDATA #IMPLIED
-  levels NMTOKENS #IMPLIED
-  span CDATA #IMPLIED
->
-
-<!ELEMENT block (subblock* | collection*)*>
- <!-- Generic OS services, Comms Services, etc -->
-<!ATTLIST block
-  levels NMTOKENS #IMPLIED
-  span CDATA #IMPLIED
-  level NMTOKEN #IMPLIED
-  name CDATA #REQUIRED
-  long-name CDATA #IMPLIED
->
-
-<!ELEMENT subblock (collection)*>
-<!-- Cellular Baseband Services, Networking Services, etc -->
-<!ATTLIST subblock
-  name CDATA #REQUIRED
-  long-name CDATA #IMPLIED
->
-
-<!ELEMENT collection (component)*>
-<!-- Screen Driver, Content Handling, etc -->
-<!ATTLIST collection
-  name CDATA #REQUIRED
-  long-name CDATA #IMPLIED
-  level NMTOKEN #IMPLIED
->
-
-<!ELEMENT component (unit)*>
-<!-- contains units or is a  package or prebuilt -->
-<!ATTLIST component
-  name CDATA #REQUIRED
-  long-name CDATA #IMPLIED
-  deprecated CDATA #IMPLIED
-  introduced CDATA #IMPLIED
-  contract CDATA #IMPLIED
-  plugin (Y|N) "N"
-  filter CDATA #IMPLIED
-  class NMTOKENS #IMPLIED
-  supports CDATA #IMPLIED
-  purpose ( optional | mandatory | development ) "optional"
->
-
-<!ELEMENT unit EMPTY >
-<!-- must be buildable (bld.inf) -->
-<!-- bldFile  may someday be removed in favour of mrp -->
-<!ATTLIST unit
-  mrp CDATA #IMPLIED
-  filter CDATA #IMPLIED
-  bldFile CDATA #IMPLIED
-  root CDATA #IMPLIED
-  version NMTOKEN #IMPLIED
-  prebuilt NMTOKEN #IMPLIED
-  late (Y|N) #IMPLIED
-  priority CDATA #IMPLIED
->
-]>
-]]></xsl:text>
-</xsl:template>
-</xsl:stylesheet>
Binary file buildframework/helium/external/helium-antlib/sysdef/lib/serializer.jar has changed
Binary file buildframework/helium/external/helium-antlib/sysdef/lib/xalan.jar has changed
--- a/buildframework/helium/external/helium-antlib/sysdef/src/com/nokia/helium/sysdef/ant/antlib.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : antlib.xml 
-Part of     : Helium AntLib
-
-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:
-
-============================================================================
--->
-<antlib>
-    <!-- Task definition -->
-    <taskdef name="joinSysdef" classname="com.nokia.helium.sysdef.ant.taskdefs.JoinTask"/>
-    <taskdef name="mergeSysdef" classname="com.nokia.helium.sysdef.ant.taskdefs.MergeTask"/>
-    <taskdef name="downgradeSysdef" classname="com.nokia.helium.sysdef.ant.taskdefs.DowngradeTask"/>
-    
-    <!-- Type definition -->
-</antlib>
--- a/buildframework/helium/external/helium-antlib/sysdef/src/com/nokia/helium/sysdef/ant/helium.antlib.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : helium.antlib.xml 
-Part of     : Helium Antlib 
-
-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="libs-sysdef" xmlns:hlm="http://www.nokia.com/helium">
-    <description>
-        Ant task definition declarations.
-    </description>    
-    <taskdef resource="com/nokia/helium/sysdef/ant/antlib.xml" uri="http://www.nokia.com/helium"/>
-</project>
--- a/buildframework/helium/external/helium-antlib/sysdef/src/com/nokia/helium/sysdef/ant/taskdefs/AbstractSydefTask.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,237 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-package com.nokia.helium.sysdef.ant.taskdefs;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.util.Map;
-
-import javax.xml.transform.ErrorListener;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.stream.StreamResult;
-import javax.xml.transform.stream.StreamSource;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.Task;
-
-/**
- * This is the base class for manipulating Sysdef v3 files using XML Stylesheet. 
- * The implementation/interface is not frozen yet. It is morelikely going to
- * change in the future, depending of the underlaying implementation.
- * 
- */
-public abstract class AbstractSydefTask extends Task implements ErrorListener {
-
-    private File srcFile;
-    private File destFile;
-    private File epocroot;
-    private boolean failOnError = true;
-    
-    /**
-     * Get the source file.
-     * @return
-     */
-    public File getSrcFile() {
-        return srcFile;
-    }
-
-    /**
-     * Defines the location of the source system definition file. 
-     * @param srcfile
-     * @ant.required
-     */
-    public void setSrcFile(File srcfile) {
-        this.srcFile = srcfile;
-    }
-
-    /**
-     * Get the location of the output file. 
-     * @return
-     */
-    public File getDestFile() {
-        return destFile;
-    }
-
-    /**
-     * The the name of the destination file.
-     * @param destfile
-     * @ant.required
-     */
-    public void setDestFile(File destfile) {
-        this.destFile = destfile;
-    }
-
-    /**
-     * Get the epocroot.
-     * If epocroot is not set by the user it return the value from the EPOCROOT environment variable.
-     * If the EPOCROOT environment variable is not defined then a BuildException is thrown.
-     * @return the epocroot location as a File object.
-     */
-    public File getEpocroot() {
-        if (epocroot == null) {
-            if (System.getenv("EPOCROOT") != null) {
-                return new File(System.getenv("EPOCROOT"));
-            }
-            else {
-                throw new BuildException("'epocroot' attribute has not been defined.");
-            }
-        }
-        return epocroot;
-    }
-
-    /**
-     * Location of the EPOCROOT.
-     * @ant.not-required By default the EPOCROOT environment variable is used.
-     * @param epocroot path to the epocroot.
-     */
-    public void setEpocroot(File epocroot) {
-        this.epocroot = epocroot;
-    }
-
-    /**
-     * Shall we fail the build on error.
-     * @return is the task should failonerror.
-     */
-    public boolean isFailOnError() {
-        return failOnError;
-    }
-
-    /**
-     * Defines if the file should fail on error.
-     * @param failonerror
-     * @ant.not-required Default is true.
-     */
-    public void setFailOnError(boolean failonerror) {
-        this.failOnError = failonerror;
-    }
-
-    /**
-     * This method should be defined by the implementing class
-     * to define the location of the XSLT file.
-     * @return the XSLT file location.
-     */
-    abstract File getXsl();
-    
-    /**
-     * Check if required attribute have been configured correctly.
-     * If not the method will raise a BuildException.
-     */
-    protected void check() {
-        if (srcFile == null) {
-            throw new BuildException("'srcfile' attribute is not defined");
-        }
-        if (destFile == null) {
-            throw new BuildException("'destfile' attribute is not defined");
-        }
-        File xslt = getXsl();
-        if (!xslt.exists()) {
-            throw new BuildException("Could not find " + xslt);
-        }        
-        if (!srcFile.exists()) {
-            throw new BuildException("Could not find source file " + srcFile);
-        }        
-    }
-    
-    /**
-     * Transform the srcfile using the stylesheet provided by getXsl. The data parameters are
-     * passed to the template engine. The result is save to the destfile.
-     * 
-     * @param data a set of key/value to pass to the XSLT engine.
-     */
-    public void transform(Map<String, String> data) {
-        check();
-        if (destFile.exists()) {
-            log("Deleting previous output file: " + destFile, Project.MSG_DEBUG);
-            destFile.delete();
-        }
-        
-        FileOutputStream output = null;        
-        try {
-            output = new FileOutputStream(destFile);
-            TransformerFactory factory = TransformerFactory.newInstance();
-            Transformer transformer = factory.newTransformer(new StreamSource(getXsl()));
-
-            transformer.setParameter("path", srcFile);
-            for (Map.Entry<String, String> entry : data.entrySet()) {
-                transformer.setParameter(entry.getKey(), entry.getValue());
-            }
-            transformer.setErrorListener(this);        
-            transformer.transform(new StreamSource(srcFile), new StreamResult(
-                    output));
-        
-        } catch (Exception exc) {
-            // deleting the intermediate file in case of error.
-            if (destFile.exists()) {
-                // closing current output stream, so we can delete the file
-                try {
-                    if (output != null) {
-                        output.close();
-                    }
-                } catch (IOException ioe) {
-                    // we should just ignore that error.
-                    log(ioe, Project.MSG_DEBUG);
-                }
-                log("Deleting " + destFile + " because an error occured.", Project.MSG_INFO);
-                destFile.delete();
-            }
-            // Raising the error to Ant.
-            throw new BuildException(exc.toString());
-        }
-    }
-
-    /**
-     * {@inheritDoc}
-     * Reports errors to the Ant logging system of throw the exception if the task
-     * is set to failonerror.
-     */
-    @Override
-    public void error(TransformerException message) throws TransformerException {
-        if (this.isFailOnError()) {
-            throw message;
-        } else {
-            log("ERROR: " + message.getMessageAndLocation(), Project.MSG_ERR);            
-        }
-    }
-
-    /**
-     * {@inheritDoc}
-     * Fails the task in case of fatal error. The is nothing we can do about that.
-     */
-    @Override
-    public void fatalError(TransformerException message) throws TransformerException {
-        log("ERROR: " + message.getMessageAndLocation(), Project.MSG_ERR);
-        throw message;
-    }
-
-    /**
-     * {@inheritDoc}
-     * Reports errors to the Ant logging system of throw the exception if the task
-     * is set to failonerror.
-     */
-    @Override
-    public void warning(TransformerException message) throws TransformerException {
-        if (this.isFailOnError()) {
-            throw message;
-        } else {
-            log("WARNING: " + message.getMessageAndLocation(), Project.MSG_WARN);
-        }
-    }
-}
--- a/buildframework/helium/external/helium-antlib/sysdef/src/com/nokia/helium/sysdef/ant/taskdefs/DowngradeTask.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-package com.nokia.helium.sysdef.ant.taskdefs;
-
-import java.io.File;
-import java.util.Hashtable;
-
-/**
- * <p>This task allows to downgrade of a system definition file v3.0 into v2.0.</p>
- * 
- * <p>The following example shows how you can downgrade the X:\model.sysdef.xml as
- * X:\model_2_0_1.sysdef.xml.</p>
- * 
- * E.g:
- *   <pre>
- *   &lt;hlm:downgradeSysdef epocroot=&quot;X:\&quot; srcfile=&quot;X:\model.sysdef.xml&quot; 
- *                      destfile=&quot;X:\model_2_0_1.sysdef.xml&quot; /&gt;
- *   </pre>
- *
- *   For more information about system definition file v3.0 please check 
- *   <a href="http://developer.symbian.org/wiki/index.php/System_Definition">http://developer.symbian.org/wiki/index.php/System_Definition</a>.
- *
- *   @ant.task name="downgradeSysdef" category="Sysdef"
- */
-public class DowngradeTask extends AbstractSydefTask {
-    private static final String XSLT = "sf/os/buildtools/bldsystemtools/buildsystemtools/sysdefdowngrade.xsl"; 
-
-    /**
-     * {@inheritDoc}
-     */
-    public void execute() {
-        check();
-        log("Downgrading " + this.getSrcFile() + " to 2.0.1 schema.");
-        log("Creating " + this.getDestFile());
-        transform(new Hashtable<String, String>());
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    protected File getXsl() {
-        return new File(this.getEpocroot(), XSLT);
-    }
-}
--- a/buildframework/helium/external/helium-antlib/sysdef/src/com/nokia/helium/sysdef/ant/taskdefs/JoinTask.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-package com.nokia.helium.sysdef.ant.taskdefs;
-
-import java.io.File;
-import java.util.Hashtable;
-
-/**
- * <p>This task allows to do the join operation on system definition file v3.0.
- * Join operation consist in combining a distributed system definition file into
- * a stand-alone version.</p>
- * 
- * <p>The following example shows how you can join the X:\layer.sysdef.xml under
- * X:\joined_layer.sysdef.xml.</p>
- * 
- * E.g:
- * <pre>
- *   &lt;hlm:joinSysdef epocroot=&quot;X:\&quot; srcfile=&quot;X:\layer.sysdef.xml&quot; 
- *                      destfile=&quot;X:\joined_layer.sysdef.xml&quot; /&gt;
- * </pre>
- *
- * For more information about system definition file v3.0 please check 
- * <a href="http://developer.symbian.org/wiki/index.php/System_Definition">http://developer.symbian.org/wiki/index.php/System_Definition</a>.
- *
- * @ant.task name="joinSysdef" category="Sysdef"
- */
-
-public class JoinTask extends AbstractSydefTask {
-    private static final String XSLT = "sf/os/buildtools/bldsystemtools/buildsystemtools/joinsysdef.xsl"; 
-
-    /**
-     * {@inheritDoc}
-     */
-    public void execute() {
-        check();
-        log("Joining " + this.getSrcFile()); 
-        log("Creating " + this.getDestFile());
-        transform(new Hashtable<String, String>());
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    protected File getXsl() {
-        return new File(this.getEpocroot(), XSLT);
-    }
-}
--- a/buildframework/helium/external/helium-antlib/sysdef/src/com/nokia/helium/sysdef/ant/taskdefs/MergeTask.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,97 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  
-*
-*/
-package com.nokia.helium.sysdef.ant.taskdefs;
-
-import java.io.File;
-import java.util.Hashtable;
-import java.util.Map;
-
-import org.apache.tools.ant.BuildException;
-
-/**
- * <p>This task allows to do the merge operation on system definition file v3.0.
- * Merge operation consist in combining a the data of two models into one stand-alone
- * system definition file (Also called canonical system definition file).</p>
- * 
- * <p>The following example shows how you can merge the X:\layer.sysdef.xml and X:\vendor.sysdef.xml
- * as X:\joined_layer.sysdef.xml.</p>
- * 
- * E.g:
- * <pre>
- *   &lt;hlm:mergeSysdef epocroot=&quot;X:\&quot;
- *                      srcfile=&quot;X:\layer.sysdef.xml&quot; 
- *                      downstreamfile=&quot;X:\vendor.sysdef.xml&quot; 
- *                      destfile=&quot;X:\joined_layer.sysdef.xml&quot; /&gt;
- * </pre>
- *   
- *   
- *   For more information about system definition file v3.0 please check 
- *   <a href="http://developer.symbian.org/wiki/index.php/System_Definition">http://developer.symbian.org/wiki/index.php/System_Definition</a>.
- *   
- *   @ant.task name="mergeSysdef" category="Sysdef"
- */
-
-public class MergeTask extends AbstractSydefTask {
-    private static final String XSLT = "sf/os/buildtools/bldsystemtools/buildsystemtools/mergesysdef.xsl"; 
-    private File downstreamFile;
-
-    /**
-     * Get the downstream file for the merge.
-     * @return
-     */
-    public File getDownstreamFile() {
-        return downstreamFile;
-    }
-
-    /**
-     * Defines the location of the downstream file.
-     * @param downstreamfile
-     * @ant.required
-     */
-    public void setDownstreamfile(File downstreamFile) {
-        this.downstreamFile = downstreamFile;
-    }
-
-    
-    /**
-     * {@inheritDoc}
-     */
-    public void execute() {
-        check();
-        if (downstreamFile == null) {
-            throw new BuildException("'downstreamfile' attribute is not defined");
-        }
-        if (!downstreamFile.exists()) {
-            throw new BuildException("Could not find downstream file " + downstreamFile);
-        }        
-        
-        log("Merging " + this.getSrcFile());
-        log("Downstream " + downstreamFile);
-        log("Creating " + this.getDestFile());
-        Map<String, String> data = new Hashtable<String, String>();
-        data.put("Downstream", downstreamFile.toString());
-        transform(data);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    protected File getXsl() {
-        return new File(this.getEpocroot(), XSLT);
-    }
-}
--- a/buildframework/helium/external/helium-antlib/sysdef/tests/antunit/test_downgrade_sysdef.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,74 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : test_downgrade_sysdef.ant.xml 
-Part of     : Helium AntLib
-
-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="test-downgrade-sysdef" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
-    <description>Helium antlib downgrade sysdef tests.</description>
-
-    <taskdef resource="com/nokia/helium/sysdef/ant/antlib.xml" uri="http://www.nokia.com/helium" />
-    <property name="epocroot" location="../../demo/data" />
-    <property name="epocroot.temp" location="${epocroot}/temp" />
-
-
-    <!-- is called prior to the test -->
-    <target name="setUp">
-        <delete dir="${epocroot.temp}/" failonerror="false" />
-        <mkdir dir="${epocroot.temp}" />
-        <hlm:joinSysdef epocroot="${epocroot}"
-                        srcfile="${epocroot}/root/system_definition_layer1.xml"
-                        destfile="${epocroot.temp}/layer1.sysdef.xml" />
-        <hlm:joinSysdef epocroot="${epocroot}"
-                        srcfile="${epocroot}/root/system_definition_layer2.xml"
-                        destfile="${epocroot.temp}/layer2.sysdef.xml" />
-        <hlm:mergeSysdef epocroot="${epocroot}"
-                         srcfile="${epocroot.temp}/layer1.sysdef.xml"
-                         downstreamfile="${epocroot.temp}/layer2.sysdef.xml"
-                         destfile="${epocroot.temp}/full.sysdef.xml" />
-    </target>
-
-    <!-- is called after the test, even if that caused an error -->
-    <target name="tearDown">
-        <delete dir="${epocroot.temp}" failonerror="false" />
-    </target>
-
-
-    <target name="test-noargs">
-        <au:expectfailure expectedMessage="'srcfile' attribute is not defined">
-            <hlm:downgradeSysdef />
-        </au:expectfailure>
-        <au:assertFileDoesntExist file="${epocroot.temp}/output.sysdef.xml" />
-    </target>
-
-    <target name="test-srcfile">
-        <au:expectfailure expectedMessage="'destfile' attribute is not defined">
-            <hlm:downgradeSysdef epocroot="${epocroot}" srcfile="${epocroot.temp}/full.sysdef.xml" />
-        </au:expectfailure>
-        <au:assertFileDoesntExist file="${epocroot.temp}/output.sysdef.xml" />
-    </target>
-            
-    <target name="test-srcfile-destfile">
-        <hlm:downgradeSysdef epocroot="${epocroot}"
-                             srcfile="${epocroot.temp}/full.sysdef.xml"
-                             destfile="${epocroot.temp}/output.sysdef.xml" />
-        <au:assertFileExists file="${epocroot.temp}/output.sysdef.xml" />
-    </target>
-        
-</project>
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/sysdef/tests/antunit/test_join_sysdef.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : test_join_sysdef.ant.xml 
-Part of     : Helium AntLib
-
-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="test-join-sysdef" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
-    <description>Helium antlib join sysdef tests.</description>
-
-    <taskdef resource="com/nokia/helium/sysdef/ant/antlib.xml" uri="http://www.nokia.com/helium" />
-    <property name="epocroot" location="../../demo/data" />
-    <property name="epocroot.temp" location="${epocroot}/temp" />
-
-
-    <!-- is called prior to the test -->
-    <target name="setUp">
-        <delete dir="${epocroot.temp}" failonerror="false" />
-        <mkdir dir="${epocroot.temp}" />
-    </target>
-
-    <!-- is called after the test, even if that caused an error -->
-    <target name="tearDown">
-        <delete dir="${epocroot.temp}" failonerror="false" />
-    </target>
-
-
-    <target name="test-noargs">
-        <au:expectfailure expectedMessage="'srcfile' attribute is not defined">
-            <hlm:joinSysdef />
-        </au:expectfailure>
-        <au:assertFileDoesntExist file="${epocroot.temp}/output.sysdef.xml" />
-    </target>
-
-    <target name="test-srcfile">
-        <au:expectfailure expectedMessage="'destfile' attribute is not defined">
-            <hlm:joinSysdef epocroot="${epocroot}" srcfile="${epocroot}/root/system_definition_layer1.xml" />
-        </au:expectfailure>
-        <au:assertFileDoesntExist file="${epocroot.temp}/output.sysdef.xml" />
-    </target>
-
-    <target name="test-srcfile-destfile">
-        <hlm:joinSysdef epocroot="${epocroot}" srcfile="${epocroot}/root/system_definition_layer1.xml" destfile="${epocroot.temp}/output.sysdef.xml" />
-        <au:assertFileExists file="${epocroot.temp}/output.sysdef.xml" />
-    </target>
-
-    <target name="test-srcfile-destfile-wrong-epocroot">
-        <echo>test-srcfile-destfile-wrong-epocroot</echo>
-        <au:expectfailure expectedMessage="Could not find">
-            <hlm:joinSysdef epocroot="${epocroot}/foobar" srcfile="${epocroot}/root/system_definition_layer1.xml" destfile="${epocroot.temp}/output.sysdef.xml" />
-        </au:expectfailure>
-        <au:assertFileDoesntExist file="${epocroot.temp}/output.sysdef.xml" />
-    </target>
-
-    <target name="test-wrong-content">
-        <echo>test-wrong-content</echo>
-        <au:expectfailure expectedMessage="javax.xml.transform.TransformerException:">
-            <hlm:joinSysdef epocroot="${epocroot}" srcfile="${epocroot}/root/system_definition_layer3.xml" destfile="${epocroot.temp}/output.sysdef.xml" />
-        </au:expectfailure>
-        <au:assertFileDoesntExist file="${epocroot.temp}/output.sysdef.xml" />
-    </target>
-
-    <target name="test-invalid-src-file">
-        <echo>test-wrong-content</echo>
-        <au:expectfailure expectedMessage="Could not find source file ">
-            <hlm:joinSysdef epocroot="${epocroot}" srcfile="${epocroot}/root/system_definition_layer_invalid.xml" destfile="${epocroot.temp}/output.sysdef.xml" />
-        </au:expectfailure>
-        <au:assertFileDoesntExist file="${epocroot.temp}/output.sysdef.xml" />
-    </target>
-
-</project>
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/sysdef/tests/antunit/test_merge_sysdef.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,101 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : test_merge_sysdef.ant.xml 
-Part of     : Helium AntLib
-
-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="test-merge-sysdef" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
-    <description>Helium antlib merge sysdef tests.</description>
-
-    <taskdef resource="com/nokia/helium/sysdef/ant/antlib.xml" uri="http://www.nokia.com/helium" />
-    <property name="epocroot" location="../../demo/data" />
-    <property name="epocroot.temp" location="${epocroot}/temp" />
-
-
-    <!-- is called prior to the test -->
-    <target name="setUp">
-        <delete dir="${epocroot.temp}/" failonerror="false" />
-        <mkdir dir="${epocroot.temp}" />
-        <hlm:joinSysdef epocroot="${epocroot}"
-                        srcfile="${epocroot}/root/system_definition_layer1.xml"
-                        destfile="${epocroot.temp}/layer1.sysdef.xml" />
-        <hlm:joinSysdef epocroot="${epocroot}"
-                        srcfile="${epocroot}/root/system_definition_layer2.xml"
-                        destfile="${epocroot.temp}/layer2.sysdef.xml" />
-    </target>
-
-    <!-- is called after the test, even if that caused an error -->
-    <target name="tearDown">
-        <delete dir="${epocroot.temp}" failonerror="false" />
-    </target>
-
-
-    <target name="test-noargs">
-        <au:expectfailure expectedMessage="'srcfile' attribute is not defined">
-            <hlm:mergeSysdef />
-        </au:expectfailure>
-        <au:assertFileDoesntExist file="${epocroot.temp}/output.sysdef.xml" />
-    </target>
-
-    <target name="test-srcfile">
-        <au:expectfailure expectedMessage="'destfile' attribute is not defined">
-            <hlm:mergeSysdef epocroot="${epocroot}" srcfile="${epocroot.temp}/layer1.sysdef.xml" />
-        </au:expectfailure>
-        <au:assertFileDoesntExist file="${epocroot.temp}/output.sysdef.xml" />
-    </target>
-            
-    <target name="test-srcfile-destfile">
-        <au:expectfailure expectedMessage="'downstreamfile' attribute is not defined">
-            <hlm:mergeSysdef epocroot="${epocroot}"
-                             srcfile="${epocroot.temp}/layer1.sysdef.xml"
-                             destfile="${epocroot.temp}/output.sysdef.xml" />
-        </au:expectfailure>
-        <au:assertFileDoesntExist file="${epocroot.temp}/output.sysdef.xml" />
-    </target>
-        
-    <target name="test-srcfile-destfile-wrong-epocroot">
-        <au:expectfailure expectedMessage="Could not find">
-            <hlm:mergeSysdef epocroot="${epocroot}/foobar"
-                             srcfile="${epocroot.temp}/layer1.sysdef.xml"
-                             downstreamfile="${epocroot.temp}/layer2.sysdef.xml"
-                             destfile="${epocroot.temp}/output.sysdef.xml" />
-        </au:expectfailure>
-        <au:assertFileDoesntExist file="${epocroot.temp}/output.sysdef.xml" />
-    </target>            
-
-    <target name="test-valid-input">
-        <hlm:mergeSysdef epocroot="${epocroot}"
-                         srcfile="${epocroot.temp}/layer1.sysdef.xml"
-                         downstreamfile="${epocroot.temp}/layer2.sysdef.xml"
-                         destfile="${epocroot.temp}/output.sysdef.xml" />
-        <au:assertFileExists file="${epocroot.temp}/output.sysdef.xml" />
-    </target>
-
-    <target name="test-invalid-downstream-file">
-        <echo>test-wrong-content</echo>
-        <au:expectfailure expectedMessage="Could not find downstream file ">
-            <hlm:mergeSysdef epocroot="${epocroot}"
-                             srcfile="${epocroot.temp}/layer1.sysdef.xml"
-                             downstreamfile="${epocroot.temp}/layer2_invalid.sysdef.xml"
-                             destfile="${epocroot.temp}/output.sysdef.xml" />
-        </au:expectfailure>
-        <au:assertFileDoesntExist file="${epocroot.temp}/output.sysdef.xml" />
-    </target>
-
-</project>
\ No newline at end of file
--- a/buildframework/helium/external/helium-antlib/sysdef/tests/bld.sh	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,24 +0,0 @@
-#!/bin/csh
-
-#
-# 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: 
-#
-
-
-
-module load java/1.6.0
-module load mercurial
-setenv ANT_ARGS "-lib ../lib -lib ../../lib -lib ../../bin/helium-core.jar -lib ../../bin/helium-sysdef.jar -lib ../../antlibs"
-ant -Dant.executor.class="com.nokia.helium.core.ant.HeliumExecutor" $*
--- a/buildframework/helium/external/helium-antlib/sysdef/tests/build.bat	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-@echo off
-
-rem
-rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-rem All rights reserved.
-rem This component and the accompanying materials are made available
-rem under the terms of the License "Eclipse Public License v1.0"
-rem which accompanies this distribution, and is available
-rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
-rem
-rem Initial Contributors:
-rem Nokia Corporation - initial contribution.
-rem
-rem Contributors:
-rem
-rem Description: 
-rem
-
-setlocal
-if not defined JAVA_6_HOME (
-set TESTED_JAVA=C:\Apps\j2sdk_1.6.0_02
-) ELSE  set TESTED_JAVA=%JAVA_6_HOME%
-if exist %TESTED_JAVA% (set JAVA_HOME=%TESTED_JAVA%)
-set ANT_ARGS=-lib %CD%\..\lib -lib %CD%\..\..\lib -lib %CD%\..\..\bin\helium-core.jar -lib %CD%\..\..\bin\helium-sysdef.jar -lib %CD%\..\..\antlibs
-ant -Dant.executor.class=com.nokia.helium.core.ant.HeliumExecutor %*
-endlocal
-
--- a/buildframework/helium/external/helium-antlib/sysdef/tests/build.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : build.xml 
-Part of     : Helium AntLib
-
-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="helium-antlib-unittest" xmlns:au="antlib:org.apache.ant.antunit">
-    <description>Helium Antlib Sysdef unittests.</description>
-
-    
-    <import file="../../test-macros.ant.xml" />
-
-    <target name="unittest" depends="unittest-sysdef" />
-
-    <target name="unittest-sysdef">
-        <antunitModule name="sysdef" />
-    </target>
-
-</project>
--- a/buildframework/helium/external/helium-antlib/test-macros.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-<?xml version="1.0"?>
-<!-- 
-============================================================================ 
-Name        : test-macros.xml 
-Part of     : Helium AntLib
-
-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="test-macros" xmlns:au="org.apache.ant.antunit">
-    <description>Helium Antlib test macro.</description>
-
-    <taskdef resource="org/apache/ant/antunit/antlib.xml" uri="org.apache.ant.antunit"/>
-
-    <dirname property="helium.antlib.root.dir" file="${ant.file.test-macros}" />
-    <property name="build.temp.dir" location="${helium.antlib.root.dir}/../build" />
-
-    <fileset dir="." includes="**/test_*.ant.xml" id="defaut.antunit"/>
-    
-    <macrodef name="antunitModule">
-        <attribute name="name" />
-        <attribute name="filesetid" default="defaut.antunit"/>
-        <sequential>
-            <mkdir dir="${build.temp.dir}/antunit/@{name}" />
-            <au:antunit>
-                <fileset refid="@{filesetid}" />
-                <au:plainlistener logLevel="info"/>
-                <au:xmllistener toDir="${build.temp.dir}/antunit/@{name}"/>
-            </au:antunit>
-        </sequential>
-    </macrodef>
-
-</project>
\ No newline at end of file
--- a/buildframework/helium/external/jep_1.6_2.5/README	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,132 +0,0 @@
-	jepp - Java Embedded Python
-
-
-
-   Copyright (c) 2004, 2005, 2006 Mike Johnson.
-
-   This file is licenced under the the zlib/libpng License.
-
-   This software is provided 'as-is', without any express or implied
-   warranty. In no event will the authors be held liable for any
-   damages arising from the use of this software.
-   
-   Permission is granted to anyone to use this software for any
-   purpose, including commercial applications, and to alter it and
-   redistribute it freely, subject to the following restrictions:
-   
-       1. The origin of this software must not be misrepresented; you
-       must not claim that you wrote the original software. If you use
-       this software in a product, an acknowledgment in the product
-       documentation would be appreciated but is not required.
-   
-       2. Altered source versions must be plainly marked as such, and
-       must not be misrepresented as being the original software.
-   
-       3. This notice may not be removed or altered from any source
-       distribution.
-
-Comments welcome.
-
-	- Mike Johnson <mrjohnson0@users.sourceforge.net>
-
-
-    DEPENDENCIES
-        - Python version >= 2.2
-        - JNI >= 1.2 (untested, preferably 1.4)
-
-
-    BUILDING ON LINUX/UNIX
-        Simply ./configure && make && make install.
-
-
-    BUILDING ON MAC OS X
-        You'll need to:
-            - set JAVA_HOME to /Library/Java/Home *not* /usr.
-            - compile Python or download it using Fink.
-            - have installed the developer kits from Apple
-            - make a symlink from libjep.dynlib to /Library/Java/Extentions, like:
-                sudo ln -s `pwd`/.libs/libjep.dylib \
-                    /Library/Java/Extensions/libjep.jnilib
-
-                *** Make sure to use '.jnilib' for the symlink. ***
-
-              (This will get added to the install script Very Soon Now.)
-
-
-    AUTOMAKE 1.6
-        If you're using automake > 1.4, please run the `autogen.sh`
-script before running configure. This includes Mac OS X.
-
-    
-    WINDOWS
-        You'll need MSVC 6 and Python 2.3. I've compiled successfully
-against the ActiveState version. The project file expects Java in
-C:\j2sdk1.4.2_04 and Python in C:\Python2.3. If these aren't correct
-paths, you should edit the project settings.
-        Otherwise, the build is pretty normal. Notice there's no debug
-version. Feel free to add one if you like.
-        Also, you'll likely need to add -Djava.library.path='path to
-Release folder' for testing. Or copy and register the DLL in the
-System directory.
-
-
-    RUNNING ON *NIX - Preparing the libraries
-
-        Due to some (common) difficulties with Java and C projects
-that dlopen libraries, you'll need to set LD_PRELOAD environment
-variable. That's in addition to setting LD_LIBRARY_PATH if you've
-installed libjep into a directory not cached by ld.so.
-        For example, my tomcat startup.sh script starts with this:
-
-            #!/bin/sh
-            # java memory setting
-            export JAVA_OPTS='-Xmx64m'
-
-            # force system to load python
-            export LD_PRELOAD=/usr/lib/libpython2.3.so.1.0
-
-            # this is where my libjep.so is.
-            export LD_LIBRARY_PATH=/share/jepp/jep/.libs
-
-        Adding some heap memory is a good idea, too.
-        The libpython used here is whatever you've compiled jep
-against. If you don't know, try this command:
-
-            $ ldd .libs/libjep.so.1.0.0
-                < ... blah ... >
-            	libpython2.3.so.1.0 => /usr/lib/libpython2.3.so.1.0 (0x40023000)
-
-        That's the libpython you want to set in
-LD_PRELOAD. Unfortunately, this means you'll have to change this if
-you upgrade python. If it's the wrong library, it will most likely
-cause a crash. If it's not set you'll get an exception similar to:
-"Python Encountered: exceptions.ImportError:
-/usr/lib/python2.3/lib-dynload/datetime.so: undefined symbol:
-PyObject_GenericGetAttr".
-
-
-    RUNNING - Down to business
-
-        First, fire off the test.py script. We want to make sure
-you're fully setup. To start with, export LD_LIBRARY_PATH and
-LD_PRELOAD as in the section above. Then, start with:
-
-            java -classpath ../ jep.Test 0
-
-        A lot of early bugs in Jep didn't appear until the code is
-stressed a little. The above 0 argument is the number of additional
-threads to create. They all run through the test.py script in sub
-intepreters. Go ahead, throw some threads at it.
-
-            $ time java -classpath ../ jep.Test 3
-                real	0m0.344s
-                user	0m0.260s
-                sys	0m0.050s
-
-            $ time java -classpath ../ jep.Test 50
-                real	0m1.944s
-                user	0m1.850s
-                sys	0m0.100s
-
-        The test script isn't designed for speed but it runs quickly
-enough.
--- a/buildframework/helium/external/jep_1.6_2.5/console.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,79 +0,0 @@
-
-HISTFILE = '.jep'
-
-import traceback
-import jep
-from jep import *
-
-hasReadline = False
-
-try:
-    import readline
-
-    try:
-        hasReadline = True
-        import os
-        HISTFILE = '%s/.jep' % (os.environ['HOME'])
-        if(not os.access(HISTFILE, os.W_OK)):
-            os.open(HISTFILE, os.O_CREAT)
-        readline.read_history_file(HISTFILE)
-    except:
-        traceback.print_exc()
-        pass
-except:
-    print """
-    No readline available.
-    You may want to set the LD_PRELOAD environment variable, see the
-    README file for details.
-
-
-    i.e.: export LD_PRELOAD=/usr/lib/libpython2.3.so.1.0
-
-    If your platform really doesn't have readline, try this:
-    http://newcenturycomputers.net/projects/readline.html """
-
-
-PS1  = ">>> "
-PS2  = "... "
-
-
-def prompt(jep):
-    global hasReadline
-    
-    try:
-        line = None
-        while(1):
-            ran = True
-            try:
-                ran = jep.eval(line)
-            except:
-                traceback.print_exc()
-
-            try:
-                if(ran):
-                    line = raw_input(PS1)
-                else:
-                    line = raw_input(PS2)
-            except:
-                break
-
-    finally:
-        if(hasReadline):
-            readline.write_history_file(HISTFILE)
-
-
-if(__name__ == '__main__'):
-    Jep = findClass('jep.Jep')
-    jep = Jep(True)
-
-    # Pass argv to interactive prompt. We can't pass a Python object,
-    # but we can make a new one.
-    jep.eval("argv = %s" % argv)
-
-    try:
-        prompt(jep)
-    except:
-        traceback.print_exc()
-
-    print ''
-    jep.close()
Binary file buildframework/helium/external/jep_1.6_2.5/jep.dll has changed
Binary file buildframework/helium/external/jep_1.6_2.5/jep.jar has changed
Binary file buildframework/helium/external/jep_1.6_2.5/libjep.so has changed
Binary file buildframework/helium/external/jep_1.6_2.5/msvcr71.dll has changed
Binary file buildframework/helium/external/jep_1.6_2.5/msvcrt.dll has changed
--- a/buildframework/helium/external/python/lib/2.5/site.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,394 +0,0 @@
-# Duplicating setuptools' site.py...
-def __boot():
-    PYTHONPATH = []    
-    if sys.platform=='win32':
-        PYTHONPATH.append(os.path.join(sys.prefix, 'lib'))
-    if not (os.environ.get('PYTHONPATH') is None or (sys.platform=='win32' and not os.environ.get('PYTHONPATH'))):
-        PYTHONPATH.extend(os.environ.get('PYTHONPATH').split(os.pathsep))
-    pic = getattr(sys,'path_importer_cache',{})
-    stdpath = sys.path[len(PYTHONPATH):]
-    mydir = os.path.dirname(__file__)
-    known_paths = dict([(makepath(item)[1],1) for item in sys.path]) # 2.2 comp
-
-    oldpos = getattr(sys,'__egginsert',0)   # save old insertion position
-    sys.__egginsert = 0                     # and reset the current one
-
-    for item in PYTHONPATH:
-        addsitedir(item)
-        item_site_packages = os.path.join(item, 'site-packages')
-        if os.path.exists(item_site_packages):
-            addsitedir(item_site_packages)
-
-    sys.__egginsert += oldpos           # restore effective old position
-
-    d,nd = makepath(stdpath[0])
-    insert_at = None
-    new_path = []
-
-    for item in sys.path:
-        p,np = makepath(item)
-
-        if np==nd and insert_at is None:
-            # We've hit the first 'system' path entry, so added entries go here
-            insert_at = len(new_path)
-
-        if np in known_paths or insert_at is None:
-            new_path.append(item)
-        else:
-            # new path after the insert point, back-insert it
-            new_path.insert(insert_at, item)
-            insert_at += 1
-
-    sys.path[:] = new_path
-    
-import sys
-import os
-import __builtin__
-
-def makepath(*paths):
-    dir = os.path.abspath(os.path.join(*paths))
-    return dir, os.path.normcase(dir)
-
-def abs__file__():
-    """Set all module' __file__ attribute to an absolute path"""
-    for m in sys.modules.values():
-        try:
-            m.__file__ = os.path.abspath(m.__file__)
-        except AttributeError:
-            continue
-
-try:
-    set
-except NameError:
-    class set:
-        def __init__(self, args=()):
-            self.d = {}
-            for v in args:
-                self.d[v] = None
-        def __contains__(self, key):
-            return key in self.d
-        def add(self, key):
-            self.d[key] = None
-
-def removeduppaths():
-    """ Remove duplicate entries from sys.path along with making them
-    absolute"""
-    # This ensures that the initial path provided by the interpreter contains
-    # only absolute pathnames, even if we're running from the build directory.
-    L = []
-    known_paths = set()
-    for dir in sys.path:
-        # Filter out duplicate paths (on case-insensitive file systems also
-        # if they only differ in case); turn relative paths into absolute
-        # paths.
-        dir, dircase = makepath(dir)
-        if not dircase in known_paths:
-            L.append(dir)
-            known_paths.add(dircase)
-    sys.path[:] = L
-    return known_paths
-
-def _init_pathinfo():
-    """Return a set containing all existing directory entries from sys.path"""
-    d = set()
-    for dir in sys.path:
-        try:
-            if os.path.isdir(dir):
-                dir, dircase = makepath(dir)
-                d.add(dircase)
-        except TypeError:
-            continue
-    return d
-
-def addpackage(sitedir, name, known_paths, exclude_packages=()):
-    """Add a new path to known_paths by combining sitedir and 'name' or execute
-    sitedir if it starts with 'import'"""
-    import fnmatch
-    if known_paths is None:
-        _init_pathinfo()
-        reset = 1
-    else:
-        reset = 0
-    fullname = os.path.join(sitedir, name)
-    try:
-        f = open(fullname, "rU")
-    except IOError:
-        return
-    try:
-        for line in f:
-            if line.startswith("#"):
-                continue
-            found_exclude = False
-            for exclude in exclude_packages:
-                if exclude(line):
-                    found_exclude = True
-                    break
-            if found_exclude:
-                continue
-            if line.startswith("import"):
-                exec line
-                continue
-            line = line.rstrip()
-            dir, dircase = makepath(sitedir, line)
-            if not dircase in known_paths and os.path.exists(dir):
-                sys.path.append(dir)
-                known_paths.add(dircase)
-    finally:
-        f.close()
-    if reset:
-        known_paths = None
-    return known_paths
-
-def addsitedir(sitedir, known_paths=None, exclude_packages=()):
-    """Add 'sitedir' argument to sys.path if missing and handle .pth files in
-    'sitedir'"""
-    if known_paths is None:
-        known_paths = _init_pathinfo()
-        reset = 1
-    else:
-        reset = 0
-    sitedir, sitedircase = makepath(sitedir)
-    if not sitedircase in known_paths:
-        sys.path.append(sitedir)        # Add path component
-    try:
-        names = os.listdir(sitedir)
-    except os.error:
-        return
-    names.sort()
-    for name in names:
-        if name.endswith(os.extsep + "pth"):
-            addpackage(sitedir, name, known_paths,
-                       exclude_packages=exclude_packages)
-    if reset:
-        known_paths = None
-    return known_paths
-
-def addsitepackages(known_paths):
-    """Add site-packages (and possibly site-python) to sys.path"""
-    prefixes = [os.path.join(sys.prefix, "local"), sys.prefix]
-    if sys.exec_prefix != sys.prefix:
-        prefixes.append(os.path.join(sys.exec_prefix, "local"))
-    for prefix in prefixes:
-        if prefix:
-            if sys.platform in ('os2emx', 'riscos'):
-                sitedirs = [os.path.join(prefix, "Lib", "site-packages")]
-            elif os.sep == '/':
-                sitedirs = [os.path.join(prefix,
-                                         "lib",
-                                         "python" + sys.version[:3],
-                                         "site-packages"),
-                            os.path.join(prefix, "lib", "site-python")]
-                try:
-                    # sys.getobjects only available in --with-pydebug build
-                    # pylint: disable-msg=E1101
-                    sys.getobjects
-                    sitedirs.insert(0, os.path.join(sitedirs[0], 'debug'))
-                except AttributeError:
-                    pass
-            else:
-                sitedirs = [prefix, os.path.join(prefix, "lib", "site-packages")]
-            if sys.platform == 'darwin':
-                sitedirs.append( os.path.join('/opt/local', 'lib', 'python' + sys.version[:3], 'site-packages') )
-                # for framework builds *only* we add the standard Apple
-                # locations. Currently only per-user, but /Library and
-                # /Network/Library could be added too
-                if 'Python.framework' in prefix:
-                    home = os.environ.get('HOME')
-                    if home:
-                        sitedirs.append(
-                            os.path.join(home,
-                                         'Library',
-                                         'Python',
-                                         sys.version[:3],
-                                         'site-packages'))
-            for sitedir in sitedirs:
-                if os.path.isdir(sitedir):
-                    addsitedir(sitedir, known_paths,
-                               exclude_packages=[lambda line: 'setuptools' in line])
-    return None
-
-def setquit():
-    """Define new built-ins 'quit' and 'exit'.
-    These are simply strings that display a hint on how to exit.
-
-    """
-    if os.sep == ':':
-        exit = 'Use Cmd-Q to quit.'
-    elif os.sep == '\\':
-        exit = 'Use Ctrl-Z plus Return to exit.'
-    else:
-        exit = 'Use Ctrl-D (i.e. EOF) to exit.'
-    __builtin__.quit = __builtin__.exit = exit
-
-
-class _Printer(object):
-    """interactive prompt objects for printing the license text, a list of
-    contributors and the copyright notice."""
-
-    MAXLINES = 23
-
-    def __init__(self, name, data, files=(), dirs=()):
-        self.__name = name
-        self.__data = data
-        self.__files = files
-        self.__dirs = dirs
-        self.__lines = None
-
-    def __setup(self):
-        if self.__lines:
-            return
-        data = None
-        for dir in self.__dirs:
-            for filename in self.__files:
-                filename = os.path.join(dir, filename)
-                try:
-                    fp = file(filename, "rU")
-                    data = fp.read()
-                    fp.close()
-                    break
-                except IOError:
-                    pass
-            if data:
-                break
-        if not data:
-            data = self.__data
-        self.__lines = data.split('\n')
-        self.__linecnt = len(self.__lines)
-
-    def __repr__(self):
-        self.__setup()
-        if len(self.__lines) <= self.MAXLINES:
-            return "\n".join(self.__lines)
-        else:
-            return "Type %s() to see the full %s text" % ((self.__name,)*2)
-
-    def __call__(self):
-        self.__setup()
-        prompt = 'Hit Return for more, or q (and Return) to quit: '
-        lineno = 0
-        while 1:
-            try:
-                for i in range(lineno, lineno + self.MAXLINES):
-                    print self.__lines[i]
-            except IndexError:
-                break
-            else:
-                lineno += self.MAXLINES
-                key = None
-                while key is None:
-                    key = raw_input(prompt)
-                    if key not in ('', 'q'):
-                        key = None
-                if key == 'q':
-                    break
-
-def setcopyright():
-    """Set 'copyright' and 'credits' in __builtin__"""
-    __builtin__.copyright = _Printer("copyright", sys.copyright)
-    if sys.platform[:4] == 'java':
-        __builtin__.credits = _Printer(
-            "credits",
-            "Jython is maintained by the Jython developers (www.jython.org).")
-    else:
-        __builtin__.credits = _Printer("credits", """\
-    Thanks to CWI, CNRI, BeOpen.com, Zope Corporation and a cast of thousands
-    for supporting Python development.  See www.python.org for more information.""")
-    here = os.path.dirname(os.__file__)
-    __builtin__.license = _Printer(
-        "license", "See http://www.python.org/%.3s/license.html" % sys.version,
-        ["LICENSE.txt", "LICENSE"],
-        [os.path.join(here, os.pardir), here, os.curdir])
-
-
-class _Helper(object):
-    """Define the built-in 'help'.
-    This is a wrapper around pydoc.help (with a twist).
-
-    """
-
-    def __repr__(self):
-        return "Type help() for interactive help, " \
-               "or help(object) for help about object."
-    def __call__(self, *args, **kwds):
-        import pydoc
-        return pydoc.help(*args, **kwds)
-
-def sethelper():
-    __builtin__.help = _Helper()
-
-def aliasmbcs():
-    """On Windows, some default encodings are not provided by Python,
-    while they are always available as "mbcs" in each locale. Make
-    them usable by aliasing to "mbcs" in such a case."""
-    if sys.platform == 'win32':
-        import locale, codecs
-        enc = locale.getdefaultlocale()[1]
-        if enc.startswith('cp'):            # "cp***" ?
-            try:
-                codecs.lookup(enc)
-            except LookupError:
-                import encodings
-                encodings._cache[enc] = encodings._unknown
-                encodings.aliases.aliases[enc] = 'mbcs'
-
-def setencoding():
-    """Set the string encoding used by the Unicode implementation.  The
-    default is 'ascii', but if you're willing to experiment, you can
-    change this."""
-    encoding = "ascii" # Default value set by _PyUnicode_Init()
-    if 0:
-        # Enable to support locale aware default string encodings.
-        import locale
-        loc = locale.getdefaultlocale()
-        if loc[1]:
-            encoding = loc[1]
-    if 0:
-        # Enable to switch off string to Unicode coercion and implicit
-        # Unicode to string conversion.
-        encoding = "undefined"
-    if encoding != "ascii":
-        # On Non-Unicode builds this will raise an AttributeError...
-        sys.setdefaultencoding(encoding) # Needs Python Unicode build !
-
-
-def execsitecustomize():
-    """Run custom site specific code, if available."""
-    try:
-        import sitecustomize
-    except ImportError:
-        pass
-
-def fixup_setuptools():
-    """Make sure our setuptools monkeypatch is in place"""
-    for i in range(len(sys.path)):
-        if sys.path[i].find('setuptools') != -1:
-            path = sys.path[i]
-            del sys.path[i]
-            sys.path.append(path)
-
-def main():
-    abs__file__()
-    paths_in_sys = removeduppaths()
-    if include_site_packages:
-        paths_in_sys = addsitepackages(paths_in_sys)
-    setquit()
-    setcopyright()
-    sethelper()
-    aliasmbcs()
-    setencoding()
-    execsitecustomize()
-    # Remove sys.setdefaultencoding() so that users cannot change the
-    # encoding after initialization.  The test for presence is needed when
-    # this module is run as a script, because this code is executed twice.
-    if hasattr(sys, "setdefaultencoding"):
-        del sys.setdefaultencoding
-    __boot()
-    fixup_setuptools()
-    
-
-
-include_site_packages = False
-
-
-
-main()
--- a/buildframework/helium/external/python/lib/2.6/site.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,394 +0,0 @@
-# Duplicating setuptools' site.py...
-def __boot():
-    PYTHONPATH = []    
-    if sys.platform=='win32':
-        PYTHONPATH.append(os.path.join(sys.prefix, 'lib'))
-    if not (os.environ.get('PYTHONPATH') is None or (sys.platform=='win32' and not os.environ.get('PYTHONPATH'))):
-        PYTHONPATH.extend(os.environ.get('PYTHONPATH').split(os.pathsep))
-    pic = getattr(sys,'path_importer_cache',{})
-    stdpath = sys.path[len(PYTHONPATH):]
-    mydir = os.path.dirname(__file__)
-    known_paths = dict([(makepath(item)[1],1) for item in sys.path]) # 2.2 comp
-
-    oldpos = getattr(sys,'__egginsert',0)   # save old insertion position
-    sys.__egginsert = 0                     # and reset the current one
-
-    for item in PYTHONPATH:
-        addsitedir(item)
-        item_site_packages = os.path.join(item, 'site-packages')
-        if os.path.exists(item_site_packages):
-            addsitedir(item_site_packages)
-
-    sys.__egginsert += oldpos           # restore effective old position
-
-    d,nd = makepath(stdpath[0])
-    insert_at = None
-    new_path = []
-
-    for item in sys.path:
-        p,np = makepath(item)
-
-        if np==nd and insert_at is None:
-            # We've hit the first 'system' path entry, so added entries go here
-            insert_at = len(new_path)
-
-        if np in known_paths or insert_at is None:
-            new_path.append(item)
-        else:
-            # new path after the insert point, back-insert it
-            new_path.insert(insert_at, item)
-            insert_at += 1
-
-    sys.path[:] = new_path
-    
-import sys
-import os
-import __builtin__
-
-def makepath(*paths):
-    dir = os.path.abspath(os.path.join(*paths))
-    return dir, os.path.normcase(dir)
-
-def abs__file__():
-    """Set all module' __file__ attribute to an absolute path"""
-    for m in sys.modules.values():
-        try:
-            m.__file__ = os.path.abspath(m.__file__)
-        except AttributeError:
-            continue
-
-try:
-    set
-except NameError:
-    class set:
-        def __init__(self, args=()):
-            self.d = {}
-            for v in args:
-                self.d[v] = None
-        def __contains__(self, key):
-            return key in self.d
-        def add(self, key):
-            self.d[key] = None
-
-def removeduppaths():
-    """ Remove duplicate entries from sys.path along with making them
-    absolute"""
-    # This ensures that the initial path provided by the interpreter contains
-    # only absolute pathnames, even if we're running from the build directory.
-    L = []
-    known_paths = set()
-    for dir in sys.path:
-        # Filter out duplicate paths (on case-insensitive file systems also
-        # if they only differ in case); turn relative paths into absolute
-        # paths.
-        dir, dircase = makepath(dir)
-        if not dircase in known_paths:
-            L.append(dir)
-            known_paths.add(dircase)
-    sys.path[:] = L
-    return known_paths
-
-def _init_pathinfo():
-    """Return a set containing all existing directory entries from sys.path"""
-    d = set()
-    for dir in sys.path:
-        try:
-            if os.path.isdir(dir):
-                dir, dircase = makepath(dir)
-                d.add(dircase)
-        except TypeError:
-            continue
-    return d
-
-def addpackage(sitedir, name, known_paths, exclude_packages=()):
-    """Add a new path to known_paths by combining sitedir and 'name' or execute
-    sitedir if it starts with 'import'"""
-    import fnmatch
-    if known_paths is None:
-        _init_pathinfo()
-        reset = 1
-    else:
-        reset = 0
-    fullname = os.path.join(sitedir, name)
-    try:
-        f = open(fullname, "rU")
-    except IOError:
-        return
-    try:
-        for line in f:
-            if line.startswith("#"):
-                continue
-            found_exclude = False
-            for exclude in exclude_packages:
-                if exclude(line):
-                    found_exclude = True
-                    break
-            if found_exclude:
-                continue
-            if line.startswith("import"):
-                exec line
-                continue
-            line = line.rstrip()
-            dir, dircase = makepath(sitedir, line)
-            if not dircase in known_paths and os.path.exists(dir):
-                sys.path.append(dir)
-                known_paths.add(dircase)
-    finally:
-        f.close()
-    if reset:
-        known_paths = None
-    return known_paths
-
-def addsitedir(sitedir, known_paths=None, exclude_packages=()):
-    """Add 'sitedir' argument to sys.path if missing and handle .pth files in
-    'sitedir'"""
-    if known_paths is None:
-        known_paths = _init_pathinfo()
-        reset = 1
-    else:
-        reset = 0
-    sitedir, sitedircase = makepath(sitedir)
-    if not sitedircase in known_paths:
-        sys.path.append(sitedir)        # Add path component
-    try:
-        names = os.listdir(sitedir)
-    except os.error:
-        return
-    names.sort()
-    for name in names:
-        if name.endswith(os.extsep + "pth"):
-            addpackage(sitedir, name, known_paths,
-                       exclude_packages=exclude_packages)
-    if reset:
-        known_paths = None
-    return known_paths
-
-def addsitepackages(known_paths):
-    """Add site-packages (and possibly site-python) to sys.path"""
-    prefixes = [os.path.join(sys.prefix, "local"), sys.prefix]
-    if sys.exec_prefix != sys.prefix:
-        prefixes.append(os.path.join(sys.exec_prefix, "local"))
-    for prefix in prefixes:
-        if prefix:
-            if sys.platform in ('os2emx', 'riscos'):
-                sitedirs = [os.path.join(prefix, "Lib", "site-packages")]
-            elif os.sep == '/':
-                sitedirs = [os.path.join(prefix,
-                                         "lib",
-                                         "python" + sys.version[:3],
-                                         "site-packages"),
-                            os.path.join(prefix, "lib", "site-python")]
-                try:
-                    # sys.getobjects only available in --with-pydebug build
-                    # pylint: disable-msg=E1101
-                    sys.getobjects
-                    sitedirs.insert(0, os.path.join(sitedirs[0], 'debug'))
-                except AttributeError:
-                    pass
-            else:
-                sitedirs = [prefix, os.path.join(prefix, "lib", "site-packages")]
-            if sys.platform == 'darwin':
-                sitedirs.append( os.path.join('/opt/local', 'lib', 'python' + sys.version[:3], 'site-packages') )
-                # for framework builds *only* we add the standard Apple
-                # locations. Currently only per-user, but /Library and
-                # /Network/Library could be added too
-                if 'Python.framework' in prefix:
-                    home = os.environ.get('HOME')
-                    if home:
-                        sitedirs.append(
-                            os.path.join(home,
-                                         'Library',
-                                         'Python',
-                                         sys.version[:3],
-                                         'site-packages'))
-            for sitedir in sitedirs:
-                if os.path.isdir(sitedir):
-                    addsitedir(sitedir, known_paths,
-                               exclude_packages=[lambda line: 'setuptools' in line])
-    return None
-
-def setquit():
-    """Define new built-ins 'quit' and 'exit'.
-    These are simply strings that display a hint on how to exit.
-
-    """
-    if os.sep == ':':
-        exit = 'Use Cmd-Q to quit.'
-    elif os.sep == '\\':
-        exit = 'Use Ctrl-Z plus Return to exit.'
-    else:
-        exit = 'Use Ctrl-D (i.e. EOF) to exit.'
-    __builtin__.quit = __builtin__.exit = exit
-
-
-class _Printer(object):
-    """interactive prompt objects for printing the license text, a list of
-    contributors and the copyright notice."""
-
-    MAXLINES = 23
-
-    def __init__(self, name, data, files=(), dirs=()):
-        self.__name = name
-        self.__data = data
-        self.__files = files
-        self.__dirs = dirs
-        self.__lines = None
-
-    def __setup(self):
-        if self.__lines:
-            return
-        data = None
-        for dir in self.__dirs:
-            for filename in self.__files:
-                filename = os.path.join(dir, filename)
-                try:
-                    fp = file(filename, "rU")
-                    data = fp.read()
-                    fp.close()
-                    break
-                except IOError:
-                    pass
-            if data:
-                break
-        if not data:
-            data = self.__data
-        self.__lines = data.split('\n')
-        self.__linecnt = len(self.__lines)
-
-    def __repr__(self):
-        self.__setup()
-        if len(self.__lines) <= self.MAXLINES:
-            return "\n".join(self.__lines)
-        else:
-            return "Type %s() to see the full %s text" % ((self.__name,)*2)
-
-    def __call__(self):
-        self.__setup()
-        prompt = 'Hit Return for more, or q (and Return) to quit: '
-        lineno = 0
-        while 1:
-            try:
-                for i in range(lineno, lineno + self.MAXLINES):
-                    print self.__lines[i]
-            except IndexError:
-                break
-            else:
-                lineno += self.MAXLINES
-                key = None
-                while key is None:
-                    key = raw_input(prompt)
-                    if key not in ('', 'q'):
-                        key = None
-                if key == 'q':
-                    break
-
-def setcopyright():
-    """Set 'copyright' and 'credits' in __builtin__"""
-    __builtin__.copyright = _Printer("copyright", sys.copyright)
-    if sys.platform[:4] == 'java':
-        __builtin__.credits = _Printer(
-            "credits",
-            "Jython is maintained by the Jython developers (www.jython.org).")
-    else:
-        __builtin__.credits = _Printer("credits", """\
-    Thanks to CWI, CNRI, BeOpen.com, Zope Corporation and a cast of thousands
-    for supporting Python development.  See www.python.org for more information.""")
-    here = os.path.dirname(os.__file__)
-    __builtin__.license = _Printer(
-        "license", "See http://www.python.org/%.3s/license.html" % sys.version,
-        ["LICENSE.txt", "LICENSE"],
-        [os.path.join(here, os.pardir), here, os.curdir])
-
-
-class _Helper(object):
-    """Define the built-in 'help'.
-    This is a wrapper around pydoc.help (with a twist).
-
-    """
-
-    def __repr__(self):
-        return "Type help() for interactive help, " \
-               "or help(object) for help about object."
-    def __call__(self, *args, **kwds):
-        import pydoc
-        return pydoc.help(*args, **kwds)
-
-def sethelper():
-    __builtin__.help = _Helper()
-
-def aliasmbcs():
-    """On Windows, some default encodings are not provided by Python,
-    while they are always available as "mbcs" in each locale. Make
-    them usable by aliasing to "mbcs" in such a case."""
-    if sys.platform == 'win32':
-        import locale, codecs
-        enc = locale.getdefaultlocale()[1]
-        if enc.startswith('cp'):            # "cp***" ?
-            try:
-                codecs.lookup(enc)
-            except LookupError:
-                import encodings
-                encodings._cache[enc] = encodings._unknown
-                encodings.aliases.aliases[enc] = 'mbcs'
-
-def setencoding():
-    """Set the string encoding used by the Unicode implementation.  The
-    default is 'ascii', but if you're willing to experiment, you can
-    change this."""
-    encoding = "ascii" # Default value set by _PyUnicode_Init()
-    if 0:
-        # Enable to support locale aware default string encodings.
-        import locale
-        loc = locale.getdefaultlocale()
-        if loc[1]:
-            encoding = loc[1]
-    if 0:
-        # Enable to switch off string to Unicode coercion and implicit
-        # Unicode to string conversion.
-        encoding = "undefined"
-    if encoding != "ascii":
-        # On Non-Unicode builds this will raise an AttributeError...
-        sys.setdefaultencoding(encoding) # Needs Python Unicode build !
-
-
-def execsitecustomize():
-    """Run custom site specific code, if available."""
-    try:
-        import sitecustomize
-    except ImportError:
-        pass
-
-def fixup_setuptools():
-    """Make sure our setuptools monkeypatch is in place"""
-    for i in range(len(sys.path)):
-        if sys.path[i].find('setuptools') != -1:
-            path = sys.path[i]
-            del sys.path[i]
-            sys.path.append(path)
-
-def main():
-    abs__file__()
-    paths_in_sys = removeduppaths()
-    if include_site_packages:
-        paths_in_sys = addsitepackages(paths_in_sys)
-    setquit()
-    setcopyright()
-    sethelper()
-    aliasmbcs()
-    setencoding()
-    execsitecustomize()
-    # Remove sys.setdefaultencoding() so that users cannot change the
-    # encoding after initialization.  The test for presence is needed when
-    # this module is run as a script, because this code is executed twice.
-    if hasattr(sys, "setdefaultencoding"):
-        del sys.setdefaultencoding
-    __boot()
-    fixup_setuptools()
-    
-
-
-include_site_packages = False
-
-
-
-main()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/python/lib/common/pkg_resources.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,2543 @@
+"""Package resource API
+--------------------
+
+A resource is a logical file contained within a package, or a logical
+subdirectory thereof.  The package resource API expects resource names
+to have their path parts separated with ``/``, *not* whatever the local
+path separator is.  Do not use os.path operations to manipulate resource
+names being passed into the API.
+
+The package resource API is designed to work with normal filesystem packages,
+.egg files, and unpacked .egg files.  It can also work in a limited way with
+.zip files and with custom PEP 302 loaders that support the ``get_data()``
+method.
+"""
+
+import sys, os, zipimport, time, re, imp, pkgutil  # XXX
+
+try:
+    frozenset
+except NameError:
+    from sets import ImmutableSet as frozenset
+
+# capture these to bypass sandboxing
+from os import utime, rename, unlink, mkdir
+from os import open as os_open
+from os.path import isdir, split
+
+def _bypass_ensure_directory(name, mode=0777):
+    # Sandbox-bypassing version of ensure_directory()
+    dirname, filename = split(name)
+    if dirname and filename and not isdir(dirname):
+        _bypass_ensure_directory(dirname)
+        mkdir(dirname, mode)
+
+
+
+
+
+
+
+
+_state_vars = {}
+
+def _declare_state(vartype, **kw):
+    g = globals()
+    for name, val in kw.iteritems():
+        g[name] = val
+        _state_vars[name] = vartype
+
+def __getstate__():
+    state = {}
+    g = globals()
+    for k, v in _state_vars.iteritems():
+        state[k] = g['_sget_'+v](g[k])
+    return state
+
+def __setstate__(state):
+    g = globals()
+    for k, v in state.iteritems():
+        g['_sset_'+_state_vars[k]](k, g[k], v)
+    return state
+
+def _sget_dict(val):
+    return val.copy()
+
+def _sset_dict(key, ob, state):
+    ob.clear()
+    ob.update(state)
+
+def _sget_object(val):
+    return val.__getstate__()
+
+def _sset_object(key, ob, state):
+    ob.__setstate__(state)
+
+_sget_none = _sset_none = lambda *args: None
+
+
+
+
+
+
+def get_supported_platform():
+    """Return this platform's maximum compatible version.
+
+    distutils.util.get_platform() normally reports the minimum version
+    of Mac OS X that would be required to *use* extensions produced by
+    distutils.  But what we want when checking compatibility is to know the
+    version of Mac OS X that we are *running*.  To allow usage of packages that
+    explicitly require a newer version of Mac OS X, we must also know the
+    current version of the OS.
+
+    If this condition occurs for any other platform with a version in its
+    platform strings, this function should be extended accordingly.
+    """
+    plat = get_build_platform(); m = macosVersionString.match(plat)
+    if m is not None and sys.platform == "darwin":
+        try:
+            plat = 'macosx-%s-%s' % ('.'.join(_macosx_vers()[:2]), m.group(3))
+        except ValueError:
+            pass    # not Mac OS X
+    return plat
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__all__ = [
+    # Basic resource access and distribution/entry point discovery
+    'require', 'run_script', 'get_provider',  'get_distribution',
+    'load_entry_point', 'get_entry_map', 'get_entry_info', 'iter_entry_points',
+    'resource_string', 'resource_stream', 'resource_filename',
+    'resource_listdir', 'resource_exists', 'resource_isdir',
+
+    # Environmental control
+    'declare_namespace', 'working_set', 'add_activation_listener',
+    'find_distributions', 'set_extraction_path', 'cleanup_resources',
+    'get_default_cache',
+
+    # Primary implementation classes
+    'Environment', 'WorkingSet', 'ResourceManager',
+    'Distribution', 'Requirement', 'EntryPoint',
+
+    # Exceptions
+    'ResolutionError','VersionConflict','DistributionNotFound','UnknownExtra',
+    'ExtractionError',
+
+    # Parsing functions and string utilities
+    'parse_requirements', 'parse_version', 'safe_name', 'safe_version',
+    'get_platform', 'compatible_platforms', 'yield_lines', 'split_sections',
+    'safe_extra', 'to_filename',
+
+    # filesystem utilities
+    'ensure_directory', 'normalize_path',
+
+    # Distribution "precedence" constants
+    'EGG_DIST', 'BINARY_DIST', 'SOURCE_DIST', 'CHECKOUT_DIST', 'DEVELOP_DIST',
+
+    # "Provider" interfaces, implementations, and registration/lookup APIs
+    'IMetadataProvider', 'IResourceProvider', 'FileMetadata',
+    'PathMetadata', 'EggMetadata', 'EmptyProvider', 'empty_provider',
+    'NullProvider', 'EggProvider', 'DefaultProvider', 'ZipProvider',
+    'register_finder', 'register_namespace_handler', 'register_loader_type',
+    'fixup_namespace_packages', 'get_importer',
+
+    # Deprecated/backward compatibility only
+    'run_main', 'AvailableDistributions',
+]
+class ResolutionError(Exception):
+    """Abstract base for dependency resolution errors"""
+    def __repr__(self):
+        return self.__class__.__name__+repr(self.args)
+
+class VersionConflict(ResolutionError):
+    """An already-installed version conflicts with the requested version"""
+
+class DistributionNotFound(ResolutionError):
+    """A requested distribution was not found"""
+
+class UnknownExtra(ResolutionError):
+    """Distribution doesn't have an "extra feature" of the given name"""
+
+_provider_factories = {}
+PY_MAJOR = sys.version[:3]
+EGG_DIST    = 3
+BINARY_DIST = 2
+SOURCE_DIST = 1
+CHECKOUT_DIST = 0
+DEVELOP_DIST = -1
+
+def register_loader_type(loader_type, provider_factory):
+    """Register `provider_factory` to make providers for `loader_type`
+
+    `loader_type` is the type or class of a PEP 302 ``module.__loader__``,
+    and `provider_factory` is a function that, passed a *module* object,
+    returns an ``IResourceProvider`` for that module.
+    """
+    _provider_factories[loader_type] = provider_factory
+
+def get_provider(moduleOrReq):
+    """Return an IResourceProvider for the named module or requirement"""
+    if isinstance(moduleOrReq,Requirement):
+        return working_set.find(moduleOrReq) or require(str(moduleOrReq))[0]
+    try:
+        module = sys.modules[moduleOrReq]
+    except KeyError:
+        __import__(moduleOrReq)
+        module = sys.modules[moduleOrReq]
+    loader = getattr(module, '__loader__', None)
+    return _find_adapter(_provider_factories, loader)(module)
+
+def _macosx_vers(_cache=[]):
+    if not _cache:
+        from platform import mac_ver
+        _cache.append(mac_ver()[0].split('.'))
+    return _cache[0]
+
+def _macosx_arch(machine):
+    return {'PowerPC':'ppc', 'Power_Macintosh':'ppc'}.get(machine,machine)
+
+def get_build_platform():
+    """Return this platform's string for platform-specific distributions
+
+    XXX Currently this is the same as ``distutils.util.get_platform()``, but it
+    needs some hacks for Linux and Mac OS X.
+    """
+    from distutils.util import get_platform
+    plat = get_platform()
+    if sys.platform == "darwin" and not plat.startswith('macosx-'):
+        try:
+            version = _macosx_vers()
+            machine = os.uname()[4].replace(" ", "_")
+            return "macosx-%d.%d-%s" % (int(version[0]), int(version[1]),
+                _macosx_arch(machine))
+        except ValueError:
+            # if someone is running a non-Mac darwin system, this will fall
+            # through to the default implementation
+            pass
+    return plat
+
+macosVersionString = re.compile(r"macosx-(\d+)\.(\d+)-(.*)")
+darwinVersionString = re.compile(r"darwin-(\d+)\.(\d+)\.(\d+)-(.*)")
+get_platform = get_build_platform   # XXX backward compat
+
+
+
+
+
+
+
+def compatible_platforms(provided,required):
+    """Can code for the `provided` platform run on the `required` platform?
+
+    Returns true if either platform is ``None``, or the platforms are equal.
+
+    XXX Needs compatibility checks for Linux and other unixy OSes.
+    """
+    if provided is None or required is None or provided==required:
+        return True     # easy case
+
+    # Mac OS X special cases
+    reqMac = macosVersionString.match(required)
+    if reqMac:
+        provMac = macosVersionString.match(provided)
+
+        # is this a Mac package?
+        if not provMac:
+            # this is backwards compatibility for packages built before
+            # setuptools 0.6. All packages built after this point will
+            # use the new macosx designation.
+            provDarwin = darwinVersionString.match(provided)
+            if provDarwin:
+                dversion = int(provDarwin.group(1))
+                macosversion = "%s.%s" % (reqMac.group(1), reqMac.group(2))
+                if dversion == 7 and macosversion >= "10.3" or \
+                    dversion == 8 and macosversion >= "10.4":
+
+                    #import warnings
+                    #warnings.warn("Mac eggs should be rebuilt to "
+                    #    "use the macosx designation instead of darwin.",
+                    #    category=DeprecationWarning)
+                    return True
+            return False    # egg isn't macosx or legacy darwin
+
+        # are they the same major version and machine type?
+        if provMac.group(1) != reqMac.group(1) or \
+            provMac.group(3) != reqMac.group(3):
+            return False
+
+
+
+        # is the required OS major update >= the provided one?
+        if int(provMac.group(2)) > int(reqMac.group(2)):
+            return False
+
+        return True
+
+    # XXX Linux and other platforms' special cases should go here
+    return False
+
+
+def run_script(dist_spec, script_name):
+    """Locate distribution `dist_spec` and run its `script_name` script"""
+    ns = sys._getframe(1).f_globals
+    name = ns['__name__']
+    ns.clear()
+    ns['__name__'] = name
+    require(dist_spec)[0].run_script(script_name, ns)
+
+run_main = run_script   # backward compatibility
+
+def get_distribution(dist):
+    """Return a current distribution object for a Requirement or string"""
+    if isinstance(dist,basestring): dist = Requirement.parse(dist)
+    if isinstance(dist,Requirement): dist = get_provider(dist)
+    if not isinstance(dist,Distribution):
+        raise TypeError("Expected string, Requirement, or Distribution", dist)
+    return dist
+
+def load_entry_point(dist, group, name):
+    """Return `name` entry point of `group` for `dist` or raise ImportError"""
+    return get_distribution(dist).load_entry_point(group, name)
+
+def get_entry_map(dist, group=None):
+    """Return the entry point map for `group`, or the full entry map"""
+    return get_distribution(dist).get_entry_map(group)
+
+def get_entry_info(dist, group, name):
+    """Return the EntryPoint object for `group`+`name`, or ``None``"""
+    return get_distribution(dist).get_entry_info(group, name)
+
+
+try:
+    from pkgutil import get_importer
+except ImportError:
+    import _pkgutil as pkgutil
+    get_importer = pkgutil.get_importer
+else:
+    import pkgutil
+
+
+class IMetadataProvider:
+
+    def has_metadata(name):
+        """Does the package's distribution contain the named metadata?"""
+
+    def get_metadata(name):
+        """The named metadata resource as a string"""
+
+    def get_metadata_lines(name):
+        """Yield named metadata resource as list of non-blank non-comment lines
+
+       Leading and trailing whitespace is stripped from each line, and lines
+       with ``#`` as the first non-blank character are omitted."""
+
+    def metadata_isdir(name):
+        """Is the named metadata a directory?  (like ``os.path.isdir()``)"""
+
+    def metadata_listdir(name):
+        """List of metadata names in the directory (like ``os.listdir()``)"""
+
+    def run_script(script_name, namespace):
+        """Execute the named script in the supplied namespace dictionary"""
+
+
+
+
+
+
+
+
+
+
+class IResourceProvider(IMetadataProvider):
+    """An object that provides access to package resources"""
+
+    def get_resource_filename(manager, resource_name):
+        """Return a true filesystem path for `resource_name`
+
+        `manager` must be an ``IResourceManager``"""
+
+    def get_resource_stream(manager, resource_name):
+        """Return a readable file-like object for `resource_name`
+
+        `manager` must be an ``IResourceManager``"""
+
+    def get_resource_string(manager, resource_name):
+        """Return a string containing the contents of `resource_name`
+
+        `manager` must be an ``IResourceManager``"""
+
+    def has_resource(resource_name):
+        """Does the package contain the named resource?"""
+
+    def resource_isdir(resource_name):
+        """Is the named resource a directory?  (like ``os.path.isdir()``)"""
+
+    def resource_listdir(resource_name):
+        """List of resource names in the directory (like ``os.listdir()``)"""
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+class WorkingSet(object):
+    """A collection of active distributions on sys.path (or a similar list)"""
+
+    def __init__(self, entries=None):
+        """Create working set from list of path entries (default=sys.path)"""
+        self.entries = []
+        self.entry_keys = {}
+        self.by_key = {}
+        self.callbacks = []
+
+        if entries is None:
+            entries = sys.path
+
+        for entry in entries:
+            self.add_entry(entry)
+
+
+    def add_entry(self, entry):
+        """Add a path item to ``.entries``, finding any distributions on it
+
+        ``find_distributions(entry, True)`` is used to find distributions
+        corresponding to the path entry, and they are added.  `entry` is
+        always appended to ``.entries``, even if it is already present.
+        (This is because ``sys.path`` can contain the same value more than
+        once, and the ``.entries`` of the ``sys.path`` WorkingSet should always
+        equal ``sys.path``.)
+        """
+        self.entry_keys.setdefault(entry, [])
+        self.entries.append(entry)
+        for dist in find_distributions(entry, True):
+            self.add(dist, entry, False)
+
+
+    def __contains__(self,dist):
+        """True if `dist` is the active distribution for its project"""
+        return self.by_key.get(dist.key) == dist
+
+
+
+
+
+    def find(self, req):
+        """Find a distribution matching requirement `req`
+
+        If there is an active distribution for the requested project, this
+        returns it as long as it meets the version requirement specified by
+        `req`.  But, if there is an active distribution for the project and it
+        does *not* meet the `req` requirement, ``VersionConflict`` is raised.
+        If there is no active distribution for the requested project, ``None``
+        is returned.
+        """
+        dist = self.by_key.get(req.key)
+        if dist is not None and dist not in req:
+            raise VersionConflict(dist,req)     # XXX add more info
+        else:
+            return dist
+
+    def iter_entry_points(self, group, name=None):
+        """Yield entry point objects from `group` matching `name`
+
+        If `name` is None, yields all entry points in `group` from all
+        distributions in the working set, otherwise only ones matching
+        both `group` and `name` are yielded (in distribution order).
+        """
+        for dist in self:
+            entries = dist.get_entry_map(group)
+            if name is None:
+                for ep in entries.values():
+                    yield ep
+            elif name in entries:
+                yield entries[name]
+
+    def run_script(self, requires, script_name):
+        """Locate distribution for `requires` and run `script_name` script"""
+        ns = sys._getframe(1).f_globals
+        name = ns['__name__']
+        ns.clear()
+        ns['__name__'] = name
+        self.require(requires)[0].run_script(script_name, ns)
+
+
+
+    def __iter__(self):
+        """Yield distributions for non-duplicate projects in the working set
+
+        The yield order is the order in which the items' path entries were
+        added to the working set.
+        """
+        seen = {}
+        for item in self.entries:
+            for key in self.entry_keys[item]:
+                if key not in seen:
+                    seen[key]=1
+                    yield self.by_key[key]
+
+    def add(self, dist, entry=None, insert=True):
+        """Add `dist` to working set, associated with `entry`
+
+        If `entry` is unspecified, it defaults to the ``.location`` of `dist`.
+        On exit from this routine, `entry` is added to the end of the working
+        set's ``.entries`` (if it wasn't already present).
+
+        `dist` is only added to the working set if it's for a project that
+        doesn't already have a distribution in the set.  If it's added, any
+        callbacks registered with the ``subscribe()`` method will be called.
+        """
+        if insert:
+            dist.insert_on(self.entries, entry)
+
+        if entry is None:
+            entry = dist.location
+        keys = self.entry_keys.setdefault(entry,[])
+        keys2 = self.entry_keys.setdefault(dist.location,[])
+        if dist.key in self.by_key:
+            return      # ignore hidden distros
+
+        self.by_key[dist.key] = dist
+        if dist.key not in keys:
+            keys.append(dist.key)
+        if dist.key not in keys2:
+            keys2.append(dist.key)
+        self._added_new(dist)
+
+    def resolve(self, requirements, env=None, installer=None):
+        """List all distributions needed to (recursively) meet `requirements`
+
+        `requirements` must be a sequence of ``Requirement`` objects.  `env`,
+        if supplied, should be an ``Environment`` instance.  If
+        not supplied, it defaults to all distributions available within any
+        entry or distribution in the working set.  `installer`, if supplied,
+        will be invoked with each requirement that cannot be met by an
+        already-installed distribution; it should return a ``Distribution`` or
+        ``None``.
+        """
+
+        requirements = list(requirements)[::-1]  # set up the stack
+        processed = {}  # set of processed requirements
+        best = {}  # key -> dist
+        to_activate = []
+
+        while requirements:
+            req = requirements.pop(0)   # process dependencies breadth-first
+            if req in processed:
+                # Ignore cyclic or redundant dependencies
+                continue
+            dist = best.get(req.key)
+            if dist is None:
+                # Find the best distribution and add it to the map
+                dist = self.by_key.get(req.key)
+                if dist is None:
+                    if env is None:
+                        env = Environment(self.entries)
+                    dist = best[req.key] = env.best_match(req, self, installer)
+                    if dist is None:
+                        raise DistributionNotFound(req)  # XXX put more info here
+                to_activate.append(dist)
+            if dist not in req:
+                # Oops, the "best" so far conflicts with a dependency
+                raise VersionConflict(dist,req) # XXX put more info here
+            requirements.extend(dist.requires(req.extras)[::-1])
+            processed[req] = True
+
+        return to_activate    # return list of distros to activate
+
+    def find_plugins(self,
+        plugin_env, full_env=None, installer=None, fallback=True
+    ):
+        """Find all activatable distributions in `plugin_env`
+
+        Example usage::
+
+            distributions, errors = working_set.find_plugins(
+                Environment(plugin_dirlist)
+            )
+            map(working_set.add, distributions)  # add plugins+libs to sys.path
+            print "Couldn't load", errors        # display errors
+
+        The `plugin_env` should be an ``Environment`` instance that contains
+        only distributions that are in the project's "plugin directory" or
+        directories. The `full_env`, if supplied, should be an ``Environment``
+        contains all currently-available distributions.  If `full_env` is not
+        supplied, one is created automatically from the ``WorkingSet`` this
+        method is called on, which will typically mean that every directory on
+        ``sys.path`` will be scanned for distributions.
+
+        `installer` is a standard installer callback as used by the
+        ``resolve()`` method. The `fallback` flag indicates whether we should
+        attempt to resolve older versions of a plugin if the newest version
+        cannot be resolved.
+
+        This method returns a 2-tuple: (`distributions`, `error_info`), where
+        `distributions` is a list of the distributions found in `plugin_env`
+        that were loadable, along with any other distributions that are needed
+        to resolve their dependencies.  `error_info` is a dictionary mapping
+        unloadable plugin distributions to an exception instance describing the
+        error that occurred. Usually this will be a ``DistributionNotFound`` or
+        ``VersionConflict`` instance.
+        """
+
+        plugin_projects = list(plugin_env)
+        plugin_projects.sort()  # scan project names in alphabetic order
+
+        error_info = {}
+        distributions = {}
+
+        if full_env is None:
+            env = Environment(self.entries)
+            env += plugin_env
+        else:
+            env = full_env + plugin_env
+
+        shadow_set = self.__class__([])
+        map(shadow_set.add, self)   # put all our entries in shadow_set
+
+        for project_name in plugin_projects:
+
+            for dist in plugin_env[project_name]:
+
+                req = [dist.as_requirement()]
+
+                try:
+                    resolvees = shadow_set.resolve(req, env, installer)
+
+                except ResolutionError,v:
+                    error_info[dist] = v    # save error info
+                    if fallback:
+                        continue    # try the next older version of project
+                    else:
+                        break       # give up on this project, keep going
+
+                else:
+                    map(shadow_set.add, resolvees)
+                    distributions.update(dict.fromkeys(resolvees))
+
+                    # success, no need to try any more versions of this project
+                    break
+
+        distributions = list(distributions)
+        distributions.sort()
+
+        return distributions, error_info
+
+
+
+
+
+    def require(self, *requirements):
+        """Ensure that distributions matching `requirements` are activated
+
+        `requirements` must be a string or a (possibly-nested) sequence
+        thereof, specifying the distributions and versions required.  The
+        return value is a sequence of the distributions that needed to be
+        activated to fulfill the requirements; all relevant distributions are
+        included, even if they were already activated in this working set.
+        """
+        needed = self.resolve(parse_requirements(requirements))
+
+        for dist in needed:
+            self.add(dist)
+
+        return needed
+
+    def subscribe(self, callback):
+        """Invoke `callback` for all distributions (including existing ones)"""
+        if callback in self.callbacks:
+            return
+        self.callbacks.append(callback)
+        for dist in self:
+            callback(dist)
+
+    def _added_new(self, dist):
+        for callback in self.callbacks:
+            callback(dist)
+
+    def __getstate__(self):
+        return (
+            self.entries[:], self.entry_keys.copy(), self.by_key.copy(),
+            self.callbacks[:]
+        )
+
+    def __setstate__(self, (entries, keys, by_key, callbacks)):
+        self.entries = entries[:]
+        self.entry_keys = keys.copy()
+        self.by_key = by_key.copy()
+        self.callbacks = callbacks[:]
+
+
+class Environment(object):
+    """Searchable snapshot of distributions on a search path"""
+
+    def __init__(self, search_path=None, platform=get_supported_platform(), python=PY_MAJOR):
+        """Snapshot distributions available on a search path
+
+        Any distributions found on `search_path` are added to the environment.
+        `search_path` should be a sequence of ``sys.path`` items.  If not
+        supplied, ``sys.path`` is used.
+
+        `platform` is an optional string specifying the name of the platform
+        that platform-specific distributions must be compatible with.  If
+        unspecified, it defaults to the current platform.  `python` is an
+        optional string naming the desired version of Python (e.g. ``'2.4'``);
+        it defaults to the current version.
+
+        You may explicitly set `platform` (and/or `python`) to ``None`` if you
+        wish to map *all* distributions, not just those compatible with the
+        running platform or Python version.
+        """
+        self._distmap = {}
+        self._cache = {}
+        self.platform = platform
+        self.python = python
+        self.scan(search_path)
+
+    def can_add(self, dist):
+        """Is distribution `dist` acceptable for this environment?
+
+        The distribution must match the platform and python version
+        requirements specified when this environment was created, or False
+        is returned.
+        """
+        return (self.python is None or dist.py_version is None
+            or dist.py_version==self.python) \
+           and compatible_platforms(dist.platform,self.platform)
+
+    def remove(self, dist):
+        """Remove `dist` from the environment"""
+        self._distmap[dist.key].remove(dist)
+
+    def scan(self, search_path=None):
+        """Scan `search_path` for distributions usable in this environment
+
+        Any distributions found are added to the environment.
+        `search_path` should be a sequence of ``sys.path`` items.  If not
+        supplied, ``sys.path`` is used.  Only distributions conforming to
+        the platform/python version defined at initialization are added.
+        """
+        if search_path is None:
+            search_path = sys.path
+
+        for item in search_path:
+            for dist in find_distributions(item):
+                self.add(dist)
+
+    def __getitem__(self,project_name):
+        """Return a newest-to-oldest list of distributions for `project_name`
+        """
+        try:
+            return self._cache[project_name]
+        except KeyError:
+            project_name = project_name.lower()
+            if project_name not in self._distmap:
+                return []
+
+        if project_name not in self._cache:
+            dists = self._cache[project_name] = self._distmap[project_name]
+            _sort_dists(dists)
+
+        return self._cache[project_name]
+
+    def add(self,dist):
+        """Add `dist` if we ``can_add()`` it and it isn't already added"""
+        if self.can_add(dist) and dist.has_version():
+            dists = self._distmap.setdefault(dist.key,[])
+            if dist not in dists:
+                dists.append(dist)
+                if dist.key in self._cache:
+                    _sort_dists(self._cache[dist.key])
+
+
+    def best_match(self, req, working_set, installer=None):
+        """Find distribution best matching `req` and usable on `working_set`
+
+        This calls the ``find(req)`` method of the `working_set` to see if a
+        suitable distribution is already active.  (This may raise
+        ``VersionConflict`` if an unsuitable version of the project is already
+        active in the specified `working_set`.)  If a suitable distribution
+        isn't active, this method returns the newest distribution in the
+        environment that meets the ``Requirement`` in `req`.  If no suitable
+        distribution is found, and `installer` is supplied, then the result of
+        calling the environment's ``obtain(req, installer)`` method will be
+        returned.
+        """
+        dist = working_set.find(req)
+        if dist is not None:
+            return dist
+        for dist in self[req.key]:
+            if dist in req:
+                return dist
+        return self.obtain(req, installer) # try and download/install
+
+    def obtain(self, requirement, installer=None):
+        """Obtain a distribution matching `requirement` (e.g. via download)
+
+        Obtain a distro that matches requirement (e.g. via download).  In the
+        base ``Environment`` class, this routine just returns
+        ``installer(requirement)``, unless `installer` is None, in which case
+        None is returned instead.  This method is a hook that allows subclasses
+        to attempt other ways of obtaining a distribution before falling back
+        to the `installer` argument."""
+        if installer is not None:
+            return installer(requirement)
+
+    def __iter__(self):
+        """Yield the unique project names of the available distributions"""
+        for key in self._distmap.keys():
+            if self[key]: yield key
+
+
+
+
+    def __iadd__(self, other):
+        """In-place addition of a distribution or environment"""
+        if isinstance(other,Distribution):
+            self.add(other)
+        elif isinstance(other,Environment):
+            for project in other:
+                for dist in other[project]:
+                    self.add(dist)
+        else:
+            raise TypeError("Can't add %r to environment" % (other,))
+        return self
+
+    def __add__(self, other):
+        """Add an environment or distribution to an environment"""
+        new = self.__class__([], platform=None, python=None)
+        for env in self, other:
+            new += env
+        return new
+
+
+AvailableDistributions = Environment    # XXX backward compatibility
+
+
+class ExtractionError(RuntimeError):
+    """An error occurred extracting a resource
+
+    The following attributes are available from instances of this exception:
+
+    manager
+        The resource manager that raised this exception
+
+    cache_path
+        The base directory for resource extraction
+
+    original_error
+        The exception instance that caused extraction to fail
+    """
+
+
+
+
+class ResourceManager:
+    """Manage resource extraction and packages"""
+    extraction_path = None
+
+    def __init__(self):
+        self.cached_files = {}
+
+    def resource_exists(self, package_or_requirement, resource_name):
+        """Does the named resource exist?"""
+        return get_provider(package_or_requirement).has_resource(resource_name)
+
+    def resource_isdir(self, package_or_requirement, resource_name):
+        """Is the named resource an existing directory?"""
+        return get_provider(package_or_requirement).resource_isdir(
+            resource_name
+        )
+
+    def resource_filename(self, package_or_requirement, resource_name):
+        """Return a true filesystem path for specified resource"""
+        return get_provider(package_or_requirement).get_resource_filename(
+            self, resource_name
+        )
+
+    def resource_stream(self, package_or_requirement, resource_name):
+        """Return a readable file-like object for specified resource"""
+        return get_provider(package_or_requirement).get_resource_stream(
+            self, resource_name
+        )
+
+    def resource_string(self, package_or_requirement, resource_name):
+        """Return specified resource as a string"""
+        return get_provider(package_or_requirement).get_resource_string(
+            self, resource_name
+        )
+
+    def resource_listdir(self, package_or_requirement, resource_name):
+        """List the contents of the named resource directory"""
+        return get_provider(package_or_requirement).resource_listdir(
+            resource_name
+        )
+
+    def extraction_error(self):
+        """Give an error message for problems extracting file(s)"""
+
+        old_exc = sys.exc_info()[1]
+        cache_path = self.extraction_path or get_default_cache()
+
+        err = ExtractionError("""Can't extract file(s) to egg cache
+
+The following error occurred while trying to extract file(s) to the Python egg
+cache:
+
+  %s
+
+The Python egg cache directory is currently set to:
+
+  %s
+
+Perhaps your account does not have write access to this directory?  You can
+change the cache directory by setting the PYTHON_EGG_CACHE environment
+variable to point to an accessible directory.
+"""         % (old_exc, cache_path)
+        )
+        err.manager        = self
+        err.cache_path     = cache_path
+        err.original_error = old_exc
+        raise err
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    def get_cache_path(self, archive_name, names=()):
+        """Return absolute location in cache for `archive_name` and `names`
+
+        The parent directory of the resulting path will be created if it does
+        not already exist.  `archive_name` should be the base filename of the
+        enclosing egg (which may not be the name of the enclosing zipfile!),
+        including its ".egg" extension.  `names`, if provided, should be a
+        sequence of path name parts "under" the egg's extraction location.
+
+        This method should only be called by resource providers that need to
+        obtain an extraction location, and only for names they intend to
+        extract, as it tracks the generated names for possible cleanup later.
+        """
+        extract_path = self.extraction_path or get_default_cache()
+        target_path = os.path.join(extract_path, archive_name+'-tmp', *names)
+        try:
+            _bypass_ensure_directory(target_path)
+        except:
+            self.extraction_error()
+
+        self.cached_files[target_path] = 1
+        return target_path
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    def postprocess(self, tempname, filename):
+        """Perform any platform-specific postprocessing of `tempname`
+
+        This is where Mac header rewrites should be done; other platforms don't
+        have anything special they should do.
+
+        Resource providers should call this method ONLY after successfully
+        extracting a compressed resource.  They must NOT call it on resources
+        that are already in the filesystem.
+
+        `tempname` is the current (temporary) name of the file, and `filename`
+        is the name it will be renamed to by the caller after this routine
+        returns.
+        """
+
+        if os.name == 'posix':
+            # Make the resource executable
+            mode = ((os.stat(tempname).st_mode) | 0555) & 07777
+            os.chmod(tempname, mode)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    def set_extraction_path(self, path):
+        """Set the base path where resources will be extracted to, if needed.
+
+        If you do not call this routine before any extractions take place, the
+        path defaults to the return value of ``get_default_cache()``.  (Which
+        is based on the ``PYTHON_EGG_CACHE`` environment variable, with various
+        platform-specific fallbacks.  See that routine's documentation for more
+        details.)
+
+        Resources are extracted to subdirectories of this path based upon
+        information given by the ``IResourceProvider``.  You may set this to a
+        temporary directory, but then you must call ``cleanup_resources()`` to
+        delete the extracted files when done.  There is no guarantee that
+        ``cleanup_resources()`` will be able to remove all extracted files.
+
+        (Note: you may not change the extraction path for a given resource
+        manager once resources have been extracted, unless you first call
+        ``cleanup_resources()``.)
+        """
+        if self.cached_files:
+            raise ValueError(
+                "Can't change extraction path, files already extracted"
+            )
+
+        self.extraction_path = path
+
+    def cleanup_resources(self, force=False):
+        """
+        Delete all extracted resource files and directories, returning a list
+        of the file and directory names that could not be successfully removed.
+        This function does not have any concurrency protection, so it should
+        generally only be called when the extraction path is a temporary
+        directory exclusive to a single process.  This method is not
+        automatically called; you must call it explicitly or register it as an
+        ``atexit`` function if you wish to ensure cleanup of a temporary
+        directory used for extractions.
+        """
+        # XXX
+
+
+
+def get_default_cache():
+    """Determine the default cache location
+
+    This returns the ``PYTHON_EGG_CACHE`` environment variable, if set.
+    Otherwise, on Windows, it returns a "Python-Eggs" subdirectory of the
+    "Application Data" directory.  On all other systems, it's "~/.python-eggs".
+    """
+    try:
+        return os.environ['PYTHON_EGG_CACHE']
+    except KeyError:
+        pass
+
+    if os.name!='nt':
+        return os.path.expanduser('~/.python-eggs')
+
+    app_data = 'Application Data'   # XXX this may be locale-specific!
+    app_homes = [
+        (('APPDATA',), None),       # best option, should be locale-safe
+        (('USERPROFILE',), app_data),
+        (('HOMEDRIVE','HOMEPATH'), app_data),
+        (('HOMEPATH',), app_data),
+        (('HOME',), None),
+        (('WINDIR',), app_data),    # 95/98/ME
+    ]
+
+    for keys, subdir in app_homes:
+        dirname = ''
+        for key in keys:
+            if key in os.environ:
+                dirname = os.path.join(dirname, os.environ[key])
+            else:
+                break
+        else:
+            if subdir:
+                dirname = os.path.join(dirname,subdir)
+            return os.path.join(dirname, 'Python-Eggs')
+    else:
+        raise RuntimeError(
+            "Please set the PYTHON_EGG_CACHE enviroment variable"
+        )
+
+def safe_name(name):
+    """Convert an arbitrary string to a standard distribution name
+
+    Any runs of non-alphanumeric/. characters are replaced with a single '-'.
+    """
+    return re.sub('[^A-Za-z0-9.]+', '-', name)
+
+
+def safe_version(version):
+    """Convert an arbitrary string to a standard version string
+
+    Spaces become dots, and all other non-alphanumeric characters become
+    dashes, with runs of multiple dashes condensed to a single dash.
+    """
+    version = version.replace(' ','.')
+    return re.sub('[^A-Za-z0-9.]+', '-', version)
+
+
+def safe_extra(extra):
+    """Convert an arbitrary string to a standard 'extra' name
+
+    Any runs of non-alphanumeric characters are replaced with a single '_',
+    and the result is always lowercased.
+    """
+    return re.sub('[^A-Za-z0-9.]+', '_', extra).lower()
+
+
+def to_filename(name):
+    """Convert a project or version name to its filename-escaped form
+
+    Any '-' characters are currently replaced with '_'.
+    """
+    return name.replace('-','_')
+
+
+
+
+
+
+
+
+class NullProvider:
+    """Try to implement resources and metadata for arbitrary PEP 302 loaders"""
+
+    egg_name = None
+    egg_info = None
+    loader = None
+
+    def __init__(self, module):
+        self.loader = getattr(module, '__loader__', None)
+        self.module_path = os.path.dirname(getattr(module, '__file__', ''))
+
+    def get_resource_filename(self, manager, resource_name):
+        return self._fn(self.module_path, resource_name)
+
+    def get_resource_stream(self, manager, resource_name):
+        return StringIO(self.get_resource_string(manager, resource_name))
+
+    def get_resource_string(self, manager, resource_name):
+        return self._get(self._fn(self.module_path, resource_name))
+
+    def has_resource(self, resource_name):
+        return self._has(self._fn(self.module_path, resource_name))
+
+    def has_metadata(self, name):
+        return self.egg_info and self._has(self._fn(self.egg_info,name))
+
+    def get_metadata(self, name):
+        if not self.egg_info:
+            return ""
+        return self._get(self._fn(self.egg_info,name))
+
+    def get_metadata_lines(self, name):
+        return yield_lines(self.get_metadata(name))
+
+    def resource_isdir(self,resource_name):
+        return self._isdir(self._fn(self.module_path, resource_name))
+
+    def metadata_isdir(self,name):
+        return self.egg_info and self._isdir(self._fn(self.egg_info,name))
+
+
+    def resource_listdir(self,resource_name):
+        return self._listdir(self._fn(self.module_path,resource_name))
+
+    def metadata_listdir(self,name):
+        if self.egg_info:
+            return self._listdir(self._fn(self.egg_info,name))
+        return []
+
+    def run_script(self,script_name,namespace):
+        script = 'scripts/'+script_name
+        if not self.has_metadata(script):
+            raise ResolutionError("No script named %r" % script_name)
+        script_text = self.get_metadata(script).replace('\r\n','\n')
+        script_text = script_text.replace('\r','\n')
+        script_filename = self._fn(self.egg_info,script)
+        namespace['__file__'] = script_filename
+        if os.path.exists(script_filename):
+            execfile(script_filename, namespace, namespace)
+        else:
+            from linecache import cache
+            cache[script_filename] = (
+                len(script_text), 0, script_text.split('\n'), script_filename
+            )
+            script_code = compile(script_text,script_filename,'exec')
+            exec script_code in namespace, namespace
+
+    def _has(self, path):
+        raise NotImplementedError(
+            "Can't perform this operation for unregistered loader type"
+        )
+
+    def _isdir(self, path):
+        raise NotImplementedError(
+            "Can't perform this operation for unregistered loader type"
+        )
+
+    def _listdir(self, path):
+        raise NotImplementedError(
+            "Can't perform this operation for unregistered loader type"
+        )
+
+    def _fn(self, base, resource_name):
+        if resource_name:
+            return os.path.join(base, *resource_name.split('/'))
+        return base
+
+    def _get(self, path):
+        if hasattr(self.loader, 'get_data'):
+            return self.loader.get_data(path)
+        raise NotImplementedError(
+            "Can't perform this operation for loaders without 'get_data()'"
+        )
+
+register_loader_type(object, NullProvider)
+
+
+class EggProvider(NullProvider):
+    """Provider based on a virtual filesystem"""
+
+    def __init__(self,module):
+        NullProvider.__init__(self,module)
+        self._setup_prefix()
+
+    def _setup_prefix(self):
+        # we assume here that our metadata may be nested inside a "basket"
+        # of multiple eggs; that's why we use module_path instead of .archive
+        path = self.module_path
+        old = None
+        while path!=old:
+            if path.lower().endswith('.egg'):
+                self.egg_name = os.path.basename(path)
+                self.egg_info = os.path.join(path, 'EGG-INFO')
+                self.egg_root = path
+                break
+            old = path
+            path, base = os.path.split(path)
+
+
+
+
+
+
+class DefaultProvider(EggProvider):
+    """Provides access to package resources in the filesystem"""
+
+    def _has(self, path):
+        return os.path.exists(path)
+
+    def _isdir(self,path):
+        return os.path.isdir(path)
+
+    def _listdir(self,path):
+        return os.listdir(path)
+
+    def get_resource_stream(self, manager, resource_name):
+        return open(self._fn(self.module_path, resource_name), 'rb')
+
+    def _get(self, path):
+        stream = open(path, 'rb')
+        try:
+            return stream.read()
+        finally:
+            stream.close()
+
+register_loader_type(type(None), DefaultProvider)
+
+
+class EmptyProvider(NullProvider):
+    """Provider that returns nothing for all requests"""
+
+    _isdir = _has = lambda self,path: False
+    _get          = lambda self,path: ''
+    _listdir      = lambda self,path: []
+    module_path   = None
+
+    def __init__(self):
+        pass
+
+empty_provider = EmptyProvider()
+
+
+
+
+class ZipProvider(EggProvider):
+    """Resource support for zips and eggs"""
+
+    eagers = None
+
+    def __init__(self, module):
+        EggProvider.__init__(self,module)
+        self.zipinfo = zipimport._zip_directory_cache[self.loader.archive]
+        self.zip_pre = self.loader.archive+os.sep
+
+    def _zipinfo_name(self, fspath):
+        # Convert a virtual filename (full path to file) into a zipfile subpath
+        # usable with the zipimport directory cache for our target archive
+        if fspath.startswith(self.zip_pre):
+            return fspath[len(self.zip_pre):]
+        raise AssertionError(
+            "%s is not a subpath of %s" % (fspath,self.zip_pre)
+        )
+
+    def _parts(self,zip_path):
+        # Convert a zipfile subpath into an egg-relative path part list
+        fspath = self.zip_pre+zip_path  # pseudo-fs path
+        if fspath.startswith(self.egg_root+os.sep):
+            return fspath[len(self.egg_root)+1:].split(os.sep)
+        raise AssertionError(
+            "%s is not a subpath of %s" % (fspath,self.egg_root)
+        )
+
+    def get_resource_filename(self, manager, resource_name):
+        if not self.egg_name:
+            raise NotImplementedError(
+                "resource_filename() only supported for .egg, not .zip"
+            )
+        # no need to lock for extraction, since we use temp names
+        zip_path = self._resource_to_zip(resource_name)
+        eagers = self._get_eager_resources()
+        if '/'.join(self._parts(zip_path)) in eagers:
+            for name in eagers:
+                self._extract_resource(manager, self._eager_to_zip(name))
+        return self._extract_resource(manager, zip_path)
+
+    def _extract_resource(self, manager, zip_path):
+
+        if zip_path in self._index():
+            for name in self._index()[zip_path]:
+                last = self._extract_resource(
+                    manager, os.path.join(zip_path, name)
+                )
+            return os.path.dirname(last)  # return the extracted directory name
+
+        zip_stat = self.zipinfo[zip_path]
+        t,d,size = zip_stat[5], zip_stat[6], zip_stat[3]
+        date_time = (
+            (d>>9)+1980, (d>>5)&0xF, d&0x1F,                      # ymd
+            (t&0xFFFF)>>11, (t>>5)&0x3F, (t&0x1F) * 2, 0, 0, -1   # hms, etc.
+        )
+        timestamp = time.mktime(date_time)
+
+        try:
+            real_path = manager.get_cache_path(
+                self.egg_name, self._parts(zip_path)
+            )
+
+            if os.path.isfile(real_path):
+                stat = os.stat(real_path)
+                if stat.st_size==size and stat.st_mtime==timestamp:
+                    # size and stamp match, don't bother extracting
+                    return real_path
+
+            outf, tmpnam = _mkstemp(".$extract", dir=os.path.dirname(real_path))
+            os.write(outf, self.loader.get_data(zip_path))
+            os.close(outf)
+            utime(tmpnam, (timestamp,timestamp))
+            manager.postprocess(tmpnam, real_path)
+
+            try:
+                rename(tmpnam, real_path)
+
+            except os.error:
+                if os.path.isfile(real_path):
+                    stat = os.stat(real_path)
+
+                    if stat.st_size==size and stat.st_mtime==timestamp:
+                        # size and stamp match, somebody did it just ahead of
+                        # us, so we're done
+                        return real_path
+                    elif os.name=='nt':     # Windows, del old file and retry
+                        unlink(real_path)
+                        rename(tmpnam, real_path)
+                        return real_path
+                raise
+
+        except os.error:
+            manager.extraction_error()  # report a user-friendly error
+
+        return real_path
+
+    def _get_eager_resources(self):
+        if self.eagers is None:
+            eagers = []
+            for name in ('native_libs.txt', 'eager_resources.txt'):
+                if self.has_metadata(name):
+                    eagers.extend(self.get_metadata_lines(name))
+            self.eagers = eagers
+        return self.eagers
+
+    def _index(self):
+        try:
+            return self._dirindex
+        except AttributeError:
+            ind = {}
+            for path in self.zipinfo:
+                parts = path.split(os.sep)
+                while parts:
+                    parent = os.sep.join(parts[:-1])
+                    if parent in ind:
+                        ind[parent].append(parts[-1])
+                        break
+                    else:
+                        ind[parent] = [parts.pop()]
+            self._dirindex = ind
+            return ind
+
+    def _has(self, fspath):
+        zip_path = self._zipinfo_name(fspath)
+        return zip_path in self.zipinfo or zip_path in self._index()
+
+    def _isdir(self,fspath):
+        return self._zipinfo_name(fspath) in self._index()
+
+    def _listdir(self,fspath):
+        return list(self._index().get(self._zipinfo_name(fspath), ()))
+
+    def _eager_to_zip(self,resource_name):
+        return self._zipinfo_name(self._fn(self.egg_root,resource_name))
+
+    def _resource_to_zip(self,resource_name):
+        return self._zipinfo_name(self._fn(self.module_path,resource_name))
+
+register_loader_type(zipimport.zipimporter, ZipProvider)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+class FileMetadata(EmptyProvider):
+    """Metadata handler for standalone PKG-INFO files
+
+    Usage::
+
+        metadata = FileMetadata("/path/to/PKG-INFO")
+
+    This provider rejects all data and metadata requests except for PKG-INFO,
+    which is treated as existing, and will be the contents of the file at
+    the provided location.
+    """
+
+    def __init__(self,path):
+        self.path = path
+
+    def has_metadata(self,name):
+        return name=='PKG-INFO'
+
+    def get_metadata(self,name):
+        if name=='PKG-INFO':
+            return open(self.path,'rU').read()
+        raise KeyError("No metadata except PKG-INFO is available")
+
+    def get_metadata_lines(self,name):
+        return yield_lines(self.get_metadata(name))
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+class PathMetadata(DefaultProvider):
+    """Metadata provider for egg directories
+
+    Usage::
+
+        # Development eggs:
+
+        egg_info = "/path/to/PackageName.egg-info"
+        base_dir = os.path.dirname(egg_info)
+        metadata = PathMetadata(base_dir, egg_info)
+        dist_name = os.path.splitext(os.path.basename(egg_info))[0]
+        dist = Distribution(basedir,project_name=dist_name,metadata=metadata)
+
+        # Unpacked egg directories:
+
+        egg_path = "/path/to/PackageName-ver-pyver-etc.egg"
+        metadata = PathMetadata(egg_path, os.path.join(egg_path,'EGG-INFO'))
+        dist = Distribution.from_filename(egg_path, metadata=metadata)
+    """
+    def __init__(self, path, egg_info):
+        self.module_path = path
+        self.egg_info = egg_info
+
+
+class EggMetadata(ZipProvider):
+    """Metadata provider for .egg files"""
+
+    def __init__(self, importer):
+        """Create a metadata provider from a zipimporter"""
+
+        self.zipinfo = zipimport._zip_directory_cache[importer.archive]
+        self.zip_pre = importer.archive+os.sep
+        self.loader = importer
+        if importer.prefix:
+            self.module_path = os.path.join(importer.archive, importer.prefix)
+        else:
+            self.module_path = importer.archive
+        self._setup_prefix()
+
+
+
+_declare_state('dict', _distribution_finders = {})
+
+def register_finder(importer_type, distribution_finder):
+    """Register `distribution_finder` to find distributions in sys.path items
+
+    `importer_type` is the type or class of a PEP 302 "Importer" (sys.path item
+    handler), and `distribution_finder` is a callable that, passed a path
+    item and the importer instance, yields ``Distribution`` instances found on
+    that path item.  See ``pkg_resources.find_on_path`` for an example."""
+    _distribution_finders[importer_type] = distribution_finder
+
+
+def find_distributions(path_item, only=False):
+    """Yield distributions accessible via `path_item`"""
+    importer = get_importer(path_item)
+    finder = _find_adapter(_distribution_finders, importer)
+    return finder(importer, path_item, only)
+
+def find_in_zip(importer, path_item, only=False):
+    metadata = EggMetadata(importer)
+    if metadata.has_metadata('PKG-INFO'):
+        yield Distribution.from_filename(path_item, metadata=metadata)
+    if only:
+        return  # don't yield nested distros
+    for subitem in metadata.resource_listdir('/'):
+        if subitem.endswith('.egg'):
+            subpath = os.path.join(path_item, subitem)
+            for dist in find_in_zip(zipimport.zipimporter(subpath), subpath):
+                yield dist
+
+register_finder(zipimport.zipimporter, find_in_zip)
+
+def StringIO(*args, **kw):
+    """Thunk to load the real StringIO on demand"""
+    global StringIO
+    try:
+        from cStringIO import StringIO
+    except ImportError:
+        from StringIO import StringIO
+    return StringIO(*args,**kw)
+
+def find_nothing(importer, path_item, only=False):
+    return ()
+register_finder(object,find_nothing)
+
+def find_on_path(importer, path_item, only=False):
+    """Yield distributions accessible on a sys.path directory"""
+    path_item = _normalize_cached(path_item)
+
+    if os.path.isdir(path_item) and os.access(path_item, os.R_OK):
+        if path_item.lower().endswith('.egg'):
+            # unpacked egg
+            yield Distribution.from_filename(
+                path_item, metadata=PathMetadata(
+                    path_item, os.path.join(path_item,'EGG-INFO')
+                )
+            )
+        else:
+            # scan for .egg and .egg-info in directory
+            for entry in os.listdir(path_item):
+                lower = entry.lower()
+                if lower.endswith('.egg-info'):
+                    fullpath = os.path.join(path_item, entry)
+                    if os.path.isdir(fullpath):
+                        # egg-info directory, allow getting metadata
+                        metadata = PathMetadata(path_item, fullpath)
+                    else:
+                        metadata = FileMetadata(fullpath)
+                    yield Distribution.from_location(
+                        path_item,entry,metadata,precedence=DEVELOP_DIST
+                    )
+                elif not only and lower.endswith('.egg'):
+                    for dist in find_distributions(os.path.join(path_item, entry)):
+                        yield dist
+                elif not only and lower.endswith('.egg-link'):
+                    for line in file(os.path.join(path_item, entry)):
+                        if not line.strip(): continue
+                        for item in find_distributions(os.path.join(path_item,line.rstrip())):
+                            yield item
+                        break
+register_finder(pkgutil.ImpImporter, find_on_path)
+
+_declare_state('dict', _namespace_handlers = {})
+_declare_state('dict', _namespace_packages = {})
+
+def register_namespace_handler(importer_type, namespace_handler):
+    """Register `namespace_handler` to declare namespace packages
+
+    `importer_type` is the type or class of a PEP 302 "Importer" (sys.path item
+    handler), and `namespace_handler` is a callable like this::
+
+        def namespace_handler(importer,path_entry,moduleName,module):
+            # return a path_entry to use for child packages
+
+    Namespace handlers are only called if the importer object has already
+    agreed that it can handle the relevant path item, and they should only
+    return a subpath if the module __path__ does not already contain an
+    equivalent subpath.  For an example namespace handler, see
+    ``pkg_resources.file_ns_handler``.
+    """
+    _namespace_handlers[importer_type] = namespace_handler
+
+def _handle_ns(packageName, path_item):
+    """Ensure that named package includes a subpath of path_item (if needed)"""
+    importer = get_importer(path_item)
+    if importer is None:
+        return None
+    loader = importer.find_module(packageName)
+    if loader is None:
+        return None
+    module = sys.modules.get(packageName)
+    if module is None:
+        module = sys.modules[packageName] = imp.new_module(packageName)
+        module.__path__ = []; _set_parent_ns(packageName)
+    elif not hasattr(module,'__path__'):
+        raise TypeError("Not a package:", packageName)
+    handler = _find_adapter(_namespace_handlers, importer)
+    subpath = handler(importer,path_item,packageName,module)
+    if subpath is not None:
+        path = module.__path__; path.append(subpath)
+        loader.load_module(packageName); module.__path__ = path
+    return subpath
+
+def declare_namespace(packageName):
+    """Declare that package 'packageName' is a namespace package"""
+
+    imp.acquire_lock()
+    try:
+        if packageName in _namespace_packages:
+            return
+
+        path, parent = sys.path, None
+        if '.' in packageName:
+            parent = '.'.join(packageName.split('.')[:-1])
+            declare_namespace(parent)
+            __import__(parent)
+            try:
+                path = sys.modules[parent].__path__
+            except AttributeError:
+                raise TypeError("Not a package:", parent)
+
+        # Track what packages are namespaces, so when new path items are added,
+        # they can be updated
+        _namespace_packages.setdefault(parent,[]).append(packageName)
+        _namespace_packages.setdefault(packageName,[])
+
+        for path_item in path:
+            # Ensure all the parent's path items are reflected in the child,
+            # if they apply
+            _handle_ns(packageName, path_item)
+
+    finally:
+        imp.release_lock()
+
+def fixup_namespace_packages(path_item, parent=None):
+    """Ensure that previously-declared namespace packages include path_item"""
+    imp.acquire_lock()
+    try:
+        for package in _namespace_packages.get(parent,()):
+            subpath = _handle_ns(package, path_item)
+            if subpath: fixup_namespace_packages(subpath,package)
+    finally:
+        imp.release_lock()
+
+def file_ns_handler(importer, path_item, packageName, module):
+    """Compute an ns-package subpath for a filesystem or zipfile importer"""
+
+    subpath = os.path.join(path_item, packageName.split('.')[-1])
+    normalized = _normalize_cached(subpath)
+    for item in module.__path__:
+        if _normalize_cached(item)==normalized:
+            break
+    else:
+        # Only return the path if it's not already there
+        return subpath
+
+register_namespace_handler(pkgutil.ImpImporter, file_ns_handler)
+register_namespace_handler(zipimport.zipimporter, file_ns_handler)
+
+
+def null_ns_handler(importer, path_item, packageName, module):
+    return None
+
+register_namespace_handler(object,null_ns_handler)
+
+
+def normalize_path(filename):
+    """Normalize a file/dir name for comparison purposes"""
+    return os.path.normcase(os.path.realpath(filename))
+
+def _normalize_cached(filename,_cache={}):
+    try:
+        return _cache[filename]
+    except KeyError:
+        _cache[filename] = result = normalize_path(filename)
+        return result
+
+def _set_parent_ns(packageName):
+    parts = packageName.split('.')
+    name = parts.pop()
+    if parts:
+        parent = '.'.join(parts)
+        setattr(sys.modules[parent], name, sys.modules[packageName])
+
+
+def yield_lines(strs):
+    """Yield non-empty/non-comment lines of a ``basestring`` or sequence"""
+    if isinstance(strs,basestring):
+        for s in strs.splitlines():
+            s = s.strip()
+            if s and not s.startswith('#'):     # skip blank lines/comments
+                yield s
+    else:
+        for ss in strs:
+            for s in yield_lines(ss):
+                yield s
+
+LINE_END = re.compile(r"\s*(#.*)?$").match         # whitespace and comment
+CONTINUE = re.compile(r"\s*\\\s*(#.*)?$").match    # line continuation
+DISTRO   = re.compile(r"\s*((\w|[-.])+)").match    # Distribution or extra
+VERSION  = re.compile(r"\s*(<=?|>=?|==|!=)\s*((\w|[-.])+)").match  # ver. info
+COMMA    = re.compile(r"\s*,").match               # comma between items
+OBRACKET = re.compile(r"\s*\[").match
+CBRACKET = re.compile(r"\s*\]").match
+MODULE   = re.compile(r"\w+(\.\w+)*$").match
+EGG_NAME = re.compile(
+    r"(?P<name>[^-]+)"
+    r"( -(?P<ver>[^-]+) (-py(?P<pyver>[^-]+) (-(?P<plat>.+))? )? )?",
+    re.VERBOSE | re.IGNORECASE
+).match
+
+component_re = re.compile(r'(\d+ | [a-z]+ | \.| -)', re.VERBOSE)
+replace = {'pre':'c', 'preview':'c','-':'final-','rc':'c','dev':'@'}.get
+
+def _parse_version_parts(s):
+    for part in component_re.split(s):
+        part = replace(part,part)
+        if not part or part=='.':
+            continue
+        if part[:1] in '0123456789':
+            yield part.zfill(8)    # pad for numeric comparison
+        else:
+            yield '*'+part
+
+    yield '*final'  # ensure that alpha/beta/candidate are before final
+
+def parse_version(s):
+    """Convert a version string to a chronologically-sortable key
+
+    This is a rough cross between distutils' StrictVersion and LooseVersion;
+    if you give it versions that would work with StrictVersion, then it behaves
+    the same; otherwise it acts like a slightly-smarter LooseVersion. It is
+    *possible* to create pathological version coding schemes that will fool
+    this parser, but they should be very rare in practice.
+
+    The returned value will be a tuple of strings.  Numeric portions of the
+    version are padded to 8 digits so they will compare numerically, but
+    without relying on how numbers compare relative to strings.  Dots are
+    dropped, but dashes are retained.  Trailing zeros between alpha segments
+    or dashes are suppressed, so that e.g. "2.4.0" is considered the same as
+    "2.4". Alphanumeric parts are lower-cased.
+
+    The algorithm assumes that strings like "-" and any alpha string that
+    alphabetically follows "final"  represents a "patch level".  So, "2.4-1"
+    is assumed to be a branch or patch of "2.4", and therefore "2.4.1" is
+    considered newer than "2.4-1", which in turn is newer than "2.4".
+
+    Strings like "a", "b", "c", "alpha", "beta", "candidate" and so on (that
+    come before "final" alphabetically) are assumed to be pre-release versions,
+    so that the version "2.4" is considered newer than "2.4a1".
+
+    Finally, to handle miscellaneous cases, the strings "pre", "preview", and
+    "rc" are treated as if they were "c", i.e. as though they were release
+    candidates, and therefore are not as new as a version string that does not
+    contain them, and "dev" is replaced with an '@' so that it sorts lower than
+    than any other pre-release tag.
+    """
+    parts = []
+    for part in _parse_version_parts(s.lower()):
+        if part.startswith('*'):
+            if part<'*final':   # remove '-' before a prerelease tag
+                while parts and parts[-1]=='*final-': parts.pop()
+            # remove trailing zeros from each series of numeric parts
+            while parts and parts[-1]=='00000000':
+                parts.pop()
+        parts.append(part)
+    return tuple(parts)
+
+class EntryPoint(object):
+    """Object representing an advertised importable object"""
+
+    def __init__(self, name, module_name, attrs=(), extras=(), dist=None):
+        if not MODULE(module_name):
+            raise ValueError("Invalid module name", module_name)
+        self.name = name
+        self.module_name = module_name
+        self.attrs = tuple(attrs)
+        self.extras = Requirement.parse(("x[%s]" % ','.join(extras))).extras
+        self.dist = dist
+
+    def __str__(self):
+        s = "%s = %s" % (self.name, self.module_name)
+        if self.attrs:
+            s += ':' + '.'.join(self.attrs)
+        if self.extras:
+            s += ' [%s]' % ','.join(self.extras)
+        return s
+
+    def __repr__(self):
+        return "EntryPoint.parse(%r)" % str(self)
+
+    def load(self, require=True, env=None, installer=None):
+        if require: self.require(env, installer)
+        entry = __import__(self.module_name, globals(),globals(), ['__name__'])
+        for attr in self.attrs:
+            try:
+                entry = getattr(entry,attr)
+            except AttributeError:
+                raise ImportError("%r has no %r attribute" % (entry,attr))
+        return entry
+
+    def require(self, env=None, installer=None):
+        if self.extras and not self.dist:
+            raise UnknownExtra("Can't require() without a distribution", self)
+        map(working_set.add,
+            working_set.resolve(self.dist.requires(self.extras),env,installer))
+
+
+
+    #@classmethod
+    def parse(cls, src, dist=None):
+        """Parse a single entry point from string `src`
+
+        Entry point syntax follows the form::
+
+            name = some.module:some.attr [extra1,extra2]
+
+        The entry name and module name are required, but the ``:attrs`` and
+        ``[extras]`` parts are optional
+        """
+        try:
+            attrs = extras = ()
+            name,value = src.split('=',1)
+            if '[' in value:
+                value,extras = value.split('[',1)
+                req = Requirement.parse("x["+extras)
+                if req.specs: raise ValueError
+                extras = req.extras
+            if ':' in value:
+                value,attrs = value.split(':',1)
+                if not MODULE(attrs.rstrip()):
+                    raise ValueError
+                attrs = attrs.rstrip().split('.')
+        except ValueError:
+            raise ValueError(
+                "EntryPoint must be in 'name=module:attrs [extras]' format",
+                src
+            )
+        else:
+            return cls(name.strip(), value.strip(), attrs, extras, dist)
+
+    parse = classmethod(parse)
+
+
+
+
+
+
+
+
+    #@classmethod
+    def parse_group(cls, group, lines, dist=None):
+        """Parse an entry point group"""
+        if not MODULE(group):
+            raise ValueError("Invalid group name", group)
+        this = {}
+        for line in yield_lines(lines):
+            ep = cls.parse(line, dist)
+            if ep.name in this:
+                raise ValueError("Duplicate entry point", group, ep.name)
+            this[ep.name]=ep
+        return this
+
+    parse_group = classmethod(parse_group)
+
+    #@classmethod
+    def parse_map(cls, data, dist=None):
+        """Parse a map of entry point groups"""
+        if isinstance(data,dict):
+            data = data.items()
+        else:
+            data = split_sections(data)
+        maps = {}
+        for group, lines in data:
+            if group is None:
+                if not lines:
+                    continue
+                raise ValueError("Entry points must be listed in groups")
+            group = group.strip()
+            if group in maps:
+                raise ValueError("Duplicate group name", group)
+            maps[group] = cls.parse_group(group, lines, dist)
+        return maps
+
+    parse_map = classmethod(parse_map)
+
+
+
+
+
+
+class Distribution(object):
+    """Wrap an actual or potential sys.path entry w/metadata"""
+    def __init__(self,
+        location=None, metadata=None, project_name=None, version=None,
+        py_version=PY_MAJOR, platform=None, precedence = EGG_DIST
+    ):
+        self.project_name = safe_name(project_name or 'Unknown')
+        if version is not None:
+            self._version = safe_version(version)
+        self.py_version = py_version
+        self.platform = platform
+        self.location = location
+        self.precedence = precedence
+        self._provider = metadata or empty_provider
+
+    #@classmethod
+    def from_location(cls,location,basename,metadata=None,**kw):
+        project_name, version, py_version, platform = [None]*4
+        basename, ext = os.path.splitext(basename)
+        if ext.lower() in (".egg",".egg-info"):
+            match = EGG_NAME(basename)
+            if match:
+                project_name, version, py_version, platform = match.group(
+                    'name','ver','pyver','plat'
+                )
+        return cls(
+            location, metadata, project_name=project_name, version=version,
+            py_version=py_version, platform=platform, **kw
+        )
+    from_location = classmethod(from_location)
+
+    hashcmp = property(
+        lambda self: (
+            getattr(self,'parsed_version',()), self.precedence, self.key,
+            -len(self.location or ''), self.location, self.py_version,
+            self.platform
+        )
+    )
+    def __cmp__(self, other): return cmp(self.hashcmp, other)
+    def __hash__(self): return hash(self.hashcmp)
+
+    # These properties have to be lazy so that we don't have to load any
+    # metadata until/unless it's actually needed.  (i.e., some distributions
+    # may not know their name or version without loading PKG-INFO)
+
+    #@property
+    def key(self):
+        try:
+            return self._key
+        except AttributeError:
+            self._key = key = self.project_name.lower()
+            return key
+    key = property(key)
+
+    #@property
+    def parsed_version(self):
+        try:
+            return self._parsed_version
+        except AttributeError:
+            self._parsed_version = pv = parse_version(self.version)
+            return pv
+
+    parsed_version = property(parsed_version)
+
+    #@property
+    def version(self):
+        try:
+            return self._version
+        except AttributeError:
+            for line in self._get_metadata('PKG-INFO'):
+                if line.lower().startswith('version:'):
+                    self._version = safe_version(line.split(':',1)[1].strip())
+                    return self._version
+            else:
+                raise ValueError(
+                    "Missing 'Version:' header and/or PKG-INFO file", self
+                )
+    version = property(version)
+
+
+
+
+    #@property
+    def _dep_map(self):
+        try:
+            return self.__dep_map
+        except AttributeError:
+            dm = self.__dep_map = {None: []}
+            for name in 'requires.txt', 'depends.txt':
+                for extra,reqs in split_sections(self._get_metadata(name)):
+                    if extra: extra = safe_extra(extra)
+                    dm.setdefault(extra,[]).extend(parse_requirements(reqs))
+            return dm
+    _dep_map = property(_dep_map)
+
+    def requires(self,extras=()):
+        """List of Requirements needed for this distro if `extras` are used"""
+        dm = self._dep_map
+        deps = []
+        deps.extend(dm.get(None,()))
+        for ext in extras:
+            try:
+                deps.extend(dm[safe_extra(ext)])
+            except KeyError:
+                raise UnknownExtra(
+                    "%s has no such extra feature %r" % (self, ext)
+                )
+        return deps
+
+    def _get_metadata(self,name):
+        if self.has_metadata(name):
+            for line in self.get_metadata_lines(name):
+                yield line
+
+    def activate(self,path=None):
+        """Ensure distribution is importable on `path` (default=sys.path)"""
+        if path is None: path = sys.path
+        self.insert_on(path)
+        if path is sys.path:
+            fixup_namespace_packages(self.location)
+            for pkg in self._get_metadata('namespace_packages.txt'):
+                if pkg in sys.modules: declare_namespace(pkg)
+
+    def egg_name(self):
+        """Return what this distribution's standard .egg filename should be"""
+        filename = "%s-%s-py%s" % (
+            to_filename(self.project_name), to_filename(self.version),
+            self.py_version or PY_MAJOR
+        )
+
+        if self.platform:
+            filename += '-'+self.platform
+        return filename
+
+    def __repr__(self):
+        if self.location:
+            return "%s (%s)" % (self,self.location)
+        else:
+            return str(self)
+
+    def __str__(self):
+        try: version = getattr(self,'version',None)
+        except ValueError: version = None
+        version = version or "[unknown version]"
+        return "%s %s" % (self.project_name,version)
+
+    def __getattr__(self,attr):
+        """Delegate all unrecognized public attributes to .metadata provider"""
+        if attr.startswith('_'):
+            raise AttributeError,attr
+        return getattr(self._provider, attr)
+
+    #@classmethod
+    def from_filename(cls,filename,metadata=None, **kw):
+        return cls.from_location(
+            _normalize_cached(filename), os.path.basename(filename), metadata,
+            **kw
+        )
+    from_filename = classmethod(from_filename)
+
+    def as_requirement(self):
+        """Return a ``Requirement`` that matches this distribution exactly"""
+        return Requirement.parse('%s==%s' % (self.project_name, self.version))
+
+    def load_entry_point(self, group, name):
+        """Return the `name` entry point of `group` or raise ImportError"""
+        ep = self.get_entry_info(group,name)
+        if ep is None:
+            raise ImportError("Entry point %r not found" % ((group,name),))
+        return ep.load()
+
+    def get_entry_map(self, group=None):
+        """Return the entry point map for `group`, or the full entry map"""
+        try:
+            ep_map = self._ep_map
+        except AttributeError:
+            ep_map = self._ep_map = EntryPoint.parse_map(
+                self._get_metadata('entry_points.txt'), self
+            )
+        if group is not None:
+            return ep_map.get(group,{})
+        return ep_map
+
+    def get_entry_info(self, group, name):
+        """Return the EntryPoint object for `group`+`name`, or ``None``"""
+        return self.get_entry_map(group).get(name)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    def insert_on(self, path, loc = None):
+        """Insert self.location in path before its nearest parent directory"""
+
+        loc = loc or self.location
+        if not loc:
+            return
+
+        nloc = _normalize_cached(loc)
+        bdir = os.path.dirname(nloc)
+        npath= [(p and _normalize_cached(p) or p) for p in path]
+
+        bp = None
+        for p, item in enumerate(npath):
+            if item==nloc:
+                break
+            elif item==bdir and self.precedence==EGG_DIST:
+                # if it's an .egg, give it precedence over its directory
+                if path is sys.path:
+                    self.check_version_conflict()
+                path.insert(p, loc)
+                npath.insert(p, nloc)
+                break
+        else:
+            if path is sys.path:
+                self.check_version_conflict()
+            path.append(loc)
+            return
+
+        # p is the spot where we found or inserted loc; now remove duplicates
+        while 1:
+            try:
+                np = npath.index(nloc, p+1)
+            except ValueError:
+                break
+            else:
+                del npath[np], path[np]
+                p = np  # ha!
+
+        return
+
+
+    def check_version_conflict(self):
+        if self.key=='setuptools':
+            return      # ignore the inevitable setuptools self-conflicts  :(
+
+        nsp = dict.fromkeys(self._get_metadata('namespace_packages.txt'))
+        loc = normalize_path(self.location)
+        for modname in self._get_metadata('top_level.txt'):
+            if (modname not in sys.modules or modname in nsp
+                or modname in _namespace_packages
+            ):
+                continue
+
+            fn = getattr(sys.modules[modname], '__file__', None)
+            if fn and (normalize_path(fn).startswith(loc) or fn.startswith(loc)):
+                continue
+            issue_warning(
+                "Module %s was already imported from %s, but %s is being added"
+                " to sys.path" % (modname, fn, self.location),
+            )
+
+    def has_version(self):
+        try:
+            self.version
+        except ValueError:
+            issue_warning("Unbuilt egg for "+repr(self))
+            return False
+        return True
+
+    def clone(self,**kw):
+        """Copy this distribution, substituting in any changed keyword args"""
+        for attr in (
+            'project_name', 'version', 'py_version', 'platform', 'location',
+            'precedence'
+        ):
+            kw.setdefault(attr, getattr(self,attr,None))
+        kw.setdefault('metadata', self._provider)
+        return self.__class__(**kw)
+
+
+
+
+    #@property
+    def extras(self):
+        return [dep for dep in self._dep_map if dep]
+    extras = property(extras)
+
+
+def issue_warning(*args,**kw):
+    level = 1
+    g = globals()
+    try:
+        # find the first stack frame that is *not* code in
+        # the pkg_resources module, to use for the warning
+        while sys._getframe(level).f_globals is g:
+            level += 1
+    except ValueError:
+        pass
+    from warnings import warn
+    warn(stacklevel = level+1, *args, **kw)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+def parse_requirements(strs):
+    """Yield ``Requirement`` objects for each specification in `strs`
+
+    `strs` must be an instance of ``basestring``, or a (possibly-nested)
+    iterable thereof.
+    """
+    # create a steppable iterator, so we can handle \-continuations
+    lines = iter(yield_lines(strs))
+
+    def scan_list(ITEM,TERMINATOR,line,p,groups,item_name):
+
+        items = []
+
+        while not TERMINATOR(line,p):
+            if CONTINUE(line,p):
+                try:
+                    line = lines.next(); p = 0
+                except StopIteration:
+                    raise ValueError(
+                        "\\ must not appear on the last nonblank line"
+                    )
+
+            match = ITEM(line,p)
+            if not match:
+                raise ValueError("Expected "+item_name+" in",line,"at",line[p:])
+
+            items.append(match.group(*groups))
+            p = match.end()
+
+            match = COMMA(line,p)
+            if match:
+                p = match.end() # skip the comma
+            elif not TERMINATOR(line,p):
+                raise ValueError(
+                    "Expected ',' or end-of-list in",line,"at",line[p:]
+                )
+
+        match = TERMINATOR(line,p)
+        if match: p = match.end()   # skip the terminator, if any
+        return line, p, items
+
+    for line in lines:
+        match = DISTRO(line)
+        if not match:
+            raise ValueError("Missing distribution spec", line)
+        project_name = match.group(1)
+        p = match.end()
+        extras = []
+
+        match = OBRACKET(line,p)
+        if match:
+            p = match.end()
+            line, p, extras = scan_list(
+                DISTRO, CBRACKET, line, p, (1,), "'extra' name"
+            )
+
+        line, p, specs = scan_list(VERSION,LINE_END,line,p,(1,2),"version spec")
+        specs = [(op,safe_version(val)) for op,val in specs]
+        yield Requirement(project_name, specs, extras)
+
+
+def _sort_dists(dists):
+    tmp = [(dist.hashcmp,dist) for dist in dists]
+    tmp.sort()
+    dists[::-1] = [d for hc,d in tmp]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+class Requirement:
+    def __init__(self, project_name, specs, extras):
+        """DO NOT CALL THIS UNDOCUMENTED METHOD; use Requirement.parse()!"""
+        self.unsafe_name, project_name = project_name, safe_name(project_name)
+        self.project_name, self.key = project_name, project_name.lower()
+        index = [(parse_version(v),state_machine[op],op,v) for op,v in specs]
+        index.sort()
+        self.specs = [(op,ver) for parsed,trans,op,ver in index]
+        self.index, self.extras = index, tuple(map(safe_extra,extras))
+        self.hashCmp = (
+            self.key, tuple([(op,parsed) for parsed,trans,op,ver in index]),
+            frozenset(self.extras)
+        )
+        self.__hash = hash(self.hashCmp)
+
+    def __str__(self):
+        specs = ','.join([''.join(s) for s in self.specs])
+        extras = ','.join(self.extras)
+        if extras: extras = '[%s]' % extras
+        return '%s%s%s' % (self.project_name, extras, specs)
+
+    def __eq__(self,other):
+        return isinstance(other,Requirement) and self.hashCmp==other.hashCmp
+
+    def __contains__(self,item):
+        if isinstance(item,Distribution):
+            if item.key != self.key: return False
+            if self.index: item = item.parsed_version  # only get if we need it
+        elif isinstance(item,basestring):
+            item = parse_version(item)
+        last = None
+        for parsed,trans,op,ver in self.index:
+            action = trans[cmp(item,parsed)]
+            if action=='F':     return False
+            elif action=='T':   return True
+            elif action=='+':   last = True
+            elif action=='-' or last is None:   last = False
+        if last is None: last = True    # no rules encountered
+        return last
+
+
+    def __hash__(self):
+        return self.__hash
+
+    def __repr__(self): return "Requirement.parse(%r)" % str(self)
+
+    #@staticmethod
+    def parse(s):
+        reqs = list(parse_requirements(s))
+        if reqs:
+            if len(reqs)==1:
+                return reqs[0]
+            raise ValueError("Expected only one requirement", s)
+        raise ValueError("No requirements found", s)
+
+    parse = staticmethod(parse)
+
+state_machine = {
+    #       =><
+    '<' :  '--T',
+    '<=':  'T-T',
+    '>' :  'F+F',
+    '>=':  'T+F',
+    '==':  'T..',
+    '!=':  'F++',
+}
+
+
+def _get_mro(cls):
+    """Get an mro for a type or classic class"""
+    if not isinstance(cls,type):
+        class cls(cls,object): pass
+        return cls.__mro__[1:]
+    return cls.__mro__
+
+def _find_adapter(registry, ob):
+    """Return an adapter factory for `ob` from `registry`"""
+    for t in _get_mro(getattr(ob, '__class__', type(ob))):
+        if t in registry:
+            return registry[t]
+
+
+def ensure_directory(path):
+    """Ensure that the parent directory of `path` exists"""
+    dirname = os.path.dirname(path)
+    if not os.path.isdir(dirname):
+        os.makedirs(dirname)
+
+def split_sections(s):
+    """Split a string or iterable thereof into (section,content) pairs
+
+    Each ``section`` is a stripped version of the section header ("[section]")
+    and each ``content`` is a list of stripped lines excluding blank lines and
+    comment-only lines.  If there are any such lines before the first section
+    header, they're returned in a first ``section`` of ``None``.
+    """
+    section = None
+    content = []
+    for line in yield_lines(s):
+        if line.startswith("["):
+            if line.endswith("]"):
+                if section or content:
+                    yield section, content
+                section = line[1:-1].strip()
+                content = []
+            else:
+                raise ValueError("Invalid section heading", line)
+        else:
+            content.append(line)
+
+    # wrap up last segment
+    yield section, content
+
+def _mkstemp(*args,**kw):
+    from tempfile import mkstemp
+    old_open = os.open
+    try:
+        os.open = os_open   # temporarily bypass sandboxing
+        return mkstemp(*args,**kw)
+    finally:
+        os.open = old_open  # and then put it back
+
+
+# Set up global resource manager (deliberately not state-saved)
+_manager = ResourceManager()
+def _initialize(g):
+    for name in dir(_manager):
+        if not name.startswith('_'):
+            g[name] = getattr(_manager, name)
+_initialize(globals())
+
+# Prepare the master working set and make the ``require()`` API available
+_declare_state('object', working_set = WorkingSet())
+try:
+    # Does the main program list any requirements?
+    from __main__ import __requires__
+except ImportError:
+    pass # No: just use the default working set based on sys.path
+else:
+    # Yes: ensure the requirements are met, by prefixing sys.path if necessary
+    try:
+        working_set.require(__requires__)
+    except VersionConflict:     # try it without defaults already on sys.path
+        working_set = WorkingSet([])    # by starting with an empty path
+        for dist in working_set.resolve(
+            parse_requirements(__requires__), Environment()
+        ):
+            working_set.add(dist)
+        for entry in sys.path:  # add any missing entries from sys.path
+            if entry not in working_set.entries:
+                working_set.add_entry(entry)
+        sys.path[:] = working_set.entries   # then copy back to sys.path
+
+require = working_set.require
+iter_entry_points = working_set.iter_entry_points
+add_activation_listener = working_set.subscribe
+run_script = working_set.run_script
+run_main = run_script   # backward compatibility
+# Activate all distributions already on sys.path, and ensure that
+# all distributions added to the working set in the future (e.g. by
+# calling ``require()``) will get activated as well.
+add_activation_listener(lambda dist: dist.activate())
+working_set.entries=[]; map(working_set.add_entry,sys.path) # match order
+
--- a/buildframework/helium/external/python/lib/common/site.py	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/external/python/lib/common/site.py	Thu Mar 04 15:10:37 2010 +0200
@@ -1,394 +1,82 @@
-# Duplicating setuptools' site.py...
-def __boot():
-    PYTHONPATH = []    
-    if sys.platform=='win32':
-        PYTHONPATH.append(os.path.join(sys.prefix, 'lib'))
-    if not (os.environ.get('PYTHONPATH') is None or (sys.platform=='win32' and not os.environ.get('PYTHONPATH'))):
-        PYTHONPATH.extend(os.environ.get('PYTHONPATH').split(os.pathsep))
-    pic = getattr(sys,'path_importer_cache',{})
-    stdpath = sys.path[len(PYTHONPATH):]
-    mydir = os.path.dirname(__file__)
-    known_paths = dict([(makepath(item)[1],1) for item in sys.path]) # 2.2 comp
-
-    oldpos = getattr(sys,'__egginsert',0)   # save old insertion position
-    sys.__egginsert = 0                     # and reset the current one
-
-    for item in PYTHONPATH:
-        addsitedir(item)
-        item_site_packages = os.path.join(item, 'site-packages')
-        if os.path.exists(item_site_packages):
-            addsitedir(item_site_packages)
-
-    sys.__egginsert += oldpos           # restore effective old position
-
-    d,nd = makepath(stdpath[0])
-    insert_at = None
-    new_path = []
-
-    for item in sys.path:
-        p,np = makepath(item)
-
-        if np==nd and insert_at is None:
-            # We've hit the first 'system' path entry, so added entries go here
-            insert_at = len(new_path)
-
-        if np in known_paths or insert_at is None:
-            new_path.append(item)
-        else:
-            # new path after the insert point, back-insert it
-            new_path.insert(insert_at, item)
-            insert_at += 1
-
-    sys.path[:] = new_path
-    
-import sys
-import os
-import __builtin__
-
-def makepath(*paths):
-    dir = os.path.abspath(os.path.join(*paths))
-    return dir, os.path.normcase(dir)
-
-def abs__file__():
-    """Set all module' __file__ attribute to an absolute path"""
-    for m in sys.modules.values():
-        try:
-            m.__file__ = os.path.abspath(m.__file__)
-        except AttributeError:
-            continue
-
-try:
-    set
-except NameError:
-    class set:
-        def __init__(self, args=()):
-            self.d = {}
-            for v in args:
-                self.d[v] = None
-        def __contains__(self, key):
-            return key in self.d
-        def add(self, key):
-            self.d[key] = None
-
-def removeduppaths():
-    """ Remove duplicate entries from sys.path along with making them
-    absolute"""
-    # This ensures that the initial path provided by the interpreter contains
-    # only absolute pathnames, even if we're running from the build directory.
-    L = []
-    known_paths = set()
-    for dir in sys.path:
-        # Filter out duplicate paths (on case-insensitive file systems also
-        # if they only differ in case); turn relative paths into absolute
-        # paths.
-        dir, dircase = makepath(dir)
-        if not dircase in known_paths:
-            L.append(dir)
-            known_paths.add(dircase)
-    sys.path[:] = L
-    return known_paths
-
-def _init_pathinfo():
-    """Return a set containing all existing directory entries from sys.path"""
-    d = set()
-    for dir in sys.path:
-        try:
-            if os.path.isdir(dir):
-                dir, dircase = makepath(dir)
-                d.add(dircase)
-        except TypeError:
-            continue
-    return d
-
-def addpackage(sitedir, name, known_paths, exclude_packages=()):
-    """Add a new path to known_paths by combining sitedir and 'name' or execute
-    sitedir if it starts with 'import'"""
-    import fnmatch
-    if known_paths is None:
-        _init_pathinfo()
-        reset = 1
-    else:
-        reset = 0
-    fullname = os.path.join(sitedir, name)
-    try:
-        f = open(fullname, "rU")
-    except IOError:
-        return
-    try:
-        for line in f:
-            if line.startswith("#"):
-                continue
-            found_exclude = False
-            for exclude in exclude_packages:
-                if exclude(line):
-                    found_exclude = True
-                    break
-            if found_exclude:
-                continue
-            if line.startswith("import"):
-                exec line
-                continue
-            line = line.rstrip()
-            dir, dircase = makepath(sitedir, line)
-            if not dircase in known_paths and os.path.exists(dir):
-                sys.path.append(dir)
-                known_paths.add(dircase)
-    finally:
-        f.close()
-    if reset:
-        known_paths = None
-    return known_paths
-
-def addsitedir(sitedir, known_paths=None, exclude_packages=()):
-    """Add 'sitedir' argument to sys.path if missing and handle .pth files in
-    'sitedir'"""
-    if known_paths is None:
-        known_paths = _init_pathinfo()
-        reset = 1
-    else:
-        reset = 0
-    sitedir, sitedircase = makepath(sitedir)
-    if not sitedircase in known_paths:
-        sys.path.append(sitedir)        # Add path component
-    try:
-        names = os.listdir(sitedir)
-    except os.error:
-        return
-    names.sort()
-    for name in names:
-        if name.endswith(os.extsep + "pth"):
-            addpackage(sitedir, name, known_paths,
-                       exclude_packages=exclude_packages)
-    if reset:
-        known_paths = None
-    return known_paths
-
-def addsitepackages(known_paths):
-    """Add site-packages (and possibly site-python) to sys.path"""
-    prefixes = [os.path.join(sys.prefix, "local"), sys.prefix]
-    if sys.exec_prefix != sys.prefix:
-        prefixes.append(os.path.join(sys.exec_prefix, "local"))
-    for prefix in prefixes:
-        if prefix:
-            if sys.platform in ('os2emx', 'riscos'):
-                sitedirs = [os.path.join(prefix, "Lib", "site-packages")]
-            elif os.sep == '/':
-                sitedirs = [os.path.join(prefix,
-                                         "lib",
-                                         "python" + sys.version[:3],
-                                         "site-packages"),
-                            os.path.join(prefix, "lib", "site-python")]
-                try:
-                    # sys.getobjects only available in --with-pydebug build
-                    # pylint: disable-msg=E1101
-                    sys.getobjects
-                    sitedirs.insert(0, os.path.join(sitedirs[0], 'debug'))
-                except AttributeError:
-                    pass
-            else:
-                sitedirs = [prefix, os.path.join(prefix, "lib", "site-packages")]
-            if sys.platform == 'darwin':
-                sitedirs.append( os.path.join('/opt/local', 'lib', 'python' + sys.version[:3], 'site-packages') )
-                # for framework builds *only* we add the standard Apple
-                # locations. Currently only per-user, but /Library and
-                # /Network/Library could be added too
-                if 'Python.framework' in prefix:
-                    home = os.environ.get('HOME')
-                    if home:
-                        sitedirs.append(
-                            os.path.join(home,
-                                         'Library',
-                                         'Python',
-                                         sys.version[:3],
-                                         'site-packages'))
-            for sitedir in sitedirs:
-                if os.path.isdir(sitedir):
-                    addsitedir(sitedir, known_paths,
-                               exclude_packages=[lambda line: 'setuptools' in line])
-    return None
-
-def setquit():
-    """Define new built-ins 'quit' and 'exit'.
-    These are simply strings that display a hint on how to exit.
-
-    """
-    if os.sep == ':':
-        exit = 'Use Cmd-Q to quit.'
-    elif os.sep == '\\':
-        exit = 'Use Ctrl-Z plus Return to exit.'
-    else:
-        exit = 'Use Ctrl-D (i.e. EOF) to exit.'
-    __builtin__.quit = __builtin__.exit = exit
-
-
-class _Printer(object):
-    """interactive prompt objects for printing the license text, a list of
-    contributors and the copyright notice."""
-
-    MAXLINES = 23
-
-    def __init__(self, name, data, files=(), dirs=()):
-        self.__name = name
-        self.__data = data
-        self.__files = files
-        self.__dirs = dirs
-        self.__lines = None
-
-    def __setup(self):
-        if self.__lines:
-            return
-        data = None
-        for dir in self.__dirs:
-            for filename in self.__files:
-                filename = os.path.join(dir, filename)
-                try:
-                    fp = file(filename, "rU")
-                    data = fp.read()
-                    fp.close()
-                    break
-                except IOError:
-                    pass
-            if data:
-                break
-        if not data:
-            data = self.__data
-        self.__lines = data.split('\n')
-        self.__linecnt = len(self.__lines)
-
-    def __repr__(self):
-        self.__setup()
-        if len(self.__lines) <= self.MAXLINES:
-            return "\n".join(self.__lines)
-        else:
-            return "Type %s() to see the full %s text" % ((self.__name,)*2)
-
-    def __call__(self):
-        self.__setup()
-        prompt = 'Hit Return for more, or q (and Return) to quit: '
-        lineno = 0
-        while 1:
-            try:
-                for i in range(lineno, lineno + self.MAXLINES):
-                    print self.__lines[i]
-            except IndexError:
-                break
-            else:
-                lineno += self.MAXLINES
-                key = None
-                while key is None:
-                    key = raw_input(prompt)
-                    if key not in ('', 'q'):
-                        key = None
-                if key == 'q':
-                    break
-
-def setcopyright():
-    """Set 'copyright' and 'credits' in __builtin__"""
-    __builtin__.copyright = _Printer("copyright", sys.copyright)
-    if sys.platform[:4] == 'java':
-        __builtin__.credits = _Printer(
-            "credits",
-            "Jython is maintained by the Jython developers (www.jython.org).")
-    else:
-        __builtin__.credits = _Printer("credits", """\
-    Thanks to CWI, CNRI, BeOpen.com, Zope Corporation and a cast of thousands
-    for supporting Python development.  See www.python.org for more information.""")
-    here = os.path.dirname(os.__file__)
-    __builtin__.license = _Printer(
-        "license", "See http://www.python.org/%.3s/license.html" % sys.version,
-        ["LICENSE.txt", "LICENSE"],
-        [os.path.join(here, os.pardir), here, os.curdir])
-
-
-class _Helper(object):
-    """Define the built-in 'help'.
-    This is a wrapper around pydoc.help (with a twist).
-
-    """
-
-    def __repr__(self):
-        return "Type help() for interactive help, " \
-               "or help(object) for help about object."
-    def __call__(self, *args, **kwds):
-        import pydoc
-        return pydoc.help(*args, **kwds)
-
-def sethelper():
-    __builtin__.help = _Helper()
-
-def aliasmbcs():
-    """On Windows, some default encodings are not provided by Python,
-    while they are always available as "mbcs" in each locale. Make
-    them usable by aliasing to "mbcs" in such a case."""
-    if sys.platform == 'win32':
-        import locale, codecs
-        enc = locale.getdefaultlocale()[1]
-        if enc.startswith('cp'):            # "cp***" ?
-            try:
-                codecs.lookup(enc)
-            except LookupError:
-                import encodings
-                encodings._cache[enc] = encodings._unknown
-                encodings.aliases.aliases[enc] = 'mbcs'
-
-def setencoding():
-    """Set the string encoding used by the Unicode implementation.  The
-    default is 'ascii', but if you're willing to experiment, you can
-    change this."""
-    encoding = "ascii" # Default value set by _PyUnicode_Init()
-    if 0:
-        # Enable to support locale aware default string encodings.
-        import locale
-        loc = locale.getdefaultlocale()
-        if loc[1]:
-            encoding = loc[1]
-    if 0:
-        # Enable to switch off string to Unicode coercion and implicit
-        # Unicode to string conversion.
-        encoding = "undefined"
-    if encoding != "ascii":
-        # On Non-Unicode builds this will raise an AttributeError...
-        sys.setdefaultencoding(encoding) # Needs Python Unicode build !
-
-
-def execsitecustomize():
-    """Run custom site specific code, if available."""
-    try:
-        import sitecustomize
-    except ImportError:
-        pass
-
-def fixup_setuptools():
-    """Make sure our setuptools monkeypatch is in place"""
-    for i in range(len(sys.path)):
-        if sys.path[i].find('setuptools') != -1:
-            path = sys.path[i]
-            del sys.path[i]
-            sys.path.append(path)
-
-def main():
-    abs__file__()
-    paths_in_sys = removeduppaths()
-    if include_site_packages:
-        paths_in_sys = addsitepackages(paths_in_sys)
-    setquit()
-    setcopyright()
-    sethelper()
-    aliasmbcs()
-    setencoding()
-    execsitecustomize()
-    # Remove sys.setdefaultencoding() so that users cannot change the
-    # encoding after initialization.  The test for presence is needed when
-    # this module is run as a script, because this code is executed twice.
-    if hasattr(sys, "setdefaultencoding"):
-        del sys.setdefaultencoding
-    __boot()
-    fixup_setuptools()
-    
-
-
-include_site_packages = False
-
-
-
-main()
+def __boot():
+    import sys, imp, os, os.path   
+    PYTHONPATH = os.environ.get('PYTHONPATH')
+    if PYTHONPATH is None or (sys.platform=='win32' and not PYTHONPATH):
+        PYTHONPATH = []
+    else:
+        PYTHONPATH = PYTHONPATH.split(os.pathsep)
+
+    pic = getattr(sys,'path_importer_cache',{})
+    stdpath = sys.path[len(PYTHONPATH):]
+    mydir = os.path.dirname(__file__)
+    #print "searching",stdpath,sys.path
+
+    for item in stdpath:
+        if item==mydir or not item:
+            continue    # skip if current dir. on Windows, or my own directory
+        importer = pic.get(item)
+        if importer is not None:
+            loader = importer.find_module('site')
+            if loader is not None:
+                # This should actually reload the current module
+                loader.load_module('site')
+                break
+        else:
+            try:
+                stream, path, descr = imp.find_module('site',[item])
+            except ImportError:
+                continue
+            if stream is None:
+                continue
+            try:
+                # This should actually reload the current module
+                imp.load_module('site',stream,path,descr)
+            finally:
+                stream.close()
+            break
+    else:
+        raise ImportError("Couldn't find the real 'site' module")
+
+    #print "loaded", __file__
+
+    known_paths = dict([(makepath(item)[1],1) for item in sys.path]) # 2.2 comp
+
+    oldpos = getattr(sys,'__egginsert',0)   # save old insertion position
+    sys.__egginsert = 0                     # and reset the current one
+
+    for item in PYTHONPATH:
+        addsitedir(item)
+
+    sys.__egginsert += oldpos           # restore effective old position
+    
+    d,nd = makepath(stdpath[0])
+    insert_at = None
+    new_path = []
+
+    for item in sys.path:
+        p,np = makepath(item)
+
+        if np==nd and insert_at is None:
+            # We've hit the first 'system' path entry, so added entries go here
+            insert_at = len(new_path)
+
+        if np in known_paths or insert_at is None:
+            new_path.append(item)
+        else:
+            # new path after the insert point, back-insert it
+            new_path.insert(insert_at, item)
+            insert_at += 1
+            
+    sys.path[:] = new_path
+
+if __name__=='site':    
+    __boot()
+    del __boot
+    
+
+
+
+
+
+
+
--- a/buildframework/helium/external/python/lib/linux/site.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,394 +0,0 @@
-# Duplicating setuptools' site.py...
-def __boot():
-    PYTHONPATH = []    
-    if sys.platform=='win32':
-        PYTHONPATH.append(os.path.join(sys.prefix, 'lib'))
-    if not (os.environ.get('PYTHONPATH') is None or (sys.platform=='win32' and not os.environ.get('PYTHONPATH'))):
-        PYTHONPATH.extend(os.environ.get('PYTHONPATH').split(os.pathsep))
-    pic = getattr(sys,'path_importer_cache',{})
-    stdpath = sys.path[len(PYTHONPATH):]
-    mydir = os.path.dirname(__file__)
-    known_paths = dict([(makepath(item)[1],1) for item in sys.path]) # 2.2 comp
-
-    oldpos = getattr(sys,'__egginsert',0)   # save old insertion position
-    sys.__egginsert = 0                     # and reset the current one
-
-    for item in PYTHONPATH:
-        addsitedir(item)
-        item_site_packages = os.path.join(item, 'site-packages')
-        if os.path.exists(item_site_packages):
-            addsitedir(item_site_packages)
-
-    sys.__egginsert += oldpos           # restore effective old position
-
-    d,nd = makepath(stdpath[0])
-    insert_at = None
-    new_path = []
-
-    for item in sys.path:
-        p,np = makepath(item)
-
-        if np==nd and insert_at is None:
-            # We've hit the first 'system' path entry, so added entries go here
-            insert_at = len(new_path)
-
-        if np in known_paths or insert_at is None:
-            new_path.append(item)
-        else:
-            # new path after the insert point, back-insert it
-            new_path.insert(insert_at, item)
-            insert_at += 1
-
-    sys.path[:] = new_path
-    
-import sys
-import os
-import __builtin__
-
-def makepath(*paths):
-    dir = os.path.abspath(os.path.join(*paths))
-    return dir, os.path.normcase(dir)
-
-def abs__file__():
-    """Set all module' __file__ attribute to an absolute path"""
-    for m in sys.modules.values():
-        try:
-            m.__file__ = os.path.abspath(m.__file__)
-        except AttributeError:
-            continue
-
-try:
-    set
-except NameError:
-    class set:
-        def __init__(self, args=()):
-            self.d = {}
-            for v in args:
-                self.d[v] = None
-        def __contains__(self, key):
-            return key in self.d
-        def add(self, key):
-            self.d[key] = None
-
-def removeduppaths():
-    """ Remove duplicate entries from sys.path along with making them
-    absolute"""
-    # This ensures that the initial path provided by the interpreter contains
-    # only absolute pathnames, even if we're running from the build directory.
-    L = []
-    known_paths = set()
-    for dir in sys.path:
-        # Filter out duplicate paths (on case-insensitive file systems also
-        # if they only differ in case); turn relative paths into absolute
-        # paths.
-        dir, dircase = makepath(dir)
-        if not dircase in known_paths:
-            L.append(dir)
-            known_paths.add(dircase)
-    sys.path[:] = L
-    return known_paths
-
-def _init_pathinfo():
-    """Return a set containing all existing directory entries from sys.path"""
-    d = set()
-    for dir in sys.path:
-        try:
-            if os.path.isdir(dir):
-                dir, dircase = makepath(dir)
-                d.add(dircase)
-        except TypeError:
-            continue
-    return d
-
-def addpackage(sitedir, name, known_paths, exclude_packages=()):
-    """Add a new path to known_paths by combining sitedir and 'name' or execute
-    sitedir if it starts with 'import'"""
-    import fnmatch
-    if known_paths is None:
-        _init_pathinfo()
-        reset = 1
-    else:
-        reset = 0
-    fullname = os.path.join(sitedir, name)
-    try:
-        f = open(fullname, "rU")
-    except IOError:
-        return
-    try:
-        for line in f:
-            if line.startswith("#"):
-                continue
-            found_exclude = False
-            for exclude in exclude_packages:
-                if exclude(line):
-                    found_exclude = True
-                    break
-            if found_exclude:
-                continue
-            if line.startswith("import"):
-                exec line
-                continue
-            line = line.rstrip()
-            dir, dircase = makepath(sitedir, line)
-            if not dircase in known_paths and os.path.exists(dir):
-                sys.path.append(dir)
-                known_paths.add(dircase)
-    finally:
-        f.close()
-    if reset:
-        known_paths = None
-    return known_paths
-
-def addsitedir(sitedir, known_paths=None, exclude_packages=()):
-    """Add 'sitedir' argument to sys.path if missing and handle .pth files in
-    'sitedir'"""
-    if known_paths is None:
-        known_paths = _init_pathinfo()
-        reset = 1
-    else:
-        reset = 0
-    sitedir, sitedircase = makepath(sitedir)
-    if not sitedircase in known_paths:
-        sys.path.append(sitedir)        # Add path component
-    try:
-        names = os.listdir(sitedir)
-    except os.error:
-        return
-    names.sort()
-    for name in names:
-        if name.endswith(os.extsep + "pth"):
-            addpackage(sitedir, name, known_paths,
-                       exclude_packages=exclude_packages)
-    if reset:
-        known_paths = None
-    return known_paths
-
-def addsitepackages(known_paths):
-    """Add site-packages (and possibly site-python) to sys.path"""
-    prefixes = [os.path.join(sys.prefix, "local"), sys.prefix]
-    if sys.exec_prefix != sys.prefix:
-        prefixes.append(os.path.join(sys.exec_prefix, "local"))
-    for prefix in prefixes:
-        if prefix:
-            if sys.platform in ('os2emx', 'riscos'):
-                sitedirs = [os.path.join(prefix, "Lib", "site-packages")]
-            elif os.sep == '/':
-                sitedirs = [os.path.join(prefix,
-                                         "lib",
-                                         "python" + sys.version[:3],
-                                         "site-packages"),
-                            os.path.join(prefix, "lib", "site-python")]
-                try:
-                    # sys.getobjects only available in --with-pydebug build
-                    # pylint: disable-msg=E1101
-                    sys.getobjects
-                    sitedirs.insert(0, os.path.join(sitedirs[0], 'debug'))
-                except AttributeError:
-                    pass
-            else:
-                sitedirs = [prefix, os.path.join(prefix, "lib", "site-packages")]
-            if sys.platform == 'darwin':
-                sitedirs.append( os.path.join('/opt/local', 'lib', 'python' + sys.version[:3], 'site-packages') )
-                # for framework builds *only* we add the standard Apple
-                # locations. Currently only per-user, but /Library and
-                # /Network/Library could be added too
-                if 'Python.framework' in prefix:
-                    home = os.environ.get('HOME')
-                    if home:
-                        sitedirs.append(
-                            os.path.join(home,
-                                         'Library',
-                                         'Python',
-                                         sys.version[:3],
-                                         'site-packages'))
-            for sitedir in sitedirs:
-                if os.path.isdir(sitedir):
-                    addsitedir(sitedir, known_paths,
-                               exclude_packages=[lambda line: 'setuptools' in line])
-    return None
-
-def setquit():
-    """Define new built-ins 'quit' and 'exit'.
-    These are simply strings that display a hint on how to exit.
-
-    """
-    if os.sep == ':':
-        exit = 'Use Cmd-Q to quit.'
-    elif os.sep == '\\':
-        exit = 'Use Ctrl-Z plus Return to exit.'
-    else:
-        exit = 'Use Ctrl-D (i.e. EOF) to exit.'
-    __builtin__.quit = __builtin__.exit = exit
-
-
-class _Printer(object):
-    """interactive prompt objects for printing the license text, a list of
-    contributors and the copyright notice."""
-
-    MAXLINES = 23
-
-    def __init__(self, name, data, files=(), dirs=()):
-        self.__name = name
-        self.__data = data
-        self.__files = files
-        self.__dirs = dirs
-        self.__lines = None
-
-    def __setup(self):
-        if self.__lines:
-            return
-        data = None
-        for dir in self.__dirs:
-            for filename in self.__files:
-                filename = os.path.join(dir, filename)
-                try:
-                    fp = file(filename, "rU")
-                    data = fp.read()
-                    fp.close()
-                    break
-                except IOError:
-                    pass
-            if data:
-                break
-        if not data:
-            data = self.__data
-        self.__lines = data.split('\n')
-        self.__linecnt = len(self.__lines)
-
-    def __repr__(self):
-        self.__setup()
-        if len(self.__lines) <= self.MAXLINES:
-            return "\n".join(self.__lines)
-        else:
-            return "Type %s() to see the full %s text" % ((self.__name,)*2)
-
-    def __call__(self):
-        self.__setup()
-        prompt = 'Hit Return for more, or q (and Return) to quit: '
-        lineno = 0
-        while 1:
-            try:
-                for i in range(lineno, lineno + self.MAXLINES):
-                    print self.__lines[i]
-            except IndexError:
-                break
-            else:
-                lineno += self.MAXLINES
-                key = None
-                while key is None:
-                    key = raw_input(prompt)
-                    if key not in ('', 'q'):
-                        key = None
-                if key == 'q':
-                    break
-
-def setcopyright():
-    """Set 'copyright' and 'credits' in __builtin__"""
-    __builtin__.copyright = _Printer("copyright", sys.copyright)
-    if sys.platform[:4] == 'java':
-        __builtin__.credits = _Printer(
-            "credits",
-            "Jython is maintained by the Jython developers (www.jython.org).")
-    else:
-        __builtin__.credits = _Printer("credits", """\
-    Thanks to CWI, CNRI, BeOpen.com, Zope Corporation and a cast of thousands
-    for supporting Python development.  See www.python.org for more information.""")
-    here = os.path.dirname(os.__file__)
-    __builtin__.license = _Printer(
-        "license", "See http://www.python.org/%.3s/license.html" % sys.version,
-        ["LICENSE.txt", "LICENSE"],
-        [os.path.join(here, os.pardir), here, os.curdir])
-
-
-class _Helper(object):
-    """Define the built-in 'help'.
-    This is a wrapper around pydoc.help (with a twist).
-
-    """
-
-    def __repr__(self):
-        return "Type help() for interactive help, " \
-               "or help(object) for help about object."
-    def __call__(self, *args, **kwds):
-        import pydoc
-        return pydoc.help(*args, **kwds)
-
-def sethelper():
-    __builtin__.help = _Helper()
-
-def aliasmbcs():
-    """On Windows, some default encodings are not provided by Python,
-    while they are always available as "mbcs" in each locale. Make
-    them usable by aliasing to "mbcs" in such a case."""
-    if sys.platform == 'win32':
-        import locale, codecs
-        enc = locale.getdefaultlocale()[1]
-        if enc.startswith('cp'):            # "cp***" ?
-            try:
-                codecs.lookup(enc)
-            except LookupError:
-                import encodings
-                encodings._cache[enc] = encodings._unknown
-                encodings.aliases.aliases[enc] = 'mbcs'
-
-def setencoding():
-    """Set the string encoding used by the Unicode implementation.  The
-    default is 'ascii', but if you're willing to experiment, you can
-    change this."""
-    encoding = "ascii" # Default value set by _PyUnicode_Init()
-    if 0:
-        # Enable to support locale aware default string encodings.
-        import locale
-        loc = locale.getdefaultlocale()
-        if loc[1]:
-            encoding = loc[1]
-    if 0:
-        # Enable to switch off string to Unicode coercion and implicit
-        # Unicode to string conversion.
-        encoding = "undefined"
-    if encoding != "ascii":
-        # On Non-Unicode builds this will raise an AttributeError...
-        sys.setdefaultencoding(encoding) # Needs Python Unicode build !
-
-
-def execsitecustomize():
-    """Run custom site specific code, if available."""
-    try:
-        import sitecustomize
-    except ImportError:
-        pass
-
-def fixup_setuptools():
-    """Make sure our setuptools monkeypatch is in place"""
-    for i in range(len(sys.path)):
-        if sys.path[i].find('setuptools') != -1:
-            path = sys.path[i]
-            del sys.path[i]
-            sys.path.append(path)
-
-def main():
-    abs__file__()
-    paths_in_sys = removeduppaths()
-    if include_site_packages:
-        paths_in_sys = addsitepackages(paths_in_sys)
-    setquit()
-    setcopyright()
-    sethelper()
-    aliasmbcs()
-    setencoding()
-    execsitecustomize()
-    # Remove sys.setdefaultencoding() so that users cannot change the
-    # encoding after initialization.  The test for presence is needed when
-    # this module is run as a script, because this code is executed twice.
-    if hasattr(sys, "setdefaultencoding"):
-        del sys.setdefaultencoding
-    __boot()
-    fixup_setuptools()
-    
-
-
-include_site_packages = False
-
-
-
-main()
--- a/buildframework/helium/helium.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/helium.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -27,31 +27,29 @@
     
     <import file="build-jar.ant.xml"/>
     
-    <!-- Check the Ant version is what we expect. -->
-    <property name="required.ant.version" value="1.7.0"/>
-    <fail message="Incorrect version of Ant found. Please check you have Ant ${required.ant.version}.">
-        <condition>
-            <and>
-                <os family="windows"/>
-                <not>
-                    <antversion exactly="${required.ant.version}"/>
-                </not>
-            </and>
-        </condition>
-    </fail>
-    
-    
     <!-- Load the current Helium version. -->
+    <!-- @property helium.version
+    @type string
+    @scope private
+    -->
     <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">
@@ -61,12 +59,19 @@
      
     <!-- 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>
@@ -74,12 +79,16 @@
     <!-- If build.drive not define then search the next free drive -->
     <if>
         <not>
-            <isset property="build.drive"/>        
+            <isset property="build.drive"/>
         </not>    
         <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 value="${helium.dir}/tools/common/python/scripts/searchnextdrive.py"/>               
+                <arg line="-m searchnextdrive"/>               
             </exec>
             <if>
                 <equals arg1="${build.drive}" arg2="Error: No free drive!"/>
@@ -97,9 +106,15 @@
             <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>
@@ -123,6 +138,10 @@
                 </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"/>
@@ -144,6 +163,10 @@
                     <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">
@@ -160,6 +183,10 @@
                 <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">
@@ -173,6 +200,10 @@
 
     <!-- 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>
@@ -180,109 +211,319 @@
             <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>
-    <property name="database.file" location="${helium.build.dir}/database.xml"/>
+    <!-- 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
+    -->
     <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"/>
-    <property name="prep.log.dir" location="${build.log.dir}/prep"/>
-    <property name="compile.log.dir" location="${build.log.dir}/compile"/>
-    <property name="test.log.dir" location="${build.log.dir}/test"/>
-    <property name="archive.log.dir" location="${build.log.dir}/archive"/>
-    <property name="roms.log.dir" location="${build.log.dir}/roms"/>       
-    <property name="post.log.dir" location="${build.log.dir}/post"/>
-    <property name="localisation.log.dir" location="${build.log.dir}/localisation"/>    
+    <!-- This is where the signal related files are stored.
+    @type string
+    @scope private
+    -->
     <property name="build.signal.status.dir" location="${build.log.dir}/signals"/>
-    <property name="build.status.email.template" location="${helium.dir}/tools/common/templates/log/email_status.html.ftl" />
-    <property name="metadata.dbfile" location="${build.log.dir}/${build.id}_metadata.sqlite"/>
+    <!-- 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>
+    
+    <!-- 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"/>
+    <!-- failonerror attribute for exec
+    @type boolean
+    @scope private
+    -->
     <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"/>
-    <property name="build.logging.start.stage" value="check-env-prep"/>
-    <property name="build.logging.key.stages" value="prep,build-ebs-main,postbuild,flashfiles,java-certification-rom,zip-main,publish-generic,variants-core,variants-elaf,variants-china,variants-thai,variants-japan,variants,mobilecrash-prep,localise-tutorial-content,hdd-images,zip-flashfiles,zip-localisation,data-packaging-prep"/>
+    <!-- Defines name of the log file.
+    @type string
+    @scope private
+    -->
     <property name="build.log" value="${build.log.dir}/${build.id}_main.ant.log"/>
-    <property name="overlays.log.file" location="${build.log.dir}/${build.id}_overlays.xml"/>
+    <!-- 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-->
-    <property name="ec.scripts.dir" location="${helium.dir}/external/symbiantools/ectools/"/>
+    <!-- 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"/>
-    <property name="ec.tools.dir" location="${helium.dir}/external/symbiantools/ectools/tools/"/>
+    <!-- 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" />
-    <property name="roms.spec.name" value=""/>
+    <!-- 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" />
-    <property name="zip.uda_roms.log.file" location="${build.log.dir}/${build.id}_uda_roms_zip.log" />
-    <property name="rombuild.makefile.name" value="image_conf_helium.mk" />
-    <property name="loc.temp.dir" location="${temp.build.dir}/locfiles"/>
-    <property name="loc.output.dir" location="${build.output.dir}/build_area/localised"/>
-    <property name="loc.output.filename" location="${build.id}_locfiles.zip"/>
+    <!-- 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>
@@ -293,8 +534,6 @@
     </if>
 
 
-
-
     <!-- Default number of threads is 2 * NUMBER_OF_PROCESSORS, but this can be overridden by defining the
     property manually. -->
     <if>
@@ -308,11 +547,29 @@
                     <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
+    -->
      
 
     <!-- Import basic targets.
@@ -326,12 +583,13 @@
     <import file="tools/common/testing.ant.xml"/>
     <import file="tools/compile/compile.ant.xml"/>
     <import file="tools/common/docs.ant.xml"/>
+    <import file="tools/common/helium_docs.ant.xml"/>
     <import file="tools/localisation/localisation.ant.xml"/>
+    <import file="tools/logging/logging.ant.xml"/>
     <import file="tools/publish/publish.ant.xml"/>
     <import file="tools/metadata/metadata.ant.xml"/>
     <import file="tools/release/release.ant.xml"/>
     <import file="tools/rombuild/rombuild.ant.xml"/>
-    <import file="tools/uda/uda.ant.xml"/>
     <import file="tools/quality/quality.ant.xml"/>
     <import file="tools/relnotes/relnotes.ant.xml"/>
     <import file="tools/integration/integration.ant.xml"/>
@@ -343,18 +601,6 @@
     <import file="config/stages_config_default.ant.xml"/>
     <import file="config/metadata_filter_config_default.ant.xml"/>
 
-    <!-- Checking required properties from datamodel if "validate.properties.at.startup=yes" 
-        
-    Comment this out until it is done more correctly.-->
-    <!--<if>
-        <and>
-            <isset property="validate.properties.at.startup"/>
-            <equals arg1="${validate.properties.at.startup}" arg2="yes"/>
-        </and>
-        <then>
-            <runtarget target="validate-at-startup"/>
-        </then>
-    </if>-->
     
     <!-- Top level build execution targets.
         
@@ -363,7 +609,7 @@
     
     <!-- Top-level target for platform builds. -->
     <target name="platform-build"
-            depends="prep,prebuild,compile-main,postbuild,ee-roms,zip-ee,publish-generic,
+            depends="prep,prebuild,compile-main,postbuild,build-roms,zip-ee,publish-generic,
                      report,final"
             description="The default platform build"/>
     
@@ -376,6 +622,6 @@
 
     <!-- Top-level target for IDO builds. -->
     <target name="ido-build"
-            depends="diamonds,compile-clean,compile-main,ee-roms"
+            depends="diamonds,compile-clean,compile-main,build-roms"
             description="IDO build"/>
 </project>
--- a/buildframework/helium/helium_preinclude.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/helium_preinclude.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -34,4 +34,5 @@
     <taskdef resource="com/nokia/helium/quality/ant/antlib.xml" uri="http://www.nokia.com/helium"/>
     <taskdef resource="com/nokia/helium/imaker/ant/antlib.xml" uri="http://www.nokia.com/helium" />
     <taskdef resource="com/nokia/helium/sbs/ant/antlib.xml" uri="http://www.nokia.com/helium" />
+    <taskdef resource="com/nokia/helium/logger/ant/antlib.xml" uri="http://www.nokia.com/helium" />
 </project>
\ No newline at end of file
--- a/buildframework/helium/hlm	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/hlm	Thu Mar 04 15:10:37 2010 +0200
@@ -25,27 +25,13 @@
 fi
 
 export LANG="en_US.UTF-8"
-export ANT_ARGS="-lib $HELIUM_HOME/extensions/nokia/external/antlibs -lib $HELIUM_HOME/extensions/nokia/external/helium-nokia-antlib/bin -lib $HELIUM_HOME/external/helium-antlib/bin -lib $HELIUM_HOME/external/antlibs -lib $HELIUM_HOME/tools/common/java/lib -logger com.nokia.ant.HeliumLogger -Dant.executor.class=com.nokia.helium.core.ant.HeliumExecutor -listener com.nokia.helium.diamonds.ant.HeliumListener -listener com.nokia.helium.logger.ant.listener.StatusAndLogListener"
+export ANT_ARGS="-lib $HELIUM_HOME/extensions/nokia/external/antlibs -lib $HELIUM_HOME/extensions/nokia/external/helium-nokia-antlib/bin -lib $HELIUM_HOME/external/helium-antlib/bin -lib $HELIUM_HOME/external/antlibs -lib $HELIUM_HOME/tools/common/java/lib -logger com.nokia.ant.HeliumLogger -Dant.executor.class=com.nokia.helium.core.ant.HeliumExecutor -listener com.nokia.helium.diamonds.ant.HeliumListener -listener com.nokia.helium.logger.ant.listener.StatusAndLogListener -listener com.nokia.helium.core.ant.listener.TargetTimesLogGeneratorListener"
 
 PYTHON_VERSION=`python -c "import sys; print sys.version[:3]"`
 PYTHON_VERSION2=$PYTHON_VERSION$HOSTTYPE
 PYTHONLIB=$HELIUM_HOME/external/python/lib/linux/$PYTHON_VERSION2
 
-TEMP_PYTHONPATH="$PYTHONLIB:$HELIUM_HOME/external/python/lib/common:$HELIUM_HOME/tools/common/python/lib:$HELIUM_HOME/tools/common/python/scripts:$HELIUM_HOME/extensions/nokia/external/python/lib/2.5:$HELIUM_HOME/extensions/nokia/tools/common/python/lib"
-
-if [ ! $PYTHONPATH ] ; then
-    export PYTHONPATH=$TEMP_PYTHONPATH
-else
-    export PYTHONPATH="$PYTHONPATH:$TEMP_PYTHONPATH"
-fi
-
-TEMP_JYTHONPATH="$HELIUM_HOME/external/python/lib/2.5/jython-2.5-py2.5.egg:$PYTHONPATH"
-
-if [ ! $JYTHONPATH ] ; then
-    export JYTHONPATH=$TEMP_JYTHONPATH
-else
-    export JYTHONPATH="$JYTHONPATH:$TEMP_JYTHONPATH"
-fi
+TEMP_PYTHONPATH="$PYTHONLIB:$HELIUM_HOME/external/python/lib/common:$HELIUM_HOME/external/helium-antlib/python/pythoncore/lib:$HELIUM_HOME/tools/common/python/scripts:$HELIUM_HOME/extensions/nokia/external/python/lib/2.5:$HELIUM_HOME/extensions/nokia/tools/common/python/lib:$HELIUM_HOME/extensions/nokia/external/helium-nokia-antlib/python:$HELIUM_HOME/extensions/nokia/external/helium-nokia-antlib/python/pythonnokia/lib"
 
 TEMP_PERL5LIB="$HELIUM_HOME/tools/common/packages"
 if [ ! $PERL5LIB ] ; then
@@ -67,9 +53,11 @@
 
 if [ ! -e "$PYTHONLIB" ] ; then
     mkdir $PYTHONLIB
-    cp $HELIUM_HOME/external/python/lib/linux/site.py $PYTHONLIB
+    cp $HELIUM_HOME/external/python/lib/common/site.py $PYTHONLIB
 fi
 
+export PYTHONPATH=$HELIUM_HOME/external/python/lib/common/setuptools-0.6c5-py2.5.egg
+
 if [ ! -e "$PYTHONLIB/4Suite_XML-1.0.2.egg" ] ; then
     cp $HELIUM_HOME/external/python/lib/linux/easy-install.pth $PYTHONLIB
     tar xvfz $HELIUM_HOME/external/python/lib/linux/4Suite-XML-1.0.2.tar.gz -C $PYTHONLIB > /dev/null
@@ -96,6 +84,20 @@
 
 cd $CWD
 
+if [ ! $PYTHONPATH ] ; then
+    export PYTHONPATH=$TEMP_PYTHONPATH
+else
+    export PYTHONPATH="$PYTHONPATH:$TEMP_PYTHONPATH"
+fi
+
+TEMP_JYTHONPATH="$HELIUM_HOME/external/python/lib/2.5/jython-2.5-py2.5.egg:$PYTHONPATH"
+
+if [ ! $JYTHONPATH ] ; then
+    export JYTHONPATH=$TEMP_JYTHONPATH
+else
+    export JYTHONPATH="$JYTHONPATH:$TEMP_JYTHONPATH"
+fi
+
 export USERNAME=$USER
 export SYMSEE_VERSION="not_in_use"
 export PID=$$
@@ -113,4 +115,15 @@
 if [ ! $EPOCROOT ]; then
     export EPOCROOT="/"
 fi 
-exec ant -Dpython.cachedir=$PYTHON_CACHEDIR -Dhelium.dir=$HELIUM_HOME -Dpython.path=$PYTHONPATH -Dcache.dir=$HELIUM_CACHE_DIR $* 
+
+if [ ! -f "$HELIUM_HOME/external/helium-antlib/bin/helium-checktools.jar" ] ; then
+    echo helium-checktools.jar not found
+else 
+    java -cp "$HELIUM_HOME/external/helium-antlib/bin/helium-checktools.jar" com.nokia.helium.checktools.HeliumToolsCheckerMain -config "$HELIUM_HOME/config/helium.basic.tools.config"
+
+    if [ $? -eq 0 ] ; then
+      exec ant -Dpython.cachedir=$PYTHON_CACHEDIR -Dhelium.dir=$HELIUM_HOME -Dpython.path=$PYTHONPATH -Dcache.dir=$HELIUM_CACHE_DIR $*
+    else
+        echo Build aborted with error
+    fi    
+fi   
--- a/buildframework/helium/hlm-jar.bat	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/hlm-jar.bat	Thu Mar 04 15:10:37 2010 +0200
@@ -29,9 +29,8 @@
 
 set HLM_DISABLE_INTERNAL_DATA=1
 
-set JEP_HOME=%HELIUM_HOME%\external\jep_1.6_2.5
 
-set ANT_ARGS=-lib "%HELIUM_HOME%\external\antlibs" -lib "%JEP_HOME%" -logger org.apache.tools.ant.DefaultLogger
+set ANT_ARGS=-lib "%HELIUM_HOME%\external\antlibs" -logger org.apache.tools.ant.DefaultLogger
 
 hlm -f build-jar.ant.xml jar
 
--- a/buildframework/helium/hlm.bat	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/hlm.bat	Thu Mar 04 15:10:37 2010 +0200
@@ -44,8 +44,6 @@
 ) ELSE  set TESTED_JAVA=%JAVA_6_HOME%
 if exist "%TESTED_JAVA%" (set JAVA_HOME=%TESTED_JAVA%)
 if not exist "%JAVA_HOME%" ( echo *** Java cannot be found & goto :errorstop )
-REM set JEP_HOME=%HELIUM_HOME%\external\jep_1.6_2.5
-REM set PATH=%PATH%;%JEP_HOME%
 
 REM Needed by python logging
 set PID=1
@@ -66,12 +64,18 @@
 set DIAMONDS_ANT_ARGS= -listener com.nokia.helium.diamonds.ant.HeliumListener
 
 if not defined HLM_DISABLE_INTERNAL_DATA (
-set INTERNAL_DATA_ANT_ARGS= -listener com.nokia.ant.listener.internaldata.Listener
+set INTERNAL_DATA_ANT_ARGS= -listener com.nokia.helium.internaldata.ant.listener.Listener
 echo Internal data listening enabled.
 )
 
+
+REM Configure listener to generate target times csv file.
+REM **Note: Comment below line if you want to skip the target times csv file generation
+set TARGET_TIMES_GENERATOR= -listener com.nokia.helium.core.ant.listener.TargetTimesLogGeneratorListener
+
+
 if not defined ANT_ARGS (
-set ANT_ARGS=-lib "%HELIUM_HOME%\extensions\nokia\external\antlibs" -lib "%HELIUM_HOME%\extensions\nokia\external\helium-nokia-antlib\bin" -lib "%HELIUM_HOME%\external\helium-antlib\bin" -lib "%HELIUM_HOME%\tools\common\java\lib" -lib "%HELIUM_HOME%\external\antlibs" -logger com.nokia.ant.HeliumLogger  %DIAMONDS_ANT_ARGS% %INTERNAL_DATA_ANT_ARGS% %SIGNALING_ANT_ARGS% %LOGGING_ANT_ARGS%
+set ANT_ARGS=-lib "%HELIUM_HOME%\extensions\nokia\external\antlibs" -lib "%HELIUM_HOME%\extensions\nokia\external\helium-nokia-antlib\bin" -lib "%HELIUM_HOME%\external\helium-antlib\bin" -lib "%HELIUM_HOME%\tools\common\java\lib" -lib "%HELIUM_HOME%\external\antlibs" -logger com.nokia.ant.HeliumLogger  %DIAMONDS_ANT_ARGS% %INTERNAL_DATA_ANT_ARGS% %SIGNALING_ANT_ARGS% %LOGGING_ANT_ARGS% %TARGET_TIMES_GENERATOR%
 )
 
 REM Shall we impose the EPOCROOT?
@@ -85,19 +89,15 @@
 set PATH=%PATH%;%HELIUM_HOME%\extensions\nokia\external\unxutils
 set PATH=%PATH%;%HELIUM_HOME%\extensions\nokia\external\Subversion\bin
 set PATH=%PATH%;%HELIUM_HOME%\extensions\nokia\external\graphviz\bin
-set PATH=%PATH%;\tools
-set PATH=%PATH%;\tools\ncp_tools
 
 for /f "tokens=2" %%a in ('"python -V 2>&1"') do (set pythonversion=%%a)
 for /f "tokens=1-2 delims=." %%a in ("%pythonversion%") do (set pythonversion=%%a.%%b)
 
-set PYTHONPATH=%PYTHONPATH%;%HELIUM_HOME%\external\python\lib\%pythonversion%;%HELIUM_HOME%\external\python\lib\common;%HELIUM_HOME%\tools\common\python\lib;%HELIUM_HOME%\tools\common\python\scripts
+set PYTHONPATH=%PYTHONPATH%;%HELIUM_HOME%\external\python\lib\%pythonversion%;%HELIUM_HOME%\external\python\lib\common;%HELIUM_HOME%\external\helium-antlib\python\pythoncore\lib;%HELIUM_HOME%\tools\common\python\scripts
 set PYTHONPATH=%PYTHONPATH%;%HELIUM_HOME%\extensions\nokia\external\python\lib\%pythonversion%
-set PYTHONPATH=%PYTHONPATH%;%HELIUM_HOME%\extensions\nokia\tools\common\python\lib;%SBS_HOME%\python
+set PYTHONPATH=%PYTHONPATH%;%HELIUM_HOME%\extensions\nokia\tools\common\python\lib;%HELIUM_HOME%\extensions\nokia\external\helium-nokia-antlib\python;%HELIUM_HOME%\extensions\nokia\external\helium-nokia-antlib\python\pythonnokia\lib;%SBS_HOME%\python
 set PERL5LIB=%HELIUM_HOME%\tools\common\packages
 set COPYCMD=/y
-set spp_tools=\tools\
-set ppd_tools=\tools\
 
 REM Should be done that SYMSEE?
 set PATH=%PATH%;C:\APPS\ctc
@@ -114,7 +114,13 @@
 )
 TITLE Helium
 
-call "%JAVA_HOME%\bin\java" -cp "%HELIUM_HOME%\tools\common\bin" CheckTools
+if not exist "%HELIUM_HOME%\external\helium-antlib\bin\helium-checktools.jar" (
+echo *** Error: helium-checktools.jar not found 
+goto errorstop
+)
+
+REM call java -cp "%HELIUM_HOME%\external\helium-antlib\bin\helium-checktools.jar" com.nokia.helium.checktools.HeliumToolsCheckerMain -config "%HELIUM_HOME%\config\helium.basic.tools.config"
+REM if "%ERRORLEVEL%" neq "0" (goto errorstop)
 
 REM Call the Helium generated batch file if it exists
 REM This must match with the cache.dir property in helium.ant.xml
@@ -138,8 +144,8 @@
 endlocal
 goto :eof
 
-
 :errorstop
 @echo *** Build aborted with error
 exit /b 1
 
+
--- a/buildframework/helium/precompile_py.bat	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/precompile_py.bat	Thu Mar 04 15:10:37 2010 +0200
@@ -18,5 +18,5 @@
 
 setlocal
 @echo precompiling the archiving module to generate the .pyc files for running in parallel
-python %HELIUM_HOME%\tools\common\python\lib\createZipInput.py
+python -m CreateZipInput
 endlocal
\ No newline at end of file
--- a/buildframework/helium/tests/data/PythonTest.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-print "test complete!"
\ No newline at end of file
--- a/buildframework/helium/tests/data/bom/bom_validate_101_bom.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<bom>
-  <build>bom_validate_101</build>
-  <content>
-    <project>
-      <name>wv_domain-bh1spp#wv.91_helium_dev:project:tr1nss#1</name>
-      <database>bh1spp</database>
-      <baseline overridden="false">flashlite_3_1-bh1spp#wv.mcl_200929:project:bh1s60#1</baseline>
-      <baseline overridden="false">helix_flash_video-bh1spp#wv.mcl_200929:project:bh1s60#1</baseline>
-      <baseline overridden="false">webvideo-bh1spp#wv.mcl_200929:project:tr1nss#1</baseline>
-      <baseline overridden="true">wv_domain-bh1spp#wv.mcl_200929:project:tr1nss#1</baseline>
-      <folder>
-        <name overridden="true">bh1spp#1369: swbuild's Assigned Or Completed Tasks for Release wv_domain/wv.91</name>
-      </folder>
-      <folder>
-        <name overridden="true">bh1spp#1594: wv_domain 9.1 All completed tasks</name>
-        <task overridden="false">
-          <id>bh1s60#51236</id>
-          <synopsis>Testing Task for Helium</synopsis>
-          <owner>swbuild</owner>
-        </task>
-      </folder>
-      <folder>
-        <name overridden="true">bh1spp#1635: Created for Helium Testing</name>
-        <task overridden="false">
-          <id>bh1spp#52093</id>
-          <synopsis>Testing Task for Helium</synopsis>
-          <owner>swbuild</owner>
-        </task>
-      </folder>
-    </project>
-    <input>
-      <name>N/A</name>
-      <year>0</year>
-      <week>0</week>
-      <version>N/A</version>
-      <icds/>
-    </input>
-    <input>
-      <name>s60</name>
-      <year>0</year>
-      <week>0</week>
-      <version>None</version>
-      <source>
-        <type>grace</type>
-        <service>s60_devices_sw</service>
-        <product>DFS70.91.91</product>
-        <release>S60.91_200927_hw70</release>
-      </source>
-    </input>
-  </content>
-</bom>
\ No newline at end of file
--- a/buildframework/helium/tests/data/bom/bom_validate_101_bom_delta.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<bomDelta>
-  <buildFrom>bom_validate_100</buildFrom>
-  <buildTo>bom_validate_101</buildTo>
-  <content>
-    <folder status="added" overridden="true">bh1spp#1635: Created for Helium Testing</folder>
-    <task status="added" overridden="false">bh1spp#52093: Testing Task for Helium</task>
-  </content>
-</bomDelta>
\ No newline at end of file
--- a/buildframework/helium/tests/data/bom/bom_validate_102_bom.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<bom>
-  <build>bom_validate_102</build>
-  <content>
-    <project>
-      <name>wv_domain-bh1spp#wv.91_helium_dev:project:tr1nss#1</name>
-      <database>bh1spp</database>
-      <baseline overridden="false">flashlite_3_1-bh1spp#wv.mcl_200929:project:bh1s60#1</baseline>
-      <baseline overridden="false">helix_flash_video-bh1spp#wv.mcl_200929:project:bh1s60#1</baseline>
-      <baseline overridden="false">webvideo-bh1spp#wv.mcl_200929:project:tr1nss#1</baseline>
-      <baseline overridden="true">wv_domain-bh1spp#wv.mcl_200929:project:tr1nss#1</baseline>
-      <folder>
-        <name overridden="true">bh1spp#1369: swbuild's Assigned Or Completed Tasks for Release wv_domain/wv.91</name>
-      </folder>
-      <folder>
-        <name overridden="true">bh1spp#1594: wv_domain 9.1 All completed tasks</name>
-        <task overridden="false">
-          <id>bh1s60#51236</id>
-          <synopsis>Testing Task for Helium</synopsis>
-          <owner>swbuild</owner>
-        </task>
-      </folder>
-    </project>
-    <input>
-      <name>N/A</name>
-      <year>0</year>
-      <week>0</week>
-      <version>N/A</version>
-      <icds/>
-    </input>
-    <input>
-      <name>s60</name>
-      <year>0</year>
-      <week>0</week>
-      <version>None</version>
-      <source>
-        <type>grace</type>
-        <service>s60_devices_sw</service>
-        <product>DFS70.91.91</product>
-        <release>S60.91_200927_hw70</release>
-      </source>
-    </input>
-  </content>
-</bom>
\ No newline at end of file
--- a/buildframework/helium/tests/data/bom/bom_validate_102_bom_delta.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<bomDelta>
-  <buildFrom>bom_validate_101</buildFrom>
-  <buildTo>bom_validate_102</buildTo>
-  <content>
-    <folder status="deleted" overridden="true">bh1spp#1635: Created for Helium Testing</folder>
-    <task status="deleted" overridden="false">bh1spp#52093: Testing Task for Helium</task>
-  </content>
-</bomDelta>
\ No newline at end of file
--- a/buildframework/helium/tests/data/bom/bom_validate_103_bom.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<bom>
-  <build>bom_validate_03</build>
-  <content>
-    <project>
-      <name>wv_domain-bh1spp#wv.91_helium_dev:project:tr1nss#1</name>
-      <database>bh1spp</database>
-      <baseline overridden="false">flashlite_3_1-bh1spp#wv.mcl_200929:project:bh1s60#1</baseline>
-      <baseline overridden="false">helix_flash_video-bh1spp#wv.mcl_200929:project:bh1s60#1</baseline>
-      <baseline overridden="false">webvideo-bh1spp#wv.mcl_200929:project:tr1nss#1</baseline>
-      <baseline overridden="true">wv_domain-bh1spp#wv.mcl_200929:project:tr1nss#1</baseline>
-      <folder>
-        <name overridden="true">bh1spp#1369: swbuild's Assigned Or Completed Tasks for Release wv_domain/wv.91</name>
-      </folder>
-      <folder>
-        <name overridden="true">bh1spp#1594: wv_domain 9.1 All completed tasks</name>
-        <task overridden="false">
-          <id>bh1s60#51236</id>
-          <synopsis>Testing Task for Helium</synopsis>
-          <owner>eswaraia</owner>
-        </task>
-      </folder>
-    </project>
-    <input>
-      <name>N/A</name>
-      <year>0</year>
-      <week>0</week>
-      <version>N/A</version>
-      <icds/>
-    </input>
-    <input>
-      <name>s60</name>
-      <year>0</year>
-      <week>0</week>
-      <version>None</version>
-      <source>
-        <type>grace</type>
-        <service>s60_devices_sw</service>
-        <product>DFS70.91.91</product>
-        <release>S60.91_200927_hw70</release>
-      </source>
-    </input>
-  </content>
-</bom>
\ No newline at end of file
--- a/buildframework/helium/tests/data/bom/bom_validate_103_bom_delta.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<bomDelta>
-  <buildFrom>bom_validate_102</buildFrom>
-  <buildTo>bom_validate_103</buildTo>
-  <content/>
-</bomDelta>
\ No newline at end of file
--- a/buildframework/helium/tests/data/bom/bom_validate_104_bom_delta.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<bomDelta>
-  <buildFrom>bom_validate_101</buildFrom>
-  <buildTo>bom_validate_102</buildTo>
-  <content>
-    <folder status="deleted" overridden="true">bh1spp#1635: Created for Helium Testing</folder>
-    <task status="deleted" overridden="false">bh1spp#52093: Task for Helium</task>
-  </content>
-</bomDelta>
\ No newline at end of file
--- a/buildframework/helium/tests/data/bom/build_model_bom.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,176 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<bom>
-  <build>ido_raptor_mcl_abs_MCL.52.57</build>
-  <content>
-    <project>
-      <name>ABS_domain-abs.mcl_sbs_hewec001:project:tr1s60#1</name>
-      <database>tr1s60</database>
-      <baseline overridden="false">2D_OpenVG_1_0-S60_5.0_2008_wk37_t:project:ou1ape3#1</baseline>
-      <baseline overridden="false">3d_opengl_es_1_1-S60_5.0_2008_wk33:project:ou1ape3#1</baseline>
-      <baseline overridden="true">ABS_domain-abs.mcl_200843:project:tr1s60#1</baseline>
-      <baseline overridden="false">ActiveIdle2-tr1s60#abs.mcl_200843:project:he1s60#1</baseline>
-      <baseline overridden="false">AknGlobalUI-abs.mcl_200843:project:tr1s60#1</baseline>
-      <baseline overridden="false">AknIcon-tr1s60#abs.mcl_200843:project:ccm51#1</baseline>
-      <baseline overridden="false">AknInputLanguage-tr1s60#abs.50_200817:project:ccm51#1</baseline>
-      <baseline overridden="false">AknJapaneseReading-tr1s60#abs.50_200817:project:ccm51#1</baseline>
-      <baseline overridden="false">AknLayoutCompiler-tr1s60#abs.mcl_200839:project:ccm51#1</baseline>
-      <baseline overridden="false">AknPictograph-tr1s60#abs.mcl_200839:project:ccm51#1</baseline>
-      <baseline overridden="false">AknPictographBitmaps-tr1s60#abs.mcl_200839:project:ccm51#1</baseline>
-      <baseline overridden="false">AknSkinContent-tr1s60#abs.mcl_200843:project:ccm51#1</baseline>
-      <baseline overridden="false">AknSkinDescCompiler-tr1s60#abs.50_200813:project:ccm51#1</baseline>
-      <baseline overridden="false">AknSkins-tr1s60#abs.mcl_200843:project:ccm51#1</baseline>
-      <baseline overridden="false">AppShell-tr1s60#abs.mcl_200843:project:ou1s60ui#1</baseline>
-      <baseline overridden="false">Arabica-abs.50_200830:project:tr1s60#1</baseline>
-      <baseline overridden="false">AvKon-tr1s60#abs.mcl_200843:project:ccm51#1</baseline>
-      <baseline overridden="false">Bitmaps2-tr1s60#abs.mcl_200835:project:ccm51#1</baseline>
-      <baseline overridden="false">Charconv-tr1s60#abs.mcl_200843:project:ccm51#1</baseline>
-      <baseline overridden="false">Charconvplugin-tr1s60#abs.50_200813:project:ccm51#1</baseline>
-      <baseline overridden="false">Color-tr1s60#abs.50_200817:project:ccm51#1</baseline>
-      <baseline overridden="false">CommonAdapter-tr1s60#abs.50_200813:project:ccm51#1</baseline>
-      <baseline overridden="false">CommonDialogs-tr1s60#abs.mcl_200843:project:ccm51#1</baseline>
-      <baseline overridden="false">CommonUi-tr1s60#abs.mcl_200843:project:ccm51#1</baseline>
-      <baseline overridden="false">Csxhelp-tr1s60#abs.mcl_200843:project:bh1s60#1</baseline>
-      <baseline overridden="false">DirectoryLocalizerEx-tr1s60#abs.50_200817:project:e003sa01#1</baseline>
-      <baseline overridden="false">EikStd-tr1s60#abs.mcl_200843:project:ccm51#1</baseline>
-      <baseline overridden="false">Exa_CommonDialogs-tr1s60#abs.50_200817:project:e003sa01#1</baseline>
-      <baseline overridden="false">Exa_HierarchicalColumnList-tr1s60#abs.50_200817:project:e003sa01#1</baseline>
-      <baseline overridden="false">Findutil-tr1s60#abs.mcl_200843:project:ccm51#1</baseline>
-      <baseline overridden="false">FontProvider-abs.mcl_200843:project:tr1s60#1</baseline>
-      <baseline overridden="false">GSLangPlugin-abs.mcl_200843:project:tr1s60#1</baseline>
-      <baseline overridden="false">Icons-abs.mcl_200843:project:tr1s60#1</baseline>
-      <baseline overridden="false">JPLangUtil-tr1s60#abs.50_200817:project:ccm51#1</baseline>
-      <baseline overridden="false">Localizer-tr1s60#abs.50_200821:project:ccm51#1</baseline>
-      <baseline overridden="false">M3GCore11-tr1s60#abs.50_200813:project:tr1gfx#1</baseline>
-      <baseline overridden="false">Matsutake-tr1s60#abs.50_200817:project:ccm51#1</baseline>
-      <baseline overridden="false">OemNokia-abs.mcl_200839:project:tr1s60#1</baseline>
-      <baseline overridden="false">Psln-tr1s60#abs.mcl_200841:project:ccm51#1</baseline>
-      <baseline overridden="false">PtiAtokCore-tr1s60#abs.50_200817:project:ccm51#1</baseline>
-      <baseline overridden="false">PtiEngine-tr1s60#abs.mcl_200837:project:ccm51#1</baseline>
-      <baseline overridden="false">PtiT9Core-tr1s60#abs.50_200832:project:ccm51#1</baseline>
-      <baseline overridden="false">PtiT9Core_stub-abs.50_200813:project:tr1s60#1</baseline>
-      <baseline overridden="false">S60Helps-tr1s60#abs.mcl_200841:project:ccm51#1</baseline>
-      <baseline overridden="false">SVGTopt-tr1s60#abs.mcl_200843:project:ccm51#1</baseline>
-      <baseline overridden="false">ServiceHandler-tr1s60#abs.50_200813:project:ccm51#1</baseline>
-      <baseline overridden="false">SortUtil-tr1s60#abs.50_200817:project:ccm51#1</baseline>
-      <baseline overridden="false">SvgtViewerPlugin-tr1s60#abs.mcl_200841:project:bh1s60#1</baseline>
-      <baseline overridden="false">UserDict-tr1s60#abs.50_200813:project:ccm51#1</baseline>
-      <baseline overridden="false">VariatedBitmaps-tr1s60#abs.50_200817:project:ccm51#1</baseline>
-      <baseline overridden="false">XercesC-abs.50_200830:project:tr1s60#1</baseline>
-      <baseline overridden="false">Xuikon-tr1s60#abs.mcl_200843:project:ou1s60ui#1</baseline>
-      <baseline overridden="false">XuikonTestTools-tr1s60#abs.mcl_200839:project:ou1s60ui#1</baseline>
-      <baseline overridden="false">activeidle-tr1s60#abs.mcl_200843:project:he1s60#1</baseline>
-      <baseline overridden="false">aiwconsumerbasics-abs.50_200813:project:tr1s60#1</baseline>
-      <baseline overridden="false">aknfep-tr1s60#abs.mcl_200843:project:ccm51#1</baseline>
-      <baseline overridden="false">aknlayout2-tr1s60#abs.mcl_200843:project:ccm51#1</baseline>
-      <baseline overridden="false">applicationinterworkingfw-abs.50_200813:project:tr1s60#1</baseline>
-      <baseline overridden="false">backsteppingservice-hs_2008w42:project:ou1s60ui#1</baseline>
-      <baseline overridden="false">cdl-tr1s60#abs.mcl_200839:project:ccm51#1</baseline>
-      <baseline overridden="false">cdlcompiler-abs.50_200830:project:tr1s60#1</baseline>
-      <baseline overridden="false">cdlcompilertoolkit-abs.50_200826:project:tr1s60#1</baseline>
-      <baseline overridden="false">classicui-abs.mcl_200843:project:tr1s60#1</baseline>
-      <baseline overridden="false">classicui_dom-abs.mcl_200843:project:tr1s60#1</baseline>
-      <baseline overridden="false">classicui_sdk-abs.mcl_200843:project:tr1s60#1</baseline>
-      <baseline overridden="false">commonuis-abs.mcl_200843:project:tr1s60#1</baseline>
-      <baseline overridden="false">contentpublishingservice-hs_2008w42:project:ou1s60ui#1</baseline>
-      <baseline overridden="false">coreuiapps-abs.mcl_200843:project:tr1s60#1</baseline>
-      <baseline overridden="false">coreuiapps_dom-abs.mcl_200839:project:tr1s60#1</baseline>
-      <baseline overridden="false">eikctl-abs.mcl_200843:project:tr1s60#1</baseline>
-      <baseline overridden="false">fonts-tr1s60#abs.mcl_200843:project:ccm51#1</baseline>
-      <baseline overridden="false">gamerecognizer-tr1s60#abs.50_200817:project:ccm51#1</baseline>
-      <baseline overridden="false">gditools-tr1s60#abs.mcl_200839:project:ccm51#1</baseline>
-      <baseline overridden="false">gfxtools-abs.mcl_200839:project:tr1s60#1</baseline>
-      <baseline overridden="false">graphics-tr1s60#abs.mcl_200843:project:bs1s60#1</baseline>
-      <baseline overridden="false">graphics_dom-abs.mcl_200833:project:tr1s60#1</baseline>
-      <baseline overridden="false">graphicsaccelaration-abs.mcl_200837:project:tr1s60#1</baseline>
-      <baseline overridden="false">graphicsadapt_dom-abs.50_200825_001:project:tr1s60#1</baseline>
-      <baseline overridden="false">graphicsadapt_sdk-abs.50_200813:project:tr1s60#1</baseline>
-      <baseline overridden="false">graphicsadaptations-abs.mcl_200837:project:tr1s60#1</baseline>
-      <baseline overridden="false">graphicsuis-tr1s60#abs.mcl_200841:project:bs1s60#1</baseline>
-      <baseline overridden="false">graphicsuis_dom-abs.mcl_200841:project:tr1s60#1</baseline>
-      <baseline overridden="false">hitchcock-abs.mcl_200839:project:tr1s60#1</baseline>
-      <baseline overridden="false">iconsd-tr1s60#abs.mcl_200833:project:sa1ui#1</baseline>
-      <baseline overridden="false">inputmethods-abs.mcl_200843:project:tr1s60#1</baseline>
-      <baseline overridden="false">inputmethods_dom-abs.mcl_200843:project:tr1s60#1</baseline>
-      <baseline overridden="false">inputmethods_sdk-abs.mcl_200841:project:tr1s60#1</baseline>
-      <baseline overridden="false">layouts-abs.mcl_200843:project:tr1s60#1</baseline>
-      <baseline overridden="false">locales-abs.mcl_200841:project:tr1s60#1</baseline>
-      <baseline overridden="false">loce32-tr1s60#abs.mcl_200841:project:ccm51#1</baseline>
-      <baseline overridden="false">m3gapi-tr1s60#abs.50_200813:project:ou1s60ui#1</baseline>
-      <baseline overridden="false">numbergrouping-tr1s60#abs.50_200826:project:ccm51#1</baseline>
-      <baseline overridden="false">ocrsrv-abs.50_200830:project:tr1s60#1</baseline>
-      <baseline overridden="false">palette-tr1s60#abs.50_200817:project:ccm51#1</baseline>
-      <baseline overridden="false">peninputarc-tr1s60#abs.mcl_200843:project:be1s60pr#1</baseline>
-      <baseline overridden="false">peninputcommonctrls-abs.mcl_200843:project:tr1s60#1</baseline>
-      <baseline overridden="false">peninputcommonlayout-tr1s60#abs.mcl_200843:project:be1s60pr#1</baseline>
-      <baseline overridden="false">peninputgenerichwr-tr1s60#abs.mcl_200843:project:be1s60pr#1</baseline>
-      <baseline overridden="false">peninputgenericitut-abs.mcl_200843:project:tr1s60#1</baseline>
-      <baseline overridden="false">peninputgenericvkb-tr1s60#abs.mcl_200843:project:be1s60pr#1</baseline>
-      <baseline overridden="false">peninputhwrboxcn-abs.mcl_200843:project:tr1s60#1</baseline>
-      <baseline overridden="false">peninputhwrfscn-abs.mcl_200843:project:tr1s60#1</baseline>
-      <baseline overridden="false">peninputhwrtrui-tr1s60#abs.mcl_200843:project:be1s60pr#1</baseline>
-      <baseline overridden="false">peninputvkbcn-abs.mcl_200843:project:tr1s60#1</baseline>
-      <baseline overridden="false">pictographs-abs.mcl_200839:project:tr1s60#1</baseline>
-      <baseline overridden="false">power_save_display_mode_stub-abs.50_200813:project:tr1s60#1</baseline>
-      <baseline overridden="false">pticpicore-tr1s60#abs.mcl_200843:project:be1s60pr#1</baseline>
-      <baseline overridden="false">ptidecumacore-abs.mcl_200843:project:tr1s60#1</baseline>
-      <baseline overridden="false">ptienginev2-abs.mcl_200841:project:tr1s60#1</baseline>
-      <baseline overridden="false">ptihanwangcore-abs.mcl_200837:project:tr1s60#1</baseline>
-      <baseline overridden="false">ptiindicphoneticcore-abs.50_200817:project:tr1s60#1</baseline>
-      <baseline overridden="false">ptivocore-abs.mcl_200843:project:tr1s60#1</baseline>
-      <baseline overridden="false">ptixt9core-abs.50_200830:project:tr1s60#1</baseline>
-      <baseline overridden="false">reszip-tr1s60#abs.50_200817:project:ccm51#1</baseline>
-      <baseline overridden="false">s60config-abs.mcl_200843:project:tr1s60#1</baseline>
-      <baseline overridden="false">sapi_actionhandler-tr1s60#abs.mcl_200843:project:ou1s60ui#1</baseline>
-      <baseline overridden="false">sapi_backstepping-hs_2008w42:project:ou1s60ui#1</baseline>
-      <baseline overridden="false">sapi_contentpublishing-tr1s60#abs.mcl_200843:project:ou1s60ui#1</baseline>
-      <baseline overridden="false">screensaver-tr1s60#abs.mcl_200843:project:ccm51#1</baseline>
-      <baseline overridden="false">skincompiler-abs.50_200813:project:tr1s60#1</baseline>
-      <baseline overridden="false">skins-abs.mcl_200843:project:tr1s60#1</baseline>
-      <baseline overridden="false">srsf-mui.mcl_200843:project:tr1nss#1</baseline>
-      <baseline overridden="false">srsfenginestub-mui.mcl_200843:project:tr1nss#1</baseline>
-      <baseline overridden="false">svgtviewer-tr1s60#abs.mcl_200841:project:bs1s60#1</baseline>
-      <baseline overridden="false">tactileclickplugin_stub-tr1s60#abs.50_200813:project:e003sa01#1</baseline>
-      <baseline overridden="false">tactilefeedback-tr1s60#abs.mcl_200839:project:e003sa01#1</baseline>
-      <baseline overridden="false">textinput-abs.mcl_200843:project:tr1s60#1</baseline>
-      <baseline overridden="false">tfxserver-abs.mcl_200843:project:tr1s60#1</baseline>
-      <baseline overridden="false">themeinstaller-tr1s60#abs.50_200819:project:ou1s60ui#1</baseline>
-      <baseline overridden="false">toollibraries-abs.50_200830:project:tr1s60#1</baseline>
-      <baseline overridden="false">uiaccelerator-abs.mcl_200841:project:tr1s60#1</baseline>
-      <baseline overridden="false">uiacceltk-abs.mcl_200839:project:tr1s60#1</baseline>
-      <baseline overridden="false">uiconfig-abs.mcl_200843:project:tr1s60#1</baseline>
-      <baseline overridden="false">uifw-abs.mcl_200843:project:tr1s60#1</baseline>
-      <baseline overridden="false">uigraphics-abs.mcl_200843:project:tr1s60#1</baseline>
-      <baseline overridden="false">uiklaf-tr1s60#abs.50_200824:project:ccm51#1</baseline>
-      <baseline overridden="false">uiresources-abs.mcl_200843:project:tr1s60#1</baseline>
-      <baseline overridden="false">uiresources_dom-abs.mcl_200843:project:tr1s60#1</baseline>
-      <baseline overridden="false">uiresources_sdk-abs.mcl_200843:project:tr1s60#1</baseline>
-      <baseline overridden="false">uishellservices-tr1s60#abs.mcl_200843:project:bh1s60pm#1</baseline>
-      <baseline overridden="false">uishellservices_dom-tr1s60#abs.mcl_200843:project:bh1s60pm#1</baseline>
-      <baseline overridden="false">uitools-abs.mcl_200839:project:tr1s60#1</baseline>
-      <baseline overridden="false">uitools_dom-abs.mcl_200839:project:tr1s60#1</baseline>
-      <baseline overridden="false">uitools_sdk-abs.50_200817:project:tr1s60#1</baseline>
-      <baseline overridden="false">uiutils-abs.mcl_200843:project:tr1s60#1</baseline>
-      <baseline overridden="false">uniteditorex-abs.50_200817:project:tr1s60#1</baseline>
-      <baseline overridden="false">vcommand-mui.mcl_200843:project:tr1nss#1</baseline>
-      <baseline overridden="false">voiceservices-abs.mcl_200843:project:tr1s60#1</baseline>
-      <baseline overridden="false">voicesrv_dom-abs.mcl_200841:project:tr1s60#1</baseline>
-      <baseline overridden="false">voiceui-mui.mcl_200843:project:tr1nss#1</baseline>
-      <baseline overridden="false">voiceuis-abs.mcl_200843:project:tr1s60#1</baseline>
-      <baseline overridden="false">widgeteditors-tr1s60#abs.50_200819:project:ou1s60ui#1</baseline>
-      <baseline overridden="false">xcfw-tr1s60#abs.mcl_200839:project:ou1s60ui#1</baseline>
-      <baseline overridden="false">xmlui-abs.mcl_200843:project:tr1s60#1</baseline>
-      <baseline overridden="false">xmlui_dom-abs.mcl_200843:project:tr1s60#1</baseline>
-      <baseline overridden="false">xmluifw-abs.mcl_200843:project:tr1s60#1</baseline>
-      <folder>
-        <name overridden="true">tr1s60#5856: all completed tasks for release ABS_domain/abs.mcl for collaborative projects</name>
-        <task overridden="false">
-            <id>e002sa09#10745</id>
-            <synopsis>ActiveIdle2: Error:DPEE-7KEGRT: S60SW Language Variant Testing - E.T.: S60 5.0 PF52.50 wk41: Control panel: Truncation in menu item home screen theme (MCL)</synopsis>
-        </task>
-      </folder>
-      <folder>
-        <name overridden="true">tr1s60#6130: wbernard's Assigned Or Completed Tasks for Release ABS_domain/abs.mcl</name>
-      </folder>
-    </project>
-  </content>
-</bom>
\ No newline at end of file
--- a/buildframework/helium/tests/data/bsf/ARM11.bsf	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-#<bsf>#
-
-# This file customizes the default ARMV5. It specifies a platform that uses
-# most optimization for arm936 based engines
-
-customizes ARMV5_ABIV1
-
-# The following options that can be overridden by MMP files
-common_options	--cpu ARM1136JF-S --diag_suppress 1,161,654,1135,1152,1300 --diag_error 1267
-
-# Fixed options for this build. These options should only be changed with great care since
-# they have the potential to introduce incompatible ABI (or machine) level effects.
-# -cpu 5T - this build just targets a generic 5T
-# -Ono_known_library - we use our own library so tell the compiler not to make assumptions about its implementation
-# -fpu softvfp - some system code explicitly assumes this variant of the EABI (softvfp+vfp could be used on say XScale)
-# --dll_vtbl - this switches on class exporting and is needed to support Symbian OS DLL model
-# -apcs /inter - redundant on 5T, but worth saying anyway
-# --enum_is_int - force all enum entries to be sizeof(int) which avoids problems when passing enums between 5T and 9E libs
-invariant_options	-Ono_known_library --enum_is_int --fpmode ieee_no_fenv --export_all_vtbl --no_vfe --APCS /inter --dllimport_runtime -O3 -Otime
-
--- a/buildframework/helium/tests/data/bsf/ARM11_arm.bsf	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-#<bsf>#
-
-# This file customizes the default ARMV5. It specifies a platform that uses
-# most optimization for arm936 based engines
-
-customizes ARMV5_ABIV1
-
-# The following options that can be overridden by MMP files
-common_options	--cpu ARM1136JF-S --diag_suppress 1,161,654,1135,1152,1300 --diag_error 1267
-
-# Fixed options for this build. These options should only be changed with great care since
-# they have the potential to introduce incompatible ABI (or machine) level effects.
-# -cpu 5T - this build just targets a generic 5T
-# -Ono_known_library - we use our own library so tell the compiler not to make assumptions about its implementation
-# -fpu softvfp - some system code explicitly assumes this variant of the EABI (softvfp+vfp could be used on say XScale)
-# --dll_vtbl - this switches on class exporting and is needed to support Symbian OS DLL model
-# -apcs /inter - redundant on 5T, but worth saying anyway
-# --enum_is_int - force all enum entries to be sizeof(int) which avoids problems when passing enums between 5T and 9E libs
-invariant_options	-Ono_known_library --enum_is_int --fpmode ieee_no_fenv --export_all_vtbl --no_vfe --APCS /inter --dllimport_runtime -O3 -Otime --arm
-
--- a/buildframework/helium/tests/data/bsf/ARM926_arm.bsf	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-#<bsf>#
-
-# This file customizes the default ARMV5. It specifies a platform that uses
-# most optimization for arm936 based engines
-
-customizes ARMV5_ABIV1
-
-# The following options that can be overridden by MMP files
-common_options	--cpu ARM926EJ-S --diag_suppress 1,161,654,1135,1152,1300 --diag_error 1267
-
-# Fixed options for this build. These options should only be changed with great care since
-# they have the potential to introduce incompatible ABI (or machine) level effects.
-# -cpu 5T - this build just targets a generic 5T
-# -Ono_known_library - we use our own library so tell the compiler not to make assumptions about its implementation
-# -fpu softvfp - some system code explicitly assumes this variant of the EABI (softvfp+vfp could be used on say XScale)
-# --dll_vtbl - this switches on class exporting and is needed to support Symbian OS DLL model
-# -apcs /inter - redundant on 5T, but worth saying anyway
-# --enum_is_int - force all enum entries to be sizeof(int) which avoids problems when passing enums between 5T and 9E libs
-invariant_options	-Ono_known_library --enum_is_int --fpmode ieee_no_fenv --export_all_vtbl --no_vfe --APCS /inter --dllimport_runtime -O3 -Otime --arm
-
--- a/buildframework/helium/tests/data/bsf/ARM9E.bsf	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-#<bsf>#
-
-# NOTE Some options modified as originals obsolete e.g add double dash prefix
-# Example build specialization file 
-# 
-# NB currently specialization only applies to ARMV5 build using RVCT.
-
-# This file customizes the default ARMV5. It specifies a build that
-# always uses optimization level O1 rather than the default O2.
-CUSTOMIZES ARMV5_ABIV1
-
-# The following options that can be overridden by MMP files
-
-# Use these options when compiling user-side THUMB code
-thumb_options -O1
-
-# Use these options when compiling user-side ARM code
-arm_options	--arm -O1
-
-# Use these options when compiling Kernel code
-kernel_options	--arm -O1 
-
-# This just factors out common (contingent) options from the above.
-# These options can also be overridden by MMP files.
-common_options	--cpu ARM9E --diag_suppress 1,161,654,1135,1152,1300 --diag_error 1267 --exceptions --exceptions_unwind --export_all_vtbl
-
-# Fixed options for this build. These options should only be changed with great care since
-# they have the potential to introduce incompatible ABI (or machine) level effects.
-# -cpu 5T - this build just targets a generic 5T
-# -Ono_known_library - we use our own library so tell the compiler not to make assumptions about its implementation
-# -fpu softvfp - some system code explicitly assumes this variant of the EABI (softvfp+vfp could be used on say XScale)
-# --dll_vtbl - this switches on class exporting and is needed to support Symbian OS DLL model
-# -apcs /inter - redundant on 5T, but worth saying anyway
-# --enum_is_int - force all enum entries to be sizeof(int) which avoids problems when passing enums between 5T and 9E libs
-invariant_options	-Ono_known_library --enum_is_int --FPU softvfp --dll_vtbl --export_vtbl --export_all_vtbl --no_vfe --APCS=/interwork
--- a/buildframework/helium/tests/data/bsf/armv6.bsf	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-#<bsf>#
-
-# This BSF file is to support building for ARMV6 architecture. The options specified here are same as for ARMV5 except 
-# the --cpu 6 option in INVARIANT_OPTIONS. This specifies to compiler to compile for generic ARMV6. If any other 
-# specific options are required such as --cpu ARM1136J-S, etc, then it can be done via a different BSF file
-# NOTE: The options specified here for the compiler disable the unaligned memory access.
-
-CUSTOMIZES ARMV5
-
-INVARIANT_OPTIONS --cpu 6 --enum_is_int -Ono_known_library --fpmode ieee_no_fenv --export_all_vtbl --no_vfe --apcs /inter --memaccess -UL41
--- a/buildframework/helium/tests/data/bsf/armv6_abiv1.bsf	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-#<bsf>#
-
-# This BSF file is to support building for ARMV6 architecture. The options specified here are same as for ARMV5 except 
-# the --cpu 6 option in INVARIANT_OPTIONS. This specifies to compiler to compile for generic ARMV6. If any other 
-# specific options are required such as --cpu ARM1136J-S, etc, then it can be done via a different BSF file
-# NOTE: The options specified here for the compiler disable the unaligned memory access.
-
-CUSTOMIZES ARMV5_ABIV1
-
-INVARIANT_OPTIONS --cpu 6 --enum_is_int -Ono_known_library --fpmode ieee_no_fenv --export_all_vtbl --no_vfe --apcs /inter --memaccess -UL41
--- a/buildframework/helium/tests/data/bsf/config.bsf	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-#<bsf>#
-
-# This BSF file is to support building for ARMV6 architecture. The options specified here are same as for ARMV5 except 
-# the --cpu 6 option in INVARIANT_OPTIONS. This specifies to compiler to compile for generic ARMV6. If any other 
-# specific options are required such as --cpu ARM1136J-S, --memaccess -UL41, etc, then it can be done via a different
-# BSF file
-
-CUSTOMIZES VARIANT
-
-VARIANT
\ No newline at end of file
--- a/buildframework/helium/tests/data/bsf/product.bsf	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-#<bsf>#
-
-# This BSF file is to support building for ARMV6 architecture. The options specified here are same as for ARMV5 except 
-# the --cpu 6 option in INVARIANT_OPTIONS. This specifies to compiler to compile for generic ARMV6. If any other 
-# specific options are required such as --cpu ARM1136J-S, --memaccess -UL41, etc, then it can be done via a different
-# BSF file
-
-CUSTOMIZES platform
-
-VARIANT
--- a/buildframework/helium/tests/data/bsf/variant.bsf	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-#<bsf>#
-
-# This BSF file is to support building for ARMV6 architecture. The options specified here are same as for ARMV5 except
-# the --cpu 6 option in INVARIANT_OPTIONS. This specifies to compiler to compile for generic ARMV6. If any other
-# specific options are required such as --cpu ARM1136J-S, --memaccess -UL41, etc, then it can be done via a different
-# BSF file
-
-CUSTOMIZES ARMV5
-
-VIRTUALVARIANT
-COMPILEWITHPARENT
--- a/buildframework/helium/tests/data/build/io/abld_what.log	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-=== Stage=3771 == ibusal_chipset_product
--- abld -what build armv5
---- EBS_CLIENT3 Executed ID 8616
-++ Started at Thu Sep 20 01:56:51 2007
-+++ HiRes Start 1190278611.17028
-Chdir \ncp_sw\spp_core4.0\ibusal_chipset\group\product
-\epoc32\release\ARMV5\UDEB\_product_NaviScrollPdd.pdd
-\epoc32\release\ARMV5\UDEB\_product_NaviScrollPdd.pdd.map
-+++ HiRes End 1190278612.21715
-++ Finished at Thu Sep 20 01:56:52 2007
-=== Stage=3771 == ibusal_chipset_product2
--- abld -what build armv5
---- EBS_CLIENT1 Executed ID 8617
-++ Started at Thu Sep 20 01:56:51 2007
-+++ HiRes Start 1190278611.34216
-Chdir \ncp_sw\spp_core4.0\ibusal_chipset\group\product2
-\epoc32\release\ARMV5\UDEB\_product2_accelerometerpdd.pdd
-\epoc32\release\ARMV5\UDEB\_product2_accelerometerpdd.pdd.map
-+++ HiRes End 1190278612.35777
-++ Finished at Thu Sep 20 01:56:52 2007
\ No newline at end of file
--- a/buildframework/helium/tests/data/build/io/test_rofs.log	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-File block for dir 'Bootdata' @offs=0x5bf34, size=56
-File block for dir '101F72A6' @offs=0x5bf6c, size=112
-File block for dir 'Fonts' @offs=0x5bfdc, size=210
-File block for dir '101f7a85' @offs=0x5c0b0, size=60
-File block for dir '10009d8f' @offs=0x5c0ec, size=54
-Reading file \epoc32\data\Z\Resource\ICL\jpegcodec_extra.rsc to image
-File '\epoc32\data\Z\Resource\ICL\jpegcodec_extra.rsc' size: 000000ca
-Reading file \epoc32\release\ARMV5\urel\jpegcodec.dll to image
-Original file:'\epoc32\release\ARMV5\urel\jpegcodec.dll' is compressed by method:101f7afc
-Compressed executable File '\epoc32\release\ARMV5\urel\jpegcodec.dll' size: 00015e80, mode:101f7afc
\ No newline at end of file
--- a/buildframework/helium/tests/data/build/io/test_rom.log	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-Primary details (Multiple Kernels):
-
-Kernel 1:
-Uids:                    1000007a 1000008b 100041af 6bf50df9
-Entry point:             f8008108
-Code start addr:         f8008000
-Data start addr:         f803dfec
-DataBssLinearBase:       64000000
-Text size:               00035fec
-Code size:               00035fec
-Data size:               000001f8
-BssSize:                 00001a38
-Total data size:         00001c30
-Heap min:                00008000
-Heap max:                00ffc000
-Stack size:              00001000
-Dll ref table:           00000000
-Export directory:        f803a1c8
-Export dir count:        00000328
-Hardware variant:        09080001
-Flags:                   8500002a
-Secure ID:               100041af
-Vendor ID:               70000001
-Capability:              00000000 000fffff
-Tools Version:           2.01(576)
-Module Version:          10.0
-Exception Descriptor:    00000000
-Priority:                350
-
-Summary of file sizes in rom:
-Overhead (bootstrap+gaps+sectioning)	10723
-Overhead (directory size)	25232
-\epoc32\release\ARMV5\urel\__ekern.exe	221788
-\epoc32\release\ARMV5\urel\elocd.ldd	15192
-\epoc32\release\ARMV5\urel\__medint.pdd	2320
\ No newline at end of file
--- a/buildframework/helium/tests/data/build/metadata/abld_what_db_test.log	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-=== Stage=3771 == ibusal_chipset_product
--- abld -what build armv5
---- EBS_CLIENT3 Executed ID 8616
-++ Started at Thu Sep 20 01:56:51 2007
-+++ HiRes Start 1190278611.17028
-Chdir \ncp_sw\spp_core4.0\ibusal_chipset\group\product
-\epoc32\release\ARMV5\UDEB\_product_NaviScrollPdd.pdd
-\epoc32\release\ARMV5\UDEB\_product_NaviScrollPdd.pdd.map
-+++ HiRes End 1190278612.21715
-++ Finished at Thu Sep 20 01:56:52 2007
-=== Stage=3771 == ibusal_chipset_product
--- abld -what build armv5
---- EBS_CLIENT1 Executed ID 8617
-++ Started at Thu Sep 20 01:56:51 2007
-+++ HiRes Start 1190278611.34216
-Chdir \ncp_sw\spp_core4.0\ibusal_chipset\group\product
-\epoc32\release\ARMV5\UDEB\_product_accelerometerpdd.pdd
-\epoc32\release\ARMV5\UDEB\_product_accelerometerpdd.pdd.map
-+++ HiRes End 1190278612.35777
-++ Finished at Thu Sep 20 01:56:52 2007
-=== Stage=3771 == test_one
--- abld -what build armv5
---- EBS_CLIENT1 Executed ID 8617
-++ Started at Thu Sep 20 01:56:51 2007
-+++ HiRes Start 1190278611.34216
-Chdir \ncp_sw\spp_core4.0\ibusal_chipset\group\product
-\epoc32\release\ARMV5\UDEB\foo.dll
-\epoc32\release\ARMV5\UDEB\bar.dll
-+++ HiRes End 1190278612.35777
-++ Finished at Thu Sep 20 01:56:52 2007
-=== Stage=3771 == test_two
--- abld -what build armv5
---- EBS_CLIENT1 Executed ID 8617
-++ Started at Thu Sep 20 01:56:51 2007
-+++ HiRes Start 1190278611.34216
-Chdir \ncp_sw\spp_core4.0\ibusal_chipset\group\product
-\epoc32\release\ARMV5\UDEB\foo.dll
-\epoc32\release\ARMV5\UDEB\bar.dll
-+++ HiRes End 1190278612.35777
-++ Finished at Thu Sep 20 01:56:52 2007
\ No newline at end of file
--- a/buildframework/helium/tests/data/comments_test.bat	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-REM <branchInfo originator="cishih">
-REM Testing if it's good~~~
-REM </branchInfo>
-REM BRANCH 17-09-07 :cishih
\ No newline at end of file
--- a/buildframework/helium/tests/data/comments_test.cpp	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-// <branchInfo originator="prozeniu" error="wiki-07wk24-311" since="07-06-14" category="fix">
-// We need TwistOpen and TwistClose to cause display to change between
-// landscape and portrait, but SysAp is consuming the key events.  Try
-// treating them as Flip events are handled already by SysAp.
-// </branchInfo>
-// BRANCH 07-06-14
\ No newline at end of file
--- a/buildframework/helium/tests/data/comments_test.h	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-// <branchInfo originator="prozeniu" error="wiki-07wk24-311" since="07-06-14" category="fix">
-// We need TwistOpen and TwistClose to cause display to change between
-// landscape and portrait, but SysAp is consuming the key events.  Try
-// treating them as Flip events are handled already by SysAp.
-// </branchInfo>
\ No newline at end of file
--- a/buildframework/helium/tests/data/comments_test.hrh	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-// <branchInfo>
-// puikko ME SCD DeSW: wk21 Flag fix
-// </branchInfo>
-// BRANCH 07-06-06
\ No newline at end of file
--- a/buildframework/helium/tests/data/comments_test.iby	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-// <branchInfo originator="prozeniu" error="wiki-07wk22-002" since="07-05-22" category="fix">
-// Since Catalogs is not compiling at this point, and we are not building it, don't try to
-// pull it into the rom.  Also, tfxserver is crashing, so don't build or pull it in either.
-// </branchInfo>
-// BRANCH 07-05-22
\ No newline at end of file
--- a/buildframework/helium/tests/data/comments_test.inf	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-// <branchInfo originator="wbernard">
-// Fix target export, which cause issue when cleanexport.
-// </branchInfo>
-// BRANCH 07-02-07
\ No newline at end of file
--- a/buildframework/helium/tests/data/comments_test.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-// <branchInfo>
-// Test info, so whatever~
-// </branchInfo>
-// BRANCH  17-09-07 :cishih
\ No newline at end of file
--- a/buildframework/helium/tests/data/comments_test.mk	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-# <branchInfo originator="rmetcalf" error="rm-wiki-060530-6" since="06-05-30" category="build_from_source">
-# Move command to makmake as EBS does not call abld build
-# </branchInfo>
-# BRANCH 06-05-30
\ No newline at end of file
--- a/buildframework/helium/tests/data/comments_test.mmp	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-//<branchInfo originator="suchatte" since="07-04-16" category="merge"> 
-//Activate PCFW for Screensaver 
-//</branchInfo> 
-// BRANCH 07-04-16: suchatte
\ No newline at end of file
--- a/buildframework/helium/tests/data/comments_test.pl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-# <branchInfo originator="wbernard">
-# Support SPP mechanism for flags support.
-# </branchInfo>
-# BRANCH 07-05-08
\ No newline at end of file
--- a/buildframework/helium/tests/data/comments_test.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-# <branchInfo originator="cishih">
-# Again, it is just a test
-# </branchInfo>
-# BRANCH 17-09-07 :cishih
\ No newline at end of file
--- a/buildframework/helium/tests/data/comments_test.txt	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-//<branchInfo originator="sanummel" since="07-03-22" category="" error="kkk"> 
-//Add rofsfiles for usage in paged images
-//</branchInfo> 
-// BRANCH 07-03-22: sanummel
\ No newline at end of file
--- a/buildframework/helium/tests/data/comments_test.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-<!-- <branchInfo originator="broum">Enabling all the HWRM light zones target for product</branchInfo> -->
-	<!-- BRANCH 07-05-17 -->
\ No newline at end of file
--- a/buildframework/helium/tests/data/comments_test1.cmd	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-REM <branchInfo originator="marhyvon" since="22-02-07" category="new feature" error="foobar123">
-REM k
-REM </branchInfo>
-REM BRANCH 22-02-07 :marhyvon
\ No newline at end of file
--- a/buildframework/helium/tests/data/comments_test2.cmd	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-#<branchInfo originator="marhyvon" since="22-02-07" category="new feature" error="foobar123">
-#</branchInfo>
-# BRANCH 22-02-07 :marhyvon
\ No newline at end of file
--- a/buildframework/helium/tests/data/data_model_test.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<heliumDataModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="..\tools\common\schema\helium_data_model.xsd">
-    <property>
-        <name>test.property.1</name>
-        <usage>required</usage>
-        <editStatus>never</editStatus>
-        <type>string</type>
-        <description>Test property one.</description>
-    </property>
-    <property>
-        <name>test.property.2</name>
-        <usage>optional</usage>
-        <editStatus>never</editStatus>
-        <type>string</type>
-        <description>Test property two.</description>
-    </property>
-    <property>
-        <name>test.property.3</name>
-        <usage>optional</usage>
-        <editStatus>never</editStatus>
-        <type>string</type>
-        <description>Test property three.</description>
-    </property>    
-    <group>
-        <name>testGroup</name>
-        <description/>
-        <propertyRef usage="required">test.property.2</propertyRef>
-        <propertyRef usage="optional">test.property.3</propertyRef>
-        <propertyRef usage="optional">test.property.1</propertyRef>
-    </group>
-</heliumDataModel>
\ No newline at end of file
--- a/buildframework/helium/tests/data/data_model_validation_group_test.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<heliumDataModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="..\tools\common\schema\helium_data_model.xsd">
-    <property>
-        <name>test.property.1</name>
-        <usage>required</usage>
-        <editStatus>never</editStatus>
-        <type>string</type>
-        <description>Test property one.</description>
-    </property>    
-    <group>
-        <name>testGroup</name>
-        <description/>
-        <propertyRef usage="required">test.property.1</propertyRef>
-        <propertyRef usage="required">test.property.2</propertyRef>
-    </group>
-</heliumDataModel>
\ No newline at end of file
--- a/buildframework/helium/tests/data/data_model_validation_property_test.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<heliumDataModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="..\tools\common\schema\helium_data_model.xsd">
-    <property>
-        <name>test.property.1</name>
-        <description>Test property one.</description>
-    </property>      
-    <group>
-        <name>testGroup</name>
-        <description/>
-        <propertyRef usage="required">test.property.1</propertyRef>
-    </group>
-</heliumDataModel>
\ No newline at end of file
--- a/buildframework/helium/tests/data/example_corernd.iconfig.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<build>
-    <config type="core">
-        <set name="CORE_NAME" value="RX-60_00_rnd"/>
-        <set name="ROFS2_NAME" value="RX-60_00.01_rnd"/>
-        <set name="ROFS3_NAME" value="RX-60_00_rnd"/>
-        <set name="LANGPACK_ID" value="01"/>
-        <set name="CUSTVARIANT_ID" value=""/>
-        <set name="PRODUCT_NAME" value="phone"/>
-        <set name="PRODUCT_TYPE" value="RX-60"/>
-        <set name="TYPE" value="rnd"/>
-        <set name="CORE_VERSION" value="V DFS79.92.0.0.1 RND"/>
-        <set name="LANGPACK_VERSION" value=""/>
-        <set name="ROFS3_VERSION" value="V DFS79.92.0.0.1 RND"/>
-        <set name="CORE_DIR" value="W:/output/release_flash_images/phone/rnd/core/RX-60_00_rnd"/>
-        <set name="ROFS2_DIR" value="W:/output/release_flash_images/phone/rnd/langpack/langpack_01/rofs2"/>
-        <set name="ROFS3_DIR" value="W:/output/release_flash_images/phone/rnd/customer/vanilla/rofs3"/>
-    </config>
-</build>
\ No newline at end of file
--- a/buildframework/helium/tests/data/flash_config/rom_image_config_test.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,117 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<build>
-    <config name="mc" abstract="true">
-        <set name="target.dir" value="${release.images.dir}"/>
-        <set name="today" value="$(TODAY)"/>
-        
-        <set name="rom.output.dir" value="${build.drive}\output\development_flash_images"/>
-        <set name="image.type" value="prd,rnd"/>
-        <set name="build.drive" value="${build.drive}"/>
-        <set name="build.version" value="0.0728.3.0.1"/>
-        
-        <!-- Template dirs  -->
-        <set name="core.image.path" value="${image.type}/core"/>
-        <set name="languagepack.image.path" value="${image.type}/language/${languagepack.id}_variant_${description}/"/>
-        <set name="customer.image.path" value="${image.type}/customer/vanilla/${customer.id}_variant_${description}"/>
-        <set name="flash.config.path" value="${customer.image.path}"/>
-        
-        <!-- Template outputdir  -->
-        <set name="flash.output.dir" value="${rom.output.dir}/${rommake.product.name}/${image.type}"/>
-        <set name="core.output.dir" value="${rom.output.dir}/${rommake.product.name}/${core.image.path}"/>
-        <set name="languagepack.output.dir" value="${rom.output.dir}/${rommake.product.name}/${languagepack.image.path}"/>
-        <set name="customer.output.dir" value="${rom.output.dir}/${rommake.product.name}/${customer.image.path}"/>
-        <set name="eraseuda.output.dir" value="${rom.output.dir}/${rommake.product.name}/${languagepack.image.path}"/>
-        
-        <!-- Flash image name -->
-        <set name="core.image.name" value="${version.product.type}_${build.version}_${image.type}"/>
-        <set name="languagepack.image.name" value="${version.product.type}_${build.version}_${image.type}_${languagepack.id}"/>
-        <set name="customer.image.name" value="${version.product.type}_${build.version}_${image.type}_${variant.id}_${build.id}_${customer.id}_${revision}"/>
-        <set name="eraseuda.image.name" value="${config.name}_${build.version}"/>
-        <set name="flash.config.name" value="${customer.image.name}.config.xml"/>
-        
-        <!-- default localisation settings -->
-        <set name="variation" value="western"/>
-        <set name="languagepack.revision" value="0"/>
-        <set name="description" value=""/>
-        
-        <!-- Do not build target in parallel by default -->
-        <set name="build.parallel" value="false"/>
-        
-        <!-- templates to generate the makefiles -->
-        <set name="output.makefile.filename" value="${rombuild.makefile.name}"/>
-        <set name="main.makefile.template" value="${build.drive}\mc\mc_config\mc_5132_config\rombuild\main.mk"/>
-        <set name="flash.makefile.template" value="${build.drive}\mc\mc_config\mc_5132_config\rombuild\flash.mk"/>
-        <set name="core.makefile.template" value="${build.drive}\mc\mc_config\mc_5132_config\rombuild\core.mk"/>
-        <set name="languagepack.makefile.template" value="${build.drive}\mc\mc_config\mc_5132_config\rombuild\languagepack.mk"/>
-        <set name="customer.makefile.template" value="${build.drive}\mc\mc_config\mc_5132_config\rombuild\customer.mk"/>
-        <set name="uda.makefile.template" value="${build.drive}\mc\mc_config\mc_5132_config\rombuild\uda.mk"/>
-        <set name="eraseuda.makefile.template" value="${build.drive}\mc\mc_config\mc_5132_config\rombuild\eraseuda.mk"/>
-        <set name="flash.config.template" value="${build.drive}\mc\mc_config\mc_5132_config\rombuild\template.config.xml"/>
-        
-        <config name="product" abstract="true">
-            <set name="config.name" value="product"/>
-            <set name="rommake.hwid" value="2048"/>
-            <set name="version.product.type" value="RM-235"/>
-            <set name="rommake.product.name" value="product"/>
-            <set name="rommake.product.type" value="RM-235"/>
-            
-            <!-- Language pack and Variant -->
-            <config name="variants" abstract="true">
-                <set name="target.dir" value="${release.images.dir}"/>
-                <set name="build.parallel" value="false"/>
-                <!-- core -->
-                <config type="core">
-                    <set name="core.id" value="00"/>
-                    <set name="image.type" value="rnd,prd"/>
-                </config>
-                
-                <!-- western group -->
-                <config name="western" abstract="true">
-                    <set name="build.parallel" value="true"/>
-                    <config type="languagepack">
-                        <set name="languagepack.id" value="01"/>
-                        <set name="default" value="01"/>
-                        <set name="languages" value="01,02,03,05,04,13"/>
-                        <set name="description" value="EURO1"/>
-                        <set name="variation" value="western"/>
-                        <set name="revision" value="0"/>
-                    </config>
-                    <config type="languagepack">
-                        <set name="languagepack.id" value="02"/>
-                        <set name="default" value="01"/>
-                        <set name="languages" value="01,02,03,14,05,18"/>
-                        <set name="description" value="EURO2"/>
-                    </config>
-                    <config type="languagepack">
-                        <set name="languagepack.id" value="23"/>
-                        <set name="default" value="01"/>
-                        <set name="languages" value="01,02,18,03,05"/>
-                        <set name="description" value="AFRICA2"/>
-                    </config>
-                </config>
-                
-                <config name="customer_roms" abstract="true">
-                    <set name="build.parallel" value="true"/>
-                    <config type="customer">
-                        <set name="customer.id" value="01"/>
-                        <set name="description" value="vanilla_customer_variant"/>
-                        <set name="compatible.languagepack" value="01,02,03"/>
-                    </config>
-                </config>
-            </config>
-            
-            <!-- china group -->
-            <config name="china" abstract="true">
-                <set name="build.parallel" value="true"/>
-                <set name="variation" value="china"/>
-                <config type="languagepack">
-                    <set name="languagepack.id" value="11"/>
-                    <set name="default" value="29"/>
-                    <set name="languages" value="29,157"/>
-                    <set name="description" value="TAIWAN"/>
-                </config>
-            </config>
-            
-        </config>
-    </config>
-</build>
\ No newline at end of file
--- a/buildframework/helium/tests/data/ido/ido_project/ido_project/classicui/layers.sysdef.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,163 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE SystemDefinition [
-<!ELEMENT SystemDefinition (systemModel?, build?)>
-<!ATTLIST SystemDefinition
-  name CDATA #REQUIRED
-  schema CDATA #REQUIRED
->
-<!-- all paths are relative to the root of the source -->
-
-<!-- System Model Section of DTD -->
-<!ELEMENT systemModel (layer+)>
-
-<!ELEMENT layer (logicalset* | module*)*>
-<!-- Kernel Services, Base Services, OS Services, Etc -->
-<!ATTLIST layer
-  name CDATA #REQUIRED
-  levels CDATA #IMPLIED
-  span CDATA #IMPLIED
->
-
-<!ELEMENT logicalset (logicalsubset* | module* | unit* | package* | prebuilt*)*>
- <!-- Generic OS services, Comms Services, etc -->
-<!ATTLIST logicalset 
-  name CDATA #REQUIRED
->
-
-<!ELEMENT logicalsubset (module* | unit* | package* | prebuilt*)*>
-<!-- Telephony services, Networking Services, etc -->
-<!ATTLIST logicalsubset 
-  name CDATA #REQUIRED
->
-
-<!ELEMENT module (component* | unit* | package* | prebuilt*)*>
-<!-- Screen Driver, Content Handling, etc -->
-<!ATTLIST module
-  name CDATA #REQUIRED
-  level CDATA #IMPLIED  
->
-
-<!ELEMENT component (unit* | package* | prebuilt*)*>
-<!-- units or packages -->
-<!ATTLIST component
-  name CDATA #REQUIRED
->
-
-<!ELEMENT unit EMPTY >
-<!-- must be buildable (bld.inf) -->
-<!-- bldFile will soon be removed in favour of mrp -->
-<!ATTLIST unit
-  unitID ID #REQUIRED
-  name CDATA #REQUIRED
-  mrp CDATA #REQUIRED
-  filter CDATA #IMPLIED
-  bldFile CDATA #REQUIRED
-  priority CDATA #IMPLIED
-  contract CDATA #IMPLIED
->
-
-<!ELEMENT package EMPTY >
-<!-- like a unit, but not buildable -->
-<!ATTLIST package
-  name CDATA #REQUIRED
-  mrp CDATA #REQUIRED
-  filter CDATA #IMPLIED
-  contract CDATA #IMPLIED
->
-
-<!ELEMENT prebuilt EMPTY>
-<!-- pre-built CBR component -->
-<!ATTLIST prebuilt
-  name CDATA #REQUIRED
-  version CDATA #REQUIRED
-  late (Y|N) #IMPLIED
-  filter CDATA #IMPLIED
-  contract CDATA #IMPLIED
->
-
-
-
-<!-- Build Section of DTD -->
-<!ELEMENT build (option* | target+ | targetList+ | unitList+ | configuration+)*>
-
-<!ELEMENT unitList (unitRef+)>
-<!-- e.g. common, beech, cedar, etc -->
-<!ATTLIST unitList
-  name ID #REQUIRED
-  description CDATA #REQUIRED
->
-
-<!ELEMENT unitRef EMPTY>
-<!-- Reference to unit in System Model -->
-<!ATTLIST unitRef
-  unit IDREF #REQUIRED
->
-
-<!ELEMENT targetList EMPTY>
-<!-- e.g. DEFAULT_7.0S, TOOLS_7.0S, etc -->
-<!ATTLIST targetList
-  name ID #REQUIRED
-  description CDATA #REQUIRED
-  target IDREFS #REQUIRED
->
-
-<!ELEMENT target EMPTY>
-<!-- e.g. WINS, WINSCW, ARM4, etc -->
-<!ATTLIST target
-  name ID #REQUIRED
-  abldTarget CDATA #REQUIRED
-  description CDATA #REQUIRED
->
-
-<!ELEMENT option EMPTY>
-<!-- e.g. Keepgoing, SaveSpace, etc -->
-<!ATTLIST option
-  name ID #REQUIRED
-  abldOption CDATA #REQUIRED
-  description CDATA #REQUIRED
-  enable (Y | N | y | n) #REQUIRED
->
-
-<!ELEMENT configuration (unitListRef+ | layerRef+ | task+)*>
-<!-- 7.0s, 8.0a, 8.0b, cuskit, etc -->
-<!ATTLIST configuration
-  name ID #REQUIRED
-  description CDATA #REQUIRED
-  filter CDATA #REQUIRED
->
-<!ELEMENT task ( unitListRef* , (buildLayer | specialInstructions))>
-
-<!ELEMENT unitListRef EMPTY>
-<!-- Reference to unitList -->
-<!ATTLIST unitListRef
-  unitList IDREF #REQUIRED
->
-
-<!ELEMENT layerRef EMPTY>
-<!-- Reference to named entity in the model, usually a layer -->
-<!ATTLIST layerRef
-  layerName CDATA #REQUIRED
->
-
-<!ELEMENT buildLayer EMPTY>
-<!-- bldmake, abld export, etc -->
-<!ATTLIST buildLayer
-  command CDATA #REQUIRED
-  targetList IDREFS #IMPLIED
-  unitParallel (Y | N | y | n) #REQUIRED
-  targetParallel (Y | N | y | n) #IMPLIED
->
-
-<!ELEMENT specialInstructions EMPTY>
-<!-- BootStrap -->
-<!ATTLIST specialInstructions
-  name CDATA #REQUIRED
-  cwd CDATA #REQUIRED
-  command CDATA #REQUIRED
->
-
-<!ENTITY layer_real_source_path "s60/mw/classicui">
-
-]>
-
-<SystemDefinition name="MCL" schema="1.4.0"/>
\ No newline at end of file
--- a/buildframework/helium/tests/data/ido/ido_project/ido_project/myapp/layers.sysdef.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,163 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE SystemDefinition [
-<!ELEMENT SystemDefinition (systemModel?, build?)>
-<!ATTLIST SystemDefinition
-  name CDATA #REQUIRED
-  schema CDATA #REQUIRED
->
-<!-- all paths are relative to the root of the source -->
-
-<!-- System Model Section of DTD -->
-<!ELEMENT systemModel (layer+)>
-
-<!ELEMENT layer (logicalset* | module*)*>
-<!-- Kernel Services, Base Services, OS Services, Etc -->
-<!ATTLIST layer
-  name CDATA #REQUIRED
-  levels CDATA #IMPLIED
-  span CDATA #IMPLIED
->
-
-<!ELEMENT logicalset (logicalsubset* | module* | unit* | package* | prebuilt*)*>
- <!-- Generic OS services, Comms Services, etc -->
-<!ATTLIST logicalset 
-  name CDATA #REQUIRED
->
-
-<!ELEMENT logicalsubset (module* | unit* | package* | prebuilt*)*>
-<!-- Telephony services, Networking Services, etc -->
-<!ATTLIST logicalsubset 
-  name CDATA #REQUIRED
->
-
-<!ELEMENT module (component* | unit* | package* | prebuilt*)*>
-<!-- Screen Driver, Content Handling, etc -->
-<!ATTLIST module
-  name CDATA #REQUIRED
-  level CDATA #IMPLIED  
->
-
-<!ELEMENT component (unit* | package* | prebuilt*)*>
-<!-- units or packages -->
-<!ATTLIST component
-  name CDATA #REQUIRED
->
-
-<!ELEMENT unit EMPTY >
-<!-- must be buildable (bld.inf) -->
-<!-- bldFile will soon be removed in favour of mrp -->
-<!ATTLIST unit
-  unitID ID #REQUIRED
-  name CDATA #REQUIRED
-  mrp CDATA #REQUIRED
-  filter CDATA #IMPLIED
-  bldFile CDATA #REQUIRED
-  priority CDATA #IMPLIED
-  contract CDATA #IMPLIED
->
-
-<!ELEMENT package EMPTY >
-<!-- like a unit, but not buildable -->
-<!ATTLIST package
-  name CDATA #REQUIRED
-  mrp CDATA #REQUIRED
-  filter CDATA #IMPLIED
-  contract CDATA #IMPLIED
->
-
-<!ELEMENT prebuilt EMPTY>
-<!-- pre-built CBR component -->
-<!ATTLIST prebuilt
-  name CDATA #REQUIRED
-  version CDATA #REQUIRED
-  late (Y|N) #IMPLIED
-  filter CDATA #IMPLIED
-  contract CDATA #IMPLIED
->
-
-
-
-<!-- Build Section of DTD -->
-<!ELEMENT build (option* | target+ | targetList+ | unitList+ | configuration+)*>
-
-<!ELEMENT unitList (unitRef+)>
-<!-- e.g. common, beech, cedar, etc -->
-<!ATTLIST unitList
-  name ID #REQUIRED
-  description CDATA #REQUIRED
->
-
-<!ELEMENT unitRef EMPTY>
-<!-- Reference to unit in System Model -->
-<!ATTLIST unitRef
-  unit IDREF #REQUIRED
->
-
-<!ELEMENT targetList EMPTY>
-<!-- e.g. DEFAULT_7.0S, TOOLS_7.0S, etc -->
-<!ATTLIST targetList
-  name ID #REQUIRED
-  description CDATA #REQUIRED
-  target IDREFS #REQUIRED
->
-
-<!ELEMENT target EMPTY>
-<!-- e.g. WINS, WINSCW, ARM4, etc -->
-<!ATTLIST target
-  name ID #REQUIRED
-  abldTarget CDATA #REQUIRED
-  description CDATA #REQUIRED
->
-
-<!ELEMENT option EMPTY>
-<!-- e.g. Keepgoing, SaveSpace, etc -->
-<!ATTLIST option
-  name ID #REQUIRED
-  abldOption CDATA #REQUIRED
-  description CDATA #REQUIRED
-  enable (Y | N | y | n) #REQUIRED
->
-
-<!ELEMENT configuration (unitListRef+ | layerRef+ | task+)*>
-<!-- 7.0s, 8.0a, 8.0b, cuskit, etc -->
-<!ATTLIST configuration
-  name ID #REQUIRED
-  description CDATA #REQUIRED
-  filter CDATA #REQUIRED
->
-<!ELEMENT task ( unitListRef* , (buildLayer | specialInstructions))>
-
-<!ELEMENT unitListRef EMPTY>
-<!-- Reference to unitList -->
-<!ATTLIST unitListRef
-  unitList IDREF #REQUIRED
->
-
-<!ELEMENT layerRef EMPTY>
-<!-- Reference to named entity in the model, usually a layer -->
-<!ATTLIST layerRef
-  layerName CDATA #REQUIRED
->
-
-<!ELEMENT buildLayer EMPTY>
-<!-- bldmake, abld export, etc -->
-<!ATTLIST buildLayer
-  command CDATA #REQUIRED
-  targetList IDREFS #IMPLIED
-  unitParallel (Y | N | y | n) #REQUIRED
-  targetParallel (Y | N | y | n) #IMPLIED
->
-
-<!ELEMENT specialInstructions EMPTY>
-<!-- BootStrap -->
-<!ATTLIST specialInstructions
-  name CDATA #REQUIRED
-  cwd CDATA #REQUIRED
-  command CDATA #REQUIRED
->
-
-<!ENTITY layer_real_source_path "s60/app/myapp">
-
-]>
-
-<SystemDefinition name="MCL" schema="1.4.0"/>
\ No newline at end of file
--- a/buildframework/helium/tests/data/ido/ido_project/ido_project/xmlui/layers.sysdef.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,161 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE SystemDefinition [
-<!ELEMENT SystemDefinition (systemModel?, build?)>
-<!ATTLIST SystemDefinition
-  name CDATA #REQUIRED
-  schema CDATA #REQUIRED
->
-<!-- all paths are relative to the root of the source -->
-
-<!-- System Model Section of DTD -->
-<!ELEMENT systemModel (layer+)>
-
-<!ELEMENT layer (logicalset* | module*)*>
-<!-- Kernel Services, Base Services, OS Services, Etc -->
-<!ATTLIST layer
-  name CDATA #REQUIRED
-  levels CDATA #IMPLIED
-  span CDATA #IMPLIED
->
-
-<!ELEMENT logicalset (logicalsubset* | module* | unit* | package* | prebuilt*)*>
- <!-- Generic OS services, Comms Services, etc -->
-<!ATTLIST logicalset 
-  name CDATA #REQUIRED
->
-
-<!ELEMENT logicalsubset (module* | unit* | package* | prebuilt*)*>
-<!-- Telephony services, Networking Services, etc -->
-<!ATTLIST logicalsubset 
-  name CDATA #REQUIRED
->
-
-<!ELEMENT module (component* | unit* | package* | prebuilt*)*>
-<!-- Screen Driver, Content Handling, etc -->
-<!ATTLIST module
-  name CDATA #REQUIRED
-  level CDATA #IMPLIED  
->
-
-<!ELEMENT component (unit* | package* | prebuilt*)*>
-<!-- units or packages -->
-<!ATTLIST component
-  name CDATA #REQUIRED
->
-
-<!ELEMENT unit EMPTY >
-<!-- must be buildable (bld.inf) -->
-<!-- bldFile will soon be removed in favour of mrp -->
-<!ATTLIST unit
-  unitID ID #REQUIRED
-  name CDATA #REQUIRED
-  mrp CDATA #REQUIRED
-  filter CDATA #IMPLIED
-  bldFile CDATA #REQUIRED
-  priority CDATA #IMPLIED
-  contract CDATA #IMPLIED
->
-
-<!ELEMENT package EMPTY >
-<!-- like a unit, but not buildable -->
-<!ATTLIST package
-  name CDATA #REQUIRED
-  mrp CDATA #REQUIRED
-  filter CDATA #IMPLIED
-  contract CDATA #IMPLIED
->
-
-<!ELEMENT prebuilt EMPTY>
-<!-- pre-built CBR component -->
-<!ATTLIST prebuilt
-  name CDATA #REQUIRED
-  version CDATA #REQUIRED
-  late (Y|N) #IMPLIED
-  filter CDATA #IMPLIED
-  contract CDATA #IMPLIED
->
-
-
-
-<!-- Build Section of DTD -->
-<!ELEMENT build (option* | target+ | targetList+ | unitList+ | configuration+)*>
-
-<!ELEMENT unitList (unitRef+)>
-<!-- e.g. common, beech, cedar, etc -->
-<!ATTLIST unitList
-  name ID #REQUIRED
-  description CDATA #REQUIRED
->
-
-<!ELEMENT unitRef EMPTY>
-<!-- Reference to unit in System Model -->
-<!ATTLIST unitRef
-  unit IDREF #REQUIRED
->
-
-<!ELEMENT targetList EMPTY>
-<!-- e.g. DEFAULT_7.0S, TOOLS_7.0S, etc -->
-<!ATTLIST targetList
-  name ID #REQUIRED
-  description CDATA #REQUIRED
-  target IDREFS #REQUIRED
->
-
-<!ELEMENT target EMPTY>
-<!-- e.g. WINS, WINSCW, ARM4, etc -->
-<!ATTLIST target
-  name ID #REQUIRED
-  abldTarget CDATA #REQUIRED
-  description CDATA #REQUIRED
->
-
-<!ELEMENT option EMPTY>
-<!-- e.g. Keepgoing, SaveSpace, etc -->
-<!ATTLIST option
-  name ID #REQUIRED
-  abldOption CDATA #REQUIRED
-  description CDATA #REQUIRED
-  enable (Y | N | y | n) #REQUIRED
->
-
-<!ELEMENT configuration (unitListRef+ | layerRef+ | task+)*>
-<!-- 7.0s, 8.0a, 8.0b, cuskit, etc -->
-<!ATTLIST configuration
-  name ID #REQUIRED
-  description CDATA #REQUIRED
-  filter CDATA #REQUIRED
->
-<!ELEMENT task ( unitListRef* , (buildLayer | specialInstructions))>
-
-<!ELEMENT unitListRef EMPTY>
-<!-- Reference to unitList -->
-<!ATTLIST unitListRef
-  unitList IDREF #REQUIRED
->
-
-<!ELEMENT layerRef EMPTY>
-<!-- Reference to named entity in the model, usually a layer -->
-<!ATTLIST layerRef
-  layerName CDATA #REQUIRED
->
-
-<!ELEMENT buildLayer EMPTY>
-<!-- bldmake, abld export, etc -->
-<!ATTLIST buildLayer
-  command CDATA #REQUIRED
-  targetList IDREFS #IMPLIED
-  unitParallel (Y | N | y | n) #REQUIRED
-  targetParallel (Y | N | y | n) #IMPLIED
->
-
-<!ELEMENT specialInstructions EMPTY>
-<!-- BootStrap -->
-<!ATTLIST specialInstructions
-  name CDATA #REQUIRED
-  cwd CDATA #REQUIRED
-  command CDATA #REQUIRED
->
-<!ENTITY layer_real_source_path "s60/mw/xmlui">
-]>
-
-<SystemDefinition name="MCL" schema="1.4.0"/>
\ No newline at end of file
--- a/buildframework/helium/tests/data/iqrf/imaker_5250.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1279 +0,0 @@
-<?xml version="1.0" encoding="ASCII"?>
-<IMaker xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns="iqrf" query="help-config">
-  <result>
-    <interfaces name="An interface">
-      <configurationElements name="BLDROBY" description="For passing extra oby files (from command line) to the buildrom.pl" values="(string)"/>
-      <configurationElements name="BLDROM_OPT" description="The default buildrom.pl options" values="(string)"/>
-      <configurationElements name="BLDROPT" description="For passing extra parameters (from command line) to the buildrom.pl" values="(string)"/>
-      <configurationElements name="CONFIGROOT" description="Define the default configuration root directory." values="(string)"/>
-      <configurationElements name="CORE_CDPROMFILE" description="The name of the core Code Demand Paging rom file (Code paging)." values="(string)"/>
-      <configurationElements name="CORE_DIR" description="The working directory, when creating core image" values="(string)"/>
-      <configurationElements name="CORE_E2FNAME" description="The core elf2flash filename. This is the final core flash file." values="(string)"/>
-      <configurationElements name="CORE_FWIDFILE" description="The (generated) _core_fwid.txt file name." values="(string)"/>
-      <configurationElements name="CORE_IMEISVFILE" description="The (generated) _core_imeisv.txt file name." values="(string)"/>
-      <configurationElements name="CORE_IMEISVINFO" description="The content string for the imeisv.txt file." values="(string)"/>
-      <configurationElements name="CORE_MODELFILE" description="The (generated) _core_model.txt file name." values="(string)"/>
-      <configurationElements name="CORE_MODELINFO" description="The content string for the model.txt file." values="(string)"/>
-      <configurationElements name="CORE_MSTOBY" description="The generated master oby file name, which includes the CORE_OBY files" values="(string)"/>
-      <configurationElements name="CORE_NAME" description="The full name of the core image" values="(string)"/>
-      <configurationElements name="CORE_NDPROMFILE" description="The name of the core Non Demand Paging rom file." values="(string)"/>
-      <configurationElements name="CORE_OBY" description="The oby file(s) included to the core image creation" values="(string)"/>
-      <configurationElements name="CORE_ODPROMFILE" description="The name of the core On Demand Paging rom file (Rom paging)." values="(string)"/>
-      <configurationElements name="CORE_OPT" description="The core specific buildrom options" values="(string)"/>
-      <configurationElements name="CORE_PLATFILE" description="The (generated) _core_platform.txt file name." values="(string)"/>
-      <configurationElements name="CORE_PLATINFO" description="The content string for the fwid.txt file." values="(string)"/>
-      <configurationElements name="CORE_PRODFILE" description="The (generated) _core_product.txt file name." values="(string)"/>
-      <configurationElements name="CORE_ROFSFILE" description="The name of the core rofs file." values="(string)"/>
-      <configurationElements name="CORE_ROMVER" description="The rom version parameter passed to the version.iby" values="(string)"/>
-      <configurationElements name="CORE_SWVERFILE" description="The (generated) _core_sw.txt version file name. This generated file is included in the CORE_VERIBY file." values="(string)"/>
-      <configurationElements name="CORE_SWVERINFO" description="The content string for the sw.txt file." values="(string)"/>
-      <configurationElements name="CORE_TIME" description="The time defined to the core image" values="(string)"/>
-      <configurationElements name="CORE_UDEBFILE" description="The name of the core udeb file. See USE_UDEB." values="(string)"/>
-      <configurationElements name="CORE_VERIBY" description="The name of the generated core *version.iby, which included version files and info" values="(string)"/>
-      <configurationElements name="CORE_VERSION" description="The version of the core. Used in sw.txt generation." values="(string)"/>
-      <configurationElements name="COREPLAT_NAME" description="Name of the core platform" values="(string)"/>
-      <configurationElements name="CUSTVARIANT_DIR" description="Configure the directory where to included the customer variant content. By default all content under /content is included to the image as it exists in the folder." values="(string)"/>
-      <configurationElements name="DEFAULT_LANGUAGE" description="Default language is the language where the device will boot to (SIM language overrides this selection)" values="(string)"/>
-      <configurationElements name="FLASH_EXT" description="The flash file extension." values="(string)"/>
-      <configurationElements name="HWID" description="Hardware Id" values="([0-9]4)"/>
-      <configurationElements name="HWID_LIST" description="Possible Hardware Ids of the product." values="([0-9]4)*"/>
-      <configurationElements name="KEEPTEMP" description="Keep the buildrom.pl temp files (copied to the WORKDIR). E.g. tmp1.oby tmp2.oby..tmp9.oby" values="([0|1])"/>
-      <configurationElements name="LABEL" description="A label to the NAME of the image" values="(string)"/>
-      <configurationElements name="LANGID" description="Language id used in the lang.txt generation" values="(string)"/>
-      <configurationElements name="LANGUAGES" description="Languages are the languages that are taken to the image (SC language is is defaulting to 01 in languages.txt)" values="(string)"/>
-      <configurationElements name="NAME" description="The name of the image" values="(string)"/>
-      <configurationElements name="OPERATOR_OBY" description="The name for generated operator oby, which is a file generated based on an operator specific content." values="(string)"/>
-      <configurationElements name="OPERATOR_OBYGEN" description="The name, path, rule for collecting content to the operator specific oby (E.g. operator.oby | /epoc32/rom/include/operator | *.iby collects all iby files from operator folder)." values="(string)|(string)|(string)"/>
-      <configurationElements name="PRODUCT_MODEL" description="The model of the product" values="(string)"/>
-      <configurationElements name="PRODUCT_NAME" description="Name of the product" values="(string)"/>
-      <configurationElements name="PRODUCT_REVISION" description="The reision of the product" values="(string)"/>
-      <configurationElements name="RELEASEDIR" description="The RELEASEDIR is used in the RELEASE step that copies the created files to a separate folder defined by the RELEASEDIR." values="(string)"/>
-      <configurationElements name="RELEASEFILES" description="The RELEASEFILES define the source files that are copied in the RELEASE step. The files must be given as a space delimited list. Wildcards can be used. E.g. \epoc32\rombuild\product\theflash.fpsx \epoc32\rombuild\product\*.log" values="(string)"/>
-      <configurationElements name="RELEASENAME" description="The RELEASENAME is used in the RELEASE step that copies the created files to a separate folder with a new name." values="(string)"/>
-      <configurationElements name="ROFS2_DIR" description="The working directory, when creating the rofs2 image" values="(string)"/>
-      <configurationElements name="ROFS2_E2FNAME" description="The rofs2 elf2flash filename. This is the final rofs2 flash file." values="(string)"/>
-      <configurationElements name="ROFS2_FOOTER" description="This variable can contain a footer section for the rofs2 master oby." values="(string)"/>
-      <configurationElements name="ROFS2_FWIDFILE" description="The (generated) _rofs2_fwid.txt file name." values="(string)"/>
-      <configurationElements name="ROFS2_FWIDINFO" description="The content string for the fwid2.txt file." values="(string)"/>
-      <configurationElements name="ROFS2_HEADER" description="This variable can contain a header section for the rofs2 master oby." values="(string)"/>
-      <configurationElements name="ROFS2_MSTOBY" description="The (generated) rofs2 master oby file name. This file includes the ROFS2_OBY files and other parameters" values="(string)"/>
-      <configurationElements name="ROFS2_NAME" description="The full name of the rofs2 image" values="(string)"/>
-      <configurationElements name="ROFS2_OBY" description="The oby file(s) included to the rofs2 image creation" values="(string)"/>
-      <configurationElements name="ROFS2_OPT" description="The rofs2 specific buildrom options" values="(string)"/>
-      <configurationElements name="ROFS2_ROMVER" description="The rofs2 ROM version string" values="(string)"/>
-      <configurationElements name="ROFS2_TIME" description="The time defined to the rofs2 image." values="(string)"/>
-      <configurationElements name="ROFS2_VERIBY" description="The (generated) version iby file name for the rofs2 image. This file included the version text files and other version parameters." values="(string)"/>
-      <configurationElements name="ROFS3_CUSTFILE" description="The (generated) source file name for customersw.txt." values="(string)"/>
-      <configurationElements name="ROFS3_CUSTINFO" description="The content string for the customersw.txt." values="(string)"/>
-      <configurationElements name="ROFS3_DIR" description="The working directory, when creating the rofs3 image" values="(string)"/>
-      <configurationElements name="ROFS3_E2FNAME" description="The rofs3 elf2flash filename. This is the final rofs3 flash file." values="(string)"/>
-      <configurationElements name="ROFS3_FOOTER" description="This variable can contain a footer section for the rofs3 master oby." values="(string)"/>
-      <configurationElements name="ROFS3_FWIDFILE" description="The (generated) _rofs3_fwid.txt file name." values="(string)"/>
-      <configurationElements name="ROFS3_FWIDINFO" description="The content string for the fwid3.txt file." values="(string)"/>
-      <configurationElements name="ROFS3_HEADER" description="This variable can contain a header section for the rofs3 master oby." values="(string)"/>
-      <configurationElements name="ROFS3_MSTOBY" description="The (generated) version iby file name for the rofs3 image. This file included the version text files and other version parameters." values="(string)"/>
-      <configurationElements name="ROFS3_NAME" description="The full name of the rofs3 image" values="(string)"/>
-      <configurationElements name="ROFS3_OBY" description="The oby file(s) included to the rofs3 image creation" values="(string)"/>
-      <configurationElements name="ROFS3_OPT" description="The rofs3 specific buildrom options" values="(string)"/>
-      <configurationElements name="ROFS3_ROMVER" description="The rofs3 ROM version string" values="(string)"/>
-      <configurationElements name="ROFS3_TIME" description="The time defined to the rofs3 image." values="(string)"/>
-      <configurationElements name="ROFS3_VERIBY" description="The (generated) version iby file name for the rofs3 image. This file included the version text files and other version parameters." values="(string)"/>
-      <configurationElements name="SOS_VERSION" description="Symbian OS version number. The value is used in the version info generation (platform.txt).(see USE_VERGEN)" values="([0-9]+.[0-9]+)"/>
-      <configurationElements name="SWUPD_EXT" description="The software update file extension." values="(string)"/>
-      <configurationElements name="TYPE" description="Defines the image type." values="(rnd|prd|subcon)"/>
-      <configurationElements name="USE_OVERRIDE" description="Define whether the override.pm Buildrom.pl plugin is used (Includes automatically also \epoc32\rom\override.oby)." values="([0|1])"/>
-      <configurationElements name="USE_PAGING" description="Define the usage of On Demand Pagin (ODP). (E.g. 0,rom,code)." values="((0|rom|code[:[(1|2|3)]+]?))"/>
-      <configurationElements name="USE_ROFS" description="Define the rofs sections in use. A comma separated list can be given of possible values. (E.g. 1,2,3)." values="([[dummy|]0..6][,[dummy|]0..6]*)"/>
-      <configurationElements name="USE_ROMFILE" description="Define whether the \epoc32\rombuild\romfiles.txt is used. Files in romfiles are automatically moved to ROM, everything else in core is moved to ROFS1." values="([0|1])"/>
-      <configurationElements name="USE_ROMSYMGEN" description="Generate the rom symbol file. 0=Do not generate, 1=Generate" values="([0|1])"/>
-      <configurationElements name="USE_UDEB" description="Include the usage of the debug binary *.txt to define the list of binaries that are taken from udeb folder instead of the urel." values="([0|1|full])"/>
-      <configurationElements name="USE_VERGEN" description="Use iMaker version info generation" values="([0|1])"/>
-      <configurationElements name="BLDROBY" description="For passing extra oby files (from command line) to the buildrom.pl" values="(string)"/>
-      <configurationElements name="BLDROM_OPT" description="The default buildrom.pl options" values="(string)"/>
-      <configurationElements name="BLDROPT" description="For passing extra parameters (from command line) to the buildrom.pl" values="(string)"/>
-      <configurationElements name="CONFIGROOT" description="Define the default configuration root directory." values="(string)"/>
-      <configurationElements name="CORE_CDPROMFILE" description="The name of the core Code Demand Paging rom file (Code paging)." values="(string)"/>
-      <configurationElements name="CORE_DIR" description="The working directory, when creating core image" values="(string)"/>
-      <configurationElements name="CORE_E2FNAME" description="The core elf2flash filename. This is the final core flash file." values="(string)"/>
-      <configurationElements name="CORE_FWIDFILE" description="The (generated) _core_fwid.txt file name." values="(string)"/>
-      <configurationElements name="CORE_IMEISVFILE" description="The (generated) _core_imeisv.txt file name." values="(string)"/>
-      <configurationElements name="CORE_IMEISVINFO" description="The content string for the imeisv.txt file." values="(string)"/>
-      <configurationElements name="CORE_MODELFILE" description="The (generated) _core_model.txt file name." values="(string)"/>
-      <configurationElements name="CORE_MODELINFO" description="The content string for the model.txt file." values="(string)"/>
-      <configurationElements name="CORE_MSTOBY" description="The generated master oby file name, which includes the CORE_OBY files" values="(string)"/>
-      <configurationElements name="CORE_NAME" description="The full name of the core image" values="(string)"/>
-      <configurationElements name="CORE_NDPROMFILE" description="The name of the core Non Demand Paging rom file." values="(string)"/>
-      <configurationElements name="CORE_OBY" description="The oby file(s) included to the core image creation" values="(string)"/>
-      <configurationElements name="CORE_ODPROMFILE" description="The name of the core On Demand Paging rom file (Rom paging)." values="(string)"/>
-      <configurationElements name="CORE_OPT" description="The core specific buildrom options" values="(string)"/>
-      <configurationElements name="CORE_PLATFILE" description="The (generated) _core_platform.txt file name." values="(string)"/>
-      <configurationElements name="CORE_PLATINFO" description="The content string for the fwid.txt file." values="(string)"/>
-      <configurationElements name="CORE_PRODFILE" description="The (generated) _core_product.txt file name." values="(string)"/>
-      <configurationElements name="CORE_ROFSFILE" description="The name of the core rofs file." values="(string)"/>
-      <configurationElements name="CORE_ROMVER" description="The rom version parameter passed to the version.iby" values="(string)"/>
-      <configurationElements name="CORE_SWVERFILE" description="The (generated) _core_sw.txt version file name. This generated file is included in the CORE_VERIBY file." values="(string)"/>
-      <configurationElements name="CORE_SWVERINFO" description="The content string for the sw.txt file." values="(string)"/>
-      <configurationElements name="CORE_TIME" description="The time defined to the core image" values="(string)"/>
-      <configurationElements name="CORE_UDEBFILE" description="The name of the core udeb file. See USE_UDEB." values="(string)"/>
-      <configurationElements name="CORE_VERIBY" description="The name of the generated core *version.iby, which included version files and info" values="(string)"/>
-      <configurationElements name="CORE_VERSION" description="The version of the core. Used in sw.txt generation." values="(string)"/>
-      <configurationElements name="COREPLAT_NAME" description="Name of the core platform" values="(string)"/>
-      <configurationElements name="CUSTVARIANT_DIR" description="Configure the directory where to included the customer variant content. By default all content under /content is included to the image as it exists in the folder." values="(string)"/>
-      <configurationElements name="DEFAULT_LANGUAGE" description="Default language is the language where the device will boot to (SIM language overrides this selection)" values="(string)"/>
-      <configurationElements name="FLASH_EXT" description="The flash file extension." values="(string)"/>
-      <configurationElements name="HWID" description="Hardware Id" values="([0-9]4)"/>
-      <configurationElements name="HWID_LIST" description="Possible Hardware Ids of the product." values="([0-9]4)*"/>
-      <configurationElements name="KEEPTEMP" description="Keep the buildrom.pl temp files (copied to the WORKDIR). E.g. tmp1.oby tmp2.oby..tmp9.oby" values="([0|1])"/>
-      <configurationElements name="LABEL" description="A label to the NAME of the image" values="(string)"/>
-      <configurationElements name="LANGID" description="Language id used in the lang.txt generation" values="(string)"/>
-      <configurationElements name="LANGUAGES" description="Languages are the languages that are taken to the image (SC language is is defaulting to 01 in languages.txt)" values="(string)"/>
-      <configurationElements name="NAME" description="The name of the image" values="(string)"/>
-      <configurationElements name="OPERATOR_OBY" description="The name for generated operator oby, which is a file generated based on an operator specific content." values="(string)"/>
-      <configurationElements name="OPERATOR_OBYGEN" description="The name, path, rule for collecting content to the operator specific oby (E.g. operator.oby | /epoc32/rom/include/operator | *.iby collects all iby files from operator folder)." values="(string)|(string)|(string)"/>
-      <configurationElements name="PRODUCT_MODEL" description="The model of the product" values="(string)"/>
-      <configurationElements name="PRODUCT_NAME" description="Name of the product" values="(string)"/>
-      <configurationElements name="PRODUCT_REVISION" description="The reision of the product" values="(string)"/>
-      <configurationElements name="RELEASEDIR" description="The RELEASEDIR is used in the RELEASE step that copies the created files to a separate folder defined by the RELEASEDIR." values="(string)"/>
-      <configurationElements name="RELEASEFILES" description="The RELEASEFILES define the source files that are copied in the RELEASE step. The files must be given as a space delimited list. Wildcards can be used. E.g. \epoc32\rombuild\product\theflash.fpsx \epoc32\rombuild\product\*.log" values="(string)"/>
-      <configurationElements name="RELEASENAME" description="The RELEASENAME is used in the RELEASE step that copies the created files to a separate folder with a new name." values="(string)"/>
-      <configurationElements name="ROFS2_DIR" description="The working directory, when creating the rofs2 image" values="(string)"/>
-      <configurationElements name="ROFS2_E2FNAME" description="The rofs2 elf2flash filename. This is the final rofs2 flash file." values="(string)"/>
-      <configurationElements name="ROFS2_FOOTER" description="This variable can contain a footer section for the rofs2 master oby." values="(string)"/>
-      <configurationElements name="ROFS2_FWIDFILE" description="The (generated) _rofs2_fwid.txt file name." values="(string)"/>
-      <configurationElements name="ROFS2_FWIDINFO" description="The content string for the fwid2.txt file." values="(string)"/>
-      <configurationElements name="ROFS2_HEADER" description="This variable can contain a header section for the rofs2 master oby." values="(string)"/>
-      <configurationElements name="ROFS2_MSTOBY" description="The (generated) rofs2 master oby file name. This file includes the ROFS2_OBY files and other parameters" values="(string)"/>
-      <configurationElements name="ROFS2_NAME" description="The full name of the rofs2 image" values="(string)"/>
-      <configurationElements name="ROFS2_OBY" description="The oby file(s) included to the rofs2 image creation" values="(string)"/>
-      <configurationElements name="ROFS2_OPT" description="The rofs2 specific buildrom options" values="(string)"/>
-      <configurationElements name="ROFS2_ROMVER" description="The rofs2 ROM version string" values="(string)"/>
-      <configurationElements name="ROFS2_TIME" description="The time defined to the rofs2 image." values="(string)"/>
-      <configurationElements name="ROFS2_VERIBY" description="The (generated) version iby file name for the rofs2 image. This file included the version text files and other version parameters." values="(string)"/>
-      <configurationElements name="ROFS3_CUSTFILE" description="The (generated) source file name for customersw.txt." values="(string)"/>
-      <configurationElements name="ROFS3_CUSTINFO" description="The content string for the customersw.txt." values="(string)"/>
-      <configurationElements name="ROFS3_DIR" description="The working directory, when creating the rofs3 image" values="(string)"/>
-      <configurationElements name="ROFS3_E2FNAME" description="The rofs3 elf2flash filename. This is the final rofs3 flash file." values="(string)"/>
-      <configurationElements name="ROFS3_FOOTER" description="This variable can contain a footer section for the rofs3 master oby." values="(string)"/>
-      <configurationElements name="ROFS3_FWIDFILE" description="The (generated) _rofs3_fwid.txt file name." values="(string)"/>
-      <configurationElements name="ROFS3_FWIDINFO" description="The content string for the fwid3.txt file." values="(string)"/>
-      <configurationElements name="ROFS3_HEADER" description="This variable can contain a header section for the rofs3 master oby." values="(string)"/>
-      <configurationElements name="ROFS3_MSTOBY" description="The (generated) version iby file name for the rofs3 image. This file included the version text files and other version parameters." values="(string)"/>
-      <configurationElements name="ROFS3_NAME" description="The full name of the rofs3 image" values="(string)"/>
-      <configurationElements name="ROFS3_OBY" description="The oby file(s) included to the rofs3 image creation" values="(string)"/>
-      <configurationElements name="ROFS3_OPT" description="The rofs3 specific buildrom options" values="(string)"/>
-      <configurationElements name="ROFS3_ROMVER" description="The rofs3 ROM version string" values="(string)"/>
-      <configurationElements name="ROFS3_TIME" description="The time defined to the rofs3 image." values="(string)"/>
-      <configurationElements name="ROFS3_VERIBY" description="The (generated) version iby file name for the rofs3 image. This file included the version text files and other version parameters." values="(string)"/>
-      <configurationElements name="SOS_VERSION" description="Symbian OS version number. The value is used in the version info generation (platform.txt).(see USE_VERGEN)" values="([0-9]+.[0-9]+)"/>
-      <configurationElements name="SWUPD_EXT" description="The software update file extension." values="(string)"/>
-      <configurationElements name="TYPE" description="Defines the image type." values="(rnd|prd|subcon)"/>
-      <configurationElements name="USE_OVERRIDE" description="Define whether the override.pm Buildrom.pl plugin is used (Includes automatically also \epoc32\rom\override.oby)." values="([0|1])"/>
-      <configurationElements name="USE_PAGING" description="Define the usage of On Demand Pagin (ODP). (E.g. 0,rom,code)." values="((0|rom|code[:[(1|2|3)]+]?))"/>
-      <configurationElements name="USE_ROFS" description="Define the rofs sections in use. A comma separated list can be given of possible values. (E.g. 1,2,3)." values="([[dummy|]0..6][,[dummy|]0..6]*)"/>
-      <configurationElements name="USE_ROMFILE" description="Define whether the \epoc32\rombuild\romfiles.txt is used. Files in romfiles are automatically moved to ROM, everything else in core is moved to ROFS1." values="([0|1])"/>
-      <configurationElements name="USE_ROMSYMGEN" description="Generate the rom symbol file. 0=Do not generate, 1=Generate" values="([0|1])"/>
-      <configurationElements name="USE_UDEB" description="Include the usage of the debug binary *.txt to define the list of binaries that are taken from udeb folder instead of the urel." values="([0|1|full])"/>
-      <configurationElements name="USE_VERGEN" description="Use iMaker version info generation" values="([0|1])"/>
-      <configurationElements name="BLDROBY" description="For passing extra oby files (from command line) to the buildrom.pl" values="(string)"/>
-      <configurationElements name="BLDROM_OPT" description="The default buildrom.pl options" values="(string)"/>
-      <configurationElements name="BLDROPT" description="For passing extra parameters (from command line) to the buildrom.pl" values="(string)"/>
-      <configurationElements name="CONFIGROOT" description="Define the default configuration root directory." values="(string)"/>
-      <configurationElements name="CORE_CDPROMFILE" description="The name of the core Code Demand Paging rom file (Code paging)." values="(string)"/>
-      <configurationElements name="CORE_DIR" description="The working directory, when creating core image" values="(string)"/>
-      <configurationElements name="CORE_E2FNAME" description="The core elf2flash filename. This is the final core flash file." values="(string)"/>
-      <configurationElements name="CORE_FWIDFILE" description="The (generated) _core_fwid.txt file name." values="(string)"/>
-      <configurationElements name="CORE_IMEISVFILE" description="The (generated) _core_imeisv.txt file name." values="(string)"/>
-      <configurationElements name="CORE_IMEISVINFO" description="The content string for the imeisv.txt file." values="(string)"/>
-      <configurationElements name="CORE_MODELFILE" description="The (generated) _core_model.txt file name." values="(string)"/>
-      <configurationElements name="CORE_MODELINFO" description="The content string for the model.txt file." values="(string)"/>
-      <configurationElements name="CORE_MSTOBY" description="The generated master oby file name, which includes the CORE_OBY files" values="(string)"/>
-      <configurationElements name="CORE_NAME" description="The full name of the core image" values="(string)"/>
-      <configurationElements name="CORE_NDPROMFILE" description="The name of the core Non Demand Paging rom file." values="(string)"/>
-      <configurationElements name="CORE_OBY" description="The oby file(s) included to the core image creation" values="(string)"/>
-      <configurationElements name="CORE_ODPROMFILE" description="The name of the core On Demand Paging rom file (Rom paging)." values="(string)"/>
-      <configurationElements name="CORE_OPT" description="The core specific buildrom options" values="(string)"/>
-      <configurationElements name="CORE_PLATFILE" description="The (generated) _core_platform.txt file name." values="(string)"/>
-      <configurationElements name="CORE_PLATINFO" description="The content string for the fwid.txt file." values="(string)"/>
-      <configurationElements name="CORE_PRODFILE" description="The (generated) _core_product.txt file name." values="(string)"/>
-      <configurationElements name="CORE_ROFSFILE" description="The name of the core rofs file." values="(string)"/>
-      <configurationElements name="CORE_ROMVER" description="The rom version parameter passed to the version.iby" values="(string)"/>
-      <configurationElements name="CORE_SWVERFILE" description="The (generated) _core_sw.txt version file name. This generated file is included in the CORE_VERIBY file." values="(string)"/>
-      <configurationElements name="CORE_SWVERINFO" description="The content string for the sw.txt file." values="(string)"/>
-      <configurationElements name="CORE_TIME" description="The time defined to the core image" values="(string)"/>
-      <configurationElements name="CORE_UDEBFILE" description="The name of the core udeb file. See USE_UDEB." values="(string)"/>
-      <configurationElements name="CORE_VERIBY" description="The name of the generated core *version.iby, which included version files and info" values="(string)"/>
-      <configurationElements name="CORE_VERSION" description="The version of the core. Used in sw.txt generation." values="(string)"/>
-      <configurationElements name="COREPLAT_NAME" description="Name of the core platform" values="(string)"/>
-      <configurationElements name="CUSTVARIANT_DIR" description="Configure the directory where to included the customer variant content. By default all content under /content is included to the image as it exists in the folder." values="(string)"/>
-      <configurationElements name="DEFAULT_LANGUAGE" description="Default language is the language where the device will boot to (SIM language overrides this selection)" values="(string)"/>
-      <configurationElements name="FLASH_EXT" description="The flash file extension." values="(string)"/>
-      <configurationElements name="HWID" description="Hardware Id" values="([0-9]4)"/>
-      <configurationElements name="HWID_LIST" description="Possible Hardware Ids of the product." values="([0-9]4)*"/>
-      <configurationElements name="KEEPTEMP" description="Keep the buildrom.pl temp files (copied to the WORKDIR). E.g. tmp1.oby tmp2.oby..tmp9.oby" values="([0|1])"/>
-      <configurationElements name="LABEL" description="A label to the NAME of the image" values="(string)"/>
-      <configurationElements name="LANGID" description="Language id used in the lang.txt generation" values="(string)"/>
-      <configurationElements name="LANGUAGES" description="Languages are the languages that are taken to the image (SC language is is defaulting to 01 in languages.txt)" values="(string)"/>
-      <configurationElements name="NAME" description="The name of the image" values="(string)"/>
-      <configurationElements name="OPERATOR_OBY" description="The name for generated operator oby, which is a file generated based on an operator specific content." values="(string)"/>
-      <configurationElements name="OPERATOR_OBYGEN" description="The name, path, rule for collecting content to the operator specific oby (E.g. operator.oby | /epoc32/rom/include/operator | *.iby collects all iby files from operator folder)." values="(string)|(string)|(string)"/>
-      <configurationElements name="PRODUCT_MODEL" description="The model of the product" values="(string)"/>
-      <configurationElements name="PRODUCT_NAME" description="Name of the product" values="(string)"/>
-      <configurationElements name="PRODUCT_REVISION" description="The reision of the product" values="(string)"/>
-      <configurationElements name="RELEASEDIR" description="The RELEASEDIR is used in the RELEASE step that copies the created files to a separate folder defined by the RELEASEDIR." values="(string)"/>
-      <configurationElements name="RELEASEFILES" description="The RELEASEFILES define the source files that are copied in the RELEASE step. The files must be given as a space delimited list. Wildcards can be used. E.g. \epoc32\rombuild\product\theflash.fpsx \epoc32\rombuild\product\*.log" values="(string)"/>
-      <configurationElements name="RELEASENAME" description="The RELEASENAME is used in the RELEASE step that copies the created files to a separate folder with a new name." values="(string)"/>
-      <configurationElements name="ROFS2_DIR" description="The working directory, when creating the rofs2 image" values="(string)"/>
-      <configurationElements name="ROFS2_E2FNAME" description="The rofs2 elf2flash filename. This is the final rofs2 flash file." values="(string)"/>
-      <configurationElements name="ROFS2_FOOTER" description="This variable can contain a footer section for the rofs2 master oby." values="(string)"/>
-      <configurationElements name="ROFS2_FWIDFILE" description="The (generated) _rofs2_fwid.txt file name." values="(string)"/>
-      <configurationElements name="ROFS2_FWIDINFO" description="The content string for the fwid2.txt file." values="(string)"/>
-      <configurationElements name="ROFS2_HEADER" description="This variable can contain a header section for the rofs2 master oby." values="(string)"/>
-      <configurationElements name="ROFS2_MSTOBY" description="The (generated) rofs2 master oby file name. This file includes the ROFS2_OBY files and other parameters" values="(string)"/>
-      <configurationElements name="ROFS2_NAME" description="The full name of the rofs2 image" values="(string)"/>
-      <configurationElements name="ROFS2_OBY" description="The oby file(s) included to the rofs2 image creation" values="(string)"/>
-      <configurationElements name="ROFS2_OPT" description="The rofs2 specific buildrom options" values="(string)"/>
-      <configurationElements name="ROFS2_ROMVER" description="The rofs2 ROM version string" values="(string)"/>
-      <configurationElements name="ROFS2_TIME" description="The time defined to the rofs2 image." values="(string)"/>
-      <configurationElements name="ROFS2_VERIBY" description="The (generated) version iby file name for the rofs2 image. This file included the version text files and other version parameters." values="(string)"/>
-      <configurationElements name="ROFS3_CUSTFILE" description="The (generated) source file name for customersw.txt." values="(string)"/>
-      <configurationElements name="ROFS3_CUSTINFO" description="The content string for the customersw.txt." values="(string)"/>
-      <configurationElements name="ROFS3_DIR" description="The working directory, when creating the rofs3 image" values="(string)"/>
-      <configurationElements name="ROFS3_E2FNAME" description="The rofs3 elf2flash filename. This is the final rofs3 flash file." values="(string)"/>
-      <configurationElements name="ROFS3_FOOTER" description="This variable can contain a footer section for the rofs3 master oby." values="(string)"/>
-      <configurationElements name="ROFS3_FWIDFILE" description="The (generated) _rofs3_fwid.txt file name." values="(string)"/>
-      <configurationElements name="ROFS3_FWIDINFO" description="The content string for the fwid3.txt file." values="(string)"/>
-      <configurationElements name="ROFS3_HEADER" description="This variable can contain a header section for the rofs3 master oby." values="(string)"/>
-      <configurationElements name="ROFS3_MSTOBY" description="The (generated) version iby file name for the rofs3 image. This file included the version text files and other version parameters." values="(string)"/>
-      <configurationElements name="ROFS3_NAME" description="The full name of the rofs3 image" values="(string)"/>
-      <configurationElements name="ROFS3_OBY" description="The oby file(s) included to the rofs3 image creation" values="(string)"/>
-      <configurationElements name="ROFS3_OPT" description="The rofs3 specific buildrom options" values="(string)"/>
-      <configurationElements name="ROFS3_ROMVER" description="The rofs3 ROM version string" values="(string)"/>
-      <configurationElements name="ROFS3_TIME" description="The time defined to the rofs3 image." values="(string)"/>
-      <configurationElements name="ROFS3_VERIBY" description="The (generated) version iby file name for the rofs3 image. This file included the version text files and other version parameters." values="(string)"/>
-      <configurationElements name="SOS_VERSION" description="Symbian OS version number. The value is used in the version info generation (platform.txt).(see USE_VERGEN)" values="([0-9]+.[0-9]+)"/>
-      <configurationElements name="SWUPD_EXT" description="The software update file extension." values="(string)"/>
-      <configurationElements name="TYPE" description="Defines the image type." values="(rnd|prd|subcon)"/>
-      <configurationElements name="USE_OVERRIDE" description="Define whether the override.pm Buildrom.pl plugin is used (Includes automatically also \epoc32\rom\override.oby)." values="([0|1])"/>
-      <configurationElements name="USE_PAGING" description="Define the usage of On Demand Pagin (ODP). (E.g. 0,rom,code)." values="((0|rom|code[:[(1|2|3)]+]?))"/>
-      <configurationElements name="USE_ROFS" description="Define the rofs sections in use. A comma separated list can be given of possible values. (E.g. 1,2,3)." values="([[dummy|]0..6][,[dummy|]0..6]*)"/>
-      <configurationElements name="USE_ROMFILE" description="Define whether the \epoc32\rombuild\romfiles.txt is used. Files in romfiles are automatically moved to ROM, everything else in core is moved to ROFS1." values="([0|1])"/>
-      <configurationElements name="USE_ROMSYMGEN" description="Generate the rom symbol file. 0=Do not generate, 1=Generate" values="([0|1])"/>
-      <configurationElements name="USE_UDEB" description="Include the usage of the debug binary *.txt to define the list of binaries that are taken from udeb folder instead of the urel." values="([0|1|full])"/>
-      <configurationElements name="USE_VERGEN" description="Use iMaker version info generation" values="([0|1])"/>
-      <configurationElements name="BLDROBY" description="For passing extra oby files (from command line) to the buildrom.pl" values="(string)"/>
-      <configurationElements name="BLDROM_OPT" description="The default buildrom.pl options" values="(string)"/>
-      <configurationElements name="BLDROPT" description="For passing extra parameters (from command line) to the buildrom.pl" values="(string)"/>
-      <configurationElements name="CONFIGROOT" description="Define the default configuration root directory." values="(string)"/>
-      <configurationElements name="CORE_CDPROMFILE" description="The name of the core Code Demand Paging rom file (Code paging)." values="(string)"/>
-      <configurationElements name="CORE_DIR" description="The working directory, when creating core image" values="(string)"/>
-      <configurationElements name="CORE_E2FNAME" description="The core elf2flash filename. This is the final core flash file." values="(string)"/>
-      <configurationElements name="CORE_FWIDFILE" description="The (generated) _core_fwid.txt file name." values="(string)"/>
-      <configurationElements name="CORE_IMEISVFILE" description="The (generated) _core_imeisv.txt file name." values="(string)"/>
-      <configurationElements name="CORE_IMEISVINFO" description="The content string for the imeisv.txt file." values="(string)"/>
-      <configurationElements name="CORE_MODELFILE" description="The (generated) _core_model.txt file name." values="(string)"/>
-      <configurationElements name="CORE_MODELINFO" description="The content string for the model.txt file." values="(string)"/>
-      <configurationElements name="CORE_MSTOBY" description="The generated master oby file name, which includes the CORE_OBY files" values="(string)"/>
-      <configurationElements name="CORE_NAME" description="The full name of the core image" values="(string)"/>
-      <configurationElements name="CORE_NDPROMFILE" description="The name of the core Non Demand Paging rom file." values="(string)"/>
-      <configurationElements name="CORE_OBY" description="The oby file(s) included to the core image creation" values="(string)"/>
-      <configurationElements name="CORE_ODPROMFILE" description="The name of the core On Demand Paging rom file (Rom paging)." values="(string)"/>
-      <configurationElements name="CORE_OPT" description="The core specific buildrom options" values="(string)"/>
-      <configurationElements name="CORE_PLATFILE" description="The (generated) _core_platform.txt file name." values="(string)"/>
-      <configurationElements name="CORE_PLATINFO" description="The content string for the fwid.txt file." values="(string)"/>
-      <configurationElements name="CORE_PRODFILE" description="The (generated) _core_product.txt file name." values="(string)"/>
-      <configurationElements name="CORE_ROFSFILE" description="The name of the core rofs file." values="(string)"/>
-      <configurationElements name="CORE_ROMVER" description="The rom version parameter passed to the version.iby" values="(string)"/>
-      <configurationElements name="CORE_SWVERFILE" description="The (generated) _core_sw.txt version file name. This generated file is included in the CORE_VERIBY file." values="(string)"/>
-      <configurationElements name="CORE_SWVERINFO" description="The content string for the sw.txt file." values="(string)"/>
-      <configurationElements name="CORE_TIME" description="The time defined to the core image" values="(string)"/>
-      <configurationElements name="CORE_UDEBFILE" description="The name of the core udeb file. See USE_UDEB." values="(string)"/>
-      <configurationElements name="CORE_VERIBY" description="The name of the generated core *version.iby, which included version files and info" values="(string)"/>
-      <configurationElements name="CORE_VERSION" description="The version of the core. Used in sw.txt generation." values="(string)"/>
-      <configurationElements name="COREPLAT_NAME" description="Name of the core platform" values="(string)"/>
-      <configurationElements name="CUSTVARIANT_DIR" description="Configure the directory where to included the customer variant content. By default all content under /content is included to the image as it exists in the folder." values="(string)"/>
-      <configurationElements name="DEFAULT_LANGUAGE" description="Default language is the language where the device will boot to (SIM language overrides this selection)" values="(string)"/>
-      <configurationElements name="FLASH_EXT" description="The flash file extension." values="(string)"/>
-      <configurationElements name="HWID" description="Hardware Id" values="([0-9]4)"/>
-      <configurationElements name="HWID_LIST" description="Possible Hardware Ids of the product." values="([0-9]4)*"/>
-      <configurationElements name="KEEPTEMP" description="Keep the buildrom.pl temp files (copied to the WORKDIR). E.g. tmp1.oby tmp2.oby..tmp9.oby" values="([0|1])"/>
-      <configurationElements name="LABEL" description="A label to the NAME of the image" values="(string)"/>
-      <configurationElements name="LANGID" description="Language id used in the lang.txt generation" values="(string)"/>
-      <configurationElements name="LANGUAGES" description="Languages are the languages that are taken to the image (SC language is is defaulting to 01 in languages.txt)" values="(string)"/>
-      <configurationElements name="NAME" description="The name of the image" values="(string)"/>
-      <configurationElements name="OPERATOR_OBY" description="The name for generated operator oby, which is a file generated based on an operator specific content." values="(string)"/>
-      <configurationElements name="OPERATOR_OBYGEN" description="The name, path, rule for collecting content to the operator specific oby (E.g. operator.oby | /epoc32/rom/include/operator | *.iby collects all iby files from operator folder)." values="(string)|(string)|(string)"/>
-      <configurationElements name="PRODUCT_MODEL" description="The model of the product" values="(string)"/>
-      <configurationElements name="PRODUCT_NAME" description="Name of the product" values="(string)"/>
-      <configurationElements name="PRODUCT_REVISION" description="The reision of the product" values="(string)"/>
-      <configurationElements name="RELEASEDIR" description="The RELEASEDIR is used in the RELEASE step that copies the created files to a separate folder defined by the RELEASEDIR." values="(string)"/>
-      <configurationElements name="RELEASEFILES" description="The RELEASEFILES define the source files that are copied in the RELEASE step. The files must be given as a space delimited list. Wildcards can be used. E.g. \epoc32\rombuild\product\theflash.fpsx \epoc32\rombuild\product\*.log" values="(string)"/>
-      <configurationElements name="RELEASENAME" description="The RELEASENAME is used in the RELEASE step that copies the created files to a separate folder with a new name." values="(string)"/>
-      <configurationElements name="ROFS2_DIR" description="The working directory, when creating the rofs2 image" values="(string)"/>
-      <configurationElements name="ROFS2_E2FNAME" description="The rofs2 elf2flash filename. This is the final rofs2 flash file." values="(string)"/>
-      <configurationElements name="ROFS2_FOOTER" description="This variable can contain a footer section for the rofs2 master oby." values="(string)"/>
-      <configurationElements name="ROFS2_FWIDFILE" description="The (generated) _rofs2_fwid.txt file name." values="(string)"/>
-      <configurationElements name="ROFS2_FWIDINFO" description="The content string for the fwid2.txt file." values="(string)"/>
-      <configurationElements name="ROFS2_HEADER" description="This variable can contain a header section for the rofs2 master oby." values="(string)"/>
-      <configurationElements name="ROFS2_MSTOBY" description="The (generated) rofs2 master oby file name. This file includes the ROFS2_OBY files and other parameters" values="(string)"/>
-      <configurationElements name="ROFS2_NAME" description="The full name of the rofs2 image" values="(string)"/>
-      <configurationElements name="ROFS2_OBY" description="The oby file(s) included to the rofs2 image creation" values="(string)"/>
-      <configurationElements name="ROFS2_OPT" description="The rofs2 specific buildrom options" values="(string)"/>
-      <configurationElements name="ROFS2_ROMVER" description="The rofs2 ROM version string" values="(string)"/>
-      <configurationElements name="ROFS2_TIME" description="The time defined to the rofs2 image." values="(string)"/>
-      <configurationElements name="ROFS2_VERIBY" description="The (generated) version iby file name for the rofs2 image. This file included the version text files and other version parameters." values="(string)"/>
-      <configurationElements name="ROFS3_CUSTFILE" description="The (generated) source file name for customersw.txt." values="(string)"/>
-      <configurationElements name="ROFS3_CUSTINFO" description="The content string for the customersw.txt." values="(string)"/>
-      <configurationElements name="ROFS3_DIR" description="The working directory, when creating the rofs3 image" values="(string)"/>
-      <configurationElements name="ROFS3_E2FNAME" description="The rofs3 elf2flash filename. This is the final rofs3 flash file." values="(string)"/>
-      <configurationElements name="ROFS3_FOOTER" description="This variable can contain a footer section for the rofs3 master oby." values="(string)"/>
-      <configurationElements name="ROFS3_FWIDFILE" description="The (generated) _rofs3_fwid.txt file name." values="(string)"/>
-      <configurationElements name="ROFS3_FWIDINFO" description="The content string for the fwid3.txt file." values="(string)"/>
-      <configurationElements name="ROFS3_HEADER" description="This variable can contain a header section for the rofs3 master oby." values="(string)"/>
-      <configurationElements name="ROFS3_MSTOBY" description="The (generated) version iby file name for the rofs3 image. This file included the version text files and other version parameters." values="(string)"/>
-      <configurationElements name="ROFS3_NAME" description="The full name of the rofs3 image" values="(string)"/>
-      <configurationElements name="ROFS3_OBY" description="The oby file(s) included to the rofs3 image creation" values="(string)"/>
-      <configurationElements name="ROFS3_OPT" description="The rofs3 specific buildrom options" values="(string)"/>
-      <configurationElements name="ROFS3_ROMVER" description="The rofs3 ROM version string" values="(string)"/>
-      <configurationElements name="ROFS3_TIME" description="The time defined to the rofs3 image." values="(string)"/>
-      <configurationElements name="ROFS3_VERIBY" description="The (generated) version iby file name for the rofs3 image. This file included the version text files and other version parameters." values="(string)"/>
-      <configurationElements name="SOS_VERSION" description="Symbian OS version number. The value is used in the version info generation (platform.txt).(see USE_VERGEN)" values="([0-9]+.[0-9]+)"/>
-      <configurationElements name="SWUPD_EXT" description="The software update file extension." values="(string)"/>
-      <configurationElements name="TYPE" description="Defines the image type." values="(rnd|prd|subcon)"/>
-      <configurationElements name="USE_OVERRIDE" description="Define whether the override.pm Buildrom.pl plugin is used (Includes automatically also \epoc32\rom\override.oby)." values="([0|1])"/>
-      <configurationElements name="USE_PAGING" description="Define the usage of On Demand Pagin (ODP). (E.g. 0,rom,code)." values="((0|rom|code[:[(1|2|3)]+]?))"/>
-      <configurationElements name="USE_ROFS" description="Define the rofs sections in use. A comma separated list can be given of possible values. (E.g. 1,2,3)." values="([[dummy|]0..6][,[dummy|]0..6]*)"/>
-      <configurationElements name="USE_ROMFILE" description="Define whether the \epoc32\rombuild\romfiles.txt is used. Files in romfiles are automatically moved to ROM, everything else in core is moved to ROFS1." values="([0|1])"/>
-      <configurationElements name="USE_ROMSYMGEN" description="Generate the rom symbol file. 0=Do not generate, 1=Generate" values="([0|1])"/>
-      <configurationElements name="USE_UDEB" description="Include the usage of the debug binary *.txt to define the list of binaries that are taken from udeb folder instead of the urel." values="([0|1|full])"/>
-      <configurationElements name="USE_VERGEN" description="Use iMaker version info generation" values="([0|1])"/>
-      <configurationElements name="BLDROBY" description="For passing extra oby files (from command line) to the buildrom.pl" values="(string)"/>
-      <configurationElements name="BLDROM_OPT" description="The default buildrom.pl options" values="(string)"/>
-      <configurationElements name="BLDROPT" description="For passing extra parameters (from command line) to the buildrom.pl" values="(string)"/>
-      <configurationElements name="CONFIGROOT" description="Define the default configuration root directory." values="(string)"/>
-      <configurationElements name="CORE_CDPROMFILE" description="The name of the core Code Demand Paging rom file (Code paging)." values="(string)"/>
-      <configurationElements name="CORE_DIR" description="The working directory, when creating core image" values="(string)"/>
-      <configurationElements name="CORE_E2FNAME" description="The core elf2flash filename. This is the final core flash file." values="(string)"/>
-      <configurationElements name="CORE_FWIDFILE" description="The (generated) _core_fwid.txt file name." values="(string)"/>
-      <configurationElements name="CORE_IMEISVFILE" description="The (generated) _core_imeisv.txt file name." values="(string)"/>
-      <configurationElements name="CORE_IMEISVINFO" description="The content string for the imeisv.txt file." values="(string)"/>
-      <configurationElements name="CORE_MODELFILE" description="The (generated) _core_model.txt file name." values="(string)"/>
-      <configurationElements name="CORE_MODELINFO" description="The content string for the model.txt file." values="(string)"/>
-      <configurationElements name="CORE_MSTOBY" description="The generated master oby file name, which includes the CORE_OBY files" values="(string)"/>
-      <configurationElements name="CORE_NAME" description="The full name of the core image" values="(string)"/>
-      <configurationElements name="CORE_NDPROMFILE" description="The name of the core Non Demand Paging rom file." values="(string)"/>
-      <configurationElements name="CORE_OBY" description="The oby file(s) included to the core image creation" values="(string)"/>
-      <configurationElements name="CORE_ODPROMFILE" description="The name of the core On Demand Paging rom file (Rom paging)." values="(string)"/>
-      <configurationElements name="CORE_OPT" description="The core specific buildrom options" values="(string)"/>
-      <configurationElements name="CORE_PLATFILE" description="The (generated) _core_platform.txt file name." values="(string)"/>
-      <configurationElements name="CORE_PLATINFO" description="The content string for the fwid.txt file." values="(string)"/>
-      <configurationElements name="CORE_PRODFILE" description="The (generated) _core_product.txt file name." values="(string)"/>
-      <configurationElements name="CORE_ROFSFILE" description="The name of the core rofs file." values="(string)"/>
-      <configurationElements name="CORE_ROMVER" description="The rom version parameter passed to the version.iby" values="(string)"/>
-      <configurationElements name="CORE_SWVERFILE" description="The (generated) _core_sw.txt version file name. This generated file is included in the CORE_VERIBY file." values="(string)"/>
-      <configurationElements name="CORE_SWVERINFO" description="The content string for the sw.txt file." values="(string)"/>
-      <configurationElements name="CORE_TIME" description="The time defined to the core image" values="(string)"/>
-      <configurationElements name="CORE_UDEBFILE" description="The name of the core udeb file. See USE_UDEB." values="(string)"/>
-      <configurationElements name="CORE_VERIBY" description="The name of the generated core *version.iby, which included version files and info" values="(string)"/>
-      <configurationElements name="CORE_VERSION" description="The version of the core. Used in sw.txt generation." values="(string)"/>
-      <configurationElements name="COREPLAT_NAME" description="Name of the core platform" values="(string)"/>
-      <configurationElements name="CUSTVARIANT_DIR" description="Configure the directory where to included the customer variant content. By default all content under /content is included to the image as it exists in the folder." values="(string)"/>
-      <configurationElements name="DEFAULT_LANGUAGE" description="Default language is the language where the device will boot to (SIM language overrides this selection)" values="(string)"/>
-      <configurationElements name="FLASH_EXT" description="The flash file extension." values="(string)"/>
-      <configurationElements name="HWID" description="Hardware Id" values="([0-9]4)"/>
-      <configurationElements name="HWID_LIST" description="Possible Hardware Ids of the product." values="([0-9]4)*"/>
-      <configurationElements name="KEEPTEMP" description="Keep the buildrom.pl temp files (copied to the WORKDIR). E.g. tmp1.oby tmp2.oby..tmp9.oby" values="([0|1])"/>
-      <configurationElements name="LABEL" description="A label to the NAME of the image" values="(string)"/>
-      <configurationElements name="LANGID" description="Language id used in the lang.txt generation" values="(string)"/>
-      <configurationElements name="LANGUAGES" description="Languages are the languages that are taken to the image (SC language is is defaulting to 01 in languages.txt)" values="(string)"/>
-      <configurationElements name="NAME" description="The name of the image" values="(string)"/>
-      <configurationElements name="OPERATOR_OBY" description="The name for generated operator oby, which is a file generated based on an operator specific content." values="(string)"/>
-      <configurationElements name="OPERATOR_OBYGEN" description="The name, path, rule for collecting content to the operator specific oby (E.g. operator.oby | /epoc32/rom/include/operator | *.iby collects all iby files from operator folder)." values="(string)|(string)|(string)"/>
-      <configurationElements name="PRODUCT_MODEL" description="The model of the product" values="(string)"/>
-      <configurationElements name="PRODUCT_NAME" description="Name of the product" values="(string)"/>
-      <configurationElements name="PRODUCT_REVISION" description="The reision of the product" values="(string)"/>
-      <configurationElements name="RELEASEDIR" description="The RELEASEDIR is used in the RELEASE step that copies the created files to a separate folder defined by the RELEASEDIR." values="(string)"/>
-      <configurationElements name="RELEASEFILES" description="The RELEASEFILES define the source files that are copied in the RELEASE step. The files must be given as a space delimited list. Wildcards can be used. E.g. \epoc32\rombuild\product\theflash.fpsx \epoc32\rombuild\product\*.log" values="(string)"/>
-      <configurationElements name="RELEASENAME" description="The RELEASENAME is used in the RELEASE step that copies the created files to a separate folder with a new name." values="(string)"/>
-      <configurationElements name="ROFS2_DIR" description="The working directory, when creating the rofs2 image" values="(string)"/>
-      <configurationElements name="ROFS2_E2FNAME" description="The rofs2 elf2flash filename. This is the final rofs2 flash file." values="(string)"/>
-      <configurationElements name="ROFS2_FOOTER" description="This variable can contain a footer section for the rofs2 master oby." values="(string)"/>
-      <configurationElements name="ROFS2_FWIDFILE" description="The (generated) _rofs2_fwid.txt file name." values="(string)"/>
-      <configurationElements name="ROFS2_FWIDINFO" description="The content string for the fwid2.txt file." values="(string)"/>
-      <configurationElements name="ROFS2_HEADER" description="This variable can contain a header section for the rofs2 master oby." values="(string)"/>
-      <configurationElements name="ROFS2_MSTOBY" description="The (generated) rofs2 master oby file name. This file includes the ROFS2_OBY files and other parameters" values="(string)"/>
-      <configurationElements name="ROFS2_NAME" description="The full name of the rofs2 image" values="(string)"/>
-      <configurationElements name="ROFS2_OBY" description="The oby file(s) included to the rofs2 image creation" values="(string)"/>
-      <configurationElements name="ROFS2_OPT" description="The rofs2 specific buildrom options" values="(string)"/>
-      <configurationElements name="ROFS2_ROMVER" description="The rofs2 ROM version string" values="(string)"/>
-      <configurationElements name="ROFS2_TIME" description="The time defined to the rofs2 image." values="(string)"/>
-      <configurationElements name="ROFS2_VERIBY" description="The (generated) version iby file name for the rofs2 image. This file included the version text files and other version parameters." values="(string)"/>
-      <configurationElements name="ROFS3_CUSTFILE" description="The (generated) source file name for customersw.txt." values="(string)"/>
-      <configurationElements name="ROFS3_CUSTINFO" description="The content string for the customersw.txt." values="(string)"/>
-      <configurationElements name="ROFS3_DIR" description="The working directory, when creating the rofs3 image" values="(string)"/>
-      <configurationElements name="ROFS3_E2FNAME" description="The rofs3 elf2flash filename. This is the final rofs3 flash file." values="(string)"/>
-      <configurationElements name="ROFS3_FOOTER" description="This variable can contain a footer section for the rofs3 master oby." values="(string)"/>
-      <configurationElements name="ROFS3_FWIDFILE" description="The (generated) _rofs3_fwid.txt file name." values="(string)"/>
-      <configurationElements name="ROFS3_FWIDINFO" description="The content string for the fwid3.txt file." values="(string)"/>
-      <configurationElements name="ROFS3_HEADER" description="This variable can contain a header section for the rofs3 master oby." values="(string)"/>
-      <configurationElements name="ROFS3_MSTOBY" description="The (generated) version iby file name for the rofs3 image. This file included the version text files and other version parameters." values="(string)"/>
-      <configurationElements name="ROFS3_NAME" description="The full name of the rofs3 image" values="(string)"/>
-      <configurationElements name="ROFS3_OBY" description="The oby file(s) included to the rofs3 image creation" values="(string)"/>
-      <configurationElements name="ROFS3_OPT" description="The rofs3 specific buildrom options" values="(string)"/>
-      <configurationElements name="ROFS3_ROMVER" description="The rofs3 ROM version string" values="(string)"/>
-      <configurationElements name="ROFS3_TIME" description="The time defined to the rofs3 image." values="(string)"/>
-      <configurationElements name="ROFS3_VERIBY" description="The (generated) version iby file name for the rofs3 image. This file included the version text files and other version parameters." values="(string)"/>
-      <configurationElements name="SOS_VERSION" description="Symbian OS version number. The value is used in the version info generation (platform.txt).(see USE_VERGEN)" values="([0-9]+.[0-9]+)"/>
-      <configurationElements name="SWUPD_EXT" description="The software update file extension." values="(string)"/>
-      <configurationElements name="TYPE" description="Defines the image type." values="(rnd|prd|subcon)"/>
-      <configurationElements name="USE_OVERRIDE" description="Define whether the override.pm Buildrom.pl plugin is used (Includes automatically also \epoc32\rom\override.oby)." values="([0|1])"/>
-      <configurationElements name="USE_PAGING" description="Define the usage of On Demand Pagin (ODP). (E.g. 0,rom,code)." values="((0|rom|code[:[(1|2|3)]+]?))"/>
-      <configurationElements name="USE_ROFS" description="Define the rofs sections in use. A comma separated list can be given of possible values. (E.g. 1,2,3)." values="([[dummy|]0..6][,[dummy|]0..6]*)"/>
-      <configurationElements name="USE_ROMFILE" description="Define whether the \epoc32\rombuild\romfiles.txt is used. Files in romfiles are automatically moved to ROM, everything else in core is moved to ROFS1." values="([0|1])"/>
-      <configurationElements name="USE_ROMSYMGEN" description="Generate the rom symbol file. 0=Do not generate, 1=Generate" values="([0|1])"/>
-      <configurationElements name="USE_UDEB" description="Include the usage of the debug binary *.txt to define the list of binaries that are taken from udeb folder instead of the urel." values="([0|1|full])"/>
-      <configurationElements name="USE_VERGEN" description="Use iMaker version info generation" values="([0|1])"/>
-      <configurationElements name="BLDROBY" description="For passing extra oby files (from command line) to the buildrom.pl" values="(string)"/>
-      <configurationElements name="BLDROM_OPT" description="The default buildrom.pl options" values="(string)"/>
-      <configurationElements name="BLDROPT" description="For passing extra parameters (from command line) to the buildrom.pl" values="(string)"/>
-      <configurationElements name="CONFIGROOT" description="Define the default configuration root directory." values="(string)"/>
-      <configurationElements name="CORE_CDPROMFILE" description="The name of the core Code Demand Paging rom file (Code paging)." values="(string)"/>
-      <configurationElements name="CORE_DIR" description="The working directory, when creating core image" values="(string)"/>
-      <configurationElements name="CORE_E2FNAME" description="The core elf2flash filename. This is the final core flash file." values="(string)"/>
-      <configurationElements name="CORE_FWIDFILE" description="The (generated) _core_fwid.txt file name." values="(string)"/>
-      <configurationElements name="CORE_IMEISVFILE" description="The (generated) _core_imeisv.txt file name." values="(string)"/>
-      <configurationElements name="CORE_IMEISVINFO" description="The content string for the imeisv.txt file." values="(string)"/>
-      <configurationElements name="CORE_MODELFILE" description="The (generated) _core_model.txt file name." values="(string)"/>
-      <configurationElements name="CORE_MODELINFO" description="The content string for the model.txt file." values="(string)"/>
-      <configurationElements name="CORE_MSTOBY" description="The generated master oby file name, which includes the CORE_OBY files" values="(string)"/>
-      <configurationElements name="CORE_NAME" description="The full name of the core image" values="(string)"/>
-      <configurationElements name="CORE_NDPROMFILE" description="The name of the core Non Demand Paging rom file." values="(string)"/>
-      <configurationElements name="CORE_OBY" description="The oby file(s) included to the core image creation" values="(string)"/>
-      <configurationElements name="CORE_ODPROMFILE" description="The name of the core On Demand Paging rom file (Rom paging)." values="(string)"/>
-      <configurationElements name="CORE_OPT" description="The core specific buildrom options" values="(string)"/>
-      <configurationElements name="CORE_PLATFILE" description="The (generated) _core_platform.txt file name." values="(string)"/>
-      <configurationElements name="CORE_PLATINFO" description="The content string for the fwid.txt file." values="(string)"/>
-      <configurationElements name="CORE_PRODFILE" description="The (generated) _core_product.txt file name." values="(string)"/>
-      <configurationElements name="CORE_ROFSFILE" description="The name of the core rofs file." values="(string)"/>
-      <configurationElements name="CORE_ROMVER" description="The rom version parameter passed to the version.iby" values="(string)"/>
-      <configurationElements name="CORE_SWVERFILE" description="The (generated) _core_sw.txt version file name. This generated file is included in the CORE_VERIBY file." values="(string)"/>
-      <configurationElements name="CORE_SWVERINFO" description="The content string for the sw.txt file." values="(string)"/>
-      <configurationElements name="CORE_TIME" description="The time defined to the core image" values="(string)"/>
-      <configurationElements name="CORE_UDEBFILE" description="The name of the core udeb file. See USE_UDEB." values="(string)"/>
-      <configurationElements name="CORE_VERIBY" description="The name of the generated core *version.iby, which included version files and info" values="(string)"/>
-      <configurationElements name="CORE_VERSION" description="The version of the core. Used in sw.txt generation." values="(string)"/>
-      <configurationElements name="COREPLAT_NAME" description="Name of the core platform" values="(string)"/>
-      <configurationElements name="CUSTVARIANT_DIR" description="Configure the directory where to included the customer variant content. By default all content under /content is included to the image as it exists in the folder." values="(string)"/>
-      <configurationElements name="DEFAULT_LANGUAGE" description="Default language is the language where the device will boot to (SIM language overrides this selection)" values="(string)"/>
-      <configurationElements name="FLASH_EXT" description="The flash file extension." values="(string)"/>
-      <configurationElements name="HWID" description="Hardware Id" values="([0-9]4)"/>
-      <configurationElements name="HWID_LIST" description="Possible Hardware Ids of the product." values="([0-9]4)*"/>
-      <configurationElements name="KEEPTEMP" description="Keep the buildrom.pl temp files (copied to the WORKDIR). E.g. tmp1.oby tmp2.oby..tmp9.oby" values="([0|1])"/>
-      <configurationElements name="LABEL" description="A label to the NAME of the image" values="(string)"/>
-      <configurationElements name="LANGID" description="Language id used in the lang.txt generation" values="(string)"/>
-      <configurationElements name="LANGUAGES" description="Languages are the languages that are taken to the image (SC language is is defaulting to 01 in languages.txt)" values="(string)"/>
-      <configurationElements name="NAME" description="The name of the image" values="(string)"/>
-      <configurationElements name="OPERATOR_OBY" description="The name for generated operator oby, which is a file generated based on an operator specific content." values="(string)"/>
-      <configurationElements name="OPERATOR_OBYGEN" description="The name, path, rule for collecting content to the operator specific oby (E.g. operator.oby | /epoc32/rom/include/operator | *.iby collects all iby files from operator folder)." values="(string)|(string)|(string)"/>
-      <configurationElements name="PRODUCT_MODEL" description="The model of the product" values="(string)"/>
-      <configurationElements name="PRODUCT_NAME" description="Name of the product" values="(string)"/>
-      <configurationElements name="PRODUCT_REVISION" description="The reision of the product" values="(string)"/>
-      <configurationElements name="RELEASEDIR" description="The RELEASEDIR is used in the RELEASE step that copies the created files to a separate folder defined by the RELEASEDIR." values="(string)"/>
-      <configurationElements name="RELEASEFILES" description="The RELEASEFILES define the source files that are copied in the RELEASE step. The files must be given as a space delimited list. Wildcards can be used. E.g. \epoc32\rombuild\product\theflash.fpsx \epoc32\rombuild\product\*.log" values="(string)"/>
-      <configurationElements name="RELEASENAME" description="The RELEASENAME is used in the RELEASE step that copies the created files to a separate folder with a new name." values="(string)"/>
-      <configurationElements name="ROFS2_DIR" description="The working directory, when creating the rofs2 image" values="(string)"/>
-      <configurationElements name="ROFS2_E2FNAME" description="The rofs2 elf2flash filename. This is the final rofs2 flash file." values="(string)"/>
-      <configurationElements name="ROFS2_FOOTER" description="This variable can contain a footer section for the rofs2 master oby." values="(string)"/>
-      <configurationElements name="ROFS2_FWIDFILE" description="The (generated) _rofs2_fwid.txt file name." values="(string)"/>
-      <configurationElements name="ROFS2_FWIDINFO" description="The content string for the fwid2.txt file." values="(string)"/>
-      <configurationElements name="ROFS2_HEADER" description="This variable can contain a header section for the rofs2 master oby." values="(string)"/>
-      <configurationElements name="ROFS2_MSTOBY" description="The (generated) rofs2 master oby file name. This file includes the ROFS2_OBY files and other parameters" values="(string)"/>
-      <configurationElements name="ROFS2_NAME" description="The full name of the rofs2 image" values="(string)"/>
-      <configurationElements name="ROFS2_OBY" description="The oby file(s) included to the rofs2 image creation" values="(string)"/>
-      <configurationElements name="ROFS2_OPT" description="The rofs2 specific buildrom options" values="(string)"/>
-      <configurationElements name="ROFS2_ROMVER" description="The rofs2 ROM version string" values="(string)"/>
-      <configurationElements name="ROFS2_TIME" description="The time defined to the rofs2 image." values="(string)"/>
-      <configurationElements name="ROFS2_VERIBY" description="The (generated) version iby file name for the rofs2 image. This file included the version text files and other version parameters." values="(string)"/>
-      <configurationElements name="ROFS3_CUSTFILE" description="The (generated) source file name for customersw.txt." values="(string)"/>
-      <configurationElements name="ROFS3_CUSTINFO" description="The content string for the customersw.txt." values="(string)"/>
-      <configurationElements name="ROFS3_DIR" description="The working directory, when creating the rofs3 image" values="(string)"/>
-      <configurationElements name="ROFS3_E2FNAME" description="The rofs3 elf2flash filename. This is the final rofs3 flash file." values="(string)"/>
-      <configurationElements name="ROFS3_FOOTER" description="This variable can contain a footer section for the rofs3 master oby." values="(string)"/>
-      <configurationElements name="ROFS3_FWIDFILE" description="The (generated) _rofs3_fwid.txt file name." values="(string)"/>
-      <configurationElements name="ROFS3_FWIDINFO" description="The content string for the fwid3.txt file." values="(string)"/>
-      <configurationElements name="ROFS3_HEADER" description="This variable can contain a header section for the rofs3 master oby." values="(string)"/>
-      <configurationElements name="ROFS3_MSTOBY" description="The (generated) version iby file name for the rofs3 image. This file included the version text files and other version parameters." values="(string)"/>
-      <configurationElements name="ROFS3_NAME" description="The full name of the rofs3 image" values="(string)"/>
-      <configurationElements name="ROFS3_OBY" description="The oby file(s) included to the rofs3 image creation" values="(string)"/>
-      <configurationElements name="ROFS3_OPT" description="The rofs3 specific buildrom options" values="(string)"/>
-      <configurationElements name="ROFS3_ROMVER" description="The rofs3 ROM version string" values="(string)"/>
-      <configurationElements name="ROFS3_TIME" description="The time defined to the rofs3 image." values="(string)"/>
-      <configurationElements name="ROFS3_VERIBY" description="The (generated) version iby file name for the rofs3 image. This file included the version text files and other version parameters." values="(string)"/>
-      <configurationElements name="SOS_VERSION" description="Symbian OS version number. The value is used in the version info generation (platform.txt).(see USE_VERGEN)" values="([0-9]+.[0-9]+)"/>
-      <configurationElements name="SWUPD_EXT" description="The software update file extension." values="(string)"/>
-      <configurationElements name="TYPE" description="Defines the image type." values="(rnd|prd|subcon)"/>
-      <configurationElements name="USE_OVERRIDE" description="Define whether the override.pm Buildrom.pl plugin is used (Includes automatically also \epoc32\rom\override.oby)." values="([0|1])"/>
-      <configurationElements name="USE_PAGING" description="Define the usage of On Demand Pagin (ODP). (E.g. 0,rom,code)." values="((0|rom|code[:[(1|2|3)]+]?))"/>
-      <configurationElements name="USE_ROFS" description="Define the rofs sections in use. A comma separated list can be given of possible values. (E.g. 1,2,3)." values="([[dummy|]0..6][,[dummy|]0..6]*)"/>
-      <configurationElements name="USE_ROMFILE" description="Define whether the \epoc32\rombuild\romfiles.txt is used. Files in romfiles are automatically moved to ROM, everything else in core is moved to ROFS1." values="([0|1])"/>
-      <configurationElements name="USE_ROMSYMGEN" description="Generate the rom symbol file. 0=Do not generate, 1=Generate" values="([0|1])"/>
-      <configurationElements name="USE_UDEB" description="Include the usage of the debug binary *.txt to define the list of binaries that are taken from udeb folder instead of the urel." values="([0|1|full])"/>
-      <configurationElements name="USE_VERGEN" description="Use iMaker version info generation" values="([0|1])"/>
-    </interfaces>
-    <configurations name="image_conf_product52.mk" filePath="\epoc32\rom\config\platform\product52\image_conf_product52.mk" targetrefs="//@result/@targets.0 //@result/@targets.1 //@result/@targets.2 //@result/@targets.3 //@result/@targets.4 //@result/@targets.5 //@result/@targets.6 //@result/@targets.7 //@result/@targets.8 //@result/@targets.9 //@result/@targets.10 //@result/@targets.11 //@result/@targets.12 //@result/@targets.13 //@result/@targets.14 //@result/@targets.15 //@result/@targets.16 //@result/@targets.17 //@result/@targets.18 //@result/@targets.19 //@result/@targets.20 //@result/@targets.21 //@result/@targets.22 //@result/@targets.23 //@result/@targets.24 //@result/@targets.25 //@result/@targets.26 //@result/@targets.27 //@result/@targets.28 //@result/@targets.29 //@result/@targets.30 //@result/@targets.31 //@result/@targets.32 //@result/@targets.33 //@result/@targets.34 //@result/@targets.35 //@result/@targets.36 //@result/@targets.37">
-      <settings name="BLDROBY" ref="//@result/@interfaces.0/@configurationElements.0"/>
-      <settings name="BLDROM_OPT" value="-p -v -nosymbols   -D_IMAGE_TYPE_RND" ref="//@result/@interfaces.0/@configurationElements.1"/>
-      <settings name="BLDROPT" ref="//@result/@interfaces.0/@configurationElements.2"/>
-      <settings name="CONFIGROOT" value="/epoc32/rom/config" ref="//@result/@interfaces.0/@configurationElements.3"/>
-      <settings name="CORE_CDPROMFILE" value="/epoc32/rombuild/odpcoderomfiles.txt" ref="//@result/@interfaces.0/@configurationElements.4"/>
-      <settings name="CORE_DIR" value="/epoc32/rombuild/product52/core" ref="//@result/@interfaces.0/@configurationElements.5"/>
-      <settings name="CORE_E2FNAME" value="/epoc32/rombuild/product52/core/elf2flash/product52_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.6"/>
-      <settings name="CORE_FWIDFILE" value="/epoc32/rombuild/product52/core/product52_5230_rnd_core_fwid.txt" ref="//@result/@interfaces.0/@configurationElements.7"/>
-      <settings name="CORE_IMEISVFILE" value="/epoc32/rombuild/product52/core/product52_5230_rnd_core_imeisv.txt" ref="//@result/@interfaces.0/@configurationElements.8"/>
-      <settings name="CORE_IMEISVINFO" value="00" ref="//@result/@interfaces.0/@configurationElements.9"/>
-      <settings name="CORE_MODELFILE" value="/epoc32/rombuild/product52/core/product52_5230_rnd_core_model.txt" ref="//@result/@interfaces.0/@configurationElements.10"/>
-      <settings name="CORE_MODELINFO" value="S60" ref="//@result/@interfaces.0/@configurationElements.11"/>
-      <settings name="CORE_MSTOBY" value="/epoc32/rombuild/product52/core/product52_5230_rnd_core_master.oby" ref="//@result/@interfaces.0/@configurationElements.12"/>
-      <settings name="CORE_NAME" value="/epoc32/rombuild/product52/core/product52_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.13"/>
-      <settings name="CORE_NDPROMFILE" value="/epoc32/rombuild/romfiles.txt" ref="//@result/@interfaces.0/@configurationElements.14"/>
-      <settings name="CORE_OBY" value="/epoc32/rom/ncp.oby" ref="//@result/@interfaces.0/@configurationElements.15"/>
-      <settings name="CORE_ODPROMFILE" value="/epoc32/rombuild/odpromfiles.txt" ref="//@result/@interfaces.0/@configurationElements.16"/>
-      <settings name="CORE_OPT" value="-p -v -nosymbols   -D_IMAGE_TYPE_RND -D_EABI=ARMV5 -D_ASIC_VER_11  -Dproduct52  -DLCD_SHELL" ref="//@result/@interfaces.0/@configurationElements.17"/>
-      <settings name="CORE_PLATFILE" value="/epoc32/rombuild/product52/core/product52_5230_rnd_core_platform.txt" ref="//@result/@interfaces.0/@configurationElements.18"/>
-      <settings name="CORE_PLATINFO" value="SymbianOSMajorVersion=9\nSymbianOSMinorVersion=4\n" ref="//@result/@interfaces.0/@configurationElements.19"/>
-      <settings name="CORE_PRODFILE" value="/epoc32/rombuild/product52/core/product52_5230_rnd_core_product.txt" ref="//@result/@interfaces.0/@configurationElements.20"/>
-      <settings name="CORE_ROFSFILE" value="/epoc32/rombuild/odpcoderofsfiles.txt" ref="//@result/@interfaces.0/@configurationElements.21"/>
-      <settings name="CORE_ROMVER" value="0.01(0)" ref="//@result/@interfaces.0/@configurationElements.22"/>
-      <settings name="CORE_SWVERFILE" value="/epoc32/rombuild/product52/core/product52_5230_rnd_core_sw.txt" ref="//@result/@interfaces.0/@configurationElements.23"/>
-      <settings name="CORE_SWVERINFO" value="V 52.2008.29.xx RND\n14-07-08\nRX-47\n(c) Nokia" ref="//@result/@interfaces.0/@configurationElements.24"/>
-      <settings name="CORE_TIME" value="14/07/2008" ref="//@result/@interfaces.0/@configurationElements.25"/>
-      <settings name="CORE_UDEBFILE" value="/epoc32/rombuild/mytraces.txt" ref="//@result/@interfaces.0/@configurationElements.26"/>
-      <settings name="CORE_VERIBY" value="/epoc32/rombuild/product52/core/product52_5230_rnd_core_version.iby" ref="//@result/@interfaces.0/@configurationElements.27"/>
-      <settings name="CORE_VERSION" value="V 52.2008.29.xx RND" ref="//@result/@interfaces.0/@configurationElements.28"/>
-      <settings name="COREPLAT_NAME" value="platform" ref="//@result/@interfaces.0/@configurationElements.29"/>
-      <settings name="CUSTVARIANT_DIR" ref="//@result/@interfaces.0/@configurationElements.30"/>
-      <settings name="DEFAULT_LANGUAGE" value="SC" ref="//@result/@interfaces.0/@configurationElements.31"/>
-      <settings name="FLASH_EXT" value=".fpsx" ref="//@result/@interfaces.0/@configurationElements.32"/>
-      <settings name="HWID" value="5161 5210 5211 5220 5230* 5240" ref="//@result/@interfaces.0/@configurationElements.33"/>
-      <settings name="HWID_LIST" value="5161 5210 5211 5220 5230 5240" ref="//@result/@interfaces.0/@configurationElements.34"/>
-      <settings name="KEEPTEMP" value="0" ref="//@result/@interfaces.0/@configurationElements.35"/>
-      <settings name="LABEL" ref="//@result/@interfaces.0/@configurationElements.36"/>
-      <settings name="LANGID" value="01" ref="//@result/@interfaces.0/@configurationElements.37"/>
-      <settings name="LANGUAGES" value="SC" ref="//@result/@interfaces.0/@configurationElements.38"/>
-      <settings name="NAME" value="product52_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.39"/>
-      <settings name="OPERATOR_OBY" value="/epoc32/rombuild/product52/rofs3/product52_5230_rnd_rofs3_operator.oby" ref="//@result/@interfaces.0/@configurationElements.40"/>
-      <settings name="OPERATOR_OBYGEN" value="/epoc32/rombuild/product52/rofs3/product52_5230_rnd_rofs3_operator.oby | /epoc32/rom/include/operator | *.iby" ref="//@result/@interfaces.0/@configurationElements.41"/>
-      <settings name="PRODUCT_MODEL" value="N00" ref="//@result/@interfaces.0/@configurationElements.42"/>
-      <settings name="PRODUCT_NAME" value="product52" ref="//@result/@interfaces.0/@configurationElements.43"/>
-      <settings name="PRODUCT_REVISION" value="01" ref="//@result/@interfaces.0/@configurationElements.44"/>
-      <settings name="RELEASEDIR" value="/flash_images/product52" ref="//@result/@interfaces.0/@configurationElements.45"/>
-      <settings name="RELEASEFILES" value="/epoc32/rombuild/product52/product52_5230_rnd.fpsx /epoc32/rombuild/product52/core/product52_5230_rnd.rom.log /epoc32/rombuild/product52/core/product52_5230_rnd.rofs1.log /epoc32/rombuild/product52/rofs2/product52_5230_rnd.rofs2.log /epoc32/rombuild/product52/rofs3/product52_5230_rnd.rofs3.log" ref="//@result/@interfaces.0/@configurationElements.46"/>
-      <settings name="RELEASENAME" value="product52_rnd_20080714082810_haismail" ref="//@result/@interfaces.0/@configurationElements.47"/>
-      <settings name="ROFS2_DIR" value="/epoc32/rombuild/product52/rofs2" ref="//@result/@interfaces.0/@configurationElements.48"/>
-      <settings name="ROFS2_E2FNAME" value="/epoc32/rombuild/product52/rofs2/elf2flash/product52_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.49"/>
-      <settings name="ROFS2_FOOTER" ref="//@result/@interfaces.0/@configurationElements.50"/>
-      <settings name="ROFS2_FWIDFILE" value="/epoc32/rombuild/product52/rofs2/product52_5230_rnd_rofs2_fwid.txt" ref="//@result/@interfaces.0/@configurationElements.51"/>
-      <settings name="ROFS2_FWIDINFO" value="id=language\nversion=01\n" ref="//@result/@interfaces.0/@configurationElements.52"/>
-      <settings name="ROFS2_HEADER" value="#include &lt;data_caging_paths_for_iby.hrh> \n\n// TEMPORARY FIXES BEGIN\n // Enable faster variant creation, to be removed when iby header hierarchy is fixed\n #define __platform_OBY__  // Define platform.oby out\n #include &lt;Variant\Header.iby>\n #include &lt;header.iby>  // Symbian common definitions\n // TEMPORARY FIXES END\n" ref="//@result/@interfaces.0/@configurationElements.53"/>
-      <settings name="ROFS2_MSTOBY" value="/epoc32/rombuild/product52/rofs2/product52_5230_rnd_rofs2_master.oby" ref="//@result/@interfaces.0/@configurationElements.54"/>
-      <settings name="ROFS2_NAME" value="/epoc32/rombuild/product52/rofs2/product52_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.55"/>
-      <settings name="ROFS2_OBY" ref="//@result/@interfaces.0/@configurationElements.56"/>
-      <settings name="ROFS2_OPT" ref="//@result/@interfaces.0/@configurationElements.57"/>
-      <settings name="ROFS2_ROMVER" value="0.01(0)" ref="//@result/@interfaces.0/@configurationElements.58"/>
-      <settings name="ROFS2_TIME" value="14/07/2008" ref="//@result/@interfaces.0/@configurationElements.59"/>
-      <settings name="ROFS2_VERIBY" value="/epoc32/rombuild/product52/rofs2/product52_5230_rnd_rofs2_version.iby" ref="//@result/@interfaces.0/@configurationElements.60"/>
-      <settings name="ROFS3_CUSTFILE" value="/epoc32/rombuild/product52/rofs3/product52_5230_rnd_rofs3_customersw.txt" ref="//@result/@interfaces.0/@configurationElements.61"/>
-      <settings name="ROFS3_CUSTINFO" value="V 0.00.0\n14-07-08" ref="//@result/@interfaces.0/@configurationElements.62"/>
-      <settings name="ROFS3_DIR" value="/epoc32/rombuild/product52/rofs3" ref="//@result/@interfaces.0/@configurationElements.63"/>
-      <settings name="ROFS3_E2FNAME" value="/epoc32/rombuild/product52/rofs3/elf2flash/product52_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.64"/>
-      <settings name="ROFS3_FOOTER" ref="//@result/@interfaces.0/@configurationElements.65"/>
-      <settings name="ROFS3_FWIDFILE" value="/epoc32/rombuild/product52/rofs3/product52_5230_rnd_rofs3_fwid.txt" ref="//@result/@interfaces.0/@configurationElements.66"/>
-      <settings name="ROFS3_FWIDINFO" value="id=customer\nversion=V 0.00.0 RND Customer\n" ref="//@result/@interfaces.0/@configurationElements.67"/>
-      <settings name="ROFS3_HEADER" value="#include &lt;data_caging_paths_for_iby.hrh> \n\n// TEMPORARY FIXES BEGIN\n // Enable faster variant creation, to be removed when iby header hierarchy is fixed\n #define __platform_OBY__  // Define platform.oby out\n #include &lt;Variant\Header.iby>\n #include &lt;header.iby>  // Symbian common definitions\n // TEMPORARY FIXES END\n" ref="//@result/@interfaces.0/@configurationElements.68"/>
-      <settings name="ROFS3_MSTOBY" value="/epoc32/rombuild/product52/rofs3/product52_5230_rnd_rofs3_master.oby" ref="//@result/@interfaces.0/@configurationElements.69"/>
-      <settings name="ROFS3_NAME" value="/epoc32/rombuild/product52/rofs3/product52_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.70"/>
-      <settings name="ROFS3_OBY" value="/epoc32/rombuild/product52/rofs3/product52_5230_rnd_rofs3_operator.oby" ref="//@result/@interfaces.0/@configurationElements.71"/>
-      <settings name="ROFS3_OPT" ref="//@result/@interfaces.0/@configurationElements.72"/>
-      <settings name="ROFS3_ROMVER" value="0.01(0)" ref="//@result/@interfaces.0/@configurationElements.73"/>
-      <settings name="ROFS3_TIME" value="14/07/2008" ref="//@result/@interfaces.0/@configurationElements.74"/>
-      <settings name="ROFS3_VERIBY" value="/epoc32/rombuild/product52/rofs3/product52_5230_rnd_rofs3_version.iby" ref="//@result/@interfaces.0/@configurationElements.75"/>
-      <settings name="SOS_VERSION" value="9.4" ref="//@result/@interfaces.0/@configurationElements.76"/>
-      <settings name="SWUPD_EXT" value=".swupd" ref="//@result/@interfaces.0/@configurationElements.77"/>
-      <settings name="TYPE" value="rnd" ref="//@result/@interfaces.0/@configurationElements.78"/>
-      <settings name="USE_OVERRIDE" value="0" ref="//@result/@interfaces.0/@configurationElements.79"/>
-      <settings name="USE_PAGING" value="code:123" ref="//@result/@interfaces.0/@configurationElements.80"/>
-      <settings name="USE_ROFS" value="1" ref="//@result/@interfaces.0/@configurationElements.81"/>
-      <settings name="USE_ROMFILE" value="1" ref="//@result/@interfaces.0/@configurationElements.82"/>
-      <settings name="USE_ROMSYMGEN" value="0" ref="//@result/@interfaces.0/@configurationElements.83"/>
-      <settings name="USE_UDEB" value="0" ref="//@result/@interfaces.0/@configurationElements.84"/>
-      <settings name="USE_VERGEN" value="0" ref="//@result/@interfaces.0/@configurationElements.85"/>
-    </configurations>
-    <configurations name="image_conf_product52_ui.mk" filePath="\epoc32\rom\config\platform\product52\image_conf_product52_ui.mk" targetrefs="//@result/@targets.38 //@result/@targets.39 //@result/@targets.40 //@result/@targets.41 //@result/@targets.42 //@result/@targets.43 //@result/@targets.44 //@result/@targets.45 //@result/@targets.46 //@result/@targets.47 //@result/@targets.48 //@result/@targets.49 //@result/@targets.50 //@result/@targets.51 //@result/@targets.52 //@result/@targets.53 //@result/@targets.54 //@result/@targets.55 //@result/@targets.56 //@result/@targets.57 //@result/@targets.58 //@result/@targets.59 //@result/@targets.60 //@result/@targets.61 //@result/@targets.62 //@result/@targets.63 //@result/@targets.64 //@result/@targets.65 //@result/@targets.66 //@result/@targets.67 //@result/@targets.68 //@result/@targets.69 //@result/@targets.70 //@result/@targets.71 //@result/@targets.72 //@result/@targets.73 //@result/@targets.74 //@result/@targets.75">
-      <settings name="BLDROBY" ref="//@result/@interfaces.0/@configurationElements.86"/>
-      <settings name="BLDROM_OPT" value="-p -v -nosymbols -eoverride  -D_IMAGE_TYPE_RND" ref="//@result/@interfaces.0/@configurationElements.87"/>
-      <settings name="BLDROPT" ref="//@result/@interfaces.0/@configurationElements.88"/>
-      <settings name="CONFIGROOT" value="/epoc32/rom/config" ref="//@result/@interfaces.0/@configurationElements.89"/>
-      <settings name="CORE_CDPROMFILE" value="/epoc32/rombuild/odpcoderomfiles.txt" ref="//@result/@interfaces.0/@configurationElements.90"/>
-      <settings name="CORE_DIR" value="/epoc32/rombuild/product52/core" ref="//@result/@interfaces.0/@configurationElements.91"/>
-      <settings name="CORE_E2FNAME" value="/epoc32/rombuild/product52/core/elf2flash/product52_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.92"/>
-      <settings name="CORE_FWIDFILE" value="/epoc32/rombuild/product52/core/product52_5230_rnd_core_fwid.txt" ref="//@result/@interfaces.0/@configurationElements.93"/>
-      <settings name="CORE_IMEISVFILE" value="/epoc32/rombuild/product52/core/product52_5230_rnd_core_imeisv.txt" ref="//@result/@interfaces.0/@configurationElements.94"/>
-      <settings name="CORE_IMEISVINFO" value="00" ref="//@result/@interfaces.0/@configurationElements.95"/>
-      <settings name="CORE_MODELFILE" value="/epoc32/rombuild/product52/core/product52_5230_rnd_core_model.txt" ref="//@result/@interfaces.0/@configurationElements.96"/>
-      <settings name="CORE_MODELINFO" value="S60" ref="//@result/@interfaces.0/@configurationElements.97"/>
-      <settings name="CORE_MSTOBY" value="/epoc32/rombuild/product52/core/product52_5230_rnd_core_master.oby" ref="//@result/@interfaces.0/@configurationElements.98"/>
-      <settings name="CORE_NAME" value="/epoc32/rombuild/product52/core/product52_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.99"/>
-      <settings name="CORE_NDPROMFILE" value="/epoc32/rombuild/romfiles.txt" ref="//@result/@interfaces.0/@configurationElements.100"/>
-      <settings name="CORE_OBY" value="/epoc32/rom/master.oby /epoc32/rom/ppd.oby /epoc32/rom/rnd.oby /epoc32/rom/override.oby /epoc32/rombuild/product52/core/product52_5230_rnd_core_collected.oby /epoc32/rom/include/symbianos.iby /epoc32/rom/variant/patchdata.iby" ref="//@result/@interfaces.0/@configurationElements.101"/>
-      <settings name="CORE_ODPROMFILE" value="/epoc32/rombuild/odpromfiles.txt" ref="//@result/@interfaces.0/@configurationElements.102"/>
-      <settings name="CORE_OPT" value="-p -v -nosymbols -eoverride  -D_IMAGE_TYPE_RND -D_EABI=ARMV5 -D_ASIC_VER_11 -DUSE_MULTIROFS -Dproduct52  -es60ibymacros -DSECTION -DRND_CONTENT " ref="//@result/@interfaces.0/@configurationElements.103"/>
-      <settings name="CORE_PLATFILE" value="/epoc32/rombuild/product52/core/product52_5230_rnd_core_platform.txt" ref="//@result/@interfaces.0/@configurationElements.104"/>
-      <settings name="CORE_PLATINFO" value="SymbianOSMajorVersion=9\nSymbianOSMinorVersion=4\n" ref="//@result/@interfaces.0/@configurationElements.105"/>
-      <settings name="CORE_PRODFILE" value="/epoc32/rombuild/product52/core/product52_5230_rnd_core_product.txt" ref="//@result/@interfaces.0/@configurationElements.106"/>
-      <settings name="CORE_ROFSFILE" value="/epoc32/rombuild/odpcoderofsfiles.txt" ref="//@result/@interfaces.0/@configurationElements.107"/>
-      <settings name="CORE_ROMVER" value="0.01(0)" ref="//@result/@interfaces.0/@configurationElements.108"/>
-      <settings name="CORE_SWVERFILE" value="/epoc32/rombuild/product52/core/product52_5230_rnd_core_sw.txt" ref="//@result/@interfaces.0/@configurationElements.109"/>
-      <settings name="CORE_SWVERINFO" value="V 52.50.2008.23. RnD\n13-06-08\nRX-47\n(c)NMP" ref="//@result/@interfaces.0/@configurationElements.110"/>
-      <settings name="CORE_TIME" value="14/07/2008" ref="//@result/@interfaces.0/@configurationElements.111"/>
-      <settings name="CORE_UDEBFILE" value="/epoc32/rombuild/mytraces.txt" ref="//@result/@interfaces.0/@configurationElements.112"/>
-      <settings name="CORE_VERIBY" value="/epoc32/rombuild/product52/core/product52_5230_rnd_core_version.iby" ref="//@result/@interfaces.0/@configurationElements.113"/>
-      <settings name="CORE_VERSION" value="V 52.50.2008.23. RnD" ref="//@result/@interfaces.0/@configurationElements.114"/>
-      <settings name="COREPLAT_NAME" value="platform" ref="//@result/@interfaces.0/@configurationElements.115"/>
-      <settings name="CUSTVARIANT_DIR" ref="//@result/@interfaces.0/@configurationElements.116"/>
-      <settings name="DEFAULT_LANGUAGE" value="01" ref="//@result/@interfaces.0/@configurationElements.117"/>
-      <settings name="FLASH_EXT" value=".fpsx" ref="//@result/@interfaces.0/@configurationElements.118"/>
-      <settings name="HWID" value="5161 5210 5211 5220 5230* 5240" ref="//@result/@interfaces.0/@configurationElements.119"/>
-      <settings name="HWID_LIST" value="5161 5210 5211 5220 5230 5240" ref="//@result/@interfaces.0/@configurationElements.120"/>
-      <settings name="KEEPTEMP" value="0" ref="//@result/@interfaces.0/@configurationElements.121"/>
-      <settings name="LABEL" ref="//@result/@interfaces.0/@configurationElements.122"/>
-      <settings name="LANGID" value="01" ref="//@result/@interfaces.0/@configurationElements.123"/>
-      <settings name="LANGUAGES" value="01" ref="//@result/@interfaces.0/@configurationElements.124"/>
-      <settings name="NAME" value="product52_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.125"/>
-      <settings name="OPERATOR_OBY" ref="//@result/@interfaces.0/@configurationElements.126"/>
-      <settings name="OPERATOR_OBYGEN" value=" | /epoc32/rom/include/operator | *.iby" ref="//@result/@interfaces.0/@configurationElements.127"/>
-      <settings name="PRODUCT_MODEL" value="N00" ref="//@result/@interfaces.0/@configurationElements.128"/>
-      <settings name="PRODUCT_NAME" value="product52" ref="//@result/@interfaces.0/@configurationElements.129"/>
-      <settings name="PRODUCT_REVISION" value="01" ref="//@result/@interfaces.0/@configurationElements.130"/>
-      <settings name="RELEASEDIR" value="/flash_images/product52" ref="//@result/@interfaces.0/@configurationElements.131"/>
-      <settings name="RELEASEFILES" value="/epoc32/rombuild/product52/product52_5230_rnd.fpsx /epoc32/rombuild/product52/core/product52_5230_rnd.rom.log /epoc32/rombuild/product52/core/product52_5230_rnd.rofs1.log /epoc32/rombuild/product52/rofs2/product52_5230_rnd.rofs2.log /epoc32/rombuild/product52/rofs3/product52_5230_rnd.rofs3.log" ref="//@result/@interfaces.0/@configurationElements.132"/>
-      <settings name="RELEASENAME" value="product52_rnd_20080714082814_haismail" ref="//@result/@interfaces.0/@configurationElements.133"/>
-      <settings name="ROFS2_DIR" value="/epoc32/rombuild/product52/rofs2" ref="//@result/@interfaces.0/@configurationElements.134"/>
-      <settings name="ROFS2_E2FNAME" value="/epoc32/rombuild/product52/rofs2/elf2flash/product52_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.135"/>
-      <settings name="ROFS2_FOOTER" ref="//@result/@interfaces.0/@configurationElements.136"/>
-      <settings name="ROFS2_FWIDFILE" value="/epoc32/rombuild/product52/rofs2/product52_5230_rnd_rofs2_fwid.txt" ref="//@result/@interfaces.0/@configurationElements.137"/>
-      <settings name="ROFS2_FWIDINFO" value="id=language\nversion=01\n" ref="//@result/@interfaces.0/@configurationElements.138"/>
-      <settings name="ROFS2_HEADER" value="#include &lt;data_caging_paths_for_iby.hrh> \n\n// TEMPORARY FIXES BEGIN\n // Enable faster variant creation, to be removed when iby header hierarchy is fixed\n #define __platform_OBY__  // Define platform.oby out\n #include &lt;Variant\Header.iby>\n #include &lt;header.iby>  // Symbian common definitions\n // TEMPORARY FIXES END\n" ref="//@result/@interfaces.0/@configurationElements.139"/>
-      <settings name="ROFS2_MSTOBY" value="/epoc32/rombuild/product52/rofs2/product52_5230_rnd_rofs2_master.oby" ref="//@result/@interfaces.0/@configurationElements.140"/>
-      <settings name="ROFS2_NAME" value="/epoc32/rombuild/product52/rofs2/product52_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.141"/>
-      <settings name="ROFS2_OBY" value="&lt;Variant.oby> &lt;ppd_variant.oby> &lt;ppd_locales.iby> /epoc32/rom/override.oby /epoc32/rombuild/product52/rofs2/product52_5230_rnd_rofs2_language_collected.oby /epoc32/rombuild/product52/rofs2/product52_5230_rnd_rofs2_customer_collected.oby" ref="//@result/@interfaces.0/@configurationElements.142"/>
-      <settings name="ROFS2_OPT" value="-p -v -nosymbols -eoverride  -D_IMAGE_TYPE_RND -D_EABI=ARMV5 -D_ASIC_VER_11 -DUSE_MULTIROFS -Dproduct52  -es60ibymacros -elocalise -DRND_CONTENT" ref="//@result/@interfaces.0/@configurationElements.143"/>
-      <settings name="ROFS2_ROMVER" value="0.01(0)" ref="//@result/@interfaces.0/@configurationElements.144"/>
-      <settings name="ROFS2_TIME" value="14/07/2008" ref="//@result/@interfaces.0/@configurationElements.145"/>
-      <settings name="ROFS2_VERIBY" value="/epoc32/rombuild/product52/rofs2/product52_5230_rnd_rofs2_version.iby" ref="//@result/@interfaces.0/@configurationElements.146"/>
-      <settings name="ROFS3_CUSTFILE" value="/epoc32/rombuild/product52/rofs3/product52_5230_rnd_rofs3_customersw.txt" ref="//@result/@interfaces.0/@configurationElements.147"/>
-      <settings name="ROFS3_CUSTINFO" value="V 52.50.2008.23. RnD\n14-07-08" ref="//@result/@interfaces.0/@configurationElements.148"/>
-      <settings name="ROFS3_DIR" value="/epoc32/rombuild/product52/rofs3" ref="//@result/@interfaces.0/@configurationElements.149"/>
-      <settings name="ROFS3_E2FNAME" value="/epoc32/rombuild/product52/rofs3/elf2flash/product52_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.150"/>
-      <settings name="ROFS3_FOOTER" ref="//@result/@interfaces.0/@configurationElements.151"/>
-      <settings name="ROFS3_FWIDFILE" value="/epoc32/rombuild/product52/rofs3/product52_5230_rnd_rofs3_fwid.txt" ref="//@result/@interfaces.0/@configurationElements.152"/>
-      <settings name="ROFS3_FWIDINFO" value="id=customer\nversion=V 52.50.2008.23. RnD RND Customer\n" ref="//@result/@interfaces.0/@configurationElements.153"/>
-      <settings name="ROFS3_HEADER" value="#include &lt;data_caging_paths_for_iby.hrh> \n\n// TEMPORARY FIXES BEGIN\n // Enable faster variant creation, to be removed when iby header hierarchy is fixed\n #define __platform_OBY__  // Define platform.oby out\n #include &lt;Variant\Header.iby>\n #include &lt;header.iby>  // Symbian common definitions\n // TEMPORARY FIXES END\n" ref="//@result/@interfaces.0/@configurationElements.154"/>
-      <settings name="ROFS3_MSTOBY" value="/epoc32/rombuild/product52/rofs3/product52_5230_rnd_rofs3_master.oby" ref="//@result/@interfaces.0/@configurationElements.155"/>
-      <settings name="ROFS3_NAME" value="/epoc32/rombuild/product52/rofs3/product52_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.156"/>
-      <settings name="ROFS3_OBY" value=" /epoc32/rombuild/product52/rofs3/product52_5230_rnd_rofs3_collected.oby" ref="//@result/@interfaces.0/@configurationElements.157"/>
-      <settings name="ROFS3_OPT" value="-p -v -nosymbols -eoverride  -D_IMAGE_TYPE_RND -D_EABI=ARMV5 -D_ASIC_VER_11 -DUSE_MULTIROFS -Dproduct52  -es60ibymacros" ref="//@result/@interfaces.0/@configurationElements.158"/>
-      <settings name="ROFS3_ROMVER" value="0.01(0)" ref="//@result/@interfaces.0/@configurationElements.159"/>
-      <settings name="ROFS3_TIME" value="14/07/2008" ref="//@result/@interfaces.0/@configurationElements.160"/>
-      <settings name="ROFS3_VERIBY" value="/epoc32/rombuild/product52/rofs3/product52_5230_rnd_rofs3_version.iby" ref="//@result/@interfaces.0/@configurationElements.161"/>
-      <settings name="SOS_VERSION" value="9.4" ref="//@result/@interfaces.0/@configurationElements.162"/>
-      <settings name="SWUPD_EXT" value=".swupd" ref="//@result/@interfaces.0/@configurationElements.163"/>
-      <settings name="TYPE" value="rnd" ref="//@result/@interfaces.0/@configurationElements.164"/>
-      <settings name="USE_OVERRIDE" value="1" ref="//@result/@interfaces.0/@configurationElements.165"/>
-      <settings name="USE_PAGING" value="code:123" ref="//@result/@interfaces.0/@configurationElements.166"/>
-      <settings name="USE_ROFS" value="1,2,3" ref="//@result/@interfaces.0/@configurationElements.167"/>
-      <settings name="USE_ROMFILE" value="1" ref="//@result/@interfaces.0/@configurationElements.168"/>
-      <settings name="USE_ROMSYMGEN" value="0" ref="//@result/@interfaces.0/@configurationElements.169"/>
-      <settings name="USE_UDEB" value="1" ref="//@result/@interfaces.0/@configurationElements.170"/>
-      <settings name="USE_VERGEN" value="1" ref="//@result/@interfaces.0/@configurationElements.171"/>
-    </configurations>
-    <configurations name="image_conf_product.mk" filePath="\epoc32\rom\config\platform\product\image_conf_product.mk" targetrefs="//@result/@targets.76 //@result/@targets.77 //@result/@targets.78 //@result/@targets.79 //@result/@targets.80 //@result/@targets.81 //@result/@targets.82 //@result/@targets.83 //@result/@targets.84 //@result/@targets.85 //@result/@targets.86 //@result/@targets.87 //@result/@targets.88 //@result/@targets.89 //@result/@targets.90 //@result/@targets.91 //@result/@targets.92 //@result/@targets.93 //@result/@targets.94 //@result/@targets.95 //@result/@targets.96 //@result/@targets.97 //@result/@targets.98 //@result/@targets.99 //@result/@targets.100 //@result/@targets.101 //@result/@targets.102 //@result/@targets.103 //@result/@targets.104 //@result/@targets.105 //@result/@targets.106 //@result/@targets.107 //@result/@targets.108 //@result/@targets.109 //@result/@targets.110 //@result/@targets.111 //@result/@targets.112 //@result/@targets.113">
-      <settings name="BLDROBY" ref="//@result/@interfaces.0/@configurationElements.172"/>
-      <settings name="BLDROM_OPT" value="-p -v -nosymbols   -D_IMAGE_TYPE_RND" ref="//@result/@interfaces.0/@configurationElements.173"/>
-      <settings name="BLDROPT" ref="//@result/@interfaces.0/@configurationElements.174"/>
-      <settings name="CONFIGROOT" value="/epoc32/rom/config" ref="//@result/@interfaces.0/@configurationElements.175"/>
-      <settings name="CORE_CDPROMFILE" value="/epoc32/rombuild/odpcoderomfiles.txt" ref="//@result/@interfaces.0/@configurationElements.176"/>
-      <settings name="CORE_DIR" value="/epoc32/rombuild/product/core" ref="//@result/@interfaces.0/@configurationElements.177"/>
-      <settings name="CORE_E2FNAME" value="/epoc32/rombuild/product/core/elf2flash/product_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.178"/>
-      <settings name="CORE_FWIDFILE" value="/epoc32/rombuild/product/core/product_5230_rnd_core_fwid.txt" ref="//@result/@interfaces.0/@configurationElements.179"/>
-      <settings name="CORE_IMEISVFILE" value="/epoc32/rombuild/product/core/product_5230_rnd_core_imeisv.txt" ref="//@result/@interfaces.0/@configurationElements.180"/>
-      <settings name="CORE_IMEISVINFO" value="00" ref="//@result/@interfaces.0/@configurationElements.181"/>
-      <settings name="CORE_MODELFILE" value="/epoc32/rombuild/product/core/product_5230_rnd_core_model.txt" ref="//@result/@interfaces.0/@configurationElements.182"/>
-      <settings name="CORE_MODELINFO" value="S60" ref="//@result/@interfaces.0/@configurationElements.183"/>
-      <settings name="CORE_MSTOBY" value="/epoc32/rombuild/product/core/product_5230_rnd_core_master.oby" ref="//@result/@interfaces.0/@configurationElements.184"/>
-      <settings name="CORE_NAME" value="/epoc32/rombuild/product/core/product_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.185"/>
-      <settings name="CORE_NDPROMFILE" value="/epoc32/rombuild/romfiles.txt" ref="//@result/@interfaces.0/@configurationElements.186"/>
-      <settings name="CORE_OBY" value="/epoc32/rom/ncp.oby" ref="//@result/@interfaces.0/@configurationElements.187"/>
-      <settings name="CORE_ODPROMFILE" value="/epoc32/rombuild/odpromfiles.txt" ref="//@result/@interfaces.0/@configurationElements.188"/>
-      <settings name="CORE_OPT" value="-p -v -nosymbols   -D_IMAGE_TYPE_RND -D_EABI=ARMV5 -D_ASIC_VER_11  -Dproduct  -DLCD_SHELL" ref="//@result/@interfaces.0/@configurationElements.189"/>
-      <settings name="CORE_PLATFILE" value="/epoc32/rombuild/product/core/product_5230_rnd_core_platform.txt" ref="//@result/@interfaces.0/@configurationElements.190"/>
-      <settings name="CORE_PLATINFO" value="SymbianOSMajorVersion=9\nSymbianOSMinorVersion=4\n" ref="//@result/@interfaces.0/@configurationElements.191"/>
-      <settings name="CORE_PRODFILE" value="/epoc32/rombuild/product/core/product_5230_rnd_core_product.txt" ref="//@result/@interfaces.0/@configurationElements.192"/>
-      <settings name="CORE_ROFSFILE" value="/epoc32/rombuild/odpcoderofsfiles.txt" ref="//@result/@interfaces.0/@configurationElements.193"/>
-      <settings name="CORE_ROMVER" value="0.01(0)" ref="//@result/@interfaces.0/@configurationElements.194"/>
-      <settings name="CORE_SWVERFILE" value="/epoc32/rombuild/product/core/product_5230_rnd_core_sw.txt" ref="//@result/@interfaces.0/@configurationElements.195"/>
-      <settings name="CORE_SWVERINFO" value="V 52.2008.29.xx RND\n14-07-08\nRM-356\n(c) Nokia" ref="//@result/@interfaces.0/@configurationElements.196"/>
-      <settings name="CORE_TIME" value="14/07/2008" ref="//@result/@interfaces.0/@configurationElements.197"/>
-      <settings name="CORE_UDEBFILE" value="/epoc32/rombuild/mytraces.txt" ref="//@result/@interfaces.0/@configurationElements.198"/>
-      <settings name="CORE_VERIBY" value="/epoc32/rombuild/product/core/product_5230_rnd_core_version.iby" ref="//@result/@interfaces.0/@configurationElements.199"/>
-      <settings name="CORE_VERSION" value="V 52.2008.29.xx RND" ref="//@result/@interfaces.0/@configurationElements.200"/>
-      <settings name="COREPLAT_NAME" value="platform" ref="//@result/@interfaces.0/@configurationElements.201"/>
-      <settings name="CUSTVARIANT_DIR" ref="//@result/@interfaces.0/@configurationElements.202"/>
-      <settings name="DEFAULT_LANGUAGE" value="SC" ref="//@result/@interfaces.0/@configurationElements.203"/>
-      <settings name="FLASH_EXT" value=".fpsx" ref="//@result/@interfaces.0/@configurationElements.204"/>
-      <settings name="HWID" value="5230*" ref="//@result/@interfaces.0/@configurationElements.205"/>
-      <settings name="HWID_LIST" value="5230" ref="//@result/@interfaces.0/@configurationElements.206"/>
-      <settings name="KEEPTEMP" value="0" ref="//@result/@interfaces.0/@configurationElements.207"/>
-      <settings name="LABEL" ref="//@result/@interfaces.0/@configurationElements.208"/>
-      <settings name="LANGID" value="01" ref="//@result/@interfaces.0/@configurationElements.209"/>
-      <settings name="LANGUAGES" value="SC" ref="//@result/@interfaces.0/@configurationElements.210"/>
-      <settings name="NAME" value="product_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.211"/>
-      <settings name="OPERATOR_OBY" value="/epoc32/rombuild/product/rofs3/product_5230_rnd_rofs3_operator.oby" ref="//@result/@interfaces.0/@configurationElements.212"/>
-      <settings name="OPERATOR_OBYGEN" value="/epoc32/rombuild/product/rofs3/product_5230_rnd_rofs3_operator.oby | /epoc32/rom/include/operator | *.iby" ref="//@result/@interfaces.0/@configurationElements.213"/>
-      <settings name="PRODUCT_MODEL" value="N00" ref="//@result/@interfaces.0/@configurationElements.214"/>
-      <settings name="PRODUCT_NAME" value="product" ref="//@result/@interfaces.0/@configurationElements.215"/>
-      <settings name="PRODUCT_REVISION" value="01" ref="//@result/@interfaces.0/@configurationElements.216"/>
-      <settings name="RELEASEDIR" value="/flash_images/product" ref="//@result/@interfaces.0/@configurationElements.217"/>
-      <settings name="RELEASEFILES" value="/epoc32/rombuild/product/product_5230_rnd.fpsx /epoc32/rombuild/product/core/product_5230_rnd.rom.log /epoc32/rombuild/product/core/product_5230_rnd.rofs1.log /epoc32/rombuild/product/rofs2/product_5230_rnd.rofs2.log /epoc32/rombuild/product/rofs3/product_5230_rnd.rofs3.log" ref="//@result/@interfaces.0/@configurationElements.218"/>
-      <settings name="RELEASENAME" value="product_rnd_20080714082818_haismail" ref="//@result/@interfaces.0/@configurationElements.219"/>
-      <settings name="ROFS2_DIR" value="/epoc32/rombuild/product/rofs2" ref="//@result/@interfaces.0/@configurationElements.220"/>
-      <settings name="ROFS2_E2FNAME" value="/epoc32/rombuild/product/rofs2/elf2flash/product_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.221"/>
-      <settings name="ROFS2_FOOTER" ref="//@result/@interfaces.0/@configurationElements.222"/>
-      <settings name="ROFS2_FWIDFILE" value="/epoc32/rombuild/product/rofs2/product_5230_rnd_rofs2_fwid.txt" ref="//@result/@interfaces.0/@configurationElements.223"/>
-      <settings name="ROFS2_FWIDINFO" value="id=language\nversion=01\n" ref="//@result/@interfaces.0/@configurationElements.224"/>
-      <settings name="ROFS2_HEADER" value="#include &lt;data_caging_paths_for_iby.hrh> \n\n// TEMPORARY FIXES BEGIN\n // Enable faster variant creation, to be removed when iby header hierarchy is fixed\n #define __platform_OBY__  // Define platform.oby out\n #include &lt;Variant\Header.iby>\n #include &lt;header.iby>  // Symbian common definitions\n // TEMPORARY FIXES END\n" ref="//@result/@interfaces.0/@configurationElements.225"/>
-      <settings name="ROFS2_MSTOBY" value="/epoc32/rombuild/product/rofs2/product_5230_rnd_rofs2_master.oby" ref="//@result/@interfaces.0/@configurationElements.226"/>
-      <settings name="ROFS2_NAME" value="/epoc32/rombuild/product/rofs2/product_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.227"/>
-      <settings name="ROFS2_OBY" ref="//@result/@interfaces.0/@configurationElements.228"/>
-      <settings name="ROFS2_OPT" ref="//@result/@interfaces.0/@configurationElements.229"/>
-      <settings name="ROFS2_ROMVER" value="0.01(0)" ref="//@result/@interfaces.0/@configurationElements.230"/>
-      <settings name="ROFS2_TIME" value="14/07/2008" ref="//@result/@interfaces.0/@configurationElements.231"/>
-      <settings name="ROFS2_VERIBY" value="/epoc32/rombuild/product/rofs2/product_5230_rnd_rofs2_version.iby" ref="//@result/@interfaces.0/@configurationElements.232"/>
-      <settings name="ROFS3_CUSTFILE" value="/epoc32/rombuild/product/rofs3/product_5230_rnd_rofs3_customersw.txt" ref="//@result/@interfaces.0/@configurationElements.233"/>
-      <settings name="ROFS3_CUSTINFO" value="V 0.00.0\n14-07-08" ref="//@result/@interfaces.0/@configurationElements.234"/>
-      <settings name="ROFS3_DIR" value="/epoc32/rombuild/product/rofs3" ref="//@result/@interfaces.0/@configurationElements.235"/>
-      <settings name="ROFS3_E2FNAME" value="/epoc32/rombuild/product/rofs3/elf2flash/product_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.236"/>
-      <settings name="ROFS3_FOOTER" ref="//@result/@interfaces.0/@configurationElements.237"/>
-      <settings name="ROFS3_FWIDFILE" value="/epoc32/rombuild/product/rofs3/product_5230_rnd_rofs3_fwid.txt" ref="//@result/@interfaces.0/@configurationElements.238"/>
-      <settings name="ROFS3_FWIDINFO" value="id=customer\nversion=V 0.00.0 RND Customer\n" ref="//@result/@interfaces.0/@configurationElements.239"/>
-      <settings name="ROFS3_HEADER" value="#include &lt;data_caging_paths_for_iby.hrh> \n\n// TEMPORARY FIXES BEGIN\n // Enable faster variant creation, to be removed when iby header hierarchy is fixed\n #define __platform_OBY__  // Define platform.oby out\n #include &lt;Variant\Header.iby>\n #include &lt;header.iby>  // Symbian common definitions\n // TEMPORARY FIXES END\n" ref="//@result/@interfaces.0/@configurationElements.240"/>
-      <settings name="ROFS3_MSTOBY" value="/epoc32/rombuild/product/rofs3/product_5230_rnd_rofs3_master.oby" ref="//@result/@interfaces.0/@configurationElements.241"/>
-      <settings name="ROFS3_NAME" value="/epoc32/rombuild/product/rofs3/product_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.242"/>
-      <settings name="ROFS3_OBY" value="/epoc32/rombuild/product/rofs3/product_5230_rnd_rofs3_operator.oby" ref="//@result/@interfaces.0/@configurationElements.243"/>
-      <settings name="ROFS3_OPT" ref="//@result/@interfaces.0/@configurationElements.244"/>
-      <settings name="ROFS3_ROMVER" value="0.01(0)" ref="//@result/@interfaces.0/@configurationElements.245"/>
-      <settings name="ROFS3_TIME" value="14/07/2008" ref="//@result/@interfaces.0/@configurationElements.246"/>
-      <settings name="ROFS3_VERIBY" value="/epoc32/rombuild/product/rofs3/product_5230_rnd_rofs3_version.iby" ref="//@result/@interfaces.0/@configurationElements.247"/>
-      <settings name="SOS_VERSION" value="9.4" ref="//@result/@interfaces.0/@configurationElements.248"/>
-      <settings name="SWUPD_EXT" value=".swupd" ref="//@result/@interfaces.0/@configurationElements.249"/>
-      <settings name="TYPE" value="rnd" ref="//@result/@interfaces.0/@configurationElements.250"/>
-      <settings name="USE_OVERRIDE" value="0" ref="//@result/@interfaces.0/@configurationElements.251"/>
-      <settings name="USE_PAGING" value="code:123" ref="//@result/@interfaces.0/@configurationElements.252"/>
-      <settings name="USE_ROFS" value="1" ref="//@result/@interfaces.0/@configurationElements.253"/>
-      <settings name="USE_ROMFILE" value="1" ref="//@result/@interfaces.0/@configurationElements.254"/>
-      <settings name="USE_ROMSYMGEN" value="0" ref="//@result/@interfaces.0/@configurationElements.255"/>
-      <settings name="USE_UDEB" value="0" ref="//@result/@interfaces.0/@configurationElements.256"/>
-      <settings name="USE_VERGEN" value="0" ref="//@result/@interfaces.0/@configurationElements.257"/>
-    </configurations>
-    <configurations name="image_conf_product_ui.mk" filePath="\epoc32\rom\config\platform\product\image_conf_product_ui.mk" targetrefs="//@result/@targets.114 //@result/@targets.115 //@result/@targets.116 //@result/@targets.117 //@result/@targets.118 //@result/@targets.119 //@result/@targets.120 //@result/@targets.121 //@result/@targets.122 //@result/@targets.123 //@result/@targets.124 //@result/@targets.125 //@result/@targets.126 //@result/@targets.127 //@result/@targets.128 //@result/@targets.129 //@result/@targets.130 //@result/@targets.131 //@result/@targets.132 //@result/@targets.133 //@result/@targets.134 //@result/@targets.135 //@result/@targets.136 //@result/@targets.137 //@result/@targets.138 //@result/@targets.139 //@result/@targets.140 //@result/@targets.141 //@result/@targets.142 //@result/@targets.143 //@result/@targets.144 //@result/@targets.145 //@result/@targets.146 //@result/@targets.147 //@result/@targets.148 //@result/@targets.149 //@result/@targets.150 //@result/@targets.151">
-      <settings name="BLDROBY" ref="//@result/@interfaces.0/@configurationElements.258"/>
-      <settings name="BLDROM_OPT" value="-p -v -nosymbols -eoverride  -D_IMAGE_TYPE_RND" ref="//@result/@interfaces.0/@configurationElements.259"/>
-      <settings name="BLDROPT" ref="//@result/@interfaces.0/@configurationElements.260"/>
-      <settings name="CONFIGROOT" value="/epoc32/rom/config" ref="//@result/@interfaces.0/@configurationElements.261"/>
-      <settings name="CORE_CDPROMFILE" value="/epoc32/rombuild/odpcoderomfiles.txt" ref="//@result/@interfaces.0/@configurationElements.262"/>
-      <settings name="CORE_DIR" value="/epoc32/rombuild/product/core" ref="//@result/@interfaces.0/@configurationElements.263"/>
-      <settings name="CORE_E2FNAME" value="/epoc32/rombuild/product/core/elf2flash/product_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.264"/>
-      <settings name="CORE_FWIDFILE" value="/epoc32/rombuild/product/core/product_5230_rnd_core_fwid.txt" ref="//@result/@interfaces.0/@configurationElements.265"/>
-      <settings name="CORE_IMEISVFILE" value="/epoc32/rombuild/product/core/product_5230_rnd_core_imeisv.txt" ref="//@result/@interfaces.0/@configurationElements.266"/>
-      <settings name="CORE_IMEISVINFO" value="00" ref="//@result/@interfaces.0/@configurationElements.267"/>
-      <settings name="CORE_MODELFILE" value="/epoc32/rombuild/product/core/product_5230_rnd_core_model.txt" ref="//@result/@interfaces.0/@configurationElements.268"/>
-      <settings name="CORE_MODELINFO" value="S60" ref="//@result/@interfaces.0/@configurationElements.269"/>
-      <settings name="CORE_MSTOBY" value="/epoc32/rombuild/product/core/product_5230_rnd_core_master.oby" ref="//@result/@interfaces.0/@configurationElements.270"/>
-      <settings name="CORE_NAME" value="/epoc32/rombuild/product/core/product_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.271"/>
-      <settings name="CORE_NDPROMFILE" value="/epoc32/rombuild/romfiles.txt" ref="//@result/@interfaces.0/@configurationElements.272"/>
-      <settings name="CORE_OBY" value="/epoc32/rom/master.oby /epoc32/rom/ppd.oby /epoc32/rom/rnd.oby /epoc32/rom/override.oby /epoc32/rombuild/product/core/product_5230_rnd_core_collected.oby /epoc32/rom/include/symbianos.iby /epoc32/rom/variant/patchdata.iby" ref="//@result/@interfaces.0/@configurationElements.273"/>
-      <settings name="CORE_ODPROMFILE" value="/epoc32/rombuild/odpromfiles.txt" ref="//@result/@interfaces.0/@configurationElements.274"/>
-      <settings name="CORE_OPT" value="-p -v -nosymbols -eoverride  -D_IMAGE_TYPE_RND -D_EABI=ARMV5 -D_ASIC_VER_11 -DUSE_MULTIROFS -Dproduct  -es60ibymacros -DSECTION -DRND_CONTENT " ref="//@result/@interfaces.0/@configurationElements.275"/>
-      <settings name="CORE_PLATFILE" value="/epoc32/rombuild/product/core/product_5230_rnd_core_platform.txt" ref="//@result/@interfaces.0/@configurationElements.276"/>
-      <settings name="CORE_PLATINFO" value="SymbianOSMajorVersion=9\nSymbianOSMinorVersion=4\n" ref="//@result/@interfaces.0/@configurationElements.277"/>
-      <settings name="CORE_PRODFILE" value="/epoc32/rombuild/product/core/product_5230_rnd_core_product.txt" ref="//@result/@interfaces.0/@configurationElements.278"/>
-      <settings name="CORE_ROFSFILE" value="/epoc32/rombuild/odpcoderofsfiles.txt" ref="//@result/@interfaces.0/@configurationElements.279"/>
-      <settings name="CORE_ROMVER" value="0.01(0)" ref="//@result/@interfaces.0/@configurationElements.280"/>
-      <settings name="CORE_SWVERFILE" value="/epoc32/rombuild/product/core/product_5230_rnd_core_sw.txt" ref="//@result/@interfaces.0/@configurationElements.281"/>
-      <settings name="CORE_SWVERINFO" value="V 52.50.2008.24 RnD\n13-06-08\nRM-356\n(c)NMP" ref="//@result/@interfaces.0/@configurationElements.282"/>
-      <settings name="CORE_TIME" value="14/07/2008" ref="//@result/@interfaces.0/@configurationElements.283"/>
-      <settings name="CORE_UDEBFILE" value="/epoc32/rombuild/mytraces.txt" ref="//@result/@interfaces.0/@configurationElements.284"/>
-      <settings name="CORE_VERIBY" value="/epoc32/rombuild/product/core/product_5230_rnd_core_version.iby" ref="//@result/@interfaces.0/@configurationElements.285"/>
-      <settings name="CORE_VERSION" value="V 52.50.2008.24 RnD" ref="//@result/@interfaces.0/@configurationElements.286"/>
-      <settings name="COREPLAT_NAME" value="platform" ref="//@result/@interfaces.0/@configurationElements.287"/>
-      <settings name="CUSTVARIANT_DIR" ref="//@result/@interfaces.0/@configurationElements.288"/>
-      <settings name="DEFAULT_LANGUAGE" value="01" ref="//@result/@interfaces.0/@configurationElements.289"/>
-      <settings name="FLASH_EXT" value=".fpsx" ref="//@result/@interfaces.0/@configurationElements.290"/>
-      <settings name="HWID" value="5230*" ref="//@result/@interfaces.0/@configurationElements.291"/>
-      <settings name="HWID_LIST" value="5230" ref="//@result/@interfaces.0/@configurationElements.292"/>
-      <settings name="KEEPTEMP" value="0" ref="//@result/@interfaces.0/@configurationElements.293"/>
-      <settings name="LABEL" ref="//@result/@interfaces.0/@configurationElements.294"/>
-      <settings name="LANGID" value="01" ref="//@result/@interfaces.0/@configurationElements.295"/>
-      <settings name="LANGUAGES" value="01" ref="//@result/@interfaces.0/@configurationElements.296"/>
-      <settings name="NAME" value="product_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.297"/>
-      <settings name="OPERATOR_OBY" ref="//@result/@interfaces.0/@configurationElements.298"/>
-      <settings name="OPERATOR_OBYGEN" value=" | /epoc32/rom/include/operator | *.iby" ref="//@result/@interfaces.0/@configurationElements.299"/>
-      <settings name="PRODUCT_MODEL" value="N00" ref="//@result/@interfaces.0/@configurationElements.300"/>
-      <settings name="PRODUCT_NAME" value="product" ref="//@result/@interfaces.0/@configurationElements.301"/>
-      <settings name="PRODUCT_REVISION" value="01" ref="//@result/@interfaces.0/@configurationElements.302"/>
-      <settings name="RELEASEDIR" value="/flash_images/product" ref="//@result/@interfaces.0/@configurationElements.303"/>
-      <settings name="RELEASEFILES" value="/epoc32/rombuild/product/product_5230_rnd.fpsx /epoc32/rombuild/product/core/product_5230_rnd.rom.log /epoc32/rombuild/product/core/product_5230_rnd.rofs1.log /epoc32/rombuild/product/rofs2/product_5230_rnd.rofs2.log /epoc32/rombuild/product/rofs3/product_5230_rnd.rofs3.log" ref="//@result/@interfaces.0/@configurationElements.304"/>
-      <settings name="RELEASENAME" value="product_rnd_20080714082822_haismail" ref="//@result/@interfaces.0/@configurationElements.305"/>
-      <settings name="ROFS2_DIR" value="/epoc32/rombuild/product/rofs2" ref="//@result/@interfaces.0/@configurationElements.306"/>
-      <settings name="ROFS2_E2FNAME" value="/epoc32/rombuild/product/rofs2/elf2flash/product_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.307"/>
-      <settings name="ROFS2_FOOTER" ref="//@result/@interfaces.0/@configurationElements.308"/>
-      <settings name="ROFS2_FWIDFILE" value="/epoc32/rombuild/product/rofs2/product_5230_rnd_rofs2_fwid.txt" ref="//@result/@interfaces.0/@configurationElements.309"/>
-      <settings name="ROFS2_FWIDINFO" value="id=language\nversion=01\n" ref="//@result/@interfaces.0/@configurationElements.310"/>
-      <settings name="ROFS2_HEADER" value="#include &lt;data_caging_paths_for_iby.hrh> \n\n// TEMPORARY FIXES BEGIN\n // Enable faster variant creation, to be removed when iby header hierarchy is fixed\n #define __platform_OBY__  // Define platform.oby out\n #include &lt;Variant\Header.iby>\n #include &lt;header.iby>  // Symbian common definitions\n // TEMPORARY FIXES END\n" ref="//@result/@interfaces.0/@configurationElements.311"/>
-      <settings name="ROFS2_MSTOBY" value="/epoc32/rombuild/product/rofs2/product_5230_rnd_rofs2_master.oby" ref="//@result/@interfaces.0/@configurationElements.312"/>
-      <settings name="ROFS2_NAME" value="/epoc32/rombuild/product/rofs2/product_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.313"/>
-      <settings name="ROFS2_OBY" value="&lt;Variant.oby> &lt;ppd_variant.oby> &lt;ppd_locales.iby> /epoc32/rom/override.oby /epoc32/rombuild/product/rofs2/product_5230_rnd_rofs2_language_collected.oby /epoc32/rombuild/product/rofs2/product_5230_rnd_rofs2_customer_collected.oby" ref="//@result/@interfaces.0/@configurationElements.314"/>
-      <settings name="ROFS2_OPT" value="-p -v -nosymbols -eoverride  -D_IMAGE_TYPE_RND -D_EABI=ARMV5 -D_ASIC_VER_11 -DUSE_MULTIROFS -Dproduct  -es60ibymacros -elocalise -DRND_CONTENT" ref="//@result/@interfaces.0/@configurationElements.315"/>
-      <settings name="ROFS2_ROMVER" value="0.01(0)" ref="//@result/@interfaces.0/@configurationElements.316"/>
-      <settings name="ROFS2_TIME" value="14/07/2008" ref="//@result/@interfaces.0/@configurationElements.317"/>
-      <settings name="ROFS2_VERIBY" value="/epoc32/rombuild/product/rofs2/product_5230_rnd_rofs2_version.iby" ref="//@result/@interfaces.0/@configurationElements.318"/>
-      <settings name="ROFS3_CUSTFILE" value="/epoc32/rombuild/product/rofs3/product_5230_rnd_rofs3_customersw.txt" ref="//@result/@interfaces.0/@configurationElements.319"/>
-      <settings name="ROFS3_CUSTINFO" value="V 52.50.2008.24 RnD\n14-07-08" ref="//@result/@interfaces.0/@configurationElements.320"/>
-      <settings name="ROFS3_DIR" value="/epoc32/rombuild/product/rofs3" ref="//@result/@interfaces.0/@configurationElements.321"/>
-      <settings name="ROFS3_E2FNAME" value="/epoc32/rombuild/product/rofs3/elf2flash/product_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.322"/>
-      <settings name="ROFS3_FOOTER" ref="//@result/@interfaces.0/@configurationElements.323"/>
-      <settings name="ROFS3_FWIDFILE" value="/epoc32/rombuild/product/rofs3/product_5230_rnd_rofs3_fwid.txt" ref="//@result/@interfaces.0/@configurationElements.324"/>
-      <settings name="ROFS3_FWIDINFO" value="id=customer\nversion=V 52.50.2008.24 RnD RND Customer\n" ref="//@result/@interfaces.0/@configurationElements.325"/>
-      <settings name="ROFS3_HEADER" value="#include &lt;data_caging_paths_for_iby.hrh> \n\n// TEMPORARY FIXES BEGIN\n // Enable faster variant creation, to be removed when iby header hierarchy is fixed\n #define __platform_OBY__  // Define platform.oby out\n #include &lt;Variant\Header.iby>\n #include &lt;header.iby>  // Symbian common definitions\n // TEMPORARY FIXES END\n" ref="//@result/@interfaces.0/@configurationElements.326"/>
-      <settings name="ROFS3_MSTOBY" value="/epoc32/rombuild/product/rofs3/product_5230_rnd_rofs3_master.oby" ref="//@result/@interfaces.0/@configurationElements.327"/>
-      <settings name="ROFS3_NAME" value="/epoc32/rombuild/product/rofs3/product_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.328"/>
-      <settings name="ROFS3_OBY" value=" /epoc32/rombuild/product/rofs3/product_5230_rnd_rofs3_collected.oby" ref="//@result/@interfaces.0/@configurationElements.329"/>
-      <settings name="ROFS3_OPT" value="-p -v -nosymbols -eoverride  -D_IMAGE_TYPE_RND -D_EABI=ARMV5 -D_ASIC_VER_11 -DUSE_MULTIROFS -Dproduct  -es60ibymacros" ref="//@result/@interfaces.0/@configurationElements.330"/>
-      <settings name="ROFS3_ROMVER" value="0.01(0)" ref="//@result/@interfaces.0/@configurationElements.331"/>
-      <settings name="ROFS3_TIME" value="14/07/2008" ref="//@result/@interfaces.0/@configurationElements.332"/>
-      <settings name="ROFS3_VERIBY" value="/epoc32/rombuild/product/rofs3/product_5230_rnd_rofs3_version.iby" ref="//@result/@interfaces.0/@configurationElements.333"/>
-      <settings name="SOS_VERSION" value="9.4" ref="//@result/@interfaces.0/@configurationElements.334"/>
-      <settings name="SWUPD_EXT" value=".swupd" ref="//@result/@interfaces.0/@configurationElements.335"/>
-      <settings name="TYPE" value="rnd" ref="//@result/@interfaces.0/@configurationElements.336"/>
-      <settings name="USE_OVERRIDE" value="1" ref="//@result/@interfaces.0/@configurationElements.337"/>
-      <settings name="USE_PAGING" value="code:123" ref="//@result/@interfaces.0/@configurationElements.338"/>
-      <settings name="USE_ROFS" value="1,2,3" ref="//@result/@interfaces.0/@configurationElements.339"/>
-      <settings name="USE_ROMFILE" value="1" ref="//@result/@interfaces.0/@configurationElements.340"/>
-      <settings name="USE_ROMSYMGEN" value="0" ref="//@result/@interfaces.0/@configurationElements.341"/>
-      <settings name="USE_UDEB" value="1" ref="//@result/@interfaces.0/@configurationElements.342"/>
-      <settings name="USE_VERGEN" value="1" ref="//@result/@interfaces.0/@configurationElements.343"/>
-    </configurations>
-    <configurations name="image_conf_product.mk" filePath="\epoc32\rom\config\platform\product_oem\image_conf_product.mk" targetrefs="//@result/@targets.152 //@result/@targets.153 //@result/@targets.154 //@result/@targets.155 //@result/@targets.156 //@result/@targets.157 //@result/@targets.158 //@result/@targets.159 //@result/@targets.160 //@result/@targets.161 //@result/@targets.162 //@result/@targets.163 //@result/@targets.164 //@result/@targets.165 //@result/@targets.166 //@result/@targets.167 //@result/@targets.168 //@result/@targets.169 //@result/@targets.170 //@result/@targets.171 //@result/@targets.172 //@result/@targets.173 //@result/@targets.174 //@result/@targets.175 //@result/@targets.176 //@result/@targets.177 //@result/@targets.178 //@result/@targets.179 //@result/@targets.180 //@result/@targets.181 //@result/@targets.182 //@result/@targets.183 //@result/@targets.184 //@result/@targets.185 //@result/@targets.186 //@result/@targets.187 //@result/@targets.188 //@result/@targets.189">
-      <settings name="BLDROBY" ref="//@result/@interfaces.0/@configurationElements.344"/>
-      <settings name="BLDROM_OPT" value="-p -v -nosymbols   -D_IMAGE_TYPE_RND" ref="//@result/@interfaces.0/@configurationElements.345"/>
-      <settings name="BLDROPT" ref="//@result/@interfaces.0/@configurationElements.346"/>
-      <settings name="CONFIGROOT" value="/epoc32/rom/config" ref="//@result/@interfaces.0/@configurationElements.347"/>
-      <settings name="CORE_CDPROMFILE" value="/epoc32/rombuild/odpcoderomfiles.txt" ref="//@result/@interfaces.0/@configurationElements.348"/>
-      <settings name="CORE_DIR" value="/epoc32/rombuild/product/core" ref="//@result/@interfaces.0/@configurationElements.349"/>
-      <settings name="CORE_E2FNAME" value="/epoc32/rombuild/product/core/elf2flash/product_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.350"/>
-      <settings name="CORE_FWIDFILE" value="/epoc32/rombuild/product/core/product_5230_rnd_core_fwid.txt" ref="//@result/@interfaces.0/@configurationElements.351"/>
-      <settings name="CORE_IMEISVFILE" value="/epoc32/rombuild/product/core/product_5230_rnd_core_imeisv.txt" ref="//@result/@interfaces.0/@configurationElements.352"/>
-      <settings name="CORE_IMEISVINFO" value="00" ref="//@result/@interfaces.0/@configurationElements.353"/>
-      <settings name="CORE_MODELFILE" value="/epoc32/rombuild/product/core/product_5230_rnd_core_model.txt" ref="//@result/@interfaces.0/@configurationElements.354"/>
-      <settings name="CORE_MODELINFO" value="S60" ref="//@result/@interfaces.0/@configurationElements.355"/>
-      <settings name="CORE_MSTOBY" value="/epoc32/rombuild/product/core/product_5230_rnd_core_master.oby" ref="//@result/@interfaces.0/@configurationElements.356"/>
-      <settings name="CORE_NAME" value="/epoc32/rombuild/product/core/product_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.357"/>
-      <settings name="CORE_NDPROMFILE" value="/epoc32/rombuild/romfiles.txt" ref="//@result/@interfaces.0/@configurationElements.358"/>
-      <settings name="CORE_OBY" value="/epoc32/rom/ncp.oby" ref="//@result/@interfaces.0/@configurationElements.359"/>
-      <settings name="CORE_ODPROMFILE" value="/epoc32/rombuild/odpromfiles.txt" ref="//@result/@interfaces.0/@configurationElements.360"/>
-      <settings name="CORE_OPT" value="-p -v -nosymbols   -D_IMAGE_TYPE_RND -D_EABI=ARMV5 -D_ASIC_VER_11  -Dproduct  -DLCD_SHELL" ref="//@result/@interfaces.0/@configurationElements.361"/>
-      <settings name="CORE_PLATFILE" value="/epoc32/rombuild/product/core/product_5230_rnd_core_platform.txt" ref="//@result/@interfaces.0/@configurationElements.362"/>
-      <settings name="CORE_PLATINFO" value="SymbianOSMajorVersion=9\nSymbianOSMinorVersion=4\n" ref="//@result/@interfaces.0/@configurationElements.363"/>
-      <settings name="CORE_PRODFILE" value="/epoc32/rombuild/product/core/product_5230_rnd_core_product.txt" ref="//@result/@interfaces.0/@configurationElements.364"/>
-      <settings name="CORE_ROFSFILE" value="/epoc32/rombuild/odpcoderofsfiles.txt" ref="//@result/@interfaces.0/@configurationElements.365"/>
-      <settings name="CORE_ROMVER" value="0.01(0)" ref="//@result/@interfaces.0/@configurationElements.366"/>
-      <settings name="CORE_SWVERFILE" value="/epoc32/rombuild/product/core/product_5230_rnd_core_sw.txt" ref="//@result/@interfaces.0/@configurationElements.367"/>
-      <settings name="CORE_SWVERINFO" value="V 52.2008.29.xx RND\n14-07-08\nRM-356\n(c) Nokia" ref="//@result/@interfaces.0/@configurationElements.368"/>
-      <settings name="CORE_TIME" value="14/07/2008" ref="//@result/@interfaces.0/@configurationElements.369"/>
-      <settings name="CORE_UDEBFILE" value="/epoc32/rombuild/mytraces.txt" ref="//@result/@interfaces.0/@configurationElements.370"/>
-      <settings name="CORE_VERIBY" value="/epoc32/rombuild/product/core/product_5230_rnd_core_version.iby" ref="//@result/@interfaces.0/@configurationElements.371"/>
-      <settings name="CORE_VERSION" value="V 52.2008.29.xx RND" ref="//@result/@interfaces.0/@configurationElements.372"/>
-      <settings name="COREPLAT_NAME" value="platform" ref="//@result/@interfaces.0/@configurationElements.373"/>
-      <settings name="CUSTVARIANT_DIR" ref="//@result/@interfaces.0/@configurationElements.374"/>
-      <settings name="DEFAULT_LANGUAGE" value="SC" ref="//@result/@interfaces.0/@configurationElements.375"/>
-      <settings name="FLASH_EXT" value=".fpsx" ref="//@result/@interfaces.0/@configurationElements.376"/>
-      <settings name="HWID" value="5230*" ref="//@result/@interfaces.0/@configurationElements.377"/>
-      <settings name="HWID_LIST" value="5230" ref="//@result/@interfaces.0/@configurationElements.378"/>
-      <settings name="KEEPTEMP" value="0" ref="//@result/@interfaces.0/@configurationElements.379"/>
-      <settings name="LABEL" ref="//@result/@interfaces.0/@configurationElements.380"/>
-      <settings name="LANGID" value="01" ref="//@result/@interfaces.0/@configurationElements.381"/>
-      <settings name="LANGUAGES" value="SC" ref="//@result/@interfaces.0/@configurationElements.382"/>
-      <settings name="NAME" value="product_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.383"/>
-      <settings name="OPERATOR_OBY" value="/epoc32/rombuild/product/rofs3/product_5230_rnd_rofs3_operator.oby" ref="//@result/@interfaces.0/@configurationElements.384"/>
-      <settings name="OPERATOR_OBYGEN" value="/epoc32/rombuild/product/rofs3/product_5230_rnd_rofs3_operator.oby | /epoc32/rom/include/operator | *.iby" ref="//@result/@interfaces.0/@configurationElements.385"/>
-      <settings name="PRODUCT_MODEL" value="N00" ref="//@result/@interfaces.0/@configurationElements.386"/>
-      <settings name="PRODUCT_NAME" value="product" ref="//@result/@interfaces.0/@configurationElements.387"/>
-      <settings name="PRODUCT_REVISION" value="01" ref="//@result/@interfaces.0/@configurationElements.388"/>
-      <settings name="RELEASEDIR" value="/flash_images/product" ref="//@result/@interfaces.0/@configurationElements.389"/>
-      <settings name="RELEASEFILES" value="/epoc32/rombuild/product/product_5230_rnd.fpsx /epoc32/rombuild/product/core/product_5230_rnd.rom.log /epoc32/rombuild/product/core/product_5230_rnd.rofs1.log /epoc32/rombuild/product/rofs2/product_5230_rnd.rofs2.log /epoc32/rombuild/product/rofs3/product_5230_rnd.rofs3.log" ref="//@result/@interfaces.0/@configurationElements.390"/>
-      <settings name="RELEASENAME" value="product_rnd_20080714082826_haismail" ref="//@result/@interfaces.0/@configurationElements.391"/>
-      <settings name="ROFS2_DIR" value="/epoc32/rombuild/product/rofs2" ref="//@result/@interfaces.0/@configurationElements.392"/>
-      <settings name="ROFS2_E2FNAME" value="/epoc32/rombuild/product/rofs2/elf2flash/product_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.393"/>
-      <settings name="ROFS2_FOOTER" ref="//@result/@interfaces.0/@configurationElements.394"/>
-      <settings name="ROFS2_FWIDFILE" value="/epoc32/rombuild/product/rofs2/product_5230_rnd_rofs2_fwid.txt" ref="//@result/@interfaces.0/@configurationElements.395"/>
-      <settings name="ROFS2_FWIDINFO" value="id=language\nversion=01\n" ref="//@result/@interfaces.0/@configurationElements.396"/>
-      <settings name="ROFS2_HEADER" value="#include &lt;data_caging_paths_for_iby.hrh> \n\n// TEMPORARY FIXES BEGIN\n // Enable faster variant creation, to be removed when iby header hierarchy is fixed\n #define __platform_OBY__  // Define platform.oby out\n #include &lt;Variant\Header.iby>\n #include &lt;header.iby>  // Symbian common definitions\n // TEMPORARY FIXES END\n" ref="//@result/@interfaces.0/@configurationElements.397"/>
-      <settings name="ROFS2_MSTOBY" value="/epoc32/rombuild/product/rofs2/product_5230_rnd_rofs2_master.oby" ref="//@result/@interfaces.0/@configurationElements.398"/>
-      <settings name="ROFS2_NAME" value="/epoc32/rombuild/product/rofs2/product_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.399"/>
-      <settings name="ROFS2_OBY" ref="//@result/@interfaces.0/@configurationElements.400"/>
-      <settings name="ROFS2_OPT" ref="//@result/@interfaces.0/@configurationElements.401"/>
-      <settings name="ROFS2_ROMVER" value="0.01(0)" ref="//@result/@interfaces.0/@configurationElements.402"/>
-      <settings name="ROFS2_TIME" value="14/07/2008" ref="//@result/@interfaces.0/@configurationElements.403"/>
-      <settings name="ROFS2_VERIBY" value="/epoc32/rombuild/product/rofs2/product_5230_rnd_rofs2_version.iby" ref="//@result/@interfaces.0/@configurationElements.404"/>
-      <settings name="ROFS3_CUSTFILE" value="/epoc32/rombuild/product/rofs3/product_5230_rnd_rofs3_customersw.txt" ref="//@result/@interfaces.0/@configurationElements.405"/>
-      <settings name="ROFS3_CUSTINFO" value="V 0.00.0\n14-07-08" ref="//@result/@interfaces.0/@configurationElements.406"/>
-      <settings name="ROFS3_DIR" value="/epoc32/rombuild/product/rofs3" ref="//@result/@interfaces.0/@configurationElements.407"/>
-      <settings name="ROFS3_E2FNAME" value="/epoc32/rombuild/product/rofs3/elf2flash/product_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.408"/>
-      <settings name="ROFS3_FOOTER" ref="//@result/@interfaces.0/@configurationElements.409"/>
-      <settings name="ROFS3_FWIDFILE" value="/epoc32/rombuild/product/rofs3/product_5230_rnd_rofs3_fwid.txt" ref="//@result/@interfaces.0/@configurationElements.410"/>
-      <settings name="ROFS3_FWIDINFO" value="id=customer\nversion=V 0.00.0 RND Customer\n" ref="//@result/@interfaces.0/@configurationElements.411"/>
-      <settings name="ROFS3_HEADER" value="#include &lt;data_caging_paths_for_iby.hrh> \n\n// TEMPORARY FIXES BEGIN\n // Enable faster variant creation, to be removed when iby header hierarchy is fixed\n #define __platform_OBY__  // Define platform.oby out\n #include &lt;Variant\Header.iby>\n #include &lt;header.iby>  // Symbian common definitions\n // TEMPORARY FIXES END\n" ref="//@result/@interfaces.0/@configurationElements.412"/>
-      <settings name="ROFS3_MSTOBY" value="/epoc32/rombuild/product/rofs3/product_5230_rnd_rofs3_master.oby" ref="//@result/@interfaces.0/@configurationElements.413"/>
-      <settings name="ROFS3_NAME" value="/epoc32/rombuild/product/rofs3/product_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.414"/>
-      <settings name="ROFS3_OBY" value="/epoc32/rombuild/product/rofs3/product_5230_rnd_rofs3_operator.oby" ref="//@result/@interfaces.0/@configurationElements.415"/>
-      <settings name="ROFS3_OPT" ref="//@result/@interfaces.0/@configurationElements.416"/>
-      <settings name="ROFS3_ROMVER" value="0.01(0)" ref="//@result/@interfaces.0/@configurationElements.417"/>
-      <settings name="ROFS3_TIME" value="14/07/2008" ref="//@result/@interfaces.0/@configurationElements.418"/>
-      <settings name="ROFS3_VERIBY" value="/epoc32/rombuild/product/rofs3/product_5230_rnd_rofs3_version.iby" ref="//@result/@interfaces.0/@configurationElements.419"/>
-      <settings name="SOS_VERSION" value="9.4" ref="//@result/@interfaces.0/@configurationElements.420"/>
-      <settings name="SWUPD_EXT" value=".swupd" ref="//@result/@interfaces.0/@configurationElements.421"/>
-      <settings name="TYPE" value="rnd" ref="//@result/@interfaces.0/@configurationElements.422"/>
-      <settings name="USE_OVERRIDE" value="0" ref="//@result/@interfaces.0/@configurationElements.423"/>
-      <settings name="USE_PAGING" value="code:123" ref="//@result/@interfaces.0/@configurationElements.424"/>
-      <settings name="USE_ROFS" value="1" ref="//@result/@interfaces.0/@configurationElements.425"/>
-      <settings name="USE_ROMFILE" value="1" ref="//@result/@interfaces.0/@configurationElements.426"/>
-      <settings name="USE_ROMSYMGEN" value="0" ref="//@result/@interfaces.0/@configurationElements.427"/>
-      <settings name="USE_UDEB" value="0" ref="//@result/@interfaces.0/@configurationElements.428"/>
-      <settings name="USE_VERGEN" value="0" ref="//@result/@interfaces.0/@configurationElements.429"/>
-    </configurations>
-    <configurations name="image_conf_product_oem_ui.mk" filePath="\epoc32\rom\config\platform\product_oem\image_conf_product_oem_ui.mk" targetrefs="//@result/@targets.190 //@result/@targets.191 //@result/@targets.192 //@result/@targets.193 //@result/@targets.194 //@result/@targets.195 //@result/@targets.196 //@result/@targets.197 //@result/@targets.198 //@result/@targets.199 //@result/@targets.200 //@result/@targets.201 //@result/@targets.202 //@result/@targets.203 //@result/@targets.204 //@result/@targets.205 //@result/@targets.206 //@result/@targets.207 //@result/@targets.208 //@result/@targets.209 //@result/@targets.210 //@result/@targets.211 //@result/@targets.212 //@result/@targets.213 //@result/@targets.214 //@result/@targets.215 //@result/@targets.216 //@result/@targets.217 //@result/@targets.218 //@result/@targets.219 //@result/@targets.220 //@result/@targets.221 //@result/@targets.222 //@result/@targets.223 //@result/@targets.224 //@result/@targets.225 //@result/@targets.226 //@result/@targets.227">
-      <settings name="BLDROBY" ref="//@result/@interfaces.0/@configurationElements.430"/>
-      <settings name="BLDROM_OPT" value="-p -v -nosymbols -eoverride  -D_IMAGE_TYPE_RND" ref="//@result/@interfaces.0/@configurationElements.431"/>
-      <settings name="BLDROPT" ref="//@result/@interfaces.0/@configurationElements.432"/>
-      <settings name="CONFIGROOT" value="/epoc32/rom/config" ref="//@result/@interfaces.0/@configurationElements.433"/>
-      <settings name="CORE_CDPROMFILE" value="/epoc32/rombuild/odpcoderomfiles.txt" ref="//@result/@interfaces.0/@configurationElements.434"/>
-      <settings name="CORE_DIR" value="/epoc32/rombuild/product/core" ref="//@result/@interfaces.0/@configurationElements.435"/>
-      <settings name="CORE_E2FNAME" value="/epoc32/rombuild/product/core/elf2flash/product_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.436"/>
-      <settings name="CORE_FWIDFILE" value="/epoc32/rombuild/product/core/product_5230_rnd_core_fwid.txt" ref="//@result/@interfaces.0/@configurationElements.437"/>
-      <settings name="CORE_IMEISVFILE" value="/epoc32/rombuild/product/core/product_5230_rnd_core_imeisv.txt" ref="//@result/@interfaces.0/@configurationElements.438"/>
-      <settings name="CORE_IMEISVINFO" value="00" ref="//@result/@interfaces.0/@configurationElements.439"/>
-      <settings name="CORE_MODELFILE" value="/epoc32/rombuild/product/core/product_5230_rnd_core_model.txt" ref="//@result/@interfaces.0/@configurationElements.440"/>
-      <settings name="CORE_MODELINFO" value="S60" ref="//@result/@interfaces.0/@configurationElements.441"/>
-      <settings name="CORE_MSTOBY" value="/epoc32/rombuild/product/core/product_5230_rnd_core_master.oby" ref="//@result/@interfaces.0/@configurationElements.442"/>
-      <settings name="CORE_NAME" value="/epoc32/rombuild/product/core/product_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.443"/>
-      <settings name="CORE_NDPROMFILE" value="/epoc32/rombuild/romfiles.txt" ref="//@result/@interfaces.0/@configurationElements.444"/>
-      <settings name="CORE_OBY" value="/epoc32/rom/master.oby /epoc32/rom/ppd.oby /epoc32/rom/rnd.oby /epoc32/rom/override.oby /epoc32/rombuild/product/core/product_5230_rnd_core_collected.oby /epoc32/rom/include/symbianos.iby /epoc32/rom/variant/patchdata.iby" ref="//@result/@interfaces.0/@configurationElements.445"/>
-      <settings name="CORE_ODPROMFILE" value="/epoc32/rombuild/odpromfiles.txt" ref="//@result/@interfaces.0/@configurationElements.446"/>
-      <settings name="CORE_OPT" value="-p -v -nosymbols -eoverride  -D_IMAGE_TYPE_RND -D_EABI=ARMV5 -D_ASIC_VER_11 -DUSE_MULTIROFS -Dproduct  -es60ibymacros -DSECTION -DRND_CONTENT " ref="//@result/@interfaces.0/@configurationElements.447"/>
-      <settings name="CORE_PLATFILE" value="/epoc32/rombuild/product/core/product_5230_rnd_core_platform.txt" ref="//@result/@interfaces.0/@configurationElements.448"/>
-      <settings name="CORE_PLATINFO" value="SymbianOSMajorVersion=9\nSymbianOSMinorVersion=4\n" ref="//@result/@interfaces.0/@configurationElements.449"/>
-      <settings name="CORE_PRODFILE" value="/epoc32/rombuild/product/core/product_5230_rnd_core_product.txt" ref="//@result/@interfaces.0/@configurationElements.450"/>
-      <settings name="CORE_ROFSFILE" value="/epoc32/rombuild/odpcoderofsfiles.txt" ref="//@result/@interfaces.0/@configurationElements.451"/>
-      <settings name="CORE_ROMVER" value="0.01(0)" ref="//@result/@interfaces.0/@configurationElements.452"/>
-      <settings name="CORE_SWVERFILE" value="/epoc32/rombuild/product/core/product_5230_rnd_core_sw.txt" ref="//@result/@interfaces.0/@configurationElements.453"/>
-      <settings name="CORE_SWVERINFO" value="V 52.50.2008.24 RnD\n13-06-08\nRM-356\n(c)NMP" ref="//@result/@interfaces.0/@configurationElements.454"/>
-      <settings name="CORE_TIME" value="14/07/2008" ref="//@result/@interfaces.0/@configurationElements.455"/>
-      <settings name="CORE_UDEBFILE" value="/epoc32/rombuild/mytraces.txt" ref="//@result/@interfaces.0/@configurationElements.456"/>
-      <settings name="CORE_VERIBY" value="/epoc32/rombuild/product/core/product_5230_rnd_core_version.iby" ref="//@result/@interfaces.0/@configurationElements.457"/>
-      <settings name="CORE_VERSION" value="V 52.50.2008.24 RnD" ref="//@result/@interfaces.0/@configurationElements.458"/>
-      <settings name="COREPLAT_NAME" value="platform" ref="//@result/@interfaces.0/@configurationElements.459"/>
-      <settings name="CUSTVARIANT_DIR" ref="//@result/@interfaces.0/@configurationElements.460"/>
-      <settings name="DEFAULT_LANGUAGE" value="01" ref="//@result/@interfaces.0/@configurationElements.461"/>
-      <settings name="FLASH_EXT" value=".fpsx" ref="//@result/@interfaces.0/@configurationElements.462"/>
-      <settings name="HWID" value="5230*" ref="//@result/@interfaces.0/@configurationElements.463"/>
-      <settings name="HWID_LIST" value="5230" ref="//@result/@interfaces.0/@configurationElements.464"/>
-      <settings name="KEEPTEMP" value="0" ref="//@result/@interfaces.0/@configurationElements.465"/>
-      <settings name="LABEL" ref="//@result/@interfaces.0/@configurationElements.466"/>
-      <settings name="LANGID" value="01" ref="//@result/@interfaces.0/@configurationElements.467"/>
-      <settings name="LANGUAGES" value="01" ref="//@result/@interfaces.0/@configurationElements.468"/>
-      <settings name="NAME" value="product_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.469"/>
-      <settings name="OPERATOR_OBY" ref="//@result/@interfaces.0/@configurationElements.470"/>
-      <settings name="OPERATOR_OBYGEN" value=" | /epoc32/rom/include/operator | *.iby" ref="//@result/@interfaces.0/@configurationElements.471"/>
-      <settings name="PRODUCT_MODEL" value="N00" ref="//@result/@interfaces.0/@configurationElements.472"/>
-      <settings name="PRODUCT_NAME" value="product" ref="//@result/@interfaces.0/@configurationElements.473"/>
-      <settings name="PRODUCT_REVISION" value="01" ref="//@result/@interfaces.0/@configurationElements.474"/>
-      <settings name="RELEASEDIR" value="/flash_images/product" ref="//@result/@interfaces.0/@configurationElements.475"/>
-      <settings name="RELEASEFILES" value="/epoc32/rombuild/product/product_5230_rnd.fpsx /epoc32/rombuild/product/core/product_5230_rnd.rom.log /epoc32/rombuild/product/core/product_5230_rnd.rofs1.log /epoc32/rombuild/product/rofs2/product_5230_rnd.rofs2.log /epoc32/rombuild/product/rofs3/product_5230_rnd.rofs3.log" ref="//@result/@interfaces.0/@configurationElements.476"/>
-      <settings name="RELEASENAME" value="product_rnd_20080714082829_haismail" ref="//@result/@interfaces.0/@configurationElements.477"/>
-      <settings name="ROFS2_DIR" value="/epoc32/rombuild/product/rofs2" ref="//@result/@interfaces.0/@configurationElements.478"/>
-      <settings name="ROFS2_E2FNAME" value="/epoc32/rombuild/product/rofs2/elf2flash/product_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.479"/>
-      <settings name="ROFS2_FOOTER" ref="//@result/@interfaces.0/@configurationElements.480"/>
-      <settings name="ROFS2_FWIDFILE" value="/epoc32/rombuild/product/rofs2/product_5230_rnd_rofs2_fwid.txt" ref="//@result/@interfaces.0/@configurationElements.481"/>
-      <settings name="ROFS2_FWIDINFO" value="id=language\nversion=01\n" ref="//@result/@interfaces.0/@configurationElements.482"/>
-      <settings name="ROFS2_HEADER" value="#include &lt;data_caging_paths_for_iby.hrh> \n\n// TEMPORARY FIXES BEGIN\n // Enable faster variant creation, to be removed when iby header hierarchy is fixed\n #define __platform_OBY__  // Define platform.oby out\n #include &lt;Variant\Header.iby>\n #include &lt;header.iby>  // Symbian common definitions\n // TEMPORARY FIXES END\n" ref="//@result/@interfaces.0/@configurationElements.483"/>
-      <settings name="ROFS2_MSTOBY" value="/epoc32/rombuild/product/rofs2/product_5230_rnd_rofs2_master.oby" ref="//@result/@interfaces.0/@configurationElements.484"/>
-      <settings name="ROFS2_NAME" value="/epoc32/rombuild/product/rofs2/product_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.485"/>
-      <settings name="ROFS2_OBY" value="&lt;Variant.oby> &lt;ppd_variant.oby> &lt;ppd_locales.iby> /epoc32/rom/override.oby /epoc32/rombuild/product/rofs2/product_5230_rnd_rofs2_language_collected.oby /epoc32/rombuild/product/rofs2/product_5230_rnd_rofs2_customer_collected.oby" ref="//@result/@interfaces.0/@configurationElements.486"/>
-      <settings name="ROFS2_OPT" value="-p -v -nosymbols -eoverride  -D_IMAGE_TYPE_RND -D_EABI=ARMV5 -D_ASIC_VER_11 -DUSE_MULTIROFS -Dproduct  -es60ibymacros -elocalise -DRND_CONTENT" ref="//@result/@interfaces.0/@configurationElements.487"/>
-      <settings name="ROFS2_ROMVER" value="0.01(0)" ref="//@result/@interfaces.0/@configurationElements.488"/>
-      <settings name="ROFS2_TIME" value="14/07/2008" ref="//@result/@interfaces.0/@configurationElements.489"/>
-      <settings name="ROFS2_VERIBY" value="/epoc32/rombuild/product/rofs2/product_5230_rnd_rofs2_version.iby" ref="//@result/@interfaces.0/@configurationElements.490"/>
-      <settings name="ROFS3_CUSTFILE" value="/epoc32/rombuild/product/rofs3/product_5230_rnd_rofs3_customersw.txt" ref="//@result/@interfaces.0/@configurationElements.491"/>
-      <settings name="ROFS3_CUSTINFO" value="V 52.50.2008.24 RnD\n14-07-08" ref="//@result/@interfaces.0/@configurationElements.492"/>
-      <settings name="ROFS3_DIR" value="/epoc32/rombuild/product/rofs3" ref="//@result/@interfaces.0/@configurationElements.493"/>
-      <settings name="ROFS3_E2FNAME" value="/epoc32/rombuild/product/rofs3/elf2flash/product_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.494"/>
-      <settings name="ROFS3_FOOTER" ref="//@result/@interfaces.0/@configurationElements.495"/>
-      <settings name="ROFS3_FWIDFILE" value="/epoc32/rombuild/product/rofs3/product_5230_rnd_rofs3_fwid.txt" ref="//@result/@interfaces.0/@configurationElements.496"/>
-      <settings name="ROFS3_FWIDINFO" value="id=customer\nversion=V 52.50.2008.24 RnD RND Customer\n" ref="//@result/@interfaces.0/@configurationElements.497"/>
-      <settings name="ROFS3_HEADER" value="#include &lt;data_caging_paths_for_iby.hrh> \n\n// TEMPORARY FIXES BEGIN\n // Enable faster variant creation, to be removed when iby header hierarchy is fixed\n #define __platform_OBY__  // Define platform.oby out\n #include &lt;Variant\Header.iby>\n #include &lt;header.iby>  // Symbian common definitions\n // TEMPORARY FIXES END\n" ref="//@result/@interfaces.0/@configurationElements.498"/>
-      <settings name="ROFS3_MSTOBY" value="/epoc32/rombuild/product/rofs3/product_5230_rnd_rofs3_master.oby" ref="//@result/@interfaces.0/@configurationElements.499"/>
-      <settings name="ROFS3_NAME" value="/epoc32/rombuild/product/rofs3/product_5230_rnd" ref="//@result/@interfaces.0/@configurationElements.500"/>
-      <settings name="ROFS3_OBY" value=" /epoc32/rombuild/product/rofs3/product_5230_rnd_rofs3_collected.oby" ref="//@result/@interfaces.0/@configurationElements.501"/>
-      <settings name="ROFS3_OPT" value="-p -v -nosymbols -eoverride  -D_IMAGE_TYPE_RND -D_EABI=ARMV5 -D_ASIC_VER_11 -DUSE_MULTIROFS -Dproduct  -es60ibymacros" ref="//@result/@interfaces.0/@configurationElements.502"/>
-      <settings name="ROFS3_ROMVER" value="0.01(0)" ref="//@result/@interfaces.0/@configurationElements.503"/>
-      <settings name="ROFS3_TIME" value="14/07/2008" ref="//@result/@interfaces.0/@configurationElements.504"/>
-      <settings name="ROFS3_VERIBY" value="/epoc32/rombuild/product/rofs3/product_5230_rnd_rofs3_version.iby" ref="//@result/@interfaces.0/@configurationElements.505"/>
-      <settings name="SOS_VERSION" value="9.4" ref="//@result/@interfaces.0/@configurationElements.506"/>
-      <settings name="SWUPD_EXT" value=".swupd" ref="//@result/@interfaces.0/@configurationElements.507"/>
-      <settings name="TYPE" value="rnd" ref="//@result/@interfaces.0/@configurationElements.508"/>
-      <settings name="USE_OVERRIDE" value="1" ref="//@result/@interfaces.0/@configurationElements.509"/>
-      <settings name="USE_PAGING" value="code:123" ref="//@result/@interfaces.0/@configurationElements.510"/>
-      <settings name="USE_ROFS" value="1,2,3" ref="//@result/@interfaces.0/@configurationElements.511"/>
-      <settings name="USE_ROMFILE" value="1" ref="//@result/@interfaces.0/@configurationElements.512"/>
-      <settings name="USE_ROMSYMGEN" value="0" ref="//@result/@interfaces.0/@configurationElements.513"/>
-      <settings name="USE_UDEB" value="1" ref="//@result/@interfaces.0/@configurationElements.514"/>
-      <settings name="USE_VERGEN" value="1" ref="//@result/@interfaces.0/@configurationElements.515"/>
-    </configurations>
-    <targets name="all" description="Create all image sections and symbol files."/>
-    <targets name="clean" description="Clean all target files."/>
-    <targets name="core" description="Create the core image (ROM,ROFS1)"/>
-    <targets name="core-image" description="Create the core image files (rom.img, rofs1.img)"/>
-    <targets name="custrofs2" description="Create an image from a variant with rofs2. Be sure to define the CUSTVARIANT_DIR."/>
-    <targets name="custuda" description="Create an image from a variant userdata folder. Be sure to define the CUSTVARIANT_DIR."/>
-    <targets name="custvariant" description="Create an image from a customer variant folder. Be sure to define the CUSTVARIANT_DIR."/>
-    <targets name="e2flash" description="Create the elf2flash (flash) file."/>
-    <targets name="f2image" description="Revert the Symbian image file (.img) from the elf2flash (flash) file.(See CORE_FLASH,ROFS2_FLASH,ROFS3_FLASH)"/>
-    <targets name="flash" description="Create all image sections files. Not any symbol files."/>
-    <targets name="flash-all" description="Create all image sections and symbol files."/>
-    <targets name="help" description="Print help on help targets."/>
-    <targets name="help-%" description="Print help on help items matching the pattern."/>
-    <targets name="help-%-list" description="Print a list of help items matching the pattern."/>
-    <targets name="help-config" description="Print a list of available configurations in the current working environment."/>
-    <targets name="help-target" description="Print help on all targets (same as help-target-*)."/>
-    <targets name="help-target-%" description="Print help on targets matching the pattern."/>
-    <targets name="help-target-%-list" description="Print a list of targets matching the pattern."/>
-    <targets name="help-target-%-wiki" description="Print wiki-formatted help on targets matching the pattern."/>
-    <targets name="help-variable" description="Print help on all variables (same as help-variable-*)."/>
-    <targets name="help-variable-%" description="Print help on variables matching the pattern."/>
-    <targets name="help-variable-%-all" description="Print full help on variables matching the pattern."/>
-    <targets name="help-variable-%-list" description="Print a list of variables matching the pattern."/>
-    <targets name="help-variable-%-value" description="Print a list of variables with values matching the pattern."/>
-    <targets name="help-variable-%-wiki" description="Print wiki-formatted help on variables matching the pattern."/>
-    <targets name="image" description="Create only the image file(s) (*.img)"/>
-    <targets name="print-*" description="Print the value of the given variable to the screen."/>
-    <targets name="release" description="Run the RELEASE step, that copies the created image files to the release folder. (See RELEASENAME,RELEASEDIR,RELEASEFILES)"/>
-    <targets name="rofs2" description="Create the rofs2 image"/>
-    <targets name="rofs2-image" description="Create the rofs2 image file (rofs2.img)"/>
-    <targets name="rofs3" description="Create the rofs3 image"/>
-    <targets name="rofs3-image" description="Create the rofs3 image file (rofs3.img)"/>
-    <targets name="romsymbol" description="Create the rom symbol file"/>
-    <targets name="step-*" description="Generic target to execute any step inside the iMaker configuration. Any step (e.g. BUILD_*,CLEAN_*) can be executed with step-STEPNAME. Example: step-ROFS2PRE executes the CLEAN_ROFS2PRE and BUILD_ROFS2PRE commands."/>
-    <targets name="toolinfo" description="Print info about the tool"/>
-    <targets name="uda-image" description="Create the User Data area (uda) flash file."/>
-    <targets name="variant" description="Create the variant image (rofs2,rofs3)"/>
-    <targets name="variant-image" description="Create the variant image files (rofs3.img,rofs3.img)"/>
-    <targets name="all" description="Create all image sections and symbol files."/>
-    <targets name="clean" description="Clean all target files."/>
-    <targets name="core" description="Create the core image (ROM,ROFS1)"/>
-    <targets name="core-image" description="Create the core image files (rom.img, rofs1.img)"/>
-    <targets name="custrofs2" description="Create an image from a variant with rofs2. Be sure to define the CUSTVARIANT_DIR."/>
-    <targets name="custuda" description="Create an image from a variant userdata folder. Be sure to define the CUSTVARIANT_DIR."/>
-    <targets name="custvariant" description="Create an image from a customer variant folder. Be sure to define the CUSTVARIANT_DIR."/>
-    <targets name="e2flash" description="Create the elf2flash (flash) file."/>
-    <targets name="f2image" description="Revert the Symbian image file (.img) from the elf2flash (flash) file.(See CORE_FLASH,ROFS2_FLASH,ROFS3_FLASH)"/>
-    <targets name="flash" description="Create all image sections files. Not any symbol files."/>
-    <targets name="flash-all" description="Create all image sections and symbol files."/>
-    <targets name="help" description="Print help on help targets."/>
-    <targets name="help-%" description="Print help on help items matching the pattern."/>
-    <targets name="help-%-list" description="Print a list of help items matching the pattern."/>
-    <targets name="help-config" description="Print a list of available configurations in the current working environment."/>
-    <targets name="help-target" description="Print help on all targets (same as help-target-*)."/>
-    <targets name="help-target-%" description="Print help on targets matching the pattern."/>
-    <targets name="help-target-%-list" description="Print a list of targets matching the pattern."/>
-    <targets name="help-target-%-wiki" description="Print wiki-formatted help on targets matching the pattern."/>
-    <targets name="help-variable" description="Print help on all variables (same as help-variable-*)."/>
-    <targets name="help-variable-%" description="Print help on variables matching the pattern."/>
-    <targets name="help-variable-%-all" description="Print full help on variables matching the pattern."/>
-    <targets name="help-variable-%-list" description="Print a list of variables matching the pattern."/>
-    <targets name="help-variable-%-value" description="Print a list of variables with values matching the pattern."/>
-    <targets name="help-variable-%-wiki" description="Print wiki-formatted help on variables matching the pattern."/>
-    <targets name="image" description="Create only the image file(s) (*.img)"/>
-    <targets name="print-*" description="Print the value of the given variable to the screen."/>
-    <targets name="release" description="Run the RELEASE step, that copies the created image files to the release folder. (See RELEASENAME,RELEASEDIR,RELEASEFILES)"/>
-    <targets name="rofs2" description="Create the rofs2 image"/>
-    <targets name="rofs2-image" description="Create the rofs2 image file (rofs2.img)"/>
-    <targets name="rofs3" description="Create the rofs3 image"/>
-    <targets name="rofs3-image" description="Create the rofs3 image file (rofs3.img)"/>
-    <targets name="romsymbol" description="Create the rom symbol file"/>
-    <targets name="step-*" description="Generic target to execute any step inside the iMaker configuration. Any step (e.g. BUILD_*,CLEAN_*) can be executed with step-STEPNAME. Example: step-ROFS2PRE executes the CLEAN_ROFS2PRE and BUILD_ROFS2PRE commands."/>
-    <targets name="toolinfo" description="Print info about the tool"/>
-    <targets name="uda-image" description="Create the User Data area (uda) flash file."/>
-    <targets name="variant" description="Create the variant image (rofs2,rofs3)"/>
-    <targets name="variant-image" description="Create the variant image files (rofs3.img,rofs3.img)"/>
-    <targets name="all" description="Create all image sections and symbol files."/>
-    <targets name="clean" description="Clean all target files."/>
-    <targets name="core" description="Create the core image (ROM,ROFS1)"/>
-    <targets name="core-image" description="Create the core image files (rom.img, rofs1.img)"/>
-    <targets name="custrofs2" description="Create an image from a variant with rofs2. Be sure to define the CUSTVARIANT_DIR."/>
-    <targets name="custuda" description="Create an image from a variant userdata folder. Be sure to define the CUSTVARIANT_DIR."/>
-    <targets name="custvariant" description="Create an image from a customer variant folder. Be sure to define the CUSTVARIANT_DIR."/>
-    <targets name="e2flash" description="Create the elf2flash (flash) file."/>
-    <targets name="f2image" description="Revert the Symbian image file (.img) from the elf2flash (flash) file.(See CORE_FLASH,ROFS2_FLASH,ROFS3_FLASH)"/>
-    <targets name="flash" description="Create all image sections files. Not any symbol files."/>
-    <targets name="flash-all" description="Create all image sections and symbol files."/>
-    <targets name="help" description="Print help on help targets."/>
-    <targets name="help-%" description="Print help on help items matching the pattern."/>
-    <targets name="help-%-list" description="Print a list of help items matching the pattern."/>
-    <targets name="help-config" description="Print a list of available configurations in the current working environment."/>
-    <targets name="help-target" description="Print help on all targets (same as help-target-*)."/>
-    <targets name="help-target-%" description="Print help on targets matching the pattern."/>
-    <targets name="help-target-%-list" description="Print a list of targets matching the pattern."/>
-    <targets name="help-target-%-wiki" description="Print wiki-formatted help on targets matching the pattern."/>
-    <targets name="help-variable" description="Print help on all variables (same as help-variable-*)."/>
-    <targets name="help-variable-%" description="Print help on variables matching the pattern."/>
-    <targets name="help-variable-%-all" description="Print full help on variables matching the pattern."/>
-    <targets name="help-variable-%-list" description="Print a list of variables matching the pattern."/>
-    <targets name="help-variable-%-value" description="Print a list of variables with values matching the pattern."/>
-    <targets name="help-variable-%-wiki" description="Print wiki-formatted help on variables matching the pattern."/>
-    <targets name="image" description="Create only the image file(s) (*.img)"/>
-    <targets name="print-*" description="Print the value of the given variable to the screen."/>
-    <targets name="release" description="Run the RELEASE step, that copies the created image files to the release folder. (See RELEASENAME,RELEASEDIR,RELEASEFILES)"/>
-    <targets name="rofs2" description="Create the rofs2 image"/>
-    <targets name="rofs2-image" description="Create the rofs2 image file (rofs2.img)"/>
-    <targets name="rofs3" description="Create the rofs3 image"/>
-    <targets name="rofs3-image" description="Create the rofs3 image file (rofs3.img)"/>
-    <targets name="romsymbol" description="Create the rom symbol file"/>
-    <targets name="step-*" description="Generic target to execute any step inside the iMaker configuration. Any step (e.g. BUILD_*,CLEAN_*) can be executed with step-STEPNAME. Example: step-ROFS2PRE executes the CLEAN_ROFS2PRE and BUILD_ROFS2PRE commands."/>
-    <targets name="toolinfo" description="Print info about the tool"/>
-    <targets name="uda-image" description="Create the User Data area (uda) flash file."/>
-    <targets name="variant" description="Create the variant image (rofs2,rofs3)"/>
-    <targets name="variant-image" description="Create the variant image files (rofs3.img,rofs3.img)"/>
-    <targets name="all" description="Create all image sections and symbol files."/>
-    <targets name="clean" description="Clean all target files."/>
-    <targets name="core" description="Create the core image (ROM,ROFS1)"/>
-    <targets name="core-image" description="Create the core image files (rom.img, rofs1.img)"/>
-    <targets name="custrofs2" description="Create an image from a variant with rofs2. Be sure to define the CUSTVARIANT_DIR."/>
-    <targets name="custuda" description="Create an image from a variant userdata folder. Be sure to define the CUSTVARIANT_DIR."/>
-    <targets name="custvariant" description="Create an image from a customer variant folder. Be sure to define the CUSTVARIANT_DIR."/>
-    <targets name="e2flash" description="Create the elf2flash (flash) file."/>
-    <targets name="f2image" description="Revert the Symbian image file (.img) from the elf2flash (flash) file.(See CORE_FLASH,ROFS2_FLASH,ROFS3_FLASH)"/>
-    <targets name="flash" description="Create all image sections files. Not any symbol files."/>
-    <targets name="flash-all" description="Create all image sections and symbol files."/>
-    <targets name="help" description="Print help on help targets."/>
-    <targets name="help-%" description="Print help on help items matching the pattern."/>
-    <targets name="help-%-list" description="Print a list of help items matching the pattern."/>
-    <targets name="help-config" description="Print a list of available configurations in the current working environment."/>
-    <targets name="help-target" description="Print help on all targets (same as help-target-*)."/>
-    <targets name="help-target-%" description="Print help on targets matching the pattern."/>
-    <targets name="help-target-%-list" description="Print a list of targets matching the pattern."/>
-    <targets name="help-target-%-wiki" description="Print wiki-formatted help on targets matching the pattern."/>
-    <targets name="help-variable" description="Print help on all variables (same as help-variable-*)."/>
-    <targets name="help-variable-%" description="Print help on variables matching the pattern."/>
-    <targets name="help-variable-%-all" description="Print full help on variables matching the pattern."/>
-    <targets name="help-variable-%-list" description="Print a list of variables matching the pattern."/>
-    <targets name="help-variable-%-value" description="Print a list of variables with values matching the pattern."/>
-    <targets name="help-variable-%-wiki" description="Print wiki-formatted help on variables matching the pattern."/>
-    <targets name="image" description="Create only the image file(s) (*.img)"/>
-    <targets name="print-*" description="Print the value of the given variable to the screen."/>
-    <targets name="release" description="Run the RELEASE step, that copies the created image files to the release folder. (See RELEASENAME,RELEASEDIR,RELEASEFILES)"/>
-    <targets name="rofs2" description="Create the rofs2 image"/>
-    <targets name="rofs2-image" description="Create the rofs2 image file (rofs2.img)"/>
-    <targets name="rofs3" description="Create the rofs3 image"/>
-    <targets name="rofs3-image" description="Create the rofs3 image file (rofs3.img)"/>
-    <targets name="romsymbol" description="Create the rom symbol file"/>
-    <targets name="step-*" description="Generic target to execute any step inside the iMaker configuration. Any step (e.g. BUILD_*,CLEAN_*) can be executed with step-STEPNAME. Example: step-ROFS2PRE executes the CLEAN_ROFS2PRE and BUILD_ROFS2PRE commands."/>
-    <targets name="toolinfo" description="Print info about the tool"/>
-    <targets name="uda-image" description="Create the User Data area (uda) flash file."/>
-    <targets name="variant" description="Create the variant image (rofs2,rofs3)"/>
-    <targets name="variant-image" description="Create the variant image files (rofs3.img,rofs3.img)"/>
-    <targets name="all" description="Create all image sections and symbol files."/>
-    <targets name="clean" description="Clean all target files."/>
-    <targets name="core" description="Create the core image (ROM,ROFS1)"/>
-    <targets name="core-image" description="Create the core image files (rom.img, rofs1.img)"/>
-    <targets name="custrofs2" description="Create an image from a variant with rofs2. Be sure to define the CUSTVARIANT_DIR."/>
-    <targets name="custuda" description="Create an image from a variant userdata folder. Be sure to define the CUSTVARIANT_DIR."/>
-    <targets name="custvariant" description="Create an image from a customer variant folder. Be sure to define the CUSTVARIANT_DIR."/>
-    <targets name="e2flash" description="Create the elf2flash (flash) file."/>
-    <targets name="f2image" description="Revert the Symbian image file (.img) from the elf2flash (flash) file.(See CORE_FLASH,ROFS2_FLASH,ROFS3_FLASH)"/>
-    <targets name="flash" description="Create all image sections files. Not any symbol files."/>
-    <targets name="flash-all" description="Create all image sections and symbol files."/>
-    <targets name="help" description="Print help on help targets."/>
-    <targets name="help-%" description="Print help on help items matching the pattern."/>
-    <targets name="help-%-list" description="Print a list of help items matching the pattern."/>
-    <targets name="help-config" description="Print a list of available configurations in the current working environment."/>
-    <targets name="help-target" description="Print help on all targets (same as help-target-*)."/>
-    <targets name="help-target-%" description="Print help on targets matching the pattern."/>
-    <targets name="help-target-%-list" description="Print a list of targets matching the pattern."/>
-    <targets name="help-target-%-wiki" description="Print wiki-formatted help on targets matching the pattern."/>
-    <targets name="help-variable" description="Print help on all variables (same as help-variable-*)."/>
-    <targets name="help-variable-%" description="Print help on variables matching the pattern."/>
-    <targets name="help-variable-%-all" description="Print full help on variables matching the pattern."/>
-    <targets name="help-variable-%-list" description="Print a list of variables matching the pattern."/>
-    <targets name="help-variable-%-value" description="Print a list of variables with values matching the pattern."/>
-    <targets name="help-variable-%-wiki" description="Print wiki-formatted help on variables matching the pattern."/>
-    <targets name="image" description="Create only the image file(s) (*.img)"/>
-    <targets name="print-*" description="Print the value of the given variable to the screen."/>
-    <targets name="release" description="Run the RELEASE step, that copies the created image files to the release folder. (See RELEASENAME,RELEASEDIR,RELEASEFILES)"/>
-    <targets name="rofs2" description="Create the rofs2 image"/>
-    <targets name="rofs2-image" description="Create the rofs2 image file (rofs2.img)"/>
-    <targets name="rofs3" description="Create the rofs3 image"/>
-    <targets name="rofs3-image" description="Create the rofs3 image file (rofs3.img)"/>
-    <targets name="romsymbol" description="Create the rom symbol file"/>
-    <targets name="step-*" description="Generic target to execute any step inside the iMaker configuration. Any step (e.g. BUILD_*,CLEAN_*) can be executed with step-STEPNAME. Example: step-ROFS2PRE executes the CLEAN_ROFS2PRE and BUILD_ROFS2PRE commands."/>
-    <targets name="toolinfo" description="Print info about the tool"/>
-    <targets name="uda-image" description="Create the User Data area (uda) flash file."/>
-    <targets name="variant" description="Create the variant image (rofs2,rofs3)"/>
-    <targets name="variant-image" description="Create the variant image files (rofs3.img,rofs3.img)"/>
-    <targets name="all" description="Create all image sections and symbol files."/>
-    <targets name="clean" description="Clean all target files."/>
-    <targets name="core" description="Create the core image (ROM,ROFS1)"/>
-    <targets name="core-image" description="Create the core image files (rom.img, rofs1.img)"/>
-    <targets name="custrofs2" description="Create an image from a variant with rofs2. Be sure to define the CUSTVARIANT_DIR."/>
-    <targets name="custuda" description="Create an image from a variant userdata folder. Be sure to define the CUSTVARIANT_DIR."/>
-    <targets name="custvariant" description="Create an image from a customer variant folder. Be sure to define the CUSTVARIANT_DIR."/>
-    <targets name="e2flash" description="Create the elf2flash (flash) file."/>
-    <targets name="f2image" description="Revert the Symbian image file (.img) from the elf2flash (flash) file.(See CORE_FLASH,ROFS2_FLASH,ROFS3_FLASH)"/>
-    <targets name="flash" description="Create all image sections files. Not any symbol files."/>
-    <targets name="flash-all" description="Create all image sections and symbol files."/>
-    <targets name="help" description="Print help on help targets."/>
-    <targets name="help-%" description="Print help on help items matching the pattern."/>
-    <targets name="help-%-list" description="Print a list of help items matching the pattern."/>
-    <targets name="help-config" description="Print a list of available configurations in the current working environment."/>
-    <targets name="help-target" description="Print help on all targets (same as help-target-*)."/>
-    <targets name="help-target-%" description="Print help on targets matching the pattern."/>
-    <targets name="help-target-%-list" description="Print a list of targets matching the pattern."/>
-    <targets name="help-target-%-wiki" description="Print wiki-formatted help on targets matching the pattern."/>
-    <targets name="help-variable" description="Print help on all variables (same as help-variable-*)."/>
-    <targets name="help-variable-%" description="Print help on variables matching the pattern."/>
-    <targets name="help-variable-%-all" description="Print full help on variables matching the pattern."/>
-    <targets name="help-variable-%-list" description="Print a list of variables matching the pattern."/>
-    <targets name="help-variable-%-value" description="Print a list of variables with values matching the pattern."/>
-    <targets name="help-variable-%-wiki" description="Print wiki-formatted help on variables matching the pattern."/>
-    <targets name="image" description="Create only the image file(s) (*.img)"/>
-    <targets name="print-*" description="Print the value of the given variable to the screen."/>
-    <targets name="release" description="Run the RELEASE step, that copies the created image files to the release folder. (See RELEASENAME,RELEASEDIR,RELEASEFILES)"/>
-    <targets name="rofs2" description="Create the rofs2 image"/>
-    <targets name="rofs2-image" description="Create the rofs2 image file (rofs2.img)"/>
-    <targets name="rofs3" description="Create the rofs3 image"/>
-    <targets name="rofs3-image" description="Create the rofs3 image file (rofs3.img)"/>
-    <targets name="romsymbol" description="Create the rom symbol file"/>
-    <targets name="step-*" description="Generic target to execute any step inside the iMaker configuration. Any step (e.g. BUILD_*,CLEAN_*) can be executed with step-STEPNAME. Example: step-ROFS2PRE executes the CLEAN_ROFS2PRE and BUILD_ROFS2PRE commands."/>
-    <targets name="toolinfo" description="Print info about the tool"/>
-    <targets name="uda-image" description="Create the User Data area (uda) flash file."/>
-    <targets name="variant" description="Create the variant image (rofs2,rofs3)"/>
-    <targets name="variant-image" description="Create the variant image files (rofs3.img,rofs3.img)"/>
-  </result>
-</IMaker>
--- a/buildframework/helium/tests/data/log2xml_failure.log	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4929 +0,0 @@
-Starting build: 839
-mkdir \epoc32\rombuild\imaker_temp
-=== config_1 == configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_core
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... core
-++ Started at Thu Nov 13 14:11:27 2008
-+++ HiRes Start 1226578287.10578
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=rnd"  core  WORKDIR=\epoc32\rombuild\imaker_temp/conf_0
-iMaker 08.43.01, 20-Oct-2008.
-Generating file(s) for Core image creation
-Creating Core (ROM & ROFS1) SOS image
-
-Y:\output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd>rem @echo off 
-
-Y:\output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd>setlocal
-
-Y:\output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd>perl -S buildrom.pl -loglevel1 -v -nosymbols -DFEATUREVARIANT=devlon52 -D_IMAGE_TYPE_RND -D_EABI=ARMV5 -D_ASIC_VER_11 -DUSE_MULTIROFS -DDEVLON52 -es60ibymacros -DSECTION -DRND_CONTENT -cbytepair -oRX-47_200846_rnd.img y:\output/release_flash_images/devlon52/rnd/core/RX-47_200846_rnd/RX-47_200846_rnd_core_master.oby 
-* cpp -o tmp1.oby -nostdinc -undef -DFEATUREVARIANT=devlon52 -D_IMAGE_TYPE_RND -D_EABI=ARMV5 -D_ASIC_VER_11 -DUSE_MULTIROFS -DDEVLON52 -DSECTION -DRND_CONTENT -I. -I "Y:\epoc32\rom\config\platform\devlon52" -I "Y:\epoc32\include\config\platform\devlon52" -I "Y:\epoc32\rom\config\platform" -I "Y:\epoc32\include\config\platform" -I "Y:\epoc32\rom\config" -I "Y:\epoc32\include\config" -I "Y:\epoc32\rom" -I "Y:\epoc32\rom\include" -I "Y:\epoc32\include\oem" -include "Y:\epoc32\include\oem\feature_settings.hrh"
-In file included from Y:\epoc32\include\config\platform\adaptation_features.hrh:25,
-                 from Y:\epoc32\include\oem\feature_settings.hrh:43,
-                 from :1:
-Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
-*Initialization*:1: warning: this is the location of the previous definition
-In file included from Y:\epoc32\rom\config\platform\ncp_components.iby:124,
-                 from Y:\epoc32\rom\config\platform\Variant\BasePorting.iby:26,
-                 from ../../../../../../epoc32/rom/master.oby:34,
-                 from y:output/release_flash_images/devlon52/rnd/core/RX-47_200846_rnd/RX-47_200846_rnd_core_master.oby:50:
-Y:\epoc32\rom\include\H4PlusHci.iby:4: warning: `#ifndef' argument starts with punctuation
-* reading y:\output/release_flash_images/devlon52/rnd/core/RX-47_200846_rnd/RX-47_200846_rnd_core_master.oby
-override.pm: Initializing; logfile =`y:\output/release_flash_images/devlon52/rnd/core/RX-47_200846_rnd/RX-47_200846_rnd_core_bldromplugin.log', debug = 0
-configpaging.pm: Initializing with configpaging_nokia.cfg
-Using export-restricted strong crytography implementation
-ROM_IMAGE[1] rofs1 size=0x10000000 xip=0 compress=0 extension=0 composite=none uncompress=0 
-* Writing tmp2.oby - result of substitution phase
-* Writing tmp3.oby - result of reorganisation phase
-* Writing tmp4.oby - result of Plugin stage
-* No language codes specified, defaulting to 01
-Converting >\epoc32\data\Z\Resource\Charconv\BUILTIN.R01< to RSC
-Converting >\epoc32\data\Z\Resource\swtlstokentype.R01< to RSC
-Converting >\epoc32\data\Z\Resource\TlsCacheServer\TlsCacheTimeouts.R01< to RSC
-Converting >\epoc32\data\Z\Resource\logeng\logwrap.R01< to RSC
-Converting >\epoc32\data\Z\Resource\Charconv\ISO88592.R01< to RSC
-Converting >\epoc32\data\Z\Resource\Charconv\ISO88593.R01< to RSC
-Converting >\epoc32\data\Z\Resource\Charconv\ISO88594.R01< to RSC
-Converting >\epoc32\data\Z\Resource\Charconv\ISO88595.R01< to RSC
-Converting >\epoc32\data\Z\Resource\Charconv\ISO88596.R01< to RSC
-Converting >\epoc32\data\Z\Resource\Charconv\ISO88597.R01< to RSC
-Converting >\epoc32\data\Z\Resource\Charconv\ISO88598.R01< to RSC
-Converting >\epoc32\data\Z\Resource\Charconv\ISO88599.R01< to RSC
-Converting >\epoc32\data\Z\Resource\Charconv\ISO885910.R01< to RSC
-Converting >\epoc32\data\Z\Resource\Charconv\ISO885913.R01< to RSC
-Converting >\epoc32\data\Z\Resource\Charconv\ISO885914.R01< to RSC
-Converting >\epoc32\data\Z\Resource\Charconv\ISO885915.R01< to RSC
-Converting >\epoc32\data\Z\Resource\Charconv\CP850.R01< to RSC
-Converting >\epoc32\data\Z\Resource\Charconv\UCS2.R01< to RSC
-Converting >\epoc32\data\Z\Resource\APPS\ApfMimeContentPolicy.R01< to RSC
-Converting >\epoc32\data\Z\resource\messaging\smss.R01< to RSC
-Converting >\epoc32\data\Z\resource\messaging\wappstr.R01< to RSC
-Converting >\epoc32\data\Z\RESOURCE\messaging\wappushunknown.R01< to RSC
-Converting >\epoc32\data\Z\Resource\fstokenserver.R01< to RSC
-Converting >\epoc32\data\Z\resource\defaultbeep.R01< to RSC
-Converting >\epoc32\data\Z\Resource\JavaHelper\JavaHelper.R01< to RSC
-Converting >\epoc32\data\Z\resource\Apps\trkapplication.R01< to RSC
-Converting >\epoc32\data\Z\resource\Apps\trkapplication_loc.R01< to RSC
-Converting >\epoc32\data\Z\private\10003a3f\Apps\trkapplication_reg.R01< to RSC
-Converting >\epoc32\data\Z\resource\Apps\trkapplication.M01< to MIF
-* Writing tmp5.oby - result of choosing language-specific files
-* Invalid image file name: \epoc32\data\Z\resource\apps\VideoEditorBitmaps.mbm or .mif
-Created ecom-0-0.spi
-Created ecom-0-1.s01
-* Writing tmp6.oby - result of SPI stage
-override.pm: ------------------------------------------------------------------
-Handling overrides...
-Replace ROM_IMAGE[0] `file=\epoc32\release\ARMV5\urel\FeatMgr.DLL		sys\bin\FEATMGR.DLL' with `file=\epoc32\release\ARMV5\urel\FeatMgr.Devlon52.DLL  sys\bin\FEATMGR.DLL'
-Replace ROM_IMAGE[0] `data=\epoc32\release\ARMV5\urel\R1_Mobile_4_0_Platform.cfg   resource\R1_Mobile_4_0_Platform.cfg' with `data=\epoc32\release\ARMV5\urel\R1_Mobile_4_0_Platform_ppd.cfg  resource\R1_Mobile_4_0_Platform.cfg'
-Replace ROM_IMAGE[0] `data=\Epoc32\Data\WSINI.ini                 System\Data\Wsini.ini' with `data=\Epoc32\Data\WSINI_devlon52.ini  System\Data\Wsini.ini'
-Replace ROM_IMAGE[0] `data=\epoc32\data\Z\Resource\versions\sw.txt		resource\versions\sw.txt' with `data=\epoc32\data\Z\Resource\versions\sw_devlon52.txt  resource\versions\sw.txt'
-Replace ROM_IMAGE[0] `data=\epoc32\data\Z\resource\Starter_Arm.rsc                resource\Starter_Arm.rsc' with `data=\epoc32\data\Z\resource\Starter_Arm_Devlon52_wop_wopc_wat_ww_wss.rsc  resource\Starter_Arm.rsc'
-Replace ROM_IMAGE[0] `data=\epoc32\data\Z\resource\starter_non_critical_1_arm.rsc resource\starter_non_critical_1.rsc' with `data=\epoc32\data\Z\resource\Starter_non_critical_1_arm_Devlon52_wop_wopc_wat_ww_wss.rsc  resource\starter_non_critical_1.rsc'
-Replace ROM_IMAGE[0] `data=\epoc32\data\Z\Resource\versions\sw_devlon52.txt  resource\versions\sw.txt' with `data=y:\output/release_flash_images/devlon52/rnd/core/RX-47_200846_rnd/RX-47_200846_rnd_core_sw.txt  resource\versions\sw.txt'
-Replace ROM_IMAGE[0] `data=\epoc32\data\Z\Resource\versions\model.txt	resource\versions\model.txt' with `data=y:\output/release_flash_images/devlon52/rnd/core/RX-47_200846_rnd/RX-47_200846_rnd_core_model.txt  resource\versions\model.txt'
-Replace ROM_IMAGE[0] `data=\epoc32\data\Z\Resource\versions\imeisv.txt	resource\versions\imeisv.txt' with `data=y:\output/release_flash_images/devlon52/rnd/core/RX-47_200846_rnd/RX-47_200846_rnd_core_imeisv.txt  resource\versions\imeisv.txt'
-Add ROM_IMAGE[0] `data=y:\output/release_flash_images/devlon52/rnd/core/RX-47_200846_rnd/RX-47_200846_rnd_core_platform.txt  resource\versions\platform.txt' from `data-override=y:\output/release_flash_images/devlon52/rnd/core/RX-47_200846_rnd/RX-47_200846_rnd_core_platform.txt  resource\versions\platform.txt'
-Add ROM_IMAGE[0] `data=y:\output/release_flash_images/devlon52/rnd/core/RX-47_200846_rnd/RX-47_200846_rnd_core_product.txt  resource\versions\product.txt' from `data-override=y:\output/release_flash_images/devlon52/rnd/core/RX-47_200846_rnd/RX-47_200846_rnd_core_product.txt  resource\versions\product.txt'
-Add ROM_IMAGE[0] `data=y:\output/release_flash_images/devlon52/rnd/core/RX-47_200846_rnd/RX-47_200846_rnd_core_fwid.txt  resource\versions\fwid1.txt' from `data-override=y:\output/release_flash_images/devlon52/rnd/core/RX-47_200846_rnd/RX-47_200846_rnd_core_fwid.txt  resource\versions\fwid1.txt'
-Replace ROM_IMAGE[0] `data=\epoc32\data\ost_dictionaries.zip                                             \Data\ost_dictionaries.zip' with `data=y:\output/release_flash_images/devlon52/rnd/core/RX-47_200846_rnd/ost_dictionaries.zip  \Data\ost_dictionaries.zip'
-override.pm: Duration: 1 seconds ----------------------------------------------
-obyparse.pm: Reading /epoc32/rombuild/odpcoderomfiles.txt
-obyparse.pm: Reading /epoc32/rombuild/odp_code_romfiles.txt
-obyparse.pm: Reading /epoc32/rombuild/odpcoderofsfiles.txt
-obyparse.pm: Reading /epoc32/rombuild/IAD_rofsfiles.txt
-obyparse.pm: Reading /epoc32/rombuild/mytraces.txt
-obyparse.pm: Processing...
-obyparse.pm: Duration: 0 seconds
-configpaging.pm: Modifying demand paging configuration using \epoc32\rom\configpaging\configpaging_nokia.cfg
-Y:\epoc32\rom\include\lightsacoreservices.iby(72): Missing file: '\epoc32\release\ARMV5\urel\LightSAIscService.DLL' in statement 'file='
-Y:\epoc32\rom\include\lightadaptation.iby(110): Missing file: '\epoc32\release\ARMV5\urel\light_sensor_adaptation.DLL' in statement 'file='
-..\..\..\..\..\..\epoc32\rom\include\core\app\IpVideo.iby(112): Missing file: '\epoc32\release\ARMV5\urel\vcxnsappui_test.exe' in statement 'file='
-..\..\..\..\..\..\epoc32\rom\include\core\app\IpVideo.iby(392): Missing file: '\epoc32\release\ARMV5\urel\VcXNotifierPlugin.DLL' in statement 'file='
-..\..\..\..\..\..\epoc32\rom\include\core\mw\advancedtspcontroller.iby(48): Missing file: '\epoc32\release\ARMV5\urel\AdvancedTspController.dll' in statement 'file='
-Y:\epoc32\rom\include\declarativeui.iby(9): Missing file: '\epoc32\release\ARMV5\urel\duiengine.dll' in statement 'file='
-Y:\epoc32\rom\include\declarativeui.iby(11): Missing file: '\epoc32\release\ARMV5\urel\duiinterpreter.dll' in statement 'file='
-Y:\epoc32\rom\include\widgetmodel.iby(9): Missing file: '\epoc32\release\ARMV5\urel\alfwidgetmodel.dll' in statement 'file='
-..\..\..\..\..\..\epoc32\rom\include\core\mw\alfwidgets.iby(19): Missing file: '\epoc32\release\ARMV5\urel\alfcontainerwidget.dll' in statement 'file='
-..\..\..\..\..\..\epoc32\rom\include\core\mw\alfwidgets.iby(23): Missing file: '\epoc32\release\ARMV5\urel\alfviewwidget.dll' in statement 'file='
-Y:\epoc32\rom\include\j9midpS60.iby(233): Missing file: '\epoc32\release\ARMV5\urel\j9_23_sip.dll' in statement 'file='
-..\..\..\..\..\..\epoc32\rom\include\core\mw\midp20.iby(224): Missing file: '\epoc32\release\ARMV5\urel\MIDP2RECOGNIZER.dll' in statement 'file='
-..\..\..\..\..\..\epoc32\rom\include\core\mw\mulcoverflowwidget.iby(46): Missing file: '\epoc32\release\ARMV5\urel\mulcoverflowwidget.dll' in statement 'file='
-..\..\..\..\..\..\epoc32\rom\include\core\mw\mullistwidget.iby(46): Missing file: '\epoc32\release\ARMV5\urel\mullistwidget.dll' in statement 'file='
-..\..\..\..\..\..\epoc32\rom\include\core\mw\mulutility.iby(46): Missing file: '\epoc32\release\armv5\urel\mulutility.dll' in statement 'file='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(250): Missing file: '\epoc32\data\Z\resource\ActivePalette2Bitmaps.mbm' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(251): Missing file: '\epoc32\data\Z\resource\activepalette2genericicons.mif' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(294): Missing file: '\epoc32\data\Z\system\sounds\audiothemes\public\Orchestral fold open.aac' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(295): Missing file: '\epoc32\data\Z\system\sounds\audiothemes\public\Orchestral fold close.aac' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(335): Missing file: '\epoc32\data\Z\Private\101f85a0\acccircle.png' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(336): Missing file: '\epoc32\data\Z\Private\101f85a0\bigtrip.png' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(337): Missing file: '\epoc32\data\Z\Private\101f85a0\compass.png' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(338): Missing file: '\epoc32\data\Z\Private\101f85a0\flag.png' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(339): Missing file: '\epoc32\data\Z\Private\101f85a0\flagwave.gif' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(340): Missing file: '\epoc32\data\Z\Private\101f85a0\globe.gif' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(341): Missing file: '\epoc32\data\Z\Private\101f85a0\north.png' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(342): Missing file: '\epoc32\data\Z\Private\101f85a0\pointer.png' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(343): Missing file: '\epoc32\data\Z\Private\101f85a0\satellite.png' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(344): Missing file: '\epoc32\data\Z\Private\101f85a0\signal_01.png' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(345): Missing file: '\epoc32\data\Z\Private\101f85a0\signal_02.png' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(346): Missing file: '\epoc32\data\Z\Private\101f85a0\signal_03.png' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(347): Missing file: '\epoc32\data\Z\Private\101f85a0\signal_04.png' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(348): Missing file: '\epoc32\data\Z\Private\101f85a0\signal_05.png' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(349): Missing file: '\epoc32\data\Z\Private\101f85a0\spwatch.png' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(350): Missing file: '\epoc32\data\Z\Private\101f85a0\table.png' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(351): Missing file: '\epoc32\data\Z\Private\101f85a0\time.png' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(352): Missing file: '\epoc32\data\Z\Private\101f85a0\navigation_ring.png' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(353): Missing file: '\epoc32\data\Z\Private\101f85a0\signal_bar_01.png' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(354): Missing file: '\epoc32\data\Z\Private\101f85a0\signal_bar_02.png' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(355): Missing file: '\epoc32\data\Z\Private\101f85a0\signal_bar_03.png' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(356): Missing file: '\epoc32\data\Z\Private\101f85a0\signal_bar_04.png' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(357): Missing file: '\epoc32\data\Z\Private\101f85a0\signal_bar_05.png' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(358): Missing file: '\epoc32\data\Z\Private\101f85a0\blid_searching.gif' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(359): Missing file: '\epoc32\data\Z\Private\101f85a0\blid_searching_small.gif' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(360): Missing file: '\epoc32\data\Z\Private\101f85a0\blid_startup.gif' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(361): Missing file: '\epoc32\data\Z\Private\101f85a0\blid_unavail.png' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(384): Missing file: '\epoc32\data\Z\resource\apps\calendefaulteditors.mif' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(401): Missing file: '\epoc32\data\Z\Private\2001B29B\backup_registration.xml' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(456): Missing file: '\epoc32\data\Z\app_resource_dir\glxmetadataview.rsc' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(593): Missing file: '\epoc32\data\Z\private\10003a3f\apps\vcxnsappui_test_reg.RSC' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(594): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test_icon.mif' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(605): Missing file: '\epoc32\data\z\resource\videostorageschema.mde' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(959): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0000' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(960): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\sources\qsn_fr_popup_sub_mask_icon.svg' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(961): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0000' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(962): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\sources\idle_toolbaricons.mif' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(963): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0000' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(964): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0000' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(965): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\sources\idle_toolbaricons.mif' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(966): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\sources\fmradioclassicidle.mif' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1005): Missing file: '\epoc32\data\z\resource\hc_list_itemtypes.xml' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1006): Missing file: '\epoc32\data\z\resource\lctgridimagetext.xml' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1007): Missing file: '\epoc32\data\z\resource\lctgridimage.xml.xml' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1008): Missing file: '\epoc32\data\z\resource\lctgridtext.xml' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1059): Missing file: '\epoc32\data\z\system\install\callprovider_stub.SIS' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1153): Missing file: '\epoc32\release\ARMV5\urel\Z\Resource\ive\lib\jclcldc11\ext\0_j9_23_sip_jxe.odc' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1310): Missing file: '\epoc32\data\Z\Resource\JavaHelper\javahelper.mif' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1340): Missing file: '\epoc32\data\Z\Private\10202BE9\20010976.txt' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1372): Missing file: '\epoc32\data\z\resource\coverflow\logical_template_1.xml' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1373): Missing file: '\epoc32\data\z\resource\coverflow\logical_template_2.xml' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1374): Missing file: '\epoc32\data\z\resource\coverflow\logical_template_3.xml' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1375): Missing file: '\epoc32\data\z\resource\coverflow\logical_template_4.xml' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1376): Missing file: '\epoc32\data\z\resource\grid\logical_template_1.xml' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1377): Missing file: '\epoc32\data\z\resource\grid\logical_template_2.xml' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1378): Missing file: '\epoc32\data\z\resource\grid\logical_template_3.xml' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1379): Missing file: '\epoc32\data\z\resource\grid\logical_template_4.xml' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1380): Missing file: '\epoc32\winscw\c\logical_template_1_list.xml' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1381): Missing file: '\epoc32\winscw\c\logical_template_2_list.xml' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1382): Missing file: '\epoc32\winscw\c\logical_template_3_list.xml' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1383): Missing file: '\epoc32\winscw\c\logical_template_4_list.xml' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1384): Missing file: '\epoc32\winscw\c\logical_template_5_list.xml' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1385): Missing file: '\epoc32\winscw\c\logical_template_6_list.xml' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1386): Missing file: '\epoc32\winscw\c\logical_template_7_list.xml' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1387): Missing file: '\epoc32\winscw\c\logical_template_8_list.xml' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1388): Missing file: '\epoc32\data\z\resource\slider\logical_template_1.xml' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1389): Missing file: '\epoc32\data\z\resource\slider\logical_template_2.xml' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1390): Missing file: '\epoc32\data\z\resource\slider\logical_template_3.xml' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1391): Missing file: '\epoc32\data\z\resource\slider\logical_template_4.xml' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1392): Missing file: '\epoc32\data\z\resource\slider\logical_template_5.xml' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1393): Missing file: '\epoc32\data\z\resource\slider\logical_template_6.xml' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1394): Missing file: '\epoc32\data\z\resource\slider\logical_template_7.xml' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1395): Missing file: '\epoc32\data\z\resource\slider\logical_template_8.xml' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1396): Missing file: '\epoc32\data\z\resource\slider\logical_template_9.xml' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1397): Missing file: '\\epoc32\winscw\c\resource\slider\lct\logical_template_1.xml' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1398): Missing file: '\\epoc32\winscw\c\resource\slider\lct\logical_template_2.xml' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1399): Missing file: '\\epoc32\winscw\c\resource\slider\lct\logical_template_3.xml' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1400): Missing file: '\\epoc32\winscw\c\resource\slider\lct\logical_template_4.xml' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1401): Missing file: '\\epoc32\winscw\c\resource\slider\lct\logical_template_5.xml' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1402): Missing file: '\\epoc32\winscw\c\resource\slider\lct\logical_template_6.xml' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1403): Missing file: '\\epoc32\winscw\c\resource\slider\lct\logical_template_7.xml' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1404): Missing file: '\\epoc32\winscw\c\resource\slider\lct\logical_template_8.xml' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1644): Missing file: '\epoc32\data\Z\system\install\ximpfw.sis' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1690): Missing file: '\epoc32\Data\z\resource\services' in statement 'data='
-y:output\release_flash_images\devlon52\rnd\core\RX-47_200846_rnd\RX-47_200846_rnd_core_master.oby(1691): Missing file: '\epoc32\Data\z\resource\locales.txt' in statement 'data='
-* Writing tmp7.oby - result of problem-suppression phase
-* Writing tmp8.oby - result of bitmap conversion phase
-* Removing previous image and logs...
-* Writing tmp9.oby - result of cleaning phase
-* Writing RX-47_200846_rnd.oby - final OBY file
-* Writing RX-47_200846_rnd.rofs1.oby - final OBY file
-* Writing RX-47_200846_rnd.dir - ROM directory listing
-* compression method: bytepair* Executing rombuild -slog -loglevel1 -type-safe-link -geninc -compressionmethod bytepair RX-47_200846_rnd.oby
-
-ROMBUILD - Rom builder V2.08 (Build 596)
- Software Ltd.
-
-WARNING: Unknown keyword 'ROFS_HEADER'.  Line 781 ignored
-WARNING: Unknown keyword 'LOCALISE_ALL_RESOURCES_BEGIN'.  Line 2520 ignored
-WARNING: Unknown keyword 'LOCALISE_ALL_RESOURCES_END'.  Line 2522 ignored
-WARNING: Unknown keyword '/'.  Line 2641 ignored
-WARNING: Unknown keyword ''.  Line 2806 ignored
-WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 2875 ignored
-WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 3554 ignored
-WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 3558 ignored
-WARNING: Unknown keyword '***'.  Line 4226 ignored
-WARNING: Unknown keyword '***'.  Line 4228 ignored
-WARNING: Unknown keyword '***'.  Line 4558 ignored
-WARNING: Unknown keyword '***'.  Line 4560 ignored
-WARNING: Unknown keyword '***'.  Line 4741 ignored
-WARNING: Unknown keyword '***'.  Line 5302 ignored
-WARNING: Unknown keyword '***'.  Line 5304 ignored
-WARNING: Unknown keyword '***'.  Line 5330 ignored
-WARNING: Unknown keyword '***'.  Line 5332 ignored
-ERROR: Can't build dependence graph for
-	\epoc32\release\ARMV5\urel\glxcloudview.dll (UID3:200071ba HWVD:01000000 VER:10.0)
-because
-	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
-is not in rom.
-ERROR: Can't build dependence graph for
-	\epoc32\release\ARMV5\urel\glxfetcher.dll (UID3:200071b3 HWVD:01000000 VER:10.0)
-because
-	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
-is not in rom.
-ERROR: Can't build dependence graph for
-	\epoc32\release\ARMV5\urel\glxdataprovider.dll (UID3:200104da HWVD:01000000 VER:10.0)
-because
-	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
-is not in rom.
-ERROR: Can't build dependence graph for
-	\epoc32\release\ARMV5\urel\glxgridview.dll (UID3:200009ef HWVD:01000000 VER:10.0)
-because
-	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
-is not in rom.
-ERROR: Can't build dependence graph for
-	\epoc32\release\ARMV5\urel\glxfullscreenview.dll (UID3:20000a07 HWVD:01000000 VER:10.0)
-because
-	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
-is not in rom.
-ERROR: Can't build dependence graph for
-	\epoc32\release\ARMV5\urel\glxlistview.dll (UID3:20000a0d HWVD:01000000 VER:10.0)
-because
-	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
-is not in rom.
-ERROR: Can't build dependence graph for
-	\epoc32\release\ARMV5\urel\glxunifiedmetadataview.dll (UID3:20007193 HWVD:01000000 VER:10.0)
-because
-	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
-is not in rom.
-ERROR: Can't build dependence graph for
-	\epoc32\release\ARMV5\urel\vcxnsvodui.dll (UID3:102750db HWVD:01000000 VER:10.0)
-because
-	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
-is not in rom.
-ERROR: Can't build dependence graph for
-	\epoc32\release\ARMV5\urel\vcxnsmyvideos.dll (UID3:2000b439 HWVD:01000000 VER:10.0)
-because
-	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
-is not in rom.
-ERROR: Can't build dependence graph for
-	\epoc32\release\ARMV5\urel\vcxnslivetvui.dll (UID3:00000000 HWVD:01000000 VER:10.0)
-because
-	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
-is not in rom.
-ERROR: Can't build dependence graph for
-	\epoc32\release\ARMV5\urel\alflctlayoutmanagers.dll (UID3:20012475 HWVD:01000000 VER:10.0)
-because
-	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
-is not in rom.
-ERROR: Can't build dependence graph for
-	\epoc32\release\ARMV5\urel\alfscrollbarwidget.dll (UID3:20010105 HWVD:01000000 VER:10.0)
-because
-	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
-is not in rom.
-ERROR: Can't build dependence graph for
-	\epoc32\release\armv5\urel\mulmodelutility.dll (UID3:2000d246 HWVD:01000000 VER:10.0)
-because
-	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
-is not in rom.
-ERROR: Can't build dependence graph for
-	\epoc32\release\armv5\urel\muldatamodel.dll (UID3:2000d247 HWVD:01000000 VER:10.0)
-because
-	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
-is not in rom.
-ERROR: Can't build dependence graph for
-	\epoc32\release\ARMV5\urel\mulgridwidget.dll (UID3:2000d244 HWVD:01000000 VER:10.0)
-because
-	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
-is not in rom.
-ERROR: Can't build dependence graph for
-	\epoc32\release\ARMV5\urel\mulgridwidget.dll (UID3:2000d244 HWVD:01000000 VER:10.0)
-because
-	mulutility.dll (UID3:2000fa83 HWVD:01000000 VER:10.0)
-is not in rom.
-ERROR: Can't build dependence graph for
-	\epoc32\release\armv5\urel\mulsingleitemmodel.dll (UID3:2000fa84 HWVD:01000000 VER:10.0)
-because
-	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
-is not in rom.
-ERROR: Can't build dependence graph for
-	\epoc32\release\ARMV5\urel\mulsliderwidget.dll (UID3:2000fa7f HWVD:01000000 VER:10.0)
-because
-	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
-is not in rom.
-ERROR: Can't build dependence graph for
-	\epoc32\release\ARMV5\urel\mulsliderwidget.dll (UID3:2000fa7f HWVD:01000000 VER:10.0)
-because
-	mulutility.dll (UID3:2000fa83 HWVD:01000000 VER:10.0)
-is not in rom.
-ERROR: LoadContents failed - return code -1
-* rombuild failed
-
-*** Error: (S:CORE,C:1,B:1,K:0,V:1): Command `buildrom -loglevel1 -v -nosymbols -DFEATUREVARIANT=devlon52 -D_IMAGE_TYPE_RND -D_EABI=ARMV5 -D_ASIC_VER_11 -DUSE_MULTIROFS -DDEVLON52 -es60ibymacros -DSECTION -DRND_CONTENT -cbytepair -oRX-47_200846_rnd.img y:\output/release_flash_images/devlon52/rnd/core/RX-47_200846_rnd/RX-47_200846_rnd_core_master.oby' failed (1).
-mingw_make[1]: *** [core] Error 1
-make: [configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_core] Error 2 (ignored)
-+++ HiRes End 1226578474.19474
-++ Finished at Thu Nov 13 14:14:34 2008
-=== config_1 == configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_01
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_01
-++ Started at Thu Nov 13 14:11:27 2008
-+++ HiRes Start 1226578288.09013
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=rnd"  langpack_01  WORKDIR=\epoc32\rombuild\imaker_temp/conf_1
-iMaker 08.43.01, 20-Oct-2008.
-Variant target             USE_VARIANTBLD = `2'
-Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_01'
-Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_01/language_variant.mk'
-Variant include directory  VARIANT_INCDIR = -
-Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_01/variant.confml'
-Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
-Variant SIS directory      VARIANT_SISDIR = -
-Variant operator cache dir VARIANT_OPCDIR = -
-Variant zip content dir    VARIANT_ZIPDIR = -
-Variant copy content dir   VARIANT_CPDIR  = -
-Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/rnd/langpack/langpack_01/variant'
-Calling S60 Configuration Tool
-Generating file(s) for ROFS2 image creation
-Generating language files for Language Package image creation
-Creating ROFS2 SOS image
-
-Missing file(s):
- 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(47): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
- 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(48): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r02' in statement 'data='
- 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(49): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r03' in statement 'data='
- 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(50): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r04' in statement 'data='
- 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(51): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r05' in statement 'data='
- 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(52): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r13' in statement 'data='
- 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\02\appshelldata.dtd' in statement 'data='
- 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\03\appshelldata.dtd' in statement 'data='
- 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\04\appshelldata.dtd' in statement 'data='
-10) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(44): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\05\appshelldata.dtd' in statement 'data='
-11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\13\appshelldata.dtd' in statement 'data='
-12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(48): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0002' in statement 'data='
-13) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(49): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0003' in statement 'data='
-14) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0004' in statement 'data='
-15) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0005' in statement 'data='
-16) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(52): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0013' in statement 'data='
-17) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(54): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0002' in statement 'data='
-18) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(55): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0003' in statement 'data='
-19) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0004' in statement 'data='
-20) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0005' in statement 'data='
-21) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(58): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0013' in statement 'data='
-22) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(70): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
-23) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(71): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0002' in statement 'data='
-24) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(72): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0003' in statement 'data='
-25) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(73): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0004' in statement 'data='
-26) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(74): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0005' in statement 'data='
-27) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(75): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0013' in statement 'data='
-28) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(80): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
-29) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(81): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0002' in statement 'data='
-30) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(82): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0003' in statement 'data='
-31) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(83): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0004' in statement 'data='
-32) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(84): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0005' in statement 'data='
-33) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(85): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0013' in statement 'data='
-34) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(90): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
-35) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(91): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0002' in statement 'data='
-36) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(92): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0003' in statement 'data='
-37) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(93): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0004' in statement 'data='
-38) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(94): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0005' in statement 'data='
-39) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(95): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0013' in statement 'data='
-40) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(100): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
-41) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(101): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0002' in statement 'data='
-42) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(102): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0003' in statement 'data='
-43) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(103): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0004' in statement 'data='
-44) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(104): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0005' in statement 'data='
-45) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(105): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0013' in statement 'data='
-46) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
-47) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
-48) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
-49) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
-50) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
-51) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
-52) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
-53) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
-
-Warning(s):
- 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
- 2) *Initialization*:1: warning: this is the location of the previous definition
- 3) WARNING: Unknown keyword ''.  Line 370 ignored
- 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1982 ignored
- 5) WARNING: Unknown keyword '***'.  Line 2612 ignored
- 6) WARNING: Unknown keyword '***'.  Line 2836 ignored
- 7) WARNING: Unknown keyword '***'.  Line 3330 ignored
- 8) WARNING: Unknown keyword '***'.  Line 3363 ignored
- 9) WARNING: Unknown keyword ''.  Line 370 ignored
-10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1982 ignored
-11) WARNING: Unknown keyword '***'.  Line 2612 ignored
-12) WARNING: Unknown keyword '***'.  Line 2836 ignored
-13) WARNING: Unknown keyword '***'.  Line 3330 ignored
-14) WARNING: Unknown keyword '***'.  Line 3363 ignored
-Creating ROFS2 symbol file
-+++ HiRes End 1226578438.91439
-++ Finished at Thu Nov 13 14:13:58 2008
-=== config_1 == configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_02
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_02
-++ Started at Thu Nov 13 14:14:35 2008
-+++ HiRes Start 1226578476.02282
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=rnd"  langpack_02  WORKDIR=\epoc32\rombuild\imaker_temp/conf_2
-iMaker 08.43.01, 20-Oct-2008.
-Variant target             USE_VARIANTBLD = `2'
-Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_02'
-Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_02/language_variant.mk'
-Variant include directory  VARIANT_INCDIR = -
-Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_02/variant.confml'
-Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
-Variant SIS directory      VARIANT_SISDIR = -
-Variant operator cache dir VARIANT_OPCDIR = -
-Variant zip content dir    VARIANT_ZIPDIR = -
-Variant copy content dir   VARIANT_CPDIR  = -
-Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/rnd/langpack/langpack_02/variant'
-Calling S60 Configuration Tool
-Generating file(s) for ROFS2 image creation
-Generating language files for Language Package image creation
-Creating ROFS2 SOS image
-
-Missing file(s):
- 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(47): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
- 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(48): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r02' in statement 'data='
- 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(49): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r03' in statement 'data='
- 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(50): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r05' in statement 'data='
- 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(51): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r14' in statement 'data='
- 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(52): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r18' in statement 'data='
- 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\02\appshelldata.dtd' in statement 'data='
- 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\03\appshelldata.dtd' in statement 'data='
- 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\05\appshelldata.dtd' in statement 'data='
-10) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(44): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\14\appshelldata.dtd' in statement 'data='
-11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\18\appshelldata.dtd' in statement 'data='
-12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(48): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0002' in statement 'data='
-13) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(49): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0003' in statement 'data='
-14) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0005' in statement 'data='
-15) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0014' in statement 'data='
-16) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(52): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0018' in statement 'data='
-17) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(54): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0002' in statement 'data='
-18) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(55): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0003' in statement 'data='
-19) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0005' in statement 'data='
-20) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0014' in statement 'data='
-21) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(58): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0018' in statement 'data='
-22) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(70): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
-23) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(71): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0002' in statement 'data='
-24) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(72): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0003' in statement 'data='
-25) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(73): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0005' in statement 'data='
-26) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(74): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0014' in statement 'data='
-27) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(75): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0018' in statement 'data='
-28) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(80): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
-29) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(81): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0002' in statement 'data='
-30) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(82): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0003' in statement 'data='
-31) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(83): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0005' in statement 'data='
-32) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(84): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0014' in statement 'data='
-33) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(85): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0018' in statement 'data='
-34) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(90): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
-35) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(91): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0002' in statement 'data='
-36) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(92): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0003' in statement 'data='
-37) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(93): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0005' in statement 'data='
-38) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(94): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0014' in statement 'data='
-39) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(95): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0018' in statement 'data='
-40) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(100): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
-41) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(101): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0002' in statement 'data='
-42) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(102): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0003' in statement 'data='
-43) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(103): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0005' in statement 'data='
-44) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(104): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0014' in statement 'data='
-45) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(105): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0018' in statement 'data='
-46) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
-47) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
-48) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
-49) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
-50) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
-51) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
-52) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
-53) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
-
-Warning(s):
- 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
- 2) *Initialization*:1: warning: this is the location of the previous definition
- 3) WARNING: Unknown keyword ''.  Line 370 ignored
- 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1982 ignored
- 5) WARNING: Unknown keyword '***'.  Line 2612 ignored
- 6) WARNING: Unknown keyword '***'.  Line 2836 ignored
- 7) WARNING: Unknown keyword '***'.  Line 3330 ignored
- 8) WARNING: Unknown keyword '***'.  Line 3363 ignored
- 9) WARNING: Unknown keyword ''.  Line 370 ignored
-10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1982 ignored
-11) WARNING: Unknown keyword '***'.  Line 2612 ignored
-12) WARNING: Unknown keyword '***'.  Line 2836 ignored
-13) WARNING: Unknown keyword '***'.  Line 3330 ignored
-14) WARNING: Unknown keyword '***'.  Line 3363 ignored
-Creating ROFS2 symbol file
-+++ HiRes End 1226578538.55288
-++ Finished at Thu Nov 13 14:15:38 2008
-=== config_1 == configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_03
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_03
-++ Started at Thu Nov 13 14:15:39 2008
-+++ HiRes Start 1226578539.80286
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=rnd"  langpack_03  WORKDIR=\epoc32\rombuild\imaker_temp/conf_3
-iMaker 08.43.01, 20-Oct-2008.
-Variant target             USE_VARIANTBLD = `2'
-Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_03'
-Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_03/language_variant.mk'
-Variant include directory  VARIANT_INCDIR = -
-Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_03/variant.confml'
-Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
-Variant SIS directory      VARIANT_SISDIR = -
-Variant operator cache dir VARIANT_OPCDIR = -
-Variant zip content dir    VARIANT_ZIPDIR = -
-Variant copy content dir   VARIANT_CPDIR  = -
-Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/rnd/langpack/langpack_03/variant'
-Calling S60 Configuration Tool
-Generating file(s) for ROFS2 image creation
-Generating language files for Language Package image creation
-Creating ROFS2 SOS image
-
-Missing file(s):
- 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(47): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
- 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(48): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r06' in statement 'data='
- 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(49): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r07' in statement 'data='
- 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(50): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r08' in statement 'data='
- 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(51): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r09' in statement 'data='
- 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(52): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r15' in statement 'data='
- 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\06\appshelldata.dtd' in statement 'data='
- 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\07\appshelldata.dtd' in statement 'data='
- 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\08\appshelldata.dtd' in statement 'data='
-10) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(44): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\09\appshelldata.dtd' in statement 'data='
-11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\15\appshelldata.dtd' in statement 'data='
-12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(48): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0006' in statement 'data='
-13) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(49): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0007' in statement 'data='
-14) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0008' in statement 'data='
-15) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0009' in statement 'data='
-16) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(52): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0015' in statement 'data='
-17) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(54): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0006' in statement 'data='
-18) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(55): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0007' in statement 'data='
-19) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0008' in statement 'data='
-20) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0009' in statement 'data='
-21) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(58): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0015' in statement 'data='
-22) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(70): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
-23) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(71): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0006' in statement 'data='
-24) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(72): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0007' in statement 'data='
-25) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(73): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0008' in statement 'data='
-26) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(74): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0009' in statement 'data='
-27) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(75): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0015' in statement 'data='
-28) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(80): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
-29) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(81): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0006' in statement 'data='
-30) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(82): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0007' in statement 'data='
-31) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(83): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0008' in statement 'data='
-32) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(84): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0009' in statement 'data='
-33) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(85): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0015' in statement 'data='
-34) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(90): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
-35) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(91): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0006' in statement 'data='
-36) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(92): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0007' in statement 'data='
-37) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(93): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0008' in statement 'data='
-38) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(94): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0009' in statement 'data='
-39) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(95): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0015' in statement 'data='
-40) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(100): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
-41) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(101): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0006' in statement 'data='
-42) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(102): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0007' in statement 'data='
-43) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(103): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0008' in statement 'data='
-44) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(104): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0009' in statement 'data='
-45) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(105): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0015' in statement 'data='
-46) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
-47) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
-48) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
-49) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
-50) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
-51) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
-52) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
-53) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
-
-Warning(s):
- 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
- 2) *Initialization*:1: warning: this is the location of the previous definition
- 3) WARNING: Unknown keyword ''.  Line 370 ignored
- 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1982 ignored
- 5) WARNING: Unknown keyword '***'.  Line 2612 ignored
- 6) WARNING: Unknown keyword '***'.  Line 2836 ignored
- 7) WARNING: Unknown keyword '***'.  Line 3330 ignored
- 8) WARNING: Unknown keyword '***'.  Line 3363 ignored
- 9) WARNING: Unknown keyword ''.  Line 370 ignored
-10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1982 ignored
-11) WARNING: Unknown keyword '***'.  Line 2612 ignored
-12) WARNING: Unknown keyword '***'.  Line 2836 ignored
-13) WARNING: Unknown keyword '***'.  Line 3330 ignored
-14) WARNING: Unknown keyword '***'.  Line 3363 ignored
-Creating ROFS2 symbol file
-+++ HiRes End 1226578601.02083
-++ Finished at Thu Nov 13 14:16:41 2008
-=== config_1 == configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_04
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_04
-++ Started at Thu Nov 13 14:16:42 2008
-+++ HiRes Start 1226578602.22394
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=rnd"  langpack_04  WORKDIR=\epoc32\rombuild\imaker_temp/conf_4
-iMaker 08.43.01, 20-Oct-2008.
-Variant target             USE_VARIANTBLD = `2'
-Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_04'
-Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_04/language_variant.mk'
-Variant include directory  VARIANT_INCDIR = -
-Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_04/variant.confml'
-Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
-Variant SIS directory      VARIANT_SISDIR = -
-Variant operator cache dir VARIANT_OPCDIR = -
-Variant zip content dir    VARIANT_ZIPDIR = -
-Variant copy content dir   VARIANT_CPDIR  = -
-Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/rnd/langpack/langpack_04/variant'
-Calling S60 Configuration Tool
-Generating file(s) for ROFS2 image creation
-Generating language files for Language Package image creation
-Creating ROFS2 SOS image
-
-Missing file(s):
- 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(47): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
- 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(48): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r03' in statement 'data='
- 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(49): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r16' in statement 'data='
- 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(50): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r49' in statement 'data='
- 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(51): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r67' in statement 'data='
- 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(52): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r68' in statement 'data='
- 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\03\appshelldata.dtd' in statement 'data='
- 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\16\appshelldata.dtd' in statement 'data='
- 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\49\appshelldata.dtd' in statement 'data='
-10) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(44): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\67\appshelldata.dtd' in statement 'data='
-11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\68\appshelldata.dtd' in statement 'data='
-12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(48): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0003' in statement 'data='
-13) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(49): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0016' in statement 'data='
-14) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0049' in statement 'data='
-15) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0067' in statement 'data='
-16) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(52): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0068' in statement 'data='
-17) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(54): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0003' in statement 'data='
-18) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(55): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0016' in statement 'data='
-19) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0049' in statement 'data='
-20) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0067' in statement 'data='
-21) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(58): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0068' in statement 'data='
-22) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(70): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
-23) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(71): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0003' in statement 'data='
-24) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(72): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0016' in statement 'data='
-25) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(73): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0049' in statement 'data='
-26) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(74): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0067' in statement 'data='
-27) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(75): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0068' in statement 'data='
-28) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(80): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
-29) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(81): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0003' in statement 'data='
-30) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(82): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0016' in statement 'data='
-31) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(83): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0049' in statement 'data='
-32) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(84): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0067' in statement 'data='
-33) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(85): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0068' in statement 'data='
-34) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(90): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
-35) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(91): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0003' in statement 'data='
-36) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(92): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0016' in statement 'data='
-37) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(93): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0049' in statement 'data='
-38) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(94): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0067' in statement 'data='
-39) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(95): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0068' in statement 'data='
-40) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(100): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
-41) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(101): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0003' in statement 'data='
-42) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(102): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0016' in statement 'data='
-43) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(103): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0049' in statement 'data='
-44) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(104): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0067' in statement 'data='
-45) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(105): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0068' in statement 'data='
-46) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
-47) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
-48) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
-49) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
-50) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
-51) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
-52) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
-53) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
-
-Warning(s):
- 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
- 2) *Initialization*:1: warning: this is the location of the previous definition
- 3) WARNING: Unknown keyword ''.  Line 370 ignored
- 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1982 ignored
- 5) WARNING: Unknown keyword '***'.  Line 2612 ignored
- 6) WARNING: Unknown keyword '***'.  Line 2836 ignored
- 7) WARNING: Unknown keyword '***'.  Line 3330 ignored
- 8) WARNING: Unknown keyword '***'.  Line 3363 ignored
- 9) WARNING: Unknown keyword ''.  Line 370 ignored
-10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1982 ignored
-11) WARNING: Unknown keyword '***'.  Line 2612 ignored
-12) WARNING: Unknown keyword '***'.  Line 2836 ignored
-13) WARNING: Unknown keyword '***'.  Line 3330 ignored
-14) WARNING: Unknown keyword '***'.  Line 3363 ignored
-Creating ROFS2 symbol file
-+++ HiRes End 1226578662.62942
-++ Finished at Thu Nov 13 14:17:42 2008
-=== config_1 == configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_05
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_05
-++ Started at Thu Nov 13 14:17:43 2008
-+++ HiRes Start 1226578663.8794
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=rnd"  langpack_05  WORKDIR=\epoc32\rombuild\imaker_temp/conf_5
-iMaker 08.43.01, 20-Oct-2008.
-Variant target             USE_VARIANTBLD = `2'
-Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_05'
-Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_05/language_variant.mk'
-Variant include directory  VARIANT_INCDIR = -
-Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_05/variant.confml'
-Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
-Variant SIS directory      VARIANT_SISDIR = -
-Variant operator cache dir VARIANT_OPCDIR = -
-Variant zip content dir    VARIANT_ZIPDIR = -
-Variant copy content dir   VARIANT_CPDIR  = -
-Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/rnd/langpack/langpack_05/variant'
-Calling S60 Configuration Tool
-Generating file(s) for ROFS2 image creation
-Generating language files for Language Package image creation
-Creating ROFS2 SOS image
-
-Missing file(s):
- 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(52): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
- 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(53): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r03' in statement 'data='
- 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(54): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r16' in statement 'data='
- 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(55): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r17' in statement 'data='
- 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(56): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r42' in statement 'data='
- 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(57): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r78' in statement 'data='
- 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(58): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r93' in statement 'data='
- 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\03\appshelldata.dtd' in statement 'data='
- 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\16\appshelldata.dtd' in statement 'data='
-10) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(44): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\17\appshelldata.dtd' in statement 'data='
-11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\42\appshelldata.dtd' in statement 'data='
-12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(46): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\78\appshelldata.dtd' in statement 'data='
-13) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(47): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\93\appshelldata.dtd' in statement 'data='
-14) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0003' in statement 'data='
-15) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0016' in statement 'data='
-16) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(52): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0017' in statement 'data='
-17) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(53): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0042' in statement 'data='
-18) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(54): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0078' in statement 'data='
-19) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(55): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0093' in statement 'data='
-20) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0003' in statement 'data='
-21) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(58): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0016' in statement 'data='
-22) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(59): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0017' in statement 'data='
-23) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(60): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0042' in statement 'data='
-24) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(61): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0078' in statement 'data='
-25) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(62): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0093' in statement 'data='
-26) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(75): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
-27) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(76): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0003' in statement 'data='
-28) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(77): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0016' in statement 'data='
-29) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(78): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0017' in statement 'data='
-30) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(79): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0042' in statement 'data='
-31) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(80): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0078' in statement 'data='
-32) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(81): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0093' in statement 'data='
-33) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(86): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
-34) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(87): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0003' in statement 'data='
-35) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(88): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0016' in statement 'data='
-36) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(89): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0017' in statement 'data='
-37) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(90): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0042' in statement 'data='
-38) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(91): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0078' in statement 'data='
-39) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(92): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0093' in statement 'data='
-40) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(97): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
-41) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(98): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0003' in statement 'data='
-42) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(99): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0016' in statement 'data='
-43) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(100): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0017' in statement 'data='
-44) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(101): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0042' in statement 'data='
-45) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(102): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0078' in statement 'data='
-46) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(103): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0093' in statement 'data='
-47) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(108): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
-48) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(109): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0003' in statement 'data='
-49) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(110): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0016' in statement 'data='
-50) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(111): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0017' in statement 'data='
-51) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(112): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0042' in statement 'data='
-52) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(113): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0078' in statement 'data='
-53) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(114): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0093' in statement 'data='
-54) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
-55) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
-56) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
-57) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
-58) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
-59) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
-60) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
-61) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
-
-Warning(s):
- 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
- 2) *Initialization*:1: warning: this is the location of the previous definition
- 3) WARNING: Unknown keyword ''.  Line 421 ignored
- 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 2271 ignored
- 5) WARNING: Unknown keyword '***'.  Line 2992 ignored
- 6) WARNING: Unknown keyword '***'.  Line 3248 ignored
- 7) WARNING: Unknown keyword '***'.  Line 3813 ignored
- 8) WARNING: Unknown keyword '***'.  Line 3851 ignored
- 9) WARNING: Unknown keyword ''.  Line 421 ignored
-10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 2271 ignored
-11) WARNING: Unknown keyword '***'.  Line 2992 ignored
-12) WARNING: Unknown keyword '***'.  Line 3248 ignored
-13) WARNING: Unknown keyword '***'.  Line 3813 ignored
-14) WARNING: Unknown keyword '***'.  Line 3851 ignored
-Creating ROFS2 symbol file
-+++ HiRes End 1226578726.36297
-++ Finished at Thu Nov 13 14:18:46 2008
-=== config_1 == configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_06
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_06
-++ Started at Thu Nov 13 14:18:47 2008
-+++ HiRes Start 1226578727.73796
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=rnd"  langpack_06  WORKDIR=\epoc32\rombuild\imaker_temp/conf_6
-iMaker 08.43.01, 20-Oct-2008.
-Variant target             USE_VARIANTBLD = `2'
-Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_06'
-Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_06/language_variant.mk'
-Variant include directory  VARIANT_INCDIR = -
-Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_06/variant.confml'
-Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
-Variant SIS directory      VARIANT_SISDIR = -
-Variant operator cache dir VARIANT_OPCDIR = -
-Variant zip content dir    VARIANT_ZIPDIR = -
-Variant copy content dir   VARIANT_CPDIR  = -
-Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/rnd/langpack/langpack_06/variant'
-Calling S60 Configuration Tool
-Generating file(s) for ROFS2 image creation
-Generating language files for Language Package image creation
-Creating ROFS2 SOS image
-
-Missing file(s):
- 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(47): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
- 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(48): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r03' in statement 'data='
- 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(49): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r17' in statement 'data='
- 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(50): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r25' in statement 'data='
- 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(51): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r26' in statement 'data='
- 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(52): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r27' in statement 'data='
- 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\03\appshelldata.dtd' in statement 'data='
- 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\17\appshelldata.dtd' in statement 'data='
- 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\25\appshelldata.dtd' in statement 'data='
-10) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(44): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\26\appshelldata.dtd' in statement 'data='
-11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\27\appshelldata.dtd' in statement 'data='
-12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(48): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0003' in statement 'data='
-13) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(49): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0017' in statement 'data='
-14) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0025' in statement 'data='
-15) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0026' in statement 'data='
-16) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(52): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0027' in statement 'data='
-17) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(54): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0003' in statement 'data='
-18) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(55): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0017' in statement 'data='
-19) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0025' in statement 'data='
-20) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0026' in statement 'data='
-21) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(58): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0027' in statement 'data='
-22) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(70): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
-23) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(71): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0003' in statement 'data='
-24) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(72): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0017' in statement 'data='
-25) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(73): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0025' in statement 'data='
-26) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(74): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0026' in statement 'data='
-27) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(75): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0027' in statement 'data='
-28) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(80): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
-29) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(81): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0003' in statement 'data='
-30) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(82): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0017' in statement 'data='
-31) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(83): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0025' in statement 'data='
-32) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(84): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0026' in statement 'data='
-33) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(85): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0027' in statement 'data='
-34) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(90): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
-35) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(91): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0003' in statement 'data='
-36) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(92): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0017' in statement 'data='
-37) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(93): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0025' in statement 'data='
-38) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(94): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0026' in statement 'data='
-39) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(95): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0027' in statement 'data='
-40) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(100): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
-41) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(101): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0003' in statement 'data='
-42) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(102): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0017' in statement 'data='
-43) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(103): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0025' in statement 'data='
-44) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(104): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0026' in statement 'data='
-45) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(105): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0027' in statement 'data='
-46) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
-47) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
-48) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
-49) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
-50) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
-51) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
-52) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
-53) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
-
-Warning(s):
- 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
- 2) *Initialization*:1: warning: this is the location of the previous definition
- 3) WARNING: Unknown keyword ''.  Line 370 ignored
- 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1982 ignored
- 5) WARNING: Unknown keyword '***'.  Line 2612 ignored
- 6) WARNING: Unknown keyword '***'.  Line 2836 ignored
- 7) WARNING: Unknown keyword '***'.  Line 3330 ignored
- 8) WARNING: Unknown keyword '***'.  Line 3363 ignored
- 9) WARNING: Unknown keyword ''.  Line 370 ignored
-10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1982 ignored
-11) WARNING: Unknown keyword '***'.  Line 2612 ignored
-12) WARNING: Unknown keyword '***'.  Line 2836 ignored
-13) WARNING: Unknown keyword '***'.  Line 3330 ignored
-14) WARNING: Unknown keyword '***'.  Line 3363 ignored
-Creating ROFS2 symbol file
-+++ HiRes End 1226578786.40908
-++ Finished at Thu Nov 13 14:19:46 2008
-=== config_1 == configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_07
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_07
-++ Started at Thu Nov 13 14:19:47 2008
-+++ HiRes Start 1226578787.62782
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=rnd"  langpack_07  WORKDIR=\epoc32\rombuild\imaker_temp/conf_7
-iMaker 08.43.01, 20-Oct-2008.
-Variant target             USE_VARIANTBLD = `2'
-Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_07'
-Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_07/language_variant.mk'
-Variant include directory  VARIANT_INCDIR = -
-Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_07/variant.confml'
-Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
-Variant SIS directory      VARIANT_SISDIR = -
-Variant operator cache dir VARIANT_OPCDIR = -
-Variant zip content dir    VARIANT_ZIPDIR = -
-Variant copy content dir   VARIANT_CPDIR  = -
-Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/rnd/langpack/langpack_07/variant'
-Calling S60 Configuration Tool
-Generating file(s) for ROFS2 image creation
-Generating language files for Language Package image creation
-Creating ROFS2 SOS image
-
-Missing file(s):
- 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(47): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
- 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(48): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r03' in statement 'data='
- 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(49): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r28' in statement 'data='
- 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(50): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r45' in statement 'data='
- 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(51): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r54' in statement 'data='
- 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(52): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r79' in statement 'data='
- 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\03\appshelldata.dtd' in statement 'data='
- 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\28\appshelldata.dtd' in statement 'data='
- 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\45\appshelldata.dtd' in statement 'data='
-10) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(44): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\54\appshelldata.dtd' in statement 'data='
-11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\79\appshelldata.dtd' in statement 'data='
-12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(48): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0003' in statement 'data='
-13) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(49): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0028' in statement 'data='
-14) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0045' in statement 'data='
-15) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0054' in statement 'data='
-16) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(52): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0079' in statement 'data='
-17) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(54): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0003' in statement 'data='
-18) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(55): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0028' in statement 'data='
-19) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0045' in statement 'data='
-20) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0054' in statement 'data='
-21) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(58): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0079' in statement 'data='
-22) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(70): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
-23) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(71): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0003' in statement 'data='
-24) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(72): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0028' in statement 'data='
-25) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(73): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0045' in statement 'data='
-26) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(74): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0054' in statement 'data='
-27) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(75): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0079' in statement 'data='
-28) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(80): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
-29) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(81): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0003' in statement 'data='
-30) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(82): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0028' in statement 'data='
-31) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(83): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0045' in statement 'data='
-32) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(84): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0054' in statement 'data='
-33) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(85): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0079' in statement 'data='
-34) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(90): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
-35) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(91): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0003' in statement 'data='
-36) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(92): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0028' in statement 'data='
-37) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(93): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0045' in statement 'data='
-38) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(94): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0054' in statement 'data='
-39) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(95): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0079' in statement 'data='
-40) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(100): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
-41) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(101): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0003' in statement 'data='
-42) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(102): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0028' in statement 'data='
-43) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(103): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0045' in statement 'data='
-44) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(104): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0054' in statement 'data='
-45) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(105): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0079' in statement 'data='
-46) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
-47) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
-48) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
-49) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
-50) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
-51) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
-52) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
-53) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
-
-Warning(s):
- 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
- 2) *Initialization*:1: warning: this is the location of the previous definition
- 3) WARNING: Unknown keyword ''.  Line 370 ignored
- 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1982 ignored
- 5) WARNING: Unknown keyword '***'.  Line 2612 ignored
- 6) WARNING: Unknown keyword '***'.  Line 2836 ignored
- 7) WARNING: Unknown keyword '***'.  Line 3330 ignored
- 8) WARNING: Unknown keyword '***'.  Line 3363 ignored
- 9) WARNING: Unknown keyword ''.  Line 370 ignored
-10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1982 ignored
-11) WARNING: Unknown keyword '***'.  Line 2612 ignored
-12) WARNING: Unknown keyword '***'.  Line 2836 ignored
-13) WARNING: Unknown keyword '***'.  Line 3330 ignored
-14) WARNING: Unknown keyword '***'.  Line 3363 ignored
-Creating ROFS2 symbol file
-+++ HiRes End 1226578847.51767
-++ Finished at Thu Nov 13 14:20:47 2008
-=== config_1 == configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_08
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_08
-++ Started at Thu Nov 13 14:20:48 2008
-+++ HiRes Start 1226578848.75203
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=rnd"  langpack_08  WORKDIR=\epoc32\rombuild\imaker_temp/conf_8
-iMaker 08.43.01, 20-Oct-2008.
-Variant target             USE_VARIANTBLD = `2'
-Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_08'
-Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_08/language_variant.mk'
-Variant include directory  VARIANT_INCDIR = -
-Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_08/variant.confml'
-Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
-Variant SIS directory      VARIANT_SISDIR = -
-Variant operator cache dir VARIANT_OPCDIR = -
-Variant zip content dir    VARIANT_ZIPDIR = -
-Variant copy content dir   VARIANT_CPDIR  = -
-Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/rnd/langpack/langpack_08/variant'
-Calling S60 Configuration Tool
-Generating file(s) for ROFS2 image creation
-Generating language files for Language Package image creation
-Creating ROFS2 SOS image
-
-Missing file(s):
- 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(47): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
- 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(48): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r04' in statement 'data='
- 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(49): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r16' in statement 'data='
- 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(50): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r37' in statement 'data='
- 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(51): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r57' in statement 'data='
- 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(52): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r78' in statement 'data='
- 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\04\appshelldata.dtd' in statement 'data='
- 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\16\appshelldata.dtd' in statement 'data='
- 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\37\appshelldata.dtd' in statement 'data='
-10) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(44): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\57\appshelldata.dtd' in statement 'data='
-11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\78\appshelldata.dtd' in statement 'data='
-12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(48): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0004' in statement 'data='
-13) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(49): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0016' in statement 'data='
-14) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0037' in statement 'data='
-15) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0057' in statement 'data='
-16) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(52): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0078' in statement 'data='
-17) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(54): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0004' in statement 'data='
-18) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(55): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0016' in statement 'data='
-19) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0037' in statement 'data='
-20) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0057' in statement 'data='
-21) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(58): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0078' in statement 'data='
-22) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(70): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
-23) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(71): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0004' in statement 'data='
-24) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(72): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0016' in statement 'data='
-25) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(73): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0037' in statement 'data='
-26) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(74): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0057' in statement 'data='
-27) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(75): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0078' in statement 'data='
-28) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(80): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
-29) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(81): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0004' in statement 'data='
-30) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(82): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0016' in statement 'data='
-31) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(83): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0037' in statement 'data='
-32) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(84): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0057' in statement 'data='
-33) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(85): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0078' in statement 'data='
-34) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(90): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
-35) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(91): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0004' in statement 'data='
-36) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(92): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0016' in statement 'data='
-37) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(93): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0037' in statement 'data='
-38) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(94): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0057' in statement 'data='
-39) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(95): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0078' in statement 'data='
-40) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(100): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
-41) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(101): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0004' in statement 'data='
-42) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(102): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0016' in statement 'data='
-43) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(103): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0037' in statement 'data='
-44) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(104): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0057' in statement 'data='
-45) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(105): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0078' in statement 'data='
-46) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
-47) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
-48) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
-49) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
-50) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
-51) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
-52) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
-53) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
-
-Warning(s):
- 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
- 2) *Initialization*:1: warning: this is the location of the previous definition
- 3) WARNING: Unknown keyword ''.  Line 370 ignored
- 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1982 ignored
- 5) WARNING: Unknown keyword '***'.  Line 2612 ignored
- 6) WARNING: Unknown keyword '***'.  Line 2836 ignored
- 7) WARNING: Unknown keyword '***'.  Line 3330 ignored
- 8) WARNING: Unknown keyword '***'.  Line 3363 ignored
- 9) WARNING: Unknown keyword ''.  Line 370 ignored
-10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1982 ignored
-11) WARNING: Unknown keyword '***'.  Line 2612 ignored
-12) WARNING: Unknown keyword '***'.  Line 2836 ignored
-13) WARNING: Unknown keyword '***'.  Line 3330 ignored
-14) WARNING: Unknown keyword '***'.  Line 3363 ignored
-Creating ROFS2 symbol file
-+++ HiRes End 1226578909.57938
-++ Finished at Thu Nov 13 14:21:49 2008
-=== config_1 == configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_09
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_09
-++ Started at Thu Nov 13 14:21:50 2008
-+++ HiRes Start 1226578910.84499
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=rnd"  langpack_09  WORKDIR=\epoc32\rombuild\imaker_temp/conf_9
-iMaker 08.43.01, 20-Oct-2008.
-Variant target             USE_VARIANTBLD = `2'
-Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_09'
-Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_09/language_variant.mk'
-Variant include directory  VARIANT_INCDIR = -
-Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_09/variant.confml'
-Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
-Variant SIS directory      VARIANT_SISDIR = -
-Variant operator cache dir VARIANT_OPCDIR = -
-Variant zip content dir    VARIANT_ZIPDIR = -
-Variant copy content dir   VARIANT_CPDIR  = -
-Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/rnd/langpack/langpack_09/variant'
-Calling S60 Configuration Tool
-Generating file(s) for ROFS2 image creation
-Generating language files for Language Package image creation
-Creating ROFS2 SOS image
-
-Missing file(s):
- 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\audiothemesresources.iby(29): Missing file: '\epoc32\data\Z\resource\PslnATPluginRsc.r102' in statement 'data='
- 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\audiothemesresources.iby(30): Missing file: '\epoc32\data\Z\resource\PslnATPluginRsc.r103' in statement 'data='
- 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(57): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
- 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(58): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r02' in statement 'data='
- 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(59): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r03' in statement 'data='
- 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(60): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r04' in statement 'data='
- 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(61): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r102' in statement 'data='
- 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(62): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r103' in statement 'data='
- 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(63): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r13' in statement 'data='
-10) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(64): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r44' in statement 'data='
-11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\02\appshelldata.dtd' in statement 'data='
-12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(44): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\03\appshelldata.dtd' in statement 'data='
-13) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\04\appshelldata.dtd' in statement 'data='
-14) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(46): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\102\appshelldata.dtd' in statement 'data='
-15) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(47): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\103\appshelldata.dtd' in statement 'data='
-16) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(48): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\13\appshelldata.dtd' in statement 'data='
-17) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(49): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\44\appshelldata.dtd' in statement 'data='
-18) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(52): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0002' in statement 'data='
-19) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(53): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0003' in statement 'data='
-20) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(54): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0004' in statement 'data='
-21) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(55): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0102' in statement 'data='
-22) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0103' in statement 'data='
-23) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0013' in statement 'data='
-24) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(58): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0044' in statement 'data='
-25) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(60): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0002' in statement 'data='
-26) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(61): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0003' in statement 'data='
-27) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(62): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0004' in statement 'data='
-28) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(63): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0102' in statement 'data='
-29) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(64): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0103' in statement 'data='
-30) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(65): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0013' in statement 'data='
-31) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(66): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0044' in statement 'data='
-32) ..\..\..\..\..\..\epoc32\rom\include\language\app\mobiledictionaryresources.iby(19): Missing file: '\epoc32\data\Z\resource\Apps\mobiledictionary.r102' in statement 'data='
-33) ..\..\..\..\..\..\epoc32\rom\include\language\app\mobiledictionaryresources.iby(20): Missing file: '\epoc32\data\Z\resource\Apps\mobiledictionary.r103' in statement 'data='
-34) ..\..\..\..\..\..\epoc32\rom\include\language\app\NcdCatalogsUiResources.iby(32): Missing file: '\epoc32\data\Z\resource\apps\Ncd.r102' in statement 'data='
-35) ..\..\..\..\..\..\epoc32\rom\include\language\app\NcdCatalogsUiResources.iby(33): Missing file: '\epoc32\data\Z\resource\apps\Ncd.r103' in statement 'data='
-36) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(80): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
-37) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(81): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0002' in statement 'data='
-38) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(82): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0003' in statement 'data='
-39) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(83): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0004' in statement 'data='
-40) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(84): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0102' in statement 'data='
-41) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(85): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0103' in statement 'data='
-42) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(86): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0013' in statement 'data='
-43) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(87): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0044' in statement 'data='
-44) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(92): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
-45) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(93): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0002' in statement 'data='
-46) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(94): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0003' in statement 'data='
-47) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(95): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0004' in statement 'data='
-48) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(96): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0102' in statement 'data='
-49) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(97): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0103' in statement 'data='
-50) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(98): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0013' in statement 'data='
-51) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(99): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0044' in statement 'data='
-52) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(104): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
-53) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(105): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0002' in statement 'data='
-54) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(106): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0003' in statement 'data='
-55) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(107): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0004' in statement 'data='
-56) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(108): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0102' in statement 'data='
-57) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(109): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0103' in statement 'data='
-58) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(110): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0013' in statement 'data='
-59) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(111): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0044' in statement 'data='
-60) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(116): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
-61) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(117): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0002' in statement 'data='
-62) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(118): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0003' in statement 'data='
-63) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(119): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0004' in statement 'data='
-64) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(120): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0102' in statement 'data='
-65) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(121): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0103' in statement 'data='
-66) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(122): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0013' in statement 'data='
-67) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(123): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0044' in statement 'data='
-68) ..\..\..\..\..\..\epoc32\rom\include\language\mw\elocl.iby(28): Missing file: '\epoc32\release\ARMV5\urel\Elocl.102' in statement 'file='
-69) ..\..\..\..\..\..\epoc32\rom\include\language\mw\elocl.iby(29): Missing file: '\epoc32\release\ARMV5\urel\Elocl.103' in statement 'file='
-70) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
-71) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
-72) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
-73) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
-74) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
-75) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
-76) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
-77) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
-
-Warning(s):
- 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
- 2) *Initialization*:1: warning: this is the location of the previous definition
- 3) WARNING: Unknown keyword ''.  Line 472 ignored
- 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 2560 ignored
- 5) WARNING: Unknown keyword '***'.  Line 3372 ignored
- 6) WARNING: Unknown keyword '***'.  Line 3660 ignored
- 7) WARNING: Unknown keyword '***'.  Line 4296 ignored
- 8) WARNING: Unknown keyword '***'.  Line 4339 ignored
- 9) WARNING: Unknown keyword ''.  Line 472 ignored
-10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 2560 ignored
-11) WARNING: Unknown keyword '***'.  Line 3372 ignored
-12) WARNING: Unknown keyword '***'.  Line 3660 ignored
-13) WARNING: Unknown keyword '***'.  Line 4296 ignored
-14) WARNING: Unknown keyword '***'.  Line 4339 ignored
-Creating ROFS2 symbol file
-+++ HiRes End 1226578977.98475
-++ Finished at Thu Nov 13 14:22:58 2008
-=== config_1 == configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_11
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_11
-++ Started at Thu Nov 13 14:22:59 2008
-+++ HiRes Start 1226578979.37536
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=rnd"  langpack_11  WORKDIR=\epoc32\rombuild\imaker_temp/conf_10
-iMaker 08.43.01, 20-Oct-2008.
-Variant target             USE_VARIANTBLD = `2'
-Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_11'
-Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_11/language_variant.mk'
-Variant include directory  VARIANT_INCDIR = -
-Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_11/variant.confml'
-Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
-Variant SIS directory      VARIANT_SISDIR = -
-Variant operator cache dir VARIANT_OPCDIR = -
-Variant zip content dir    VARIANT_ZIPDIR = -
-Variant copy content dir   VARIANT_CPDIR  = -
-Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/rnd/langpack/langpack_11/variant'
-Calling S60 Configuration Tool
-Generating file(s) for ROFS2 image creation
-Generating language files for Language Package image creation
-Creating ROFS2 SOS image
-
-Missing file(s):
- 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(32): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
- 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(33): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r02' in statement 'data='
- 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(34): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r37' in statement 'data='
- 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(38): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\02\appshelldata.dtd' in statement 'data='
- 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(39): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\37\appshelldata.dtd' in statement 'data='
- 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0002' in statement 'data='
- 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0037' in statement 'data='
- 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0002' in statement 'data='
- 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(46): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0037' in statement 'data='
-10) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(55): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
-11) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0002' in statement 'data='
-12) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0037' in statement 'data='
-13) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(62): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
-14) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(63): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0002' in statement 'data='
-15) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(64): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0037' in statement 'data='
-16) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(69): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
-17) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(70): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0002' in statement 'data='
-18) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(71): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0037' in statement 'data='
-19) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(76): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
-20) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(77): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0002' in statement 'data='
-21) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(78): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0037' in statement 'data='
-22) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
-23) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
-24) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
-25) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
-26) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
-27) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
-28) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
-29) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
-
-Warning(s):
- 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
- 2) *Initialization*:1: warning: this is the location of the previous definition
- 3) WARNING: Unknown keyword ''.  Line 217 ignored
- 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1115 ignored
- 5) WARNING: Unknown keyword '***'.  Line 1472 ignored
- 6) WARNING: Unknown keyword '***'.  Line 1600 ignored
- 7) WARNING: Unknown keyword '***'.  Line 1881 ignored
- 8) WARNING: Unknown keyword '***'.  Line 1899 ignored
- 9) WARNING: Unknown keyword ''.  Line 217 ignored
-10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1115 ignored
-11) WARNING: Unknown keyword '***'.  Line 1472 ignored
-12) WARNING: Unknown keyword '***'.  Line 1600 ignored
-13) WARNING: Unknown keyword '***'.  Line 1881 ignored
-14) WARNING: Unknown keyword '***'.  Line 1899 ignored
-Creating ROFS2 symbol file
-+++ HiRes End 1226579017.23425
-++ Finished at Thu Nov 13 14:23:37 2008
-=== config_1 == configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_12
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_12
-++ Started at Thu Nov 13 14:23:38 2008
-+++ HiRes Start 1226579018.07799
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=rnd"  langpack_12  WORKDIR=\epoc32\rombuild\imaker_temp/conf_11
-iMaker 08.43.01, 20-Oct-2008.
-Variant target             USE_VARIANTBLD = `2'
-Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_12'
-Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_12/language_variant.mk'
-Variant include directory  VARIANT_INCDIR = -
-Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_12/variant.confml'
-Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
-Variant SIS directory      VARIANT_SISDIR = -
-Variant operator cache dir VARIANT_OPCDIR = -
-Variant zip content dir    VARIANT_ZIPDIR = -
-Variant copy content dir   VARIANT_CPDIR  = -
-Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/rnd/langpack/langpack_12/variant'
-Calling S60 Configuration Tool
-Generating file(s) for ROFS2 image creation
-Generating language files for Language Package image creation
-Creating ROFS2 SOS image
-
-Missing file(s):
- 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(37): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
- 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(38): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r37' in statement 'data='
- 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(39): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r50' in statement 'data='
- 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(40): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r94' in statement 'data='
- 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(39): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\37\appshelldata.dtd' in statement 'data='
- 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(40): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\50\appshelldata.dtd' in statement 'data='
- 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\94\appshelldata.dtd' in statement 'data='
- 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(44): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0037' in statement 'data='
- 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0050' in statement 'data='
-10) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(46): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0094' in statement 'data='
-11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(48): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0037' in statement 'data='
-12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(49): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0050' in statement 'data='
-13) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0094' in statement 'data='
-14) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(60): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
-15) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(61): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0037' in statement 'data='
-16) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(62): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0050' in statement 'data='
-17) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(63): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0094' in statement 'data='
-18) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(68): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
-19) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(69): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0037' in statement 'data='
-20) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(70): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0050' in statement 'data='
-21) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(71): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0094' in statement 'data='
-22) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(76): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
-23) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(77): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0037' in statement 'data='
-24) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(78): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0050' in statement 'data='
-25) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(79): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0094' in statement 'data='
-26) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(84): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
-27) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(85): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0037' in statement 'data='
-28) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(86): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0050' in statement 'data='
-29) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(87): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0094' in statement 'data='
-30) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
-31) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
-32) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
-33) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
-34) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
-35) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
-36) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
-37) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
-
-Warning(s):
- 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
- 2) *Initialization*:1: warning: this is the location of the previous definition
- 3) WARNING: Unknown keyword ''.  Line 268 ignored
- 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1404 ignored
- 5) WARNING: Unknown keyword '***'.  Line 1852 ignored
- 6) WARNING: Unknown keyword '***'.  Line 2012 ignored
- 7) WARNING: Unknown keyword '***'.  Line 2364 ignored
- 8) WARNING: Unknown keyword '***'.  Line 2387 ignored
- 9) WARNING: Unknown keyword ''.  Line 268 ignored
-10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1404 ignored
-11) WARNING: Unknown keyword '***'.  Line 1852 ignored
-12) WARNING: Unknown keyword '***'.  Line 2012 ignored
-13) WARNING: Unknown keyword '***'.  Line 2364 ignored
-14) WARNING: Unknown keyword '***'.  Line 2387 ignored
-Creating ROFS2 symbol file
-+++ HiRes End 1226579063.9524
-++ Finished at Thu Nov 13 14:24:23 2008
-=== config_1 == configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_13
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_13
-++ Started at Thu Nov 13 14:24:24 2008
-+++ HiRes Start 1226579064.95239
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=rnd"  langpack_13  WORKDIR=\epoc32\rombuild\imaker_temp/conf_12
-iMaker 08.43.01, 20-Oct-2008.
-Variant target             USE_VARIANTBLD = `2'
-Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_13'
-Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_13/language_variant.mk'
-Variant include directory  VARIANT_INCDIR = -
-Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_13/variant.confml'
-Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
-Variant SIS directory      VARIANT_SISDIR = -
-Variant operator cache dir VARIANT_OPCDIR = -
-Variant zip content dir    VARIANT_ZIPDIR = -
-Variant copy content dir   VARIANT_CPDIR  = -
-Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/rnd/langpack/langpack_13/variant'
-Calling S60 Configuration Tool
-Generating file(s) for ROFS2 image creation
-Generating language files for Language Package image creation
-Creating ROFS2 SOS image
-
-Missing file(s):
- 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(27): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
- 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(28): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r13' in statement 'data='
- 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(37): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\13\appshelldata.dtd' in statement 'data='
- 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(40): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0013' in statement 'data='
- 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0013' in statement 'data='
- 6) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
- 7) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0013' in statement 'data='
- 8) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
- 9) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0013' in statement 'data='
-10) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(62): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
-11) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(63): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0013' in statement 'data='
-12) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(68): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
-13) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(69): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0013' in statement 'data='
-14) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
-15) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
-16) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
-17) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
-18) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
-19) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
-20) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
-21) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
-
-Warning(s):
- 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
- 2) *Initialization*:1: warning: this is the location of the previous definition
- 3) WARNING: Unknown keyword ''.  Line 166 ignored
- 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 826 ignored
- 5) WARNING: Unknown keyword '***'.  Line 1092 ignored
- 6) WARNING: Unknown keyword '***'.  Line 1188 ignored
- 7) WARNING: Unknown keyword '***'.  Line 1398 ignored
- 8) WARNING: Unknown keyword '***'.  Line 1411 ignored
- 9) WARNING: Unknown keyword ''.  Line 166 ignored
-10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 826 ignored
-11) WARNING: Unknown keyword '***'.  Line 1092 ignored
-12) WARNING: Unknown keyword '***'.  Line 1188 ignored
-13) WARNING: Unknown keyword '***'.  Line 1398 ignored
-14) WARNING: Unknown keyword '***'.  Line 1411 ignored
-Creating ROFS2 symbol file
-+++ HiRes End 1226579096.78011
-++ Finished at Thu Nov 13 14:24:56 2008
-=== config_1 == configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_14
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_14
-++ Started at Thu Nov 13 14:24:57 2008
-+++ HiRes Start 1226579097.51447
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=rnd"  langpack_14  WORKDIR=\epoc32\rombuild\imaker_temp/conf_13
-iMaker 08.43.01, 20-Oct-2008.
-Variant target             USE_VARIANTBLD = `2'
-Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_14'
-Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_14/language_variant.mk'
-Variant include directory  VARIANT_INCDIR = -
-Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_14/variant.confml'
-Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
-Variant SIS directory      VARIANT_SISDIR = -
-Variant operator cache dir VARIANT_OPCDIR = -
-Variant zip content dir    VARIANT_ZIPDIR = -
-Variant copy content dir   VARIANT_CPDIR  = -
-Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/rnd/langpack/langpack_14/variant'
-Calling S60 Configuration Tool
-Generating file(s) for ROFS2 image creation
-Generating language files for Language Package image creation
-Creating ROFS2 SOS image
-
-Missing file(s):
- 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(42): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
- 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(43): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r02' in statement 'data='
- 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(44): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r03' in statement 'data='
- 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(45): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r05' in statement 'data='
- 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(46): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r18' in statement 'data='
- 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(40): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\02\appshelldata.dtd' in statement 'data='
- 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\03\appshelldata.dtd' in statement 'data='
- 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\05\appshelldata.dtd' in statement 'data='
- 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\18\appshelldata.dtd' in statement 'data='
-10) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(46): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0002' in statement 'data='
-11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(47): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0003' in statement 'data='
-12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(48): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0005' in statement 'data='
-13) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(49): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0018' in statement 'data='
-14) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0002' in statement 'data='
-15) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(52): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0003' in statement 'data='
-16) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(53): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0005' in statement 'data='
-17) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(54): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0018' in statement 'data='
-18) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(65): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
-19) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(66): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0002' in statement 'data='
-20) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(67): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0003' in statement 'data='
-21) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(68): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0005' in statement 'data='
-22) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(69): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0018' in statement 'data='
-23) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(74): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
-24) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(75): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0002' in statement 'data='
-25) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(76): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0003' in statement 'data='
-26) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(77): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0005' in statement 'data='
-27) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(78): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0018' in statement 'data='
-28) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(83): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
-29) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(84): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0002' in statement 'data='
-30) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(85): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0003' in statement 'data='
-31) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(86): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0005' in statement 'data='
-32) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(87): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0018' in statement 'data='
-33) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(92): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
-34) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(93): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0002' in statement 'data='
-35) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(94): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0003' in statement 'data='
-36) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(95): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0005' in statement 'data='
-37) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(96): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0018' in statement 'data='
-38) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
-39) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
-40) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
-41) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
-42) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
-43) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
-44) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
-45) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
-
-Warning(s):
- 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
- 2) *Initialization*:1: warning: this is the location of the previous definition
- 3) WARNING: Unknown keyword ''.  Line 319 ignored
- 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1693 ignored
- 5) WARNING: Unknown keyword '***'.  Line 2232 ignored
- 6) WARNING: Unknown keyword '***'.  Line 2424 ignored
- 7) WARNING: Unknown keyword '***'.  Line 2847 ignored
- 8) WARNING: Unknown keyword '***'.  Line 2875 ignored
- 9) WARNING: Unknown keyword ''.  Line 319 ignored
-10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1693 ignored
-11) WARNING: Unknown keyword '***'.  Line 2232 ignored
-12) WARNING: Unknown keyword '***'.  Line 2424 ignored
-13) WARNING: Unknown keyword '***'.  Line 2847 ignored
-14) WARNING: Unknown keyword '***'.  Line 2875 ignored
-Creating ROFS2 symbol file
-+++ HiRes End 1226579142.96725
-++ Finished at Thu Nov 13 14:25:42 2008
-=== config_1 == configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_16
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_16
-++ Started at Thu Nov 13 14:25:44 2008
-+++ HiRes Start 1226579144.07662
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=rnd"  langpack_16  WORKDIR=\epoc32\rombuild\imaker_temp/conf_14
-iMaker 08.43.01, 20-Oct-2008.
-Variant target             USE_VARIANTBLD = `2'
-Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_16'
-Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_16/language_variant.mk'
-Variant include directory  VARIANT_INCDIR = -
-Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_16/variant.confml'
-Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
-Variant SIS directory      VARIANT_SISDIR = -
-Variant operator cache dir VARIANT_OPCDIR = -
-Variant zip content dir    VARIANT_ZIPDIR = -
-Variant copy content dir   VARIANT_CPDIR  = -
-Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/rnd/langpack/langpack_16/variant'
-Calling S60 Configuration Tool
-Generating file(s) for ROFS2 image creation
-Generating language files for Language Package image creation
-Creating ROFS2 SOS image
-
-Missing file(s):
- 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(42): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r02' in statement 'data='
- 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(43): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r10' in statement 'data='
- 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(44): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r18' in statement 'data='
- 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(45): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r76' in statement 'data='
- 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(46): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r83' in statement 'data='
- 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(39): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\02\appshelldata.dtd' in statement 'data='
- 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(40): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\10\appshelldata.dtd' in statement 'data='
- 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\18\appshelldata.dtd' in statement 'data='
- 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\76\appshelldata.dtd' in statement 'data='
-10) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\83\appshelldata.dtd' in statement 'data='
-11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0002' in statement 'data='
-12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(46): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0010' in statement 'data='
-13) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(47): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0018' in statement 'data='
-14) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(48): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0076' in statement 'data='
-15) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(49): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0083' in statement 'data='
-16) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0002' in statement 'data='
-17) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0010' in statement 'data='
-18) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(52): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0018' in statement 'data='
-19) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(53): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0076' in statement 'data='
-20) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(54): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0083' in statement 'data='
-21) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(65): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0002' in statement 'data='
-22) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(66): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0010' in statement 'data='
-23) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(67): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0018' in statement 'data='
-24) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(68): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0076' in statement 'data='
-25) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(69): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0083' in statement 'data='
-26) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(74): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0002' in statement 'data='
-27) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(75): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0010' in statement 'data='
-28) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(76): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0018' in statement 'data='
-29) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(77): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0076' in statement 'data='
-30) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(78): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0083' in statement 'data='
-31) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(83): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0002' in statement 'data='
-32) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(84): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0010' in statement 'data='
-33) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(85): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0018' in statement 'data='
-34) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(86): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0076' in statement 'data='
-35) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(87): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0083' in statement 'data='
-36) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(92): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0002' in statement 'data='
-37) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(93): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0010' in statement 'data='
-38) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(94): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0018' in statement 'data='
-39) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(95): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0076' in statement 'data='
-40) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(96): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0083' in statement 'data='
-
-Warning(s):
- 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
- 2) *Initialization*:1: warning: this is the location of the previous definition
- 3) WARNING: Unknown keyword ''.  Line 319 ignored
- 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1695 ignored
- 5) WARNING: Unknown keyword '***'.  Line 2234 ignored
- 6) WARNING: Unknown keyword '***'.  Line 2426 ignored
- 7) WARNING: Unknown keyword '***'.  Line 2849 ignored
- 8) WARNING: Unknown keyword '***'.  Line 2877 ignored
- 9) WARNING: Unknown keyword ''.  Line 319 ignored
-10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1695 ignored
-11) WARNING: Unknown keyword '***'.  Line 2234 ignored
-12) WARNING: Unknown keyword '***'.  Line 2426 ignored
-13) WARNING: Unknown keyword '***'.  Line 2849 ignored
-14) WARNING: Unknown keyword '***'.  Line 2877 ignored
-Creating ROFS2 symbol file
-+++ HiRes End 1226579195.70129
-++ Finished at Thu Nov 13 14:26:35 2008
-=== config_1 == configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_17
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_17
-++ Started at Thu Nov 13 14:26:36 2008
-+++ HiRes Start 1226579196.82628
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=rnd"  langpack_17  WORKDIR=\epoc32\rombuild\imaker_temp/conf_15
-iMaker 08.43.01, 20-Oct-2008.
-Variant target             USE_VARIANTBLD = `2'
-Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_17'
-Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_17/language_variant.mk'
-Variant include directory  VARIANT_INCDIR = -
-Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_17/variant.confml'
-Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
-Variant SIS directory      VARIANT_SISDIR = -
-Variant operator cache dir VARIANT_OPCDIR = -
-Variant zip content dir    VARIANT_ZIPDIR = -
-Variant copy content dir   VARIANT_CPDIR  = -
-Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/rnd/langpack/langpack_17/variant'
-Calling S60 Configuration Tool
-Generating file(s) for ROFS2 image creation
-Generating language files for Language Package image creation
-Creating ROFS2 SOS image
-
-Missing file(s):
- 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(37): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r10' in statement 'data='
- 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(38): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r51' in statement 'data='
- 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(39): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r76' in statement 'data='
- 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(40): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r83' in statement 'data='
- 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(38): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\10\appshelldata.dtd' in statement 'data='
- 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(39): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\51\appshelldata.dtd' in statement 'data='
- 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(40): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\76\appshelldata.dtd' in statement 'data='
- 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\83\appshelldata.dtd' in statement 'data='
- 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0010' in statement 'data='
-10) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(44): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0051' in statement 'data='
-11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0076' in statement 'data='
-12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(46): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0083' in statement 'data='
-13) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(47): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0010' in statement 'data='
-14) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(48): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0051' in statement 'data='
-15) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(49): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0076' in statement 'data='
-16) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0083' in statement 'data='
-17) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(60): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0010' in statement 'data='
-18) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(61): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0051' in statement 'data='
-19) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(62): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0076' in statement 'data='
-20) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(63): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0083' in statement 'data='
-21) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(68): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0010' in statement 'data='
-22) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(69): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0051' in statement 'data='
-23) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(70): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0076' in statement 'data='
-24) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(71): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0083' in statement 'data='
-25) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(76): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0010' in statement 'data='
-26) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(77): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0051' in statement 'data='
-27) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(78): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0076' in statement 'data='
-28) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(79): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0083' in statement 'data='
-29) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(84): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0010' in statement 'data='
-30) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(85): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0051' in statement 'data='
-31) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(86): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0076' in statement 'data='
-32) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(87): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0083' in statement 'data='
-
-Warning(s):
- 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
- 2) *Initialization*:1: warning: this is the location of the previous definition
- 3) WARNING: Unknown keyword ''.  Line 268 ignored
- 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1406 ignored
- 5) WARNING: Unknown keyword '***'.  Line 1854 ignored
- 6) WARNING: Unknown keyword '***'.  Line 2014 ignored
- 7) WARNING: Unknown keyword '***'.  Line 2366 ignored
- 8) WARNING: Unknown keyword '***'.  Line 2389 ignored
- 9) WARNING: Unknown keyword ''.  Line 268 ignored
-10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1406 ignored
-11) WARNING: Unknown keyword '***'.  Line 1854 ignored
-12) WARNING: Unknown keyword '***'.  Line 2014 ignored
-13) WARNING: Unknown keyword '***'.  Line 2366 ignored
-14) WARNING: Unknown keyword '***'.  Line 2389 ignored
-Creating ROFS2 symbol file
-+++ HiRes End 1226579241.326
-++ Finished at Thu Nov 13 14:27:21 2008
-=== config_1 == configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_18
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_18
-++ Started at Thu Nov 13 14:27:22 2008
-+++ HiRes Start 1226579242.26349
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=rnd"  langpack_18  WORKDIR=\epoc32\rombuild\imaker_temp/conf_16
-iMaker 08.43.01, 20-Oct-2008.
-Variant target             USE_VARIANTBLD = `2'
-Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_18'
-Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_18/language_variant.mk'
-Variant include directory  VARIANT_INCDIR = -
-Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_18/variant.confml'
-Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
-Variant SIS directory      VARIANT_SISDIR = -
-Variant operator cache dir VARIANT_OPCDIR = -
-Variant zip content dir    VARIANT_ZIPDIR = -
-Variant copy content dir   VARIANT_CPDIR  = -
-Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/rnd/langpack/langpack_18/variant'
-Calling S60 Configuration Tool
-Generating file(s) for ROFS2 image creation
-Generating language files for Language Package image creation
-Creating ROFS2 SOS image
-
-Missing file(s):
- 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(27): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
- 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(28): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r33' in statement 'data='
- 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(37): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\33\appshelldata.dtd' in statement 'data='
- 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(40): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0033' in statement 'data='
- 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0033' in statement 'data='
- 6) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
- 7) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0033' in statement 'data='
- 8) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
- 9) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0033' in statement 'data='
-10) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(62): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
-11) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(63): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0033' in statement 'data='
-12) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(68): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
-13) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(69): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0033' in statement 'data='
-14) Y:\epoc32\rom\Variant\localized_resources.iby(905): Missing file: '\epoc32\data\Z\resource\CalenThaiPluginData.r33' in statement 'data='
-15) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
-16) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
-17) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
-18) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
-19) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
-20) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
-21) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
-22) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
-
-Warning(s):
- 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
- 2) *Initialization*:1: warning: this is the location of the previous definition
- 3) WARNING: Unknown keyword ''.  Line 166 ignored
- 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 826 ignored
- 5) WARNING: Unknown keyword '***'.  Line 1092 ignored
- 6) WARNING: Unknown keyword '***'.  Line 1188 ignored
- 7) WARNING: Unknown keyword '***'.  Line 1398 ignored
- 8) WARNING: Unknown keyword '***'.  Line 1411 ignored
- 9) WARNING: Unknown keyword ''.  Line 166 ignored
-10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 826 ignored
-11) WARNING: Unknown keyword '***'.  Line 1092 ignored
-12) WARNING: Unknown keyword '***'.  Line 1188 ignored
-13) WARNING: Unknown keyword '***'.  Line 1398 ignored
-14) WARNING: Unknown keyword '***'.  Line 1411 ignored
-Creating ROFS2 symbol file
-+++ HiRes End 1226579276.81014
-++ Finished at Thu Nov 13 14:27:56 2008
-=== config_1 == configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_19
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_19
-++ Started at Thu Nov 13 14:27:57 2008
-+++ HiRes Start 1226579277.49764
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=rnd"  langpack_19  WORKDIR=\epoc32\rombuild\imaker_temp/conf_17
-iMaker 08.43.01, 20-Oct-2008.
-Variant target             USE_VARIANTBLD = `2'
-Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_19'
-Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_19/language_variant.mk'
-Variant include directory  VARIANT_INCDIR = -
-Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_19/variant.confml'
-Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
-Variant SIS directory      VARIANT_SISDIR = -
-Variant operator cache dir VARIANT_OPCDIR = -
-Variant zip content dir    VARIANT_ZIPDIR = -
-Variant copy content dir   VARIANT_CPDIR  = -
-Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/rnd/langpack/langpack_19/variant'
-Calling S60 Configuration Tool
-Generating file(s) for ROFS2 image creation
-Generating language files for Language Package image creation
-Creating ROFS2 SOS image
-
-Missing file(s):
- 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(27): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
- 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(28): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r39' in statement 'data='
- 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(37): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\39\appshelldata.dtd' in statement 'data='
- 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(40): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0039' in statement 'data='
- 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0039' in statement 'data='
- 6) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
- 7) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0039' in statement 'data='
- 8) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
- 9) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0039' in statement 'data='
-10) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(62): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
-11) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(63): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0039' in statement 'data='
-12) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(68): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
-13) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(69): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0039' in statement 'data='
-14) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
-15) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
-16) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
-17) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
-18) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
-19) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
-20) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
-21) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
-
-Warning(s):
- 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
- 2) *Initialization*:1: warning: this is the location of the previous definition
- 3) WARNING: Unknown keyword ''.  Line 166 ignored
- 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 826 ignored
- 5) WARNING: Unknown keyword '***'.  Line 1092 ignored
- 6) WARNING: Unknown keyword '***'.  Line 1188 ignored
- 7) WARNING: Unknown keyword '***'.  Line 1398 ignored
- 8) WARNING: Unknown keyword '***'.  Line 1411 ignored
- 9) WARNING: Unknown keyword ''.  Line 166 ignored
-10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 826 ignored
-11) WARNING: Unknown keyword '***'.  Line 1092 ignored
-12) WARNING: Unknown keyword '***'.  Line 1188 ignored
-13) WARNING: Unknown keyword '***'.  Line 1398 ignored
-14) WARNING: Unknown keyword '***'.  Line 1411 ignored
-Creating ROFS2 symbol file
-+++ HiRes End 1226579311.52867
-++ Finished at Thu Nov 13 14:28:31 2008
-=== config_1 == configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_20
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_20
-++ Started at Thu Nov 13 14:28:32 2008
-+++ HiRes Start 1226579312.21617
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=rnd"  langpack_20  WORKDIR=\epoc32\rombuild\imaker_temp/conf_18
-iMaker 08.43.01, 20-Oct-2008.
-Variant target             USE_VARIANTBLD = `2'
-Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_20'
-Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_20/language_variant.mk'
-Variant include directory  VARIANT_INCDIR = -
-Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_20/variant.confml'
-Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
-Variant SIS directory      VARIANT_SISDIR = -
-Variant operator cache dir VARIANT_OPCDIR = -
-Variant zip content dir    VARIANT_ZIPDIR = -
-Variant copy content dir   VARIANT_CPDIR  = -
-Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/rnd/langpack/langpack_20/variant'
-Calling S60 Configuration Tool
-Generating file(s) for ROFS2 image creation
-Generating language files for Language Package image creation
-Creating ROFS2 SOS image
-
-Missing file(s):
- 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(27): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
- 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(28): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r96' in statement 'data='
- 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(37): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\96\appshelldata.dtd' in statement 'data='
- 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(40): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0096' in statement 'data='
- 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0096' in statement 'data='
- 6) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
- 7) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0096' in statement 'data='
- 8) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
- 9) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0096' in statement 'data='
-10) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(62): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
-11) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(63): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0096' in statement 'data='
-12) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(68): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
-13) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(69): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0096' in statement 'data='
-14) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
-15) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
-16) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
-17) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
-18) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
-19) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
-20) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
-21) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
-
-Warning(s):
- 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
- 2) *Initialization*:1: warning: this is the location of the previous definition
- 3) WARNING: Unknown keyword ''.  Line 166 ignored
- 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 826 ignored
- 5) WARNING: Unknown keyword '***'.  Line 1092 ignored
- 6) WARNING: Unknown keyword '***'.  Line 1188 ignored
- 7) WARNING: Unknown keyword '***'.  Line 1398 ignored
- 8) WARNING: Unknown keyword '***'.  Line 1411 ignored
- 9) WARNING: Unknown keyword ''.  Line 166 ignored
-10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 826 ignored
-11) WARNING: Unknown keyword '***'.  Line 1092 ignored
-12) WARNING: Unknown keyword '***'.  Line 1188 ignored
-13) WARNING: Unknown keyword '***'.  Line 1398 ignored
-14) WARNING: Unknown keyword '***'.  Line 1411 ignored
-Creating ROFS2 symbol file
-+++ HiRes End 1226579346.9347
-++ Finished at Thu Nov 13 14:29:06 2008
-=== config_1 == configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_22
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_22
-++ Started at Thu Nov 13 14:29:07 2008
-+++ HiRes Start 1226579347.60657
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=rnd"  langpack_22  WORKDIR=\epoc32\rombuild\imaker_temp/conf_19
-iMaker 08.43.01, 20-Oct-2008.
-Variant target             USE_VARIANTBLD = `2'
-Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_22'
-Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_22/language_variant.mk'
-Variant include directory  VARIANT_INCDIR = -
-Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_22/variant.confml'
-Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
-Variant SIS directory      VARIANT_SISDIR = -
-Variant operator cache dir VARIANT_OPCDIR = -
-Variant zip content dir    VARIANT_ZIPDIR = -
-Variant copy content dir   VARIANT_CPDIR  = -
-Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/rnd/langpack/langpack_22/variant'
-Calling S60 Configuration Tool
-Generating file(s) for ROFS2 image creation
-Generating language files for Language Package image creation
-Creating ROFS2 SOS image
-
-Missing file(s):
- 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(37): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r159' in statement 'data='
- 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(38): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r31' in statement 'data='
- 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(39): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r326' in statement 'data='
- 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(40): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r327' in statement 'data='
- 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(38): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\159\appshelldata.dtd' in statement 'data='
- 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(39): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\31\appshelldata.dtd' in statement 'data='
- 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(40): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\326\appshelldata.dtd' in statement 'data='
- 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\327\appshelldata.dtd' in statement 'data='
- 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0159' in statement 'data='
-10) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(44): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0031' in statement 'data='
-11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0326' in statement 'data='
-12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(46): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0327' in statement 'data='
-13) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(47): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0159' in statement 'data='
-14) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(48): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0031' in statement 'data='
-15) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(49): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0326' in statement 'data='
-16) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0327' in statement 'data='
-17) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(60): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0159' in statement 'data='
-18) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(61): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0031' in statement 'data='
-19) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(62): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0326' in statement 'data='
-20) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(63): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0327' in statement 'data='
-21) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(68): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0159' in statement 'data='
-22) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(69): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0031' in statement 'data='
-23) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(70): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0326' in statement 'data='
-24) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(71): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0327' in statement 'data='
-25) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(76): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0159' in statement 'data='
-26) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(77): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0031' in statement 'data='
-27) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(78): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0326' in statement 'data='
-28) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(79): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0327' in statement 'data='
-29) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(84): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0159' in statement 'data='
-30) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(85): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0031' in statement 'data='
-31) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(86): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0326' in statement 'data='
-32) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(87): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0327' in statement 'data='
-
-Warning(s):
- 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
- 2) *Initialization*:1: warning: this is the location of the previous definition
- 3) WARNING: Unknown keyword ''.  Line 268 ignored
- 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1406 ignored
- 5) WARNING: Unknown keyword '***'.  Line 1854 ignored
- 6) WARNING: Unknown keyword '***'.  Line 2014 ignored
- 7) WARNING: Unknown keyword '***'.  Line 2366 ignored
- 8) WARNING: Unknown keyword '***'.  Line 2389 ignored
- 9) WARNING: Unknown keyword ''.  Line 268 ignored
-10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1406 ignored
-11) WARNING: Unknown keyword '***'.  Line 1854 ignored
-12) WARNING: Unknown keyword '***'.  Line 2014 ignored
-13) WARNING: Unknown keyword '***'.  Line 2366 ignored
-14) WARNING: Unknown keyword '***'.  Line 2389 ignored
-Creating ROFS2 symbol file
-+++ HiRes End 1226579392.32503
-++ Finished at Thu Nov 13 14:29:52 2008
-=== config_1 == configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_23
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_23
-++ Started at Thu Nov 13 14:29:53 2008
-+++ HiRes Start 1226579393.1219
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=rnd"  langpack_23  WORKDIR=\epoc32\rombuild\imaker_temp/conf_20
-iMaker 08.43.01, 20-Oct-2008.
-Variant target             USE_VARIANTBLD = `2'
-Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_23'
-Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_23/language_variant.mk'
-Variant include directory  VARIANT_INCDIR = -
-Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_23/variant.confml'
-Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
-Variant SIS directory      VARIANT_SISDIR = -
-Variant operator cache dir VARIANT_OPCDIR = -
-Variant zip content dir    VARIANT_ZIPDIR = -
-Variant copy content dir   VARIANT_CPDIR  = -
-Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/rnd/langpack/langpack_23/variant'
-Calling S60 Configuration Tool
-Generating file(s) for ROFS2 image creation
-Generating language files for Language Package image creation
-Creating ROFS2 SOS image
-
-Missing file(s):
- 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(32): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r158' in statement 'data='
- 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(33): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r30' in statement 'data='
- 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(34): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r31' in statement 'data='
- 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(37): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\158\appshelldata.dtd' in statement 'data='
- 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(38): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\30\appshelldata.dtd' in statement 'data='
- 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(39): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\31\appshelldata.dtd' in statement 'data='
- 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0158' in statement 'data='
- 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0030' in statement 'data='
- 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0031' in statement 'data='
-10) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(44): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0158' in statement 'data='
-11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0030' in statement 'data='
-12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(46): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0031' in statement 'data='
-13) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(55): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0158' in statement 'data='
-14) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0030' in statement 'data='
-15) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0031' in statement 'data='
-16) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(62): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0158' in statement 'data='
-17) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(63): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0030' in statement 'data='
-18) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(64): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0031' in statement 'data='
-19) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(69): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0158' in statement 'data='
-20) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(70): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0030' in statement 'data='
-21) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(71): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0031' in statement 'data='
-22) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(76): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0158' in statement 'data='
-23) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(77): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0030' in statement 'data='
-24) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(78): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0031' in statement 'data='
-
-Warning(s):
- 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
- 2) *Initialization*:1: warning: this is the location of the previous definition
- 3) WARNING: Unknown keyword ''.  Line 217 ignored
- 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1117 ignored
- 5) WARNING: Unknown keyword '***'.  Line 1474 ignored
- 6) WARNING: Unknown keyword '***'.  Line 1602 ignored
- 7) WARNING: Unknown keyword '***'.  Line 1883 ignored
- 8) WARNING: Unknown keyword '***'.  Line 1901 ignored
- 9) WARNING: Unknown keyword ''.  Line 217 ignored
-10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1117 ignored
-11) WARNING: Unknown keyword '***'.  Line 1474 ignored
-12) WARNING: Unknown keyword '***'.  Line 1602 ignored
-13) WARNING: Unknown keyword '***'.  Line 1883 ignored
-14) WARNING: Unknown keyword '***'.  Line 1901 ignored
-Creating ROFS2 symbol file
-+++ HiRes End 1226579433.99664
-++ Finished at Thu Nov 13 14:30:34 2008
-=== config_1 == configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_24
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_24
-++ Started at Thu Nov 13 14:30:34 2008
-+++ HiRes Start 1226579434.76226
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=rnd"  langpack_24  WORKDIR=\epoc32\rombuild\imaker_temp/conf_21
-iMaker 08.43.01, 20-Oct-2008.
-Variant target             USE_VARIANTBLD = `2'
-Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_24'
-Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_24/language_variant.mk'
-Variant include directory  VARIANT_INCDIR = -
-Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_24/variant.confml'
-Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
-Variant SIS directory      VARIANT_SISDIR = -
-Variant operator cache dir VARIANT_OPCDIR = -
-Variant zip content dir    VARIANT_ZIPDIR = -
-Variant copy content dir   VARIANT_CPDIR  = -
-Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/rnd/langpack/langpack_24/variant'
-Calling S60 Configuration Tool
-Generating file(s) for ROFS2 image creation
-Generating language files for Language Package image creation
-Creating ROFS2 SOS image
-
-Missing file(s):
- 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(27): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r157' in statement 'data='
- 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(28): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r29' in statement 'data='
- 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(36): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\157\appshelldata.dtd' in statement 'data='
- 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(37): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\29\appshelldata.dtd' in statement 'data='
- 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(39): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0157' in statement 'data='
- 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(40): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0029' in statement 'data='
- 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0157' in statement 'data='
- 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0029' in statement 'data='
- 9) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0157' in statement 'data='
-10) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0029' in statement 'data='
-11) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0157' in statement 'data='
-12) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0029' in statement 'data='
-13) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(62): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0157' in statement 'data='
-14) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(63): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0029' in statement 'data='
-15) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(68): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0157' in statement 'data='
-16) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(69): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0029' in statement 'data='
-
-Warning(s):
- 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
- 2) *Initialization*:1: warning: this is the location of the previous definition
- 3) WARNING: Unknown keyword ''.  Line 166 ignored
- 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 828 ignored
- 5) WARNING: Unknown keyword '***'.  Line 1094 ignored
- 6) WARNING: Unknown keyword '***'.  Line 1190 ignored
- 7) WARNING: Unknown keyword '***'.  Line 1400 ignored
- 8) WARNING: Unknown keyword '***'.  Line 1413 ignored
- 9) WARNING: Unknown keyword ''.  Line 166 ignored
-10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 828 ignored
-11) WARNING: Unknown keyword '***'.  Line 1094 ignored
-12) WARNING: Unknown keyword '***'.  Line 1190 ignored
-13) WARNING: Unknown keyword '***'.  Line 1400 ignored
-14) WARNING: Unknown keyword '***'.  Line 1413 ignored
-Creating ROFS2 symbol file
-+++ HiRes End 1226579469.90266
-++ Finished at Thu Nov 13 14:31:09 2008
-=== config_1 == configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_25
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_25
-++ Started at Thu Nov 13 14:31:10 2008
-+++ HiRes Start 1226579470.6214
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=rnd"  langpack_25  WORKDIR=\epoc32\rombuild\imaker_temp/conf_22
-iMaker 08.43.01, 20-Oct-2008.
-Variant target             USE_VARIANTBLD = `2'
-Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_25'
-Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_25/language_variant.mk'
-Variant include directory  VARIANT_INCDIR = -
-Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_25/variant.confml'
-Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
-Variant SIS directory      VARIANT_SISDIR = -
-Variant operator cache dir VARIANT_OPCDIR = -
-Variant zip content dir    VARIANT_ZIPDIR = -
-Variant copy content dir   VARIANT_CPDIR  = -
-Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/rnd/langpack/langpack_25/variant'
-Calling S60 Configuration Tool
-Generating file(s) for ROFS2 image creation
-Generating language files for Language Package image creation
-Creating ROFS2 SOS image
-
-Missing file(s):
- 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(27): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r159' in statement 'data='
- 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(28): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r31' in statement 'data='
- 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(36): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\159\appshelldata.dtd' in statement 'data='
- 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(37): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\31\appshelldata.dtd' in statement 'data='
- 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(39): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0159' in statement 'data='
- 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(40): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0031' in statement 'data='
- 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0159' in statement 'data='
- 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0031' in statement 'data='
- 9) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0159' in statement 'data='
-10) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0031' in statement 'data='
-11) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0159' in statement 'data='
-12) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0031' in statement 'data='
-13) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(62): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0159' in statement 'data='
-14) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(63): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0031' in statement 'data='
-15) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(68): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0159' in statement 'data='
-16) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(69): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0031' in statement 'data='
-
-Warning(s):
- 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
- 2) *Initialization*:1: warning: this is the location of the previous definition
- 3) WARNING: Unknown keyword ''.  Line 166 ignored
- 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 828 ignored
- 5) WARNING: Unknown keyword '***'.  Line 1094 ignored
- 6) WARNING: Unknown keyword '***'.  Line 1190 ignored
- 7) WARNING: Unknown keyword '***'.  Line 1400 ignored
- 8) WARNING: Unknown keyword '***'.  Line 1413 ignored
- 9) WARNING: Unknown keyword ''.  Line 166 ignored
-10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 828 ignored
-11) WARNING: Unknown keyword '***'.  Line 1094 ignored
-12) WARNING: Unknown keyword '***'.  Line 1190 ignored
-13) WARNING: Unknown keyword '***'.  Line 1400 ignored
-14) WARNING: Unknown keyword '***'.  Line 1413 ignored
-Creating ROFS2 symbol file
-+++ HiRes End 1226579500.90246
-++ Finished at Thu Nov 13 14:31:40 2008
-=== config_1 == configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_27
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_27
-++ Started at Thu Nov 13 14:31:41 2008
-+++ HiRes Start 1226579501.68371
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=rnd"  langpack_27  WORKDIR=\epoc32\rombuild\imaker_temp/conf_23
-iMaker 08.43.01, 20-Oct-2008.
-Variant target             USE_VARIANTBLD = `2'
-Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_27'
-Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_27/language_variant.mk'
-Variant include directory  VARIANT_INCDIR = -
-Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_27/variant.confml'
-Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
-Variant SIS directory      VARIANT_SISDIR = -
-Variant operator cache dir VARIANT_OPCDIR = -
-Variant zip content dir    VARIANT_ZIPDIR = -
-Variant copy content dir   VARIANT_CPDIR  = -
-Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/rnd/langpack/langpack_27/variant'
-Calling S60 Configuration Tool
-Generating file(s) for ROFS2 image creation
-Generating language files for Language Package image creation
-Creating ROFS2 SOS image
-
-Missing file(s):
- 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(27): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r160' in statement 'data='
- 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(28): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r32' in statement 'data='
- 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(36): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\160\appshelldata.dtd' in statement 'data='
- 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(37): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\32\appshelldata.dtd' in statement 'data='
- 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(39): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0160' in statement 'data='
- 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(40): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0032' in statement 'data='
- 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0160' in statement 'data='
- 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0032' in statement 'data='
- 9) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0160' in statement 'data='
-10) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0032' in statement 'data='
-11) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0160' in statement 'data='
-12) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0032' in statement 'data='
-13) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(62): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0160' in statement 'data='
-14) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(63): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0032' in statement 'data='
-15) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(68): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0160' in statement 'data='
-16) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(69): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0032' in statement 'data='
-
-Warning(s):
- 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
- 2) *Initialization*:1: warning: this is the location of the previous definition
- 3) WARNING: Unknown keyword ''.  Line 166 ignored
- 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 828 ignored
- 5) WARNING: Unknown keyword '***'.  Line 1094 ignored
- 6) WARNING: Unknown keyword '***'.  Line 1190 ignored
- 7) WARNING: Unknown keyword '***'.  Line 1400 ignored
- 8) WARNING: Unknown keyword '***'.  Line 1413 ignored
- 9) WARNING: Unknown keyword ''.  Line 166 ignored
-10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 828 ignored
-11) WARNING: Unknown keyword '***'.  Line 1094 ignored
-12) WARNING: Unknown keyword '***'.  Line 1190 ignored
-13) WARNING: Unknown keyword '***'.  Line 1400 ignored
-14) WARNING: Unknown keyword '***'.  Line 1413 ignored
-Creating ROFS2 symbol file
-+++ HiRes End 1226579536.43348
-++ Finished at Thu Nov 13 14:32:16 2008
-=== config_1 == signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_core
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... core
-++ Started at Thu Nov 13 14:32:17 2008
-+++ HiRes Start 1226579537.7145
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=rnd"  core  WORKDIR=\epoc32\rombuild\imaker_temp/conf_0
-iMaker 08.43.01, 20-Oct-2008.
-Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
-Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
-*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
-make: [signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_core] Error 1 (ignored)
-+++ HiRes End 1226579538.46442
-++ Finished at Thu Nov 13 14:32:18 2008
-=== config_1 == signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_01
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_01
-++ Started at Thu Nov 13 14:32:18 2008
-+++ HiRes Start 1226579538.57378
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=rnd"  langpack_01  WORKDIR=\epoc32\rombuild\imaker_temp/conf_1
-iMaker 08.43.01, 20-Oct-2008.
-Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
-Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
-*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
-make: [signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_01] Error 1 (ignored)
-+++ HiRes End 1226579538.74563
-++ Finished at Thu Nov 13 14:32:18 2008
-=== config_1 == signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_02
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_02
-++ Started at Thu Nov 13 14:32:18 2008
-+++ HiRes Start 1226579538.83937
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=rnd"  langpack_02  WORKDIR=\epoc32\rombuild\imaker_temp/conf_2
-iMaker 08.43.01, 20-Oct-2008.
-Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
-Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
-*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
-make: [signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_02] Error 1 (ignored)
-+++ HiRes End 1226579538.99561
-++ Finished at Thu Nov 13 14:32:19 2008
-=== config_1 == signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_03
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_03
-++ Started at Thu Nov 13 14:32:19 2008
-+++ HiRes Start 1226579539.08935
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=rnd"  langpack_03  WORKDIR=\epoc32\rombuild\imaker_temp/conf_3
-iMaker 08.43.01, 20-Oct-2008.
-Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
-Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
-*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
-make: [signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_03] Error 1 (ignored)
-+++ HiRes End 1226579539.24558
-++ Finished at Thu Nov 13 14:32:19 2008
-=== config_1 == signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_04
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_04
-++ Started at Thu Nov 13 14:32:19 2008
-+++ HiRes Start 1226579539.33932
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=rnd"  langpack_04  WORKDIR=\epoc32\rombuild\imaker_temp/conf_4
-iMaker 08.43.01, 20-Oct-2008.
-Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
-Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
-*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
-make: [signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_04] Error 1 (ignored)
-+++ HiRes End 1226579539.49555
-++ Finished at Thu Nov 13 14:32:19 2008
-=== config_1 == signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_05
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_05
-++ Started at Thu Nov 13 14:32:19 2008
-+++ HiRes Start 1226579539.58929
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=rnd"  langpack_05  WORKDIR=\epoc32\rombuild\imaker_temp/conf_5
-iMaker 08.43.01, 20-Oct-2008.
-Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
-Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
-*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
-make: [signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_05] Error 1 (ignored)
-+++ HiRes End 1226579539.74553
-++ Finished at Thu Nov 13 14:32:19 2008
-=== config_1 == signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_06
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_06
-++ Started at Thu Nov 13 14:32:19 2008
-+++ HiRes Start 1226579539.83927
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=rnd"  langpack_06  WORKDIR=\epoc32\rombuild\imaker_temp/conf_6
-iMaker 08.43.01, 20-Oct-2008.
-Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
-Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
-*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
-make: [signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_06] Error 1 (ignored)
-+++ HiRes End 1226579540.01112
-++ Finished at Thu Nov 13 14:32:20 2008
-=== config_1 == signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_07
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_07
-++ Started at Thu Nov 13 14:32:20 2008
-+++ HiRes Start 1226579540.10486
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=rnd"  langpack_07  WORKDIR=\epoc32\rombuild\imaker_temp/conf_7
-iMaker 08.43.01, 20-Oct-2008.
-Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
-Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
-*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
-make: [signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_07] Error 1 (ignored)
-+++ HiRes End 1226579540.26109
-++ Finished at Thu Nov 13 14:32:20 2008
-=== config_1 == signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_08
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_08
-++ Started at Thu Nov 13 14:32:20 2008
-+++ HiRes Start 1226579540.35483
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=rnd"  langpack_08  WORKDIR=\epoc32\rombuild\imaker_temp/conf_8
-iMaker 08.43.01, 20-Oct-2008.
-Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
-Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
-*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
-make: [signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_08] Error 1 (ignored)
-+++ HiRes End 1226579540.51107
-++ Finished at Thu Nov 13 14:32:20 2008
-=== config_1 == signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_09
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_09
-++ Started at Thu Nov 13 14:32:20 2008
-+++ HiRes Start 1226579540.60481
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=rnd"  langpack_09  WORKDIR=\epoc32\rombuild\imaker_temp/conf_9
-iMaker 08.43.01, 20-Oct-2008.
-Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
-Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
-*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
-make: [signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_09] Error 1 (ignored)
-+++ HiRes End 1226579540.77666
-++ Finished at Thu Nov 13 14:32:20 2008
-=== config_1 == signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_11
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_11
-++ Started at Thu Nov 13 14:32:20 2008
-+++ HiRes Start 1226579540.8704
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=rnd"  langpack_11  WORKDIR=\epoc32\rombuild\imaker_temp/conf_10
-iMaker 08.43.01, 20-Oct-2008.
-Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
-Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
-*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
-make: [signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_11] Error 1 (ignored)
-+++ HiRes End 1226579541.02664
-++ Finished at Thu Nov 13 14:32:21 2008
-=== config_1 == signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_12
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_12
-++ Started at Thu Nov 13 14:32:21 2008
-+++ HiRes Start 1226579541.12038
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=rnd"  langpack_12  WORKDIR=\epoc32\rombuild\imaker_temp/conf_11
-iMaker 08.43.01, 20-Oct-2008.
-Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
-Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
-*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
-make: [signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_12] Error 1 (ignored)
-+++ HiRes End 1226579541.29223
-++ Finished at Thu Nov 13 14:32:21 2008
-=== config_1 == signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_13
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_13
-++ Started at Thu Nov 13 14:32:21 2008
-+++ HiRes Start 1226579541.38597
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=rnd"  langpack_13  WORKDIR=\epoc32\rombuild\imaker_temp/conf_12
-iMaker 08.43.01, 20-Oct-2008.
-Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
-Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
-*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
-make: [signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_13] Error 1 (ignored)
-+++ HiRes End 1226579541.54221
-++ Finished at Thu Nov 13 14:32:21 2008
-=== config_1 == signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_14
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_14
-++ Started at Thu Nov 13 14:32:21 2008
-+++ HiRes Start 1226579541.63595
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=rnd"  langpack_14  WORKDIR=\epoc32\rombuild\imaker_temp/conf_13
-iMaker 08.43.01, 20-Oct-2008.
-Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
-Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
-*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
-make: [signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_14] Error 1 (ignored)
-+++ HiRes End 1226579541.8078
-++ Finished at Thu Nov 13 14:32:21 2008
-=== config_1 == signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_16
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_16
-++ Started at Thu Nov 13 14:32:21 2008
-+++ HiRes Start 1226579541.90154
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=rnd"  langpack_16  WORKDIR=\epoc32\rombuild\imaker_temp/conf_14
-iMaker 08.43.01, 20-Oct-2008.
-Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
-Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
-*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
-make: [signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_16] Error 1 (ignored)
-+++ HiRes End 1226579542.05777
-++ Finished at Thu Nov 13 14:32:22 2008
-=== config_1 == signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_17
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_17
-++ Started at Thu Nov 13 14:32:22 2008
-+++ HiRes Start 1226579542.15151
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=rnd"  langpack_17  WORKDIR=\epoc32\rombuild\imaker_temp/conf_15
-iMaker 08.43.01, 20-Oct-2008.
-Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
-Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
-*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
-make: [signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_17] Error 1 (ignored)
-+++ HiRes End 1226579542.32337
-++ Finished at Thu Nov 13 14:32:22 2008
-=== config_1 == signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_18
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_18
-++ Started at Thu Nov 13 14:32:22 2008
-+++ HiRes Start 1226579542.41711
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=rnd"  langpack_18  WORKDIR=\epoc32\rombuild\imaker_temp/conf_16
-iMaker 08.43.01, 20-Oct-2008.
-Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
-Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
-*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
-make: [signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_18] Error 1 (ignored)
-+++ HiRes End 1226579542.57334
-++ Finished at Thu Nov 13 14:32:22 2008
-=== config_1 == signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_19
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_19
-++ Started at Thu Nov 13 14:32:22 2008
-+++ HiRes Start 1226579542.66708
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=rnd"  langpack_19  WORKDIR=\epoc32\rombuild\imaker_temp/conf_17
-iMaker 08.43.01, 20-Oct-2008.
-Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
-Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
-*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
-make: [signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_19] Error 1 (ignored)
-+++ HiRes End 1226579542.83894
-++ Finished at Thu Nov 13 14:32:22 2008
-=== config_1 == signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_20
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_20
-++ Started at Thu Nov 13 14:32:22 2008
-+++ HiRes Start 1226579542.93268
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=rnd"  langpack_20  WORKDIR=\epoc32\rombuild\imaker_temp/conf_18
-iMaker 08.43.01, 20-Oct-2008.
-Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
-Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
-*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
-make: [signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_20] Error 1 (ignored)
-+++ HiRes End 1226579543.08891
-++ Finished at Thu Nov 13 14:32:23 2008
-=== config_1 == signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_22
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_22
-++ Started at Thu Nov 13 14:32:23 2008
-+++ HiRes Start 1226579543.18265
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=rnd"  langpack_22  WORKDIR=\epoc32\rombuild\imaker_temp/conf_19
-iMaker 08.43.01, 20-Oct-2008.
-Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
-Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
-*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
-make: [signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_22] Error 1 (ignored)
-+++ HiRes End 1226579543.35451
-++ Finished at Thu Nov 13 14:32:23 2008
-=== config_1 == signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_23
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_23
-++ Started at Thu Nov 13 14:32:23 2008
-+++ HiRes Start 1226579543.44825
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=rnd"  langpack_23  WORKDIR=\epoc32\rombuild\imaker_temp/conf_20
-iMaker 08.43.01, 20-Oct-2008.
-Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
-Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
-*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
-make: [signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_23] Error 1 (ignored)
-+++ HiRes End 1226579543.60448
-++ Finished at Thu Nov 13 14:32:23 2008
-=== config_1 == signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_24
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_24
-++ Started at Thu Nov 13 14:32:23 2008
-+++ HiRes Start 1226579543.69822
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=rnd"  langpack_24  WORKDIR=\epoc32\rombuild\imaker_temp/conf_21
-iMaker 08.43.01, 20-Oct-2008.
-Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
-Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
-*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
-make: [signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_24] Error 1 (ignored)
-+++ HiRes End 1226579543.87008
-++ Finished at Thu Nov 13 14:32:23 2008
-=== config_1 == signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_25
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_25
-++ Started at Thu Nov 13 14:32:23 2008
-+++ HiRes Start 1226579543.94819
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=rnd"  langpack_25  WORKDIR=\epoc32\rombuild\imaker_temp/conf_22
-iMaker 08.43.01, 20-Oct-2008.
-Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
-Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
-*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
-make: [signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_25] Error 1 (ignored)
-+++ HiRes End 1226579544.12005
-++ Finished at Thu Nov 13 14:32:24 2008
-=== config_1 == signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_27
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_27
-++ Started at Thu Nov 13 14:32:24 2008
-+++ HiRes Start 1226579544.21379
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=rnd"  langpack_27  WORKDIR=\epoc32\rombuild\imaker_temp/conf_23
-iMaker 08.43.01, 20-Oct-2008.
-Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
-Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
-*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
-make: [signing_configuration1_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_27] Error 1 (ignored)
-+++ HiRes End 1226579544.37002
-++ Finished at Thu Nov 13 14:32:24 2008
-=== config_2 == configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_core
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... core
-++ Started at Thu Nov 13 14:32:24 2008
-+++ HiRes Start 1226579545.07405
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=subcon"  core  WORKDIR=\epoc32\rombuild\imaker_temp/conf_24
-iMaker 08.43.01, 20-Oct-2008.
-Generating file(s) for Core image creation
-Creating Core (ROM & ROFS1) SOS image
-
-Y:\output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon>rem @echo off 
-
-Y:\output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon>setlocal
-
-Y:\output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon>perl -S buildrom.pl -loglevel1 -v -nosymbols -DFEATUREVARIANT=devlon52 -D_IMAGE_TYPE_SUBCON -D_EABI=ARMV5 -D_ASIC_VER_11 -DUSE_MULTIROFS -DDEVLON52 -es60ibymacros -DSECTION -DRND_CONTENT -cbytepair -oRX-47_200846_subcon.img y:\output/release_flash_images/devlon52/subcon/core/RX-47_200846_subcon/RX-47_200846_subcon_core_master.oby 
-* cpp -o tmp1.oby -nostdinc -undef -DFEATUREVARIANT=devlon52 -D_IMAGE_TYPE_SUBCON -D_EABI=ARMV5 -D_ASIC_VER_11 -DUSE_MULTIROFS -DDEVLON52 -DSECTION -DRND_CONTENT -I. -I "Y:\epoc32\rom\config\platform\devlon52" -I "Y:\epoc32\include\config\platform\devlon52" -I "Y:\epoc32\rom\config\platform" -I "Y:\epoc32\include\config\platform" -I "Y:\epoc32\rom\config" -I "Y:\epoc32\include\config" -I "Y:\epoc32\rom" -I "Y:\epoc32\rom\include" -I "Y:\epoc32\include\oem" -include "Y:\epoc32\include\oem\feature_settings.hrh"
-In file included from Y:\epoc32\include\config\platform\adaptation_features.hrh:25,
-                 from Y:\epoc32\include\oem\feature_settings.hrh:43,
-                 from :1:
-Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
-*Initialization*:1: warning: this is the location of the previous definition
-In file included from Y:\epoc32\rom\config\platform\ncp_components.iby:124,
-                 from Y:\epoc32\rom\config\platform\Variant\BasePorting.iby:26,
-                 from ../../../../../../epoc32/rom/master.oby:34,
-                 from y:output/release_flash_images/devlon52/subcon/core/RX-47_200846_subcon/RX-47_200846_subcon_core_master.oby:50:
-Y:\epoc32\rom\include\H4PlusHci.iby:4: warning: `#ifndef' argument starts with punctuation
-* reading y:\output/release_flash_images/devlon52/subcon/core/RX-47_200846_subcon/RX-47_200846_subcon_core_master.oby
-override.pm: Initializing; logfile =`y:\output/release_flash_images/devlon52/subcon/core/RX-47_200846_subcon/RX-47_200846_subcon_core_bldromplugin.log', debug = 0
-configpaging.pm: Initializing with configpaging_nokia.cfg
-Using export-restricted strong crytography implementation
-ROM_IMAGE[1] rofs1 size=0x10000000 xip=0 compress=0 extension=0 composite=none uncompress=0 
-* Writing tmp2.oby - result of substitution phase
-* Writing tmp3.oby - result of reorganisation phase
-* Writing tmp4.oby - result of Plugin stage
-* No language codes specified, defaulting to 01
-Converting >\epoc32\data\Z\Resource\Charconv\BUILTIN.R01< to RSC
-Converting >\epoc32\data\Z\Resource\swtlstokentype.R01< to RSC
-Converting >\epoc32\data\Z\Resource\TlsCacheServer\TlsCacheTimeouts.R01< to RSC
-Converting >\epoc32\data\Z\Resource\logeng\logwrap.R01< to RSC
-Converting >\epoc32\data\Z\Resource\Charconv\ISO88592.R01< to RSC
-Converting >\epoc32\data\Z\Resource\Charconv\ISO88593.R01< to RSC
-Converting >\epoc32\data\Z\Resource\Charconv\ISO88594.R01< to RSC
-Converting >\epoc32\data\Z\Resource\Charconv\ISO88595.R01< to RSC
-Converting >\epoc32\data\Z\Resource\Charconv\ISO88596.R01< to RSC
-Converting >\epoc32\data\Z\Resource\Charconv\ISO88597.R01< to RSC
-Converting >\epoc32\data\Z\Resource\Charconv\ISO88598.R01< to RSC
-Converting >\epoc32\data\Z\Resource\Charconv\ISO88599.R01< to RSC
-Converting >\epoc32\data\Z\Resource\Charconv\ISO885910.R01< to RSC
-Converting >\epoc32\data\Z\Resource\Charconv\ISO885913.R01< to RSC
-Converting >\epoc32\data\Z\Resource\Charconv\ISO885914.R01< to RSC
-Converting >\epoc32\data\Z\Resource\Charconv\ISO885915.R01< to RSC
-Converting >\epoc32\data\Z\Resource\Charconv\CP850.R01< to RSC
-Converting >\epoc32\data\Z\Resource\Charconv\UCS2.R01< to RSC
-Converting >\epoc32\data\Z\Resource\APPS\ApfMimeContentPolicy.R01< to RSC
-Converting >\epoc32\data\Z\resource\messaging\smss.R01< to RSC
-Converting >\epoc32\data\Z\resource\messaging\wappstr.R01< to RSC
-Converting >\epoc32\data\Z\RESOURCE\messaging\wappushunknown.R01< to RSC
-Converting >\epoc32\data\Z\Resource\fstokenserver.R01< to RSC
-Converting >\epoc32\data\Z\resource\defaultbeep.R01< to RSC
-Converting >\epoc32\data\Z\Resource\JavaHelper\JavaHelper.R01< to RSC
-Converting >\epoc32\data\Z\resource\Apps\trkapplication.R01< to RSC
-Converting >\epoc32\data\Z\resource\Apps\trkapplication_loc.R01< to RSC
-Converting >\epoc32\data\Z\private\10003a3f\Apps\trkapplication_reg.R01< to RSC
-Converting >\epoc32\data\Z\resource\Apps\trkapplication.M01< to MIF
-* Writing tmp5.oby - result of choosing language-specific files
-* Invalid image file name: \epoc32\data\Z\resource\apps\VideoEditorBitmaps.mbm or .mif
-Created ecom-0-0.spi
-Created ecom-0-1.s01
-* Writing tmp6.oby - result of SPI stage
-override.pm: ------------------------------------------------------------------
-Handling overrides...
-Replace ROM_IMAGE[0] `file=\epoc32\release\ARMV5\urel\FeatMgr.DLL		sys\bin\FEATMGR.DLL' with `file=\epoc32\release\ARMV5\urel\FeatMgr.Devlon52.DLL  sys\bin\FEATMGR.DLL'
-Replace ROM_IMAGE[0] `data=\epoc32\release\ARMV5\urel\R1_Mobile_4_0_Platform.cfg   resource\R1_Mobile_4_0_Platform.cfg' with `data=\epoc32\release\ARMV5\urel\R1_Mobile_4_0_Platform_ppd.cfg  resource\R1_Mobile_4_0_Platform.cfg'
-Replace ROM_IMAGE[0] `data=\Epoc32\Data\WSINI.ini                 System\Data\Wsini.ini' with `data=\Epoc32\Data\WSINI_devlon52.ini  System\Data\Wsini.ini'
-Replace ROM_IMAGE[0] `data=\epoc32\data\Z\Resource\versions\sw.txt		resource\versions\sw.txt' with `data=\epoc32\data\Z\Resource\versions\sw_devlon52.txt  resource\versions\sw.txt'
-Replace ROM_IMAGE[0] `data=\epoc32\data\Z\resource\Starter_Arm.rsc                resource\Starter_Arm.rsc' with `data=\epoc32\data\Z\resource\Starter_Arm_Devlon52_wop_wopc_wat_ww_wss.rsc  resource\Starter_Arm.rsc'
-Replace ROM_IMAGE[0] `data=\epoc32\data\Z\resource\starter_non_critical_1_arm.rsc resource\starter_non_critical_1.rsc' with `data=\epoc32\data\Z\resource\Starter_non_critical_1_arm_Devlon52_wop_wopc_wat_ww_wss.rsc  resource\starter_non_critical_1.rsc'
-Replace ROM_IMAGE[0] `data=\epoc32\data\Z\Resource\versions\sw_devlon52.txt  resource\versions\sw.txt' with `data=y:\output/release_flash_images/devlon52/subcon/core/RX-47_200846_subcon/RX-47_200846_subcon_core_sw.txt  resource\versions\sw.txt'
-Replace ROM_IMAGE[0] `data=\epoc32\data\Z\Resource\versions\model.txt	resource\versions\model.txt' with `data=y:\output/release_flash_images/devlon52/subcon/core/RX-47_200846_subcon/RX-47_200846_subcon_core_model.txt  resource\versions\model.txt'
-Replace ROM_IMAGE[0] `data=\epoc32\data\Z\Resource\versions\imeisv.txt	resource\versions\imeisv.txt' with `data=y:\output/release_flash_images/devlon52/subcon/core/RX-47_200846_subcon/RX-47_200846_subcon_core_imeisv.txt  resource\versions\imeisv.txt'
-Add ROM_IMAGE[0] `data=y:\output/release_flash_images/devlon52/subcon/core/RX-47_200846_subcon/RX-47_200846_subcon_core_platform.txt  resource\versions\platform.txt' from `data-override=y:\output/release_flash_images/devlon52/subcon/core/RX-47_200846_subcon/RX-47_200846_subcon_core_platform.txt  resource\versions\platform.txt'
-Add ROM_IMAGE[0] `data=y:\output/release_flash_images/devlon52/subcon/core/RX-47_200846_subcon/RX-47_200846_subcon_core_product.txt  resource\versions\product.txt' from `data-override=y:\output/release_flash_images/devlon52/subcon/core/RX-47_200846_subcon/RX-47_200846_subcon_core_product.txt  resource\versions\product.txt'
-Add ROM_IMAGE[0] `data=y:\output/release_flash_images/devlon52/subcon/core/RX-47_200846_subcon/RX-47_200846_subcon_core_fwid.txt  resource\versions\fwid1.txt' from `data-override=y:\output/release_flash_images/devlon52/subcon/core/RX-47_200846_subcon/RX-47_200846_subcon_core_fwid.txt  resource\versions\fwid1.txt'
-Replace ROM_IMAGE[0] `data=\epoc32\data\ost_dictionaries.zip                                             \Data\ost_dictionaries.zip' with `data=y:\output/release_flash_images/devlon52/subcon/core/RX-47_200846_subcon/ost_dictionaries.zip  \Data\ost_dictionaries.zip'
-override.pm: Duration: 1 seconds ----------------------------------------------
-obyparse.pm: Reading /epoc32/rombuild/odpcoderomfiles.txt
-obyparse.pm: Reading /epoc32/rombuild/odp_code_romfiles.txt
-obyparse.pm: Reading /epoc32/rombuild/odpcoderofsfiles.txt
-obyparse.pm: Reading /epoc32/rombuild/IAD_rofsfiles.txt
-obyparse.pm: Reading /epoc32/rombuild/mytraces.txt
-obyparse.pm: Processing...
-obyparse.pm: Duration: 0 seconds
-configpaging.pm: Modifying demand paging configuration using \epoc32\rom\configpaging\configpaging_nokia.cfg
-Y:\epoc32\rom\include\lightsacoreservices.iby(72): Missing file: '\epoc32\release\ARMV5\urel\LightSAIscService.DLL' in statement 'file='
-Y:\epoc32\rom\include\lightadaptation.iby(110): Missing file: '\epoc32\release\ARMV5\urel\light_sensor_adaptation.DLL' in statement 'file='
-..\..\..\..\..\..\epoc32\rom\include\core\app\IpVideo.iby(112): Missing file: '\epoc32\release\ARMV5\urel\vcxnsappui_test.exe' in statement 'file='
-..\..\..\..\..\..\epoc32\rom\include\core\app\IpVideo.iby(392): Missing file: '\epoc32\release\ARMV5\urel\VcXNotifierPlugin.DLL' in statement 'file='
-..\..\..\..\..\..\epoc32\rom\include\core\mw\advancedtspcontroller.iby(48): Missing file: '\epoc32\release\ARMV5\urel\AdvancedTspController.dll' in statement 'file='
-Y:\epoc32\rom\include\declarativeui.iby(9): Missing file: '\epoc32\release\ARMV5\urel\duiengine.dll' in statement 'file='
-Y:\epoc32\rom\include\declarativeui.iby(11): Missing file: '\epoc32\release\ARMV5\urel\duiinterpreter.dll' in statement 'file='
-Y:\epoc32\rom\include\widgetmodel.iby(9): Missing file: '\epoc32\release\ARMV5\urel\alfwidgetmodel.dll' in statement 'file='
-..\..\..\..\..\..\epoc32\rom\include\core\mw\alfwidgets.iby(19): Missing file: '\epoc32\release\ARMV5\urel\alfcontainerwidget.dll' in statement 'file='
-..\..\..\..\..\..\epoc32\rom\include\core\mw\alfwidgets.iby(23): Missing file: '\epoc32\release\ARMV5\urel\alfviewwidget.dll' in statement 'file='
-Y:\epoc32\rom\include\j9midpS60.iby(233): Missing file: '\epoc32\release\ARMV5\urel\j9_23_sip.dll' in statement 'file='
-..\..\..\..\..\..\epoc32\rom\include\core\mw\midp20.iby(224): Missing file: '\epoc32\release\ARMV5\urel\MIDP2RECOGNIZER.dll' in statement 'file='
-..\..\..\..\..\..\epoc32\rom\include\core\mw\mulcoverflowwidget.iby(46): Missing file: '\epoc32\release\ARMV5\urel\mulcoverflowwidget.dll' in statement 'file='
-..\..\..\..\..\..\epoc32\rom\include\core\mw\mullistwidget.iby(46): Missing file: '\epoc32\release\ARMV5\urel\mullistwidget.dll' in statement 'file='
-..\..\..\..\..\..\epoc32\rom\include\core\mw\mulutility.iby(46): Missing file: '\epoc32\release\armv5\urel\mulutility.dll' in statement 'file='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(250): Missing file: '\epoc32\data\Z\resource\ActivePalette2Bitmaps.mbm' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(251): Missing file: '\epoc32\data\Z\resource\activepalette2genericicons.mif' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(294): Missing file: '\epoc32\data\Z\system\sounds\audiothemes\public\Orchestral fold open.aac' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(295): Missing file: '\epoc32\data\Z\system\sounds\audiothemes\public\Orchestral fold close.aac' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(335): Missing file: '\epoc32\data\Z\Private\101f85a0\acccircle.png' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(336): Missing file: '\epoc32\data\Z\Private\101f85a0\bigtrip.png' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(337): Missing file: '\epoc32\data\Z\Private\101f85a0\compass.png' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(338): Missing file: '\epoc32\data\Z\Private\101f85a0\flag.png' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(339): Missing file: '\epoc32\data\Z\Private\101f85a0\flagwave.gif' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(340): Missing file: '\epoc32\data\Z\Private\101f85a0\globe.gif' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(341): Missing file: '\epoc32\data\Z\Private\101f85a0\north.png' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(342): Missing file: '\epoc32\data\Z\Private\101f85a0\pointer.png' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(343): Missing file: '\epoc32\data\Z\Private\101f85a0\satellite.png' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(344): Missing file: '\epoc32\data\Z\Private\101f85a0\signal_01.png' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(345): Missing file: '\epoc32\data\Z\Private\101f85a0\signal_02.png' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(346): Missing file: '\epoc32\data\Z\Private\101f85a0\signal_03.png' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(347): Missing file: '\epoc32\data\Z\Private\101f85a0\signal_04.png' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(348): Missing file: '\epoc32\data\Z\Private\101f85a0\signal_05.png' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(349): Missing file: '\epoc32\data\Z\Private\101f85a0\spwatch.png' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(350): Missing file: '\epoc32\data\Z\Private\101f85a0\table.png' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(351): Missing file: '\epoc32\data\Z\Private\101f85a0\time.png' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(352): Missing file: '\epoc32\data\Z\Private\101f85a0\navigation_ring.png' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(353): Missing file: '\epoc32\data\Z\Private\101f85a0\signal_bar_01.png' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(354): Missing file: '\epoc32\data\Z\Private\101f85a0\signal_bar_02.png' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(355): Missing file: '\epoc32\data\Z\Private\101f85a0\signal_bar_03.png' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(356): Missing file: '\epoc32\data\Z\Private\101f85a0\signal_bar_04.png' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(357): Missing file: '\epoc32\data\Z\Private\101f85a0\signal_bar_05.png' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(358): Missing file: '\epoc32\data\Z\Private\101f85a0\blid_searching.gif' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(359): Missing file: '\epoc32\data\Z\Private\101f85a0\blid_searching_small.gif' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(360): Missing file: '\epoc32\data\Z\Private\101f85a0\blid_startup.gif' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(361): Missing file: '\epoc32\data\Z\Private\101f85a0\blid_unavail.png' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(384): Missing file: '\epoc32\data\Z\resource\apps\calendefaulteditors.mif' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(401): Missing file: '\epoc32\data\Z\Private\2001B29B\backup_registration.xml' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(456): Missing file: '\epoc32\data\Z\app_resource_dir\glxmetadataview.rsc' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(593): Missing file: '\epoc32\data\Z\private\10003a3f\apps\vcxnsappui_test_reg.RSC' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(594): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test_icon.mif' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(605): Missing file: '\epoc32\data\z\resource\videostorageschema.mde' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(959): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0000' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(960): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\sources\qsn_fr_popup_sub_mask_icon.svg' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(961): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0000' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(962): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\sources\idle_toolbaricons.mif' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(963): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0000' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(964): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0000' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(965): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\sources\idle_toolbaricons.mif' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(966): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\sources\fmradioclassicidle.mif' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1005): Missing file: '\epoc32\data\z\resource\hc_list_itemtypes.xml' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1006): Missing file: '\epoc32\data\z\resource\lctgridimagetext.xml' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1007): Missing file: '\epoc32\data\z\resource\lctgridimage.xml.xml' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1008): Missing file: '\epoc32\data\z\resource\lctgridtext.xml' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1059): Missing file: '\epoc32\data\z\system\install\callprovider_stub.SIS' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1153): Missing file: '\epoc32\release\ARMV5\urel\Z\Resource\ive\lib\jclcldc11\ext\0_j9_23_sip_jxe.odc' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1310): Missing file: '\epoc32\data\Z\Resource\JavaHelper\javahelper.mif' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1340): Missing file: '\epoc32\data\Z\Private\10202BE9\20010976.txt' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1372): Missing file: '\epoc32\data\z\resource\coverflow\logical_template_1.xml' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1373): Missing file: '\epoc32\data\z\resource\coverflow\logical_template_2.xml' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1374): Missing file: '\epoc32\data\z\resource\coverflow\logical_template_3.xml' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1375): Missing file: '\epoc32\data\z\resource\coverflow\logical_template_4.xml' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1376): Missing file: '\epoc32\data\z\resource\grid\logical_template_1.xml' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1377): Missing file: '\epoc32\data\z\resource\grid\logical_template_2.xml' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1378): Missing file: '\epoc32\data\z\resource\grid\logical_template_3.xml' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1379): Missing file: '\epoc32\data\z\resource\grid\logical_template_4.xml' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1380): Missing file: '\epoc32\winscw\c\logical_template_1_list.xml' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1381): Missing file: '\epoc32\winscw\c\logical_template_2_list.xml' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1382): Missing file: '\epoc32\winscw\c\logical_template_3_list.xml' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1383): Missing file: '\epoc32\winscw\c\logical_template_4_list.xml' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1384): Missing file: '\epoc32\winscw\c\logical_template_5_list.xml' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1385): Missing file: '\epoc32\winscw\c\logical_template_6_list.xml' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1386): Missing file: '\epoc32\winscw\c\logical_template_7_list.xml' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1387): Missing file: '\epoc32\winscw\c\logical_template_8_list.xml' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1388): Missing file: '\epoc32\data\z\resource\slider\logical_template_1.xml' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1389): Missing file: '\epoc32\data\z\resource\slider\logical_template_2.xml' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1390): Missing file: '\epoc32\data\z\resource\slider\logical_template_3.xml' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1391): Missing file: '\epoc32\data\z\resource\slider\logical_template_4.xml' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1392): Missing file: '\epoc32\data\z\resource\slider\logical_template_5.xml' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1393): Missing file: '\epoc32\data\z\resource\slider\logical_template_6.xml' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1394): Missing file: '\epoc32\data\z\resource\slider\logical_template_7.xml' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1395): Missing file: '\epoc32\data\z\resource\slider\logical_template_8.xml' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1396): Missing file: '\epoc32\data\z\resource\slider\logical_template_9.xml' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1397): Missing file: '\\epoc32\winscw\c\resource\slider\lct\logical_template_1.xml' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1398): Missing file: '\\epoc32\winscw\c\resource\slider\lct\logical_template_2.xml' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1399): Missing file: '\\epoc32\winscw\c\resource\slider\lct\logical_template_3.xml' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1400): Missing file: '\\epoc32\winscw\c\resource\slider\lct\logical_template_4.xml' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1401): Missing file: '\\epoc32\winscw\c\resource\slider\lct\logical_template_5.xml' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1402): Missing file: '\\epoc32\winscw\c\resource\slider\lct\logical_template_6.xml' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1403): Missing file: '\\epoc32\winscw\c\resource\slider\lct\logical_template_7.xml' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1404): Missing file: '\\epoc32\winscw\c\resource\slider\lct\logical_template_8.xml' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1644): Missing file: '\epoc32\data\Z\system\install\ximpfw.sis' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1690): Missing file: '\epoc32\Data\z\resource\services' in statement 'data='
-y:output\release_flash_images\devlon52\subcon\core\RX-47_200846_subcon\RX-47_200846_subcon_core_master.oby(1691): Missing file: '\epoc32\Data\z\resource\locales.txt' in statement 'data='
-* Writing tmp7.oby - result of problem-suppression phase
-* Writing tmp8.oby - result of bitmap conversion phase
-* Removing previous image and logs...
-* Writing tmp9.oby - result of cleaning phase
-* Writing RX-47_200846_subcon.oby - final OBY file
-* Writing RX-47_200846_subcon.rofs1.oby - final OBY file
-* Writing RX-47_200846_subcon.dir - ROM directory listing
-* compression method: bytepair* Executing rombuild -slog -loglevel1 -type-safe-link -geninc -compressionmethod bytepair RX-47_200846_subcon.oby
-
-ROMBUILD - Rom builder V2.08 (Build 596)
- Software Ltd.
-
-WARNING: Unknown keyword 'ROFS_HEADER'.  Line 781 ignored
-WARNING: Unknown keyword 'LOCALISE_ALL_RESOURCES_BEGIN'.  Line 2520 ignored
-WARNING: Unknown keyword 'LOCALISE_ALL_RESOURCES_END'.  Line 2522 ignored
-WARNING: Unknown keyword '/'.  Line 2641 ignored
-WARNING: Unknown keyword ''.  Line 2806 ignored
-WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 2875 ignored
-WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 3554 ignored
-WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 3558 ignored
-WARNING: Unknown keyword '***'.  Line 4226 ignored
-WARNING: Unknown keyword '***'.  Line 4228 ignored
-WARNING: Unknown keyword '***'.  Line 4558 ignored
-WARNING: Unknown keyword '***'.  Line 4560 ignored
-WARNING: Unknown keyword '***'.  Line 4741 ignored
-WARNING: Unknown keyword '***'.  Line 5302 ignored
-WARNING: Unknown keyword '***'.  Line 5304 ignored
-WARNING: Unknown keyword '***'.  Line 5330 ignored
-WARNING: Unknown keyword '***'.  Line 5332 ignored
-ERROR: Can't build dependence graph for
-	\epoc32\release\ARMV5\urel\glxcloudview.dll (UID3:200071ba HWVD:01000000 VER:10.0)
-because
-	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
-is not in rom.
-ERROR: Can't build dependence graph for
-	\epoc32\release\ARMV5\urel\glxfetcher.dll (UID3:200071b3 HWVD:01000000 VER:10.0)
-because
-	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
-is not in rom.
-ERROR: Can't build dependence graph for
-	\epoc32\release\ARMV5\urel\glxdataprovider.dll (UID3:200104da HWVD:01000000 VER:10.0)
-because
-	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
-is not in rom.
-ERROR: Can't build dependence graph for
-	\epoc32\release\ARMV5\urel\glxgridview.dll (UID3:200009ef HWVD:01000000 VER:10.0)
-because
-	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
-is not in rom.
-ERROR: Can't build dependence graph for
-	\epoc32\release\ARMV5\urel\glxfullscreenview.dll (UID3:20000a07 HWVD:01000000 VER:10.0)
-because
-	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
-is not in rom.
-ERROR: Can't build dependence graph for
-	\epoc32\release\ARMV5\urel\glxlistview.dll (UID3:20000a0d HWVD:01000000 VER:10.0)
-because
-	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
-is not in rom.
-ERROR: Can't build dependence graph for
-	\epoc32\release\ARMV5\urel\glxunifiedmetadataview.dll (UID3:20007193 HWVD:01000000 VER:10.0)
-because
-	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
-is not in rom.
-ERROR: Can't build dependence graph for
-	\epoc32\release\ARMV5\urel\vcxnsvodui.dll (UID3:102750db HWVD:01000000 VER:10.0)
-because
-	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
-is not in rom.
-ERROR: Can't build dependence graph for
-	\epoc32\release\ARMV5\urel\vcxnsmyvideos.dll (UID3:2000b439 HWVD:01000000 VER:10.0)
-because
-	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
-is not in rom.
-ERROR: Can't build dependence graph for
-	\epoc32\release\ARMV5\urel\vcxnslivetvui.dll (UID3:00000000 HWVD:01000000 VER:10.0)
-because
-	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
-is not in rom.
-ERROR: Can't build dependence graph for
-	\epoc32\release\ARMV5\urel\alflctlayoutmanagers.dll (UID3:20012475 HWVD:01000000 VER:10.0)
-because
-	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
-is not in rom.
-ERROR: Can't build dependence graph for
-	\epoc32\release\ARMV5\urel\alfscrollbarwidget.dll (UID3:20010105 HWVD:01000000 VER:10.0)
-because
-	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
-is not in rom.
-ERROR: Can't build dependence graph for
-	\epoc32\release\armv5\urel\mulmodelutility.dll (UID3:2000d246 HWVD:01000000 VER:10.0)
-because
-	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
-is not in rom.
-ERROR: Can't build dependence graph for
-	\epoc32\release\armv5\urel\muldatamodel.dll (UID3:2000d247 HWVD:01000000 VER:10.0)
-because
-	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
-is not in rom.
-ERROR: Can't build dependence graph for
-	\epoc32\release\ARMV5\urel\mulgridwidget.dll (UID3:2000d244 HWVD:01000000 VER:10.0)
-because
-	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
-is not in rom.
-ERROR: Can't build dependence graph for
-	\epoc32\release\ARMV5\urel\mulgridwidget.dll (UID3:2000d244 HWVD:01000000 VER:10.0)
-because
-	mulutility.dll (UID3:2000fa83 HWVD:01000000 VER:10.0)
-is not in rom.
-ERROR: Can't build dependence graph for
-	\epoc32\release\armv5\urel\mulsingleitemmodel.dll (UID3:2000fa84 HWVD:01000000 VER:10.0)
-because
-	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
-is not in rom.
-ERROR: Can't build dependence graph for
-	\epoc32\release\ARMV5\urel\mulsliderwidget.dll (UID3:2000fa7f HWVD:01000000 VER:10.0)
-because
-	alfwidgetmodel.dll (UID3:00000000 HWVD:01000000 VER:10.0)
-is not in rom.
-ERROR: Can't build dependence graph for
-	\epoc32\release\ARMV5\urel\mulsliderwidget.dll (UID3:2000fa7f HWVD:01000000 VER:10.0)
-because
-	mulutility.dll (UID3:2000fa83 HWVD:01000000 VER:10.0)
-is not in rom.
-ERROR: LoadContents failed - return code -1
-* rombuild failed
-
-*** Error: (S:CORE,C:1,B:1,K:0,V:1): Command `buildrom -loglevel1 -v -nosymbols -DFEATUREVARIANT=devlon52 -D_IMAGE_TYPE_SUBCON -D_EABI=ARMV5 -D_ASIC_VER_11 -DUSE_MULTIROFS -DDEVLON52 -es60ibymacros -DSECTION -DRND_CONTENT -cbytepair -oRX-47_200846_subcon.img y:\output/release_flash_images/devlon52/subcon/core/RX-47_200846_subcon/RX-47_200846_subcon_core_master.oby' failed (1).
-mingw_make[1]: *** [core] Error 1
-make: [configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_core] Error 2 (ignored)
-+++ HiRes End 1226579662.47955
-++ Finished at Thu Nov 13 14:34:22 2008
-=== config_2 == configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_01
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_01
-++ Started at Thu Nov 13 14:34:23 2008
-+++ HiRes Start 1226579663.47955
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=subcon"  langpack_01  WORKDIR=\epoc32\rombuild\imaker_temp/conf_25
-iMaker 08.43.01, 20-Oct-2008.
-Variant target             USE_VARIANTBLD = `2'
-Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_01'
-Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_01/language_variant.mk'
-Variant include directory  VARIANT_INCDIR = -
-Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_01/variant.confml'
-Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
-Variant SIS directory      VARIANT_SISDIR = -
-Variant operator cache dir VARIANT_OPCDIR = -
-Variant zip content dir    VARIANT_ZIPDIR = -
-Variant copy content dir   VARIANT_CPDIR  = -
-Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/subcon/langpack/langpack_01/variant'
-Calling S60 Configuration Tool
-Generating file(s) for ROFS2 image creation
-Generating language files for Language Package image creation
-Creating ROFS2 SOS image
-
-Missing file(s):
- 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(47): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
- 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(48): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r02' in statement 'data='
- 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(49): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r03' in statement 'data='
- 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(50): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r04' in statement 'data='
- 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(51): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r05' in statement 'data='
- 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(52): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r13' in statement 'data='
- 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\02\appshelldata.dtd' in statement 'data='
- 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\03\appshelldata.dtd' in statement 'data='
- 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\04\appshelldata.dtd' in statement 'data='
-10) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(44): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\05\appshelldata.dtd' in statement 'data='
-11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\13\appshelldata.dtd' in statement 'data='
-12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(48): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0002' in statement 'data='
-13) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(49): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0003' in statement 'data='
-14) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0004' in statement 'data='
-15) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0005' in statement 'data='
-16) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(52): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0013' in statement 'data='
-17) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(54): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0002' in statement 'data='
-18) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(55): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0003' in statement 'data='
-19) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0004' in statement 'data='
-20) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0005' in statement 'data='
-21) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(58): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0013' in statement 'data='
-22) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(70): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
-23) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(71): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0002' in statement 'data='
-24) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(72): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0003' in statement 'data='
-25) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(73): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0004' in statement 'data='
-26) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(74): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0005' in statement 'data='
-27) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(75): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0013' in statement 'data='
-28) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(80): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
-29) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(81): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0002' in statement 'data='
-30) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(82): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0003' in statement 'data='
-31) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(83): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0004' in statement 'data='
-32) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(84): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0005' in statement 'data='
-33) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(85): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0013' in statement 'data='
-34) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(90): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
-35) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(91): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0002' in statement 'data='
-36) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(92): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0003' in statement 'data='
-37) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(93): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0004' in statement 'data='
-38) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(94): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0005' in statement 'data='
-39) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(95): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0013' in statement 'data='
-40) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(100): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
-41) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(101): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0002' in statement 'data='
-42) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(102): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0003' in statement 'data='
-43) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(103): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0004' in statement 'data='
-44) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(104): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0005' in statement 'data='
-45) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(105): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0013' in statement 'data='
-46) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
-47) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
-48) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
-49) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
-50) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
-51) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
-52) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
-53) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
-
-Warning(s):
- 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
- 2) *Initialization*:1: warning: this is the location of the previous definition
- 3) WARNING: Unknown keyword ''.  Line 370 ignored
- 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1982 ignored
- 5) WARNING: Unknown keyword '***'.  Line 2612 ignored
- 6) WARNING: Unknown keyword '***'.  Line 2836 ignored
- 7) WARNING: Unknown keyword '***'.  Line 3330 ignored
- 8) WARNING: Unknown keyword '***'.  Line 3363 ignored
- 9) WARNING: Unknown keyword ''.  Line 370 ignored
-10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1982 ignored
-11) WARNING: Unknown keyword '***'.  Line 2612 ignored
-12) WARNING: Unknown keyword '***'.  Line 2836 ignored
-13) WARNING: Unknown keyword '***'.  Line 3330 ignored
-14) WARNING: Unknown keyword '***'.  Line 3363 ignored
-Creating ROFS2 symbol file
-+++ HiRes End 1226579721.79167
-++ Finished at Thu Nov 13 14:35:21 2008
-=== config_2 == configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_02
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_02
-++ Started at Thu Nov 13 14:35:23 2008
-+++ HiRes Start 1226579723.04166
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=subcon"  langpack_02  WORKDIR=\epoc32\rombuild\imaker_temp/conf_26
-iMaker 08.43.01, 20-Oct-2008.
-Variant target             USE_VARIANTBLD = `2'
-Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_02'
-Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_02/language_variant.mk'
-Variant include directory  VARIANT_INCDIR = -
-Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_02/variant.confml'
-Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
-Variant SIS directory      VARIANT_SISDIR = -
-Variant operator cache dir VARIANT_OPCDIR = -
-Variant zip content dir    VARIANT_ZIPDIR = -
-Variant copy content dir   VARIANT_CPDIR  = -
-Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/subcon/langpack/langpack_02/variant'
-Calling S60 Configuration Tool
-Generating file(s) for ROFS2 image creation
-Generating language files for Language Package image creation
-Creating ROFS2 SOS image
-
-Missing file(s):
- 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(47): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
- 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(48): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r02' in statement 'data='
- 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(49): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r03' in statement 'data='
- 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(50): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r05' in statement 'data='
- 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(51): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r14' in statement 'data='
- 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(52): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r18' in statement 'data='
- 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\02\appshelldata.dtd' in statement 'data='
- 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\03\appshelldata.dtd' in statement 'data='
- 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\05\appshelldata.dtd' in statement 'data='
-10) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(44): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\14\appshelldata.dtd' in statement 'data='
-11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\18\appshelldata.dtd' in statement 'data='
-12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(48): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0002' in statement 'data='
-13) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(49): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0003' in statement 'data='
-14) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0005' in statement 'data='
-15) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0014' in statement 'data='
-16) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(52): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0018' in statement 'data='
-17) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(54): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0002' in statement 'data='
-18) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(55): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0003' in statement 'data='
-19) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0005' in statement 'data='
-20) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0014' in statement 'data='
-21) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(58): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0018' in statement 'data='
-22) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(70): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
-23) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(71): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0002' in statement 'data='
-24) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(72): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0003' in statement 'data='
-25) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(73): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0005' in statement 'data='
-26) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(74): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0014' in statement 'data='
-27) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(75): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0018' in statement 'data='
-28) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(80): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
-29) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(81): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0002' in statement 'data='
-30) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(82): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0003' in statement 'data='
-31) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(83): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0005' in statement 'data='
-32) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(84): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0014' in statement 'data='
-33) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(85): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0018' in statement 'data='
-34) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(90): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
-35) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(91): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0002' in statement 'data='
-36) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(92): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0003' in statement 'data='
-37) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(93): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0005' in statement 'data='
-38) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(94): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0014' in statement 'data='
-39) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(95): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0018' in statement 'data='
-40) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(100): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
-41) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(101): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0002' in statement 'data='
-42) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(102): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0003' in statement 'data='
-43) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(103): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0005' in statement 'data='
-44) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(104): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0014' in statement 'data='
-45) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(105): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0018' in statement 'data='
-46) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
-47) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
-48) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
-49) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
-50) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
-51) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
-52) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
-53) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
-
-Warning(s):
- 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
- 2) *Initialization*:1: warning: this is the location of the previous definition
- 3) WARNING: Unknown keyword ''.  Line 370 ignored
- 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1982 ignored
- 5) WARNING: Unknown keyword '***'.  Line 2612 ignored
- 6) WARNING: Unknown keyword '***'.  Line 2836 ignored
- 7) WARNING: Unknown keyword '***'.  Line 3330 ignored
- 8) WARNING: Unknown keyword '***'.  Line 3363 ignored
- 9) WARNING: Unknown keyword ''.  Line 370 ignored
-10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1982 ignored
-11) WARNING: Unknown keyword '***'.  Line 2612 ignored
-12) WARNING: Unknown keyword '***'.  Line 2836 ignored
-13) WARNING: Unknown keyword '***'.  Line 3330 ignored
-14) WARNING: Unknown keyword '***'.  Line 3363 ignored
-Creating ROFS2 symbol file
-+++ HiRes End 1226579780.93192
-++ Finished at Thu Nov 13 14:36:20 2008
-=== config_2 == configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_03
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_03
-++ Started at Thu Nov 13 14:36:22 2008
-+++ HiRes Start 1226579782.11941
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=subcon"  langpack_03  WORKDIR=\epoc32\rombuild\imaker_temp/conf_27
-iMaker 08.43.01, 20-Oct-2008.
-Variant target             USE_VARIANTBLD = `2'
-Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_03'
-Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_03/language_variant.mk'
-Variant include directory  VARIANT_INCDIR = -
-Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_03/variant.confml'
-Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
-Variant SIS directory      VARIANT_SISDIR = -
-Variant operator cache dir VARIANT_OPCDIR = -
-Variant zip content dir    VARIANT_ZIPDIR = -
-Variant copy content dir   VARIANT_CPDIR  = -
-Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/subcon/langpack/langpack_03/variant'
-Calling S60 Configuration Tool
-Generating file(s) for ROFS2 image creation
-Generating language files for Language Package image creation
-Creating ROFS2 SOS image
-
-Missing file(s):
- 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(47): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
- 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(48): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r06' in statement 'data='
- 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(49): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r07' in statement 'data='
- 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(50): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r08' in statement 'data='
- 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(51): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r09' in statement 'data='
- 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(52): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r15' in statement 'data='
- 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\06\appshelldata.dtd' in statement 'data='
- 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\07\appshelldata.dtd' in statement 'data='
- 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\08\appshelldata.dtd' in statement 'data='
-10) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(44): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\09\appshelldata.dtd' in statement 'data='
-11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\15\appshelldata.dtd' in statement 'data='
-12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(48): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0006' in statement 'data='
-13) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(49): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0007' in statement 'data='
-14) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0008' in statement 'data='
-15) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0009' in statement 'data='
-16) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(52): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0015' in statement 'data='
-17) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(54): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0006' in statement 'data='
-18) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(55): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0007' in statement 'data='
-19) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0008' in statement 'data='
-20) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0009' in statement 'data='
-21) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(58): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0015' in statement 'data='
-22) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(70): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
-23) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(71): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0006' in statement 'data='
-24) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(72): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0007' in statement 'data='
-25) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(73): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0008' in statement 'data='
-26) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(74): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0009' in statement 'data='
-27) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(75): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0015' in statement 'data='
-28) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(80): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
-29) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(81): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0006' in statement 'data='
-30) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(82): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0007' in statement 'data='
-31) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(83): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0008' in statement 'data='
-32) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(84): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0009' in statement 'data='
-33) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(85): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0015' in statement 'data='
-34) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(90): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
-35) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(91): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0006' in statement 'data='
-36) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(92): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0007' in statement 'data='
-37) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(93): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0008' in statement 'data='
-38) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(94): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0009' in statement 'data='
-39) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(95): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0015' in statement 'data='
-40) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(100): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
-41) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(101): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0006' in statement 'data='
-42) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(102): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0007' in statement 'data='
-43) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(103): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0008' in statement 'data='
-44) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(104): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0009' in statement 'data='
-45) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(105): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0015' in statement 'data='
-46) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
-47) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
-48) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
-49) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
-50) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
-51) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
-52) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
-53) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
-
-Warning(s):
- 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
- 2) *Initialization*:1: warning: this is the location of the previous definition
- 3) WARNING: Unknown keyword ''.  Line 370 ignored
- 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1982 ignored
- 5) WARNING: Unknown keyword '***'.  Line 2612 ignored
- 6) WARNING: Unknown keyword '***'.  Line 2836 ignored
- 7) WARNING: Unknown keyword '***'.  Line 3330 ignored
- 8) WARNING: Unknown keyword '***'.  Line 3363 ignored
- 9) WARNING: Unknown keyword ''.  Line 370 ignored
-10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1982 ignored
-11) WARNING: Unknown keyword '***'.  Line 2612 ignored
-12) WARNING: Unknown keyword '***'.  Line 2836 ignored
-13) WARNING: Unknown keyword '***'.  Line 3330 ignored
-14) WARNING: Unknown keyword '***'.  Line 3363 ignored
-Creating ROFS2 symbol file
-+++ HiRes End 1226579841.88465
-++ Finished at Thu Nov 13 14:37:21 2008
-=== config_2 == configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_04
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_04
-++ Started at Thu Nov 13 14:37:23 2008
-+++ HiRes Start 1226579843.13465
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=subcon"  langpack_04  WORKDIR=\epoc32\rombuild\imaker_temp/conf_28
-iMaker 08.43.01, 20-Oct-2008.
-Variant target             USE_VARIANTBLD = `2'
-Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_04'
-Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_04/language_variant.mk'
-Variant include directory  VARIANT_INCDIR = -
-Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_04/variant.confml'
-Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
-Variant SIS directory      VARIANT_SISDIR = -
-Variant operator cache dir VARIANT_OPCDIR = -
-Variant zip content dir    VARIANT_ZIPDIR = -
-Variant copy content dir   VARIANT_CPDIR  = -
-Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/subcon/langpack/langpack_04/variant'
-Calling S60 Configuration Tool
-Generating file(s) for ROFS2 image creation
-Generating language files for Language Package image creation
-Creating ROFS2 SOS image
-
-Missing file(s):
- 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(47): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
- 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(48): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r03' in statement 'data='
- 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(49): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r16' in statement 'data='
- 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(50): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r49' in statement 'data='
- 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(51): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r67' in statement 'data='
- 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(52): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r68' in statement 'data='
- 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\03\appshelldata.dtd' in statement 'data='
- 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\16\appshelldata.dtd' in statement 'data='
- 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\49\appshelldata.dtd' in statement 'data='
-10) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(44): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\67\appshelldata.dtd' in statement 'data='
-11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\68\appshelldata.dtd' in statement 'data='
-12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(48): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0003' in statement 'data='
-13) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(49): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0016' in statement 'data='
-14) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0049' in statement 'data='
-15) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0067' in statement 'data='
-16) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(52): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0068' in statement 'data='
-17) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(54): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0003' in statement 'data='
-18) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(55): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0016' in statement 'data='
-19) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0049' in statement 'data='
-20) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0067' in statement 'data='
-21) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(58): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0068' in statement 'data='
-22) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(70): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
-23) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(71): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0003' in statement 'data='
-24) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(72): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0016' in statement 'data='
-25) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(73): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0049' in statement 'data='
-26) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(74): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0067' in statement 'data='
-27) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(75): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0068' in statement 'data='
-28) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(80): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
-29) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(81): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0003' in statement 'data='
-30) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(82): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0016' in statement 'data='
-31) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(83): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0049' in statement 'data='
-32) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(84): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0067' in statement 'data='
-33) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(85): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0068' in statement 'data='
-34) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(90): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
-35) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(91): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0003' in statement 'data='
-36) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(92): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0016' in statement 'data='
-37) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(93): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0049' in statement 'data='
-38) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(94): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0067' in statement 'data='
-39) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(95): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0068' in statement 'data='
-40) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(100): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
-41) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(101): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0003' in statement 'data='
-42) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(102): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0016' in statement 'data='
-43) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(103): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0049' in statement 'data='
-44) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(104): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0067' in statement 'data='
-45) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(105): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0068' in statement 'data='
-46) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
-47) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
-48) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
-49) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
-50) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
-51) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
-52) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
-53) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
-
-Warning(s):
- 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
- 2) *Initialization*:1: warning: this is the location of the previous definition
- 3) WARNING: Unknown keyword ''.  Line 370 ignored
- 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1982 ignored
- 5) WARNING: Unknown keyword '***'.  Line 2612 ignored
- 6) WARNING: Unknown keyword '***'.  Line 2836 ignored
- 7) WARNING: Unknown keyword '***'.  Line 3330 ignored
- 8) WARNING: Unknown keyword '***'.  Line 3363 ignored
- 9) WARNING: Unknown keyword ''.  Line 370 ignored
-10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1982 ignored
-11) WARNING: Unknown keyword '***'.  Line 2612 ignored
-12) WARNING: Unknown keyword '***'.  Line 2836 ignored
-13) WARNING: Unknown keyword '***'.  Line 3330 ignored
-14) WARNING: Unknown keyword '***'.  Line 3363 ignored
-Creating ROFS2 symbol file
-+++ HiRes End 1226579902.32177
-++ Finished at Thu Nov 13 14:38:22 2008
-=== config_2 == configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_05
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_05
-++ Started at Thu Nov 13 14:38:23 2008
-+++ HiRes Start 1226579903.54051
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=subcon"  langpack_05  WORKDIR=\epoc32\rombuild\imaker_temp/conf_29
-iMaker 08.43.01, 20-Oct-2008.
-Variant target             USE_VARIANTBLD = `2'
-Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_05'
-Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_05/language_variant.mk'
-Variant include directory  VARIANT_INCDIR = -
-Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_05/variant.confml'
-Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
-Variant SIS directory      VARIANT_SISDIR = -
-Variant operator cache dir VARIANT_OPCDIR = -
-Variant zip content dir    VARIANT_ZIPDIR = -
-Variant copy content dir   VARIANT_CPDIR  = -
-Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/subcon/langpack/langpack_05/variant'
-Calling S60 Configuration Tool
-Generating file(s) for ROFS2 image creation
-Generating language files for Language Package image creation
-Creating ROFS2 SOS image
-
-Missing file(s):
- 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(52): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
- 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(53): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r03' in statement 'data='
- 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(54): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r16' in statement 'data='
- 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(55): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r17' in statement 'data='
- 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(56): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r42' in statement 'data='
- 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(57): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r78' in statement 'data='
- 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(58): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r93' in statement 'data='
- 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\03\appshelldata.dtd' in statement 'data='
- 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\16\appshelldata.dtd' in statement 'data='
-10) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(44): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\17\appshelldata.dtd' in statement 'data='
-11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\42\appshelldata.dtd' in statement 'data='
-12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(46): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\78\appshelldata.dtd' in statement 'data='
-13) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(47): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\93\appshelldata.dtd' in statement 'data='
-14) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0003' in statement 'data='
-15) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0016' in statement 'data='
-16) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(52): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0017' in statement 'data='
-17) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(53): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0042' in statement 'data='
-18) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(54): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0078' in statement 'data='
-19) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(55): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0093' in statement 'data='
-20) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0003' in statement 'data='
-21) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(58): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0016' in statement 'data='
-22) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(59): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0017' in statement 'data='
-23) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(60): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0042' in statement 'data='
-24) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(61): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0078' in statement 'data='
-25) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(62): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0093' in statement 'data='
-26) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(75): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
-27) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(76): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0003' in statement 'data='
-28) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(77): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0016' in statement 'data='
-29) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(78): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0017' in statement 'data='
-30) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(79): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0042' in statement 'data='
-31) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(80): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0078' in statement 'data='
-32) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(81): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0093' in statement 'data='
-33) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(86): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
-34) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(87): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0003' in statement 'data='
-35) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(88): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0016' in statement 'data='
-36) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(89): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0017' in statement 'data='
-37) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(90): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0042' in statement 'data='
-38) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(91): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0078' in statement 'data='
-39) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(92): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0093' in statement 'data='
-40) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(97): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
-41) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(98): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0003' in statement 'data='
-42) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(99): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0016' in statement 'data='
-43) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(100): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0017' in statement 'data='
-44) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(101): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0042' in statement 'data='
-45) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(102): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0078' in statement 'data='
-46) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(103): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0093' in statement 'data='
-47) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(108): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
-48) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(109): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0003' in statement 'data='
-49) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(110): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0016' in statement 'data='
-50) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(111): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0017' in statement 'data='
-51) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(112): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0042' in statement 'data='
-52) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(113): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0078' in statement 'data='
-53) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(114): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0093' in statement 'data='
-54) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
-55) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
-56) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
-57) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
-58) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
-59) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
-60) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
-61) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
-
-Warning(s):
- 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
- 2) *Initialization*:1: warning: this is the location of the previous definition
- 3) WARNING: Unknown keyword ''.  Line 421 ignored
- 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 2271 ignored
- 5) WARNING: Unknown keyword '***'.  Line 2992 ignored
- 6) WARNING: Unknown keyword '***'.  Line 3248 ignored
- 7) WARNING: Unknown keyword '***'.  Line 3813 ignored
- 8) WARNING: Unknown keyword '***'.  Line 3851 ignored
- 9) WARNING: Unknown keyword ''.  Line 421 ignored
-10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 2271 ignored
-11) WARNING: Unknown keyword '***'.  Line 2992 ignored
-12) WARNING: Unknown keyword '***'.  Line 3248 ignored
-13) WARNING: Unknown keyword '***'.  Line 3813 ignored
-14) WARNING: Unknown keyword '***'.  Line 3851 ignored
-Creating ROFS2 symbol file
-+++ HiRes End 1226579964.63387
-++ Finished at Thu Nov 13 14:39:24 2008
-=== config_2 == configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_06
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_06
-++ Started at Thu Nov 13 14:39:25 2008
-+++ HiRes Start 1226579965.99323
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=subcon"  langpack_06  WORKDIR=\epoc32\rombuild\imaker_temp/conf_30
-iMaker 08.43.01, 20-Oct-2008.
-Variant target             USE_VARIANTBLD = `2'
-Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_06'
-Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_06/language_variant.mk'
-Variant include directory  VARIANT_INCDIR = -
-Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_06/variant.confml'
-Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
-Variant SIS directory      VARIANT_SISDIR = -
-Variant operator cache dir VARIANT_OPCDIR = -
-Variant zip content dir    VARIANT_ZIPDIR = -
-Variant copy content dir   VARIANT_CPDIR  = -
-Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/subcon/langpack/langpack_06/variant'
-Calling S60 Configuration Tool
-Generating file(s) for ROFS2 image creation
-Generating language files for Language Package image creation
-Creating ROFS2 SOS image
-
-Missing file(s):
- 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(47): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
- 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(48): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r03' in statement 'data='
- 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(49): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r17' in statement 'data='
- 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(50): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r25' in statement 'data='
- 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(51): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r26' in statement 'data='
- 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(52): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r27' in statement 'data='
- 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\03\appshelldata.dtd' in statement 'data='
- 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\17\appshelldata.dtd' in statement 'data='
- 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\25\appshelldata.dtd' in statement 'data='
-10) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(44): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\26\appshelldata.dtd' in statement 'data='
-11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\27\appshelldata.dtd' in statement 'data='
-12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(48): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0003' in statement 'data='
-13) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(49): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0017' in statement 'data='
-14) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0025' in statement 'data='
-15) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0026' in statement 'data='
-16) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(52): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0027' in statement 'data='
-17) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(54): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0003' in statement 'data='
-18) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(55): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0017' in statement 'data='
-19) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0025' in statement 'data='
-20) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0026' in statement 'data='
-21) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(58): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0027' in statement 'data='
-22) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(70): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
-23) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(71): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0003' in statement 'data='
-24) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(72): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0017' in statement 'data='
-25) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(73): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0025' in statement 'data='
-26) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(74): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0026' in statement 'data='
-27) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(75): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0027' in statement 'data='
-28) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(80): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
-29) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(81): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0003' in statement 'data='
-30) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(82): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0017' in statement 'data='
-31) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(83): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0025' in statement 'data='
-32) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(84): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0026' in statement 'data='
-33) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(85): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0027' in statement 'data='
-34) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(90): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
-35) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(91): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0003' in statement 'data='
-36) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(92): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0017' in statement 'data='
-37) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(93): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0025' in statement 'data='
-38) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(94): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0026' in statement 'data='
-39) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(95): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0027' in statement 'data='
-40) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(100): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
-41) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(101): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0003' in statement 'data='
-42) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(102): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0017' in statement 'data='
-43) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(103): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0025' in statement 'data='
-44) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(104): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0026' in statement 'data='
-45) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(105): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0027' in statement 'data='
-46) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
-47) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
-48) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
-49) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
-50) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
-51) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
-52) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
-53) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
-
-Warning(s):
- 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
- 2) *Initialization*:1: warning: this is the location of the previous definition
- 3) WARNING: Unknown keyword ''.  Line 370 ignored
- 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1982 ignored
- 5) WARNING: Unknown keyword '***'.  Line 2612 ignored
- 6) WARNING: Unknown keyword '***'.  Line 2836 ignored
- 7) WARNING: Unknown keyword '***'.  Line 3330 ignored
- 8) WARNING: Unknown keyword '***'.  Line 3363 ignored
- 9) WARNING: Unknown keyword ''.  Line 370 ignored
-10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1982 ignored
-11) WARNING: Unknown keyword '***'.  Line 2612 ignored
-12) WARNING: Unknown keyword '***'.  Line 2836 ignored
-13) WARNING: Unknown keyword '***'.  Line 3330 ignored
-14) WARNING: Unknown keyword '***'.  Line 3363 ignored
-Creating ROFS2 symbol file
-+++ HiRes End 1226580023.55537
-++ Finished at Thu Nov 13 14:40:23 2008
-=== config_2 == configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_07
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_07
-++ Started at Thu Nov 13 14:40:24 2008
-+++ HiRes Start 1226580024.82098
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=subcon"  langpack_07  WORKDIR=\epoc32\rombuild\imaker_temp/conf_31
-iMaker 08.43.01, 20-Oct-2008.
-Variant target             USE_VARIANTBLD = `2'
-Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_07'
-Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_07/language_variant.mk'
-Variant include directory  VARIANT_INCDIR = -
-Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_07/variant.confml'
-Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
-Variant SIS directory      VARIANT_SISDIR = -
-Variant operator cache dir VARIANT_OPCDIR = -
-Variant zip content dir    VARIANT_ZIPDIR = -
-Variant copy content dir   VARIANT_CPDIR  = -
-Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/subcon/langpack/langpack_07/variant'
-Calling S60 Configuration Tool
-Generating file(s) for ROFS2 image creation
-Generating language files for Language Package image creation
-Creating ROFS2 SOS image
-
-Missing file(s):
- 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(47): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
- 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(48): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r03' in statement 'data='
- 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(49): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r28' in statement 'data='
- 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(50): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r45' in statement 'data='
- 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(51): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r54' in statement 'data='
- 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(52): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r79' in statement 'data='
- 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\03\appshelldata.dtd' in statement 'data='
- 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\28\appshelldata.dtd' in statement 'data='
- 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\45\appshelldata.dtd' in statement 'data='
-10) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(44): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\54\appshelldata.dtd' in statement 'data='
-11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\79\appshelldata.dtd' in statement 'data='
-12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(48): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0003' in statement 'data='
-13) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(49): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0028' in statement 'data='
-14) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0045' in statement 'data='
-15) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0054' in statement 'data='
-16) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(52): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0079' in statement 'data='
-17) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(54): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0003' in statement 'data='
-18) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(55): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0028' in statement 'data='
-19) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0045' in statement 'data='
-20) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0054' in statement 'data='
-21) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(58): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0079' in statement 'data='
-22) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(70): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
-23) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(71): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0003' in statement 'data='
-24) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(72): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0028' in statement 'data='
-25) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(73): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0045' in statement 'data='
-26) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(74): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0054' in statement 'data='
-27) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(75): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0079' in statement 'data='
-28) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(80): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
-29) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(81): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0003' in statement 'data='
-30) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(82): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0028' in statement 'data='
-31) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(83): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0045' in statement 'data='
-32) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(84): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0054' in statement 'data='
-33) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(85): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0079' in statement 'data='
-34) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(90): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
-35) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(91): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0003' in statement 'data='
-36) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(92): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0028' in statement 'data='
-37) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(93): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0045' in statement 'data='
-38) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(94): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0054' in statement 'data='
-39) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(95): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0079' in statement 'data='
-40) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(100): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
-41) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(101): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0003' in statement 'data='
-42) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(102): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0028' in statement 'data='
-43) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(103): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0045' in statement 'data='
-44) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(104): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0054' in statement 'data='
-45) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(105): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0079' in statement 'data='
-46) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
-47) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
-48) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
-49) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
-50) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
-51) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
-52) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
-53) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
-
-Warning(s):
- 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
- 2) *Initialization*:1: warning: this is the location of the previous definition
- 3) WARNING: Unknown keyword ''.  Line 370 ignored
- 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1982 ignored
- 5) WARNING: Unknown keyword '***'.  Line 2612 ignored
- 6) WARNING: Unknown keyword '***'.  Line 2836 ignored
- 7) WARNING: Unknown keyword '***'.  Line 3330 ignored
- 8) WARNING: Unknown keyword '***'.  Line 3363 ignored
- 9) WARNING: Unknown keyword ''.  Line 370 ignored
-10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1982 ignored
-11) WARNING: Unknown keyword '***'.  Line 2612 ignored
-12) WARNING: Unknown keyword '***'.  Line 2836 ignored
-13) WARNING: Unknown keyword '***'.  Line 3330 ignored
-14) WARNING: Unknown keyword '***'.  Line 3363 ignored
-Creating ROFS2 symbol file
-+++ HiRes End 1226580081.86749
-++ Finished at Thu Nov 13 14:41:21 2008
-=== config_2 == configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_08
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_08
-++ Started at Thu Nov 13 14:41:23 2008
-+++ HiRes Start 1226580083.08623
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=subcon"  langpack_08  WORKDIR=\epoc32\rombuild\imaker_temp/conf_32
-iMaker 08.43.01, 20-Oct-2008.
-Variant target             USE_VARIANTBLD = `2'
-Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_08'
-Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_08/language_variant.mk'
-Variant include directory  VARIANT_INCDIR = -
-Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_08/variant.confml'
-Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
-Variant SIS directory      VARIANT_SISDIR = -
-Variant operator cache dir VARIANT_OPCDIR = -
-Variant zip content dir    VARIANT_ZIPDIR = -
-Variant copy content dir   VARIANT_CPDIR  = -
-Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/subcon/langpack/langpack_08/variant'
-Calling S60 Configuration Tool
-Generating file(s) for ROFS2 image creation
-Generating language files for Language Package image creation
-Creating ROFS2 SOS image
-
-Missing file(s):
- 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(47): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
- 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(48): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r04' in statement 'data='
- 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(49): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r16' in statement 'data='
- 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(50): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r37' in statement 'data='
- 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(51): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r57' in statement 'data='
- 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(52): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r78' in statement 'data='
- 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\04\appshelldata.dtd' in statement 'data='
- 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\16\appshelldata.dtd' in statement 'data='
- 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\37\appshelldata.dtd' in statement 'data='
-10) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(44): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\57\appshelldata.dtd' in statement 'data='
-11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\78\appshelldata.dtd' in statement 'data='
-12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(48): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0004' in statement 'data='
-13) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(49): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0016' in statement 'data='
-14) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0037' in statement 'data='
-15) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0057' in statement 'data='
-16) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(52): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0078' in statement 'data='
-17) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(54): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0004' in statement 'data='
-18) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(55): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0016' in statement 'data='
-19) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0037' in statement 'data='
-20) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0057' in statement 'data='
-21) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(58): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0078' in statement 'data='
-22) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(70): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
-23) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(71): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0004' in statement 'data='
-24) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(72): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0016' in statement 'data='
-25) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(73): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0037' in statement 'data='
-26) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(74): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0057' in statement 'data='
-27) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(75): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0078' in statement 'data='
-28) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(80): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
-29) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(81): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0004' in statement 'data='
-30) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(82): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0016' in statement 'data='
-31) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(83): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0037' in statement 'data='
-32) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(84): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0057' in statement 'data='
-33) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(85): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0078' in statement 'data='
-34) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(90): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
-35) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(91): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0004' in statement 'data='
-36) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(92): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0016' in statement 'data='
-37) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(93): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0037' in statement 'data='
-38) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(94): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0057' in statement 'data='
-39) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(95): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0078' in statement 'data='
-40) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(100): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
-41) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(101): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0004' in statement 'data='
-42) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(102): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0016' in statement 'data='
-43) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(103): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0037' in statement 'data='
-44) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(104): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0057' in statement 'data='
-45) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(105): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0078' in statement 'data='
-46) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
-47) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
-48) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
-49) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
-50) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
-51) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
-52) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
-53) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
-
-Warning(s):
- 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
- 2) *Initialization*:1: warning: this is the location of the previous definition
- 3) WARNING: Unknown keyword ''.  Line 370 ignored
- 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1982 ignored
- 5) WARNING: Unknown keyword '***'.  Line 2612 ignored
- 6) WARNING: Unknown keyword '***'.  Line 2836 ignored
- 7) WARNING: Unknown keyword '***'.  Line 3330 ignored
- 8) WARNING: Unknown keyword '***'.  Line 3363 ignored
- 9) WARNING: Unknown keyword ''.  Line 370 ignored
-10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1982 ignored
-11) WARNING: Unknown keyword '***'.  Line 2612 ignored
-12) WARNING: Unknown keyword '***'.  Line 2836 ignored
-13) WARNING: Unknown keyword '***'.  Line 3330 ignored
-14) WARNING: Unknown keyword '***'.  Line 3363 ignored
-Creating ROFS2 symbol file
-+++ HiRes End 1226580141.39836
-++ Finished at Thu Nov 13 14:42:21 2008
-=== config_2 == configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_09
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_09
-++ Started at Thu Nov 13 14:42:22 2008
-+++ HiRes Start 1226580142.78898
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=subcon"  langpack_09  WORKDIR=\epoc32\rombuild\imaker_temp/conf_33
-iMaker 08.43.01, 20-Oct-2008.
-Variant target             USE_VARIANTBLD = `2'
-Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_09'
-Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_09/language_variant.mk'
-Variant include directory  VARIANT_INCDIR = -
-Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_09/variant.confml'
-Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
-Variant SIS directory      VARIANT_SISDIR = -
-Variant operator cache dir VARIANT_OPCDIR = -
-Variant zip content dir    VARIANT_ZIPDIR = -
-Variant copy content dir   VARIANT_CPDIR  = -
-Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/subcon/langpack/langpack_09/variant'
-Calling S60 Configuration Tool
-Generating file(s) for ROFS2 image creation
-Generating language files for Language Package image creation
-Creating ROFS2 SOS image
-
-Missing file(s):
- 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\audiothemesresources.iby(29): Missing file: '\epoc32\data\Z\resource\PslnATPluginRsc.r102' in statement 'data='
- 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\audiothemesresources.iby(30): Missing file: '\epoc32\data\Z\resource\PslnATPluginRsc.r103' in statement 'data='
- 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(57): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
- 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(58): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r02' in statement 'data='
- 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(59): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r03' in statement 'data='
- 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(60): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r04' in statement 'data='
- 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(61): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r102' in statement 'data='
- 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(62): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r103' in statement 'data='
- 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(63): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r13' in statement 'data='
-10) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(64): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r44' in statement 'data='
-11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\02\appshelldata.dtd' in statement 'data='
-12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(44): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\03\appshelldata.dtd' in statement 'data='
-13) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\04\appshelldata.dtd' in statement 'data='
-14) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(46): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\102\appshelldata.dtd' in statement 'data='
-15) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(47): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\103\appshelldata.dtd' in statement 'data='
-16) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(48): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\13\appshelldata.dtd' in statement 'data='
-17) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(49): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\44\appshelldata.dtd' in statement 'data='
-18) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(52): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0002' in statement 'data='
-19) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(53): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0003' in statement 'data='
-20) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(54): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0004' in statement 'data='
-21) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(55): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0102' in statement 'data='
-22) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0103' in statement 'data='
-23) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0013' in statement 'data='
-24) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(58): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0044' in statement 'data='
-25) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(60): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0002' in statement 'data='
-26) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(61): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0003' in statement 'data='
-27) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(62): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0004' in statement 'data='
-28) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(63): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0102' in statement 'data='
-29) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(64): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0103' in statement 'data='
-30) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(65): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0013' in statement 'data='
-31) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(66): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0044' in statement 'data='
-32) ..\..\..\..\..\..\epoc32\rom\include\language\app\mobiledictionaryresources.iby(19): Missing file: '\epoc32\data\Z\resource\Apps\mobiledictionary.r102' in statement 'data='
-33) ..\..\..\..\..\..\epoc32\rom\include\language\app\mobiledictionaryresources.iby(20): Missing file: '\epoc32\data\Z\resource\Apps\mobiledictionary.r103' in statement 'data='
-34) ..\..\..\..\..\..\epoc32\rom\include\language\app\NcdCatalogsUiResources.iby(32): Missing file: '\epoc32\data\Z\resource\apps\Ncd.r102' in statement 'data='
-35) ..\..\..\..\..\..\epoc32\rom\include\language\app\NcdCatalogsUiResources.iby(33): Missing file: '\epoc32\data\Z\resource\apps\Ncd.r103' in statement 'data='
-36) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(80): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
-37) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(81): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0002' in statement 'data='
-38) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(82): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0003' in statement 'data='
-39) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(83): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0004' in statement 'data='
-40) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(84): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0102' in statement 'data='
-41) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(85): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0103' in statement 'data='
-42) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(86): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0013' in statement 'data='
-43) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(87): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0044' in statement 'data='
-44) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(92): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
-45) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(93): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0002' in statement 'data='
-46) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(94): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0003' in statement 'data='
-47) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(95): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0004' in statement 'data='
-48) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(96): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0102' in statement 'data='
-49) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(97): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0103' in statement 'data='
-50) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(98): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0013' in statement 'data='
-51) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(99): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0044' in statement 'data='
-52) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(104): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
-53) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(105): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0002' in statement 'data='
-54) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(106): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0003' in statement 'data='
-55) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(107): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0004' in statement 'data='
-56) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(108): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0102' in statement 'data='
-57) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(109): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0103' in statement 'data='
-58) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(110): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0013' in statement 'data='
-59) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(111): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0044' in statement 'data='
-60) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(116): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
-61) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(117): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0002' in statement 'data='
-62) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(118): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0003' in statement 'data='
-63) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(119): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0004' in statement 'data='
-64) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(120): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0102' in statement 'data='
-65) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(121): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0103' in statement 'data='
-66) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(122): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0013' in statement 'data='
-67) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(123): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0044' in statement 'data='
-68) ..\..\..\..\..\..\epoc32\rom\include\language\mw\elocl.iby(28): Missing file: '\epoc32\release\ARMV5\urel\Elocl.102' in statement 'file='
-69) ..\..\..\..\..\..\epoc32\rom\include\language\mw\elocl.iby(29): Missing file: '\epoc32\release\ARMV5\urel\Elocl.103' in statement 'file='
-70) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
-71) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
-72) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
-73) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
-74) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
-75) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
-76) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
-77) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
-
-Warning(s):
- 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
- 2) *Initialization*:1: warning: this is the location of the previous definition
- 3) WARNING: Unknown keyword ''.  Line 472 ignored
- 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 2560 ignored
- 5) WARNING: Unknown keyword '***'.  Line 3372 ignored
- 6) WARNING: Unknown keyword '***'.  Line 3660 ignored
- 7) WARNING: Unknown keyword '***'.  Line 4296 ignored
- 8) WARNING: Unknown keyword '***'.  Line 4339 ignored
- 9) WARNING: Unknown keyword ''.  Line 472 ignored
-10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 2560 ignored
-11) WARNING: Unknown keyword '***'.  Line 3372 ignored
-12) WARNING: Unknown keyword '***'.  Line 3660 ignored
-13) WARNING: Unknown keyword '***'.  Line 4296 ignored
-14) WARNING: Unknown keyword '***'.  Line 4339 ignored
-Creating ROFS2 symbol file
-+++ HiRes End 1226580209.9448
-++ Finished at Thu Nov 13 14:43:29 2008
-=== config_2 == configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_11
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_11
-++ Started at Thu Nov 13 14:43:31 2008
-+++ HiRes Start 1226580211.33541
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=subcon"  langpack_11  WORKDIR=\epoc32\rombuild\imaker_temp/conf_34
-iMaker 08.43.01, 20-Oct-2008.
-Variant target             USE_VARIANTBLD = `2'
-Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_11'
-Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_11/language_variant.mk'
-Variant include directory  VARIANT_INCDIR = -
-Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_11/variant.confml'
-Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
-Variant SIS directory      VARIANT_SISDIR = -
-Variant operator cache dir VARIANT_OPCDIR = -
-Variant zip content dir    VARIANT_ZIPDIR = -
-Variant copy content dir   VARIANT_CPDIR  = -
-Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/subcon/langpack/langpack_11/variant'
-Calling S60 Configuration Tool
-Generating file(s) for ROFS2 image creation
-Generating language files for Language Package image creation
-Creating ROFS2 SOS image
-
-Missing file(s):
- 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(32): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
- 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(33): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r02' in statement 'data='
- 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(34): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r37' in statement 'data='
- 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(38): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\02\appshelldata.dtd' in statement 'data='
- 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(39): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\37\appshelldata.dtd' in statement 'data='
- 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0002' in statement 'data='
- 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0037' in statement 'data='
- 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0002' in statement 'data='
- 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(46): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0037' in statement 'data='
-10) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(55): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
-11) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0002' in statement 'data='
-12) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0037' in statement 'data='
-13) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(62): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
-14) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(63): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0002' in statement 'data='
-15) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(64): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0037' in statement 'data='
-16) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(69): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
-17) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(70): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0002' in statement 'data='
-18) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(71): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0037' in statement 'data='
-19) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(76): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
-20) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(77): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0002' in statement 'data='
-21) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(78): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0037' in statement 'data='
-22) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
-23) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
-24) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
-25) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
-26) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
-27) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
-28) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
-29) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
-
-Warning(s):
- 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
- 2) *Initialization*:1: warning: this is the location of the previous definition
- 3) WARNING: Unknown keyword ''.  Line 217 ignored
- 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1115 ignored
- 5) WARNING: Unknown keyword '***'.  Line 1472 ignored
- 6) WARNING: Unknown keyword '***'.  Line 1600 ignored
- 7) WARNING: Unknown keyword '***'.  Line 1881 ignored
- 8) WARNING: Unknown keyword '***'.  Line 1899 ignored
- 9) WARNING: Unknown keyword ''.  Line 217 ignored
-10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1115 ignored
-11) WARNING: Unknown keyword '***'.  Line 1472 ignored
-12) WARNING: Unknown keyword '***'.  Line 1600 ignored
-13) WARNING: Unknown keyword '***'.  Line 1881 ignored
-14) WARNING: Unknown keyword '***'.  Line 1899 ignored
-Creating ROFS2 symbol file
-+++ HiRes End 1226580248.80392
-++ Finished at Thu Nov 13 14:44:08 2008
-=== config_2 == configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_12
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_12
-++ Started at Thu Nov 13 14:44:09 2008
-+++ HiRes Start 1226580249.63204
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=subcon"  langpack_12  WORKDIR=\epoc32\rombuild\imaker_temp/conf_35
-iMaker 08.43.01, 20-Oct-2008.
-Variant target             USE_VARIANTBLD = `2'
-Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_12'
-Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_12/language_variant.mk'
-Variant include directory  VARIANT_INCDIR = -
-Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_12/variant.confml'
-Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
-Variant SIS directory      VARIANT_SISDIR = -
-Variant operator cache dir VARIANT_OPCDIR = -
-Variant zip content dir    VARIANT_ZIPDIR = -
-Variant copy content dir   VARIANT_CPDIR  = -
-Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/subcon/langpack/langpack_12/variant'
-Calling S60 Configuration Tool
-Generating file(s) for ROFS2 image creation
-Generating language files for Language Package image creation
-Creating ROFS2 SOS image
-
-Missing file(s):
- 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(37): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
- 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(38): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r37' in statement 'data='
- 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(39): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r50' in statement 'data='
- 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(40): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r94' in statement 'data='
- 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(39): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\37\appshelldata.dtd' in statement 'data='
- 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(40): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\50\appshelldata.dtd' in statement 'data='
- 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\94\appshelldata.dtd' in statement 'data='
- 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(44): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0037' in statement 'data='
- 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0050' in statement 'data='
-10) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(46): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0094' in statement 'data='
-11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(48): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0037' in statement 'data='
-12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(49): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0050' in statement 'data='
-13) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0094' in statement 'data='
-14) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(60): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
-15) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(61): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0037' in statement 'data='
-16) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(62): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0050' in statement 'data='
-17) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(63): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0094' in statement 'data='
-18) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(68): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
-19) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(69): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0037' in statement 'data='
-20) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(70): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0050' in statement 'data='
-21) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(71): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0094' in statement 'data='
-22) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(76): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
-23) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(77): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0037' in statement 'data='
-24) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(78): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0050' in statement 'data='
-25) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(79): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0094' in statement 'data='
-26) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(84): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
-27) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(85): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0037' in statement 'data='
-28) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(86): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0050' in statement 'data='
-29) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(87): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0094' in statement 'data='
-30) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
-31) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
-32) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
-33) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
-34) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
-35) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
-36) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
-37) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
-
-Warning(s):
- 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
- 2) *Initialization*:1: warning: this is the location of the previous definition
- 3) WARNING: Unknown keyword ''.  Line 268 ignored
- 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1404 ignored
- 5) WARNING: Unknown keyword '***'.  Line 1852 ignored
- 6) WARNING: Unknown keyword '***'.  Line 2012 ignored
- 7) WARNING: Unknown keyword '***'.  Line 2364 ignored
- 8) WARNING: Unknown keyword '***'.  Line 2387 ignored
- 9) WARNING: Unknown keyword ''.  Line 268 ignored
-10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1404 ignored
-11) WARNING: Unknown keyword '***'.  Line 1852 ignored
-12) WARNING: Unknown keyword '***'.  Line 2012 ignored
-13) WARNING: Unknown keyword '***'.  Line 2364 ignored
-14) WARNING: Unknown keyword '***'.  Line 2387 ignored
-Creating ROFS2 symbol file
-+++ HiRes End 1226580292.78802
-++ Finished at Thu Nov 13 14:44:52 2008
-=== config_2 == configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_13
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_13
-++ Started at Thu Nov 13 14:44:53 2008
-+++ HiRes Start 1226580293.75676
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=subcon"  langpack_13  WORKDIR=\epoc32\rombuild\imaker_temp/conf_36
-iMaker 08.43.01, 20-Oct-2008.
-Variant target             USE_VARIANTBLD = `2'
-Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_13'
-Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_13/language_variant.mk'
-Variant include directory  VARIANT_INCDIR = -
-Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_13/variant.confml'
-Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
-Variant SIS directory      VARIANT_SISDIR = -
-Variant operator cache dir VARIANT_OPCDIR = -
-Variant zip content dir    VARIANT_ZIPDIR = -
-Variant copy content dir   VARIANT_CPDIR  = -
-Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/subcon/langpack/langpack_13/variant'
-Calling S60 Configuration Tool
-Generating file(s) for ROFS2 image creation
-Generating language files for Language Package image creation
-Creating ROFS2 SOS image
-
-Missing file(s):
- 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(27): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
- 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(28): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r13' in statement 'data='
- 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(37): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\13\appshelldata.dtd' in statement 'data='
- 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(40): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0013' in statement 'data='
- 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0013' in statement 'data='
- 6) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
- 7) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0013' in statement 'data='
- 8) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
- 9) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0013' in statement 'data='
-10) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(62): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
-11) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(63): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0013' in statement 'data='
-12) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(68): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
-13) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(69): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0013' in statement 'data='
-14) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
-15) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
-16) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
-17) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
-18) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
-19) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
-20) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
-21) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
-
-Warning(s):
- 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
- 2) *Initialization*:1: warning: this is the location of the previous definition
- 3) WARNING: Unknown keyword ''.  Line 166 ignored
- 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 826 ignored
- 5) WARNING: Unknown keyword '***'.  Line 1092 ignored
- 6) WARNING: Unknown keyword '***'.  Line 1188 ignored
- 7) WARNING: Unknown keyword '***'.  Line 1398 ignored
- 8) WARNING: Unknown keyword '***'.  Line 1411 ignored
- 9) WARNING: Unknown keyword ''.  Line 166 ignored
-10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 826 ignored
-11) WARNING: Unknown keyword '***'.  Line 1092 ignored
-12) WARNING: Unknown keyword '***'.  Line 1188 ignored
-13) WARNING: Unknown keyword '***'.  Line 1398 ignored
-14) WARNING: Unknown keyword '***'.  Line 1411 ignored
-Creating ROFS2 symbol file
-+++ HiRes End 1226580326.70968
-++ Finished at Thu Nov 13 14:45:26 2008
-=== config_2 == configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_14
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_14
-++ Started at Thu Nov 13 14:45:27 2008
-+++ HiRes Start 1226580327.39717
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=subcon"  langpack_14  WORKDIR=\epoc32\rombuild\imaker_temp/conf_37
-iMaker 08.43.01, 20-Oct-2008.
-Variant target             USE_VARIANTBLD = `2'
-Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_14'
-Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_14/language_variant.mk'
-Variant include directory  VARIANT_INCDIR = -
-Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_14/variant.confml'
-Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
-Variant SIS directory      VARIANT_SISDIR = -
-Variant operator cache dir VARIANT_OPCDIR = -
-Variant zip content dir    VARIANT_ZIPDIR = -
-Variant copy content dir   VARIANT_CPDIR  = -
-Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/subcon/langpack/langpack_14/variant'
-Calling S60 Configuration Tool
-Generating file(s) for ROFS2 image creation
-Generating language files for Language Package image creation
-Creating ROFS2 SOS image
-
-Missing file(s):
- 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(42): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
- 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(43): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r02' in statement 'data='
- 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(44): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r03' in statement 'data='
- 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(45): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r05' in statement 'data='
- 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(46): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r18' in statement 'data='
- 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(40): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\02\appshelldata.dtd' in statement 'data='
- 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\03\appshelldata.dtd' in statement 'data='
- 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\05\appshelldata.dtd' in statement 'data='
- 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\18\appshelldata.dtd' in statement 'data='
-10) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(46): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0002' in statement 'data='
-11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(47): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0003' in statement 'data='
-12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(48): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0005' in statement 'data='
-13) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(49): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0018' in statement 'data='
-14) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0002' in statement 'data='
-15) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(52): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0003' in statement 'data='
-16) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(53): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0005' in statement 'data='
-17) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(54): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0018' in statement 'data='
-18) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(65): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
-19) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(66): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0002' in statement 'data='
-20) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(67): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0003' in statement 'data='
-21) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(68): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0005' in statement 'data='
-22) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(69): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0018' in statement 'data='
-23) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(74): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
-24) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(75): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0002' in statement 'data='
-25) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(76): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0003' in statement 'data='
-26) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(77): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0005' in statement 'data='
-27) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(78): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0018' in statement 'data='
-28) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(83): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
-29) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(84): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0002' in statement 'data='
-30) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(85): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0003' in statement 'data='
-31) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(86): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0005' in statement 'data='
-32) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(87): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0018' in statement 'data='
-33) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(92): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
-34) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(93): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0002' in statement 'data='
-35) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(94): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0003' in statement 'data='
-36) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(95): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0005' in statement 'data='
-37) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(96): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0018' in statement 'data='
-38) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
-39) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
-40) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
-41) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
-42) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
-43) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
-44) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
-45) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
-
-Warning(s):
- 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
- 2) *Initialization*:1: warning: this is the location of the previous definition
- 3) WARNING: Unknown keyword ''.  Line 319 ignored
- 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1693 ignored
- 5) WARNING: Unknown keyword '***'.  Line 2232 ignored
- 6) WARNING: Unknown keyword '***'.  Line 2424 ignored
- 7) WARNING: Unknown keyword '***'.  Line 2847 ignored
- 8) WARNING: Unknown keyword '***'.  Line 2875 ignored
- 9) WARNING: Unknown keyword ''.  Line 319 ignored
-10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1693 ignored
-11) WARNING: Unknown keyword '***'.  Line 2232 ignored
-12) WARNING: Unknown keyword '***'.  Line 2424 ignored
-13) WARNING: Unknown keyword '***'.  Line 2847 ignored
-14) WARNING: Unknown keyword '***'.  Line 2875 ignored
-Creating ROFS2 symbol file
-+++ HiRes End 1226580373.85
-++ Finished at Thu Nov 13 14:46:13 2008
-=== config_2 == configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_16
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_16
-++ Started at Thu Nov 13 14:46:14 2008
-+++ HiRes Start 1226580374.99062
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=subcon"  langpack_16  WORKDIR=\epoc32\rombuild\imaker_temp/conf_38
-iMaker 08.43.01, 20-Oct-2008.
-Variant target             USE_VARIANTBLD = `2'
-Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_16'
-Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_16/language_variant.mk'
-Variant include directory  VARIANT_INCDIR = -
-Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_16/variant.confml'
-Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
-Variant SIS directory      VARIANT_SISDIR = -
-Variant operator cache dir VARIANT_OPCDIR = -
-Variant zip content dir    VARIANT_ZIPDIR = -
-Variant copy content dir   VARIANT_CPDIR  = -
-Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/subcon/langpack/langpack_16/variant'
-Calling S60 Configuration Tool
-Generating file(s) for ROFS2 image creation
-Generating language files for Language Package image creation
-Creating ROFS2 SOS image
-
-Missing file(s):
- 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(42): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r02' in statement 'data='
- 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(43): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r10' in statement 'data='
- 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(44): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r18' in statement 'data='
- 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(45): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r76' in statement 'data='
- 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(46): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r83' in statement 'data='
- 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(39): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\02\appshelldata.dtd' in statement 'data='
- 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(40): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\10\appshelldata.dtd' in statement 'data='
- 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\18\appshelldata.dtd' in statement 'data='
- 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\76\appshelldata.dtd' in statement 'data='
-10) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\83\appshelldata.dtd' in statement 'data='
-11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0002' in statement 'data='
-12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(46): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0010' in statement 'data='
-13) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(47): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0018' in statement 'data='
-14) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(48): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0076' in statement 'data='
-15) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(49): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0083' in statement 'data='
-16) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0002' in statement 'data='
-17) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0010' in statement 'data='
-18) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(52): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0018' in statement 'data='
-19) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(53): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0076' in statement 'data='
-20) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(54): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0083' in statement 'data='
-21) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(65): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0002' in statement 'data='
-22) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(66): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0010' in statement 'data='
-23) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(67): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0018' in statement 'data='
-24) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(68): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0076' in statement 'data='
-25) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(69): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0083' in statement 'data='
-26) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(74): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0002' in statement 'data='
-27) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(75): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0010' in statement 'data='
-28) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(76): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0018' in statement 'data='
-29) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(77): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0076' in statement 'data='
-30) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(78): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0083' in statement 'data='
-31) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(83): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0002' in statement 'data='
-32) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(84): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0010' in statement 'data='
-33) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(85): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0018' in statement 'data='
-34) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(86): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0076' in statement 'data='
-35) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(87): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0083' in statement 'data='
-36) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(92): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0002' in statement 'data='
-37) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(93): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0010' in statement 'data='
-38) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(94): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0018' in statement 'data='
-39) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(95): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0076' in statement 'data='
-40) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(96): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0083' in statement 'data='
-
-Warning(s):
- 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
- 2) *Initialization*:1: warning: this is the location of the previous definition
- 3) WARNING: Unknown keyword ''.  Line 319 ignored
- 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1695 ignored
- 5) WARNING: Unknown keyword '***'.  Line 2234 ignored
- 6) WARNING: Unknown keyword '***'.  Line 2426 ignored
- 7) WARNING: Unknown keyword '***'.  Line 2849 ignored
- 8) WARNING: Unknown keyword '***'.  Line 2877 ignored
- 9) WARNING: Unknown keyword ''.  Line 319 ignored
-10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1695 ignored
-11) WARNING: Unknown keyword '***'.  Line 2234 ignored
-12) WARNING: Unknown keyword '***'.  Line 2426 ignored
-13) WARNING: Unknown keyword '***'.  Line 2849 ignored
-14) WARNING: Unknown keyword '***'.  Line 2877 ignored
-Creating ROFS2 symbol file
-+++ HiRes End 1226580424.50592
-++ Finished at Thu Nov 13 14:47:04 2008
-=== config_2 == configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_17
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_17
-++ Started at Thu Nov 13 14:47:05 2008
-+++ HiRes Start 1226580425.64654
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=subcon"  langpack_17  WORKDIR=\epoc32\rombuild\imaker_temp/conf_39
-iMaker 08.43.01, 20-Oct-2008.
-Variant target             USE_VARIANTBLD = `2'
-Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_17'
-Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_17/language_variant.mk'
-Variant include directory  VARIANT_INCDIR = -
-Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_17/variant.confml'
-Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
-Variant SIS directory      VARIANT_SISDIR = -
-Variant operator cache dir VARIANT_OPCDIR = -
-Variant zip content dir    VARIANT_ZIPDIR = -
-Variant copy content dir   VARIANT_CPDIR  = -
-Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/subcon/langpack/langpack_17/variant'
-Calling S60 Configuration Tool
-Generating file(s) for ROFS2 image creation
-Generating language files for Language Package image creation
-Creating ROFS2 SOS image
-
-Missing file(s):
- 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(37): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r10' in statement 'data='
- 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(38): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r51' in statement 'data='
- 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(39): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r76' in statement 'data='
- 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(40): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r83' in statement 'data='
- 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(38): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\10\appshelldata.dtd' in statement 'data='
- 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(39): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\51\appshelldata.dtd' in statement 'data='
- 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(40): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\76\appshelldata.dtd' in statement 'data='
- 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\83\appshelldata.dtd' in statement 'data='
- 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0010' in statement 'data='
-10) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(44): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0051' in statement 'data='
-11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0076' in statement 'data='
-12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(46): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0083' in statement 'data='
-13) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(47): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0010' in statement 'data='
-14) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(48): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0051' in statement 'data='
-15) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(49): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0076' in statement 'data='
-16) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0083' in statement 'data='
-17) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(60): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0010' in statement 'data='
-18) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(61): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0051' in statement 'data='
-19) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(62): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0076' in statement 'data='
-20) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(63): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0083' in statement 'data='
-21) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(68): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0010' in statement 'data='
-22) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(69): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0051' in statement 'data='
-23) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(70): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0076' in statement 'data='
-24) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(71): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0083' in statement 'data='
-25) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(76): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0010' in statement 'data='
-26) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(77): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0051' in statement 'data='
-27) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(78): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0076' in statement 'data='
-28) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(79): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0083' in statement 'data='
-29) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(84): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0010' in statement 'data='
-30) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(85): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0051' in statement 'data='
-31) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(86): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0076' in statement 'data='
-32) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(87): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0083' in statement 'data='
-
-Warning(s):
- 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
- 2) *Initialization*:1: warning: this is the location of the previous definition
- 3) WARNING: Unknown keyword ''.  Line 268 ignored
- 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1406 ignored
- 5) WARNING: Unknown keyword '***'.  Line 1854 ignored
- 6) WARNING: Unknown keyword '***'.  Line 2014 ignored
- 7) WARNING: Unknown keyword '***'.  Line 2366 ignored
- 8) WARNING: Unknown keyword '***'.  Line 2389 ignored
- 9) WARNING: Unknown keyword ''.  Line 268 ignored
-10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1406 ignored
-11) WARNING: Unknown keyword '***'.  Line 1854 ignored
-12) WARNING: Unknown keyword '***'.  Line 2014 ignored
-13) WARNING: Unknown keyword '***'.  Line 2366 ignored
-14) WARNING: Unknown keyword '***'.  Line 2389 ignored
-Creating ROFS2 symbol file
-+++ HiRes End 1226580468.27127
-++ Finished at Thu Nov 13 14:47:48 2008
-=== config_2 == configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_18
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_18
-++ Started at Thu Nov 13 14:47:49 2008
-+++ HiRes Start 1226580469.27126
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=subcon"  langpack_18  WORKDIR=\epoc32\rombuild\imaker_temp/conf_40
-iMaker 08.43.01, 20-Oct-2008.
-Variant target             USE_VARIANTBLD = `2'
-Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_18'
-Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_18/language_variant.mk'
-Variant include directory  VARIANT_INCDIR = -
-Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_18/variant.confml'
-Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
-Variant SIS directory      VARIANT_SISDIR = -
-Variant operator cache dir VARIANT_OPCDIR = -
-Variant zip content dir    VARIANT_ZIPDIR = -
-Variant copy content dir   VARIANT_CPDIR  = -
-Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/subcon/langpack/langpack_18/variant'
-Calling S60 Configuration Tool
-Generating file(s) for ROFS2 image creation
-Generating language files for Language Package image creation
-Creating ROFS2 SOS image
-
-Missing file(s):
- 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(27): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
- 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(28): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r33' in statement 'data='
- 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(37): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\33\appshelldata.dtd' in statement 'data='
- 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(40): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0033' in statement 'data='
- 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0033' in statement 'data='
- 6) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
- 7) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0033' in statement 'data='
- 8) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
- 9) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0033' in statement 'data='
-10) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(62): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
-11) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(63): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0033' in statement 'data='
-12) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(68): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
-13) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(69): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0033' in statement 'data='
-14) Y:\epoc32\rom\Variant\localized_resources.iby(905): Missing file: '\epoc32\data\Z\resource\CalenThaiPluginData.r33' in statement 'data='
-15) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
-16) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
-17) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
-18) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
-19) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
-20) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
-21) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
-22) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
-
-Warning(s):
- 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
- 2) *Initialization*:1: warning: this is the location of the previous definition
- 3) WARNING: Unknown keyword ''.  Line 166 ignored
- 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 826 ignored
- 5) WARNING: Unknown keyword '***'.  Line 1092 ignored
- 6) WARNING: Unknown keyword '***'.  Line 1188 ignored
- 7) WARNING: Unknown keyword '***'.  Line 1398 ignored
- 8) WARNING: Unknown keyword '***'.  Line 1411 ignored
- 9) WARNING: Unknown keyword ''.  Line 166 ignored
-10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 826 ignored
-11) WARNING: Unknown keyword '***'.  Line 1092 ignored
-12) WARNING: Unknown keyword '***'.  Line 1188 ignored
-13) WARNING: Unknown keyword '***'.  Line 1398 ignored
-14) WARNING: Unknown keyword '***'.  Line 1411 ignored
-Creating ROFS2 symbol file
-+++ HiRes End 1226580502.8023
-++ Finished at Thu Nov 13 14:48:22 2008
-=== config_2 == configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_19
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_19
-++ Started at Thu Nov 13 14:48:23 2008
-+++ HiRes Start 1226580503.52104
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=subcon"  langpack_19  WORKDIR=\epoc32\rombuild\imaker_temp/conf_41
-iMaker 08.43.01, 20-Oct-2008.
-Variant target             USE_VARIANTBLD = `2'
-Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_19'
-Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_19/language_variant.mk'
-Variant include directory  VARIANT_INCDIR = -
-Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_19/variant.confml'
-Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
-Variant SIS directory      VARIANT_SISDIR = -
-Variant operator cache dir VARIANT_OPCDIR = -
-Variant zip content dir    VARIANT_ZIPDIR = -
-Variant copy content dir   VARIANT_CPDIR  = -
-Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/subcon/langpack/langpack_19/variant'
-Calling S60 Configuration Tool
-Generating file(s) for ROFS2 image creation
-Generating language files for Language Package image creation
-Creating ROFS2 SOS image
-
-Missing file(s):
- 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(27): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
- 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(28): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r39' in statement 'data='
- 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(37): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\39\appshelldata.dtd' in statement 'data='
- 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(40): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0039' in statement 'data='
- 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0039' in statement 'data='
- 6) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
- 7) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0039' in statement 'data='
- 8) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
- 9) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0039' in statement 'data='
-10) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(62): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
-11) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(63): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0039' in statement 'data='
-12) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(68): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
-13) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(69): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0039' in statement 'data='
-14) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
-15) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
-16) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
-17) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
-18) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
-19) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
-20) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
-21) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
-
-Warning(s):
- 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
- 2) *Initialization*:1: warning: this is the location of the previous definition
- 3) WARNING: Unknown keyword ''.  Line 166 ignored
- 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 826 ignored
- 5) WARNING: Unknown keyword '***'.  Line 1092 ignored
- 6) WARNING: Unknown keyword '***'.  Line 1188 ignored
- 7) WARNING: Unknown keyword '***'.  Line 1398 ignored
- 8) WARNING: Unknown keyword '***'.  Line 1411 ignored
- 9) WARNING: Unknown keyword ''.  Line 166 ignored
-10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 826 ignored
-11) WARNING: Unknown keyword '***'.  Line 1092 ignored
-12) WARNING: Unknown keyword '***'.  Line 1188 ignored
-13) WARNING: Unknown keyword '***'.  Line 1398 ignored
-14) WARNING: Unknown keyword '***'.  Line 1411 ignored
-Creating ROFS2 symbol file
-+++ HiRes End 1226580537.14583
-++ Finished at Thu Nov 13 14:48:57 2008
-=== config_2 == configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_20
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_20
-++ Started at Thu Nov 13 14:48:57 2008
-+++ HiRes Start 1226580537.91145
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=subcon"  langpack_20  WORKDIR=\epoc32\rombuild\imaker_temp/conf_42
-iMaker 08.43.01, 20-Oct-2008.
-Variant target             USE_VARIANTBLD = `2'
-Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_20'
-Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_20/language_variant.mk'
-Variant include directory  VARIANT_INCDIR = -
-Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_20/variant.confml'
-Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
-Variant SIS directory      VARIANT_SISDIR = -
-Variant operator cache dir VARIANT_OPCDIR = -
-Variant zip content dir    VARIANT_ZIPDIR = -
-Variant copy content dir   VARIANT_CPDIR  = -
-Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/subcon/langpack/langpack_20/variant'
-Calling S60 Configuration Tool
-Generating file(s) for ROFS2 image creation
-Generating language files for Language Package image creation
-Creating ROFS2 SOS image
-
-Missing file(s):
- 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(27): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r01' in statement 'data='
- 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(28): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r96' in statement 'data='
- 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(37): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\96\appshelldata.dtd' in statement 'data='
- 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(40): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0096' in statement 'data='
- 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0096' in statement 'data='
- 6) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0001' in statement 'data='
- 7) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0096' in statement 'data='
- 8) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0001' in statement 'data='
- 9) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0096' in statement 'data='
-10) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(62): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0001' in statement 'data='
-11) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(63): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0096' in statement 'data='
-12) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(68): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0001' in statement 'data='
-13) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(69): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0096' in statement 'data='
-14) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(310): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\contents.zip' in statement 'data='
-15) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(311): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\index.xml' in statement 'data='
-16) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(312): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\keywords.xml' in statement 'data='
-17) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(313): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10281BA0\meta.xml' in statement 'data='
-18) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(326): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\contents.zip' in statement 'data='
-19) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(327): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\index.xml' in statement 'data='
-20) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(328): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\keywords.xml' in statement 'data='
-21) ..\..\..\..\..\..\epoc32\rom\include\customer\app\S60helps_variant.iby(329): Missing file: '\epoc32\data\Z\resource\xhtml\01\0x10282411\meta.xml' in statement 'data='
-
-Warning(s):
- 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
- 2) *Initialization*:1: warning: this is the location of the previous definition
- 3) WARNING: Unknown keyword ''.  Line 166 ignored
- 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 826 ignored
- 5) WARNING: Unknown keyword '***'.  Line 1092 ignored
- 6) WARNING: Unknown keyword '***'.  Line 1188 ignored
- 7) WARNING: Unknown keyword '***'.  Line 1398 ignored
- 8) WARNING: Unknown keyword '***'.  Line 1411 ignored
- 9) WARNING: Unknown keyword ''.  Line 166 ignored
-10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 826 ignored
-11) WARNING: Unknown keyword '***'.  Line 1092 ignored
-12) WARNING: Unknown keyword '***'.  Line 1188 ignored
-13) WARNING: Unknown keyword '***'.  Line 1398 ignored
-14) WARNING: Unknown keyword '***'.  Line 1411 ignored
-Creating ROFS2 symbol file
-+++ HiRes End 1226580571.02061
-++ Finished at Thu Nov 13 14:49:31 2008
-=== config_2 == configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_22
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_22
-++ Started at Thu Nov 13 14:49:31 2008
-+++ HiRes Start 1226580571.72373
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=subcon"  langpack_22  WORKDIR=\epoc32\rombuild\imaker_temp/conf_43
-iMaker 08.43.01, 20-Oct-2008.
-Variant target             USE_VARIANTBLD = `2'
-Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_22'
-Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_22/language_variant.mk'
-Variant include directory  VARIANT_INCDIR = -
-Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_22/variant.confml'
-Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
-Variant SIS directory      VARIANT_SISDIR = -
-Variant operator cache dir VARIANT_OPCDIR = -
-Variant zip content dir    VARIANT_ZIPDIR = -
-Variant copy content dir   VARIANT_CPDIR  = -
-Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/subcon/langpack/langpack_22/variant'
-Calling S60 Configuration Tool
-Generating file(s) for ROFS2 image creation
-Generating language files for Language Package image creation
-Creating ROFS2 SOS image
-
-Missing file(s):
- 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(37): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r159' in statement 'data='
- 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(38): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r31' in statement 'data='
- 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(39): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r326' in statement 'data='
- 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(40): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r327' in statement 'data='
- 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(38): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\159\appshelldata.dtd' in statement 'data='
- 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(39): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\31\appshelldata.dtd' in statement 'data='
- 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(40): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\326\appshelldata.dtd' in statement 'data='
- 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\327\appshelldata.dtd' in statement 'data='
- 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0159' in statement 'data='
-10) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(44): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0031' in statement 'data='
-11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0326' in statement 'data='
-12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(46): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0327' in statement 'data='
-13) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(47): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0159' in statement 'data='
-14) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(48): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0031' in statement 'data='
-15) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(49): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0326' in statement 'data='
-16) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0327' in statement 'data='
-17) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(60): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0159' in statement 'data='
-18) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(61): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0031' in statement 'data='
-19) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(62): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0326' in statement 'data='
-20) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(63): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0327' in statement 'data='
-21) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(68): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0159' in statement 'data='
-22) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(69): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0031' in statement 'data='
-23) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(70): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0326' in statement 'data='
-24) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(71): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0327' in statement 'data='
-25) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(76): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0159' in statement 'data='
-26) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(77): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0031' in statement 'data='
-27) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(78): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0326' in statement 'data='
-28) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(79): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0327' in statement 'data='
-29) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(84): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0159' in statement 'data='
-30) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(85): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0031' in statement 'data='
-31) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(86): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0326' in statement 'data='
-32) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(87): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0327' in statement 'data='
-
-Warning(s):
- 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
- 2) *Initialization*:1: warning: this is the location of the previous definition
- 3) WARNING: Unknown keyword ''.  Line 268 ignored
- 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1406 ignored
- 5) WARNING: Unknown keyword '***'.  Line 1854 ignored
- 6) WARNING: Unknown keyword '***'.  Line 2014 ignored
- 7) WARNING: Unknown keyword '***'.  Line 2366 ignored
- 8) WARNING: Unknown keyword '***'.  Line 2389 ignored
- 9) WARNING: Unknown keyword ''.  Line 268 ignored
-10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1406 ignored
-11) WARNING: Unknown keyword '***'.  Line 1854 ignored
-12) WARNING: Unknown keyword '***'.  Line 2014 ignored
-13) WARNING: Unknown keyword '***'.  Line 2366 ignored
-14) WARNING: Unknown keyword '***'.  Line 2389 ignored
-Creating ROFS2 symbol file
-+++ HiRes End 1226580610.19224
-++ Finished at Thu Nov 13 14:50:10 2008
-=== config_2 == configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_23
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_23
-++ Started at Thu Nov 13 14:50:11 2008
-+++ HiRes Start 1226580611.27035
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=subcon"  langpack_23  WORKDIR=\epoc32\rombuild\imaker_temp/conf_44
-iMaker 08.43.01, 20-Oct-2008.
-Variant target             USE_VARIANTBLD = `2'
-Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_23'
-Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_23/language_variant.mk'
-Variant include directory  VARIANT_INCDIR = -
-Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_23/variant.confml'
-Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
-Variant SIS directory      VARIANT_SISDIR = -
-Variant operator cache dir VARIANT_OPCDIR = -
-Variant zip content dir    VARIANT_ZIPDIR = -
-Variant copy content dir   VARIANT_CPDIR  = -
-Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/subcon/langpack/langpack_23/variant'
-Calling S60 Configuration Tool
-Generating file(s) for ROFS2 image creation
-Generating language files for Language Package image creation
-Creating ROFS2 SOS image
-
-Missing file(s):
- 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(32): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r158' in statement 'data='
- 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(33): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r30' in statement 'data='
- 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(34): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r31' in statement 'data='
- 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(37): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\158\appshelldata.dtd' in statement 'data='
- 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(38): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\30\appshelldata.dtd' in statement 'data='
- 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(39): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\31\appshelldata.dtd' in statement 'data='
- 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0158' in statement 'data='
- 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0030' in statement 'data='
- 9) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(43): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0031' in statement 'data='
-10) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(44): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0158' in statement 'data='
-11) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(45): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0030' in statement 'data='
-12) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(46): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0031' in statement 'data='
-13) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(55): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0158' in statement 'data='
-14) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0030' in statement 'data='
-15) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0031' in statement 'data='
-16) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(62): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0158' in statement 'data='
-17) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(63): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0030' in statement 'data='
-18) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(64): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0031' in statement 'data='
-19) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(69): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0158' in statement 'data='
-20) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(70): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0030' in statement 'data='
-21) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(71): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0031' in statement 'data='
-22) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(76): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0158' in statement 'data='
-23) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(77): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0030' in statement 'data='
-24) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(78): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0031' in statement 'data='
-
-Warning(s):
- 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
- 2) *Initialization*:1: warning: this is the location of the previous definition
- 3) WARNING: Unknown keyword ''.  Line 217 ignored
- 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1117 ignored
- 5) WARNING: Unknown keyword '***'.  Line 1474 ignored
- 6) WARNING: Unknown keyword '***'.  Line 1602 ignored
- 7) WARNING: Unknown keyword '***'.  Line 1883 ignored
- 8) WARNING: Unknown keyword '***'.  Line 1901 ignored
- 9) WARNING: Unknown keyword ''.  Line 217 ignored
-10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 1117 ignored
-11) WARNING: Unknown keyword '***'.  Line 1474 ignored
-12) WARNING: Unknown keyword '***'.  Line 1602 ignored
-13) WARNING: Unknown keyword '***'.  Line 1883 ignored
-14) WARNING: Unknown keyword '***'.  Line 1901 ignored
-Creating ROFS2 symbol file
-+++ HiRes End 1226580648.41074
-++ Finished at Thu Nov 13 14:50:48 2008
-=== config_2 == configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_24
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_24
-++ Started at Thu Nov 13 14:50:49 2008
-+++ HiRes Start 1226580649.25449
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=subcon"  langpack_24  WORKDIR=\epoc32\rombuild\imaker_temp/conf_45
-iMaker 08.43.01, 20-Oct-2008.
-Variant target             USE_VARIANTBLD = `2'
-Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_24'
-Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_24/language_variant.mk'
-Variant include directory  VARIANT_INCDIR = -
-Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_24/variant.confml'
-Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
-Variant SIS directory      VARIANT_SISDIR = -
-Variant operator cache dir VARIANT_OPCDIR = -
-Variant zip content dir    VARIANT_ZIPDIR = -
-Variant copy content dir   VARIANT_CPDIR  = -
-Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/subcon/langpack/langpack_24/variant'
-Calling S60 Configuration Tool
-Generating file(s) for ROFS2 image creation
-Generating language files for Language Package image creation
-Creating ROFS2 SOS image
-
-Missing file(s):
- 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(27): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r157' in statement 'data='
- 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(28): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r29' in statement 'data='
- 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(36): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\157\appshelldata.dtd' in statement 'data='
- 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(37): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\29\appshelldata.dtd' in statement 'data='
- 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(39): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0157' in statement 'data='
- 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(40): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0029' in statement 'data='
- 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0157' in statement 'data='
- 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0029' in statement 'data='
- 9) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0157' in statement 'data='
-10) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0029' in statement 'data='
-11) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0157' in statement 'data='
-12) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0029' in statement 'data='
-13) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(62): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0157' in statement 'data='
-14) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(63): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0029' in statement 'data='
-15) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(68): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0157' in statement 'data='
-16) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(69): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0029' in statement 'data='
-
-Warning(s):
- 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
- 2) *Initialization*:1: warning: this is the location of the previous definition
- 3) WARNING: Unknown keyword ''.  Line 166 ignored
- 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 828 ignored
- 5) WARNING: Unknown keyword '***'.  Line 1094 ignored
- 6) WARNING: Unknown keyword '***'.  Line 1190 ignored
- 7) WARNING: Unknown keyword '***'.  Line 1400 ignored
- 8) WARNING: Unknown keyword '***'.  Line 1413 ignored
- 9) WARNING: Unknown keyword ''.  Line 166 ignored
-10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 828 ignored
-11) WARNING: Unknown keyword '***'.  Line 1094 ignored
-12) WARNING: Unknown keyword '***'.  Line 1190 ignored
-13) WARNING: Unknown keyword '***'.  Line 1400 ignored
-14) WARNING: Unknown keyword '***'.  Line 1413 ignored
-Creating ROFS2 symbol file
-+++ HiRes End 1226580682.41052
-++ Finished at Thu Nov 13 14:51:22 2008
-=== config_2 == configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_25
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_25
-++ Started at Thu Nov 13 14:51:23 2008
-+++ HiRes Start 1226580683.06677
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=subcon"  langpack_25  WORKDIR=\epoc32\rombuild\imaker_temp/conf_46
-iMaker 08.43.01, 20-Oct-2008.
-Variant target             USE_VARIANTBLD = `2'
-Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_25'
-Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_25/language_variant.mk'
-Variant include directory  VARIANT_INCDIR = -
-Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_25/variant.confml'
-Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
-Variant SIS directory      VARIANT_SISDIR = -
-Variant operator cache dir VARIANT_OPCDIR = -
-Variant zip content dir    VARIANT_ZIPDIR = -
-Variant copy content dir   VARIANT_CPDIR  = -
-Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/subcon/langpack/langpack_25/variant'
-Calling S60 Configuration Tool
-Generating file(s) for ROFS2 image creation
-Generating language files for Language Package image creation
-Creating ROFS2 SOS image
-
-Missing file(s):
- 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(27): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r159' in statement 'data='
- 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(28): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r31' in statement 'data='
- 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(36): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\159\appshelldata.dtd' in statement 'data='
- 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(37): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\31\appshelldata.dtd' in statement 'data='
- 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(39): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0159' in statement 'data='
- 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(40): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0031' in statement 'data='
- 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0159' in statement 'data='
- 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0031' in statement 'data='
- 9) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0159' in statement 'data='
-10) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0031' in statement 'data='
-11) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0159' in statement 'data='
-12) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0031' in statement 'data='
-13) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(62): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0159' in statement 'data='
-14) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(63): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0031' in statement 'data='
-15) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(68): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0159' in statement 'data='
-16) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(69): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0031' in statement 'data='
-
-Warning(s):
- 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
- 2) *Initialization*:1: warning: this is the location of the previous definition
- 3) WARNING: Unknown keyword ''.  Line 166 ignored
- 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 828 ignored
- 5) WARNING: Unknown keyword '***'.  Line 1094 ignored
- 6) WARNING: Unknown keyword '***'.  Line 1190 ignored
- 7) WARNING: Unknown keyword '***'.  Line 1400 ignored
- 8) WARNING: Unknown keyword '***'.  Line 1413 ignored
- 9) WARNING: Unknown keyword ''.  Line 166 ignored
-10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 828 ignored
-11) WARNING: Unknown keyword '***'.  Line 1094 ignored
-12) WARNING: Unknown keyword '***'.  Line 1190 ignored
-13) WARNING: Unknown keyword '***'.  Line 1400 ignored
-14) WARNING: Unknown keyword '***'.  Line 1413 ignored
-Creating ROFS2 symbol file
-+++ HiRes End 1226580714.37907
-++ Finished at Thu Nov 13 14:51:54 2008
-=== config_2 == configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_27
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=image ... langpack_27
-++ Started at Thu Nov 13 14:51:55 2008
-+++ HiRes Start 1226580715.05094
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=image "TYPE=subcon"  langpack_27  WORKDIR=\epoc32\rombuild\imaker_temp/conf_47
-iMaker 08.43.01, 20-Oct-2008.
-Variant target             USE_VARIANTBLD = `2'
-Variant directory          VARIANT_DIR    = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_27'
-Variant config makefile    VARIANT_MK     = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_27/language_variant.mk'
-Variant include directory  VARIANT_INCDIR = -
-Variant confml file        VARIANT_CONFML = `Y:/epoc32/rom/config/platform/devlon52/language/langpack_27/variant.confml'
-Variant CenRep configs     VARIANT_CONFCP = `5251  devlon52  variant'
-Variant SIS directory      VARIANT_SISDIR = -
-Variant operator cache dir VARIANT_OPCDIR = -
-Variant zip content dir    VARIANT_ZIPDIR = -
-Variant copy content dir   VARIANT_CPDIR  = -
-Variant output directory   VARIANT_OUTDIR = `y:\output/release_flash_images/devlon52/subcon/langpack/langpack_27/variant'
-Calling S60 Configuration Tool
-Generating file(s) for ROFS2 image creation
-Generating language files for Language Package image creation
-Creating ROFS2 SOS image
-
-Missing file(s):
- 1) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(27): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r160' in statement 'data='
- 2) ..\..\..\..\..\..\epoc32\rom\include\language\app\IpVideoResources.iby(28): Missing file: '\epoc32\data\Z\resource\apps\vcxnsappui_test.r32' in statement 'data='
- 3) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(36): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\160\appshelldata.dtd' in statement 'data='
- 4) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(37): Missing file: '\epoc32\data\Z\Private\101F4CD2\Content\32\appshelldata.dtd' in statement 'data='
- 5) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(39): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0160' in statement 'data='
- 6) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(40): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067333\1.0\hasclassicgrid.o0032' in statement 'data='
- 7) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(41): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0160' in statement 'data='
- 8) ..\..\..\..\..\..\epoc32\rom\include\language\app\menu3_resources.iby(42): Missing file: '\epoc32\data\Z\Private\10207254\themes\270486738\270513751\271067334\1.0\hasclassiclist.o0032' in statement 'data='
- 9) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(50): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0160' in statement 'data='
-10) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(51): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063149\1.0\AI.o0032' in statement 'data='
-11) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(56): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0160' in statement 'data='
-12) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(57): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063148\1.0\BI.o0032' in statement 'data='
-13) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(62): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0160' in statement 'data='
-14) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(63): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271063147\1.0\CI.o0032' in statement 'data='
-15) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(68): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0160' in statement 'data='
-16) ..\..\..\..\..\..\epoc32\rom\include\language\mw\activeidle2_resources.iby(69): Missing file: '\epoc32\data\Z\Private\10207254\themes\271012080\270513751\271068379\1.0\FT.o0032' in statement 'data='
-
-Warning(s):
- 1) Y:\epoc32\include\config\platform\devlon52\ncp_feature_settings.hrh:38: warning: `DEVLON52' redefined
- 2) *Initialization*:1: warning: this is the location of the previous definition
- 3) WARNING: Unknown keyword ''.  Line 166 ignored
- 4) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 828 ignored
- 5) WARNING: Unknown keyword '***'.  Line 1094 ignored
- 6) WARNING: Unknown keyword '***'.  Line 1190 ignored
- 7) WARNING: Unknown keyword '***'.  Line 1400 ignored
- 8) WARNING: Unknown keyword '***'.  Line 1413 ignored
- 9) WARNING: Unknown keyword ''.  Line 166 ignored
-10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 828 ignored
-11) WARNING: Unknown keyword '***'.  Line 1094 ignored
-12) WARNING: Unknown keyword '***'.  Line 1190 ignored
-13) WARNING: Unknown keyword '***'.  Line 1400 ignored
-14) WARNING: Unknown keyword '***'.  Line 1413 ignored
-Creating ROFS2 symbol file
-+++ HiRes End 1226580747.58198
-++ Finished at Thu Nov 13 14:52:27 2008
-=== config_2 == signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_core
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... core
-++ Started at Thu Nov 13 14:52:28 2008
-+++ HiRes Start 1226580748.17016
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=subcon"  core  WORKDIR=\epoc32\rombuild\imaker_temp/conf_24
-iMaker 08.43.01, 20-Oct-2008.
-Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
-Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
-*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
-make: [signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_core] Error 1 (ignored)
-+++ HiRes End 1226580748.32641
-++ Finished at Thu Nov 13 14:52:28 2008
-=== config_2 == signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_01
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_01
-++ Started at Thu Nov 13 14:52:28 2008
-+++ HiRes Start 1226580748.42015
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=subcon"  langpack_01  WORKDIR=\epoc32\rombuild\imaker_temp/conf_25
-iMaker 08.43.01, 20-Oct-2008.
-Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
-Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
-*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
-make: [signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_01] Error 1 (ignored)
-+++ HiRes End 1226580748.5764
-++ Finished at Thu Nov 13 14:52:28 2008
-=== config_2 == signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_02
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_02
-++ Started at Thu Nov 13 14:52:28 2008
-+++ HiRes Start 1226580748.67015
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=subcon"  langpack_02  WORKDIR=\epoc32\rombuild\imaker_temp/conf_26
-iMaker 08.43.01, 20-Oct-2008.
-Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
-Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
-*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
-make: [signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_02] Error 1 (ignored)
-+++ HiRes End 1226580748.84202
-++ Finished at Thu Nov 13 14:52:28 2008
-=== config_2 == signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_03
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_03
-++ Started at Thu Nov 13 14:52:28 2008
-+++ HiRes Start 1226580748.93576
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=subcon"  langpack_03  WORKDIR=\epoc32\rombuild\imaker_temp/conf_27
-iMaker 08.43.01, 20-Oct-2008.
-Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
-Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
-*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
-make: [signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_03] Error 1 (ignored)
-+++ HiRes End 1226580749.09201
-++ Finished at Thu Nov 13 14:52:29 2008
-=== config_2 == signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_04
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_04
-++ Started at Thu Nov 13 14:52:29 2008
-+++ HiRes Start 1226580749.18576
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=subcon"  langpack_04  WORKDIR=\epoc32\rombuild\imaker_temp/conf_28
-iMaker 08.43.01, 20-Oct-2008.
-Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
-Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
-*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
-make: [signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_04] Error 1 (ignored)
-+++ HiRes End 1226580749.342
-++ Finished at Thu Nov 13 14:52:29 2008
-=== config_2 == signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_05
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_05
-++ Started at Thu Nov 13 14:52:29 2008
-+++ HiRes Start 1226580749.43575
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=subcon"  langpack_05  WORKDIR=\epoc32\rombuild\imaker_temp/conf_29
-iMaker 08.43.01, 20-Oct-2008.
-Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
-Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
-*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
-make: [signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_05] Error 1 (ignored)
-+++ HiRes End 1226580749.592
-++ Finished at Thu Nov 13 14:52:29 2008
-=== config_2 == signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_06
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_06
-++ Started at Thu Nov 13 14:52:29 2008
-+++ HiRes Start 1226580749.68575
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=subcon"  langpack_06  WORKDIR=\epoc32\rombuild\imaker_temp/conf_30
-iMaker 08.43.01, 20-Oct-2008.
-Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
-Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
-*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
-make: [signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_06] Error 1 (ignored)
-+++ HiRes End 1226580749.85762
-++ Finished at Thu Nov 13 14:52:29 2008
-=== config_2 == signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_07
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_07
-++ Started at Thu Nov 13 14:52:29 2008
-+++ HiRes Start 1226580749.95136
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=subcon"  langpack_07  WORKDIR=\epoc32\rombuild\imaker_temp/conf_31
-iMaker 08.43.01, 20-Oct-2008.
-Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
-Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
-*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
-make: [signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_07] Error 1 (ignored)
-+++ HiRes End 1226580750.10761
-++ Finished at Thu Nov 13 14:52:30 2008
-=== config_2 == signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_08
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_08
-++ Started at Thu Nov 13 14:52:30 2008
-+++ HiRes Start 1226580750.20136
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=subcon"  langpack_08  WORKDIR=\epoc32\rombuild\imaker_temp/conf_32
-iMaker 08.43.01, 20-Oct-2008.
-Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
-Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
-*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
-make: [signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_08] Error 1 (ignored)
-+++ HiRes End 1226580750.3576
-++ Finished at Thu Nov 13 14:52:30 2008
-=== config_2 == signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_09
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_09
-++ Started at Thu Nov 13 14:52:30 2008
-+++ HiRes Start 1226580750.45135
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=subcon"  langpack_09  WORKDIR=\epoc32\rombuild\imaker_temp/conf_33
-iMaker 08.43.01, 20-Oct-2008.
-Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
-Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
-*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
-make: [signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_09] Error 1 (ignored)
-+++ HiRes End 1226580750.62322
-++ Finished at Thu Nov 13 14:52:30 2008
-=== config_2 == signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_11
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_11
-++ Started at Thu Nov 13 14:52:30 2008
-+++ HiRes Start 1226580750.71697
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=subcon"  langpack_11  WORKDIR=\epoc32\rombuild\imaker_temp/conf_34
-iMaker 08.43.01, 20-Oct-2008.
-Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
-Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
-*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
-make: [signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_11] Error 1 (ignored)
-+++ HiRes End 1226580750.87322
-++ Finished at Thu Nov 13 14:52:30 2008
-=== config_2 == signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_12
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_12
-++ Started at Thu Nov 13 14:52:30 2008
-+++ HiRes Start 1226580750.96696
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=subcon"  langpack_12  WORKDIR=\epoc32\rombuild\imaker_temp/conf_35
-iMaker 08.43.01, 20-Oct-2008.
-Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
-Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
-*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
-make: [signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_12] Error 1 (ignored)
-+++ HiRes End 1226580751.12321
-++ Finished at Thu Nov 13 14:52:31 2008
-=== config_2 == signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_13
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_13
-++ Started at Thu Nov 13 14:52:31 2008
-+++ HiRes Start 1226580751.21696
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=subcon"  langpack_13  WORKDIR=\epoc32\rombuild\imaker_temp/conf_36
-iMaker 08.43.01, 20-Oct-2008.
-Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
-Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
-*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
-make: [signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_13] Error 1 (ignored)
-+++ HiRes End 1226580751.3732
-++ Finished at Thu Nov 13 14:52:31 2008
-=== config_2 == signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_14
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_14
-++ Started at Thu Nov 13 14:52:31 2008
-+++ HiRes Start 1226580751.46695
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=subcon"  langpack_14  WORKDIR=\epoc32\rombuild\imaker_temp/conf_37
-iMaker 08.43.01, 20-Oct-2008.
-Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
-Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
-*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
-make: [signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_14] Error 1 (ignored)
-+++ HiRes End 1226580751.63882
-++ Finished at Thu Nov 13 14:52:31 2008
-=== config_2 == signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_16
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_16
-++ Started at Thu Nov 13 14:52:31 2008
-+++ HiRes Start 1226580751.73257
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=subcon"  langpack_16  WORKDIR=\epoc32\rombuild\imaker_temp/conf_38
-iMaker 08.43.01, 20-Oct-2008.
-Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
-Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
-*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
-make: [signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_16] Error 1 (ignored)
-+++ HiRes End 1226580751.88881
-++ Finished at Thu Nov 13 14:52:31 2008
-=== config_2 == signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_17
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_17
-++ Started at Thu Nov 13 14:52:31 2008
-+++ HiRes Start 1226580751.98256
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=subcon"  langpack_17  WORKDIR=\epoc32\rombuild\imaker_temp/conf_39
-iMaker 08.43.01, 20-Oct-2008.
-Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
-Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
-*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
-make: [signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_17] Error 1 (ignored)
-+++ HiRes End 1226580752.13881
-++ Finished at Thu Nov 13 14:52:32 2008
-=== config_2 == signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_18
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_18
-++ Started at Thu Nov 13 14:52:32 2008
-+++ HiRes Start 1226580752.23255
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=subcon"  langpack_18  WORKDIR=\epoc32\rombuild\imaker_temp/conf_40
-iMaker 08.43.01, 20-Oct-2008.
-Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
-Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
-*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
-make: [signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_18] Error 1 (ignored)
-+++ HiRes End 1226580752.3888
-++ Finished at Thu Nov 13 14:52:32 2008
-=== config_2 == signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_19
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_19
-++ Started at Thu Nov 13 14:52:32 2008
-+++ HiRes Start 1226580752.48255
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=subcon"  langpack_19  WORKDIR=\epoc32\rombuild\imaker_temp/conf_41
-iMaker 08.43.01, 20-Oct-2008.
-Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
-Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
-*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
-make: [signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_19] Error 1 (ignored)
-+++ HiRes End 1226580752.65442
-++ Finished at Thu Nov 13 14:52:32 2008
-=== config_2 == signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_20
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_20
-++ Started at Thu Nov 13 14:52:32 2008
-+++ HiRes Start 1226580752.76379
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=subcon"  langpack_20  WORKDIR=\epoc32\rombuild\imaker_temp/conf_42
-iMaker 08.43.01, 20-Oct-2008.
-Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
-Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
-*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
-make: [signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_20] Error 1 (ignored)
-+++ HiRes End 1226580752.93566
-++ Finished at Thu Nov 13 14:52:32 2008
-=== config_2 == signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_22
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_22
-++ Started at Thu Nov 13 14:52:32 2008
-+++ HiRes Start 1226580753.02941
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=subcon"  langpack_22  WORKDIR=\epoc32\rombuild\imaker_temp/conf_43
-iMaker 08.43.01, 20-Oct-2008.
-Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
-Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
-*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
-make: [signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_22] Error 1 (ignored)
-+++ HiRes End 1226580753.18566
-++ Finished at Thu Nov 13 14:52:33 2008
-=== config_2 == signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_23
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_23
-++ Started at Thu Nov 13 14:52:33 2008
-+++ HiRes Start 1226580753.2794
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=subcon"  langpack_23  WORKDIR=\epoc32\rombuild\imaker_temp/conf_44
-iMaker 08.43.01, 20-Oct-2008.
-Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
-Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
-*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
-make: [signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_23] Error 1 (ignored)
-+++ HiRes End 1226580753.43565
-++ Finished at Thu Nov 13 14:52:33 2008
-=== config_2 == signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_24
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_24
-++ Started at Thu Nov 13 14:52:33 2008
-+++ HiRes Start 1226580753.5294
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=subcon"  langpack_24  WORKDIR=\epoc32\rombuild\imaker_temp/conf_45
-iMaker 08.43.01, 20-Oct-2008.
-Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
-Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
-*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
-make: [signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_24] Error 1 (ignored)
-+++ HiRes End 1226580753.70127
-++ Finished at Thu Nov 13 14:52:33 2008
-=== config_2 == signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_25
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_25
-++ Started at Thu Nov 13 14:52:33 2008
-+++ HiRes Start 1226580753.77939
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=subcon"  langpack_25  WORKDIR=\epoc32\rombuild\imaker_temp/conf_46
-iMaker 08.43.01, 20-Oct-2008.
-Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
-Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
-*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
-make: [signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_25] Error 1 (ignored)
-+++ HiRes End 1226580753.95126
-++ Finished at Thu Nov 13 14:52:33 2008
-=== config_2 == signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_27
--- imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk HELIUM_EC=signing ... langpack_27
-++ Started at Thu Nov 13 14:52:34 2008
-+++ HiRes Start 1226580754.04501
-imaker -f /epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk -f /epoc32/rom/config/helium_ec_image.mk HELIUM_EC=signing "TYPE=subcon"  langpack_27  WORKDIR=\epoc32\rombuild\imaker_temp/conf_47
-iMaker 08.43.01, 20-Oct-2008.
-Warning: Use of uninitialized value in pattern match (m//) at \epoc32\tools\rom\imaker\imaker.pl line 41.
-Warning: Use of uninitialized value in concatenation (.) or string at \epoc32\tools\rom\imaker\imaker.pl line 43.
-*** Error: Can't run `\epoc32\tools\rom\imaker\mingw_make.exe' properly:
-make: [signing_configuration2_/epoc32/rom/config/platform/devlon52/image_conf_devlon52_ui.mk_langpack_27] Error 1 (ignored)
-+++ HiRes End 1226580754.20125
-++ Finished at Thu Nov 13 14:52:34 2008
-Finished build: 839   Duration: 41:09 (m:s)   Cluster availability: 100%
--- a/buildframework/helium/tests/data/log2xml_test.log	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,468 +0,0 @@
-     [exec] === Stage=mceraseuda == mceraseuda
-     [exec] ++ Started at Mon Sep 17 06:36:19 2007
-     [exec] +++ HiRes Start 1190000179.23461
-     [exec] =========== Configuration =================
-     [exec] PRODUCT:  product
-     [exec] WORKNAME: q:\output\development_flash_images\engineering_english/product\product_0.0738.3.X.201
-     [exec] TYPE:     rnd
-     [exec] ===========================================
-     [exec] *** Error: Can't read iMaker command file `/output/development_flash_images/engineering_english/product/product_0.0738.3.X.201_udaerase.icmd'.
-     [exec] mingw_make.exe[1]: *** [udaerase] Error 1
-     [exec] mingw_make.exe: *** [eraseudarnd] Error 2
-     [exec] Unzipping variation western...
-     [exec] unzip -o -qq -d / /output/build_area/localised/delta_western_package.zip
-     [exec] === Stage=flashuirnd == flashuirnd
-     [exec] ++ Started at Mon Sep 17 06:36:19 2007
-     [exec] +++ HiRes Start 1190000179.95337
-     [exec] =========== Configuration =================
-     [exec] PRODUCT          : product
-     [exec] TYPE             : rnd
-     [exec] NAME             : mc_5132_0.0738.3.X.201_rnd_ui
-     [exec] USE_OVERRIDE     : 1
-     [exec] BLDROM_OBY       : \epoc32\rom\master.oby /epoc32/rom/ppd.oby /epoc32/rom/rnd.oby
-     [exec] BLDROM_OPTION    : -p -v -nosymbols -D_IMAGE_TYPE_RND -D_EABI=ARMV5 -Dproduct -D_ASIC_VER_11 -DUSE_MULTIROFS -es60ibymacros -DXTI_TRACES -DNO_PLATSEC -DSECTION -DUSE_MULTIROFS  q:\output\development_flash_images\engineering_english/product/rnd/mc_5132_0.0738.3.X.201_rnd_ui_override_version.iby    -eoverride 
-     [exec] WORKDIR          : q:\output\development_flash_images\engineering_english/product/rnd
-     [exec] UDEBFILE         : 0
-     [exec] UDEBFILE_LIST    : 
-     [exec] USE_FOTI         : 
-     [exec] USE_FOTA         : 
-     [exec] PREBUILD_STEPS   :  
-     [exec] SOSCORE_VERSION  : 0.0738.3.0.201
-     [exec] SOSROFS1_VERSION : 0.0738.3.0.201	
-     [exec] SOSROFS2_VERSION : 0.0738.3.0.201.ee
-     [exec] SOSROFS3_VERSION : 0.0738.3.0.201.ee
-     [exec] ENABLE_ROMSYMBOL : 1
-     [exec] ===========================================
-     [exec] iMaker - The Image Maker, version 07.34.04, 24-Aug-2007.
-     [exec] Deleting q:\output\development_flash_images\engineering_english/product/rnd/mc_5132_0.0738.3.X.201_rnd_ui_sw.txt
-     [exec] Deleting q:\output\development_flash_images\engineering_english/product/rnd/mc_5132_0.0738.3.X.201_rnd_ui_model.txt
-     [exec] Deleting q:\output\development_flash_images\engineering_english/product/rnd/mc_5132_0.0738.3.X.201_rnd_ui_override_version.iby
-     [exec] Generating header iby for Core ROM image creation
-     [exec] Generating header iby for Core ROFS1 image creation
-     [exec] Generating Core FWID txt file
-     [exec] Generating Core FWID iby file
-     [exec] Generating file: q:\output\development_flash_images\engineering_english/product/rnd/mc_5132_0.0738.3.X.201_rnd_ui_sw.txt
-     [exec] Generating file: q:\output\development_flash_images\engineering_english/product/rnd/mc_5132_0.0738.3.X.201_rnd_ui_model.txt
-     [exec] Generating the q:\output\development_flash_images\engineering_english/product/rnd/mc_5132_0.0738.3.X.201_rnd_ui_override_version.iby
-     [exec] Generating the q:\output\development_flash_images\engineering_english/product/rnd/mc_5132_0.0738.3.X.201_rnd_ui_core_fwid.iby
-     [exec] Generating full Core ROM oby
-     [exec] 
-     [exec] Missing file(s):
-     [exec]  1) ..\..\epoc32\rom\include\ssc.iby(31): Missing file: '\epoc32\release\ARMV5\urel\ssc.ext' in statement 'extension[0x09080004]='
-     [exec]  2) ..\..\epoc32\rom\include\SWATI_Symbian_Tools.iby(163): Missing file: '\epoc32\release\ARMV5\urel\MobileCrashTimer.exe' in statement 'file='
-     [exec]  3) ..\..\epoc32\rom\include\PhoneCntFinderExt.iby(24): Missing file: '\epoc32\data\Z\System\install\phcntvoicerecoghandler_stub.SIS' in statement 'data='
-     [exec]  4) ..\..\epoc32\rom\include\screensaver.iby(24): Missing file: '\epoc32\release\ARMV5\urel\screensaver.product.exe' in statement 'file='
-     [exec]  5) ..\..\epoc32\rom\include\eSWT.iby(44): Missing file: '\epoc32\RELEASE\ARMV5\UREL\Z\Resource\ive\lib\jclcldc11\ext\odc\eswt-core.jar' in statement 'data='
-     [exec]  6) ..\..\epoc32\rom\include\eSWT.iby(45): Missing file: '\epoc32\RELEASE\ARMV5\UREL\Z\Resource\ive\lib\jclcldc11\ext\odc\esw.jar' in statement 'data='
-     [exec]  7) ..\..\epoc32\rom\include\eSWT.iby(46): Missing file: '\epoc32\RELEASE\ARMV5\UREL\Z\Resource\ive\lib\jclcldc11\ext\odc\eswt-expanded.jar' in statement 'data='
-     [exec]  8) ..\..\epoc32\rom\include\eSWT.iby(49): Missing file: '\epoc32\RELEASE\ARMV5\UREL\Z\Resource\ive\lib\jclcldc11\ext\eswt-core.odc' in statement 'data='
-     [exec]  9) ..\..\epoc32\rom\include\eSWT.iby(50): Missing file: '\epoc32\RELEASE\ARMV5\UREL\Z\Resource\ive\lib\jclcldc11\ext\esw.odc' in statement 'data='
-     [exec] 10) ..\..\epoc32\rom\include\eSWT.iby(51): Missing file: '\epoc32\RELEASE\ARMV5\UREL\Z\Resource\ive\lib\jclcldc11\ext\eswt-expanded.odc' in statement 'data='
-     [exec] 11) ..\..\epoc32\rom\include\advancedtspcontroller.iby(24): Missing file: '\epoc32\release\ARMV5\urel\AdvancedTspController.dll' in statement 'file='
-     [exec] 12) ..\..\epoc32\rom\include\.oby(30): Missing file: '\epoc32\data\Z\System\install\enh_drv.sis' in statement 'data='
-     [exec] 13) ..\..\epoc32\rom\include\d2d.iby(22): Missing file: '\epoc32\release\ARMV5\urel\d2dwlanconnector.dll' in statement 'file='
-     [exec] 14) ..\..\epoc32\rom\include\sysaplightpluginsource.iby(25): Missing file: '\epoc32\release\ARMV5\urel\sysaplightpluginsource.dll' in statement 'file='
-     [exec] 15) ..\..\epoc32\rom\include\animplugin.iby(8): Missing file: '\epoc32\release\ARMV5\urel\KeyCapturerPlugin.dll' in statement 'file='
-     [exec] 16) ..\..\epoc32\rom\include\OnlinePrint.iby(25): Missing file: '\epoc32\data\Z\system\install\OnlinePrint.sis' in statement 'data='
-     [exec] 17) ..\..\epoc32\rom\include\msync.iby(30): Missing file: '\epoc32\release\ARMV5\urel\msyncpluginmedia.dll' in statement 'file='
-     [exec] 18) ..\..\epoc32\rom\include\msync.iby(31): Missing file: '\epoc32\release\ARMV5\urel\msyncpluginmessaging.dll' in statement 'file='
-     [exec] 19) q:outputdevelopment_flash_images\033ngineering_english\product\rnd\mc_5132_0.0738.3.X.201_rnd_ui_core_fwid.iby(6): Missing file: 'q:\output\development_flash_images\engineering_english/product/rnd/mc_5132_0.0738.3.X.201_rnd_ui_fwid1.txt' in statement 'data='
-     [exec] 
-     [exec] Warning(s):
-     [exec]  1) WARNING: Unknown keyword '/'.  Line 193 ignored
-     [exec]  2) WARNING: Unknown keyword 'ROFS_HEADER'.  Line 212 ignored
-     [exec]  3) WARNING: Unknown keyword '..\data\VoiceRecorder_stub.SIS'.  Line 3242 ignored
-     [exec]  4) WARNING: Unknown keyword '***'.  Line 3580 ignored
-     [exec]  5) WARNING: Unknown keyword ';;'.  Line 7183 ignored
-     [exec]  6) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 7817 ignored
-     [exec]  7) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 7827 ignored
-     [exec]  8) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 7832 ignored
-     [exec]  9) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 7836 ignored
-     [exec] 10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 7842 ignored
-     [exec] 11) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 7864 ignored
-     [exec] 
-     [exec] Error(s):
-     [exec] 1) ERROR: Override target \private\101fe1db\usbman.rsc was not found!
-     [exec] 2) ERROR: Override target private\10207254\themes\271012080\270513751\271063147\1.0\ci.o0001 was not found!
-     [exec] 3) ERROR: Override target resource\versions\langsw.txt was not found!
-     [exec] 4) ERROR: Override target private\10207254\themes\271012080\270513751\271063149\1.0\ai.o0001 was not found!
-     [exec] 5) ERROR: Override target resource\apps\startup.rsc was not found!
-     [exec] Creating Core ROM image
-     [exec] * cpp -o tmp1.oby -nostdinc -undef -I "..\..\..\..\..\EPOC32\include\oem\" -include "..\..\..\..\..\EPOC32\include\oem\feature_settings.hrh" -I. -I../../../../../epoc32/rom/include
-     [exec] * reading q:\output\development_flash_images\engineering_english/product/rnd/mc_5132_0.0738.3.X.201_rnd_ui_rom_hdr.iby
-     [exec] * reading q:\output\development_flash_images\engineering_english/product/rnd/mc_5132_0.0738.3.X.201_rnd_ui_rom_split.oby
-     [exec] * Writing tmp2.oby - result of substitution phase
-     [exec] * Writing tmp3.oby - result of reorganisation phase
-     [exec] * Writing tmp4.oby - result of Plugin stage
-     [exec] * No language codes specified, defaulting to 01
-     [exec] * Writing tmp5.oby - result of choosing language-specific files
-     [exec] * Writing tmp6.oby - result of SPI stage
-     [exec] configpaging.pm: Modifying demand paging configuration using \epoc32\rom\configpaging\configpaging.cfg
-     [exec] * Writing tmp7.oby - result of problem-suppression phase
-     [exec] * Writing tmp8.oby - result of bitmap conversion phase
-     [exec] * Removing previous image and logs...
-     [exec] * Writing tmp9.oby - result of cleaning phase
-     [exec] * Writing mc_5132_0.0738.3.X.201_rnd_ui.rom.oby - final OBY file
-     [exec] * Writing mc_5132_0.0738.3.X.201_rnd_ui.rom.dir - ROM directory listing
-     [exec] * Compression method: NONE
-     [exec] * Executing rombuild -slog  -type-safe-link -geninc -no-header mc_5132_0.0738.3.X.201_rnd_ui.rom.oby
-     [exec] 
-     [exec] ROMBUILD - Rom builder V2.07 (Build 576)
-     [exec] = Software Ltd.
-     [exec] 
-     [exec] WARNING: Unknown keyword '..\data\VoiceRecorder_stub.SIS'.  Line 1249 ignored
-     [exec] WARNING: Unknown keyword '***'.  Line 1408 ignored
-     [exec] WARNING: Unknown keyword ';;'.  Line 2891 ignored
-     [exec] WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 3100 ignored
-     [exec] WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 3104 ignored
-     [exec] WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 3106 ignored
-     [exec] WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 3108 ignored
-     [exec] WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 3111 ignored
-     [exec] WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 3118 ignored
-     [exec] ERROR: Can't build dependence graph for
-     [exec] 	\epoc32\release\ARMV5\urel\armh264enchwdevice_11.dll (UID3:20001c12 HWVD:01000000 VER:10.0)
-     [exec] because
-     [exec] 	armutilities_11.dll (UID3:102749fe HWVD:01000000 VER:10.0)
-     [exec] is not in rom.
-     [exec] ERROR: Can't build dependence graph for
-     [exec] 	\epoc32\release\ARMV5\urel\armh264enchwdevice_11.dll (UID3:20001c12 HWVD:01000000 VER:10.0)
-     [exec] because
-     [exec] 	armprocessengine_11.dll (UID3:1020db93 HWVD:01000000 VER:10.0)
-     [exec] is not in rom.
-     [exec] ERROR: Can't build dependence graph for
-     [exec] 	\epoc32\release\ARMV5\urel\glxuiutilities.dll (UID3:20000a08 HWVD:01000000 VER:10.0)
-     [exec] because
-     [exec] 	glxtvout.dll (UID3:2000a7bc HWVD:01000000 VER:10.0)
-     [exec] is not in rom.
-     [exec] ERROR: LoadContents failed - return code -1
-     [exec] 
-     [exec] ROMBUILD - Rom builder V2.07 (Build 576)
-     [exec] = Software Ltd.
-     [exec] 
-     [exec] WARNING: Unknown keyword '..\data\VoiceRecorder_stub.SIS'.  Line 1249 ignored
-     [exec] WARNING: Unknown keyword '***'.  Line 1408 ignored
-     [exec] WARNING: Unknown keyword ';;'.  Line 2891 ignored
-     [exec] WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 3100 ignored
-     [exec] WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 3104 ignored
-     [exec] WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 3106 ignored
-     [exec] WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 3108 ignored
-     [exec] WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 3111 ignored
-     [exec] WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 3118 ignored
-     [exec] ERROR: Can't build dependence graph for
-     [exec] *** Error: (S:COREBLDROM,C:1,B:1,K:0,V:1): Command `(perl /epoc32/tools/buildrom.pl -v -nosymbols -omc_5132_0.0738.3.X.201_rnd_ui.rom.img q:\output\development_flash_images\engineering_english/product/rnd/mc_5132_0.0738.3.X.201_rnd_ui_rom_hdr.iby q:\output\development_flash_images\engineering_english/product/rnd/mc_5132_0.0738.3.X.201_rnd_ui_rom_split.oby)' failed.
-     [exec] 	\epoc32\release\ARMV5\urel\armh264enchwdevice_11.dll (UID3:20001c12 HWVD:01000000 VER:10.0)
-     [exec] mingw_make.exe[1]: *** [flash] Error 1
-     [exec] because
-     [exec] 	armutilities_11.dll (UID3:102749fe HWVD:01000000 VER:10.0)
-     [exec] is not in rom.
-     [exec] ERROR: Can't build dependence graph for
-     [exec] 	\epoc32\release\ARMV5\urel\armh264enchwdevice_11.dll (UID3:20001c12 HWVD:01000000 VER:10.0)
-     [exec] because
-     [exec] 	armprocessengine_11.dll (UID3:1020db93 HWVD:01000000 VER:10.0)
-     [exec] is not in rom.
-     [exec] ERROR: Can't build dependence graph for
-     [exec] 	\epoc32\release\ARMV5\urel\glxuiutilities.dll (UID3:20000a08 HWVD:01000000 VER:10.0)
-     [exec] because
-     [exec] 	glxtvout.dll (UID3:2000a7bc HWVD:01000000 VER:10.0)
-     [exec] is not in rom.
-     [exec] ERROR: LoadContents failed - return code -1
-     [exec] * ROMBUILD failed
-     [exec] 
-     [exec] Creating Core ROM symbol file
-     [exec] 
-     [exec] Total duration: 03:13
-     [exec] mingw_make.exe: [flashuirnd] Error 2 (ignored)
-     [exec] +++ HiRes End 1190000371.08327
-     [exec] ++ Finished at Mon Sep 17 06:39:31 2007
-     [exec] === Stage=flashuiprd == flashuiprd
-     [exec] ++ Started at Mon Sep 17 06:39:31 2007
-     [exec] +++ HiRes Start 1190000371.22389
-     [exec] =========== Configuration =================
-     [exec] PRODUCT          : product
-     [exec] TYPE             : prd
-     [exec] NAME             : mc_5132_0.0738.3.X.201_prd_ui
-     [exec] USE_OVERRIDE     : 1
-     [exec] BLDROM_OBY       : \epoc32\rom\master.oby /epoc32/rom/ppd.oby 
-     [exec] BLDROM_OPTION    : -p -v -nosymbols -D_IMAGE_TYPE_PRD -D_EABI=ARMV5 -Dproduct -D_ASIC_VER_11 -DUSE_MULTIROFS -es60ibymacros -DXTI_TRACES -DNO_PLATSEC -DSECTION -DUSE_MULTIROFS  q:\output\development_flash_images\engineering_english/product/prd/mc_5132_0.0738.3.X.201_prd_ui_override_version.iby    -eoverride 
-     [exec] WORKDIR          : q:\output\development_flash_images\engineering_english/product/prd
-     [exec] UDEBFILE         : 0
-     [exec] UDEBFILE_LIST    : 
-     [exec] USE_FOTI         : 
-     [exec] USE_FOTA         : 
-     [exec] PREBUILD_STEPS   :  
-     [exec] SOSCORE_VERSION  : 0.0738.3.0.201
-     [exec] SOSROFS1_VERSION : 0.0738.3.0.201	
-     [exec] SOSROFS2_VERSION : 0.0738.3.0.201.ee
-     [exec] SOSROFS3_VERSION : 0.0738.3.0.201.ee
-     [exec] ENABLE_ROMSYMBOL : 1
-     [exec] ===========================================
-     [exec] iMaker - The Image Maker, version 07.34.04, 24-Aug-2007.
-     [exec] Deleting q:\output\development_flash_images\engineering_english/product/prd/mc_5132_0.0738.3.X.201_prd_ui_sw.txt
-     [exec] Deleting q:\output\development_flash_images\engineering_english/product/prd/mc_5132_0.0738.3.X.201_prd_ui_model.txt
-     [exec] Deleting q:\output\development_flash_images\engineering_english/product/prd/mc_5132_0.0738.3.X.201_prd_ui_override_version.iby
-     [exec] Generating header iby for Core ROM image creation
-     [exec] Generating header iby for Core ROFS1 image creation
-     [exec] Generating Core FWID txt file
-     [exec] Generating Core FWID iby file
-     [exec] Generating file: q:\output\development_flash_images\engineering_english/product/prd/mc_5132_0.0738.3.X.201_prd_ui_sw.txt
-     [exec] Generating file: q:\output\development_flash_images\engineering_english/product/prd/mc_5132_0.0738.3.X.201_prd_ui_model.txt
-     [exec] Generating the q:\output\development_flash_images\engineering_english/product/prd/mc_5132_0.0738.3.X.201_prd_ui_override_version.iby
-     [exec] Generating the q:\output\development_flash_images\engineering_english/product/prd/mc_5132_0.0738.3.X.201_prd_ui_core_fwid.iby
-     [exec] Generating full Core ROM oby
-     [exec] 
-     [exec] Missing file(s):
-     [exec]  1) ..\..\epoc32\rom\include\ssc.iby(31): Missing file: '\epoc32\release\ARMV5\urel\ssc.ext' in statement 'extension[0x09080004]='
-     [exec]  2) ..\..\epoc32\rom\include\SWATI_Symbian_Tools.iby(163): Missing file: '\epoc32\release\ARMV5\urel\MobileCrashTimer.exe' in statement 'file='
-     [exec]  3) ..\..\epoc32\rom\include\PhoneCntFinderExt.iby(24): Missing file: '\epoc32\data\Z\System\install\phcntvoicerecoghandler_stub.SIS' in statement 'data='
-     [exec]  4) ..\..\epoc32\rom\include\screensaver.iby(24): Missing file: '\epoc32\release\ARMV5\urel\screensaver.product.exe' in statement 'file='
-     [exec]  5) ..\..\epoc32\rom\include\eSWT.iby(44): Missing file: '\epoc32\RELEASE\ARMV5\UREL\Z\Resource\ive\lib\jclcldc11\ext\odc\eswt-core.jar' in statement 'data='
-     [exec]  6) ..\..\epoc32\rom\include\eSWT.iby(45): Missing file: '\epoc32\RELEASE\ARMV5\UREL\Z\Resource\ive\lib\jclcldc11\ext\odc\esw.jar' in statement 'data='
-     [exec]  7) ..\..\epoc32\rom\include\eSWT.iby(46): Missing file: '\epoc32\RELEASE\ARMV5\UREL\Z\Resource\ive\lib\jclcldc11\ext\odc\eswt-expanded.jar' in statement 'data='
-     [exec]  8) ..\..\epoc32\rom\include\eSWT.iby(49): Missing file: '\epoc32\RELEASE\ARMV5\UREL\Z\Resource\ive\lib\jclcldc11\ext\eswt-core.odc' in statement 'data='
-     [exec]  9) ..\..\epoc32\rom\include\eSWT.iby(50): Missing file: '\epoc32\RELEASE\ARMV5\UREL\Z\Resource\ive\lib\jclcldc11\ext\esw.odc' in statement 'data='
-     [exec] 10) ..\..\epoc32\rom\include\eSWT.iby(51): Missing file: '\epoc32\RELEASE\ARMV5\UREL\Z\Resource\ive\lib\jclcldc11\ext\eswt-expanded.odc' in statement 'data='
-     [exec] 11) ..\..\epoc32\rom\include\advancedtspcontroller.iby(24): Missing file: '\epoc32\release\ARMV5\urel\AdvancedTspController.dll' in statement 'file='
-     [exec] 12) ..\..\epoc32\rom\include\.oby(30): Missing file: '\epoc32\data\Z\System\install\enh_drv.sis' in statement 'data='
-     [exec] 13) ..\..\epoc32\rom\include\d2d.iby(22): Missing file: '\epoc32\release\ARMV5\urel\d2dwlanconnector.dll' in statement 'file='
-     [exec] 14) ..\..\epoc32\rom\include\sysaplightpluginsource.iby(25): Missing file: '\epoc32\release\ARMV5\urel\sysaplightpluginsource.dll' in statement 'file='
-     [exec] 15) ..\..\epoc32\rom\include\animplugin.iby(8): Missing file: '\epoc32\release\ARMV5\urel\KeyCapturerPlugin.dll' in statement 'file='
-     [exec] 16) ..\..\epoc32\rom\include\OnlinePrint.iby(25): Missing file: '\epoc32\data\Z\system\install\OnlinePrint.sis' in statement 'data='
-     [exec] 17) ..\..\epoc32\rom\include\msync.iby(30): Missing file: '\epoc32\release\ARMV5\urel\msyncpluginmedia.dll' in statement 'file='
-     [exec] 18) ..\..\epoc32\rom\include\msync.iby(31): Missing file: '\epoc32\release\ARMV5\urel\msyncpluginmessaging.dll' in statement 'file='
-     [exec] 19) q:outputdevelopment_flash_images\033ngineering_english\product\prd\mc_5132_0.0738.3.X.201_prd_ui_core_fwid.iby(6): Missing file: 'q:\output\development_flash_images\engineering_english/product/prd/mc_5132_0.0738.3.X.201_prd_ui_fwid1.txt' in statement 'data='
-     [exec] 
-     [exec] Warning(s):
-     [exec]  1) WARNING: Unknown keyword '/'.  Line 193 ignored
-     [exec]  2) WARNING: Unknown keyword 'ROFS_HEADER'.  Line 212 ignored
-     [exec]  3) WARNING: Unknown keyword '..\data\VoiceRecorder_stub.SIS'.  Line 3242 ignored
-     [exec]  4) WARNING: Unknown keyword '***'.  Line 3580 ignored
-     [exec]  5) WARNING: Unknown keyword ';;'.  Line 7183 ignored
-     [exec]  6) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 7817 ignored
-     [exec]  7) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 7827 ignored
-     [exec]  8) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 7832 ignored
-     [exec]  9) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 7836 ignored
-     [exec] 10) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 7842 ignored
-     [exec] 11) WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 7864 ignored
-     [exec] 
-     [exec] Error(s):
-     [exec] 1) ERROR: Override target \private\101fe1db\usbman.rsc was not found!
-     [exec] 2) ERROR: Override target private\10207254\themes\271012080\270513751\271063147\1.0\ci.o0001 was not found!
-     [exec] 3) ERROR: Override target resource\versions\langsw.txt was not found!
-     [exec] 4) ERROR: Override target private\10207254\themes\271012080\270513751\271063149\1.0\ai.o0001 was not found!
-     [exec] 5) ERROR: Override target resource\apps\startup.rsc was not found!
-     [exec] Creating Core ROM image
-     [exec] * cpp -o tmp1.oby -nostdinc -undef -I "..\..\..\..\..\EPOC32\include\oem\" -include "..\..\..\..\..\EPOC32\include\oem\feature_settings.hrh" -I. -I../../../../../epoc32/rom/include
-     [exec] * reading q:\output\development_flash_images\engineering_english/product/prd/mc_5132_0.0738.3.X.201_prd_ui_rom_hdr.iby
-     [exec] * reading q:\output\development_flash_images\engineering_english/product/prd/mc_5132_0.0738.3.X.201_prd_ui_rom_split.oby
-     [exec] * Writing tmp2.oby - result of substitution phase
-     [exec] * Writing tmp3.oby - result of reorganisation phase
-     [exec] * Writing tmp4.oby - result of Plugin stage
-     [exec] * No language codes specified, defaulting to 01
-     [exec] * Writing tmp5.oby - result of choosing language-specific files
-     [exec] * Writing tmp6.oby - result of SPI stage
-     [exec] configpaging.pm: Modifying demand paging configuration using \epoc32\rom\configpaging\configpaging.cfg
-     [exec] * Writing tmp7.oby - result of problem-suppression phase
-     [exec] * Writing tmp8.oby - result of bitmap conversion phase
-     [exec] * Removing previous image and logs...
-     [exec] * Writing tmp9.oby - result of cleaning phase
-     [exec] * Writing mc_5132_0.0738.3.X.201_prd_ui.rom.oby - final OBY file
-     [exec] * Writing mc_5132_0.0738.3.X.201_prd_ui.rom.dir - ROM directory listing
-     [exec] * Compression method: NONE
-     [exec] * Executing rombuild -slog  -type-safe-link -geninc -no-header mc_5132_0.0738.3.X.201_prd_ui.rom.oby
-     [exec] 
-     [exec] ROMBUILD - Rom builder V2.07 (Build 576)
-     [exec] = Software Ltd.
-     [exec] 
-     [exec] WARNING: Unknown keyword '..\data\VoiceRecorder_stub.SIS'.  Line 1249 ignored
-     [exec] WARNING: Unknown keyword '***'.  Line 1408 ignored
-     [exec] WARNING: Unknown keyword ';;'.  Line 2891 ignored
-     [exec] WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 3100 ignored
-     [exec] WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 3104 ignored
-     [exec] WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 3106 ignored
-     [exec] WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 3108 ignored
-     [exec] WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 3111 ignored
-     [exec] WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 3118 ignored
-     [exec] ERROR: Can't build dependence graph for
-     [exec] 	\epoc32\release\ARMV5\urel\armh264enchwdevice_11.dll (UID3:20001c12 HWVD:01000000 VER:10.0)
-     [exec] because
-     [exec] 	armutilities_11.dll (UID3:102749fe HWVD:01000000 VER:10.0)
-     [exec] is not in rom.
-     [exec] ERROR: Can't build dependence graph for
-     [exec] 	\epoc32\release\ARMV5\urel\armh264enchwdevice_11.dll (UID3:20001c12 HWVD:01000000 VER:10.0)
-     [exec] because
-     [exec] 	armprocessengine_11.dll (UID3:1020db93 HWVD:01000000 VER:10.0)
-     [exec] is not in rom.
-     [exec] ERROR: Can't build dependence graph for
-     [exec] 	\epoc32\release\ARMV5\urel\glxuiutilities.dll (UID3:20000a08 HWVD:01000000 VER:10.0)
-     [exec] because
-     [exec] 	glxtvout.dll (UID3:2000a7bc HWVD:01000000 VER:10.0)
-     [exec] is not in rom.
-     [exec] ERROR: LoadContents failed - return code -1
-     [exec] 
-     [exec] ROMBUILD - Rom builder V2.07 (Build 576)
-     [exec] = Software Ltd.
-     [exec] 
-     [exec] WARNING: Unknown keyword '..\data\VoiceRecorder_stub.SIS'.  Line 1249 ignored
-     [exec] WARNING: Unknown keyword '***'.  Line 1408 ignored
-     [exec] WARNING: Unknown keyword ';;'.  Line 2891 ignored
-     [exec] WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 3100 ignored
-     [exec] WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 3104 ignored
-     [exec] WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 3106 ignored
-     [exec] WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 3108 ignored
-     [exec] WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 3111 ignored
-     [exec] WARNING: Unknown keyword '-----------------------------------------------------------'.  Line 3118 ignored
-     [exec] ERROR: Can't build dependence graph for
-     [exec] 	\epoc32\release\ARMV5\urel\armh264enchwdevice_11.dll (UID3:20001c12 HWVD:01000000 VER:10.0)
-     [exec] because
-     [exec] 	armutilities_11.dll (UID3:102749fe HWVD:01000000 VER:10.0)
-     [exec] is not in rom.
-     [exec] ERROR: Can't build dependence graph for
-     [exec] 	\epoc32\release\ARMV5\urel\armh264enchwdevice_11.dll (UID3:20001c12 HWVD:01000000 VER:10.0)
-     [exec] because
-     [exec] *** Error: (S:COREBLDROM,C:1,B:1,K:0,V:1): Command `(perl /epoc32/tools/buildrom.pl -v -nosymbols -omc_5132_0.0738.3.X.201_prd_ui.rom.img q:\output\development_flash_images\engineering_english/product/prd/mc_5132_0.0738.3.X.201_prd_ui_rom_hdr.iby q:\output\development_flash_images\engineering_english/product/prd/mc_5132_0.0738.3.X.201_prd_ui_rom_split.oby)' failed.
-     [exec] 	armprocessengine_11.dll (UID3:1020db93 HWVD:01000000 VER:10.0)
-     [exec] is not in rom.
-     [exec] ERROR: Can't build dependence graph for
-     [exec] 	\epoc32\release\ARMV5\urel\glxuiutilities.dll (UID3:20000a08 HWVD:01000000 VER:10.0)
-     [exec] because
-     [exec] 	glxtvout.dll (UID3:2000a7bc HWVD:01000000 VER:10.0)
-     [exec] is not in rom.
-     [exec] ERROR: LoadContents failed - return code -1
-     [exec] * ROMBUILD failed
-     [exec] 
-     [exec] mingw_make.exe[1]: *** [flash] Error 1
-     [exec] Creating Core ROM symbol file
-     [exec] 
-     [exec] Total duration: 05:16
-     [exec] mingw_make.exe: [flashuiprd] Error 2 (ignored)
-     [exec] +++ HiRes End 1190000494.52393
-     [exec] ++ Finished at Mon Sep 17 06:41:34 2007
-     [exec] === Stage=mceraseuda == mceraseuda
-     [exec] ++ Started at Mon Sep 17 06:41:34 2007
-     [exec] +++ HiRes Start 1190000494.64893
-     [exec] =========== Configuration =================
-     [exec] PRODUCT:  product
-     [exec] WORKNAME: q:\output\development_flash_images\engineering_english/product\product_0.0738.3.X.201
-     [exec] TYPE:     prd
-     [exec] ===========================================
-     [exec] Generating UDA erase Elf2flash configuration
-     [exec] Creating flashable UDA erase image
-     [exec] 
-     [exec] Total duration: 05:17
-     [exec] +++ HiRes End 1190000495.28957
-     [exec] ++ Finished at Mon Sep 17 06:41:35 2007
-     [exec] mingw_make.exe: Target `ee_roms' not remade because of errors.
-     [exec] Result: 2
-     [exec] Unzipping variation western...
-     [exec] unzip -o -qq -d / /output/build_area/localised/delta_western_package.zip
-     [exec] === Stage=flashuirnd == flashuirnd
-     [exec] ++ Started at Mon Sep 17 06:41:35 2007
-     [exec] +++ HiRes Start 1190000495.74271
-     [exec] =========== Configuration =================
-     [exec] PRODUCT          : product_edge
-     [exec] TYPE             : rnd
-     [exec] NAME             : mc_5132_0.0738.3.X.201_rnd_ui
-     [exec] USE_OVERRIDE     : 1
-     [exec] BLDROM_OBY       : \epoc32\rom\master.oby /epoc32/rom/ppd.oby /epoc32/rom/rnd.oby
-     [exec] BLDROM_OPTION    : -p -v -nosymbols -D_IMAGE_TYPE_RND -D_EABI=ARMV5 -Dproduct_EDGE -D_ASIC_VER_11 -DUSE_MULTIROFS -es60ibymacros -DXTI_TRACES -DNO_PLATSEC -DSECTION -DUSE_MULTIROFS  q:\output\development_flash_images\engineering_english/product_edge/rnd/mc_5132_0.0738.3.X.201_rnd_ui_override_version.iby    -eoverride 
-     [exec] WORKDIR          : q:\output\development_flash_images\engineering_english/product_edge/rnd
-     [exec] UDEBFILE         : 0
-     [exec] UDEBFILE_LIST    : 
-     [exec] USE_FOTI         : 
-     [exec] USE_FOTA         : 
-     [exec] PREBUILD_STEPS   :  
-     [exec] SOSCORE_VERSION  : 0.0738.3.1.201
-     [exec] SOSROFS1_VERSION : 0.0738.3.1.201	
-     [exec] SOSROFS2_VERSION : 00
-     [exec] SOSROFS3_VERSION : 00
-     [exec] ENABLE_ROMSYMBOL : 1
-     [exec] ===========================================
-     [exec] iMaker - The Image Maker, version 07.34.04, 24-Aug-2007.
-     [exec] Deleting q:\output\development_flash_images\engineering_english/product_edge/rnd/mc_5132_0.0738.3.X.201_rnd_ui_sw.txt
-     [exec] Deleting q:\output\development_flash_images\engineering_english/product_edge/rnd/mc_5132_0.0738.3.X.201_rnd_ui_model.txt
-     [exec] Deleting q:\output\development_flash_images\engineering_english/product_edge/rnd/mc_5132_0.0738.3.X.201_rnd_ui_override_version.iby
-     [exec] Generating header iby for Core ROM image creation
-     [exec] Generating header iby for Core ROFS1 image creation
-     [exec] Generating Core FWID txt file
-     [exec] Generating Core FWID iby file
-     [exec] Generating file: q:\output\development_flash_images\engineering_english/product_edge/rnd/mc_5132_0.0738.3.X.201_rnd_ui_sw.txt
-     [exec] Generating file: q:\output\development_flash_images\engineering_english/product_edge/rnd/mc_5132_0.0738.3.X.201_rnd_ui_model.txt
-     [exec] Generating the q:\output\development_flash_images\engineering_english/product_edge/rnd/mc_5132_0.0738.3.X.201_rnd_ui_override_version.iby
-     [exec] Generating the q:\output\development_flash_images\engineering_english/product_edge/rnd/mc_5132_0.0738.3.X.201_rnd_ui_core_fwid.iby
-     [exec] Generating full Core ROM oby
-     [exec] * cpp -o tmp1.oby -nostdinc -undef -D_IMAGE_TYPE_RND -D_EABI=ARMV5 -Dproduct_EDGE -D_ASIC_VER_11 -DUSE_MULTIROFS -DXTI_TRACES -DNO_PLATSEC -DSECTION -DUSE_MULTIROFS -DPAGED_ROM -I "..\.\rom\CONFIG\platform\product_EDGE" -I "..\include\CONFIG\platform\product_EDGE" -I "..\.\rom\CONFIG\platform" -I "..\include\CONFIG\platform" -I "..\.\rom\CONFIG" -I "..\include\CONFIG" -I "..\include\oem\" -include "..\include\oem\feature_settings.hrh" -I. -I../../epoc32/rom/include
-     [exec] In file included from /epoc32/rom/ppd.oby:32:
-     [exec] ..\.\rom\CONFIG\platform\ppd_product.iby:28: spp_product.iby: No such file or directory
-     [exec] poc32
-     [exec] omoverride.oby:6: product_override.iby: No such file or directorypoc32
-     [exec] omoverride.oby:7: product_override_resources.iby: No such file or directory* cpp failed
-     [exec] * reading q:\output\development_flash_images\engineering_english/product_edge/rnd/mc_5132_0.0738.3.X.201_rnd_ui_override_version.iby
-     [exec] * reading \epoc32\rom\master.oby
-     [exec] * reading /epoc32/rom/ppd.oby
-     [exec] * reading /epoc32/rom/rnd.oby
-     [exec] * reading q:\output\development_flash_images\engineering_english/product_edge/rnd/mc_5132_0.0738.3.X.201_rnd_ui_core_fwid.iby
-     [exec] * reading \epoc32\rom\override.oby
-     [exec] *** Error: (S:COREBLDFULL,C:1,B:1,K:0,V:1): Command `(set VARIANT=product_edge) && (perl /epoc32/tools/buildrom.pl -p -v -nosymbols -D_IMAGE_TYPE_RND -D_EABI=ARMV5 -Dproduct_EDGE -D_ASIC_VER_11 -DUSE_MULTIROFS -es60ibymacros -DXTI_TRACES -DNO_PLATSEC -DSECTION -DUSE_MULTIROFS  q:\output\development_flash_images\engineering_english/product_edge/rnd/mc_5132_0.0738.3.X.201_rnd_ui_override_version.iby    -eoverride  -DPAGED_ROM   -omc_5132_0.0738.3.X.201_rnd_ui.full.img \epoc32\rom\master.oby /epoc32/rom/ppd.oby /epoc32/rom/rnd.oby q:\output\development_flash_images\engineering_english/product_edge/rnd/mc_5132_0.0738.3.X.201_rnd_ui_core_fwid.iby \epoc32\rom\override.oby )' failed.
-     [exec] mingw_make.exe[1]: *** [flash] Error 1
-     [exec] Creating Core ROM symbol file
-     [exec] ERROR: Can't open rombuild log file "q:\output\development_flash_images\engineering_english\product_edge\rnd\mc_5132_0.0738.3.X.201_rnd_ui.rom.log"
-     [exec] *** Error: (S:COREBLDROMSYM,C:1,B:1,K:0,V:1): Command `perl /epoc32/tools/maksym.pl q:\output\development_flash_images\engineering_english\product_edge\rnd\mc_5132_0.0738.3.X.201_rnd_ui.rom.log' failed.
-     [exec] mingw_make.exe[1]: *** [romsymbol] Error 1
-     [exec] mingw_make.exe: [flashuirnd] Error 2 (ignored)
-     [exec] +++ HiRes End 1190000501.1491
-     [exec] ++ Finished at Mon Sep 17 06:41:41 2007
-     [exec] === Stage=flashuiprd == flashuiprd
-     [exec] ++ Started at Mon Sep 17 06:41:41 2007
-     [exec] +++ HiRes Start 1190000501.28972
-     [exec] =========== Configuration =================
-     [exec] PRODUCT          : product_edge
-     [exec] TYPE             : prd
-     [exec] NAME             : mc_5132_0.0738.3.X.201_prd_ui
-     [exec] USE_OVERRIDE     : 1
-     [exec] BLDROM_OBY       : \epoc32\rom\master.oby /epoc32/rom/ppd.oby 
-     [exec] BLDROM_OPTION    : -p -v -nosymbols -D_IMAGE_TYPE_PRD -D_EABI=ARMV5 -Dproduct_EDGE -D_ASIC_VER_11 -DUSE_MULTIROFS -es60ibymacros -DXTI_TRACES -DNO_PLATSEC -DSECTION -DUSE_MULTIROFS  q:\output\development_flash_images\engineering_english/product_edge/prd/mc_5132_0.0738.3.X.201_prd_ui_override_version.iby    -eoverride 
-     [exec] WORKDIR          : q:\output\development_flash_images\engineering_english/product_edge/prd
-     [exec] UDEBFILE         : 0
-     [exec] UDEBFILE_LIST    : 
-     [exec] USE_FOTI         : 
-     [exec] USE_FOTA         : 
-     [exec] PREBUILD_STEPS   :  
-     [exec] SOSCORE_VERSION  : 0.0738.3.1.201
-     [exec] SOSROFS1_VERSION : 0.0738.3.1.201	
-     [exec] SOSROFS2_VERSION : 00
-     [exec] SOSROFS3_VERSION : 00
-     [exec] ENABLE_ROMSYMBOL : 1
-     [exec] ===========================================
-     [exec] iMaker - The Image Maker, version 07.34.04, 24-Aug-2007.
-     [exec] Deleting q:\output\development_flash_images\engineering_english/product_edge/prd/mc_5132_0.0738.3.X.201_prd_ui_sw.txt
-     [exec] Deleting q:\output\development_flash_images\engineering_english/product_edge/prd/mc_5132_0.0738.3.X.201_prd_ui_model.txt
-     [exec] Deleting q:\output\development_flash_images\engineering_english/product_edge/prd/mc_5132_0.0738.3.X.201_prd_ui_override_version.iby
-     [exec] Generating header iby for Core ROM image creation
-     [exec] Generating header iby for Core ROFS1 image creation
-     [exec] Generating Core FWID txt file
-     [exec] Generating Core FWID iby file
-     [exec] Generating file: q:\output\development_flash_images\engineering_english/product_edge/prd/mc_5132_0.0738.3.X.201_prd_ui_sw.txt
-     [exec] Generating file: q:\output\development_flash_images\engineering_english/product_edge/prd/mc_5132_0.0738.3.X.201_prd_ui_model.txt
-     [exec] Generating the q:\output\development_flash_images\engineering_english/product_edge/prd/mc_5132_0.0738.3.X.201_prd_ui_override_version.iby
-     [exec] Generating the q:\output\development_flash_images\engineering_english/product_edge/prd/mc_5132_0.0738.3.X.201_prd_ui_core_fwid.iby
-     [exec] Generating full Core ROM oby
-     [exec] * cpp -o tmp1.oby -nostdinc -undef -D_IMAGE_TYPE_PRD -D_EABI=ARMV5 -Dproduct_EDGE -D_ASIC_VER_11 -DUSE_MULTIROFS -DXTI_TRACES -DNO_PLATSEC -DSECTION -DUSE_MULTIROFS -DPAGED_ROM -I "..\.\rom\CONFIG\platform\product_EDGE" -I "..\include\CONFIG\platform\product_EDGE" -I "..\.\rom\CONFIG\platform" -I "..\include\CONFIG\platform" -I "..\.\rom\CONFIG" -I "..\include\CONFIG" -I "..\include\oem\" -include "..\include\oem\feature_settings.hrh" -I. -I../../epoc32/rom/include
-     [exec] In file included from /epoc32/rom/ppd.oby:32:
-     [exec] ..\.\rom\CONFIG\platform\ppd_product.iby:28: spp_product.iby: No such file or directory
-     [exec] poc32
-     [exec] omoverride.oby:6: product_override.iby: No such file or directorypoc32
-     [exec] omoverride.oby:7: product_override_resources.iby: No such file or directory* cpp failed
-     [exec] * reading q:\output\development_flash_images\engineering_english/product_edge/prd/mc_5132_0.0738.3.X.201_prd_ui_override_version.iby
-     [exec] * reading \epoc32\rom\master.oby
-     [exec] * reading /epoc32/rom/ppd.oby
-     [exec] * reading q:\output\development_flash_images\engineering_english/product_edge/prd/mc_5132_0.0738.3.X.201_prd_ui_core_fwid.iby
-     [exec] * reading \epoc32\rom\override.oby
-     [exec] *** Error: (S:COREBLDFULL,C:1,B:1,K:0,V:1): Command `(set VARIANT=product_edge) && (perl /epoc32/tools/buildrom.pl -p -v -nosymbols -D_IMAGE_TYPE_PRD -D_EABI=ARMV5 -Dproduct_EDGE -D_ASIC_VER_11 -DUSE_MULTIROFS -es60ibymacros -DXTI_TRACES -DNO_PLATSEC -DSECTION -DUSE_MULTIROFS  q:\output\development_flash_images\engineering_english/product_edge/prd/mc_5132_0.0738.3.X.201_prd_ui_override_version.iby    -eoverride  -DPAGED_ROM   -omc_5132_0.0738.3.X.201_prd_ui.full.img \epoc32\rom\master.oby /epoc32/rom/ppd.oby  q:\output\development_flash_images\engineering_english/product_edge/prd/mc_5132_0.0738.3.X.201_prd_ui_core_fwid.iby \epoc32\rom\override.oby )' failed.
-     [exec] mingw_make.exe[1]: *** [flash] Error 1
-     [exec] Creating Core ROM symbol file
-     [exec] ERROR: Can't open rombuild log file "q:\output\development_flash_images\engineering_english\product_edge\prd\mc_5132_0.0738.3.X.201_prd_ui.rom.log"
-     [exec] *** Error: (S:COREBLDROMSYM,C:1,B:1,K:0,V:1): Command `perl /epoc32/tools/maksym.pl q:\output\development_flash_images\engineering_english\product_edge\prd\mc_5132_0.0738.3.X.201_prd_ui.rom.log' failed.
-     [exec] mingw_make.exe[1]: *** [romsymbol] Error 1
-     [exec] mingw_make.exe: [flashuiprd] Error 2 (ignored)
-     [exec] +++ HiRes End 1190000506.71174
-     [exec] ++ Finished at Mon Sep 17 06:41:46 2007
Binary file buildframework/helium/tests/data/minibuild_ido_sbs_0.0.1_metadata_db.zip has changed
--- a/buildframework/helium/tests/data/packageiad/layers.sysdef.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE SystemDefinition SYSTEM "sysdef_1_4_0.dtd" [
-  <!ENTITY layer_real_source_path "sf/app/camera" >
-]>
-
-<SystemDefinition name="camera" schema="1.4.0">
-  <systemModel>
-    <layer name="app_layer">
-      <module name="camera">
-        <unit unitID="imm.camera" mrp="" bldFile="&layer_real_source_path;/group" name="camera" />
-        <unit unitID="imm.camera.help" mrp="" bldFile="&layer_real_source_path;/camerauis/cameraapp/help/group" name="camera_help" />
-      </module>
-    </layer>
-    
-    <configuration name="developer_mc_403">
-        <layerRef layerName="api_test_layer">
-            <layer name="api_test_layer">
-              <module name="camera_api_tests">
-              	<unit unitID="imm.camera.camcorder_ui_constants_api" mrp="" bldFile="sf/app/camera/camera_plat/camcorder_ui_constants_api/tsrc/group"  name="camcorder_ui_constants_api"  />
-              </module>
-              <module name="active_palette_2_api_tests">
-              	<unit unitID="imm.camera.active_palette_2_api" mrp="" bldFile="sf/app/camera/camera_plat/active_palette_2_api/tsrc/group"  name="active_palette_2_api"  />
-              </module>
-            </layer>
-        </layerRef>
-    </configuration>
-        
-    <layer name="unit_test_layer">
-      <module name="camera_unit_tests">
-      </module>
-    </layer>
-        
-  </systemModel>
-</SystemDefinition>
--- a/buildframework/helium/tests/data/packageiad/sis/testPackage/depends.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<SystemDefinition name="sysdef_dtd_1_4_0_xml + domain_build + s60 + domain_build + PoC + camera + commonemail + contacts + contentcontrol + conversations + systemswextensions + devicecontrol + editors + extrapimui + filemanageruis + gallery + graphicsuis + homescreen + imgviewer + imppapplications + iptelephony + location + messaging + avdomain + multimediasharing + avdomain + organizer + photos + printingapps + profile + avdomain + security + telephony + videocenter + videotelephony + avdomain + webui + VpnClient + eas + redbend + tfxserver + webvideo + wmdrmkeystorage_dist + wmdrmpd_dist + appexts + camerasrv + classicui + compaccutils + contactservices + contentmanagement + conversationservices + devicecontentservices + devicemanagement + drm + eapol + editorengines + flashapi + graphics + imagehandling + imppservices + inputmethods + ipappservices + java + localconnectivity + locationservices + mds + mediamanagement + avdomain + avdomain + avdomain + mmuifw + avdomain + ncdengines + networking + openfw + openservices + organizerservices + presenceservices + remotestorage + searchengines + securityservices + serviceapi + systemswservices + telephonyservices + uiaccelerator + uiresources + uishellservices + upnpapplications + upnpservices + videoutils + voiceservices + web + webservices + xmlsrv + xmlui + graphicsadaptations + imagingextensions + localconnectivityextensions + locationextensions + messagingextensions + avdomainosext + mobileruntime + networkingextensions + systemswextensions + telephonyextensions + wlan + locationrefapp + avdomain + rtctest + analysistools + commontools + locationtools + nettools + performancetools + platformtools + systemswtools + toolsextensions + uitools + wlan_tools + ezynotes + tubefmradio + multimodal_interaction_sw.fmtx + multimodal_interaction_sw.hqtts + multimodal_interaction_sw.mobiledictionary + multimodal_interaction_sw.srsfengine + multimodal_interaction_sw.srsflanguagecomponents + multimodal_interaction_sw.voicesearch + analyzetool + bappeaprofiler + btproxy_rnd + ctc + eunit + hti + mc_rnd + nep + prism_rnd + traceswitch + trk_rnd + avdomain + avdomain + dictionary + j2mecerts + netdo_config + ocrsrv + phoneswitch + ptiezitypecore + ME_Music_VC + Me2ePlatform + OviIMPS + ShareOnline + TopContactsWidget + Juniper + Maps + ncdui + pec_sdk + iconsd + avdomain + Licensee_Tsy_Stub + PtiT9Core_stub + SIMATK_TSY_Stub + iaupdateapi_stub + posmsgpluginreferenceimpl + power_save_display_mode_stub + systemswstubs + wlanhwinit_stub" schema="1.4.0"><systemModel>
-
-    <layer name="s60_osext_layer">
-    
-    <module name="networkingextensions">
-        <unit unitID="netdo.networkingextensions" mrp="" bldFile="s60/osext/networkingextensions/group" name="networkingextensions"/>
-    </module>
-
-  
-    
--- a/buildframework/helium/tests/data/packageiad/sis/testPackage/sisinfo.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<SystemDefinition name="sysdef_dtd_1_4_0_xml + domain_build + s60 + domain_build + PoC + camera + commonemail + contacts + contentcontrol + conversations + systemswextensions + devicecontrol + editors + extrapimui + filemanageruis + gallery + graphicsuis + homescreen + imgviewer + imppapplications + iptelephony + location + messaging + avdomain + multimediasharing + avdomain + organizer + photos + printingapps + profile + avdomain + security + telephony + videocenter + videotelephony + avdomain + webui + VpnClient + eas + redbend + tfxserver + webvideo + wmdrmkeystorage_dist + wmdrmpd_dist + appexts + camerasrv + classicui + compaccutils + contactservices + contentmanagement + conversationservices + devicecontentservices + devicemanagement + drm + eapol + editorengines + flashapi + graphics + imagehandling + imppservices + inputmethods + ipappservices + java + localconnectivity + locationservices + mds + mediamanagement + avdomain + avdomain + avdomain + mmuifw + avdomain + ncdengines + networking + openfw + openservices + organizerservices + presenceservices + remotestorage + searchengines + securityservices + serviceapi + systemswservices + telephonyservices + uiaccelerator + uiresources + uishellservices + upnpapplications + upnpservices + videoutils + voiceservices + web + webservices + xmlsrv + xmlui + graphicsadaptations + imagingextensions + localconnectivityextensions + locationextensions + messagingextensions + avdomainosext + mobileruntime + networkingextensions + systemswextensions + telephonyextensions + wlan + locationrefapp + avdomain + rtctest + analysistools + commontools + locationtools + nettools + performancetools + platformtools + systemswtools + toolsextensions + uitools + wlan_tools + ezynotes + tubefmradio + multimodal_interaction_sw.fmtx + multimodal_interaction_sw.hqtts + multimodal_interaction_sw.mobiledictionary + multimodal_interaction_sw.srsfengine + multimodal_interaction_sw.srsflanguagecomponents + multimodal_interaction_sw.voicesearch + analyzetool + bappeaprofiler + btproxy_rnd + ctc + eunit + hti + mc_rnd + nep + prism_rnd + traceswitch + trk_rnd + avdomain + avdomain + dictionary + j2mecerts + netdo_config + ocrsrv + phoneswitch + ptiezitypecore + ME_Music_VC + Me2ePlatform + OviIMPS + ShareOnline + TopContactsWidget + Juniper + Maps + ncdui + pec_sdk + iconsd + avdomain + Licensee_Tsy_Stub + PtiT9Core_stub + SIMATK_TSY_Stub + iaupdateapi_stub + posmsgpluginreferenceimpl + power_save_display_mode_stub + systemswstubs + wlanhwinit_stub" schema="1.4.0"><systemModel>
-
-    <layer name="s60_osext_layer">
-    
-    <module name="networkingextensions">
-        <unit unitID="netdo.networkingextensions" mrp="" bldFile="s60/osext/networkingextensions/group" name="networkingextensions"/>
-    </module>
-
-  
-    
--- a/buildframework/helium/tests/data/packageiad/sis/testPackage/testPackage.sis	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-    <layer name="s60_osext_layer">
-    
-    <module name="networkingextensions">
-        <unit unitID="netdo.networkingextensions" mrp="" bldFile="s60/osext/networkingextensions/group" name="networkingextensions"/>
-    </module>
--- a/buildframework/helium/tests/data/pythonTest2.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-from optparse import OptionParser
-
-def main():
-    parser = OptionParser(usage="%prog VERSION")
-    opts, args = parser.parse_args()
-    input = args[0]
-    print input
-    
-main()
\ No newline at end of file
--- a/buildframework/helium/tests/data/symrec/GRACE/service/product/release_1_001/release_metadata.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<releaseInformation>
-	<releaseDetails>
-		<releaseID>
-			<service name="service"/>
-			<product name="product"/>
-			<release name="release_1_001"/>
-		</releaseID>
-		<dependsOf>
-			<service name="service"/>
-			<product name="product"/>
-			<release name="release_1"/>
-		</dependsOf>
-	</releaseDetails>
-	<releaseFiles>
-		<package default="true" extract="single" type=".zip" name="sp1.zip"/>
-	</releaseFiles>
-	<externalFiles/>
-</releaseInformation>
\ No newline at end of file
--- a/buildframework/helium/tests/data/symrec/GRACE/service/product/release_1_001/release_metadata_1.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<releaseInformation>
-	<releaseDetails>
-		<releaseID>
-			<service name="service"/>
-			<product name="product"/>
-			<release name="release_1_001"/>
-		</releaseID>
-		<dependsOf>
-			<service name="service"/>
-			<product name="product"/>
-			<release name="release_1"/>
-		</dependsOf>
-	</releaseDetails>
-
-    <servicePacks>
-        <servicePack name="SP1" reInstallNeeded="false">
-            <file name="sp1.zip"/>
-            <instructions name="specialInstructions.xml"/>
-        </servicePack>
-    </servicePacks>
-	<externalFiles/>
-</releaseInformation>
\ No newline at end of file
Binary file buildframework/helium/tests/data/symrec/GRACE/service/product/release_1_001/sp1.zip has changed
--- a/buildframework/helium/tests/data/symrec/GRACE/service/product/release_1_002/release_metadata.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<releaseInformation>
-	<releaseDetails>
-		<releaseID>
-			<service name="service"/>
-			<product name="product"/>
-			<release name="release_1_002"/>
-		</releaseID>
-		<dependsOf>
-			<service name="service"/>
-			<product name="product"/>
-			<release name="release_1_001"/>
-		</dependsOf>
-	</releaseDetails>
-
-    <servicePacks>
-        <servicePack name="SP2" reInstallNeeded="false">
-            <file name="sp2.zip"/>
-            <instructions name="specialInstructions.xml"/>
-        </servicePack>
-    </servicePacks>
-	<externalFiles/>
-</releaseInformation>
\ No newline at end of file
Binary file buildframework/helium/tests/data/symrec/GRACE/service/product/release_1_002/sp2.zip has changed
--- a/buildframework/helium/tests/data/symrec/GRACE/service/product/release_2/release_metadata.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<releaseInformation>
-	<releaseDetails>
-		<releaseID>
-			<service name="service"/>
-			<product name="product"/>
-			<release name="release_2"/>
-		</releaseID>
-	</releaseDetails>
-	<releaseFiles>
-		<package default="true" extract="single" type=".zip" name="test1.zip"/>
-		<package default="true" extract="single" type=".zip" name="missing.zip"/>
-	</releaseFiles>
-	<externalFiles/>
-</releaseInformation>
\ No newline at end of file
Binary file buildframework/helium/tests/data/symrec/GRACE/service/product/release_2/test1.zip has changed
--- a/buildframework/helium/tests/data/symrec/GRACE/service/product/release_3/release_metadata.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<releaseInformation>
-	<releaseDetails>
-		<releaseID>
-			<service name="service"/>
-			<product name="product"/>
-			<release name="release_2"/>
-		</releaseID>
-	</releaseDetails>
-	<releaseFiles>
-		<package default="true" extract="single" type=".zip" name="test1.zip"/>
-		<package default="true" extract="single" type=".zip" name="missing.zip"/>
-	</releaseFiles>
-	<externalFiles/>
-</releaseInformation>
\ No newline at end of file
Binary file buildframework/helium/tests/data/symrec/GRACE/service/product/release_3/test1.zip has changed
--- a/buildframework/helium/tests/data/symrec/GRACE/service/product/release_4/TICKLER	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-
-Title:  site Grace Server
-User:   symuser
-Date:   2008-11-06 15:36:56
-Screen: View Release
-+---------------------------+----------------------------------+-------------------+-----------------+--------+
-|Description                |V1                                |V2                 |V3               |V4      |
-+---------------------------+----------------------------------+-------------------+-----------------+--------+
-|Release is currently       |LOCKED                            |                   |                 |        |
-|Packages Total / Size Total|     1 /            .01 MB        |                   |                 |        |
-|Packages / Released From   |     1 / fasrrm01.europe.nokia.com|                   |                 |        |
-|Packages / Released By     |     1 / varamana                 |                   |                 |        |
-|--                         |                                  |                   |                 |        |
-|Packages Sent / Site       |Start                             |Finish             |Moved            |Saved   |
-|1 / site              |                                  |                   |                 |        |
-|1 / site                |2008-11-06 14:41:47               |2008-11-06 14:41:54|           .01 MB|  -1.4 %|
-|1 / site                 |                                  |                   |                 |        |
-|1 / site             |2008-11-06 14:41:53               |2008-11-06 14:41:54|           .01 MB|  -1.4 %|
-|1 / site                 |                                  |                   |                 |        |
-|1 / site               |2008-11-06 14:41:54               |2008-11-06 14:41:56|           .01 MB|  -1.4 %|
-|1 / site              |2008-11-06 14:41:56               |2008-11-06 14:41:58|           .01 MB|  -1.4 %|
-|1 / site                   |2008-11-06 14:41:45               |2008-11-06 14:41:47|           .01 MB|  -1.4 %|
-|1 / site                   |2008-11-06 15:19:02               |2008-11-06 15:19:04|           .01 MB|  -1.4 %|
-|1 / site              |                                  |                   |                 |        |
-|1 / site                |2008-11-06 14:41:53               |2008-11-06 14:41:55|           .01 MB|  -1.4 %|
-|1 / site                  |2008-11-06 14:47:39               |2008-11-06 14:47:43|           .01 MB|  -1.4 %|
-|1 / site              |                                  |                   |                 |        |
-+---------------------------+----------------------------------+-------------------+-----------------+--------+
-Rows: 19  Page: 1  RPP: 25
-
- 
\ No newline at end of file
--- a/buildframework/helium/tests/data/symrec/GRACE/service/product/release_4/release_metadata.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<releaseInformation>
-	<releaseDetails>
-		<releaseID>
-			<service name="service"/>
-			<product name="product"/>
-			<release name="release_2"/>
-		</releaseID>
-	</releaseDetails>
-	<releaseFiles>
-		<package default="true" extract="single" type=".zip" name="test1.zip"/>
-		<package default="true" extract="single" type=".zip" name="missing.zip"/>
-	</releaseFiles>
-	<externalFiles/>
-</releaseInformation>
\ No newline at end of file
Binary file buildframework/helium/tests/data/symrec/GRACE/service/product/release_4/test1.zip has changed
--- a/buildframework/helium/tests/data/symrec/GRACE/service/product/release_5/HYDRASTATUS.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<release xmlns="http://hydra.nokia.com/schema/hydrastatus">
-  <name>5.0</name>
-  <state>Ready</state>
-  <service>service</service>
-  <ctime>2009-06-23T14:29:47+00:00</ctime>
-  <owner>a</owner>
-  <direction>OUT</direction>
-  <total-file-count>1</total-file-count>
-  <total-file-size>236313771</total-file-size>
-  <transports>
-    <transport>
-      <peer>z</peer>
-      <direction>OUT</direction>
-      <state>Done</state>
-      <file-count>1</file-count>
-      <file-size>236313771</file-size>
-      <retries>0</retries>
-    </transport>
-  </transports>
-</release>
--- a/buildframework/helium/tests/data/symrec/GRACE/service/product/release_5/release_metadata.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<releaseInformation>
-	<releaseDetails>
-		<releaseID>
-			<service name="service"/>
-			<product name="product"/>
-			<release name="release_5"/>
-		</releaseID>
-	</releaseDetails>
-	<releaseFiles>
-		<package default="true" extract="single" type=".zip" name="test1.zip" md5checksum="29b6ddc0265958641949c15e5c16c580" size="112"/>
-	</releaseFiles>
-	<externalFiles/>
-</releaseInformation>
\ No newline at end of file
Binary file buildframework/helium/tests/data/symrec/GRACE/service/product/release_5/test1.zip has changed
--- a/buildframework/helium/tests/data/symrec/GRACE/service/product/release_6/HYDRASTATUS.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<release xmlns="http://hydra.nokia.com/schema/hydrastatus">
-  <name>5.0</name>
-  <state>Created</state>
-  <service>service</service>
-  <ctime>2009-06-23T14:29:47+00:00</ctime>
-  <owner>a</owner>
-  <direction>OUT</direction>
-  <total-file-count>1</total-file-count>
-  <total-file-size>236313771</total-file-size>
-  <transports>
-    <transport>
-      <peer>z</peer>
-      <direction>OUT</direction>
-      <state>Done</state>
-      <file-count>1</file-count>
-      <file-size>236313771</file-size>
-      <retries>0</retries>
-    </transport>
-  </transports>
-</release>
--- a/buildframework/helium/tests/data/symrec/GRACE/service/product/release_6/release_metadata.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<releaseInformation>
-	<releaseDetails>
-		<releaseID>
-			<service name="service"/>
-			<product name="product"/>
-			<release name="release_6"/>
-		</releaseID>
-	</releaseDetails>
-	<releaseFiles>
-		<package default="true" extract="single" type=".zip" name="test1.zip" md5checksum="29b6ddc0265958641949c15e5c16c580" size="112"/>
-	</releaseFiles>
-	<externalFiles/>
-</releaseInformation>
\ No newline at end of file
Binary file buildframework/helium/tests/data/symrec/GRACE/service/product/release_6/test1.zip has changed
--- a/buildframework/helium/tests/data/symrec/generated_release_metadata.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<releaseInformation>
-    <releaseDetails>
-        <releaseID>
-            <service name="minibuild"/>
-            <product name="PF5250"/>
-            <release name="PF5250_minibuild_630"/>
-        </releaseID>
-    </releaseDetails>
-    <releaseFiles>
-    <package s60filter="" name="s60_app_organizer_clock.zip" default="true" type="zip" filters="" extract="single"/>
-  <package s60filter="" name="s60_app_organizer_clock_binary.zip" default="true" type="zip" filters="" extract="single"/>
-  <package s60filter="" name="s60_mw_classicui_and_app_radio.zip" default="true" type="zip" filters="" extract="single"/>
-    <package s60filter="" name="s60_mw_classicui_and_app_radio_internal.zip" default="true" type="zip" filters="" extract="double"/>
-  </releaseFiles>
-    <externalFiles/>
-
-	<filters>
-		<!-- Filter definitions -->
-		<!-- 	code = code used in package attribute "filters" 
-					text = Filter name
-					description = filter description
-		-->
-    <filter text="Emulator binaries" code="foo" description="Files needed for emulator."/> 
-    <filter text="complementary binaries and sources" code="bar" description="complementary components binaries and sources"/>
-    <filter text="source files" code="test" description="symbian and S60 source files"/>
-	</filters>
-    
-</releaseInformation>
\ No newline at end of file
--- a/buildframework/helium/tests/data/symrec/merge/main_metadata_1.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<releaseInformation>
-	<releaseDetails>
-		<releaseID>
-			<service name="service"/>
-			<product name="product"/>
-			<release name="release_1"/>
-		</releaseID>
-	</releaseDetails>
-	<releaseFiles>
-		<package default="true" extract="single" type=".zip" name="test1.zip" md5checksum="29b6ddc0265958641949c15e5c16c580" size="112"/>
-	</releaseFiles>
-	<externalFiles/>
-</releaseInformation>
\ No newline at end of file
--- a/buildframework/helium/tests/data/symrec/merge/main_metadata_2.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<releaseInformation>
-	<releaseDetails>
-		<releaseID>
-			<service name="service"/>
-			<product name="product"/>
-			<release name="release_1"/>
-		</releaseID>
-	</releaseDetails>
-	<releaseFiles>
-		<package default="true" extract="single" type=".zip" name="test2.zip"  md5checksum="433fd286bcf7e55be9d0e7e88f0cd84c" size="112"/>
-	</releaseFiles>
-	<externalFiles/>
-</releaseInformation>
\ No newline at end of file
--- a/buildframework/helium/tests/data/symrec/merge/main_metadata_3.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<releaseInformation>
-	<releaseDetails>
-		<releaseID>
-			<service name="service"/>
-			<product name="product"/>
-			<release name="release_1"/>
-		</releaseID>
-	</releaseDetails>
-	<releaseFiles>
-		<package default="true" extract="single" type=".zip" name="test3_1.zip"  md5checksum="433fd286bcf7e55be9d0e7e88f0cd84c" size="112"/>
-		<package default="true" extract="single" type=".zip" name="test3_2.zip"  md5checksum="433fd286bcf7e55be9d0e7e88f0cd84c" size="112"/>
-	</releaseFiles>
-	<externalFiles/>
-</releaseInformation>
\ No newline at end of file
--- a/buildframework/helium/tests/data/symrec/override/one/release_metadata.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<releaseInformation>
-	<releaseDetails>
-		<releaseID>
-			<service name="service"/>
-			<product name="product"/>
-			<release name="release_1"/>
-		</releaseID>
-	</releaseDetails>
-	<releaseFiles>
-		<package default="true" extract="single" type=".zip" name="test1.zip" md5checksum="29b6ddc0265958641949c15e5c16c580" size="112"/>
-		<package default="true" extract="single" type=".zip" name="test2.zip"  md5checksum="433fd286bcf7e55be9d0e7e88f0cd84c" size="112"/>
-	</releaseFiles>
-	<externalFiles/>
-</releaseInformation>
\ No newline at end of file
--- a/buildframework/helium/tests/data/symrec/override/several/release_metadata.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<releaseInformation>
-	<releaseDetails>
-		<releaseID>
-			<service name="service"/>
-			<product name="product"/>
-			<release name="release_1"/>
-		</releaseID>
-	</releaseDetails>
-	<releaseFiles>
-		<package default="true" extract="single" type=".zip" name="test1.zip" md5checksum="29b6ddc0265958641949c15e5c16c580" size="112"/>
-		<package default="true" extract="single" type=".zip" name="test2.zip"  md5checksum="433fd286bcf7e55be9d0e7e88f0cd84c" size="112"/>
-	</releaseFiles>
-	<externalFiles/>
-</releaseInformation>
\ No newline at end of file
--- a/buildframework/helium/tests/data/symrec/override/several/release_metadata_1.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<releaseInformation>
-	<releaseDetails>
-		<releaseID>
-			<service name="service"/>
-			<product name="product"/>
-			<release name="release_1"/>
-		</releaseID>
-	</releaseDetails>
-	<releaseFiles>
-		<package default="true" extract="single" type=".zip" name="test1.zip" md5checksum="29b6ddc0265958641949c15e5c16c580" size="112"/>
-		<package default="true" extract="single" type=".zip" name="test2.zip"  md5checksum="433fd286bcf7e55be9d0e7e88f0cd84c" size="112"/>
-	</releaseFiles>
-	<externalFiles/>
-</releaseInformation>
\ No newline at end of file
--- a/buildframework/helium/tests/data/symrec/override/several/release_metadata_2.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<releaseInformation>
-	<releaseDetails>
-		<releaseID>
-			<service name="service"/>
-			<product name="product"/>
-			<release name="release_1"/>
-		</releaseID>
-	</releaseDetails>
-	<releaseFiles>
-		<package default="true" extract="single" type=".zip" name="test1.zip" md5checksum="29b6ddc0265958641949c15e5c16c580" size="112"/>
-		<package default="true" extract="single" type=".zip" name="test2.zip"  md5checksum="433fd286bcf7e55be9d0e7e88f0cd84c" size="112"/>
-	</releaseFiles>
-	<externalFiles/>
-</releaseInformation>
\ No newline at end of file
--- a/buildframework/helium/tests/data/symrec/revision_release_metadata.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<releaseInformation hidden="false">
-	<releaseDetails>
-		<releaseID>	
-			<service name="S60RnD"/>
-			<product name="pf_5250"/>
-			<release name="pf_5250_200836_001"/>
-		</releaseID>
-		<dependsOf>
-			<service name="S60RnD"/>
-			<product name="pf_5250"/>
-			<release name="pf_5250_200836"/>
-		</dependsOf>
-		<!-- <previousBaseline>
-			<service name="S60RnD" />
-			<product name="pf_5250" />
-			<release name="pf_5250_200835" />
-		</previousBaseline> -->
-	</releaseDetails>
-
-	<releaseFiles>
-	<package s60filter="emu" name="pf_5250_200836_SP1.zip" default="true" type="zip" filters="emu" extract="single"/>
-  </releaseFiles>
-
-	<!-- <servicePacks>
-		<servicePack name="SP1" reInstallNeeded="false">
-			<file name="pf_5250_200836_SP1.zip"/>
-			<instructions name="specialInstructions.xml"/>
-		</servicePack>
-	</servicePacks> -->
-
-	<localeVariants>
-		<variant name="western">
-			<file name="pf_5250_200836_delta_western.zip"/>
-		</variant>
-		<variant name="china">
-			<file name="pf_5250_200836_delta_china.zip"/>
-		</variant>
-		<variant name="japan">
-			<file name="pf_5250_200836_delta_japan.zip"/>
-		</variant>
-	</localeVariants>
-	
-	<filters>
-		<!-- Filter definitions -->
-		<!-- 	code = code used in package attribute "filters" 
-					text = Filter name
-					description = filter description
-		-->
-    <filter text="Emulator binaries" code="emu" description="Files needed for emulator."/> 
-    <filter text="complementary binaries and sources" code="compl" description="complementary components binaries and sources"/>
-    <filter text="source files" code="src" description="symbian and S60 source files"/>
-    <filter text="source files" code="tsrc" description="test source files"/>
-    <filter text="binary files" code="jvm" description="java virtual machine binaries and sources"/>
-	</filters>
-	
-</releaseInformation>
\ No newline at end of file
--- a/buildframework/helium/tests/data/sysdef2make/SDF.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,184 +0,0 @@
-<?xml version="1.0"?>
-<!-- Enable this after dtd is available with OsExt release -->
-<!DOCTYPE SystemDefinition [
- <!ELEMENT SystemDefinition (systemModel?, build?)>
- <!ATTLIST SystemDefinition
-  name CDATA #REQUIRED
-  schema CDATA #REQUIRED>
- <!ELEMENT systemModel (layer+)>
- <!ELEMENT layer (logicalset* | module*)*>
- <!ATTLIST layer
-  name CDATA #REQUIRED
-  levels CDATA #IMPLIED
-  span CDATA #IMPLIED>
- <!ELEMENT logicalset (logicalsubset* | module* | unit* | package* | prebuilt*)*>
- <!ATTLIST logicalset name CDATA #REQUIRED>
- <!ELEMENT logicalsubset (module* | unit* | package* | prebuilt*)*>
- <!ATTLIST logicalsubset name CDATA #REQUIRED>
- <!ELEMENT module (component* | unit* | package* | prebuilt*)*>
- <!ATTLIST module
-  name CDATA #REQUIRED
-  level CDATA #IMPLIED>
- <!ELEMENT component (unit* | package* | prebuilt*)*>
- <!ATTLIST component name CDATA #REQUIRED>
- <!ELEMENT unit EMPTY>
- <!ATTLIST unit
-  unitID ID #REQUIRED
-  name CDATA #REQUIRED
-  mrp CDATA #REQUIRED
-  filter CDATA #IMPLIED
-  bldFile CDATA #REQUIRED
-  priority CDATA #IMPLIED
-  contract CDATA #IMPLIED>
- <!ELEMENT package EMPTY>
- <!ATTLIST package
-  name CDATA #REQUIRED
-  mrp CDATA #REQUIRED
-  filter CDATA #IMPLIED
-  contract CDATA #IMPLIED>
- <!ELEMENT prebuilt EMPTY>
- <!ATTLIST prebuilt
-  name CDATA #REQUIRED
-  version CDATA #REQUIRED
-  late (Y|N) #IMPLIED
-  filter CDATA #IMPLIED
-  contract CDATA #IMPLIED>
- <!ELEMENT build (option* | target+ | targetList+ | unitList+ | configuration+)*>
- <!ELEMENT unitList (unitRef+)>
- <!ATTLIST unitList
-  name ID #REQUIRED
-  description CDATA #REQUIRED>
- <!ELEMENT unitRef EMPTY>
- <!ATTLIST unitRef unit IDREF #REQUIRED>
- <!ELEMENT targetList EMPTY>
- <!ATTLIST targetList
-  name ID #REQUIRED
-  description CDATA #REQUIRED
-  target IDREFS #REQUIRED>
- <!ELEMENT target EMPTY>
- <!ATTLIST target
-  name ID #REQUIRED
-  abldTarget CDATA #REQUIRED
-  description CDATA #REQUIRED>
- <!ELEMENT option EMPTY>
- <!ATTLIST option
-  name ID #REQUIRED
-  abldOption CDATA #REQUIRED
-  description CDATA #REQUIRED
-  enable (Y | N | y | n) #REQUIRED>
- <!ELEMENT configuration (unitListRef+ | layerRef+ | task+)*>
- <!ATTLIST configuration
-  name ID #REQUIRED
-  description CDATA #REQUIRED
-  filter CDATA #REQUIRED>
- <!ELEMENT task ( unitListRef* , (buildLayer | specialInstructions))>
- <!ELEMENT unitListRef EMPTY>
- <!ATTLIST unitListRef unitList IDREF #REQUIRED>
- <!ELEMENT layerRef EMPTY>
- <!ATTLIST layerRef layerName CDATA #REQUIRED>
- <!ELEMENT buildLayer EMPTY>
- <!ATTLIST buildLayer
-  command CDATA #REQUIRED
-  targetList IDREFS #IMPLIED
-  unitParallel (Y | N | y | n) #REQUIRED
-  targetParallel (Y | N | y | n) #IMPLIED>
- <!ELEMENT specialInstructions EMPTY>
- <!ATTLIST specialInstructions
-  name CDATA #REQUIRED
-  cwd CDATA #REQUIRED
-  command CDATA #REQUIRED>  
-]>
-
-
-
-<SystemDefinition name="PPD_build" schema="1.4.0">
-
-  <systemModel>
-  	<!-- Common file for prebuild layers-->
-  	
-  	
-    <layer name="layer1">  
-	    <module name="module1"> 
-		    <component name="component1"> 
-			    <unit unitID="unit1"  name="unit1" bldFile="unit1\location" mrp="" filter=""/> 
-			    <unit unitID="unit2"  name="unit2" bldFile="unit2\location" mrp="" filter="!skip"/> 
-			    <unit unitID="unit3"  name="unit3" bldFile="unit3\location" mrp="" filter="skip"/>
-            </component> 
-        </module> 
-    </layer>
-
-  </systemModel>
-
-  <build>
-  
-    <option name="KEEPGOING" abldOption="-keepgoing" description="Causes make to keepgoing on errors" enable="Y"/>
-    <option name="SAVESPACE" abldOption="-savespace" description="Causes the removal of intermediate files" enable="N"/>
-    <target name="WINS" abldTarget="wins" description="MSVC Compiler"/>
-    <target name="WINS_REL" abldTarget="wins urel" description="MSVC Compiler"/>
-    <target name="WINS_DEB" abldTarget="wins udeb" description="MSVC Compiler"/>
-    <target name="WINSCW" abldTarget="winscw" description="CodeWarrior Compiler"/>
-    <target name="WINSCW_REL" abldTarget="winscw urel" description="CodeWarrior Compiler"/>
-    <target name="WINSCW_DEB" abldTarget="winscw udeb" description="CodeWarrior Compiler"/>
-    <target name="TOOLS" abldTarget="tools" description="MSVC Compiler for Tools"/>
-    <target name="TOOLS_REL" abldTarget="tools rel" description="MSVC Compiler for Tools Release mode only"/>
-    <target name="ARMV5" abldTarget="armv5" description="RVCT Compiler"/>
-    <target name="ARMV5_REL" abldTarget="armv5 urel" description="RVCT Compiler"/>
-    <target name="ARMV5_DEB" abldTarget="armv5 udeb" description="RVCT Compiler"/>
-
-    <!-- Aditional Targets -->
-    <target name="CWTOOLS" abldTarget="cwtools" description="CodeWarrior Compiler for Tools"/> <!-- Not supported -->
-    <target name="CWTOOLS_REL" abldTarget="cwtools rel" description="CodeWarrior Compiler for Tools Release mode only"/> <!-- Not supported -->
-    
-    <targetList name="default" description="Main Targets" target="WINSCW ARMV5"/>
-    <targetList name="default_winscw" description="Main Targets" target="WINSCW"/>
-    <targetList name="default_armv5" description="Main Targets" target="ARMV5"/>
-    <targetList name="default_rel" description="Main Targets for rel" target="ARMV5_REL"/>
-    <targetList name="default_deb" description="Main Targets for deb" target="ARMV5_DEB"/>
-    <targetList name="default_tools" description="tools Targets" target="TOOLS"/>
-    <targetList name="tools_rel" description="tools Release Targets" target="TOOLS_REL"/>
-    <targetList name="cwtools" description="cwtools Targets" target="CWTOOLS"/>
-    <targetList name="cwtools_rel" description="cwtools Release Targets" target="CWTOOLS_REL"/>
-  
-    <configuration name="config1" description="config1" filter="">
-			<task><specialInstructions name="attrib" cwd="%EPOCROOT%" command="attrib -R \*.* /S /D"/></task>
-			<task><specialInstructions name="touch_s60" cwd="%EPOCROOT%" command="toucher.exe \s60"/></task>
-			<task><specialInstructions name="touch_ppd_sw" cwd="%EPOCROOT%" command="toucher.exe \ppd_sw"/></task>
-			<task><specialInstructions name="touch_ncp_sw" cwd="%EPOCROOT%" command="toucher.exe \ncp_sw"/></task>
-			<task><specialInstructions name="touch_tools_ncp_tools" cwd="%EPOCROOT%" command="toucher.exe \tools\ncp_tools"/></task>
-			<task><specialInstructions name="touch_config" cwd="%EPOCROOT%" command="toucher.exe \config"/></task>
-			<task><specialInstructions name="touch_psw" cwd="%EPOCROOT%" command="toucher.exe \psw"/></task>			
-			<task><specialInstructions name="CopyCommonVariation" cwd="\psw\ncp_psw\psw" command="xcopy *.*  \ /F /R /Y /S"/></task>
-			<task><specialInstructions name="CopySPP_ABLD" cwd="\tools\ncp_tools\toolsmod_93" command="xcopy *.*  \ /F /R /Y /S"/></task>
-			<task><specialInstructions name="CopyNCP52Variation" cwd="\psw\ncp_psw\platform_psw\psw" command="xcopy *.*  \ /F /R /Y /S"/></task>
-			<task><specialInstructions name="CopyS6050Variation" cwd="\psw\s60_50_psw\psw" command="xcopy *.*  \ /F /R /Y /S"/></task>
-			<task><specialInstructions name="psw\s60_50_psw\52.50_psw" cwd="\psw\s60_50_psw\52.50_psw\psw" command="xcopy *.*  \ /F /R /Y /S"/></task>
-    </configuration>
-
-
-	<configuration name="config2" description="config2" filter="">			
-			<layerRef layerName="layer1" />
-			<task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
-			<task><buildLayer command="abld export" unitParallel="Y"/></task>
-	</configuration>
-    
-	<configuration name="config3" description="config3" filter="skip">			
-			<layerRef layerName="layer1" />
-			<task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
-			<task><buildLayer command="abld export" unitParallel="Y"/></task>
-	</configuration>
-
-
-	<unitList name="unitlist1">
-		<unitRef unit="unit1" />
-		<unitRef unit="unit2" />
-		<unitRef unit="unit3" />
-	</unitList>
-	<configuration name="config4" description="config4" filter="skip">			
-			<unitListRef unitList="unitlist1" />
-			<task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
-			<task><buildLayer command="abld export" unitParallel="Y"/></task>
-			<task><buildLayer command="abld build" targetList="default" unitParallel="Y"/></task>
-	</configuration>
-
-</build>
-</SystemDefinition>
--- a/buildframework/helium/tests/data/test_ccmwaid.inf	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-/nokia/jk_nmp/groups/gscm/dbs/jk1f5132/db
-2073797
-sa1spp#1/project/S60/jk1f5132#wbernard
--- a/buildframework/helium/tests/data/test_delivery.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-<?xml version="1.0" ?>
-<build>
-
-	<config name="delivery" abstract="true">
-		<set  name="database" value="to1tobet"/>
-		<set  name="thread" value="1"/>
-		<set  name="dir" value="C:\temp"/>
-		
-    	<config type="snapshot" name="2D_OpenVG_1_0-to1tobet#ekhuq:project:ou1ape3#1"/>
-    </config>
-    
-</build>
--- a/buildframework/helium/tests/data/test_prep.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,213 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<prepSpec>
-    <config>
-        <exclude name="abld.bat"/>
-        <exclude name=".static_wa"/>
-        <exclude name="_ccmwaid.inf"/>
-    </config>
-    <source label="Symbian" basedir="${symbian.release.dir}">
-        <unzip name="${symbian.zip.prefix}${symbian.release}_src_generic_part1.zip"/>
-        <unzip name="${symbian.zip.prefix}${symbian.release}_src_generic_part2.zip"/>
-        <unzip name="${symbian.zip.prefix}${symbian.release}_src_generic_part3.zip"/>
-        <unzip name="${symbian.zip.prefix}${symbian.release}_src_cedar.zip"/>
-        <unzip name="${symbian.zip.prefix}${symbian.release}_epoc32.zip">
-            <include name="epoc32/tools/*"/>
-            <include name="epoc32/gcc/*"/>
-            <include name="epoc32/rom/include/mscomp.iby"/>
-            <include name="epoc32/rom/include/staccomp.iby"/>
-            <include name="epoc32/rom/include/profiler.iby"/>
-            <include name="epoc32/INCLUDE/variant/Symbian_OS_v9.3.hrh"/>
-        </unzip>
-        <unzip name="${symbian.zip.prefix}${symbian.release}_epoc32_RELEASE_ARMV5.zip">
-            <include name="epoc32/RELEASE/ARMV5/UDEB/mscomp.dll"/>
-            <include name="epoc32/RELEASE/ARMV5/UDEB/staccomp.dll"/>
-            <include name="epoc32/RELEASE/ARMV5/UREL/mscomp.dll"/>
-            <include name="epoc32/RELEASE/ARMV5/UREL/staccomp.dll"/>
-            <!-- Crypto binaries -->
-            <include name="epoc32/RELEASE/ARMV5/lib/hash.lib"/>
-            <include name="epoc32/RELEASE/ARMV5/udeb/hash.dll"/>
-            <include name="epoc32/RELEASE/ARMV5/urel/hash.dll"/>
-            <include name="epoc32/RELEASE/ARMV5/lib/random.lib"/>
-            <include name="epoc32/RELEASE/ARMV5/udeb/random.dll"/>
-            <include name="epoc32/RELEASE/ARMV5/urel/random.dll"/>
-            <include name="epoc32/RELEASE/ARMV5/lib/randsvr.lib"/>
-            <include name="epoc32/RELEASE/ARMV5/udeb/randsvr.exe"/>
-            <include name="epoc32/RELEASE/ARMV5/urel/randsvr.exe"/>
-            <include name="epoc32/RELEASE/ARMV5/lib/pbe.lib"/>
-            <include name="epoc32/RELEASE/ARMV5/udeb/pbe.dll"/>
-            <include name="epoc32/RELEASE/ARMV5/urel/pbe.dll"/>
-            <include name="epoc32/RELEASE/ARMV5/lib/cryptography.lib"/>
-            <include name="epoc32/RELEASE/ARMV5/udeb/strong_cryptography.dll"/>
-            <include name="epoc32/RELEASE/ARMV5/urel/strong_cryptography.dll"/>
-            <include name="epoc32/RELEASE/ARMV5/udeb/weak_cryptography.dll"/>
-            <include name="epoc32/RELEASE/ARMV5/urel/weak_cryptography.dll"/>
-        </unzip>
-    </source>
-
-    
-    <!-- unzip ICF/ICD's for this baseline-->
-		<source name="icds" basedir="">
-			<unzipicds dest="${build.drive}\">
-				<!-- Unzipping from following location
-						 * S60
-						 * common
-						 * product
-				  -->
-				<location name="${ccm.base.dir}/S60/S60/Symbian_ICD_ICF/${symbian.release}">
-				</location>
-				<location name="${ccm.base.dir}/mc/mc_overlay/mc_4032_overlay/common/files/Symbian_ICD_ICF/${symbian.release}" />
-				<location name="${ccm.base.dir}/mc/mc_overlay/mc_4032_overlay/${product.name}_overlay/files/Symbian_ICD_ICF/${symbian.release}" />
-				
-				<include name="src/*" />
-			</unzipicds>
-		</source>
- 
-    <source label="S60" basedir="${s60.release.dir}">
-        <unzip name="S60_3_2_${s60.version}_epoc32.zip" if="NO_NCP">
-            <!-- use default commdb for chip build -->
-    	    <include name="epoc32/data/Z/private/10202be9/cccccc00.cre"/>
-        </unzip>
-    </source>
-    
-    <source label="S60" basedir="${ccm.base.dir}/S60">
-        <copy name="S60" dest="s60"/>
-    </source>
- 
-    <source label="ME" basedir="${ccm.base.dir}">
-        <copy name="me_scd_desw/me_scd_desw" dest="me/me_scd_desw"/>
-    </source>
-    
-    <source label="ppd_sw" basedir="${ccm.base.dir}">
-        <copy name="ppd_sw/ppd_sw" dest="ppd_sw"/>
-        <copy name="ppd_sw/ppd_sw/s60_dd/T9TegicDelivery" dest="s60/mw/inputmethods/textinput/T9TegicDelivery"/>
-    </source>
-
-    <source label="multimedia_sw" basedir="${ccm.base.dir}">
-        <copy name="productconceptfw/productconceptfw" dest="multimedia_sw/productconceptfw"/>
-    </source>
-
-    <source label="extra_apps" basedir="${ccm.base.dir}">
-        <copy name="DvbhTestApplication/DvbhTestApplication" dest="extra_apps/DvbhTestApplication"/>
-    </source>
-
-    <source label="chipset" basedir="${ccm.base.dir}/IBUSAL_chipset/IBUSAL_chipset">
-        <copy name="config" dest="config" unless="NO_NCP"/>
-        <copy name="ncp_sw" dest="ncp_sw" unless="NO_NCP"/>
-        <copy name="psw" dest="psw" unless="NO_NCP"/>
-        <copy name="tools" dest="tools" unless="NO_NCP"/>
-    </source>
-   
-    <source label="mc" basedir="${ccm.base.dir}">
-        <copy name="mc/mc_build" dest="mc/mc_build"/>
-        <copy name="mc/mc_config" dest="mc/mc_config"/>
-        <copy name="mc/mc_overlay/mc_4032_overlay" dest="mc/mc_overlay/mc_4032_overlay"/>
-<!--         <copy name="mc/mc_sw/mc_4032_sw/common" dest="mc/mc_sw/mc_4032_sw/common"/> -->
-<!--         <copy name="mc/mc_sw/mc_4032_sw/${product.name}" dest="mc/mc_sw/mc_4032_sw/${product.name}"/> -->
-        <copy name="mc/helium" dest="mc/helium"/>
-    </source>
-
-    <source label="chipset_cellmo" basedir="${ibusal.cellmo.dir}">
-        <copy name="product4" dest="${build.drive}/epoc32/include/product4/cellmo" unless="NO_NCP"/>
-        <copy name="product4" dest="${build.drive}/output/development_flash_images/cellmo/product4" unless="NO_NCP"/>
-        <copy name="product" dest="${build.drive}/epoc32/include/product/cellmo" unless="NO_NCP"/>
-        <copy name="product" dest="${build.drive}/output/development_flash_images/cellmo/product" unless="NO_NCP"/>
-    </source>
-
-
-
-    <source label="overlays" basedir="${build.drive}">
-        <copy name="mc/mc_overlay/mc_4032_overlay/common/files"/>
-        <copy name="mc/mc_overlay/mc_4032_overlay/${product.name}_overlay/files"/>
-
-		<!-- manual exports required before bldmake bldfiles phase -->
-        <copy name="mc/mc_config/mc_4032_config/${product.name}/include/ProductVariant.hrh" tofile="epoc32/include/oem/ProductVariant.hrh"/>
-        <copy name="mc/mc_config/mc_4032_config/${product.name}/include/ProductVariant.hrh" tofile="S60/misc/release/bldvariant/common/ProductVariant.hrh"/>
-        <copy name="mc/mc_config/mc_4032_config/${product.name}/include/ProductVariant.hrh" tofile="config/ncp_config/platform_config/config/inc/productvariant.hrh"/>
-        <copy name="me/me_scd_desw/variation/product/DeSwFlagsproduct.hrh" tofile="epoc32/include/oem/DeSwFlagsproduct.hrh"/>
-		<!--Ensure correct iby version gets exported regardless of timestamp: -->
-        <copy name="mc/mc_config/mc_4032_config/common/rom/include/NCPCenrep_variant.iby" tofile="config/ncp_config/config/rom/include/NCPCenrep_variant.iby"/>
-		<!--Ensure correct certificate gets exported regardless of timestamp: -->
-        <copy name="mc/mc_config/mc_4032_config/common/certificates/S60_root_certificates/rnd/swicertstore.dat" tofile="s60/mw/securityservices/pkiutilities/certificates/data/swicertstore.dat"/>
-
-
-    	<!-- S60 manual exports required before bldmake bldfiles phase phase where  bldvariant is included-->
-
-        <!-- special copy for subcon package -->
-        <copy name="mc/mc_config/mc_4032_config/common/certificates/S60_root_certificates/s60_licensees/swicertstore.dat" tofile="epoc32/data/z/resource/swicertstore.dat_for_s60_licensees"/>
-
-        <!-- special copy for localisation -->
-        <copy name="S60/tools/build_platforms/build/tools/parse_what_log.pl" tofile="epoc32/tools/s60tools/parse_what_log.pl"/>
-        <copy name="S60/tools/build_platforms/build/tools/add_build_definition_filter.pl" tofile="epoc32/tools/s60tools/add_build_definition_filter.pl"/>
-
-
-      <!-- chipset overlay;  manual exports required due to missing bld.inf-->
-    	<!-- from \build\ncp_build\build\variation.txt -->
-        <copy name="/psw/ncp_psw/psw" unless="NO_NCP"/>
-        <copy name="/tools/toolsmod_93" unless="NO_NCP"/>
-    	<!-- from \build\ncp_build\platform_build\build\variation.txt -->
-        <copy name="/psw/ncp_psw/platform_psw/psw" unless="NO_NCP"/>
-    	<!-- from \build\ncp_build\platform_build\platform_product_build\build\variation.txt -->
-        <copy name="/psw/ncp_psw/platform_psw/platform_product_psw/psw" unless="NO_NCP"/>
-  
-      <!-- chipset manual exports required before bldmake bldfiles phase where  bldvariant is included-->
-        <copy name="config/ncp_config/config/inc/feature_settings.hrh" tofile="epoc32/include/oem/feature_settings.hrh" unless="NO_NCP"/>
-        <copy name="config/ncp_config/config/inc/st_consts.hrh" tofile="epoc32/include/oem/st_consts.hrh" unless="NO_NCP"/>
-        <copy name="config/ncp_config/platform_config/config/inc/adaptation_features.hrh" tofile="epoc32/include/oem/adaptation_features.hrh" unless="NO_NCP"/>
-        <copy name="config/ncp_config/platform_config/config/inc/st_feature_settings.hrh" tofile="epoc32/include/oem/st_feature_settings.hrh" unless="NO_NCP"/>
-        <copy name="config/ncp_config/platform_config/config/inc/st_features_common.hrh" tofile="epoc32/include/oem/st_features_common.hrh" unless="NO_NCP"/>
-        <copy name="config/ncp_config/config/inc/spp_variant.cfg" tofile="epoc32/tools/variant/spp_variant.cfg" unless="NO_NCP"/>
-        <copy name="config/ncp_config/platform_config/config/inc/spp_feature_settings.hrh" tofile="epoc32/include/oem/spp_feature_settings.hrh" unless="NO_NCP"/>
-        <copy name="config/ncp_config/platform_config/config/inc/ncp_feature_settings.hrh" tofile="epoc32/include/oem/ncp_feature_settings.hrh" unless="NO_NCP"/>
-        <copy name="config/ncp_config/config/inc/ncp_feature_consts.hrh" tofile="epoc32/include/oem/ncp_feature_consts.hrh" unless="NO_NCP"/>
-        <copy name="config/ncp_config/config/inc/ncp_consts.hrh" tofile="epoc32/include/oem/ncp_consts.hrh" unless="NO_NCP"/>
-        <copy name="config/ncp_config/platform_config/config/inc/adaptation_conf.h" tofile="epoc32/include/internal/adaptation_conf.h" unless="NO_NCP"/>
-        <copy name="config/ncp_config/platform_config/config/inc/st_settings.hrh" tofile="epoc32/include/st_settings.hrh" unless="NO_NCP"/>
-        <copy name="ncp_sw/corecom/aasw/AaCommonTools/config/audio_sw_external_conf.hrh" tofile="epoc32/include/internal/audio_sw_external_conf.hrh" unless="NO_NCP"/>
-        <copy name="ncp_sw/corecom/aasw/AaCommonTools/config/audio_sw_conf.hrh" tofile="epoc32/include/internal/audio_sw_conf.hrh" unless="NO_NCP"/>
-
-      <!-- chipset manual exports required before bldmake bldfiles phase so build does not hang -->
-        <copy name="config/ncp_config/config/tools" dest="epoc32/tools" unless="NO_NCP"/>
-
-      <!-- fix for LightService-->
-        <copy name="/config/ncp_config/platform_config/config/inc/ncp_feature_settings.hrh" tofile="/epoc32/include/config/platform/ncp_feature_settings.hrh" unless="NO_NCP"/>
-        <copy name="/config/ncp_config/platform_config/config/inc/st_feature_settings.hrh" tofile="/epoc32/include/config/platform/st_feature_settings.hrh" unless="NO_NCP"/>
-        <copy name="/config/ncp_config/platform_config/config/inc/st_features_common.hrh" tofile="/epoc32/include/st_features_common.hrh" unless="NO_NCP"/>
-        <copy name="/config/ncp_config/platform_config/config/inc/st_features_common.hrh" tofile="/epoc32/include/config/platform/st_features_common.hrh" unless="NO_NCP"/>
-        <copy name="/config/ncp_config/platform_config/config/inc/VariationItemValues.hrh" tofile="/epoc32/include/oem/VariationItemValues.hrh" unless="NO_NCP"/>
-        <copy name="/config/ncp_config/platform_config/config/inc/VariationItemValues.hrh" tofile="/epoc32/include/config/platform/VariationItemValues.hrh" unless="NO_NCP"/>
-        <copy name="/config/ncp_config/platform_config/config/inc/VariationItemDetailedValues.hrh" tofile="/epoc32/include/oem/VariationItemDetailedValues.hrh" unless="NO_NCP"/>
-        <copy name="/config/ncp_config/platform_config/config/inc/VariationItemDetailedValues.hrh" tofile="/epoc32/include/config/platform/VariationItemDetailedValues.hrh" unless="NO_NCP"/>
-        <copy name="/config/ncp_config/platform_config/config/inc/st_features.hrh" tofile="/epoc32/include/st_features.hrh" unless="NO_NCP"/>
-        <copy name="/config/ncp_config/platform_config/config/inc/casw_light_settings.hrh" tofile="/epoc32/include/oem/casw_light_settings.hrh" unless="NO_NCP"/>
-        <copy name="/config/ncp_config/platform_config/config/inc/casw_light_settings.hrh" tofile="/epoc32/include/config/platform/casw_light_settings.hrh" unless="NO_NCP"/>
-        <copy name="/config/ncp_config/platform_config/config/inc/adaptation_features.hrh" tofile="/epoc32/include/config/platform/adaptation_features.hrh" unless="NO_NCP"/>
-        <copy name="/config/ncp_config/platform_config/config/tools/platform.bsf" tofile="/epoc32/tools/platform.bsf" unless="NO_NCP"/>
-
-        <copy name="/config/ncp_config/platform_config/platform_product_config/config/inc/ncp_feature_settings.hrh" tofile="/epoc32/include/config/platform/product4/ncp_feature_settings.hrh" unless="NO_NCP"/>
-        <copy name="/config/ncp_config/platform_config/platform_product_config/config/inc/VariationItemValues.hrh" tofile="/epoc32/include/config/platform/product4/VariationItemValues.hrh" unless="NO_NCP"/>
-        <copy name="/config/ncp_config/platform_config/platform_product_config/config/inc/VariationItemDetailedValues.hrh" tofile="/epoc32/include/config/platform/product4/VariationItemDetailedValues.hrh" unless="NO_NCP"/>
-        <copy name="/config/ncp_config/platform_config/platform_product_config/config/inc/st_feature_settings.hrh" tofile="/epoc32/include/config/platform/product4/st_feature_settings.hrh" unless="NO_NCP"/>
-        <copy name="/config/ncp_config/platform_config/platform_product_config/config/inc/casw_light_settings.hrh" tofile="/epoc32/include/config/platform/product4/casw_light_settings.hrh" unless="NO_NCP"/>
-        <copy name="/config/ncp_config/platform_config/platform_product_config/config/rom/config/x_conf_product4.txt" tofile="/ncp_sw/spp_core4.0/base_ca_product/stn8815/product/product4/x_conf_product4.txt" unless="NO_NCP"/>
-        <copy name="/config/ncp_config/platform_config/platform_product_config/config/tools/product4.bsf" tofile="/epoc32/tools/product4.bsf" unless="NO_NCP"/>
-
-        <copy name="/config/ncp_config/platform_config/platform_product_config/config/inc/ncp_feature_settings.hrh" tofile="/epoc32/include/config/platform/product/ncp_feature_settings.hrh" unless="NO_NCP"/>
-        <copy name="/config/ncp_config/platform_config/platform_product_config/config/inc/VariationItemValues.hrh" tofile="/epoc32/include/config/platform/product/VariationItemValues.hrh" unless="NO_NCP"/>
-        <copy name="/config/ncp_config/platform_config/platform_product_config/config/inc/VariationItemDetailedValues.hrh" tofile="/epoc32/include/config/platform/product/VariationItemDetailedValues.hrh" unless="NO_NCP"/>
-        <copy name="/config/ncp_config/platform_config/platform_product_config/config/inc/st_feature_settings.hrh" tofile="/epoc32/include/config/platform/product/st_feature_settings.hrh" unless="NO_NCP"/>
-        <copy name="/config/ncp_config/platform_config/platform_product_config/config/inc/casw_light_settings.hrh" tofile="/epoc32/include/config/platform/product/casw_light_settings.hrh" unless="NO_NCP"/>
-        <copy name="/config/ncp_config/platform_config/platform_product_config/config/tools/product.bsf" tofile="/epoc32/tools/product.bsf" unless="NO_NCP"/>
-
-      <!-- temporary chipset manual exports -->
-        <copy name="config/s60_32_config/config/rom/include/commsdat_db_variant.iby" tofile="epoc32/rom/include/commsdat_db_variant.iby" unless="NO_NCP"/>
-        <copy name="config/s60_32_config/config/rom/include/commsdat.iby" tofile="epoc32/rom/include/commsdat.iby" unless="NO_NCP"/>
-        <copy name="config/s60_32_config/config/rombuild/s60_romfiles.txt" tofile="epoc32/rombuild/s60_romfiles.txt" unless="NO_NCP"/>
-        <copy name="ncp_sw/spp_core4.0/product/targets/product/variant.mmh" tofile="epoc32/include/product/variant.mmh" unless="NO_NCP"/>
-    </source>
-
-    <source label="Temporary unzip of DVB-H" basedir="${build.drive}">
-        <unzip name="me/me_scd_desw/source/JugnooTSW.zip"/>
-    </source>
-
- 
-</prepSpec>
--- a/buildframework/helium/tests/data/validate_overlay/delivery.xml.parsed	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-<?xml version="1.0" ?>
-<deliveryConfiguration>
-
-  <snapshot project="ppd_sw-MCL_200732:project:sa1spp#1" dir="E:\wbernard\ccm_wa\fa1f5132\0734" thread="10" />
-
-	<checkout project="IBUSAL_RapidoYawe-jk1f5132#0734:project:jk1imeng#1" dir="E:\wbernard\ccm_wa\fa1f5132\0734" release="mc/next" />
-	
-	<!-- temporary fix to handle two naviscroll projects -->
-	<snapshot project="naviscroll-jk1f5132#0728_2:project:tr1imeng#1" dir="E:\wbernard\ccm_wa\fa1f5132\0734\naviscroll-old" thread="1" />
-	<snapshot project="sensor_server_adaptation-jk1f5132#0728_2:project:tr1imeng#1" dir="E:\wbernard\ccm_wa\fa1f5132\0734\sensor_server_adaptation-old" thread="1" />
-	<!-- this is for new driver  - requires change in sys_def to be compiled -->
-	<snapshot project="naviscroll-jk1f5132#0734:project:tr1imeng#1" dir="E:\wbernard\ccm_wa\fa1f5132\0734\naviscroll-new" thread="1" />
-	<snapshot project="sensor_server_adaptation-jk1f5132#0734:project:tr1imeng#1" dir="E:\wbernard\ccm_wa\fa1f5132\0734\sensor_server_adaptation-new" thread="1" />
-	
-
-  <snapshot project="S60-S60.32_200732:project:sa1spp#1" dir="E:\wbernard\ccm_wa\fa1f5132\0734" thread="10" />
-	
-	<snapshot project="T9TegicDelivery-tr1s60#AppBaseDo_direct_200707:project:ccm51#1" dir="E:\wbernard\ccm_wa\fa1f5132\0734" thread="1" />
-	<snapshot project="maps-bh1cfloc#1.2_200734:project:tr1cfloc#1" dir="E:\wbernard\ccm_wa\fa1f5132\0734\multimedia_sw" thread="1" />
-	<snapshot project="fmtx-dev_200729:project:tr1nss#1" dir="E:\wbernard\ccm_wa\fa1f5132\0734\multimedia_sw" thread="1" />
-	<snapshot project="InternetRadio-InternetRadioA32_0732:project:sa1nssx4#1" dir="E:\wbernard\ccm_wa\fa1f5132\0734\multimedia_sw" thread="1" />
-  <!-- VOIP baselines -->
-<snapshot project="ipappservices_Domain_direct-IPASDo_direct_200731:project:he1cfsip#1" dir="E:\wbernard\ccm_wa\fa1f5132\0734\multimedia_sw\VoIP" thread="1" />
-<snapshot project="iptelephony-TeDo_direct_200731:project:ou1s60rt#1" dir="E:\wbernard\ccm_wa\fa1f5132\0734\multimedia_sw\VoIP" thread="1" />
-<snapshot project="brandingserver-bh1s60#IMPPDo_Int.200731:project:tr1cfmsg#1" dir="E:\wbernard\ccm_wa\fa1f5132\0734\multimedia_sw\VoIP" thread="1" />
-<snapshot project="presencefw-IMPECDo_Int_200731:project:tr1cfmsg#1" dir="E:\wbernard\ccm_wa\fa1f5132\0734\multimedia_sw\VoIP" thread="1" />
-<snapshot project="simpledatamodeladapter-Sawfish_VoIP_2007_wk27:project:ou1cfspd#1" dir="E:\wbernard\ccm_wa\fa1f5132\0734\multimedia_sw\VoIP" thread="1" />
-<snapshot project="sipvoipcontactsextension-Sawfish_VoIP_2007_wk33:project:ou1cfspd#1" dir="E:\wbernard\ccm_wa\fa1f5132\0734\multimedia_sw\VoIP" thread="1" />
- <snapshot project="calllineidentificationxsp-Sawfish_VoIP_2007_wk31:project:ou1cfspd#1" dir="E:\wbernard\ccm_wa\fa1f5132\0734\multimedia_sw\VoIP" thread="1" />
- <snapshot project="callloggingxsp-Sawfish_VoIP_2007_wk20:project:ou1cfspd#1" dir="E:\wbernard\ccm_wa\fa1f5132\0734\multimedia_sw\VoIP" thread="1" />
- <snapshot project="callmenuxsp-Sawfish_VoIP_2007_wk20:project:ou1cfspd#1" dir="E:\wbernard\ccm_wa\fa1f5132\0734\multimedia_sw\VoIP" thread="1" />
- <snapshot project="callstateidentificationxsp-Sawfish_VoIP_2007_wk33:project:ou1cfspd#1" dir="E:\wbernard\ccm_wa\fa1f5132\0734\multimedia_sw\VoIP" thread="1" />
- <snapshot project="calltypeidentificationxsp-Sawfish_VoIP_2007_wk20:project:ou1cfspd#1" dir="E:\wbernard\ccm_wa\fa1f5132\0734\multimedia_sw\VoIP" thread="1" />
- <snapshot project="logsserviceextension-Sawfish_VoIP_2007_wk33:project:ou1cfspd#1" dir="E:\wbernard\ccm_wa\fa1f5132\0734\multimedia_sw\VoIP" thread="1" />
-	<!-- VOIP baselines -->
-  <snapshot project="me_scd_desw-release5_200733:project:fa1cfspd#1" dir="E:\wbernard\ccm_wa\fa1f5132\0734\multimedia_sw" thread="5" />			
-	
-	<checkout project="productconceptfw-s6032_2007_wk27:project:tr1nss#1" dir="E:\wbernard\ccm_wa\fa1f5132\0734\multimedia_sw" release="mc/next">
-	    <task id="tr1nss#34759" />
-	</checkout>
-	
-	<snapshot project="MCNaviscroll-0726_Inc7.1:project:fa1f5132#1" dir="E:\wbernard\ccm_wa\fa1f5132\0734\multimedia_sw" thread="1" />
-	
-	<snapshot project="WLANSniffer2-2007_wk21:project:e002sa08#1" dir="E:\wbernard\ccm_wa\fa1f5132\0734\multimedia_sw" thread="1" />
-	
-	<!-- Jan: 27.06.2007: adding phone activation thingie -->
-	<snapshot project="phoneactivation_2.0-he1dcm#07wk34_2:project:e003sa26#1" dir="E:\wbernard\ccm_wa\fa1f5132\0734\multimedia_sw" thread="1" />	
-</deliveryConfiguration>
\ No newline at end of file
--- a/buildframework/helium/tests/data/validate_overlay/new_delivery/delivery.xml.parsed	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,77 +0,0 @@
-<?xml version="1.0" ?>
-<build>
-    <spec name="mc_5132" abstract="true">
-        <set name="database" value="fa1f5132"/>
-        <set name="dir" value="E:\wbernard\ccm_wa\fa1f5132\0740"/>
-        <set name="threads" value="4"/> 
-        <set name="release" value="mc/integration"/> 
-        
-        <spec name="ppd_sw-MCL_200726:project:sa1spp#1" type="snapshot"/>
-        <spec name="IBUSAL_RapidoYawe-jk1f5132#0732:project:jk1imeng#1" type="snapshot"/>
-        
-        <!-- temporary fix to handle two naviscroll projects -->
-        <spec name="naviscroll-jk1f5132#0728_2:project:tr1imeng#1" type="snapshot">
-	        <set name="dir" value="E:\wbernard\ccm_wa\fa1f5132\0740\naviscroll-old"/>
-        </spec>
-        <spec name="sensor_server_adaptation-jk1f5132#0728_2:project:tr1imeng#1" type="snapshot">
-	        <set name="dir" value="E:\wbernard\ccm_wa\fa1f5132\0740\sensor_server_adaptation-old"/>
-        </spec>
-        
-        <!-- this is for new driver  - requires change in sys_def to be compiled -->
-        <spec name="naviscroll-jk1f5132#0732:project:tr1imeng#1" type="snapshot">
-	        <set name="dir" value="E:\wbernard\ccm_wa\fa1f5132\0740\naviscroll-new"/>
-        </spec>
-        <spec name="sensor_server_adaptation-jk1f5132#0732:project:tr1imeng#1" type="snapshot">
-	        <set name="dir" value="E:\wbernard\ccm_wa\fa1f5132\0740\sensor_server_adaptation-new"/>
-        </spec>
-
-        <spec name="S60-S60.32_200726:project:sa1spp#1" type="snapshot">
-        	<set name="threads" value="10"/>
-        </spec>
-        
-        <spec name="T9TegicDelivery-tr1s60#AppBaseDo_direct_200707:project:ccm51#1" type="snapshot"/>
-        
-        <spec name="multimedia_sw" abstract="true">
-        	<set name="threads" value="1"/>
-	        <set name="dir" value="E:\wbernard\ccm_wa\fa1f5132\0740\multimedia_sw"/>
-        	<spec name="maps-bh1cfloc#1.1_200725:project:tr1cfloc#1" type="snapshot"/>
-        	<spec name="fmtx-dev_200725:project:tr1nss#1" type="snapshot"/>
-        	<spec name="InternetRadio-InternetRadioA32_0726:project:sa1nssx4#1" type="snapshot"/>
-        	
-        	<!-- VOIP baselines -->
-	        <spec name="multimedia_sw" abstract="true">
-				<set name="dir" value="E:\wbernard\ccm_wa\fa1f5132\0740\multimedia_sw\VoIP"/>
-				<spec name="ipappservices_Domain_direct-ou1cfspd#Sawfish_2007wk27:project:he1cfsip#1" type="snapshot" />
-				<spec name="iptelephony-ou1cfspd#Sawfish_2007wk27:project:ou1s60rt#1" type="snapshot" />
-				<spec name="brandingserver-bh1s60#IMPPDo_Int_200725:project:tr1cfmsg#1" type="snapshot" />
-				<spec name="presencefw-IMPECDo_Int_200721:project:tr1cfmsg#1" type="snapshot" />
-				<spec name="simpledatamodeladapter-Sawfish_VoIP_2007_wk27:project:ou1cfspd#1" type="snapshot" />
-				<spec name="sipvoipcontactsextension-Sawfish_VoIP_2007_wk27:project:ou1cfspd#1" type="snapshot" />
-	  			<spec name="calllineidentificationxsp-Sawfish_VoIP_2007_wk27:project:ou1cfspd#1" type="snapshot" />
-  				<spec name="callloggingxsp-Sawfish_VoIP_2007_wk20:project:ou1cfspd#1" type="snapshot" />
-			    <spec name="callmenuxsp-Sawfish_VoIP_2007_wk20:project:ou1cfspd#1" type="snapshot" />
-  				<spec name="callstateidentificationxsp-Sawfish_VoIP_2007_wk27:project:ou1cfspd#1" type="snapshot" />
-  				<spec name="calltypeidentificationxsp-Sawfish_VoIP_2007_wk20:project:ou1cfspd#1" type="snapshot" />
-  				<spec name="logsserviceextension-Sawfish_VoIP_2007_wk27:project:ou1cfspd#1" type="snapshot" />
-			</spec>
-			
-			<spec name="me_scd_desw-release5_200729v1:project:fa1cfspd#1" type="snapshot" />			
-	
-			<spec name="productconceptfw-s6032_2007_wk27:project:tr1nss#1" type="checkout">
-	    		<set name="tasks" value="tr1nss#34759" />
-	    		<set name="threads" value="5"/>
-			</spec>
-	
-			<spec name="MCNaviscroll-0726_Inc7.1:project:fa1f5132#1" type="snapshot" />	
-			<spec name="WLANSniffer2-2007_wk21:project:e002sa08#1" type="snapshot" />
-	
-			<!-- Jan: 27.06.2007: adding phone activation thingie -->
-			<spec name="phoneactivation_2.0-he1dcm#07wk31_4:project:e003sa26#1" type="snapshot"/>
-
-	    </spec>
-    </spec>
-</build>
-
-
-	
-	
--- a/buildframework/helium/tests/data/validate_overlay/new_delivery/prep.xml.parsed	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,251 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<prepSpec>
-    <config>
-				<exclude name="abld.bat"/>
-				<exclude name=".static_wa"/>
-				<exclude name="_ccmwaid.inf"/>
-				<exclude name="documentation/*"/>
-				<exclude name="documents/*"/>
-				<exclude name="doc/*"/>
-				<!-- Fix to missing .bmp files in s60\md\java component. Files were missing since javahelper.mbm file was existing under \epoc32\.. 
-				and it wasn't executing the epocmbm.pl command in the makefile. This is required only when using (i.e. unzipping) Symbian binaries  -->
-				<exclude name="javahelper.mbm"/>
-		</config>
-<!-- Other possible excludable folders -->
-<!--				<exclude name="e32test/*"/> -->
-<!--				<exclude name="f32test/*"/> -->
-<!--				<exclude name="WINCW/*"/> -->
-<!--				<exclude name="WINC/*"/> -->
-<!--				<exclude name="WINS/*"/> -->
-<!--				<exclude name="bwins/*"/> -->
-<!--				<exclude name="swins/*"/> -->
-<!--				<exclude name="WINSCW/*"/> -->
-		
-		<source label="Symbian" basedir="\\fasamba\dfs\r1120_isis\NT\Build_and_Release\GRACE\MC\SOS\__SymbianOS_9.3\SymbianOS_93_2007_wk36">
-				<unzip name="MCL_93_200736_src_generic_part1.zip"/>
-				<unzip name="MCL_93_200736_src_generic_part2.zip"/>
-				<unzip name="MCL_93_200736_src_generic_part3.zip"/>
-				<unzip name="MCL_93_200736_src_cedar.zip"/>
-				<unzip name="MCL_93_200736_src_common_other_sources_part2.zip"/>
-
-				<!-- This is required to generate all the .jar files correctly under \epoc32\tools\ -->
-				<unzip name="MCL_93_200736_src_product.zip" dest="z:/src"/>
-
-				<unzip name="MCL_93_200736_epoc32.zip"/>
-				<unzip name="MCL_93_200736_epoc32_RELEASE_ARMV5.zip"/>
-		</source>
-
-		<!-- Unzip (ICF/ICD)'s if there are any -->
-		<source name="icds" basedir="">
-			<unzipicds dest="z:\">
-				<!-- Unzipping from following location
-						 * S60
-						 * common
-						 * product
-					-->
-				<location name="E:\wbernard\ccm_wa\fa1f5132\0740/S60/S60/Symbian_ICD_ICF/93_200736" />
-				<location name="E:\wbernard\ccm_wa\fa1f5132\mc-fa1f5132#0728_ec\mc\mc_build\mc_5132_build../../../mc_overlay/mc_5132_overlay/common/files/Symbian_ICD_ICF/93_200736" />
-			</unzipicds>
-		</source>
-
-		<!-- copying  s60 content -->
-		<source label="S60" basedir="E:\wbernard\ccm_wa\fa1f5132\0740">
-			<copy name="S60/s60"	 dest="s60" />
-		</source>
-
-
-		<source label="PPD" basedir="E:\wbernard\ccm_wa\fa1f5132\0740">
-			<copy name="ppd_sw/ppd_sw"					dest="ppd_sw"/>			
-		</source>
-		
-		<source label="IBUSAL51" basedir="E:\wbernard\ccm_wa\fa1f5132\0740/">
-			<copy name="IBUSAL_RapidoYawe/IBUSAL_RapidoYawe"/>
-		</source>
-		
-   <source label="MULTIMEDIA_SW" basedir="E:\wbernard\ccm_wa\fa1f5132\0740">
-		 	<copy name="multimedia_sw"				 dest="multimedia_sw"/>
-	 </source>
-
-		<source label="NSS_ICONS" basedir="\\fasamba\dfs\r1120_isis\NT\Build_and_Release\GRACE\MC\NSS">
-					 <unzip name="nss_sources_3_2_wk34.zip" dest="ppd_sw/nss_sw"/>
-		</source>
-
-		<source label="CELLMO" basedir="\\fasamba\dfs\r1120_isis\NT\Build_and_Release\GRACE\MC\Cellmo\product">
-				<!-- product cellmo copy -->
-				<copy name="\Releases\IBUSAL_CellMo\2007_wk15_PB\2007wk15v20\product\rm187_rapido_v1_1_flsh_image.hex"	tofile="epoc32/rom/config/platform/product/dsp.hex"/>
-				<copy name="\Releases\IBUSAL_CellMo\2007_wk15_PB\2007wk15v20\product\nalo.axf"			tofile="epoc32/rom/config/platform/product/nalo.axf"/>
-				<copy name="\Releases\IBUSAL_CellMo\2007_wk15_PB\2007wk15v20\product\naloext.axf"		tofile="epoc32/rom/config/platform/product/naloext.axf"/>
-				<copy name="\Releases\IBUSAL_CellMo\2007_wk15_PB\2007wk15v20\product\3rd.bin" 			tofile="epoc32/rom/config/platform/product/3rd.bin"/>
-				<copy name="\Releases\IBUSAL_CellMo\2007_wk15_PB\2007wk15v20\product\rm235_07wk15v20.out"	tofile="epoc32/rom/config/platform/product/isa.out"/>
-				<!-- product Edge cellmo copy -->
-        			<copy name="\Releases\IBUSAL_CellMo\2007_wk15_PB\2007wk15v20\product_chn\wg41s_edge_rapido_v1_1_flsh_image.hex"	tofile="epoc32/rom/config/platform/product_edge/dsp.hex"/>
-				<copy name="\Releases\IBUSAL_CellMo\2007_wk15_PB\2007wk15v20\product_chn\nalo.axf"			tofile="epoc32/rom/config/platform/product_edge/nalo.axf"/>
-				<copy name="\Releases\IBUSAL_CellMo\2007_wk15_PB\2007wk15v20\product_chn\naloext.axf"		tofile="epoc32/rom/config/platform/product_edge/naloext.axf"/>
-				<copy name="\Releases\IBUSAL_CellMo\2007_wk15_PB\2007wk15v20\product_chn\3rd.bin" 			tofile="epoc32/rom/config/platform/product_edge/3rd.bin"/>
-				<copy name="\Releases\IBUSAL_CellMo\2007_wk15_PB\2007wk15v20\product_chn\rm236_07wk15v20.out"	tofile="epoc32/rom/config/platform/product_edge/isa.out"/>
-				<!--
-				<branchInfo originator="tpekkane">
-				Americas variant integration
-				</branchInfo>
-				BRANCH 21-Sep-2007
-				-->
-				<!-- product Americas/lta cellmo copy -->
-				<copy name="\Releases\IBUSAL_CellMo\2007_wk15_PB\2007wk15v20\product_lta\dsp50_RAPIDO_v1_1.hex" tofile="epoc32/rom/config/platform/product_lta/dsp.hex"/>
-				<copy name="\Releases\IBUSAL_CellMo\2007_wk15_PB\2007wk15v20\product_lta\nalo.axf"			tofile="epoc32/rom/config/platform/product_lta/nalo.axf"/>	
-				<copy name="\Releases\IBUSAL_CellMo\2007_wk15_PB\2007wk15v20\product_lta\naloext.axf"		tofile="epoc32/rom/config/platform/product_lta/naloext.axf"/>			
-				<copy name="\Releases\IBUSAL_CellMo\2007_wk15_PB\2007wk15v20\product_lta\3rd.bin" 			tofile="epoc32/rom/config/platform/product_lta/3rd.bin"/>			
-				<copy name="\Releases\IBUSAL_CellMo\2007_wk15_PB\2007wk15v20\product_lta\rm342_07wk15v20.out"	tofile="epoc32/rom/config/platform/product_lta/isa.out"/>
-				<!-- BRANCH_END -->
-		</source>
-
-		<source label="T9TegicDelivery" basedir="E:\wbernard\ccm_wa\fa1f5132\0740">
-				<copy name="T9TegicDelivery\T9TegicDelivery" dest="S60\mw\inputmethods\textinput\T9TegicDelivery" />
-		</source>
-
-		<!-- Copying ppd patch sw -->
-		<source label="psw" basedir="z:">
-				<copy name="psw\ncp_psw\psw"/>
-				<copy name="psw\ncp_psw\platform_psw\psw"/>
-				<copy name="psw\ncp_psw\platform_psw\platform_product_psw\psw"/>
-				<copy name="psw\s60_32_psw\psw"/>
-				<copy name="psw\s60_32_psw\51.32_psw\psw"/>
-				<copy name="psw\ncp_psw\platform_psw\ncp_psw"/>
-		</source>
-	        
- 
-   	<!-- Apply the overlays first -->
-		<source label="mc" basedir="E:\wbernard\ccm_wa\fa1f5132\mc-fa1f5132#0728_ec\mc\mc_build\mc_5132_build../../..">
-				<copy name="mc_overlay/mc_5132_overlay/common/files"/>
-        <copy name="mc_overlay/mc_5132_overlay/common/files" dest="mc/mc_overlay/mc_5132_overlay/common/files" />
-				<!-- bvsupport <copy name="mc_overlay/mc_5132_overlay/mc_5132_overlay/files"/>-->
-
-				<copy name="mc_build" dest="mc/mc_build"/>
-				<copy name="mc_config" dest="mc/mc_config"/> <!-- variation folder will be there -->
-				<copy name="mc_sw" dest="mc/mc_sw"/>
-
-		    <!-- This is required for FMTx Increment 6 -->
-		    <copy name="mc_config\mc_5132_config\mc_5132\include\ProductStaticFeatures.hrh" tofile="epoc32\include\oem\ProductStaticFeatures.hrh"/>
-				
-				<!-- SPP CARBON CHANGE:  markhyvo: 						-->
-		    <copy name="mc_config\mc_5132_config\mc_5132\include\ProductVariant.hrh" tofile="epoc32\include\oem\ProductVariant.hrh"/>
-        <copy name="mc_config\mc_5132_config\mc_5132\include\ProductVariant.hrh" tofile="S60\misc\release\bldvariant\common\ProductVariant.hrh"/>
-        <copy name="mc_config\mc_5132_config\mc_5132\include\ProductVariant.hrh" tofile="config\s60_32_config\51.32_config\config\inc\ProductVariant.hrh"/>
-		</source>
-
-		<!-- Copying helium from its location. -->
-		<source label="mc" basedir="E:\wbernard\workspace\helium/../">
-			<copy name="helium" dest="mc/helium"/>
-		</source>
-   
-    <!-- desw config -->
-	  <source label="desw" basedir="z:">
-        <copy name="\s60\mw\uiresources\uiresources_dom\icon_build_locations_api\inc\iconlocations.hrh" tofile="\epoc32\include\oem\iconlocations.hrh" />
-	      <copy name="\multimedia_sw\me_scd_desw\me_scd_desw\variation\product\DeSwFlagsproduct.hrh" tofile="\epoc32\include\oem\DeSwFlagsproduct.hrh" />
-		</source>
-   
-    <source label="PP_manual_exports" basedir="z:">
-			<!-- NCP manual exports required before bldmake bldfiles phase where  bldvariant is included-->
-		  <copy name="config/ncp_config/config/inc/feature_settings.hrh" tofile="epoc32/include/oem/feature_settings.hrh"/>
-			<copy name="config/s60_32_config/51.32_config/config/inc/spp_feature_settings.hrh" tofile="epoc32/include/oem/spp_feature_settings.hrh"/>
-			<copy name="config/ncp_config/config/inc/ncp_feature_consts.hrh" tofile="epoc32/include/oem/ncp_feature_consts.hrh"/>
-			<copy name="config/ncp_config/platform_config/config/inc/ncp_feature_settings.hrh" tofile="epoc32/include/oem/ncp_feature_settings.hrh"/>
-			<copy name="config/ncp_config/platform_config/config/inc/adaptation_conf.h" tofile="epoc32/include/internal/adaptation_conf.h"/>
-    	<copy name="config/ncp_config/platform_config/config/inc/adaptation_features.hrh" tofile="epoc32/include/oem/adaptation_features.hrh"/>
-		  <copy name="config/ncp_config/platform_config/config/inc/Symbian.hrh" tofile="epoc32/include/oem/Symbian.hrh"/>
-			<copy name="config/ncp_config/config/inc/spp_variant.cfg" tofile="EPOC32/tools/variant/spp_variant.cfg"/>
-      <copy name="config/ncp_config/config/inc/ncp_consts.hrh" tofile="epoc32/include/oem/ncp_consts.hrh"/>
-	    <copy name="ncp_sw/corecom/aasw/AaCommonTools/config/audio_sw_conf.hrh" tofile="epoc32/include/internal/audio_sw_conf.hrh"/>
-	    <copy name="ncp_sw/corecom/aasw/AaCommonTools/config/audio_sw_external_conf.hrh" tofile="epoc32/include/internal/audio_sw_external_conf.hrh"/>
-			
-			<copy name="config\s60_32_config\config\inc\bldregional.hrh"     tofile="epoc32\include\oem\bldregional.hrh"/>
-			<copy name="config\s60_32_config\config\inc\bldvariant.hrh"			tofile="epoc32\include\oem\bldvariant.hrh"/>
-      <copy name="config\s60_32_config\config\inc\bldpublic.hrh"			tofile="epoc32\include\oem\bldpublic.hrh"/>
-      <copy name="config\s60_32_config\config\inc\bldprivate.hrh"			tofile="epoc32\include\oem\bldprivate.hrh"/>
-      <copy name="config\s60_32_config\config\inc\bldcodeline.hrh"			tofile="epoc32\include\oem\bldcodeline.hrh"/>
-      <copy name="config\s60_32_config\config\inc\privateruntimeids.hrh"		tofile="epoc32\include\oem\privateruntimeids.hrh"/>
-      <copy name="config\s60_32_config\config\inc\publicruntimeids.hrh"		tofile="epoc32\include\oem\publicruntimeids.hrh"/>
-      <copy name="config\s60_32_config\config\inc\PublicStaticFeatures.hrh"		tofile="epoc32\include\oem\PublicStaticFeatures.hrh"/>
-      <copy name="config\s60_32_config\config\inc\PrivateStaticFeatures.hrh"	tofile="epoc32\include\oem\PrivateStaticFeatures.hrh"/>
-      <copy name="config\s60_32_config\config\inc\PlatformStaticFeatures.hrh"	tofile="epoc32\include\oem\PlatformStaticFeatures.hrh"/>
-			<!-- bsf files needed to export here so that variation information is valid on time-->
-	    <copy name="config/ncp_config/config/tools/ARM11.bsf" tofile="epoc32/tools/ARM11.bsf"/>
-	    <copy name="config/ncp_config/config/tools/ARM11_arm.bsf" tofile="epoc32/tools/ARM11_arm.bsf"/>
-	    <copy name="config/ncp_config/config/tools/ARM926_arm.bsf" tofile="epoc32/tools/ARM926_arm.bsf"/>
-	    <copy name="config/ncp_config/config/tools/ARM9E.bsf" tofile="epoc32/tools/ARM9E.bsf"/>
-	    <copy name="config/ncp_config/config/tools/config.bsf" tofile="epoc32/tools/config.bsf"/>
-	    <copy name="config/ncp_config/config/tools/variant.bsf" tofile="epoc32/tools/variant.bsf"/>
-	    <copy name="config/ncp_config/platform_config/config/tools/platform.bsf" tofile="epoc32/tools/platform.bsf"/>
-	    <!-- <copy name="config/ncp_config/platform_config/config/tools/platform.bsf" tofile="epoc32/tools/platform.bsf"/>
-	    <copy name="config/ncp_config/platform_config/config/tools/platform.bsf" tofile="epoc32/tools/platform.bsf"/>
-	    <copy name="config/ncp_config/platform_config/platform_product_config/config/tools/product.bsf" tofile="epoc32/tools/product.bsf"/>
-	    <copy name="config/ncp_config/platform_config/platform_devlon_config/config/tools/devlon51.bsf" tofile="epoc32/tools/devlon51.bsf"/>-->
-	    <copy name="config/ncp_config/platform_config/platform_product_config/config/tools/product.bsf" tofile="epoc32/tools/product.bsf"/>
-	    <copy name="config/ncp_config/platform_config/platform_product_edge_config/config/tools/product_edge.bsf" tofile="epoc32/tools/product_edge.bsf"/>
-	    <!--<copy name="config/ncp_config/platform_config/platform_product_config/config/tools/product.bsf" tofile="epoc32/tools/product.bsf"/>
-	    <copy name="config/ncp_config/platform_config/platform_product_config/config/tools/product.bsf" tofile="epoc32/tools/product.bsf"/>
-	    <copy name="config/ncp_config/platform_config/platform_devlon_r3_config/config/tools/devlon51_r3.bsf" tofile="epoc32/tools/devlon51_r3.bsf"/>	    
-	    <copy name="config/ncp_config/platform_config/platform_devlon_config/config/tools/devlon70.bsf" tofile="epoc32/tools/devlon70.bsf"/>-->
-	    <copy name="config/ncp_config/platform_config/platform_product_config/config/inc/ncp_feature_settings.hrh" tofile="epoc32/include/config/platform/product/ncp_feature_settings.hrh"/>
-	    <copy name="config/ncp_config/platform_config/platform_devlon_config/config/inc/ncp_feature_settings.hrh" tofile="epoc32/include/config/platform/devlon51/ncp_feature_settings.hrh"/>
-	    <copy name="config/ncp_config/platform_config/platform_product_config/config/inc/ncp_feature_settings.hrh" tofile="epoc32/include/config/platform/product/ncp_feature_settings.hrh"/>
-	    <copy name="config/ncp_config/platform_config/platform_product_edge_config/config/inc/ncp_feature_settings.hrh" tofile="epoc32/include/config/platform/product_edge/ncp_feature_settings.hrh"/>
-	    <copy name="config/ncp_config/platform_config/platform_product_config/config/inc/ncp_feature_settings.hrh" tofile="epoc32/include/config/platform/product/ncp_feature_settings.hrh"/>
-	    <copy name="config/ncp_config/platform_config/platform_product_config/config/inc/ncp_feature_settings.hrh" tofile="epoc32/include/config/platform/product/ncp_feature_settings.hrh"/>
-	    <copy name="config/ncp_config/platform_config/platform_devlon_r3_config/config/inc/ncp_feature_settings.hrh" tofile="epoc32/include/config/platform/devlon51_r3/ncp_feature_settings.hrh"/>
-      <copy name="config/ncp_config/platform_config/platform_devlon_config/config/inc/ncp_feature_settings.hrh" tofile="epoc32/include/config/platform/devlon70/ncp_feature_settings.hrh"/>
-	    <del name="config/ncp_config/platform_config/config/tools/platform.bsf"/>
-	    <del name="config/ncp_config/platform_config/config/tools/platform.bsf"/>
-	    <del name="config/ncp_config/platform_config/platform_product_config/config/tools/product.bsf"/>
-	    <del name="config/ncp_config/platform_config/platform_devlon_config/config/tools/devlon51.bsf"/>
-	    <del name="config/ncp_config/platform_config/platform_product_config/config/tools/product.bsf"/>
-	    <del name="config/ncp_config/platform_config/platform_product_config/config/tools/product.bsf"/>
-	    <del name="config/ncp_config/platform_config/platform_devlon_r3_config/config/tools/devlon51_r3.bsf"/>	    
-	    <del name="config/ncp_config/platform_config/platform_devlon_config/config/tools/devlon70.bsf"/>
-	  </source>
-
-    
-		<!-- NCP manual exports required due to missing bld.inf -->
-		<source label="NCP_config" basedir="z:">
-				<!-- Copying spp modified tools -->
-				<copy name="tools\ncp_tools\toolsmod_93" />
-                                <!-- 
-				<copy name="config\s60_32_config\51.32_config\51.32_${product.base.name}_config\config\inc\spp_feature_settings.hrh" tofile="epoc32\include\oem\spp_feature_settings.hrh"/>
-                                 -->
-				<copy name="config\s60_32_config\51.32_config\config\rom\config\my_romfiles.txt" tofile="epoc32\rombuild\my_romfiles.txt"/>
-		</source>
-
-		<source label="S60_config" basedir="z:">
-				<copy name="src\cedar\generic\utils\Symbian_OS_v9.3.hrh" tofile="epoc32\INCLUDE\variant\Symbian_OS_v9.3.hrh"/>
-				<copy name="src\cedar\generic\utils\Symbian_OS_v9.3_cbrtargetalias.cfg" tofile="epoc32\tools\variant\cbrtargetalias.cfg"/>
-				
-				
-		<!-- SPP CARBON CHANGE:  markhyvo: 		<copy name="S60\misc\release\bldvariant\elaf\data\bldvariant.hrh" tofile="epoc32\include\oem\bldvariant.hrh"/>  -->
-				<!-- variant.cfg is absoultely critical as it is being used during "bldmake bldfiles",
-						 otherwise the makefiles won't generte correctly -->
-				<copy name="S60\misc\release\bldvariant\common\variant.cfg" tofile="EPOC32\tools\variant\variant.cfg"/>
-				<copy name="S60\misc\release\bldvariant\common\features.hrh" tofile="epoc32\include\oem\features.hrh"/>
-				<copy name="S60\misc\release\bldvariant\common\defaultcaps.hrh" tofile="epoc32\include\oem\defaultcaps.hrh"/>
-		    <copy name="S60\misc\release\S60Exports\tools\S60IBYMACROS.PM" tofile="epoc32\tools\S60IBYMACROS.PM"/>
-		    
-		    <!--On S60 3.2 w16 platform_paths.hrh has changed place -->
-		    <copy name="S60\osext\systemswextensions\sysswext_dom\platform_path_definitions_api\inc\platform_paths.hrh"  tofile="epoc32\include\domain\osextensions\platform_paths.hrh"/>
-		    <copy name="S60\osext\systemswextensions\sysswext_dom\platform_path_definitions_api\inc\platform_paths.hrh"  tofile="epoc32\include\oem\platform_paths.hrh"/>
-		    <copy name="S60\osext\systemswextensions\sysswext_dom\platform_path_definitions_api\inc\platform_paths.hrh"  tofile="epoc32\include\oem\domain\osextensions\platform_paths.hrh"/>
-		    
-		</source>
-
-<!--  BRANCH 07-09-07: wb -->	
-		<source label="custom_manual_exports" basedir="z:">
-			<!-- Patch tools under symbian -->
-			<copy name="\src\common\generic\tools\build\GenXml.pm" tofile="\epoc32\tools\build\GenXml.pm" />
-		</source>
-<!-- BRANCH_END 07-09-07: wb -->
-		<!-- unzip possbile patches for nightly build -->
-		<source name="patches" basedir="">
-			<unzipicds dest="z:\">
-				<location name="\\jknfs05\cms_wa\5132_wa\MC\patch\0740" />
-				<include name="*" />
-			</unzipicds>
-		</source>
-		
-</prepSpec>
--- a/buildframework/helium/tests/data/validate_overlay/prep.xml.parsed	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,250 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<prepSpec>
-    <config>
-				<exclude name="abld.bat"/>
-				<exclude name=".static_wa"/>
-				<exclude name="_ccmwaid.inf"/>
-				<exclude name="documentation/*"/>
-				<exclude name="documents/*"/>
-				<exclude name="doc/*"/>
-		</config>
-<!-- Other possible excludable folders -->
-<!--				<exclude name="e32test/*"/> -->
-<!--				<exclude name="f32test/*"/> -->
-<!--				<exclude name="WINCW/*"/> -->
-<!--				<exclude name="WINC/*"/> -->
-<!--				<exclude name="WINS/*"/> -->
-<!--				<exclude name="bwins/*"/> -->
-<!--				<exclude name="swins/*"/> -->
-<!--				<exclude name="WINSCW/*"/> -->
-		
-		<source label="Symbian" basedir="\\fasamba\dfs\r1120_isis\NT\Build_and_Release\GRACE\MC\SOS\__SymbianOS_9.3\SymbianOS_93_2007_wk30">
-				<unzip name="MCL_93_200730_src_generic_part1.zip"/>
-				<unzip name="MCL_93_200730_src_generic_part2.zip"/>
-				<unzip name="MCL_93_200730_src_generic_part3.zip"/>
-				<unzip name="MCL_93_200730_src_cedar.zip"/>
-				<unzip name="MCL_93_200730_src_common_other_sources_part2.zip"/>
-
-				<!-- This is required to generate all the .jar files correctly under \epoc32\tools\ -->
-				<unzip name="MCL_93_200730_src_product.zip" dest="z:/src"/>
-
-				<unzip name="MCL_93_200730_epoc32.zip"/>
-				<unzip name="MCL_93_200730_epoc32_RELEASE_ARMV5.zip"/>
-		</source>
-
-		<!-- Unzip (ICF/ICD)'s if there are any -->
-		<source name="icds" basedir="">
-			<unzipicds dest="z:\">
-				<!-- Unzipping from following location
-						 * S60
-						 * common
-						 * product
-					-->
-				<location name="E:\wbernard\ccm_wa\fa1f5132\0734/S60/S60/Symbian_ICD_ICF/93_200730" />
-				<location name="E:\wbernard\ccm_wa\fa1f5132\mc-fa1f5132#loc_0734\mc\mc_build\mc_5132_build../../../mc_overlay/mc_5132_overlay/common/files/Symbian_ICD_ICF/93_200730" />
-			</unzipicds>
-		</source>
-
-		<!-- copying  s60 content -->
-		<source label="S60" basedir="E:\wbernard\ccm_wa\fa1f5132\0734">
-			<copy name="S60/s60"	 dest="s60" />
-		</source>
-
-
-		<source label="PPD" basedir="E:\wbernard\ccm_wa\fa1f5132\0734">
-			<copy name="ppd_sw/ppd_sw"					dest="ppd_sw"/>			
-		</source>
-		
-		<source label="IBUSAL51" basedir="E:\wbernard\ccm_wa\fa1f5132\0734/">
-			<copy name="IBUSAL_RapidoYawe/IBUSAL_RapidoYawe"/>
-		</source>
-		
-		<!-- temporary fix to handle two naviscroll projects -->
-		<source label="naviscroll" basedir="E:\wbernard\ccm_wa\fa1f5132\0734/">
-		    <copy name="naviscroll-old/naviscroll/naviscroll" dest="Ibusal_internal/Navi/naviscroll" />
-		</source>
-		<source label="sensor_server_adaptation" basedir="E:\wbernard\ccm_wa\fa1f5132\0734/">
-		    <copy name="sensor_server_adaptation-old/sensor_server_adaptation/sensor_server_adaptation" dest="Ibusal_internal/Navi/sensor_server_adaptation" />
-		</source>
-		<!-- this is for new driver  - requires change in sys_def to be compiled -->
-		<source label="naviscroll" basedir="E:\wbernard\ccm_wa\fa1f5132\0734/">
-		    <copy name="naviscroll-new/naviscroll/naviscroll" dest="ncp_sw/corecom/bbc_components/ibusal_rapidoyawe/naviscroll" />
-		</source>
-		<source label="sensor_server_adaptation" basedir="E:\wbernard\ccm_wa\fa1f5132\0734/">
-		    <copy name="sensor_server_adaptation-new/sensor_server_adaptation/sensor_server_adaptation" dest="ncp_sw/corecom/bbc_components/ibusal_rapidoyawe/sensor_server_adaptation" />
-		</source>
-
-   <source label="MULTIMEDIA_SW" basedir="E:\wbernard\ccm_wa\fa1f5132\0734">
-		 	<copy name="multimedia_sw"				 dest="multimedia_sw"/>
-	 </source>
-
-		<source label="NSS_ICONS" basedir="\\fasamba\dfs\r1120_isis\NT\Build_and_Release\GRACE\MC\NSS">
-					 <unzip name="nss_sources_3_2_wk32.zip" dest="ppd_sw/nss_sw"/>
-		</source>
-
-		<source label="CELLMO" basedir="\\fasamba\dfs\r1120_isis\NT\Build_and_Release\GRACE\MC\Cellmo\product">
-				<!-- product cellmo copy -->
-				<copy name="\Releases\IBUSAL_CellMo\2007_wk15_PB\2007wk15v14\product\rm187_rapido_v1_1_flsh_image.hex"	tofile="epoc32/rom/config/platform/product/dsp.hex"/>
-				<copy name="\Releases\IBUSAL_CellMo\2007_wk15_PB\2007wk15v14\product\nalo.axf"			tofile="epoc32/rom/config/platform/product/nalo.axf"/>
-				<copy name="\Releases\IBUSAL_CellMo\2007_wk15_PB\2007wk15v14\product\naloext.axf"		tofile="epoc32/rom/config/platform/product/naloext.axf"/>
-				<copy name="\Releases\IBUSAL_CellMo\2007_wk15_PB\2007wk15v14\product\3rd.bin" 			tofile="epoc32/rom/config/platform/product/3rd.bin"/>
-				<copy name="\Releases\IBUSAL_CellMo\2007_wk15_PB\2007wk15v14\product\rm235_07wk15v14.out"	tofile="epoc32/rom/config/platform/product/isa.out"/>
-				<!-- product Edge cellmo copy -->
-        			<copy name="\Releases\IBUSAL_CellMo\2007_wk15_PB\2007wk15v14\product_chn\wg41s_edge_rapido_v1_1_flsh_image.hex"	tofile="epoc32/rom/config/platform/product_edge/dsp.hex"/>
-				<copy name="\Releases\IBUSAL_CellMo\2007_wk15_PB\2007wk15v14\product_chn\nalo.axf"			tofile="epoc32/rom/config/platform/product_edge/nalo.axf"/>
-				<copy name="\Releases\IBUSAL_CellMo\2007_wk15_PB\2007wk15v14\product_chn\naloext.axf"		tofile="epoc32/rom/config/platform/product_edge/naloext.axf"/>
-				<copy name="\Releases\IBUSAL_CellMo\2007_wk15_PB\2007wk15v14\product_chn\3rd.bin" 			tofile="epoc32/rom/config/platform/product_edge/3rd.bin"/>
-				<copy name="\Releases\IBUSAL_CellMo\2007_wk15_PB\2007wk15v14\product_chn\rm236_07wk15v14.out"	tofile="epoc32/rom/config/platform/product_edge/isa.out"/>
-		</source>
-
-		<source label="T9TegicDelivery" basedir="E:\wbernard\ccm_wa\fa1f5132\0734">
-				<copy name="T9TegicDelivery\T9TegicDelivery" dest="S60\mw\inputmethods\textinput\T9TegicDelivery" />
-		</source>
-
-		<!-- Copying ppd patch sw -->
-		<source label="psw" basedir="z:">
-				<copy name="psw\ncp_psw\psw"/>
-				<copy name="psw\ncp_psw\platform_psw\psw"/>
-				<copy name="psw\ncp_psw\platform_psw\platform_product_psw\psw"/>
-				<copy name="psw\s60_32_psw\psw"/>
-				<copy name="psw\s60_32_psw\51.32_psw\psw"/>
-				<copy name="psw\ncp_psw\platform_psw\ncp_psw"/>
-		</source>
-	        
- 
-   	<!-- Apply the overlays first -->
-		<source label="mc" basedir="E:\wbernard\ccm_wa\fa1f5132\mc-fa1f5132#loc_0734\mc\mc_build\mc_5132_build../../..">
-				<copy name="mc_overlay/mc_5132_overlay/common/files"/>
-        <copy name="mc_overlay/mc_5132_overlay/common/files" dest="mc/mc_overlay/mc_5132_overlay/common/files" />
-				<!-- bvsupport <copy name="mc_overlay/mc_5132_overlay/mc_5132_overlay/files"/>-->
-
-				<copy name="mc_build" dest="mc/mc_build"/>
-				<copy name="mc_config" dest="mc/mc_config"/> <!-- variation folder will be there -->
-				<copy name="mc_sw" dest="mc/mc_sw"/>
-
-		    <!-- This is required for FMTx Increment 6 -->
-		    <copy name="mc_config\mc_5132_config\mc_5132\include\ProductStaticFeatures.hrh" tofile="epoc32\include\oem\ProductStaticFeatures.hrh"/>
-				
-				<!-- SPP CARBON CHANGE:  markhyvo: 						-->
-		    <copy name="mc_config\mc_5132_config\mc_5132\include\ProductVariant.hrh" tofile="epoc32\include\oem\ProductVariant.hrh"/>
-        <copy name="mc_config\mc_5132_config\mc_5132\include\ProductVariant.hrh" tofile="S60\misc\release\bldvariant\common\ProductVariant.hrh"/>
-        <copy name="mc_config\mc_5132_config\mc_5132\include\ProductVariant.hrh" tofile="config\s60_32_config\51.32_config\config\inc\ProductVariant.hrh"/>
-		</source>
-
-		<!-- Copying helium from its location. -->
-		<source label="mc" basedir="E:\buildbot\slaves\fasym015-win32\fasym015-win32\build\helium/../">
-			<copy name="helium" dest="mc/helium"/>
-		</source>
-   
-    <!-- desw config -->
-	  <source label="desw" basedir="z:">
-        <copy name="\s60\mw\uiresources\uiresources_dom\icon_build_locations_api\inc\iconlocations.hrh" tofile="\epoc32\include\oem\iconlocations.hrh" />
-	      <copy name="\multimedia_sw\me_scd_desw\me_scd_desw\variation\product\DeSwFlagsproduct.hrh" tofile="\epoc32\include\oem\DeSwFlagsproduct.hrh" />
-		</source>
-   
-    <source label="PP_manual_exports" basedir="z:">
-			<!-- NCP manual exports required before bldmake bldfiles phase where  bldvariant is included-->
-		  <copy name="config/ncp_config/config/inc/feature_settings.hrh" tofile="epoc32/include/oem/feature_settings.hrh"/>
-			<copy name="config/s60_32_config/51.32_config/config/inc/spp_feature_settings.hrh" tofile="epoc32/include/oem/spp_feature_settings.hrh"/>
-			<copy name="config/ncp_config/config/inc/ncp_feature_consts.hrh" tofile="epoc32/include/oem/ncp_feature_consts.hrh"/>
-			<copy name="config/ncp_config/platform_config/config/inc/ncp_feature_settings.hrh" tofile="epoc32/include/oem/ncp_feature_settings.hrh"/>
-			<copy name="config/ncp_config/platform_config/config/inc/adaptation_conf.h" tofile="epoc32/include/internal/adaptation_conf.h"/>
-    	<copy name="config/ncp_config/platform_config/config/inc/adaptation_features.hrh" tofile="epoc32/include/oem/adaptation_features.hrh"/>
-		  <copy name="config/ncp_config/platform_config/config/inc/Symbian.hrh" tofile="epoc32/include/oem/Symbian.hrh"/>
-			<copy name="config/ncp_config/config/inc/spp_variant.cfg" tofile="EPOC32/tools/variant/spp_variant.cfg"/>
-      <copy name="config/ncp_config/config/inc/ncp_consts.hrh" tofile="epoc32/include/oem/ncp_consts.hrh"/>
-	    <copy name="ncp_sw/corecom/aasw/AaCommonTools/config/audio_sw_conf.hrh" tofile="epoc32/include/internal/audio_sw_conf.hrh"/>
-	    <copy name="ncp_sw/corecom/aasw/AaCommonTools/config/audio_sw_external_conf.hrh" tofile="epoc32/include/internal/audio_sw_external_conf.hrh"/>
-			
-			<copy name="config\s60_32_config\config\inc\bldvariant.hrh"			tofile="epoc32\include\oem\bldvariant.hrh"/>
-      <copy name="config\s60_32_config\config\inc\bldpublic.hrh"			tofile="epoc32\include\oem\bldpublic.hrh"/>
-      <copy name="config\s60_32_config\config\inc\bldprivate.hrh"			tofile="epoc32\include\oem\bldprivate.hrh"/>
-      <copy name="config\s60_32_config\config\inc\bldcodeline.hrh"			tofile="epoc32\include\oem\bldcodeline.hrh"/>
-      <copy name="config\s60_32_config\config\inc\privateruntimeids.hrh"		tofile="epoc32\include\oem\privateruntimeids.hrh"/>
-      <copy name="config\s60_32_config\config\inc\publicruntimeids.hrh"		tofile="epoc32\include\oem\publicruntimeids.hrh"/>
-      <copy name="config\s60_32_config\config\inc\PublicStaticFeatures.hrh"		tofile="epoc32\include\oem\PublicStaticFeatures.hrh"/>
-      <copy name="config\s60_32_config\config\inc\PrivateStaticFeatures.hrh"	tofile="epoc32\include\oem\PrivateStaticFeatures.hrh"/>
-      <copy name="config\s60_32_config\config\inc\PlatformStaticFeatures.hrh"	tofile="epoc32\include\oem\PlatformStaticFeatures.hrh"/>
-			<!-- bsf files needed to export here so that variation information is valid on time-->
-	    <copy name="config/ncp_config/config/tools/ARM11.bsf" tofile="epoc32/tools/ARM11.bsf"/>
-	    <copy name="config/ncp_config/config/tools/ARM11_arm.bsf" tofile="epoc32/tools/ARM11_arm.bsf"/>
-	    <copy name="config/ncp_config/config/tools/ARM926_arm.bsf" tofile="epoc32/tools/ARM926_arm.bsf"/>
-	    <copy name="config/ncp_config/config/tools/ARM9E.bsf" tofile="epoc32/tools/ARM9E.bsf"/>
-	    <copy name="config/ncp_config/config/tools/config.bsf" tofile="epoc32/tools/config.bsf"/>
-	    <copy name="config/ncp_config/config/tools/variant.bsf" tofile="epoc32/tools/variant.bsf"/>
-	    <copy name="config/ncp_config/platform_config/config/tools/platform.bsf" tofile="epoc32/tools/platform.bsf"/>
-	    <!-- <copy name="config/ncp_config/platform_config/config/tools/platform.bsf" tofile="epoc32/tools/platform.bsf"/>
-	    <copy name="config/ncp_config/platform_config/config/tools/platform.bsf" tofile="epoc32/tools/platform.bsf"/>
-	    <copy name="config/ncp_config/platform_config/platform_product_config/config/tools/product.bsf" tofile="epoc32/tools/product.bsf"/>
-	    <copy name="config/ncp_config/platform_config/platform_devlon_config/config/tools/devlon51.bsf" tofile="epoc32/tools/devlon51.bsf"/>-->
-	    <copy name="config/ncp_config/platform_config/platform_product_config/config/tools/product.bsf" tofile="epoc32/tools/product.bsf"/>
-	    <copy name="config/ncp_config/platform_config/platform_product_edge_config/config/tools/product_edge.bsf" tofile="epoc32/tools/product_edge.bsf"/>
-	    <!--<copy name="config/ncp_config/platform_config/platform_product_config/config/tools/product.bsf" tofile="epoc32/tools/product.bsf"/>
-	    <copy name="config/ncp_config/platform_config/platform_product_config/config/tools/product.bsf" tofile="epoc32/tools/product.bsf"/>
-	    <copy name="config/ncp_config/platform_config/platform_devlon_r3_config/config/tools/devlon51_r3.bsf" tofile="epoc32/tools/devlon51_r3.bsf"/>	    
-	    <copy name="config/ncp_config/platform_config/platform_devlon_config/config/tools/devlon70.bsf" tofile="epoc32/tools/devlon70.bsf"/>-->
-	    <copy name="config/ncp_config/platform_config/platform_product_config/config/inc/ncp_feature_settings.hrh" tofile="epoc32/include/config/platform/product/ncp_feature_settings.hrh"/>
-	    <copy name="config/ncp_config/platform_config/platform_devlon_config/config/inc/ncp_feature_settings.hrh" tofile="epoc32/include/config/platform/devlon51/ncp_feature_settings.hrh"/>
-	    <copy name="config/ncp_config/platform_config/platform_product_config/config/inc/ncp_feature_settings.hrh" tofile="epoc32/include/config/platform/product/ncp_feature_settings.hrh"/>
-	    <copy name="config/ncp_config/platform_config/platform_product_edge_config/config/inc/ncp_feature_settings.hrh" tofile="epoc32/include/config/platform/product_edge/ncp_feature_settings.hrh"/>
-	    <copy name="config/ncp_config/platform_config/platform_product_config/config/inc/ncp_feature_settings.hrh" tofile="epoc32/include/config/platform/product/ncp_feature_settings.hrh"/>
-	    <copy name="config/ncp_config/platform_config/platform_product_config/config/inc/ncp_feature_settings.hrh" tofile="epoc32/include/config/platform/product/ncp_feature_settings.hrh"/>
-	    <copy name="config/ncp_config/platform_config/platform_devlon_r3_config/config/inc/ncp_feature_settings.hrh" tofile="epoc32/include/config/platform/devlon51_r3/ncp_feature_settings.hrh"/>
-      <copy name="config/ncp_config/platform_config/platform_devlon_config/config/inc/ncp_feature_settings.hrh" tofile="epoc32/include/config/platform/devlon70/ncp_feature_settings.hrh"/>
-	    <del name="config/ncp_config/platform_config/config/tools/platform.bsf"/>
-	    <del name="config/ncp_config/platform_config/config/tools/platform.bsf"/>
-	    <del name="config/ncp_config/platform_config/platform_product_config/config/tools/product.bsf"/>
-	    <del name="config/ncp_config/platform_config/platform_devlon_config/config/tools/devlon51.bsf"/>
-	    <del name="config/ncp_config/platform_config/platform_product_config/config/tools/product.bsf"/>
-	    <del name="config/ncp_config/platform_config/platform_product_config/config/tools/product.bsf"/>
-	    <del name="config/ncp_config/platform_config/platform_devlon_r3_config/config/tools/devlon51_r3.bsf"/>	    
-	    <del name="config/ncp_config/platform_config/platform_devlon_config/config/tools/devlon70.bsf"/>
-	  </source>
-
-    
-		<!-- NCP manual exports required due to missing bld.inf -->
-		<source label="NCP_config" basedir="z:">
-				<!-- Copying spp modified tools -->
-				<copy name="tools\ncp_tools\toolsmod_93" />
-                                <!-- 
-				<copy name="config\s60_32_config\51.32_config\51.32_${product.base.name}_config\config\inc\spp_feature_settings.hrh" tofile="epoc32\include\oem\spp_feature_settings.hrh"/>
-                                 -->
-				<copy name="config\s60_32_config\51.32_config\config\rom\config\my_romfiles.txt" tofile="epoc32\rombuild\my_romfiles.txt"/>
-		</source>
-
-		<source label="S60_config" basedir="z:">
-				<copy name="src\cedar\generic\utils\Symbian_OS_v9.3.hrh" tofile="epoc32\INCLUDE\variant\Symbian_OS_v9.3.hrh"/>
-				<copy name="src\cedar\generic\utils\Symbian_OS_v9.3_cbrtargetalias.cfg" tofile="epoc32\tools\variant\cbrtargetalias.cfg"/>
-				
-				
-		<!-- SPP CARBON CHANGE:  markhyvo: 		<copy name="S60\misc\release\bldvariant\elaf\data\bldvariant.hrh" tofile="epoc32\include\oem\bldvariant.hrh"/>  -->
-				<!-- variant.cfg is absoultely critical as it is being used during "bldmake bldfiles",
-						 otherwise the makefiles won't generte correctly -->
-				<copy name="S60\misc\release\bldvariant\common\variant.cfg" tofile="EPOC32\tools\variant\variant.cfg"/>
-				<copy name="S60\misc\release\bldvariant\common\features.hrh" tofile="epoc32\include\oem\features.hrh"/>
-				<copy name="S60\misc\release\bldvariant\common\defaultcaps.hrh" tofile="epoc32\include\oem\defaultcaps.hrh"/>
-		    <copy name="S60\misc\release\S60Exports\tools\S60IBYMACROS.PM" tofile="epoc32\tools\S60IBYMACROS.PM"/>
-		    
-		    <!--On S60 3.2 w16 platform_paths.hrh has changed place -->
-		    <copy name="S60\osext\systemswextensions\sysswext_dom\platform_path_definitions_api\inc\platform_paths.hrh"  tofile="epoc32\include\domain\osextensions\platform_paths.hrh"/>
-		    <copy name="S60\osext\systemswextensions\sysswext_dom\platform_path_definitions_api\inc\platform_paths.hrh"  tofile="epoc32\include\oem\platform_paths.hrh"/>
-		    <copy name="S60\osext\systemswextensions\sysswext_dom\platform_path_definitions_api\inc\platform_paths.hrh"  tofile="epoc32\include\oem\domain\osextensions\platform_paths.hrh"/>
-		    
-		</source>
-
-<!--  BRANCH 04-06-07: Petraisa: Merge task fa1f5132#18403 -->	
-		<source label="custom_manual_exports" basedir="z:">
-			<!-- Export screensaver -->
-			<copy name="/ppd_sw/nss_sw/nss_graphics/nseries3_theme_3_1/Nseries3_screensaver_1.swf" tofile="epoc32/data/Z/private/10207114/import/10281cc3/Nseries3_screensaver_1.swf" />
-		</source>		 
-
-<!-- BRANCH_END 04-06-07: Petraisa -->
-		<!-- unzip possbile patches for nightly build -->
-		<source name="patches" basedir="">
-			<unzipicds dest="z:\">
-				<location name="\\jknfs05\cms_wa\5132_wa\MC\patch\0734" />
-				<include name="*" />
-			</unzipicds>
-		</source>
-		
-</prepSpec>
--- a/buildframework/helium/tests/data/zip_archive_test.cfg.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<build>
-    <archiveSpec>
-        <set name="name" value="python_libs"/>
-        <set name="include" value="lib\*.egg"/>
-    </archiveSpec>
-    <config>
-        <set name="max.uncompressed.size" value="2000000"/>
-        <set name="root.dir" value="c:/Temp/python"/>
-        <set name="max.files.per.archive" value="65000"/>
-        <set name="archive.tool" value="zip"/>
-        <set name="archives.dir" value="c:\temp\output\build_area"/>
-        <set name="temp.build.dir" value="c:/Temp/output/temp_build_files"/>
-    </config>
-</build>
--- a/buildframework/helium/tests/data/zip_checkDrive_test.cfg.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-<?xml    version="1.0"    encoding="UTF-8"?>
-<build>
-    <config name="wvdo_sources" abstract="true">
-        <set name="archive.tool" value="7za"/>
-       <set name="root.dir" value="C:\"/>
-                
-        <config name="wvdo_sources_1">
-            <set name="name" value="${build.id}_wvdo_sources_3"/>
-            <set name="root.dir" value="\\bhwec0100\build_e$\swbuild\ido_wa\wv_domain\wv_domain\"/>
-                 <set name="include" value="flashapi\"/>
-        </config>
-        
-        <config name="wvdo_sources_2">
-            <set name="name" value="${build.id}_wvdo_sources_3"/>
-            <set name="root.dir" value="\\bhwec0100\build_e$\swbuild\ido_wa\wv_domain"/>
-                 <set name="include" value="flashapi\"/>
-        </config>
-        
-        <config name="wvdo_sources_3">
-            <set name="name" value="${build.id}_wvdo_sources_3"/>
-            <set name="root.dir" value="Y:\wv_domain\"/>
-                 <set name="include" value="flashapi\"/>
-        </config>
-        
-        <config name="wvdo_sources_4">
-            <set name="name" value="${build.id}_wvdo_sources_3"/>
-                 <set name="include" value="flashapi\"/>
-        </config>
-        
-        <config name="medo_sources_1">
-            <set name="name" value="${build.id}_medo_sources_1"/>
-            <set name="root.dir" value="\\bhwec0100\build_e$\swbuild\ido_wa\Messaging_Domain\Messaging_Domain\"/>
-            <set name="include" value="messagingextensions\"/>
-        </config>
-        
-        <config name="medo_sources_2">
-            <set name="name" value="${build.id}_medo_sources_2"/>
-            <set name="root.dir" value="\\bhwec0100\build_e$\swbuild\ido_wa\Messaging_Domain\Messaging_Domain\"/>
-            <set name="include" value="messagingextensions\"/>
-        </config>
-        
-     </config>
-</build>
\ No newline at end of file
--- a/buildframework/helium/tests/data/zip_checkDrive_test.cfg.xml.parsed	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-<?xml version="1.0" ?>
-<build>
-	
-
-	<config abstract="true" name="wvdo_sources">
-		<config name="wvdo_sources_1">
-			<set name="include" value="flashapi\"/>
-			<set name="root.dir" value="X:\wv_domain\wv_domain\"/>
-			<set name="name" value="${build.id}_wvdo_sources_3"/>
-			<set name="archive.tool" value="7za"/>
-		</config>
-		<config name="wvdo_sources_2">
-			<set name="include" value="flashapi\"/>
-			<set name="root.dir" value="X:\wv_domain\"/>
-			<set name="name" value="${build.id}_wvdo_sources_3"/>
-			<set name="archive.tool" value="7za"/>
-		</config>
-		<config name="wvdo_sources_3">
-			<set name="include" value="flashapi\"/>
-			<set name="root.dir" value="Y:\wv_domain\"/>
-			<set name="name" value="${build.id}_wvdo_sources_3"/>
-			<set name="archive.tool" value="7za"/>
-		</config>
-		<config name="wvdo_sources_4">
-			<set name="include" value="flashapi\"/>
-			<set name="name" value="${build.id}_wvdo_sources_3"/>
-			<set name="archive.tool" value="7za"/>
-			<set name="root.dir" value="C:\"/>
-		</config>
-		<config name="medo_sources_1">
-			<set name="include" value="messagingextensions\"/>
-			<set name="root.dir" value="X:\Messaging_Domain\Messaging_Domain\"/>
-			<set name="name" value="${build.id}_medo_sources_1"/>
-			<set name="archive.tool" value="7za"/>
-		</config>
-		<config name="medo_sources_2">
-			<set name="include" value="messagingextensions\"/>
-			<set name="root.dir" value="X:\Messaging_Domain\Messaging_Domain\"/>
-			<set name="name" value="${build.id}_medo_sources_2"/>
-			<set name="archive.tool" value="7za"/>
-		</config>
-	</config>
-</build>
--- a/buildframework/helium/tests/minibuilds/ats/build.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tests/minibuilds/ats/build.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -30,6 +30,7 @@
     <property name="build.name" value="minibuild_ats" />
     <property name="major.version" value="0" />
     <property name="minor.version" value="0" />
+    <property name="build.version" value="${major.version}.${minor.version}"/>
     <property name="build.drive" value="z:" />
     <property name="build.id" value="${build.name}_${build.version}"/>
     <property name="diamonds.host" value="diamonds.nmp.nokia.com"/>
--- a/buildframework/helium/tests/minibuilds/ats/matti/build.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tests/minibuilds/ats/matti/build.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -20,7 +20,7 @@
 Contains the configuration variables for the minibuild testing of MATTI.
 ============================================================================
 -->
-<project name="minibuild.ats" default="minibuild-ats" xmlns:au="org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
+<project name="minibuild.matti" default="minibuild-ats" xmlns:au="org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
     <property environment="env"/>
     <import file="../../site/${env.TEAM}.ant.xml" />
 
@@ -83,7 +83,7 @@
     
    <!-- Run the full sequence of target for the minibuild. ,mini-build-prep,compile-main,zip-ee,mini-build-check-->
     <!--target name="minibuild-matti" depends="mini-build-cleanup,mini-build-prep,compile-main,matti-test"/-->
-    <target name="minibuild-matti" depends="mini-build-prep,ee-roms,matti-test"/>
+    <target name="minibuild-matti" depends="mini-build-prep,build-roms,matti-test"/>
     
     <!-- Prepare the minibuild. -->
     <!--target name="mini-build-prep" depends="init-build-area,start-ant-log,diamonds,set-arm-version,prep-copy-symbiantools"/-->
--- a/buildframework/helium/tests/minibuilds/compile/build.sbsinput.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tests/minibuilds/compile/build.sbsinput.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -51,7 +51,7 @@
         <sbsInput refid="helium_minibuild_compile_input_armv5" />
     </hlm:sbsinput>
     
-    <hlm:sbsbuild id="helium_minibuild_compile">
+    <hlm:sbsbuild id="sbs.helium_minibuild_compile">
         <sbsInput refid="helium_minibuild_compile_input" />
     </hlm:sbsbuild> 
     
--- a/buildframework/helium/tests/minibuilds/compile/build.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tests/minibuilds/compile/build.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -35,8 +35,8 @@
 	<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_compile" />
+	<property name="hydra.service" value="Helium" />
+	<property name="hydra.product" value="minibuild_compile" />
 	<property name="release.label" value="${major.version}.${minor.version}" />
 
 	<!-- build configuration -->
@@ -174,18 +174,6 @@
 		</script>
 	</target>
 
-	<!-- Upload to Grace -->
-	<target name="minibuild-grace-upload">
-		<echo message="Uploading files into Grace ${release.grace.dir}" />
-		<hlm:retry retryCount="${grace.upload.retryCount}" sleepTime="1000">
-			<copy file="${build.drive}\output\build_area\engineering_english\ant\sf_app_organizer_clock.zip" tofile="${release.grace.dir}\${build.name}_${major.version}.${minor.version}.${build.id}_sf_app_organizer_clock.zip" />
-		</hlm:retry>
-		<antcall target="release-grace-content">
-			<param name="release-grace-content" value="${cache.dir}" />
-		</antcall>
-	</target>
-
-
 	<!-- Check that the XML data returned from Diamonds via the REST interface
     is the same as what is sent. 
         
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/tests/minibuilds/compile/distribution.policy.extended_for_sf.id_status.csv	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,5 @@
+ID,Include in build?,Regexp,Symbian Foundation License,Eclipse Public License,Supplier,Description,Contact,Other Notes
+0,Yes,Nokia,,,Nokia,Free to deliver,,
+1,No,Nokia,,,Nokia,Nokia internal sw,,
+3,Yes,Nokia,Yes,No,Nokia,Symbian Foundation License,,
+7,Yes,Nokia,No,Yes,Nokia,Eclipse Public License,,
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/tests/minibuilds/ido-sbs-coverity/build.sbsinput.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,292 @@
+<?xml version="1.0"?>
+<!-- 
+============================================================================ 
+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="ido_sbs_input" xmlns:au="org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
+    <description>
+        ido sbs input
+    </description>
+
+    <import file="common.sbsinput.ant.xml" />
+    <patternset id="build_layers" >
+        <include name="os_layer" />
+        <include name="bldfirst_mw_layer" />
+        <include name="bldfirst_app_layer" />
+        <include name="mw_layer" />
+        <include name="complementary_layer" />
+        <include name="app_layer" />
+        <include name="tools_layer" />
+        <include name="stubs_layer" />
+        <include name="addon_layer" />
+    </patternset>
+
+    <patternset id="dfs_build_layers" >
+        <include name="os_layer" />
+        <include name="bldfirst_mw_layer" />
+        <include name="bldfirst_app_layer" />
+        <include name="mw_layer" />
+        <include name="complementary_layer" />
+        <include name="app_layer" />
+        <include name="tools_layer" />
+        <include name="addon_layer" />
+    </patternset>
+
+    <patternset id="test_layers" >
+        <include name="api_test_layer" />
+        <include name="unit_test_layer" />
+        <include name="perf_test_layer" />
+        <include name="module_test_layer" />
+        <include name="qt_unit_test_layer" />
+    </patternset>
+
+
+    <hlm:sbsinput id="build_input_tools">
+        <sbsInput refid="tools-${build.system}" />
+        <sbsOptions>
+            <arg name="--logfile" value="${compile.log.dir}/${build.id}_tools_rel_build.log" />
+        </sbsOptions>
+    </hlm:sbsinput>
+
+    <hlm:sbsinput id="build_input_armv5">
+        <sbsInput refid="armv5-${build.system}" />
+        <sbsOptions>
+            <arg name="--logfile" value="${compile.log.dir}/${build.id}_armv5_build.log" />
+        </sbsOptions>
+    </hlm:sbsinput>
+
+    <hlm:sbsinput id="build_input">
+        <sbsInput refid="build_input_tools" />
+        <sbsInput refid="build_input_armv5" />
+    </hlm:sbsinput>
+
+    <hlm:sbsinput id="build_input_clean_tools">
+        <sbsInput refid="tools-${build.system}-clean" />
+        <sbsOptions>
+            <arg name="--logfile" value="${compile.log.dir}/${build.id}_tools_rel_build_clean.log" />
+            <arg name="--makefile" value="${compile.log.dir}/${build.id}_tools_rel_build_clean" />
+        </sbsOptions>
+    </hlm:sbsinput>
+
+    <hlm:sbsinput id="build_input_clean_armv5">
+        <sbsInput refid="armv5-${build.system}-clean" />
+        <sbsOptions>
+            <arg name="--logfile" value="${compile.log.dir}/${build.id}_armv5_build_clean.log" />
+            <arg name="--makefile" value="${compile.log.dir}/${build.id}_armv5_build_clean" />
+        </sbsOptions>
+    </hlm:sbsinput>
+
+    <hlm:sbsbuild id="sbs.build_clean">
+        <sbsInput refid="build_input_clean_tools" />
+        <sbsInput refid="build_input_clean_armv5" />
+    </hlm:sbsbuild>
+
+    <hlm:sbsinput id="helium_minibuild_ido_input_tools">
+        <sbsInput refid="tools-${build.system}" />
+        <sbsOptions>
+            <arg name="--logfile" value="${compile.log.dir}/${build.id}_tools_helium_minibuild_ido.log" />
+            <arg name="--makefile" value="${compile.log.dir}/${build.id}_tools_helium_minibuild_ido" />
+        </sbsOptions>
+    </hlm:sbsinput>
+        
+    <hlm:sbsinput id="helium_minibuild_ido_input_armv5">
+        <sbsInput refid="armv5-${build.system}" />
+        <sbsOptions>
+            <arg name="--logfile" value="${compile.log.dir}/${build.id}_armv5_helium_minibuild_ido.log" />
+            <arg name="--makefile" value="${compile.log.dir}/${build.id}_armv5_helium_minibuild_ido" />
+        </sbsOptions>
+    </hlm:sbsinput>
+
+    <hlm:sbsinput id="helium_minibuild_ido_input">
+        <sbsInput refid="helium_minibuild_ido_input_tools" />
+        <sbsInput refid="helium_minibuild_ido_input_armv5" />
+    </hlm:sbsinput>
+    
+    <hlm:sbsbuild id="sbs.helium_minibuild_ido">
+        <sbsInput refid="helium_minibuild_ido_input" />
+    </hlm:sbsbuild> 
+
+    <hlm:sbsinput id="helium_minibuild_ido_input_clean">
+        <sbsInput refid="helium_minibuild_ido_clean_tools" />
+        <sbsInput refid="helium_minibuild_ido_clean_armv5" />
+    </hlm:sbsinput>
+    
+    <hlm:sbsinput id="helium_minibuild_ido_input_clean_tools">
+        <sbsInput refid="tools-${build.system}-clean"/>
+        <sbsOptions>
+            <arg name="--logfile" value="${compile.log.dir}/${build.id}_tools_helium_minibuild_ido_clean.log" />
+            <arg name="--makefile" value="${compile.log.dir}/${build.id}_tools_helium_minibuild_ido_clean" />
+        </sbsOptions>
+    </hlm:sbsinput>
+        
+    <hlm:sbsinput id="helium_minibuild_ido_input_clean_armv5">
+        <sbsInput refid="armv5-${build.system}-clean" />
+        <sbsOptions>
+            <arg name="--logfile" value="${compile.log.dir}/${build.id}_armv5_helium_minibuild_ido_clean.log" />
+            <arg name="--makefile" value="${compile.log.dir}/${build.id}_armv5_helium_minibuild_ido_clean.log" />
+        </sbsOptions>
+    </hlm:sbsinput>
+
+    <hlm:sbsbuild id="sbs.helium_minibuild_ido_clean">
+        <sbsInput refid="helium_minibuild_ido_input_clean_tools" />
+        <sbsInput refid="helium_minibuild_ido_input_clean_armv5" />
+    </hlm:sbsbuild> 
+
+    <hlm:sbsinput id="sf_build_input_tools">
+        <sbsInput refid="tools-${build.system}" />
+        <sbsOptions>
+            <arg name="--logfile" value="${compile.log.dir}/${build.id}_tools_sf_build.log" />
+            <arg name="--makefile" value="${compile.log.dir}/${build.id}_tools_sf_build" />
+        </sbsOptions>
+    </hlm:sbsinput> 
+
+    <hlm:sbsinput id="sf_build_input_armv5">
+        <sbsInput refid="armv5-${build.system}" />
+        <sbsOptions>
+            <arg name="--logfile" value="${compile.log.dir}/${build.id}_armv5_sf_build.log" />
+            <arg name="--makefile" value="${compile.log.dir}/${build.id}_armv5_sf_build" />
+        </sbsOptions>
+    </hlm:sbsinput> 
+
+    <hlm:sbsinput id="sf_build_input">
+        <sbsInput refid="sf_build_input_tools" />
+        <sbsInput refid="sf_build_input_armv5" />
+    </hlm:sbsinput>
+    
+    <hlm:sbsbuild id="sbs.sf_build">
+        <sbsInput refid="sf_build_input" />
+    </hlm:sbsbuild>
+
+    <hlm:sbsinput id="sf_build_input_clean_tools">
+        <sbsInput refid="tools-${build.system}-clean" />
+        <sbsOptions>
+            <arg name="--logfile" value="${compile.log.dir}/${build.id}_tools_sf_build_clean.log" />
+            <arg name="--makefile" value="${compile.log.dir}/${build.id}_tools_sf_build_clean" />
+        </sbsOptions>
+    </hlm:sbsinput>
+
+    <hlm:sbsinput id="sf_build_input_armv5">
+        <sbsInput refid="armv5-${build.system}-clean" />
+        <sbsOptions>
+            <arg name="--logfile" value="${compile.log.dir}/${build.id}_armv5_sf_build_clean.log" />
+            <arg name="--makefile" value="${compile.log.dir}/${build.id}_armv5_sf_build_clean" />
+        </sbsOptions>
+    </hlm:sbsinput>
+
+    <hlm:sbsinput id="sf_build_input_clean">
+        <sbsInput refid="sf_build_input_clean_tools" />
+        <sbsInput refid="sf_build_input_clean_armv5" />
+    </hlm:sbsinput>
+    
+    <hlm:sbsbuild id="sbs.sf_build_clean">
+        <sbsInput refid="sf_build_input_clean" />
+    </hlm:sbsbuild>
+
+    <hlm:sbsinput id="nonhw_input_clean_tools">
+        <sbsInput refid="tools-${build.system}-clean" />
+        <sbsOptions>
+            <arg name="--logfile" value="${compile.log.dir}/${build.id}_tools_winscw_build_clean.log" />
+            <arg name="--makefile" value="${compile.log.dir}/${build.id}_tools_winscw_build_clean" />
+        </sbsOptions>
+    </hlm:sbsinput>
+
+    <hlm:sbsinput id="nonhw_input_clean_winscw">
+        <sbsInput refid="winscw-${build.system}-clean" />
+        <sbsOptions>
+            <arg name="--logfile" value="${compile.log.dir}/${build.id}_winscw_winscw_build_clean.log" />
+            <arg name="--makefile" value="${compile.log.dir}/${build.id}_winscw_winscw_build_clean" />
+        </sbsOptions>
+    </hlm:sbsinput>
+
+    <hlm:sbsinput id="nonhw_input_clean">
+        <sbsInput refid="nonhw_input_clean_tools" />
+        <sbsInput refid="nonhw_input_clean_winscw" />
+    </hlm:sbsinput>
+    
+    <hlm:sbsbuild id="sbs.nonhw_clean">
+        <sbsInput refid="nonhw_input_clean" />
+    </hlm:sbsbuild>
+
+    <hlm:sbsinput id="nonhw_input_tools">
+        <sbsInput refid="tools-${build.system}" />
+        <sbsOptions>
+            <arg name="--logfile" value="${compile.log.dir}/${build.id}_tools_build.log" />
+            <arg name="--makefile" value="${compile.log.dir}/${build.id}_tools_build" />
+        </sbsOptions>
+    </hlm:sbsinput>
+
+    <hlm:sbsinput id="nonhw_input_winscw">
+        <sbsInput refid="winscw-${build.system}" />
+        <sbsOptions>
+            <arg name="--logfile" value="${compile.log.dir}/${build.id}_winscw_build.log" />
+            <arg name="--makefile" value="${compile.log.dir}/${build.id}_winscw_build" />
+        </sbsOptions>
+    </hlm:sbsinput>
+
+    <hlm:sbsinput id="test_input_tools">
+        <sbsInput refid="test-${build.system}" />
+        <sbsOptions>
+            <arg name="--logfile" value="${compile.log.dir}/${build.id}_tools_test.log" />
+            <arg name="--makefile" value="${compile.log.dir}/${build.id}_tools_test" />
+        </sbsOptions>
+    </hlm:sbsinput>
+
+    <hlm:sbsinput id="test_input_armv5">
+        <sbsInput refid="test-${build.system}" />
+        <sbsOptions>
+            <arg name="--logfile" value="${compile.log.dir}/${build.id}_armv5_test.log" />
+            <arg name="--makefile" value="${compile.log.dir}/${build.id}_armv5_test" />
+        </sbsOptions>
+    </hlm:sbsinput>
+    
+    <hlm:sbsinput id="test_input">
+        <sbsInput refid="test_input_tools" />
+        <sbsInput refid="test_input_armv5" />
+    </hlm:sbsinput>
+    
+    <hlm:sbsbuild id="sbs.test">
+        <sbsInput refid="test_input" />
+    </hlm:sbsbuild>
+
+    <hlm:sbsinput id="test_input_clean_tools">
+        <sbsInput refid="test-${build.system}" />
+        <sbsOptions>
+            <arg name="--logfile" value="${compile.log.dir}/${build.id}_tools_test_clean.log" />
+            <arg name="--makefile" value="${compile.log.dir}/${build.id}_tools_test_clean" />
+        </sbsOptions>
+    </hlm:sbsinput>
+
+    <hlm:sbsinput id="test_input_clean_armv5">
+        <sbsInput refid="test-${build.system}" />
+        <sbsOptions>
+            <arg name="--logfile" value="${compile.log.dir}/${build.id}_armv5_test_clean.log" />
+            <arg name="--makefile" value="${compile.log.dir}/${build.id}_armv5_test_clean" />
+        </sbsOptions>
+    </hlm:sbsinput>
+    
+    <hlm:sbsinput id="test_input_clean">
+        <sbsInput refid="test_input_clean_tools" />
+        <sbsInput refid="test_input_clean_armv5" />
+    </hlm:sbsinput>
+    
+    <hlm:sbsbuild id="sbs.test_clean">
+        <sbsInput refid="test_input_clean" />
+    </hlm:sbsbuild>    
+</project>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/tests/minibuilds/ido-sbs-coverity/build.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,61 @@
+<?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.ido-sbs" default="help" xmlns:au="org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium" basedir="..\ido">
+    <property environment="env"/>
+	<!--property name="config.temp.build.dir" location="${ant.file.minibuild.ido-sbs}/../build"/ -->
+	
+	<!-- Configuring raptor build system -->
+	<property name="build.system" value="sbs"/>
+    
+    <!-- enable coverity -->
+    <property name="enabled.coverity" value="true"/>
+    
+    <!-- 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,
+    										compile-main"/>-->
+
+	<property name="build.name" value="minibuild_ido_sbs_coverity" />
+    <property name="build.family" value="test_minibuild_ido_sbs_coverity" />
+		
+    <target name="mini-build-check">
+    	<!-- Check if prep has set some prop correctly... -->
+        <echo>'${arm.compiler.version}'</echo>
+        <au:assertMatches string="${arm.compiler.version}" pattern="RVCT2\.2 \[Build 686\]" casesensitive="false" multiline="true"/>
+
+        <!-- Check if compile-main step did what expected... -->
+        <au:assertFileExists file="${canonical.sysdef.file}"/>
+        <if>
+            <istrue value="${blocks.enabled}" />
+            <then>
+                <au:assertFileExists file="${blocks.config.dir}/minibuild_helloworldapi.blocks_component.xml" />
+                <au:assertFileExists file="${blocks.config.dir}/minibuild_helloworldcons.blocks_component.xml" />
+            </then>
+        </if>
+    </target>
+	
+
+	<import file="../ido/build.xml"/>
+    <import file="build.sbsinput.ant.xml" />
+</project>
+
+    
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/tests/minibuilds/ido-sbs-coverity/common.sbsinput.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,185 @@
+<?xml version="1.0"?>
+<!-- 
+============================================================================ 
+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="common_sbs_input" xmlns:au="org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
+    <description>
+        Common sbs input config.
+    </description>
+    <!-- Common make options for particular engine values of it could be overridden by referencing it-->
+    <hlm:sbsmakeoptions id="commonEMakeOptions" engine="emake">
+        <arg name="--emake-emulation" value="gmake" />
+        <arg name="--emake-annodetail" value="basic,history,waiting" />
+        <arg name="--emake-class" value="${ec.build.class}" />
+        <arg name="--emake-historyfile" value="${build.log.dir}/ec_history/raptor_clean.emake.data" />
+        <arg name="--case-sensitive" value="0" />
+        <arg name="--emake-root" value="${env.EMAKE_ROOT};${helium.dir};${env.SBS_HOME}" />
+    </hlm:sbsmakeoptions>
+
+    <hlm:sbsmakeoptions id="commonGmakeOptions" engine="gmake" />
+    <hlm:sbsmakeoptions id="commonPVMGmakeOptions" engine="pvmgmake" />
+
+    <!-- Tools specific make options inheriting the commone make option-->
+    <hlm:sbsmakeoptions id="toolsmake-sbs-ec">
+        <sbsmakeoptions refid="commonEMakeOptions" />
+        <arg name="--emake-maxagents" value="1" />
+    </hlm:sbsmakeoptions>
+            
+    <!-- Main build make option directly refering to common emake option -->
+    <hlm:sbsmakeoptions id="mainbuildmake-sbs-ec">
+        <sbsmakeoptions refid="commonEMakeOptions" />
+    </hlm:sbsmakeoptions>
+
+    <!-- tools common sbs options -->
+    <hlm:sbsoptions id="commonSBS">
+        <arg line="-k" />
+        <arg name="--filters" value="FilterMetadataLog"/>
+    </hlm:sbsoptions>
+
+    <!-- tools common sbs options -->
+    <hlm:sbsoptions id="toolsCommonSBS">
+        <argset refid="commonSBS" />
+        <arg line="-c tools_rel -c tools2_rel" />
+        <arg line="-j 1" />
+    </hlm:sbsoptions>
+
+    <hlm:sbsoptions id="winscwSBSOptions">
+        <argset refid="commonSBS" />
+        <arg line="-c winscw" />
+    </hlm:sbsoptions>
+
+    <!-- Mainbuild common sbs options -->
+    <hlm:sbsoptions id="armv5CommonSBS">
+            <argset refid="commonSBS" />
+            <arg line="-c armv5" />
+    </hlm:sbsoptions>
+
+    <hlm:sbsoptions id="testCommonSBS">
+            <argset refid="commonSBS" />
+            <arg line="-c armv5.test" />
+    </hlm:sbsoptions>
+
+
+    <hlm:sbsoptions id="testCleanSBS">
+        <argset refid="testcommonSBS" />
+        <argset refid="cleanCommon" />
+    </hlm:sbsoptions>
+
+    <hlm:sbsoptions id="cleanCommon">
+            <arg line="REALLYCLEAN" />
+    </hlm:sbsoptions>
+
+    <!-- Mainbuild common sbs options -->
+    <hlm:sbsoptions id="armv5Clean">
+        <argset refid="armv5CommonSBS"/>
+        <argset refid="cleanCommon" />
+    </hlm:sbsoptions>
+
+
+    <!-- Mainbuild common sbs options -->
+    <hlm:sbsoptions id="toolsClean">
+        <argset refid="toolsCommonSBS"/>
+        <argset refid="cleanCommon" />
+    </hlm:sbsoptions>
+
+    <!-- Mainbuild common sbs options -->
+    <hlm:sbsoptions id="winscwClean">
+        <argset refid="winscwSBSOptions"/>
+        <argset refid="cleanCommon" />
+    </hlm:sbsoptions>
+
+    <!-- sbs input consists of sbs options and sbs make options, the sbs options remains same for all
+    the build system, the make options varies
+     -->
+    <hlm:sbsinput id="tools-sbs">
+        <sbsoptions refid="toolsCommonSBS" />
+    </hlm:sbsinput>
+
+    <hlm:sbsinput id="tools-sbs-clean">
+        <sbsoptions refid="toolsClean" />
+    </hlm:sbsinput>
+
+    <hlm:sbsinput id="tools-sbs-ec">
+        <sbsoptions refid="toolsCommonSBS" />
+        <sbsmakeoptions refid="toolsmake-sbs-ec" ppThreads="20"/>
+    </hlm:sbsinput>
+
+    <hlm:sbsinput id="tools-sbs-ec-clean">
+        <sbsoptions refid="toolsClean" />
+        <sbsmakeoptions refid="toolsmake-sbs-ec" ppThreads="20"/>
+    </hlm:sbsinput>
+
+    <!-- sbs input for main build.
+     -->
+    <hlm:sbsinput id="armv5-sbs">
+        <sbsoptions refid="armv5CommonSBS" />
+    </hlm:sbsinput>
+
+    <hlm:sbsinput id="armv5-sbs-clean">
+        <sbsoptions refid="armv5Clean" />
+    </hlm:sbsinput>
+
+    <!-- sbs input for main build.
+     -->
+    <hlm:sbsinput id="armv5-sbs-ec">
+        <sbsoptions refid="armv5CommonSBS" />
+        <sbsmakeoptions refid="mainbuildmake-sbs-ec" ppThreads="20"/>
+    </hlm:sbsinput>
+
+    <hlm:sbsinput id="armv5-sbs-ec-clean">
+        <sbsoptions refid="armv5Clean" />
+        <sbsmakeoptions refid="mainbuildmake-sbs-ec" ppThreads="20" />
+    </hlm:sbsinput>
+
+    <hlm:sbsinput id="winscw-sbs">
+        <sbsoptions refid="winscwSBSOptions" />
+    </hlm:sbsinput>
+
+    <hlm:sbsinput id="winscw-sbs-clean">
+        <sbsoptions refid="winscwClean" />
+    </hlm:sbsinput>
+
+    <hlm:sbsinput id="winscw-sbs-ec-clean">
+        <sbsoptions refid="winscwClean" />
+        <sbsmakeoptions refid="mainbuildmake-sbs-ec" ppThreads="20"/>
+    </hlm:sbsinput>
+
+    <hlm:sbsinput id="test-sbs">
+        <sbsoptions refid="testCommonSBS" />
+    </hlm:sbsinput>
+
+    <hlm:sbsinput id="test-sbs-clean">
+        <sbsoptions refid="testCleanSBS" />
+    </hlm:sbsinput>
+
+    <!-- sbs input for main build.
+     -->
+    <hlm:sbsinput id="test-sbs-ec">
+        <sbsoptions refid="testCommonSBS" />
+        <sbsmakeoptions refid="mainbuildmake-sbs-ec" ppThreads="20"/>
+    </hlm:sbsinput>
+
+    <hlm:sbsinput id="test-sbs-ec-clean">
+        <sbsoptions refid="testCleanSBS" />
+        <sbsmakeoptions refid="mainbuildmake-sbs-ec" ppThreads="20" />
+    </hlm:sbsinput>
+
+</project>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/tests/minibuilds/ido-sbs-coverity/hlm.bat	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,26 @@
+@echo off
+
+rem
+rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+rem All rights reserved.
+rem This component and the accompanying materials are made available
+rem under the terms of the License "Eclipse Public License v1.0"
+rem which accompanies this distribution, and is available
+rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+rem
+rem Initial Contributors:
+rem Nokia Corporation - initial contribution.
+rem
+rem Contributors:
+rem
+rem Description: 
+rem
+
+setlocal
+if exist "E:\APPS\sbs" (
+set SBS_HOME=E:\APPS\sbs
+set PATH=%SBS_HOME%\bin;%PATH%
+)
+echo Using Raptor from: %SBS_HOME%
+..\..\..\..\helium\hlm.bat %*
+endlocal
--- a/buildframework/helium/tests/minibuilds/ido-sbs/build.sbsinput.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tests/minibuilds/ido-sbs/build.sbsinput.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -93,7 +93,7 @@
         </sbsOptions>
     </hlm:sbsinput>
 
-    <hlm:sbsbuild id="build_clean">
+    <hlm:sbsbuild id="sbs.build_clean">
         <sbsInput refid="build_input_clean_tools" />
         <sbsInput refid="build_input_clean_armv5" />
     </hlm:sbsbuild>
@@ -119,7 +119,7 @@
         <sbsInput refid="helium_minibuild_ido_input_armv5" />
     </hlm:sbsinput>
     
-    <hlm:sbsbuild id="helium_minibuild_ido">
+    <hlm:sbsbuild id="sbs.helium_minibuild_ido">
         <sbsInput refid="helium_minibuild_ido_input" />
     </hlm:sbsbuild> 
 
@@ -144,7 +144,7 @@
         </sbsOptions>
     </hlm:sbsinput>
 
-    <hlm:sbsbuild id="helium_minibuild_ido_clean">
+    <hlm:sbsbuild id="sbs.helium_minibuild_ido_clean">
         <sbsInput refid="helium_minibuild_ido_input_clean_tools" />
         <sbsInput refid="helium_minibuild_ido_input_clean_armv5" />
     </hlm:sbsbuild> 
@@ -170,7 +170,7 @@
         <sbsInput refid="sf_build_input_armv5" />
     </hlm:sbsinput>
     
-    <hlm:sbsbuild id="sf_build">
+    <hlm:sbsbuild id="sbs.sf_build">
         <sbsInput refid="sf_build_input" />
     </hlm:sbsbuild>
 
@@ -195,7 +195,7 @@
         <sbsInput refid="sf_build_input_clean_armv5" />
     </hlm:sbsinput>
     
-    <hlm:sbsbuild id="sf_build_clean">
+    <hlm:sbsbuild id="sbs.sf_build_clean">
         <sbsInput refid="sf_build_input_clean" />
     </hlm:sbsbuild>
 
@@ -220,7 +220,7 @@
         <sbsInput refid="nonhw_input_clean_winscw" />
     </hlm:sbsinput>
     
-    <hlm:sbsbuild id="nonhw_clean">
+    <hlm:sbsbuild id="sbs.nonhw_clean">
         <sbsInput refid="nonhw_input_clean" />
     </hlm:sbsbuild>
 
@@ -261,7 +261,7 @@
         <sbsInput refid="test_input_armv5" />
     </hlm:sbsinput>
     
-    <hlm:sbsbuild id="test">
+    <hlm:sbsbuild id="sbs.test">
         <sbsInput refid="test_input" />
     </hlm:sbsbuild>
 
@@ -286,7 +286,7 @@
         <sbsInput refid="test_input_clean_armv5" />
     </hlm:sbsinput>
     
-    <hlm:sbsbuild id="test_clean">
+    <hlm:sbsbuild id="sbs.test_clean">
         <sbsInput refid="test_input_clean" />
     </hlm:sbsbuild>    
 </project>
\ No newline at end of file
--- a/buildframework/helium/tests/minibuilds/ido/build.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tests/minibuilds/ido/build.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -55,7 +55,7 @@
 	<!-- Configuring get latest env. -->
 	<property name="s60.grace.service" value="s60_devices_sw" />
 	<property name="s60.grace.product" value="DFS7x.92" />
-	<property name="s60.grace.release" value="mcl_\d{6}_hw79" />
+	<property name="s60.grace.release" value="92_\d{6}_hw79" />
 	<!-- matching mcl_200948_hw79 -->
 	<condition property="prep.root.dir" value="${data.drive.letter}:\Build_${data.drive.letter}\${env.USERNAME}\ido_ba\${build.name}" else="${build.name}\ido_ba" >
     <os family="windows"/>
@@ -120,8 +120,8 @@
 
 
 	<!-- Preparing the content on top of the env -->
-	<target name="ido-50-build" depends="ido-build-prep,compile-main,build-log-summary,render-internal-exports,update-policy-src-reference,render-validate-policy,localisation-50-build,ido-codescanner,rndsdk-create-api-descr-xml,ats-test,publish-tasks-to-folder,ido-sources-to-s60-build-robot" />
-	<target name="ido-build-prep" depends="ido-configure-prep,init,check-tool-dependencies,log-build-env,set-arm-version,check-free-space,diamonds,do-ccm-get-input,ido-prep-clean,ido-prep-copy,create-bom" />
+	<target name="ido-50-build" depends="ido-build-prep,compile-main,build-log-summary,render-internal-exports,update-policy-src-reference,render-validate-policy,localisation-50-build,ido-codescanner,ats-test,publish-tasks-to-folder,ido-sources-to-s60-build-robot" />
+	<target name="ido-build-prep" depends="ido-configure-prep,init,check-tool-dependencies,log-build-env,set-arm-version,check-free-space,diamonds,do-prep-work-area,ido-prep-clean,ido-prep-copy,create-bom" />
 
 	<!-- needed to defined skip.prep-drive -->
 	<target name="ido-configure-prep">
--- a/buildframework/helium/tests/minibuilds/imaker/build.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tests/minibuilds/imaker/build.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -20,10 +20,10 @@
 
 ============================================================================
 -->
-<project name="minibuild.ido" default="help" xmlns:au="org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
+<project name="minibuild.imaker" default="help" xmlns:au="org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
     <property environment="env"/>
     <import file="../site/${env.TEAM}.ant.xml" />
-	<dirname property="config.dir" file="${ant.file.minibuild.ido}"/>
+    <dirname property="config.dir" file="${ant.file.minibuild.ido}"/>
 	
     <!-- Enable Helium internal assertion checking. -->
     <property name="hlm.enable.asserts" value="1" />
@@ -32,9 +32,14 @@
     <property name="build.family" value="minibuild_imaker" />
     <property name="major.version" value="0" />
     <property name="minor.version" value="0" />
-	<property name="ccm.enabled" value="true"/>
-
-	<!-- Configuring the build system -->
+    <property name="ccm.enabled" value="true"/>
+    <property name="ncp.version" value="79"/>
+    <property name="s60.version" value="52"/>
+    <tstamp><format property="build.year" pattern="yyyy"/></tstamp>
+    <tstamp><format property="build.week" pattern="ww"/></tstamp>
+    <property name="rombuild.buildinfo.template" location="${build.drive}/build/s60_52_build/build/helium_conf/imaker_conf/image_conf_buildinfo.mk.ftl"/>
+    
+    <!-- Configuring the build system -->
     <property name="build.system" value="ec-helium" />
     
     <property name="ec.cluster.manager" value="fawec001"/>
@@ -43,22 +48,25 @@
     <property name="rvct.version" value="22_616"/>
 
     <!-- Configuring get latest env. -->
-	<property name="s60.grace.service" value="s60_devices_sw" />
-	<property name="s60.grace.product" value="DFS7x.92" />
-	<property name="s60.grace.release" value="mcl_\d{6}_hw79" />
-	<property name="prep.root.dir" value="E:\Build_E\${env.USERNAME}\ido_ba\${build.name}" />
+    <property name="s60.grace.service" value="s60_devices_sw" />
+    <property name="s60.grace.product" value="DFS7x.92" />
+    <property name="s60.grace.release" value="92_\d{6}_hw79" />
+    <property name="prep.root.dir" value="E:\Build_E\${env.USERNAME}\ido_ba\${build.name}" />
 
 
     <import file="${helium.dir}/helium.ant.xml"/>
 
     <!-- Need to define custom preparation steps. -->
-	<target name="ido-prep" depends="prep-drive,preparation-getenv"/>
+	  <target name="ido-prep" depends="prep-drive,preparation-getenv"/>
 
     <!-- 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="ido-update-build-area,
     										mini-build-cleanup,
                                             mini-build-install-new-imaker,
-    										imaker-build,
+                                            mini-build-prepare,
+                                            build-roms,
+                                            fota-a-build,
+                                            build-icreatordp,
     	                                    mini-build-check"/>
     
     
@@ -138,10 +146,10 @@
             <fileset dir="${build.drive}/" casesensitive="false">
                 <include name="makefile"/>
                 <include name="*.mk"/>
-            	<include name="ecloud_tmp_*/**"/>
-            	<include name="emake.*"/>            	
+                <include name="ecloud_tmp_*/**"/>
+                <include name="emake.*"/>
                 <include name="epoc32/build/**"/>
-                <include name="epoc32/rombuild/*/**"/>
+                <!--<include name="epoc32/rombuild/*/**"/>-->
                 <include name="output/**"/>
                 <include name="timestart.txt"/>
                 <include name="timestop.txt"/>
@@ -151,6 +159,10 @@
     </target>
     
     
+    <target name="mini-build-prepare">
+    	<hlm:hackMacro file="${build.drive}/epoc32/rom/config/${product.platform}/${product.name}/customer/custvariant_01_test/content/variant.mk" keyword="CUSTVARIANT_COMPLP" regex="(custvariant\s*$)" replace="\1\nCUSTVARIANT_COMPLP=01 02"/>
+    </target>
+
     <target name="mini-build-check">
     </target>
 	
@@ -172,22 +184,23 @@
                 <variable name="TYPE" value="rnd"/>
             </variableset>
         </imakerconfiguration>
-                <imakerconfiguration>
+        <!--imakerconfiguration>
             <makefileset>
                 <include name="**/${product.name}/*ui.mk"/>
             </makefileset>
             <targetset>
                 <include name="^core$"/>
                 <include name="^langpack_01.*$"/>
-                <include name="^langpack_02.*$"/><!---->
+                <include name="^langpack_02.*$"/>
                 <include name="^custvariant_.*$"/>
             </targetset>
             <variableset>
                 <variable name="USE_FOTI" value="0"/>
                 <variable name="USE_FOTA" value="1"/>
+                <variable name="USE_FOTAXML" value="1"/>
                 <variable name="TYPE" value="prd"/>
             </variableset>
-        </imakerconfiguration>
+        </imakerconfiguration-->
     </hlm:imakerconfigurationset>	
 </project>
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/tests/minibuilds/imaker/config/image_conf_buildinfo.mk.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,45 @@
+<#--
+============================================================================ 
+Name        : image_conf_buildinfo.mk.ftl 
+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:
+
+============================================================================
+--> 
+##########################################################################
+#
+# Helium - iMaker buildinfo template.
+#
+# This is a generated file please to not edit! 
+#
+##########################################################################
+
+<#assign dollar="$"/>
+<#assign properties = ['build.number', 'build.id', 'minor.version', 'major.version', 'build.output.dir', 'release.images.dir', 'fota.a.build']/>
+<#list properties as key>
+<#if ant?keys?seq_contains(key)>
+	<#if key?ends_with(".dir")>
+${key?upper_case?replace(".", "_")} = ${dollar}(call upddrive,${dollar}(subst \,/,${ant[key]}))
+	<#else> 
+${key?upper_case?replace(".", "_")} = ${ant[key]}
+	</#if>
+<#else>
+$(warning '${key}' is not a valid Helium property.)
+</#if>
+</#list>
+
+# Simple update for FOTA.
+MINOR_VERSION:=${r'$'}(MINOR_VERSION)${r'$'}(FOTA_A_BUILD)
--- a/buildframework/helium/tests/minibuilds/qt/build.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tests/minibuilds/qt/build.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -40,8 +40,8 @@
     <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="hydra.service" value="Helium" />
+    <property name="hydra.product" value="minibuild_qt" />
     <property name="release.label" value="${major.version}.${minor.version}" />
 
     <!-- build configuration -->
@@ -211,10 +211,7 @@
     <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>
+            <equals arg1="${build.system}" arg2="ec-helium" />
             <then>
                 <au:assertFileExists file="${temp.build.dir}/run-qmake-build.mk" />
                 <loadfile property="qmake.build.makefile" srcFile="${temp.build.dir}/run-qmake-build.mk"/>
@@ -225,16 +222,44 @@
                     </and>
                 </au:assertTrue>
             </then>
-            <else>
-                <xpathtest xmlfile="${temp.build.dir}/run-qmake-build.ant.xml">  
+        </if>
+        <if>
+            <equals arg1="${build.system}" arg2="sbs-ec" />
+            <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  -spec symbian-sbsv2 src.pro" />
+                        <contains string="${qmake.build.makefile}" substring="qmake -listgen -r  -spec symbian-sbsv2 examples.pro" />
+                    </and>
+                </au:assertTrue>
+            </then>
+        </if>
+        <if>
+            <equals arg1="${build.system}" arg2="sbs" />
+            <then>
+                <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='-r -listgen']"/>
+                    <xpath expression="/project/target[@name='all']/parallel/sequential/if/then/exec/arg[@line='-r -listgen']"/>
+                    <xpath expression="/project/target[@name='all']/parallel/sequential/if/then/exec/arg[@line='-spec symbian-sbsv2']"/>
                 </xpathtest>
-            </else>
+            </then>
         </if>
-        
+        <if>
+            <equals arg1="${build.system}" arg2="ebs" />
+            <then>
+                    <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='-r -listgen']"/>
+                    </xpathtest>
+            </then>
+        </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" />
--- a/buildframework/helium/tools/common/bin/get_gscm_info.pl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,106 +0,0 @@
-#!/usr/bin/env perl
-
-#============================================================================ 
-#Name        : get_gscm_info.pl 
-#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: 
-#============================================================================
-#
-# Script that fetch database connection information.
-#
-# e.g get_gscm_info.pl myccmdb get_db_path|get_router_address|get_engine_host myccmdb
-#
-use strict;
-BEGIN {
-    require Socket;
-    eval qq{
-        sub Socket::IPPROTO_TCP ();
-        sub Socket::TCP_NODELAY ();
-    } if  Socket->VERSION < 1.76 ;
-}
-
-use Config;
-BEGIN {
-    my $archname = $Config{archname};
-    my $gscm_lib;
-    if ($archname =~ m/Win32/)
-    {
-      $gscm_lib = "C:/apps/gscm-apps/lib"; # TODO: remove hardcoded path!
-    }
-    else
-    {
-      $gscm_lib = $ENV{'CCM_HOME'} . "/../gscm-apps/lib"; # TODO: remove hardcoded path!
-    }
-    my ($perl_version) = $Config{version} =~ /^(\d+\.\d+)/;    
-    unshift @INC, "$gscm_lib/$perl_version/$archname", "$gscm_lib/$perl_version", $gscm_lib;
-}
-
-
-use GSCM::CCM::Utils qw(locate_databases get_general_info get_ccm_home sites);
-use GSCM::Logging;
-#use Data::Dumper;
-log_config(level=>'alert');
-
-sub get_db_path
-{
-	my $db = shift;
-	foreach my $dbpath (locate_databases())
-	{
-		return $dbpath if ($dbpath =~ m/$db$/);
-	}
-	exit (-1);
-}
-
-sub get_router_address
-{
-	my %ccm_info = get_general_info(get_db_path(shift));	
-	return $ccm_info{"win32::router_address"};
-}
-
-sub get_engine_host
-{
-	my %ccm_info = get_general_info(get_db_path(shift));
-	my $archname = $Config{archname};
-	if ($archname =~ m/Win32/)
-  {
-    return $ccm_info{"win32::engine_host"};
-  }
-  else
-  {
-    return $ccm_info{"hostname"};
-  }
-}
-
-
-if (scalar(@ARGV)==2)
-{
-	eval {
-		no strict 'refs';
-		my $subroutine = shift @ARGV;
-		my $v = &$subroutine(@ARGV);
-		print $v;
-		
-	};
-	if ($@) {print "Error: error executing method $ARGV[1]:$@\n"; exit(-1)};
-}
-else
-{
-  print scalar(@ARGV);
-	print "get_gscm_info.pl dbname get_db_path|get_router_address|get_engine_host\n";
-	exit(-2);
-}
-exit(0);
-
--- a/buildframework/helium/tools/common/common.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/common/common.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -20,13 +20,12 @@
 
 ============================================================================
 -->
+<!--* @package framework -->
 <project name="common" xmlns:hlm="http://www.nokia.com/helium" xmlns:cs="antlib:com.puppycrawl.tools.checkstyle">
     <description>
-        Common targets for all helium tools.
+        Common targets for all Helium tools.
     </description>
     
-    <import file="logging.ant.xml"/>
-    
     <!--=======================================================================
     Preset definitions -->
     <presetdef name="preset.exec">
@@ -77,10 +76,29 @@
      -->
     <target name="build-number">
         <fail unless="build.number" message="build.number property not defined" />
+        <!-- Version of the build.
+        @type string
+        @scope private
+        -->
         <property name="build.version" value="${core.build.version}.${build.number}"/>
+        <!-- A unique ID for the build.
+        @type string
+        @scope private
+        -->
         <property name="build.id" value="${build.name}_${build.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}"/>
+        <!-- Directory where the build is published (includes build.id)
+        @type string
+        -->
         <property name="publish.dir" location="${publish.root.dir}/${build.name}/builds/${core.build.version}/${build.id}"/>
+        <!-- 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}/${build.name}/releases/${core.build.version}/${build.id}"/>
     </target>
 
@@ -198,7 +216,7 @@
     Example: <tt>hlm -Dtarget=compile-main deps</tt>
     -->
     <target name="deps">
-        <fail unless="target" message="target property not defined" />
+        <fail unless="target" message="target property not defined, example: hlm -Dtarget=compile-main deps" />
         <hlm:dependencies target="${target}" format="nested"/>
     </target>
     
@@ -297,76 +315,12 @@
         <echo message="Helium version: ${helium.version}" />
     </target>
         
-    
-    <!-- Creates a database of the current configuration. -->
-    <target name="create-data-model-db">        
-        <echoproperties format="text" destfile="${build.cache.dir}/database.txt">        
-            <propertyset negate="true">
-                <propertyref prefix="ant."/>
-                <propertyref prefix="os."/>
-                <propertyref prefix="file."/>
-                <propertyref prefix="java."/>
-                <propertyref prefix="sun."/>
-                <propertyref prefix="awt."/>
-                <propertyref prefix="env."/>
-                <propertyref prefix="user."/>
-                <propertyref prefix="line."/>
-                <propertyref prefix="path."/>
-                <propertyref prefix="python."/>
-                <propertyref prefix="TODAY"/>
-                <propertyref prefix="DSTAMP"/>
-                <propertyref prefix="TSTAMP"/>
-                <propertyref prefix="sig"/>
-                <propertyref name="basedir"/>
-                <propertyset refid="password.list.ref"/>
-            </propertyset>
-        </echoproperties>
-    </target>
-    
-    <!--Macro to Assert Ant configuration against a Helium data model.-->
-    <macrodef name="checkDataModelMacro" uri="http://www.nokia.com/helium">
-        <attribute name="datamodel"/>
-        <attribute name="config"/>
-        <attribute name="assert" default="false"/>
-        <sequential>
-            <hlm:python>
-import logging
-import ant
-import configuration
-import configuration_model
-
-datamodel_file = ant.get_property(r'@{datamodel}')
-config_file = ant.get_property(r'@{config}')
-model = configuration_model.DataModel(str(datamodel_file))
-db_file = open(str(config_file), 'r')
-config = configuration.PropertiesConfiguration(db_file)
-
-items = model.validate_config(config)
-
-logging.basicConfig(level=logging.INFO, format='%(levelname)s: %(message)s')
-for item in items:
-    item.log(logging.getLogger())
-    
-assert_attr = ant.get_property(r'@{assert}')
-if assert_attr != None and str(assert_attr) == 'true':
-    for item in items:
-        if isinstance(item, configuration_model.MissingFromDataModelItem):
-            raise Exception(str(item))
-            </hlm:python>
-        </sequential>
-    </macrodef>
-        
         
     <!-- Checks the Ant configuration against a Helium data model. -->
-    <target name="check" depends="create-data-model-db">
-        <xslt in="${data.model.file}" out="${data.model.parsed}" style="${data.model.xsl}"/>
-        <hlm:checkDataModelMacro datamodel="${data.model.parsed}" config="${build.cache.dir}/database.txt"/>
-    </target>
-    
-    <!--Assert Ant configuration against a Helium data model.-->
-    <target name="assert-datamodel-correct" depends="create-data-model-db">
-        <xslt in="${data.model.file}" out="${data.model.parsed}" style="${data.model.xsl}"/>
-        <hlm:checkDataModelMacro datamodel="${data.model.parsed}" config="${build.cache.dir}/database.txt" assert="true"/>
+    <target name="check">
+        <hlm:antconfiglint>
+            <WrongTypePropertyCheck/>
+        </hlm:antconfiglint>
     </target>
     
     
@@ -374,29 +328,24 @@
         
     This lists all the targets and information about them. -->
     <target name="database">
-        <!-- Projects with no targets or non project files -->
-        <fileset id="database.extra.files" dir="${helium.dir}">
-            <include name="tools/**/*.antlib.xml"/>
-            <include name="tools/**/*.ant.xml"/>
-            <include name="extensions/nokia/tools/**/*.antlib.xml"/>
-            <include name="extensions/nokia/tools/**/*.ant.xml"/>
-            <include name="extensions/nokia/*.ant.xml"/>
-            <include name="config/signaling_config_default.ant.xml"/>
-        </fileset>
-        
-        <mkdir dir="${helium.build.dir}"/>
-        <property name="home.files.only" value="false"/>
-        <hlm:database output="${database.file}" refid="database.extra.files" homeFilesOnly="${home.files.only}"/>
+        <mkdir dir="${basedir}/build"/>
+        <hlm:database output="${database.file}">
+            <fileset dir="${helium.dir}">
+                <include name="config/signaling_config_default.ant.xml"/>
+                <include name="config/stages_config_default.ant.xml"/>
+                <include name="config/metadata_filter_config_default.ant.xml"/>
+            </fileset>
+        </hlm:database>
     </target>
     
     
     <!-- Looks for lint-style issues with the Ant files in Helium, using the antlint task. -->
-    <target name="antlint" depends="check">
+    <target name="antlint">
         <delete dir="${helium.build.dir}/jep"/>
         <delete dir="${helium.build.dir}/python"/>
         <delete dir="${helium.build.dir}/beanshell"/>
         <delete file="${helium.build.dir}/test_jython.xml"/>
-        <hlm:antlint configfile="${helium.dir}/config/antlint_config.xml">
+        <hlm:antlint>
             <fileset id="antlint.files" dir="${helium.dir}">
                 <include name="*.ant.xml"/>
                 <include name="tools/**/*.ant.xml"/>
@@ -411,9 +360,30 @@
                 <include name="extensions/nokia/**/build.xml"/>
                 <include name="extensions/nokia/**/*.antlib.xml"/>
                 <include name="extensions/nokia/**/*.ant.xml"/>
+                <exclude name="external/helium-antlib/**/data/*.xml"/>
             </fileset>
+            <checker name="CheckTabCharacter" severity="error" />
+            <checker name="CheckPropertyName" severity="warning">([a-z0-9[\\d\\_\\.\\@\\{\\}\\$]]*)</checker>
+            <checker name="CheckTargetName" severity="warning">([a-z0-9[\\d\\-]]*)</checker>
+            <checker name="CheckIndentation" severity="error"/>
+            <checker name="CheckPresetDefMacroDefName" severity="warning">([a-z0-9][a-zA-Z0-9]*)</checker>       
+            <checker name="CheckProjectName" severity="warning">([a-z0-9[\\d\\.\\_\\-]]*)</checker>
+            <checker name="CheckDescription" severity="warning"/>
+            <checker name="CheckFileName" severity="warning" >^build.xml$|ant.xml$|antlib.xml$</checker>
+            <checker name="CheckRunTarget" severity="warning"/>
+            <checker name="CheckAntCall" severity="warning"/>
+            <checker name="CheckScriptSize" severity="warning"/>
+            <checker name="CheckUseOfIfInTargets" severity="warning"/>
+            <checker name="CheckJepJythonScript" severity="error" />
+            <checker name="CheckPropertiesInDataModel" severity="warning"/>
+            <checker name="CheckScriptCondition" severity="warning"/>
+            <checker name="CheckPythonTasks" severity="warning"/>
+            <checker name="CheckUseOfEqualsTask" severity="warning"/>
+            <checker name="CheckScriptDefNameAttributes" severity="error"/>
+            <checker name="CheckScriptDefStyle" severity="warning"/>
+            <checker name="CheckScriptDef" severity="error"/>
+            <checker name="CheckDuplicateNames" severity="warning"/>
         </hlm:antlint>
-        
         <fileset id="jep.files" dir="${helium.build.dir}">
             <include name="jep/**/*.py"/>
             <include name="python/**/*.py"/>
@@ -470,30 +440,6 @@
     </target>
     
     
-    <!-- validate only requires properties at startup -->
-    <target name="validate-at-startup" depends="create-data-model-db">
-        <hlm:python>
-import logging
-import configuration
-import configuration_model
-
-model = configuration_model.DataModel(r'${data.model.file}')
-db_file = open(r'${build.cache.dir}/database.txt', 'r')
-config = configuration.PropertiesConfiguration(db_file)
-
-items = model.validate_config_at_startup(config)
-            
-_checks_logger = logging.getLogger('config_check')
-_handler = logging.StreamHandler()
-_handler.setFormatter(logging.Formatter('%(levelname)s: %(message)s'))
-_checks_logger.addHandler(_handler)
-_checks_logger.setLevel(logging.INFO)
-for item in items:
-    item.log(_checks_logger)
-        </hlm:python>
-    </target>
-    
-    
     <!-- Macro test target. -->
     <target name="macro-test">
         <hlm:fooMacro/>
--- a/buildframework/helium/tools/common/common.antlib.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/common/common.antlib.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -20,6 +20,7 @@
 
 ============================================================================
 -->
+<!--* @package framework -->
 <antlib xmlns:au="org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
     
     
@@ -170,7 +171,10 @@
              match = pattern.matcher(line);
             if (match.find()) {
                 //self.log("Line containg " + search + " is = " + line + " returned vaue = " + match.group(1));
-                output = output + match.group(1) + ",";
+                int checkIndex = output.indexOf(match.group(1), 0);
+                if (checkIndex == -1 ) {
+                   output = output + match.group(1) + ",";
+                }
             }
         }
     } catch (IOException ex) {
@@ -214,63 +218,6 @@
     </scriptdef>
 
 
-    <!-- Macro to record content to a separate log file without recording in the main log. -->
-    <macrodef name="recordStartMacro" uri="http://www.nokia.com/helium">
-        <attribute name="name"/>
-        <attribute name="emacsmode" default="false"/>
-        <sequential>
-            <if>
-                <available file="${build.log.dir}" type="dir"/>
-                <then>
-                    <hlm:record name="${build.log.dir}/@{name}" action="start" append="true" emacsmode="@{emacsmode}" loglevel="${ant.loglevel}"/>
-                </then>
-            </if>
-        </sequential>
-    </macrodef>
-
-
-    <!-- Macro to stop recording content to a separate log file without recording in the main log. -->
-    <macrodef name="recordStopMacro" uri="http://www.nokia.com/helium">
-        <attribute name="name"/>
-        <sequential>
-            <if>
-                <available file="${build.log.dir}/@{name}"/>
-                <then>
-                    <hlm:record name="${build.log.dir}/@{name}" action="stop" append="true"/>
-                </then>
-            </if>
-        </sequential>
-    </macrodef>
-
-    
-    <!--Macro to stop recording to the main log file (if present) and record to
-        a separate log file that is filtered after logging is stopped. -->
-    <macrodef name="filterRecordStartMacro" uri="http://www.nokia.com/helium">
-        <attribute name="pattern" default=""/>
-        <attribute name="category" default=""/>
-        <sequential>
-            <hlm:record name="${build.cache.log.dir}/temp_ant_build.log" action="start" loglevel="${ant.loglevel}">
-                <hlm:recordfilter category="@{category}" regexp="@{pattern}" />
-            </hlm:record>
-        </sequential>
-    </macrodef>
-    
-
-    <!--Macro to stop recording the seperate filtered log file, filter the passwords
-    and start recording in main log file -->
-    <macrodef name="filterRecordStopMacro" uri="http://www.nokia.com/helium">
-        <attribute name="log" default="${build.log}"/>
-        <attribute name="append" default="true"/>
-        <sequential>
-            <hlm:record name="${build.cache.log.dir}/temp_ant_build.log" action="stop"/>                    
-            <concat destfile="@{log}" append="@{append}">
-                <filelist dir="${build.cache.log.dir}" files="temp_ant_build.log"/>                        
-            </concat>
-            <delete file="${build.cache.log.dir}/temp_ant_build.log" failonerror="false"/>
-            <echo>End of filtering @{log} for passwords</echo>
-        </sequential>
-    </macrodef>
-    
     
     <!-- A generic assert macro similar to AntUnit "assertTrue". -->
     <macrodef name="assert" uri="http://www.nokia.com/helium">
@@ -523,127 +470,6 @@
         ]]>
      </scriptdef>
 
-    <!-- Extract logs from text file and process error/warnings/components name etc
-    into xml file.
-    <deprecated>Please consider using the metadata framework.</deprecated>
-    -->
-    <scriptdef name="logextract" language="jython"  uri="http://www.nokia.com/helium">
-        <attribute name="file" />
-        <attribute name="outputfile" />
-        <element name="fileset" type="fileset"/>
-        <element name="logfilterset" classname="com.nokia.ant.types.LogFilterSet"/>
-        <![CDATA[
-import os.path
-import log2xml
-import java.io
-
-def convertFile(inputfile, outputfile, config):
-    if (outputfile != None):
-        print "output file not none"
-        print "output file: %s" % outputfile
-        targetfile = str(outputfile)
-    else:
-        #print "output file: %s" % outputfile
-        targetfile = "%s.xml" % inputfile
-        #print "targetFile %s" % targetfile
-    if not os.path.exists(targetfile) or \
-       (os.path.exists(targetfile) and os.path.getmtime(inputfile) > os.path.getmtime(targetfile)):
-        self.getProject().log("Converting %s..." % inputfile)
-        log2xml.convert(inputfile, targetfile, False, config)
-    else:
-        self.getProject().log("Extracted log is uptodate: %s" % inputfile)
-        
-config = log2xml.DEFAULT_CONFIGURATION
-logfilterset = elements.get("logfilterset")
-if logfilterset != None and logfilterset.size() > 0:
-    # if any logfilterset are dfined then
-    # it override the default configuration
-    config = {}
-    for filtersetid in range(logfilterset.size()):
-        filterset = logfilterset.get(filtersetid)
-        if filterset.isReference():
-            filterset = filterset.getRefid().getReferencedObject(project)
-        filters = filterset.getFilters()
-        for filterid in range(filters.size()):
-            if not filters.get(filterid).getCategory() in config:
-                config[filters.get(filterid).getCategory()] = []
-            config[filters.get(filterid).getCategory()].append(str(filters.get(filterid).getRegex()))
-
-fileset = elements.get("fileset")
-outputfile = attributes.get("outputfile")
-if fileset != None and fileset.size() > 0:
-    for filesetid in range(fileset.size()):
-        dirscanner = fileset.get(filesetid).getDirectoryScanner(project)
-        for filename in dirscanner.getIncludedFiles():
-            inputfile = str(java.io.File(dirscanner.getBasedir(), str(filename)).getAbsolutePath())
-            convertFile(inputfile, outputfile, config)
-elif attributes.get("file") != None:
-    inputfile = str(java.io.File(str(attributes.get("file"))).getAbsolutePath())
-    convertFile(inputfile, outputfile, config)
-else:
-    self.log("No input specified.")
-        ]]>
-    </scriptdef>
-    
-    
-    <!--Macro to stop recording to the main log file (if present) and record to
-        a separate log file into a temporary location (doesn't need the build aread to work). -->
-    <macrodef name="tempRecordStartMacro" uri="http://www.nokia.com/helium">
-        <attribute name="name"/>
-        <sequential>
-            <mkdir dir="${build.cache.log.dir}"/>
-            <hlm:record name="${build.cache.log.dir}/@{name}" action="start" loglevel="${ant.loglevel}"/>
-        </sequential>
-    </macrodef>
-
-
-    <!--Macro to restart  the main log file (if present) and stop recording to
-        a separate log file into a temporary location the file is next xml summarized 
-        and potentially copied to the build area (if exists). Else those files will get copied during the 
-        build area preparation. -->
-    <macrodef name="tempRecordStopMacro" uri="http://www.nokia.com/helium">
-        <attribute name="name"/>
-        <attribute name="phase" default=""/>
-        <attribute name="database" default="${metadata.dbfile}"/>
-        <attribute name="filterref" default="filterset.temprecord"/>
-        <sequential>
-            <mkdir dir="${build.cache.log.dir}"/>
-            <mkdir dir="${build.log.dir}"/>
-            <mkdir dir="${build.cache.log.dir}/signals"/>
-            <hlm:record name="${build.cache.log.dir}/@{name}" action="stop" loglevel="${ant.loglevel}"/>
-            <!--Temporary solution, the logextract in general 
-                needs to be handled in a better way (not all logs needs to be processed,
-                logextract / counting errors could be merged and logextract should be
-                executed on a need basis and not to process for all stopmacro.-->
-            <!-- Todo: metadata: replace logextract -->
-            <hlm:metadatarecord database="@{database}">
-                <hlm:antmetadatainput>
-                    <fileset casesensitive="false" file="${build.cache.log.dir}/@{name}" />
-                    <metadatafilterset refid="@{filterref}" />
-                </hlm:antmetadatainput>
-            </hlm:metadatarecord>
-            <hlm:generateBuildStatus dbfile="@{database}" output-dir="${build.cache.log.dir}/signals" file="@{name}" />
-            <if>
-                <isset property="@{phase}.log.dir" />
-                <then>
-                    <mkdir dir="${@{phase}.log.dir}"/>
-                    <copy todir="${@{phase}.log.dir}" failonerror="false">
-                        <fileset casesensitive="false" file="${build.cache.log.dir}/@{name}" />
-                    </copy>
-                </then>
-                <else>
-                    <copy todir="${build.log.dir}" failonerror="false">
-                        <fileset casesensitive="false" file="${build.cache.log.dir}/@{name}" />
-                    </copy>
-                </else>
-            </if>            
-            <copy todir="${build.signal.status.dir}" failonerror="false">
-                <fileset casesensitive="false" dir="${build.cache.log.dir}/signals" />
-            </copy>
-        </sequential>
-    </macrodef>
-    
-
     <macrodef name="signalMacro" uri="http://www.nokia.com/helium">
         <attribute name="logfile"/>
         <attribute name="phase" default=""/>
@@ -653,7 +479,7 @@
         <sequential>
             <var name="signal.errors.total" value="" unset="true"/>
             <var name="base.signal.log.file" value="" unset="true"/>
-            <basename property="base.signal.log.file" file="@{logfile}" suffix=".log"/>
+            <basename property="base.signal.log.file" file="@{logfile}"/>
             <if>
                 <isfalse value="@{skip.count}" />
                 <then>
@@ -690,7 +516,7 @@
                 <signalNotifierInput>
                     <signalInput refid="@{signal.input}" />
                     <notifierInput>
-                        <fileset dir="${build.log.dir}" >
+                        <fileset casesensitive="false" dir="${build.log.dir}" >
                             <include name="**/${base.signal.log.file}*" />
                         </fileset>
                     </notifierInput>
@@ -699,65 +525,6 @@
         </sequential>
     </macrodef>
 
-    <!-- Macro to start logging to a separate log file.
-    
-    This will stop logging to the main ant_build log file until stopSpecificLogMacro
-    is called. -->
-    <macrodef name="startSpecificLogMacro">
-        <attribute name="name"/>
-        <attribute name="regexp" default=""/>
-        <attribute name="backup" default="false"/>
-        <attribute name="phase" default=""/>
-        
-        <sequential>
-            <if>
-                <isset property="@{phase}.log.dir" />
-                <then>
-                    <mkdir dir="${@{phase}.log.dir}"/>
-                </then>
-            </if> 
-            <mkdir dir="@{name}/.."/>
-            <hlm:record name="@{name}" action="start" loglevel="verbose" >
-                <hlm:recordfilter category="@{phase}" regexp="@{regexp}" />
-            </hlm:record>
-        </sequential>
-    </macrodef>
-
-
-    <!--Macro to restart  the main log file (if present) and stop recording to
-        a separate log file. -->
-    <macrodef name="stopSpecificLogMacro">
-        <attribute name="name"/>
-        <attribute name="phase" default=""/>
-        <sequential>
-            <hlm:record name="@{name}" action="stop" loglevel="verbose"/>
-        </sequential>
-    </macrodef>
-
-    <!-- Temp BMD macro -->
-    <macrodef name="bmdLogExtractMacro" uri="http://www.nokia.com/helium">
-        <attribute name="log"/>
-        <attribute name="metadatafilterset" default="common"/>
-        <sequential>
-            <hlm:metadatarecord database="${metadata.dbfile}">
-                <hlm:textmetadatainput>
-                    <fileset casesensitive="false" file="@{log}"/>
-                    <metadatafilterset refid="@{metadatafilterset}" />
-                </hlm:textmetadatainput>
-            </hlm:metadatarecord>
-            <!-- todo: check to add for usage and add genbuildstatus macro -->
-            <basename property="log.name" file="@{log}"/>
-            <fmpp sourceFile="${helium.dir}/tools/common/templates/db2xml.xml.ftl"
-                         outputfile="@{log}.xml">
-                <data expandProperties="yes">
-                    dbPath: ${metadata.dbfile}
-                    log: ${log.name}
-                    ant: antProperties()
-                </data>
-            </fmpp>
-        </sequential>
-    </macrodef>
-
     <!-- A simple test macro -->
     <macrodef name="fooMacro" uri="http://www.nokia.com/helium">
         <sequential>
--- a/buildframework/helium/tools/common/docs.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/common/docs.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -20,157 +20,43 @@
 
 ============================================================================
 -->
+<!--* @package framework -->
 <project name="internal.docs" xmlns:hlm="http://www.nokia.com/helium" xmlns:ivy="antlib:org.apache.ivy.ant">
     <description>
     Documentation generation targets.
     </description>
     
-    <property name="helium.doc.dir" location="${helium.dir}/doc" />
+    <!-- Location of documentation source.
+    @type string
+    @scope public
+    -->
+    <property name="doc.src.dir" location="${basedir}/doc" />
+    
+    <!-- The location where the docs will be built.
+    @type string
+    @scope private -->
+    <property name="docs.build.dir" location="${basedir}/build/doc" />
     
     <fileset id="python.library.files" dir="${helium.dir}">
         <include name="extensions/nokia/tools/common/python/lib/**/*.py"/>
         <include name="tools/common/python/lib/**/*.py"/>
-        <include name="extensions/nokia/tools/dp/iCreatorDP/**/*.py"/>
+        <include name="external/helium-antlib/python/**/*.py"/>
+        <include name="extensions/nokia/external/helium-nokia-antlib/python/**/*.py"/>
     </fileset>
     
-    <!-- Generate an overview of Helium as HTML tables. -->
-    <target name="overview-to-html">
-        <fmpp sourceFile="${helium.doc.dir}/src/helium_overview.html.ftl"
-              outputFile="${helium.build.dir}/temp/doc/helium_overview.html"
-              replaceExtension="html.ftl, html" expert="true">
-            <data expandProperties="yes">
-                doc: xml(${helium.doc.dir}/src/helium_overview.xml)
-            </data>
-        </fmpp>
-    </target>
-
-    
-    <!-- Macro to generate the tools dependency xml output. -->
-    <macrodef name="createToolsTableMacro" uri="http://www.nokia.com/helium">
-        <attribute name="dir"/>
-        <attribute name="failonerror"/>
-        <attribute name="configs"/>
-        <sequential>
-            <ivy:configure file="${tools.ivy.config.file}" override="true"/>
-            <ivy:resolve file="${helium.dir}/config/ivy/ivy.xml" conf="@{configs}" haltonfailure="@{failonerror}"/>
-            <ivy:report todir="@{dir}" outputpattern="tool-dependencies-[conf].xml"
-                        conf="@{configs}" xml="true" graph="false" xsl="false"/>
-        </sequential>
-    </macrodef>
-
-    
-    <!-- Generates the tools dependency xml output. used in the retrieving Helium section to list the tools used within Helium-->
-    <target name="tools-rst-table">
-        <hlm:createToolsTableMacro dir="${helium.build.dir}/doc/ivy" failonerror="false" 
-            configs="core,ido"/>
-        <fmpp sourceFile="${helium.doc.dir}/src/manual/tool-dependencies.rst.ftl" includes="*.dot.ftl"
-              outputFile="${helium.build.dir}/temp/doc/nokia/tool-dependencies.rst_include"
-              replaceExtension="dot.ftl, dot">
-            <data expandProperties="yes">
-                doc: xml(${helium.build.dir}/doc/ivy/tool-dependencies-ido.xml)
-            </data>
-        </fmpp>
-    </target>
-    
-    
-    <!-- Create a complete dependency graph of Helium libraries. 
+    <fileset id="static.doc.files" dir="${helium.dir}/doc/src">
+        <include name="conf.py"/>
+        <include name=".static"/>
+        <include name=".templates/**"/>
+        <include name="*.jpg"/>
+        <include name="*.css"/>
+    </fileset>
         
-    Currently this does not work correctly but it is useful for future testing of repreport. -->
-    <target name="libraries-dependencies">
-        <ivy:settings file="${tools.ivy.config.file}"/>
-        <!--<ivy:resolve file="${helium.dir}/config/ivy/ivy.xml" conf="" haltonfailure="false"/>-->
-        <delete file="@{dir}/ivy-repository-report.xml"/>
-        <ivy:repreport todir="${helium.build.dir}/doc/ivy" organisation="S60_SAM"
-                    xml="true" graph="false" xsl="false"/>
-        <!--<fmpp sourceFile="${helium.doc.dir}/src/manual/tool-dependencies.rst.ftl" includes="*.dot.ftl"
-              outputFile="${helium.build.dir}/temp/doc/manual/tool-dependencies.rst_include"
-              replaceExtension="dot.ftl, dot">
-            <data expandProperties="yes">
-                doc: xml(${helium.build.dir}/doc/ivy/tool-dependencies-ido.xml)
-            </data>
-        </fmpp>-->
-    </target>
-    
-    
-    <!-- Generate .rst tables from the property groups in the data model. -->
-    <target name="property-group-tables">
-        <fmpp sourceRoot="${helium.doc.dir}/src" includes="*.dot.ftl" outputRoot="${helium.build.dir}/temp/doc/api/helium"
-              replaceExtension="dot.ftl, dot">
-            <data expandProperties="yes">
-                doc: xml(${database.file})
-            </data>
-        </fmpp>
-    </target>
-
-    
-    <!-- Generate Python API documentation using epydoc. -->
-    <target name="python-apidocs">
-        <mkdir dir="${helium.build.dir}/doc/api/python"/>
-        <pathconvert pathsep=" " property="epydoc.python.modules.path">
-            <fileset refid="python.library.files"/>
-        </pathconvert>
-        <echo>Python modules path: ${epydoc.python.modules.path}</echo>
-        <exec executable="python" dir="${helium.build.dir}" failonerror="true">        
-            <arg line="${python.tools}/epydoc"/>
-            <arg value="-v"/>
-            <arg value="--config=${helium.dir}/config/epydoc.conf"/>
-            <arg value="--exclude=sgmllib"/>
-            <arg line="${epydoc.python.modules.path}"/>
-        </exec>
-    </target>
-    
-    
-    <!-- Generate Java API documentation using javadoc. -->
-    <target name="java-apidocs" depends="install-cruisecontrol">
-        <path id="classpath-javadoc">
-            <fileset dir="${helium.dir}/external/CruiseControl/lib" includes="*.jar"/>
-            <fileset dir="${helium.dir}/external" includes="**/*.jar"/>
-            <pathelement path="${helium.dir}/external/CruiseControl/webapps/dashboard/WEB-INF/classes"/>
-        </path>
-        <javadoc classpathref="classpath-javadoc" 
-            destdir="${helium.build.dir}/doc/api/java" useexternalfile="true">
-            <packageset dir="tools/common/java/src" defaultexcludes="yes"/>
-            <packageset dir="tools/common/java/test" defaultexcludes="yes"/>
-            <doctitle><![CDATA[<h1>API Documentation</h1>]]></doctitle>
-        </javadoc>
-    </target>
-    
-    
-    <!-- Generate Ant API documentation using antdoclet. -->
-    <target name="antdoclet" description="Generate Ant Task/Types documentation">
-        <path id="doclet-classpath">
-            <pathelement path="${java.class.path}/"/>
-            <pathelement path="${helium.dir}/external/CruiseControl/webapps/dashboard/WEB-INF/classes"/>
-        </path>
-        <mkdir dir="${helium.build.dir}/doc/api/ant"/>
-
-        <!-- First copy the "static" resources (images, static html files) -->
-        <copy todir="${helium.build.dir}/doc/api/ant" overwrite="true">
-            <fileset dir="${helium.doc.dir}/src/antdoclet/html">
-                <exclude name="*.vm"/>
-            </fileset>
-        </copy>
-      
-        <!-- Now invoke AntDoclet to generate the "dynamic" content from the templates -->
-        <javadoc access="private" sourcepath="${helium.dir}/tools/common/java/src/"
-                 destdir="${helium.build.dir}/doc/api/ant"
-                 packagenames="com.nokia.ant,com.nokia.ant.filters,com.nokia.ant.types.imaker,com.nokia.ant.types,com.nokia.ant.listerner,com.nokia.ant.taskdefs,com.nokia.ant.taskdefs.ccm.commands,com.nokia.cruisecontrol,com.nokia.cruisecontrol.sourcecontrol,com.nokia.fmpp,nokia.ivy"
-                 docletpathref="doclet-classpath" source="1.6"
-                 useexternalfile="true">
-            <doclet name="com.neuroning.antdoclet.AntDoclet">
-                <param name="-doctitle" value="${build.name}" />
-                <param name="-templatesdir" value="${helium.doc.dir}/src/antdoclet/html"/>
-                <param name="-templates" value="main.vm"/>
-            </doclet>
-        </javadoc>
-        <move file="velocity.log" tofile="build/velocity.log" failonerror="false"/>
-    </target>
-
     
     <!-- Cleans the Helium API documentation. -->
-    <target name="clean-helium-apidoc">
-        <delete dir="${helium.build.dir}/doc/api/helium"/>
-        <delete dir="${helium.build.dir}/temp/doc/api/helium"/>
+    <target name="clean-helium-apidocs">
+        <delete dir="${docs.build.dir}/api/helium"/>
+        <delete dir="${docs.build.dir}/temp/doc/api/helium"/>
     </target>
     
     
@@ -179,224 +65,52 @@
     This includes creating a cmap file that is included in the HTML document,
     so the boxes in the image are linked to their targets. -->
     <target name="helium-api-dependency-images">
-        <mkdir dir="${helium.build.dir}/doc/api/helium"/>
-        <fmpp sourceRoot="${helium.doc.dir}/src/api" includes="*.dot.ftl" outputRoot="${helium.build.dir}/temp/doc/api/helium"
+        <mkdir dir="${docs.build.dir}/api/helium"/>
+        <fmpp sourceRoot="${helium.dir}/doc/src/api" includes="*.dot.ftl" outputRoot="${docs.build.dir}/temp/doc/api/helium"
               replaceExtension="dot.ftl, dot">
             <data expandProperties="yes">
                 doc: xml(${database.file})
             </data>
         </fmpp>
         <for param="dot.file" parallel="true" threadCount="${number.of.threads}">
-            <fileset dir="${helium.build.dir}/temp/doc/api/helium" includes="*.dot"/>
+            <fileset dir="${docs.build.dir}/temp/doc/api/helium" includes="*.dot"/>
             <sequential>
                 <echo>Processing dot file: @{dot.file}</echo>
-                <exec executable="dot" dir="${helium.build.dir}/temp/doc/api/helium">
+                <exec executable="dot" dir="${docs.build.dir}/temp/doc/api/helium">
                     <arg line="-Tcmap @{dot.file} -O"/>
                 </exec>
-                <exec executable="dot" dir="${helium.build.dir}/doc/api">
+                <exec executable="dot" dir="${docs.build.dir}/api">
                     <arg line="-Tpng @{dot.file} -O"/>
                 </exec>
             </sequential>
         </for>
-        <move todir="${helium.build.dir}/doc/api" overwrite="true">
-            <fileset dir="${helium.build.dir}/temp/doc/api" includes="*.dot.png"/>
+        <move todir="${docs.build.dir}/api/helium" overwrite="true">
+            <fileset dir="${docs.build.dir}/temp/doc/api/helium" includes="*.dot.png"/>
         </move>
     </target>
     
     
     <!-- Builds the HTML files for the Helium API documentation. -->
     <target name="helium-api-html-docs">
-        <mkdir dir="${helium.build.dir}/doc/api/helium"/>
-        <copy todir="${helium.build.dir}/temp/doc/api/helium" overwrite="true">
-            <fileset dir="${helium.doc.dir}/src/api"/>
+        <mkdir dir="${docs.build.dir}/api/helium"/>
+        <copy todir="${docs.build.dir}/temp/doc/api/helium" overwrite="true">
+            <fileset dir="${helium.dir}/doc/src/api"/>
         </copy>
-        <xslt in="${data.model.file}" out="${data.model.parsed}" style="${data.model.xsl}"/>
-        <hlm:parsemodel output="${helium.build.dir}/helium_data_model.xml_parsed" input="${data.model.parsed}"/>
-        <fmpp sourceRoot="${helium.build.dir}/temp/doc/api/helium" excludes="*.dot.ftl,**/*.dot,**/*.cmap,*.bak"
-              outputRoot="${helium.build.dir}/doc/api/helium"
+        <fmpp sourceRoot="${docs.build.dir}/temp/doc/api/helium" excludes="*.dot.png,*.dot.ftl,**/*.dot,**/*.cmap,*.bak"
+              outputRoot="${docs.build.dir}/api/helium"
               replaceExtension="html.ftl, html">
             <data expandProperties="yes">
                 ant: antProperties()
                 doc: xml(${database.file})
-                data: xml(${helium.build.dir}/helium_data_model.xml_parsed)
             </data>            
         </fmpp>
     </target>
     
     
     <!-- Builds the Helium API documentation. -->
-    <target name="helium-apidocs" depends="clean-helium-apidoc,database,
-        find-python-dependencies,helium-api-dependency-images,helium-api-html-docs"/>
-    
-    <!-- Builds the Helium API documentation for customer. -->
-    <target name="customer-apidocs">
-        <mkdir dir="${helium.build.dir}"/>
-        
-        <antcall target="helium-apidocs">
-            <param name="helium.dir" value="."/>
-            <param name="home.files.only" value="true"/>
-            <param name="database.file" location="${helium.build.dir}/database.xml"/>
-        </antcall>
-        <!--
-        <antform title="login information">
-            <textProperty label="password:" property="noe.password" password="true"/>
-        </antform>
-        
-        <antcall target="upload-docs">
-            <param name="helium.dir" value="."/>
-            <param name="documentation.path.root" value="/var/local/www/helium/doc/${customer}"/>
-        </antcall>
-        -->
-    </target>
-    
-    <!-- Generate documentation from the source code. -->
-    <target name="apidocs" depends="python-apidocs,helium-apidocs,java-apidocs,antdoclet,apidocs-search"/>
-    
-    <!-- Macro to generate html docs from rst. -->
-    <macrodef name="rstMacro" uri="http://www.nokia.com/helium">
-        <attribute name="version" default="${helium.version}"/>
-        <attribute name="src" default="${helium.build.dir}/temp/doc"/>
-        <attribute name="output" default="${helium.build.dir}/doc"/>
-        <sequential>
-            <property name="sphinx.lib.dir" location="${helium.dir}/external/python/lib/common/Sphinx-0.5.1-py2.5.egg/sphinx" />
-            <if>
-                <available file="${nokia.python.tools}/sphinxfixsearch.diff"/>
-                <then>
-                    <patch patchfile="${nokia.python.tools}/sphinxfixsearch.diff" originalfile="${sphinx.lib.dir}/search.py"/>
-                </then>
-            </if>
-            <exec executable="python" failonerror="${failonerror}">        
-                <arg file="${python.dir}/common/sphinx-build.py"/>
-                <arg value="-b" />
-                <arg value="html" />            
-                <arg value="-D" />
-                <arg value="version=@{version}" />
-                <arg value="-D" />
-                <arg value="release=@{version}" />
-                <arg file="@{src}" />
-                <arg file="@{output}" />
-            </exec>
-            <if>
-                <available file="${nokia.python.tools}/sphinxfixsearch.diff"/>
-                <then>
-                    <patch reverse="true" patchfile="${nokia.python.tools}/sphinxfixsearch.diff" originalfile="${sphinx.lib.dir}/search.py"/>
-                </then>
-            </if>
-        </sequential>
-    </macrodef>
+    <target name="helium-apidocs" depends="clean-helium-apidocs,database,
+                    helium-api-dependency-images,helium-api-html-docs"/>
     
-    <!-- Generate rst files for docs -->
-    <target name="prep-textdocs" depends="clean-doc-dir,overview-to-html,tools-rst-table,dependency-diagram,dependency-logs,release-diff,helium-user-graph">
-        <mkdir dir="${helium.build.dir}/doc"/>
-        
-        <delete dir="${helium.build.dir}/doc/.doctrees"/>
-        <delete file="${helium.build.dir}/doc/searchindex.json"/>
-        
-        <copy todir="${helium.build.dir}/doc/images">
-            <fileset dir="${helium.doc.dir}/images"/>
-        </copy>
-
-        <!-- Temporarily copy the image directory so that doc generation will complete happily. -->
-        <copy todir="${helium.build.dir}/temp/doc/images">
-            <fileset dir="${helium.build.dir}/doc/images"/>
-        </copy>
-        <copy todir="${helium.build.dir}/temp/doc">
-            <fileset dir="${helium.doc.dir}/src">
-                <include name="**/*.rst"/>
-                <include name="**/*.css"/>
-                <include name="**/*.jpg"/>
-                <include name="**/*.dot"/>
-            </fileset>
-        </copy>
-        <copy todir="${helium.build.dir}/temp/doc/nokia" failonerror="false">
-            <fileset dir="${nokia.dir}/doc/src">
-                <include name="**/*.rst"/>
-                <include name="**/*.css"/>
-                <include name="**/*.jpg"/>
-            </fileset>
-        </copy>
-        
-        <mkdir dir="${helium.build.dir}/temp/doc/minibuilds"/>
-        <copy todir="${helium.build.dir}/temp/doc/minibuilds" failonerror="false">
-            <fileset dir="${helium.dir}/tests/minibuilds/">
-                <include name="*/doc/**/*"/>
-            </fileset>
-        </copy>
-        
-        <fmpp sourceFile="${helium.doc.dir}/src/quick_start_guide.rst.ftl" outputFile="${helium.build.dir}/temp/doc/quick_start_guide.rst">
-            <data expandProperties="yes">
-                ant: antProperties()
-            </data>            
-        </fmpp>
-        
-        <fileset id="internal.ref.minibuilds" dir="${helium.build.dir}/temp/doc/minibuilds" includes="*/**/index.rst"/>
-        <fmpp sourceFile="${helium.doc.dir}/src/minibuilds.rst.ftl"
-              outputFile="${helium.build.dir}/temp/doc/minibuilds/index.rst">
-            <data expandProperties="yes">
-                project: antProject()
-            </data>            
-        </fmpp>
-        <fmpp sourceFile="${helium.doc.dir}/src/index.rst.ftl" outputFile="${helium.build.dir}/temp/doc/index.rst">
-            <data expandProperties="yes">
-                ant: antProperties()
-            </data>            
-        </fmpp>
-        <fmpp sourceFile="${helium.doc.dir}/src/manual/APIs.rst.ftl" outputFile="${helium.build.dir}/temp/doc/manual/APIs.rst">
-            <data expandProperties="yes">
-                ant: antProperties()
-            </data>            
-        </fmpp>
-        <fmpp sourceFile="${helium.doc.dir}/src/manual/stages.rst.ftl" outputFile="${helium.build.dir}/temp/doc/manual/stages.rst">
-            <data expandProperties="yes">
-                ant: antProperties()
-            </data>            
-        </fmpp>
-        
-        <copy todir="${helium.build.dir}/temp/doc">
-            <fileset dir="${helium.doc.dir}/src">
-                <include name="conf.py"/>
-                <include name=".static"/>
-                <include name=".templates/**"/>
-                <include name="*.jpg"/>
-            </fileset>
-        </copy>
-
-        <!-- Including Helium antlib doc -->
-        <mkdir dir="${helium.build.dir}/temp/doc/helium-antlib"/>
-        <copy todir="${helium.build.dir}/temp/doc/helium-antlib" failonerror="false">
-            <fileset dir="${helium.dir}/external/helium-antlib/doc/src">
-                <include name="**/*.rst"/>
-                <include name="**/*.css"/>
-                <include name="**/*.jpg"/>
-            </fileset>
-        </copy>
-        
-        <for param="dot.file">
-            <fileset dir="${helium.build.dir}/temp/doc/manual" includes="*.dot"/>
-            <sequential>
-                <exec executable="dot">
-                    <arg line="-Tpng @{dot.file} -O"/>
-                </exec>
-            </sequential>
-        </for>
-    </target>
-    
-    <!-- Generate HTML documentation from .rst documents with Sphinx.
-    
-    All doc .rst files should be generated or copied into build/temp/doc before being processed into HTML.    
-    -->
-    <target name="textdocs" depends="prep-textdocs">        
-        <hlm:rstMacro />
-        
-        <copy file="${database.file}" todir="${helium.build.dir}/doc"/>
-        <copy file="${helium.build.dir}/temp/doc/default.css" todir="${helium.build.dir}/doc/_static" overwrite="true"/>
-        <copy file="${helium.build.dir}/temp/doc/helium_pallot_small.jpg" todir="${helium.build.dir}/doc/_static" overwrite="true"/>
-        <copy todir="${helium.build.dir}/doc" overwrite="true">
-            <fileset dir="${helium.doc.dir}/src">
-                <include name="**/*.zip"/>
-            </fileset>
-        </copy>
-    </target>
     
     <!-- Generate search index for apis -->
     <target name="apidocs-search">
@@ -405,7 +119,7 @@
 import os
 import codecs
 #import traceback
-for root, dirs, files in os.walk(r'${helium.build.dir}/doc/api', topdown=False):
+for root, dirs, files in os.walk(r'${docs.build.dir}/api', topdown=False):
     for fname in files:
         if '.html' in fname:
             filename = os.path.abspath(os.path.join(root, fname))
@@ -428,412 +142,157 @@
                 os.remove(rstfilename)
         </hlm:python>
         
-        <move todir="${helium.build.dir}/temp_search/doc" overwrite="true">
-            <fileset dir="${helium.build.dir}/doc/api">
+        <move todir="${docs.build.dir}/temp_search/doc" overwrite="true">
+            <fileset dir="${docs.build.dir}/api">
                 <include name="**/*.rst"/>
             </fileset>
         </move>
         
-        <move todir="${helium.build.dir}/doc/api_backup" overwrite="true">
-            <fileset dir="${helium.build.dir}/doc/api"/>
+        <move todir="${docs.build.dir}/api_backup" overwrite="true">
+            <fileset dir="${docs.build.dir}/api"/>
         </move>
         
-        <copy file="${helium.doc.dir}/src/api/apisearchindex.rst" tofile="${helium.build.dir}/temp_search/doc/index.rst"/>
+        <copy file="${helium.dir}/doc/src/api/apisearchindex.rst" tofile="${docs.build.dir}/temp_search/doc/index.rst"/>
         
-        <copy todir="${helium.build.dir}/temp_search/doc">
-            <fileset dir="${helium.doc.dir}/src">
-                <include name="conf.py"/>
-                <include name=".static"/>
-                <include name=".templates/**"/>
-                <include name="*.jpg"/>
-            </fileset>
+        <copy todir="${docs.build.dir}/temp_search/doc">
+            <fileset refid="static.doc.files"/>
         </copy>
         
-        <hlm:rstMacro src="${helium.build.dir}/temp_search/doc" output="${helium.build.dir}/doc/api"/>
+        <hlm:rstMacro src="${docs.build.dir}/temp_search/doc" output="${docs.build.dir}/api"/>
         
-        <move todir="${helium.build.dir}/doc/api" overwrite="true">
-            <fileset dir="${helium.build.dir}/doc/api_backup"/>
+        <move todir="${docs.build.dir}/api" overwrite="true">
+            <fileset dir="${docs.build.dir}/api_backup"/>
         </move>
     </target>
+
     
-    <!-- Generate all documentation. -->
-    <target name="add-policies-to-docs" unless="env.HLM_SUBCON">
-        <hlm:updatePolicy policy="7" filename="distribution.policy.S60">         
-            <dirset dir="${helium.dir}" includes="${helium.build.dir}/doc/**/*"/>        
-        </hlm:updatePolicy>   
-    </target>
+    <!-- Generate API documentation from the source code. -->
+    <target name="apidocs" depends="helium-apidocs,apidocs-search"/>
     
     
-    <!-- Creates XML and .rst documents describing the difference between
-    this version of Helium and the previous major release. -->
-    <target name="release-diff" depends="database" unless="env.HLM_SUBCON">
-        <mkdir dir="${helium.build.dir}/doc"/>
-        <property name="last.major.release.database.url" value="${documentation.url.root}/${last.major.helium.version}/database.xml"/>
-        <hlm:python>
-import urllib
-import helium.documentation
-
-old_db_file = urllib.urlopen(r'${last.major.release.database.url}')
-writer = helium.documentation.APIDeltaWriter(old_db_file, r'${database.file}')
-writer.write(r'${helium.build.dir}/doc/api_changes.xml')
-        </hlm:python>
-        <fmpp sourceFile="${helium.doc.dir}/src/api_changes.rst.ftl" outputFile="${helium.build.dir}/temp/doc/api_changes.rst">
-            <data expandProperties="yes">
-                doc: xml(${helium.build.dir}/doc/api_changes.xml)
-                old_release: ${last.major.helium.version}
-                new_release: ${helium.version}
-            </data>
-        </fmpp>
-    </target>
-    
-    <!-- Generate docs for Symbian Foundataion -->
-    <target name="docs-sf">
-        <delete dir="${helium.build.dir}"/>
-        <antcall target="helium-subcon-release"/>
-        <unzip src="${helium.build.dir}/helium_${helium.version}_subcon.zip" dest="${helium.build.dir}/helium_${helium.version}_subcon" overwrite="true" />
-        <!---->
-        <exec executable="cmd" dir="${helium.build.dir}/helium_${helium.version}_subcon/helium">
-            <env key="HELIUM_HOME" value="${helium.build.dir}/helium_${helium.version}_subcon/helium"/>
-            <env key="PYTHONPATH" value="${env.PYTHONPATH}"/>
-            <env key="ANT_ARGS" value="${env.ANT_ARGS}"/>
-            <arg line="/C hlm.bat"/>
-            <arg value="docs"/>
-            <arg value="-Dpython.tools=${python.tools}"/>
-            <arg value="-Dsf=true"/>
-        </exec>
-    </target>
-    
-    <!-- generate all the user documentation for helium -->
-    <target name="docs" depends="clean-doc-dir,database,apidocs,textdocs,add-policies-to-docs"/>
-    
-    <!-- Clean old build/doc dir. -->
-    <target name="clean-doc-dir">
-        <delete dir="build/doc"/>
-        <delete dir="build/temp/doc"/>        
-    </target>
-    
-    <!-- Connect to home drive if it is not connected for .netrc file. -->
-    <target name="check-home-drive">
-        <exec executable="cmd">
-            <arg value="/c"/>
-            <arg value="${helium.dir}/tools/common/bin/check_home_drv.bat"/>
-            <arg value=">nul"/>
-        </exec>
-    </target>
-    
-    <!-- Upload generated HTML docs to the Helium server. -->
-    <target name="upload-docs" depends="check-home-drive">
-        <property name="documentation.path" value="${documentation.path.root}"/>
-        <property name="docs.zip" value="${helium.build.dir}/helium-docs.zip"/>
-
-        <!-- Python API docs. -->
-        <delete file="${docs.zip}"/>
-        <zip destfile="${docs.zip}">
-            <fileset dir="${helium.build.dir}/doc" includes="**/*"/>
-        </zip>
-        <sshexec host="${documentation.host}"
-                 username="${user.name}"
-                 keyfile="${env.HOME}/.ssh/id_rsa_openssh.ppk"
-                 trust="true"
-                 command="mkdir -p ${documentation.path}"/>
-        <scp todir="${user.name}@${documentation.host}:${documentation.path}"
-          keyfile="${env.HOME}/.ssh/id_rsa_openssh.ppk"
-          passphrase=""
-          trust="true"
-          sftp="true"
-          file="${docs.zip}"/>
-        <sshexec host="${documentation.host}"
-                 username="${user.name}"
-                 keyfile="${env.HOME}/.ssh/id_rsa_openssh.ppk"
-                 trust="true"
-                 command="cd ${documentation.path}; unzip -u -o helium-docs.zip"/>
-    </target>
+    <!-- Macro to generate HTML docs from rst. -->
+    <macrodef name="rstMacro" uri="http://www.nokia.com/helium">
+        <attribute name="version" default="${helium.version}"/>
+        <attribute name="src" default="${docs.build.dir}/temp/doc"/>
+        <attribute name="output" default="${docs.build.dir}"/>
+        <sequential>
+            <property name="sphinx.lib.dir" location="${helium.dir}/external/python/lib/common/Sphinx-0.5.1-py2.5.egg/sphinx" />
+            <if>
+                <available file="${nokia.python.tools}/sphinxfixsearch.diff"/>
+                <then>
+                    <patch patchfile="${nokia.python.tools}/sphinxfixsearch.diff" originalfile="${sphinx.lib.dir}/search.py"/>
+                </then>
+            </if>
+            <if>
+                <resourcecount when="greater" count="0">
+                    <fileset dir="@{src}" includes="**/*.rst"/>
+                </resourcecount>
+                <then>
+                    <exec executable="python" failonerror="true">        
+                        <arg file="${python.dir}/common/sphinx-build.py"/>
+                        <arg value="-b" />
+                        <arg value="html" />            
+                        <arg value="-D" />
+                        <arg value="version=@{version}" />
+                        <arg value="-D" />
+                        <arg value="release=@{version}" />
+                        <arg file="@{src}" />
+                        <arg file="@{output}" />
+                    </exec>
+                </then>
+            </if>
+            <if>
+                <available file="${nokia.python.tools}/sphinxfixsearch.diff"/>
+                <then>
+                    <patch reverse="true" patchfile="${nokia.python.tools}/sphinxfixsearch.diff" originalfile="${sphinx.lib.dir}/search.py"/>
+                </then>
+            </if>
+        </sequential>
+    </macrodef>
     
     
-    <!-- Upload generated HTML docs to the Helium server. -->
-    <target name="upload-release-docs">
-        <property name="documentation.path" value="${documentation.path.root}/${helium.version}"/>
-        <antcall target="upload-docs"/>
-    </target>
-    
-    
-  <!-- create slides from images -->
-    <target name="slides">
-        <mkdir dir="${helium.build.dir}/slides"/>
-    
-        <copy todir="${helium.build.dir}/slides">
-            <fileset dir="${helium.doc.dir}/slides"/>
+    <!-- Generate rst files for docs -->
+    <target name="prep-textdocs">
+        <echo>Building docs into ${docs.build.dir}.</echo>
+        <mkdir dir="${docs.build.dir}/images"/>
+        
+        <delete dir="${docs.build.dir}/.doctrees"/>
+        <delete file="${docs.build.dir}/searchindex.json"/>
+        
+        <copy todir="${docs.build.dir}/images" failonerror="false">
+            <fileset dir="${doc.src.dir}/images"/>
+        </copy>
+
+        <!-- Temporarily copy the image directory so that doc generation will complete happily.-->
+        <copy todir="${docs.build.dir}/temp/doc/images" failonerror="false">
+            <fileset dir="${docs.build.dir}/images"/>
         </copy>
 
-        <copy todir="${helium.build.dir}/slides/images">
-            <fileset dir="${helium.doc.dir}/slides/images"/>
-        </copy>
-    
-        <for param="document">
-            <fileset dir="${helium.build.dir}/slides" includes="**/*.rst"/>
-            <sequential>
-                <propertyregex property="document.no.ext" input="@{document}" regexp="\.rst$" replace="" override="true"/>
-                <if>
-                    <not>
-                        <uptodate srcfile="@{document}" targetfile="${document.no.ext}.html"/>
-                    </not>
-                    <then>
-                        <echo>Building doc: @{document}</echo>
-                        <exec executable="python" dir="${helium.doc.dir}" failonerror="${failonerror}">
-                            <arg value="${nokia.python.tools}/rst2s5.py"/>
-                            <arg value="@{document}"/>
-                            <arg value="${document.no.ext}.html"/>
-                        </exec>
-                    </then>
-                </if>
-            </sequential>
-        </for>
-    </target>
-
+        <if>
+            <available file="${doc.src.dir}/src"/>
+            <then>
+                <copy todir="${docs.build.dir}/temp/doc">
+                    <fileset dir="${doc.src.dir}/src">
+                        <include name="**/*.rst"/>
+                        <include name="**/*.css"/>
+                        <include name="**/*.jpg"/>
+                        <include name="**/*.dot"/>
+                    </fileset>
+                </copy>
+                
+                <!--<fileset id="internal.ref.minibuilds" dir="${docs.build.dir}/temp/doc/minibuilds" includes="*/**/index.rst"/>-->
+                <fmpp sourceRoot="${doc.src.dir}/src"
+                      outputRoot="${docs.build.dir}/temp/doc" includes="*.rst.ftl" removeExtensions="ftl" excludes="api_changes.rst.ftl,minibuilds.rst.ftl">
+                    <data expandProperties="yes">
+                        ant: antProperties()
+                        project: antProject()
+                    </data>
+                </fmpp>
+            </then>
+        </if>
         
-    <!-- Generate HTML documentation from .rst documents.
-    
-    TODO: Remove this old method. -->
-    <target name="textdocs-old" depends="overview-to-html">
-        <mkdir dir="${helium.build.dir}/doc"/>
-        <copy todir="${helium.build.dir}/doc-old">
-            <fileset dir="${helium.doc.dir}/src" excludes="cover.rst"/>
-            <fileset dir="${nokia.dir}/doc/src"/>
+        <!-- Copy static content files from Helium -->
+        <copy todir="${docs.build.dir}/temp/doc">
+            <fileset refid="static.doc.files"/>
         </copy>
         
-        <copy todir="${helium.build.dir}/doc-old/images">
-            <fileset dir="${helium.doc.dir}/images"/>
-        </copy>
-        
-        <for param="document">
-            <fileset dir="${helium.build.dir}/doc-old">
-                <include name="**/*.rst" />
-                <exclude name="index.rst" /><!-- index.rst is the top-level doc for new-style docs -->
-            </fileset>
+        <for param="dot.file">
+            <fileset dir="${docs.build.dir}/temp/doc" includes="manual/*.dot"/>
             <sequential>
-                <propertyregex property="document.no.ext" input="@{document}" regexp="\.rst$" replace="" override="true"/>
-                <if>
-                    <not>
-                        <uptodate srcfile="@{document}" targetfile="${document.no.ext}.html"/>
-                    </not>
-                    <then>
-                        <echo>Building doc: @{document}</echo>                        
-                        <exec executable="python" dir="${helium.doc.dir}" failonerror="${failonerror}">
-                            <!--<env key="PYTHONPATH" value="${helium.dir}\${python25.lib};tools\common\python\lib"/>-->
-                            <arg value="${nokia.python.tools}\rst2html.py"/>
-                            <arg line="--traceback --no-toc-backlinks"/>
-                            <!-- -stylesheet-path nokia_style.css -->
-                            <arg value="@{document}"/>
-                            <arg value="${document.no.ext}.html"/>
-                        </exec>
-                    </then>
-                </if>
+                <echo>Building dot file: @{dot.file}</echo>
+                <exec executable="dot">
+                    <arg line="-Tpng @{dot.file} -O"/>
+                </exec>
             </sequential>
         </for>
     </target>
     
     
-    <!-- Search Python internal module used in helium -->
-    <target name="find-python-dependencies" depends="database">    
-        <hlm:assertPropertySet property="helium.dir" message="Property helium.dir is not defined." />
-        <hlm:assertPropertySet property="database.file" message="Property database.file is not defined."/>
-        <hlm:python>
-from __future__ import with_statement
-import re
-import os
-import string
-import amara
-import codecs
-import ant
-import docs
+    <!-- Generate HTML documentation from .rst documents with Sphinx.
+    
+    All doc .rst files should be generated or copied into build/temp/doc before being processed into HTML.    
+    -->
+    <target name="textdocs" depends="prep-textdocs">        
+        <hlm:rstMacro />
+        
+        <copy file="${database.file}" todir="${docs.build.dir}"/>
+        <copy file="${docs.build.dir}/temp/doc/default.css" todir="${docs.build.dir}/_static" overwrite="true" failonerror="true"/>
+        <copy file="${docs.build.dir}/temp/doc/helium_pallot_small.jpg" todir="${docs.build.dir}/_static" overwrite="true"/>
+        <copy todir="${docs.build.dir}" overwrite="true">
+            <fileset dir="${doc.src.dir}/src">
+                <include name="**/*.zip"/>
+            </fileset>
+        </copy>
+    </target>
 
-setpath = r'${helium.dir}'+'/tools'
-
-print "Searching under "+setpath
-
-dbPath = r'${database.file}'
-dbPath = 'file:///'+ dbPath.replace('\\','/')
-dbPrj = amara.parse(dbPath)
-
-docs.find_python_dependencies(setpath, dbPath, dbPrj)
-
-file_object = codecs.open(r'${database.file}', 'w', "utf_8")
-file_object.write(dbPrj.xml(indent=u"yes"))
-file_object.close()
-        </hlm:python>
+    
+    <!-- Clean old build/doc dir. -->
+    <target name="clean-docs">
+        <delete dir="${docs.build.dir}"/>
     </target>
     
     
-    <!-- Reads the Java libraries and extracts a list of their versions. -->
-    <target name="library-versions">    
-        <script language="jython" setbeans="false">
-import java.io
-import java.util.jar
-antlibsDir = java.io.File('external/antlibs')
-print antlibsDir
-jarFiles = antlibsDir.listFiles()
-for jar in jarFiles:
-    if jar.getName().endswith('jar'):
-        jarFile = java.util.jar.JarFile(jar)
-        manifest = jarFile.getManifest()
-        attributes = manifest.getMainAttributes()
-        implementationVersion = attributes.getValue('Implementation-Version')
-        print jar.getName() + ': ' + str(implementationVersion)
-        </script>
-    </target>
-    
-    <!-- Generates a subcon dependancy diagram based on Egg and Jars files -->
-    <target name="dependency-diagram-subcon">
-        <fileset id="subcon.jar.files" dir="${helium.dir}">
-            <include name="external/antlibs/*.jar"/>
-            <include name="external/jep/**/*.jar"/>
-            <include name="external/helium-antlib/bin/**/*.jar"/>
-            <include name="tools/**/*.jar"/>
-        </fileset>
-        <antcall target="dependency-diagram">
-            <reference refid="subcon.jar.files" torefid="jar.files"/>
-            <param name="python.exclude.dir" value="${helium.dir}\external\python\lib\2.5\internal"/>
-            <param name="dependency.grph" value="${helium.build.dir}/doc/images/dependencies_subcon.grph"/>
-            <param name="subcon" value="true"/>
-        </antcall>
-    </target>
-    
-    <fileset id="jar.files" dir="${helium.dir}">
-        <include name="external/antlibs/**/*.jar"/>
-        <include name="external/jep/**/*.jar"/>
-        <include name="external/helium-antlib/**/*.jar"/>
-        <include name="tools/**/*.jar"/>
-        <include name="extensions/nokia/external/antlibs/**/*.jar"/>
-    </fileset>
-    
-    <!-- Generates a dependancy diagram based on Egg and Jars files -->
-    <target name="dependency-diagram">
-        <mkdir dir="${helium.build.dir}/doc/images"/>
-        <mkdir dir="${temp.build.dir}"/>
-        <property name="dependency.grph" value="${helium.build.dir}/doc/images/dependencies.grph"/>
-        
-        <!---->
-        <copy todir="${temp.build.dir}/dependencylibs" flatten="true">
-            <fileset refid="jar.files"/>
-        </copy>
-        
-        <hlm:antdependency outputFile="${temp.build.dir}/antdependencies.grph">
-            <fileset dir="${temp.build.dir}/dependencylibs" includes="*.jar"/>
-        </hlm:antdependency>
-        
-        <taskdef name="jaranalyzer" classname="com.kirkk.analyzer.textui.JarAnalyzerTask"/>
-        <jaranalyzer srcdir="${temp.build.dir}/dependencylibs" destfile="${dependency.grph}" summaryclass="com.kirkk.analyzer.textui.DOTSummary"/>
-        
-        <loadfile srcfile="${temp.build.dir}/antdependencies.grph" property="antdependencies"/>
-        <replace file="${dependency.grph}" token="}" value="${antdependencies}}"/>
-        
-        <antcall target="dependency-grouping"/>
-        
-        <exec executable="dot">
-            <arg line="-Tpng -Grankdir=LR -Nshape=box -Nfontsize=9 -Nwidth=0.3 -Nheight=0.2 ${dependency.grph} -O"/>
-        </exec>
-        
-        <delete dir="${temp.build.dir}/dependencylibs"/>
-        
-    </target>
-    
-    <!-- Private: -->
-    <target name="dependency-grouping">
-        <property name="dependency.grph" value="${helium.build.dir}/doc/images/dependencies.grph"/>
-        <mkdir dir="${helium.build.dir}/doc/images"/>
-        <property name="python.internal.dir" value="${nokia.dir}\external\python\lib\2.5"/>
-        <property name="subcon" value=""/>
-        <property name="ivy.xml.file" value="${helium.dir}/config/ivy/ivy.xml"/>
-        <hlm:python>
-import os
-import dependancygraph
-
-dependancygraph.createGraph(r'${ivy.xml.file}', r'${dependency.grph}', r'${python.dir}', r'${python.internal.dir}', r'${subcon}')
-        </hlm:python>
-        <!--
-        <exec executable="dot">
-            <arg line="-Tpng -Grankdir=LR -Nshape=box -Nfontsize=9 -Nwidth=0.3 -Nheight=0.2 ${dependency.egg.grph} -O"/>
-        </exec>
-        -->
-    </target>
-    
-    <!-- Generates a dependancy diagram of ant projects to helium external files -->
-    <target name="dependency-external">
-        <property name="dependency.external.grph" value="${helium.build.dir}/doc/images/dependencies_external.grph"/>
-        <copy file="${database.file}" tofile="${database.file}.parsed" overwrite="true">
-            <filterchain>
-                <expandproperties/>
-            </filterchain>
-        </copy>
-        <hlm:python>
-import os
-import dependancygraph
-
-dependancygraph.externalDependancies(r'${database.file}.parsed', r'${dependency.external.grph}')
-        </hlm:python>
-        <!---->
-        <exec executable="dot">
-            <arg line="-Tpng -Grankdir=LR -Nshape=box -Nfontsize=9 -Nwidth=0.3 -Nheight=0.2 ${dependency.external.grph} -O"/>
-        </exec>
-        
-    </target>
-    
-    <!-- Private: Convert db file -->
-    <target name="dependency-db-convert" depends="database">
-        <copy file="${database.file}" tofile="${database.file}.parsed" overwrite="true">
-            <filterchain>
-                <expandproperties/>
-            </filterchain>
-        </copy>
-    </target>
-    
-    <!-- Generates a dependancy diagram of log files -->
-    <target name="dependency-logs">
-        <property name="dependency.external.grph" value="${helium.build.dir}/doc/images/dependencies_log.grph"/>
-        
-        <antcall target="dependency-db-convert" inheritAll="false">
-            <param name="build.drive" value="build.drive"/>
-            <param name="build.id" value="build.id"/>
-            <param name="build.log.dir" value="/output/logs"/>
-        </antcall>
-        
-        <hlm:python>
-import os
-import dependancygraph
-
-dependancygraph.findLogFiles(r'${database.file}.parsed', r'${dependency.external.grph}')
-        </hlm:python>
-        <!---->
-        <exec executable="dot">
-            <arg line="-Tpng -Grankdir=LR -Nshape=box -Nfontsize=9 -Nwidth=0.3 -Nheight=0.2 ${dependency.external.grph} -O"/>
-        </exec>
-        
-    </target>
-    
-
-    <!-- Creates user flow diagram -->
-    <target name="helium-user-graph">
-        <mkdir dir="${helium.build.dir}/doc/api"/>
-        <fmpp sourcefile="${helium.doc.dir}/src/user-graph.dot.ftl" outputfile="${helium.build.dir}/temp/doc/user-graph.dot">
-            <data expandProperties="yes">
-              ant: antProperties()
-            </data>
-        </fmpp>
-        <for param="dot.file">
-            <fileset dir="${helium.build.dir}/temp/doc" includes="user-graph.dot"/>
-            <sequential>
-                <echo>Processing dot file: @{dot.file}</echo>
-                <exec executable="dot" dir="${helium.build.dir}/temp/doc/">
-                    <arg line="-Tcmap @{dot.file} -O"/>
-                </exec>
-                <exec executable="dot" dir="${helium.build.dir}/doc/api">
-                    <arg line="-Tpng @{dot.file} -O"/>
-                </exec>
-            </sequential>
-        </for>
-        <move todir="${helium.build.dir}/doc/images" overwrite="true">
-            <fileset dir="${helium.build.dir}/temp/doc" includes="user-graph.dot.png"/>
-        </move>
-    </target>
+    <!-- generate all the user documentation for helium -->
+    <target name="docs" depends="clean-docs,apidocs,textdocs"/>
 
 </project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/tools/common/helium_docs.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,618 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : helium-docs.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:
+
+============================================================================
+-->
+<!--* @package framework -->
+<project name="internal.helium.docs" xmlns:hlm="http://www.nokia.com/helium" xmlns:ivy="antlib:org.apache.ivy.ant">
+    <description>
+    Documentation generation targets specific to Helium.
+    </description>
+    
+    <!-- Location of documentation source that is specific to Helium.
+    @type string
+    @scope private
+    -->
+    <property name="helium.doc.src.dir" location="${helium.dir}/doc" />
+    
+    <!-- Generate an overview of Helium as HTML tables. -->
+    <target name="overview-to-html">
+        <fmpp sourceFile="${helium.doc.src.dir}/src/helium_overview.html.ftl"
+              outputFile="${docs.build.dir}/temp/doc/helium_overview.html"
+              replaceExtension="html.ftl, html" expert="true">
+            <data expandProperties="yes">
+                doc: xml(${helium.doc.src.dir}/src/helium_overview.xml)
+            </data>
+        </fmpp>
+    </target>
+
+    
+    <!-- Macro to generate the tools dependency xml output. -->
+    <macrodef name="createToolsTableMacro" uri="http://www.nokia.com/helium">
+        <attribute name="dir"/>
+        <attribute name="failonerror"/>
+        <attribute name="configs"/>
+        <sequential>
+            <ivy:configure file="${tools.ivy.config.file}" override="true"/>
+            <ivy:resolve file="${helium.dir}/config/ivy/ivy.xml" conf="@{configs}" haltonfailure="@{failonerror}"/>
+            <ivy:report todir="@{dir}" outputpattern="tool-dependencies-[conf].xml"
+                        conf="@{configs}" xml="true" graph="false" xsl="false"/>
+        </sequential>
+    </macrodef>
+
+    
+    <!-- Generates the tools dependency xml output. used in the retrieving Helium section to
+    list the tools used within Helium. -->
+    <target name="tools-rst-table">
+        <hlm:createToolsTableMacro dir="${docs.build.dir}/ivy" failonerror="false" 
+            configs="core,ido"/>
+        <fmpp sourceFile="${helium.doc.src.dir}/src/manual/tool-dependencies.rst.ftl" includes="*.dot.ftl"
+              outputFile="${docs.build.dir}/temp/doc/nokia/tool-dependencies.rst_include"
+              replaceExtension="dot.ftl, dot">
+            <data expandProperties="yes">
+                doc: xml(${docs.build.dir}/ivy/tool-dependencies-ido.xml)
+            </data>
+        </fmpp>
+    </target>
+    
+    
+    <!-- Create a complete dependency graph of Helium libraries. 
+        
+    Currently this does not work correctly but it is useful for future testing of repreport. -->
+    <target name="libraries-dependencies">
+        <ivy:settings file="${tools.ivy.config.file}"/>
+        <!--<ivy:resolve file="${helium.dir}/config/ivy/ivy.xml" conf="" haltonfailure="false"/>-->
+        <delete file="@{dir}/ivy-repository-report.xml"/>
+        <ivy:repreport todir="${docs.build.dir}/ivy" organisation="S60_SAM"
+                    xml="true" graph="false" xsl="false"/>
+        <!--<fmpp sourceFile="${doc.src.dir}/src/manual/tool-dependencies.rst.ftl" includes="*.dot.ftl"
+              outputFile="${docs.build.dir}/temp/doc/manual/tool-dependencies.rst_include"
+              replaceExtension="dot.ftl, dot">
+            <data expandProperties="yes">
+                doc: xml(${docs.build.dir}/doc/ivy/tool-dependencies-ido.xml)
+            </data>
+        </fmpp>-->
+    </target>
+
+    
+    <!-- Generate Python API documentation using epydoc. -->
+    <target name="python-apidocs">
+        <mkdir dir="${docs.build.dir}/api/python"/>
+        <pathconvert pathsep=" " property="epydoc.python.modules.path">
+            <fileset refid="python.library.files"/>
+        </pathconvert>
+        <echo>Python modules path: ${epydoc.python.modules.path}</echo>
+        <exec executable="python" dir="${docs.build.dir}" failonerror="true">        
+            <arg line="${python.tools}/epydoc"/>
+            <arg value="-v"/>
+            <arg value="--config=${helium.dir}/config/epydoc.conf"/>
+            <arg value="--exclude=sgmllib"/>
+            <arg line="${epydoc.python.modules.path}"/>
+        </exec>
+    </target>
+    
+    
+    <!-- Generate Java API documentation using javadoc. -->
+    <target name="java-apidocs" depends="install-cruisecontrol">
+        <path id="classpath-javadoc">
+            <fileset dir="${helium.dir}/external/CruiseControl/lib" includes="*.jar"/>
+            <fileset dir="${helium.dir}/external" includes="**/*.jar"/>
+            <pathelement path="${helium.dir}/external/CruiseControl/webapps/dashboard/WEB-INF/classes"/>
+        </path>
+        <javadoc classpathref="classpath-javadoc" 
+            destdir="${docs.build.dir}/api/java" useexternalfile="true">
+            <packageset dir="tools/common/java/src" defaultexcludes="yes"/>
+            <packageset dir="tools/common/java/test" defaultexcludes="yes"/>
+            <doctitle><![CDATA[<h1>API Documentation</h1>]]></doctitle>
+        </javadoc>
+    </target>
+    
+    
+    <!-- Generate Ant API documentation using antdoclet. -->
+    <target name="antdoclet">
+        <path id="doclet-classpath">
+            <pathelement path="${java.class.path}/"/>
+            <pathelement path="${helium.dir}/external/CruiseControl/webapps/dashboard/WEB-INF/classes"/>
+        </path>
+        <mkdir dir="${docs.build.dir}/api/ant"/>
+
+        <!-- First copy the "static" resources (images, static html files) -->
+        <copy todir="${docs.build.dir}/api/ant" overwrite="true">
+            <fileset dir="${helium.dir}/doc/src/antdoclet/html">
+                <exclude name="*.vm"/>
+            </fileset>
+        </copy>
+      
+        <!-- Now invoke AntDoclet to generate the "dynamic" content from the templates -->
+        <javadoc access="private" sourcepath="${helium.dir}/tools/common/java/src/"
+                 destdir="${docs.build.dir}/api/ant"
+                 packagenames="com.nokia.ant,com.nokia.ant.filters,com.nokia.ant.types.imaker,com.nokia.ant.types,com.nokia.ant.listerner,com.nokia.ant.taskdefs,com.nokia.ant.taskdefs.ccm.commands,com.nokia.cruisecontrol,com.nokia.cruisecontrol.sourcecontrol,com.nokia.fmpp,nokia.ivy"
+                 docletpathref="doclet-classpath" source="1.6"
+                 useexternalfile="true">
+            <doclet name="com.neuroning.antdoclet.AntDoclet">
+                <param name="-doctitle" value="${build.name}" />
+                <param name="-templatesdir" value="${doc.src.dir}/src/antdoclet/html"/>
+                <param name="-templates" value="main.vm"/>
+            </doclet>
+        </javadoc>
+        <move file="velocity.log" tofile="build/velocity.log" failonerror="false"/>
+    </target>
+
+        
+    <!-- Builds the Helium API documentation. -->
+    <target name="helium-apidocs" depends="clean-helium-apidocs,database,
+                    find-python-dependencies,helium-api-dependency-images,helium-api-html-docs"/>
+    
+    
+    <target name="helium-prep-textdocs">
+        <copy todir="${docs.build.dir}/temp/doc/nokia" failonerror="false">
+            <fileset dir="${nokia.dir}/doc/src">
+                <include name="**/*.rst"/>
+                <include name="**/*.css"/>
+                <include name="**/*.jpg"/>
+            </fileset>
+        </copy>
+        
+        <mkdir dir="${docs.build.dir}/temp/doc/minibuilds"/>
+        <copy todir="${docs.build.dir}/temp/doc/minibuilds" failonerror="false">
+            <fileset dir="${helium.dir}/tests/minibuilds/">
+                <include name="*/doc/**/*"/>
+            </fileset>
+        </copy>
+
+        <!-- Including Helium antlib doc -->
+        <mkdir dir="${docs.build.dir}/temp/doc/helium-antlib"/>
+        <copy todir="${docs.build.dir}/temp/doc/helium-antlib" failonerror="false" flatten="true">
+            <fileset dir="${helium.dir}/external/helium-antlib">
+                <include name="**/*.rst"/>
+                <include name="**/*.css"/>
+                <include name="**/*.jpg"/>
+            </fileset>
+        </copy>
+    </target>
+    
+        
+    <!-- Generate all documentation. -->
+    <target name="add-policies-to-docs" unless="env.HLM_SUBCON">
+        <hlm:updatePolicy policy="7" filename="distribution.policy.S60">         
+            <dirset dir="${helium.dir}" includes="${docs.build.dir}/**/*"/>        
+        </hlm:updatePolicy>   
+    </target>
+    
+    
+    <!-- Creates XML and .rst documents describing the difference between
+    this version of Helium and the previous major release. -->
+    <target name="release-diff" depends="database" unless="env.HLM_SUBCON">
+        <mkdir dir="${docs.build.dir}"/>
+        <!-- URL for the database.xml of last major release
+        @type string
+        @scope private
+        -->
+        <property name="last.major.release.database.url" value="${documentation.url.root}/${last.major.helium.version}/database.xml"/>
+        <hlm:python>
+import urllib
+import helium.documentation
+
+old_db_file = urllib.urlopen(r'${last.major.release.database.url}')
+writer = helium.documentation.APIDeltaWriter(old_db_file, r'${database.file}')
+writer.write(r'${docs.build.dir}/api_changes.xml')
+        </hlm:python>
+        <if>
+            <available file="${docs.build.dir}/api_changes.xml"/>
+            <then>
+                <fmpp sourceFile="${helium.doc.src.dir}/src/api_changes.rst.ftl" outputFile="${docs.build.dir}/temp/doc/api_changes.rst">
+                    <data expandProperties="yes">
+                        doc: xml(${docs.build.dir}/api_changes.xml)
+                        old_release: ${last.major.helium.version}
+                        new_release: ${helium.version}
+                    </data>
+                </fmpp>
+            </then>
+        </if>
+    </target>
+    
+    
+    <!-- Generate docs for Symbian Foundataion -->
+    <target name="docs-sf">
+        <delete dir="${docs.build.dir}"/>
+        <antcall target="helium-subcon-release"/>
+        <unzip src="${docs.build.dir}/helium_${helium.version}_subcon.zip" dest="${docs.build.dir}/helium_${helium.version}_subcon" overwrite="true" />
+        <!---->
+        <exec executable="cmd" dir="${docs.build.dir}/helium_${helium.version}_subcon/helium">
+            <env key="HELIUM_HOME" value="${docs.build.dir}/helium_${helium.version}_subcon/helium"/>
+            <env key="PYTHONPATH" value="${env.PYTHONPATH}"/>
+            <env key="ANT_ARGS" value="${env.ANT_ARGS}"/>
+            <arg line="/C hlm.bat"/>
+            <arg value="docs"/>
+            <arg value="-Dpython.tools=${python.tools}"/>
+            <arg value="-Dsf=true"/>
+        </exec>
+    </target>
+    
+    
+    <!-- Clean old build/doc dir. -->
+    <target name="clean-doc-dir">
+        <delete dir="build/doc"/>
+        <delete dir="build/temp/doc"/>        
+    </target>
+    
+    
+    <!-- Connect to home drive if it is not connected for .netrc file. -->
+    <target name="check-home-drive">
+        <exec executable="cmd">
+            <arg value="/c"/>
+            <arg value="${helium.dir}/tools/common/bin/check_home_drv.bat"/>
+            <arg value=">nul"/>
+        </exec>
+    </target>
+    
+    
+    <!-- Upload generated HTML docs to the Helium server. -->
+    <target name="upload-docs" depends="check-home-drive">
+        <!-- The full path on the host server where the Helium documentation is stored.
+        @type string
+        @scope private
+        -->
+        <property name="documentation.path" value="${documentation.path.root}"/>
+        <property name="docs.zip" value="${docs.build.dir}/helium-docs.zip"/>
+
+        <!-- Python API docs. -->
+        <delete file="${docs.zip}"/>
+        <zip destfile="${docs.zip}">
+            <fileset dir="${docs.build.dir}" includes="**/*"/>
+        </zip>
+        <sshexec host="${documentation.host}"
+                 username="${user.name}"
+                 keyfile="${env.HOME}/.ssh/id_rsa_openssh.ppk"
+                 trust="true"
+                 command="mkdir -p ${documentation.path}"/>
+        <scp todir="${user.name}@${documentation.host}:${documentation.path}"
+          keyfile="${env.HOME}/.ssh/id_rsa_openssh.ppk"
+          passphrase=""
+          trust="true"
+          sftp="true"
+          file="${docs.zip}"/>
+        <sshexec host="${documentation.host}"
+                 username="${user.name}"
+                 keyfile="${env.HOME}/.ssh/id_rsa_openssh.ppk"
+                 trust="true"
+                 command="cd ${documentation.path}; unzip -u -o helium-docs.zip; chmod -R 777 ."/>
+    </target>
+    
+    
+    <!-- Upload generated HTML docs to the Helium server. -->
+    <target name="upload-release-docs">
+        <!-- The full path on the host server where the Helium documentation is stored.
+        @type string
+        @scope private
+        -->
+        <property name="documentation.path" value="${documentation.path.root}/${helium.version}"/>
+        <antcall target="upload-docs"/>
+    </target>
+    
+    
+    <!-- create slides from images -->
+    <target name="slides">
+        <mkdir dir="${docs.build.dir}/slides"/>
+    
+        <copy todir="${docs.build.dir}/slides">
+            <fileset dir="${doc.src.dir}/slides"/>
+        </copy>
+
+        <copy todir="${docs.build.dir}/slides/images">
+            <fileset dir="${doc.src.dir}/slides/images"/>
+        </copy>
+    
+        <for param="document">
+            <fileset dir="${docs.build.dir}/slides" includes="**/*.rst"/>
+            <sequential>
+                <propertyregex property="document.no.ext" input="@{document}" regexp="\.rst$" replace="" override="true"/>
+                <if>
+                    <not>
+                        <uptodate srcfile="@{document}" targetfile="${document.no.ext}.html"/>
+                    </not>
+                    <then>
+                        <echo>Building doc: @{document}</echo>
+                        <exec executable="python" dir="${doc.src.dir}" failonerror="${failonerror}">
+                            <arg value="${nokia.python.tools}/rst2s5.py"/>
+                            <arg value="@{document}"/>
+                            <arg value="${document.no.ext}.html"/>
+                        </exec>
+                    </then>
+                </if>
+            </sequential>
+        </for>
+    </target>
+
+        
+    <!-- Generate HTML documentation from .rst documents. Used for DP
+    
+    TODO: Refactor to just have one target. -->
+    <target name="textdocs-old" depends="overview-to-html">
+        <mkdir dir="${docs.build.dir}"/>
+        <copy todir="${docs.build.dir}-old">
+            <fileset dir="${doc.src.dir}/src" excludes="cover.rst"/>
+            <fileset dir="${nokia.dir}/doc/src"/>
+        </copy>
+        
+        <copy todir="${docs.build.dir}-old/images">
+            <fileset dir="${doc.src.dir}/images"/>
+        </copy>
+        
+        <for param="document">
+            <fileset dir="${docs.build.dir}-old">
+                <include name="**/*.rst" />
+                <exclude name="index.rst" /><!-- index.rst is the top-level doc for new-style docs -->
+            </fileset>
+            <sequential>
+                <propertyregex property="document.no.ext" input="@{document}" regexp="\.rst$" replace="" override="true"/>
+                <if>
+                    <not>
+                        <uptodate srcfile="@{document}" targetfile="${document.no.ext}.html"/>
+                    </not>
+                    <then>
+                        <echo>Building doc: @{document}</echo>                        
+                        <exec executable="python" dir="${doc.src.dir}" failonerror="${failonerror}">
+                            <!--<env key="PYTHONPATH" value="${helium.dir}\${python25.lib};tools\common\python\lib"/>-->
+                            <arg value="${nokia.python.tools}\rst2html.py"/>
+                            <arg line="--traceback --no-toc-backlinks"/>
+                            <!-- -stylesheet-path nokia_style.css -->
+                            <arg value="@{document}"/>
+                            <arg value="${document.no.ext}.html"/>
+                        </exec>
+                    </then>
+                </if>
+            </sequential>
+        </for>
+    </target>
+    
+    
+    <!-- Search Python internal module used in helium -->
+    <target name="find-python-dependencies" depends="database">    
+        <hlm:assertPropertySet property="helium.dir" message="Property helium.dir is not defined." />
+        <hlm:assertPropertySet property="database.file" message="Property database.file is not defined."/>
+        <hlm:python failonerror="true">
+import re
+import os
+import amara
+import codecs
+import ant
+import docs
+
+setpath = r'${helium.dir}'+'/tools'
+
+print "Searching under "+setpath
+
+dbPath = r'${database.file}'
+dbPath = 'file:///'+ dbPath.replace('\\','/')
+dbPrj = amara.parse(dbPath)
+
+docs.find_python_dependencies(setpath, dbPath, dbPrj)
+
+file_object = codecs.open(r'${database.file}', 'w', "utf_8")
+file_object.write(dbPrj.xml(indent=u"yes"))
+file_object.close()
+        </hlm:python>
+    </target>
+    
+    
+    <!-- Reads the Java libraries and extracts a list of their versions. -->
+    <target name="library-versions">    
+        <script language="jython" setbeans="false">
+import java.io
+import java.util.jar
+antlibsDir = java.io.File('external/antlibs')
+print antlibsDir
+jarFiles = antlibsDir.listFiles()
+for jar in jarFiles:
+    if jar.getName().endswith('jar'):
+        jarFile = java.util.jar.JarFile(jar)
+        manifest = jarFile.getManifest()
+        attributes = manifest.getMainAttributes()
+        implementationVersion = attributes.getValue('Implementation-Version')
+        print jar.getName() + ': ' + str(implementationVersion)
+        </script>
+    </target>
+    
+    
+    <!-- Generates a subcon dependancy diagram based on Egg and Jars files -->
+    <target name="dependency-diagram-subcon">
+        <fileset id="subcon.jar.files" dir="${helium.dir}">
+            <include name="external/antlibs/*.jar"/>
+            <include name="external/jep/**/*.jar"/>
+            <include name="external/helium-antlib/bin/**/*.jar"/>
+            <include name="tools/**/*.jar"/>
+        </fileset>
+        <antcall target="dependency-diagram">
+            <reference refid="subcon.jar.files" torefid="jar.files"/>
+            <param name="python.exclude.dir" value="${helium.dir}\external\python\lib\2.5\internal"/>
+            <param name="dependency.grph" value="${docs.build.dir}/images/dependencies_subcon.grph"/>
+            <param name="subcon" value="true"/>
+        </antcall>
+    </target>
+    
+    
+    <fileset id="jar.files" dir="${helium.dir}">
+        <include name="external/antlibs/**/*.jar"/>
+        <include name="external/jep/**/*.jar"/>
+        <include name="external/helium-antlib/**/*.jar"/>
+        <include name="tools/**/*.jar"/>
+        <include name="extensions/nokia/external/antlibs/**/*.jar"/>
+    </fileset>
+    
+    
+    <!-- Generates a dependancy diagram based on Egg and Jars files -->
+    <target name="dependency-diagram">
+        <mkdir dir="${docs.build.dir}/images"/>
+        <mkdir dir="${temp.build.dir}"/>
+        <!-- Location of dependency.grph
+        @type string
+        @scope private
+        -->
+        <property name="dependency.grph" value="${docs.build.dir}/images/dependencies.grph"/>
+        
+        <!---->
+        <copy todir="${temp.build.dir}/dependencylibs" flatten="true">
+            <fileset refid="jar.files"/>
+        </copy>
+        
+        <hlm:antdependency outputFile="${temp.build.dir}/antdependencies.grph">
+            <fileset dir="${temp.build.dir}/dependencylibs" includes="*.jar"/>
+        </hlm:antdependency>
+        
+        <taskdef name="jaranalyzer" classname="com.kirkk.analyzer.textui.JarAnalyzerTask"/>
+        <jaranalyzer srcdir="${temp.build.dir}/dependencylibs" destfile="${dependency.grph}" summaryclass="com.kirkk.analyzer.textui.DOTSummary"/>
+        
+        <loadfile srcfile="${temp.build.dir}/antdependencies.grph" property="antdependencies"/>
+        <replace file="${dependency.grph}" token="}" value="${antdependencies}}"/>
+        
+        <antcall target="dependency-grouping"/>
+        
+        <exec executable="dot">
+            <arg line="-Tpng -Grankdir=LR -Nshape=box -Nfontsize=9 -Nwidth=0.3 -Nheight=0.2 ${dependency.grph} -O"/>
+        </exec>
+        
+        <delete dir="${temp.build.dir}/dependencylibs"/>
+    </target>
+    
+    
+    <!-- @scope private -->
+    <target name="dependency-grouping">
+        <!-- Location of dependency.grph
+        @type string
+        @scope private
+        -->
+        <property name="dependency.grph" value="${docs.build.dir}/images/dependencies.grph"/>
+        <mkdir dir="${docs.build.dir}/images"/>
+        <!-- Location of nokia internal python library
+        @type string
+        -->
+        <property name="python.internal.dir" value="${nokia.dir}\external\python\lib\2.5"/>
+        <!-- subcon
+        @type string
+        -->
+        <property name="subcon" value=""/>
+        <!-- Ivy configuration file
+        @type string
+        @scope private
+        -->
+        <property name="ivy.xml.file" value="${helium.dir}/config/ivy/ivy.xml"/>
+        <hlm:python>
+import os
+import dependancygraph
+
+dependancygraph.createGraph(r'${ivy.xml.file}', r'${dependency.grph}', r'${python.dir}', r'${python.internal.dir}', r'${subcon}')
+        </hlm:python>
+        <!--
+        <exec executable="dot">
+            <arg line="-Tpng -Grankdir=LR -Nshape=box -Nfontsize=9 -Nwidth=0.3 -Nheight=0.2 ${dependency.egg.grph} -O"/>
+        </exec>
+        -->
+    </target>
+    
+    
+    <!-- Generates a dependancy diagram of ant projects to helium external files -->
+    <target name="dependency-external">
+        <!-- Location of dependencies_external.grph
+        @type string
+        @scope private
+        -->
+        <property name="dependency.external.grph" value="${docs.build.dir}/images/dependencies_external.grph"/>
+        <copy file="${database.file}" tofile="${database.file}.parsed" overwrite="true">
+            <filterchain>
+                <expandproperties/>
+            </filterchain>
+        </copy>
+        <hlm:python>
+import os
+import dependancygraph
+
+dependancygraph.externalDependancies(r'${database.file}.parsed', r'${dependency.external.grph}')
+        </hlm:python>
+        <!---->
+        <exec executable="dot">
+            <arg line="-Tpng -Grankdir=LR -Nshape=box -Nfontsize=9 -Nwidth=0.3 -Nheight=0.2 ${dependency.external.grph} -O"/>
+        </exec>
+    </target>
+    
+    
+    <!-- Convert db file. @scope private-->
+    <target name="dependency-db-convert" depends="database">
+        <copy file="${database.file}" tofile="${database.file}.parsed" overwrite="true">
+            <filterchain>
+                <expandproperties/>
+            </filterchain>
+        </copy>
+    </target>
+    
+    
+    <!-- Generates a dependancy diagram of log files -->
+    <target name="dependency-logs">
+        <!-- Location of dependencies_external.grph
+        @type string
+        @scope private
+        -->
+        <property name="dependency.external.grph" value="${docs.build.dir}/images/dependencies_log.grph"/>
+        
+        <antcall target="dependency-db-convert" inheritAll="false">
+            <param name="build.drive" value="build.drive"/>
+            <param name="build.id" value="build.id"/>
+            <param name="build.log.dir" value="/output/logs"/>
+        </antcall>
+        
+        <hlm:python>
+import os
+import dependancygraph
+
+dependancygraph.findLogFiles(r'${database.file}.parsed', r'${dependency.external.grph}')
+        </hlm:python>
+        <!---->
+        <exec executable="dot">
+            <arg line="-Tpng -Grankdir=LR -Nshape=box -Nfontsize=9 -Nwidth=0.3 -Nheight=0.2 ${dependency.external.grph} -O"/>
+        </exec>
+    </target>
+    
+
+    <!-- Creates user flow diagram -->
+    <target name="helium-user-graph">
+        <mkdir dir="${docs.build.dir}/api"/>
+        <fmpp sourcefile="${helium.dir}/doc/src/user-graph.dot.ftl" outputfile="${docs.build.dir}/temp/doc/user-graph.dot">
+            <data expandProperties="yes">
+              ant: antProperties()
+            </data>
+        </fmpp>
+        <for param="dot.file">
+            <fileset dir="${docs.build.dir}/temp/doc" includes="user-graph.dot"/>
+            <sequential>
+                <echo>Processing dot file: @{dot.file}</echo>
+                <exec executable="dot" dir="${docs.build.dir}/temp/doc/">
+                    <arg line="-Tcmap @{dot.file} -O"/>
+                </exec>
+                <exec executable="dot" dir="${docs.build.dir}/api">
+                    <arg line="-Tpng @{dot.file} -O"/>
+                </exec>
+            </sequential>
+        </for>
+        <move todir="${docs.build.dir}/images" overwrite="true">
+            <fileset dir="${docs.build.dir}/temp/doc" includes="user-graph.dot.png"/>
+        </move>
+    </target>
+
+</project>
Binary file buildframework/helium/tools/common/java/lib/nokia_ant.jar has changed
--- a/buildframework/helium/tools/common/java/src/com/nokia/ant/Database.java	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/common/java/src/com/nokia/ant/Database.java	Thu Mar 04 15:10:37 2010 +0200
@@ -156,9 +156,8 @@
         SAXReader xmlReader = new SAXReader();
         Document antDoc = xmlReader.read(new File(antFile));
 
-        XPath xpath = DocumentHelper.createXPath("//hlm:signalConfig");
+        XPath xpath = DocumentHelper.createXPath("//hlm:signalListenerConfig");
         xpath.setNamespaceURIs(map);
-
         List signalNodes = xpath.selectNodes(antDoc);
         for (Iterator iterator = signalNodes.iterator(); iterator.hasNext();)
         {
@@ -166,24 +165,6 @@
             Element propertyNode = (Element) iterator.next();
             String signalid = propertyNode.attributeValue("id");
 
-            String signaltarget = signalName(signalid, signaldoc);
-            List existinglist = globalSignalList.get(signaltarget);
-            String failbuild = signalType(signalid, signaldoc);
-            if (existinglist == null)
-                existinglist = new ArrayList<String>();
-            existinglist.add(signalid + "," + failbuild);
-            globalSignalList.put(signaltarget, existinglist);
-        }
-
-        xpath = DocumentHelper.createXPath("//hlm:signalListenerConfig");
-        xpath.setNamespaceURIs(map);
-        signalNodes = xpath.selectNodes(antDoc);
-        for (Iterator iterator = signalNodes.iterator(); iterator.hasNext();)
-        {
-            signaldoc = antDoc;
-            Element propertyNode = (Element) iterator.next();
-            String signalid = propertyNode.attributeValue("id");
-
             String signaltarget = propertyNode.attributeValue("target");
             List existinglist = globalSignalList.get(signaltarget);
             String failbuild = signalType(signalid, signaldoc);
@@ -194,23 +175,9 @@
         }
     }
 
-    private String signalName(String signalid, Document antDoc)
-    {
-        XPath xpath = DocumentHelper.createXPath("//hlm:signalConfig[@id='" + signalid + "']/hlm:targetCondition");
-        xpath.setNamespaceURIs(map);
-        List signalNodes2 = xpath.selectNodes(antDoc);
-
-        for (Iterator iterator2 = signalNodes2.iterator(); iterator2.hasNext();)
-        {
-            Element propertyNode2 = (Element) iterator2.next();
-            return propertyNode2.attributeValue("name");
-        }
-        return null;
-    }
-
     private String signalType(String signalid, Document antDoc)
     {
-        XPath xpath2 = DocumentHelper.createXPath("//hlm:signalConfig[@id='" + signalid + "']/hlm:inputRef|//hlm:signalListenerConfig[@id='" + signalid + "']/signalNotifierInput/signalInput");
+        XPath xpath2 = DocumentHelper.createXPath("//hlm:signalListenerConfig[@id='" + signalid + "']/signalNotifierInput/signalInput");
         xpath2.setNamespaceURIs(map);
         List signalNodes3 = xpath2.selectNodes(antDoc);
 
--- a/buildframework/helium/tools/common/java/src/com/nokia/ant/HeliumLogger.java	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/common/java/src/com/nokia/ant/HeliumLogger.java	Thu Mar 04 15:10:37 2010 +0200
@@ -18,21 +18,15 @@
 package com.nokia.ant;
 
 import java.io.File;
-import java.io.FileOutputStream;
-import java.io.DataOutputStream;
 import java.io.PrintStream;
 import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.concurrent.TimeUnit;
-import java.util.Hashtable;
-import java.util.ArrayList;
 import java.util.Calendar;
 
-import org.apache.tools.ant.BuildEvent;
-import org.apache.tools.ant.Project;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.tools.ant.BuildEvent;
 import org.apache.tools.ant.DefaultLogger;
+import org.apache.tools.ant.Project;
 
 /**
  * Logger class that can connect to Ant and log information regarding to build
@@ -52,47 +46,15 @@
 
     private static boolean stopLogToConsole;
 
-    private Date endOfPreviousTarget;
-
     private Project project;
-
     private Log log = LogFactory.getLog(HeliumLogger.class);
 
-    private boolean isInitialized;
-
-    private String directory;
-
-    private SimpleDateFormat timeFormat;
-
-    private Date buildStartTime;
-
-    private Date buildEndTime;
-
-    private Date targetStartTime;
-
-    private ArrayList<String> targetTable;
-
-    private Hashtable tempStartTime;
-
-    private StringBuffer allStages;
 
     /**
      * Ant call this function when bjuild start.
      */
     public void buildStarted(BuildEvent event) {
         project = event.getProject();
-
-        // Record build start time
-        endOfPreviousTarget = new Date();
-        buildStartTime = new Date();
-        endOfPreviousTarget = new Date();
-
-        targetTable = new ArrayList<String>();
-        tempStartTime = new Hashtable();
-
-        // For Stage start time
-        allStages = new StringBuffer("\t<stages>");
-
         super.buildStarted(event);
     }
 
@@ -100,24 +62,31 @@
      * Triggered when a target starts.
      */
     public void targetStarted(BuildEvent event) {
+        /** The "if" condition to test on execution. */
+        String ifCondition = "";
+        /** The "unless" condition to test on execution. */
+        String unlessCondition = "";
         String targetName = event.getTarget().getName();
-        targetStartTime = new Date();
-
         logTargetEvent(targetName, "start");
 
-        if (!isInitialized) {
-            initializeLogger();
-        }
-        if (isInitialized) {
-            // Record the target start time
-            tempStartTime.put(targetName, new Date());
+        /**get the values needed from the event **/
+        ifCondition = event.getTarget().getIf();
+        unlessCondition = event.getTarget().getUnless();
+        project = event.getProject();
+
+        super.targetStarted(event);
+
+        /**if the target is not going to execute (due to 'if' or 'unless' conditions) 
+        print a message telling the user why it is not going to execute**/
+        if (!testIfCondition(ifCondition) && ifCondition != null) {
+            project.log("Skipped because property '"
+                + project.replaceProperties(ifCondition)
+                + "' not set.", Project.MSG_INFO);
+        } else if (!testUnlessCondition(unlessCondition) && unlessCondition != null) {
+            project.log("Skipped because property '"
+                + project.replaceProperties(unlessCondition)
+                + "' set.", Project.MSG_INFO);
         }
-        super.targetStarted(event);
-    }
-
-    private void initializeLogger() {
-        directory = project.getProperty("build.log.dir");
-        isInitialized = true;
     }
 
     /**
@@ -145,44 +114,15 @@
         String targetName = time + "," + event.getTarget().getName();
 
         logTargetEvent(targetName, "finish");
-        logTargetTime(targetName);
-    }
-
-    private void logTargetTime(String targetName) {
-        Date targetFinishTime = new Date();
-        long targetLengthMSecs = targetFinishTime.getTime()
-                - targetStartTime.getTime();
-        Long outputSecs = TimeUnit.MILLISECONDS.toSeconds(targetLengthMSecs);
-        targetTable.add(targetName + "," + outputSecs.toString());
     }
 
     /**
      * Triggered when the build finishes.
      */
     public void buildFinished(BuildEvent event) {
-        if (isInitialized) {
-            if (directory != null && new File(directory).exists()) {
-                try {
-                    // Log target times to file
-                    String timesLogFileName = directory + File.separator + project.getProperty("build.id") + "_targetTimesLog.csv";
-                    File timesLogFile = new File(timesLogFileName);
-
-                    FileOutputStream timesLogFileStream = new FileOutputStream(
-                            timesLogFileName, true);
-                    DataOutputStream timesLogOut = new DataOutputStream(
-                            timesLogFileStream);
-                    // Display (sorted) hashtable.
-                    for (String s : targetTable)
-                        timesLogOut.writeBytes(s + "\n");
-                    timesLogOut.close();
-                } catch (Exception ex) {
-                    // We are Ignoring the errors as no need to fail the build.
-                    log.fatal("Exception has occurred", ex);
-                    ex.printStackTrace();
-                }
-            }
-            cleanup();
-        }
+        // re-enabling output of messages at the end of the build
+        stopLogToConsole = false;
+        cleanup();
         super.buildFinished(event);
     }
 
@@ -227,4 +167,35 @@
             stream.println(message);
         }
     }
+    
+    /**
+     * Tests whether or not the "if" condition is satisfied.
+     *
+     * @return whether or not the "if" condition is satisfied. If no
+     *         condition (or an empty condition) has been set,
+     *         <code>true</code> is returned.
+     */
+    private boolean testIfCondition(String ifCondition) {
+        if ("".equals(ifCondition)) {
+            return true;
+        }
+
+        String test = project.replaceProperties(ifCondition);
+        return project.getProperty(test) != null;
+    }
+
+    /**
+     * Tests whether or not the "unless" condition is satisfied.
+     *
+     * @return whether or not the "unless" condition is satisfied. If no
+     *         condition (or an empty condition) has been set,
+     *         <code>true</code> is returned.
+     */
+    private boolean testUnlessCondition(String unlessCondition) {
+        if ("".equals(unlessCondition)) {
+            return true;
+        }
+        String test = project.replaceProperties(unlessCondition);
+        return project.getProperty(test) == null;
+    }
 }
--- a/buildframework/helium/tools/common/java/src/com/nokia/ant/antlib.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/common/java/src/com/nokia/ant/antlib.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -23,36 +23,21 @@
 <antlib>
    
     <taskdef name="antdependency" classname="com.nokia.ant.taskdefs.AntDependencyTask"/>
-    <taskdef name="antlint" classname="com.nokia.ant.taskdefs.AntLintTask"/>
     <taskdef name="ccm" classname="com.nokia.ant.taskdefs.CcmTask" onerror="report"/>
     <taskdef name="configuration" classname="com.nokia.ant.taskdefs.AntConfigurationTask"/>
     <taskdef name="coveragerecord" classname="com.nokia.ant.taskdefs.CoverageRecorderTask"/>
-    <taskdef name="database" classname="com.nokia.ant.taskdefs.DatabaseTask"/>
     <taskdef name="deconfigure" classname="com.nokia.ant.taskdefs.DeconfigureTask"/>
     <taskdef name="fastcopy" classname="com.nokia.ant.taskdefs.CopyParallelTask"/>
-    <!-- <taskdef name="getVariableValue" classname="com.nokia.ant.taskdefs.GetValueFromVariableSet"/> -->
     <taskdef name="logrecord" classname="com.nokia.ant.taskdefs.LogRecorderTask"/>
     <taskdef name="logtoconsole" classname="com.nokia.ant.taskdefs.StopLogToConsole"/>
     <taskdef name="parsemodel" classname="com.nokia.ant.taskdefs.ModelPropertiesTask"/>
-    <taskdef name="python" classname="com.nokia.ant.taskdefs.PythonTask"/>
+    
     <taskdef name="rebaseline" classname="com.nokia.ant.taskdefs.RebaselineTask"/>
-    <taskdef name="hlmassertmessage" classname="com.nokia.ant.taskdefs.HlmAssertMessage"/>
-    <taskdef name="retry" classname="com.nokia.ant.taskdefs.RetryTask"/>
     <taskdef name="rebaseanddeconf" classname="com.nokia.ant.taskdefs.RBTTask"/>
-    <typedef name="ldap" classname="com.nokia.ant.taskdefs.LDAP" />
-    
-    <!-- <typedef name="arg" classname="com.nokia.ant.types.Variable"/> -->
-    <!-- <typedef name="cmdVar" classname="com.nokia.ant.types.Variable"/> -->
-    <!-- <typedef name="makeOption" classname="com.nokia.ant.types.Variable"/> -->
-    
-    <!-- <typedef name="argSet" classname="com.nokia.ant.types.VariableSet"/> --> 
-    <!-- <typedef name="cmdVarSet" classname="com.nokia.ant.types.VariableSet"/> -->
-    
+        
     <typedef name="logfilter" classname="com.nokia.ant.types.LogFilter"/> 
     <typedef name="logfilterset" classname="com.nokia.ant.types.LogFilterSet"/>
     
-    <typedef name="prettyprintxml" classname="com.nokia.ant.filters.PrettyPrintXmlFilter"/>
-    <!-- <typedef name="sbsMakeOptions" classname="com.nokia.ant.types.SBSMakeOptions"/> -->
     <typedef name="session" classname="com.nokia.ant.types.ccm.Session"/> 
     <typedef name="sessionset" classname="com.nokia.ant.types.ccm.SessionSet"/> 
     <typedef name="typedef" classname="com.nokia.ant.TypedefURIFix"/>
--- a/buildframework/helium/tools/common/java/src/com/nokia/ant/filters/PrettyPrintXmlFilter.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,79 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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: 
-*
-*/
- 
-package com.nokia.ant.filters;
-
-import java.io.StringWriter;
-
-import org.apache.tools.ant.filters.TokenFilter;
-import org.dom4j.Document;
-import org.dom4j.DocumentHelper;
-import org.dom4j.io.OutputFormat;
-import org.dom4j.io.XMLWriter;
-/**
- * Prints xml file in pretty format.
- *
- */
-public class PrettyPrintXmlFilter implements TokenFilter.Filter
-{
-    public PrettyPrintXmlFilter()
-    {
-    
-    }
-
-    public String filter(String token)
-    {
-        if (token.length() == 0)
-        {
-            return token;
-        }
-        try
-        {
-//            DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
-//            DocumentBuilder builder = docFactory.newDocumentBuilder();
-//            Document doc = builder.parse(new InputSource(new StringReader(token)));
-//            TransformerFactory tfactory = TransformerFactory.newInstance();
-//            Transformer serializer;
-//
-//            StringWriter out = new StringWriter();
-//            serializer = tfactory.newTransformer();
-//            
-//            // Configure to pretty-print the XML
-//            serializer.setOutputProperty(OutputKeys.INDENT, "yes");
-//            serializer.setOutputProperty(OutputKeys.METHOD, "xml");
-//            serializer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
-//
-//            serializer.transform(new DOMSource(doc), new StreamResult(out));
-//            result = out.toString();
-            
-            Document doc = DocumentHelper.parseText(token);
-            StringWriter out = new StringWriter();
-            OutputFormat format = OutputFormat.createPrettyPrint();
-            format.setIndentSize(4);
-            XMLWriter writer = new XMLWriter( out, format );
-            writer.write(doc);
-            writer.close();
-            return out.toString();
-        }
-        catch (Exception e)
-        {
-            e.printStackTrace();
-            throw new RuntimeException(e);
-        }
-    }
-
-}
--- a/buildframework/helium/tools/common/java/src/com/nokia/ant/listener/internaldata/AssertNode.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,95 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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: 
-*
-*/
- 
-package com.nokia.ant.listener.internaldata;
-
-import com.nokia.ant.taskdefs.HlmAssertMessage;
-/**
- * Object to set end time for a task.
- *
- */
-public class AssertNode extends DataNode {
-
-    private String name;
-    
-    
-    // location
-    private String filename;
-    private String message;
-    private int line = -1;
-    private String assertName;
-    
-     public AssertNode(DataNode parent, HlmAssertMessage task) {
-        super(parent, task);
-        name = task.getTaskName();
-        this.setFilename(task.getLocation().getFileName());
-        this.setLine(task.getLocation().getLineNumber());
-        message = task.getMessage();
-        assertName = task.getAssertName();
-    }
-    /**
-     * Return the assert message
-     * @return
-     */
-     public String getMessage() {
-        return message;
-    }
-    /**
-     * Return the assert task name.
-     * @return
-     */
-    public String getName() {
-        return name;
-    } 
-    /**
-     * Return the assert name.
-     * @return
-     */
-    public String getAssertName() 
-    {
-        return assertName;
-    }
-    /**
-     * Return the path to file name.
-     * @return
-     */
-    public String getFilename() {
-        return filename;
-    }
-    /**
-     * Sets the path to file name.
-     * @param filename
-     */
-    public void setFilename(String filename) {
-        this.filename = filename;
-    }
-    /**
-     * Return the line number.
-     * @return
-     */
-    public int getLine() {
-        return line;
-    }
-    /**
-     * Sets the line number.
-     * @param line
-     */
-    public void setLine(int line) {
-        this.line = line;
-    }
-
-}
--- a/buildframework/helium/tools/common/java/src/com/nokia/ant/listener/internaldata/BuildNode.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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: 
-*
-*/
-
-package com.nokia.ant.listener.internaldata;
-
-import org.apache.tools.ant.Project;
-/**
- * Keeps data for a build node.
- *
- */
-public class BuildNode extends DataNode {
-    
-    private boolean successful = true;
-    private String name;
-    
-    public BuildNode(DataNode parent, Project project) {
-        super(parent, project);
-        name = project.getName();
-    }
-
-    public String getName() {
-        if (name != null)
-            return name;
-        return "build";
-    } 
-
-    public boolean getSuccessful() {
-        return successful;
-    }
-
-    public void setSuccessful(boolean successful) {
-        this.successful = successful;
-    }
-
-}
--- a/buildframework/helium/tools/common/java/src/com/nokia/ant/listener/internaldata/DataNode.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,171 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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: 
-*
-*/
-
-package com.nokia.ant.listener.internaldata;
-import java.util.Iterator;
-import java.util.Vector;
-import java.util.Date;
-
-/**
- * Data node object to iterate, keep timing, name, maintain parallel tasks for the node. 
- *
- */
-public abstract class DataNode {
-
-    // Job number management
-    private static long commonJobId;
-    private long jobId = commonJobId++;
-    // Parent node
-    private DataNode parent;
-    
-    // children nodes.
-    private Vector<DataNode> children = new Vector<DataNode>();
-    
-    
-    
-    // Statistics about the time.
-    private Date startTime;
-    private Date endTime;
-
-    // Get the thread id. this is important for parallel tasks.
-    private long threadId = Thread.currentThread().getId();
-    
-    // reference for the data.
-    private Object reference; 
-    
-    public DataNode(DataNode parent, Object reference) {
-        this.parent = parent;
-        if (parent != null) {
-            parent.add(this);
-        }
-        this.setStartTime(new Date());
-        this.setReference(reference);
-    }
-    
-    /**
-     * Method used to register a child to it's parent.
-     * @param child, the child to register.
-     */
-    public void add(DataNode child) {
-        children.add(child);
-    }
-
-    /**
-     * Return an iterator on this node children
-     * @return the iterator
-     */
-    public Iterator<DataNode> iterator() {
-        return children.iterator();
-    }
-
-    /**
-     * Method used to remove a node from it's parent
-     * @param child, the child to remove.
-     */
-    public void remove(DataNode child) {
-        children.remove(child);
-    }
-
-    /**
-     * Is the node containing any children.
-     * @return true is the node is empty
-     */
-    public boolean isEmpty() {
-        return children.isEmpty();
-    }
-    
-    /**
-     * Returns the parent node, or null if the root.
-     * @return a DataNode.
-     */
-    public DataNode getParent() {
-        return parent;
-    }
-
-    public Date getStartTime() {
-        return startTime;
-    }
-
-    public void setStartTime(Date startTime) {
-        this.startTime = startTime;
-    }
-
-    /**
-     * Make is reliable: if end time doesn't exists let's use the start time.
-     */
-    public Date getEndTime() {
-        if (endTime != null)
-            return endTime;
-        else
-            return this.getStartTime();
-    }
-
-    public void setEndTime(Date endTime) {
-        this.endTime = endTime;
-    }
-    
-    /**
-     * Return the thread where the class has been created under.
-     * @return thread id as a long.
-     */
-    public long getThreadId() {
-        return this.threadId;
-    }
-
-    public Object getReference() {
-        return reference;
-    }
-
-    public void setReference(Object reference) {
-        this.reference = reference;
-    }
-    
-    public long getJobId() {
-        return jobId;
-    }
-
-    /**
-     * Find a node using its reference.
-     * @param reference object
-     * @return
-     */
-    public DataNode find(Object reference) {
-        if (this.reference == reference)
-            return this;        
-        for (Iterator<DataNode> i = children.iterator() ; i.hasNext() ; ) {
-            DataNode node = i.next();
-            DataNode result = node.find(reference);
-            if (result != null)
-                return result;
-        }
-        return null;
-    }
-    
-
-    /**
-     * Name of the node. 
-     * @return name of the node (e.g target name for targets)
-     */
-    public abstract String getName();
-    
-    /**
-     * Default string representation.
-     */
-    public String toString() {
-        return getName();
-    }
-}
--- a/buildframework/helium/tools/common/java/src/com/nokia/ant/listener/internaldata/EmailDataSender.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,157 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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: 
-*
-*/
-
-package com.nokia.ant.listener.internaldata;
-
-import java.util.Properties;
-import java.util.Hashtable;
-import java.util.zip.GZIPOutputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import javax.mail.*;
-import javax.mail.internet.*;
-import javax.naming.*;
-import javax.naming.directory.*;
-
-import javax.activation.DataHandler;
-import javax.mail.util.ByteArrayDataSource;
-import org.apache.log4j.Logger;
-
-/**
- * Sends email of the internal data log in a zipped format.
- *
- */
-public class EmailDataSender {
-
-    
-    // The target address
-    public static final String TO_EMAIL = "helium.internaldata@nokia.com";
-    
-    // LDAP config
-    public static final String LDAP_URL = "ldap://nedi.europe.nokia.com:389/o=Nokia";
-
-    // Default SMTP server
-    public static final String SMTP_SERVER = "smtp.nokia.com";
-    
-    // Configured smtp server address
-    private String smtpServer;
-    // Logger
-    private Logger log = Logger.getLogger(EmailDataSender.class);
-    
-    /**
-     * Set the smtp server address.
-     */
-    public void setSMTPServer(String address) {
-        smtpServer = address;
-    }
-
-    /**
-     * Get the smtp server address.
-     */
-    public String getSMTPServer() {
-        if (smtpServer != null)
-            return smtpServer;
-        return SMTP_SERVER;
-    }
-    
-    /**
-     * Sending the XML data through email.
-     */
-    public void sendData(String data) {
-        try {
-            String email = getUserEmail();
-            Properties props = new Properties();
-            props.setProperty("mail.smtp.host", getSMTPServer());
-
-            Session mailSession = Session.getDefaultInstance(props, null);
-
-            MimeMessage message = new MimeMessage(mailSession);
-            message.setSubject("[HELIUM]: internal data");
-            
-            MimeMultipart multipart = new MimeMultipart("related");
-            
-            // first part  (the text html content)
-            BodyPart messageBodyPart = new MimeBodyPart();
-            String htmlText = "<H1>Internal data</H1>";
-            messageBodyPart.setContent(htmlText, "text/html");
-            multipart.addBodyPart(messageBodyPart); // add to the multipart
-
-            // second part (the data)
-            messageBodyPart = new MimeBodyPart();
-            ByteArrayDataSource dataSrc = gzip(data, "data.xml");
-            messageBodyPart.setFileName(dataSrc.getName());
-            messageBodyPart.setDataHandler(new DataHandler(dataSrc));
-            messageBodyPart.setHeader("Content-ID","<data>");
-            
-            multipart.addBodyPart(messageBodyPart); // add to the multipart
-            
-            message.setContent(multipart);
-            message.setFrom(new InternetAddress(email));
-            message.addRecipient(Message.RecipientType.TO, new InternetAddress(TO_EMAIL));
-            
-            log.debug("Sending data.");
-            Transport.send(message);
-        } catch (Exception e) {
-            // We are Ignoring the errors as no need to fail the build.
-            log.debug("Internal data failure: " + e.getMessage(), e);
-        }        
-    }
-
-    /**
-     * GZipping a string.
-     * @param data the content to be gzipped.
-     * @param filename the name for the file.
-     * @return a ByteArrayDataSource.
-     */
-    protected ByteArrayDataSource gzip(String data, String filename) throws IOException {
-        ByteArrayOutputStream out = new ByteArrayOutputStream();
-        GZIPOutputStream gz = new GZIPOutputStream(out);
-        gz.write(data.getBytes());
-        gz.close();
-        out.close();
-        ByteArrayDataSource dataSrc = new ByteArrayDataSource(out.toByteArray(), "application/x-gzip");
-        dataSrc.setName(filename + ".gz");
-        return dataSrc;
-    }
-
-    /**
-     * Getting user email.
-     * @returns the user email.
-     */
-    protected String getUserEmail() throws Exception {
-        String username = System.getProperty("user.name");
-
-        // Set up environment for creating initial context
-        Hashtable env = new Hashtable(11);
-        env.put(Context.INITIAL_CONTEXT_FACTORY,
-                "com.sun.jndi.ldap.LdapCtxFactory");
-        env.put(Context.PROVIDER_URL, LDAP_URL);
-
-        // Create initial context
-        DirContext ctx = new InitialDirContext(env);
-        SearchControls controls = new SearchControls();
-        controls.setSearchScope(SearchControls.SUBTREE_SCOPE);
-        NamingEnumeration en = ctx.search("", "uid=" + username, controls);
-        if (en.hasMore()) {
-            SearchResult sr = (SearchResult) en.next();
-            String email = (String) sr.getAttributes().get("mail").get();
-            return email;
-        }
-        throw new Exception("Could not find user email in LDAP.");
-    }
-
-}
--- a/buildframework/helium/tools/common/java/src/com/nokia/ant/listener/internaldata/EndLessStack.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,95 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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: 
-*
-*/
-
-package com.nokia.ant.listener.internaldata;
-
-import java.util.Stack;
-/**
- * Object to keep the elements in a stack, it supports both pop and peek (return element is kept in the stack).
- * 
- */
-public class EndLessStack<E> extends Stack<E> {
-    public static final long serialVersionUID = -1L;
-    private E defaultElement;
-    
-    /**
-     * Create a stack with a defaultElement as the default element.
-     */
-    public EndLessStack(E defaultElement) {
-        super();
-        this.defaultElement = defaultElement;
-    }
-
-    /**
-     * Create a stack with a null default element.
-     */
-    public EndLessStack() {
-        super();
-        this.defaultElement = null;
-    }
-
-    /**
-     * This return the top most element out from the stack.
-     * If the stack is empty it returns the defaultElement.
-     * @return element 
-     */
-    public E pop() {
-        E element = super.pop();
-        if (element != null)
-            return element;
-        return defaultElement;
-    }
-    
-    /** 
-     * Endless stack is never empty. 
-     */
-    public boolean empty() {
-        return false;
-    }
-    
-    /**
-     * This return the top most element from the stack.
-     * If the stack is empty it returns the defaultElement.
-     * The return element is kept in the stack.
-     * @return element 
-     */
-    public E peek() {
-        if (!super.empty()) {
-            E element = super.peek();
-            return element;
-        }
-        return defaultElement;
-    }
-
-    /**
-     * Get default element.
-     * This is the object which will get returned if the internal stack gets empty.
-     * @return element 
-     */
-    public Object getDefaultElement() {
-        return defaultElement;
-    }
-
-    /**
-     * Set default element.
-     * @return element 
-     */
-    public void setDefaultElement(E defaultElement) {
-        this.defaultElement = defaultElement;
-    }
-    
-}
--- a/buildframework/helium/tools/common/java/src/com/nokia/ant/listener/internaldata/Listener.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,220 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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: 
-*
-*/
- 
-package com.nokia.ant.listener.internaldata;
-
-import java.util.Hashtable;
-import java.util.Date;
-import com.nokia.ant.Database;
-import com.nokia.ant.taskdefs.HlmAssertMessage;
-import org.apache.tools.ant.BuildEvent;
-import org.apache.tools.ant.BuildListener;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.SubBuildListener;
-import org.dom4j.Document;
-import org.apache.log4j.Logger;
-import java.lang.management.ManagementFactory;
-import java.lang.management.MemoryMXBean;
-import java.lang.management.MemoryUsage;
-
-/**
- * Listener class for the Logger.
- *
- */
-public class Listener implements BuildListener, SubBuildListener {
-
-    // Logger for listener
-    private Logger log;
-        
-    // Database logging
-    private boolean sendDatabase = true;
-    
-    // Root node.
-    private BuildNode buildNode;
-    
-    // Ant build Stack. Useful to associate with current parent.
-    private EndLessStack<DataNode> buildEventStack = new EndLessStack<DataNode>();
-    
-    // default list of properties to extract.
-    private String[] propList = {"os.name", "user.name", "build.name", "build.number", "build.id", "build.family", "build.system", "env.NUMBER_OF_PROCESSORS", "helium.version", "env.SYMSEE_VERSION", "diamonds.build.id"};
-
-    // Memory bean 
-    private MemoryMXBean mbean;
-    
-    public Listener() {
-        log = Logger.getLogger(Listener.class);
-        mbean = ManagementFactory.getMemoryMXBean();
-    }
-    
-    /**
-     * Method to call to trigger the data sending.
-     */
-    public void sendData(String smtpServer, BuildEvent event) {
-        if (buildNode != null) {
-            Document database = null;
-            if (sendDatabase) {
-                try {
-                    Database antDB = new Database((Project)buildNode.getReference(), null, null);
-                    database = antDB.createDOM();
-                } catch (Exception e) {
-                    // We are Ignoring the errors as no need to fail the build.
-                    log.debug("Error: couldn't generate Ant DB.", e);
-                    database = null;
-                }
-            }
-            //TreeDumper dumper = new TreeDumper(buildNode);
-            //dumper.dump();
-            try {
-                log.debug("Creating the XML log.");
-                XMLRenderer writer = new XMLRenderer(buildNode, database, this.extractProperties(), event);
-                EmailDataSender sender = new EmailDataSender();
-                // Setting the server address.
-                sender.setSMTPServer(smtpServer);
-                log.debug("Sending the data.");
-                String xml = writer.toString();
-                log.debug(xml);
-                sender.sendData(xml);
-            } catch (Exception e) {
-                // We are Ignoring the errors as no need to fail the build.
-                log.debug("Error: error generating the InterData database XML.", e);
-            }
-        }
-    }
-
-    
-    
-    /**
-     * Extracting properties from the build.
-     * @return a hashtable containing relevant properties and their value.
-     */
-    private Hashtable<String, String> extractProperties() {
-        Hashtable<String, String> properties = new Hashtable<String, String>();
-        if (buildNode != null) {
-            Project project = (Project)buildNode.getReference();
-            Hashtable<String, String> projProps = project.getProperties();
-            for (int i = 0; i < propList.length; i++) {
-                if (projProps.containsKey(propList[i])) {
-                    properties.put(propList[i], projProps.get(propList[i]));
-                }
-            }
-        }
-        return properties;
-    }
-    
-    //-------------------------------------------------------------
-    //
-    // Implementing BuildListener and SubBuildListener interface
-    //
-    //-------------------------------------------------------------
-    public synchronized void buildFinished(BuildEvent event) {
-        log.debug("buildFinished");
-        if (buildNode != null) {
-            BuildNode node = (BuildNode)buildNode.find(event.getProject());
-            if (node != null) {
-                node.setEndTime(new Date());
-                node.setSuccessful(event.getException() == null);
-            }
-        }
-        String smtpServer = event.getProject().getProperty("email.smtp.server");
-        this.sendData(smtpServer, event);
-    }
-
-    public synchronized void buildStarted(BuildEvent event) {
-        if (buildNode == null) {
-            // Create data node for a build
-            buildNode = new BuildNode(null, event.getProject());
-            // Garbage collector for execution. 
-            buildEventStack.setDefaultElement(buildNode);
-        }
-    }
-
-    public synchronized void subBuildFinished(BuildEvent event) {
-        if (buildNode != null) {
-            BuildNode node = (BuildNode)buildNode.find(event.getProject());
-            if (node != null) {
-                node.setEndTime(new Date());
-                node.setReference(null);
-                node.setSuccessful(event.getException() == null);
-            } else {
-                log.debug("subBuildFinished - could not find subbuild.");
-            }
-            buildEventStack.pop();
-        }
-    }
-
-    public synchronized void subBuildStarted(BuildEvent event) {
-        DataNode parentNode = buildEventStack.peek();
-        if (parentNode != null) {
-            BuildNode node = new BuildNode(parentNode, event.getProject());
-            buildEventStack.push(node);
-        }
-    }
-
-    public void messageLogged(BuildEvent event) {
-        // Ignoring message logging.
-    }
-
-    public synchronized void targetFinished(BuildEvent event) {
-        if (buildNode != null) {
-            DataNode node = buildNode.find(event.getTarget());
-            if (node != null) {
-                node.setEndTime(new Date());
-                MemoryUsage mem = mbean.getHeapMemoryUsage();
-                TargetNode tnode = (TargetNode)node;
-                tnode.setEndUsedHeap(mem.getUsed());
-                tnode.setEndCommittedHeap(mem.getCommitted());
-                node.setReference(null);
-            } else {
-                log.debug("targetFinished - could not find target.");
-            }
-            buildEventStack.pop();
-        }
-    }
-
-    public synchronized void targetStarted(BuildEvent event) {
-        DataNode parentNode = buildEventStack.peek();
-        if (parentNode != null) {
-            TargetNode node = new TargetNode(parentNode, event.getTarget());
-            MemoryUsage mem = mbean.getHeapMemoryUsage();
-            node.setStartUsedHeap(mem.getUsed());
-            node.setStartCommittedHeap(mem.getCommitted());
-            buildEventStack.push(node);
-        } else {
-            log.debug("targetStarted - could not find parent.");
-        }
-    }
-
-    public synchronized void taskFinished(BuildEvent event) {
-        // Ignoring task information
-    }
-
-    public synchronized void taskStarted(BuildEvent event) {
-        // Ignoring task information
-    }
-    
-    public void addAssertTask(HlmAssertMessage assertTask) { 
-        if (buildNode != null) {
-            DataNode parentNode = buildNode.find(assertTask.getOwningTarget());
-            if (parentNode != null) {
-                new AssertNode(parentNode, assertTask);
-            } else {
-                new AssertNode(buildEventStack.peek(), assertTask);
-            }
-        }
-        
-    }
-}
\ No newline at end of file
--- a/buildframework/helium/tools/common/java/src/com/nokia/ant/listener/internaldata/TargetNode.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,98 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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: 
-*
-*/
-
-package com.nokia.ant.listener.internaldata;
-
-import org.apache.tools.ant.Target;
-/**
- * Object to keep trace for memory usage, based on start heap and end heap of a target.
- *
- */
-public class TargetNode extends DataNode {
-
-    private String name;
-
-    // location
-    private String filename;
-    private int line = -1;
-    
-    // Memory usage
-    private long startUsedHeap;
-    private long startCommittedHeap;
-    private long endUsedHeap;
-    private long endCommittedHeap;
-    
-    public TargetNode(DataNode parent, Target target) {
-        super(parent, target);
-        this.setFilename(target.getLocation().getFileName());
-        this.setLine(target.getLocation().getLineNumber());        
-        name = target.getName();
-    }
-
-    public String getName() {
-        return name;
-    } 
-
-    public String getFilename() {
-        return filename;
-    }
-
-    public void setFilename(String filename) {
-        this.filename = filename;
-    }
-
-    public int getLine() {
-        return line;
-    }
-
-    public void setLine(int line) {
-        this.line = line;
-    }
-
-    public long getStartUsedHeap() {
-        return startUsedHeap;
-    }
-
-    public void setStartUsedHeap(long startUsedHeap) {
-        this.startUsedHeap = startUsedHeap;
-    }
-
-    public long getStartCommittedHeap() {
-        return startCommittedHeap;
-    }
-
-    public void setStartCommittedHeap(long startCommittedHeap) {
-        this.startCommittedHeap = startCommittedHeap;
-    }
-
-    public long getEndUsedHeap() {
-        return endUsedHeap;
-    }
-
-    public void setEndUsedHeap(long endUsedHeap) {
-        this.endUsedHeap = endUsedHeap;
-    }
-
-    public long getEndCommittedHeap() {
-        return endCommittedHeap;
-    }
-
-    public void setEndCommittedHeap(long endCommittedHeap) {
-        this.endCommittedHeap = endCommittedHeap;
-    }
-    
-}
--- a/buildframework/helium/tools/common/java/src/com/nokia/ant/listener/internaldata/TreeDumper.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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: 
-*
-*/
- 
-package com.nokia.ant.listener.internaldata;
-
-import java.util.Iterator;
-/**
- * Helper class to fix indentation of the xml.
- *
- */
-public class TreeDumper {
-    
-    private DataNode rootNode;
-    
-    public TreeDumper(DataNode root) {
-        this.rootNode = root;
-    }
-    
-    public void dump() {
-        dump(rootNode, "");
-    }
-
-    public void dump(DataNode root, String indent) {
-        System.out.println(indent + " + " + root);
-        for (Iterator<DataNode> i = root.iterator(); i.hasNext() ;) {
-            DataNode node = i.next();
-            dump(node, indent + "   ");
-        }
-    }
-
-}
--- a/buildframework/helium/tools/common/java/src/com/nokia/ant/listener/internaldata/XMLRenderer.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,235 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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: 
-*
-*/
-
-package com.nokia.ant.listener.internaldata;
-
-import java.util.Iterator;
-import java.util.Vector;
-import java.util.Hashtable;
-import java.util.Enumeration;
-import java.io.ByteArrayOutputStream;
-
-import org.dom4j.Document;
-import org.dom4j.DocumentHelper;
-import org.dom4j.Element;
-import org.dom4j.io.XMLWriter;
-import org.dom4j.io.OutputFormat;
-
-import org.apache.tools.ant.BuildEvent;
-/**
- * This xml render object does the following - 
- * Generates target only for TargetNode type of node
- * Creates the targets section.
- * Generates task only for TargetNode type of node
- * Creates the task section.
- * Creates execution tree recursively, visiting the DataNodes.
- * Creates the execution tree section.
- * Creates the property section.
- * Renders the build node into XML string. 
- */
-public class XMLRenderer {
-
-    // Dump of properties
-    private Hashtable<String, String> properties;
-    // the toplevel node.
-    private BuildNode root;
-    // Helium content database. 
-    private Document database;
-    
-    // Deps hashes: helper to remove duplicates.
-    private Vector<String> targetList = new Vector<String>();
-    private Vector<String> assertList = new Vector<String>();
-    
-    public XMLRenderer(BuildNode root, Document database, Hashtable<String, String> properties, BuildEvent event) {
-        this.root = root; 
-        this.database = database;
-        this.properties = properties;
-    }
-
-    /**
-     * Generating target only for TargetNode type of node
-     * @param node
-     * @param targets
-     */
-    protected void createTarget(DataNode node, Element targets) {
-        if (node instanceof TargetNode) {
-            TargetNode targetNode = (TargetNode)node;            
-            if (!targetList.contains(targetNode.getName() + targetNode.getFilename())) {
-                targetList.add(targetNode.getName() + targetNode.getFilename());
-                Element target = targets.addElement("target");
-                target.addAttribute("id", "target@" + targetList.indexOf(targetNode.getName() + targetNode.getFilename()));
-                target.addAttribute("name", targetNode.getName());
-                target.addAttribute("file", targetNode.getFilename());
-                target.addAttribute("line", "" + targetNode.getLine());
-            }
-        }
-        for (Iterator<DataNode> i = node.iterator() ; i.hasNext() ; ) {
-            createTarget(i.next(), targets);
-        }
-    }
-
-    /**
-     * Creating the targets section.
-     * @param statistics
-     */
-    protected void createTargets(Element statistics) {
-        Element targets = statistics.addElement("targets");
-        if (root != null) {
-            createTarget(root, targets);
-        }
-    }
-    
-    /**
-     * Creating the assert section.
-     * @param statistics
-     */
-    protected void createAsserts(Element statistics) {
-        Element asserts = statistics.addElement("asserts");
-        if (root != null) {
-            createAssert(root, asserts);
-        }
-    }
-    
-    /**
-     * Generating assert only for TargetNode type of node
-     * @param node
-     * @param targets
-     */
-    protected void createAssert(DataNode node, Element targets) {
-        
-        if (node instanceof AssertNode) {
-            AssertNode assertNode = (AssertNode)node;
-            if (assertNode.getAssertName() != null) {
-                assertList.add(assertNode.getAssertName());
-                Element target = targets.addElement("assert");
-                target.addAttribute("id", "assert@" + assertList.indexOf(assertNode.getAssertName()));
-                target.addAttribute("name", assertNode.getAssertName());
-                target.addAttribute("file", assertNode.getFilename());
-                target.addAttribute("line", "" + assertNode.getLine());
-                target.addAttribute("message", "" + assertNode.getMessage());
-            }
-            
-        }
-        for (Iterator<DataNode> i = node.iterator() ; i.hasNext() ; ) {
-            createAssert(i.next(), targets);
-        }
-    }
-
-    /**
-     * Creating execution tree recursively, visiting the DataNodes.
-     * @param node
-     * @param tree
-     */
-    protected void createTree(DataNode node, Element tree) {
-        Element elt = null;
-        if (node instanceof BuildNode) {
-            BuildNode buildNode = (BuildNode)node;
-            elt = tree.addElement("build");
-            elt.addAttribute("name", buildNode.getName());            
-            elt.addAttribute("startTime", "" + buildNode.getStartTime().getTime());
-            elt.addAttribute("endTime", "" + buildNode.getEndTime().getTime());
-            elt.addAttribute("status", buildNode.getSuccessful() ? "successful" : "failed");            
-            elt.addAttribute("thread", "" + buildNode.getThreadId());            
-        } else if (node instanceof TargetNode) {
-            TargetNode targetNode = (TargetNode)node;
-            elt = tree.addElement("targetRef");
-            elt.addAttribute("reference", "target@" + targetList.indexOf(targetNode.getName() + targetNode.getFilename()));
-            elt.addAttribute("startTime", "" + targetNode.getStartTime().getTime());
-            elt.addAttribute("endTime", "" + targetNode.getEndTime().getTime());
-            elt.addAttribute("thread", "" + targetNode.getThreadId());
-            elt.addAttribute("startUsedHeap", "" + targetNode.getStartUsedHeap());
-            elt.addAttribute("startCommittedHeap", "" + targetNode.getStartCommittedHeap());
-            elt.addAttribute("endUsedHeap", "" + targetNode.getEndUsedHeap());
-            elt.addAttribute("endCommittedHeap", "" + targetNode.getEndCommittedHeap());
-        } else if (node instanceof AssertNode) {
-            AssertNode assertNode = (AssertNode)node;
-            if (assertNode.getAssertName() != null) {
-                elt = tree.addElement("assertRef");
-                elt.addAttribute("reference", "assert@" + assertList.indexOf(assertNode.getAssertName()));
-                elt.addAttribute("startTime", "" + assertNode.getStartTime().getTime());
-                elt.addAttribute("endTime", "" + assertNode.getEndTime().getTime());
-                elt.addAttribute("thread", "" + assertNode.getThreadId());
-            }
-        }
-        
-        if (elt != null) {
-            for (Iterator<DataNode> i = node.iterator() ; i.hasNext() ; ) {
-                createTree(i.next(), elt);
-            }
-        }
-    }
-    
-    /**
-     * Creating the execution tree section.
-     * @param statistics
-     */
-    protected void createExecutionTree(Element statistics) {
-        Element executionTree = statistics.addElement("executionTree");
-        if (root != null) {
-            createTree(root, executionTree);
-        }
-    }
-
-    /**
-     * Creating the property section.
-     * @param statistics
-     */
-    protected void createProperties(Element statistics) {
-        Element propertiesElt = statistics.addElement("properties");
-        if (properties != null) {
-            for (Enumeration<String> e = properties.keys(); e.hasMoreElements() ; ) {
-                String key = e.nextElement();
-                Element propertyElt = propertiesElt.addElement("property");
-                propertyElt.addAttribute("name", key);
-                propertyElt.addAttribute("value", properties.get(key));
-            }
-        }
-    }
-    
-    protected void insertDatabase(Element statistics) {
-        if (database != null) {
-            Element databaseElt = statistics.addElement("database");
-            databaseElt.add(database.getRootElement().detach());
-        }
-    }
-    
-    /**
-     * Rendering the build node into XML string. 
-     */
-    public String toString() {
-        // Creating the XML document
-        Document document = DocumentHelper.createDocument();
-        Element statistics = document.addElement( "statistics" );
-        statistics.addAttribute("version", "1.1");
-        
-        // Creating the document content.
-        insertDatabase(statistics);
-        createTargets(statistics);
-        createAsserts(statistics);
-        createExecutionTree(statistics);
-        createProperties(statistics);
-        try {
-            ByteArrayOutputStream output = new ByteArrayOutputStream(); 
-            XMLWriter out = new XMLWriter(output, OutputFormat.createPrettyPrint());
-            out.write(document);
-            return output.toString();
-        } catch (Exception exc) {
-            return document.asXML();            
-        }        
-    }
-    
-}
--- a/buildframework/helium/tools/common/java/src/com/nokia/ant/taskdefs/AbstractScmBaseTask.java	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/common/java/src/com/nokia/ant/taskdefs/AbstractScmBaseTask.java	Thu Mar 04 15:10:37 2010 +0200
@@ -30,7 +30,6 @@
  * <code>AbstractScmBaseTask</code> is an abstract class for GSCM related tasks
  * such as rebaseline and deconfigure.
  * 
- * @author hacs
  * @ant.task category="SCM"
  * 
  */
--- a/buildframework/helium/tools/common/java/src/com/nokia/ant/taskdefs/AntLintTask.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,963 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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: 
-*
-*/
- 
-package com.nokia.ant.taskdefs;
-
-import java.io.*;
-import java.util.*;
-
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.Target;
-import org.apache.tools.ant.Task;
-import org.apache.tools.ant.types.FileSet;
-import org.apache.tools.ant.DirectoryScanner;
-import org.apache.tools.ant.BuildException;
-
-import org.dom4j.io.SAXReader;
-import org.dom4j.Document;
-import org.dom4j.Element;
-import org.dom4j.Node;
-import org.dom4j.VisitorSupport;
-import org.dom4j.Visitor;
-import org.xml.sax.*;
-import org.xml.sax.helpers.DefaultHandler; 
-
-import javax.xml.parsers.SAXParser;
-import javax.xml.parsers.SAXParserFactory;
-import java.util.regex.*;
-
-/**
- * AntLint Task. This task checks for common coding conventions 
- * and errors in Ant XML script files.
- * 
- * <p>The current checks include: 
- * <ul>
- * <li>Macro names.
- * <li>Preset def names.
- * <li>Target names. 
- * <li>Property names and Indentation.
- * <li>Project names.</li>
- * <li>Project description is present.</li>
- * <li>Ant file names.</li>
- * <li>runtarget calls a target that has dependencies.</li>
- *  <li>antcall is used with no param elements and calls a target
- * with no dependencies (could use runtarget instead).</li>
- * </ul>
- * </p>
- *
- * <p>Checks to be added:
- * <ul>
- * <li>Help target is defined.</li>
- * <li>Optional to thrown warnings about deprecated targets (rename, copydir, copyfile).</li>
- * </ul>
- * </p>
- * @ant.task category="Quality"
- *
- */
-public class AntLintTask extends Task
-{
-    private ArrayList propertiesVisited = new ArrayList();
-    private ArrayList antFileSetList = new ArrayList();
-    private ArrayList<AntFile> antFilelist = new ArrayList<AntFile>();
-    
-    private String configurationPath;
-    
-    private boolean tabCharacterCheck;
-    private boolean propertyNameCheck;
-    private boolean targetNameCheck;
-    private boolean indentationCheck;
-    private boolean presetDefMacroDefNameCheck;
-    private boolean projectNameCheck;
-    private boolean descriptionCheck;
-    private boolean fileNameCheck;
-    private boolean runTargetCheck;
-    private boolean antcallCheck;
-    
-    private String propertyNamePattern;
-    private String targetNamePattern;
-    private String presetDefMacroDefNamePattern;
-    private String projectNamePattern;
-    private String fileNamePattern;
-    
-    private AntFile currentFile;
-    
-    private class AntFile implements Comparable<AntFile>
-    {
-        private String name;
-        private int warningCount;
-        private int errorCount;
-        
-        public AntFile(String n) { name = n; }
-        public void incWarningCount() { warningCount++; }
-        public int getWarningCount() { return warningCount; }
-        public void incErrorCount() { errorCount++; }
-        public int getErrorCount() { return errorCount; }
-        
-        public String toString()
-        {
-            if (errorCount > 0)
-                throw new BuildException(errorCount + " errors found in " + name); 
-            return warningCount + " warnings " + name;
-        }
-        
-        public int compareTo(AntFile o)
-        {
-            return new Integer(o.getWarningCount()).compareTo(new Integer(warningCount)) * -1;
-        }
-    }
-    
-    /**
-     * AntLintTask Constructor
-     */
-    public AntLintTask()
-    {
-        setTaskName("antlint");
-    }
-    
-    /**
-     * Add a set of files to copy.
-     * @param set a set of files to AntLintTask.
-     * @ant.required
-     */
-    public void addFileset(FileSet set) {
-        antFileSetList.add(set);
-    }
-    
-    /**
-     * Set the path of the configuration file to use.
-     * 
-     * @param configurationPath path to config file
-     * @ant.required
-     */
-    public void setConfigFile(String configurationPath)
-    {
-        this.configurationPath = configurationPath;
-    }
-    
-    public void checkDuplicateNames(Project project)
-    {
-        Hashtable taskdefs = project.getTaskDefinitions();
-        HashSet<String> classlist = new HashSet<String>();
-        Enumeration taskdefsenum = taskdefs.keys();
-        ArrayList<String> macros = new ArrayList<String>();
-        while (taskdefsenum.hasMoreElements ()) {
-            String key = (String) taskdefsenum.nextElement();
-            Class value = (Class) taskdefs.get(key);
-            macros.add(key);
-        }
-        currentFile = new AntFile("General");
-        antFilelist.add(currentFile);
-        for (String x : macros)
-        {
-            if (macros.contains(x + "Macro") || macros.contains(x + "macro"))
-                log("W: " + x + " and " + x + "Macro" + " found duplicate name");
-                currentFile.incWarningCount();
-        }
-    }
-      
-    public final void execute()
-    {
-        try
-        {
-            Project project = getProject();
-            
-            getConfiguration();//loads configuration file
-            
-            checkDuplicateNames(project);
-            
-            for (Iterator iterator = antFileSetList.iterator(); iterator.hasNext();)
-            {
-                FileSet fs = (FileSet) iterator.next();
-                DirectoryScanner ds = fs.getDirectoryScanner(project);
-                String[] srcFiles = ds.getIncludedFiles();
-                String basedir = ds.getBasedir().getPath();
-                
-                for (int i = 0; i < srcFiles.length; i++) 
-                {    
-                    String antFileName = basedir + File.separator + srcFiles[i];
-                    log("*************** Ant File: " + antFileName);
-                    
-                    currentFile = new AntFile(antFileName);
-                    antFilelist.add(currentFile);
-                    
-                    checkFileName(new File(antFileName).getName());
-                                       
-                    SAXReader saxReader = new SAXReader();
-                    Document doc = saxReader.read(new File(antFileName));
-                    treeWalk(doc);
-                    
-                    SAXParserFactory saxFactory = SAXParserFactory.newInstance();
-                    saxFactory.setNamespaceAware(true);
-                    saxFactory.setValidating(true);
-                    SAXParser parser = saxFactory.newSAXParser();
-                    AntLintHandler handler = new AntLintHandler();
-                    parser.parse(new File(antFileName), handler);
-                }
-                
-                Collections.sort(antFilelist);
-            }  
-        }
-        catch (Exception e)
-        {
-            throw new BuildException("Exception occured while running AntLint task " + e.getMessage());
-        }
-        
-        for (AntFile s : antFilelist)
-        {
-            log(s.toString());
-        }
-    }
-
-    public final void treeWalk(final Document document)
-    {
-        Element rootElement = document.getRootElement();
-        Visitor visitorRootElement = new AntProjectVisitor();
-        rootElement.accept(visitorRootElement);
-        treeWalk(rootElement);        
-    }
-
-    public final void treeWalk(final Element element)
-    {
-        for ( int i = 0, size = element.nodeCount(); i < size; i++ ) 
-        {
-            Node node = element.node(i);
-            if ( node instanceof Element ) 
-            {
-                Visitor visitorElement = new AntXMLVisitor();
-                node.accept(visitorElement);
-                treeWalk( (Element) node );
-            }
-        }
-    }
-    
-    private void checkFileName(String text)
-    {
-        try
-        {
-            boolean found = false;
-            Pattern p1 = Pattern.compile(fileNamePattern);
-            Matcher m1 = p1.matcher(text);
-            while (m1.find())
-            {
-                found = true;            
-            }
-            if (!found && fileNameCheck) {
-                log("W: INVALID File Name: " + text);
-                currentFile.incWarningCount();
-            }
-        }
-        catch (Exception e)
-        {
-            throw new BuildException("W: INVALID File Name: " + text + e.getMessage());
-        }
-    }
-    
-    public final void getConfiguration()
-    {
-        try
-        {
-            SAXReader saxConfigReader = new SAXReader();
-            Document docConfig = saxConfigReader.read(new File(configurationPath));
-        
-            Element rootConfig = docConfig.getRootElement();
-    
-            // iterate through child elements of root
-            for ( Iterator i = rootConfig.elementIterator(); i.hasNext(); ) {
-                Element elementConfig = (Element) i.next();
-                String attrName = elementConfig.attributeValue("name");
-                if (attrName.equals("TabCharacter")) {
-                        tabCharacterCheck = true;
-                }
-                else if (attrName.equals("PropertyName")) {
-                        propertyNameCheck = true;
-                        propertyNamePattern = elementConfig.getText();
-                }
-                else if (attrName.equals("TargetName")) {
-                        targetNameCheck = true;
-                        targetNamePattern = elementConfig.getText();
-                }
-                else if (attrName.equals("Indentation")) {
-                        indentationCheck = true;
-                }
-                else if (attrName.equals("PresetDefMacroDefName")) {   
-                        presetDefMacroDefNameCheck = true;
-                        presetDefMacroDefNamePattern = elementConfig.getText();
-                }
-                else if (attrName.equals("ProjectName")) {
-                        projectNameCheck = true;
-                        projectNamePattern = elementConfig.getText();
-                }
-                else if (attrName.equals("Description")) {
-                        descriptionCheck = true;
-                }
-                else if (attrName.equals("FileName")) {
-                        fileNameCheck = true;
-                        fileNamePattern = elementConfig.getText();
-                }
-                else if (attrName.equals("RunTarget")) {
-                        runTargetCheck = true;
-                }
-                else if (attrName.equals("AntCall")) {
-                        antcallCheck = true;
-                }
-            }
-        }
-        catch (Exception e)
-        {
-            throw new BuildException("Not able to read the ANT lint Configuration file " + configurationPath );
-        }
-
-    }
-    
-    private class AntXMLVisitor extends VisitorSupport
-    {    
-        public void visit(Element node)
-        {
-            String name = node.getName();
-            if (name.equals("target"))
-            {
-                checkTarget(node);
-            }
-            if (name.equals("property"))
-            {
-                String text = node.attributeValue("name");
-                if (text != null && propertyNameCheck)
-                {
-                    checkPropertyName(text);
-                }
-            }
-            if (name.equals("equals"))
-            {
-                String text = node.attributeValue("arg2");
-                if (text.equals("true") || text.equals("yes"))
-                {
-                    log("E: " + node.attributeValue("arg1") + " uses 'equals' should use 'istrue' task");
-                    currentFile.incErrorCount();
-                }
-            }
-            if (name.equals("presetdef") || name.equals("macrodef"))
-            {
-                String text = node.attributeValue("name");
-                if (text != null && presetDefMacroDefNameCheck)
-                {
-                    checkDefName(text);
-                }
-                
-                List attributeList = node.elements("attribute");
-                for (Iterator iterator = attributeList.iterator(); iterator.hasNext();)
-                {
-                    Element attributeElement = (Element) iterator.next();
-                    String attributeName = attributeElement.attributeValue("name");
-                    checkDefName(attributeName);
-                }
-                
-            }
-            
-            if (name.equals("scriptdef"))
-            {
-                String scriptdefname = node.attributeValue("name");
-                String language = node.attributeValue("language");
-                
-                checkScriptdef(scriptdefname, node);
-                
-                if (language.equals("beanshell"))
-                {
-                    writeBeanshellFile(scriptdefname, node.getText());
-                }
-
-                if (language.equals("jep") || language.equals("jython"))
-                {
-                    writeJepFile(scriptdefname, node.getText());
-                    checkJepPropertiesInText(node.getText());
-                }
-            }
-        }
-        
-        private void checkTarget(Element node)
-        {
-            String target = node.attributeValue("name");
-            if (target != null && targetNameCheck)
-            {
-                checkTargetName(target);
-            }
-            else
-            {
-                log("W: Target name not specified!");
-                currentFile.incWarningCount();
-            }
-            checkUseOfIf(node);
-            checkSizeOfScript(node);
-            checkTabsInScript(node);
-            if ((node.elements("runtarget") != null) && runTargetCheck)
-            {
-                List runTargetList = node.elements("runtarget");
-                for (Iterator iterator = runTargetList.iterator(); iterator.hasNext();)
-                {
-                    Element runTargetElement = (Element) iterator.next();
-                    String runTargetName = runTargetElement.attributeValue("target");
-                    if (checkTargetDependency(runTargetName))
-                    {
-                        log("W: <runtarget> calls the target " +  runTargetName + " that has dependencies!");
-                        currentFile.incWarningCount();
-                    }
-                }
-            }
-            if ((node.elements("antcall") != null) && antcallCheck)
-            {
-                List antcallList = node.elements("antcall");
-                for (Iterator iterator = antcallList.iterator(); iterator.hasNext();)
-                {
-                    Element antcallElement = (Element) iterator.next();
-                    String antcallName = antcallElement.attributeValue("target");
-                    if ((node.elements("param") == null) && !checkTargetDependency(antcallName))
-                    {
-                        log("R: <antcall> is used with no param elements and calls the target " +  antcallName + " that has no dependencies! (<runtarget> could be used instead.)");
-                        currentFile.incWarningCount();
-                    }
-                }
-            }
-            
-            List scriptList = node.selectNodes("//target[@name='" + target + "']/descendant::script");
-            for (Iterator iterator = scriptList.iterator(); iterator.hasNext();)
-            {
-                Element scriptElement = (Element) iterator.next();
-                String language = scriptElement.attributeValue("language");
-                if (language.equals("jep") || language.equals("jython"))
-                {
-                    writeJepFile("target_" + target, scriptElement.getText());
-                    checkJepPropertiesInText(scriptElement.getText());
-                }
-            }
-
-            List scriptList2 = node.selectNodes("//target[@name='" + target + "']/descendant::scriptcondition");
-            for (Iterator iterator = scriptList2.iterator(); iterator.hasNext();)
-            {
-                Element scriptElement2 = (Element) iterator.next();
-                String language2 = scriptElement2.attributeValue("language");
-                if (language2.equals("jep") || language2.equals("jython"))
-                {
-                    writeJepFile("scriptcondition_" + target, scriptElement2.getText());
-                    checkJepPropertiesInText(scriptElement2.getText());
-                }
-            }
-            
-            List pythonList = node.selectNodes("//target[@name='" + target + "']/descendant::*[name()=\"hlm:python\"]");
-            int i = 0;
-            for (Iterator iterator = pythonList.iterator(); iterator.hasNext();)
-            {
-                Element pythonElement = (Element) iterator.next();
-                writePythonFile(i + "_" + target, pythonElement.getText());
-                i++;
-            }
-        }
-        
-        private void writePythonFile(String scriptdefname, String text)
-        {
-            try {
-            String heliumpath = new File(project.getProperty("helium.build.dir")).getCanonicalPath();
-            new File(heliumpath + File.separator + "python").mkdirs();
-            File file = new File(heliumpath + File.separator + "python" + File.separator + "target" + scriptdefname + ".py");
-            PrintWriter output = new PrintWriter(new FileOutputStream(file));
-            if (!text.equals(""))
-            {
-                output.write("def abc():");
-                for (String t : text.split("\n"))
-                    output.write("    " + t + "\n");
-            }
-            output.close();
-            checkPropertiesInText(text);
-            } catch (Exception e) { 
-                throw new BuildException("Not able to write python file " + scriptdefname + ".py" );
-             }
-        }
-        
-        private void writeBeanshellFile(String scriptdefname, String text)
-        {
-            scriptdefname = "Beanshell" + scriptdefname;
-            try {
-            String heliumpath = new File(project.getProperty("helium.build.dir")).getCanonicalPath();
-            new File(heliumpath + File.separator + "beanshell").mkdirs();
-            File file = new File(heliumpath + File.separator + "beanshell" + File.separator + scriptdefname + ".java");
-            PrintWriter output = new PrintWriter(new FileOutputStream(file));
-            
-            for (String line : text.split("\n"))
-            {
-                if (line.trim().startsWith("import"))
-                    output.write(line + "\n");
-            }
-            
-            output.write("/**\n * x\n */\npublic final class " + scriptdefname + " {\n");
-            output.write("private " + scriptdefname + "() { }\n");
-            output.write("public static void main(String[] args) {\n");
-            for (String line : text.split("\n"))
-            {
-                if (!line.trim().startsWith("import"))
-                    output.write(line + "\n");
-            }
-            output.write("} }");
-            output.close();
-            } catch (Exception e) {
-                throw new BuildException("Not able to write Beanshell File " + scriptdefname + ".java" );
-            }
-        }
-        
-        private void writeJepFile(String scriptdefname, String text)
-        {   
-            if (text.contains("${"))
-            {
-                log("E: ${ found in " + scriptdefname);
-                currentFile.incErrorCount();
-            }
-          
-            try {
-            String heliumpath = new File(project.getProperty("helium.build.dir")).getCanonicalPath();
-            new File(heliumpath + File.separator + "jep").mkdirs();
-            File file = new File(heliumpath + File.separator + "jep" + File.separator + scriptdefname + "_jep.py");
-            PrintWriter output = new PrintWriter(new FileOutputStream(file));
-            output.write("def abc():\n");
-            output.write("    attributes = {} # pylint: disable-msg=C0103\n");
-            output.write("    elements = {} # pylint: disable-msg=C0103\n");
-            output.write("    project = None # pylint: disable-msg=C0103\n");
-            output.write("    self = None # pylint: disable-msg=C0103\n");
-            text = text.replace(" File(", " self.File(");
-            for (String t : text.split("\n"))
-                output.write("    " + t + "\n");
-            output.close();
-            
-            if (text.contains("import "))
-            {
-                File file2 = new File(heliumpath + File.separator + "test_jython.xml");
-                PrintWriter output2 = new PrintWriter(new FileOutputStream(file2, true));
-                output2.write("try:\n");
-                for (String line : text.split("\n"))
-                {
-                    if (line.trim().startsWith("import ") || line.trim().startsWith("from "))
-                        output2.write("    " + line + "\n");
-                }
-                
-                output2.write("except ImportError, e:\n");
-                output2.write("    print '" + scriptdefname + " failed: ' + str(e)\n");
-                output2.close();
-            }
-            } catch (Exception e) { 
-                throw new BuildException("Not able to write JEP File " + scriptdefname + "_jep.py" ); 
-              }
-        }
-        
-        private void checkJepPropertiesInText(String text)
-        {
-            Pattern p1 = Pattern.compile("getProperty\\([\"']([a-zA-Z0-9\\.]*)[\"']\\)");
-            Matcher m1 = p1.matcher(text);
-            ArrayList<String> props = new ArrayList<String>();
-            while (m1.find())
-            {
-                props.add(m1.group(1));
-            }
-            for (String group : props)
-                checkPropertyInModel(group);
-        }
-        
-        private void checkPropertiesInText(String text)
-        {
-            Pattern p1 = Pattern.compile("r[\"']\\$\\{([a-zA-Z0-9\\.]*)\\}[\"']");
-            Matcher m1 = p1.matcher(text);
-            ArrayList<String> props = new ArrayList<String>();
-            while (m1.find())
-            {
-                props.add(m1.group(1));
-            }
-            for (String group : props)
-                checkPropertyInModel(group);
-        }
-        
-        public void checkScriptdef(String name, Node node)
-        {   
-            List<Node> statements = node.selectNodes("//scriptdef[@name='" + name + "']/attribute");
-            
-            Pattern p1 = Pattern.compile("attributes.get\\([\"']([^\"']*)[\"']\\)");
-            Matcher m1 = p1.matcher(node.getText());
-            ArrayList<String> props = new ArrayList<String>();
-            while (m1.find())
-            {
-                props.add(m1.group(1));
-            }
-            
-            ArrayList<String> attributes = new ArrayList<String>();
-            for (Node statement : statements)
-            {
-                attributes.add(statement.valueOf("@name"));
-            }
-            for (String x : props)
-            {
-                if (!attributes.contains(x))
-                {
-                    log("E: Scriptdef " + name + " does not have attribute " + x);
-                    currentFile.incErrorCount();
-                }
-            }
-            
-            if (!statements.isEmpty() && props.isEmpty())
-            {
-                log("W: Scriptdef " + name + " doesn't reference attributes directly, poor style");
-                currentFile.incWarningCount();
-            }
-            else
-            {
-                for (Node statement : statements)
-                {                
-                    if (!props.contains(statement.valueOf("@name")))
-                    {
-                        //for (String x : props)
-                        //    log(x);
-                        log("E: Scriptdef " + name + " does not use " + statement.valueOf("@name"));
-                        currentFile.incErrorCount();
-                    }
-                }
-            }
-        }
-        
-        public void checkPropertyInModel(String customerProp)
-        {
-            SAXReader xmlReader = new SAXReader();
-            Document antDoc = null;
-            
-            try {
-            File model = new File(project.getProperty("data.model.parsed"));
-            antDoc = xmlReader.read(model);
-            } catch (Exception e) { 
-                throw new BuildException("Not able to read data model file " + project.getProperty("data.model.parsed")); 
-             }
-            
-            List<Node> statements = antDoc.selectNodes("//property");
-            
-            for (Node statement : statements)
-            {
-                if (customerProp.equals(statement.valueOf("name")))
-                {
-                    return;
-                }
-            }
-            log("W: " + customerProp + " not in data model");
-            currentFile.incWarningCount();
-        }
-                  
-        private void checkTargetName(String text)
-        {     
-            try
-            {
-                Pattern p1 = Pattern.compile(targetNamePattern);
-                Matcher m1 = p1.matcher(text);
-                if (!m1.matches())
-                {
-                    log("W: INVALID Target Name: " + text);
-                    currentFile.incWarningCount();
-                }
-            }
-            catch (Exception e)
-            {
-                throw new BuildException("Not able to match the target name for " + text);
-            }
-        }
-        
-        private void checkUseOfIf(Element node)
-        {
-            String target = node.attributeValue("name");
-            String targetxpath = "//target[@name='" + target + "']//if";
-            
-            List<Node> statements2 = node.selectNodes(targetxpath);
-            for (Node statement : statements2)
-            {
-                List conditiontest = statement.selectNodes("./then/property");
-                if (conditiontest != null && conditiontest.size() == 1)
-                {
-                    List conditiontest2 = statement.selectNodes("./else/property");
-                    if (conditiontest2 != null && conditiontest2.size() == 1)
-                    {
-                        log("W: Target " + target + " poor use of if-else-property statement, use condition task");
-                        currentFile.incWarningCount();
-                    }
-                    else
-                    {
-                        if (statement.selectNodes("./else").size() == 0)
-                        {
-                            log("W: Target " + target + " poor use of if-then-property statement, use condition task");
-                            currentFile.incWarningCount();
-                        }
-                    }
-                }
-            }
-            
-            List statements = node.selectNodes("//target[@name='" + target + "']/*");
-            if (!(statements.size() > 1))
-            {
-                if (node.selectSingleNode(targetxpath + "/else") == null)
-                {
-                    if (node.selectSingleNode(targetxpath + "/isset") != null || node.selectSingleNode(targetxpath + "/not/isset") != null)
-                    {
-                        log("W: Target " + target + " poor use of if statement, use <target if|unless=\"prop\"");
-                        //log(node.selectSingleNode(targetxpath).asXML());
-                        currentFile.incWarningCount();
-                    }
-                }
-            }
-        }
-        
-        private void checkSizeOfScript(Element node)
-        {
-            String target = node.attributeValue("name");
-            
-            List<Node> statements = node.selectNodes("//target[@name='" + target + "']/script | //target[@name='" + target + "']/*[name()=\"hlm:python\"]");
-            
-            for (Node statement : statements)
-            {
-                int size = statement.getText().length();
-                
-                if (size > 1000)
-                {
-                    log("W: Target " + target + " has a script with " + size + " characters, code should be inside a python file");
-                    currentFile.incWarningCount();
-                }
-            }
-        }
-        
-        private void checkTabsInScript(Element node)
-        {
-            String target = node.attributeValue("name");
-            
-            List<Node> statements = node.selectNodes("//target[@name='" + target + "']/script | //target[@name='" + target + "']/*[name()=\"hlm:python\"]");
-            
-            for (Node statement : statements)
-            {
-                if (statement.getText().contains("\t"))
-                {
-                    log("E: Target " + target + " has a script with tabs");
-                    currentFile.incErrorCount();
-                }
-            }
-        }
-                
-            
-        
-        private void checkPropertyName(String text)
-        {
-            try
-            {
-                Pattern p1 = Pattern.compile(propertyNamePattern);
-                Matcher m1 = p1.matcher(text);
-                if (!m1.matches() && !propertiesVisited.contains(text))
-                {
-                    log("W: INVALID Property Name: " + text);
-                    propertiesVisited.add(text);
-                    currentFile.incWarningCount();
-                }
-            }
-            catch (Exception e)
-            {
-                throw new BuildException("Not able to match the Property Name for " + text);
-            }
-        }
-        
-        private void checkDefName(String text)
-        {
-            try
-            {
-                Pattern p1 = Pattern.compile(presetDefMacroDefNamePattern);
-                Matcher m1 = p1.matcher(text);
-                if (!m1.matches())
-                {
-                    log("W: INVALID PRESETDEF/MACRODEF Name: " + text);
-                    currentFile.incWarningCount();
-                }
-            }
-            catch (Exception e)
-            {
-                throw new BuildException("Not able to match the MacroDef Name for " + text);
-            }
-        }
-        
-        private boolean checkTargetDependency(String text)
-        {     
-            boolean dependencyCheck = false;
-            try
-            {
-                Target targetDependency = (Target) project.getTargets().get(text);
-                if (targetDependency != null)
-                {
-                    if (targetDependency.getDependencies().hasMoreElements())
-                    {
-                        dependencyCheck = true;
-                    }
-                }
-            }
-            catch (Exception e)
-            {
-                throw new BuildException("Not able to get Target Dependency for " + text);
-            }
-            finally
-            {
-                return dependencyCheck;
-            }
-        }   
-    }
-    
-    private class AntProjectVisitor extends VisitorSupport
-    {    
-        public void visit(Element node)
-        {
-            String name = node.getName();
-            if (name.equals("project"))
-            {
-                String text = node.attributeValue("name");
-                if (text != null && projectNameCheck)
-                {
-                    checkProjectName(text);
-                }
-                else
-                {
-                    log("W: Project name not specified!");
-                    currentFile.incWarningCount();
-                } 
-                if ((node.element("description") == null) && descriptionCheck)
-                {
-                    log("W: Description not specified!");
-                    currentFile.incWarningCount();
-                }
-            }
-        }
-        
-        private void checkProjectName(String text)
-        {
-            try
-            {
-                Pattern p1 = Pattern.compile(projectNamePattern);
-                Matcher m1 = p1.matcher(text);
-                if (!m1.matches())
-                {
-                    log("W: INVALID Project Name: " + text);
-                    currentFile.incWarningCount();
-                }
-            }
-            catch (Exception e)
-            {
-                throw new BuildException("Not able to match Project Name for " + text);
-            }
-        }
-    }
-    
-    private class AntLintHandler extends DefaultHandler
-    {
-        private int indentLevel;
-        private int indentSpace;
-        private Locator locator;
-        private boolean textElement;
-        private int currentLine;
-        private StringBuffer strBuff = new StringBuffer();
-        
-        public AntLintHandler()
-        {
-            super();
-        }
-        
-        public void setDocumentLocator(Locator locator)
-        {
-            this.locator = locator;
-        }
-        
-        public void startDocument ()
-        {
-            indentLevel -= 4;
-        }
-    
-    
-        public void endDocument ()
-        {
-            
-        }
-        
-        public void startElement(String uri, String name,
-                  String qName, Attributes atts)
-        {
-            countSpaces();
-            indentLevel += 4; //When an element start tag is encountered, indentLevel is increased 4 spaces.
-            checkIndent();
-            currentLine = locator.getLineNumber();
-        }
-
-        public void endElement(String uri, String name, String qName)
-        {
-            countSpaces();
-            //Ignore end tags in the same line
-            if (currentLine != locator.getLineNumber()) {
-                checkIndent();
-            }
-            indentLevel -= 4; //When an element end tag is encountered, indentLevel is decreased 4 spaces.
-            textElement = false;
-        }
-        
-        private void checkIndent()
-        {
-            if (indentationCheck)
-            {
-                if ((indentSpace != indentLevel) && !textElement)
-                {
-                    log("E:" + locator.getLineNumber() + ": Bad indentation!");
-                    currentFile.incErrorCount();
-                }
-            }           
-        }
-              
-        public void characters(char[] ch, int start, int length)
-        {
-            for (int i = start; i < start + length; i++) 
-            {
-                strBuff.append(ch[i]);
-            }
-        }
-        
-        public void countSpaces()
-        {
-            //Counts spaces and tabs in every newline.
-            int numSpaces = 0;
-            for (int i = 0; i < strBuff.length(); i++) 
-            {
-                switch (strBuff.charAt(i)) {
-                    case '\t':
-                        numSpaces += 4;
-                        if (tabCharacterCheck)
-                        {
-                            log("E:" + locator.getLineNumber() + ": Tabs should not be used!");
-                            currentFile.incErrorCount();
-                        }
-                        break;
-                    case '\n':
-                        numSpaces = 0;
-                        break;
-                    case '\r':
-                        break;
-                    case ' ':
-                        numSpaces++;
-                        break;
-                    default:
-                        textElement = true;
-                        break;
-                }
-            }
-            indentSpace = numSpaces;
-            strBuff.delete(0,strBuff.length());
-        }
-    }
-}
\ No newline at end of file
--- a/buildframework/helium/tools/common/java/src/com/nokia/ant/taskdefs/DatabaseTask.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,83 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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: 
-*
-*/
- 
-package com.nokia.ant.taskdefs;
-
-import java.io.File;
-import com.nokia.ant.Database;
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.Task;
-import org.apache.tools.ant.types.ResourceCollection;
-import org.apache.tools.ant.types.Reference;
-
-/**
- * Reads the current ant project and a fileset and generates a xml file with a summary of targets,
- * macros and properties.
- *
- * @ant.task name="database"
- */
-public class DatabaseTask extends Task
-{
-    private File outputFile;
-
-    private ResourceCollection rc;
-    private boolean homeFilesOnly = true;
-
-    public DatabaseTask()
-    {
-        setTaskName("database");
-    }
-
-    public void setOutput(File outputFile)
-    {
-        this.outputFile = outputFile;
-    }
-
-    public void setRefid(Reference r)
-    {
-        Object o = r.getReferencedObject();
-        if (!(o instanceof ResourceCollection))
-        {
-            throw new BuildException(r.getRefId() + " doesn\'t denote a ResourceCollection");
-        }
-        rc = (ResourceCollection) o;
-    }
-    
-    /**
-     * If true only read files that are not in the helium dir.
-     */
-    public void setHomeFilesOnly(boolean homeFilesOnly) {
-        this.homeFilesOnly = homeFilesOnly;
-    }
-
-    public void execute()
-    {
-        log("Building Ant project database", Project.MSG_DEBUG);
-        try
-        {
-            Database db = new Database(getProject(), rc, this);
-            db.setHomeFilesOnly(homeFilesOnly);
-            db.createXMLFile(outputFile);
-        }
-        catch (Exception e)
-        {
-            throw new BuildException("Not able to build the ANT project Database " + e.getMessage());
-        }
-    }
-
-}
--- a/buildframework/helium/tools/common/java/src/com/nokia/ant/taskdefs/GetValueFromVariableSet.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,97 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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: 
-*
-*/
-
-package com.nokia.ant.taskdefs;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Task;
-import org.apache.tools.ant.types.Reference;
-import java.util.Iterator;
-import java.util.Vector;
-import com.nokia.ant.types.VariableSet;
-import com.nokia.ant.types.Variable;
-
-
-/**
- * To retrive a variable value from a collection of variable set based on name, which contains property-value in pair.
- *  
- * <pre>
- * Example:
- * 
- * &lt;hlm:argSet id="test.variableSet"&gt;
- * &lt;variable name="v1" value="the_value_1"/&gt;
- *     &lt;variable name="v2" value="the_value_2"/&gt;
- *      &lt;variable name="v3" value="the_value_3"/&gt;
- * &lt;/hlm:argSet&gt;
- *       
- *  &lt;hlm:getVariableValue name="v3" property="v1.value"&gt;
- * &lt;hlm:argSet refid="test.variableSet"/&gt;
- * &lt;/hlm:getVariableValue&gt;
- * </pre>
- * @ant.task name="getVariableValue"
- */
-public class GetValueFromVariableSet extends Task {
-    private String name;
-    private String property;
-    private Vector<VariableSet> variablesets = new Vector<VariableSet>();
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public void setProperty(String property) {
-        this.property = property;
-    }
-
-    public void add(VariableSet vs) {
-        variablesets.add(vs);
-    }
-
-    public VariableSet createVariableSet() {
-        VariableSet vs = new VariableSet();
-        variablesets.add(vs);
-        return vs;
-    }
-
-    public void execute() {
-        if (name == null)
-            throw new BuildException("'name' attribute has not been defined.");
-        if (property == null)
-            throw new BuildException(
-                    "'property' attribute has not been defined.");
-
-        for (Iterator<VariableSet> vsit = variablesets.iterator(); vsit
-                .hasNext();) {
-            VariableSet vs = vsit.next();
-            if (vs.isReference()) {
-                Reference reference = vs.getRefid();
-                vs = (VariableSet)reference.getReferencedObject(getProject());
-            }
-            for (Iterator vit = vs.getVariables().iterator(); vit.hasNext();) {
-                Variable v = (Variable) vit.next();
-                if (v.getName().equals(name)) {
-                    log("Setting '" + property + "' property to '" + v.getValue() + "'");
-                    getProject().setProperty(property, v.getValue());
-                    return;
-                }
-            }
-        }
-
-        //throw new BuildException("Could not find '" + name + "' variable.");
-    }
-
-}
--- a/buildframework/helium/tools/common/java/src/com/nokia/ant/taskdefs/HlmAssertMessage.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,85 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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: 
-*
-*/
- 
-package com.nokia.ant.taskdefs;
-
-import org.apache.tools.ant.Task;
-import org.apache.tools.ant.BuildException;
-import com.nokia.ant.listener.internaldata.*;
-import javax.naming.*;
-import javax.naming.directory.*;
-
-/**
- * Task to identify failing assert.
- *
- * Usage: &lt;hlm:hlmassertmessage assertName="hlm:assertPropertySet" message="Warning: @{message}"/&gt;
- */
-
-public class HlmAssertMessage extends Task {
-    
-    private String message;
-    private String assertName;
-        
-    public void execute() {
-        
-        if (assertName == null)
-            throw new BuildException("'assertName' attribute is not defined");
-        if (message == null)
-            throw new BuildException("'message' attribute is not defined");
-        
-        for (int i = 0 ; i < getProject().getBuildListeners().size() ; i++) {
-            if (getProject().getBuildListeners().get(i) instanceof Listener) {
-                Listener listen = (Listener)getProject().getBuildListeners().get(i);
-                listen.addAssertTask(this);
-                break;
-            }
-        }
-    }
-    /**
-     * Returns assert name.
-     * @return
-     */
-    public String getAssertName() 
-    {
-        return assertName;
-    }
-    /**
-     * Set the assertname.
-     * @param assertName
-     */
-    public void setAssertName(String assertName) 
-    {
-        this.assertName = assertName;
-    }
-    /**
-     * Return the assert message.
-     * @return
-     */
-    public String getMessage() 
-    {
-        return message;
-    }
-    /**
-     * Set the assert message.
-     * @param message
-     */
-    public void setMessage(String message) 
-    {
-        this.message = message;
-    }
-    
-}
--- a/buildframework/helium/tools/common/java/src/com/nokia/ant/taskdefs/LDAP.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,135 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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: 
-*
-*/
- 
-package com.nokia.ant.taskdefs;
-
-import org.apache.tools.ant.Task;
-import org.apache.tools.ant.BuildException;
-import javax.naming.*;
-import javax.naming.directory.*;
-import java.util.Hashtable;
-
-/**
- * Task is to search data from LDAP server.
- *
- * Usage: &lt;hlm:ldap url="${ldap.server.url}" rootdn="${ldap.root.dn}" filter="uid=${env.USERNAME}" outputproperty="email.from" key="mail"/&gt;
- */
-public class LDAP extends Task 
-{
-    private String url;
-    private String rootdn;
-    private String filter;
-    private String key;
-    private String property;
-    
-        
-    public void execute()
-    {
-        
-        if (url == null)
-            throw new BuildException("'url' attribute is not defined");
-        if (rootdn == null)
-            throw new BuildException("'rootdn' attribute is not defined");
-        if (filter == null)
-            throw new BuildException("'filter' attribute is not defined");
-        if (property == null)
-            throw new BuildException("'property' attribute is not defined");
-        if (key == null)
-            throw new BuildException("'key' attribute is not defined");    
-        
-        // Set up environment for creating initial context
-        Hashtable<String, String> env = new Hashtable<String, String>();
-        env.put(Context.INITIAL_CONTEXT_FACTORY,
-                "com.sun.jndi.ldap.LdapCtxFactory");
-        env.put(Context.PROVIDER_URL, url + "/" + rootdn);
-
-        // Create initial context
-        try 
-        {
-            DirContext ctx = new InitialDirContext(env);
-            SearchControls controls = new SearchControls();
-            controls.setSearchScope(SearchControls.SUBTREE_SCOPE);
-            NamingEnumeration<SearchResult> en = ctx.search("", filter, controls);
-            if (en.hasMore()) 
-            {
-                SearchResult sr = en.next();
-                getProject().setProperty(property, (String)sr.getAttributes().get(key).get());
-                return;
-            }
-        } 
-        catch (NamingException exc) 
-        {
-            throw new BuildException(exc.getMessage());
-        }
-        catch (NullPointerException e) 
-        {
-            // As uer will not get affected due to this error not failing build.
-            log("Not able to retrive LDAP information for " + filter);
-        }
-    }
-
-    public String getUrl() 
-    {
-        return url;
-    }
-
-    public void setUrl(String url) 
-    {
-        this.url = url;
-    }
-    
-
-    public String getRootdn() 
-    {
-        return rootdn;
-    }
-
-    public void setRootdn(String rootdn) 
-    {
-        this.rootdn = rootdn;
-    }
-
-    public String getFilter() 
-    {
-        return filter;
-    }
-
-    public void setFilter(String filter) 
-    {
-        this.filter = filter;
-    }
-
-    public String getOutputProperty() 
-    {
-        return property;
-    }
-
-    public void setOutputProperty(String property) 
-    {
-        this.property = property;
-    }
-
-    public String getKey() 
-    {
-        return key;
-    }
-
-    public void setKey(String key) 
-    {
-        this.key = key;
-    }
-}
--- a/buildframework/helium/tools/common/java/src/com/nokia/ant/taskdefs/LogRecorderTask.java	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/common/java/src/com/nokia/ant/taskdefs/LogRecorderTask.java	Thu Mar 04 15:10:37 2010 +0200
@@ -47,11 +47,13 @@
  * and is closed on a buildFinished event.
  * </p>
  *
- * @ant.task name="record" category="Utility" 
+ * @ant.task name="record" category="Utility"
+ * @Deprecated Start using hlm:record task. 
  * @see LogRecorderEntry
  * @version 0.5
  * @since Ant 1.4
  */
+@Deprecated
 public class LogRecorderTask extends Task implements SubBuildListener
 {
 
@@ -99,7 +101,8 @@
      * @since Ant 1.7
      */
     public void init()
-    {
+    {   
+        log("Deprecated Start using hlm:record task", Project.MSG_WARN); 
         getProject().addBuildListener(this);
     }
 
--- a/buildframework/helium/tools/common/java/src/com/nokia/ant/taskdefs/PythonTask.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,186 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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: 
-*
-*/
- 
-package com.nokia.ant.taskdefs;
-
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.taskdefs.*;
-import org.apache.tools.ant.types.*;
-import java.io.*;
-
-/**
- * Embed python code in ant, generates temporary python file and executes it
- */
-public class PythonTask extends Task
-{
-    private static final String TEMPFILE_PROPERTY = "python.script.tempfile";
-
-    //private ExecTask execTask = new ExecTask();
-    
-    private String iText;
-
-    private String outputProperty;
-
-    private String resultProperty;
-
-    private String script;
-    
-    private File dir;
-    
-    private File output;
-    
-    private boolean iFailonerror;
-    
-    private Commandline cmdl = new Commandline();
-    
-    public PythonTask()
-    {
-        setTaskName("python");
-        /*execTask.setProject(getProject());
-        execTask.setTaskName("python");
-        execTask.setExecutable("python.exe");*/
-    }
-
-    public void setOutputProperty(String propertyname)
-    {
-        outputProperty = propertyname;
-    }
-
-    public void setResultProperty(String propertyname)
-    {
-        resultProperty = propertyname;
-    }
-
-    public void addText(String text)
-    {
-        iText = getProject().replaceProperties(text);
-    }
-
-    public void setScript(String scriptname)
-    {
-        script = scriptname;
-    }
-    
-    public void setFailonerror(boolean failonerror)
-    {
-        iFailonerror = failonerror;
-    }
-
-    public void setOutput(File outputname)
-    {
-        output = outputname;
-    }
-    
-    public void setDir(File dirname)
-    {
-        dir = dirname;
-    }
-    
-    public Commandline.Argument createArg()
-    {
-        return cmdl.createArgument();
-    }
-    
-   /* private void allAttrSet()
-    {
-        execTask.setOutputproperty(outputProperty);
-        execTask.setResultProperty(resultProperty);
-        execTask.setDir(dir);
-        execTask.setOutput(output);
-    }*/
-    
-    public void execute()
-    {
-        if (script != null)
-        {
-            // Run the Python script
-            ExecTask execTask = new ExecTask();
-            execTask.setProject(getProject());
-            execTask.setTaskName("python");
-            execTask.setExecutable("python");
-            execTask.setFailonerror(true);
-            Commandline.Argument scriptArg = cmdl.createArgument(true);
-            scriptArg.setValue(script);
-            //allAttrSet();
-            execTask.setCommand(cmdl);
-            execTask.setOutputproperty(outputProperty);
-            execTask.setResultProperty(resultProperty);
-            execTask.setDir(dir);
-            execTask.setOutput(output);
-            try
-            {
-                execTask.execute();
-            }
-            catch (BuildException t)
-            {
-                if (iFailonerror)
-                    throw new BuildException(t.getMessage());
-                else
-                    log(t.getMessage(), 0);     //MSG_ERR=0    
-            }
-        }
-        else
-        {            
-            // Write the content of the script using Echo task
-            File tempfile = null;
-            try
-            {
-                // Create a temporary file to contain the script
-                tempfile = File.createTempFile("helium", null);
-                PrintWriter out = new PrintWriter(new FileWriter(tempfile));
-                out.write(iText);
-                out.close();
-
-                // Run the temporary Python script
-                ExecTask execTask = new ExecTask();
-                execTask.setProject(getProject());
-                execTask.setTaskName("python");
-                execTask.setExecutable("python");
-                execTask.setFailonerror(iFailonerror);
-                Commandline.Argument scriptArg = execTask.createArg();
-                scriptArg.setValue(tempfile.getAbsolutePath());
-                //allAttrSet();
-                execTask.setOutputproperty(outputProperty);
-                execTask.setResultProperty(resultProperty);
-                execTask.setDir(dir);
-                execTask.setOutput(output);
-                execTask.execute();
-            
-                // Delete temporary script file
-                boolean fileDeleted = tempfile.delete();
-                if (!fileDeleted && iFailonerror)
-                {
-                    throw new BuildException("Could not delete script file!");
-                }            
-            }
-            catch (IOException e)
-            {
-                if (iFailonerror) {
-                    throw new BuildException(e.getMessage());
-                }
-                log("Error while running python task " + e.getMessage());
-            }
-            finally
-            {
-                // make sure we delete the file anyway
-                if (tempfile != null)
-                    tempfile.delete();
-            }
-        }
-    }
-
-}
\ No newline at end of file
--- a/buildframework/helium/tools/common/java/src/com/nokia/ant/taskdefs/RBTTask.java	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/common/java/src/com/nokia/ant/taskdefs/RBTTask.java	Thu Mar 04 15:10:37 2010 +0200
@@ -56,7 +56,6 @@
  *                              deconfigure=&quot;yes&quot; /&gt;
  * </pre>
  * 
- * @author hacs
  * @ant.task category="SCM"
  */
 public class RBTTask extends AbstractScmBaseTask {
@@ -151,7 +150,7 @@
    * Set whether to leave the folders writable in the baseline project
    * created.
    * 
-   * @param leaveFolderswritable
+   * @param leaveFoldersWritable
    *            indicates whether to leave folders writable.
    * @ant.not-required Default is no.
    */
@@ -172,8 +171,8 @@
   /**
    * Set whether to rebadge object versions in the rebaseline.pl script.
    * 
-   * @param password
-   *            Synergy Password
+   * @param rebadgeObjectVersions
+   *            indicates whether to rebadge object versions to a given release tag.
    * @ant.not-required Default is no.
    */
   public void setRebadgeObjectVersions(Boolean rebadgeObjectVersions) {
@@ -182,7 +181,7 @@
   }
 
   /**
-   * Returnt the releaseBaseline.
+   * Return the releaseBaseline.
    * 
    * @return the releaseBaseline.
    */
@@ -193,8 +192,8 @@
   /**
    * Set whether to release the newly created baseline or not.
    * 
-   * @param release
-   *            the release to set
+   * @param releaseBaseline
+   *            indicates whether to release the newly created baseline 
    */
   public void setReleaseBaseline(Boolean releaseBaseline) {
     this.releaseBaseline = releaseBaseline;
@@ -402,7 +401,7 @@
   /**
    * Set new baseline name to use.
    * 
-   * @param baselineName
+   * @param newBaselineName
    *            is the new baseline name to set.
    * @ant.not-required
    */
--- a/buildframework/helium/tools/common/java/src/com/nokia/ant/taskdefs/RetryTask.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,131 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- */
-/* package org.apache.tools.ant.taskdefs; */
-/* * Portion Copyright (c) 2007-2008 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.*/
-
-package com.nokia.ant.taskdefs;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.Task;
-import org.apache.tools.ant.TaskContainer;
-import org.apache.tools.ant.taskdefs.*;
-
-/**
- * Retries the nested task a set number of times
- * 
- * @since Ant 1.7.1
- */
-public class RetryTask extends Task implements TaskContainer
-{
-
-    /**
-     * task to execute n times
-     */
-    private Task nestedTask;
-
-    /**
-     * set retryCount to 1 by default
-     */
-    private int retryCount = 1;
-
-    /**
-     * set sleepTime to 0 by default
-     */
-    private int sleepTime;
-
-    /**
-     * set the task
-     * 
-     * @param t
-     *            the task to retry.
-     */
-    public synchronized void addTask(Task t)
-    {
-        if (nestedTask != null)
-        {
-            throw new BuildException("The retry task container accepts a single nested task"
-                    + " (which may be a sequential task container)");
-        }
-        nestedTask = t;
-    }
-
-    /**
-     * set the number of times to retry the task
-     * 
-     * @param n
-     *            the number to use.
-     */
-    public void setRetryCount(int n)
-    {
-        retryCount = n;
-    }
-
-    /**
-     * set the sleep time inbetween each retry
-     * 
-     * @param n
-     *            the time in ms to sleep between each retry.
-     */
-    public void setSleepTime(int n)
-    {
-        sleepTime = n;
-    }
-
-    /**
-     * perform the work
-     * 
-     * @throws BuildException
-     *             if there is an error.
-     */
-    public void execute()
-    {
-        StringBuffer errorMessages = new StringBuffer();
-        String br = getProject().getProperty("line.separator");
-        for (int i = 0; i <= retryCount; i++)
-        {
-            try
-            {
-                nestedTask.perform();
-                break;
-            }
-            catch (Exception e)
-            {
-                errorMessages.append(e.getMessage());
-                if (i >= retryCount)
-                {
-                    StringBuffer exceptionMessage = new StringBuffer();
-                    exceptionMessage.append("Task [").append(nestedTask.getTaskName());
-                    exceptionMessage.append("] failed after [").append(retryCount);
-                    exceptionMessage.append("] attempts; giving up.").append(br);
-                    exceptionMessage.append("Error messages:").append(br);
-                    exceptionMessage.append(errorMessages);
-                    throw new BuildException(exceptionMessage.toString(), getLocation());
-                }
-                log("Attempt [" + i + "]:  error occurred; retrying...", e, Project.MSG_INFO);
-                errorMessages.append(br);
-                if (sleepTime > 0)
-                {
-                    Sleep sleepTimer = new Sleep();
-                    sleepTimer.setMilliseconds(sleepTime);
-                    sleepTimer.execute();
-                }
-            }
-        }
-    }
-}
--- a/buildframework/helium/tools/common/java/src/com/nokia/ant/types/LogFilter.java	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/common/java/src/com/nokia/ant/types/LogFilter.java	Thu Mar 04 15:10:37 2010 +0200
@@ -17,14 +17,16 @@
  
 package com.nokia.ant.types;
 
+import org.apache.tools.ant.Project;
 import org.apache.tools.ant.types.DataType;
 import java.util.regex.Pattern;
 
 /**
  * This object contains log filter information basically a regular expression to use to filter the properties based on type and category.
- *
+ * @Deprecated Start using hlm:recordfilter.
  * @ant.type name="logfilter"
  */
+@Deprecated
 public class LogFilter extends DataType
 {
     private String type;
@@ -33,6 +35,7 @@
     private java.util.regex.Pattern compileRegex;
     
     public LogFilter() {
+        log("Deprecated Start using hlm:recordfilter", Project.MSG_WARN);
     }
     
     /**
--- a/buildframework/helium/tools/common/java/src/com/nokia/ant/types/LogFilterSet.java	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/common/java/src/com/nokia/ant/types/LogFilterSet.java	Thu Mar 04 15:10:37 2010 +0200
@@ -16,18 +16,22 @@
 */
  
 package com.nokia.ant.types;
+import org.apache.tools.ant.Project;
 import org.apache.tools.ant.types.DataType;
 import java.util.Vector;
 
 /**
  * Helper class to store the log filter set.
  * @ant.type name="logfilterset"
+ * @Deprecated Start using hlm:recordfilterset.
  */
+@Deprecated 
 public class LogFilterSet extends DataType {
     
     private Vector filters = new Vector();
     
     public LogFilterSet() {
+        log("Deprecated Start using hlm:recordfilterset", Project.MSG_WARN);
     }    
 
     public LogFilter createLogFilter() {
--- a/buildframework/helium/tools/common/java/src/com/nokia/ant/types/SBSMakeOptions.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,83 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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: 
-*
-*/
- 
-package com.nokia.ant.types;
-
-import java.util.Vector;
-
-/**
- * Helper class to store the variable set (list of variables
- * with name / value pair)
- * @ant.type name="sbsMakeOptions"
- */
-public class SBSMakeOptions extends VariableSet {
-    
-    private Vector variables = new Vector();
-    
-    private String engine;
-
-    private String ppThreads;
-
-    /**
-     * Constructor
-     */
-    public SBSMakeOptions() {
-    }    
-
-    /**
-     * Creates an empty variable element and adds 
-     * it to the variables list
-     * @return empty Variable pair
-     */
-    public Variable createVariable() {
-        Variable var =  new Variable();
-        add(var);
-        return var;
-    }
-    
-    /**
-     * Add a given variable to the list 
-     * @param var variable to add
-     */
-    public void add(Variable var) {
-        variables.add(var);
-    }
-    
-    /**
-     * Returns the list of variables available in the VariableSet 
-     * @return variable list
-     */
-    public Vector getVariables() {
-        return variables;
-    }
-    
-    public void setEngine(String makeEngine) {
-        engine = makeEngine;
-    }
-    
-    public String getEngine() {
-        return engine;
-    }
-    public void setPPThreads(String threads) {
-        ppThreads = threads;
-    }
-    
-    public String getPPThreads() {
-        return ppThreads;
-    }
-
-}
\ No newline at end of file
--- a/buildframework/helium/tools/common/java/src/com/nokia/ant/types/Variable.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,71 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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: 
-*
-*/
- 
-package com.nokia.ant.types;
-
-import org.apache.tools.ant.types.DataType;
-
-
-/**
- * Helper class to store the command line variables
- * with name / value pair.
- * @ant.type name="arg"
- * @ant.type name="makeOption"
- */
-public class Variable extends DataType
-{
-    private String mName;
-    private String mValue;
-    
-    public Variable() {
-    }
-    
-    /**
-     * Set the name of the variable.
-     * @param name
-     */
-    public void setName(String name) {
-        mName = name;
-    }
-
-    
-    /**
-     * Get the name of the variable.
-     * @return name.
-     */
-    public String getName() {
-        return mName;
-    }
-
-    /**
-     * Set the value of the variable.
-     * @param value
-     */
-    public void setValue(String value) {
-        mValue = value;
-    }
-
-    
-    /**
-     * Get the value of the variable.
-     * @return value.
-     */
-    public String getValue() {
-        return mValue;
-    }
-
-}
--- a/buildframework/helium/tools/common/java/src/com/nokia/ant/types/VariableSet.java	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,64 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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: 
-*
-*/
- 
-package com.nokia.ant.types;
-
-import org.apache.tools.ant.types.DataType;
-import java.util.Vector;
-
-/**
- * Helper class to store the variable set (list of variables
- * with name / value pair)
- * @ant.type name="argSet"
- */
-public class VariableSet extends DataType {
-    
-    private Vector variables = new Vector();
-    
-    /**
-     * Constructor
-     */
-    public VariableSet() {
-    }    
-
-    /**
-     * Creates an empty variable element and adds 
-     * it to the variables list
-     * @return empty Variable pair
-     */
-    public Variable createVariable() {
-        Variable var =  new Variable();
-        add(var);
-        return var;
-    }
-    
-    /**
-     * Add a given variable to the list 
-     * @param var variable to add
-     */
-    public void add(Variable var) {
-        variables.add(var);
-    }
-    
-    /**
-     * Returns the list of variables available in the VariableSet 
-     * @return variable list
-     */
-    public Vector getVariables() {
-        return variables;
-    }
-}
--- a/buildframework/helium/tools/common/java/src/com/nokia/ant/types/ccm/Session.java	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/common/java/src/com/nokia/ant/types/ccm/Session.java	Thu Mar 04 15:10:37 2010 +0200
@@ -21,7 +21,8 @@
 
 /**
  * This class abstract a synergy session.
- * It store the address to an already existing session. 
+ * It store the address to an already existing session.
+ * @ant.type name="session" category="SCM"
  */
 public class Session extends DataType {
     // store the ccm_addr value
--- a/buildframework/helium/tools/common/java/src/com/nokia/ant/types/ccm/SessionSet.java	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/common/java/src/com/nokia/ant/types/ccm/SessionSet.java	Thu Mar 04 15:10:37 2010 +0200
@@ -22,7 +22,8 @@
 
 /**
  * This class implement an Ant Datatype that represents a set of
- * synergy sessions. 
+ * synergy sessions.
+ * @ant.type name="sessionset" category="SCM"
  */
 public class SessionSet extends DataType {
     private Vector sessions = new Vector();
--- a/buildframework/helium/tools/common/java/src/com/nokia/ant/types/ccm/Task.java	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/common/java/src/com/nokia/ant/types/ccm/Task.java	Thu Mar 04 15:10:37 2010 +0200
@@ -29,7 +29,7 @@
     
     /**
      * Sets the synergy address.
-     * @param addr string representing the ccm_addr
+     * @param name string representing the ccm_addr
      */
     public void setName(String name) {
         this.name = name;
--- a/buildframework/helium/tools/common/java/src/com/nokia/tools/ToolsProcessException.java	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/common/java/src/com/nokia/tools/ToolsProcessException.java	Thu Mar 04 15:10:37 2010 +0200
@@ -25,7 +25,7 @@
 
     /**
      * Constructor
-     * @param String exception message
+     * @param message exception message
      */    
     public ToolsProcessException(String message) {
         super("ToolsProcessException:" + message);
--- a/buildframework/helium/tools/common/java/src/com/nokia/tools/cmt/CMTTool.java	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/common/java/src/com/nokia/tools/cmt/CMTTool.java	Thu Mar 04 15:10:37 2010 +0200
@@ -40,7 +40,7 @@
     /**
      * Sets the command line variables to be used to execute and validates
      * for the required parameters 
-     * @param VariableSet variable(name / value list)
+     * @param varSet variable(name / value list)
      */    
        public void execute(VariableSet varSet, Project prj)throws ToolsProcessException {
         String input = null; 
--- a/buildframework/helium/tools/common/java/src/com/nokia/tools/configuration/CONFIGURATIONTool.java	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/common/java/src/com/nokia/tools/configuration/CONFIGURATIONTool.java	Thu Mar 04 15:10:37 2010 +0200
@@ -31,7 +31,7 @@
      * Sets the command line variables to be used to execute and validates for
      * the required parameters
      * 
-     * @param VariableSet
+     * @param varSet
      *            variable(name / value list)
      */
     public void execute(VariableSet varSet, Project prj)
--- a/buildframework/helium/tools/common/libs.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/common/libs.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -20,6 +20,7 @@
 
 ============================================================================
 -->
+<!--* @package framework -->
 <project name="libs">
     <description>
         Ant task definition declarations.
@@ -47,5 +48,6 @@
     
     <!-- Nokia internal tasks. -->
     <taskdef resource="com/nokia/ant/antlib.xml" classpathref="lib.path" uri="http://www.nokia.com/helium"/>
+    <taskdef resource="com/nokia/helium/ant/data/antlib.xml" classpathref="lib.path" uri="http://www.nokia.com/helium"/>
         
 </project>
--- a/buildframework/helium/tools/common/logging.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,156 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : logging.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="logging" xmlns:hlm="http://www.nokia.com/helium">
-    <description>
-        Targets related to log parsing, rendaring, upload to diamonds etc.
-    </description>
-    <!-- Merges all XML log files ending in ".log2.xml" in the build log directory
-    into a single summary log file. -->
-    <target name="log-merge"  unless="metadata.enable">
-        <mkdir dir="${build.log.dir}"/>
-        <dependset>
-            <srcfileset dir="${build.log.dir}" includes="**/${build.id}*.log.xml"/>
-            <targetfileset file="${build.summary.file}"/>
-        </dependset>
-        <if>
-            <not>
-                <available file="${build.summary.file}"/>
-            </not>
-            <then>
-                <echo>Merging all *.log.xml files</echo>        
-                <mkdir dir="${build.log.dir}/summary"/>
-                <xmltask  dest="${build.summary.file}">
-                    <insert path="/"  >
-                    <![CDATA[
-                    <logSummary/>
-                    ]]>
-                    </insert>
-                </xmltask>
-                <for param="file">
-                    <path>
-                        <fileset dir="${build.log.dir}">
-                            <include name="**/${build.id}*.log.xml"/>
-                        </fileset>
-                        <fileset dir="${temp.build.dir}">
-                            <include name="**/${build.id}*.log.xml"/>
-                        </fileset>
-                    </path>
-                    <sequential>
-                        <echo>Inserting @{file} into summary.</echo>
-                        <!--<xmltask source="${build.summary.file}"
-                                 dest="${build.summary.file}">
-                           <insert path="/logSummary" file="@{file}" />
-                        </xmltask>-->
-                        <hlm:assertPropertySet property="build.summary.file" message="Property build.summary.file is not defined." />
-                        <script language="jython" setbeans="false">
-# Temporary solution
-import log2xml
-log2xml.append_summary(project.getProperty('build.summary.file'), r'@{file}')
-                        </script>                        
-                    </sequential>
-                </for>
-            </then>
-            <else>
-                <echo>Summary XML log file does not need updating.</echo>
-            </else>
-        </if>
-    </target>
-    
-    
-    <!-- Outputs an HTML readable version of the summary log. -->
-    <target name="render-log-summary">
-        <if>
-            <and>
-                <available file="${build.log.dir}/${build.id}_info.log.xml"/>
-                <available file="${metadata.dbfile}"/>
-            </and>
-            <then>
-                <fmpp sourceFile="${helium.dir}/tools/common/templates/log/summary_metadata.html.ftl"
-                             outputfile="${build.log.dir}/${build.id}_summary.html">
-                    <freemarkerLinks expandProperties="yes">
-                        macro: ${helium.dir}/tools/common/templates/macro
-                    </freemarkerLinks>
-                    <data expandProperties="yes">
-                        dbPath: ${metadata.dbfile}
-                        loginfo: xml(${build.log.dir}/${build.id}_info.log.xml)
-                        ant: antProperties()
-                    </data>
-                </fmpp>
-                <if>
-                    <not>
-                        <available file="${build.log.dir}/${build.id}_summary.html"/>
-                    </not>
-                    <then>
-                        <echo message="Error: failed to generate Summary file" />
-                    </then>
-                </if>
-            </then>
-        </if>
-    </target>
-    
-    <!-- Prepare email for build summary -->
-    <target name="logger-email" depends="log-merge">
-        <fmpp sourceRoot="${helium.dir}/tools/common/templates/log" includes="email.html.ftl" outputRoot="${build.log.dir}/summary"
-              replaceExtension="html.ftl, html">
-            <data expandProperties="yes">
-                doc: xml(${build.summary.file})
-                ant: antProperties()
-            </data>
-        </fmpp>        
-    </target>
-    
-
-    <!-- Test target to show how Diamond metadata could be rendered. -->
-    <target name="render-diamonds-data" depends="log-merge">
-        <mkdir dir="${build.log.dir}/summary/diamonds"/>
-        <fmpp sourceRoot="${helium.dir}/tools/common/templates/diamonds"
-              outputRoot="${build.log.dir}/summary/diamonds" includes="diamonds.xml.ftl"
-              replaceExtension="xml.ftl, xml">
-            <data expandProperties="yes">
-                doc: xml(${build.summary.file})
-                ant: antProperties()
-            </data>
-        </fmpp>
-    </target>
-
-    
-    <!-- Render the CC dashboad summary. -->
-    <target name="render-cc-summary" depends="log-merge">
-        <mkdir dir="${build.log.dir}/summary"/>
-        <fmpp sourceFile="${helium.dir}/tools/common/templates/log/cc_summary_metadata.html.ftl"
-                     outputfile="${build.log.dir}/summary/${build.id}_cc_summary.html">
-            <data expandProperties="yes">
-                dbPath: ${metadata.dbfile}
-                ant: antProperties()
-            </data>
-        </fmpp>
-    </target>
-
-    
-    <!-- Creates a full summary log from all the build logs. -->
-    <target name="build-log-summary" depends="render-log-summary"/>
-    
-    <!-- Test target to check signal. -->
-    <target name="check-signal" />
-    
-</project>
\ No newline at end of file
--- a/buildframework/helium/tools/common/packages/ISIS/Assertion.pm	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,118 +0,0 @@
-#
-# 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: 
-#
-#--------------------------------------------------------------------------------------------------
-# Name   : Assertion.pm
-# Use    : Nokia Automated Build error definitions.
-#
-# Synergy :
-# Perl %name    : % (%full_filespec :  %)
-# %derived_by   : %
-# %date_created : %
-#
-# History :
-#
-# v1.0 (07/10/2005) :
-#  - Fist version of the script.
-#--------------------------------------------------------------------------------------------------
-
-#--------------------------------------------------------------------------------------------------
-#
-#   Assertion package;
-#
-#--------------------------------------------------------------------------------------------------
-
-package ISIS::Assertion;
-
-use strict;
-use warnings;
-
-my $__DEBUG_FLAG;
-
-#--------------------------------------------------------------------------------------------------
-# import and unimport package subroutines.
-#--------------------------------------------------------------------------------------------------
-sub import
-{
-  my ($pkg, %symbols) = (@_);
-  
-  die "Invalid symbols defined\n" if(scalar keys %symbols != (0 + (exists $symbols{_DEBUG})));
-  
-  $__DEBUG_FLAG = !($symbols{_DEBUG} || 0);
-
-  no strict 'refs';
-  
-  my $caller = caller;
-  *{$caller.'::__ASSERT'}      = \&__ASSERT;
-  *{$caller.'::__DBG_MESSAGE'} = \&__DBG_MESSAGE;
-}
-
-sub unimport
-{
-  $__DEBUG_FLAG = 1;
-}
-
-#--------------------------------------------------------------------------------------------------
-# Assertion subroutines.
-#--------------------------------------------------------------------------------------------------
-sub __ASSERT($)
-{
-  __ASSERT_AUX() unless(shift || $__DEBUG_FLAG);
-}
-
-sub __ASSERT_AUX()
-{
-  my $__subroutine = 'unknown';
-  
-  my ($__pkg,   $__file,  $__line, $__sub, $__args,
-      $__array, $__eval,  $__req,  $__ind, $__bmsk);
-    
-  if(($__pkg,   $__file,  $__line, $__sub, $__args,
-      $__array, $__eval,  $__req,  $__ind, $__bmsk) = caller(2))
-  {
-    $__subroutine = $__sub;
-  }
-  
-  if(($__pkg,   $__file,  $__line, $__sub, $__args,
-      $__array, $__eval,  $__req,  $__ind, $__bmsk) = caller(1))
-  {
-    
-    my ($__file_handle, $__expression, $__i) = (undef, 'unknown', 0);
-
-    open($__file_handle, $__file);
-    while($__i != $__line) { $__expression = <$__file_handle>; ++$__i; }
-    close($__file_handle);
-    
-    ($__expression) = ($__expression =~ /__ASSERT\((.*)\)/);    
-    
-    die "File \'$__file\' line \'$__line\' - Assertion Failed!\n".
-        "   In $__subroutine : \'$__expression\' was evaluated to false.\n";
-    
-  } 
-}
-
-#--------------------------------------------------------------------------------------------------
-# Debug message output on standard output.
-#--------------------------------------------------------------------------------------------------
-sub __DBG_MESSAGE(@)
-{
-  print STDERR @_ unless($__DEBUG_FLAG);
-}
-
-1;
-
-#--------------------------------------------------------------------------------------------------
-# End of file.
-#--------------------------------------------------------------------------------------------------
--- a/buildframework/helium/tools/common/packages/ISIS/Build.pm	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,120 +0,0 @@
-#
-# 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: 
-#
-#------------------------------------------------------------------------------
-# Name   : Build.pm
-# Use    : Build an TBS xml using specific tools
-
-#
-# Version History :
-#
-# v1.0 (25/05/2006) :
-#  - Fist version of the script.
-#------------------------------------------------------------------------------
-
-#------------------------------------------------------------------------------
-# package Build::TBS;
-#------------------------------------------------------------------------------
-package Build::TBS;
-use strict;
-use ISIS::GenBuildTools;
-
-sub Build
-{
-	my ($xml, $logname) = (shift, shift);
-	&GenBuildTools::BuildTBS($xml, $logname);
-}
-
-sub IsAvailable()
-{
-	# TBS is always available
-	return 1;
-}
-1;
-
-#------------------------------------------------------------------------------
-# package Build::EC;
-#------------------------------------------------------------------------------
-package Build::EC;
-use strict;
-use ISIS::ECloud;
-
-sub Build
-{
-	my ($xml, $logname) = (shift, shift);
-	my $ec = new ECloud();
-	$ec->Execute( $xml );	
-}
-
-sub IsAvailable()
-{
-	return (-e "C:\\ECloud\\i686_win32\\bin\\emake.exe");
-}
-1;
-
-#------------------------------------------------------------------------------
-# package Build;
-#------------------------------------------------------------------------------
-package Build;
-use strict;
-
-# ISIS constants.
-use constant ISIS_VERSION 		=> '1.0.0';
-use constant ISIS_LAST_UPDATE => '25/05/2006';
-
-#------------------------------------------------------------------------------
-# Package Function
-#------------------------------------------------------------------------------
-my %__tools;
-BEGIN {
-%__tools = (  'ec'  => 'Build::EC',
-							'tbs' => 'Build::TBS');
-}
-
-
-sub Build
-{
-	my ( $xml, $logname, $buildtool ) = (shift, shift, shift || 'auto');
-	
-	$buildtool = &GetFirstAvailableBS() if ($buildtool eq "auto");
-	
-	# default is TBS if build tool not found
-	$buildtool = 'tbs' unless ( exists( $__tools{ $buildtool } ) );
-	
-	no strict 'refs';
-	my $method = $__tools{$buildtool}."::Build";
-	return &$method($xml, $logname);	
-}
-
-sub GetFirstAvailableBS()
-{
-	foreach my $tool ( keys (%__tools) )
-	{
-		no strict 'refs';
-		my $method = $__tools{$tool}."::IsAvailable";
-		return $tool if ( &$method() );
-	}
-	return 'tbs';
-}
-
-sub GetSupportedTools()
-{
-	return keys (%__tools);
-}
-
-1;
-#------------------------------------------------------------------------------
-# End of file.
-#------------------------------------------------------------------------------
--- a/buildframework/helium/tools/common/packages/ISIS/BuildStat/Statistics.pm	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,126 +0,0 @@
-#
-# 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: 
-#
-#------------------------------------------------------------------------------
-# Name   : Statistics.pm
-# Use    : description.
-
-#
-# Version History :
-#
-# v1.0 (03/05/2006) :
-#  - Fist version of the script.
-#------------------------------------------------------------------------------
-package Statistics;
-use strict;
-use ISIS::XMLManip;
-use Time::HiRes;
-use HTTP::Request::Common;
-use LWP::UserAgent;
-
-
-# ISIS constants.
-use constant ISIS_VERSION 		=> '1.0.0';
-use constant ISIS_LAST_UPDATE => '03/05/2006';
-
-#------------------------------------------------------------------------------
-# Package Function
-#------------------------------------------------------------------------------
-
-sub new
-{
-	my ($class, $type, $id, $toolchain) = @_;
-	my $self = {
-			__type => $type,
-			__id => $id,
-			__tools => $toolchain,
-			__date => Time::HiRes::time(),
-			__steps => undef,
-			__cstep => undef,
-		};
-	return bless $self, $class;
-}
-
-
-sub AddStep
-{
-	my ($self, $name, $buildtime) = @_;
-	my $h = { 'name' => $name, 'buildtime' => $buildtime};
-	push 	@{$self->{__steps}}, $h;
-}
-
-sub StartStep
-{
-	my ($self, $name) = @_;
-	$self->{__cstep}->{'name'} = $name;
-	$self->{__cstep}->{'starttime'} = Time::HiRes::time();
-}
-
-sub StopStep
-{
-	my ($self) = @_;
-	$self->{__cstep}->{'buildtime'} = Time::HiRes::time() - $self->{__cstep}->{'starttime'};
-	$self->AddStep($self->{__cstep}->{'name'}, $self->{__cstep}->{'buildtime'});
-	$self->{__cstep} = undef;
-}
-
-sub GenerateXML
-{
-	my ($self, $filename) = @_;
-	open (OUT, $filename);
-	close (OUT);
-	my $rootNode = new XMLManip::Node('statistics');
- 
- 	my $buildinfo = new XMLManip::Node('buildinfo',  { type => $self->{__type},
- 		 					id => $self->{__id},
-			 		  tools => $self->{__tools},
-			 		  date => $self->{__date} });
- 	$rootNode->PushChild($buildinfo);
- 	 		
-	foreach my $step ( @{$self->{__steps}} )
-	{
-		my $xstep = new XMLManip::Node('step', {name => $step->{'name'}, time => $step->{'buildtime'}});
-		
-		$buildinfo->PushChild( $xstep );
-	}
- 
-	&XMLManip::WriteXMLFile($rootNode, $filename);
-}
-
-sub GenerateXMLAndUpload
-{
-	my ($self, $server) = @_;
-	my $filename = '/statistics.xml';
-	$self->GenerateXML( $filename );
-
-	$HTTP::Request::Common::DYNAMIC_FILE_UPLOAD = 1;
-
-
-	my $hash = {
-			'data_file' => [ $filename ],
-			'filename' => 'statistics.txt'
-		};
-	
-	#my $request = HTTP::Request->new( );
-	my $ua = LWP::UserAgent->new;
-	my $response = $ua->request(POST "$server", 'Content-Type' => 'multipart/form-data', Content => $hash );
-	print $response->as_string."\n";
-
-}
-
-1;
-#------------------------------------------------------------------------------
-# End of file.
-#------------------------------------------------------------------------------
--- a/buildframework/helium/tools/common/packages/ISIS/Cellmo.pm	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,105 +0,0 @@
-#
-# 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: 
-#
-#------------------------------------------------------------------------------
-# Name   : Cellmo.pm
-# Use    : description.
-
-#
-# Synergy :
-# Perl %name: Cellmo.pm % (%full_filespec:  Cellmo.pm-6:perl:fa1s60p1#1 %)
-# %derived_by:  wbernard %
-# %date_created:  Fri Jul  7 15:15:47 2006 %
-#
-# Version History :
-#
-# v1.0 (29/11/2005) :
-#  - Fist version of the package.
-#------------------------------------------------------------------------------
-
-package ISIS::Cellmo;
-use strict;
-use ISIS::Logger2;
-use ISIS::Registry;
-
-# ISIS constants.
-use constant ISIS_VERSION 		=> '1.0';
-use constant ISIS_LAST_UPDATE => '29/11/2005';
-
-# default configuration file
-use constant ROOT_SCRIPTS_DIR   => "/isis_sw/build_config/";
-use constant REG_CONFIG_FILE    => ROOT_SCRIPTS_DIR."registry.xml";
-
-#------------------------------------------------------------------------------
-# Package's subroutines
-#------------------------------------------------------------------------------
-
-#------------------------------------------------------------------------------
-# GetCellmo
-#
-# - Backward compatibility for CreatelocalisationROM.pl
-# - Get Cellmo by product.
-#------------------------------------------------------------------------------
-sub GetCellmo
-{
-	my ( $product ) = @_;
-	return undef unless ( $product );
-
-	# Load the default configuration
-	my $resgistry = new Registry( REG_CONFIG_FILE, { error_level => 1 });
-	
-	# Call method used by NAB
-	return GetCellmoFromConfig($product, "undefined", "undefined",  $resgistry);
-}
-
-#------------------------------------------------------------------------------
-# GetCellmoFromConfig
-#------------------------------------------------------------------------------
-sub GetCellmoFromConfig
-{
-	my ( $product, $buildtype, $flags, $registry ) = @_;
-	
-	my $id = $registry->{'cellmos'}->{$product}->{'id'};
-	my $dir = $registry->{'cellmos'}->{$product}->{'dir'};
-
-	return &__GetCellmoFromDir($dir, $id);
-}
-
-
-#------------------------------------------------------------------------------
-# Internal
-#------------------------------------------------------------------------------
-sub __GetCellmoFromDir
-{
-	my ( $dir, $id ) = @_;
-	
-	my $entry;
-		
-	opendir ( DIRH, $dir )  or OUT2XML::Error ("couldn't open: $!", ERR::INVALID_PATH); 
-	while ($entry  = readdir(DIRH)) {
-		if ($entry =~ m/$id.*\.cmt/i)
-		{
-			return "$dir\\$entry";
-		}			
-	} 
-	closedir ( DIRH ); 
-	return undef;
-}
-
-
-1;
-#------------------------------------------------------------------------------
-# End of file.
-#------------------------------------------------------------------------------
--- a/buildframework/helium/tools/common/packages/ISIS/CppManip.pm	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,207 +0,0 @@
-#
-# 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: 
-#
-#--------------------------------------------------------------------------------------------------
-# Name : CppManip.pm
-# Use  : Generate HTML versions of C/C++ source code.
-#
-# Synergy :
-# Perl %name    : % (%full_filespec :  %)
-# %derived_by   : %
-# %date_created : %
-#
-# History :
-# v1.0.1 (09/02/2006)
-#  - Updated regular expression generations to take place in BEGIN block.
-#
-# v1.0.0 (06/02/2006)
-#  - Fist version of the script.
-#--------------------------------------------------------------------------------------------------
-
-package CPPManip;
-
-use strict;
-use warnings;
-
-use constant ISIS_VERSION     => '1.0.1';
-use constant ISIS_LAST_UPDATE => '09/02/2006';
-
-#--------------------------------------------------------------------------------------------------
-# Symbols and Keywords for C++.
-#--------------------------------------------------------------------------------------------------
-my (@__keywords, @__preprocessors, @__symbols);
-my ($symbols, $string, $character, @keywords, @preprocessors, $elememts);
-
-BEGIN
-{
-	@__keywords = 
-	(
-	  'class', 'auto', 'break', 'bool', 'case', 'char', 'const', 'continue', 'catch', 'const_cast',
-	  'default', 'delete', 'do', 'double', 'dynamic_cast', 'else', 'enum', 'explicit', 'export', 'extern',
-	  'false', 'float', 'for', 'friend', 'goto', 'if', 'inline', 'int', 'long', 'mutable', 'new', 'namespace',
-	  'operator', 'private', 'protected', 'public', 'register', 'reinterpret_cast', 'return', 'short',
-	  'signed', 'sizeof', 'static', 'static_cast', 'struct', 'switch', 'template', 'this', 'throw', 'true',
-	  'try', 'typedef', 'typeid', 'typename', 'union', 'unsigned', 'using', 'virtual', 'void', 'volatile',
-	  'wchar_t', 'while', '__asm', '__based', '__cdecl', '__declspec', '__except', '__far', '__fastcall',
-	  '__finally', '__fortran', '__huge', '__inline', '__int16', '__int32', '__int64', '__int8', '__interrupt',
-	  '__leave', '__loadds', '__multiple_inheritance', '__near', '__pascal', '__saveregs', '__segment',
-	  '__segname', '__self', '__single_inheritance', '__stdcall', '__try', '__uuidof', '__virtual_inheritance',
-	);
-	
-	@__preprocessors =
-	( 
-	  'defined', '#define', '#error', '#include', '#elif', '#ifndef', '#ifdef',
-	  '#if', '#line', '#else', '#pragma', '#endif', '#undef',
-	);
-	
-	@__symbols =
-	( 
-	  '\*', '\/', '\+', '\-', '\&', '=', '\!', '\?', '\:', '\;', '\,', '\~',
-	  '\(', '\)', '\<', '\>', '\[', '\]', '\{', '\}', '\s+'
-	);
-	
-	$symbols       = '(['.join('', @__symbols).']+)';
-	$string        = '(\"[^\"]*\")';
-	$character     = "(\'[^\']*\')";
-	@keywords      = map { '[^\w_-]+('.$_.')[^\w_-]+' } @__keywords;
-	@preprocessors = map { '('.$_.')' } @__preprocessors;
-	$elements      = join('|', $string, $character, $symbols, @preprocessors, @keywords);
-}
-
-#--------------------------------------------------------------------------------------------------
-# Main subroutine.
-#--------------------------------------------------------------------------------------------------
-sub new
-{
-	my ($class, $input, $ostream, $css) = (shift, shift, shift);
-	
-	bless { __input   => $input, 
-		      __ostream => $ostream,
-					__classes => $css || {},
-				}, $class;
-}
-
-sub SetClass
-{
-	my ($self, $type, $class) = (shift, shift, shift);
-	
-	$self->{__classes}->{$type} = $class;
-}
-
-sub Format
-{	
-	my ($self, $code, $cmt, $inCmt) = (shift, undef, undef, 0);
-	my $OUT = $self->{__ostream};
-	
-	open(IN, $self->{__input}) or die "Unable to open file ".$self->{__input}." : $!\n";
-	
-	print $OUT "<PRE class=\"", $self->{__classes}->{pre} || 'code_sample', "\">\n";
-
-	while(my $line = <IN>)
-	{
-		if($line =~ /^\s*$/)
-		{
-			print $OUT $line;
-		}
-		elsif($inCmt)
-		{
-			if(($cmt, $code) = ($line =~ /^(.*\*\/)(.*?)\n$/))
-			{
-				$inCmt = 0;
-				print $OUT $self->__format_comment($cmt),
-				           $self->__format_code($code),
-				           "\n";
-			}
-			else
-			{
-				chomp($line);
-				print $OUT $self->__format_comment($line),
-				           "\n";
-			}
-		}
-		elsif(($code, $cmt) = ($line =~ /^(.*?)(\/\/.*)\n$/))
-		{
-			print $OUT $self->__format_code($code),
-			           $self->__format_comment($cmt),
-			           "\n";
-		}
-		elsif($line =~ s/(\/\*.*\*\/)/<span class=\"code_cmt\">$1<\/span>/g)
-		{
-			print $OUT $line;
-		}
-		elsif(($code, $cmt) = ($line =~ /^(.*?)(\/\*.*)\n$/))
-		{
-			$inCmt = 1;
-			print $OUT $self->__format_code($code),
-			           $self->__format_comment($cmt),
-			           "\n";
-		}
-		else
-		{
-			print $OUT $self->__format_code($line);
-		}
-	}
-	
-	print $OUT "</PRE>\n";
-	
-	close(IN);
-}
-
-#--------------------------------------------------------------------------------------------------
-# Formatting subroutines.
-#--------------------------------------------------------------------------------------------------
-sub __format_code
-{
-	my ($self, $code, $found) = (shift, shift, 0);
-	my @__code = grep{ $_ } split($elements, $code);
-	
-	foreach (@__code)
-	{
-		next if(/^\s*$/);
-		next if(s/^(\".*\")$/"<span class=\"".($self->{__classes}->{str} || 'code_str')."\">$1<\/span>"/e);
-		next if(s/^(\'.*\')$/"<span class=\"".($self->{__classes}->{chr} || 'code_chr')."\">$1<\/span>"/e);
-		next if(s/($symbols)/"<span class=\"".($self->{__classes}->{smb} || 'code_smb')."\">$1<\/span>"/e);
-		
-		$found = 0;
-		
-		foreach my $kwd (@__keywords)
-		{ if(s/^($kwd)$/"<span class=\"".($self->{__classes}->{kwd} || 'code_kwd')."\">$1<\/span>"/e)
-			{ $found = 1; last; }
-		}
-
-		next if($found);
-
-		foreach my $kwd (@__preprocessors)
-		{ if(s/^($kwd)$/"<span class=\"".($self->{__classes}->{pp} || 'code_pp')."\">$1<\/span>"/e)
-			{ $found = 1; last; }
-		}
-	}
-	
-	return join('', @__code);
-}
-
-sub __format_comment
-{
-	my ($self, $cmt) = (shift, shift);
-
-	$cmt =~ s/(.*)/"<span class=\"".($self->{__classes}->{cmt} || 'code_cmt')."\">$1<\/span>"/e;
-	return $cmt;
-}
-
-1;
-
-#--------------------------------------------------------------------------------------------------
-# End of file.
-#--------------------------------------------------------------------------------------------------
--- a/buildframework/helium/tools/common/packages/ISIS/ECloud.pm	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,466 +0,0 @@
-#
-# 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: 
-#
-#--------------------------------------------------------------------------------------------------
-# Name   : ECloud.pm
-# Path   : D:\Work\isis_sw\build_tools\packages\ISIS\
-# Use    : Manage ECloud instances.
-#
-# Synergy :
-# Perl %name: ECloud.pm % (%full_filespec: ECloud.pm-1.1.6:perl:fa1s60p1#2 %)
-# %derived_by: wbernard %
-# %date_created: Fri Jul  7 15:15:54 2006 %
-#
-# Version History :
-# v1.0.1 (30/03/2006)
-#  - Updated ecloud patching.
-#
-# v1.0.0 (16/02/2006) :
-#  - First version of the module.
-#--------------------------------------------------------------------------------------------------
-
-#--------------------------------------------------------------------------------------------------
-#
-#   ECloud package.
-#
-#--------------------------------------------------------------------------------------------------
-
-package ECloud;
-
-use strict;
-use warnings;
-use ISIS::XMLManip;
-use ISIS::Logger3;
-use ISIS::Registry;
-use Cwd;
-
-use constant ISIS_VERSION     => '1.0.0';
-use constant ISIS_LAST_UPDATE => '16/02/2006';
-use constant ISIS_EC_CONFIG   => '\\isis_sw\\build_tools\\ec_configs.xml';
-
-my @__batchs;
-my @__generators;
-my @__abld;
-
-BEGIN
-{
-	@__batchs = map { $ENV{EPOCROOT}.'epoc32\\tools\\'.$_ } ('alp2csh.bat', 'bldmake.bat', 'CHARCONV.BAT', 'CNVTOOL.BAT', 'cshlpcmp.bat', 'efreeze.bat', 'epocrc.bat', 'eshell.bat', 'evalid.bat', 'fixupsym.bat', 'genbuild.bat', 'hpsym.bat', 'instcol.bat', 'makmake.bat', 'maksym.bat', 'memtrace.bat', 'metabld.bat', 'SNMTOOL.BAT', 'splitlog.bat');
-	@__generators = ($ENV{EPOCROOT}.'epoc32\\tools\\bldmake.pl', $ENV{EPOCROOT}.'src\\cedar\\generic\\tools\\e32toolp\\bldmake\\bldmake.pl');
-	@__abld = ($ENV{EPOCROOT}.'epoc32\\tools\\abld.pl', $ENV{EPOCROOT}.'src\\cedar\\generic\\tools\\e32toolp\\bldmake\\abld.pl');
-}
-
-## @function GetAgentByNodeList
-# This function return a hash of node available on the cluster.
-# Each hash is node contains the number of agent on the cluster.
-#
-sub GetAgentByNodeList
-{	
-	my %list;
-	my $regfile  = new Registry(ISIS_EC_CONFIG, { error_level => 0 });
-	my $registry = $regfile->{'ec_configs'}->{'basic'};
-	my $cmd = "cmtool --cm=".$registry->{'cluster_manager'}." getagents";
-
-	my @res = `$cmd`;
-	shift(@res);
-
-	foreach my $line (@res)
-	{		
-		my @r = split(',', $line);
-		$list{$r[2]}->{$r[1]}->{'BuildId'} = $r[7];
-	}
-	return \%list;
-}
-
-##
-#
-#
-sub ClusterExecute
-{
-	my ($node, $command) = (shift,shift);
-	my $regfile  = new Registry(ISIS_EC_CONFIG, { error_level => 1 });
-	my $registry = $regfile->{'ec_configs'}->{'basic'};
-	my $cm = $registry->{'cluster_manager'};
-	
-	system ( "C:\\ECloud\\i686_win32\\bin\\clusterexec.exe --cm=$cm --nodes=$node --use-shell \"$command\"" );
-}
-
-#--------------------------------------------------------------------------------------------------
-# Constructor.
-#--------------------------------------------------------------------------------------------------
-sub new
-{
-	my ($class, $configtype, $custom) = (shift, shift || 'basic', shift || {});
-	
-	my $regfile  = new Registry(ISIS_EC_CONFIG, { error_level => 1 });
-	my $registry = $regfile->{'ec_configs'}->{$configtype};
-	
-	my $var = bless {
-		__volatile_opts   => __ec_volatile_types->new(),
-		__emulation_table => __ec_emulation_table->new(),
-		__root_dir        => $ENV{EPOCROOT},
-	}, $class;
-
-	foreach my $key (keys %$registry)
-	{ $var->{'__'.$key} = $registry->{$key}; }
-
-	foreach my $key (keys %$custom)
-	{ $var->{'__'.$key} = $custom->{$key}; }
-
-	return $var;
-}
-
-#--------------------------------------------------------------------------------------------------
-sub AUTOLOAD
-{
-	my ($self, $method) = (shift, our $AUTOLOAD);
-	return if $method =~ /::DESTROY$/;
-	
-	my $key = $method;
-	$key =~ s/^.*\:\://g;
-	$key =~ s/([A-Z])/ $1/g;
-	$key = '__'.join('_', map { lc($_) } split(' ', $key));
-
-	unless(exists $self->{$key})
-	{
-		warn "Method $method is invalid!\n";
-		return;
-	}
-
-	$self->{$key} = shift if @_;
-	return $self->{$key};
-}
-
-#--------------------------------------------------------------------------------------------------
-sub Emulation
-{
-	my ($self, $make) = (shift, shift);
-	return $self->{__emulation_table}->Emulation($make, @_);
-}
-
-#--------------------------------------------------------------------------------------------------
-sub AddVolatileType
-{
-	my ($self) = (shift);
-	foreach my $type (@_)
-	{ $self->{__volatile_opts}->VolatileType($type, 1); }
-}
-
-#--------------------------------------------------------------------------------------------------
-sub RemoveVolatileType
-{
-	my ($self) = (shift);
-	foreach my $type (@_)
-	{ $self->{__volatile_opts}->VolatileType($type, 0); }
-}
-
-#--------------------------------------------------------------------------------------------------
-# Parameters:        %1 = log directory                              
-#                    %2 = history filename prefix                    
-#                    %3 = xml/makefile name                          
-#                    %4 = directory (incl. trailing \) of xml file   
-#                    %5 = build label                                
-#                    %6 = Top level target (defaults to all)     
-
-# %EC_BIN_DIR%\emake --emake-priority=%EC_PRIORITY%
-#                    --emake-maxnodes=%EC_MAXNODES%
-#                    --emake-job-limit=%EC_JOBLIMIT%
-#                    --emake-mem-limit=%EC_MAXMEM%
-#                    --emake-volatile=%EC_VOLATILE_OPTS%
-#                    --emake-history=merge
-#                    --emake-emulation-table make=symbian,emake=symbian,nmake=nmake
-#                    --emake-class=%EC_BUILDCLASS%
-#                    --emake-build-label=%EC_BUILDLABEL%
-#                    --emake-cm=%EC_CM%
-#                    --emake-root=%EPOCROOT%
-#                    --emake-debug=%EC_DEBUG_OPTS%
-#                    --emake-logfile=%EC_LOG_DIR%%1\%1.%EC_TARGET%.emake.%EC_DEBUG_OPTS%.dlog
-#                    --emake-annodetail=%EC_ANNO_OPTS%
-#                    --emake-annofile=%EC_LOG_DIR%%1\%1.%EC_TARGET%.emake.anno.xml
-#                    --emake-historyfile=%EC_HISTORY_DIR%%2.%EC_TARGET%.emake.data %EC_NOREG%
-#                    -f %EC_MAKEFILE_DIR%%EC_TARGET% %EC_PRINTDIRECTORY% %EC_TOPLEVELTGT% 2>&1 | \ec\tools\tee %EC_LOG_DIR%%1\%1.%EC_TARGET%.emake.stdout    
-#--------------------------------------------------------------------------------------------------
-sub Command
-{
-	my ($self, $xml) = (shift, shift || '\%TARGET\%');
-	$xml =~ s/\.xml$//;
-	
-	return join('', $self->{__bin_dir}, "emake ",
-	                " --emake-priority=", $self->{__priority},
-	                " --emake-maxnodes=", $self->{__max_nodes},
-	                " --emake-job-limit=", $self->{__job_limit},
-	                " --emake-mem-limit=", $self->{__mem_limit},
-	                " --emake-volatile=", $self->{__volatile_opts}->Print(),
-	                " --emake-history=", $self->{__history_opts},
-	                " --emake-emulation-table ", $self->{__emulation_table}->Print(),
-	                " --emake-class=", $self->{__build_class},
-	                " --emake-build-label=", $self->{__build_label},
-	                " --emake-cm=", $self->{__cluster_manager},
-	                " --emake-root=", $self->{__root_dir},
-	                " --emake-debug=", $self->{__debug_opts},
-	                " --emake-logfile=", $self->{__log_dir}, $xml, ".emake.", $self->{__debug_opts}, ".dlog",
-	                " --emake-annodetail=", $self->{__anno_opts},
-	                " --emake-annofile=", $self->{__log_dir}, $xml, ".emake.anno.xml",
-	                " --emake-historyfile=", $self->{__history_dir}, lc($self->{__build_class}), '_', $xml, '_history.emake.data',
-	                " -f ", $self->{__makefile_dir}, $xml, " ", $self->{__print_dir}, " ", $self->{__top_level_tgt}, " 2>&1",
-	                " | ", $self->{__tools_dir},"tee ", $self->{__log_dir}, lc($self->{__build_class}), '_', $xml, '.emake.stdout');
-}
-
-#--------------------------------------------------------------------------------------------------
-sub Execute
-{
-	my ($self, $xmlInput, $patch) = (shift, shift, shift);
-	$patch = 1 unless (defined($patch));
-	
-	$self->__patch_symbian_code() if ($patch);
-	
-	# Execute emake
-	my $cmd = $self->Command($xmlInput);
-	print "----------------------------------------------------------------------------\n";
-	print "$cmd";
-	print scalar(`$cmd`), "\n";
-	print "----------------------------------------------------------------------------\n";
-	
-	# Collect agent performance metrics for the run
-	system('tclsh '.$self->{__tools_dir}.'agentcmd --cm='.$self->{__cluster_manager}."\"session performance\" > ".$self->{__log_dir}.$xmlInput.'.agentraw');
-	system('tclsh '.$self->{__tools_dir}.'agentsummary '.$self->{__log_dir}.$xmlInput.'.agentraw > '.$self->{__log_dir}.$xmlInput.'.agentstats');
-	system('copy '.$self->{__history_dir}.lc($self->{__build_class}).'_'.$xmlInput.'_history.emake.data '.$self->{__log_dir});
-	
-	$self->__unpatch_symbian_code()  if ($patch);
-}
-
-sub ExecuteXML
-{
-	my ($self, $xmlInput) = (shift, shift);
-	my ($path, $file) = ($xmlInput =~ /^(.*?)([^\\\/]+)\.xml$/);
-	
-	$ENV{PATH} = $self->{__bin_dir}.';'.$ENV{PATH};
-	$self->{__build_label} = uc($file) if($self->{__build_label} eq 'NOLABEL');
-	
-	$self->__generate_makefiles($path, $file);
-	
-	$self->__patch_symbian_code();
-	
-	# Execute emake
-	my $cmd = $self->Command($file);
-	print "----------------------------------------------------------------------------\n";
-	print scalar(`$cmd`), "\n";
-	print "----------------------------------------------------------------------------\n";
-	
-	# Collect agent performance metrics for the run
-	system('tclsh '.$self->{__tools_dir}.'agentcmd --cm='.$self->{__cluster_manager}."\"session performance\" > ".$self->{__log_dir}.$file.'.agentraw');
-	system('tclsh '.$self->{__tools_dir}.'agentsummary '.$self->{__log_dir}.$file.'.agentraw > '.$self->{__log_dir}.$file.'.agentstats');
-	system('copy '.$self->{__history_dir}.lc($self->{__build_class}).'_'.$file.'_history.emake.data '.$self->{__log_dir});
-	
-	$self->__unpatch_symbian_code();
-}
-
-#--------------------------------------------------------------------------------------------------
-sub __generate_makefiles
-{
-	my ($self, $path, $file) = (shift, shift, shift);
-	
-	system('md '.$self->{__makefile_dir}) unless(-e $self->{__makefile_dir});
-
-	my $cmd  = $self->{__perl_dir}.'perl.exe ';
-	$cmd    .= '\\isis_sw\\build_tools\\packages\\ISIS\\xml2mak.pl -multi -noserialize ';
-	$cmd    .= '-name='.$self->{__makefile_dir}.$file.' -input='.$path.$file.'.xml';
-
-	print "----------------------------------------------------------------------------\n";
-	print scalar `$cmd`, "\n";
-}
-
-#--------------------------------------------------------------------------------------------------
-sub __patch_symbian_code
-{
-	my ($self) = (shift);
-	
-	print "---------------------------------------\n";
-	print "current working directory :\n";
-	print cwd(), "\n";
-	print "---------------------------------------\n";
-
-	# backup makefiles.
-	print("backing-up makefiles\n");
-	system('md '.$self->{__ec_dir}.'assets') unless(-e $self->{__ec_dir}.'assets');
-	system('xcopy /Y /I '.$self->{__makefile_dir}.' '.$self->{__ec_dir}.'assets');
-	
-	# backup symbian gnu make.
-	print("backing-up symbian gnu make\n");
-	system('copy /Y '.$ENV{EPOCROOT}.'epoc32\\tools\\make.exe '.$ENV{EPOCROOT}.'epoc32\\tools\\make.symbian.exe');
-	
-	# patch .bat files which call perl using %PATH% to call perl explicitly.
-	print("patching batch files\n");
-	foreach my $bat (@__batchs)
-	{
-		print "Patching file \'$bat\': ";
-		system('attrib -r $bat');
-		system('move /Y '.$bat.'.make_orig '.$bat) if(-e $bat.'.make_orig');
-		system('copy /Y '.$bat.' '.$bat.'.make_orig');
-		system($self->{__perl_dir}."perl.exe -Wpe \"s/perl /C:\\\\\\\\APPS\\\\\\\\actperl_5.6.1_635\\\\\\\\bin\\\\\\\\perl.exe /\" < ".$bat.'.make_orig > '.$bat);
-	}
-
-	# patch abld
-	print("patching abld files\n");
-	foreach my $abld (@__abld)
-	{
-		system("attrib -r $abld");
-		system("move /y $abld.make_orig $abld") if ( -e "$abld.make_orig");
-		system("copy $abld $abld.make_orig");
-		system($self->{__perl_dir}."perl.exe -Wpe \"next if (/WHAT/); s/make -r/emake -i -r/\" < $abld.make_orig > $abld");		
-	}
-	
-	# patch scripts that generate .bat files which call perl using %PATH% to call perl explicitly.
-	print("patching scripts that generate batch files\n");
-	foreach my $gen (@__generators)
-	{
-		print "Patching file \'$gen\': ";
-		system('attrib -r $gen');
-		system('move /Y '.$gen.'.make_orig '.$gen) if(-e $gen.'.make_orig');
-		system('copy /Y '.$gen.' '.$gen.'.make_orig');
-		system($self->{__perl_dir}."perl.exe -Wpe \"s/perl -S /C:\\\\\\\\APPS\\\\\\\\actperl_5.6.1_635\\\\\\\\bin\\\\\\\\perl.exe -S /\" < ".$gen.'.make_orig > '.$gen);
-	}
-}
-
-#--------------------------------------------------------------------------------------------------
-sub __unpatch_symbian_code
-{
-	my ($self) = (shift);
-	
-	system('del '.$self->{__root_dir}.'epoc32\\tools\\make.symbian.exe');
-	
-	# restore default batch files.
-	print ("unpatching batch files\n");
-	foreach my $bat (@__batchs)
-	{
-		print "Restoring file \'$bat\': ";
-		system('move /Y '.$bat.'.make_orig '.$bat) if(-e $bat.'.make_orig');
-	}
-
-	# unpatch abld's.
-	print("patching abld files\n");
-	foreach my $abld (@__abld)
-	{
-		print "Restoring file \'$abld\': ";
-		system('move /Y '.$abld.'.make_orig '.$abld) if(-e $abld.'.make_orig');
-	}
-	
-	# unpatch bldmake.pl s.
-	print ("unpatching generators\n");
-	foreach my $gen (@__generators)
-	{
-		print "Restoring file \'$gen\': ";
-		system('move /Y '.$gen.'.make_orig '.$gen) if(-e $gen.'.make_orig');
-	}
-}
-
-1;
-
-#--------------------------------------------------------------------------------------------------
-#
-#   ECloud Emulation Table.
-#
-#--------------------------------------------------------------------------------------------------
-package __ec_emulation_table;
-
-sub new
-{
-	bless { make  => 'symbian',
-		      emake => 'symbian',
-		      nmake => 'nmake',
-		    }, shift;
-}
-
-sub Emulation
-{
-	my ($self, $make) = (shift, shift);
-	return unless exists $self->{$make};
-	
-	$self->{$make} = shift if @_;
-	return $self->{$make};
-}
-
-sub Print
-{
-	my $self = shift;
-	return join(',', map { $_.'='.$self->{$_} } keys %{$self});
-}
-
-1;
-
-#--------------------------------------------------------------------------------------------------
-#
-#   ECloud Volatile Types.
-#
-#--------------------------------------------------------------------------------------------------
-package __ec_volatile_types;
-
-sub new
-{
-	bless { def   => 1,
-		      info  => 1,
-		      class => 1,
-		      mmp   => 1,
-		    }, shift;
-}
-
-sub VolatileType
-{
-	my ($self, $type, $add_or_remove) = (shift, shift, shift);
-	$type =~ s/^\.//g;
-	
-	if($add_or_remove)
-	{ $self->{$type} = 1; }
-	else
-	{ delete $self->{$type}; }
-}
-
-sub Print
-{
-	my $self = shift;
-	return join(',', map { '.'.$_ } keys %{$self});
-}
-
-1;
-
-__END__
-
-#--------------------------------------------------------------------------------------------------
-# Documentation.
-#--------------------------------------------------------------------------------------------------
-
-=pod
-
-=head1 NAME
-
-	ISIS::ECloud - Electric Cloud module.
-
-=head1 SYNOPSIS
-
-	use ISIS::ECloud;
-	
-	# Create a new ecloud instance with max nodes to 100.
-	my $ec = new ECloud({ max_nodes => 100 });
-	
-	$ec->MemLimit(100000);
-	
-	$ec->Execute('full_build.xml');
-
-=head1 DESCRIPTION
-
-=cut
-
-#--------------------------------------------------------------------------------------------------
-# End of file.
-#--------------------------------------------------------------------------------------------------
--- a/buildframework/helium/tools/common/packages/ISIS/EmbeddedScanLog.pm	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,244 +0,0 @@
-#
-# 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: 
-#
-#------------------------------------------------------------------------------
-# Name   : EmbeddedScanLog.pm
-# Use    : description.
-
-#
-# Synergy :
-# Perl %name: EmbeddedScanLog.pm % (%full_filespec:  EmbeddedScanLog.pm-6:perl:fa1s60p1#1 %)
-# %derived_by:  wbernard %
-# %date_created:  Fri May  5 15:58:07 2006 %
-#
-# Version History :
-#
-# v1.1.1 (05/05/2006) :
-#  - EmbeddedScanLog::ElectricCloud managed TBS output
-#
-# v1.1.0 (29/03/2006) :
-#  - EmbeddedScanLog::TBS created
-#  - EmbeddedScanLog::ElectricCloud created
-#  - EmbeddedScanLog autoselect correct parser.
-#
-# v1.0.0 (09/02/2006) :
-#  - Fist version of the package.
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# TBS Package's subroutines
-#------------------------------------------------------------------------------
-package EmbeddedScanLog::TBS;
-use strict;
-use ISIS::ScanLogTBS;
-
-
-# ISIS constants.
-use constant ISIS_VERSION 		=> '1.1.0';
-use constant ISIS_LAST_UPDATE => '29/03/2006';
-
-
-sub new
-{
-	my ( $class, $logname ) = @_;		
-  bless { _logname => $logname
-        }, $class;
-}
-
-sub GetDisplayName
-{
-	my $self = shift;
-	$self->{_logname} =~ /\S*(?:\\|\/)(\S+)(_build_tbs)?_bld\.log$/;
-	return "$1";
-}
-
-sub Generate
-{
-	my $self = shift;
-	my $scanlog = new ScanLogTBS  ( $self->{_logname} );
-	return $scanlog->GenerateDataStructure();
-}
-
-sub IsValidLogName($)
-{
-	my $logname = shift;
-	return 1 if ($logname =~ /_bld\.log$/i);
-	return 0;
-}
-
-sub FindLog
-{
-	my ($name,$path)= (shift, shift||'.');
-	my @array = ( "$path/${name}_bld.log",
-							"$path/${name}_build_tbs_bld.log");
-
-	foreach my $n (@array)
-	{
-		return $n if ( -e $n );
-	}
-	return undef;
-}
-
-1;
-
-#------------------------------------------------------------------------------
-# ElectricCloud Package's subroutines
-#------------------------------------------------------------------------------
-package EmbeddedScanLog::ElectricCloud;
-use strict;
-use ISIS::ScanLog;
-
-# ISIS constants.
-use constant ISIS_VERSION 		=> '1.0.0';
-use constant ISIS_LAST_UPDATE => '29/03/2006';
-
-sub new
-{
-	my ( $class, $logname ) = @_;		
-  bless { _logname => $logname
-        }, $class;
-}
-
-sub GetDisplayName
-{
-	my $self = shift;
-	$self->{_logname} =~ /emake_logs\.(\S+)\.emake\..*$/;
-	return "$1";
-}
-
-sub Generate
-{
-	my $self = shift;
-	if ( $self->{_logname} =~ /\.emake.stdout.ebs.log$/i)
-	{
-		my $scanlog = new ScanLogTBS( $self->{_logname} );
-		return $scanlog->GenerateDataStructure();
-	}
-	else
-	{
-		my $scanlog = new ScanLog( $self->{_logname}, 0, 0 );
-		return $scanlog->GenerateDataStructure();
-	}
-}
-
-sub IsValidLogName($)
-{
-	my $logname = shift;
-	return 1 if ($logname =~ /\.emake.anno.xml$/i );
-	return 1 if ($logname =~ /\.emake.stdout.ebs.log$/i );
-	return 0;
-}
-
-sub FindLog
-{
-	my ($name,$path)= (shift, shift||'./');
-	my $n = "/logs/emake_logs/emake_logs.$name.emake.stdout.ebs.log";
-	return $n if ( -e $n );
-	$n = "/logs/emake_logs/emake_logs.$name.emake.anno.xml";
-	return $n if ( -e $n );
-}
-1;
-
-
-
-#------------------------------------------------------------------------------
-# EmbeddedScanLog Package's subroutines
-#------------------------------------------------------------------------------
-package EmbeddedScanLog;
-use strict;
-use ISIS::Logger3;
-use File::Path; # mkpath
-
-# ISIS constants.
-use constant ISIS_VERSION 		=> '1.1.0';
-use constant ISIS_LAST_UPDATE => '29/03/2006';
-
-my @__engines;
-BEGIN {
-@__engines = ('EmbeddedScanLog::ElectricCloud',
-							'EmbeddedScanLog::TBS');
-}
-
-sub new
-{
-	my ( $class, $logname ) = @_;
-	
-	my $scanlogger => undef;
-	
-	no strict 'refs';
-	foreach my $engine (@__engines)
-	{
-		my $method = $engine."::IsValidLogName";		
-		if (&$method($logname))
-		{
-			$scanlogger = new $engine($logname);
-			last;
-		}
-	}
-  bless { __scanlogger => $scanlogger, __logname => $logname  }, $class;
-}
-
-sub Generate
-{
-	my $self = shift;
-	if ( $self->{__scanlogger} )
-	{                         
-		my $node = $self->{__scanlogger}->Generate();
-		OUT2XML::AppendXmlNode( $node );	
-		$self->__GenerateScanLog( $node );
-	}
-}
-
-sub FindLog
-{
-	my ($name,$path)= (shift, shift);
-		
-	no strict 'refs';
-	foreach my $engine (@__engines)
-	{
-		my $method = $engine."::FindLog";
-		my $logfile =  &$method($name,$path);
-		return $logfile if ($logfile);
-	}
-	return undef;
-}
-
-
-sub __GenerateScanLog
-{
-	my ($self, $node) = (shift, shift);
-	my $destpath = '/logs/scanlog';
-	mkpath ( $destpath );
-	if ( -d $destpath )
-	{
-		my $name = $self->{__scanlogger}->GetDisplayName();
-		my $logger = new Logger3::OUT2XML( "$destpath/$name.xml" );
-		$logger->OpenXMLLog();
-
-		$logger->Header("Scanlog - $name");
-	
-		$logger->OpenMainContent ( "Scanlog" );
-			$logger->AppendXmlNode ( $node );
-		$logger->CloseMainContent ();
-		
-		$logger->CloseXMLLog();	}
-}
-
-1;
-
-#------------------------------------------------------------------------------
-# End of file.
-#------------------------------------------------------------------------------
\ No newline at end of file
--- a/buildframework/helium/tools/common/packages/ISIS/EmbeddedXMLLog.pm	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-#
-# 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: 
-#
-#------------------------------------------------------------------------------
-# Name   : EmbeddedXMLLog.pm
-# Use    : description.
-
-#
-# Version History :
-#
-# v1.0.0 (30/05/2006) :
-#  - First version of the script.
-#------------------------------------------------------------------------------
-package EmbeddedXMLLog;
-use strict;
-use ISIS::XMLManip;
-
-# ISIS constants.
-use constant ISIS_VERSION 		=> '1.0.0';
-use constant ISIS_LAST_UPDATE => '30/05/2006';
-
-#------------------------------------------------------------------------------
-# Package Function
-#------------------------------------------------------------------------------
-
-sub IncludeXMLLog
-{
-	my ($xmllog) = @_;
-	return 0 unless ( -e $xmllog );
-		
-	my $node = XMLManip::ParseXMLFile( $xmllog );
-	return 0 unless ( $node );
-	foreach my $sn ( @{$node->Child("__maincontent")} )
-	{		
-		foreach my $n (@{$sn->Childs()})
-		{
-			OUT2XML::AppendXmlNode( $n );
-		}
-	}
-	return 1;
-}
-
-1;
-#------------------------------------------------------------------------------
-# End of file.
-#------------------------------------------------------------------------------
--- a/buildframework/helium/tools/common/packages/ISIS/ErrorDefs.pm	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,157 +0,0 @@
-#
-# 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: 
-#
-#--------------------------------------------------------------------------------------------------
-# Name   : ErrorDefs.pm
-# Use    : Nokia Automated Build error definitions.
-#
-# Synergy :
-# Perl %name    : % (%full_filespec :  %)
-# %derived_by   : %
-# %date_created : %
-#
-# History :
-# v1.0.2 (20/03/2006)
-#  - Added PREMATURE_INTERRUPT error code.
-#
-# v1.0.1 (13/03/2006)
-#  - Added CRITICAL_STEP_FAILED error code.
-#
-# v1.0 (07/10/2005) :
-#  - Fist version of the script.
-#--------------------------------------------------------------------------------------------------
-
-# These constant values define the error messages and corresponding exit codes
-# used in the Nokia Automated Build (NAB) tool.
-
-package ERR;
-
-use strict;
-use warnings;
-require Exporter;
-
-our @ISA    = qw(Exporter);
-our @EXPORT = qw(GetError);
-
-use constant ISIS_VERSION     => '1.00';
-use constant ISIS_LAST_UPDATE => '13/12/2005';
-
-use constant NO_ERROR             =>   0;
-use constant FILE_NOT_FOUND       =>  -1;
-use constant CONFIG_NOT_FOUND     =>  -2;
-use constant SCRIPT_NOT_FOUND     =>  -3;
-use constant MODULE_NOT_FOUND     =>  -4;
-use constant INVALID_CFG_STEP     =>  -5;
-use constant INVALID_CFG_FLAG     =>  -6;
-use constant FILE_OPEN_FAILED     =>  -7;
-use constant FILE_CREATION_FAILED =>  -8;
-use constant FILE_WRITE_ERROR     =>  -9;
-use constant FILE_READ_ERROR      => -10;
-use constant DIR_OPEN_FAILED      => -11;
-use constant DIR_CREATION_FAILED  => -12;
-use constant DIR_WRITE_ERROR      => -13;
-use constant DIR_READ_ERROR       => -14;
-use constant INVALID_SWITCH       => -15;
-use constant MISSING_SWITCH       => -16;
-use constant MISSING_ATTR         => -17;
-use constant INVALID_PATH         => -18;
-use constant CRITICAL_STEP_FAILED => -19;
-use constant PREMATURE_INTERRUPT  => -20;
-
-my %__ErrorMessage = (
-   0 => "No error to report",
-  -1 => "File not found",
-  -2 => "Configuration file not found",
-  -3 => "Script not found",
-  -4 => "Module file not found",
-  -5 => "Invalid configuration step in file",
-  -6 => "Invalid configuration flag definition in file",
-  -7 => "Unable to open file",
-  -8 => "Unable to create file",
-  -9 => "Unable to write to file",
- -10 => "Unable to read from file",
- -11 => "Unable to open directory",
- -12 => "Unable to create directory",
- -13 => "Unable to write to directory",
- -14 => "Unable to read from directory",
- -15 => "Unknown flag passed",
- -16 => "Flag was not defined",
- -17 => "Attribute was not defined",
- -18 => "Path does not exist",
- -19 => "Critical step failed",
- -20 => "Premature interruption of script",
-);
-
-sub GetError
-{
-	my ($errCode) = (shift);
-	my $message = $__ErrorMessage{$errCode};
-	return "Undefined error code" unless(defined $message);
-
-	$message .= " : $!\n" if($!);
-
-	return $message;
-}
-
-1;
-
-#--------------------------------------------------------------------------------------------------
-# Documentation
-#--------------------------------------------------------------------------------------------------
-
-=pod
-
-=head1 NAME
-
-ISIS::ErrorDefs - A perl module for error codes.
-
-=head1 SYNOPSIS
-
-=begin text
-
-	# Use of error value in code.
-	use ISIS::XMLManip;
-	
-	sub CreateFile
-	{ 
-	 open(FILE, '>'.shift) or return ERR::FILE_CREATION_FAILED;
-	}
-	
-	# Determine error type.
-	use ISIS::XMLManip;
-	
-	my $res = &CreateFile('test.txt');
-	print GetError($res) if($res != 0);
-
-=end text
-
-=head1 DESCRIPTION
-
-This module defines the ERR package that contains all erro constant
-values and equivalent error definitions. The current implementation
-has all error codes but the 'GetError' subroutine should not be used
-yet. An update will come shortly.
-
-=head2 GetError( ERROR_CODE ) :
-
-Returns the corresponding error message for a given error code.
-
-=head1 AUTHOR
-
-=cut
-
-#--------------------------------------------------------------------------------------------------
-# End of file.
-#--------------------------------------------------------------------------------------------------
--- a/buildframework/helium/tools/common/packages/ISIS/FileManip.pm	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,323 +0,0 @@
-#
-# 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: 
-#
-#!/usr/bin/perl -w
-#--------------------------------------------------------------------------------------------------
-# Name   : FileManip.pm
-# Use    : File manipulation routines.
-
-#
-# Version History :
-# v1.02 (17/01/2006) :
-#  - Minor fixes.
-#
-# v1.01 (30/11/2005) :
-#  - Updated CopyDir to support 'recursive' flag.
-#  - Updated CopyDir to support 'regex' flag.
-#  - Fix where CopyDir did not return correct number of copied files.
-#
-# v1.00 (18/10/2005) :
-#  - Fist version of the module.
-#--------------------------------------------------------------------------------------------------
-
-package FileManip;
-
-use File::Basename;
-use File::Compare;
-use File::Copy;
-use File::Find;
-use File::Spec;
-use File::stat;
-use Cwd;
-require Exporter;
-
-our @ISA    = qw(Exporter);
-our @EXPORT = qw(UpdateDelimiters CountNbFiles CountNbDirs MakeDir CopyDir Explore GetEntries $Name $Dir);
-
-use constant ISIS_VERSION     => '1.02';
-use constant ISIS_LAST_UPDATE => '17/01/2006';
-
-#--------------------------------------------------------------------------------------------------
-# UpdateDelimiters :
-#--------------------------------------------------------------------------------------------------
-sub UpdateDelimiters
-{
-  my($string) = (shift);
-  
-  @folders = map { !/(?:\/|\\)/ ? $_ : () } split(/(\/|\\)/, $string);
-  push(@folders, "") if($string =~ /.*(?:\/|\\)$/);
-  return File::Spec->catfile(@folders);
-}
-
-#--------------------------------------------------------------------------------------------------
-# CountNbFiles :
-#--------------------------------------------------------------------------------------------------
-sub CountNbFiles
-{
-  my ($nbFiles, @dirNames) = (0, @_ ? @_ : ('.'));
-  my $filter = shift @dirNames if(ref $dirNames[0] eq 'CODE');
-
-  @dirNames = map { &UpdateDelimiters($_) } @dirNames;  
-  Explore({ process => sub { $nbFiles += (-d $_ ? 0 : 1) }, preprocess => sub { grep{ /$filter/ } @_; }}, @dirNames);
-  #find({ wanted => sub { $nbFiles += (-d $_ ? 0 : 1) }, preprocess => $filter }, @dirNames);
-
-  return $nbFiles;
-}
-
-#--------------------------------------------------------------------------------------------------
-# CountNbDirs :
-#--------------------------------------------------------------------------------------------------
-sub CountNbDirs
-{
-  my ($nbDirs, @dirNames) = (0, @_ ? @_ : ('.'));
-  my $filter = shift @dirNames if(ref $dirNames[0] eq 'CODE');
-
-  @dirNames = map { &UpdateDelimiters($_) } @dirNames;
-  Explore({ process => sub { $nbDirs += (-d $_ ? 0 : 1) }, preprocess => sub { grep{ /$filter/ } @_; }}, @dirNames);
-  #find({ wanted => sub { $nbDirs += (-d $_ ? 1 : 0) }, preprocess => $filter }, @dirNames);
-
-  return $nbDirs - 1;
-}
-
-#--------------------------------------------------------------------------------------------------
-# MakeDir :
-#--------------------------------------------------------------------------------------------------
-sub MakeDir
-{
-  my ($string, $current) = (shift, undef);
-  my @folders = map { !/(?:\/|\\)/ ? $_ : () } split(/(\/|\\)/, &UpdateDelimiters($string));
-  
-  $current = shift @folders;
-  return 0 if(not mkdir(File::Spec->catfile($current)) and not -e $current);
-  
-  foreach (@folders)
-  {
-    $current = File::Spec->catfile($current, $_);
-    return 0 if(not mkdir($current) and not -e $current);
-  }
-  
-  return 1;
-}
-
-#--------------------------------------------------------------------------------------------------
-# CopyDir :
-#--------------------------------------------------------------------------------------------------
-sub CopyDir
-{
-  my ($src, $dst, $flags, $res) = (shift, shift, shift, 0);
-
-	my $verbose   = ($flags =~ /verbose/i);
-  my $recursive = ($flags =~ /recursive/i);
-  my $force     = ($flags =~ /force/i);
-  my $regex     = ($flags =~ /regex/i);
-  my $regexpr   = ".*";
-
-	if($regex)
-	{
-		print " src is \'".$src."\'\n" if($verbose);
-		($src, $regexpr) = ($src =~ /(.*\\{2})(.*?)$/);
-		print " regular expression is \'".$regexpr."\'\n" if($verbose);
-	}
-
-  $src =~ s/^\.([^\.].*|)$/@{[&getcwd()]}$1/;
-  $dst =~ s/^\.([^\.].*|)$/@{[&getcwd()]}$1/;
-  $flags = "" if(not defined $flags);
-
-  $src = &UpdateDelimiters($src);
-  $dst = &UpdateDelimiters($dst);
-
-  if($src !~ /^.*(?:\/|\\)$/)
-  {
-    my ($fulldir, $dir) = ($src =~ /^(.*(?:\/|\\))(.*?)$/);
-    return 0 if($fulldir ne "" and not -e $fulldir);
-    $dst = &UpdateDelimiters($dst.'/'.$dir);
-  }
-  
-  print "Creating dir \'".$dst."\' ... " if($verbose);
-  $res = MakeDir($dst);
-  print "".($res == 1 ? 'Done' : "Error : $!")."\n" if($verbose);
-
-  opendir(DIR_HANDLE, $src) or return 0;
-  my (@files, @dirs);
-  foreach (readdir(DIR_HANDLE))
-  {
-    next if(/^\.\.?$/);
-    if(-d &UpdateDelimiters($src.'/'.$_)) { push @dirs, $_; }
-    elsif($regex)                         { push @files, $_ if(/^$regexpr$/); }
-    else                                  { push @files, $_; }
-  }
-  closedir(DIR_HANDLE);
-
-  foreach (@files)
-  {
-    my $uSrc = &UpdateDelimiters($src.'/'.$_);
-    my $uDst = &UpdateDelimiters($dst.'/'.$_);
-
-    print " - Copying file ".$uSrc." to \'".$uDst."\' ... " if($verbose);
-    my $res = copy($uSrc, $uDst);
-    print "".($res == 1 ? 'Done' : "Error : $!")."\n" if($verbose);
-  }
-  
-  my $total = 0;
-  
-  if($recursive)
-  {
-  	foreach (@dirs)
-  	{
-   	  print "------------------------\n" if($verbose);
-   	  print " <> Exploring subdirectory \'".&UpdateDelimiters($src.'/'.$_)."\'\n" if($verbose);
-   	  $total += CopyDir(&UpdateDelimiters($src.'/'.$_), $dst, $flags);
-  	}
-  }
-
-  return scalar(@files) + $total;
-}
-
-#--------------------------------------------------------------------------------------------------
-# Explore :
-#--------------------------------------------------------------------------------------------------
-our ($Name, $Dir);
-
-sub Explore
-{
-  my ($rHash, @src) = (shift, @_);
-  
-  foreach my $src (@src)
-  {
-    opendir(DIR_HANDLE, $src) or return 0;
-    my @entries = grep{ !/^\.\.?$/ } readdir(DIR_HANDLE);
-    closedir(DIR_HANDLE);
-
-    if(exists $$rHash{preprocess})
-    {
-      if(exists $$rHash{args}) { @entries = &{$$rHash{preprocess}}($src, @entries, $$rHash{args}); }
-      else                     { @entries = &{$$rHash{preprocess}}($src, @entries, undef); }
-    }
-
-    foreach (@entries)
-    {
-      $Name = &UpdateDelimiters($src.'/'.$_);
-      $Dir  = &UpdateDelimiters($src);
-      if(exists $$rHash{args}) { &{$$rHash{process}}($$rHash{args}); }
-      else                     { &{$$rHash{process}}(); }
-    }
-
-    if(exists $$rHash{postprocess})
-    {
-      if(exists $$rHash{args}) { @entries = &{$$rHash{postprocess}}($src, @entries, $$rHash{args}); }
-      else                     { @entries = &{$$rHash{postprocess}}($src, @entries, undef); }
-    }
-
-    foreach (@entries)
-    {
-      my $fullDir = &UpdateDelimiters($src.'/'.$_);
-      Explore($rHash, $fullDir) if($rHash{recursive} && -d $fullDir);
-    }
-  }
-}
-
-#--------------------------------------------------------------------------------------------------
-# GetEntries.
-#--------------------------------------------------------------------------------------------------
-sub GetEntries
-{
-	my ($dir, $regex, @files) = (shift, shift);
-
-	opendir(DIR_HANDLE, $dir) or ();
-  @files = map { /$regex/ ? $dir.'\\'.$_ : () } readdir(DIR_HANDLE);
-  closedir(DIR_HANDLE);
-  
-  return @files;
-}
-
-1; # End of FileManip package.
-
-#--------------------------------------------------------------------------------------------------
-# Documentation.
-#--------------------------------------------------------------------------------------------------
-
-=pod
-
-=head1 NAME
-
-ISIS::FileManip - A set of platform independant file manipulation subroutines
-
-=head1 SYNOPSIS
-
-	my $correctPath = &UpdateDelimiters('/usr/bin/perl');
-	
-	print "number of files in dir \'/usr/bin/\'", &CountNbFiles('/usr/bin/'), "\n";
-	print "number of dirs in dir \'/usr/bin/\'", &CountNbDirs('/usr/bin/'), "\n";
-	
-	MakeDir('/tmp/my_tmp_folder/try_1/');
-
-	CopyDir('/code/src/[\w]+_\d\d\.cpp', '/code/backup', 'recursive verbose regex');
-
-=head1 DESCRIPTION
-
-=head2 UpdateDelimiters( PATH ) :
-
-Updates the passed string representing a path to the right representation for the current
-platform the script is running on.
- - param 0 : String to update.
- - return  : String formatted for the current platform.
-
-=head2 CountNbFiles( PATH ) :
-
-Recursive function. Counts number of files in full directory tree exploring each subfolder.
- - param 0 : Directories to explore. If not specified, current directory will be explored.
- - return  : Number of files in specified folder (recursive).
- 
-=head2 CountNbDirs( PATH ) :
-
-Recursive function. Counts number of files in full directory tree exploring each subfolder.
- - param 0 : Directories to explore. If not specified, current directory will be explored.
- - return  : Number of subdirectories in specified folder (recursive), -1 if string passed as
-             argument was not a valid directory.
-
-=head2 MakeDir( PATH ) :
-
-Recursive function. Creates a directory tree.
- - param 0 : Directory tree to create.
- - return  : True if successful, false otherwise.
-
-=head2 CopyDir( SOURCE, DESTINATION, FLAGS ) :
-
-Recursive function. Copies the content of a folder or the folder itself.
- - param 0 : Directory to copy. If source directory ends with a slash, the directory will be
-             copied to the destination. If source directory does not end with a slash, the
-             content of the directory will be copied to the destination.
- - param 1 : Destination directory to copy to.
- - param 2 : String containing copy flags. "recursive" will also copy subdirectories. "force"
-             will copy files even if they exist in destination directory. "verbose" will print
-             to standard output the operation details. "regex" 
- - return  : Number of copied files.
-
-=head2 Explore( CALLBACKS ) :
-
-Runs through a full directory tree, applying the passed subroutines at the different steps of
-progress.
- - param 0 : Reference to a hash table containing information on the actions to take during the
-             tree run-through.
-
-=head1 AUTHOR
-
-
-
-=cut
-
-#--------------------------------------------------------------------------------------------------
-# End of file.
-#--------------------------------------------------------------------------------------------------
--- a/buildframework/helium/tools/common/packages/ISIS/GenBuildTools.pm	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,292 +0,0 @@
-#
-# 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: 
-#
-#------------------------------------------------------------------------------
-# Name   : GenBuildTools.pm
-# Use    : description.
-
-#
-# Synergy :
-# Perl %name: GenBuildTools.pm % (%full_filespec:  GenBuildTools.pm-vc1s60p1#8:perl:fa1s60p1#1 %)
-# %derived_by:  pmackay %
-# %date_created:  Tue May 08 12:49:18 2007 %
-#
-# Version History :
-#
-# v1.2 (03/11/2006)
-#  - Update BuildTBS to use Juno buildjob
-#
-# v1.1 (22/01/2006)
-#  - Update txt file parser, change the drive on a general basis
-#
-# v1.0 (22/12/2005) :
-#  - Fist version of the package.
-#------------------------------------------------------------------------------
-
-package GenBuildTools;
-
-use strict;
-use Cwd;
-use ISIS::XMLManip;
-use BuildJob;
-
-# ISIS constants.
-use constant ISIS_VERSION 		=> '1.2';
-use constant ISIS_LAST_UPDATE => '03/11/2005';
-use constant DEBUGGING => 0;
-
-#------------------------------------------------------------------------------
-# Package's subroutines
-#------------------------------------------------------------------------------
-
-sub PreprocessAndCatInputs($$$$$)
-{
-	my ($arg, $inputs, $removes, $options, $output) = @_;
-	
-	my @list;	
-	foreach my $f ( @{$inputs} )
-	{
-		my $output = $f;
-		$output =~ s/\.txt/_parsed.txt/;
-		PreprocessFile( $f , $output, $arg);
-		push @list, $output;
-	}
-	my $res = &CatInputs ( \@list, $removes, $options, $output );
-	foreach (@list)
-	{
-		unlink ( $_ );
-	}
-	return $res;
-}
-
-
-###############################################################################################
-#
-# CatInputs
-#    @param @inputs
-#    @param @removes
-#    @param $output
-#
-###############################################################################################
-sub CatInputs($$$$)
-{
-	print "@_\n" if (DEBUGGING);
-	my ($inputs, $removes, $options, $output) = @_;
-	
-	my @full;
-	my %toremove;
-	foreach my $f ( @{$removes} )
-	{
-			print "Reading remove file: $f\n";
-			if ( open (FILE, "<$f") )
-			{
-				while (<FILE>)
-				{
-					next if ( /^\s*\#.*$/ );
-					next if ( /^\s*\/\/.*$/ );
-					if ( /^\s*(\S+)\s*$/ )
-					{
-						$toremove{ lc("$1") } = 1;
-					}
-				}
-				close FILE;
-			}
-			else
-			{
-				return 0;
-			}
-	}
-	
-	foreach my $f ( @{$inputs} )
-	{
-			print "Reading input file: $f\n";
-			if ( open (FILE, "<$f") )
-			{
-				while (<FILE>)
-				{
-					if (/^\s*$/) {next;}
-					chomp;
-					s/^\s+//;         	  #Delete leading blanks
-					s/\s+$//;            #Delete trailing blanks
-					
-					next if (/<option\s+\w+>/);
-					next if (/^#.*/); # remove comments
-					
-					if (/^(\S+)\s+(\S+)$/)
-					{
-						my $pname = $1;
-						my $pdir = $2;
-						if  ( not exists ( $toremove{ lc($pname) } ) or not $toremove{ lc($pname) } )
-						{
-							$pdir =~ s/^\\(\S+)/$1/;
-							push @full, "$pname    $pdir";
-						}
-						else
-						{
-							print "Removing: '$pname		$pdir'\n";
-						}
-					}
-				}
-				close FILE;
-			}
-			else
-			{
-				return 0;
-			}
-			
-	}	
-	unless ( open FILE, ">$output" ) {  print "Error opening '$output'\n"; return 0;}
-	foreach ( @{$options} )
-	{
-		print FILE "<option $_>\n";
-	}
-	foreach ( @full )
-	{
-		print FILE "$_\n";
-	}
-	close FILE;
-	return 1;
-}
-
-###############################################################################################
-#
-# PreprocessFile
-#    @param $inputfile
-#    @param $outputfile
-#    @param $cpparg
-#
-###############################################################################################
-sub PreprocessFile()
-{
-	my ($input, $output, $arg) = @_;
-	my $drive = cwd(); $drive =~ /^(.:)/; $drive= "$1";
-	
-	$input = "$drive$input";
-	$output = "$drive$output";
-	$arg =~ s/<drive>/$drive/g;
-	my $cmd = "cpp.exe -nostdinc -P -u $arg $input -o $output";
-	print "$cmd\n" if (DEBUGGING);
-	print `$cmd`;
-	print "Preprocessing done.\n" if (DEBUGGING);
-}
-
-sub GenXML
-{
-	my ( $inputs , $output , $root) = @_;
-	
-	$root = "\\" unless ($root);
-		
-	my $files = "";
-	foreach ( @{$inputs} )
-	{
-		$files .= " -d $_ ";
-	}
-	`call \\epoc32\\tools\\build\\genxml.pl $files -s $root -o ${output}.xml -l ${output}_xml_bld.log`;
-	return 0 unless ( -e "${output}.xml" );
-	return 1;
-}
-
-sub BuildTBS
-{
-	my ( $xmlfile, $logname ) = @_;
-
-	$xmlfile =~ s/\.xml$//;
-	$logname = $xmlfile unless ($logname);
-	
-	
-	return 0 if ( not defined ($xmlfile) or not -e "$xmlfile.xml" );
-	
-	print "Starting clients\n";
-	my $id = $ENV{ 'NUMBER_OF_PROCESSORS' } || 2;
-	$id *= 2;
-	print "Number of clients: $id\n";
-	BuildJob::run("${xmlfile}.xml", "${logname}_bld.log", $id);
-	print "Creating logs\n";
-	unlink ("${logname}_scanlog.html") if (-e "${logname}_scanlog.html" );
-	system ("call perl \\epoc32\\tools\\htmlscanlog.pl -l ${logname}_bld.log -o ${logname}_scanlog.html -v");
-	return 1;
-}
-
-
-###############################################################################################
-#
-# CatXML
-#    @param $output
-#    @param @input
-#
-###############################################################################################
-sub CatXML
-{
-	my $output = shift;
-	my @list = @_;
-	if (not defined($output) or not scalar(@list))
-	{
-		return 0;	
-	}
-
-	my $stage = 0;
-	my $id = 0;
-
-	#
-	# Parsing the fisrt file
-	#
-	my $first = shift( @list );
-	print "Parsing '$first'.\n";
-	my $root = XMLManip::ParseXMLFile( $first );
-	
-	my $commandRoot = @{$root->Childs()}[0];
-	$commandRoot->Unlock(); # unlock node for editing.
-	my @a = @{$commandRoot->Childs()};
-	
-	$id = $a[scalar(@a)-1]->Attribute('ID');
-	$stage = $a[scalar(@a)-1]->Attribute('Stage');
-	
-	foreach my $file ( @list )
-	{
-		my $maxstage = 0;
-		my $maxid = 0;
-	
-		print "Parsing '$file'.\n";
-	
-		# parsing a file from list
-		my $r = XMLManip::ParseXMLFile( $file );
-		$r = @{$r->Childs()}[0];
-		# for each command line.... 
-		foreach my $cmd (@{$r->Childs()})
-		{
-			# is it and execute cmd
-			if ($cmd->Type() eq "Execute")
-			{
-				$maxid = $cmd->Attribute("ID",  $id + $cmd->Attribute("ID"));
-				$maxstage = $cmd->Attribute("Stage", $cmd->Attribute("Stage") + $stage );
-			}
-			
-			# add this node to the root
-			$commandRoot->PushChild( $cmd );
-		}
-		
-		$stage = $maxstage;
-		$id = $maxid;
-	}
-	
-	print "Writing output file '$output'.\n";
-	XMLManip::WriteXMLFile($root, $output);
-	return 1;
-}
-
-1;
-#------------------------------------------------------------------------------
-# End of file.
-#------------------------------------------------------------------------------
\ No newline at end of file
--- a/buildframework/helium/tools/common/packages/ISIS/GenXML2.pm	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,134 +0,0 @@
-#
-# 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: 
-#
-#------------------------------------------------------------------------------
-# Name   : GenBuildTools.pm
-# Use    : description.
-
-#
-# Synergy :
-# Perl %name: GenXML2.pm % (%full_filespec:  GenXML2.pm-2:perl:fa1s60p1#1 %)
-# %derived_by:  wbernard %
-# %date_created:  Wed Apr 26 08:24:25 2006 %
-#
-# Version History :
-#
-# v1.1.0 (26/04/2006) :
-#  - Fix input file loading by managing duplicate id name.
-#
-# v1.0 (22/12/2005) :
-#  - Fist version of the package.
-#------------------------------------------------------------------------------
-package GenXML2;
-use Cwd;
-
-sub new
-{
-	my ($class) = @_;
-	#no strict 'refs';
-  my $self = {
-    		m_CurrentStep => 0,
-				m_Data => {}
-    };
-  bless $self, $class;
-}
-
-sub parseFile
-{
-	my ($self, $filename, @args) = @_;
-
-	my $drive = Cwd::cwd(); $drive =~ /(.:)/; $drive = $1;
-
-	$filename = $drive.$filename if ($filename =~ /^\\/);
-
-	open (INPUT, "cpp.exe -nostdinc -u  @args $filename |");
-	my $id = 0;
-	foreach my $line (<INPUT>)
-	{
-		$line =~ s/#.*$//;
-		next if ($line =~ /^\s*$/);
-		if ($line =~ /^\s*NEWSTEP\s*$/)
-		{
-			#print "NEWSTEP\n";
-			$self->{ m_CurrentStep } = $self->{ m_CurrentStep }+1;
-		}
-		elsif ($line =~ /(\w+)\s*,\s*(\S+)\s*,\s*\"(.*)\"/)
-		{
-			#print "$1, $2, $3\n";
-			
-			my $name = $1;
-			my $path = $2;
-			my $cmd = $3;
-			$self->{ m_Data }->{ $self->{ m_CurrentStep } }->{$id}->{'name'} = $name;
-			$self->{ m_Data }->{ $self->{ m_CurrentStep } }->{$id}->{'path'} = $path;
-			$self->{ m_Data }->{ $self->{ m_CurrentStep } }->{$id}->{'cmd'} = $cmd;
-			++$id;
-		}
-		else
-		{
-			warn "WARNING: error at line $line\n";
-		}
-	}
-
-	close (INPUT)
-}
-
-
-
-sub generateTBSXML
-{
-		my ($self, $filename) = @_;
-		
-		my $id = 1;
-		open (OUTPUT, ">$filename") or die "Cannot open $filename";
-		
-		print OUTPUT "<?xml version=\"1.0\"?>\n";
-        print OUTPUT "<!DOCTYPE Build  [\n";
-        print OUTPUT "<!ELEMENT Product (Commands)>\n";
-        print OUTPUT "<!ATTLIST Product name CDATA #REQUIRED>\n";
-        print OUTPUT "<!ELEMENT Commands (Execute+ | SetEnv*)>\n";
-        print OUTPUT "<!ELEMENT Execute EMPTY>\n";
-        print OUTPUT "<!ATTLIST Execute ID CDATA #REQUIRED>\n";
-        print OUTPUT "<!ATTLIST Execute Stage CDATA #REQUIRED>\n";
-        print OUTPUT "<!ATTLIST Execute Component CDATA #REQUIRED>\n";
-        print OUTPUT "<!ATTLIST Execute Cwd CDATA #REQUIRED>\n";
-        print OUTPUT "<!ATTLIST Execute CommandLine CDATA #REQUIRED>\n";
-        print OUTPUT "<!ELEMENT SetEnv EMPTY>\n";
-        print OUTPUT "<!ATTLIST SetEnv Order ID #REQUIRED>\n";
-        print OUTPUT "<!ATTLIST SetEnv Name CDATA #REQUIRED>\n";
-        print OUTPUT "<!ATTLIST SetEnv Value CDATA #REQUIRED>\n";
-				print OUTPUT "]>\n";
-		
-		print OUTPUT "<Product Name=\"genxml2\">\n";
-    print OUTPUT "   <Commands>\n";
-    print OUTPUT "   		<SetEnv Order=\"1\" Name=\"EPOCROOT\" Value=\"\\\"/>\n";
-		print OUTPUT "   <SetEnv Order=\"2\" Name=\"PATH\" Value=\"\\epoc32\\gcc\\bin;\\epoc32\\tools;%PATH%\"/>\n";
-
-		foreach my $key ( sort { $a <=> $b } keys ( %{$self->{ m_Data }} ) )
-		{
-			foreach my $name ( keys ( %{$self->{ m_Data }->{ $key } } ) )
-			{				
-				print OUTPUT "<Execute ID=\"$id\" Stage=\"$key\" Component=\"".$self->{ m_Data }->{ $key }->{$name}->{'name'}."\" Cwd=\"".$self->{ m_Data }->{ $key }->{$name}->{'path'}."\" CommandLine=\"".$self->{ m_Data }->{ $key }->{$name}->{'cmd'}."\" />\n";
-				$id++;
-			}
-		}
-    print OUTPUT "   </Commands>\n";
-		print OUTPUT "</Product>\n";
-		close (OUTPUT);
-}
-1;
-#------------------------------------------------------------------------------
-# End of file.
-#------------------------------------------------------------------------------
\ No newline at end of file
--- a/buildframework/helium/tools/common/packages/ISIS/HtmlManip.pm	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,90 +0,0 @@
-#
-# 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: 
-#
-#!/usr/bin/perl -w
-#--------------------------------------------------------------------------------------------------
-# Name   : HtmlManip.pm
-# Use    : Contains an instanciable package to write complex html files.
-
-#
-# Synergy :
-#
-# Version History :
-#
-# v1.0 (12/11/2005) :
-#  - Fist version of the script.
-#--------------------------------------------------------------------------------------------------
-
-#--------------------------------------------------------------------------------------------------
-#
-#   HTMLManip package - Just a shortcut to load the main OUT module.
-#
-#--------------------------------------------------------------------------------------------------
-
-package HTMLManip;
-
-use strict;
-use warnings;
-use ISIS::OUT::Outputer;
-
-use constant ISIS_VERSION     => 'v1.00';
-use constant ISIS_LAST_UPDATE => '13/12/2005';
-
-sub new
-{
-	shift;
-	return new OUT::Outputer(@_);
-}
-
-1;
-
-#--------------------------------------------------------------------------------------------------
-# Documentation.
-#--------------------------------------------------------------------------------------------------
-
-=pod
-
-=head1 NAME
-
-ISIS::HTMLManip - Outputer for complex html files.
-
-=head1 SYNOPSIS
-
-	use ISIS::HTMLManip;
-
-	open($ostream, '>'.$htmlfile) or return ERR::FILE_CREATION_FAILED;
-	my $outputer = new HTMLManip($ostream, 'configuration.xml', 'isis_interface');
-
-=head1 DESCRIPTION
-
-The HTMLManip package provides only a constructor that returns a new L<OUT::Outputer>
-instance from which all HTML generation is done.
-
-=head2 HTMLManip( OSTREAM, CONFIGURATION_FILE, INTERFACE ) :
-
-Returns a newly constructed L<OUT::Outputer> instance that will printout to the passed
-output stream. The configuration file is used for generic values such as icons and 
-colors. The interface determines the root directory from with all the HTML style information
-will be taken.
-
-=head1 AUTHOR
-
-
-
-=cut
-
-#--------------------------------------------------------------------------------------------------
-# End of file.
-#--------------------------------------------------------------------------------------------------
--- a/buildframework/helium/tools/common/packages/ISIS/HttpServer.pm	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,88 +0,0 @@
-#
-# 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: 
-#
-#------------------------------------------------------------------------------
-# Name   : HttpServer.pm
-# Use    : description.
-
-#
-# Synergy :
-# Perl %name: HttpServer.pm % (%full_filespec:  HttpServer.pm-2.1.2:perl:fa1s60p1#1 %)
-# %derived_by:  oligrant %
-# %date_created:  Wed Apr  5 13:29:26 2006 %
-#
-# Version History :
-#
-# v1.0.0 (07/02/2006) :
-#  - Manage resources from ISIS http server.
-#------------------------------------------------------------------------------
-
-package HttpServer;
-
-use strict;
-use warnings;
-
-use HTTP::Request;
-use LWP::UserAgent;
-
-# ISIS constants.
-use constant ISIS_VERSION     => '1.0.0';
-use constant ISIS_LAST_UPDATE => '07/02/2006';
-
-use constant ISIS_HTTP_SERVER => "http://fawww.europe.nokia.com/isis";
-
-#------------------------------------------------------------------------------
-# GetAddress
-# return default ISIS server
-#------------------------------------------------------------------------------
-sub GetAddress
-{
-	return ISIS_HTTP_SERVER;
-}
-
-#------------------------------------------------------------------------------
-# GetFile
-# src			source url
-# dst			destination path
-# return 1 on success or 0 on failure
-#------------------------------------------------------------------------------
-sub GetFile($$)
-{
-	my ($src, $dst) = @_;
-	
-	# if the path is not an http url then append server url
-	$src = ISIS_HTTP_SERVER."/$src" if ( $src !~ /^http:\/\// );
-	
-	# Get the file
-	my $request = HTTP::Request->new( GET => "$src" );
-	my $ua = LWP::UserAgent->new;
-	my $response = $ua->request($request);
-	if ($response->is_success)
-	{
-		# if success writing the content to the dest file
-		open(FILE, '>'.$dst) or return 0;
-		binmode FILE;
-		print FILE $response->content;
-		close(FILE);	
-		return 1;
-	}	
-	# else return error!
-	return 0;
-}
-
-1;
-#------------------------------------------------------------------------------
-# End of file.
-#------------------------------------------------------------------------------
\ No newline at end of file
--- a/buildframework/helium/tools/common/packages/ISIS/IBUSAL.pm	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,114 +0,0 @@
-#
-# 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: 
-#
-#------------------------------------------------------------------------------
-# Name   : IBUSAL.pm
-# Use    : description.
-
-#
-# Synergy :
-# Perl %name: IBUSAL.pm % (%full_filespec:  IBUSAL.pm-1:perl:fa1s60p1#1 %)
-# %derived_by:  wbernard %
-# %date_created:  Thu Sep 22 15:47:08 2005 %
-#
-# Version History :
-#
-# v1.0 (20/09/2005) :
-#  - Fist version of the package.
-#------------------------------------------------------------------------------
-
-package ISIS::IBUSAL;
-use strict;
-
-# ISIS constants.
-use constant ISIS_VERSION 		=> '1.0';
-use constant ISIS_LAST_UPDATE => '20/09/2005';
-
-
-#------------------------------------------------------------------------------
-# Package's subroutines
-#------------------------------------------------------------------------------
-
-################################################################################
-#
-#
-#  XLoader for RnD
-#
-#		@param productname
-#		@param hwid
-#
-################################################################################
-sub CopyXLoader($$)
-{
-		my ($target,$hid) = @_;
-		my ($asic,$asic_ver,$asic_key,$flash_size,$rom_size,$pi,$arm_ver,$sec_srvs) = &ReadConfFile($target,$hid);
-		print "Copying prebuilt XLoader\n";
-		system("copy /y /b \\spp_config\\product_config\\Ibusal\\Exports_Adaptation\\rombuild\\prebuilt_xloader_images\\xloader-ext?${target}_2_0_OEM1.fps8 \\epoc32\\INCLUDE\\$target\\PI$pi\\XLoader\\1710V$asic_ver\\udeb\\xloader-ext.fps8");
-		system("copy /y /b \\spp_config\\product_config\\Ibusal\\Exports_Adaptation\\rombuild\\prebuilt_xloader_images\\xloader?${target}_2_0_OEM1.fps8 \\epoc32\\INCLUDE\\$target\\PI$pi\\XLoader\\1710V$asic_ver\\udeb\\xloader.fps8");
-		system("copy /y /b \\spp_config\\product_config\\Ibusal\\Exports_Adaptation\\rombuild\\prebuilt_xloader_images\\xloader-ext?${target}_2_0_OEM1.fps8 \\epoc32\\INCLUDE\\$target\\PI$pi\\XLoader\\1710V$asic_ver\\urel\\xloader-ext.fps8");
-		system("copy /y /b \\spp_config\\product_config\\Ibusal\\Exports_Adaptation\\rombuild\\prebuilt_xloader_images\\xloader?${target}_2_0_OEM1.fps8 \\epoc32\\INCLUDE\\$target\\PI$pi\\XLoader\\1710V$asic_ver\\urel\\xloader.fps8");
-}
-
-
-
-
-#########################################################################
-#
-#		Internal functions
-#
-#########################################################################
-sub ReadConfFile
-{
-    my ($pname,$hid) = @_;
-    if (not -e "\\epoc32\\rom\\$pname\\${pname}.conf")
-    {
-	print("ERROR: Can't open \\epoc32\\rom\\$pname\\${pname}.conf file\n");
-	exit(0);
-    }
-    open INPUTOBYFILE,"\\epoc32\\rom\\$pname\\${pname}.conf" or die "ERROR: Can't open \\epoc32\\rom\\$pname\\${pname}.conf file\n";
-
-    my ($InputObyFile,$hwid,$asic,$asic_ver,$asic_key,$flash_size,$rom_size,$pi,$arm_ver,$sec_srvs);
-    while ( $InputObyFile = <INPUTOBYFILE> )
-    {
-        chomp $InputObyFile;
-
-        ($hwid,$asic,$asic_ver,$asic_key,$flash_size,$rom_size,$pi,$arm_ver,$sec_srvs) = split(/\|+/,$InputObyFile);
-        chomp($hwid,$asic,$asic_ver,$asic_key,$flash_size,$rom_size,$pi,$arm_ver,$sec_srvs);
-        &trim($hwid,$asic,$asic_ver,$asic_key,$flash_size,$rom_size,$pi,$arm_ver,$sec_srvs);
-        if ($hid eq $hwid)
-        {
-            close INPUTOBYFILE;
-            return ($asic,$asic_ver,$asic_key,$flash_size,$rom_size,$pi,$arm_ver,$sec_srvs);
-        }
-    }
-    close INPUTOBYFILE;
-    &usage("ERROR: Hardware Id '$hid' not found in the conf file\n");
-}
-
-sub trim 
-{
-    for (@_) 
-    {
-        s/^\s*//; # trim leading spaces
-        s/\s*$//; # trim trailing spaces
-    }
-    return @_;
-}
-
-
-1;
-#------------------------------------------------------------------------------
-# End of file.
-#------------------------------------------------------------------------------
--- a/buildframework/helium/tools/common/packages/ISIS/Logger2.pm	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1121 +0,0 @@
-#
-# 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: 
-#
-#--------------------------------------------------------------------------------------------------
-# Name   : Logger2.pm
-# Use    : ISIS Logging module.
-
-#
-# Synergy :
-# Perl %name    : % (%full_filespec :  %)
-# %derived_by   : %
-# %date_created : %
-#
-# History :
-# v2.2.5 (25/05/2006):
-#  - Save old html log.
-#
-# v2.2.4 (03/05/2006):
-#  - Added Execute function to launch command and get it's output.
-#
-#
-# v2.2.3 (06/04/2006):
-#  - Reworte the way user defined CSS files are handled to make sure they are the last ones
-#    included in the document body to allow overwriting of certain values.
-#
-# v2.2.2 (05/04/2006):
-#  - Updated OUT2XML and XML2HTML to store CSS and JS files in arrays to preserve order.
-#
-# v2.2.1 (16/03/2006):
-#    - Added SetCustomModule to manage custom Outputer submodules
-#    - Can now specifiy custom Outputer class for Header and Footer.
-#
-# v2.2.0 (27/01/2006):
-#  - Rewrote XML2HTML package :
-#    - Corrected event printout.
-#    - Added special message count.
-#    - Added global special message count.
-#    - Errors, Warnings, Remarks and Notes now have Ids.
-#    - Any type of specific message is printed.
-#
-# v2.1.1 (13/01/2006):
-#  - Updated Die subroutine to print line and file if specified.
-#
-# v2.1.0 (11/01/2006):
-#  - Updated 'OUT2XML' package with following changes :
-#    - General print messages handled by 'AUTOLOAD' now print all their arguments.
-#      The same calls should be replaced by a extra call to 'Die'.
-#    - 'PrintBold' is now depreciated and should be replaced by formatting tags.
-#    - 'PrintItalic' is now depreciated and should be replaced by formatting tags.
-#    - 'PrintUnderline' is now depreciated and should be replaced by formatting tags.
-#    - 'OpenParagraph' and 'CloseParagraph' are now depreciated and should be removed.
-#  - Updated 'XML2HTML' package with following changes :
-#    - contigus 'print' nodes will be printed in one block.
-#
-# v2.0.0 (13/12/2005):
-#  - Updated module to use ISIS::XMLManip.
-#  - Added 'OpenParagraph' and 'CloseParagraph' subroutines to OUT2XML.
-#  - Added 'LinkCSSFile' subroutine to OUT2XML.
-#  - Added 'DiscardMessageType' subroutine to OUT2XML.
-#
-# v1.2.0 (07/11/2005):
-#  - Fixed event id
-#
-# v1.1.0 (30/09/2005) :
-#  - Added C++ formatting routines.
-#  - Added OUT2XML::IncludeCPP to include file in log.
-#  - Added XML2HTML::cpp_include to parse corresponding XML tag.
-#
-# v1.0.0 (20/09/2005) :
-#  - Fist version of the script.
-#--------------------------------------------------------------------------------------------------
-
-package Logger2;
-
-require Exporter;
-
-our @ISA    = qw(Exporter);
-our @EXPORT = qw(OUT2XML XML2HTML);
-
-use constant ISIS_VERSION     => '2.2.5';
-use constant ISIS_LAST_UPDATE => '25/05/2006';
-
-1;
-
-my %ModuleData; # Common data to all packages.
-
-#--------------------------------------------------------------------------------------------------
-#
-#   OUT2XML package;
-#
-#--------------------------------------------------------------------------------------------------
-
-package OUT2XML;
-
-use strict;
-use warnings;
-use ISIS::ErrorDefs;
-use ISIS::XMLManip;
-
-use constant ISIS_VERSION     => '1.2.0';
-use constant ISIS_LAST_UPDATE => '13/12/2005';
-
-#--------------------------------------------------------------------------------------------------
-# SetXMLLogName
-#--------------------------------------------------------------------------------------------------
-sub SetXMLLogName
-{
-  $ModuleData{htmlFile}  = shift;
-  $ModuleData{xmlFile}   = $ModuleData{htmlFile};
-  $ModuleData{htmlFile}  =~ s/\.xml/\.html/;
-  $ModuleData{xmlFile}   =~ s/\.[^\.]+$//;
-  $ModuleData{xmlFile}  .= '.xml';
-}
-
-#--------------------------------------------------------------------------------------------------
-# SetXMLLogVerbose
-#--------------------------------------------------------------------------------------------------
-sub SetXMLLogVerbose
-{
-  $ModuleData{verbose} = shift;
-  
-  if($ModuleData{verbose} =~ /(?:off|no|0)/i) { $ModuleData{verbose} = 0; }
-  else                                        { $ModuleData{verbose} = 1; }
-}
-
-#--------------------------------------------------------------------------------------------------
-# SetXMLLogInterface    
-#--------------------------------------------------------------------------------------------------
-sub SetXMLLogInterface
-{
-  $ModuleData{interface} = shift;
-  $ModuleData{interface} =~ s/\\$//;
-}
-
-#--------------------------------------------------------------------------------------------------
-# LinkCSSFile
-#--------------------------------------------------------------------------------------------------
-sub LinkCSSFile
-{
-  my ($file) = (shift);
-  
-  foreach my $css (@{$ModuleData{css}})
-  { return if($css eq $file); }
-  
-  push @{$ModuleData{css}}, $file;
-}
-
-#--------------------------------------------------------------------------------------------------
-# LinkJSCFile
-#--------------------------------------------------------------------------------------------------
-sub LinkJSCFile
-{
-  my ($file) = (shift);
-  
-  foreach my $js (@{$ModuleData{jsc}})
-  { return if($js eq $file); }
-  
-  push @{$ModuleData{jsc}}, $file;
-}
-
-#--------------------------------------------------------------------------------------------------
-# DiscardMessageTypes
-#--------------------------------------------------------------------------------------------------
-sub DiscardMessgeTypes
-{
-  $ModuleData{discard} = join('|', @_);
-}
-
-sub DiscardEmptyNodes
-{
-	$ModuleData{discard_empty_nodes} = 1;
-}
-
-#--------------------------------------------------------------------------------------------------
-# AssociateMessageToClass
-#--------------------------------------------------------------------------------------------------
-sub AssociateMessageToClass
-{
-	my ($type, $class) = (shift, shift);
-	print "Registering $type to HTML class $class\n";
-	$ModuleData{classes}->{lc($type)} = $class;
-}
-
-#--------------------------------------------------------------------------------------------------
-# OpenXMLLog
-#--------------------------------------------------------------------------------------------------
-sub OpenXMLLog
-{
-	$ModuleData{classes}->{error}   ||= 'cr_r';
-	$ModuleData{classes}->{warning} ||= 'cr_y';
-	$ModuleData{classes}->{remark}  ||= 'ch_g';
-	$ModuleData{classes}->{note}    ||= 'ch_b';
-	
-	$ModuleData{discard_empty_nodes} ||= '0';
-	
-  $ModuleData{step}         = 0;
-  $ModuleData{rootNode}     = new XMLManip::Node('__log', { date => scalar(localtime) });
-  $ModuleData{currentNode}  = $ModuleData{rootNode};
-
-  $ModuleData{rootNode}->Comment("  Name : ".$ModuleData{xmlFile}."\n  Use  : Temporary XML log file - Generated by OUT2XML");
-}
-
-#--------------------------------------------------------------------------------------------------
-# CloseXMLLog
-#--------------------------------------------------------------------------------------------------
-sub CloseXMLLog
-{
-  $ModuleData{rootNode}->PushChild($ModuleData{summaryNode}) if ($ModuleData{summaryNode});
-
-	foreach my $name ( keys ( %{$ModuleData{customizeOutputer}}) )
-	{
-		my $custom = new XMLManip::Node('__customoutputer');
-		$custom->Attribute('type',$name);
-		$custom->Attribute('module',$ModuleData{customizeOutputer}{$name}{module});
-		foreach (@{$ModuleData{customizeOutputer}{$name}{config}})
-		{
-			$custom->PushChild($_);
-		}
-		$ModuleData{rootNode}->PushChild($custom);
-	}
-	&XMLManip::WriteXMLFile($ModuleData{rootNode}, $ModuleData{xmlFile});
-  &XML2HTML::GenHTMLLogFile($ModuleData{xmlFile}, $ModuleData{htmlFile}, $ModuleData{discard});
-}
-
-#--------------------------------------------------------------------------------------------------
-# OpenSummary
-#--------------------------------------------------------------------------------------------------
-sub OpenSummary
-{
-	my $summaryNode = new XMLManip::Node('__summary');
-	
-	$summaryNode->Comment(" +++ SUMMARY +++ ");
-	$summaryNode->Attribute('title', shift);
-  
-  $ModuleData{summaryNode} = $summaryNode;
-  $ModuleData{inSummary}   = 1;
-}
-
-#--------------------------------------------------------------------------------------------------
-# CloseSummary
-#--------------------------------------------------------------------------------------------------
-sub CloseSummary
-{
-	$ModuleData{inSummary} = 0;
-}
-
-#--------------------------------------------------------------------------------------------------
-# SummaryElmt
-#--------------------------------------------------------------------------------------------------
-sub SummaryElmt
-{
-  my ($tag, $val) = (shift, shift);
-  
-  $tag =~ s/\n//g;
-  $val =~ s/\n//g;
-  
-  if($ModuleData{verbose})
-  {
-    print '  ', $tag, " : ", $val, "\n" if($ModuleData{inSummary}); # STDOUT
-  }
-
-	my $elementNode = new XMLManip::Node('__elmt', { tag => $tag, val => $val });
-	$ModuleData{summaryNode}->PushChild($elementNode);
-}
-
-#--------------------------------------------------------------------------------------------------
-# SetCustomModule
-#--------------------------------------------------------------------------------------------------
-sub SetCustomModule($$$)
-{
-	my ($name, $module, $customConfigNode) = (shift, shift, shift);
-	$ModuleData{customizeOutputer} { $name }{module} = $module;
-	$ModuleData{customizeOutputer} { $name }{config} = $customConfigNode;
-}
-
-#--------------------------------------------------------------------------------------------------
-# Header
-#--------------------------------------------------------------------------------------------------
-sub Header
-{
-  my $headerNode = new XMLManip::Node('__header', { title => shift, subtitle => shift });
-
-  $headerNode->Comment(" +++ HEADER +++ ");
-  $ModuleData{rootNode}->PushChild($headerNode);
-}
-
-#--------------------------------------------------------------------------------------------------
-# Footer
-#--------------------------------------------------------------------------------------------------
-sub Footer
-{
-  my $footerNode = new XMLManip::Node('__footer', { title => shift, subtitle => shift });
-
-  $footerNode->Comment(" +++ FOOTER +++ ");
-  $ModuleData{rootNode}->PushChild($footerNode);
-}
-
-#--------------------------------------------------------------------------------------------------
-# OpenMainContent
-#--------------------------------------------------------------------------------------------------
-sub OpenMainContent
-{ 
-  ++$ModuleData{step};
-  my $contentNode = new XMLManip::Node('__maincontent', { title => shift, step => $ModuleData{step} });
-	$contentNode->Comment(" +++ MAIN CONTENT +++ ");
-
-  push @{$ModuleData{parentNodes}}, $ModuleData{currentNode};
-  $ModuleData{currentNode}->PushChild($contentNode);
-  $ModuleData{currentNode} = $contentNode;
-}
-
-#--------------------------------------------------------------------------------------------------
-# CloseMainContent
-#--------------------------------------------------------------------------------------------------
-sub CloseMainContent
-{
-	$ModuleData{currentNode} = pop @{$ModuleData{parentNodes}};
-}
-
-#--------------------------------------------------------------------------------------------------
-# MainTitle
-#--------------------------------------------------------------------------------------------------
-sub MainTitle
-{
-	my ($title) = (shift);
-	
-	++$ModuleData{step};
-	my $titleNode = new XMLManip::Node('__maintitle', { title => $title, step => $ModuleData{step} });
-	$titleNode->Comment(" +++ ".uc($title)." +++ ");
-	
-	$ModuleData{currentNode}->PushChild($titleNode);
-}
-
-#--------------------------------------------------------------------------------------------------
-# OpenEvent
-#--------------------------------------------------------------------------------------------------
-sub OpenEvent
-{
-  my ($title) = (shift);
-  ++$ModuleData{step};
-  
-  my $eventNode = new XMLManip::Node('__event');
-  $eventNode->Attribute('title', $title);
-  $eventNode->Attribute('time', scalar(localtime));
-  $eventNode->Attribute('step', $ModuleData{step});
-
-  if($ModuleData{verbose})
-  {
-    print "----------------------------------------------------------------------------\n",
-          " + ", $title, "\n";
-  }
-  
-	push @{$ModuleData{parentNodes}}, $ModuleData{currentNode};
-	$ModuleData{currentNode}->PushChild($eventNode);
-	$ModuleData{currentNode} = $eventNode;
-}
-
-#--------------------------------------------------------------------------------------------------
-# CloseEvent
-#--------------------------------------------------------------------------------------------------
-sub CloseEvent
-{
-	$ModuleData{currentNode} = pop @{$ModuleData{parentNodes}};
-}
-
-#--------------------------------------------------------------------------------------------------
-# AUTOLOAD (For text output : Print, Error, Warning, Remark, Note).
-#--------------------------------------------------------------------------------------------------
-sub AUTOLOAD
-{
-  my ($method, $text) = (our $AUTOLOAD, join('', @_));
-  return unless($text);
-  ++$ModuleData{step};
-  my ($type) = ($method =~ /::(.*)$/);
-
-  if($text =~ s/\[bold\](.*?)\[\/bold\]/<b>$1<\/b>/g)
-  { warn "formatting [bold] ... [/bold] is depreciated: please update your script to use <b> and </b>\n"; }
-  
-  if($text =~ s/\[italic\](.*?)\[\/italic\]/<i>$1<\/i>/g)
-  { warn "formatting [italic] ... [/italic] is depreciated: please update your script to use <i> and </i>\n"; }
-  
-  if($text =~ s/\[underline\](.*?)\[\/underline\]/<u>$1<\/u>/g)
-  { warn "formatting [underline] ... [/underline] is depreciated: please update your script to use <u> and </u>\n"; }
-                                                            
-  if($ModuleData{verbose})                                  
-  {                                                         
-    my $rawText = $text;                                    
-   	$rawText =~ s/\<b>//g;
-  	$rawText =~ s/\<\/b>//g;
-  	$rawText =~ s/\<i>//g;
-  	$rawText =~ s/\<\/i>//g;
-  	$rawText =~ s/\<u>//g;
-  	$rawText =~ s/\<\/u>//g;
-    
-    if($type !~ /^print$/i) { print " \/!\\ ", uc($type)," :\n$rawText\n\n"; }
-    else                    { print "$rawText"; $type = '__'.$type; }
-  }
-
-  my $node = new XMLManip::Node(lc($type));
-  $node->Attribute('time', scalar(localtime));
-  $node->Attribute('step', $ModuleData{step});
-  $node->Content($text);
-
-  $ModuleData{currentNode}->PushChild($node);
-}
-
-#--------------------------------------------------------------------------------------------------
-# Depreciated Print Subroutines - Should be replaced with formatting tags in regular 'Print'.
-#--------------------------------------------------------------------------------------------------
-sub PrintBold
-{ # For backwards compatibility
-  warn "subroutine \'PrintBold\' is depreciated: please update your script and add formatting tags\n";
-	OUT2XML::Print('<b>', @_, '</b>');
-}
-
-sub PrintItalic
-{ # For backwards compatibility
-  warn "subroutine \'PrintItalic\' is depreciated: please update your script and add formatting tags\n";
-	OUT2XML::Print('<i>', @_, '</i>');
-}
-
-sub PrintUnderline
-{ # For backwards compatibility
-  warn "subroutine \'PrintUnderline\' is depreciated: please update your script and add formatting tags\n";
-	OUT2XML::Print('<u>', @_, '</u>');
-}
-
-#--------------------------------------------------------------------------------------------------
-# OpenParagraph and CloseParagraph.
-#--------------------------------------------------------------------------------------------------
-sub OpenParagraph
-{ warn "subroutine \'OpenParagraph\' is depreciated: please update your script\n"; }
-
-sub CloseParagraph
-{ warn "subroutine \'CloseParagraph\' is depreciated: please update your script\n"; }
-
-#--------------------------------------------------------------------------------------------------
-# IconText
-#--------------------------------------------------------------------------------------------------
-sub IconPrint
-{
-  my ($icon, $text) = (shift, join('', @_));
-  ++$ModuleData{step};
-
-  my $node = new XMLManip::Node('__icon_print');
-  $node->Attribute('icon', $icon);
-  
-  if($text =~ s/\[bold\](.*?)\[\/bold\]/<b>$1<\/b>/g)
-  { warn "formatting [bold] ... [/bold] is depreciated: please update your script to use <b> and </b>\n"; }
-  
-  if($text =~ s/\[italic\](.*?)\[\/italic\]/<i>$1<\/i>/g)
-  { warn "formatting [italic] ... [/italic] is depreciated: please update your script to use <i> and </i>\n"; }
-  
-  if($text =~ s/\[underline\](.*?)\[\/underline\]/<u>$1<\/u>/g)
-  { warn "formatting [underline] ... [/underline] is depreciated: please update your script to use <u> and </u>\n"; }
-                                                            
-  if($ModuleData{verbose})                                  
-  {                                                         
-    my $rawText = $text;                                    
-   	$rawText =~ s/\<b>//g;
-  	$rawText =~ s/\<\/b>//g;
-  	$rawText =~ s/\<i>//g;
-  	$rawText =~ s/\<\/i>//g;
-  	$rawText =~ s/\<u>//g;
-  	$rawText =~ s/\<\/u>//g;
-    
-    print "$rawText";
-  }
-
-	$node->Attribute('time', scalar(localtime));
-  $node->Attribute('step', $ModuleData{step});
-  $node->Content($text);
-  $ModuleData{currentNode}->PushChild($node);
-}
-
-#--------------------------------------------------------------------------------------------------
-# AppendXmlNode to the structure
-#--------------------------------------------------------------------------------------------------
-sub AppendXmlNode
-{
-	my ($node)	= (shift);	
-	$ModuleData{currentNode}->PushChild($node);		
-}
-
-#--------------------------------------------------------------------------------------------------
-# Allow to execute a command and get it's output into the logger
-#--------------------------------------------------------------------------------------------------
-use IPC::Open3;  
-sub Execute
-{
-	my ( $cmd ) = @_;
-	my $childpid = open3(\*WTRFH, \*RDRFH, \*ERRFH, $cmd);
-	close(WTRFH);
-	close(ERRFH);
-	my $out = "";
-	while(<RDRFH>)
-	{
-			$out .= <RDRFH>;
-	}
-	# Closing cleanly....
-	close(RDRFH);		
-
-	# dump content
-	OUT2XML::Print ( $out."\n" );
-
-	waitpid($childpid, 0);
-}
-
-
-#--------------------------------------------------------------------------------------------------
-# IncludeCPP
-#--------------------------------------------------------------------------------------------------
-sub IncludeCPP
-{
-	my ($file, $line, $width) = (shift, shift, shift);
-	++$ModuleData{step};
-	
-	my $cppNode = new XMLManip::Node('__cpp_include');
-	$cppNode->Attribute('file', $file);
-	$cppNode->Attribute('line', $line);
-	$cppNode->Attribute('width', $width);
-	$cppNode->Attribute('step', $ModuleData{step});
-	
-	$ModuleData{currentNode}->PushChild($cppNode);
-}
-
-#--------------------------------------------------------------------------------------------------
-# Die
-#--------------------------------------------------------------------------------------------------
-sub Die
-{
-  my ($errCode, $message) = (shift);
-  my ($pkg, $file, $line) = caller;
-
-  if($file and $line){ $message = $errCode." : ".ERR::GetError($errCode)." in file \'".$file."\' at line \'".$line."\'"; }
-  else               { $message = $errCode." : ".ERR::GetError($errCode); }
-
-  Footer("Finished on ".scalar(localtime), "call to OUT2XML::Die( ".$message." )");
-  CloseXMLLog();
-
-  exit($errCode);
-}
-
-1;
-
-#--------------------------------------------------------------------------------------------------
-#
-#  XML2HTML package.
-#
-#--------------------------------------------------------------------------------------------------
-
-package XML2HTML;
-
-use strict;
-use warnings;
-use File::Copy;
-use ISIS::XMLManip;
-use ISIS::HTMLmanip;
-use ISIS::ErrorDefs;
-
-use constant ISIS_VERSION     => '2.0.0 alpha';
-use constant ISIS_LAST_UPDATE => '13/12/2005';
-
-my $XMLData; # xml file parsed data.
-
-#--------------------------------------------------------------------------------------------------
-# GenHTMLLogFile : Only subroutine to be called.
-#--------------------------------------------------------------------------------------------------
-sub GenHTMLLogFile
-{
-	my ($xmlfile, $htmlfile, $discard, $ostream) = (shift, shift, shift);
-
-  $ModuleData{discard} = $discard || '';
-  
-  # Saving old log id existing
-  if ( -e $htmlfile )
-  {
-  	my $id = 1;
-  	my $nn;
-  	do {
-  		$nn = $htmlfile;
-  		$nn =~ s/\.html/_${id}.html/;
-  		$id++;
-  	}
-  	while ( -e $nn );
-  	print "$htmlfile -> $nn\n";	
-  	move ($htmlfile, $nn);
-  }
-  
-	open($ostream, '>'.$htmlfile) or return ERR::FILE_CREATION_FAILED;
-
-  # Read XML and create document body.
-	$XMLData  = &XMLManip::ParseXMLFile($xmlfile);
-	my $outputer = new HTMLManip($ostream, 'configuration.xml', $ModuleData{interface});
-	
-	foreach my $css (@{$ModuleData{css}})
-	{ $outputer->UserRequireCSSFile($css); }
-	
-	foreach my $js (@{$ModuleData{jsc}})
-	{ $outputer->UserRequireJSFile($js); }
-	
-	my $document = $outputer->Create('Log::Document');
-	
-	my %CustomOutputer;
-	foreach my $c (@{$XMLData->Child('__customoutputer')})
-	{
-		$CustomOutputer{ $c->Attribute('type') }{ module } = $c->Attribute('module');
-		$CustomOutputer{ $c->Attribute('type') }{ config } = $c;
-	}
-	
-	# Create header.
-	my $hNode = ${$XMLData->Child('__header')}[0];
-	if($hNode)
-	{
-	  	if ($CustomOutputer{'__header'})
-	  	{
-			$document->Header($outputer->Create( $CustomOutputer{'__header'}{module},
-	                                    $hNode->Attribute('title'),
-	                                    $hNode->Attribute('subtitle'),
-	                                    $CustomOutputer{'__header'}{config}));
-
-	  	}
-	  	else
-	  	{
-			$document->Header($outputer->Create( 'Log::Header',
-	                                    $hNode->Attribute('title'),
-	                                    $hNode->Attribute('subtitle')));
-	  	}
- 	}
-	
-	# Create footer.
-	my $fNode = ${$XMLData->Child('__footer')}[0];
-	if ($fNode)
-	{
-	 	if ($CustomOutputer{'__footer'})
-	  	{
-			$document->Footer($outputer->Create( $CustomOutputer{'__footer'}{module},
-	                                    $fNode->Attribute('title'),
-	                                    $fNode->Attribute('subtitle'),
-	                                    $CustomOutputer{'__footer'}{config}));
-
-	  	}
-	  	else
-	  	{
-			$document->Footer($outputer->Create('Log::Footer',
-	                                    $fNode->Attribute('title'),
-	                                    $fNode->Attribute('subtitle')));
-	  	}
-	}
-	
-	# Create summary
-	my $sNode = ${$XMLData->Child('__summary')}[0];
-	$document->Summary(&__Summary($outputer, $sNode, $XMLData));
-	
-	# Merge all contigus prints to one.
-	&__MergePrints($XMLData);
-	
-	# Create main content.
-	&__PrintMainContents($document, $outputer, @{$XMLData->Child('__maincontent')});
-	
-	$document->Print();
-	
-	if($ModuleData{updatedxml})
-	{
-	  $xmlfile =~ s/\.xml/_updated\.xml/;
-	  &XMLManip::WriteXMLFile($XMLData, $xmlfile);
-	}
-
-	return ERR::NO_ERROR;
-}
-
-#--------------------------------------------------------------------------------------------------
-# Print main contents in output HTML logfile.
-#--------------------------------------------------------------------------------------------------
-sub __PrintMainContents
-{
-	my ($parent, $outputer) = (shift, shift);
-
-	foreach my $xmlNode (@_)
-	{
-		my $maincontent = $outputer->Create('Log::MainContent');
-		$parent->PushChild($maincontent);
-		
-	  my $title = $outputer->Create('Title1', $xmlNode->Attribute('title'));
-	  $maincontent->PushChild($title);
-
-		foreach (@{$xmlNode->Childs()})
-		{
-			no strict 'refs';
-			my $function = $_->Type();
-			&$function($maincontent, $outputer, $_);
-		}
-	}
-}
-
-#--------------------------------------------------------------------------------------------------
-# Print summary in output HTML logfile.
-#--------------------------------------------------------------------------------------------------
-sub __Summary
-{
-  my ($outputer, $sNode, $rootNode) = (shift, shift, shift);
-  my ($title, $table) = (undef, undef);
-
-  my $summary = $outputer->Create('Log::Summary');
-	my $content = $outputer->Create('Log::SummaryContent');
-	$summary->PushChild($content);
-
-  if($sNode)
-  {
-    $title = $outputer->Create('Title1', $sNode->Attribute('title'));
-    $content->PushChild($title);
-    $table = $outputer->Create('Table2D');
-    $content->PushChild($table);
-  
-    foreach (@{$sNode->Child('__elmt')})
-    {
-      my $tag = $outputer->Create('Text', $_->Attribute('tag'));
-      $tag->Style('s_tag');
-      my $val = $outputer->Create('Text', $_->Attribute('val'));
-      $val->Style('s_val');
-      
-      $table->AddLine($tag, $val);
-    }
-    
-    $table->SetColumnAttr(0, { nowrap => 'nowrap', valign => 'top' });
-  }
-  
-  $title = $outputer->Create('Title1', 'Global Statistics');
-  $content->PushChild($title);
-  $table = $outputer->Create('Table2D');
-  $content->PushChild($table);
-  
-  my @texts;
-  my %counts = &__NbMsgGeneric($rootNode);
-  foreach my $type (sort keys %counts)
-  {
-    my $value = $counts{$type};
-    my $text  = $outputer->Create('Text', "$value $type".($value == 1 ? '' : 's'));
-    $text->Style($value ? "gbl_cnt_$type" : 'gbl_cnt_default');
-    
-    push @texts, $text;
-    $ModuleData{types}{$type} = 0;
-  }
-
-  $table->AddLine(@texts);
-  
-  return $summary;
-}
-
-#--------------------------------------------------------------------------------------------------
-# Main content title.
-#--------------------------------------------------------------------------------------------------
-sub __maintitle
-{
-	my ($parent, $outputer, $xmlNode) = (shift, shift, shift);
-	my $titleNode = $outputer->Create('Title1', $xmlNode->Attribute('title'));
-	
-	$parent->PushChild($titleNode);
-}
-
-#--------------------------------------------------------------------------------------------------
-# Print event.
-#--------------------------------------------------------------------------------------------------
-sub __event
-{
-  my ($parent, $outputer, $xmlNode) = (shift, shift, shift);
-  
-  my $eventNode = $outputer->Create('Node', $xmlNode->Attribute('title'));
-  $eventNode->DiscardIfEmpty() if($ModuleData{discard_empty_nodes});
-
-  my %counts = &__NbMsgGeneric($xmlNode);
-  foreach my $type (sort keys %{$ModuleData{types}})
-  {
-    my $value = $counts{$type} || '0';
-    $eventNode->PushNodeInfo("$value $type".($value == 1 ? '' : 's'),
-                             ($value ? "cnt_$type" : 'cnt_default'));
-  }
-  
-  foreach (@{$xmlNode->Childs()})
-  {
-    no strict 'refs';
-    my $function = $_->Type();
-    &$function($eventNode, $outputer, $_); 
-  }
-  
-  $parent->PushChild($eventNode);
-}
-
-#--------------------------------------------------------------------------------------------------
-# Print text with left side icon.
-#--------------------------------------------------------------------------------------------------
-sub __icon_print
-{
-  my ($parent, $outputer, $xmlnode) = (shift, shift, shift);
-  
-  my $text = $outputer->Create('Text', $xmlnode->Content());
-  $text->Style($outputer->GetAssociatedClass($xmlnode->Attribute('icon')));
-  
-  $parent->PushChild($text);
-}
-
-#--------------------------------------------------------------------------------------------------
-# Print all other output types.
-#--------------------------------------------------------------------------------------------------
-sub AUTOLOAD
-{
-	my ($method, $parent, $outputer, $xmlNode) = (our $AUTOLOAD, shift, shift, shift);
-	
-	#print $method, "\n";
-	return if($xmlNode->Type() =~ /^$ModuleData{discard}$/);
-	
-	my $content = $xmlNode->Content();
-
-	if ($content)
-	{
-		$content =~ s/\&lt;b\&gt;/<b>/g;
-		$content =~ s/\&lt;\/b\&gt;/<\/b>/g;
-		$content =~ s/\&lt;i\&gt;/<i>/g;
-		$content =~ s/\&lt;\/i\&gt;/<\/i>/g;
-		$content =~ s/\&lt;u\&gt;/<u>/g;
-		$content =~ s/\&lt;\/u\&gt;/<\/u>/g;
-	}
-	
-	my $text = $outputer->Create('Text', $content);
-	$text->Style($ModuleData{classes}->{$xmlNode->Type()});
-	
-	foreach (@{$xmlNode->Childs()})
-  {
-    no strict 'refs';
-    my $function = $_->Type();
-    &$function($parent, $outputer, $_); 
-  }
-
-	$parent->PushChild($text);
-}
-
-#--------------------------------------------------------------------------------------------------
-# Merge printouts.
-#--------------------------------------------------------------------------------------------------
-sub __MergePrints
-{
-	my ($node, $i) = (shift, 0);
-	my $rCldArray = $node->Childs();
-	
-	while($i != scalar @$rCldArray)
-	{
-	  my ($chStart, $chEnd) = ($$rCldArray[$i], undef);
-	  if($chStart->Type() eq '__print')
-	  {
-	    my $j = $i + 1;
-	    while(($chEnd = $$rCldArray[$j]) && ($chEnd->Type eq '__print'))
-	    { ++$j; }
-	    --$j;
-	    
-	    if($i != $j)
-	    {
-	      my $node    = new XMLManip::Node('__print', $chStart->Attributes());
-	      my $content = '';
-
-	      for my $k ($i .. $j)
-	      { $content .= $$rCldArray[$k]->Content() || ''; }
-	      
-	      $ModuleData{updatedxml} = 1;
-	      $node->Content($content);
-	      splice(@$rCldArray, $i, $j - $i + 1, $node);
-	    }
-	  }
-	  else
-	  {
-	    __MergePrints($chStart) if(scalar @{$chStart->Childs()} != 0);
-	  }
-
-	  ++$i;
-	}
-}
-
-#--------------------------------------------------------------------------------------------------
-# Count number of specific messages in event - Generic version.
-#--------------------------------------------------------------------------------------------------
-sub __NbMsgGeneric
-{
-  my ($node, %counts) = (shift);
-
-  foreach my $child (@{$node->Childs()})
-  {
-    unless(scalar @{$child->Childs()} == 0)
-    {
-      my %res = __NbMsgGeneric($child);
-      
-      foreach my $type (keys %res)
-      {
-        $counts{$type} = ($counts{$type} || 0);
-        $counts{$type} += $res{$type};
-      }
-    }
-
-    next if($child->Type() =~ /^__.*$/);
-    
-    ++$counts{$child->Type()};
-  }
-
-  return %counts;
-}
-
-1;
-
-__END__
-
-#--------------------------------------------------------------------------------------------------
-# Documentation.
-#--------------------------------------------------------------------------------------------------
-
-=pod
-
-=head1 NAME
-
-ISIS::Logger2 - An HTML log generator module.
-
-=head1 SYNOPSIS
-
-	use ISIS::Logger2;
-
-	# Set temporary log name, interface, and verbose.
-	OUT2XML::SetXMLLogName('test_log.xml');
-	OUT2XML::SetXMLLogInterface('isis_interface/');
-	OUT2XML::SetXMLLogVerbose('on');
-	
-	# Link a CSS file to the HTML output.
-	OUT2XML::LinkCSSFile('style.css');
-	
-	# Open the log.
-	OUT2XML::OpenXMLLog();
-	
-	# Print a summary.
-	OUT2XML::OpenSummary("Log Summary");
-	OUT2XML::SummaryElmt("Build Type", "Multibase");
-	OUT2XML::SummaryElmt("Used SymbianOS", "value 2");
-	OUT2XML::SummaryElmt("Used Series 60", "value 3");
-	OUT2XML::CloseSummary();
-	
-	# Print a header.
-	OUT2XML::Header("Log File Logger2 Test v".Logger2::ISIS_VERSION, "Started on ".(localtime));
-	
-	# Create a main content.
-	OUT2XML::OpenMainContent("Main Content 2");
-		OUT2XML::OpenEvent("Event 1 : First step");
-		  OUT2XML::Error("This is an error\non two lines");
-		  OUT2XML::OpenEvent("SubEvent 1 : Test");
-		  	OUT2XML::Print("This is simple text");
-		  	OUT2XML::OpenEvent("SubSubEvent 1 : Test");
-		  		OUT2XML::Warning("This is a warning");
-		  		
-		  		OUT2XML::OpenParagraph('bold');
-		  		my @array = ('tom', 'dick', 'harry');
-		  		foreach (@array) { OUT2XML::Print($_."\n"); }
-		  		OUT2XML::CloseParagraph();
-
-		  	OUT2XML::CloseEvent();
-		  OUT2XML::CloseEvent();
-		OUT2XML::CloseEvent();
-		OUT2XML::OpenEvent("Event 2 : Second step");
-			OUT2XML::Print("This is a normal output");
-		OUT2XML::CloseEvent();
-		OUT2XML::OpenEvent("Event 3 : Third step");
-			OUT2XML::Warning("This is a warning");
-		OUT2XML::CloseEvent();
-		OUT2XML::OpenEvent("Event 4 : Fourth step");
-			OUT2XML::Remark("This is a remark");
-		OUT2XML::CloseEvent();
-	OUT2XML::CloseMainContent();
-	
-	# Print a footer.
-	OUT2XML::Footer("Finished on ".(localtime), "No HTML Generation");
-	
-	# Close the temporary log file.
-	OUT2XML::CloseXMLLog();
-
-=head1 DESCRIPTION
-
-The ISIS::Logger2 module provides several packages used to create a complex, 
-well presented and organised log file. There are two packages within this module :
-C<L<OUT2XML>> and C<L<XML2HTML>>. The first one generates an XML file that will
-be parsed by the second one in order to generate the proper output.
-
-The C<L<OUT2XML>> package provides a set of simple subroutines allowing to print
-regular output to the terminal while logging all the information for HTML log
-generation.
-
-The C<L<XML2HTML>> package contains a set of subroutines that shouldn't be called
-directly by the user. It contains a main subroutine 'GenHTMLLogFile' that will
-automatically be called after a call to 'OUT2XML::CloseXMLLog' or 'OUT2XML::Die'.
-This subroutine parses the whole XML generated by OUT2XML and uses the OUT set of
-modules to generate the equivalent HTML output.
-
-=head1 OUT2XML
-
-=head2 SetXMLLogName( STRING ) :
-
-Defines the temporary XML file name. This subroutine should be called before
-'OpenXMLLog';
-
-=head2 SetXMLLogInterface( STRING ) :
-
-Defines the interface root to be used for the HTML log file. This subroutine
-should be called before 'OpenXMLLog';
-
-=head2 SetXMLLogVerbose( STRING ) :
-
-Defines if logged information should be outputed to the terminal/shell. This
-subroutine should be called before 'OpenXMLLog';
-
-=head2 OpenXMLLog( ) :
-
-Opens the XML log - Should be called after 'SetXMLLogName', 'SetXMLLogInterface' and
-'SetXMLLogVerbose'.
-
-=head2 CloseXMLLog( ) :
-
-Close the XML log file. This subroutine will automatically call 'XML2HTML::GenHTMLLogFile'.
-
-=head2 OpenSummary( ) :
-
-If verbose is set for the logger, this will ensure that a call to 'SummaryElmt'
-prints out its content, otherwise, a call to 'SummaryElmt' will have no effect
-on the terminal/shell and will only log its information.
-
-=head2 CloseSummary(  ) :
-
-Ends the verbose of summary elements. See 'OpenSummary' for more information.
-
-=head2 SummaryElmt( NAME, VALUE ) :
-
-Logs a name and its value pair to generate a summary in the outputed HTML file.
-If called between 'OpenSummary' and 'CloseSummary', an additionnal output to the
-terminal/shell will be performed.
-
-=head2 OpenMainContent( STRING ) :
-
-Creates a new main content in which events can be created. All future calls to
-the print out subroutine or events will be encapsulated in that main event until
-a call to 'CloseMainContent' is made.
-
-=head2 CloseMainContent( STRING ) :
-
-Closes the current main content. Note that all events and print out subroutine
-calls will be discarded.
-
-=head2 OpenEvent( STRING ) :
-
-Creates a new event in which other events and print out subroutine calls can be
-made. These events will hide their content until they are clicked on, allowing
-the final log user to decide what information to display.
-
-=head2 CloseEvent( STRING ) :
-
-Closes the current event. All events and print out subroutine calls will be passed
-to the containing main content or event.
-
-=head2 OpenParagraph( STYLE ) :
-
-This will open a paragraph, and all calls to 'OUT2XML::Print' will be encapsulated in
-one HTML div element. The optional style argument will be set as the class of the div
-element allowing to modify the text's appearence with a css. The 'OUT2XML::Print'
-subroutine can still be called normally.
-
-=head2 CloseParagraph(  ) :
-
-Closes the current paragraph, returning to the previously opened and not closed node.
-
-=head2 Print( STRING ) :
-
-Prints out regular text to the log file. This text will be discarded if not done
-in a main content, event or paragraph. If this subroutine is called outside of a
-paragraph, an automatic paragraph will be generated for this text. Prefer using
-'OUT2XML::OpenParagraph' and 'OUT2XML::CloseParagraph' when calling 'OUT2XML::Print'
-several times in a row.
-
-=head2 <NAME>( STRING, [ERROR_CODE] ) :
-
-Prints out a message as a NAME - The message will be encapsulated in a <div> HTML
-element with a class attribute matching that name. The corresponding CSS file that
-is set with 'SetXMLLogInterface' can have the equivalent definitions to format these
-HTML elements.
-
-If an error code is specified, a call to 'Die' will be made terminating the current
-script.
-
-=head2 Die( STRING, [ERROR_CODE] ) :
-
-Kills the current script execution. Only calls to 'Die' should be made in a script
-using this Logger. Calling subroutines such as 'exit' or 'die' will corrupt the xml
-log file and make the HTML generation impossible.
-
-=head1 XML2HTML
-
-=head2 GenHTMLLogFile( XMLFILE ) :
-
-Generates an HTML log file from an XML log file created by the C<L<OUT2XML>> package.
-See information regarding the C<L<OUT2XML>> package of the ISIS::Logger2 module.
-
-=head1 AUTHOR
-
-
-
-=cut
-
-#--------------------------------------------------------------------------------------------------
-# End of file.
-#--------------------------------------------------------------------------------------------------
--- a/buildframework/helium/tools/common/packages/ISIS/Logger3.pm	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1348 +0,0 @@
-#
-# 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: 
-#
-#--------------------------------------------------------------------------------------------------
-# Name   : Logger3.pm
-# Use    : ISIS Logging module.
-
-#
-# Synergy :
-# Perl %name    : % (%full_filespec :  %)
-# %derived_by   : %
-# %date_created : %
-#
-# History :
-# v3.1.6 (23/05/2006)
-#  - Updated footer message to always specify version of used logger3.
-#  - Updated Header and Footer subroutines to avoid multiple <header> and <footer> nodes.
-#  - Updated CloseXMLLog to create default header and footer if none specified.
-#  - Moved creation of summary node in OpenXMLLog subroutine.
-#
-# v3.1.5 (06/04/2006)
-#  - Reworte the way user defined CSS files are handled to make sure they are the last ones
-#    included in the document body to allow overwriting of certain values.
-#
-# v3.1.4 (05/04/2006)
-#  - Updated OUT2XML to store CSS and JS files in arrays and keep order.
-#  - Updated XML2HTML to store CSS and JS files in arrays and keep order.
-#
-# v3.1.3 (28/03/2006)
-#  - Implement custom outputer for header and footer,
-#  - Implement PrintRawXHTML to write directly XHTML content (To be used carefully).
-#  - Added AppendXmlNode
-#
-# v3.1.2 (20/03/2006)
-#  - Updated Header and Footer subroutines to display titles in verbose mode.
-#  - Minor changes to the script.
-#
-# v3.1.1 (17/03/2006)
-#  - Updated the names of both OUT2XML and XML2HTML to be sub modules of Logger3.
-#
-# v3.1.0 (15/03/2006)
-#  - Updated IconPrint subroutine to printout to shell its text if in verbose mode.
-#  - Updated OpenEvent to allow makeup for node HTML look.
-#  - Added PrintToShell subroutine to OUT2XML package with corresponding changes to XML2HTML.
-#  - Added Separator subroutine to OUT2XML package with corresponding changes to XML2HTML.
-#
-# v3.0.0 (06/02/2006)
-#  - Updated 'OUT2XML' and 'XML2HTML' to be instanciable packages and allow multiple logs at once.
-#
-# v2.2.0 (27/01/2006)
-#  - Rewrote XML2HTML package :
-#    - Corrected event printout.
-#    - Added special message count.
-#    - Added global special message count.
-#    - Errors, Warnings, Remarks and Notes now have Ids.
-#    - Any type of specific message is printed.
-#
-# v2.1.1 (13/01/2006)
-#  - Updated Die subroutine to print line and file if specified.
-#
-# v2.1.0 (11/01/2006)
-#  - Updated 'OUT2XML' package with following changes :
-#    - General print messages handled by 'AUTOLOAD' now print all their arguments.
-#      The same calls should be replaced by a extra call to 'Die'.
-#    - 'PrintBold' is now depreciated and should be replaced by formatting tags.
-#    - 'PrintItalic' is now depreciated and should be replaced by formatting tags.
-#    - 'PrintUnderline' is now depreciated and should be replaced by formatting tags.
-#    - 'OpenParagraph' and 'CloseParagraph' are now depreciated and should be removed.
-#  - Updated 'XML2HTML' package with following changes :
-#    - contigus 'print' nodes will be printed in one block.
-#
-# v2.0.0 (13/12/2005)
-#  - Updated module to use ISIS::XMLManip.
-#  - Added 'OpenParagraph' and 'CloseParagraph' subroutines to OUT2XML.
-#  - Added 'LinkCSSFile' subroutine to OUT2XML.
-#  - Added 'DiscardMessageType' subroutine to OUT2XML.
-#
-# v1.2.0 (07/11/2005)
-#  - Fixed event id
-#
-# v1.1.0 (30/09/2005)
-#  - Added C++ formatting routines.
-#  - Added OUT2XML::IncludeCPP to include file in log.
-#  - Added XML2HTML::cpp_include to parse corresponding XML tag.
-#
-# v1.0.0 (20/09/2005)
-#  - Fist version of the script.
-#--------------------------------------------------------------------------------------------------
-
-
-#--------------------------------------------------------------------------------------------------
-#
-#  Logger3::OUT2XML package.
-#
-#--------------------------------------------------------------------------------------------------
-package Logger3::OUT2XML;
-
-use strict;
-use warnings;
-use ISIS::ErrorDefs;
-use ISIS::XMLManip;
-use ISIS::HttpServer;
-use ISIS::Assertion _DEBUG => 1;
-
-use constant ISIS_VERSION     => '3.1.6';
-use constant ISIS_LAST_UPDATE => '23/05/2006';
-
-#--------------------------------------------------------------------------------------------------
-# Constructor
-#--------------------------------------------------------------------------------------------------
-sub new
-{
-  my ($class, $xml, $verbose, $interface) = (shift, shift || '', shift || 0, shift || HttpServer::GetAddress().'/isis_interface');
-  my (@parents, @stylesheets, @javascripts);
-  my $html = $xml;
-  
-  if($xml ne '')
-  {
-    $xml  .= '.xml'  unless($xml =~ /\.xml$/i);
-    $html .= '.html' unless($html =~ s/\.xml$/\.html/);
-  }
-  
-  bless { __html_name    => $html,       # html output file name.
-          __xml_name     => $xml,        # xml temp log file name.
-          __interface    => $interface,  # interface (css, javascript, images, ...).
-          __verbose      => $verbose,    # output to shell.
-        	__css_dep      => \@stylesheets, # CSS dependancies.
-          __jsc_dep      => \@javascripts, # Javascript dependancies.
-
-          __discards     => '',          # message types to discard.
-          __associations => {},          # message types to css class associations.
-          __step         => 0,           # unique id attributed to each node in the xml.
-          __has_header   => 0,             # flag to check if a generic header is necessary.
-          __has_footer   => 0,             # flag to check if a generic footer is necessary.
-          __is_generated => 0,           # flag to check correct html output file generation.
-
-          __root_node    => undef,       # xml temp log root node.
-          __summary_node => undef,       # summary node.
-          __current_node => undef,       # current node when creating xml tree.
-          __parent_nodes => \@parents,   # stack containing parent nodes of current node.
-        }, $class;
-}
-
-#--------------------------------------------------------------------------------------------------
-# SetXMLLogName
-#--------------------------------------------------------------------------------------------------
-sub SetXMLLogName
-{
-  my ($self, $html) = (shift, shift);
-  
-  my $xml = $html;
-
-  $xml  .= '.xml'  unless($xml =~ /\.xml$/i);
-  $html .= '.html' unless($html =~ s/\.xml$/\.html/);
-
-  $self->{__html_name} = $html;
-  $self->{__xml_name}  = $xml;
-  
-  __ASSERT($self->{__html_name} ne $self->{__xml_name});
-}
-
-#--------------------------------------------------------------------------------------------------
-# SetXMLLogVerbose
-#--------------------------------------------------------------------------------------------------
-sub SetXMLLogVerbose
-{
-  my ($self, $verbose) = (shift, shift);
-  
-  $self->{__verbose} = ($verbose =~ /(?:on|yes|1)/i) ? 1 : 0;
-}
-
-#--------------------------------------------------------------------------------------------------
-# SetXMLLogInterface    
-#--------------------------------------------------------------------------------------------------
-sub SetXMLLogInterface
-{
-  my ($self, $interface) = (shift, shift);
-  
-  $interface =~ s/\\$//;
-  $self->{__interface} = $interface;
-}
-
-#--------------------------------------------------------------------------------------------------
-# LinkCSSFile
-#--------------------------------------------------------------------------------------------------
-sub LinkCSSFile
-{
-  my ($self, $file) = (shift, shift);
-  
-  foreach my $css (@{$self->{__css_dep}})
-  { return if($css eq $file); }
-  
-  push @{$self->{__css_dep}}, $file;
-}
-
-#--------------------------------------------------------------------------------------------------
-# LinkJavascriptFile
-#--------------------------------------------------------------------------------------------------
-sub LinkJSCFile
-{
-  my ($self, $file) = (shift, shift);
-  
-  foreach my $js (@{$self->{__jsc_dep}})
-  { return if($js eq $file); }
-  
-  push @{$self->{__jsc_dep}}, $file;
-}
-
-#--------------------------------------------------------------------------------------------------
-# DiscardMessageTypes
-#--------------------------------------------------------------------------------------------------
-sub DiscardMessgeTypes
-{
-  my ($self) = (shift);
-  
-  $self->{__discards} = join('|', @_);
-}
-
-#--------------------------------------------------------------------------------------------------
-# AssociateMessageToClass
-#--------------------------------------------------------------------------------------------------
-sub AssociateMessageToClass
-{
-  my ($self, $type, $class) = (shift, shift, shift);
-  
-  $self->{__associations}->{lc($type)} = $class;
-}
-
-#--------------------------------------------------------------------------------------------------
-# OpenXMLLog
-#--------------------------------------------------------------------------------------------------
-sub OpenXMLLog
-{
-  my ($self) = (shift);
-
-  __ASSERT($self->{__xml_name}  =~ /\.xml/i);
-  __ASSERT($self->{__html_name} =~ /\.html/i);
-
-	# create root node.
-	$self->{__root_node} = new XMLManip::Node('__log', { date => scalar(localtime),
-	                                                     interface => $self->{__interface} });
-	
-	# create summary node.
-	$self->{__summary_node} = new XMLManip::Node('__summary');
-	$self->{__summary_node}->Comment(" +++ SUMMARY +++ ");
-	
-	$self->{__root_node}->Comment("  Name : ".$self->{__xml_name}."\n  Use  : Temporary XML log file - Generated by OUT2XML");
-	$self->{__current_node} = $self->{__root_node};
-}
-
-#--------------------------------------------------------------------------------------------------
-# CloseXMLLog
-#--------------------------------------------------------------------------------------------------
-sub CloseXMLLog
-{
-  my ($self) = (shift);
-  
-  $self->{__root_node}->PushChild($self->{__summary_node}) if($self->{__summary_node});
-  
-  $self->Header();
-  $self->Footer();
-  
-	foreach my $name ( keys ( %{$self->{__customize_outputer}}) )
-	{
-		my $custom = new XMLManip::Node('__customoutputer');
-		$custom->Attribute('type',$name);
-		$custom->Attribute('module',$self->{__customize_outputer}{$name}{module});
-		foreach (@{$self->{__customize_outputer}{$name}{config}})
-		{
-			$custom->PushChild($_);
-		}
-		$self->{__root_node}->PushChild($custom);
-	}
-	
-  XMLManip::WriteXMLFile($self->{__root_node}, $self->{__xml_name});
-  
-  my $logger = Logger3::XML2HTML->new($self->{__xml_name}, $self->{__html_name}, $self->{__discards});
-  
-  foreach (keys %{$self->{__associations}})
-  { $logger->AssociateMessageToClass($_, $self->{__associations}->{$_}); }
-  
-  foreach my $css (@{$self->{__css_dep}})
-  { $logger->LinkCSSFile($css); }
-  
-  foreach my $js (@{$self->{__jsc_dep}})
-  { $logger->LinkJSCFile($js); }
-  
-  $logger->Generate();
-  $self->{__is_generated} = 1;
-}
-
-#--------------------------------------------------------------------------------------------------
-# OpenSummary
-#--------------------------------------------------------------------------------------------------
-sub OpenSummary
-{
-  my ($self, $title) = (shift, shift);
-  
-	$self->{__summary_node}->Attribute('title', $title);
-  $self->{__in_summary} = 1;
-}
-
-#--------------------------------------------------------------------------------------------------
-# CloseSummary
-#--------------------------------------------------------------------------------------------------
-sub CloseSummary
-{
-  my ($self) = (shift);
-  
-	$self->{__in_summary} = 0;
-}
-
-#--------------------------------------------------------------------------------------------------
-# SummaryElmt
-#--------------------------------------------------------------------------------------------------
-sub SummaryElmt
-{
-  my ($self, $tag, $val) = (shift, shift, shift);
-  
-  $tag =~ s/\n//g;
-  $val =~ s/\n//g;
-  
-  if($self->{__verbose} && $self->{__in_summary})
-  { print '  ', $tag, " : ", $val, "\n"; } # STDOUT
-
-  $self->{__summary_node}->PushChild(new XMLManip::Node('__elmt', { tag => $tag, val => $val }));
-}
-
-#--------------------------------------------------------------------------------------------------
-# SetCustomModule
-#--------------------------------------------------------------------------------------------------
-sub SetCustomModule($$$)
-{
-	my ($self, $name, $module, $customConfigNode) = (shift, shift, shift, shift);
-	$self->{__customize_outputer} { $name }{module} = $module;
-	$self->{__customize_outputer} { $name }{config} = $customConfigNode;
-}
-
-#--------------------------------------------------------------------------------------------------
-# Header
-#--------------------------------------------------------------------------------------------------
-sub Header
-{
-  my ($self, $title, $subtitle) = (shift, shift, shift);
-  
-  return if($self->{__has_header} == 1);
-  
-  $title    = $self->{__html_name} unless(defined $title);
-  $subtitle = 'Started on '.(localtime) unless(defined $subtitle);
-  
-  if($self->{__verbose})
-  {
-  	$self->PrintToShell("---------------------------------------------------------------------\n\n",
-  	                    '          ', uc($title), "\n",
-  	                    '          ', lc($subtitle), "\n\n",
-  	                    "---------------------------------------------------------------------\n");
-  }
-
-  my $headerNode = new XMLManip::Node('__header', { title => $title, subtitle => $subtitle });
-	$headerNode->Comment(" +++ HEADER +++ ");
-	
-  $self->{__root_node}->PushChild($headerNode);
-  $self->{__has_header} = 1;
-}
-
-#--------------------------------------------------------------------------------------------------
-# Footer
-#--------------------------------------------------------------------------------------------------
-sub Footer
-{
-  my ($self, $title, $subtitle) = (shift, shift, shift || '');
-  
-  return if($self->{__has_footer} == 1);
-  
-  $title     = 'Finished on '.(localtime) unless(defined $title);
-  $subtitle .= ' - ' if($subtitle ne '');
-  $subtitle .= 'Generated by Logger v'.ISIS_VERSION.' ('.ISIS_LAST_UPDATE.')';
-
-  if($self->{__verbose})
-  {
-  	$self->PrintToShell("---------------------------------------------------------------------\n",
-  	                    '  ', lc($title), "\n",
-  	                    '  ', lc($subtitle), "\n");
-  }
-  
-  my $footerNode = new XMLManip::Node('__footer', { title => $title, subtitle => $subtitle });
-  $footerNode->Comment(" +++ FOOTER +++ ");
-
-  $self->{__root_node}->PushChild($footerNode);
-  $self->{__has_footer} = 1;
-}
-
-#--------------------------------------------------------------------------------------------------
-# OpenMainContent
-#--------------------------------------------------------------------------------------------------
-sub OpenMainContent
-{ 
-  my ($self, $title) = (shift, shift);
-  
-  ++$self->{__step};
-
-  my $contentNode = new XMLManip::Node('__maincontent', { title => $title, step => $self->{__step} });
-	$contentNode->Comment(" +++ MAIN CONTENT +++ ");
-	
-	if($self->{__verbose})
-  {
-  	$self->PrintToShell("---------------------------------------------------------------------\n",
-  	                    '  ', lc($title), "\n",
-  	                    "---------------------------------------------------------------------\n");
-  }
-
-  push @{$self->{__parent_nodes}}, $self->{__current_node};
-  $self->{__current_node}->PushChild($contentNode);
-  $self->{__current_node} = $contentNode;
-}
-
-#--------------------------------------------------------------------------------------------------
-# CloseMainContent
-#--------------------------------------------------------------------------------------------------
-sub CloseMainContent
-{
-  my ($self) = (shift);
-  
-  $self->{__current_node} = pop @{$self->{__parent_nodes}};
-}
-
-#--------------------------------------------------------------------------------------------------
-# MainTitle
-#--------------------------------------------------------------------------------------------------
-sub MainTitle
-{
-	my ($self, $title) = (shift, shift);
-	
-	++$self->{__step};
-
-	my $titleNode = new XMLManip::Node('__maintitle', { title => $title, step => $self->{__step} });
-	$titleNode->Comment(" +++ ".uc($title)." +++ ");
-	
-	$self->{__current_node}->PushChild($titleNode);
-}
-
-#--------------------------------------------------------------------------------------------------
-# Separator
-#--------------------------------------------------------------------------------------------------
-sub Separator
-{
-	my ($self, $style) = (shift, shift || 'separator');
-	
-	++$self->{__step};
-	
-	my $separatorNode = new XMLManip::Node('__separator', { style => $style, step => $self->{__step}});
-	$self->{__current_node}->PushChild($separatorNode);
-}
-
-#--------------------------------------------------------------------------------------------------
-# OpenEvent
-#--------------------------------------------------------------------------------------------------
-sub OpenEvent
-{
-	my ($self, $title, $makeup) = (shift, shift, shift || {});
-  
-  ++$self->{__step};
-  
-  my $eventNode = new XMLManip::Node('__event');
-  $eventNode->Attribute('icon', $makeup->{icon}) if(exists $makeup->{icon});
-  $eventNode->Attribute('anim', $makeup->{anim} || 'button');
-  $eventNode->Attribute('title', $title);
-  $eventNode->Attribute('time', scalar(localtime));
-  $eventNode->Attribute('step', $self->{__step});
-
-  if($self->{__verbose})
-  {
-    $self->PrintToShell("----------------------------------------------------------------------------\n",
-                        " + ", $title, "\n");
-  }
-
-  push @{$self->{__parent_nodes}}, $self->{__current_node};
-  $self->{__current_node}->PushChild($eventNode);
-  $self->{__current_node} = $eventNode;
-}
-
-#--------------------------------------------------------------------------------------------------
-# CloseEvent
-#--------------------------------------------------------------------------------------------------
-sub CloseEvent
-{
-  my ($self) = (shift);
-  
-  $self->{__current_node} = pop @{$self->{__parent_nodes}};
-}
-
-
-sub PrintRawXHTML
-{
-	my ($self,  $text) = (shift, join('', @_));
-  
-  ++$self->{__step};
-  $self->PrintToShell($text);
-  
-  my $node = new XMLManip::Node('__print');
-  $node->Attribute('time', scalar(localtime));
-  $node->Attribute('step', $self->{__step});
-  $node->Content($text);
-
-  $self->{__current_node}->PushChild($node);	
-}
-
-#--------------------------------------------------------------------------------------------------
-# AUTOLOAD (For text output : Print, Error, Warning, Remark, Note).
-#--------------------------------------------------------------------------------------------------
-sub AUTOLOAD
-{
-  my ($self, $method, $text) = (shift, our $AUTOLOAD, join('', @_));
-  my ($type) = ($method =~ /OUT2XML::(.+?)$/);
-  
-  return unless (defined($text) or ($type !~ /^$self->{__discards}$/i));
-  
-  ++$self->{__step};
-  
-  $self->PrintToShell($text);
-  
-  $type = '__'.$type if($type =~ /^print$/i);
-  $text =~ s/\n/<br\/>/g;
-
-  my $node = new XMLManip::Node(lc($type));
-  $node->Attribute('time', scalar(localtime));
-  $node->Attribute('step', $self->{__step});
-  $node->Content($text);
-
-  $self->{__current_node}->PushChild($node);
-}
-
-#--------------------------------------------------------------------------------------------------
-# Depreciated Print Subroutines - Should be replaced with formatting tags in regular 'Print'.
-#--------------------------------------------------------------------------------------------------
-sub PrintBold
-{ # For backwards compatibility
-  warn "subroutine \'PrintBold\' is depreciated: please update your script and add formatting tags\n";
-	OUT2XML::Print('<b>', @_, '</b>');
-}
-
-sub PrintItalic
-{ # For backwards compatibility
-  warn "subroutine \'PrintItalic\' is depreciated: please update your script and add formatting tags\n";
-	OUT2XML::Print('<i>', @_, '</i>');
-}
-
-sub PrintUnderline
-{ # For backwards compatibility
-  warn "subroutine \'PrintUnderline\' is depreciated: please update your script and add formatting tags\n";
-	OUT2XML::Print('<u>', @_, '</u>');
-}
-
-#--------------------------------------------------------------------------------------------------
-# OpenParagraph and CloseParagraph.
-#--------------------------------------------------------------------------------------------------
-sub OpenParagraph
-{ warn "subroutine \'OpenParagraph\' is depreciated: please update your script\n"; }
-
-sub CloseParagraph
-{ warn "subroutine \'CloseParagraph\' is depreciated: please update your script\n"; }
-
-#--------------------------------------------------------------------------------------------------
-# IconText
-#--------------------------------------------------------------------------------------------------
-sub IconPrint
-{
-  my ($self, $icon, $text) = (shift, shift, join('', @_));
-  
-  ++$self->{__step};
-  
-  $self->PrintToShell($text);
-
-  my $node = new XMLManip::Node('__icon_print');
-  $node->Attribute('icon', $icon);
-	$node->Attribute('time', scalar(localtime));
-  $node->Attribute('step', $self->{__step});
-  $node->Content($text);
-  $self->{__current_node}->PushChild($node);
-}
-
-#--------------------------------------------------------------------------------------------------
-# Execute - This doesn't seem to work on version 5.6.1 of perl.
-#--------------------------------------------------------------------------------------------------
-sub Execute
-{
-  my ($self, $command) = (shift, shift);
-  my $pid = open3(*CMD_IN, *CMD_OUT, *CMD_ERR, $command);
-  
-  close(CMD_IN);
-  
-  my $selector = IO::Select->new();
-  $selector->add(*CMD_OUT, *CMD_ERR);
-  
-  while(my @ready = $selector->can_read())
-  {
-    foreach my $fh (@ready)
-    {
-      $self->Error(scalar <CMD_ERR>) if(fileno($fh) == fileno(CMD_ERR));
-      $self->Print(scalar <CMD_OUT>) if(fileno($fh) == fileno(CMD_OUT));
-      $selector->remove($fh) if eof($fh);
-    } 
-  }
-  
-  close(CMD_OUT);
-  close(CMD_ERR);
-  waitpid($pid, 0);
-}
-
-#--------------------------------------------------------------------------------------------------
-# AppendXmlNode to the structure
-#--------------------------------------------------------------------------------------------------
-sub AppendXmlNode
-{
-	my ($self, $node)	= (shift, shift);	
-	$self->{__current_node}->PushChild($node);		
-}
-
-#--------------------------------------------------------------------------------------------------
-# IncludeCPP
-#--------------------------------------------------------------------------------------------------
-sub IncludeCPP
-{
-	my ($self, $file, $line, $width) = (shift, shift, shift, shift);
-	
-	++$self->{__step};
-	
-	my $cppNode = new XMLManip::Node('__cpp_include');
-	$cppNode->Attribute('file', $file);
-	$cppNode->Attribute('line', $line);
-	$cppNode->Attribute('width', $width);
-	$cppNode->Attribute('step', $self->{__step});
-	
-	$self->{__current_node}->PushChild($cppNode);
-}
-
-#--------------------------------------------------------------------------------------------------
-# Die
-#--------------------------------------------------------------------------------------------------
-sub Die
-{
-  my ($self, $errCode, $message) = (shift, shift);
-  my ($pkg, $file, $line) = caller;
-
-  if($file and $line){ $message = $errCode." : ".ERR::GetError($errCode)." in file \'".$file."\' at line \'".$line."\'"; }
-  else               { $message = $errCode." : ".ERR::GetError($errCode); }
-
-  $self->Footer("Finished on ".scalar(localtime), "call to OUT2XML::Die( ".$message." )");
-  $self->CloseXMLLog();
-
-  exit($errCode);
-}
-
-#--------------------------------------------------------------------------------------------------
-# Make sure html output is generated.
-#--------------------------------------------------------------------------------------------------
-sub DESTROY
-{
-  my ($self) = (shift);
-
-	unless($self->{__is_generated})
-	{
-		$self->Footer("Finished on ".scalar(localtime));
-  	$self->CloseXMLLog();
-	}
-}
-
-#--------------------------------------------------------------------------------------------------
-# PrintToShell
-#--------------------------------------------------------------------------------------------------
-sub PrintToShell
-{
-	my ($self, $text) = (shift, join('', @_));
-	
-  if($text =~ s/\[bold\](.*?)\[\/bold\]/<b>$1<\/b>/g)
-  { warn "formatting [bold] ... [/bold] is depreciated: please update your script to use <b> and </b>\n"; }
-  
-  if($text =~ s/\[italic\](.*?)\[\/italic\]/<i>$1<\/i>/g)
-  { warn "formatting [italic] ... [/italic] is depreciated: please update your script to use <i> and </i>\n"; }
-  
-  if($text =~ s/\[underline\](.*?)\[\/underline\]/<u>$1<\/u>/g)
-  { warn "formatting [underline] ... [/underline] is depreciated: please update your script to use <u> and </u>\n"; }
-                                                            
-  if($self->{__verbose})                                  
-  {                                                         
-    my $rawText = $text;                                    
-   	$rawText =~ s/\<b>//g;
-  	$rawText =~ s/\<\/b>//g;
-  	$rawText =~ s/\<i>//g;
-  	$rawText =~ s/\<\/i>//g;
-  	$rawText =~ s/\<u>//g;
-  	$rawText =~ s/\<\/u>//g;
-    
-    print "$rawText";
-  }
-}
-
-1;
-
-#--------------------------------------------------------------------------------------------------
-#
-#  XML2HTML package.
-#
-#--------------------------------------------------------------------------------------------------
-package Logger3::XML2HTML;
-
-use strict;
-use warnings;
-use ISIS::XMLManip;
-use ISIS::HTMLmanip;
-use ISIS::ErrorDefs;
-use ISIS::Assertion _DEBUG => 1;
-
-use constant ISIS_VERSION     => '3.1.5';
-use constant ISIS_LAST_UPDATE => '06/04/2006';
-
-#--------------------------------------------------------------------------------------------------
-# Constructor
-#--------------------------------------------------------------------------------------------------
-sub new
-{
-  my ($class, $xmlfile, $htmlfile, $discard) = (shift, shift, shift, shift || '');
-  my (@stylesheets, @javascripts);
-  
-  bless { __xml_name     => $xmlfile,
-          __html_name    => $htmlfile,
-          __discards     => $discard,
-         	__css_dep      => \@stylesheets,
-          __jsc_dep      => \@javascripts,
-          __associations => {},
-          __outputer     => undef,
-        }, $class;
-}
-
-#--------------------------------------------------------------------------------------------------
-# LinkCSSFile
-#--------------------------------------------------------------------------------------------------
-sub LinkCSSFile
-{
-  my ($self, $file) = (shift, shift);
-  
-  foreach my $css (@{$self->{__css_dp}})
-  { return if($css == $file); }
-  
-	push @{$self->{__css_dep}}, $file;
-}
-
-#--------------------------------------------------------------------------------------------------
-# LinkJavascriptFile
-#--------------------------------------------------------------------------------------------------
-sub LinkJSCFile
-{
-  my ($self, $file) = (shift, shift);
-  
-	foreach my $js (@{$self->{__jsc_dep}})
-	{ return if($js == $file); }
-	
-	push @{$self->{__jsc_dep}}, $file;
-}
-
-#--------------------------------------------------------------------------------------------------
-# AssociateMessageToClass
-#--------------------------------------------------------------------------------------------------
-sub AssociateMessageToClass
-{
-  my ($self, $type, $class) = (shift, shift, shift);
-  
-  $self->{__associations}->{lc($type)} = $class;
-}
-
-#--------------------------------------------------------------------------------------------------
-# GenHTMLLogFile : Only subroutine to be called.
-#--------------------------------------------------------------------------------------------------
-sub Generate
-{
-  my ($self, $ostream) = (shift);
-  
-  open($ostream, '>'.$self->{__html_name}) or return ERR::FILE_CREATION_FAILED;
-  
-  $self->{__xml_data} = XMLManip::ParseXMLFile($self->{__xml_name});
-  my $outputer = new HTMLManip($ostream, 'configuration.xml', $self->{__xml_data}->Attribute('interface') || '');
-  
-  $self->{__outputer} = $outputer;
-  
-  foreach my $css (@{$self->{__css_dep}})
-  { $outputer->UserRequireCSSFile($css); }
-  
-  foreach my $js (@{$self->{__jsc_dep}})
-  { $outputer->UserRequireJSFile($js); }
-
-  # Create document.
-  my $document = $outputer->Create('Log::Document');
-
-	my %CustomOutputer;
-	foreach my $c (@{$self->{__xml_data}->Child('__customoutputer')})
-	{
-		$CustomOutputer{ $c->Attribute('type') }{ module } = $c->Attribute('module');
-		$CustomOutputer{ $c->Attribute('type') }{ config } = $c;
-	}
-
-  # Create header.
-  my $hNode = ${$self->{__xml_data}->Child('__header')}[0];
-	if($hNode)
-	{
-	  	if ($CustomOutputer{'__header'})
-	  	{
-			$document->Header($outputer->Create( $CustomOutputer{'__header'}{module},
-	                                    $hNode->Attribute('title'),
-	                                    $hNode->Attribute('subtitle'),
-	                                    $CustomOutputer{'__header'}{config}));
-
-	  	}
-	  	else
-	  	{
-			$document->Header($outputer->Create( 'Log::Header',
-	                                    $hNode->Attribute('title'),
-	                                    $hNode->Attribute('subtitle')));
-	  	}
- 	}
-
-	# Create footer.
-  my $fNode = ${$self->{__xml_data}->Child('__footer')}[0];
-	if ($fNode)
-	{
-	 	if ($CustomOutputer{'__footer'})
-	  	{
-			$document->Footer($outputer->Create( $CustomOutputer{'__footer'}{module},
-	                                    $fNode->Attribute('title'),
-	                                    $fNode->Attribute('subtitle'),
-	                                    $CustomOutputer{'__footer'}{config}));
-
-	  	}
-	  	else
-	  	{
-			$document->Footer($outputer->Create('Log::Footer',
-	                                    $fNode->Attribute('title'),
-	                                    $fNode->Attribute('subtitle')));
-	  	}
-	}
-
-	# Create summary
-	my $sNode = ${$self->{__xml_data}->Child('__summary')}[0];
-	$document->Summary($self->__Summary($sNode));
-
-	# Merge all contigus prints to one.
-	$self->__MergePrints($self->{__xml_data});
-
-	# Create main content.
-	$self->__PrintMainContents($document, @{$self->{__xml_data}->Child('__maincontent')});
-
-	$document->Print();
-	
-	if($self->{__updated_xml})
-	{
-	  $self->{__xml_name} =~ s/\.xml/_updated\.xml/;
-	  XMLManip::WriteXMLFile($self->{__xml_data}, $self->{__xml_name});
-	}
-
-	return ERR::NO_ERROR;
-}
-
-#--------------------------------------------------------------------------------------------------
-# Print main contents in output HTML logfile.
-#--------------------------------------------------------------------------------------------------
-sub __PrintMainContents
-{
-	my ($self, $parent) = (shift, shift);
-	my $outputer = $self->{__outputer};
-
-	foreach my $xmlNode (@_)
-	{
-		my $maincontent = $outputer->Create('Log::MainContent');
-		$parent->PushChild($maincontent);
-		
-		if($xmlNode->Attribute('title'))
-		{
-	  	my $title = $outputer->Create('Title1', $xmlNode->Attribute('title'));
-	  	$maincontent->PushChild($title);
-		}
-
-		foreach (@{$xmlNode->Childs()})
-		{
-			no strict 'refs';
-			my $function = $_->Type();
-			$self->$function($maincontent, $_);
-		}
-	}
-}
-
-#--------------------------------------------------------------------------------------------------
-# Print summary in output HTML logfile.
-#--------------------------------------------------------------------------------------------------
-sub __Summary
-{
-  my ($self, $sNode) = (shift, shift);
-  my ($outputer, $title, $table) = ($self->{__outputer}, undef, undef);
-
-  my $summary = $outputer->Create('Log::Summary');
-	my $content = $outputer->Create('Log::SummaryContent');
-	$summary->PushChild($content);
-
-  if($sNode)
-  {
-    $title = $outputer->Create('Title1', $sNode->Attribute('title'));
-    $content->PushChild($title);
-    $table = $outputer->Create('Table2D');
-    $content->PushChild($table);
-  
-    foreach (@{$sNode->Child('__elmt')})
-    {
-      my $tag = $outputer->Create('Text', $_->Attribute('tag'));
-      $tag->Style('s_tag');
-      my $val = $outputer->Create('Text', $_->Attribute('val'));
-      $val->Style('s_val');
-      
-      $table->AddLine($tag, $val);
-    }
-    
-    $table->SetColumnAttr(0, { nowrap => 'nowrap', valign => 'top' });
-    $table->SetColumnAttr(1, { width => '100%' });
-  }
-  
-  $title = $outputer->Create('Title1', 'Global Statistics');
-  $content->PushChild($title);
-  $table = $outputer->Create('Table2D');
-  $content->PushChild($table);
-  
-  my @texts;
-  my %counts = __NbMsgGeneric($self->{__xml_data});
-  foreach my $type (sort keys %counts)
-  {
-    my $value = $counts{$type};
-    my $text  = $outputer->Create('Text', "$value $type".($value == 1 ? '' : 's'));
-    $text->Style($value ? "gbl_cnt_$type" : 'gbl_cnt_default');
-    
-    push @texts, $text;
-    $self->{__types}->{$type} = 0;
-  }
-
-  $table->AddLine(@texts);
-  
-  return $summary;
-}
-
-#--------------------------------------------------------------------------------------------------
-# Main content title.
-#--------------------------------------------------------------------------------------------------
-sub __maintitle
-{
-	my ($self, $parent, $xmlNode) = (shift, shift, shift);
-	my $outputer  = $self->{__outputer};
-	my $titleNode = $outputer->Create('Title1', $xmlNode->Attribute('title'));
-	
-	$parent->PushChild($titleNode);
-}
-
-#--------------------------------------------------------------------------------------------------
-# Print event.
-#--------------------------------------------------------------------------------------------------
-sub __event
-{
-  my ($self, $parent, $xmlNode) = (shift, shift, shift);
-  my $outputer = $self->{__outputer};
-  
-  my $eventNode = $outputer->Create('Node', $xmlNode->Attribute('title'),
-  																					{ anim => $xmlNode->Attribute('anim'),
-                                              icon => $xmlNode->Attribute('icon') });
-
-  my %counts = __NbMsgGeneric($xmlNode);
-  foreach my $type (sort keys %{$self->{__types}})
-  {
-    my $value = $counts{$type} || '0';
-    $eventNode->PushNodeInfo("$value $type".($value == 1 ? '' : 's'),
-                             ($value ? "cnt_$type" : 'cnt_default'));
-  }
-  
-  foreach (@{$xmlNode->Childs()})
-  {
-    no strict 'refs';
-    my $function = $_->Type();
-    $self->$function($eventNode, $_); 
-  }
-  
-  $parent->PushChild($eventNode);
-}
-
-#--------------------------------------------------------------------------------------------------
-# Print text with left side icon.
-#--------------------------------------------------------------------------------------------------
-sub __icon_print
-{
-  my ($self, $parent, $xmlnode) = (shift, shift, shift);
-  my $outputer = $self->{__outputer};
-  
-  my $content = $xmlnode->Content();
-
-	if ($content)
-	{
-		$content =~ s/\&lt;b\&gt;/<b>/g;
-		$content =~ s/\&lt;\/b\&gt;/<\/b>/g;
-		$content =~ s/\&lt;i\&gt;/<i>/g;
-		$content =~ s/\&lt;\/i\&gt;/<\/i>/g;
-		$content =~ s/\&lt;u\&gt;/<u>/g;
-		$content =~ s/\&lt;\/u\&gt;/<\/u>/g;
-		$content =~ s/\&lt;br\/\&gt;/\n/g;
-	}
-	
-	my $text = $outputer->Create('Text', $content);
-  $text->Style($outputer->GetAssociatedClass($xmlnode->Attribute('icon')));
-  
-  $parent->PushChild($text);
-}
-
-#--------------------------------------------------------------------------------------------------
-# Print separators.
-#--------------------------------------------------------------------------------------------------
-sub __separator
-{
-	my ($self, $parent, $xmlNode) = (shift, shift, shift);
-	my $outputer = $self->{__outputer};
-	
-	my $separator = $outputer->Create('Separator', $xmlNode->Attribute('style'));
-	$parent->PushChild($separator);
-}
-
-#--------------------------------------------------------------------------------------------------
-# Print all other output types.
-#--------------------------------------------------------------------------------------------------
-sub AUTOLOAD
-{
-	my ($method, $self, $parent, $xmlNode) = (our $AUTOLOAD, shift, shift, shift);
-	my $outputer = $self->{__outputer};
-
-	return if($method =~ /::DESTROY$/ or $xmlNode->Type() =~ /^$self->{__discards}$/i);
-	
-	my $content = $xmlNode->Content();
-
-	if ($content)
-	{
-		$content =~ s/\&lt;b\&gt;/<b>/g;
-		$content =~ s/\&lt;\/b\&gt;/<\/b>/g;
-		$content =~ s/\&lt;i\&gt;/<i>/g;
-		$content =~ s/\&lt;\/i\&gt;/<\/i>/g;
-		$content =~ s/\&lt;u\&gt;/<u>/g;
-		$content =~ s/\&lt;\/u\&gt;/<\/u>/g;
-		$content =~ s/\&lt;br\/\&gt;/\n/g;
-	}
-	
-	my $text = $outputer->Create('Text', $content);
-	$text->Style($self->{__associations}->{$xmlNode->Type()} ||
-	             $outputer->GetAssociatedClass($xmlNode->Type()));
-	
-	foreach (@{$xmlNode->Childs()})
-  {
-    no strict 'refs';
-    my $function = $_->Type();
-    $self->$function($parent, $_); 
-  }
-
-	$parent->PushChild($text);
-}
-
-#--------------------------------------------------------------------------------------------------
-# Merge printouts.
-#--------------------------------------------------------------------------------------------------
-sub __MergePrints
-{
-	my ($self, $node, $i) = (shift, shift, 0);
-	my $rCldArray = $node->Childs();
-	
-	while($i != scalar @$rCldArray)
-	{
-	  my ($chStart, $chEnd) = ($$rCldArray[$i], undef);
-	  if($chStart->Type() eq '__print')
-	  {
-	    my $j = $i + 1;
-	    while(($chEnd = $$rCldArray[$j]) && ($chEnd->Type eq '__print'))
-	    { ++$j; }
-	    --$j;
-	    
-	    if($i != $j)
-	    {
-	      my $node    = new XMLManip::Node('__print', $chStart->Attributes());
-	      my $content = '';
-
-	      for my $k ($i .. $j)
-	      { $content .= $$rCldArray[$k]->Content(); }
-	      
-	      $self->{__updated_xml} = 1;
-	      $node->Content($content);
-	      splice(@$rCldArray, $i, $j - $i + 1, $node);
-	    }
-	  }
-	  else
-	  {
-	    $self->__MergePrints($chStart) if(scalar @{$chStart->Childs()} != 0);
-	  }
-
-	  ++$i;
-	}
-}
-
-#--------------------------------------------------------------------------------------------------
-# Count number of specific messages in event - Generic version.
-#--------------------------------------------------------------------------------------------------
-sub __NbMsgGeneric
-{
-  my ($node, %counts) = (shift);
-
-  foreach my $child (@{$node->Childs()})
-  {
-    unless(scalar @{$child->Childs()} == 0)
-    {
-      my %res = __NbMsgGeneric($child);
-      
-      foreach my $type (keys %res)
-      {
-        $counts{$type} = ($counts{$type} || 0);
-        $counts{$type} += $res{$type};
-      }
-    }
-
-    next if($child->Type() =~ /^__.*$/);
-    
-    ++$counts{$child->Type()};
-  }
-
-  return %counts;
-}
-
-1;
-
-__END__
-
-#--------------------------------------------------------------------------------------------------
-# Documentation.
-#--------------------------------------------------------------------------------------------------
-
-=pod
-
-=head1 NAME
-
-ISIS::Logger2 - An HTML log generator module.
-
-=head1 SYNOPSIS
-
-	use ISIS::Logger3;
-	use ISIS::HttpServer;
-	
-	my $logger = new Logger3::OUT2XML('test_log.xml', 1, HttpServer::GetAddress()."/isis_interface");
-
-	# Set temporary log name, interface, and verbose.
-	$logger->SetXMLLogName('test_log.xml');
-	
-	# Link a CSS file to the HTML output.
-	$logger->LinkCSSFile('style.css');
-	
-	# Open the log.
-	$logger->OpenXMLLog();
-	
-	# Print a summary.
-	$logger->OpenSummary("Log Summary");
-	$logger->SummaryElmt("Build Type", "Multibase");
-	$logger->SummaryElmt("Used SymbianOS", "value 2");
-	$logger->SummaryElmt("Used Series 60", "value 3");
-	$logger->CloseSummary();
-	
-	# Print a header.
-	$logger->Header("Log File Logger2 Test v".Logger2::ISIS_VERSION, "Started on ".(localtime));
-	
-	# Create a main content.
-	$logger->OpenMainContent("Main Content 2");
-		$logger->OpenEvent("Event 1 : First step");
-		  $logger->Error("This is an error\non two lines");
-		  $logger->OpenEvent("SubEvent 1 : Test");
-		  	$logger->Print("This is simple text");
-		  	$logger->OpenEvent("SubSubEvent 1 : Test");
-		  		$logger->Warning("This is a warning");
-		  		
-		  		$logger->OpenParagraph('bold');
-		  		my @array = ('tom', 'dick', 'harry');
-		  		foreach (@array) { $logger->Print($_."\n"); }
-		  		$logger->CloseParagraph();
-
-		  	$logger->CloseEvent();
-		  $logger->CloseEvent();
-		$logger->CloseEvent();
-		$logger->OpenEvent("Event 2 : Second step");
-			$logger->Print("This is a normal output");
-		$logger->CloseEvent();
-		$logger->OpenEvent("Event 3 : Third step");
-			$logger->Warning("This is a warning");
-		$logger->CloseEvent();
-		$logger->OpenEvent("Event 4 : Fourth step");
-			$logger->Remark("This is a remark");
-		$logger->CloseEvent();
-	$logger->CloseMainContent();
-	
-	# Print a footer.
-	$logger->Footer("Finished on ".(localtime), "No HTML Generation");
-	
-	# Close the temporary log file.
-	$logger->CloseXMLLog();
-
-=head1 DESCRIPTION
-
-The ISIS::Logger2 module provides several packages used to create a complex, 
-well presented and organised log file. There are two packages within this module :
-C<L<OUT2XML>> and C<L<XML2HTML>>. The first one generates an XML file that will
-be parsed by the second one in order to generate the proper output.
-
-The C<L<OUT2XML>> package provides a set of simple subroutines allowing to print
-regular output to the terminal while logging all the information for HTML log
-generation.
-
-The C<L<XML2HTML>> package contains a set of subroutines that shouldn't be called
-directly by the user. It contains a main subroutine 'GenHTMLLogFile' that will
-automatically be called after a call to 'OUT2XML::CloseXMLLog' or 'OUT2XML::Die'.
-This subroutine parses the whole XML generated by OUT2XML and uses the OUT set of
-modules to generate the equivalent HTML output.
-
-=head1 OUT2XML
-
-=head2 SetXMLLogName( STRING ) :
-
-Defines the temporary XML file name. This subroutine should be called before
-'OpenXMLLog';
-
-=head2 SetXMLLogInterface( STRING ) :
-
-Defines the interface root to be used for the HTML log file. This subroutine
-should be called before 'OpenXMLLog';
-
-=head2 SetXMLLogVerbose( STRING ) :
-
-Defines if logged information should be outputed to the terminal/shell. This
-subroutine should be called before 'OpenXMLLog';
-
-=head2 OpenXMLLog( ) :
-
-Opens the XML log - Should be called after 'SetXMLLogName', 'SetXMLLogInterface' and
-'SetXMLLogVerbose'.
-
-=head2 CloseXMLLog( ) :
-
-Close the XML log file. This subroutine will automatically call 'XML2HTML::GenHTMLLogFile'.
-
-=head2 OpenSummary( ) :
-
-If verbose is set for the logger, this will ensure that a call to 'SummaryElmt'
-prints out its content, otherwise, a call to 'SummaryElmt' will have no effect
-on the terminal/shell and will only log its information.
-
-=head2 CloseSummary(  ) :
-
-Ends the verbose of summary elements. See 'OpenSummary' for more information.
-
-=head2 SummaryElmt( NAME, VALUE ) :
-
-Logs a name and its value pair to generate a summary in the outputed HTML file.
-If called between 'OpenSummary' and 'CloseSummary', an additionnal output to the
-terminal/shell will be performed.
-
-=head2 OpenMainContent( STRING ) :
-
-Creates a new main content in which events can be created. All future calls to
-the print out subroutine or events will be encapsulated in that main event until
-a call to 'CloseMainContent' is made.
-
-=head2 CloseMainContent( STRING ) :
-
-Closes the current main content. Note that all events and print out subroutine
-calls will be discarded.
-
-=head2 OpenEvent( STRING ) :
-
-Creates a new event in which other events and print out subroutine calls can be
-made. These events will hide their content until they are clicked on, allowing
-the final log user to decide what information to display.
-
-=head2 CloseEvent( STRING ) :
-
-Closes the current event. All events and print out subroutine calls will be passed
-to the containing main content or event.
-
-=head2 OpenParagraph( STYLE ) :
-
-This will open a paragraph, and all calls to 'OUT2XML::Print' will be encapsulated in
-one HTML div element. The optional style argument will be set as the class of the div
-element allowing to modify the text's appearence with a css. The 'OUT2XML::Print'
-subroutine can still be called normally.
-
-=head2 CloseParagraph(  ) :
-
-Closes the current paragraph, returning to the previously opened and not closed node.
-
-=head2 Print( STRING ) :
-
-Prints out regular text to the log file. This text will be discarded if not done
-in a main content, event or paragraph. If this subroutine is called outside of a
-paragraph, an automatic paragraph will be generated for this text. Prefer using
-'OUT2XML::OpenParagraph' and 'OUT2XML::CloseParagraph' when calling 'OUT2XML::Print'
-several times in a row.
-
-=head2 <NAME>( STRING, [ERROR_CODE] ) :
-
-Prints out a message as a NAME - The message will be encapsulated in a <div> HTML
-element with a class attribute matching that name. The corresponding CSS file that
-is set with 'SetXMLLogInterface' can have the equivalent definitions to format these
-HTML elements.
-
-If an error code is specified, a call to 'Die' will be made terminating the current
-script.
-
-=head2 Die( STRING, [ERROR_CODE] ) :
-
-Kills the current script execution. Only calls to 'Die' should be made in a script
-using this Logger. Calling subroutines such as 'exit' or 'die' will corrupt the xml
-log file and make the HTML generation impossible.
-
-=head1 XML2HTML
-
-=head2 GenHTMLLogFile( XMLFILE ) :
-
-Generates an HTML log file from an XML log file created by the C<L<OUT2XML>> package.
-See information regarding the C<L<OUT2XML>> package of the ISIS::Logger2 module.
-
-=head1 AUTHOR
-
-
-
-=cut
-
-#--------------------------------------------------------------------------------------------------
-# End of file.
-#--------------------------------------------------------------------------------------------------
--- a/buildframework/helium/tools/common/packages/ISIS/Mailer.pm	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,175 +0,0 @@
-#
-# 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: 
-#
-#------------------------------------------------------------------------------
-# Name   : Mailer.pm
-# Use    : description.
-
-#
-# Synergy :
-# Perl %name: Mailer.pm % (%full_filespec:  Mailer.pm-3:perl:fa1s60p1#1 %)
-# %derived_by:  wbernard %
-# %date_created:  Fri Mar 17 16:28:51 2006 %
-#
-# Version History :
-#
-# v1.0 (17/03/2006) :
-#  - Fist version of the Mailer package.
-#  - Only tested the sending of email with text content.
-#------------------------------------------------------------------------------
-package Mailer;
-use strict;
-use Net::SMTP;
-use MIME::Base64;
-
-# ISIS constants.
-use constant ISIS_VERSION 		=> '1.0';
-use constant ISIS_LAST_UPDATE => '17/03/2006';
-
-
-#------------------------------------------------------------------------------
-# Package's subroutines
-#------------------------------------------------------------------------------
-#
-# Create a Mailer object!
-#
-sub new
-{
-	my $class = shift;
-	my @empty;
-	bless {
-		__sender => shift,
-		__recipients => shift,
-		__subject => shift || "no subject",
-		__content => shift || "",
-		__attach => shift || \@empty
-		}, $class;
-}
-
-#
-# Send the Email!
-#
-sub Send
-{
-	my ($self) = (shift);
-	my $to = '';
-	foreach my $item ( @{$self->{__recipients}} )
-  {
-	  $to = $to.$item.";";
-  }
-	$to =~ s/(\;)$//;
-	
-	my $boundary = "MailSend.Boundary.".time();
-
-	my %email = (
-            mailfrom => $self->{__sender},
-            from => $self->{__sender},
-            subject => $self->{__subject},
-            mailto => [@{$self->{__recipients}}],
-            to => "$to",
-            attachments => [@{$self->{__attach}}],
-            boundary => "$boundary",
-            plaintext => $self->{__content},
-            );
-
-	my $service = Net::SMTP->new('mgw.nokia.com');
-
-	if ( $service ) 
-  {
-  	foreach my $item ( @{$self->{__recipients}} )
-    {
-    	$self->__SendMail( $service, $item, \%email);
-    }
-  }
-	else 
-  {
-  	print "Cannot create SMTP object!\n";
-  }
-}
- 
-sub __SendMail
-{
-  #Move call attributes to local attributes
-  my ($self, $smtp, $mailto, $mail) = @_; 
-
-  #Local variables
-  my $encodedattachment;
-  my $file;
-  
-
-  
-  # Fill the sender's and recipient's address
-  $smtp->mail($mail->{from});
-  $smtp->to($mailto);
-
-  # Start the mail
-  $smtp->data();
-
-  # Send the header
-  $smtp->datasend("To: $mail->{to}\n");
-  $smtp->datasend("From: $mail->{from}\n");
-  $smtp->datasend("Subject: $mail->{subject}\n");
-  # adding mime header
-  $smtp->datasend("Mime-Version: 1.0\n");
-  $smtp->datasend("Content-Type: multipart/mixed\; boundary=$mail->{boundary}\n");
-  $smtp->datasend("\n");
-
-  # Send the body - BEGIN
-  $smtp->datasend("--$mail->{boundary}\n");
-  $smtp->datasend("$mail->{plaintext}\n\n");
-  # Send the body - END
-
-  foreach $file (@{$mail->{attachments}})
-  {
-    # Open attachement
-    if (open (FILE, "$file"))
-    {
-      binmode FILE;
-      {
-        # Read whole file to variable
-        undef $/;
-        $encodedattachment = encode_base64(<FILE>);
-      }
-      close FILE;
-    }
-    else
-    {
-      print " Cannot open attachement: $file!!\n"
-    }
-
-    # Attachement
-    $smtp->datasend("--$mail->{boundary}\n");
-    $smtp->datasend("Content-Type: application/octet-stream\; name=\"$file\"\n");
-    $smtp->datasend("Content-Disposition: attachment\; filename=\"$file\"\n");
-    $smtp->datasend("Content-Transfer-Encoding: base64\n");
-    $smtp->datasend("\n");
-    $smtp->datasend("$encodedattachment\n\n");
-    
-  }
-  $smtp->datasend("--$mail->{boundary}--\n");
-  
-  # Finish sending the mail
-  $smtp->datasend("\n");
-  $smtp->dataend();
-
-  # Close the SMTP connection
-  $smtp->quit;
-
-}
-  
-1;
-#------------------------------------------------------------------------------
-# End of file.
-#------------------------------------------------------------------------------
--- a/buildframework/helium/tools/common/packages/ISIS/Makefile.pm	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,185 +0,0 @@
-#
-# 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: 
-#
-#--------------------------------------------------------------------------------------------------
-# Name   : Makefile.pm
-# Path   : \isis_sw\isis_scripts\packages\ISIS\
-# Use    : Generate makefiles.
-
-#
-# Synergy :
-# Perl %name: Makefile.pm % (%full_filespec: Makefile.pm-3:perl:fa1s60p1#1 %)
-# %derived_by: oligrant %
-# %date_created: Wed Apr  5 13:29:30 2006 %
-#
-# Version History :
-# v1.0.1 (23/01/2006) :
-#  - Added check to avoid printing out empty rules.
-#
-# v1.0.0 (20/01/2006) :
-#  - First version of the module.
-#--------------------------------------------------------------------------------------------------
-
-#--------------------------------------------------------------------------------------------------
-#
-#   Makefile package.
-#
-#--------------------------------------------------------------------------------------------------
-
-package Makefile;
-
-use strict;
-use warnings;
-use ISIS::ErrorDefs;
-use ISIS::Assertion _Debug => 1;
-
-use constant ISIS_VERSION     => '1.0.1';
-use constant ISIS_LAST_UPDATE => '23/01/2006';
-
-sub new
-{
-  my ($class, $filename) = (shift, shift);
-  
-  bless { __filename  => $filename,
-          __variables => {},
-          __rules     => [],
-          __gbl_id    => 0,
-        }, $class;
-}
-
-sub Name { $_[0]->{__filename} }
-
-sub NewRule
-{
-  my ($self, $rule) = (shift, __Rule->new(@_));
-  return undef unless($rule->{__rule_name});
-  push @{$self->{__rules}}, $rule;
-  return $rule;
-}
-
-sub SetVariable
-{
-  my ($self, $name, $value) = (shift, shift, join('', @_));
-  $self->{__variables}->{$name} = $value;
-}
-
-sub RulesFromTemplate
-{
-  my ($self, $name, $args, $maxIndex, @templates) = (shift, shift, pop || {}, 0, @_);
-  
-  foreach my $arg (sort keys %$args)
-  {
-    __ASSERT(ref $$args{$arg} eq 'ARRAY' or
-             ref $$args{$arg} eq 'SCALAR' or
-             ref $$args{$arg} eq '');
-
-    if(ref $$args{$arg} eq 'SCALAR' or ref $$args{$arg} eq '')
-    {
-      my @array = ($$args{$arg});
-      $$args{$arg} = \@array;
-    }
-    else
-    {
-      my $tmp = scalar @{$$args{$arg}} - 1;
-      __ASSERT($tmp == 0 or $tmp == $maxIndex);
-      $maxIndex = $tmp if($maxIndex < $tmp);
-    }
-  }
-
-  my $mainRule = $self->NewRule($name);
-  $mainRule->AddDependancy(join(' ', map { 'id'.$_ } ($self->{__gbl_id} .. $self->{__gbl_id} + $maxIndex)));
-
-  for my $i (0 .. $maxIndex)
-  {
-  	my $rule = $self->NewRule('id'.$self->{__gbl_id});
-	  ++$self->{__gbl_id};
-
-  	foreach my $template (@templates)
-		{
-			my $tmp = $template;
-	    foreach my $arg (sort keys %$args)
-	    {
-	      my $value = (@{$$args{$arg}} == 1 ? $$args{$arg}->[0] : $$args{$arg}->[$i]);
-	      $tmp =~ s/\$$arg/$value/g;
-	    }
-
-	    $rule->AddCmdLine($tmp);
-	  }
-  }
-}
-
-sub Generate
-{
-  my ($self, $error) = (shift, 0);
-
-  open(MAKEFILE, ">".$self->{__filename}) or return ERR::FILE_CREATION_FAILED;
-
-  foreach my $var (sort keys %{$self->{__variables}})
-  { print MAKEFILE $var, " = ", $self->{__variables}->{$var}, "\n"; }
-
-  print MAKEFILE "\n";
-
-  foreach my $rule (@{$self->{__rules}})
-  { $rule->Print(\*MAKEFILE); }
-
-  close(MAKEFILE);
-  return ERR::NO_ERROR;
-}
-
-1;
-
-#--------------------------------------------------------------------------------------------------
-#
-#   __Rule package.
-#
-#--------------------------------------------------------------------------------------------------
-
-package __Rule;
-
-use strict;
-use warnings;
-
-sub new
-{
-  my ($class, $name, @dependancies) = (shift, shift, @_);
-  
-  bless { __command_lines => [],
-          __dependancies  => \@dependancies,
-          __rule_name     => $name,
-        }, $class;
-}
-
-sub AddCmdLine    { push @{shift->{__command_lines}}, join('', @_); }
-sub AddDependancy { push @{shift->{__dependancies}}, @_; }
-
-sub Print
-{
-  my ($self, $fh) = (shift, shift);
-  
-  return if(@{$self->{__dependancies}} == 0 and @{$self->{__command_lines}} == 0);
-  
-  print $fh $self->{__rule_name}, ": ", join(' ', @{$self->{__dependancies}}), "\n";
-
-  foreach my $cmd (@{$self->{__command_lines}})
-  { print $fh "\t", $cmd, "\n"; }
-  
-  print $fh "\n";            
-}
-
-1;
-
-#--------------------------------------------------------------------------------------------------
-# End of file.
-#--------------------------------------------------------------------------------------------------
--- a/buildframework/helium/tools/common/packages/ISIS/NAB.pm	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,976 +0,0 @@
-#
-# 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: 
-#
-#--------------------------------------------------------------------------------------------------
-# Name    : NAB.pm
-# Use     : Nokia Automated Build.
-
-
-#
-# Synergy :
-# Perl %name    : % (%full_filespec :  %)
-# %derived_by   : %
-# %date_created : %
-#
-# History :
-# v1.3.2 (12/04/2006)
-#  - Fixed sub argument parsing routine __ParseSubArguments where arguments were not
-#    correctly mached.
-#  - Updated argument parsing to allow use of single and double hyphens ('-' and '--').
-#  - Updated code to use correct XMLManip::Node child access.
-#
-# v1.3.1 (07/02/2006)
-#  - NAB display the version of the loaded modules. Modules must use ISIS templates.
-#
-# v1.3.0 (07/02/2006)
-#  - Updated NAB to used HTTP Server with 'Logger2.pm'.
-#
-# v1.2.2 (24/01/2006)
-#  - Fixed non found flags were printed before checking all patterns.
-#  - Removed core module since it was never used.
-#  - Updated help printout for NAB.
-#
-# v1.2.1 (16/01/2006)
-#  - Added an extra hashtable to all steps for global data storage and sharing.
-#  - Add -st|-showsteps, display steps by operation.
-#  - My birthday (Wooohoooo).
-#
-# v1.1.1 (13/01/2006)
-#  - Added eval block around step calls to assure correct script termination if error occurs.
-#
-# v1.1.0 (11/01/2006)
-#  - Added support for 'resume' and 'step' operations.
-#  - Added 'ExecuteResume' to the '__Operation' package.
-#  - Added 'ExecuteSteps' to the '__Operation' package.
-#
-# v1.0.1 (10/01/2006)
-#  - Added unused flag checking.
-#  - Separated global arguments from operation arguments (see documentation).
-#
-# v1.0.0 (06/01/2006) - RELEASE CANDIDATE 1
-#  - Fist version of the script.
-#--------------------------------------------------------------------------------------------------
-
-#--------------------------------------------------------------------------------------------------
-#
-#   NAB package.
-#
-#--------------------------------------------------------------------------------------------------
-package NAB;
-
-use strict;
-use warnings;
-
-use ISIS::ErrorDefs;
-use ISIS::XMLManip;
-use ISIS::Logger2;
-use ISIS::Registry;
-use ISIS::HttpServer;
-
-# ISIS constants.
-use constant ISIS_VERSION       => '1.3.2';
-use constant ISIS_LAST_UPDATE   => '12/04/2006';
-use constant ISIS_PERL_VERSION  => '5.6.1';
-use constant DEBUG              => 0;
-
-# Script constants.
-use constant ROOT_SCRIPTS_DIR   => "\\isis_sw\\build_config\\";
-use constant OPS_CONFIG_FILE    => ROOT_SCRIPTS_DIR."operations.xml";
-use constant REG_CONFIG_FILE    => ROOT_SCRIPTS_DIR."registry.xml";
-
-#--------------------------------------------------------------------------------------------------
-# Constructor.
-#--------------------------------------------------------------------------------------------------
-sub new
-{
-  warn "new NAB( ", join(', ', @_), " )\n"  if(DEBUG);
-  my ($class, @args) = (shift, @_);
-  
-  my $self = bless { _ops_cfg    => OPS_CONFIG_FILE,   # operations configuration file.
-                     _reg_cfg    => REG_CONFIG_FILE,   # registry configuration file.
-                     _target     => 'all',             # global target keyword.
-                     _override   => 0,                 # override status.
-                     _args       => \@args,            # passed arguments.
-                     _gbl_mem    => {},                # global shared memory.
-                     _resume     => undef,             # resume information.
-                     _step       => undef              # step information.
-                   }, $class;
-
-  OUT2XML::SetXMLLogName("nab_main_log.html");
-  OUT2XML::SetXMLLogVerbose("on");
-  OUT2XML::SetXMLLogInterface( HttpServer::GetAddress()."/isis_interface" );
-  OUT2XML::OpenXMLLog();
-  OUT2XML::Header("Nokia Automated Build", "Started on ".scalar(localtime));
-
-  $self->__ParseMainArguments();
-  $self->__LoadConfigurationFiles();
-  $self->__ParseSubArguments();
-  $self->__LoadOperationSteps();
-  
-  return $self;
-}
-
-#--------------------------------------------------------------------------------------------------
-# __ParseMainArguments - PRIVATE.
-#--------------------------------------------------------------------------------------------------
-sub __ParseMainArguments
-{
-  warn "NAB::__ParseArguments( ", join(', ', @_), " )\n" if(DEBUG);
-  my ($self, @gblArgs, @subArgs) = (shift);
-  
-  while(defined($_ = shift @{$self->{_args}}))
-  {
-    if(/^--?(?:h|-h|help|-help)$/) { $self->__DisplayHelp();  OUT2XML::Die(0); }
-    if(/^--?(?:st|-showsteps)$/)   { $self->__DisplaySteps(); OUT2XML::Die(0); }
-    if(/^--?(?:ocf|opscfg)=(.+)$/) { $self->{_ops_cfg}  = $1; push @gblArgs, $_; next; }
-    if(/^--?(?:rcf|regcfg)=(.+)$/) { $self->{_reg_cfg}  = $1; push @gblArgs, $_; next; }
-    if(/^--?(?:tg|target)=(.+)$/)  { $self->{_target}   = $1; push @gblArgs, $_; next; }
-    if(/^--?(?:r|resume)=(.+)$/)   { $self->{_resume}   = $1; push @gblArgs, $_; next; }
-    if(/^--?(?:s|step)=(.+)$/)     { $self->{_step}     = $1; push @gblArgs, $_; next; }
-    if(/^--?(?:or|override)$/)     { $self->{_override} =  1; push @gblArgs, $_; next; }
-
-    push @subArgs, $_;
-  }
-
-  @{$self->{_gbl_args}} = @gblArgs;
-  @{$self->{_args}}     = @subArgs;
-  
-  OUT2XML::OpenMainContent('Script Initialisation');
-
-  if(scalar @{$self->{_args}} == 0)
-  {
-    OUT2XML::Error("No arguments passed to NAB. Type \'nab.pl --help\' for more information.");
-    OUT2XML::Die(ERR::MISSING_SWITCH);
-  }
-  
-  OUT2XML::OpenSummary("Nokia Automated Build Configuration");
-  OUT2XML::SummaryElmt("Command line", 'nab.pl '.join(' ', (@{$self->{_gbl_args}}, @{$self->{_args}})));
-  OUT2XML::SummaryElmt("operations configuration file", $self->{_ops_cfg});
-  OUT2XML::SummaryElmt("registry configuration file", $self->{_reg_cfg});
-  OUT2XML::SummaryElmt("operation target", "\'".$self->{_target}."\'");
-  OUT2XML::SummaryElmt("override activated (missing modules will be ignored)") if($self->{_override});
-  OUT2XML::CloseSummary();
-}
-
-#--------------------------------------------------------------------------------------------------
-# __ParseSubArguments - PRIVATE.
-#--------------------------------------------------------------------------------------------------
-sub __ParseSubArguments
-{
-  warn "NAB::__ParseSubArguments( ", join(', ', @_), " )\n" if(DEBUG);
-  my ($self, $mainFlags, $currentFlag, %patterns, %inputs, %mandatory) = (shift);
-
-  $mainFlags = join('|', $self->{_ops_data}->ChildTypes()); 
-
-  foreach my $op (@{$self->{_ops_data}->Childs()})
-  { # determine flag patterns for each op.
-    push @{$patterns{$op->Type()}}, @{$op->Child('flag')};
-    
-    foreach my $step (@{$op->Child('step')})
-    { push @{$patterns{$op->Type()}}, @{$step->Child('flag')}; } 
-  }
-  
-  foreach my $arg (@{$self->{_args}})
-  { # determine arguments for each op.
-    if($arg =~ /^-($mainFlags)$/)
-    {
-      $currentFlag = $1;
-      $inputs{$currentFlag} = [];
-      push @{$self->{_exec}}, $self->{_ops_data}->Child($1, 0);
-    }
-    else
-    {
-      push @{$inputs{$currentFlag}}, $arg;
-    }
-  }
-
-  my $hasError = 0;
-  foreach my $op (sort keys %inputs)
-  {
-    foreach my $flagNode (@{$patterns{$op}})
-    {
-      my $pattern = $flagNode->Attribute('pattern');
-      my $type    = $flagNode->Attribute('type');
-      my $input   = undef;
-
-      $pattern =~ s/^-([^=]+)/-\($1\)/;
-      $pattern = qr($pattern);
-
-      $mandatory{$op}{$1} = 0 if($type eq 'mandatory');
-  
-      if($type !~ /^(?:mandatory|optional)$/)
-      {
-        OUT2XML::Error("Flag \'<b>", $pattern, "</b>\' is of illegal type \'<b>",
-                       $type, "</b>\'. Should be \'optional\' or \'mandatory\'"
-                      );
-        $hasError = 1;
-      }
-      
-      my $i = 0;
-      foreach $input (@{$inputs{$op}})
-      {
-        if($input =~ /^$pattern$/)
-        {
-          $self->{_ops_args}{$op}{$1} = $2 || 1;
-          $mandatory{$op}{$1} = 1;
-          splice(@{$inputs{$op}}, $i, 1);
-        }
-        ++$i;
-      }
-    }
-
-    foreach my $input (@{$inputs{$op}})
-    {
-      OUT2XML::Error("Flag \'<b>${input}</b>\' does not exist");
-      $hasError = 1;
-    }
-  }
-
-  foreach my $op (sort keys %mandatory)
-  {
-    foreach my $flag (sort keys %{$mandatory{$op}})
-    {
-      unless($mandatory{$op}{$flag})
-      {
-        OUT2XML::Error("Mandatory flag \'<b>", $flag, "</b>\' for operation \'<b>", 
-                       $op, "</b>\' was not defined."
-                      );
-        $hasError = 1;
-      }
-    }
-  }
-
-  if($hasError)
-  {
-    OUT2XML::Die(ERR::MISSING_SWITCH);
-  }
-  else
-  {
-    OUT2XML::Print("<b>Passed arguments :</b>\n");
-    foreach my $op (sort keys %{$self->{_ops_args}})
-    {
-      foreach my $switch (sort keys %{$self->{_ops_args}{$op}})
-      {
-        OUT2XML::Print(" - $switch set to \'".$self->{_ops_args}{$op}{$switch}."\'\n");
-      }
-    }
-  }
-}
-
-#--------------------------------------------------------------------------------------------------
-# __LoadConfigurationFiles - PRIVATE.
-#--------------------------------------------------------------------------------------------------
-sub __LoadConfigurationFiles
-{
-  warn "NAB::__LoadOperationsCfg( ", join(', ', @_), " )\n" if(DEBUG);
-  my ($self) = (shift);
-  
-  $self->{_ops_data} = &XMLManip::ParseXMLFile($self->{_ops_cfg}, XMLManip::NO_LOCK);
-  $self->{_reg_data} = new Registry($self->{_reg_cfg}, { error_level => 1 });
-  
-  foreach my $includeNode (@{$self->{_ops_data}->Child('perl_include')})
-  {
-    push @INC, $includeNode->Attribute('path');
-    $self->{_ops_data}->RemoveChild($includeNode);
-  } 
-}
-
-#--------------------------------------------------------------------------------------------------
-# _LoadOperationSteps - PRIVATE.
-#--------------------------------------------------------------------------------------------------
-sub __LoadOperationSteps
-{
-  warn "NAB::__LoadOperationSteps( ", join(', ', @_), " )\n" if(DEBUG);
-  my ($self, $hasError) = (shift, 0);
-
-  foreach my $opNode (@{$self->{_exec}})
-  {
-    push @{$self->{_ops}}, __Operation->new($opNode, $self);
-  }
-
-  OUT2XML::CloseMainContent();
-}
-
-#--------------------------------------------------------------------------------------------------
-# __CheckConcurrentStep - PRIVATE.
-#--------------------------------------------------------------------------------------------------
-sub __CheckConcurrentStep
-{
-  warn "NAB::__CheckConcurrentStep( ", join(', ', @_), " )\n" if(DEBUG);
-  my ($self, $opNode, $stepNode1) = (shift, shift, shift);
-  
-  foreach my $stepNode2 (@{$opNode->Child('step')})
-  {
-    next if($stepNode1 == $stepNode2 or
-            $stepNode1->Attribute('id') ne $stepNode2->Attribute('id') or
-            $stepNode2->Attribute('target') !~ /^(?:all|$self->{_target})$/i);
-
-    my ($target1, $target2) = ($stepNode1->Attribute('target'), $stepNode2->Attribute('target'));
-    
-    if($target1 =~ /^$target2$/i or 'all' =~ /^(?:$target1|$target2)$/i)
-    {
-      my $infoNode1 = $stepNode1->Child('info', 0);
-      my $infoNode2 = $stepNode2->Child('info', 0);
-      my $info1 = $infoNode1 && $infoNode1->Content() || 'No description available';
-      my $info2 = $infoNode2 && $infoNode2->Content() || 'No description available';
-      
-      OUT2XML::Error("Operation <b>".$opNode->Type()."</b> - Found conflicting steps :\n".
-                     "Step \'<b>".$info1."</b>\' has id <b>".$stepNode1->Attribute('id').
-                     "</b> and target <b>".$target1."</b>.\n".
-                     "Step \'<b>".$info2."</b>\' has id <b>".$stepNode2->Attribute('id').
-                     "</b> and target <b>".$target2."</b>.\n"
-                    );
-
-      return 1;
-    }
-  }
-  
-  return 0;
-}
-
-#--------------------------------------------------------------------------------------------------
-# __DisplayHelp - PRIVATE.
-#--------------------------------------------------------------------------------------------------
-sub __DisplayHelp
-{
-  my ($self) = (shift);
-  
-  if(not defined $self->{_ops_data} and not defined $self->{_reg_data})
-  { $self->__LoadConfigurationFiles(); }
-  
-  OUT2XML::OpenMainContent('NAB Help Information');
-  OUT2XML::Print("<b>nab.pl</b> - Nokia Automated Build - v".ISIS_VERSION." (".ISIS_LAST_UPDATE.")\n");
-  OUT2XML::Print("usage : nab.pl [-help] [-st] [-target=xxx] [-OP1_FLG] [-OP1_ARG1 [-OP1_ARG2 ...]] [-OP2_FLG [-OP2_ARG1 [-OP2_ARG2 ...]]]\n");
-
-  OUT2XML::Print("\nFlags:\n");
-  OUT2XML::Print("\t-help\tShow this help message.\n");
-  OUT2XML::Print("\t-st\tList steps available by command flag.\n");
-  
-  OUT2XML::Print("\nCommands:\n");
-  foreach my $op (@{$self->{_ops_data}->Childs()})
-  {
-    OUT2XML::Print("<b>", $op->Type(), "</b> : <i>", $op->Attribute('title')||"", "</i>\n");
-    if(@{$op->Child('info')})
-    {
-      foreach my $info (@{$op->Child('info')})
-      {
-        chomp(my $line = $info->Content());
-        $line =~ s/^\s*//g;
-        $line = "\t".$line; $line =~ s/\s*\n\s*/\n\t/g;
-        OUT2XML::Print($line,"\n");
-      }
-    }
-    else
-    {
-      OUT2XML::Print("No information available for this operation.\n"); 
-    }
-    
-    OUT2XML::Print(" + Flags:\n");
-    if(@{$op->Child('flag')})
-    {
-      foreach my $f (@{$op->Child('flag')})
-      {
-        my $fill = "\t\t";
-        OUT2XML::Print($fill,$f->Attribute('pattern'),$fill,$f->Attribute('info')," [",$f->Attribute('type'),"]\n");
-      }
-    }
-
-    OUT2XML::Print("\n");
-  }
-  
-  OUT2XML::CloseMainContent();
-}
-
-#--------------------------------------------------------------------------------------------------
-# __DisplaySteps - PRIVATE.
-#--------------------------------------------------------------------------------------------------
-sub __DisplaySteps
-{
-  my ($self) = (shift);
-  
-  if(not defined $self->{_ops_data} and not defined $self->{_reg_data})
-  { $self->__LoadConfigurationFiles(); }
-  
-  OUT2XML::OpenMainContent('NAB Help Information');
-  OUT2XML::Print("<b>nab.pl</b> - Nokia Automated Build - v".ISIS_VERSION." (".ISIS_LAST_UPDATE.")\n");
-  foreach my $op (@{$self->{_ops_data}->Childs()})
-  {
-    OUT2XML::Print("\n");
-    OUT2XML::Print("<b>", $op->Type(), "</b> : <i>", $op->Attribute('title')||"", "</i>\n");
-    if(@{$op->Child('step')})
-    {
-      foreach my $s (@{$op->Child('step')})
-      {
-        # calculate heading space
-        my $info = "";
-        foreach my $i (@{$s->Child('info')}) {$info.= $i->Content()||"";}
-        OUT2XML::Print("\t",$s->Attribute('id'),"\t",$info,"\n");
-      }
-    }     
-  }
-  OUT2XML::CloseMainContent();
-}
-
-#--------------------------------------------------------------------------------------------------
-# Public member subroutines.
-#--------------------------------------------------------------------------------------------------
-sub Execute
-{
-  warn "NAB::Execute( ", join(', ', @_), " )\n"  if(DEBUG);
-  my $self = shift;
-  
-  OUT2XML::OpenMainContent("Modules Version");
-  OUT2XML::OpenEvent("Modules Version");
-  foreach my $operation ( @{$self->{_ops}} )
-  {
-    $operation->LogStepVersion();
-  }
-  OUT2XML::CloseEvent();
-  OUT2XML::CloseMainContent();
-  
-  if ( $self->{_resume} )
-  {
-    # Manage only one operation
-    my $operation = $self->{_ops}[0];
-    OUT2XML::OpenMainContent(ucfirst($operation->Type())." Operation");
-    $operation->ExecuteResume($self->{_resume}, $self->{_target},
-                              $self->{_ops_args}{$operation->Type()},
-                              $self->{_reg_data},
-                              $self->{_gbl_mem});
-    OUT2XML::CloseMainContent();
-  }
-  elsif ( $self->{_step} )
-  {
-    # Manage only one operation
-    my $operation = $self->{_ops}[0];
-    OUT2XML::OpenMainContent(ucfirst($operation->Type())." Operation");
-    $operation->ExecuteSteps($self->{_step}, $self->{_target},
-                             $self->{_ops_args}{$operation->Type()},
-                             $self->{_reg_data},
-                             $self->{_gbl_mem});
-    OUT2XML::CloseMainContent();
-  }
-  else
-  {
-    # Normal execution of operation.
-    foreach my $operation ( @{$self->{_ops}} )
-    {
-      OUT2XML::OpenMainContent(ucfirst($operation->Type())." Operation");
-      $operation->Execute($self->{_target},
-                          $self->{_ops_args}{$operation->Type()},
-                          $self->{_reg_data},
-                          $self->{_gbl_mem});
-      OUT2XML::CloseMainContent();
-    }
-  }
-  
-  OUT2XML::Footer("Finished on ".scalar(localtime), "Log file generated by Logger2 v".Logger2::ISIS_VERSION);
-  OUT2XML::CloseXMLLog();
-}
-
-1;
-
-#--------------------------------------------------------------------------------------------------
-#
-#   __Operation package.
-#
-#--------------------------------------------------------------------------------------------------
-package __Operation;
-
-sub new
-{
-  my ($class, $opNode, $nab, $hasError, @steps) = (shift, shift, shift, 0);
-
-  foreach my $stepNode (@{$opNode->Child('step')})
-  {
-    if($stepNode->Attribute('target') =~ /^(?:all|$nab->{_target})$/i)
-    {
-      $hasError |= $nab->__CheckConcurrentStep($opNode, $stepNode);
-      my $step = __Step->new($opNode, $stepNode, $nab);
-      $hasError |= 1 unless($step->IsValid() or $nab->{_override});
-      push @steps, $step;
-    }
-  }
-  
-  my $infoNode = $opNode->Child('info', 0);
-  my $info     = $infoNode && $infoNode->Content() || 'No information available';
-
-  OUT2XML::Die(ERR::INVALID_CFG_STEP) if($hasError);
-
-  bless { '__Operation::Type'  => $opNode->Type(),
-          '__Operation::Steps' => \@steps,
-          '__Operation::Info'  => $info,
-        }, $class;
-}
-
-sub LogStepVersion
-{
-  my ($self) = (shift);
-  foreach my $step ( @{$self->{'__Operation::Steps'}} )
-  {
-    $step->LogStepVersion();
-  } 
-  
-}
-
-sub ExecuteResume
-{
-  my ($self, $from) = (shift, shift);
-  foreach my $step ( @{$self->{'__Operation::Steps'}} )
-  {
-    $step->Execute(@_) if($step->IsValid() and $step->Id() ge $from);
-  } 
-}
-
-sub ExecuteSteps
-{
-  my ($self, $stepstring) = (shift, shift);
-  my $steps = join('|', split('\s+', $stepstring));
-  foreach my $step ( @{$self->{'__Operation::Steps'}} )
-  {
-    $step->Execute(@_) if($step->IsValid() and $step->Id() =~ /^(?:$steps)$/);
-  } 
-}
-
-sub Execute
-{
-  my $self = shift;
-
-  foreach my $step (@{$self->{'__Operation::Steps'}})
-  {
-    $step->Execute(@_) if($step->IsValid());
-  } 
-}
-
-sub AUTOLOAD
-{
-  my ($self, $method) = (shift, our $AUTOLOAD);
-  return if($method =~ /::DESTROY$/ or not exists $self->{$method});
-  
-  $self->{$method} = shift if @_;
-  return $self->{$method};
-}
-
-1;
-
-#--------------------------------------------------------------------------------------------------
-#
-#   __Step package.
-#
-#--------------------------------------------------------------------------------------------------
-package __Step;
-
-sub new
-{
-  my ($class, $opNode, $stepNode, $nab, $isValid) = (shift, shift, shift, shift, 1);
-
-  my $callNode = $stepNode->Child('call', 0);
-  my $call     = $callNode && $callNode->Content() || 'undefined';
-  
-  my $infoNode = $stepNode->Child('info', 0);
-  my $info     = $infoNode && $infoNode->Content() || 'No information available';
-
-  my $stepId   = $stepNode->Attribute('id') || 'undefined';
-  my $critical = $stepNode->Attribute('critical') || 'no';
-  
-  if($stepId eq 'undefined')
-  {
-    OUT2XML::Error("Step \'<b>".$info."</b>\' with id <b>".$stepId."</b> is invalid :\n".
-                   "No id attribute specified.");
-    $isValid = 0;
-  }
-  
-  if($call eq 'undefined')
-  {
-    OUT2XML::Error("Step \'<b>".$info."</b>\' with id <b>".$stepId."</b> is invalid :\n".
-                   "No call information was found.");
-    $isValid = 0;
-  }
-  
-  if($critical !~ /^(?:yes|no)$/i)
-  {
-    OUT2XML::Error("Step \'<b>".$info."</b>\' with id <b>".$stepId."</b> is invalid :\n",
-                   "The specified critical attribute should be \'yes\' or \'no\', and not \'$critical\'.");
-    $isValid = 0; 
-  }
-  else
-  {
-    $critical = ($critical =~ /^yes$/i) || 0; 
-  }
-  
-  my ($module, $subroutine);
-
-  if(($module, $subroutine) = ($call =~ /^(.+?)::(.+?)$/))
-  {
-    if(eval 'require '.$module.';')
-    {
-      push @{$nab->{_usermodules}}, $module;
-      unless(exists &{$module.'::'.$subroutine})
-      {
-        if($nab->{_override})
-        {
-          OUT2XML::Warning("Operation <b>".$opNode->Type()."</b>, step \'<b>".$info."</b>\' (id <b>".$stepId."</b>) :\n".
-                           "Unable to find subroutine <b>".$subroutine."</b> in module <b>".$module.".pm</b>. ".
-                           "Step will be removed due to <i>-override</i> flag.");
-        }
-        else
-        {
-          OUT2XML::Error("Operation <b>".$opNode->Type()."</b>, step \'<b>".$info."</b>\' (id <b>".$stepId."</b>) :\n".
-                         "Unable to find subroutine <b>".$subroutine."</b> in module <b>".$module.".pm</b>. ".
-                         "Please verify subroutine name in <b>".$nab->{_ops_cfg}."</b> operation file.");
-        }
-        $isValid = 0;
-      }
-    }
-    else
-    {
-      if($nab->{_override})
-      {
-        OUT2XML::Warning("Operation <b>".$opNode->Type()."</b>, step \'<b>".$info."</b>\' (id <b>".$stepId."</b>) :\n".
-                         "Unable to load module <b>".$module.".pm</b>. ".
-                         "Step will be removed due to <i>-override</i> flag.\n$@");
-      }
-      else
-      {
-        OUT2XML::Error("Operation <b>".$opNode->Type()."</b>, step \'<b>".$info."</b>\' (id <b>".$stepId."</b>) :\n".
-                       "Unable to load module <b>".$module.".pm</b>. ".
-                       "Please verify module name in <b>".$nab->{_ops_cfg}."</b> operation file.\n$@");
-      }
-      $isValid = 0;
-    }
-  }
-  else
-  {
-    OUT2XML::Error("Operation <b>".$opNode->Type()."</b>, step \'<b>".$info."</b>\' (id <b>".$stepId."</b>) :\n".
-                   "Call pattern is invalid. Should be <i>module::subroutine</i>.\n".
-                   "Please verify step call in <b>".$nab->{_ops_cfg}."</b> operation file.");
-    $isValid = 0; 
-  }
-
-  my $moduleVersion = undef;
-  if ( $isValid )
-  {   
-      eval{ $moduleVersion = $module->ISIS_VERSION; };
-  }
-
-  bless { '__Step::Id'         => $stepId,
-          '__Step::IsCritical' => $critical,
-          '__Step::Info'       => $info,
-          '__Step::IsValid'    => $isValid,
-          '__Step::Module'     => $module,
-          '__Step::Subroutine' => $subroutine,
-          '__Step::Version'    => $moduleVersion,
-        }, $class;
-}
-
-sub LogStepVersion
-{
-  my $self = shift;
-  OUT2XML::Print("<b>", $self->Module(), "</b> version is <b>", $self->Version(), "</b>\n");
-}
-
-sub Execute
-{
-  my $self = shift;
-  
-  OUT2XML::OpenEvent("Step ".$self->{'__Step::Id'}." : ".$self->{'__Step::Info'});
-  my $function = \&{$self->{'__Step::Module'}.'::'.$self->{'__Step::Subroutine'}};
-  
-  eval { &{$function}(@_); };
-  
-  if($@)
-  {
-    if($self->{'__Step::IsCritical'})
-    {
-      OUT2XML::Error($@);
-      OUT2XML::Die(ERR::CRITICAL_STEP_FAILED);
-    }
-    else
-    {
-      OUT2XML::Warning($@);
-    }
-  }
-  
-  OUT2XML::CloseEvent();
-}
-
-sub AUTOLOAD
-{
-  my ($self, $method) = (shift, our $AUTOLOAD);
-  return if($method =~ /::DESTROY$/ or not exists $self->{$method});
-  
-  $self->{$method} = shift if @_;
-  return $self->{$method};
-}
-
-1;
-
-__END__
-
-#--------------------------------------------------------------------------------------------------
-# Documentation.
-#--------------------------------------------------------------------------------------------------
-
-=pod
-
-=head1 NAME
-
-NAB - Nokia Automated Build System.
-
-=head1 USER INFORMATION
-
-=head2 Description :
-
-This module is used to execute complex build operations, and allow easy configuration of
-specific steps by the use of independant modules, allowing therefor to configure several
-builds and other operations with the same configuration files.
-
-=head2 Main NAB Arguments :
-
-=over 1
-
-=item * '-ocf=FILE' or '-opscfg=FILE'
-
-This allows the user to specify what XML configuration file to use for determining
-build steps and modules to use. By default, this value is set to 'operations.xml'.
-For more information on how to format the content of this configuration file, see
-L<Operations Configuration File>.
-
-=item * '-rcf=FILE' or '-regcfg=FILE'
-
-This allows the user to specify what XML registry file to use for defining
-build data such as names and supported products. By default, this value is set to
-'registry.xml'. For more information on how to format the content of this configuration
-file, see L<Registry Configuration File>.
-
-=item * '-cm=FILE' or '-coremodule=FILE' :
-
-This defines the core module to be used. This module is used when looking up
-a function call that isn't specified with a module. By default, the module name
-is set to 'corebuild.pm'.
-
-=item * '-tg=TARGET' or '-target=TARGET' :
-
-Sets the target of the operation. Steps in the operations XML configuration can specify
-a target attribute that will define when the corresponding step must be executed based
-on the target value passed as an argument to the script using this flag.
-
-=item * '-or' or '-override' :
-
-This defines the action to take when a step is missing its corresponding module. Without
-the 'override' flag, a missing module or function in a specified module will rase an
-error and terminate the script before it executes any operations. If the flag is defined,
-a missing module or function will only generate a warning and the corresponding step will
-be skipped.
-
-=back
-
-=head2 Operations Configuration File :
-
-This file contains all information regarding the different operations that NAB can execute.
-It is directly used by NAB to determine operation steps, operation flags, and necessary
-modules. It must be configured using the following syntax.
-
-  <operations>
-  
-    <operation_flag>
-  
-      <info>...<info>
-  
-      <flag type="..." pattern="..." info="..." />
-      
-      <step id="..." target="...">
-        <call>...</call>
-        <info>...</info>
-        <flag type="..." pattern="..." info="..." />
-      </step>
-  
-    </operation_flag>
-  
-  </operations>
-
-the <operations> root node is mandatory. All childs of this node (ie: <operation_flag>)
-can have any valid xml tag name, and will define the operation flag to pass to the NAB
-instance to execute it.
-
-The step nodes in each <operation_flag> node defines a step and must have at least the 'id'
-attribute defined. If the 'target' attribute is not defined, it's value will default to 'all'.
-
-For an operation node or a step node, it is possible to define an <info> node that contains a
-description of the action performed by the containing node. It is optional but strongly
-recommended since it clarifies what the operation or step does for further references.
-
-Finally, one or several <flag> nodes can be defined, each of them having at least both
-attributes 'type' and 'pattern' defined. The type determines wether the flag is 'optional'
-or 'mandatory' and the pattern corresponds to the perl regular expression that the passed
-arguments must be tested with, eventually having a captured value (ie: '-flag=(.*)'). An
-'info' attribute can be specified to explain the use of the flag.
-
-=head2 Registry Configuration File :
-
-The registry configuration file is parsed using the L<ISIS::ConfigsData> package. It contains
-all static information that will be passed to all called functions for each operation. This
-file should respect the syntax specified in the L<ISIS::ConfigsData> documentation.
-
-=head1 DEVELOPER INFORMATION
-
-=head2 NAB Internal Data Structure :
-
-A NAB Instance is a blessed hash table containing the following data :
-
-=over 1
-
-=item * _ops_cfg
-
-This is the operations' configuration file. By default set to OPS_CONFIG_FILE defined
-as a constant at the beginning of this file. This XML file contains all steps, generic
-or specific, all flags, and all necessary modules for a given operation.
-
-=item * _bld_cfg
-
-This is the builds' configuration file. By default set to REG_CONFIG_FILE defined
-as a constant at the beginning of this file. This XML file contains all necessary
-information for each type of build possible.
-
-=item * _ops_data
-
-This L<ISIS::XMLManip::Node> reference is the XML tree resulting from the operations' configuraiton
-file set in L<_ops_cfg>. See L<ISIS::XMLManip::Node> for more information.
-
-=item * _reg_data
-
-This L<ISIS::XMLManip::Node> reference is the XML tree resulting from the builds' configuraiton
-file set in L<_bld_cfg>. See L<ISIS::XMLManip::Node> for more information.
-
-=item * _target
-
-This is the only general value passed on to all possible operations. It is by default set
-to 'all' and every step not defining the target attribute will be set to this value as well.
-This value is used to filter out irrelevant steps in a given operation. If an other value
-than 'all' is specified, every step targeting this specific value will be called in addition
-to the steps defined for the 'all' target. On the other hand, when the 'all' target is
-defined, only steps defined for the 'all' target will be called.
-
-=item * _override
-
-This value is used to determine wether the script should halt when encountering a missing
-module required by a function call, or just ignore it after printing out a warning. By
-default, this value is set to '0' and must be activated by having the user pass the
-'-override' flag to the script.
-
-=item * _gbl_args
-
-This array contains all global arguments that are used to define configuration files, the
-general script target and override. For more information on theses flags, see L<Main NAB Arguments>
-
-=item * _args
-
-This value holds a reference to an array containing all dynamic flags. This means it will
-only contain operation flags and their passed on flags. All flags allowing to define NAB
-specific components (such as configuration files) will be stripped out.
-
-=item * _ops_args
-
-This is a hash table of hash tables containing the parsed information necessary for each
-operation. Its structure is as follows :
-
-  %_ops_args
-    |
-    -- %op_type
-         |
-         -- %flag
-              |
-              -- value
-
-For example, a call to $self->{_ops_args}{build}{wa} will return the value of the flag wa for
-the build operation. For boolean flags, the returned value is 1 if set, 0 otherwise.
-
-=item * _exec
-
-This array contains a reference to L<ISIS::XMLManip::Node> objects corresponding to the operations
-the user has decided to execute. The array is populated during the subroutine call 
-L<NAB::__ParseSubArguments>. See L<ISIS::XMLManip::Node> for more information on this package.
-
-=item * _ops
-
-This array contains L<__Operation> objects in the order they must be called. This array is
-populated in the subroutine L<NAB::__LoadOperationSteps>. See L<__Operation> for more
-information on this package.
-
-=item * _gbl_mem
-
-This hash table contains all shared resources and data between the different steps. This space
-is to be used by module developpers to communicate information between different subroutine
-calls and modules.
-
-=back
-
-=head2 NAB INTERFACE
-
-=head2 __Operation PACKAGE
-
-The __Operation package contains all information regarding a specific operation to execute.
-One instance is created for each main operation the user wants to execute, and are created
-directly when the NAB package is instanciated. This package provides a unique public 
-subroutine L<__Operation::Execute> that is automatically called when the L<NAB> instance. There
-is a default accessor for all information contained in a __Operation instance, but it is not
-used throughout the script.
-
-=over 1
-
-=item * __Operation( <OPERATION_NODE>, <NAB_INSTANCE> ) :
-
-The constructor takes the L<XMLManip::Node> operation node, and the L<NAB> instance it is
-attached to. This call will also create all L<__Step> instances corresponding to this operation.
-
-=item * Execute(  ) :
-
-This will execute the full operation and call sequentially L<__Step::Execute> on all contained
-steps for this operation. For more information on the step execution, see L<__Step::Execute>.
-
-=back
-
-=head2 __Step PACKAGE
-
-The __Step package contains all information regarding a specific step for a given operation.
-All instances of this package are contained by an instance of the L<__Operation> that contains
-all information regarding a specific operation. See L<__Operation> for more information. The step
-package provides a unique public subroutine L<__Step::Execute> that is automatically called by
-the L<__Operation> instance it is contained by. There is a default accessor for all information
-contained in a __Step instance, but it is not used throughout the script.
-
-=over 1
-
-=item * __Step( <OPERATION_NODE>, <STEP_NODE>, <NAB_INSTANCE> ) :
-
-The constructor takes the L<XMLManip::Node> operation node the step is attached to, the
-corresponding L<XMLManip::Node> for the step, and the L<NAB> instance all this is attached to.
-This call will create a new instance and check the existance of the necessary module and
-subroutine. The necessary module will also be loaded.
-
-=item * Execute(  ) :
-
-This will actually execute the step by calling the corresponding subroutine from the defined
-module. The function will be passed all build information, taken from the builds' configuraiton
-file, and the operation's arguments that were passed along with the operation target. For more
-information on the builds' configuration file, see L<Configs Configuration File>.
-
-=back
-
-=cut
-
-#--------------------------------------------------------------------------------------------------
-# End of file.
-#--------------------------------------------------------------------------------------------------
--- a/buildframework/helium/tools/common/packages/ISIS/OUT/Box1.pm	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,161 +0,0 @@
-#
-# 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: 
-#
-#!/usr/bin/perl -w
-#--------------------------------------------------------------------------------------------------
-# Name   : Box1.pm
-# Use    : Creates a rounded box container in HTML.
-
-#
-# Synergy :
-# Perl %name: Box1.pm % (%full_filespec:  Box1.pm-1:perl:fa1s60p1#1 %)
-# %derived_by:  wbernard %
-# %date_created:  Thu Jan 12 10:13:35 2006 %
-#
-# Version History :
-#
-# v1.0 (12/11/2005) :
-#  - Fist version of the script.
-#--------------------------------------------------------------------------------------------------
-
-#--------------------------------------------------------------------------------------------------
-#
-#   Box package.
-#
-#--------------------------------------------------------------------------------------------------
-package OUT::Box1;
-
-use strict;
-use warnings;
-use ISIS::OUT::Outputer;
-use ISIS::OUT::Debug;
-
-use constant ISIS_VERSION     => '1.00';
-use constant ISIS_LAST_UPDATE => '12/11/2005';
-
-#--------------------------------------------------------------------------------------------------
-# Constructor.
-#--------------------------------------------------------------------------------------------------
-sub new
-{
-  warn "new OUT::Box1( ".join(', ', @_)." )\n" if(DBG::BOX1);
-
-	my $outputer = pop;
-	$outputer->RequireCSSFile('css/box1.css');
-	$outputer->RequireJSFile('javascript/box1.js');
-	
-  bless { _childs   => undef,
-          _outputer => $outputer,
-        }, shift;
-}
-
-#--------------------------------------------------------------------------------------------------
-# Push Data Element.
-#--------------------------------------------------------------------------------------------------
-sub PushChild
-{
-	warn "OUT::Box1::PushChild( ".join(', ', @_)." )\n" if(DBG::BOX1);
-  my ($self, $child) = (shift, shift);
-  warn "pushing undefined value in child array (Box1)\n" unless(defined $child);
-  push @{$self->{_childs}}, $child;
-}
-
-#--------------------------------------------------------------------------------------------------
-# Print function.
-#--------------------------------------------------------------------------------------------------
-sub Print
-{
-	warn "OUT::Box1::Print( ".join(', ', @_)." )\n" if(DBG::BOX1);
-  my $self     = shift;
-  my $outputer = $self->{_outputer};
-  my $indent   = $outputer->Indent();
-
-  $outputer->Print(
-  	"<div class=\"box1\">\n",
-  	"  <div class=\"box1_content\">\n",
-  	"    <table width=\"100%\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\">\n",
-  );
-
-  my $indent2 = $outputer->Indent();
-  $outputer->Indent($indent2 . '      ');
-
-  foreach (@{$self->{_childs}})
-  {
-  	$outputer->_PreArray();
-    $_->Print();
-    $outputer->_PostArray();
-  }
-  
-  $outputer->Indent($indent2);
-  
-  $outputer->Print(
-    "    </table>\n",
-  	"  </div>\n",
-  	"</div>\n"
-  );
-}
-
-sub AUTOLOAD
-{
-	my ($self, $method) = (shift, our $AUTOLOAD);
-	warn "$method( ".join(', ', @_)." )\n" if(DBG::BOX1);
-	$self->{_outputer}->_Accessor($self, $method, @_);
-}
-
-1;
-
-#--------------------------------------------------------------------------------------------------
-# Documentation.
-#--------------------------------------------------------------------------------------------------
-
-=pod
-
-=head1 NAME
-
-OUT::Box1 - HTML element - A simple blue box with round corners.
-
-=head1 SYNOPSIS
-
-	use ISIS::HTMLManip;
-
-	open($ostream, '>'.$htmlfile) or return ERR::FILE_CREATION_FAILED;
-	my $outputer = new HTMLManip($ostream, 'configuration.xml', 'isis_interface');
-	my $box = $outputer->Create('Box1');
-
-=head1 DESCRIPTION
-
-This module creates a blue bordered HTML box with rounded corners. It requires the box1.css and
-box1.js files that can be found in the isis_interface.
-
-=head2 Box1(  ) :
-
-Create a new box. This constructor should not be called directly and should be created via the
-outputer factory available from the C<L<ISIS::HTMLManip>> module. For more information, see the
-perl documentation of C<L<ISIS::HTMLManip>>.
-
-=head2 PushChild( CHILD ) :
-
-Adds a HTML element to the box instance. These elements will be encapsulated in this box1 element
-and printed automatically when box1 is printed.
-
-=head1 AUTHOR
-
-
-
-=cut
-
-#--------------------------------------------------------------------------------------------------
-# End of file.
-#--------------------------------------------------------------------------------------------------
--- a/buildframework/helium/tools/common/packages/ISIS/OUT/Debug.pm	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,91 +0,0 @@
-#
-# 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: 
-#
-#!/usr/bin/perl -w
-#--------------------------------------------------------------------------------------------------
-# Name   : Outputer.pm
-# Use    : Contains all debug constant symbols - Activates tracing in OUT packages.
-
-#
-# Synergy :
-#
-# Version History :
-#
-# v1.0 (12/11/2005) :
-#  - Fist version of the script.
-#--------------------------------------------------------------------------------------------------
-
-#--------------------------------------------------------------------------------------------------
-#
-#   OUT::Debug package.
-#
-#--------------------------------------------------------------------------------------------------
-
-package DBG;
-
-use strict;
-use warnings;
-
-use constant ISIS_VERSION     => '1.00';
-use constant ISIS_LAST_UPDATE => '13/12/2005';
-
-use constant _DEBUG => 0;
-                              
-use constant OUTPUTER           => _DEBUG && 0; # OUT/Outputer.pm
-use constant LOG_DOCUMENT       => _DEBUG && 0; # OUT/LogDocument.pm
-use constant LOG_HEADER         => _DEBUG && 0; # OUT/Log/Header.pm
-use constant LOG_FOOTER         => _DEBUG && 0; # OUT/Log/Footer.pm
-use constant LOG_MAINCONTENT    => _DEBUG && 0; # OUT/Log/MainContent.pm
-use constant LOG_SUMMARY        => _DEBUG && 0; # OUT/Log/Summary.pm
-use constant LOG_SUMMARYCONTENT => _DEBUG && 0; # OUT/Log/SummaryContent.pm
-use constant BOX1               => _DEBUG && 0; # OUT/Box1.pm
-use constant NODE               => _DEBUG && 0; # OUT/Node.pm
-use constant RAWTEXT            => _DEBUG && 0; # OUT/RawText.pm
-use constant TEXT               => _DEBUG && 0; # OUT/Text.pm
-use constant TITLE1             => _DEBUG && 0; # OUT/Title1.pm
-use constant IMAGE              => _DEBUG && 0; # OUT/Image.pm
-use constant TABLE2D            => _DEBUG && 0; # OUT/Table2D.pm
-use constant SEPARATOR          => _DEBUG && 0; # OUT/Separator.pm
-
-1;
-
-__END__
-
-#--------------------------------------------------------------------------------------------------
-# Documentation.
-#--------------------------------------------------------------------------------------------------
-
-=pod
-
-=head1 NAME
-
-OUT::Debug - Definition of all debug symbols used to (de)activate tracing in the OUT module.
-
-=head1 SYNOPSIS
-
-Setting a constant value to 1 will activate tracing for all instances of the package. each call
-to a member subroutine of that package will be displayed on the terminal/sheel output.
-
-The package influenced by the symbol is written as a comment beside each constant.
-
-=head1 AUTHOR
-
-
-
-=cut
-
-#--------------------------------------------------------------------------------------------------
-# End of file.
-#--------------------------------------------------------------------------------------------------
--- a/buildframework/helium/tools/common/packages/ISIS/OUT/Image.pm	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,82 +0,0 @@
-#
-# 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: 
-#
-#!/usr/bin/perl -w
-#--------------------------------------------------------------------------------------------------
-# Name   : Image.pm
-# Use    : Simple HTML image element.
-
-#
-# Synergy :
-# Perl %name: Image.pm % (%full_filespec:  Image.pm-2:perl:fa1s60p1#1 %)
-# %derived_by:  wbernard %
-# %date_created:  Thu Feb  2 14:18:22 2006 %
-#
-# Version History :
-#
-# v1.0 (12/11/2005) :
-#  - Fist version of the script.
-#--------------------------------------------------------------------------------------------------
-
-package OUT::Image;
-
-use strict;
-use warnings;
-use ISIS::OUT::Outputer;
-use ISIS::OUT::Debug;
-
-use constant ISIS_VERSION     => '1.00';
-use constant ISIS_LAST_UPDATE => '21/12/2005';
-
-#--------------------------------------------------------------------------------------------------
-# Constructor.
-#--------------------------------------------------------------------------------------------------
-sub new
-{
-  warn "new OUT::Image( ", join(', ', @_), " )\n" if(DBG::IMAGE);
-  my $outputer = pop;
-  
-  bless { file      => $outputer->Interface().$_[1],
-          height    => pop,
-          width     => pop,
-          alt       => undef,          
-          _outputer => $outputer,
-        }, shift; 
-}
-
-sub Print
-{
-  my $self = shift;
-  my $outputer = $self->{_outputer};
-  $self->{alt} ||= '';
-  
-  $outputer->Print("<div class=\"icon\">\n",
-                   "  <img src=\"", $self->{file}, "\" width=\"", $self->{width}, "\" height=\"", $self->{height}, "\" alt=\"", $self->{alt}, "\" />\n",
-                   "</div>\n"
-                  );
-}
-
-sub AUTOLOAD
-{
-	my ($self, $method) = (shift, our $AUTOLOAD);
-	warn "$method( ".join(', ', @_)." )\n" if(DBG::IMAGE);
-	$self->{_outputer}->_Accessor($self, $method, @_);
-}
-
-1;
-
-#--------------------------------------------------------------------------------------------------
-# End of file.
-#--------------------------------------------------------------------------------------------------
--- a/buildframework/helium/tools/common/packages/ISIS/OUT/Log/Document.pm	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,225 +0,0 @@
-#
-# 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: 
-#
-#!/usr/bin/perl -w
-#--------------------------------------------------------------------------------------------------
-# Name   : LogDocument.pm
-# Use    : Creates a HTML document instance.
-
-#
-# Synergy :
-# Perl %name: Document.pm % (%full_filespec:  Document.pm-3:perl:fa1s60p1#1 %)
-# %derived_by:  oligrant %
-# %date_created:  Thu Apr  6 10:52:15 2006 %
-#
-# Version History :
-# v1.0.1 (05/04/2006)
-#  - Updated CSS and JS file dependancy printout to match new storage in Outputer.
-#
-# v1.0 (13/12/2005) :
-#  - Fist version of the script.
-#--------------------------------------------------------------------------------------------------
-
-#--------------------------------------------------------------------------------------------------
-#
-#   OUT::Document package.
-#
-#--------------------------------------------------------------------------------------------------
-
-package OUT::Log::Document;
-
-use strict;
-use warnings;
-use ISIS::OUT::Outputer;
-use ISIS::OUT::Debug;
-
-use constant ISIS_VERSION     => '1.0.1';
-use constant ISIS_LAST_UPDATE => '05/04/2006';
-
-#--------------------------------------------------------------------------------------------------
-# Constructor.
-#--------------------------------------------------------------------------------------------------
-sub new
-{
-	warn "new OUT::Log::Document( ".join(', ', @_)." )\n" if(DBG::LOG_DOCUMENT);
-
-	my ($outputer) = $_[$#_];
-
-	bless { 'OUT::Log::Document::Header'  => undef,
-          'OUT::Log::Document::Footer'  => undef,
-          'OUT::Log::Document::Menu'    => undef,
-          'OUT::Log::Document::Summary' => undef,
-          _childs                       => undef,
-          _outputer                     => $outputer
-				}, shift;
-}
-
-#--------------------------------------------------------------------------------------------------
-# Push Child.
-#--------------------------------------------------------------------------------------------------
-sub PushChild
-{
-	warn "OUT::Log::Document::PushChild( ".join(', ', @_)." )\n" if(DBG::LOG_DOCUMENT);
-  my $self = shift;
-  push @{$self->{_childs}}, shift if(@_);
-}
-
-#--------------------------------------------------------------------------------------------------
-# Accessor for header, footer and menu.
-#--------------------------------------------------------------------------------------------------
-sub AUTOLOAD
-{
-  my ($self, $method) = (shift, our $AUTOLOAD);
-  warn "$method( ".join(', ', @_)." )\n" if(DBG::LOG_DOCUMENT);
-  return if($method =~ /::DESTROY$/ or not exists $self->{$method});
-  
-  $self->{$method} = shift if (@_);
-  return $self->{$method};
-}
-
-#--------------------------------------------------------------------------------------------------
-# Print.
-#--------------------------------------------------------------------------------------------------
-sub Print
-{
-	warn "OUT::Log::Document::Print( ".join(', ', @_)." )\n" if(DBG::LOG_DOCUMENT);
-  my $self     = shift;
-  my $outputer = $self->{_outputer};
-  my $indent   = $outputer->Indent();
-  my $iface    = $outputer->Interface();
-  my $id       = $outputer->Id();
-
-  $outputer->Print(  
-  	"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n",
-    "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n",
-    "<html xmlns=\"http://www.w3.org/1999/xhtml\">\n\n",
-    "<head>\n",
-    "  <title>Nokia Automated Build</title>\n"
-  );
-  
-	foreach my $css (@{$outputer->CSSFiles()}, @{$outputer->UserCSSFiles()})
-	{ $outputer->Print("  <link href=\"", $iface, $css, "\" rel=\"stylesheet\" type=\"text/css\" />\n"); }
-	
-	foreach my $js (@{$outputer->JSFiles()}, @{$outputer->UserJSFiles()})
-	{ $outputer->Print("  <script type=\"text/javascript\" src=\"", $iface, $js, "\"></script>\n"); }
-
-  $outputer->Print(
-    "</head>\n\n",
-    "<body>\n\n",
-  );
-  
-  $outputer->Indent($indent . '  ');
-  $self->{'OUT::Log::Document::Header'}->Print() if($self->{'OUT::Log::Document::Header'});
-  $outputer->Indent($indent);
-  
-  $outputer->Indent($indent . '  ');
-  $self->{'OUT::Log::Document::Summary'}->Print() if($self->{'OUT::Log::Document::Summary'});
-  $outputer->Indent($indent);
-  
-  $outputer->Print("  <div id=\"mb\">\n");
-  
-  $outputer->Id($id + 1);
-  $outputer->Indent($indent . '    ');
-  if(defined $self->{_childs})
-  { foreach (@{$self->{_childs}}) { $_->Print(); } }
-  $outputer->Indent($indent);
-  
-  $outputer->Print("  </div>\n");
-
-	$outputer->Indent($indent . '  ');
-	$self->{'OUT::Log::Document::Footer'}->Print() if ($self->{'OUT::Log::Document::Footer'});
-	$outputer->Indent($indent);
-
-	$outputer->Print(
-    "</body>\n\n",
-    "</html>\n"
-  );
-}
-
-1;
-
-#--------------------------------------------------------------------------------------------------
-# Documentation.
-#--------------------------------------------------------------------------------------------------
-
-=pod
-
-=head1 NAME
-
-OUT::Log::Document - A simple HTML template document for log files.
-
-=head1 SYNOPSIS
-
-	use ISIS::HTMLManip;
-	
-	open($ostream, '>'.$htmlfile) or return ERR::FILE_CREATION_FAILED;
-	my $outputer = new HTMLManip($ostream, 'configuration.xml', 'isis_interface');
-	my $document = $outputer->Create('LogDocument');
-	
-	# add childs to the document ...
-	
-	$document->Print();
-	close($ostream);
-
-=head1 DESCRIPTION
-
-This package provides a simple HTML template body for log files, with a header,
-body, and footer parts as described below :
-
-=begin text
-
-	+--------------------+
-	| header             |
-	+--------------------+
-	|                    |
-	| main body          |
-	|                    |
-	+--------------------+
-	| footer             |
-	+--------------------+
-
-=end text
-
-=head2 Header(  ) :
-
-Set or return the current header for the document. By default, the document doesn't
-have any header.
-
-=head2 Footer(  ) :
-
-Set or return the current footer for the document. By default, the document doesn't
-have any footer.
-
-=head2 PushChild( CHILD ) :
-
-Add a child to the document main body. The childs will be printed automatically in
-the order they are pushed.
-
-=head2 Print(  ) :
-
-Prints the full HTML document to the output stream attached to the outputer created
-with 'ISIS::HTMLManip'. This should be the only 'Print' subroutine called in the script
-using 'ISIS::HTMLManip' since all sub elements' Print subourtine will be called
-automatically. for more information, see its documentation.
-
-=head1 AUTHOR
-
-
-
-=cut
-
-#--------------------------------------------------------------------------------------------------
-# End of file.
-#--------------------------------------------------------------------------------------------------
--- a/buildframework/helium/tools/common/packages/ISIS/OUT/Log/Footer.pm	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
-#
-# 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: 
-#
-#--------------------------------------------------------------------------------------------------
-#
-#   Log::Footer package.
-#
-#--------------------------------------------------------------------------------------------------
-package OUT::Log::Footer;
-
-use strict;
-use warnings;
-use ISIS::OUT::Outputer;
-use ISIS::OUT::Debug;
-
-use constant ISIS_VERSION     => '1.00';
-use constant ISIS_LAST_UPDATE => '15/12/2005';
-
-sub new
-{
-	warn "new OUT::Log::Footer( ".join(', ', @_)." )\n" if(DBG::LOG_FOOTER);
-	my ($class) = (shift);
-	
-	bless { 'OUT::Log::Footer::Title'    => shift,
-		      'OUT::Log::Footer::Subtitle' => shift,
-		      _outputer                    => shift,
-		    }, $class;
-}
-
-sub Print
-{
-	warn "OUT::Log::Footer::Print( ".join(', ', @_)." )\n" if(DBG::LOG_FOOTER);
-	my $self     = shift;
-	my $outputer = $self->{_outputer};
-	
-	$outputer->Print(
-	  "<div id=\"f_wrapper\">\n",
-	  "  <div class=\"f_elmt\">\n",
-	  "    <div class=\"f_title\">", $self->{'OUT::Log::Footer::Title'}, "</div>\n",
-	  "    <div class=\"f_subtitle\">", $self->{'OUT::Log::Footer::Subtitle'}, "</div>\n",
-	  "  </div>\n",
-	  "</div>\n"
-	);
-}
-
-sub AUTOLOAD
-{
-	my ($self, $method) = (shift, our $AUTOLOAD);
-	warn "$method( ".join(', ', @_)." )\n" if(DBG::LOG_FOOTER);
-	return $self->{_outputer}->_Accessor($self, $method, @_);
-}
-
-1;
-
-#--------------------------------------------------------------------------------------------------
-# End of file.
-#--------------------------------------------------------------------------------------------------
--- a/buildframework/helium/tools/common/packages/ISIS/OUT/Log/Header.pm	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-#
-# 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: 
-#
-#--------------------------------------------------------------------------------------------------
-#
-#   Log::Header package.
-#
-#--------------------------------------------------------------------------------------------------
-package OUT::Log::Header;
-
-sub new 
-{
-	warn "new OUT::Log::Header( ".join(', ', @_)." )\n" if(DBG::LOG_HEADER);
-	my ($class) = (shift);
-	
-	bless { 'OUT::Log::Header::Title'    => shift,
-		      'OUT::Log::Header::Subtitle' => shift,
-		      _outputer                    => shift,
-		    }, $class;
-}
-
-sub Print
-{
-	warn "OUT::Log::Header::Print( ".join(', ', @_)." )\n" if(DBG::LOG_HEADER);
-	my $self     = shift;
-	my $outputer = $self->{_outputer};
-	
-	$outputer->Print(
-	  "<div id=\"h_wrapper\">\n",
-	  "  <div class=\"h_elmt\">\n",
-	  "    <div class=\"h_title\">", $self->{'OUT::Log::Header::Title'}, "</div>\n",
-	  "    <div class=\"h_subtitle\">", $self->{'OUT::Log::Header::Subtitle'}, "</div>\n",
-	  "  </div>\n",
-	  "</div>\n"
-	);
-}
-
-sub AUTOLOAD
-{
-	my ($self, $method) = (shift, our $AUTOLOAD);
-	warn "$method( ".join(', ', @_)." )\n" if(DBG::LOG_HEADER);
-	return $self->{_outputer}->_Accessor($self, $method, @_);
-}
-
-1;
-
-#--------------------------------------------------------------------------------------------------
-# End of file.
-#--------------------------------------------------------------------------------------------------
--- a/buildframework/helium/tools/common/packages/ISIS/OUT/Log/LogoHeader.pm	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,99 +0,0 @@
-#
-# 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: 
-#
-#------------------------------------------------------------------------------
-# Name   : LogoHeader.pm
-# Use    : description.
-
-#
-# Synergy :
-# Perl %name: LogoHeader.pm % (%full_filespec:  LogoHeader.pm-1:perl:fa1s60p1#1 %)
-# %derived_by:  wbernard %
-# %date_created:  Thu Mar 16 12:49:17 2006 %
-#
-# Version History :
-#
-# v1.0 (16/03/2006) :
-#  - Fist version of the package.
-#------------------------------------------------------------------------------
-
-package OUT::Log::LogoHeader;
-use ISIS::HttpServer;
-
-
-#------------------------------------------------------------------------------
-# Package's subroutines
-#------------------------------------------------------------------------------
-sub new 
-{
-	warn "new OUT::Log::LogoHeader( ".join(', ', @_)." )\n" if(DBG::LOG_HEADER);
-	my ($class) = (shift);
-	
-	bless { 'OUT::Log::LogoHeader::Title'    => shift,
-		      'OUT::Log::LogoHeader::Subtitle' => shift,
-		      'OUT::Log::LogoHeader::Config'   => shift,
-		      _outputer                    => shift,
-		    }, $class;
-}
-
-sub Print
-{
-	warn "OUT::Log::LogoHeader::Print( ".join(', ', @_)." )\n" if(DBG::LOG_HEADER);
-	my $self     = shift;
-	my $outputer = $self->{_outputer};
-
-	my @pics;
-	push @pics, "<div align=\"right\" style=\"position: absolute; top: 0px; right: 0px;\">";
-	foreach my $logo ( @{ $self->{'OUT::Log::LogoHeader::Config'}->Child('__logo') } )
-	{
-		my $param = '';		
-		$param .= "width=\"".$logo->Attribute('width')."\"" if ($logo->Attribute('width'));
-		$param .= "height=\"".$logo->Attribute('height')."\"" if ($logo->Attribute('height'));
-		if ($logo->Attribute('name') and $logo->Attribute('name')=~/^http:\/\//)
-		{			
-			push @pics, "    <img src=\"".$logo->Attribute('name')."\" $param />\n";
-		}
-  	elsif ($logo->Attribute('name'))
-  	{
-			push @pics, "<img src=\"".HttpServer::GetAddress().$logo->Attribute('name')."\" $param />\n";
-  	}
-  }
-
-	push @pics, "</div>";
-	
-	# May put the max size
-	$outputer->Print(
-	  "<div id=\"h_wrapper\" style=\"height: 128px;\">\n",
-	  "  <div class=\"h_elmt\">\n",
-	  "    <div class=\"h_title\">", $self->{'OUT::Log::LogoHeader::Title'}, "</div>\n",
-	  "    <div class=\"h_subtitle\">", $self->{'OUT::Log::LogoHeader::Subtitle'}, "</div>\n",
-	  join("\n", @pics),
-	  "  </div>\n",
-	  "</div>\n"
-	);
-}
-
-sub AUTOLOAD
-{
-	my ($self, $method) = (shift, our $AUTOLOAD);
-	warn "$method( ".join(', ', @_)." )\n" if(DBG::LOG_HEADER);
-	return $self->{_outputer}->_Accessor($self, $method, @_);
-}
-
-
-1;
-#------------------------------------------------------------------------------
-# End of file.
-#------------------------------------------------------------------------------
--- a/buildframework/helium/tools/common/packages/ISIS/OUT/Log/MainContent.pm	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,181 +0,0 @@
-#
-# 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: 
-#
-#!/usr/bin/perl -w
-#--------------------------------------------------------------------------------------------------
-# Name   : MainContent.pm
-# Use    : Creates a HTML document instance.
-
-#
-# Synergy :
-# Perl %name: MainContent.pm % (%full_filespec:  MainContent.pm-1:perl:fa1s60p1#1 %)
-# %derived_by:  wbernard %
-# %date_created:  Mon Feb  6 14:31:57 2006 %
-#
-# Version History :
-#
-# v1.0 (13/12/2005) :
-#  - Fist version of the script.
-#--------------------------------------------------------------------------------------------------
-
-#--------------------------------------------------------------------------------------------------
-#
-#   OUT::Document package.
-#
-#--------------------------------------------------------------------------------------------------
-
-package OUT::Log::MainContent;
-
-use strict;
-use warnings;
-use ISIS::OUT::Outputer;
-use ISIS::OUT::Debug;
-
-use constant ISIS_VERSION     => '1.00';
-use constant ISIS_LAST_UPDATE => '13/12/2005';
-
-#--------------------------------------------------------------------------------------------------
-# Constructor.
-#--------------------------------------------------------------------------------------------------
-sub new
-{
-	warn "new OUT::Log::MainContent( ".join(', ', @_)." )\n" if(DBG::LOG_MAINCONTENT);
-
-	my ($outputer) = pop;
-	$outputer->RequireCSSFile('css/logger2.css');
-
-	bless { _childs                    => undef,
-          _outputer                  => $outputer
-				}, shift;
-}
-
-#--------------------------------------------------------------------------------------------------
-# Push Child.
-#--------------------------------------------------------------------------------------------------
-sub PushChild
-{
-	warn "OUT::Log::MainContent::PushChild( ".join(', ', @_)." )\n" if(DBG::LOG_MAINCONTENT);
-  my $self = shift;
-  push @{$self->{_childs}}, shift if(@_);
-}
-
-#--------------------------------------------------------------------------------------------------
-# Accessor for header, footer and menu.
-#--------------------------------------------------------------------------------------------------
-sub AUTOLOAD
-{
-  my ($self, $method) = (shift, our $AUTOLOAD);
-  warn "$method( ".join(', ', @_)." )\n" if(DBG::LOG_MAINCONTENT);
-  return if($method =~ /::DESTROY$/ or not exists $self->{$method});
-  
-  $self->{$method} = shift if (@_);
-  return $self->{$method};
-}
-
-#--------------------------------------------------------------------------------------------------
-# Print.
-#--------------------------------------------------------------------------------------------------
-sub Print
-{
-	warn "OUT::Log::MainContent::Print( ".join(', ', @_)." )\n" if(DBG::LOG_MAINCONTENT);
-  my $self     = shift;
-  my $outputer = $self->{_outputer};
-  my $indent   = $outputer->Indent();
-  
-  $outputer->Print("<div class=\"mc\">\n");
-
-  $outputer->Indent($indent . '  ');
-  if(defined $self->{_childs})
-  { foreach (@{$self->{_childs}}) { $_->Print(); } }
-  $outputer->Indent($indent);
-  
-  $outputer->Print("</div>\n");
-}
-
-1;
-
-#--------------------------------------------------------------------------------------------------
-# Documentation.
-#--------------------------------------------------------------------------------------------------
-
-=pod
-
-=head1 NAME
-
-OUT::Log::MainContent - A simple HTML template document for log files.
-
-=head1 SYNOPSIS
-
-	use ISIS::HTMLManip;
-	
-	open($ostream, '>'.$htmlfile) or return ERR::FILE_CREATION_FAILED;
-	my $outputer = new HTMLManip($ostream, 'configuration.xml', 'isis_interface');
-	my $document = $outputer->Create('LogDocument');
-	
-	# add childs to the document ...
-	
-	$document->Print();
-	close($ostream);
-
-=head1 DESCRIPTION
-
-This package provides a simple HTML template body for log files, with a header,
-body, and footer parts as described below :
-
-=begin text
-
-	+--------------------+
-	| header             |
-	+--------------------+
-	|                    |
-	| main body          |
-	|                    |
-	+--------------------+
-	| footer             |
-	+--------------------+
-
-=end text
-
-=head2 Header(  ) :
-
-Set or return the current header for the document. By default, the document doesn't
-have any header.
-
-=head2 Footer(  ) :
-
-Set or return the current footer for the document. By default, the document doesn't
-have any footer.
-
-=head2 PushChild( CHILD ) :
-
-Add a child to the document main body. The childs will be printed automatically in
-the order they are pushed.
-
-=head2 Print(  ) :
-
-Prints the full HTML document to the output stream attached to the outputer created
-with 'ISIS::HTMLManip'. This should be the only 'Print' subroutine called in the script
-using 'ISIS::HTMLManip' since all sub elements' Print subourtine will be called
-automatically. for more information, see its documentation.
-
-=head1 AUTHOR
-
-
-
-=cut
-
-#--------------------------------------------------------------------------------------------------
-# End of file.
-#--------------------------------------------------------------------------------------------------
--- a/buildframework/helium/tools/common/packages/ISIS/OUT/Log/Summary.pm	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,181 +0,0 @@
-#
-# 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: 
-#
-#!/usr/bin/perl -w
-#--------------------------------------------------------------------------------------------------
-# Name   : Summary.pm
-# Use    : Creates a HTML log summary instance.
-
-#
-# Synergy :
-# Perl %name: Summary.pm % (%full_filespec:  Summary.pm-1:perl:fa1s60p1#1 %)
-# %derived_by:  wbernard %
-# %date_created:  Mon Feb  6 14:32:00 2006 %
-#
-# Version History :
-#
-# v1.0 (13/12/2005) :
-#  - Fist version of the script.
-#--------------------------------------------------------------------------------------------------
-
-#--------------------------------------------------------------------------------------------------
-#
-#   OUT::Log::Summary package.
-#
-#--------------------------------------------------------------------------------------------------
-
-package OUT::Log::Summary;
-
-use strict;
-use warnings;
-use ISIS::OUT::Outputer;
-use ISIS::OUT::Debug;
-
-use constant ISIS_VERSION     => '1.00';
-use constant ISIS_LAST_UPDATE => '13/12/2005';
-
-#--------------------------------------------------------------------------------------------------
-# Constructor.
-#--------------------------------------------------------------------------------------------------
-sub new
-{
-	warn "new OUT::Log::Summary( ".join(', ', @_)." )\n" if(DBG::LOG_SUMMARY);
-
-	my ($outputer) = pop;
-	$outputer->RequireCSSFile('css/logger2.css');
-
-	bless { _childs   => undef,
-          _outputer => $outputer
-				}, shift;
-}
-
-#--------------------------------------------------------------------------------------------------
-# Push Child.
-#--------------------------------------------------------------------------------------------------
-sub PushChild
-{
-	warn "OUT::Log::Summary::PushChild( ".join(', ', @_)." )\n" if(DBG::LOG_SUMMARY);
-  my $self = shift;
-  push @{$self->{_childs}}, shift if(@_);
-}
-
-#--------------------------------------------------------------------------------------------------
-# Accessor for header, footer and menu.
-#--------------------------------------------------------------------------------------------------
-sub AUTOLOAD
-{
-  my ($self, $method) = (shift, our $AUTOLOAD);
-  warn "$method( ".join(', ', @_)." )\n" if(DBG::LOG_SUMMARY);
-  return if($method =~ /::DESTROY$/ or not exists $self->{$method});
-  
-  $self->{$method} = shift if (@_);
-  return $self->{$method};
-}
-
-#--------------------------------------------------------------------------------------------------
-# Print.
-#--------------------------------------------------------------------------------------------------
-sub Print
-{
-	warn "OUT::Log::Summary::Print( ".join(', ', @_)." )\n" if(DBG::LOG_SUMMARY);
-  my $self     = shift;
-  my $outputer = $self->{_outputer};
-  my $indent   = $outputer->Indent();
-  
-  $outputer->Print("<div id=\"s_mb\">\n");
-
-  $outputer->Indent($indent . '  ');
-  if(defined $self->{_childs})
-  { foreach (@{$self->{_childs}}) { $_->Print(); } }
-  $outputer->Indent($indent);
-  
-  $outputer->Print("</div>\n");
-}
-
-1;
-
-#--------------------------------------------------------------------------------------------------
-# Documentation.
-#--------------------------------------------------------------------------------------------------
-
-=pod
-
-=head1 NAME
-
-OUT::Log::Summary - A simple HTML template document for log files.
-
-=head1 SYNOPSIS
-
-	use ISIS::HTMLManip;
-	
-	open($ostream, '>'.$htmlfile) or return ERR::FILE_CREATION_FAILED;
-	my $outputer = new HTMLManip($ostream, 'configuration.xml', 'isis_interface');
-	my $document = $outputer->Create('LogDocument');
-	
-	# add childs to the document ...
-	
-	$document->Print();
-	close($ostream);
-
-=head1 DESCRIPTION
-
-This package provides a simple HTML template body for log files, with a header,
-body, and footer parts as described below :
-
-=begin text
-
-	+--------------------+
-	| header             |
-	+--------------------+
-	|                    |
-	| main body          |
-	|                    |
-	+--------------------+
-	| footer             |
-	+--------------------+
-
-=end text
-
-=head2 Header(  ) :
-
-Set or return the current header for the document. By default, the document doesn't
-have any header.
-
-=head2 Footer(  ) :
-
-Set or return the current footer for the document. By default, the document doesn't
-have any footer.
-
-=head2 PushChild( CHILD ) :
-
-Add a child to the document main body. The childs will be printed automatically in
-the order they are pushed.
-
-=head2 Print(  ) :
-
-Prints the full HTML document to the output stream attached to the outputer created
-with 'ISIS::HTMLManip'. This should be the only 'Print' subroutine called in the script
-using 'ISIS::HTMLManip' since all sub elements' Print subourtine will be called
-automatically. for more information, see its documentation.
-
-=head1 AUTHOR
-
-
-
-=cut
-
-#--------------------------------------------------------------------------------------------------
-# End of file.
-#--------------------------------------------------------------------------------------------------
--- a/buildframework/helium/tools/common/packages/ISIS/OUT/Log/SummaryContent.pm	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,181 +0,0 @@
-#
-# 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: 
-#
-#!/usr/bin/perl -w
-#--------------------------------------------------------------------------------------------------
-# Name   : SummaryContent.pm
-# Use    : Creates a HTML log summary instance.
-
-#
-# Synergy :
-# Perl %name: SummaryContent.pm % (%full_filespec:  SummaryContent.pm-1:perl:fa1s60p1#1 %)
-# %derived_by:  wbernard %
-# %date_created:  Mon Feb  6 14:32:07 2006 %
-#
-# Version History :
-#
-# v1.0 (13/12/2005) :
-#  - Fist version of the script.
-#--------------------------------------------------------------------------------------------------
-
-#--------------------------------------------------------------------------------------------------
-#
-#   OUT::Log::SummaryContent package.
-#
-#--------------------------------------------------------------------------------------------------
-
-package OUT::Log::SummaryContent;
-
-use strict;
-use warnings;
-use ISIS::OUT::Outputer;
-use ISIS::OUT::Debug;
-
-use constant ISIS_VERSION     => '1.00';
-use constant ISIS_LAST_UPDATE => '13/12/2005';
-
-#--------------------------------------------------------------------------------------------------
-# Constructor.
-#--------------------------------------------------------------------------------------------------
-sub new
-{
-	warn "new OUT::Log::SummaryContent( ".join(', ', @_)." )\n" if(DBG::LOG_SUMMARYCONTENT);
-
-	my ($outputer) = pop;
-	$outputer->RequireCSSFile('css/logger2.css');
-
-	bless { _childs   => undef,
-          _outputer => $outputer
-				}, shift;
-}
-
-#--------------------------------------------------------------------------------------------------
-# Push Child.
-#--------------------------------------------------------------------------------------------------
-sub PushChild
-{
-	warn "OUT::Log::SummaryContent::PushChild( ".join(', ', @_)." )\n" if(DBG::LOG_SUMMARYCONTENT);
-  my $self = shift;
-  push @{$self->{_childs}}, shift if(@_);
-}
-
-#--------------------------------------------------------------------------------------------------
-# Accessor for header, footer and menu.
-#--------------------------------------------------------------------------------------------------
-sub AUTOLOAD
-{
-  my ($self, $method) = (shift, our $AUTOLOAD);
-  warn "$method( ".join(', ', @_)." )\n" if(DBG::LOG_SUMMARYCONTENT);
-  return if($method =~ /::DESTROY$/ or not exists $self->{$method});
-  
-  $self->{$method} = shift if (@_);
-  return $self->{$method};
-}
-
-#--------------------------------------------------------------------------------------------------
-# Print.
-#--------------------------------------------------------------------------------------------------
-sub Print
-{
-	warn "OUT::Log::SummaryContent::Print( ".join(', ', @_)." )\n" if(DBG::LOG_SUMMARYCONTENT);
-  my $self     = shift;
-  my $outputer = $self->{_outputer};
-  my $indent   = $outputer->Indent();
-  
-  $outputer->Print("<div class=\"s_mc\">\n");
-
-  $outputer->Indent($indent . '  ');
-  if(defined $self->{_childs})
-  { foreach (@{$self->{_childs}}) { $_->Print(); } }
-  $outputer->Indent($indent);
-  
-  $outputer->Print("</div>\n");
-}
-
-1;
-
-#--------------------------------------------------------------------------------------------------
-# Documentation.
-#--------------------------------------------------------------------------------------------------
-
-=pod
-
-=head1 NAME
-
-OUT::Log::SummaryContent - A simple HTML template document for log files.
-
-=head1 SYNOPSIS
-
-	use ISIS::HTMLManip;
-	
-	open($ostream, '>'.$htmlfile) or return ERR::FILE_CREATION_FAILED;
-	my $outputer = new HTMLManip($ostream, 'configuration.xml', 'isis_interface');
-	my $document = $outputer->Create('LogDocument');
-	
-	# add childs to the document ...
-	
-	$document->Print();
-	close($ostream);
-
-=head1 DESCRIPTION
-
-This package provides a simple HTML template body for log files, with a header,
-body, and footer parts as described below :
-
-=begin text
-
-	+--------------------+
-	| header             |
-	+--------------------+
-	|                    |
-	| main body          |
-	|                    |
-	+--------------------+
-	| footer             |
-	+--------------------+
-
-=end text
-
-=head2 Header(  ) :
-
-Set or return the current header for the document. By default, the document doesn't
-have any header.
-
-=head2 Footer(  ) :
-
-Set or return the current footer for the document. By default, the document doesn't
-have any footer.
-
-=head2 PushChild( CHILD ) :
-
-Add a child to the document main body. The childs will be printed automatically in
-the order they are pushed.
-
-=head2 Print(  ) :
-
-Prints the full HTML document to the output stream attached to the outputer created
-with 'ISIS::HTMLManip'. This should be the only 'Print' subroutine called in the script
-using 'ISIS::HTMLManip' since all sub elements' Print subourtine will be called
-automatically. for more information, see its documentation.
-
-=head1 AUTHOR
-
-
-
-=cut
-
-#--------------------------------------------------------------------------------------------------
-# End of file.
-#--------------------------------------------------------------------------------------------------
--- a/buildframework/helium/tools/common/packages/ISIS/OUT/Node.pm	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,227 +0,0 @@
-#
-# 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: 
-#
-#!/usr/bin/perl -w
-#--------------------------------------------------------------------------------------------------
-# Name   : Node.pm
-# Use    : HTML node element that can toggle its content.
-
-#
-# Synergy :
-# Perl %name: Node.pm % (%full_filespec:  Node.pm-4.1.2:perl:fa1s60p1#1 %)
-# %derived_by:  wbernard %
-# %date_created:  Fri Mar 17 17:14:15 2006 %
-#
-# Version History :
-# v1.1.2 (15/03/2006)
-#  - Updated the package constructor to take an extra hash table as last argument.
-#  - Updated the Print subroutine to reflect added makeup to HTML look of nodes.
-#
-# v1.1.1 (01/02/2006)
-#  - Corrected node info display method to align cells.
-#
-# v1.1.0 (26/01/2006)
-#  - Corrected HTML to display node info correctly.
-#
-# v1.0.0 (12/11/2005)
-#  - Fist version of the script.
-#--------------------------------------------------------------------------------------------------
-
-#--------------------------------------------------------------------------------------------------
-#
-#   NodeInfo package.
-#
-#--------------------------------------------------------------------------------------------------
-package _NodeInfo;
-
-sub new
-{
-  bless { _outputer => pop,
-          class     => pop,
-          value     => pop,
-        }, shift;
-}
-
-sub AUTOLOAD
-{
-  my $self = shift;
-  $self->{_outputer}->_Accessor($self, our $AUTOLOAD, @_);
-}
-
-1;
-
-#--------------------------------------------------------------------------------------------------
-#
-#   Node package.
-#
-#--------------------------------------------------------------------------------------------------
-package OUT::Node;
-
-use strict;
-use warnings;
-use ISIS::OUT::Outputer;
-use ISIS::OUT::Debug;
-use ISIS::HttpServer;
-
-use constant ISIS_VERSION     => '1.1.2';
-use constant ISIS_LAST_UPDATE => '15/03/2006';
-
-#--------------------------------------------------------------------------------------------------
-# Constructor.
-#--------------------------------------------------------------------------------------------------
-sub new
-{
-  warn "new OUT::Node( ".join(", ", @_)." )\n" if(DBG::NODE);
-  my ($class, $outputer, @childs) = (shift, pop);
-  
-  my $title  = shift || 'No title';
-	my $makeup = shift || {};
-  
-  $outputer->RequireJSFile('javascript/expand2.js');
-
-  bless { title     => $title,
-          style     => $makeup->{style} || 'node_details',
-          anim      => $makeup->{anim} || 'button',
-          icon      => $makeup->{icon} || undef,
-          _info     => undef,
-          _childs   => \@childs,
-          _outputer => $outputer,
-        }, $class;
-}
-
-#--------------------------------------------------------------------------------------------------
-# Push Node Information.
-#--------------------------------------------------------------------------------------------------
-sub PushNodeInfo
-{
-  warn "OUT::Node::PushNodeInfo( ", join(', ', @_), " )\n" if(DBG::NODE);
-  my $self     = shift;
-  my $outputer = $self->{_outputer};
-
-  push @{$self->{_info}}, new _NodeInfo(shift, shift || 'text_default', $outputer) if(@_);
-}
-
-#--------------------------------------------------------------------------------------------------
-# Push Child.
-#--------------------------------------------------------------------------------------------------
-sub PushChild
-{
-  warn "OUT::Node::PushChild( ", join(', ', @_), " )\n" if(DBG::NODE);
-  my $self = shift;
-  push @{$self->{_childs}}, shift if(@_);
-}
-
-#--------------------------------------------------------------------------------------------------
-# Print function.
-#--------------------------------------------------------------------------------------------------
-sub Print
-{
-  warn "OUT::Node::Print( ", join(', ', @_), " )\n" if(DBG::NODE);
-  my $self     = shift;
-  
-  my $outputer = $self->{_outputer};
-  my $indent   = $outputer->Indent();
-  my $iface    = $outputer->Interface();
-  my $id       = $outputer->Id();
-
-  $outputer->Id($id + 1);
-  
-  $outputer->Print("<div class=\"node_head\">\n");
-  
-  if(scalar @{$self->{_childs}})
-  {	
-  	$outputer->Print("  <a href=\"javascript:ToggleNode(\'Img", $id, "\')\">\n");
-  	$outputer->Indent($indent . '  ');
-  }
-                   
-  $outputer->Print("  <span id=\"Img", $id, "\" style=\"background:url(".HttpServer::GetAddress()."/isis_interface/img/icons/", $self->{anim}, "_", (scalar @{$self->{_childs}} ? 'open' : 'invalid'), ".gif) no-repeat\">\n",
-                   "    <span class=\"node_title\">\n",
-                   (defined $self->{icon} ? "<span class=\"".$self->{icon}."\">\n" : ""),
-                   "      ", $self->{title}, "\n",
-                   (defined $self->{icon} ? "</span>\n" : ""),
-                   "    </span>\n",
-                   "  </span>\n"
-                   );
-
-  if(scalar @{$self->{_childs}})
-  {
-  	$outputer->Indent($indent);
-  	$outputer->Print(
-  									 "  </a>\n",
-	                   "  <a href=\"javascript:ShowChilds(\'Img", $id, "\')\"><span class=\"node_action\">\[Show All\]</span></a>\n",
-	                   "  <a href=\"javascript:HideChilds(\'Img", $id, "\')\"><span class=\"node_action\">\[Hide All\]</span></a>\n",
-	                   "  <a href=\"javascript:ToggleNode(\'Img", $id, "\')\">\n"
-	                  );
-	  $outputer->Indent($indent . '  ');
-  }
-                  
-  if($self->{_info})
-  {
-  	$outputer->Print("  <span class=\"node_info\">\n");
-    foreach my $info (@{$self->{_info}})
-    { $outputer->Print("    <span class=\"", $info->Class(), "\">", $info->Value(), "</span>\n"); }
-    $outputer->Print("  </span>\n");
-  }
-  
-  if(scalar @{$self->{_childs}})
-  {
-  	$outputer->Indent($indent);
-  	$outputer->Print("  </a>\n");
-  }
-  
-  $outputer->Print("</div>\n");
-  
-  if(scalar @{$self->{_childs}})
-  {
-  	$outputer->Print(
-	                   "<div id=\"Content", $id, "\" style=\"display:none\">\n",
-	                   "  <div class=\"node_content\">\n"
-	                  );
-  	
-    $outputer->Indent($indent . '    ');
-    foreach (@{$self->{_childs}})
-    { $_->Print(); }
-    $outputer->Indent($indent);
-    
-    $outputer->Print(
-	                   "   </div>\n",
-	                   "</div>\n"
-	                  );
-  }
-}
-
-#--------------------------------------------------------------------------------------------------
-# Accessor.
-#--------------------------------------------------------------------------------------------------
-sub AUTOLOAD
-{
-  my ($self, $method) = (shift, our $AUTOLOAD);
-  warn "$method( ".join(', ', @_)." )\n" if(DBG::NODE);
-  $self->{_outputer}->_Accessor($self, $method, @_);
-}
-
-1;
-
-#--------------------------------------------------------------------------------------------------
-# Documentation.
-#--------------------------------------------------------------------------------------------------
-
-=pod
-
-=cut
-
-#--------------------------------------------------------------------------------------------------
-# End of file.
-#--------------------------------------------------------------------------------------------------
--- a/buildframework/helium/tools/common/packages/ISIS/OUT/Outputer.pm	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,414 +0,0 @@
-#
-# 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: 
-#
-#!/usr/bin/perl -w
-#--------------------------------------------------------------------------------------------------
-# Name   : Outputer.pm
-# Use    : Contains an instanciable package to write complex html files.
-
-#
-# Synergy :
-#
-# Version History :
-# v1.0.3 (06/04/2006)
-#  - Reworte the way user defined CSS files are handled to make sure they are the last ones
-#    included in the document body to allow overwriting of certain values.
-#
-# v1.0.2 (05/04/2006)
-#  - Changed storage for CSS and JS files to arrays to keep inputed order.
-#
-# v1.0.1 (07/02/2006)
-#  - Updated 'Outputer' package to use HTTP Server.
-#
-# v1.0.0 (12/11/2005)
-#  - Fist version of the script.
-#--------------------------------------------------------------------------------------------------
-
-#--------------------------------------------------------------------------------------------------
-#
-#   OUT::Outputer package.
-#
-#--------------------------------------------------------------------------------------------------
-
-package OUT::Outputer;
-
-use strict;
-use warnings;
-use ISIS::HttpServer;
-use ISIS::XMLManip;
-use ISIS::OUT::Debug;
-
-use constant ISIS_VERSION     => 'v1.0.3';
-use constant ISIS_LAST_UPDATE => '05/04/2006';
-
-#--------------------------------------------------------------------------------------------------
-# Constructor.
-#--------------------------------------------------------------------------------------------------
-sub new
-{
-  warn "new OUT::Outputer( ".join(', ', @_)." )\n" if(DBG::OUTPUTER);
-  my ($self, $ostream, $config, $interface_root, %vars) = (shift, shift, shift, shift);
-  my (@stylesheets, @javascripts, @user_stylesheets, @user_javascripts);
-  
-  if(not defined $interface_root) { $interface_root = ''; }
-  else { $interface_root .= '/' if($interface_root !~ /.+\/$/); }
-  
-  $vars{'OUT::Outputer::Ofile'}        = $ostream;
-  $vars{'OUT::Outputer::Indent'}       = '';
-  $vars{'OUT::Outputer::Id'}           = 0;
-  $vars{'OUT::Outputer::Interface'}    = $interface_root;
-  $vars{'OUT::Outputer::CSSFiles'}     = \@stylesheets;
-  $vars{'OUT::Outputer::JSFiles'}      = \@javascripts;
-  $vars{'OUT::Outputer::UserCSSFiles'} = \@user_stylesheets;
-  $vars{'OUT::Outputer::UserJSFiles'}  = \@user_javascripts;
-
-	if ($interface_root =~ /^http:\/\//)
-	{
-		my $temp = $ENV{'TEMP'} || $ENV{'TMP'} || '.';
-		HttpServer::GetFile("$interface_root$config", "$temp/$config"); # or die "Unable to retrieve configuration file $config";
-		$vars{_cfg} = &XMLManip::ParseXMLFile("$temp/$config");
-	}
-	else
-	{
-		$vars{_cfg} = &XMLManip::ParseXMLFile($interface_root.$config);
-	}
-  
-  foreach (@{$vars{_cfg}->Childs()})
-  {
-    if(defined @{$vars{_cfg}->Childs()})
-    { 
-      $vars{'_cfg_'.$_->Type()} = $_->Childs();
-    }
-  }
-
-  bless \%vars, $self;
-}
-
-#--------------------------------------------------------------------------------------------------
-# Factory
-#--------------------------------------------------------------------------------------------------
-sub Create
-{
-  warn "OUT::Outputer::Create( ".join(', ', @_)." )\n" if(DBG::OUTPUTER);
-  my ($self, $type) = (shift, 'OUT::'.shift);
-  
-  eval "require ISIS::$type";
-  if($@){ warn $@; return undef; }
-  return $type->new(@_, $self);
-}
-
-#--------------------------------------------------------------------------------------------------
-# Print
-#--------------------------------------------------------------------------------------------------
-sub Print
-{
-  warn "OUT::Outputer::Print( ".$_[0]." )\n" if(DBG::OUTPUTER);
-  my $self   = shift;
-  my $indent = $self->{'OUT::Outputer::Indent'};
-  my $out    = $self->{'OUT::Outputer::Ofile'};
-
-  my @lines = map{ $indent.$_."\n" } split('\n', join('', @_));
-
-  $out->print(join('', @lines)) if @_;
-}
-
-#--------------------------------------------------------------------------------------------------
-# RequireCSSFile
-#--------------------------------------------------------------------------------------------------
-sub RequireCSSFile
-{
-  warn "OUT::Outputer::RequireCSSFile( ".join(', ', @_)." )\n" if(DBG::OUTPUTER);
-  my ($self, $filename) = (shift, shift);
-  
-  foreach my $css (@{$self->{'OUT::Outputer::CSSFiles'}})
-  { return if($css eq $filename); }
-  
-  push @{$self->{'OUT::Outputer::CSSFiles'}}, $filename;
-}
-
-#--------------------------------------------------------------------------------------------------
-# RequireJavaScript
-#--------------------------------------------------------------------------------------------------
-sub RequireJSFile
-{
-  warn "OUT::Outputer::RequireJSFile( ".join(', ', @_)." )\n" if(DBG::OUTPUTER);
-  my ($self, $filename) = (shift, shift);
-  
-  foreach my $js (@{$self->{'OUT::Outputer::JSFiles'}})
-  { return if($js eq $filename); }
-  
-  push @{$self->{'OUT::Outputer::JSFiles'}}, $filename;
-}
-
-#--------------------------------------------------------------------------------------------------
-# RequireCSSFile
-#--------------------------------------------------------------------------------------------------
-sub UserRequireCSSFile
-{
-  warn "OUT::Outputer::UserRequireCSSFile( ".join(', ', @_)." )\n" if(DBG::OUTPUTER);
-  my ($self, $filename) = (shift, shift);
-
-  foreach my $css (@{$self->{'OUT::Outputer::UserCSSFiles'}})
-  { return if($css eq $filename); }
-
-  push @{$self->{'OUT::Outputer::UserCSSFiles'}}, $filename;
-}
-
-#--------------------------------------------------------------------------------------------------
-# RequireJavaScript
-#--------------------------------------------------------------------------------------------------
-sub UserRequireJSFile
-{
-  warn "OUT::Outputer::UserRequireJSFile( ".join(', ', @_)." )\n" if(DBG::OUTPUTER);
-  my ($self, $filename) = (shift, shift);
-  
-  foreach my $js (@{$self->{'OUT::Outputer::UserJSFiles'}})
-  { return if($js eq $filename); }
-  
-  push @{$self->{'OUT::Outputer::UserJSFiles'}}, $filename;
-}
-
-#--------------------------------------------------------------------------------------------------
-# Get icon based on keyword.
-#--------------------------------------------------------------------------------------------------
-sub GetAssociatedImage
-{
-  warn "OUT::Outputer::GetAssociatedImage( ".join(', ', @_)." )\n" if(DBG::OUTPUTER);
-  my ($self, $type, $res) = (shift, shift);
-  
-  foreach (@{$self->{_cfg_icons}})
-  {
-    my $pattern = $_->Attribute('type');
-    if($type =~ /^$pattern$/)
-    {
-      return $self->Create('Image', $_->Attribute('img'),
-                                    $_->Attribute('width'),
-                                    $_->Attribute('height'),
-                          );
-    }
-  }
-  
-  return undef;
-}
-
-#--------------------------------------------------------------------------------------------------
-# Get class based on keyword.
-#--------------------------------------------------------------------------------------------------
-sub GetAssociatedClass
-{
-  warn "OUT::Outputer::GetAssociatedClass( ".join(', ', @_)." )\n" if(DBG::OUTPUTER);
-  my ($self, $type, $res) = (shift, shift);
-  
-  $res = "undefined_type_".join('_', split(' ', $type));
-  
-  foreach (@{$self->{_cfg_icons}})
-  {
-    my $pattern = $_->Attribute('type');
-    if($type =~ /^$pattern$/)
-    { return $_->Attribute('class'); }
-  }
-  
-  return $res;
-}
-
-#--------------------------------------------------------------------------------------------------
-# Accessor.
-#--------------------------------------------------------------------------------------------------
-sub AUTOLOAD
-{ 
-  my ($self, $method) = (shift, our $AUTOLOAD);
-  warn "$method( ".join(', ', @_)." )\n" if(DBG::OUTPUTER);
-  return if($method =~ /::DESTROY$/ or not exists $self->{$method});
- 
-  $self->{$method} = shift if @_;
-  return $self->{$method}; 
-}
-
-#--------------------------------------------------------------------------------------------------
-# Accessor subroutine to be called by OUT packages by their AUTOLOAD overload.
-# Takes the normal method autoload name, ie : 'OUT::Node::Text', and strips out all package
-# reference, adds an underscore and lowercases the method name, ie '_text'.
-#--------------------------------------------------------------------------------------------------
-sub _Accessor
-{
-  my ($self, $object, $method) = (shift, shift, shift);
-  return if($method =~ /::DESTROY$/);
-  
-  $method =~ s/^.*:://;
-  $method = lc($method);
-  return if not exists $object->{$method};
-  
-  $object->{$method} = shift if @_;
-  return $object->{$method};
-}
-
-1;
-
-#--------------------------------------------------------------------------------------------------
-# Documentation.
-#--------------------------------------------------------------------------------------------------
-
-=pod
-
-=head1 NAME
-
-OUT::Outputer - OUT object factory and printer for complex html files.
-
-=head1 SYNOPSIS
-
-  use ISIS::HTMLManip;
-
-  open($ostream, '>'.$htmlfile) or return ERR::FILE_CREATION_FAILED;
-  my $outputer = new HTMLManip($ostream, 'configuration.xml', 'isis_interface');
-  
-  my $object = $outputer->Create('ObjectType', $arg1, $arg2, ...);
-
-=head1 DESCRIPTION
-
-The Outputer package provides the mechanics necessary to have all objects of the
-OUT module coexist and communicate. From a user's point of view, it acts as an 
-OUT object factory. The 'Create' function calls the object type constructor and
-passes itself as the last argument of the constructor, allowing created objects
-to directly interact with the outputer they will be using.
-
-=head2 Outputer ( OSTREAM, CONFIGURATION, INTERFACE ) :
-
-Returns a newly constructed L<OUT::Outputer> instance that will printout to the passed
-output stream. The configuration file is used for generic values such as icons and 
-colors. The interface determines the root directory from with all the HTML style information
-will be taken. For a simpler use, this constructor should not be called directly, but
-the user should load the L<ISIS::HTMLManip> module that provides a wrapper constructor.
-
-The Outputer contains at least one hidden hash key '_cfg' that accesses the root node
-of the parsed XML configuration file using the L<ISIS::XMLManip> module. All child nodes
-of the root node of the XML configuration file will be used as keys '_cfg_.name'for access
-to an array containing itself all their child nodes for easier access :
-
-Such an XML configuration file :
-
-  <htmloutput>
-    <icons>
-      <icon type="error"   class=".msg_error"   img="img/icons/error.gif"   width="16" height="16"/>
-      <icon type="warning" class=".msg_warning" img="img/icons/warning.gif" width="16" height="16"/>
-      <icon type="good"    class=".msg_good"    img="img/icons/good.gif"    width="16" height="16"/>
-      <icon type=".*"      class=".msg_default" img="img/icons/default.png" width="20" height="16"/>
-    </icons>
-  </htmloutput>
-
-Will result in this hash table :
-
-  $vars{_cfg} => htmloutputNode;
-  $vasr{_cfg_icons} => @{ iconNode, iconNode, iconNode, iconNode };
-
-For more information on how to access data from that root node, see the L<ISIS::XMLManip>
-documentaion.
-
-=head2 Create ( OBJECTTYPE, [ARG1, [ARG2, ...]] ) :
-
-Returns an OUT object created by a call to the object type constructor. Arguments that
-need to be passed to the constructor can be passed via this subroutine. The necessary
-OUT:: submodule for creating the object will be loaded. If the module is not found, or
-the constructor fails, undef will be returned. Note that the objecttype should not contain
-the 'OUT::' prefix, as the only place the factory will look for the module is in the OUT
-subdirectory.
-
-=head2 RequireCSSFile( PATH ) :
-
-Should be called by an OUT object's constructor. This registers a CSS file necessary for
-the correct displaying of the caller object's class. The same file can be specified several
-times without harm.
-
-=head2 RequireJSFile( PATH ) :
-
-Should be called by an OUT object's constructor. This registers a JavaScript file necessary
-for the correct displaying of the caller object's class. The same file can be specified
-several times without harm.
-
-=head2 GetAssociatedImage( FILETYPE ) :
-
-Returns the correct image based on a file type. Icons should be specified in the
-configuration XML file used by the outputer, for more information on the XML configuration
-file, see L<CONFIGURATION FILE>.
-
-=head2 GetAssociatedClass( FILETYPE ) :
-
-Returns the correct class based on a file type. Icons should be specified in the configuration
-XML file used by the outputer, for more information on the XML configuration file, see
-L<CONFIGURATION FILE>.
-
-=head2 Print( TEXT ) :
-
-Prints the text to the output stream associated to the outputer. There is no need to take
-care of the indentation prior to a call to print since it will automatically be formatted.
-
-=head2 Indent(  ) :
-
-Sets or returns the current indent used when printing to the output stream to respect HTML
-node indentations. This value can be freely changed by the user.
-
-=head2 Interface(  ) :
-
-Sets or returns the interface root to be used when looking for javascript, css and image files.
-
-=head2 Id(  ) :
-
-Sets or returns the current global id used when printing out HTML nodes. This Id is used to
-uniquely identify certain HTML nodes throughout the HTML document allowing javascripts to
-access these nodes using the javascript 'GetElementById' function. Users should remember to
-increment this value as soon as they do not require it anymore.
-
-=head2 _Accessor(  ) :
-
-This subroutine is a simple AUTOLOAD accessor that can be called directly by OUT objects. OUT
-object authors can easily define an accessor with the following syntax.
-
-  sub new
-  {
-    bless { # other hash elements ...
-            _outputer => pop,
-          }, shift;
-  }
-
-  sub AUTOLOAD
-  {
-    my ($self, $method) = (shift, our $AUTOLOAD);
-    return $self->{_outputer}->_Accessor($self, $method, @_);
-  }
-
-This allows to avoid having long hash strings as keys like the classic AUTOLOAD mechanism. For
-example, if the OUT object has an 'icon' object in its hash :
-
-  sub new
-  {
-    bless { icon      => undef, # initialization
-            _outputer => pop,
-          }, shift;
-  }
-
-And having the same AUTOLOAD definition as above, you can just call:
-
-  my $obj = $outputer->Create('obj_type'); # and other eventual args.
-  $obj->Icon()         # will return $obj->{icon}.
-  $obj->Icon($my_icon) # will set $obj->{icon} = $my_icon.
-
-=head1 AUTHOR
-
-
-
-=cut
-
-#--------------------------------------------------------------------------------------------------
-# End of file.
-#--------------------------------------------------------------------------------------------------
--- a/buildframework/helium/tools/common/packages/ISIS/OUT/RawText.pm	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,130 +0,0 @@
-#
-# 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: 
-#
-#!/usr/bin/perl -w
-#--------------------------------------------------------------------------------------------------
-# Name   : RawText.pm
-# Use    : Creates a preformatted text using a <PRE> HTML element.
-
-#
-# Synergy :
-# Perl %name: RawText.pm % (%full_filespec:  RawText.pm-1:perl:fa1s60p1#1 %)
-# %derived_by:  wbernard %
-# %date_created:  Thu Jan 12 10:13:56 2006 %
-#
-# Version History :
-#
-# v1.0 (12/11/2005) :
-#  - Fist version of the script.
-#--------------------------------------------------------------------------------------------------
-
-#--------------------------------------------------------------------------------------------------
-#
-#   RawText package.
-#
-#--------------------------------------------------------------------------------------------------
-package OUT::RawText;
-
-use strict;
-use warnings;
-use ISIS::OUT::Outputer;
-use ISIS::OUT::Debug;
-
-use constant ISIS_VERSION     => '1.00';
-use constant ISIS_LAST_UPDATE => '20/12/2005';
-
-#--------------------------------------------------------------------------------------------------
-# Constructor.
-#--------------------------------------------------------------------------------------------------
-sub new
-{
-  warn "new OUT::RawText( <text> )\n" if(DBG::RAWTEXT);
-
-  my $class    = shift;
-	my $outputer = pop;
-	my $text     = join('', @_);
-	
-  bless { content   => $text,
-          _outputer => $outputer,
-        }, $class;
-}
-
-#--------------------------------------------------------------------------------------------------
-# Print function.
-#--------------------------------------------------------------------------------------------------
-sub Print
-{
-	warn "OUT::RawText::Print( ".join(', ', @_)." )\n" if(DBG::RAWTEXT);
-  my $self     = shift;
-  my $outputer = $self->{_outputer};
-  my $indent   = $outputer->Indent();
-
-  $outputer->Print("<PRE class=\"raw_text\">\n");
-  $outputer->Indent('');
-  $outputer->Print($self->{content});
-  $outputer->Indent($indent);
-  $outputer->Print("</PRE>\n");
-}
-
-sub AUTOLOAD
-{
-	my ($self, $method) = (shift, our $AUTOLOAD);
-	warn "$method( ".join(', ', @_)." )\n" if(DBG::RAWTEXT);
-	$self->{_outputer}->_Accessor($self, $method, @_);
-}
-
-1;
-
-#--------------------------------------------------------------------------------------------------
-# Documentation.
-#--------------------------------------------------------------------------------------------------
-
-=pod
-
-=head1 NAME
-
-OUT::RawText - HTML element - A simple raw text for displaying preformatted text.
-
-=head1 SYNOPSIS
-
-	use ISIS::HTMLManip;
-
-	open($ostream, '>'.$htmlfile) or return ERR::FILE_CREATION_FAILED;
-	my $outputer = new HTMLManip($ostream, 'configuration.xml', 'isis_interface');
-	my $rawtext = $outputer->Create('RawText');
-
-=head1 DESCRIPTION
-
-This module creates a simple raw text HTML element using the <pre> HTML element.
-
-=head2 RawText( [TEXT1, [TEXT2, ...]], OUTPUTER ) :
-
-Creates a new raw text html element. This constructor should not be called directly and should be
-created via the outputer factory available from the C<L<ISIS::HTMLManip>> module. For more
-information, see the perl documentation of C<L<ISIS::HTMLManip>>.
-
-=head2 Content( [TEXT] ) :
-
-Sets or returns the current text associated to the raw text element.
-
-=head1 AUTHOR
-
-
-
-=cut
-
-#--------------------------------------------------------------------------------------------------
-# End of file.
-#--------------------------------------------------------------------------------------------------
--- a/buildframework/helium/tools/common/packages/ISIS/OUT/Separator.pm	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,123 +0,0 @@
-#
-# 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: 
-#
-#!/usr/bin/perl -w
-#--------------------------------------------------------------------------------------------------
-# Name   : Separator.pm
-# Use    : Normal HTML separator.
-
-#
-# Synergy :
-#
-# Version History :
-#
-# v1.0.0 (16/03/2006) :
-#  - Fist version of the script.
-#--------------------------------------------------------------------------------------------------
-
-#--------------------------------------------------------------------------------------------------
-#
-#   Separator package.
-#
-#--------------------------------------------------------------------------------------------------
-package OUT::Separator;
-
-use strict;
-use warnings;
-use ISIS::OUT::Outputer;
-use ISIS::OUT::Debug;
-
-use constant ISIS_VERSION     => '1.0.0';
-use constant ISIS_LAST_UPDATE => '16/03/2006';
-
-#--------------------------------------------------------------------------------------------------
-# Constructor.
-#--------------------------------------------------------------------------------------------------
-sub new
-{
-  warn "new OUT::Separator( ", join(', ', @_), " )\n" if(DBG::SEPARATOR);
-
-  my $class    = shift;
-	my $outputer = pop;
-
-  bless { style     => shift,
-          _outputer => $outputer,
-        }, $class;
-}
-
-#--------------------------------------------------------------------------------------------------
-# Print function.
-#--------------------------------------------------------------------------------------------------
-sub Print
-{
-	warn "OUT::Separator::Print( ".join(', ', @_)." )\n" if(DBG::SEPARATOR);
-  my $self     = shift;
-  my $outputer = $self->{_outputer};
-  my $indent   = $outputer->Indent();
- 	              
-	$outputer->Print("<div class=\"".($self->{style})."\" ></div>\n");
-}
-
-sub AUTOLOAD
-{
-	my ($self, $method) = (shift, our $AUTOLOAD);
-	warn "$method( ".join(', ', @_)." )\n" if(DBG::SEPARATOR);
-	$self->{_outputer}->_Accessor($self, $method, @_);
-}
-
-1;
-
-#--------------------------------------------------------------------------------------------------
-# Documentation.
-#--------------------------------------------------------------------------------------------------
-
-=pod
-
-=head1 NAME
-
-OUT::Separator - HTML element - A simple separator element.
-
-=head1 SYNOPSIS
-
-	use ISIS::HTMLManip;
-
-	open($ostream, '>'.$htmlfile) or return ERR::FILE_CREATION_FAILED;
-	my $outputer = new HTMLManip($ostream, 'configuration.xml', 'isis_interface');
-	my $text = $outputer->Create('Separator', 'css_separator_style');
-
-=head1 DESCRIPTION
-
-This module creates a simple separator HTML element as an HTML <div> element.
-
-=head2 Separator( <STYLE> ) :
-
-Creates a new separator html element. This constructor should not be called directly and should be
-created via the outputer factory available from the C<L<ISIS::HTMLManip>> module. For more
-information, see the perl documentation of C<L<ISIS::HTMLManip>>.
-
-=head2 Style( [STYLE] ) :
-
-Sets or returns the current style that will be associated to the text. The style should be a
-css class definition. By default, the class associated to the <div> element is 'text_default'.
-
-=head1 AUTHOR
-
-
-
-=cut
-
-#--------------------------------------------------------------------------------------------------
-# End of file.
-#--------------------------------------------------------------------------------------------------
--- a/buildframework/helium/tools/common/packages/ISIS/OUT/Table2D.pm	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,184 +0,0 @@
-#
-# 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: 
-#
-#!/usr/bin/perl -w
-#--------------------------------------------------------------------------------------------------
-# Name   : Table2D.pm
-# Use    : Fast simple HTML table of any dimension.
-
-#
-# Synergy :
-# Perl %name: Table2D.pm % (%full_filespec:  Table2D.pm-3:perl:fa1s60p1#1 %)
-# %derived_by:  wbernard %
-# %date_created:  Mon Feb  6 13:34:47 2006 %
-#
-# Version History :
-# v1.1.0 (01/02/2006)
-#  - Added 'SetColumnAttr', 'SetRowAttr', 'SetCellAttr' subroutines to Table2D.
-#
-# v1.0.0 (24/11/2005)
-#  - Fist version of the script.
-#--------------------------------------------------------------------------------------------------
-
-package OUT::Table2D;
-
-use strict;
-use warnings;
-use ISIS::OUT::Outputer;
-use ISIS::OUT::Debug;
-
-#--------------------------------------------------------------------------------------------------
-# Constructor.
-#--------------------------------------------------------------------------------------------------
-sub new
-{
-  warn "new OUT::Table2D( ", join(', ', @_), " )\n" if(DBG::TABLE2D);
-  
-  my ($class, $outputer, $lines) = (shift, pop, shift || {});
-  
-  $outputer->RequireCSSFile('css/logger2.css');
-  
-  my $self = bless { width     => 0,
-                     height    => 0,
-                     _childs   => undef,
-                     _widths   => undef,
-                     _outputer => $outputer,
-                   }, $class;
-  
-  foreach (sort keys %{$lines}) { $self->AddLine($_, ${$lines}{$_}); }
-  
-  return $self;
-}
-
-#--------------------------------------------------------------------------------------------------
-# AddLine
-#--------------------------------------------------------------------------------------------------
-sub AddLine
-{
-  warn "OUT::Table2D::AddLine( ", join(', ', @_), ")\n" if(DBG::TABLE2D);
-  my $self     = shift;
-  my $outputer = $self->{_outputer};
-
-  my @line = map { ref $_ eq '' ? $outputer->Create('Text', $_) : $_ } @_;
-  push @{$self->{_childs}}, \@line;
-
-	my @attrs = map { {} } @_;
-	push @{$self->{_attrs}}, \@attrs;
-
-  $self->{width} = scalar(@_) if(scalar(@_) > $self->{width});
-  ++$self->{height};
-}
-
-sub SetRowAttr
-{
-	my ($self, $idx, $attrs) = (shift, shift, shift);
-	
-	foreach my $rowAttr (@{$self->{_attrs}->[$idx]})
-	{ 
-		foreach my $attr (keys %$attrs)
-		{ print $$attrs{$attr}, "\n"; $$rowAttr{$attr} = $$attrs{$attr}; }
-	}
-}
-
-sub SetColumnAttr
-{
-	my ($self, $idx, $attrs) = (shift, shift, shift);
-	
-	foreach my $columnAttr (@{$self->{_attrs}})
-	{ 
-		foreach my $attr (keys %$attrs)
-		{ $columnAttr->[$idx]->{$attr} = $$attrs{$attr}; }
-	}
-}
-
-sub SetCellAttr
-{
-	my ($self, $col, $row, $attrs) = (shift, shift, shift, shift);
-	
-	foreach my $attr (keys %$attrs)
-	{ $self->{_attrs}->[$col]->[$row]->{$attr} = $$attrs{$attr}; }
-}
-
-#--------------------------------------------------------------------------------------------------
-# Print
-#--------------------------------------------------------------------------------------------------
-sub Print
-{
-  warn "OUT::Table2D::Print( ", join(', ', @_), " )\n" if(DBG::TABLE2D);
-	my $self     = shift;
-	my $outputer = $self->{_outputer};
-	my $indent   = $outputer->Indent();
-
-  $outputer->Print("<div class=\"t_wrapper\">\n",
-                   "  <table cellspacing=\"0\" cellpadding=\"0\" border=\"0\" width=\"100%\">\n"
-                  );
-
-	for my $col (0 .. $#{$self->{_childs}})
-	{
-		$outputer->Print("    <tr>\n");
-		
-		for my $row (0 .. $#{$self->{_childs}->[$col]})
-		{
-			my $attrs = $self->{_attrs}->[$col]->[$row];
-			if(keys %$attrs)
-			{
-				$outputer->Print("      <td ", join(' ', map { "$_=\"".$attrs->{$_}."\"" } keys %$attrs), ">\n");
-			}
-			else
-			{
-				$outputer->Print("      <td>\n");
-			}
-			
-			$outputer->Indent($indent . '        ');
-			$self->{_childs}->[$col]->[$row]->Print();
-			$outputer->Indent($indent);
-			$outputer->Print("      </td>\n");
-		}
-		
-		$outputer->Print("    </tr>\n");
-	}
-	
-	$outputer->Print("  </table>\n",
-	                 "</div>\n"
-	                );
-}
-
-#--------------------------------------------------------------------------------------------------
-# Accessor.
-#--------------------------------------------------------------------------------------------------
-sub AUTOLOAD
-{
-	my ($self, $method) = (shift, our $AUTOLOAD);
-	warn "$method( ".join(', ', @_)." )\n" if(DBG::TABLE2D);
-	$self->{_outputer}->_Accessor($self, $method, @_);
-}
-
-1;
-
-__END__
-
-#--------------------------------------------------------------------------------------------------
-# Documentation.
-#--------------------------------------------------------------------------------------------------
-
-=pod
-
-
-
-=cut
-
-#--------------------------------------------------------------------------------------------------
-# End of file.
-#--------------------------------------------------------------------------------------------------
--- a/buildframework/helium/tools/common/packages/ISIS/OUT/Text.pm	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,158 +0,0 @@
-#
-# 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: 
-#
-#!/usr/bin/perl -w
-#--------------------------------------------------------------------------------------------------
-# Name   : Text.pm
-# Use    : Normal HTML text with optional icon.
-
-#
-# Synergy :
-# Perl %name: Text.pm % (%full_filespec:  Text.pm-10:perl:fa1s60p1#1 %)
-# %derived_by:  wbernard %
-# %date_created:  Fri Mar 31 14:04:50 2006 %
-#
-# Version History :
-#
-# v1.0 (12/11/2005) :
-#  - Fist version of the script.
-#--------------------------------------------------------------------------------------------------
-
-#--------------------------------------------------------------------------------------------------
-#
-#   Text package.
-#
-#--------------------------------------------------------------------------------------------------
-package OUT::Text;
-
-use strict;
-use warnings;
-use ISIS::OUT::Outputer;
-use ISIS::OUT::Debug;
-use HTML::Entities;
-
-use constant ISIS_VERSION     => '1.00';
-use constant ISIS_LAST_UPDATE => '21/12/2005';
-
-use overload q("") => \&_AsString;
-
-sub _AsString
-{
-  my ($self) = (shift);
-  return $self->{content};
-}
-
-#--------------------------------------------------------------------------------------------------
-# Constructor.
-#--------------------------------------------------------------------------------------------------
-sub new
-{
-  warn "new OUT::Text( <text> )\n" if(DBG::TEXT);
-
-  my $class    = shift;
-	my $outputer = pop;
-	my $text = join('', @_);
-	$text =~ s/\n/<br\/>/g;
-	&__String2XML($text);
-
-  bless { style     => undef,
-  	      content   => $text,
-          _outputer => $outputer,
-        }, $class;
-}
-
-#--------------------------------------------------------------------------------------------------
-# Print function.
-#--------------------------------------------------------------------------------------------------
-sub Print
-{
-	warn "OUT::Text::Print( ".join(', ', @_)." )\n" if(DBG::TEXT);
-  my $self     = shift;
-  my $outputer = $self->{_outputer};
-  my $indent   = $outputer->Indent();
-  
-  $self->{style} ||= 'text_default';
- 	              
-	$outputer->Print("<div class=\"".($self->{style})."\" >\n");
-	$outputer->Indent($indent . '  ');
-	$outputer->Print($self->{content});
-	$outputer->Indent($indent);
-	$outputer->Print("</div>\n");
-}
-
-sub AUTOLOAD
-{
-	my ($self, $method) = (shift, our $AUTOLOAD);
-	warn "$method( ".join(', ', @_)." )\n" if(DBG::TEXT);
-	$self->{_outputer}->_Accessor($self, $method, @_);
-}
-
-sub __String2XML
-{
-  my $str = shift || '';
-  $str =~ s/\e/e/;
-  $str = HTML::Entities::encode_entities($str);
-  return $str;
-}
-
-1;
-
-#--------------------------------------------------------------------------------------------------
-# Documentation.
-#--------------------------------------------------------------------------------------------------
-
-=pod
-
-=head1 NAME
-
-OUT::Text - HTML element - A simple text element with optional icon.
-
-=head1 SYNOPSIS
-
-	use ISIS::HTMLManip;
-
-	open($ostream, '>'.$htmlfile) or return ERR::FILE_CREATION_FAILED;
-	my $outputer = new HTMLManip($ostream, 'configuration.xml', 'isis_interface');
-	my $rawtext = $outputer->Create('RawText');
-
-=head1 DESCRIPTION
-
-This module creates a simple text HTML element encapsulated in a HTML <div> element.
-
-=head2 Text( [TEXT1, [TEXT2, ...]], OUTPUTER ) :
-
-Creates a new text html element. This constructor should not be called directly and should be
-created via the outputer factory available from the C<L<ISIS::HTMLManip>> module. For more
-information, see the perl documentation of C<L<ISIS::HTMLManip>>.
-
-=head2 Icon( [ICON] ) :
-
-Sets or returns the current icon attached to the text. By default, there is no icon set.
-Icons should be set only by passing a reference to a C<L<OUT::Image>> instance.
-
-=head2 Style( [STYLE] ) :
-
-Sets or returns the current style that will be associated to the text. The style should be a
-css class definition. By default, the class associated to the <div> element is 'text_default'.
-
-=head1 AUTHOR
-
-
-
-=cut
-
-#--------------------------------------------------------------------------------------------------
-# End of file.
-#--------------------------------------------------------------------------------------------------
--- a/buildframework/helium/tools/common/packages/ISIS/OUT/Title1.pm	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,139 +0,0 @@
-#
-# 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: 
-#
-#!/usr/bin/perl -w
-#--------------------------------------------------------------------------------------------------
-# Name   : Title1.pm
-# Use    : Normal HTML title with optional icon.
-
-#
-# Synergy :
-# Perl %name: Title1.pm % (%full_filespec:  Title1.pm-1:perl:fa1s60p1#1 %)
-# %derived_by:  wbernard %
-# %date_created:  Thu Jan 12 10:14:06 2006 %
-#
-# Version History :
-#
-# v1.0 (12/11/2005) :
-#  - Fist version of the script.
-#--------------------------------------------------------------------------------------------------
-
-#--------------------------------------------------------------------------------------------------
-#
-#   Title1 package.
-#
-#--------------------------------------------------------------------------------------------------
-package OUT::Title1;
-
-use strict;
-use warnings;
-use ISIS::OUT::Outputer;
-use ISIS::OUT::Debug;
-
-use constant ISIS_VERSION     => '1.00';
-use constant ISIS_LAST_UPDATE => '21/12/2005';
-
-#--------------------------------------------------------------------------------------------------
-# Constructor.
-#--------------------------------------------------------------------------------------------------
-sub new
-{
-  warn "new OUT::Title1( <text> )\n" if(DBG::TITLE1);
-
-  my $class    = shift;
-	my $outputer = pop;
-	my $text     = join('', @_);
-	
-  bless { icon      => undef,
-  	      content   => $text,
-          _outputer => $outputer,
-        }, $class;
-}
-
-#--------------------------------------------------------------------------------------------------
-# Print function.
-#--------------------------------------------------------------------------------------------------
-sub Print
-{
-	warn "OUT::Title1::Print( ".join(', ', @_)." )\n" if(DBG::TITLE1);
-  my $self     = shift;
-  my $outputer = $self->{_outputer};
-  my $indent   = $outputer->Indent();
-  my $icon     = $self->{icon};
-  
-  $self->{content} =~ s/\n//g;
-
-	if(defined $icon and ref $icon eq 'OUT::Image')
-	{
-		$outputer->Indent($indent . '        ');
-	 	$icon->Print();
-	 	$outputer->Indent($indent);
-	}
-
- 	$outputer->Print("<h1>", $self->{content}, "</h1>\n");
-}
-
-sub AUTOLOAD
-{
-	my ($self, $method) = (shift, our $AUTOLOAD);
-	warn "$method( ".join(', ', @_)." )\n" if(DBG::TITLE1);
-	$self->{_outputer}->_Accessor($self, $method, @_);
-}
-
-1;
-
-#--------------------------------------------------------------------------------------------------
-# Documentation.
-#--------------------------------------------------------------------------------------------------
-
-=pod
-
-=head1 NAME
-
-OUT::Title1 - A simple title using the <h1> HTML element.
-
-=head1 SYNOPSIS
-
-	use ISIS::HTMLManip;
-
-	open($ostream, '>'.$htmlfile) or return ERR::FILE_CREATION_FAILED;
-	my $outputer = new HTMLManip($ostream, 'configuration.xml', 'isis_interface');
-	my $title = $outputer->Create('Title1');
-
-=head1 DESCRIPTION
-
-This module creates a simple text HTML element encapsulated in a HTML <div> element.
-
-=head2 Title( [TITLE] ) :
-
-Creates a new title element. An optional image type that will be looked up in the configuration XML
-file will be used. See C<L<ISIS::HTMLManip>> for more information. This constructor should not be
-called directly and should be created via the outputer factory available from the C<L<ISIS::HTMLManip>>
-module. For more information, see the perl documentation of C<L<ISIS::HTMLManip>>.
-
-=head2 Icon( [ICON] ) :
-
-Sets or returns the current icon attached to the text. By default, there is no icon set.
-Icons should be set only by passing a reference to a C<L<OUT::Image>> instance.
-
-=head1 AUTHOR
-
-
-
-=cut
-
-#--------------------------------------------------------------------------------------------------
-# End of file.
-#--------------------------------------------------------------------------------------------------
--- a/buildframework/helium/tools/common/packages/ISIS/OutputParser.pm	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,104 +0,0 @@
-#
-# 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: 
-#
-#------------------------------------------------------------------------------
-# Name   : OutputParser.pm
-# Use    : description.
-
-#
-# Synergy :
-# Perl %name: OutputParser.pm % (%full_filespec:  OutputParser.pm-1:perl:fa1s60p1#2 %)
-# %derived_by:  wbernard %
-# %date_created:  Thu Feb  9 08:24:25 2006 %
-#
-# Version History :
-#
-# v1.0 (24/10/2005) :
-#  - Fist version of the package.
-#  - Based on localisation one.
-#------------------------------------------------------------------------------
-
-package ISIS::OutputParser;
-use strict;
-use ISIS::Logger2;
-
-# ISIS constants.
-use constant ISIS_VERSION 		=> '1.0';
-use constant ISIS_LAST_UPDATE => '24/10/2005';
-
-
-#------------------------------------------------------------------------------
-# Package's subroutines
-#------------------------------------------------------------------------------
-
-sub ParseMakeFPSX
-{
-	my ($output) = @_;
-	my $buffer = "";
-	foreach my $line ( split(/\n/, $output) )
-	{
-		
-		if ( $line  =~ /ERROR:/i )
-		{
-			OUT2XML::Print ( $buffer );	$buffer = "";
-			OUT2XML::Error ( $line  );
-		}
-		elsif ( $line  =~ /WARNING:/i )
-		{
-			OUT2XML::Print ( $buffer );	$buffer = "";
-			OUT2XML::Warning ( $line  );
-		}
-		elsif ( $line  =~ /\s*Invalid\s+Image\s+name:/i )
-		{
-			OUT2XML::Print ( $buffer );	$buffer = "";
-			OUT2XML::Warning ( $line  );
-		}		
-		elsif ( $line  =~ /\s*Missing\s+file:/i )
-		{
-			OUT2XML::Print ( $buffer );	$buffer = "";
-			OUT2XML::Warning ( $line  );
-		}
-		elsif ( $line =~ /^#+/ )
-		{
-			OUT2XML::Print ( $buffer );	$buffer = "";
-			OUT2XML::Print ( "<b>$line</b>" );
-		}
-		else
-		{
-			$buffer .= $line."\n"
-		}
-		
-	}
-}
-
-sub ParseCopy
-{
-	my ( $output, $expected_result ) = @_;
-	if ( ( $output =~ /(\d+) file\(s\) copied\./i ) and
-			( (defined ($expected_result) and $1==$expected_result) or (not defined ($expected_result) and $1>0) ) )		
-	{
-		OUT2XML::Print ( $output );	
-	}
-	else
-	{
-		OUT2XML::Error ( $output );	
-	}
-}
-
-
-1;
-#------------------------------------------------------------------------------
-# End of file.
-#------------------------------------------------------------------------------
--- a/buildframework/helium/tools/common/packages/ISIS/Registry.pm	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,261 +0,0 @@
-#
-# 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: 
-#
-#--------------------------------------------------------------------------------------------------
-# Name   : Registry.pm
-# Use    : Parse and allow easy data manipulation from configs.xml files.
-
-#
-# History :
-#  v1.1.1 (11/01/2006)
-#   - Added flag passing to Registry constructor. Allows to modify its general behaviour.
-#   - Added error_level flag to '__Data' package to raise warning/error if wrong key is fetched.
-#
-#  v1.1.0 (09/01/2006)
-#   - Added 'Inheritance' and 'TiedRegister' to the Registry package.
-#
-#  v1.0.0 (05/01/2006)
-#   - First version of the script.
-#--------------------------------------------------------------------------------------------------
-
-#--------------------------------------------------------------------------------------------------
-#
-#   Registry package.
-#
-#--------------------------------------------------------------------------------------------------
-package Registry;
-
-use strict;
-use warnings;
-use ISIS::XMLManip;
-
-use constant ISIS_VERSION     => '11/01/2006';
-use constant ISIS_LAST_UPDATE => '1.1.1';
-
-#--------------------------------------------------------------------------------------------------
-# Constructor.
-#--------------------------------------------------------------------------------------------------
-sub new
-{
-  my ($class, $file, $flags, %cfgData) = (shift, shift, shift || {});
-  my $cfgXmlRoot = XMLManip::ParseXMLFile($file, XMLManip::LOCK);
-  
-  foreach my $groupNode (@{$cfgXmlRoot->Childs()})
-  {
-    my %group;
-    foreach my $node (@{$groupNode->Childs()})
-    {
-      tie my %data, '__Data', \%group, $node, $flags;
-      $group{$node->Attribute('type')} = \%data;
-    }
-
-    $cfgData{$groupNode->Type()} = \%group;
-  }
-  
-  bless \%cfgData, $class;
-}
-
-sub Inheritance
-{
-  my ($self, $group, $type, @result) = (shift, shift, shift);
-
-  while($type)
-  {
-    push @result, $type;
-    
-    $type = $self->{$group} &&
-            $self->{$group}->{$type} &&
-            tied(%{$self->{$group}->{$type}})->{__inherit};
-  }
-  
-  return @result;
-}
-
-sub TiedRegister
-{
-  my ($self, $group, $type) = (shift, shift, shift);
-  
-  return $self->{$group} &&
-         $self->{$group}->{$type} &&
-         tied(%{$self->{$group}->{$type}})->{__registry};
-}
-
-1;
-
-#--------------------------------------------------------------------------------------------------
-#
-#   __Data package.
-#
-#--------------------------------------------------------------------------------------------------
-package __Data;
-
-sub TIEHASH
-{
-  my ($class, $group, $xmlNode, $flags) = (shift, shift, shift, shift);
-
-  my %registry;
-  foreach my $regkey (@{$xmlNode->Child('regkey')})
-  {
-    $registry{$regkey->Attribute('name')} = $regkey->Attribute('value');
-  }
-  
-  my $internalHash = { __type     => $xmlNode->Attribute('type'),
-                       __inherit  => $xmlNode->Attribute('inherit'),
-                       __group    => $group,
-                       __registry => \%registry,
-                     };
-  
-  foreach my $flag (sort keys %$flags) { $$internalHash{'__'.$flag} = $$flags{$flag}; }
-        
-  bless $internalHash, $class;
-}
-
-sub FETCH
-{
-  my ($self, $key) = (shift, shift);  
-  my $value = $self->{__registry}{$key} || $self->{__inherit} && $self->{__group}{$self->{__inherit}}{$key};
-  
-  if($self->{__error_level} > 0 and not defined $value)
-  { 
-    if($self->{__error_level} > 1) { die "Key \'$key\' does not exist for \'".$self->{__type}."\'"; }
-    else                           { warn "Key \'$key\' does not exist for \'".$self->{__type}."\'"; }
-  }
-  
-  return $value;
-}
-
-sub STORE
-{
-  my ($self, $key, $value) = (shift, shift, shift);
-  $self->{__registry}{$key} = $value;
-}
-
-sub DELETE
-{
-  my ($self, $key) = (shift, shift);
-  delete $self->{__registry}{$key};
-}
-
-sub CLEAR
-{
-  my $self = shift;
-  $self->{__registry} = (); 
-}
-
-sub EXISTS
-{
-  my ($self, $key) = (shift, shift);
-  return exists $self->{__registry}{$key} || $self->{__inherit} && exists $self->{__group}{$self->{__inherit}}{$key};
-}
-
-sub FIRSTKEY
-{
-  my $self = shift;
-  my %tmp  = keys %{$self->{__registry}};
-  return scalar each %{$self->{__registry}}; 
-}
-
-sub NEXTKEY
-{
-  my $self = shift;
-  return scalar each %{$self->{__registry}};
-}
-
-1;
-
-__END__
-
-#--------------------------------------------------------------------------------------------------
-# Documentation.
-#--------------------------------------------------------------------------------------------------
-
-=pod
-
-=head1 NAME
-
-Registry - XML configuration file reader with inheritance support.
-
-=head1 SYNOPSIS
-
-in the configs.xml file :
-
-  <configs>
-    <builds>
-      
-      <build type='wakeup'>
-        <registry name='year' value='2006' />
-        <registry name='week' value='31' />
-      </build>
-      
-      <build type='multibase' inherit='wakeup'>
-        <registry name='week' value='32' />
-      </build>
-      
-    </builds>
-  </configs>
-
-in the script file :
-
-  use ISIS::ConfigsData;
-
-  my $registry = new Registry('configs.xml');
-  
-  print $registry->{'builds'}->{'multibase'}->{'week'}; # prints '32' since defined in multibase.
-  print $registry->{'builds'}->{'multibase'}->{'year'}; # prints '2006' since multibase inherits wakeup.
-
-=head1 DESCRIPTION
-
-This module is used to parse XML configuration files following a certain formatting, and allows to
-reduce data redudancy by allowing different elements from the configuration file to inherit from
-one another.
-
-This allows for common data to be shared between several elements of a group as shown in the given
-example.
-
-=head2 Register( <FILE>, [FLAG1, [FLAG2, ...]] ) :
-
-Creates a new register from the specified file. The file must be in XML and follow the syntax described
-in the synopsis. The flags are passed as a hash table - key/value pairs - and must be one of the flags
-described in L<Registry Flags>.
-
-=head2 Inheritance( <GROUP>, <TYPE> ) :
-
-Returns the inherited type of the specified type in the specified group. This allows to access the
-'__inherit' key of the '__Data' package's internal hash table.
-
-=head2 TiedRegister( <GROUP>, <TYPE> ) :
-
-Returns a reference to the register tied to a specific type in a given group. This allows to directly
-access the '__Data' package's internal hash table.
-
-=head1 REGISTRY FLAGS
-
-The flags allow to modify the registry's behaviour and are directly passed to the registry constructor
-as a hash table - key/value pairs. Here are the following accepted flags :
-
-=head2 error_level :
-
-Sets the registry's error level. If a key fetched does not exist, a warning is issued if the error_level
-is set to 1, and an error is raised followed by a die if the error_level is set to 2.
-
-=head1 AUTHOR
-
-
-
-=cut
-
-#--------------------------------------------------------------------------------------------------
-# End of file.
-#--------------------------------------------------------------------------------------------------
--- a/buildframework/helium/tools/common/packages/ISIS/ScanLog.pm	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,364 +0,0 @@
-#
-# 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: 
-#
-#--------------------------------------------------------------------------------------------------
-# Name   : ScanLog.pm
-# Path   : N:\isis_scripts\packages\ISIS\
-# Use    : .
-
-#
-# Synergy :
-# Perl %name: ScanLog.pm % (%full_filespec: ScanLog.pm-2.1.5:perl:fa1s60p1#1 %)
-# %derived_by: oligrant %
-# %date_created: Wed Apr  5 13:29:34 2006 %
-#
-# Version History :
-#
-# v1.0.0 (30/01/2006) :
-#  - First version of the module.
-#--------------------------------------------------------------------------------------------------
-
-#--------------------------------------------------------------------------------------------------
-#
-#   ScanLog package.
-#
-#--------------------------------------------------------------------------------------------------
-
-package ScanLog;
-
-use strict;
-use warnings;
-use ISIS::Assertion _DEBUG => 1;
-use ISIS::XMLManip;
-use ISIS::HttpServer;
-
-use constant ISIS_VERSION     => '1.0.0';
-use constant ISIS_LAST_UPDATE => '30/01/2006';
-
-my @__error_patterns;
-my @__warning_patterns;
-my @__remark_patterns;
-my @__ignore_patterns;
-
-BEGIN
-{
-  @__error_patterns = (
-    'FLEXlm error:',
-    '(?:ABLD|BLDMAKE) ERROR:',
-    'FATAL ERROR\(S\):',
-    'fatal error U1077',
-    'warning U4010',
-    'make(?:\[\d+\])?: \*\*\* ',
-    'make(?:\[\d+\])?: .* not remade ',
-    '\".*\", line \d+: Error: +.\d+.*?:.*$',
-    'error: Internal fault:.*$',
-    'Exception: STATUS_ACCESS_VIOLATION',
-    'target .* given more than once in the same rule',
-    '^ERROR: ',
-    '^ERROR\t',
-    '^MISSING:\s+\\\\',
-  );
-  
-  @__warning_patterns = (
-    '(?i:Warning: Unmatched)',
-    '^BLDMAKE WARNING:',
-    'WARNING\(S\)',
-    '^WARNING: ',
-    '\(\d+\) : warning C',
-    'LINK : warning',
-    ':\d+: warning:',
-    '\".*\", line \d+: Warning: +.\d+.*?:.*$',
-    'Usage Warning:',
-    'mwld.exe:',
-    '^Command line warning',
-    '^MAKEDEF WARNING:',
-    'ERROR: bad relocation:',
-    '^\d+ warning/',
-    '^EventType:\s+Error\s+Source:\s+SweepNT',
-    '^WARN\t',
-  );
-  
-  @__remark_patterns = (
-    '\".*\", line \d+: Warning: +.\d+.*?:',
-    'Command line warning D4025 : ',
-    '^REMARK: ',
-    '^EventType:\s+Error\s+Source:\s+GNU\s+Make',
-    ':\d+: warning: cannot find matching deallocation function',
-  );
-  
-  @__ignore_patterns = (
-    '\".*\", line \d+: Warning: +#68-D:',
-    '\".*\", line \d+: Warning: +#108-D:',
-    '\".*\", line \d+: Warning: +#128-D:',
-    '\".*\", line \d+: Warning: +#191-D:',
-    '\".*\", line \d+: Warning: +A1608W:',
-    '\".*\", line \d+: Warning: +#1446-D:',
-  );
-}
-
-#--------------------------------------------------------------------------------------------------
-# Contructor - takes (parent xml node, annotation file, current step).
-#--------------------------------------------------------------------------------------------------
-sub new
-{
-  bless { __current_step  => pop,
-          __parent_node   => pop,
-          __anno_file     => pop,
-          __xml_output    => undef,
-          __discards      => '',
-          __message_types => { '1_remark'  => \@__remark_patterns,
-                               '2_ignore'  => \@__ignore_patterns,
-                               '3_warning' => \@__warning_patterns,
-                               '4_error'   => \@__error_patterns,
-                             },
-        }, shift;
-}
-
-#--------------------------------------------------------------------------------------------------
-# Generate.
-#--------------------------------------------------------------------------------------------------
-sub Generate
-{
-  my ($self, $interface) = (shift, HttpServer::GetAddress().'/isis_interface');
-
-  $self->{__xml_file}   = $self->{__anno_file};
-  $self->{__xml_file}  .= '.scanlog.xml' unless($self->{__xml_file}  =~ s/\.xml$/\.scanlog\.xml/);
-  $self->{__anno_data}  = XMLManip::ParseXMLFile($self->{__anno_file});
-  
-  $self->{__xml_data}   = new XMLManip::Node('__scanlog', { date => scalar(localtime),
-                                                            interface => $interface });
-
-  $self->{__current_node} = new XMLManip::Node('__maincontent', { title => 'Build details',
-                                                                  step => $self->{__current_step} });
-  
-  $self->{__xml_data}->PushChild(new XMLManip::Node('__header', { title => 'Electric Cloud ScanLog',
-  	                                                              subtitle => 'Started on '.(localtime) } ));
-  
-  $self->{__xml_data}->PushChild($self->{__current_node});
-  
-  $self->{__xml_data}->PushChild(new XMLManip::Node('__footer', { title => 'Generated using ScanLog.pm v'.(ISIS_VERSION),
-  	                                                              subtitle => 'Finished on '.(localtime) } ));
-  
-  $self->__PrintProperties();
-  $self->__ParseChilds($self->{__anno_data});
-  
-  foreach my $child (@{$self->{__xml_data}->Child('__maincontent', 0)->Child('__event')})
-  { $self->__DiscardEmptyNodes($self->{__xml_data}->Child('__maincontent', 0), $child); }
-
-  XMLManip::WriteXMLFile($self->{__xml_data}, $self->{__xml_file});
-}
-
-#--------------------------------------------------------------------------------------------------
-# GenerateDataStructure.
-#--------------------------------------------------------------------------------------------------
-sub GenerateDataStructure
-{
-  my ($self, $interface) = (shift, HttpServer::GetAddress().'/isis_interface');
-  
-  $self->{__anno_data} = XMLManip::ParseXMLFile($self->{__anno_file});
-  
-  $self->{__xml_data} = new XMLManip::Node('__event', { step => $self->{__current_step} });
-  
-  $self->{__current_node} = $self->{__xml_data};
-  $self->__ParseChilds($self->{__anno_data});
-  
-  foreach my $child (@{$self->{__xml_data}->Child('__event', 0)->Child('__event')})
-  { $self->__DiscardEmptyNodes($self->{__xml_data}->Child('__event', 0), $child); }
-  
-  return $self->{__xml_data};
-}
-
-#--------------------------------------------------------------------------------------------------
-# Message types to discard - Avoid big logs.
-#--------------------------------------------------------------------------------------------------
-sub DiscardMessageTypes
-{
-  my ($self, $types) = (shift, join('|', @_));
-  $self->{__discards} = $types;
-}
-
-#--------------------------------------------------------------------------------------------------
-# Main parsing function.
-#--------------------------------------------------------------------------------------------------
-sub __ParseChilds
-{
-  my ($self, $xmlNode) = (shift, shift);
-  
-  foreach my $child (@{$xmlNode->Childs()})
-  { 
-    no strict 'refs';
-    my $func = $child->Type();
-    $self->$func($child);
-  }
-}
-
-#--------------------------------------------------------------------------------------------------
-# DiscardEmptyNodes.
-#--------------------------------------------------------------------------------------------------
-sub __DiscardEmptyNodes
-{
-  my ($self, $parent, $node, $removed) = (shift, shift, shift, 1);
-
-  do
-  {
-    $removed = 0;
-    foreach my $child (@{$node->Child('__event')})
-    { $removed += $self->__DiscardEmptyNodes($node, $child); }
-  }
-  while($removed != 0);
-  
-  if($node->NbChilds() == 0)
-  {
-    my $tmp = $parent->NbChilds();
-    $parent->RemoveChild($node);
-    __ASSERT($parent->NbChilds() < $tmp);
-    return 1;
-  }
-  
-  return 0;
-}
-
-#--------------------------------------------------------------------------------------------------
-# Print build properties.
-#--------------------------------------------------------------------------------------------------
-sub __PrintProperties
-{
-  my ($self) = (shift);
-  
-  my $properties = $self->{__anno_data}->Child('properties')->[0];
-  return unless($properties);
-  
-  my $summaryNode = new XMLManip::Node('__summary');
-	$summaryNode->Comment(" +++ SCANLOG SUMMARY +++ ");
-	$summaryNode->Attribute('title', "Build ".$self->{__anno_data}->Attribute('id').' '.
-	                                 "started on ".$self->{__anno_data}->Attribute('start'));
-  
-  $summaryNode->PushChild(new XMLManip::Node('__elmt', { tag => 'Cluster Manager',
-                                                         val => $self->{__anno_data}->Attribute('cm') }));
-  
-  foreach my $property (@{$properties->Child('property')})
-  {
-    my $tag = $property->Attribute('name');
-    my $val = $property->Content();
-  
-    $tag =~ s/([A-Z][a-z]+)/$1 /g; $tag =~ s/ $//;
-    $val =~ s/\n$//g; $val =~ s/\n/ /g;
-  
-  	my $elementNode = new XMLManip::Node('__elmt', { tag => $tag, val => $val });
-    $summaryNode->PushChild($elementNode);
-  }
-  
-  $self->{__xml_data}->PushChild($summaryNode);
-}
-
-#--------------------------------------------------------------------------------------------------
-# make nodes.
-#--------------------------------------------------------------------------------------------------
-sub make
-{
-  my ($self, $xmlNode) = (shift, shift);
-  ++$self->{__current_step};
-  
-  my $makeNode = new XMLManip::Node('__event');
-  my ($title)  = ($xmlNode->Attribute('cmd') =~ /-f (.*?) /);
-  $makeNode->Attribute('title', $title || 'unknown');
-  $makeNode->Attribute('time', $self->__make_starttime($makeNode));
-  $makeNode->Attribute('step', $self->{__current_step});
-  
-  push @{$self->{__parent_nodes}}, $self->{__current_node};
-  $self->{__current_node}->PushChild($makeNode);
-  $self->{__current_node} = $makeNode;
-  
-  $self->__ParseChilds($xmlNode);
-  
-  $self->{__current_node} = pop @{$self->{__parent_nodes}};
-}
-
-sub __make_starttime
-{
-  my ($self, $makeNode) = (shift, shift);
-  
-  my $jobNode  = $makeNode->Child('job')->[0] or return 'unknown';
-  my $timeNode = $jobNode->Child('timing')->[0] or return 'unknown';
-  return $timeNode->Attribute('invoked') || 'unknown';
-}
-
-sub job
-{
-	my ($self, $jobNode) = (shift, shift);
-
-	foreach my $cmdNode (@{$jobNode->Child('command')})
-	{
-		foreach my $outputNode (@{$cmdNode->Child('output')})
-		{
-			next if(($outputNode->Attribute('src') || 'undef') !~ /^prog$/ or
-			        not defined $outputNode->Content());
-			
-			++$self->{__current_step};
-			my $timeNode = $jobNode->Child('timing')->[0];
-			my $invoked = $timeNode && $timeNode->Attribute('invoked') || 'unknown';
-			my $errorNode = $self->__parse_message($outputNode, $invoked);
-			
-			$self->{__current_node}->PushChild($errorNode) if($errorNode);
-		}
-	}
-}
-
-sub __parse_message
-{
-  my ($self, $node, $invoked) = (shift, shift, shift);
-  my $discards = $self->{__discards};
-  
-  foreach my $line (split('\n', $node->Content()))
-  {
-	  foreach my $type (sort keys %{$self->{__message_types}})
-	  {
-	    my ($__type) = ($type =~ /\d+_(.+)$/);
-	    next if($__type =~ /$discards/i);
-
-	    if($self->__match_patterns($line, $self->{__message_types}->{$type}))
-	    {
-	    	my $msg_node = new XMLManip::Node($__type);
-	      $msg_node->Attribute('step', $self->{__current_step});
-	      $msg_node->Attribute('time', $invoked);
-	      $msg_node->Content( $line );
-	      return $msg_node;
-	    }
-	  }
-  }
-  return undef;
-}
-
-sub __match_patterns
-{
-  my ($self, $text, $patterns) = (shift, shift, shift);
-
-  foreach my $pattern (@$patterns)
-  { return 1 if($text =~ /$pattern/); }
-  
-  return 0;
-}
-
-sub AUTOLOAD
-{ # Dummy debug method.
-  my ($self, $method, $node) = (shift, our $AUTOLOAD, shift || '');
-  warn " called $method : $node\n";
-}
-
-1;
-
-#--------------------------------------------------------------------------------------------------
-# End of file.
-#--------------------------------------------------------------------------------------------------
--- a/buildframework/helium/tools/common/packages/ISIS/ScanLogTBS.pm	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,284 +0,0 @@
-#
-# 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: 
-#
-#--------------------------------------------------------------------------------------------------
-# Name   : ScanLogTBS.pm
-# Path   : N:\isis_scripts\packages\ISIS\
-# Use    : .
-
-#
-# Synergy :
-# Perl %name: ScanLogTBS.pm % (%full_filespec: ScanLogTBS.pm-2:perl:fa1s60p1#1 %)
-# %derived_by: wbernard %
-# %date_created: Tue May  9 08:29:21 2006 %
-#
-# Version History :
-#
-# v1.0.1 (09/05/2006) :
-#  - Fix for compatibility with pseudo EBS logs of EC builds.
-#
-# v1.0.0 (30/01/2006) :
-#  - First version of the module.
-#	 - Generate directly XML nodes compatible with the logger
-#--------------------------------------------------------------------------------------------------
-
-#--------------------------------------------------------------------------------------------------
-#
-#   ScanLog package.
-#
-#--------------------------------------------------------------------------------------------------
-
-package ScanLogTBS;
-
-use strict;
-use warnings;
-use ISIS::Assertion _DEBUG => 1;
-use ISIS::XMLManip;
-use ISIS::HttpServer;
-
-use constant ISIS_VERSION     => '1.0.1';
-use constant ISIS_LAST_UPDATE => '09/05/2006';
-
-my @__error_patterns;
-my @__warning_patterns;
-my @__remark_patterns;
-my @__ignore_patterns;
-
-BEGIN
-{
-  @__error_patterns = (
-    'FLEXlm error:',
-    '(?:ABLD|BLDMAKE) ERROR:',
-    'FATAL ERROR\(S\):',
-    'fatal error U1077',
-    'warning U4010',
-    'make(?:\[\d+\])?: \*\*\* ',
-    'make(?:\[\d+\])?: .* not remade ',
-    '\".*\", line \d+: Error: +.\d+.*?:.*$',
-    'error: Internal fault:.*$',
-    'Exception: STATUS_ACCESS_VIOLATION',
-    'target .* given more than once in the same rule',
-    '^ERROR: ',
-    '^ERROR\t',
-    '^MISSING:\s+\\\\',
-  );
-  
-  @__warning_patterns = (
-    '(?i:Warning: Unmatched)',
-    '^BLDMAKE WARNING:',
-    'WARNING\(S\)',
-    '^WARNING: ',
-    '\(\d+\) : warning C',
-    'LINK : warning',
-    ':\d+: warning:',
-    '\".*\", line \d+: Warning: +.\d+.*?:.*$',
-    'Usage Warning:',
-    'mwld.exe:',
-    '^Command line warning',
-    '^MAKEDEF WARNING:',
-    'ERROR: bad relocation:',
-    '^\d+ warning/',
-    '^EventType:\s+Error\s+Source:\s+SweepNT',
-    '^WARN\t',
-  );
-  
-  @__remark_patterns = (
-    '\".*\", line \d+: Warning: +.\d+.*?:',
-    'Command line warning D4025 : ',
-    '^REMARK: ',
-    '^EventType:\s+Error\s+Source:\s+GNU\s+Make',
-    ':\d+: warning: cannot find matching deallocation function',
-  );
-  
-  @__ignore_patterns = (
-    '\".*\", line \d+: Warning: +#68-D:',
-    '\".*\", line \d+: Warning: +#108-D:',
-    '\".*\", line \d+: Warning: +#128-D:',
-    '\".*\", line \d+: Warning: +#191-D:',
-    '\".*\", line \d+: Warning: +A1608W:',
-    '\".*\", line \d+: Warning: +#1446-D:',
-  );
-}
-
-#--------------------------------------------------------------------------------------------------
-# Contructor - takes (parent xml node, annotation file, current step).
-#
-#	$logname path to the log
-# $fast option (on|off) (optional parameter)
-#--------------------------------------------------------------------------------------------------
-sub new
-{
-	my ($class, $logname, $fast) = (shift, shift, shift||'off');
-	my $self = {__logname  => $logname,
-							__currentcomponent => undef,
-							__currentcomponent_command => undef,
-							__fast => $fast,
-          		__message_types => { '1_remark'  => \@__remark_patterns,
-                               '2_ignore'  => \@__ignore_patterns,
-                               '3_warning' => \@__warning_patterns,
-                               '4_error'   => \@__error_patterns,
-                             },
-						};
-  bless $self, $class;
-}
-
-#--------------------------------------------------------------------------------------------------
-# Generate.
-#--------------------------------------------------------------------------------------------------
-sub GenerateDataStructure
-{
-  my $self = shift;
-  
-	my $interface = HttpServer::GetAddress().'/isis_interface';
-	
-	$self->{ __xml_data } = new XMLManip::Node('__event', { title => "ScanLog" });
-	
-	unless (open (LOG, $self->{__logname}))	{OUT2XML::Error("Cannot open ".$self->{__logname}); return 0;};
-	my $line;
-  while ($line=<LOG>)
-  {
-
-    # Hostname is
-    # capture the hostname if available
-    if ($line =~ /^Hostname is (.*)$/)
-    {
-      $self->{ _hostname } = "$1";
-    }
-
-		
-		#++ Finished at Wed Feb  8 19:55:33 2006
-		if ( $line =~ /^\+\+\s+Finished\s+at(.*)/ )
-		{
-			$self->{ __currentcomponent } = undef;
-			$self->{ __currentcomponent_command } = undef;
-			next;
-		}
-		
-		
-		#++ Started at Wed Feb  8 19:55:32 2006
-		#+++ HiRes Start 1139428532.36375
-		if ( $line =~ /^\+\+\+\s+HiRes\s+Start\s+(\d+)/ and $self->{ __currentcomponent } )
-		{
-			$self->{ __currentcomponent_starttime }= $1;
-		}
-		
-		#+++ HiRes End 1139428533.39499
-		if ( $line =~ /^\+\+\+\s+HiRes\s+End\s+(\d+)/ and $self->{ __currentcomponent } )
-		{
-			$self->{ __currentcomponent_endtime }= $1;
-		}
-		
-		#-- bldmake bldfiles -k
-		if ( $line =~ /^\-\-\s+(.*)/ and $self->{ __currentcomponent } )
-		{
-				if ($self->{__fast} eq "on")
-				{
-					my $p = new XMLManip::Node('__print');
-					$p->Content("<b>$1</b><br/>");
-					$self->{ __currentcomponent }->PushChild( $p );
-					$self->{ __currentcomponent_command } = $self->{ __currentcomponent };
-					
-				}
-				else
-				{
-					$self->{ __currentcomponent_command } = new XMLManip::Node('__event',{ title => "$1"});
-					$self->{ __currentcomponent }->PushChild( $self->{ __currentcomponent_command } );
-				}
-				next;
-		}
-
-		#--- Client8 Executed ID 2
-		if ( $line =~ /^\-\-\-\s+(\w+)\s+Executed\s+ID\s+(\d+)/ and $self->{ __currentcomponent_command } )
-		{
-				$self->{ __currentcomponent_command }->Attribute( 'step', "$2" );
-				next;
-		}
-
-		#Chdir \s60\Cdl\CdlCompiler\group
-		if ( $line =~ /^Chdir\s+(.*)/ and $self->{ __currentcomponent } )
-		{
-				#$self->{ __currentcomponent_command }->( 'step', "$2" );
-				next;
-		}
-		
-		
-		# === Stage=2 == CdlCompiler
-		if ( $line =~ /^===\s+Stage=(\d+)\s+==\s+(.*)/  )
-		{
-			unless ( $self->{ __currentcomponent } )
-			{
-				my $name = "$2";
-				if ( $self->{ _components }{ "$name" } )
-				{
-					$self->{ __currentcomponent } = $self->{ _components }{ "$name" };
-				}
-				else
-				{
-					$self->{ __currentcomponent } = new XMLManip::Node('__event',{ title => "$name"});
-					$self->{ _components }{ "$name" } = $self->{ __currentcomponent };
-					$self->{ __xml_data }->PushChild( $self->{ __currentcomponent } );
-				}
-			}
-			next;			
-		}		
-
-		if ( $self->{ __currentcomponent_command } and $self->{ __currentcomponent } )
-		{		
-			my $n = $self->__parse_message( $line );
-		}
-	}
-	close (LOG);
-		
-	return $self->{ __xml_data };
-}
-
-
-sub __parse_message
-{
-  my ($self, $line) = (shift, shift);
-  
-
-  foreach my $type (sort keys %{$self->{__message_types}})
-  {
-    my ($__type) = ($type =~ /\d+_(.*)$/);
-    if($self->__match_patterns($line, $self->{__message_types}->{$type}))
-    {
-		  my $msg_node = new XMLManip::Node( "$__type" );
-      $msg_node->Attribute('time', $self->{ __currentcomponent_starttime });
-      $msg_node->Content( $line );
-      $self->{__currentcomponent_command}->PushChild( $msg_node );
-      return $msg_node;
-    }
-  }
-  
-  return undef;
-}
-
-sub __match_patterns
-{
-  my ($self, $line, $patterns) = (shift, shift, shift);
-
-  foreach my $pattern (@$patterns)
-  { return 1 if($line =~ /$pattern/); }
-  
-  return 0;
-}
-
-
-1;
-
-#--------------------------------------------------------------------------------------------------
-# End of file.
-#--------------------------------------------------------------------------------------------------
--- a/buildframework/helium/tools/common/packages/ISIS/XmlManip.pm	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,852 +0,0 @@
-#
-# 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: 
-#
-#--------------------------------------------------------------------------------------------------
-# Name    : XMLManip.pm
-# Use     : Parse and write XML files.
-
-#
-# Synergy :
-# Perl %name    : % (%full_filespec :  %)
-# %derived_by   : %
-# %date_created : %
-#
-# History :
-#  v1.6.3 (10/07/2006)
-#   - Fixed where closing tags were not correctly aligned with the opening tag.
-#
-#  v1.6.2 (21/06/2006)
-#   - Modified 'ChildRegex' subroutine to allow specification of the child to return. Still returns an
-#     array if no index is specified. This is so 'Child' and 'ChildRegex' have the same functionning.
-#   - Fixed '__String2XML' where specifying an index equal to 0 returned an empty string.
-#
-#  v1.6.1 (29/03/2006)
-#   - Fix issue with \n! (Finally...)
-#
-#  v1.6.0 (15/03/2006)
-#   - Added subroutine to check for attribute existance to the XMLManip::Node package.
-#
-#  v1.5.3 (08/02/2006)
-#   - Modified 'XMLManip::Node' constructor to be copy constructor if 'XMLManip::Node' instance is
-#     passed as argument.
-#   - Fixed subroutine 'Child' of XMLManip::Node package where specifying an index equal to
-#     0 returned all childs.
-#
-#  v1.5.2 (01/02/2006)
-#   - Modified 'Child' subroutine to allow specification of the child to return. Still returns an
-#     array if no index is specified.
-#   - Removed 'Exporter' code since it was useless.
-#
-#  v1.5.1 (26/01/2006)
-#   - Removed chomping of content in '__UpdateContents' subroutine.
-#   - Added CDATA wrappers around content.
-#
-#  v1.5.0 (24/01/2006)
-#   - Modified 'Child' subroutine of the XMLManip::Node package to check complete equality
-#     between passed type and child node type.
-#   - Added 'ChildRegex' subroutine of the XMLManip::Node package to select child nodes according
-#     to their type based on a regular expression.
-#
-#  v1.4.0 (06/01/2006)
-#   - Added 'NbChilds' and 'NbChild' subroutines to the XMLManip::Node package.
-#   - Added two locking constants 'LOCK' and 'NO_LOCK' to packages 'XMLManip' and 'XMLManip::Node'
-#   - Minor modifications to improve code.
-#
-#  v1.3.0 (04/01/2006)
-#   - Added 'RemoveNode' subroutine to the XMLManip::Node package.
-#   - Added '==' overload to XMLManip::Node package.
-#   - Added '__UpdateContents' to remove XML formatting spaces at start of each content line.
-#
-#  v1.2.0 (21/12/2005)
-#   - Updated XMLManip::Node subroutines 'PushChild' and 'Attribute' to check if node is locked.
-#   - Added 'LockAll' and 'UnlockAll' to the XMLManip::Node package.
-#   - Updated 'ParseXMLFile' to take an optional extra argument corresponding to the lock state
-#     of returned node tree.
-#
-#  v1.1.0 (19/12/2005)
-#   - Added 'ChildTypes' subroutine to the XMLManip::Node package.
-#   - ParseXMLFile now locks all nodes in the returned data structure.
-#
-#  v1.0.0 (08/12/2005)
-#   - First version of the module.
-#--------------------------------------------------------------------------------------------------
-
-package XMLManip;
-
-use strict;
-use warnings;
-use XML::Parser;
-use HTML::Entities;
-use ISIS::Assertion _DEBUG => 1;
-
-use constant ISIS_VERSION     => '1.6.3';
-use constant ISIS_LAST_UPDATE => '10/07/2006';
-
-use constant LOCK             => 1;
-use constant NO_LOCK          => 0;
-
-my %ModuleData;
-
-#--------------------------------------------------------------------------------------------------
-#
-#   XMLManip::ParseXMLFile
-#
-#--------------------------------------------------------------------------------------------------
-sub ParseXMLFile
-{
-  my ($file, $lock) = (shift, shift || NO_LOCK);
-  my $parser = new XML::Parser(Style => 'Subs',
-                               Pkg => 'SubHandlers',
-                               Handlers => { Char => \&__Content },
-                               ErrorContext => 2);
-  
-  $ModuleData{rootNode}    = new XMLManip::Node('root');
-  $ModuleData{currentNode} = $ModuleData{rootNode};
-  $ModuleData{lock}        = $lock;
-
-  eval { $parser->parsefile($file); };
-  
-  if($@)
-  {
-    warn "XML Parsing Error : $@\nTree might not be complete\n";
-  }
-  
-  __UpdateContents($ModuleData{currentNode}, '');
-  $ModuleData{currentNode}->LockAll() if($ModuleData{lock} == LOCK);
-  return $ModuleData{rootNode}->Childs()->[0];
-}
-
-
-sub ParseXMLFileHandle
-{
-  my ($file, $lock) = (shift, shift || NO_LOCK);
-  my $parser = new XML::Parser(Style => 'Subs',
-                               Pkg => 'SubHandlers',
-                               Handlers => { Char => \&__Content },
-                               ErrorContext => 2);
-  
-  $ModuleData{rootNode}    = new XMLManip::Node('root');
-  $ModuleData{currentNode} = $ModuleData{rootNode};
-  $ModuleData{lock}        = $lock;
-
-  eval { $parser->parse($file); };
-  
-  if($@)
-  {
-    warn "XML Parsing Error : $@\nTree might not be complete\n";
-  }
-  
-  __UpdateContents($ModuleData{currentNode}, '');
-  $ModuleData{currentNode}->LockAll() if($ModuleData{lock} == LOCK);
-  return $ModuleData{rootNode}->Childs()->[0];
-}
-
-sub __Content
-{
-	my ($self, $string) = (shift, shift);  
-	$ModuleData{currentNode}{'XMLManip::Node::Content'} .= $string;
-}
-
-sub __UpdateContents
-{
-  my ($node, $indent) = (shift, shift);
-  
-  if(defined $node->Content())
-  {
-    my $content = $node->Content();
-    $content =~ s/^$indent//gm;
-    $node->Content($content);
-  }
-  
-  foreach my $child (@{$node->Childs()}){ __UpdateContents($child, $indent.'  '); }
-}
-
-#--------------------------------------------------------------------------------------------------
-#
-#   XMLManip::WriteXMLFile
-#
-#--------------------------------------------------------------------------------------------------
-sub WriteXMLFile
-{
-  my ($rootNode, $filename, $dst) = (shift, shift, undef);
-  
-  open($dst, '>'.$filename) or die "Unable to create file \'$filename\' : $!\n";
-  print $dst "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n";
-  WriteToOStream($dst, $rootNode);
-  close($dst);
-}
-
-sub WriteToOStream
-{
-	my ($dst, $rootNode) = (shift, shift);
-	
-	$ModuleData{dst}    = $dst;
-  $ModuleData{indent} = '';
-
-  __WriteNode($rootNode);
-}
-
-sub __WriteNode
-{
-  my ($node, $dst, $indent, $closed) = (shift, $ModuleData{dst}, $ModuleData{indent}, 0);
-  
-  if(defined $node->Comment() and my @lines = map{ __String2XML($_)."\n" } split("\n", $node->Comment()))
-  {
-  	$lines[$#lines] =~ s/\n$//;
-  	print $dst $indent, "<!-- ";
-  	if(scalar @lines > 1)
-  	{
-  		@lines = map { $indent.'  '.$_ } @lines;
-  		print $dst "\n", @lines, "\n", $indent;
-  	}
-  	else
-  	{
-  		print $dst @lines;
-  	}
-  	print $dst " -->\n";
- 	}
-  
-  print $dst $indent, '<'.$node->Type();
-
-  foreach (sort keys %{$node->Attributes()})
-  {
-    print $dst ' ', $_, "=\"", __String2XML($node->Attribute($_)), "\"";
-  }
-  
-  if( defined $node->Content() )  
-  {
-  	my @lines =  __String2XML($node->Content());
-  	unless( $closed )
-  	{
-  		print $dst ">" ;
-  		$closed = 1;
-  	}
-  	
-  	if(scalar @lines > 1)
-  	{
-  		@lines = map { $indent.'  '.$_ } @lines;
-  		print $dst @lines, "\n", $indent;
-  	}
-  	else
-  	{
-  		print $dst @lines;
-  	}  	
-  }
-  
-  if(scalar @{$node->Childs()})
-  {
-  	unless( $closed )
-  	{
-  		print $dst ">\n" ;
-  		$closed = 1;
-  	}
-    foreach (@{$node->Childs()})
-    {
-      $ModuleData{indent} = $indent.'  ';
-      __WriteNode($_);
-      $ModuleData{indent} = $indent;
-    }
-  }
- 	if ($closed)
- 	{
- 		print $dst $indent, '</', $node->Type(), ">\n" ;
-  }
-  else
-  {
-  	print $dst " />\n";
-  }
-}
-
-sub __String2XML
-{
-  my $str = shift;
-  return '' unless(defined $str);
-  $str =~ s/\e/e/g;
-  $str = HTML::Entities::encode_entities($str);
-  # Part1
-	$str =~ s/&nbsp;/\&\#160;/g;
-	$str =~ s/&iexcl;/\&\#161;/g;
-	$str =~ s/&curren;/\&\#164;/g;
-	$str =~ s/&cent;/\&\#162;/g;
-	$str =~ s/&pound;/\&\#163;/g;
-	$str =~ s/&yen;/\&\#165;/g;
-	$str =~ s/&brvbar;/\&\#166;/g;
-	$str =~ s/&sect;/\&\#167;/g;
-	$str =~ s/&uml;/\&\#168;/g;
-	$str =~ s/&copy;/\&\#169;/g;
-	$str =~ s/&ordf;/\&\#170;/g;
-	$str =~ s/&laquo;/\&\#171;/g;
-	$str =~ s/&not;/\&\#172;/g;
-	$str =~ s/&shy;/\&\#173;/g;
-	$str =~ s/&reg;/\&\#174;/g;
-	$str =~ s/&trade;/\&\#8482;/g;
-	$str =~ s/&macr;/\&\#175;/g;
-	$str =~ s/&deg;/\&\#176;/g;
-	$str =~ s/&plusmn;/\&\#177;/g;
-	$str =~ s/&sup2;/\&\#178;/g;
-	$str =~ s/&sup3;/\&\#179;/g;
-	$str =~ s/&acute;/\&\#180;/g;
-	$str =~ s/&micro;/\&\#181;/g;
-	$str =~ s/&para;/\&\#182;/g;
-	$str =~ s/&middot;/\&\#183;/g;
-	$str =~ s/&cedil;/\&\#184;/g;
-	$str =~ s/&sup1;/\&\#185;/g;
-	$str =~ s/&ordm;/\&\#186;/g;
-	$str =~ s/&raquo;/\&\#187;/g;
-	$str =~ s/&frac14;/\&\#188;/g;
-	$str =~ s/&frac12;/\&\#189;/g;
-	$str =~ s/&frac34;/\&\#190;/g;
-	$str =~ s/&iquest;/\&\#191;/g;
-	$str =~ s/&times;/\&\#215;/g;
-	$str =~ s/&divide;/\&\#247;/g;
-  # Part 2
-	$str =~ s/&Agrave;/\&\#192;/g;
-	$str =~ s/&Aacute;/\&\#193;/g;
-	$str =~ s/&Acirc;/\&\#194;/g;
-	$str =~ s/&Atilde;/\&\#195;/g;
-	$str =~ s/&Auml;/\&\#196;/g;
-	$str =~ s/&Aring;/\&\#197;/g;
-	$str =~ s/&AElig;/\&\#198;/g;
-	$str =~ s/&Ccedil;/\&\#199;/g;
-	$str =~ s/&Egrave;/\&\#200;/g;
-	$str =~ s/&Eacute;/\&\#201;/g;
-	$str =~ s/&Ecirc;/\&\#202;/g;
-	$str =~ s/&Euml;/\&\#203;/g;
-	$str =~ s/&Igrave;/\&\#204;/g;
-	$str =~ s/&Iacute;/\&\#205;/g;
-	$str =~ s/&Icirc;/\&\#206;/g;
-	$str =~ s/&Iuml;/\&\#207;/g;
-	$str =~ s/&ETH;/\&\#208;/g;
-	$str =~ s/&Ntilde;/\&\#209;/g;
-	$str =~ s/&Ograve;/\&\#210;/g;
-	$str =~ s/&Oacute;/\&\#211;/g;
-	$str =~ s/&Ocirc;/\&\#212;/g;
-	$str =~ s/&Otilde;/\&\#213;/g;
-	$str =~ s/&Ouml;/\&\#214;/g;
-	$str =~ s/&Oslash;/\&\#216;/g;
-	$str =~ s/&Ugrave;/\&\#217;/g;
-	$str =~ s/&Uacute;/\&\#218;/g;
-	$str =~ s/&Ucirc;/\&\#219;/g;
-	$str =~ s/&Uuml;/\&\#220;/g;
-	$str =~ s/&Yacute;/\&\#221;/g;
-	$str =~ s/&THORN;/\&\#222;/g;
-	$str =~ s/&szlig;/\&\#223;/g;
-	$str =~ s/&agrave;/\&\#224;/g;
-	$str =~ s/&aacute;/\&\#225;/g;
-	$str =~ s/&acirc;/\&\#226;/g;
-	$str =~ s/&atilde;/\&\#227;/g;
-	$str =~ s/&auml;/\&\#228;/g;
-	$str =~ s/&aring;/\&\#229;/g;
-	$str =~ s/&aelig;/\&\#230;/g;
-	$str =~ s/&ccedil;/\&\#231;/g;
-	$str =~ s/&egrave;/\&\#232;/g;
-	$str =~ s/&eacute;/\&\#233;/g;
-	$str =~ s/&ecirc;/\&\#234;/g;
-	$str =~ s/&euml;/\&\#235;/g;
-	$str =~ s/&igrave;/\&\#236;/g;
-	$str =~ s/&iacute;/\&\#237;/g;
-	$str =~ s/&icirc;/\&\#238;/g;
-	$str =~ s/&iuml;/\&\#239;/g;
-	$str =~ s/&eth;/\&\#240;/g;
-	$str =~ s/&ntilde;/\&\#241;/g;
-	$str =~ s/&ograve;/\&\#242;/g;
-	$str =~ s/&oacute;/\&\#243;/g;
-	$str =~ s/&ocirc;/\&\#244;/g;
-	$str =~ s/&otilde;/\&\#245;/g;
-	$str =~ s/&ouml;/\&\#246;/g;
-	$str =~ s/&oslash;/\&\#248;/g;
-	$str =~ s/&ugrave;/\&\#249;/g;
-	$str =~ s/&uacute;/\&\#250;/g;
-	$str =~ s/&ucirc;/\&\#251;/g;
-	$str =~ s/&uuml;/\&\#252;/g;
-	$str =~ s/&yacute;/\&\#253;/g;
-	$str =~ s/&thorn;/\&\#254;/g;
-	$str =~ s/&yuml;/\&\#255;/g;
-
-  return $str;
-}
-
-#--------------------------------------------------------------------------------------------------
-#
-#   XMLManip::PrintToShell
-#
-#--------------------------------------------------------------------------------------------------
-sub PrintToShell
-{
-  my ($node, $indent) = (shift, shift || '');
-  
-  __ASSERT($node);
-  
-  print $indent, $node, "\n";
-  
-  foreach my $child(@{$node->Childs()})
-  { PrintToShell($child, $indent.'  '); } 
-}
-
-1;
-
-#--------------------------------------------------------------------------------------------------
-#
-#   SubHandlers package for ParseXMLFile.
-#
-#--------------------------------------------------------------------------------------------------
-package SubHandlers;
-
-sub AUTOLOAD
-{
-  my ($method, $xpat, $elmt, %attr) = (our $AUTOLOAD, shift, shift, @_);
-
-  if($method !~ /^.*_$/)
-  { # opening tag.
-    my $node = new XMLManip::Node($elmt, \%attr);
-    
-    if(exists $ModuleData{currentNode})
-    {
-      $ModuleData{currentNode}->PushChild($node);
-      push @{$ModuleData{parentNodes}}, $ModuleData{currentNode};
-    }
-
-    $ModuleData{currentNode} = $node;
-  }
-  else
-  { # closing tag
-    $ModuleData{currentNode} = pop @{$ModuleData{parentNodes}};
-  }
-}
-
-1;
-
-#--------------------------------------------------------------------------------------------------
-#
-#   XML Node
-#
-#--------------------------------------------------------------------------------------------------
-
-package XMLManip::Node;
-
-use strict;
-use warnings;
-
-use constant LOCK    => XMLManip::LOCK;
-use constant NO_LOCK => XMLManip::NO_LOCK;
-
-#--------------------------------------------------------------------------------------------------
-# Overloaded methods.
-#--------------------------------------------------------------------------------------------------
-use overload q("")  => \&__AsString,
-             q(0+)  => \&__AsNumber,
-             q(==)  => \&__AreEqual;
-
-sub __AsString
-{
-  my ($self) = (shift);
-  $self->{'XMLManip::Node::Type'}.'('.
-    scalar (keys %{$self->{'XMLManip::Node::Attributes'}}).','.
-    scalar (@{$self->{'XMLManip::Node::Childs'}}).')';
-}
-
-sub __AsNumber
-{
-  my ($self, $nb) = (shift, 1);
-  foreach my $child (@{$self->{'XMLManip::Node::Childs'}})
-  {
-    $nb += $child->__AsNumber();
-  }
-  
-  return $nb;
-}
-
-sub __AreEqual
-{
-  my ($lhs, $rhs) = (shift, shift);
-  return 1 if(overload::StrVal($lhs) eq overload::StrVal($rhs));
-  return 0;
-}
-
-#--------------------------------------------------------------------------------------------------
-# Constructor.
-#--------------------------------------------------------------------------------------------------
-sub new
-{
-  my ($class, $arg, $attrs) = (shift, shift || 'node', shift || {});
-	
-	if(ref $arg eq 'XMLManip::Node')
-	{
-	  my @childs;
-	  
-	  if(exists $$attrs{childs})
-	  {
-  	  if($$attrs{childs} == 'copy')
-  	  {
-  	    foreach my $child (@{$arg->Childs()})
-  	    { push @childs, new XMLManip::Node($child, { childs => 'copy' }); } 
-  	  }
-  	  elsif($$attrs{childs} == 'refs')
-  	  {
-  	    push @childs, @{$arg->Childs()};
-  	  }
-  	}
-	  
-  	return bless { 'XMLManip::Node::Type'       => $arg->Type(),
-                   'XMLManip::Node::Attributes' => $arg->Attributes(),
-                   'XMLManip::Node::Content'    => $arg->Content(),
-                   'XMLManip::Node::Comment'    => $arg->Comment(),
-                   'XMLManip::Node::Childs'     => \@childs,
-                   _lock                        => $arg->{_lock},
-                 }, $class;
-	}
-
-  bless { 'XMLManip::Node::Type'       => $arg,
-          'XMLManip::Node::Attributes' => $attrs,
-          'XMLManip::Node::Content'    => undef,
-          'XMLManip::Node::Comment'    => undef,
-          'XMLManip::Node::Childs'     => [],
-          _lock                        => 0,
-        }, $class;
-}
-
-#--------------------------------------------------------------------------------------------------
-# Other methods.
-#--------------------------------------------------------------------------------------------------
-sub PushChild
-{
-  my ($self, $node) = (shift, shift);
-  
-  if(ref $node eq 'XMLManip::Node')
-  {
-    if($self->{_lock}) { warn "trying to push child node \'$node\' while node is locked.\n"; }
-    else               { push @{$self->{'XMLManip::Node::Childs'}}, $node; }
-  }
-  else { warn "trying to push non 'XMLManip::Node' element (type is \'", ref $node || 'undefined', "\').\n"; }
-}
-
-sub RemoveChild
-{
-  my ($self, $node, $i) = (shift, shift, 0);
-  
-  if($self->{_lock})
-  {
-    warn "trying to remove child while node is locked.\n";
-  }
-  elsif(ref $node eq 'XMLManip::Node')
-  {
-    foreach my $child (@{$self->{'XMLManip::Node::Childs'}})
-    {
-      if($child == $node) { splice @{$self->{'XMLManip::Node::Childs'}}, $i, 1; }
-      else { ++$i; }
-    }
-  }
-  else
-  {
-    foreach my $child (@{$self->Child($node)})
-    {
-      RemoveChild($child);
-    }
-  }
-}
-
-sub Attribute
-{
-  my ($self, $attr) = (shift, shift);
-
-  if(@_)
-  {
-    if($self->{_lock}) { warn "trying to modify value of attribute \'$attr\' while node is locked.\n"; }
-    else               { $self->{'XMLManip::Node::Attributes'}{$attr} = shift; }
-  }
-
-  return $self->{'XMLManip::Node::Attributes'}{$attr};
-}
-
-sub HasAttribute
-{
-	my ($self, $attr) = (shift, shift);
-	
-	return exists $self->{'XMLManip::Node::Attributes'}{$attr};
-}
-
-sub ChildRegex
-{
-  my ($self, $type, $idx, @result) = (shift, shift || '.*', shift);
-
-  @result = grep{ $_->{'XMLManip::Node::Type'} =~ /$type/ } @{$self->{'XMLManip::Node::Childs'}};
-
-  return \@result unless(defined $idx);
-  return $result[$idx];
-}
-
-sub Child
-{
-  my ($self, $type, $idx, @result) = (shift, shift || '.*', shift);
-
-  @result = grep{ $_->{'XMLManip::Node::Type'} eq $type } @{$self->{'XMLManip::Node::Childs'}};
-  
-  return \@result unless(defined $idx);
-  return $result[$idx];
-}
-
-sub ChildAt
-{
-	my ($self, $idx) = (shift, shift);
-	__ASSERT($idx >= 0 && $idx <= $#{$self->{'XMLManip::Node::Childs'}});
-  return ${$self->{'XMLManip::Node::Childs'}}[$idx];
-}
-
-sub ChildTypes
-{
-	my ($self) = (shift);
-	
-	my %types;
-	foreach my $child (@{$self->{'XMLManip::Node::Childs'}})
-	{ $types{$child->Type()} = 1; }
-	
-	return sort keys %types;
-}
-
-sub NbChild
-{
-  my ($self, $type, $nb) = (shift, shift || '.*', 0);
-  return scalar grep{ $_->{'XMLManip::Node::Type'} =~ /^$type$/ } @{$self->{'XMLManip::Node::Childs'}};
-}
-
-sub NbChilds
-{
-  my ($self) = (shift);
-  return scalar @{$self->{'XMLManip::Node::Childs'}};
-}
-
-sub NbAttributes
-{
-  my ($self) = (shift);
-  return scalar keys %{$self->{'XMLManip::Node::Attributes'}};
-}
-
-sub Lock     { $_[0]->{_lock} = LOCK; }
-sub Unlock   { $_[0]->{_lock} = NO_LOCK; }
-sub IsLocked { return $_[0]->{_lock}; }
-
-sub LockAll
-{
-  my ($self) = (shift);
-  
-  $self->{_lock} = LOCK;
-  foreach my $child (@{$self->{'XMLManip::Node::Childs'}})
-  { $child->LockAll(); } 
-}
-
-sub UnlockAll
-{
-  my ($self) = (shift);
-  
-  $self->{_lock} = NO_LOCK;
-  foreach my $child (@{$self->{'XMLManip::Node::Childs'}})
-  { $child->UnlockAll(); }
-}
-
-sub AUTOLOAD
-{
-  my ($self, $method) = (shift, our $AUTOLOAD);
-  return if($method =~ /::DESTROY$/ or not exists $self->{$method});
-  
-  if(@_)
-  {
-    if($self->{_lock}) { warn "trying to modify value of $method while node is locked.\n"; }
-    else               { $self->{$method} = shift; }
-  }
-
-  return $self->{$method};
-}
-
-1;
-
-__END__
-
-#--------------------------------------------------------------------------------------------------
-# Documentation.
-#--------------------------------------------------------------------------------------------------
-
-=pod
-
-=head1 NAME
-
-ISIS::XMLManip - A perl module for generating data structures from XML files.
-
-=head1 SYNOPSIS
-
-	use ISIS::XMLManip;
-	
-	# Reading an XML.
-	my $rootNode = &ParseXMLFile('myfile.xml');
-	
-	print "Node type : \'", $rootNode->Type(), "\'\n";
-	
-	print "Node attributes :\n";
-	foreach (sort keys %{$rootNode->Attributes()})
-	{
-	 print "  $_ => ", $rootNode->Attribute($_), "\n";
-	}
-	
-	if(defined $rootNode->Content())
-	{
-	 print "Node content :\n", $rootNode->Content(), "\n";
-	}
-
-	print "Node childs :\n";
-	foreach (@{$rootNode->Childs()})
-	{
-	 print "  ", $_->Type(), "\n";
-	}
- 
- # Writing an XML.
- my $newNode = new XMLManip::Node('test', { time => scalar(localtime), type => 'new' });
- $newNode->Content("This is a test node added to the root");
- $newNode->Attribute('size', '23');
- 
- $rootNode->PushChild($newNode);
- 
- &WriteXMLFile($rootNode, 'output.xml');
-
-=head1 DESCRIPTION
-
-This module generates a data structure from an XML file just as XML::Simple does
-but preserving child node order and differenciating attributes from childs. It
-is built on top of L<XML::Parser> that uses James Clark's expat library.
-
-The module exposes only two subroutine 'ParseXMLFile' who takes a file name as
-argument and returns a reference to a Node (the root node of the XML document) and
-'WriteXMLFile' that takes a 'Node' instance and a file name to write to.
-The nodes are encapsulated in a 'Node' package with the following interface :
-
-=head1 XMLManip::Node INTERFACE
-
-=head2 XMLManip::Node( [TYPE, [ATTRS]] | [NODE] )
-
-The constructor takes a type as a string and a reference to a hash table containing its
-attributes or takes a node reference as parameters. As a copy constructor, it will
-duplicate the node and, based on the second argument passed, will determine if it must
-copy also the child nodes recursively, copy just the references to the child nodes, or
-not copy any child information.
-
-=head2 Type( ) :
-
-Returns the tag of the node (ex : operation in '<operation>').
-
-=head2 Content( ) :
-
-Returns the node's content if available. Will return undef if the node did not
-contain any char data.
-
-=head2 Comment( ) :
-
-Returns the node's comment if available. Will return undef if the node did not
-contain any char data. Comment will be printed to the xml file just before the
-node it corresponds to.
-
-=head2 Attribute( NAME, [VALUE] ) :
-
-Returns the value of the corresponding attribute, and sets the attribute's value
-if a second argument is specified.
-
-=head2 Attributes( ) :
-
-Returns a reference to a hash table containing all the node's attributes. Each key
-is an attribute name and will return the corresponding attribute value.
-
-=head2 Child( [TYPE, [INDEX]] ) :
-
-Returns an array containing all nodes who's type matches the regular expression
-passed by argument. If no type is passed, the Child function has the same effect
-as 'Childs'. If an index is specified, 'Child' will return the Nth child of that
-type or undef if it does not exist.
-
-=head2 Childs( ) :
-
-Returns an array of 1 or more childs, or undef otherwise. The nodes in this array
-appear in the same order of the xml file.
-
-=head2 ChildTypes(  ) :
-
-Returns an array containing the list of all existing child types for the node.
-
-=head2 PushChild( <NODE> ) :
-
-Adds a child node. The node must be of type 'XMLManip::Node' or a warning will be issued.
-
-=head2 RemoveChild( <NODE|TYPE> ) :
-
-Removes a child or a type of childs from the current node. If a node is passed, the
-corresponding node will be removed. If a type is passed, all childs of that type will
-be removed.
-
-=head2 NbChild( [TYPE] ) :
-
-Returns the number of childs with type TYPE. If no type is specified, 'NbChild' has the
-same effet and return value as 'NbChilds'.
-
-=head2 NbChilds(  ) :
-
-Returns the number of child nodes for the given node.
-
-=head2 NbAttributes(  ) :
-
-Returns the number of attributes for the give node.
-
-=head1 LOCKING SAFETY
-
-The 'Node' package interface allows its user to fully modify a node's content. The
-three following member functions of the 'Node' package allow to control node editing.
-But default, a node is unlocked.
-
-=head2 Lock( ) :
-
-Lock the current node to prohibit modification of its data.
-
-=head2 LockAll(  ) :
-
-Locks the node it is called on and all its childs.
-
-=head2 Unlock( ) :
-
-Unlock the current node to allow modification of its data.
-
-=head2 UnlockAll(  ) :
-
-Unlocks the node it is called on and all its childs.
-
-=head2 IsLocked( ) :
-
-Return the current editing status of the node.
-
-=head1 SCALAR AND NUMERICAL CONTEXT
-
-A 'Node' instance will return the total number of child nodes plus one (self count) in
-a scalar context. In a string context, the printout will follow the pattern :
-
-'type(nb_attributes, nb_childs)'
-
-=head1 NODE COMPARAISON
-
-The 'Node' package has an overloaded '==' operator to allow comparaison at a memory level.
-Two nodes are equal if they are at the same localtion in memory.
-
-=head1 AUTHOR
-
-
-
-=cut
-
-#--------------------------------------------------------------------------------------------------
-# End of file.
-#--------------------------------------------------------------------------------------------------
--- a/buildframework/helium/tools/common/packages/ISIS/genxml2.pl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,103 +0,0 @@
-#!/usr/bin/perl -w
-
-#============================================================================ 
-#Name        : genxml2.pl 
-#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: 
-#============================================================================
-
-#------------------------------------------------------------------------------
-# Name   : genxml2.pl
-# Use    : description.
-#
-# Synergy :
-# Perl %name: genxml2.pl % (%full_filespec:  genxml2.pl-1:perl:fa1s60p1#2 %)
-# %date_created:  Thu Jan 12 10:13:06 2006 %
-#
-# Version History :
-#
-# 1 (19/09/2005) :
-#  - Fist version of the script.
-#  - This script takes a text input file and translate it to a TBS XML compliant file.
-#------------------------------------------------------------------------------
-
-use strict;
-use Getopt::Long;
-use ISIS::GenXML2;
-Getopt::Long::Configure ("bundling_override");
-
-# ISIS constants.
-use constant ISIS_VERSION 		=> '1.0';
-use constant ISIS_LAST_UPDATE => '19/09/2005';
-
-#------------------------------------------------------------------------------
-# Main script.
-#------------------------------------------------------------------------------
-
-
-my $input = undef;
-my $help = 0;
-my @defines = ();
-GetOptions("D=s@" => \@defines,"i|input=s" =>\$input,"h|help" => \$help );
-
-&Usage() if ($help);
-unless ($input) { print "You must specify an input file.\n"; &Usage();	 }
-
-my $parser = new GenXML2();
-my @args;
-foreach(@defines)
-{
-	push @args, "-D$_";
-}
-
-my $output = $input;
-$output  =~ s/\..*$/\.xml/;
-print "Output file: $output\n";
-$parser -> parseFile("$input", @args);
-$parser -> generateTBSXML("$output");
-
-
-
-#------------------------------------------------------------------------------
-# Script usage.
-#------------------------------------------------------------------------------
-sub Usage
-{
-	print " genxml2.pl - v".ISIS_VERSION." - ".ISIS_LAST_UPDATE."\n";
-	print " Usage : genxml2 \n";
-	print <<EOC;
-	
-	-h, -help        this help screen
-	-i               an input file
-	-DXXX            a define
-	
-	Input file specification
-		Keywords:
-			- 'NEWSTEP' Increment step ID
-		
-		line format is the following:
-		name,path,"cmd"
-			name is a display name,
-			path to the location you want to execute the command 'cmd'
-			cmd is the command to execute.
-			
-EOC
-	exit 0;
-}
-
-#------------------------------------------------------------------------------
-# End of file.
-#------------------------------------------------------------------------------
--- a/buildframework/helium/tools/common/packages/ISIS/xml2mak.pl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,308 +0,0 @@
-#!perl -w
-
-#============================================================================ 
-#Name        : xml2make.pl 
-#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: 
-#============================================================================
-
-# ==============================================================================
-#  %name:          xml2mak.pl %
-#  Part of:        Juno Build Tools
-#
-#  %derived_by:    wbernard %
-#  %version:	   6.1.2 %
-#  %date_modified: Fri Jul  7 14:42:30 2006 %
-#
-#
-#  V2
-#    - Custom version that use ISIS framework.
-#
-#  See POD text at the end of this file for usage details.
-# ==============================================================================
-
-BEGIN
-{
-	push @INC, "/isis_sw/build_tools/packages";
-}
-
-use strict;
-use IO::Handle;
-use ISIS::XMLManip;
-use File::Basename;
-use Getopt::Long;
-use Pod::Usage;
-
-my $MAKNAME = 'Makefile';
-my $INPUT   = '';
-my $MAXDEPS = 0;
-my $PHONY   = 0;
-my $MULTI   = 0;
-my $SERIALIZE = 1;
-my $help    = 0;
-my $man     = 0;
-my $verbose = 0;
-
-GetOptions('name=s'     => \$MAKNAME,
-           'i|input=s'    => \$INPUT,
-           'maxdeps=i'  => \$MAXDEPS,
-           'multi!'     => \$MULTI,
-           'phony!'     => \$PHONY,
-           'serialize!' => \$SERIALIZE,
-           'verbose'    => \$verbose,
-           'man'        => \$man,
-           'help|?'     => \$help)
-  or pod2usage(2);
-pod2usage(1) if ($help);
-pod2usage(-exitstatus => 0, -verbose => 2) if $man;
-
-
-# Parallelizable build commands are grouped in "stages" by genxml,
-# while commands that must be run in series are placed in their own
-# single command stage.  We combine stages containing only a single
-# command into a "sequence" by specifying consecutive command rules to
-# be dependent.  Both sequences and stages may be put into submake
-# files if the multi option is specified.
-
-my $currstage = undef;
-my %stage     = ();
-my @sequence  = ();
-
-print "Creating '$MAKNAME'...\n" if ($verbose);
-open(MAINMAKE, ">$MAKNAME")
-  or die("Can't open makefile \"$MAKNAME\" for write: $!\n");
-
-print(MAINMAKE "SHELL=cmd.exe\n\n");
-print(MAINMAKE "ALL: ALL_END\n\n");
-
-#<ISIS - oligrant - Replace simple text opening with xml parsing>
-my $xmlInput;
-if ($INPUT)
-{
-	$xmlInput = XMLManip::ParseXMLFile($INPUT);
-}
-else
-{
-	my $stdin = new IO::Handle;
-	$stdin->fdopen(fileno(STDIN), "r") or die("Couldn't open STDIN: $!\n");
-	$xmlInput = XMLManip::ParseXMLFileHandle($stdin);
-	$stdin->close();
-}
-my $cmdNode  = $xmlInput->Child('Commands', 0);
-#or die("Can't parse $INPUT TBS file\n");
-#</ISIS>
-
-my @steps = ();
-my @allstage = ();
-foreach my $execNode (@{$cmdNode->Child('Execute')})
-{
-    if($execNode->Attribute('ID') and
-       $execNode->Attribute('Stage') and
-       $execNode->Attribute('Cwd') and
-       $execNode->Attribute('CommandLine')
-      )
-    {
-    		unless ($currstage)
-    		{
-    			$currstage = $execNode->Attribute('Stage');
-    		}
-                
-        if ($execNode->Attribute('Stage') ne $currstage)
-        {
-        	
-        	# generate stages
-        	if ( $MULTI )
-        	{        		
-    			&GenerateSubMake($currstage, \@steps, $MULTI );
-			print (MAINMAKE &GenerateStageRule("stage$currstage", (($currstage-1>0)?"stage".($currstage-1):''), $currstage, "${MAKNAME}_${currstage}"));
-       			#print (MAINMAKE &GenerateRule( "stage$currstage", (($currstage-1>0)?"stage".($currstage-1):''), undef, "-\$(MAKE) -k -f ${MAKNAME}_${currstage}"));
-        	}
-        	else
-        	{
-        		print (MAINMAKE &GenerateStage( $currstage, \@steps , $MULTI)."\n");
-        	}
-        	
-        	push @allstage, "stage".$currstage;
-        	# Adding current to the list
-        	@steps = ();
-        	$currstage = $execNode->Attribute('Stage');
-        	push @steps, $execNode;
-        }
-        else
-        {
-        	# Adding new step to the list
-        	#print "Adding\n";
-        	push @steps, $execNode;
-        }
-    }
-}
-
-if (scalar(@steps))
-{
-	if ( $MULTI )
-	{        		
-		&GenerateSubMake($currstage, \@steps, $MULTI );
-		print (MAINMAKE &GenerateStageRule("stage$currstage", (($currstage-1>0)?"stage".($currstage-1):''), $currstage, "${MAKNAME}_${currstage}"));
-#		print (MAINMAKE &GenerateRule( "stage$currstage", (($currstage-1>0)?"stage".($currstage-1):''), undef, "\$(MAKE) -k -f ${MAKNAME}_${currstage}"));
-	}
-	else
-	{
-		print (MAINMAKE &GenerateStage( $currstage, \@steps , $MULTI)."\n");
-	}
- 	push @allstage, "stage".$currstage;
-}
-
-if ( $MULTI )
-{
-	print (MAINMAKE "ALL_END: stage$currstage\n") if ( $currstage );		
-}
-else
-{
-	print (MAINMAKE "ALL_END: ".join (' ',@allstage)."\n");
-}
-
-close (MAINMAKE);
-
-
-
-sub GenerateSubMake
-{
-	my ($currstage, $steps) = @_;
-	print "Creating '${MAKNAME}_${currstage}'...\n" if ($verbose);
-	open (SUBMAKE, ">${MAKNAME}_${currstage}");
-	print(SUBMAKE "ALL: ALL_END\n\n");
-	print (SUBMAKE &GenerateStage( $currstage, $steps , 1)."\n");
-	print (SUBMAKE "ALL_END: ");
-	foreach (@$steps) { print (SUBMAKE "id".$_->Attribute('ID')." "); }
-	print (SUBMAKE "\n");
-	close (SUBMAKE);
-}
-
-sub GenerateStage
-{
-	my ($stage, $steps, $multi) = @_;
-		
-	my $txt = '';
-	unless ($multi)
-	{
-		$txt  .= "stage$stage: ";
-		$txt .= "stage".($stage-1)." " if ($stage-1>0);
-		
-		foreach my $s ( @$steps ) {	$txt .= "id".$s->Attribute('ID')." ";	}
-		$txt.= "\n";
-	}
-	
-	foreach my $s ( @$steps )
-	{
-		$txt .= &GenerateRule("id".$s->Attribute('ID'), '', $s->Attribute('Cwd'), $s->Attribute('CommandLine'), $s->Attribute('Component'), $stage, $s->Attribute('ID'));
-	}	
-	return $txt;
-}
-
-sub GenerateStageRule
-{
-	my ($left, $right, $stage, $makefile) = (shift, shift, shift, shift);
-	my $txt = "$left : $right\n";
-	$txt .= "\t\@echo ===-------------------------------------------------\n";
-	$txt .= "\t\@echo === Stage=$stage\n";
-	$txt .= "\t\@echo ===-------------------------------------------------\n";
-	$txt .= "\t\@timestamp \"=== Stage=$stage started at \"\n";
-	$txt .= "\t\$(MAKE) -k -f $makefile\n";
-	$txt .= "\t\@timestamp \"=== Stage=20 finished \"\n\n";
-	return $txt;
-}
-
-sub GenerateRule
-{
-	my ($left, $right, $dir, $cmd, $component, $stage, $id) = (shift,shift || '', shift, shift, shift, shift, shift);
-	my $commandline = $cmd;
-	$commandline =~ s/\|/^|/g;
-	my $txt = "$left: $right\n";
-	$txt .= "\t\@echo === Stage=$stage == $component\n";
-	$txt .= "\t\@echo -- $commandline\n";
-	$txt .= "\t\@echo --- ElectricCloud Executed ID $id\n";
-	$txt .= "\t\@timestamp \"++ Started at \"\n";
-	$txt .= "\t\@timestamp_hires \"+++ HiRes Start \"\n";
-	$txt .= "\t\@echo Chdir $dir \n";
-	$txt .= "\t\@-cd $dir && $cmd\n";
-	$txt .= "\t\@timestamp_hires \"+++ HiRes End \"\n";
-	$txt .= "\t\@timestamp \"++ Finished at \"\n\n";
-	return $txt;
-}
-
-__END__
-
-=head1 NAME
-
-xml2mak - Create a makefile from an EBS XML file
-
-=head1 SYNOPSIS
-
-perl xml2mak.pl [-h] [-man]  [-multi]  [-name=<makefile name>] [-i=<XML file>]
-
-=head1 OPTIONS
-
-=over 8
-
-=item B<-help>
-
-Print a brief help message and exits.
-
-=item B<-man>
-
-Prints the manual page and exits.
-
-=item B<-name=F<makefile name>>
-
-Specify the root makefile name.  Defaults to F<Makefile>.  If
-B<-multi> is specified, the additional makefiles will be named
-<root>_<#>.<root extension>.
-
-=item B<-[no]phony>
-
-If phony is specified, targets are defined as C<.PHONY> in the
-makefile.  Default is not to declare phony targets.
-
-=item B<-[no]serialize>
-
-B<-noserialize> removes dependencies between adjacent rules in a
-sequence, even though these dependencies may be specified in the XML
-file.  Sequenced rules are then free to be executed concurrently.
-Default is to serialize sequences as defined in the XML file.
-
-=item B<-maxdeps=<number>>
-
-Specify the maximum number of dependencies for a given target.  This
-will split the target into multiple rules if necessary.
-
-=item B<-multi>
-
-Split the makefile into multiple files, separating them by stages and
-sequences.
-
-=back
-
-=head1 DESCRIPTION
-
-Extracts the component list and commands from an EBS XML and generates
-a makefile using the same command staging order.  Default make target
-is "ALL".
-
-=head1 SEE ALSO
-
-L<xml2cmp|scripts::xml2cmp>
-
-=cut
--- a/buildframework/helium/tools/common/python/lib/CreateZipInput.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,74 +0,0 @@
-#============================================================================ 
-#Name        : CreateZipInput.py 
-#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:
-#===============================================================================
-
-""" Script that generate makefile for single archiving configuration. """
-import os
-# setting the egg cache directory to a pid specific location.
-# this should prevent issues with concurrent threads.
-if not os.environ.has_key('PYTHON_EGG_CACHE') or os.environ['PYTHON_EGG_CACHE'] == None: 
-    os.environ['PYTHON_EGG_CACHE'] = os.environ['TEMP'] + "/" + str(os.getpid())
-
-import configuration
-import archive
-import logging
-import sys
-from optparse import OptionParser
-
-_logger = logging.getLogger('CreateZipInput')
-_logger.setLevel(logging.INFO)
-
-def main():
-    """ The application main. """
-    cli = OptionParser(usage="%prog [options]")
-    cli.add_option("--filename", help="Configuration file") 
-    cli.add_option("--config", help="Config to load (spec name).")
-    cli.add_option("--id", help="Config number to execute", type="int")
-    cli.add_option("--output", help="Output file")
-    cli.add_option("--writertype", help="Writer Type")
-                   
-    opts, dummy_args = cli.parse_args()
-    if not opts.filename:
-        cli.print_help()
-        sys.exit(-1)
-    if not opts.config:
-        cli.print_help()
-        sys.exit(-2)
-    if opts.id == None:
-        cli.print_help()
-        sys.exit(-3)
-    if not opts.output:
-        cli.print_help()
-        sys.exit(-4)
-    if not opts.writertype:
-        cli.print_help()
-        sys.exit(-5)
-
-    _logger.info("Loading %s..." % opts.filename) 
-    builder = configuration.NestedConfigurationBuilder(open(opts.filename, 'r'))
-    configset = builder.getConfiguration()
-    _logger.info("Getting %s..." % opts.config)
-    configs = configset.getConfigurations(opts.config)
-
-    if len(configs) > 0 and int(opts.id) >= 0 and int(opts.id) < len(configs):
-        _logger.info("Generating %s.%s as %s..." % (opts.config, opts.id, opts.output))
-        prebuilder = archive.ArchivePreBuilder(configuration.ConfigurationSet(configs), opts.config, opts.writertype, int(opts.id))
-        prebuilder.write(opts.output)
-
-if __name__ == "__main__":
-    main()
\ No newline at end of file
--- a/buildframework/helium/tools/common/python/lib/ant.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,99 +0,0 @@
-#============================================================================ 
-#Name        : ant.py 
-#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:
-#===============================================================================
-
-""" This module defines helper functions to be used in python Ant tasks. """
-
-
-import logging
-import re
-import os.path
-
-
-def get_property(property_name):
-    """ This function return None if a property has not been replaced by Ant. """
-    if len(property_name) > 0 and (property_name.startswith('${') or property_name.startswith('@{')):
-        return None
-    return property_name
-
-
-def get_previous_build_number(build_number):
-    """ Determines the previous build number if possible. """
-    match = re.match(r'(?P<bn_txt>\w[a-zA-Z0-9_.]*\.)?(?P<bn_num>\d+)', build_number)
-    if match != None:
-        bn_txt = match.group('bn_txt')
-        bn_num = match.group('bn_num')
-        try:
-            bn_num_int = int(bn_num)
-            if bn_num_int > 1:
-                previous_bn_num_int = bn_num_int - 1
-                previous_bn_num = str(previous_bn_num_int)
-                if bn_num.startswith('0'):
-                    previous_bn_num = previous_bn_num.rjust(len(bn_num), '0')
-                previous_bn = previous_bn_num
-                if bn_txt != None:
-                    previous_bn = '%s%s' % (bn_txt, previous_bn_num)
-                return previous_bn
-        except ValueError:
-            logging.warning('Parsing of Ant build number failed.')
-    return ''
-    
-    
-def get_next_build_number(build_number):
-    """ Determines the next build number if possible. """
-    match = re.match(r'(?P<bn_txt>\w[a-zA-Z0-9_.]*\.)?(?P<bn_num>\d+)', build_number)
-    if match != None:
-        bn_txt = match.group('bn_txt')
-        bn_num = match.group('bn_num')
-        try:
-            bn_num_int = int(bn_num)
-            previous_bn_num_int = bn_num_int + 1
-            previous_bn_num = str(previous_bn_num_int).rjust(len(bn_num), '0')
-            previous_bn = previous_bn_num
-            if bn_txt != None:
-                previous_bn = '%s%s' % (bn_txt, previous_bn_num)
-            return previous_bn
-        except ValueError:
-            logging.warning('Parsing of Ant build number failed.')
-    return ''
-
-def get_filesets_content(project, task, elements):
-    """ Extract all files selected by the filesets in a script's elements. """
-    for eid in range(elements.get("fileset").size()):
-        dirscanner = elements.get("fileset").get(int(eid)).getDirectoryScanner(project)
-        dirscanner.scan()
-        for jfilename in dirscanner.getIncludedFiles():
-            filename = str(jfilename)
-            task.log("Parsing %s" % filename)
-            filename = os.path.join(str(dirscanner.getBasedir()), filename)
-
-
-class AntHandler(logging.Handler):
-    """ Implement a logger hanlder that prints error message using an Ant object.
-        See Python documentation on how to use it.
-        e.g:
-        logging.getLogger("").addHandler(AntHandler(anttask))
-        This line will redirect messages to Ant logging system.
-    """
-    def __init__(self, task, level=logging.NOTSET):
-        logging.Handler.__init__(self, level)
-        self._task = task
-    
-    def emit(self, record):
-        """ Handle the record using Ant. """
-        self._task.log(str(self.format(record)))
--- a/buildframework/helium/tools/common/python/lib/archive/__init__.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,21 +0,0 @@
-#============================================================================ 
-#Name        : __init__.py 
-#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:
-#===============================================================================
-
-""" The archive module. """
-from archive.builders import ArchivePreBuilder
--- a/buildframework/helium/tools/common/python/lib/archive/builders.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,218 +0,0 @@
-#============================================================================ 
-#Name        : builders.py 
-#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:
-#===============================================================================
-
-"""
-This modules contains the archive builders.
-An archive builder is a class that is able to use data from a configuration
-and generate a set of shell commands.
-"""
-import archive.tools
-import archive.selectors
-import archive.mappers
-import archive.scanners
-import logging
-import pathaddition
-import buildtools
-import os
-import codecs
-import configuration
-import fileutils
-
-_logger = logging.getLogger('archive')
-_logger.setLevel(logging.INFO)
-
-class ArchivePreBuilder(buildtools.PreBuilder):
-    """ Processes an archive build specification. """
-    def __init__(self, config_set, config_name, writerType='ant', index = None):
-        buildtools.PreBuilder.__init__(self, config_set)
-        self.configs = config_set.getConfigurations()
-        self.spec_name = config_name
-        self.index = index
-        self.writerType = writerType
-        self.listToFindPrefix = []
-
-    def build_manifest(self, config):
-        """ Generate a manifest file from the a configuration. """
-        _logger.info('Processing archive config: ' + config['name'])
-        _scanners = archive.scanners.get_scanners(config.get_list('scanners', ['default']), config)
-        
-        content_list = {}
-    
-        if not os.path.exists(config['temp.build.dir']):
-            os.makedirs(config['temp.build.dir'])
-        manifest_file_path = os.path.abspath(os.path.join(config['temp.build.dir'], config['name'] + '_includefile.txt'))
-        out = codecs.open(manifest_file_path, 'w+', 'utf-8')
-        
-        # zip.root.dir can be set to root.dir so that when zipping from another dir,
-        # the manifest is relative to that dir
-        (drive, root_dir) = os.path.splitdrive(os.path.normpath(config.get('zip.root.dir', config['root.dir'])))
-        _logger.info("   * Scanning")
-        for scanner in _scanners:
-            _logger.debug("Scanner %s" % scanner)
-            for subpath in scanner.scan():
-                (drive, subpath) = os.path.splitdrive(subpath)
-                if pathaddition.relative.abs2rel(subpath, root_dir):
-                    _logger.debug(subpath)
-                    subpath = subpath[len(root_dir):]
-                    if subpath.startswith(os.sep):
-                        subpath = subpath[1:]
-                # normpath is to remove any occurances of "..\.." before checking for duplicates
-                subpath = os.path.normpath(subpath)
-                if subpath not in content_list:
-                    out.write(u"".join([subpath, u'\n']))
-                    content_list[subpath] = True
-    
-        out.close()
-        return manifest_file_path
-
-    def manifest_to_commands(self, config, manifest):
-        """ Generate return a command list. Commands are stored in a two dimension array."""
-        _logger.info("   * Generating commands")
-        tool = archive.tools.get_tool(config['archive.tool'])
-        mapper_name = 'default'
-        if config.has_key('mapper'):
-            mapper_name = config['mapper']
-        mapper = archive.mappers.get_mapper(mapper_name, config, tool)
-        return mapper.create_commands(manifest)
-    
-    def create_command_list(self, commands):
-        """ Convert a two dimensions array of command to a CommandList object. """
-        stages = buildtools.CommandList()
-        newstage = False
-        for cmds_stage in commands:
-            _logger.debug("Stage: %s" % cmds_stage)
-            for cmd in cmds_stage:
-                stages.addCommand(cmd, newstage)
-                newstage = False
-            newstage = True
-        return stages
-    
-    def writeTopLevel(self, build_file_path, output_path, xml_file):
-        """Creates a build tool config makefile that executes archieve build."""
-        config_name_list = []
-        for config in self.configs:
-            config_name_list.append(config['name'])
-            if not os.path.exists(config['archives.dir']):
-                os.makedirs(config['archives.dir'])
-            
-        writer = buildtools.get_writer(self.writerType, build_file_path)
-        writer.writeTopLevel(config_name_list, self.spec_name, output_path, xml_file)
-        writer.close()
-
-    def getCommonUncRoots(self, uncPaths):
-        commonRoots = {}
-        for p in uncPaths:
-            commonRoots["\\\\" + os.sep.join(p[2:].split(os.sep)[0:2]) + os.sep] = 1
-        return commonRoots.keys()
-
-    def getPrefix(self, dir, commonUncRoots):
-        for root in commonUncRoots:
-            if dir.startswith(root):
-                return root
-        raise Exception("Could not find root for %s." % dir)
-    
-    def checkRootDirValue(self, builder, parse_xml_file, build_drive, config_type):
-        """Checks UNC path in root.dir and adds the substituted drive into EMAKEROOT."""
-        substDrives = []
-        if build_drive:
-            substDrives.append(build_drive + os.sep)
-        
-        # Read all the config's root.dir to get UNC Path if any
-        # Of course this is only on windows platform
-        if os.sep == '\\':
-            for config in self.configs:
-                (drive, root_dir) = os.path.splitdrive(os.path.normpath(config['root.dir']))
-                _logger.debug("drive=%s, root_dir=%s" % (drive, root_dir))
-                if drive == "":
-                    self.listToFindPrefix.append(root_dir)
-        
-            commonUncRoots = self.getCommonUncRoots(self.listToFindPrefix)
-            _logger.debug("Common roots %s" % (commonUncRoots))
-            driveMapping = {}
-            for root in commonUncRoots:
-                _logger.info("Substing %s" % (root))
-                driveMapping[root] = self.substUncPath(root)
-                _logger.debug("%s subst as %s" % (root, driveMapping[root]))
-                substDrives.append(driveMapping[root] + os.sep)
-
-            for config in self.configs:
-                (drive, root_dir) = os.path.splitdrive(os.path.normpath(config['root.dir']) + os.sep) 
-                if drive == "":
-                    for root in driveMapping:
-                        if root_dir.startswith(root):
-                            config['root.dir'] = os.path.normpath(driveMapping[root] + os.sep + root_dir[len(root):len(root_dir)])
-                            _logger.info("Updated %s in %s" % (root_dir, config['root.dir']))
-                            config['unsubst.dir'] = driveMapping[root]
-                            break                
-                elif drive != build_drive:
-                    if config['root.dir'] not in substDrives:
-                        substDrives.append(config['root.dir'])
-        else:
-            for config in self.configs:
-                if config['root.dir'].startswith('\\\\'):
-                    _logger.error("UNC path are not supported under this platform: %s" % (config['root.dir']))
-        builder.writeToXML(parse_xml_file, self.configs, config_type)
-        return os.path.pathsep.join(substDrives)
-       
-
-    def substUncPath(self, path):
-        freedrive = fileutils.get_next_free_drive()
-        fileutils.subst(freedrive, path)
-        return freedrive
-
-    def cleanupSubstDrives(self):
-        # Read all the config's root.dir to get UNC Path if any
-        drives = {}
-        for config in self.configs:
-            _logger.debug("Checking configuration...")
-            _logger.debug("unsubst.dir: %s" % 'unsubst.dir' in config)
-            _logger.debug("drives: %s" % drives)
-            if 'unsubst.dir' in config and not config['unsubst.dir'] in drives:
-                _logger.debug("Found drive to unsubst %s" % (config['unsubst.dir']))
-                self.unSubStituteDrives(config['unsubst.dir'])
-                drives[config['unsubst.dir']] = config['unsubst.dir']
-                    
-    def unSubStituteDrives(self, drive):
-        _logger.info("Unsubsting %s" % (drive))
-        fileutils.unsubst(drive)
-        
-    def write(self, outputname):
-        """Creates a build tool configuration file that executes archive build operations.
-
-        The input to each archive build operation is an includefile that lists
-        all the files to be included in the archive. These text files are
-        generated before the build file by scanning the filesystem.
-        """
-        stages = buildtools.CommandList()
-
-        commands = []
-        if self.index > len(self.configs):
-            raise Exception("index not found in configuration")
-        config = self.configs[self.index]
-        stages = self.manifest_to_commands(config, self.build_manifest(config))
-                
-        # merging the commands            
-        while len(commands) < len(stages):
-            commands.append([])
-        for i in range(len(stages)):
-            commands[i].extend(stages[i])
-
-        writer = buildtools.get_writer(self.writerType, outputname)
-        writer.write(self.create_command_list(commands))
-        writer.close()
--- a/buildframework/helium/tools/common/python/lib/archive/mappers.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,438 +0,0 @@
-#============================================================================ 
-#Name        : mappers.py 
-#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:
-#===============================================================================
-
-""" Archive mappers that map how the input files are divided into archives.
-
-
-"""
-
-import buildtools
-import os
-import codecs
-import fileutils
-import logging
-import symrec
-import re
-import csv
-import shutil
-
-_logger = logging.getLogger('logger.mappers')
-_logger.setLevel(logging.INFO)
-
-# Default value for missing/invalid policy files.
-MISSING_POLICY = "9999"
-
-
-class Mapper(object):
-    """ Mapper Abstract class. Any custom implementation must derive it!.
-    
-    It handles metadata creation.
-    """
-    
-    def __init__(self, config, tool):
-        self._tool = tool
-        self._config = config
-        self._metadata = None
-        if not os.path.exists(self._config['archives.dir']):
-            os.makedirs(self._config['archives.dir'])
-        if self._config.has_key("grace.metadata") and self._config.get_boolean("grace.metadata", False):
-            if self._config.has_key("grace.template") and os.path.exists(self._config["grace.template"]) and \
-             not os.path.exists(os.path.join(self._config['archives.dir'], self._config['name'] + ".metadata.xml")):
-                shutil.copy(config["grace.template"], os.path.join(self._config['archives.dir'], self._config['name'] + ".metadata.xml"))
-            self._metadata = symrec.ReleaseMetadata(os.path.join(self._config['archives.dir'], self._config['name']+ ".metadata.xml"),
-                                       service=self._config['grace.service'],
-                                       product=self._config['grace.product'],
-                                       release=self._config['grace.release'])
-            self._metadata.save()            
-        
-    def declare_package(self, filename, extract="single"):
-        """ Add a package to the metadata file. """
-        if self._metadata is None:
-            return
-        self._metadata.add_package(os.path.basename(filename), extract=extract, filters=self._config.get_list('grace.filters', None), default=self._config.get_boolean('grace.default', True))
-        self._metadata.save()
-    
-    def create_commands(self, manifest):
-        """ Return a list of command list. """
-        return [[self._tool.create_command(self._config['name'], manifests=[manifest])]]
-        
-    
-class DefaultMapper(Mapper):
-    """ The default mapper. It splits the content based on size characteristics.
-    
-    'the max.files.per.archive' and 'max.uncompressed.size' properties define how the input files
-    are split between a number of part zips.
-    """
-    def __init__(self, config, archiver):
-        """ Initialization. """
-        Mapper.__init__(self, config, archiver)
-
-    def create_commands(self, manifest):
-        """ Return a list of command lists. """
-        result = []
-
-        _logger.info("  * Input manifest: " + manifest)
-        manifests = self._split_manifest_file(self._config['name'], manifest)
-        if not os.path.exists(self._config['archives.dir']):
-            _logger.info("  * Mkdir " + self._config['archives.dir'])
-            os.makedirs(self._config['archives.dir'])
-
-        for manifest in manifests:
-            _logger.info("  * Creating command for manifest: " + manifest)
-            filename = os.path.join(self._config['archives.dir'], os.path.splitext(os.path.basename(manifest))[0])
-            if len(manifests) == 1:
-                filename = os.path.join(self._config['archives.dir'], self._config['name'])
-            _logger.info("  * " + filename + self._tool.extension())
-            self.declare_package(filename + self._tool.extension(), self._config.get('grace.extract', 'single'))
-            result.extend(self._tool.create_command(self._config.get('zip.root.dir', self._config['root.dir']), filename, manifests=[manifest]))
-        
-        return [result]
-
-    def _split_manifest_file(self, name, manifest_file_path):
-        """ This method return a list of files that contain the content of the zip parts to create. """
-        filenames = []
-        
-        if (self._config.has_key('max.files.per.archive') or self._config.has_key('max.uncompressed.size')):
-            size = 0
-            files = 0
-            part = 0
-            filename = ""
-            output = None
-                        
-            if os.path.exists(self._config['root.dir']) and os.path.isdir(self._config['root.dir']):
-                curdir = os.path.abspath(os.curdir)
-                os.chdir(self._config.get('zip.root.dir', self._config['root.dir']))            
-                maxfiles = self._config.get('max.files.per.archive', 100000000)
-                _logger.info("Max number of files per archive: " + str(maxfiles))
-                max_uncompressed_size = self._config.get('max.uncompressed.size', 100000000)
-                _logger.info("Max uncompressed size per archive: " + str(max_uncompressed_size))
-                
-                file_handle = codecs.open(manifest_file_path, "r", "utf-8" )
-        
-                for line in file_handle.readlines():
-                    line = line.rstrip()
-        
-                    if(os.path.isfile(line)):
-                        if part == 0 or files == int(maxfiles) or size + os.path.getsize(line) >= int(max_uncompressed_size):
-                            if output != None:
-                                output.close()
-        
-                            size = 0
-                            files = 0
-                            part += 1
-        
-                            filename = "%s_part%02d" % (name, part)
-                            filenames.append(os.path.join(self._config['temp.build.dir'], filename + ".txt"))
-        
-                            output = codecs.open(os.path.join(self._config['temp.build.dir'], filename + ".txt"), 'w', "utf-8" )
-        
-                        files += 1
-                        size += os.path.getsize(line)
-        
-                        output.write(u"".join([line, u'\n']))
-                    elif(os.path.isdir(line)):
-                        if (len(os.listdir(line)) == 0):
-                            if part == 0 or files == int(maxfiles):
-                                if output != None:
-                                    output.close()
-        
-                                size = 0
-                                files = 0
-                                part += 1
-        
-                                filename = "%s_part%02d" % (name, part)
-                                filenames.append(os.path.join(self._config['temp.build.dir'], filename + ".txt"))
-                                
-                                output = open(os.path.abspath(os.path.join(self._config['temp.build.dir'], filename + ".txt")), 'w')
-        
-                            files += 1
-        
-                            output.write(u"".join([line, u'\n']))
-                    else:
-                        _logger.warning('Not recognized as file or directory: %s' % line)
-        
-                if output != None:
-                    output.close()
-        
-                file_handle.close()
-                os.chdir(curdir)
-        else:
-            filenames.append(manifest_file_path)
-        
-        return filenames
-
-
-class PolicyMapper(Mapper):
-    """ Implements a policy content mapper.
-    
-    It transforms a list of files into a list of commands with their inputs.
-    All files with policy 0 will be under the main archive.
-    All other files will get backed up by policy and then store into an second archive. 
-    """
-    
-    def __init__(self, config, archiver):
-        """ Initialization. """
-        Mapper.__init__(self, config, archiver)
-        self._policies = {}
-        self._policy_cache = {}
-        self._binary = {}
-        # Load csv
-        if self._config.has_key('policy.csv'):
-            if os.path.exists(self._config['policy.csv']):
-                self.load_policy_binary(self._config['policy.csv'])
-            else:
-                _logger.error("POLICY_ERROR: File not found '%s'." % self._config['policy.csv'])
-
-    def load_policy_binary(self, csvfile, column=1):
-        """ Loads the binary IDs from the CSV file. """
-        _logger.info("POLICY_INFO: Loading policy definition '%s'." % csvfile)
-        reader = csv.reader(open(csvfile, "rU"))
-        for row in reader:
-            if re.match(r"^((?:\d+)|(?:0842[0-9a-zA-Z]{3}))$", row[0].strip()):                
-                _logger.info("POLICY_INFO: Adding policy: '%s' => '%s'" % (row[0].strip(), row[column].strip().lower()))
-                self._binary[row[0].strip()] = row[column].strip().lower()
-            else:
-                _logger.warning("POLICY_WARNING: Discarding policy: '%s'." % row[0].strip())
-
-    def zip2zip(self):
-        """ Should the non public zip be zipped up under a specific zip. """
-        return self._config.get_boolean('policy.zip2zip', False)
-    
-    def create_commands(self, manifest):
-        """ Generates a list of build commands. """
-        result = []
-        stages = []
-
-        # Create the archive output directory
-        if not os.path.exists(self._config['archives.dir']):
-            _logger.info("  * Mkdir " + self._config['archives.dir'])
-            os.makedirs(self._config['archives.dir'])
-        
-        # Sort the manifest content, splitting it by policy
-        file_handle = codecs.open(manifest, "r", "utf-8")
-        for line in file_handle.readlines():
-            line = line.rstrip()
-            self._sort_by_policy(line)
-        file_handle.close()
-        
-        # Generating sublists.
-        for key in self._policies.keys():
-            self._policies[key].close()
-            manifest = os.path.join(self._config['temp.build.dir'], self._config['name'] + "_%s" % key + ".txt")
-            filename = os.path.join(self._config['archives.dir'], self._config['name'] + "_%s" % key)
-            _logger.info("  * " + filename + self._tool.extension())
-            result.extend(self._tool.create_command(self._config.get('zip.root.dir', self._config['root.dir']), filename, manifests=[manifest]))
-        stages.append(result)
-        
-        # See if any internal archives need to be created
-        content = []
-        for key in self._policies.keys():
-            if not self.zip2zip():
-                self.declare_package(self._config['name'] + "_%s" % key + self._tool.extension())
-            else:
-                if key != "0":
-                    content.append(os.path.join(self._config['archives.dir'], self._config['name'] + "_%s" % key + self._tool.extension()))
-                else:
-                    self.declare_package(self._config['name'] + "_%s" % key + self._tool.extension())
-
-        # Creating zip that contains each policy zips.
-        if self.zip2zip() and len(content) > 0:
-            manifest = os.path.join(self._config['temp.build.dir'], self._config['name'] +  ".internal.txt")
-            file_handle = codecs.open( manifest, "w+", "utf-8" )
-            file_handle.write(u"\n".join(content))
-            file_handle.close()
-            internal = "internal"
-            if self._config.has_key('policy.internal.name'):
-                internal = self._config['policy.internal.name']
-            filename = os.path.join(self._config['archives.dir'], self._config['name'] +  "_" + internal)
-            _logger.info("  * " + filename + self._tool.extension())
-            self.declare_package(filename + self._tool.extension(), "double")
-            stages.append(self._tool.create_command(self._config['archives.dir'], filename, manifests=[manifest]))
-
-            cmds = []
-            for filename in content:
-                cmds.append(buildtools.Delete(filename=filename))
-            stages.append(cmds)
-        return stages
-    
-    def get_dir_policy(self, dirname):
-        """ Get policy value for a specific directory. """
-        dirname = os.path.normpath(dirname)
-        if not self._policy_cache.has_key(dirname):
-            policyfile = None
-            for name in self.get_policy_filenames():
-                if os.sep != '\\':
-                    for filename in os.listdir(dirname):
-                        if filename.lower() == name.lower():
-                            policyfile = os.path.join(dirname, filename)
-                            break
-                elif os.path.exists(os.path.join(dirname, name)): 
-                    policyfile = os.path.join(dirname, name)
-                    break
-            
-            value = self._config.get('policy.default.value', MISSING_POLICY)
-            if policyfile != None:      #policy file present
-                try:
-                    value = fileutils.read_policy_content(policyfile)
-                    if value not in self._binary.keys():    #check policy file is valid
-                        _logger.error("POLICY_ERROR: policy file found %s but policy %s value not exists in csv" % (policyfile, value))
-                except Exception, exc:
-                    _logger.error("POLICY_ERROR: %s" % exc)         
-                    value = self._config.get('policy.default.value', MISSING_POLICY)
-            else:       #no policy file present
-                filePresent = False
-                dirPresent = False
-                for ftype in os.listdir(dirname):   #see if files or directories are present
-                    if os.path.isdir(os.path.join(dirname, ftype)):
-                        dirPresent = True
-                    if os.path.isfile(os.path.join(dirname, ftype)):
-                        filePresent = True
-                        
-                if filePresent:    #files present : error     
-                    _logger.error("POLICY_ERROR: could not find a policy file under: '%s'" % dirname)
-                elif dirPresent and not filePresent:  #directories only : warning
-                    _logger.error("POLICY_WARNING: no policy file, no files present, but sub-folder present in : '%s'" % dirname)
-                else:       #no files no dirs : warning
-                    _logger.error("POLICY_WARNING: empty directory at : '%s'" % dirname)
-                
-            # saving the policy value for that directory.
-            self._policy_cache[dirname] = value
-        return self._policy_cache[dirname]
-        
-    def get_policy_filenames(self):
-        """ Returns the list of potential policy filenames. """
-        return self._config.get_list('policy.filenames', ['Distribution.policy.s60'])
-        
-    def _sort_by_policy(self, filename):
-        """ Store the input file sorted by its policy number. """
-        path = os.path.join(self._config['root.dir'], filename)
-        parentdir = os.path.dirname(path)
-        if os.path.isdir(path):
-            parentdir = path
-        value = self.get_dir_policy(parentdir)
-        if not value in self._policies:
-            self._policies[value] = codecs.open( os.path.join(self._config['temp.build.dir'], self._config['name'] + "_%s" % value + ".txt"), "w+", "utf-8" )
-        self._policies[value].write(u"%s\n" % filename)
-
-
-class PolicyRemoverMapper(PolicyMapper):
-    """ This class implements a variant of the policy mapper.
-        
-    It removes the internal source. Only binary flagged content is kept.
-    """
-    
-    def __init__(self, config, archiver):
-        """ Initialization. """
-        PolicyMapper.__init__(self, config, archiver)
-        self._rm_policy_cache = {}
-
-    def get_policy_root_dir(self):
-        """ Return the policy.root.dir or root.dir if not set or not under root.dir."""
-        if not self._config.has_key("policy.root.dir"):
-            return os.path.normpath(self._config['root.dir'])
-        else:
-            if fileutils.destinsrc(self._config['root.dir'], self._config['policy.root.dir']):
-                return os.path.normpath(self._config['policy.root.dir'])
-            else:
-                return os.path.normpath(self._config['root.dir'])
-
-    def get_rmdir_policy(self, dirname):
-        """ check if the directory should be dropped or not"""
-        dirname = os.path.normpath(dirname)
-        # check if parent is banned...
-        prootdir = os.path.normpath(self.get_policy_root_dir())
-        rootdir = os.path.normpath(self._config['root.dir'])
-        if os.sep == '\\':
-            dirname = dirname.lower()
-            prootdir = prootdir.lower()
-            rootdir = rootdir.lower()        
-        
-        # else get real value...
-        if not self._rm_policy_cache.has_key(dirname):
-            self._rm_policy_cache[dirname] = self.get_dir_policy(dirname)
-        
-        return self._rm_policy_cache[dirname]
-        
-    def create_commands(self, manifest):
-        """ Generates a list of build commands. """
-        stages = PolicyMapper.create_commands(self, manifest)
-        
-        if not self._config.has_key('policy.csv'):
-            _logger.error("POLICY_ERROR: Property 'policy.csv' not defined everything will get removed.")
-        cmds = []
-        file_handle = codecs.open( manifest, "r", "utf-8" )
-        for line in file_handle.readlines():
-            line = line.rstrip()
-            filepath = os.path.normpath(os.path.join(self._config.get('zip.root.dir', self._config['root.dir']), line))
-            value = self.get_rmdir_policy(os.path.dirname(filepath))            
-            delete = True
-            if value in self._binary.keys():
-                if self._binary[value] == "yes":
-                    _logger.info("POLICY_INFO: Keeping %s (%s=>yes)!" % (filepath, value))
-                    delete = False
-                elif self._binary[value] == "bin":
-                    _logger.info("POLICY_INFO: Keeping %s (%s=>bin)!" % (filepath, value))
-                    delete = False
-            else:
-                _logger.error("POLICY_ERROR: %s value for %s not in csv file. Will be removed!!" % (value, filepath))
-               
-            if delete:
-                _logger.info("POLICY_INFO: File %s will be removed!" % filepath)
-                cmds.append(buildtools.Delete(filename=filepath))
-        file_handle.close()
-        if len(cmds) > 0:
-            stages.append(cmds)
-        return stages
-
-
-class SFPolicyRemoverMapper(PolicyRemoverMapper):
-    """ Implement an SFL column based policy remover. """
-
-    def __init__(self, config, archiver):
-        """ Initialization. """
-        PolicyRemoverMapper.__init__(self, config, archiver)
-
-    def load_policy_binary(self, csvfile):
-        """ Loading the policy using the 3rd column. """
-        _logger.info("POLICY_INFO: Loading actions from the 3rd column")
-        PolicyRemoverMapper.load_policy_binary(self, csvfile, column=3)
-
-class EPLPolicyRemoverMapper(PolicyRemoverMapper):
-    """ Implement an EPL column based policy remover. """
-    def __init__(self, config, archiver):
-        """ Initialization. """
-        PolicyRemoverMapper.__init__(self, config, archiver)
-
-    def load_policy_binary(self, csvfile):
-        """ Loading the policy using the 4th column. """
-        _logger.info("POLICY_INFO: Loading actions from the 4th column")
-        PolicyRemoverMapper.load_policy_binary(self, csvfile, column=4)
-        
-        
-MAPPERS = {'default': DefaultMapper,
-             'policy': PolicyMapper,
-             'policy.remover': PolicyRemoverMapper,
-             'sfl.policy.remover': SFPolicyRemoverMapper,
-             'epl.policy.remover': EPLPolicyRemoverMapper,}
-
-def get_mapper(name, config, archiver):
-    """ Get mapper instance from its string id. """
-    if name in MAPPERS:
-        return MAPPERS[name](config, archiver)
-    raise Exception("ERROR: Could not find mapper '%s'." % name)
--- a/buildframework/helium/tools/common/python/lib/archive/scanners.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,196 +0,0 @@
-#============================================================================ 
-#Name        : scanners.py 
-#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:
-#===============================================================================
-
-""" Implementation of the available scanner for """
-
-import os
-import fileutils
-import selectors
-import logging
-import codecs
-import pathaddition
-
-logger = logging.getLogger('archive.scanners')
-logger_abld = logging.getLogger('archive.scanners.abld')
-logging.basicConfig()
-#logger_abld.setLevel(logging.DEBUG)
-
-class Scanner(fileutils.AbstractScanner):
-    """ Abstract class that represent and input source. """
-    
-    def __init__(self, config):
-        fileutils.AbstractScanner.__init__(self)
-        self._config = config
-        self.setup()
-        
-    def setup(self):
-        """ Setting up the scanner. """
-        [self.add_include(inc) for inc in self._config.get_list('include', [])]
-        [self.add_exclude(ex) for ex in self._config.get_list('exclude', [])]
-        [self.add_exclude_file(ex) for ex in self._config.get_list('exclude_file', [])]
-        [self.add_exclude_lst(filename) for filename in self._config.get_list('exclude.lst', [])]
-        [self.add_filetype(filetype) for filetype in self._config.get_list('filetype', [])]
-        [self.add_selector(selectors.get_selector(selector, self._config)) for selector in self._config.get_list('selector', [])]        
-        # To support old features.
-        # TODO: inform customers and remove.
-        if 'distribution.policy.s60' in self._config:            
-            self.add_selector(selectors.get_selector('distribution.policy.s60', self._config))
-    
-    def add_exclude_lst(self, filename):
-        """ Adding excludes from exclude list. """
-        if not os.path.exists(filename):
-            raise Exception("Could not find '%s'." % filename)
-        root_dir = os.path.normpath(self._config['root.dir'])
-        flh = codecs.open(filename, 'r', 'utf-8')
-        for line in flh:
-            path = os.path.normpath(line.strip())
-            if os.path.splitdrive(root_dir)[0] != "":
-                path = os.path.join(os.path.splitdrive(root_dir)[0], path)
-            if fileutils.destinsrc(root_dir, path):
-                pathrel = pathaddition.relative.abs2rel(path, root_dir)
-                logger.debug("pathrel: %s" % (pathrel))
-                self.add_exclude(pathrel)
-            else:
-                logger.warning("path '%s' is not under '%s', ignoring." % (path, root_dir))
-        flh.close()
-        
-    def scan(self):
-        """ Generator method that scan the relevant input source.
-            This method need to be overloaded by the specialized class.
-            return fullpath name
-        """
-        raise  NotImplementedError()
-
-
-class AbldWhatScanner(Scanner):
-    """ Scanning the filesystem. """    
-    
-    def __init__(self, config):
-        Scanner.__init__(self, config)
-        self.root_dir = unicode(os.path.normpath(self._config['root.dir']))
-        
-    def scan(self):
-        """
-            Abld what commands.
-            include property have not effect on the selection mechanism.
-        """
-        os.environ["SYMBIANBUILD_DEPENDENCYOFF"] = "1"
-        for path in self._config.get_list('abld.exportpath', []):
-            logger_abld.debug("abld.exportpath: %s" % path)
-            if os.path.exists(os.path.join(self.root_dir, path, 'bld.inf')):
-                os.chdir(os.path.join(self.root_dir, path))                
-                os.popen('bldmake bldfiles -k')
-                for result in self._scan_abld_what("abld export -what -k"):
-                    yield result
-        
-        for path in self._config.get_list('abld.buildpath', []):
-            logger_abld.debug("abld.buildpath: %s" % path)
-            if os.path.exists(os.path.join(self.root_dir, path, 'bld.inf')):
-                for type_ in self._config.get_list('abld.type', ['armv5']):
-                    os.environ["EPOCROOT"] = self._config.get('abld.epocroot','\\')
-                    os.environ["PATH"] = os.environ["EPOCROOT"] + "epoc32\\tools;" + os.environ["EPOCROOT"] + "epoc32\\gcc\\bin;" + os.environ["PATH"]
-                    logger_abld.debug("abld.type: %s" % type_)
-                    os.chdir(os.path.join(self.root_dir, path))
-                    os.popen("bldmake bldfiles -k")
-                    os.popen("abld makefile %s -k" % type_)
-                    for result in self._scan_abld_what("abld build -what %s" % type_):
-                        yield result
-    
-    def _run_cmd(self, cmd):
-        """ Run command."""
-        logger_abld.debug("command: %s" % cmd)
-        process = os.popen(cmd)
-        abld_output = process.read()
-        err = process.close()
-        return (err, abld_output)
-
-    def _scan_abld_what(self, cmd):
-        """ Abld what output parser."""
-        (err, abld_output) = self._run_cmd(cmd)
-        logger_abld.debug("abld_output: %s" % abld_output)
-        for what_path in abld_output.split("\n"):
-            what_path = what_path.strip()
-            if (what_path.startswith('\\') or what_path.startswith('/')) and self.is_filetype(what_path) \
-                and not self.is_excluded(what_path) and self.is_selected(what_path):
-                if os.path.exists(what_path):
-                    logger_abld.debug("adding: %s" % what_path)
-                    yield what_path
-                else:
-                    logger.error("Could not find '%s'." % what_path)
-    
-    
-class FileSystemScanner(fileutils.FileScanner, Scanner):
-    """ Scanning the filesystem. """    
-    
-    def __init__(self, config):
-        fileutils.FileScanner.__init__(self, unicode(os.path.normpath(config['root.dir'])))
-        Scanner.__init__(self, config)
-    
-    def scan(self):
-        """ 
-            Implement the scanning of the filesystem.
-            Actually delegate scanning of a directory to Filescanner.
-        """
-        for path in fileutils.FileScanner.scan(self):
-            yield path
-
-
-class InputFileScanner(fileutils.FileScanner, Scanner):
-    """ Scanning the filesystem. """    
-    
-    def __init__(self, config):
-        """ Initialisation. """
-        fileutils.FileScanner.__init__(self, unicode(os.path.normpath(config['root.dir'])))
-        Scanner.__init__(self, config)
-    
-    def scan(self):
-        """
-        ::
-        
-            <set name="scanners" value="input.file"/>
-            <set name="root.dir" value="${build.drive}"/>
-            <set name="input.files" value="file1.lst,file2.lst,file3.lst"/>
-            <set name="exclude" value="epoc32/**/*.dll"/>
-        """
-        for input_file in self._config.get_list('input.files', []):
-            logger.info("Include content from: %s" % input_file)
-            handle = open(input_file, "r")
-            for line in handle.readlines():
-                path = os.path.join(self._config['root.dir'], line.strip())
-                if os.path.exists(path):
-                    if self.is_filetype(path) \
-                        and not self.is_excluded(path) and self.is_selected(path):
-                        yield path
-                else:
-                    logger.info("File not found: %s" % path)
-            handle.close()
-        
-__scanners = {'default': FileSystemScanner,
-              'input.file': InputFileScanner,
-              'abld.what': AbldWhatScanner,
-              }
-
-def get_scanners(names, config):
-    result = []
-    for name in names:
-        if name in __scanners:
-            result.append(__scanners[name](config))
-        else:
-            raise Exception("ERROR: Could not find scanner '%s'." % name)
-    return result
--- a/buildframework/helium/tools/common/python/lib/archive/selectors.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,153 +0,0 @@
-#============================================================================ 
-#Name        : selectors.py 
-#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:
-#===============================================================================
-
-import re
-import os
-import sys
-import logging
-import fileutils
-import archive
-
-# Getting logger for the module
-logger = logging.getLogger("archive.selectors")
-
-
-class DistributionPolicySelector:
-    """ A selector that selects files based on other criteria.
-    
-    It is similar to the Ant file selector objects in design. This one selects files
-    based on whether the root-most Distribution.Policy.S60 file matches the given value.
-    """
-    
-    def __init__(self, policy_files, value, ignoremissingpolicyfiles=False):
-        """ Initialization. """
-        self._negate = False
-        self.values = [v.strip() for v in value.split() if v.strip()!=""]
-        self._policy_files = policy_files
-        self._ignoremissingpolicyfiles = ignoremissingpolicyfiles
-
-    def get_value_and_negate(self, value):
-        if value.startswith('!'):
-            return (value[1:], True)
-        return (value, False)
-        
-    def is_selected(self, path):
-        """ Determines if the path is selected by this selector. """
-        current_dir = os.path.abspath(os.path.dirname(path))
-        logger.debug('is_selected: current dir = ' + current_dir + '  ' + str(os.path.exists(current_dir)))
-        result = False
-        policy_file = None
-        # finding the distribution policy from the filelist.
-        for filename in self._policy_files:
-            #slow method on case sensitive system
-            if os.sep != '\\':
-                for f in os.listdir(current_dir):
-                    if f.lower() == filename.lower():
-                        policy_file = os.path.join(current_dir, f)
-                        break
-            elif os.path.exists(os.path.join(current_dir, filename)):            
-                policy_file = os.path.join(current_dir, filename)
-                logger.debug('Using Policy file: ' + policy_file)
-                break
-
-        policy_value = None
-        if policy_file is None:
-            if not self._ignoremissingpolicyfiles:
-                logger.error("POLICY_ERROR: Policy file not found under '%s' using names [%s]" % (current_dir, ", ".join(self._policy_files)))
-            policy_value = archive.mappers.MISSING_POLICY
-        else:
-            try:
-                policy_value = fileutils.read_policy_content(policy_file)
-            except Exception:
-                logger.warning('POLICY_ERROR: Exception thrown parsing policy file: ' + policy_file)
-                policy_value = archive.mappers.MISSING_POLICY
-        # loop through the possible values
-        for value in self.values:
-            (val, negate) = self.get_value_and_negate(value)
-            logger.debug('Policy value: ' + str(policy_value) + '  ' + val)
-            if (not negate and policy_value == val) or (negate and policy_value != val):
-                return True
-        return False
-
-
-class SymbianPolicySelector:
-    """ A selector that selects files based on other criteria.
-    
-    It is similar to the Ant file selector objects in design. This one selects files
-    based on whether the root-most distribution.policy file matches the given value.
-    """
-    
-    def __init__(self, policy_files, value):
-        """ Initialization. """
-        self._negate = False
-        self.values = [v.strip() for v in value.split() if v.strip()!=""]
-        self._policy_files = policy_files
-               
-
-    def get_value_and_negate(self, value):
-        if value.startswith('!'):
-            return (value[1:], True)
-        return (value, False)
-        
-    def is_selected(self, path):
-        """ Determines if the path is selected by this selector. """
-        current_dir = os.path.abspath(os.path.dirname(path))
-        logger.debug('is_selected: current dir = ' + current_dir + '  ' + str(os.path.exists(current_dir)))
-        result = False
-        policy_file = None
-        # finding the distribution policy from the filelist.
-        for filename in self._policy_files:
-            if os.sep != '\\':
-                for f in os.listdir(current_dir):
-                    if f.lower() == filename.lower():
-                        policy_file = os.path.join(current_dir, f)
-                        logger.debug('Using Policy file: ' + policy_file)
-                        break
-            elif os.path.exists(os.path.join(current_dir, filename)):            
-                policy_file = os.path.join(current_dir, filename)
-                logger.debug('Using Policy file: ' + policy_file)
-                break
-
-        policy_value = None
-        if policy_file is  None:
-            logger.error("POLICY_ERROR: Policy file not found under '%s' using names [%s]" % (current_dir, ", ".join(self._policy_files)))
-            policy_value = archive.mappers.MISSING_POLICY
-        else:
-            try:
-                policy_value = fileutils.read_symbian_policy_content(policy_file)
-            except Exception:
-                logger.warning('POLICY_ERROR: Exception thrown parsing policy file: ' + policy_file)
-                policy_value = archive.mappers.MISSING_POLICY
-        # loop through the possible values
-        for value in self.values:
-            (val, negate) = self.get_value_and_negate(value)
-            logger.debug('Policy value: ' + str(policy_value) + '  ' + val)
-            if (not negate and policy_value == val) or (negate and policy_value != val):
-                return True
-        return False
-
-SELECTORS = {'policy': lambda config: DistributionPolicySelector(config.get_list('policy.filenames', ['Distribution.Policy.S60']), config['policy.value']),
-               'symbian.policy': lambda config: SymbianPolicySelector(config.get_list('policy.filenames', ['distribution.policy']), config['policy.value']),
-             'distribution.policy.s60': lambda config: DistributionPolicySelector(['Distribution.Policy.S60'], config['distribution.policy.s60'], config['ignore.missing.policyfiles'] == 'true'),
-             }
-
-def get_selector(name, config):
-    if not 'ignore.missing.policyfiles' in config:
-        config['ignore.missing.policyfiles'] = 'false'
-    return SELECTORS[name](config)
--- a/buildframework/helium/tools/common/python/lib/archive/tools.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,120 +0,0 @@
-#============================================================================ 
-#Name        : tools.py 
-#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:
-#===============================================================================
-
-""" Archiving operations. """
-import os
-import logging
-import buildtools
-import codecs
-
-_logger = logging.getLogger('archive')
-#_logger.addHandler(logging.FileHandler('archive.log'))
-#logging.basicConfig(level=logging.DEBUG)
-logging.basicConfig()
-
-class Tool(object):
-    """ Tool abstract class. """
-    def extension(self):
-        """ This method should return the extension of the generated file. """
-        raise NotImplementedError()
-
-    def create_command(self, path, filename, manifests=None):
-        """ This method should return an array of buildtools.Command.
-            That list will get use to generate a build file (e.g make, ant).
-            The list of command should support in parallel calling.
-        """
-        raise NotImplementedError()
-
-
-class SevenZipArchiver(Tool):
-    """ Creates task definitions for executing 7zip archive operations."""
-
-    def __init__(self):
-        Tool.__init__(self)
-
-    def extension(self):
-        """ Always return '.zip'. """
-        return '.zip'
-
-    def create_command(self, path, name, manifests=None):
-        """ Returns a list of one command that will use 7za to archive the content."""
-        cmd = buildtools.Command('7za', path)
-        cmd.addArg('a')
-        cmd.addArg('-tzip')
-        # Include all in the current directory by default, assuming that
-        # an include file or specific includes will be given
-        cmd.addArg(name + self.extension())
-        for manifest in manifests:
-            cmd.addArg('@' + os.path.normpath(manifest))
-        return [cmd]
-
-
-class ZipArchiver(Tool):
-    """ Creates task definitions for executing zip archive operations."""
-
-    def __init__(self):
-        Tool.__init__(self)
-
-    def extension(self):
-        """ Always return '.zip'. """
-        return '.zip'
-
-    def create_command(self, path, name, manifests=None):
-        """ Returns a list of one command that will use zip to archive the content."""
-        cmd = buildtools.Command('zip', path)
-        cmd.addArg('-R')
-        cmd.addArg(name + self.extension())
-        # Include all in the current directory by default, assuming that
-        # an include file or specific includes will be given
-        cmd.addArg('.')
-        for manifest in manifests:
-            cmd.addArg('-i@' + os.path.normpath(manifest))
-        return [cmd]
-
-
-class Remover(Tool):
-    """ Creates task definitions for executing zip archive operations."""
-    def __init__(self):
-        Tool.__init__(self)
-
-    def extension(self):
-        """ Always return '' """
-        return ''
-
-    def create_command(self, dummy_path, dummy_filename, manifests=None):
-        """ Returns a list of one command that will use zip to archive the content."""
-        cmds = []
-        for manifest in manifests:
-            file_input = codecs.open(manifest, 'r', "utf-8" )
-            for line in file_input.readlines():
-                if line.strip() != "":
-                    cmds.append(buildtools.Delete(filename=line.strip()))
-            file_input.close()
-        return cmds
-        
-
-def get_tool(name):
-    """ Return a tool using its id name. """
-    constructor = TOOL_CONSTRUCTORS[name]
-    return constructor()
-
-
-TOOL_CONSTRUCTORS = {'zip': ZipArchiver,
-                      '7za': SevenZipArchiver,
-                      'remover': Remover}
--- a/buildframework/helium/tools/common/python/lib/ats3/__init__.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,474 +0,0 @@
-# -*- encoding: latin-1 -*-
-
-#============================================================================ 
-#Name        : __init__.py 
-#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:
-#===============================================================================
-
-"""ATS3 test drop generation."""
-
-#w0142 => * and ** were used
-#R*    => will be fixed while refactoring
-#F0401 => pylint didn't find "path" module
-#C0302 => Too many lines
-
-from optparse import OptionParser
-from xml.etree import ElementTree as et
-from xml.sax.saxutils import quoteattr
-import ats3.testconfigurator as acp
-import ats3.dropgenerator as adg
-import logging
-import os
-import re
-import zipfile
-
-import ats3.parsers as parser
-from path import path
-
-_logger = logging.getLogger('ats')
-
-
-
-class Configuration(object):
-    """
-    ATS3 drop generation configuration.
-    """
-    
-    def __init__(self, opts, tsrc_paths):
-        """
-        Initialize from optparse configuration options.
-        """
-        self._opts = opts
-        CParser = parser.CppParser()
-        temp_dict = {}
-        pkg_parser = parser.PkgFileParser()
-        
-        # Customize some attributes from how optparse leaves them.
-        self.build_drive = path(self._opts.build_drive)
-        self.file_store = path(self._opts.file_store)
-        self.flash_images = split_paths(self._opts.flash_images)
-        self.sis_files = split_paths(self._opts.sis_files)
-        self.config_file = self._opts.config
-        self.obey_pkgfiles = to_bool(self._opts.obey_pkgfiles)
-        self.tsrc_paths_dict = {}
-
-        ats_nd = self._opts.ctc_run_process_params.strip()
-        if ats_nd != "":
-            ats_nd = ats_nd.split("#")[0].strip()
-            if ats_nd == "":
-                self._opts.ctc_run_process_params = ""
-                _logger.warning("Property \'ats.ctc.host\' is not set. Code coverage measurement report(s) will not be created.")
-                
-        main_comps = []
-                
-        for tsrc in tsrc_paths:
-            hrh = os.path.join(self.build_drive + os.sep, 'epoc32', 'include', 'feature_settings.hrh')
-            if os.path.exists(hrh):
-                temp_dict = CParser.get_cpp_output(path(tsrc), "d", hrh)
-            else:
-                temp_dict = CParser.get_cpp_output(path(tsrc), "d")
-            for t_key, t_value in temp_dict.items():
-                self.tsrc_paths_dict[t_key] = t_value
-        
-        #preparing a list of main components
-        for main_component in self.tsrc_paths_dict.keys():
-            if self.obey_pkgfiles == "True":
-                if pkg_parser.get_pkg_files(main_component) != []:
-                    main_comps.append(main_component)
-            else:
-                main_comps.append(main_component)    
-                    
-                    
-        self.tsrc_paths = main_comps
-
-    def __getattr__(self, attr):
-        return getattr(self._opts, attr)
-    
-    def __str__(self):
-        dump = "Configuration:\n"
-        seen = set()
-        for key, value in vars(self).items():
-            if not key.startswith("_"):
-                dump += "\t%s = %s\n" % (key, value)
-                seen.add(key)
-        for key, value in vars(self._opts).items():
-            if key not in seen:
-                dump += "\t%s = %s\n" % (key, value)
-                seen.add(key)                
-        return dump
-    
-
-class Ats3TestPlan(object):
-    """
-    Tells ATS3 server what to test and how.
-    
-    The ATS3 test plan from which the test.xml file can be written. The test
-    plan captures all the data related to a test run: flashing, installation
-    of data files and configuration files, test cases, and the notifications.
-    
-    """
-
-    EMAIL_SUBJECT = (u"ATS3 report for §RUN_NAME§ §RUN_START_DATE§ "
-                     u"§RUN_START_TIME§")
-    REPORT_PATH = u"§RUN_NAME§" + os.sep + u"§RUN_START_DATE§_§RUN_START_TIME§"
-
-    def __init__(self, config):
-        self.diamonds_build_url = config.diamonds_build_url
-        self.ctc_run_process_params = config.ctc_run_process_params
-        self.testrun_name = config.testrun_name
-        self.harness = config.harness
-        self.device_type = config.device_type
-        self.device_hwid = config.device_hwid
-        self.plan_name = config.plan_name
-        self.report_email = config.report_email
-        self.file_store = config.file_store
-        self.test_timeout = config.test_timeout
-        self.eunitexerunner_flags = config.eunitexerunner_flags
-        self.sets = []
-        self.src_dst = []
-        self.pmd_files = []
-        self.trace_activation_files = []
-        self.trace_enabled = to_bool(config.trace_enabled)
-        self.ctc_enabled = to_bool(config.ctc_enabled)
-        self.multiset_enabled = to_bool(config.multiset_enabled)
-        self.monsym_files = config.monsym_files
-        self.component_path = ""
-        self.custom_dir = None
-        
-    def insert_set(self, data_files=None, config_files=None, 
-                   engine_ini_file=None,  image_files=None, sis_files=None,
-                   testmodule_files=None, test_timeout=None,eunitexerunner_flags=None , test_harness=None,
-                   src_dst=None, pmd_files=None, trace_activation_files=None, custom_dir=None, component_path=None):
-        """
-        Insert a test set into the test plan.
-        """
-        
-        if not custom_dir is None:
-            self.custom_dir = custom_dir
-        if data_files is None:
-            data_files = []
-        if config_files is None:
-            config_files = []
-        if image_files is None:
-            image_files = []
-        if sis_files is None:
-            sis_files = []
-        if testmodule_files is None:
-            testmodule_files = []
-        if test_timeout is None:
-            test_timeout = []
-        if eunitexerunner_flags is None:
-            eunitexeruner_flags = []
-        if test_harness is None:
-            test_harness = self.harness
-        if src_dst is None:
-            src_dst = []
-        if pmd_files is None:
-            pmd_files = []
-        if trace_activation_files is None:
-            trace_activation_files = []
-        if component_path is None:
-            component_path = self.component_path
-            
-        setd = dict(name="set%d" % len(self.sets),
-                    image_files=image_files, engine_ini_file=engine_ini_file, ctc_enabled=self.ctc_enabled, component_path=component_path)
-        
-        setd = dict(setd, custom_dir=custom_dir)
-        if sis_files:
-            setd = dict(setd, sis_files=sis_files, test_timeout=test_timeout, eunitexerunner_flags=eunitexerunner_flags, test_harness=test_harness, )
-        else:
-            setd = dict(setd, data_files=data_files, config_files=config_files,
-                        testmodule_files=testmodule_files, test_timeout=test_timeout, eunitexerunner_flags=eunitexerunner_flags, test_harness=test_harness,
-                        src_dst=src_dst)
-        if self.trace_enabled != "":
-            if self.trace_enabled.lower() == "true":
-                setd = dict(setd, pmd_files=pmd_files, 
-                            trace_path=self.file_store.joinpath(self.REPORT_PATH, "traces", setd["name"], "tracelog.blx"),
-                            trace_activation_files=trace_activation_files)
-            else:
-                setd = dict(setd, pmd_files=[], 
-                            trace_path="",trace_activation_files=[])
-        self.sets.append(setd)
-
-    def set_plan_harness(self):
-        """setting up test harness for a plan"""
-        eunit = False
-        stif = False
-        stifunit = False
-        for setd in self.sets:
-            if setd["test_harness"] == "STIF":
-                stif = True
-            elif setd["test_harness"] == "EUNIT":
-                eunit = True
-            elif setd["test_harness"] == "STIFUNIT":
-                stifunit = True
-                
-        if eunit and stif:
-            self.harness = "MULTI_HARNESS"
-        elif eunit:
-            self.harness = "EUNIT"
-        elif stif:
-            self.harness = "STIF"
-        elif stifunit:
-            self.harness = "STIFUNIT"
-        else:
-            self.harness = "GENERIC"
-
-    @property
-    def post_actions(self):
-        """ATS3 post actions."""
-        actions = []
-        temp_var = ""
-        include_ctc_runprocess = False
-        report_path = self.file_store.joinpath(self.REPORT_PATH)
-        
-        if self.ctc_enabled and adg.CTC_PATHS_LIST != [] and self.monsym_files != "" and not "${" in self.monsym_files:
-            include_ctc_runprocess = True
-            ctc_params = "--ctcdata_files="
-            for cdl in adg.CTC_PATHS_LIST:
-                ctc_params += cdl + '\\ctcdata.txt' + ";"
-                temp_var = cdl
-            
-            network_path = r"\\" + self.ctc_run_process_params.rsplit("#", 2)[0]
-            drop_count = self.ctc_run_process_params.rsplit("#", 1)[1]
-            temp_var = temp_var.split("ctc_helium"+os.sep)[1]
-            diamonds_id = temp_var.split(os.sep)[0]
-            drop_id = temp_var.split(os.sep)[1].split(os.sep)[0]
-            drop_id = re.findall(".*drop(\d*)", drop_id.lower())[0] #extracting int part of drop name
-           
-            output_path = os.path.join(network_path, "ctc_helium_http_root", diamonds_id, drop_id)
- 
-            ctc_params += r" --monsym_files=" + self.monsym_files
-            ctc_params += r" --diamonds_build_id=" + diamonds_id
-            ctc_params += r" --drop_id=" + drop_id
-            ctc_params += r" --total_amount_of_drops=" + drop_count
-            
-            runprocess_action = ("RunProcessAction", 
-                            (("file", r"catsctc2html/catsctc2html.exe"), #this line will be executing on Windows machine.
-                             ("parameters", ctc_params)))
-            
-            email_url = " CTC report can be found from: " + self.diamonds_build_url
-
-            email_action = ("SendEmailAction", 
-                            (("subject", self.EMAIL_SUBJECT),
-                             ("type", "ATS3_REPORT"),
-                             ("send-files", "true"),
-                             ("additional-description", email_url),
-                             ("to", self.report_email)))
-        else:
-            email_action = ("SendEmailAction", 
-                            (("subject", self.EMAIL_SUBJECT),
-                             ("type", "ATS3_REPORT"),
-                             ("send-files", "true"),
-                             ("to", self.report_email)))
-        ats3_report = ("FileStoreAction", 
-                       (("to-folder", report_path.joinpath("ATS3_REPORT")),
-                        ("report-type", "ATS3_REPORT"),
-                        ("date-format", "yyyyMMdd"),
-                        ("time-format", "HHmmss")))
-        stif_report = ("FileStoreAction", 
-                       (("to-folder", report_path.joinpath("STIF_REPORT")),
-                        ("report-type", "STIF_COMPONENT_REPORT_ALL_CASES"),
-                        ("run-log", "true"),
-                        ("date-format", "yyyyMMdd"),
-                        ("time-format", "HHmmss")))
-        eunit_report = ("FileStoreAction", 
-                       (("to-folder", report_path.joinpath("EUNIT_REPORT")),
-                        ("report-type", "EUNIT_COMPONENT_REPORT_ALL_CASES"),
-                        ("run-log", "true"),
-                        ("date-format", "yyyyMMdd"),
-                        ("time-format", "HHmmss")))
-        diamonds_action = ("DiamondsAction", ())
-
-        
-        if include_ctc_runprocess:
-            actions.append(runprocess_action)
-            
-        if self.diamonds_build_url:
-            actions.append(diamonds_action)
-        if self.file_store:
-            actions.append(ats3_report)
-            if self.harness == "STIF":
-                actions.append(stif_report)
-            elif self.harness == "EUNIT":
-                actions.append(eunit_report)
-        if self.report_email:
-            actions.append(email_action)
-        return actions               
-
-    def __getitem__(self, key):
-        return self.__dict__[key]
-
-def encode_for_xml(unicode_data, encoding='ascii'):
-    """
-    Encode unicode_data for use as XML or HTML, with characters outside
-    of the encoding converted to XML numeric character references.
-    """
-    try:
-        return unicode_data.encode(encoding, 'xmlcharrefreplace')
-    except ValueError:
-        # ValueError is raised if there are unencodable chars in the
-        # data and the 'xmlcharrefreplace' error handler is not found.
-        # Pre-2.3 Python doesn't support the 'xmlcharrefreplace' error
-        # handler, so we'll emulate it.
-        return _xmlcharref_encode(unicode_data, encoding)
-
-def _xmlcharref_encode(unicode_data, encoding):
-    """Emulate Python 2.3's 'xmlcharrefreplace' encoding error handler."""
-    chars = []
-    # Step through the unicode_data string one character at a time in
-    # order to catch unencodable characters:
-    for char in unicode_data:
-        try:
-            chars.append(char.encode(encoding, 'strict'))
-        except UnicodeError:
-            chars.append('&#%i;' % ord(char))
-    return ''.join(chars)
-
-
-def create_drop(config):
-    """Create a test drop."""
-    _logger.debug("initialize test plan")
-        
-    test_plan = Ats3TestPlan(config)
-    parser = acp.Ats3ComponentParser(config)
-    
-    for tsrc in config.tsrc_paths:
-        lst_check_harness = []
-        _logger.info("inspecting tsrc path: %s" % tsrc)
-        #checking if there are components without harness
-        for sub_component in config.tsrc_paths_dict[tsrc]['content'].keys():
-            _harness_ = config.tsrc_paths_dict[tsrc]['content'][sub_component]['harness']
-            if _harness_ != "":
-                lst_check_harness.append(_harness_)
-
-        #if component has harness then insert to test set 
-        if len(lst_check_harness) > 0:
-            parser.insert_test_set(test_plan, path(tsrc), config.tsrc_paths_dict)
-
-    test_plan.set_plan_harness()
-
-
-    #Checking if any non executable set exists
-    #if yes, delete the set
-    tesplan_counter = 0
-    for plan_sets in test_plan.sets:
-        tesplan_counter += 1
-        exe_flag = False
-        for srcanddst in plan_sets['src_dst']:
-            _ext = srcanddst[0].rsplit(".")[1]
-            #the list below are the files which are executable
-            #if none exists, set is not executable
-            for mat in ["dll", "ini", "cfg", "exe", "script"]:
-                if mat == _ext.lower():
-                    exe_flag = True
-                    break
-            if exe_flag: break
-        
-        if not exe_flag: #the set does not have executable, deleting the set
-            del test_plan.sets[tesplan_counter - 1]
-        
-    if config.ats4_enabled.lower() == 'true':
-        generator = adg.Ats3TemplateTestDropGenerator()
-    else:
-        generator = adg.Ats3TestDropGenerator()
-    _logger.info("generating drop file: %s" % config.drop_file)
-    generator.generate(test_plan, output_file=config.drop_file, config_file=config.config_file)
-
-def split_paths(arg, delim=","):
-    """
-    Split the string by delim, removing extra whitespace.
-    """
-    return [path(part.strip()) 
-            for part in arg.split(delim) if part.strip()]
-
-def to_bool(param):
-    param = str(param).lower()
-    if "true" == param or "t" == param or "1" == param:
-        return "True"
-    else:
-        return "False"
-
-def main():
-    """Main entry point."""
-    cli = OptionParser(usage="%prog [options] TSRC1 [TSRC2 [TSRC3 ...]]")
-    cli.add_option("--build-drive", help="Build area root drive")
-    cli.add_option("--data-dir", help="Data directory name", action="append", 
-                   default=[])
-    cli.add_option("--device-type", help="Device type (e.g. 'PRODUCT')", 
-                   default="unknown")
-    cli.add_option("--device-hwid", help="Device hwid", 
-                   default="")
-    cli.add_option("--trace-enabled", help="Tracing enabled", default="False")
-    cli.add_option("--ctc-enabled", help="CTC enabled", default="False")
-    cli.add_option("--multiset-enabled", help="Multiset enabled", default="False")
-    cli.add_option("--diamonds-build-url", help="Diamonds build url")
-    cli.add_option("--ctc-run-process-params", help="ctc parameters include ctc host, drop id and total number of drops, separated by '#'")
-    cli.add_option("--drop-file", help="Name for the final drop zip file",
-                   default="ATS3Drop.zip")
-    cli.add_option("--file-store", help="Destination path for reports.",
-                   default="")
-    cli.add_option("--flash-images", help="Paths to the flash image files",
-                   default="")     
-    cli.add_option("--minimum-flash-images", help="Minimum amount of flash images",
-                   default=2)    
-    cli.add_option("--harness", help="Test harness (default: %default)",
-                   default="")
-    cli.add_option("--report-email", help="Email notification receivers", 
-                   default="")
-    cli.add_option("--plan-name", help="Name of the test plan", 
-                   default="plan")
-    cli.add_option("--sis-files", help="Paths to the sis files",
-                   default="")
-    cli.add_option("--monsym-files", help="Paths to MON.sym files, for ctc useage",
-                   default="")
-    cli.add_option("--target-platform", help="Target platform (default: %default)",
-                   default="armv5 urel")
-    cli.add_option("--test-timeout", help="Test execution timeout value (default: %default)",
-                   default="60")
-    cli.add_option("--eunitexerunner-flags", help="Eunitexerunner flags",
-                   default="")
-    cli.add_option("--testrun-name", help="Name of the test run", 
-                   default="run")
-    cli.add_option("--config", help="Path to the config file",
-                   default="")
-    cli.add_option("--ats4-enabled", help="ATS4 enabled", default="False")
-    cli.add_option("--obey-pkgfiles", help="If this option is True, then only test components having PKG file are executable and if the compnents don't have PKG files they will be ignored.", default="False")
-    cli.add_option("--verbose", help="Increase output verbosity", 
-                   action="store_true", default=False)
-    
-    opts, tsrc_paths = cli.parse_args()
-
-    if not tsrc_paths:
-        cli.error("no tsrc directories given")
-    if not opts.flash_images:
-        cli.error("no flash image files given")
-    if not opts.build_drive:
-        cli.error("no build drive given")      
-    if len(opts.flash_images.split(",")) < int(opts.minimum_flash_images):
-        cli.error("Not enough flash files: %i defined, %i needed" % (len(opts.flash_images.split(",")), int(opts.minimum_flash_images) ))
-
-    if opts.verbose:
-        _logger.setLevel(logging.DEBUG)
-        logging.basicConfig(level=logging.DEBUG)
-    
-    config = Configuration(opts, tsrc_paths)
-    create_drop(config)
-
-
-if __name__ == "__main__":
-    main()
--- a/buildframework/helium/tools/common/python/lib/ats3/aste.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,452 +0,0 @@
-# -*- encoding: latin-1 -*-
-
-#============================================================================ 
-#Name        : aste.py 
-#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:
-#===============================================================================
-
-"""ASTE test drop generation."""
-
-from optparse import OptionParser
-from textwrap import dedent
-from xml.etree import ElementTree as et
-from xml.sax.saxutils import quoteattr
-import logging
-import os
-import re
-import sys
-import tempfile
-import zipfile
-
-from path import path
-import amara
-import ntpath as atspath
-import jinja2
-
-_logger = logging.getLogger('ats3')
-
-# Shortcuts
-E = et.Element
-SE = et.SubElement
-TEMP_PATH = None
-
-class Configuration(object):
-    """
-    ASTE drop generation configuration.
-    """
-    
-    def __init__(self, opts):
-        """
-        Initialize from optparse configuration options.
-        """
-        self._opts = opts
-        # Customize some attributes from how optparse leaves them.
-        self.build_drive = path(self._opts.build_drive)
-        self.file_store = path(self._opts.file_store)
-        self.flash_images = self.split_paths(self._opts.flash_images)
-    
-    def split_paths(self, arg, delim=","):
-        """
-        Split the string by delim, removing extra whitespace.
-        """
-        return [path(part.strip()) 
-                for part in arg.split(delim) if part.strip()]
-    
-    def __getattr__(self, attr):
-        return getattr(self._opts, attr)
-    
-    def __str__(self):
-        dump = "Configuration:\n"
-        seen = set()
-        for key, value in vars(self).items():
-            if not key.startswith("_"):
-                dump += "\t%s = %s\n" % (key, value)
-                seen.add(key)
-        for key, value in vars(self._opts).items():
-            if key not in seen:
-                dump += "\t%s = %s\n" % (key, value)
-                seen.add(key)                
-        return dump
-    
-
-class AsteTestPlan(object):
-    """
-    Tells ASTE server what to test and how.
-    
-    The ASTE test plan from which the test.xml file can be written. The test
-    plan requires TestAsset(s) to perform the tests
-    """
-
-    EMAIL_SUBJECT = (u"ATS3 report for §RUN_NAME§ §RUN_START_DATE§ "
-                     u"§RUN_START_TIME§")
-    REPORT_PATH = u"§RUN_NAME§\§RUN_START_DATE§_§RUN_START_TIME§"
-
-    def __init__(self, config):
-        self.diamonds_build_url = config.diamonds_build_url
-        self.testrun_name = config.testrun_name
-        self.harness = "ASTE"
-        self.device_type = config.device_type
-        self.test_type = config.test_type
-        self.device_hwid = config.device_hwid
-        self.plan_name = config.plan_name
-        self.report_email = config.report_email
-        self.file_store = config.file_store
-        self.test_timeout = config.test_timeout
-        self.testasset_location = config.testasset_location
-        self.testasset_caseids = config.testasset_caseids
-        self.software_version = config.software_version
-        self.device_language = config.device_language
-        self.software_release = config.software_release
-        self.sets = []
-        self.temp_directory = path(tempfile.mkdtemp())
-
-    def insert_set(self, image_files=None, test_timeout=None, ):
-        """
-        Insert a test set into the test plan.
-        """
-        if image_files is None:
-            image_files = []
-        if test_timeout is None:
-            test_timeout = []
-        test_harness = self.harness
-        setd = dict(name="set%d" % len(self.sets), image_files=image_files)
-        setd = dict(setd, test_timeout=test_timeout, test_harness=test_harness)
-        
-        self.sets.append(setd)
-
-    @property
-    def post_actions(self):
-        """ATS3 and ASTE post actions."""
-        actions = []
-        report_path = self.file_store.joinpath(self.REPORT_PATH)
-        email_action = ("SendEmailAction", 
-                        (("subject", self.EMAIL_SUBJECT),
-                         ("type", "ATS3_REPORT"),
-                         ("send-files", "true"),
-                         ("to", self.report_email)))
-        ats3_report = ("FileStoreAction", 
-                       (("to-folder", report_path.joinpath("ATS3_REPORT")),
-                        ("report-type", "ATS_REPORT"),
-                        ("date-format", "yyyyMMdd"),
-                        ("time-format", "HHmmss")))
-        aste_report = ("FileStoreAction", 
-                       (("to-folder", report_path.joinpath("ASTE_REPORT")),
-                        ("report-type", "ASTE_REPORT"),
-                        ("run-log", "true"),
-                        ("date-format", "yyyyMMdd"),
-                        ("time-format", "HHmmss")))
-
-        diamonds_action = ("DiamondsAction", ())
-        if self.report_email:
-            actions.append(email_action)
-        if self.file_store:
-            actions.append(ats3_report)
-            actions.append(aste_report)
-        if self.diamonds_build_url:
-            actions.append(diamonds_action)
-        return actions               
-
-    def __getitem__(self, key):
-        return self.__dict__[key]
-
-
-
-class AsteTestDropGenerator(object):
-    """
-    Generate test drop zip file for ATS3.
-
-    Generates drop zip files file from a TestPlan instance. The main
-    responsibility of this class is to serialize the plan into a valid XML
-    file and build a zip file for the drop.
-    
-    Creates one <set> for ASTE tests.
-
-    ASTE harness, normal operation
-    ------------------------------
-    
-    - create logging dir for aste             makedir (to C:\logs\TestFramework)
-    - execute asset from the testasset.zip    execute-asset
-    - fetch logs                              fetch-log
-
-    """
-
-    ASTE_LOG_DIR = r"c:\logs\testframework"
-
-    def __init__(self):
-        self.drop_path_root = path("ATS3Drop")
-        self.drop_path = None
-        self.defaults = {}
-
-    def generate(self, test_plan, output_file):
-        """Generate a test drop file."""
-        xml = self.generate_xml(test_plan)
-        return self.generate_drop(test_plan, xml, output_file)
-
-    def generate_drop(self, test_plan, xml, output_file):
-        """Generate test drop zip file."""
-        zfile = zipfile.ZipFile(output_file, "w", zipfile.ZIP_DEFLATED)
-        try:
-            for drop_file, src_file in self.drop_files(test_plan):
-                _logger.info("   + Adding: %s" % src_file.strip())
-                zfile.write(src_file.strip(), drop_file.encode('utf-8'))
-            doc = amara.parse(et.tostring(xml.getroot()))
-            _logger.debug("XML output: %s" % doc.xml(indent=u"yes"))
-            zfile.writestr("test.xml", doc.xml(indent="yes"))
-        finally:
-            zfile.close()
-        return zfile
-
-    def generate_xml(self, test_plan):
-        """Generate test drop XML."""
-        self.defaults = {"enabled": "true", 
-                         "passrate": "100", 
-                         "significant": "false",
-                         "harness": "%s" % test_plan["harness"]} 
-        root = E("test")
-        root.append(et.XML("<name>%(testrun_name)s</name>" % test_plan))
-        if test_plan["diamonds_build_url"]:
-            root.append(
-                et.XML("<buildid>%(diamonds_build_url)s</buildid>" % test_plan))
-        self.generate_target(test_plan, root)
-        root.append(self.generate_plan(test_plan))
-        for post_action in self.generate_post_actions(test_plan):
-            root.append(post_action)
-        root.append(self.generate_files(test_plan))
-        etree = et.ElementTree(root)
-        return etree
-
-    def generate_target(self, test_plan, root):
-        """Append target(s) into the XML"""
-        target = E("target")
-        device = SE(target, "device", rank="none", alias="DEFAULT")
-        SE(device, "property", name="harness", value=test_plan["harness"])
-        SE(device, "property", name="hardware", value=test_plan["device_type"])
-        SE(device, "setting", name="softwareVersion", value=test_plan["software_version"])
-        SE(device, "setting", name="softwareRelease", value=test_plan["software_release"])
-        SE(device, "setting", name="language", value=test_plan["device_language"])
-        
-        if test_plan["device_hwid"] != "":
-            SE(device, "property", name="HWID", value=test_plan["device_hwid"])
-        root.append(target)
-                    
-    def generate_plan(self, test_plan):
-        """Generate the test <plan> with multiple <set>s."""
-        plan = E("plan", name="Plan %s %s" % (test_plan["test_type"], test_plan["device_type"]), **self.defaults)
-        session = SE(plan, "session", name="session", **self.defaults)
-        # One set for each component.
-        for setd in test_plan.sets:
-            self.drop_path = self.drop_path_root.joinpath(setd["name"])
-            elem = SE(session, "set", name=setd["name"], **self.defaults)
-            SE(SE(elem, "target"), "device", rank="master", alias="DEFAULT")
-            case = SE(elem, "case", name="%s case" % setd["name"], **self.defaults)
-            self.generate_steps(setd, case, test_plan)
-        return plan
-
-    def generate_steps(self, setd, case, test_plan):
-        """Generate the test plan <step>s."""
-        # Flash images.
-        images = self.drop_path_root.joinpath("images")
-        for image_file in setd["image_files"]:
-            flash = SE(case, "flash", images=images.joinpath(image_file.name))
-            flash.set("target-alias", "DEFAULT")
-
-        # If tracing enabled:
-        self.generate_execute_asset_steps(case, test_plan)
-
-    def generate_execute_asset_steps(self, case, test_plan):
-        """Executes steps for TestAsset"""
-        time_out = test_plan["test_timeout"]
-        step = SE(case, "step", 
-                      name="Execute asset zip step" , **self.defaults)
-        SE(step, "command").text = "execute-asset"
-        params = SE(step, "params")
-        SE(params, "param", repeat="1")        
-        elem = SE(params, "param")
-        elem.set("asset-source", path(r"ATS3Drop" + os.sep + "TestAssets" + os.sep + "TestAsset.zip"))
-        elem = SE(params, "param")
-        elem.set("testcase-ids", test_plan["testasset_caseids"])
-        SE(params, "param", timeout=time_out)
-
-
-    def generate_post_actions(self, test_plan):
-        """Generate post actions."""
-        actions = []
-        for action_type, parameters in test_plan.post_actions:
-            action = E("postAction")
-            SE(action, "type").text = action_type
-            params = SE(action, "params")
-            for name, value in parameters:
-                SE(params, "param", name=name, value=value)
-            actions.append(action)
-        return actions
-
-    def generate_testasset_zip(self, test_plan, output_file=None):
-        """Generate TestAsset.zip for the ASTE server"""
-        filename = test_plan["temp_directory"].joinpath(r"TestAsset.zip")
-        if output_file != None:
-            filename = output_file
-        testasset_location = path(test_plan["testasset_location"])
-        if re.search(r"[.]zip", testasset_location):
-            return testasset_location
-        else:
-            zfile = zipfile.ZipFile(filename, "w", zipfile.ZIP_DEFLATED)
-            try:
-                for file_ in list(testasset_location.walkfiles()):
-                    file_mod = file_.replace(testasset_location, "")
-                    zfile.write(file_, file_mod.encode('utf-8'))
-            finally:
-                zfile.close()
-            return filename
-            
-    def drop_files(self, test_plan):
-        """Yield a list of drop files."""
-        drop_set = set()
-        drop_files = []
-        zip_file = path(self.generate_testasset_zip(test_plan)) ##check here, I changed the variable name from "zipfile" to "zip_file"
-        for setd in test_plan.sets:
-            drop_path = self.drop_path_root.joinpath(setd["name"])
-            drop_files = ((drop_path.parent, "images", setd["image_files"]),
-                          (drop_path.parent, "TestAssets", [zip_file]))
-            for drop_dir, sub_dir, files in drop_files:
-                for file_path in files:
-                    if file_path != None:
-                        drop_file = drop_dir.joinpath(sub_dir, file_path.name)
-                        drop_file = drop_file.normpath()
-                        if drop_file not in drop_set:
-                            drop_set.add(drop_file)
-                            yield (drop_file, file_path.normpath())
-           
-
-    def generate_files(self, test_plan):
-        """Generate the <files> section."""
-        files_elem = E("files")
-        for drop_file, _ in self.drop_files(test_plan):
-            SE(files_elem, "file").text = drop_file
-        return files_elem
-
-class AsteComponentParser(object):
-    """
-   
-    Add information to the test_plan
-    
-    """
-
-    def __init__(self, config):
-        self.flash_images = [path(p) for p in config.flash_images]
-        self.build_drive = config.build_drive
-        self.test_timeout = config.test_timeout
-
-     
-    def insert_test_set(self, test_plan):
-        """Parse flash images and creates inserts into 'sets'"""
-
-        test_plan.insert_set(image_files=self.flash_images,
-                             test_timeout=list(self.test_timeout))
-                                
-class AsteTemplateTestDropGenerator(AsteTestDropGenerator):
-    def getlogdir(self, setd):
-        return self.ASTE_LOG_DIR
-    
-    def aslfiles(self, test_plan):
-        files = []
-        
-        testasset_location = path(test_plan["testasset_location"])
-        for file_ in list(testasset_location.walkfiles()):
-            if file_.endswith('.asl'):
-                files.append(file_.replace(testasset_location + os.sep, ""))
-        return files
-    
-    def generate_xml(self, test_plan):
-        loader = jinja2.ChoiceLoader([jinja2.FileSystemLoader(os.path.join(os.environ['HELIUM_HOME'], 'tools/common/python/lib/ats3/templates'))])
-        env = jinja2.Environment(loader=loader)
-        template = env.from_string(open(os.path.join(os.environ['HELIUM_HOME'], 'tools/common/python/lib/ats3/aste_template.xml')).read())
-        
-        xmltext = template.render(test_plan=test_plan, os=os, atspath=atspath, atsself=self).encode('ISO-8859-1')
-        return et.ElementTree(et.XML(xmltext))
-
-def create_drop(config):
-    """Create a test drop."""    
-    _logger.debug("initialize test plan")
-    
-    test_plan = AsteTestPlan(config)
-    parser = AsteComponentParser(config)
-    parser.insert_test_set(test_plan) ######check here if something goes wrong, removed ", path(tsrc)"
-    if config.ats4_enabled.lower() == 'true':
-        generator = AsteTemplateTestDropGenerator()
-    else:
-        generator = AsteTestDropGenerator()
-    _logger.info("generating drop file: %s" % config.drop_file)
-    generator.generate(test_plan, output_file=config.drop_file)
-
-
-def main():
-    """Main entry point."""    
-    cli = OptionParser(usage="%prog [options] TSRC1 [TSRC2 [TSRC3 ...]]")
-    cli.add_option("--build-drive", help="Build area root drive")
-    cli.add_option("--device-type", help="Device type (e.g. 'PRODUCT')", 
-                   default="unknown")
-    cli.add_option("--device-hwid", help="Device hwid", 
-                   default="")
-    cli.add_option("--diamonds-build-url", help="Diamonds build url")
-    cli.add_option("--drop-file", help="Name for the final drop zip file",
-                   default="ATS3Drop.zip")
-    cli.add_option("--file-store", help="Destination path for reports.",
-                   default="")
-    cli.add_option("--flash-images", help="Paths to the flash image files",
-                   default="")     
-    cli.add_option("--minimum-flash-images", help="Minimum amount of flash images",
-                   default=2)
-    cli.add_option("--report-email", help="Email notification receivers", 
-                   default="")
-    cli.add_option("--plan-name", help="Name of the test plan", 
-                   default="plan")
-    cli.add_option("--test-timeout", help="Test execution timeout value (default: %default)",
-                   default="60")
-    cli.add_option("--testrun-name", help="Name of the test run", 
-                   default="run")
-    cli.add_option("--testasset-location", help="Path to the ASTE test assets location",
-                   default="")     
-    cli.add_option("--testasset-caseids", help="Test case IDs to run",
-                   default="")     
-    cli.add_option("--software-version", help="Sofwtare version",
-                   default="")     
-    cli.add_option("--test-type", help="Sofwtare version",
-                   default="smoke")     
-    cli.add_option("--device-language", help="language name e.g. English",
-                   default="English")     
-    cli.add_option("--software-release", help="Software release or product name e.g. PPD 52.50",
-                   default="")     
-    cli.add_option("--ats4-enabled", help="ATS4 enabled", default="False")
-    cli.add_option("--verbose", help="Increase output verbosity",
-                   action="store_true", default=False)
-
-    opts, _ = cli.parse_args()
-
-    if not opts.flash_images:
-        cli.error("no flash image files given")
-    if len(opts.flash_images.split(",")) < int(opts.minimum_flash_images):
-        cli.error("Not enough flash files: %i defined, %i needed" % (len(opts.flash_images.split(",")), int(opts.minimum_flash_images) ))
-
-    if opts.verbose:
-        _logger.setLevel(logging.DEBUG)
-        logging.basicConfig(level=logging.DEBUG)
-    TEMP_PATH = tempfile.mkdtemp()
-    config = Configuration(opts)
-    create_drop(config)
-
-if __name__ == "__main__":
-    main()
--- a/buildframework/helium/tools/common/python/lib/ats3/aste_template.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,224 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
-<!-- 
-============================================================================ 
-Name        : aste_template.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:
-Contains the template for the test.xml file output. The test.xml file contains
-information on the files used to create the drop file.
-============================================================================
--->
-
-{% import 'ats4_macros.xml' as macros with context %}
-
-<testrun>
-    <metadata>
-        {% if test_plan['diamonds_build_url'] -%}
-        <meta name="diamonds-buildid">{{ test_plan['diamonds_build_url'] }}</meta> 
-        <meta name="diamonds-testtype">Smoke</meta>
-        {% endif %}
-        <meta name="name">{{ test_plan['testrun_name'] }}</meta> 
-    </metadata>
-    
-    <agents>
-        <agent alias="DEFAULT_{{ test_plan['harness'] }}">
-            <property name="hardware" value="{{ test_plan["device_type"] }}"/>
-        </agent>
-    </agents>
-    
-    {% include 'preset_custom.xml' ignore missing %}
-    
-    {% for setd in test_plan.sets -%}
-    <execution defaultAgent="DEFAULT_{{ test_plan['harness'] }}">        
-        <initialization>
-            {% include 'prestep_custom.xml' ignore missing %}
-        
-            {% if setd.image_files -%}
-            <task>
-                <type>FlashTask</type>
-                <parameters>
-                {% set i = 1 %}
-                {% for img in setd.image_files -%}
-                    <parameter name="image-{{ i }}" value="ATS3Drop\images\{{ os.path.basename(img) }}" />
-                    {% set i = i + 1 %}
-                {% endfor -%}
-                </parameters>
-            </task>
-            {% endif %}
-            
-            {% if setd["ctc_enabled"] == "True" -%}
-            {{ macros.ctc_initialization() }}
-            {% endif %}
-            
-            <task>
-                <type>CreateDirTask</type>
-                <parameters>                
-                    <parameter value="{{ atsself.getlogdir(setd) }}" name="dir"/>
-                </parameters>
-            </task>
-                      
-          {% if setd.has_key("sis_files") and setd["sis_files"] -%}
-              {% for sis_file in setd["sis_files"] -%}
-            <task>
-                <type>FileUploadTask</type>
-                <parameters>
-                    <parameter name="src" value="ATS3Drop\{{ setd.name }}\sis\{{ os.path.basename(sis_file) }}"/>
-                    <parameter name="dst" value="c:\testframework\{{ os.path.basename(sis_file) }}"/>
-                </parameters>
-            </task>
-              {% endfor -%}
-          {% else %}
-              {% if setd['src_dst'] != [] -%}
-                {% for file in setd['src_dst'] -%}            
-            <task>
-                <type>FileUploadTask</type>
-                <parameters>
-                    <parameter value="ATS3Drop\{{ setd.name }}\{{ file[1].replace(":", "") }}" name="src"/>
-                    <parameter value="{{ file[1] }}" name="dst"/>
-                </parameters>
-            </task>
-                {% endfor -%}
-              {% else %}
-                  {% for data_file in setd["data_files"] -%}
-            <task>
-                <type>FileUploadTask</type>
-                <parameters>
-                    <parameter name="src" value="ATS3Drop\{{ setd.name }}\data\{{ os.path.basename(data_file) }}"/>
-                    <parameter name="dst" value="e:\testing\data\{{ os.path.basename(data_file) }}"/>
-                </parameters>
-            </task>
-                  {% endfor -%}
-                  {% for data_file in setd["config_files"] -%}
-            <task>
-                <type>FileUploadTask</type>
-                <parameters>
-                    <parameter name="src" value="ATS3Drop\{{ setd.name }}\conf\{{ os.path.basename(data_file) }}"/>
-                    <parameter name="dst" value="e:\testing\conf\{{ os.path.basename(data_file) }}"/>
-                </parameters>
-            </task>
-                  {% endfor -%}
-                  {% for data_file in setd["testmodule_files"] -%}
-            <task>
-                <type>FileUploadTask</type>
-                <parameters>
-                    <parameter name="src" value="ATS3Drop\{{ setd.name }}\testmodules\{{ os.path.basename(data_file) }}"/>
-                    <parameter name="dst" value="c:\sys\bin\{{ os.path.basename(data_file) }}"/>
-                </parameters>
-            </task>
-                  {% endfor -%}
-              {% endif %}
-          {% endif %}
-          
-          {% if setd.engine_ini_file -%}
-              {% if (setd.has_key("sis_files") and setd["sis_files"]) or setd["src_dst"] == [] -%}
-            <task>
-                <type>FileUploadTask</type>
-                <parameters>
-                    <parameter name="src" value="ATS3Drop\{{ setd.name }}\init\{{ os.path.basename(setd["engine_ini_file"]) }}"/>
-                    <parameter name="dst" value="c:\testframework\{{ os.path.basename(setd["engine_ini_file"]) }}"/>
-                </parameters>
-            </task>
-              {% endif %}
-          {% endif %}
-          
-          {% for sis_file in setd["sis_files"] -%}
-            <task>
-               <type>InstallSisTask</type>
-               <parameters>
-                    <parameter name="timeout" value="{{ test_plan["test_timeout"] }}"/>
-                    <parameter name="upgrade-data " value="true"/>
-                    <parameter name="ignore-ocsp-warnings" value="true"/>
-                    <parameter name="ocsp-done" value="true"/>
-                    <parameter name="software-package" value="c:\testframework\{{ os.path.basename(sis_file) }}"/>
-               </parameters>
-            </task>
-          {% endfor -%}
-        </initialization>    
-        
-        {% include 'prerun_custom.xml' ignore missing %}
-
-        <task>
-           <type>SetTestAssetPackageTask</type>
-           <parameters>
-              <parameter name="file" value="ATS3Drop\TestAssets\TestAsset.zip"/>
-           </parameters>
-        </task>
-        
-        <task>
-           <type>ExecuteTestAssetTask</type>
-           <parameters>
-          {% set i = 1 %}     
-          {% for name in atsself.aslfiles(test_plan) -%}
-              <parameter name="script_{{ i }}" value="{{ name }}"/>
-              {% set i = i + 1 %}
-          {% endfor -%}
-           </parameters>
-        </task>
-        
-        {% include 'postrun_custom.xml' ignore missing %}
-        
-        <finalization>
-        {% if setd["ctc_enabled"] == "True" -%}
-        {{ macros.ctc_finalization(setd) }}
-        {% endif %}
-
-            <task>
-                <type>FileDownloadTask</type>
-                <parameters>
-                    <parameter value="{{ atsself.getlogdir(setd) }}\*" name="dir"/>
-                </parameters>
-            </task>
-        {% include 'poststep_custom.xml' ignore missing %}
-        </finalization>
-        
-    </execution>    
-    {% endfor -%}
-    
-    {% include 'postset_custom.xml' ignore missing %}
-    
-    <postActions>
-        {% include 'prepostaction.xml' ignore missing %}
-        {% for action_type, parameters in test_plan.post_actions -%}
-            {% if action_type == 'RunProcessAction' %}
-        <action>
-            <type>{{ action_type }}</type>
-            <parameters>
-                {% for name, value in parameters -%}
-                <parameter name="{{ name }}" value="{{ value }}"/>
-                {% endfor -%}
-            </parameters>
-        </action>
-            {% endif %}
-        {% endfor -%}
-        {% if test_plan['report_email'] -%}
-        <action>
-            <type>EmailAction</type>
-            <parameters>
-                <parameter value="Release testing" name="subject"/>
-                <parameter value="{{ test_plan['report_email'] }}" name="to"/>
-                <parameter value="simplelogger" name="format"/>
-            </parameters>
-        </action>
-        {% endif %}
-        {% if test_plan['diamonds_build_url'] -%}
-        <action>
-            <type>DiamondsAction</type>
-        </action>
-        {% endif %}
-        {% include 'postpostaction.xml' ignore missing %}
-    </postActions>
-    
-</testrun>
--- a/buildframework/helium/tools/common/python/lib/ats3/ats4_template.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,264 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
-<!-- 
-============================================================================ 
-Name        : ats_template.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:
-Contains the template for the test.xml file output. The test.xml file contains
-information on the files used to create the drop file.
-============================================================================
--->
-
-{% import 'ats4_macros.xml' as macros with context %}
-
-<testrun>
-    <metadata>
-        {% if test_plan['diamonds_build_url'] -%}
-        <meta name="diamonds-buildid">{{ test_plan['diamonds_build_url'] }}</meta> 
-        <meta name="diamonds-testtype">Smoke</meta>
-        {% endif %}
-        <meta name="name">{{ test_plan['testrun_name'] }}</meta> 
-    </metadata>
-    
-    <agents>
-        <agent alias="DEFAULT_{{ test_plan['harness'] }}">
-            <property name="hardware" value="{{ test_plan["device_type"] }}"/>
-        </agent>
-    </agents>
-    
-    {% include 'preset_custom.xml' ignore missing %}
-    
-    {% for setd in test_plan.sets -%}
-    <execution defaultAgent="DEFAULT_{{ test_plan['harness'] }}">        
-        <initialization>
-            {% include 'prestep_custom.xml' ignore missing %}
-        
-            {% if setd.image_files -%}
-            <task>
-                <type>FlashTask</type>
-                <parameters>
-                {% set i = 1 %}
-                {% for img in atsself.get_sorted_images(setd) -%}
-                    <parameter name="image-{{ i }}" value="ATS3Drop\images\{{ os.path.basename(img) }}" />
-                    {% set i = i + 1 %}
-                {% endfor -%}
-                </parameters>
-            </task>
-            {% endif %}
-            
-            {% if setd["ctc_enabled"] == "True" -%}
-            {{ macros.ctc_initialization() }}
-            {% endif %}
-            
-            <task>
-                <type>CreateDirTask</type>
-                <parameters>                
-                    <parameter value="{{ atsself.getlogdir(setd) }}" name="dir"/>
-                </parameters>
-            </task>
-                      
-          {% if setd.has_key("sis_files") and setd["sis_files"] -%}
-              {% for sis_file in setd["sis_files"] -%}
-            <task>
-                <type>FileUploadTask</type>
-                <parameters>
-                    <parameter name="src" value="ATS3Drop\{{ setd.name }}\sis\{{ os.path.basename(sis_file) }}"/>
-                    <parameter name="dst" value="c:\testframework\{{ os.path.basename(sis_file) }}"/>
-                </parameters>
-            </task>
-              {% endfor -%}
-          {% else %}
-              {% if setd['src_dst'] != [] -%}
-                {% for file in setd['src_dst'] -%}            
-            <task>
-                <type>FileUploadTask</type>
-                <parameters>
-                    <parameter value="ATS3Drop\{{ setd.name }}\{{ file[1].replace(":", "") }}" name="src"/>
-                    <parameter value="{{ file[1] }}" name="dst"/>
-                </parameters>
-            </task>
-                {% endfor -%}
-              {% else %}
-                  {% for data_file in setd["data_files"] -%}
-            <task>
-                <type>FileUploadTask</type>
-                <parameters>
-                    <parameter name="src" value="ATS3Drop\{{ setd.name }}\data\{{ os.path.basename(data_file) }}"/>
-                    <parameter name="dst" value="e:\testing\data\{{ os.path.basename(data_file) }}"/>
-                </parameters>
-            </task>
-                  {% endfor -%}
-                  {% for data_file in setd["config_files"] -%}
-            <task>
-                <type>FileUploadTask</type>
-                <parameters>
-                    <parameter name="src" value="ATS3Drop\{{ setd.name }}\conf\{{ os.path.basename(data_file) }}"/>
-                    <parameter name="dst" value="e:\testing\conf\{{ os.path.basename(data_file) }}"/>
-                </parameters>
-            </task>
-                  {% endfor -%}
-                  {% for data_file in setd["testmodule_files"] -%}
-            <task>
-                <type>FileUploadTask</type>
-                <parameters>
-                    <parameter name="src" value="ATS3Drop\{{ setd.name }}\testmodules\{{ os.path.basename(data_file) }}"/>
-                    <parameter name="dst" value="c:\sys\bin\{{ os.path.basename(data_file) }}"/>
-                </parameters>
-            </task>
-                  {% endfor -%}
-              {% endif %}
-          {% endif %}
-          
-          {% if setd.engine_ini_file -%}
-              {% if (setd.has_key("sis_files") and setd["sis_files"]) or setd["src_dst"] == [] -%}
-            <task>
-                <type>FileUploadTask</type>
-                <parameters>
-                    <parameter name="src" value="ATS3Drop\{{ setd.name }}\init\{{ os.path.basename(setd["engine_ini_file"]) }}"/>
-                    <parameter name="dst" value="c:\testframework\{{ os.path.basename(setd["engine_ini_file"]) }}"/>
-                </parameters>
-            </task>
-              {% endif %}
-          {% endif %}
-          
-          {% for sis_file in setd["sis_files"] -%}
-            <task>
-               <type>InstallSisTask</type>
-               <parameters>
-                    <parameter name="timeout" value="{{ test_plan["test_timeout"] }}"/>
-                    <parameter name="upgrade-data " value="true"/>
-                    <parameter name="ignore-ocsp-warnings" value="true"/>
-                    <parameter name="ocsp-done" value="true"/>
-                    <parameter name="software-package" value="c:\testframework\{{ os.path.basename(sis_file) }}"/>
-               </parameters>
-            </task>
-          {% endfor -%}
-        </initialization>    
-        
-        {% include 'prerun_custom.xml' ignore missing %}
-
-        {% if setd['src_dst'] -%}
-            {{ macros.generate_runsteps_stif(setd) }}
-            
-            {% for file in setd['src_dst'] -%}
-                {% if setd["test_harness"] == "GENERIC" -%}
-                    {% if 'testscript' in file[2] -%}
-        <task>
-            <type>TEFTask</type>
-            <parameters>
-                <parameter name="file" value="testexecute.exe"/>
-                <parameter name="parameters" value="{{ file[1] }}"/>
-                <parameter name="timeout" value="{{ test_plan["test_timeout"] }}"/>
-                <parameter name="result-file" value="{{ atsself.TEF_LOG_DIR }}\{{ os.path.basename(file[1]).replace('.script', '.htm') }}"/>
-            </parameters>
-        </task>
-                    {% endif %}
-                    
-                    {% if 'testmodule' in file[2] -%}
-        <task>
-            <type>ExecutableTestCaseTask</type>
-            <parameters>
-                <parameter name="file" value="{{ file[1] }}"/>
-                <parameter name="parser" value="RTestResultParser" />
-                <parameter name="timeout" value="{{ test_plan["test_timeout"] }}"/>
-                <parameter name="result-file" value="{{ atsself.TEF_LOG_DIR }}\{{ os.path.basename(file[1]).replace('.exe', '.htm') }}"/>
-            </parameters>
-        </task>
-                    {% endif %}
-                {% endif %}
-                {% if setd["test_harness"] == "EUNIT" -%}
-                    {% if file[2] == "testmodule" -%}
-        <task>
-            <type>EUnitTask</type>
-            <parameters>
-                <parameter value="z:\sys\bin\EUNITEXERUNNER.EXE" name="file"/>
-                <parameter name="result-file" value="{{ atsself.EUNIT_LOG_DIR }}\{{ atspath.basename(file[1]).replace('.' + file[1].rsplit(".")[1], '_log.xml') }}"/>
-                <parameter name="parameters" value="{{ test_plan["eunitexerunner_flags"] }} /F {{ atspath.basename(file[1]).replace('.dll', '').replace('.exe', '') }} /l xml {{ atspath.basename(file[1]) }}"/>
-                <parameter name="timeout" value="{{ test_plan["test_timeout"] }}"/>
-            </parameters>
-        </task>
-                    {% endif %}
-                    {% if file[2] == "testmodule:qt" -%}
-        <task>
-            <type>QTestTask</type>
-            <parameters>
-                <parameter name="file" value="{{ file[1] }}"/>                      
-                <parameter name="parameters" value="-lightxml -o {{ atsself.QT_LOG_DIR }}\{{ os.path.basename(file[1]).replace('.' + file[1].rsplit(".")[1], '_log.xml') }}"/>
-                <parameter name="result-file" value="{{ atsself.QT_LOG_DIR }}\{{ os.path.basename(file[1]).replace('.' + file[1].rsplit(".")[1], '_log.xml') }}"/>
-                <parameter name="timeout" value="{{ test_plan["test_timeout"] }}"/>
-            </parameters>
-        </task>
-                    {% endif %}
-                {% endif %}
-            {% endfor -%}
-        {% else %}
-            {{ macros.generate_runsteps_stif_single_set(setd) }}
-        {% endif %}
-        
-        {% include 'postrun_custom.xml' ignore missing %}
-        
-        <finalization>
-        {% if setd["ctc_enabled"] == "True" -%}
-        {{ macros.ctc_finalization(setd) }}
-        {% endif %}
-
-            <task>
-                <type>FileDownloadTask</type>
-                <parameters>
-                    <parameter value="{{ atsself.getlogdir(setd) }}\*" name="dir"/>
-                </parameters>
-            </task>
-        {% include 'poststep_custom.xml' ignore missing %}
-        </finalization>
-        
-    </execution>    
-    {% endfor -%}
-    
-    {% include 'postset_custom.xml' ignore missing %}
-    
-    <postActions>
-        {% include 'prepostaction.xml' ignore missing %}
-        {% for action_type, parameters in test_plan.post_actions -%}
-            {% if action_type == 'RunProcessAction' %}
-        <action>
-            <type>{{ action_type }}</type>
-            <parameters>
-                {% for name, value in parameters -%}
-                <parameter name="{{ name }}" value="{{ value }}"/>
-                {% endfor -%}
-            </parameters>
-        </action>
-            {% endif %}
-        {% endfor -%}
-        {% if test_plan['report_email'] -%}
-        <action>
-            <type>EmailAction</type>
-            <parameters>
-                <parameter value="Release testing" name="subject"/>
-                <parameter value="{{ test_plan['report_email'] }}" name="to"/>
-                <parameter value="simplelogger" name="format"/>
-            </parameters>
-        </action>
-        {% endif %}
-        {% if test_plan['diamonds_build_url'] -%}
-        <action>
-            <type>DiamondsAction</type>
-        </action>
-        {% endif %}
-        {% include 'postpostaction.xml' ignore missing %}
-    </postActions>
-    
-</testrun>
--- a/buildframework/helium/tools/common/python/lib/ats3/ats_template.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,274 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!-- 
-============================================================================ 
-Name        : ats_template.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:
-Contains the template for the test.xml file output. The test.xml file contains
-information on the files used to create the drop file.
-============================================================================
--->
-<test>
-    <name>{{ test_plan['testrun_name'] }}</name>
-    <buildid>{{ test_plan['diamonds_build_url'] }}</buildid>
-    <target>
-    {% if test_plan["harness"] == "MULTI_HARNESS" -%}
-        <device alias="DEFAULT_STIF" rank="none">        
-            <property name="HARNESS" value="STIF"/>
-            <property name="TYPE" value="{{ test_plan['device_type'] }}"/>
-            {% if test_plan["device_hwid"] != "" -%}
-            <property name="HWID" value="{{ test_plan["device_hwid"] }}"/>
-            {% endif %}
-        </device>
-        <device alias="DEFAULT_EUNIT" rank="none">        
-            <property name="HARNESS" value="EUNIT"/>
-            <property name="TYPE" value="{{ test_plan['device_type'] }}"/>
-            {% if test_plan["device_hwid"] != "" -%}
-            <property name="HWID" value="{{ test_plan["device_hwid"] }}"/>
-            {% endif %}
-        </device>
-    {% else %}
-        <device alias="DEFAULT_{{ test_plan['harness'] }}" rank="none">        
-            <property name="HARNESS" value="{{ test_plan['harness'] }}"/>
-            <property name="TYPE" value="{{ test_plan['device_type'] }}"/>
-            {% if test_plan["device_hwid"] != "" -%}
-            <property name="HWID" value="{{ test_plan["device_hwid"] }}"/>
-            {% endif %}
-        </device>
-    {% endif %}
-    </target>
-    
-    <plan passrate="100" enabled="true" name="{{ test_plan['testrun_name'] }} Plan" significant="false" harness="{{ test_plan['harness'] }}">
-        <session name="session" harness="{{ test_plan['harness'] }}" enabled="true" passrate="100" significant="false">
-            {% for setd in test_plan.sets -%}
-            <set name="{{ setd["name"] }}-{{ setd["component_path"] }}" harness="{{ test_plan['harness'] }}" enabled="true" passrate="100">
-              <target>
-                  <device alias="DEFAULT_{{ test_plan['harness'] }}" rank="master"/>
-              </target>
-              <case name="{{ setd.name }} case" passrate="100" harness="{{ setd.test_harness }}" enabled="true" significant="false"> 
-              
-              {% if setd["ctc_enabled"] == "True" -%}
-              <step name="Create CTC log dir" harness="{{ setd.test_harness }}" enabled="true" passrate="100" significant="false">
-                  <command>makedir</command>
-                  <params>
-                      <param dir="{{ atsself.CTC_LOG_DIR }}"/>
-                  </params>
-              </step>
-              <step name="CTC start" passrate="100" harness="{{ setd.test_harness }}" enabled="true" significant="false">
-                    <command>execute</command>
-                    <params>
-                        <param file="z:\sys\bin\ctcman.exe"/>
-                    </params>
-              </step>
-              {% endif %}
-              {% if setd.image_files -%}
-                {% for img in setd.image_files -%}
-                <flash target-alias="DEFAULT_{{ setd.test_harness }}" images="ATS3Drop\images\{{ os.path.basename(img) }}" />
-                {% endfor -%}
-              {% endif %}
-              <step name="Create logs folder" harness="{{ setd.test_harness }}" enabled="true" passrate="100" significant="false">
-                  <command>makedir</command>
-                  <params>
-                  {% if setd["test_harness"] == "GENERIC" -%}
-                      {% if atsself.check_mtf_harness(setd) -%}
-                      <param dir="{{ atsself.MTF_LOG_DIR }}"/>
-                      {% else %}
-                      <param dir="{{ atsself.TEF_LOG_DIR }}"/>
-                      {% endif %}
-                  {% endif %}
-                  {% if setd["test_harness"] == "EUNIT" -%}
-                      {% if atsself.check_qt_harness(setd) -%}
-                      <param dir="{{ atsself.QT_LOG_DIR }}"/>
-                      {% else %}
-                      <param dir="{{ atsself.EUNIT_LOG_DIR }}"/>
-                      {% endif %}
-                  {% endif %}
-                  </params>
-              </step>
-              
-              {% for sis_file in setd["sis_files"] -%}
-              <step name="Install sis: {{ os.path.basename(sis_file) }}" harness="{{ setd.test_harness }}" enabled="true" passrate="100" significant="false">
-                    <command>install</command>
-                    <params>
-                        <param src="ATS3Drop\{{ setd.name }}\sis\{{ os.path.basename(sis_file) }}"/>
-                        <param dst="c:\testframework\{{ os.path.basename(sis_file) }}"/>
-                    </params>
-              </step>
-              {% endfor -%}
-              
-              {% for data_file in setd["data_files"] -%}
-              <step name="Install data: {{ os.path.basename(data_file) }}" harness="{{ setd.test_harness }}" enabled="true" passrate="100" significant="false">
-                    <command>install</command>
-                    <params>
-                        <param src="ATS3Drop\{{ setd.name }}\{{ os.path.basename(data_file) }}"/>
-                        <param dst="e:\testing\data"/>
-                    </params>
-              </step>
-              {% endfor -%}
-              {% for data_file in setd["testmodule_files"] -%}
-              <step name="Install testmodule: {{ os.path.basename(data_file) }}" harness="{{ setd.test_harness }}" enabled="true" passrate="100" significant="false">
-                    <command>install</command>
-                    <params>
-                        <param src="ATS3Drop\{{ setd.name }}\{{ os.path.basename(data_file) }}"/>
-                        <param dst="c:\sys\bin"/>
-                    </params>
-              </step>
-              {% endfor -%}
-              {% for data_file in setd["config_files"] -%}
-              <step name="Install conf: {{ os.path.basename(data_file) }}" harness="{{ setd.test_harness }}" enabled="true" passrate="100" significant="false">
-                    <command>install</command>
-                    <params>
-                        <param src="ATS3Drop\{{ setd.name }}\{{ os.path.basename(data_file) }}"/>
-                        <param dst="e:\testing\conf"/>
-                    </params>
-              </step>
-              {% endfor -%}
-              
-              {% if setd.engine_ini_file -%}
-              <step name="Install engine: {{ os.path.basename(setd["engine_ini_file"]) }}" harness="{{ setd.test_harness }}" enabled="true" passrate="100" significant="false">
-                    <command>install</command>
-                    <params>
-                        <param src="ATS3Drop\{{ setd.name }}\{{ os.path.basename(setd["engine_ini_file"]) }}"/>
-                        <param dst="c:\testframework\{{ setd["test_harness"] }}"/>
-                    </params>
-              </step>
-              {% endif %}
-
-              {% for sis_file in setd["sis_files"] -%}
-              <step name="Install SIS to the device: {{ os.path.basename(sis_file) }}" harness="{{ setd.test_harness }}" enabled="true" passrate="100" significant="false">
-                  <command>install-software</command>
-                  <params>
-                      <param timeout="{{ test_plan["test_timeout"] }}"/>
-                      <param overWriteAllowed="true"/>
-                      <param upgradeData="true"/>
-                      <param downloadAllowed="false"/>
-                      <param packageInfoAllowed="true"/>
-                      <param untrustedAllowed="true"/>
-                      <param ignoreOCSPWarnings="true"/>
-                      <param userCapGranted="true"/>
-                      <param optionalItemsAllowed="true"/>
-                      <param killApp="true"/>
-                      <param installDrive="C"/>
-                      <param upgradeAllowed="true"/>
-                      <param OCSP_Done="true"/>
-                      <param sisPackageName="c:\testframework\{{ os.path.basename(sis_file) }}"/>
-                  </params>
-              </step>
-              {% endfor -%}
-               
-              {% if setd.src_dst -%}
-                {% for file in setd.src_dst -%}
-                <step name="Install {{ os.path.basename(file[1]) }}" harness="{{ setd.test_harness }}" enabled="true" passrate="100" significant="false">
-                    <command>install</command>
-                    <params>
-                        <param src="ATS3Drop\{{ setd.name }}\{{ file[1].replace(":","") }}"/>
-                        <param dst="{{ file[1] }}"/>
-                    </params>
-                </step>
-                
-                  {% if setd["test_harness"] == "GENERIC" -%}
-                <step passrate="100" harness="{{ setd.test_harness }}" enabled="true" name="Execute test: {{ os.path.basename(file[1]) }}" significant="false">
-                    <command>execute</command>
-                    <params>
-                      {% if 'testscript' in file[2] -%}
-                          {% if file[2] == "testscript:mtf" -%}
-                      <param file="testframework.exe"/>
-                      <param parser="MTFResultParser"/>
-                      <param result-file="{{ atsself.MTF_LOG_DIR  }}\{{ os.path.basename(file[1]).replace('.script', '.htm') }}"/>
-                          {% else %}
-                      <param file="testexecute.exe"/>
-                      <param parser="TEFTestResultParser"/>
-                      <param result-file="{{ atsself.TEF_LOG_DIR }}\{{ os.path.basename(file[1]).replace('.script', '.htm') }}"/>
-                          {% endif %}
-                      <param parameters="{{ file[1] }}"/>
-                      <param timeout="{{ test_plan["test_timeout"] }}"/>
-                      {% endif %}
-                      
-                      {% if 'testmodule' in file[2] -%}
-                      <param file="{{ file[1] }}"/>
-                      <param parser="RTestResultParser"/>
-                      <param result-file="{{ atsself.TEF_LOG_DIR  }}\{{ os.path.basename(file[1]).replace('.exe', '.htm') }}"/>
-                      <param timeout="{{ test_plan["test_timeout"] }}"/>
-                      {% endif %}
-                    </params>
-                </step>
-                  {% endif %}
-                  {% if setd["test_harness"] == "EUNIT" -%}
-                      {% if file[2] == "testmodule:qt" -%}
-                <step passrate="100" harness="{{ setd.test_harness }}" enabled="true" name="Execute test: {{ os.path.basename(file[1]) }}" significant="false">
-                    <command>execute</command>
-                    <params>
-                      <param file="{{ file[1] }}"/>                      
-                      <param parameters="-lightxml -o {{ atsself.QT_LOG_DIR }}\{{ os.path.basename(file[1]).replace('.' + file[1].rsplit(".")[1], '_log.xml') }}"/>
-                      <param result-file="{{ atsself.QT_LOG_DIR }}\{{ os.path.basename(file[1]).replace('.' + file[1].rsplit(".")[1], '_log.xml') }}"/>
-                      <param parser="QTestResultParser"/>
-                      <param delete-result="true"/>
-                      <param async="false"/>
-                      <param timeout="{{ test_plan["test_timeout"] }}"/>
-                    </params>
-                </step>
-                      {% endif %}
-                  {% endif %}
-                    
-                {% endfor -%}
-              {% endif %}
-                <step passrate="100" harness="{{ setd.test_harness }}" enabled="true" name="Fetch test module logs" significant="false">
-                  <command>fetch-log</command>
-                  <params>
-                    <param type="text"/>
-                    <param delete="true"/>
-                {% if setd["test_harness"] == "GENERIC" -%}
-                    {% if atsself.check_mtf_harness(setd) -%}
-                    <param path="{{ atsself.MTF_LOG_DIR }}\*"/>
-                    {% else %}
-                    <param path="{{ atsself.TEF_LOG_DIR }}\*"/>
-                    {% endif %}
-                {% endif %}
-                {% if setd["test_harness"] == "EUNIT" -%}
-                    {% if atsself.check_qt_harness(setd) -%}
-                    <param path="{{ atsself.QT_LOG_DIR }}\*"/>
-                    {% else %}
-                    <param path="{{ atsself.EUNIT_LOG_DIR }}\*"/>
-                    {% endif %}
-                {% endif %}
-                  </params>
-                </step>
-              </case>
-          </set>
-          {% endfor -%}
-        </session>
-    </plan>
-    
-    {% if test_plan.post_actions %}
-        {% for action_type, parameters in test_plan.post_actions -%}
-    <postAction>
-        <type>{{ action_type }}</type>
-        <params>
-            {% for name, value in parameters -%}
-            <param name="{{ name }}" value="{{ value }}"/>
-            {% endfor -%}
-        </params>
-    </postAction>
-        {% endfor -%}
-    {% endif %}
-  
-    <files>
-        {% for drop_file, _ in atsself.drop_files(test_plan) -%}
-        <file>{{ drop_file }}</file>
-        {% endfor -%}
-    </files>
-  
-</test>
\ No newline at end of file
--- a/buildframework/helium/tools/common/python/lib/ats3/atsconfigparser.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,127 +0,0 @@
-#============================================================================ 
-#Name        : atsconfigparser.py
-#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:
-#===============================================================================
-
-import configuration
-import amara
-
-class TestXML:
-    def __init__(self, testxml):
-        self.testxml = testxml
-        self.doc = amara.parse(testxml)
-
-    def containsproperty(self, name, value):
-        for p in self.doc.xml_xpath("//property"):
-            if str(p.name) == name:
-                return str(p.value) == value
-        return False
-    
-    def containssetting(self, name, value):
-        for p in self.doc.xml_xpath("//setting"):
-            if str(p.name) == name:
-                return str(p.value) == value
-        return False
-    
-    def addorreplacesetting(self, name, value):
-        changed = False
-        for p in self.doc.xml_xpath("//setting"):
-            if str(p.name) == name:
-                p.value = value
-                changed = True
-        if not changed:
-            for device in self.doc.test.target.device:
-                device.xml_append(self.doc.xml_create_element(u"setting", attributes = {u'name': unicode(name), u'value': unicode(value)}))
-        
-    def containsattribute(self, name, value):
-        for p in self.doc.xml_xpath("//*[@" + name + "]"):
-            if p[name] == value:
-                return True
-        return False
-        
-    def replaceattribute(self, name, value):
-        for p in self.doc.xml_xpath("//*[@" + name + "]"):
-            p[name] = value
-            
-    def addorreplaceproperty(self, name, value):
-        changed = False
-        for p in self.doc.xml_xpath("//property"):
-            if str(p.name) == name:
-                p.value = value
-                changed = True
-        if not changed:
-            for device in self.doc.test.target.device:
-                device.xml_append(self.doc.xml_create_element(u"property", attributes = {u'name': unicode(name), u'value': unicode(value)}))
-
-
-class ATSConfigParser:
-    def __init__(self, specfilename):
-        specfile = open(specfilename)
-        builder = configuration.NestedConfigurationBuilder(specfile)
-        self.configs = builder.getConfigurations("common")
-    
-    def properties(self):
-        props = {}
-        for config in self.configs:
-            if (config.type == "properties"):
-                for subconfig in config:
-                    props[subconfig] = config[subconfig]
-        return props
-        
-    def settings(self):
-        settings = {}
-        for config in self.configs:
-            if (config.type == "settings"):
-                for subconfig in config:
-                    settings[subconfig] = config[subconfig]
-        return settings
-
-def converttestxml(specfilename, testxmldata):
-    specfile = open(specfilename)
-    
-    builder = configuration.NestedConfigurationBuilder(specfile)
-    configs = builder.getConfigurations("common")# + builder.getConfigurations("ats3")
-    
-    testxml = TestXML(testxmldata)
-    
-    for config in configs:
-        if (config.type == "properties"):
-            for subconfig in config:
-                testxml.addorreplaceproperty(subconfig, config[subconfig])
-        if (config.type == "conditional_properties"):
-            check = config.name.split(',')
-            if testxml.containsproperty(check[0], check[1]):
-                for subconfig in config:
-                    testxml.addorreplaceproperty(subconfig, config[subconfig])
-        if (config.type == "settings"):
-            for subconfig in config:
-                testxml.addorreplacesetting(subconfig, config[subconfig])
-        if (config.type == "conditional_settings"):
-            check = config.name.split(',')
-            if testxml.containssetting(check[0], check[1]):
-                for subconfig in config:
-                    testxml.addorreplacesetting(subconfig, config[subconfig])
-        if (config.type == "attributes"):
-            for subconfig in config:
-                testxml.replaceattribute(subconfig, config[subconfig])
-        if (config.type == "conditional_attributes"):
-            check = config.name.split(',')
-            if testxml.containsattribute(check[0], check[1]):
-                for subconfig in config:
-                    testxml.replaceattribute(subconfig, config[subconfig])
-    
-    return testxml.doc.xml(indent=u"yes")
--- a/buildframework/helium/tools/common/python/lib/ats3/dropgenerator.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,965 +0,0 @@
-# -*- encoding: latin-1 -*-
-
-#============================================================================ 
-#Name        : dropgenerator.py 
-#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:
-#===============================================================================
-
-
-#w0142 => * and ** were used
-#F0401 => pylint didn't find "path" module
-#C0302 => Too many lines
-
-import codecs
-from  xml.parsers.expat import ExpatError
-
-from xml.etree import ElementTree as et
-from xml.sax.saxutils import quoteattr
-from path import path
-import logging
-import os
-import re
-import zipfile
-import amara
-import atsconfigparser
-
-# pylint: disable-msg=W0404
-from ntpath import sep as atssep
-import ntpath as atspath
-
-import jinja2
-
-_logger = logging.getLogger('ats')
-
-# Shortcuts
-E = et.Element
-SE = et.SubElement
-
-CTC_PATHS_LIST = []
-
-class Ats3TestDropGenerator(object):
-    """
-    Generate test drop zip file for ATS3.
-
-    Generates drom zip files file from a TestPlan instance. The main
-    responsibility of this class is to serialize the plan into a valid XML
-    file and build a zip file for the drop.
-    
-    Creates one <set> for each component's tests.
-
-    Stif harness, normal operation
-    ------------------------------
-    
-    - create logging dir for stif             makedir (to C:\logs\TestFramework)
-    - install data files                      install (to E:\testing\data)
-    - install configuration (.cfg) files      "       (to E:\testing\conf)
-    - install testmodule (.dll) files         "       (to C:\sys\bin)
-    - install engine ini (testframework.ini)  "       (to C:\testframework)
-    - execute cases from the engine ini       run-cases
-    - fetch logs                              fetch-log
-
-    Stif harness, SIS package installation
-    --------------------------------------
-    
-    - like above but with data and config files replaced by sis files
-    - install sis to the device               install-software
-
-    """
-
-    STIF_LOG_DIR = r"c:" + os.sep + "logs" + os.sep + "testframework"
-    TEF_LOG_DIR = r"c:" + os.sep + "logs" + os.sep + "testexecute"
-    MTF_LOG_DIR = r"c:" + os.sep + "logs" + os.sep + "testresults"
-    STIFUNIT_LOG_DIR = r"c:" + os.sep + "logs" + os.sep + "testframework"
-    EUNIT_LOG_DIR = r"c:" + os.sep + "Shared" + os.sep + "EUnit" + os.sep + "logs"
-    #QT_LOG_DIR = r"c:" + os.sep + "private" + os.sep + "Qt" + os.sep + "logs"
-    QT_LOG_DIR = r"c:" + os.sep + "shared" + os.sep + "EUnit" + os.sep + "logs"
-    CTC_LOG_DIR = r"c:" + os.sep + "data" + os.sep + "ctc"
-
-    def __init__(self):
-        self.drop_path_root = path("ATS3Drop")
-        self.drop_path = None
-        self.defaults = {}
-
-    def generate(self, test_plan, output_file, config_file=None):
-        """Generate a test drop file."""
-        xml = self.generate_xml(test_plan)
-        
-        if config_file:
-            xmltext = et.tostring(xml.getroot(), "ISO-8859-1")
-            xmltext = atsconfigparser.converttestxml(config_file, xmltext)
-            xml = et.ElementTree(et.XML(xmltext))
-            
-        return self.generate_drop(test_plan, xml, output_file)
-
-    def generate_drop(self, test_plan, xml, output_file):
-        """Generate test drop zip file."""
-        zfile = zipfile.ZipFile(output_file, "w", zipfile.ZIP_DEFLATED)
-        try:
-            for drop_file, src_file in self.drop_files(test_plan):
-                _logger.info("   + Adding: %s" % src_file.strip())
-                try:
-                    zfile.write(src_file.strip(), drop_file.encode('utf-8'))
-                except OSError, expr:
-                    _logger.error(expr)
-            doc = amara.parse(et.tostring(xml.getroot(), "ISO-8859-1"))
-            _logger.debug("XML output: %s\n" % doc.xml(indent=u"yes", encoding="ISO-8859-1"))
-            zfile.writestr("test.xml", doc.xml(indent="yes", encoding="ISO-8859-1"))
-        finally:
-            zfile.close()
-
-        return zfile
-
-    def generate_xml(self, test_plan):
-        """Generate test drop XML."""
-        self.defaults = {"enabled": "true", 
-                         "passrate": "100", 
-                         "significant": "false"}
-        root = E("test")
-        root.append(et.XML("<name>%(testrun_name)s</name>" % test_plan))
-        if test_plan["diamonds_build_url"]:
-            root.append(
-                et.XML("<buildid>%(diamonds_build_url)s</buildid>" % test_plan))
-        generate_target(test_plan, root)
-        root.append(self.generate_plan(test_plan))
-        for post_action in generate_post_actions(test_plan):
-            root.append(post_action)
-        root.append(self.generate_files(test_plan))
-        etree = et.ElementTree(root)
-        return etree
-            
-    def generate_plan(self, test_plan):
-        """Generate the test <plan> with multiple <set>s."""
-        plan = E("plan", name="%s Plan" % test_plan["testrun_name"],
-                 harness=test_plan["harness"], **self.defaults)
-        session = SE(plan, "session", name="session", harness=test_plan["harness"], **self.defaults)
-
-        if not test_plan.custom_dir is None:
-            insert_custom_file(session, test_plan.custom_dir.joinpath("preset_custom.xml"))
-        
-        # One set for each component.
-        for setd in test_plan.sets:
-            self.drop_path = self.drop_path_root.joinpath(setd["name"])
-            elem = SE(session, "set", name=setd["name"]+"-"+setd["component_path"], harness=setd["test_harness"], **self.defaults)
-            SE(SE(elem, "target"), "device", rank="master", alias="DEFAULT_%s" % setd["test_harness"])
-             
-            if not test_plan.custom_dir is None:
-                insert_custom_file(elem, test_plan.custom_dir.joinpath("precase_custom.xml"))
-        
-            case = SE(elem, "case", name="%s case" % setd["name"],
-                      harness=setd["test_harness"], **self.defaults)
-            self.generate_steps(setd, case, test_plan)
-            if not test_plan.custom_dir is None:
-                insert_custom_file(elem, test_plan.custom_dir.joinpath("postcase_custom.xml"))
-
-        if not test_plan.custom_dir is None:
-            insert_custom_file(session, test_plan.custom_dir.joinpath("postset_custom.xml"))
-
-        return plan
-
-    def generate_steps_logdir(self, setd, case):
-        """generates STIF log dir."""
-        
-        _qt_test_ = self.check_qt_harness(setd)
-        if _qt_test_:
-            step = SE(case, "step", name="Create QT log dir", harness=setd["test_harness"], **self.defaults)
-        else:
-            step = SE(case, "step", name="Create %s log dir" % setd["test_harness"], harness=setd["test_harness"], **self.defaults)
-        SE(step, "command").text = "makedir"
-        if setd["test_harness"] == "STIF":
-            SE(SE(step, "params"), "param", dir=self.STIF_LOG_DIR)
-        if setd["test_harness"] == "GENERIC":
-            if self.check_mtf_harness(setd):
-                SE(SE(step, "params"), "param", dir=self.MTF_LOG_DIR)
-            else:
-                SE(SE(step, "params"), "param", dir=self.TEF_LOG_DIR)
-        elif setd["test_harness"] == "EUNIT":
-            if _qt_test_:
-                SE(SE(step, "params"), "param", dir=self.QT_LOG_DIR)
-            else: 
-                SE(SE(step, "params"), "param", dir=self.EUNIT_LOG_DIR)
-                
-        elif setd["test_harness"] == "STIFUNIT":
-            SE(SE(step, "params"), "param", dir=self.STIFUNIT_LOG_DIR)
-            
-        if setd.has_key("sis_files") and setd["sis_files"]:
-            setd = dict(setd, src_dst=[]) # Added to pass the Sis tests, if removed - gives KeyError
-            for sis_file in setd["sis_files"]:
-                self.generate_install_step(case, "sis", sis_file.name, "sis", 
-                                           r"c:" + os.sep + "testframework", setd["test_harness"])
-        else:
-            if setd["src_dst"] != []:
-                self.generate_install_step(case, "", "", 
-                                               "", r"", setd["test_harness"], setd["src_dst"])
-            else:
-                # Data file install.
-                for data_file in setd["data_files"]:                                
-                    self.generate_install_step(case, "data", data_file.name, "data", 
-                                               r"e:\testing\data", setd["test_harness"])
-
-                # Configuration file install.
-                for conf_file in setd["config_files"]:
-                    self.generate_install_step(case, "conf", conf_file.name, "conf", 
-                                               r"e:\testing\conf", setd["test_harness"])
-
-                # Test module install.
-                for test_file in setd["testmodule_files"]:
-                    self.generate_install_step(case, "testmodule", test_file.name, 
-                                               "testmodules", r"c:\sys\bin", setd["test_harness"]) 
-        return setd
-
-    def generate_steps_engineini(self, setd, case):
-        """Engine ini install ( if one exists )"""
-        if setd.has_key("sis_files") and setd["sis_files"]:
-            self.generate_install_step(case, "engine_ini",
-                                       setd["engine_ini_file"].name,
-                                       "init",
-                                       r"c:" + os.sep + "testframework", setd["test_harness"])
-        else:
-            if setd["src_dst"] == []:
-                self.generate_install_step(case, "engine_ini",
-                                       setd["engine_ini_file"].name,
-                                       "init",
-                                       r"c:" + os.sep + "testframework", setd["test_harness"])
-
-    def generate_steps_sisfiles(self, setd, case, test_plan):
-        """generating steps for sis files"""
-        for sis_file in setd["sis_files"]:
-            step = SE(case, "step", name="Install SIS to the device: %s" % \
-                      sis_file.name, harness=setd["test_harness"], **self.defaults)
-            SE(step, "command").text = "install-software"
-            params = SE(step, "params")
-            sis_name = path(r"c:" + os.sep + "testframework").joinpath(sis_file.name)
-            for key, value in (("timeout", test_plan["test_timeout"]),
-                               ("overWriteAllowed", "true"),
-                               ("upgradeData", "true"),
-                               ("downloadAllowed", "false"),
-                               ("packageInfoAllowed", "true"),
-                               ("untrustedAllowed", "true"),
-                               ("ignoreOCSPWarnings", "true"),
-                               ("userCapGranted", "true"),
-                               ("optionalItemsAllowed", "true"),
-                               ("killApp", "true"),
-                               ("installDrive", "C"),
-                               ("upgradeAllowed", "true"),
-                               ("OCSP_Done", "true"),
-                               ("sisPackageName", sis_name.normpath())):
-                SE(params, "param").set(key, value)
-
-    def generate_steps_tracestart(self, setd, case, pmds):
-        """Tracing steps are added (Trace Start)"""
-        step = SE(case, "step", 
-                  name="Start tracing", harness=setd["test_harness"],
-                  **self.defaults)
-        SE(step, "command").text = "trace-start"
-        params = SE(step, "params")
-        if setd.has_key("trace_activation_files") and setd["trace_activation_files"]:
-            #find out the group to activate
-            trace_group = et.parse(setd["trace_activation_files"][0]).getroot().find("Configurations").find("TraceActivation").find("Configuration").get("Name")
-            SE(params, "param", ta=self.drop_path.joinpath(r"trace_activation", setd["trace_activation_files"][0].name)) 
-            SE(params, "param", tgrp=trace_group )                                            
-        if setd.has_key("pmd_files") and setd["pmd_files"]:
-            SE(params, "param", pmd=pmds.joinpath(setd["pmd_files"][0].name))
-        SE(params, "param", log=setd["trace_path"])            
-        SE(params, "param", timeout="60")
-        elem = SE(params, "param")
-        elem.set('date-format', "yyyyMMdd")
-        elem = SE(params, "param")
-        elem.set('time-format', "HHmmss")
-
-    def generate_steps_createstep(self, setd, case, test_plan):
-        """generates core steps for a single set"""
-        if setd["test_harness"] == "STIF" or setd["test_harness"] == "STIFUNIT" or setd["test_harness"] == "GENERIC":
-            if setd["src_dst"] == []:
-                # Test case execution. If ini file exists, use that
-                if setd["engine_ini_file"] != None:
-                    step = SE(case, "step", 
-                              name="Execute test: %s" % setd["engine_ini_file"].name, 
-                              harness=setd["test_harness"], **self.defaults)
-                    SE(step, "command").text = "run-cases"
-                    params = SE(step, "params")
-                    SE(params, "param", filter="*")
-                    SE(params, "param", timeout=test_plan["test_timeout"])
-                    ini_name = setd["engine_ini_file"].name
-                    SE(params, "param", engineini=path(r"c:" + os.sep + "testframework") / ini_name)            
-                    
-                # if no inifile, but cfg files defined, use those
-                elif setd["config_files"]!=[]:
-                    for config_file in setd["config_files"]:
-                        step = SE(case, "step", 
-                                  name="Execute test: %s" % config_file.name, 
-                                  harness=setd["test_harness"], **self.defaults)
-                        SE(step, "command").text = "run-cases"
-                        params = SE(step, "params")
-                        SE(params, "param", module="TESTSCRIPTER")
-                        elem = SE(params, "param" )
-                        elem.set('testcase-file', path(r"e:\testing\conf") / config_file.name )
-                        SE(params, "param", filter="*")
-                        SE(params, "param", timeout=test_plan["test_timeout"])
-
-                # if no ini or cfg files, use dll directly
-                else:
-                    for testmodule_file in setd["testmodule_files"]:
-                        step = SE(case, "step", 
-                                  name="Execute test: %s" %  testmodule_file.name, harness=setd["test_harness"], 
-                                  **self.defaults)
-                        SE(step, "command").text = "run-cases"
-                        params = SE(step, "params")
-                        SE(params, "param", module=testmodule_file.name)
-                        SE(params, "param", filter="*")
-                        SE(params, "param", timeout=test_plan["test_timeout"])
-            elif setd["src_dst"] != []:
-                self.generate_run_steps(case, setd, test_plan["test_timeout"], test_plan["eunitexerunner_flags"])
-        elif setd["test_harness"] == "EUNIT":
-            self.generate_run_steps(case, setd, test_plan["test_timeout"], test_plan["eunitexerunner_flags"])
-
-    def generate_steps_tracestop(self, setd, case, pmds):
-        """Tracing steps are added (Trace Stop)"""
-        step = SE(case, "step", name="Stop tracing",
-                  harness=setd["test_harness"], **self.defaults)        
-        SE(step, "command").text = "trace-stop"
-        params = SE(step, "params")
-        SE(params, "param", timeout="60")
-
-        step = SE(case, "step", name="Convert tracing",
-                  harness=setd["test_harness"], **self.defaults)        
-        SE(step, "command").text = "trace-convert"
-        params = SE(step, "params")
-        if setd.has_key("pmd_files") and setd["pmd_files"]:
-            SE(params, "param", pmd=pmds.joinpath(setd["pmd_files"][0].name))
-        SE(params, "param", log=setd["trace_path"])            
-        SE(params, "param", timeout="60")
-        elem = SE(params, "param")
-        elem.set('date-format', "yyyyMMdd")
-        elem = SE(params, "param")
-        elem.set('time-format', "HHmmss")
-
-    def generate_steps_ctcdata(self, setd, case, test_plan):
-        """generates steps for installing CTC data"""
-        global CTC_PATHS_LIST
-        ctc_helium_path_list = []
-        
-        step = SE(case, "step", name="Save CTC data", harness=setd["test_harness"], **self.defaults)
-        SE(step, "command").text = "execute"
-        params = SE(step, "params")
-        SE(params, "param", parameters="writelocal")
-        SE(params, "param", file=path(r"z:\sys\bin\ctcman.exe"))
-        step = SE(case, "step", name="Save CTC data", harness=setd["test_harness"], **self.defaults)
-        SE(step, "command").text = "execute"
-        params = SE(step, "params")
-        SE(params, "param", parameters="writefile")
-        SE(params, "param", file=path(r"z:\sys\bin\ctcman.exe"))
-            
-        if test_plan["ctc_run_process_params"].strip() != "":
-            #preparing local-path for CTC step
-            #getting '39865' as diamonds ID out of 'http://diamonds.nmp.nokia.com/diamonds/builds/39865/'
-            if test_plan["diamonds_build_url"].rfind("/", 0):
-                diamonds_id = test_plan["diamonds_build_url"].rsplit(r"/", 2)[1]
-            else:
-                diamonds_id = test_plan["diamonds_build_url"].rsplit(r"/", 1)[1]
-            
-            #separating network id and drop number from 10.11.3.2\share#ats\drop2.zip#3
-            #'drop2' from the other part of the string conjuncted with a # sign
-            ats_network = r"\\" + test_plan["ctc_run_process_params"].rsplit("#", 2)[0] #network host
-            temp_drop_id = path(test_plan["ctc_run_process_params"].rsplit("#", 2)[1].rsplit(".", 1)[0]).normpath() #drop ID
-            if atssep in temp_drop_id:
-                drop_id = temp_drop_id.rsplit(atssep, 1)[1]
-            else:
-                drop_id = temp_drop_id
-
-            ats_network_path = atspath.join(ats_network, "ctc_helium" , diamonds_id, drop_id, setd["name"], "ctcdata")
-            ctc_helium_path_list.append(ats_network_path)
-            
-            step = SE(case, "step", name="Fetch CTC data for post commands execution", harness=setd["test_harness"], **self.defaults)
-            SE(step, "command").text = "fetch-log"
-            params = SE(step, "params")
-            SE(params, "param", delete="false")
-            elem = SE(params, "param")
-            elem.set('local-path', ats_network_path)
-            SE(params, "param", path=path(self.CTC_LOG_DIR).joinpath(r"ctcdata.txt"))
-
-            CTC_PATHS_LIST += ctc_helium_path_list #creating list of ctcdata.txt files for runProcess postaction
-        
-        step = SE(case, "step", name="Fetch and clean CTC data", harness=setd["test_harness"], **self.defaults)
-        SE(step, "command").text = "fetch-log"
-        params = SE(step, "params")
-        SE(params, "param", delete="true")
-        SE(params, "param", path=path(self.CTC_LOG_DIR).joinpath(r"ctcdata.txt"))
-        
-    def generate_steps_logfetching(self, setd, case):
-        """generates steps for fetching log file"""
-        step = SE(case, "step", name="Fetch test module logs", harness=setd["test_harness"], **self.defaults)
-        SE(step, "command").text = "fetch-log"
-        params = SE(step, "params")
-        SE(params, "param", type="text")
-        SE(params, "param", delete="true")
-        if setd["test_harness"] == "STIF":
-            SE(params, "param", path=path(self.STIF_LOG_DIR).joinpath(r"*"))
-        if setd["test_harness"] == "GENERIC":
-            if self.check_mtf_harness(setd):
-                SE(params, "param", path=path(self.MTF_LOG_DIR).joinpath(r"*"))
-            else:
-                SE(params, "param", path=path(self.TEF_LOG_DIR).joinpath(r"*"))
-        elif setd["test_harness"] == "STIFUNIT":
-            SE(params, "param", path=path(self.STIFUNIT_LOG_DIR).joinpath(r"*"))
-        elif setd["test_harness"] == "EUNIT":
-            if self.check_qt_harness(setd):
-                SE(params, "param", path=path(self.QT_LOG_DIR).joinpath(r"*"))
-            else:
-                SE(params, "param", path=path(self.EUNIT_LOG_DIR).joinpath(r"*"))
-
-    
-    def get_sorted_images(self, setd):
-        sorted_images = []
-        for image_file in setd["image_files"]:
-            if 'core' in image_file.name:
-                sorted_images.append(image_file.name)
-        for image_file in setd["image_files"]:
-            if 'rofs2' in image_file.name:
-                sorted_images.append(image_file.name)
-        for image_file in setd["image_files"]:
-            if 'rofs3' in image_file.name:
-                sorted_images.append(image_file.name)
-        for image_file in setd["image_files"]:
-            if 'core' not in image_file.name and 'rofs2' not in image_file.name and 'rofs3' not in image_file.name:
-                sorted_images.append(image_file.name)
-        if "rofs" in sorted_images[0]:
-            return setd["image_files"]
-        return sorted_images
-    
-    def generate_steps(self, setd, case, test_plan):
-        """Generate the test plan <step>s."""
-        # Flash images.
-        images = self.drop_path_root.joinpath("images")
-        pmds = self.drop_path_root.joinpath("pmds")
-        
-        sorted_images = self.get_sorted_images(setd)
-        for image_file in sorted_images:
-            flash = SE(case, "flash", images=images.joinpath(image_file))
-            flash.set("target-alias", "DEFAULT_%s" % setd["test_harness"])
-            
-        if not test_plan.custom_dir is None:
-            insert_custom_file(case, test_plan.custom_dir.joinpath("prestep_custom.xml"))
-
-        if setd["ctc_enabled"] == "True":
-            step = SE(case, "step", name="Create CTC log dir", harness=setd["test_harness"], **self.defaults)
-            SE(step, "command").text = "makedir"
-            params = SE(step, "params")
-            SE(params, "param", dir=self.CTC_LOG_DIR)
-            step = SE(case, "step", name="CTC start", harness=setd["test_harness"], **self.defaults)
-            SE(step, "command").text = "execute"
-            params = SE(step, "params")
-            SE(params, "param", file=path(r"z:\sys\bin\ctcman.exe"))
-            
-        # STIF log dir.
-        setd = self.generate_steps_logdir(setd, case)
-
-        # Engine ini install ( if one exists )
-        if setd["engine_ini_file"] != None:
-            self.generate_steps_engineini(setd, case)
-        
-        #If sis files
-        if setd.has_key("sis_files") and setd["sis_files"]:
-            self.generate_steps_sisfiles(setd, case, test_plan)    
-
-        # If tracing enabled, Start Tracing:
-        if setd.has_key("trace_path") and setd["trace_path"] != "":
-            self.generate_steps_tracestart(setd, case, pmds)
-
-        #core steps of a step
-
-        if not test_plan.custom_dir is None:
-            insert_custom_file(case, test_plan.custom_dir.joinpath("prerun_custom.xml"))
-        self.generate_steps_createstep(setd, case, test_plan)
-
-        if not test_plan.custom_dir is None:
-            insert_custom_file(case, test_plan.custom_dir.joinpath("postrun_custom.xml"))
-        
-        # If tracing enabled, Stop Tracing
-        if setd.has_key("trace_path") and setd["trace_path"] != "":
-            self.generate_steps_tracestop(setd, case, pmds)
-
-        #install CTC data
-        if setd["ctc_enabled"] == "True":
-            self.generate_steps_ctcdata(setd, case, test_plan)
-            
-        # Log file fetching.
-        self.generate_steps_logfetching(setd, case)
-
-        if not test_plan.custom_dir is None:
-            insert_custom_file(case, test_plan.custom_dir.joinpath("poststep_custom.xml"))
-
-
-    def generate_runsteps_tef(self, setd, case, src_dst, time_out):
-        """generates runsteps for tef"""
-        for file1 in src_dst:
-            if 'testscript' in file1[2]:
-                filename = file1[1]
-                filename = filename[file1[1].rfind(os.sep)+1:]
-                harness = "testexecute.exe"
-                if file1[2] == "testscript:mtf":
-                    harness = "testframework.exe"
-                step = SE(case, "step", 
-                              name="Execute test: %s" %  filename, harness=setd["test_harness"], 
-                              **self.defaults)
-                SE(step, "command").text = "execute"
-                params = SE(step, "params")
-                SE(params, "param", file=harness)
-                SE(params, "param", parameters=file1[1])
-                
-                if file1[2] == "testscript:mtf":
-                    SE(params, "param", {'result-file': self.MTF_LOG_DIR + os.sep + filename.replace('.script', '.htm')})
-                else:
-                    SE(params, "param", {'result-file': self.TEF_LOG_DIR + os.sep + filename.replace('.script', '.htm')})
-                SE(params, "param", timeout=time_out)
-                if file1[2] == "testscript:mtf":
-                    SE(params, "param", parser="MTFResultParser")
-                else:
-                    SE(params, "param", parser="TEFTestResultParser")
-            if file1[2] == 'testmodule:rtest':
-                filename = file1[1]
-                filename = filename[file1[1].rfind(os.sep)+1:]
-                step = SE(case, "step", 
-                              name="Execute test: %s" %  filename, harness=setd["test_harness"], 
-                              **self.defaults)
-                SE(step, "command").text = "execute"
-                params = SE(step, "params")
-                SE(params, "param", file=file1[1])
-                SE(params, "param", {'result-file': self.TEF_LOG_DIR + os.sep + filename.replace(filename.split(".")[-1], 'htm')})
-                SE(params, "param", timeout=time_out)
-                SE(params, "param", parser="RTestResultParser")
-    
-    def generate_runsteps_stif(self, setd, case, src_dst, time_out):
-        """generates runsteps for stif"""
-        ini = cfg = dll = has_tf_ini = False
-        ini_file = None
-        cfg_files = dll_files = []
-
-        for tf_ini in src_dst:
-            if "testframework.ini" in tf_ini[1].lower():
-                has_tf_ini = True
-        
-        for file1 in src_dst:
-                
-            if "testframework.ini" in file1[1].lower() and file1[2] == "engine_ini" and has_tf_ini:
-                ini = True
-                ini_file = file1
-                
-            elif file1[2] == "engine_ini" and not has_tf_ini:
-                pipe_ini = open(file1[0], 'r')
-                if "[engine_defaults]" in str(pipe_ini.readlines()).lower():
-                    ini = True
-                    ini_file = file1
-            elif file1[2] == "conf":
-                if not ini:
-                    cfg = True
-                    cfg_files.append(file1)
-            elif file1[2] == "testmodule":
-                if not cfg and not ini:
-                    dll = True
-                    dll_files.append(file1)
-        if ini:
-            filename = ini_file[1]
-            filename = filename[ini_file[1].rfind(os.sep)+1:]
-            step = SE(case, "step",
-                      name="Execute test: %s" % filename, 
-                      harness=setd["test_harness"], **self.defaults)
-            SE(step, "command").text = "run-cases"
-            params = SE(step, "params")
-            SE(params, "param", filter="*")
-            SE(params, "param", timeout=time_out)
-            SE(params, "param", engineini=ini_file[1]) 
-        elif cfg:
-            for conf_file in cfg_files:
-                if ".dll" in conf_file[1].lower():
-                    continue
-                filename = conf_file[1]
-                filename = filename[conf_file[1].rfind(os.sep)+1:]
-                step = SE(case, "step", 
-                              name="Execute test: %s" % filename, 
-                              harness=setd["test_harness"], **self.defaults)
-                SE(step, "command").text = "run-cases"
-                params = SE(step, "params")
-                SE(params, "param", module="TESTSCRIPTER")
-                elem = SE(params, "param" )
-                elem.set('testcase-file', conf_file[1] )
-                SE(params, "param", filter="*")
-                SE(params, "param", timeout=time_out)
-        elif dll:
-            for dll_file in dll_files:
-                filename = dll_file[1]
-                filename = filename[dll_file[1].rfind(os.sep)+1:]
-                step = SE(case, "step", 
-                              name="Execute test: %s" %  filename, harness=setd["test_harness"], 
-                              **self.defaults)
-                SE(step, "command").text = "run-cases"
-                params = SE(step, "params")
-                SE(params, "param", module=filename)
-                SE(params, "param", filter="*")
-                SE(params, "param", timeout=time_out)
-
-    def generate_runsteps_eunit(self, setd, case, src_dst, time_out, eunit_flags):
-        """generates runsteps for eunit"""
-
-        for sdst in src_dst:
-            if "." in sdst[1]:
-                fileextension = sdst[1].rsplit(".")[1].lower()
-            filename = sdst[1]
-            filename = filename[filename.rfind(os.sep)+1:]
-            if fileextension == "dll" or fileextension == "exe":
-                re_dll = re.compile(r'[.]+%s' % fileextension, re.IGNORECASE)
-                no_dll = re_dll.sub('', filename)
-                no_dll_xml = ''.join([no_dll, u'_log.xml'])
-
-
-            
-            #for EUnit or other executables
-            if sdst[2] == "testmodule":
-                eunit_exe = "EUNITEXERUNNER.EXE"
-                if re_dll.search(filename):                    
-                    step = SE(case, "step", name = "Execute test: %s" % filename, harness=setd["test_harness"],
-                              **self.defaults)
-                    SE(step, "command").text = "execute"
-                    params = SE(step, "params")
-                    SE(params, "param", file=path(r"z:" + os.sep + "sys" + os.sep + "bin") / eunit_exe)
-                    elem = SE(params, "param")
-                    elem.set('result-file', path(self.EUNIT_LOG_DIR) / no_dll_xml)
-                    SE(params, "param", parameters="%s /F %s /l xml %s" % (eunit_flags, no_dll, filename))
-                    SE(params, "param", timeout=time_out)
-            
-            #for QtTest.lib executables
-            elif sdst[2] == "testmodule:qt":
-                step = SE(case, "step", name = "Execute Qt-test: %s" % filename, harness=setd["test_harness"],
-                          **self.defaults)
-                SE(step, "command").text = "execute"
-                params = SE(step, "params")
-                SE(params, "param", file=path(sdst[1]))
-                SE(params, "param", parameters=r"-lightxml -o %s\%s" % (path(self.QT_LOG_DIR),  no_dll_xml))
-                elem = SE(params, "param")
-                elem.set('result-file', path(self.QT_LOG_DIR) / no_dll_xml)
-                SE(params, "param", parser="QTestResultParser")
-                elem = SE(params, "param")
-                elem.set('delete-result',"true")
-                SE(params, "param", async="false")
-                SE(params, "param", timeout=time_out)
-
-                
-
-    def generate_run_steps(self, case, setd, time_out, eunit_flags):
-        """Generates run-steps"""
-        src_dst = setd["src_dst"]
-              
-        if setd["test_harness"] == "STIF":
-            self.generate_runsteps_stif(setd, case, src_dst, time_out)
-        if setd["test_harness"] == "GENERIC":
-            self.generate_runsteps_tef(setd, case, src_dst, time_out)
-        if setd["test_harness"] == "STIFUNIT":
-            self.generate_runsteps_stif(setd, case, src_dst, time_out)
-            
-        if setd["test_harness"] == "EUNIT":
-            self.generate_runsteps_eunit(setd, case, src_dst, time_out, eunit_flags)
-
-    def generate_install_step(self, case, step_type, filename, src_dir, 
-                              dst_dir, case_harness, src_dst=None):
-        """Generate install <step>."""
-        if src_dst == None or src_dst == []:
-            src_dst = []
-            step = SE(case, "step", name="Install %s: %s" % (step_type, filename), 
-                      harness=case_harness, **self.defaults)
-            SE(step, "command").text = "install"
-            params = SE(step, "params")
-            SE(params, "param", src=self.drop_path.joinpath(src_dir, filename))
-            SE(params, "param", dst=path(dst_dir).joinpath(filename))
-        else:
-            for sdst in src_dst:
-                dst = sdst[1]
-                type_ = sdst[2]
-                if "testmodule" in type_ or ".dll" in dst:
-                    src_dir = dst.replace(":","")
-                    src_dir = path(src_dir[:src_dir.rfind(os.sep)])
-                    step_type = type_
-                    filename = dst[dst.rfind(os.sep)+1:]
-                    step = SE(case, "step", name="Install %s: %s" % (step_type, filename), 
-                              harness=case_harness, **self.defaults)
-                    SE(step, "command").text = "install"
-                    params = SE(step, "params")
-                    SE(params, "param", src=self.drop_path.joinpath(src_dir, filename))
-                    SE(params, "param", dst=path(dst))
-            for sdst in src_dst:
-                dst = sdst[1]
-                type_ = sdst[2]
-                if "testmodule" not in type_ and ".dll" not in dst:
-                    src_dir = dst.replace(":","")
-                    src_dir = path(src_dir[:src_dir.rfind(os.sep)])
-                    step_type = type_
-                    filename = dst[dst.rfind(os.sep)+1:]
-                    step = SE(case, "step", name="Install %s: %s" % (step_type, filename), 
-                              harness=case_harness, **self.defaults)
-                    SE(step, "command").text = "install"
-                    params = SE(step, "params")
-                    SE(params, "param", src=self.drop_path.joinpath(src_dir, filename))
-                    SE(params, "param", dst=path(dst))
-
-    def drop_files(self, test_plan):
-        """Yield a list of drop files."""
-        drop_set = set()
-        drop_files = []
-        pkg_files = []
-        for setd in test_plan.sets:
-            drop_path = self.drop_path_root.joinpath(setd["name"])
-            if setd.has_key("sis_files") and setd["sis_files"]:
-                if setd.has_key("pmd_files") and setd["pmd_files"]:
-                    drop_files = ((drop_path.parent, "images", setd["image_files"]),
-                                  (drop_path.parent, "pmds", setd["pmd_files"]),
-                                  (drop_path, "sis", setd["sis_files"]),
-                                  (drop_path, "init", [setd["engine_ini_file"]]),
-                                  (drop_path, "trace_init", setd["trace_activation_files"]))
-                else:
-                    drop_files = ((drop_path.parent, "images", setd["image_files"]),
-                                  (drop_path, "sis", setd["sis_files"]),
-                                  (drop_path, "init", [setd["engine_ini_file"]]))
-            elif setd["src_dst"] == []:
-                if setd.has_key("pmd_files") and setd["pmd_files"]:
-                    drop_files = ((drop_path.parent, "images", setd["image_files"]),
-                                  (drop_path.parent, "pmds", setd["pmd_files"]),
-                                  (drop_path, "data", setd["data_files"]),
-                                  (drop_path, "conf", setd["config_files"]),
-                                  (drop_path, "testmodules", setd["testmodule_files"]),
-                                  (drop_path, "init", [setd["engine_ini_file"]]),
-                                  (drop_path, "trace_init", setd["trace_activation_files"]))
-                else:
-                    drop_files = ((drop_path.parent, "images", setd["image_files"]),
-                                  (drop_path, "data", setd["data_files"]),
-                                  (drop_path, "conf", setd["config_files"]),
-                                  (drop_path, "testmodules", setd["testmodule_files"]),
-                                  (drop_path, "init", [setd["engine_ini_file"]]))
-            elif setd["src_dst"] != []:
-                for x in setd["src_dst"]:
-                    src = x[0]
-                    dst = x[1]
-                    dst2 = dst.replace(":","")
-                    pkg_files.append((drop_path, dst2, src))
-                if setd.has_key("pmd_files") and setd["pmd_files"]:
-                    drop_files = ((drop_path.parent, "images", setd["image_files"]),
-                                  (drop_path.parent, "pmds", setd["pmd_files"]),
-                                  (drop_path, "trace_init", setd["trace_activation_files"]))
-                else:
-                    drop_files = ((drop_path.parent, "images", setd["image_files"]),)
-            for drop_dir, sub_dir, files in drop_files:
-                for file_path in files:
-                    if file_path != None:
-                        drop_file = drop_dir.joinpath(sub_dir, file_path.name)
-                        drop_file = drop_file.normpath()
-                        if drop_file not in drop_set:
-                            drop_set.add(drop_file)
-                            yield (drop_file, file_path.normpath())
-            for drop_dir, sub_dir, files in pkg_files:
-                drop_file = drop_dir.joinpath(sub_dir.replace('\\', os.sep))
-                drop_file = drop_file.normpath()
-                file_path = path(files)
-                if drop_file not in drop_set:
-                    drop_set.add(drop_file)
-                    yield (drop_file, file_path.normpath())
-
-    def generate_files(self, test_plan):
-        """Generate the <files> section."""
-        files_elem = E("files")
-        for drop_file, _ in self.drop_files(test_plan):
-            SE(files_elem, "file").text = drop_file
-        return files_elem
-        
-    def check_mtf_harness(self, _setd_):
-        for _srcdst_ in _setd_['src_dst']:
-            if _srcdst_[2] == "testscript:mtf":
-                return True
-        return False
-
-    def check_qt_harness(self, _setd_):
-        _setd_ = _setd_
-        is_qt_test = False
-        if _setd_.has_key("sis_files"):
-            _dict_key_ = "sis_files"
-        else:
-            _dict_key_ = "src_dst"
-            
-        for _srcdst_ in _setd_[_dict_key_]:
-            if "testmodule:qt" == _srcdst_[2]:
-                is_qt_test = True
-        return is_qt_test 
-
-def generate_target(test_plan, root):
-    """Generate targets"""
-    harness = test_plan["harness"]
-    if harness == "MULTI_HARNESS":
-        input_targets(test_plan, root, ["STIF", "EUNIT"])
-    elif harness == "STIF":
-        input_targets(test_plan, root, ["STIF"])
-    elif harness == "EUNIT":
-        input_targets(test_plan, root, ["EUNIT"])
-    elif harness == "STIFUNIT":
-        input_targets(test_plan, root, ["STIFUNIT"])
-    elif harness == "GENERIC":
-        input_targets(test_plan, root, ["GENERIC"])
-                
-def input_targets(test_plan, root, harness_type):
-    """Append target(s) into the XML"""
-    target = E("target")
-    for har in harness_type:
-        device = SE(target, "device", rank="none", alias="DEFAULT_%s" % har)
-        SE(device, "property", name="HARNESS", value=har)
-        SE(device, "property", name="TYPE", value=test_plan["device_type"])
-        if test_plan["device_hwid"] != "":
-            SE(device, "property", name="HWID", value=test_plan["device_hwid"])
-        if test_plan["trace_enabled"] != "":
-            if test_plan["trace_enabled"].lower() == "true":
-                SE(device, "property", name="TRACE_ENABLED", value=test_plan["trace_enabled"])
-    root.append(target)
-
-
-def insert_custom_file(xmltree, filename):
-    """
-    Inserts into the given XML tree the given customization file
-    Broken input XML inserts a comment to the XML tree
-    """
-    try:
-        custom_action_file = codecs.open(filename, "r", "iso-8859-15")
-        loop = ''
-        cust = unicode(custom_action_file.read(1))
-        try:
-            # try to read the file  and addcharacter by character until the 
-            # elementtree is happy and then reset the loop and continue until the file is 
-            # completely processed. Known issue: file ending in comment will cause a warning.
-            while cust:
-                if loop != '' :
-                  # if we have something left from the previous try
-                    cust = loop + cust
-#                _logger.debug("what is cust  \n %s \n" % cust)
-                try: 
-                    xmltree.append(et.XML(cust.encode("ISO-8859-15")))
-                except ExpatError, err:
-#                    _logger.debug("Error %s in XML when prosessing file %s \n Line and column refer to section:\n%s\n" % ( err, filename, loop))
-                    loop = cust
-                else:
-                # clear the loop variable 
-                    loop = ''
-                cust = unicode(custom_action_file.read(1))
-        except Exception, err:
-            _logger.error("Error %s in XML when prosessing %s\n" % ( err, filename))
-            xmltree.append(et.Comment("Error in XML file when prosessing %s\n" % ( filename)))
-
-        if loop != '' :
-            # we should have used all the input and cleared loop variable
-            _logger.warning("Issues in customization file %s in XML when prosessing issue %s \n Line and column refer to section:\n%s\n" % ( filename, err,  loop))
-
-        custom_action_file.close()
-    except IOError, err:
-#        _logger.debug("This is for debugging only. Do not treat this as anything else. Anything is OK... The data: %s when prosessing %s\n" % (err, filename))
-        pass
-    else: 
-        _logger.info("Included file %s" % ( filename))
-
-def generate_post_actions(test_plan):
-    """Generate post actions."""
-    actions = []
-    
-    if not test_plan.custom_dir is None:
-        insert_custom_file(actions, test_plan.custom_dir.joinpath("prepostaction.xml"))
-    
-    for action_type, parameters in test_plan.post_actions:
-        action = E("postAction")
-        SE(action, "type").text = action_type
-        params = SE(action, "params")
-        for name, value in parameters:
-            SE(params, "param", name=name, value=value)
-        actions.append(action)
-
-    if not test_plan.custom_dir is None:
-        insert_custom_file(actions, test_plan.custom_dir.joinpath("postpostaction.xml"))
-
-    return actions
-    
-    
-class Ats3TemplateTestDropGenerator(Ats3TestDropGenerator):
-
-    STIF_LOG_DIR = r"c:\logs\testframework"
-    TEF_LOG_DIR = r"c:\logs\testexecute"
-    MTF_LOG_DIR = r"c:\logs\testresults"
-    STIFUNIT_LOG_DIR = r"c:\logs\testframework"
-    EUNIT_LOG_DIR = r"c:\Shared\EUnit\logs"
-    #QT_LOG_DIR = r"c:\private\Qt\logs"
-    QT_LOG_DIR = r"c:\shared\EUnit\logs"
-    CTC_LOG_DIR = r"c:\data\ctc"
-
-    def stif_init_file(self, src_dst):
-        ini = cfg = dll = has_tf_ini = False
-        ini_file = None
-        cfg_files = dll_files = []
-
-        for tf_ini in src_dst:
-            if "testframework.ini" in tf_ini[1].lower():
-                has_tf_ini = True
-        
-        for file1 in src_dst:
-            if "testframework.ini" in file1[1].lower() and file1[2] == "engine_ini" and has_tf_ini:
-                ini_file = file1
-            elif file1[2] == "engine_ini" and not has_tf_ini:
-                pipe_ini = open(file1[0], 'r')
-                if "[engine_defaults]" in str(pipe_ini.readlines()).lower():
-                    ini_file = file1
-        return ini_file
-
-    def ctcnetworkpath(self, setd, test_plan):
-        #preparing local-path for CTC step
-        #getting '39865' as diamonds ID out of 'http://diamonds.nmp.nokia.com/diamonds/builds/39865/'
-        if test_plan["diamonds_build_url"].rfind("/", 0):
-            diamonds_id = test_plan["diamonds_build_url"].rsplit(r"/", 2)[1]
-        else:
-            diamonds_id = test_plan["diamonds_build_url"].rsplit(r"/", 1)[1]
-        
-        #separating network id and drop number from 10.11.3.2\share#ats\drop2.zip#3
-        #'drop2' from the other part of the string conjuncted with a # sign
-        ats_network = r"\\" + test_plan["ctc_run_process_params"].rsplit("#", 2)[0] #network host
-        temp_drop_id = path(test_plan["ctc_run_process_params"].rsplit("#", 2)[1].rsplit(".", 1)[0]).normpath() #drop ID
-        if atssep in temp_drop_id:
-            drop_id = temp_drop_id.rsplit(atssep, 1)[1]
-        else:
-            drop_id = temp_drop_id
-
-        return atspath.join(ats_network, "ctc_helium" , diamonds_id, drop_id, setd["name"], "ctcdata")
-
-    def getlogdir(self, setd):
-        if setd["test_harness"] == "STIF":
-            return self.STIF_LOG_DIR
-        elif setd["test_harness"] == "STIFUNIT":
-            return self.STIFUNIT_LOG_DIR
-        elif setd["test_harness"] == "GENERIC":
-            if self.check_mtf_harness(setd):
-                return self.MTF_LOG_DIR
-            else:
-                return self.TEF_LOG_DIR
-        elif setd["test_harness"] == "EUNIT":
-            if self.check_qt_harness(setd):
-                return self.QT_LOG_DIR
-            else:
-                return self.EUNIT_LOG_DIR
-
-    def generate_xml(self, test_plan):
-        loader = jinja2.ChoiceLoader([jinja2.FileSystemLoader(os.path.join(os.environ['HELIUM_HOME'], 'tools/common/python/lib/ats3/templates')), jinja2.FileSystemLoader(test_plan.custom_dir)])
-        env = jinja2.Environment(loader=loader)
-        template = env.from_string(open(os.path.join(os.environ['HELIUM_HOME'], 'tools/common/python/lib/ats3/ats4_template.xml')).read())
-        
-        xmltext = template.render(test_plan=test_plan, os=os, atspath=atspath, atsself=self).encode('ISO-8859-1')
-        return et.ElementTree(et.XML(xmltext))
\ No newline at end of file
--- a/buildframework/helium/tools/common/python/lib/ats3/matti/MattiDrops.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,250 +0,0 @@
-# -*- encoding: latin-1 -*-
-
-#============================================================================
-#Name        : MattiDrops.py
-#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: Script for test drop generation and sending to execution to 
-#ATS3-system
-#===============================================================================
-
-""" create the MATTI test drop file for use on the test server """
-
-import os
-import re
-import sys
-import string
-import zipfile
-import logging 
-from optparse import OptionParser
-from xml.etree import ElementTree as et
-from jinja2 import Environment, PackageLoader
-
-# Shortcuts
-E = et.Element
-SE = et.SubElement
-
-class Configuration(object):
-    """
-    ATS3 drop generation configuration.
-    """
-    
-    def __init__(self, opts):
-        """
-        Initialize from optparse configuration options.
-        """
-        self._opts = opts
-        
-        # Customize some attributes from how optparse leaves them.
-        self.build_drive = os.path.normpath(self._opts.build_drive)
-        self.file_store = os.path.normpath(self._opts.file_store)
-        self.matti_scripts = os.path.normpath(self._opts.matti_scripts)
-        self.template_location = os.path.normpath(self._opts.template_loc)
-        if self._opts.flash_images:
-            self.flash_images = self._opts.flash_images.split(',')
-        else:
-            self.flash_images = []
-        if not re.search(r'\A\s*?\Z', self._opts.sis_files):
-            self.sis_files = self._opts.sis_files.split(',')
-        else:
-            self.sis_files = None
-        self.step_list = []
-        self.filelist = []
-        self.image_list = []
-        self.sis_list = []
-        self.device_type = self._opts.device_type
-        self.device_hwid = self._opts.device_hwid
-        self.drop_file = self._opts.drop_file
-        self.minimum_flash_images = self._opts.minimum_flash_images
-        self.plan_name = self._opts.plan_name
-        self.test_timeout = self._opts.test_timeout 
-        self.diamonds_build_url = self._opts.diamonds_build_url
-        self.testrun_name = self._opts.testrun_name    
-        self.report_email = self._opts.report_email
-        self.harness = self._opts.harness
-        self.sis_enabled = False
-        if self.sis_files:
-            if len(self.sis_files) >= 1:
-                self.sis_enabled = True
-        
-    
-    def __getattr__(self, attr):
-        return getattr(self._opts, attr)
-    
-    def __str__(self):
-        dump = "Configuration:\n"
-        seen = set()
-        for key, value in vars(self).items():
-            if not key.startswith("_"):
-                dump += "\t%s = %s\n" % (key, value)
-                seen.add(key)
-        for key, value in vars(self._opts).items():
-            if key not in seen:
-                dump += "\t%s = %s\n" % (key, value)
-                seen.add(key)                
-        return dump
-            
-class MattiDrop(object):
-    """
-    ATS3 testdrop generation for MATTI tool
-    """
-    
-    def __init__(self, config=None):
-        self.configuration = config
-        self.matti_cases = {}
-        self.tmp_path = os.getcwd()
-        self.files = []
-        self.test_files = []
-    
-    def fetch_testfiles(self):
-        """Needed flash files, sis-files and testscripts from given matti scripts -folder are added to file list."""
-        tmp_case_list = []
-#        tmp_image_list = []
-        os.chdir(os.path.normpath(self.configuration.matti_scripts))
-        try:
-            for path, _, names in os.walk(os.getcwd()):
-                for name in names:
-                    if re.search(r'.*?[.]rb\Z', name):
-                        tmp_case_list.append((os.path.normpath(os.path.join(path, name)), os.path.join("ats3", "matti", "script", name)))
-            if tmp_case_list:
-                for tmp_case in tmp_case_list:
-                    self.configuration.step_list.append(dict(path=os.path.join("&#x00A7;TEST_RUN_ROOT&#x00A7;", str(tmp_case[1])), name="Test case"))
-            if self.configuration.flash_images:
-                for image in self.configuration.flash_images:
-                    tmp = string.rsplit(image, os.sep)
-                    image_name = tmp[len(tmp)-1] 
-                    self.configuration.image_list.append(os.path.join("ATS3Drop", "images", image_name))
-            if self.configuration.sis_files:
-                for sis in self.configuration.sis_files:
-                    tmp = string.rsplit(sis, os.sep)
-                    sis_name = tmp[len(tmp)-1] 
-                    self.configuration.sis_list.append(dict(path=os.path.join("ATS3Drop", "sis", sis_name), dest=sis_name))
-        except KeyError, error:
-            logging.error("Error in file reading / fetching!")
-            sys.stderr.write(error)
-        if tmp_case_list:
-            for tmp_case in tmp_case_list:
-                self.configuration.filelist.append(tmp_case[1])
-            return tmp_case_list
-        else:
-            logging.error("No test cases/files available!")
-            return None
-    
-    
-    def create_testxml(self):
-        """This method will use Jinja2 template engine for test.xml creation"""
-        os.chdir(self.tmp_path)
-        env = Environment(loader=PackageLoader('ats3.matti', 'template'))
-        if os.path.isfile(self.configuration.template_location):
-            template = env.from_string(open(self.configuration.template_location).read())
-            xml_file = open("test.xml", 'w')
-            xml_file.write(template.render(configuration=self.configuration))
-            xml_file.close()
-        else:
-            logging.error("No template file found")
-                
-    def create_testdrop(self, output_file=None, file_list=None):
-        """Creates testdrop zip-file to given location."""
-        #env = Environment(loader=PackageLoader('MattiDrops', 'template'))
-        os.chdir(self.tmp_path)
-        if output_file and file_list:
-            zfile = zipfile.ZipFile(output_file, "w", zipfile.ZIP_DEFLATED)
-            try:
-                logging.info("Adding files to testdrop:")
-                for src_file, drop_file in file_list:
-                    logging.info("   + Adding: %s" % src_file.strip())
-                    if os.path.isfile(src_file):
-                        zfile.write(str(src_file.strip()), str(drop_file))
-                    else:
-                        logging.error("invalid test file name supplied %s " % drop_file)
-                if self.configuration.flash_images:
-                    for image in self.configuration.flash_images:
-                        tmp = string.rsplit(image, os.sep)
-                        image_name = tmp[len(tmp)-1] 
-                        logging.info("   + Adding: %s" % image_name)
-                        if  os.path.isfile(image):
-                            zfile.write(image, os.path.join("ATS3Drop", "images", image_name))
-                        else:
-                            logging.error("invalid flash file name supplied %s " % image_name)
-                if self.configuration.sis_enabled:
-                    if self.configuration.sis_files:
-                        for sis in self.configuration.sis_files:
-                            tmp = string.rsplit(sis, os.sep)
-                            sis_name = tmp[len(tmp)-1] 
-                            logging.info("   + Adding: %s" % sis_name)
-                            if os.path.isfile(sis):
-                                zfile.write(sis, os.path.join("ATS3Drop", "sis", sis_name))
-                            else:
-                                logging.error("invalid sis file name supplied %s " % sis_name)
-                zfile.write(os.path.normpath(os.path.join(os.getcwd(),"test.xml")), "test.xml")
-            finally:
-                logging.info("Testdrop created! %s" % output_file)            	   
-                zfile.close()
-            return zfile
-    
-def create_drop(configuration):
-    """Testdrop creation"""
-    if configuration:
-        m_drop = MattiDrop(configuration)
-        m_drop.fetch_testfiles()
-        m_drop.create_testxml()
-        return m_drop.create_testdrop(configuration.drop_file, m_drop.fetch_testfiles())
-    else:
-        logging.error("No configuration available for test drop creation")        
-        
-def main():
-    """Main entry point."""    
-    cli = OptionParser(usage="%prog [options] TSRC1 [TSRC2 [TSRC3 ...]]")
-    cli.add_option("--build-drive", help="Build area root drive", default='X:')
-    cli.add_option("--matti-scripts", help="Path to the directory where the MATTI test scripts are saved.", default="")
-    cli.add_option("--flash-images", help="Flash image files as a list",
-                   default="")
-    cli.add_option("--report-email", help="Email notification receivers", 
-                   default="")
-    cli.add_option("--harness", help="Test harness (default: %default)",
-                   default="unknown")
-    cli.add_option("--file-store", help="Destination path for reports.",
-                   default="")
-    cli.add_option("--testrun-name", help="Name of the test run", 
-                   default="run")
-    cli.add_option("--device-type", help="Device type (e.g. 'PRODUCT')", 
-                   default="unknown")
-    cli.add_option("--device-hwid", help="Device hwid", 
-                   default="")
-    cli.add_option("--diamonds-build-url", help="Diamonds build url")
-    cli.add_option("--drop-file", help="Name for the final drop zip file",
-                   default="")
-    cli.add_option("--minimum-flash-images", help="Minimum amount of flash images",
-                   default=2)    
-    cli.add_option("--plan-name", help="Name of the test plan", 
-                   default="plan")
-    cli.add_option("--sis-files", help="Sis files as a list",
-                   default="")
-    cli.add_option("--template-loc", help="location of template file",
-                   default="..\template")
-    cli.add_option("--test-timeout", help="Test execution timeout value (default: %default)",
-                   default="60")
-    cli.add_option("--verbose", help="Increase output verbosity", 
-                   action="store_true", default=True)
-    opts, _ = cli.parse_args()
-
-    if opts.verbose:
-        logging.basicConfig(level=logging.DEBUG)
-    config = Configuration(opts)
-    create_drop(config)
-    
-
-if __name__ == "__main__":
-    main()
--- a/buildframework/helium/tools/common/python/lib/ats3/matti/__init__.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-# -*- coding: latin-1 -*-
-
-#============================================================================ 
-#Name        : __init__.py 
-#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:
-#===============================================================================
\ No newline at end of file
--- a/buildframework/helium/tools/common/python/lib/ats3/matti/template/matti_demo.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,128 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!-- 
-============================================================================ 
-Name        : matti.demo.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:
-Contains the template for the test.xml file output. The test.xml file contains
-information on the files used to create the drop file.
-============================================================================
---><test>
-  <name>{{ configuration.testrun_name }}</name>
-  <target>
-    <device alias="{{ configuration.harness }}" rank="none">
-      <property name="HARNESS" value="{{ configuration.harness }}"/>
-      <property name="TYPE" value="{{ configuration.device_type }}"/>
-      <property name="HARDWARE" value="{{ configuration.device_type }}"/>
-    </device>
-  </target>
-  <plan passrate="100" enabled="true" name="MATTI test {{ configuration.plan_name }}" significant="false" harness="{{ configuration.harness }}">
-    <session name="session" harness="{{ configuration.harness }}" enabled="true" passrate="100">
-    	{%- set i = 0 -%}
-    	<set name="MATTI test set{{ i }}" harness="{{ configuration.harness }}" enabled="true" passrate="100">
-    			<target>
-          	<device alias="{{ configuration.harness }}" rank="master"/>
-        	</target>
-    			<case name="MATTI test case" passrate="100" harness="STIF" enabled="true" significant="false"> 
-          {% if configuration.image_list -%}
-          	{% for flash in configuration.image_list -%}
-          	<flash target-alias="{{ configuration.harness }}" images="{{ flash }}" />
-          	{% endfor -%}
-          {% endif %}
-          <step name="Create logs folder" harness="STIF" enabled="true" passrate="100" significant="false">
-          <command>makedir</command>
-                        <params>
-                            <param dir="c:\logs\testability"/>
-                        </params>
-          </step>
-          {% if configuration.sis_list -%}
-          	{% for sis in configuration.sis_list -%}
-          	<step name="Copy sis" harness="STIF" enabled="true" passrate="100" significant="false">
-                        <command>install</command>
-                        <params>
-                            <param src="{{ sis['path'] }}"/>
-                            <param dst="E:\{{ sis['dest'] }}"/>
-                            <param overwrite="false"/>
-                        </params>
-                    </step>
-
-                    <step name="Install SIS" harness="STIF" enabled="true" passrate="100" significant="false">
-	                    <command>install-software</command>
-		    								<params>
-                            <param sisPackageName="E:\{{ sis['dest'] }}"/>
-                            <param upgradeAllowed="true"/>
-                            <param optionalItemsAllowed="true"/>
-                            <param OCSP_Done="true"/>
-                            <param ignoreOCSPWarnings="true"/>
-                            <param untrustedAllowed="true"/>
-                            <param packageInfoAllowed="true"/>
-                            <param userCapGranted="true"/>
-                            <param killApp="true"/>
-                            <param overWriteAllowed="true"/>
-                            <param downloadAllowed="false"/>
-                            <param downloadUsername="user"/>
-                            <param downloadPassword="passwd"/>
-                            <param installDrive="C"/>
-                            <param upgradeData="true"/>
-                            <param timeout="40"/>                       	
-										    </params>
-										</step>
-          	{% endfor -%}
-          {% endif %}          
-          {% for step in configuration.step_list -%}
-          <step name="{{ step['name'] }}" harness="{{ configuration.harness }}" enabled="true" passrate="100" significant="false">
-                        <command>execute</command>
-                        <params>
-    			    							<param dir="C:\ruby\bin\"/>
-    			    							<param file="C:\ruby\bin\ruby.exe"/>
-                            <param parameters="{{ step['path'] }}"/>
-                            <param timeout="60"/>
-                            <param local="true"/>
-                            <param async="false"/>
-			    									<param needs-connection="true"/>
-                        </params>
-                    </step>
-          {% endfor -%}
-          </case>
-      </set>
-      {%- set i = i + 1 -%}
-    </session>
-  </plan>
-  {% if configuration.report_email %}
-  <postAction>
-        <type>SendEmailAction</type>
-        <params>
-            <param name="subject" value="ATS3 report for &#x00A7;RUN_NAME&#x00A7; &#x00A7;RUN_START_DATE&#x00A7; &#x00A7;RUN_START_TIME&#x00A7;"/>
-            <param name="type" value="ATS3_REPORT"/>
-            <param name="send-files" value="true"/>
-            <param name="to" value="{{ configuration.report_email }}"/>
-        </params>
-    </postAction>
-  {% endif %}
-  {% if configuration.filelist %}
-  <files>
-  	{% for img in configuration.image_list -%}
-  	<file>{{ img }}</file>
-    {% endfor -%}
-    {% for sis in configuration.sis_list -%}
-  	<file>{{ sis['path'] }}</file>
-    {% endfor -%}
-  	{% for file in configuration.filelist -%}
-  	<file>{{ file }}</file>
-    {% endfor -%}
-  </files>
-  {% endif %}
-</test>
\ No newline at end of file
--- a/buildframework/helium/tools/common/python/lib/ats3/parsers.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,749 +0,0 @@
-# -*- encoding: latin-1 -*-
-
-#============================================================================ 
-#Name        : parsers.py 
-#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:
-#===============================================================================
-
-""" The ATS related parsers """
-
-
-#w0142 => * and ** were used
-#F0401 => pylint didn't find "path" module
-#C0302 => Too many lines
-
-
-import os
-import re
-import sys
-import string
-import logging
-from path import path
-from textwrap import dedent
-import fnmatch
-import subprocess
-import codecs
-
-_logger = logging.getLogger('ats-parser')
-
-import configuration
-def split_config_to_attributes_and_properties(specfile):
-    """Split the specfile to its parts"""
-    attributes = {}
-    properties = {}
-    builder = configuration.NestedConfigurationBuilder(specfile)
-    configs = builder.getConfigurations()
-    # the supported configs are either attributes or properties
-    # collect each in a dictionary and return them.
-    for config in configs:
-        if config.name == 'attributes' :
-            for attr in config:
-                attributes[attr] = config[attr]
-        if config.name == 'properties' :
-            for prop in config:
-                properties[prop] = config[prop]
-    return (properties, attributes)
-
-
-class CppParser(object):
-    """
-    Parser for CPP tool output. Returns cleaned output from the execution
-    of CPP with or without parent paths included in the output.
-    """
-
-    def __init__(self):
-        pass
-
-    def get_cpp_output(self, bld_path = None, output_parameter = "n", imacros = None):
-        """
-        To clean out conditionals from the compilation it is necessary to 
-        use C preprocessing to clean out those.
-        
-        If ('n' - normal) output is chosen, parser returns list of paths
-        If ('e' - extended) output is chosen parser returns list of (path, parent_path) tuples
-        If ('d' - dependency) output is chosen parser returns a dicitionary (can be a nested dictionary) 
-                  of paths dependency (-ies). 
-                  
-        'imacros' can also be given as parameters for CPP options.
-        
-        if bld file is not given, the function will try to find the file(s) on the given location with extension ".inf"
-        """
-
-        clean_path_list = []
-        path_list = []
-        temp_path = os.getcwd()
-        if "bld.inf" in str(bld_path).lower():
-            os.chdir(os.path.normpath(os.path.join(bld_path, os.pardir)))
-        else:
-            os.chdir(os.path.normpath(os.path.join(bld_path)))
-        if imacros is not None:
-            includedir = os.path.join(os.path.splitdrive(bld_path)[0] + os.sep, 'epoc32', 'include')
-            command = r"cpp -imacros %s -I %s bld.inf" % (str(imacros), includedir)
-        else:
-            command = u"cpp bld.inf"
-        process = subprocess.Popen(command, shell = True, stdout = subprocess.PIPE)
-        pipe = process.stdout
-        
-        if output_parameter == "d":
-            return self.create_dependency_dictionary(pipe, bld_path)
-
-        for line in pipe.readlines():
-            #_logger.debug(line.strip())
-            if re.search(r"\A#\s.*?", line.strip()) or re.search(r"\A#.*?[0-9]", line.strip()):
-                if line.strip() not in path_list:
-                    path_list.append(line.strip())
-        process.wait()
-        if process.returncode == 1:
-            _logger.error('CPP failed: ' + command + ' in: ' + os.getcwd())
-        pipe.close()
-
-        os.chdir(temp_path)
-        if output_parameter is "n":
-            for _path in self.clean_cpp_output(bld_path, path_list):
-                clean_path_list.append(_path[0])
-        elif output_parameter is "e":
-            clean_path_list = self.clean_cpp_output(bld_path, path_list)
-
-        clean_path_list = list(set(clean_path_list))
-
-        bfp = BldFileParser()
-
-        for tsrc in clean_path_list:
-            mmp_path = bfp.get_test_mmp_files(tsrc[0])
-            if tsrc[0] == tsrc[1]:
-                if mmp_path == None or mmp_path == []:
-                    clean_path_list.remove(tsrc)
-
-        return clean_path_list
-    
-    def create_dependency_dictionary(self, _pipe_, path_to_bld):
-        """
-        The output from CPP is cleaned in a fashion that the output is
-        a dictionary (or nested dictionary) of paths and their dependencies.
-        """
-        bld_parser = BldFileParser()
-        pkg_parser = PkgFileParser()
-        mmp_parser = MmpFileParser()
-        
-        temp_path = os.getcwd()
-        parent = os.getcwd()
-        self.path_to_bld = path_to_bld
-        
-        test_sets = {}
-        harness = ""
-        main_level = ""
-        test_case = []
-        test_cases = []
-        output_list = []
-        for line in _pipe_.readlines():
-            if re.match(r"#.*", line.lower()):
-                #_logger.debug(line)
-                tpat =  re.findall(r'"(.*bld.inf?)"', line.lower())
-                if tpat != []:
-                    output_list.append((line, os.path.dirname(os.path.normpath(os.path.join(self.path_to_bld, tpat[0])))))
-        _pipe_.close()
-        
-        #Creating dependencies
-        for case in output_list:
-            if re.match(r".*[bld.inf][^0-9]\Z", string.strip(string.lower(case[0]))):
-                
-                if main_level == "":
-                    main_level = case[1]
-                parent = case[1]
-                os.chdir(case[1])
-                test_cases.append((parent, case[1]))
-            elif re.match(r".*[1]\Z", string.strip(string.lower(case[0]))):
-                parent = os.getcwd()
-                os.chdir(case[1])
-                
-                test_cases.append((parent, case[1]))
-            elif re.match(r".*[2]\Z", string.strip(string.lower(case[0]))):
-                if test_cases:
-                    for tcase in test_cases:
-                        if parent in tcase[1]:
-                            parent = tcase[0]
-                            os.chdir(tcase[1])
-                            break
-                        
-        for t_case in test_cases:
-            if t_case[0] == t_case[1] and (not bld_parser.get_test_mmp_files(t_case[1])):
-                del t_case
-            elif t_case[0] in main_level:
-                test_sets[t_case[1]] = {}
-                test_sets[t_case[1]]['content'] = {}
-                test_sets[t_case[1]]['content'][t_case[1]] = {}
-                harness = mmp_parser.get_harness(t_case[1])
-                #if harness == "": harness = None
-                test_sets[t_case[1]]['content'][t_case[1]]['type'] = mmp_parser.get_dll_type(t_case[1])
-                test_sets[t_case[1]]['content'][t_case[1]]['harness'] = harness
-                test_sets[t_case[1]]['content'][t_case[1]]['pkg_files'] = pkg_parser.get_pkg_files(t_case[1], False)
-                test_sets[t_case[1]]['content'][t_case[1]]['mmp_files'] = bld_parser.get_test_mmp_files(t_case[1], False)
-            else:
-                for key, value in test_sets.items():
-                    if t_case[0] in value['content'].keys():
-                        harness = mmp_parser.get_harness(t_case[1])
-                        if harness is "" or harness in test_sets[key]['content'][t_case[0]]['harness']:
-                            test_sets[key]['content'][t_case[1]] = {}
-                            test_sets[key]['content'][t_case[1]]['type'] = mmp_parser.get_dll_type(t_case[1])
-                            test_sets[key]['content'][t_case[1]]['harness'] = harness
-                            test_sets[key]['content'][t_case[1]]['pkg_files'] = pkg_parser.get_pkg_files(t_case[1], False)
-                            test_sets[key]['content'][t_case[1]]['mmp_files'] = bld_parser.get_test_mmp_files(t_case[1], False)
-                        else:
-                            test_sets[t_case[1]] = {}
-                            test_sets[t_case[1]]['content'] = {}
-                            test_sets[t_case[1]]['content'][t_case[1]] = {}
-                            test_sets[t_case[1]]['content'][t_case[1]]['type'] = mmp_parser.get_dll_type(t_case[1])
-                            test_sets[t_case[1]]['content'][t_case[1]]['harness'] = harness
-                            test_sets[t_case[1]]['content'][t_case[1]]['pkg_files'] = pkg_parser.get_pkg_files(t_case[1], False)
-                            test_sets[t_case[1]]['content'][t_case[1]]['mmp_files'] = bld_parser.get_test_mmp_files(t_case[1], False)
-
-        os.chdir(temp_path)
-        if test_sets == {}:
-            for x in output_list:
-                _logger.debug(x)
-            for x in test_cases:
-                _logger.debug(x)
-            _logger.error(path_to_bld + ' test_sets are empty')
-        return test_sets
-
-    
-    def clean_cpp_output(self, bld_path, path_list):
-        """
-        The output from CPP needs to be "cleaned" so that extra chars needs
-        to be removed and also hierarchy which cpp is following is preserved
-        and returned as an output. 
-        """
-
-        pat = ""
-        value = ""
-        cleaned_output = []
-        if "bld.inf" in bld_path:
-            path_to_parent = os.path.dirname(bld_path)
-        else:
-            path_to_parent = bld_path
-        pat = re.compile(r'\A#\s*?.*?[\"](.*?)[\"].*?')
-        for _path in path_list:
-            if re.match(r".*[bld.inf]\s*?[^0-9]\Z", string.strip(string.lower(_path))):
-                value = pat.match(_path.strip())
-                path_to_tc = os.path.dirname(os.path.normpath(os.path.join((bld_path), value.group(1))))
-                cleaned_output.append((path_to_tc, path_to_parent))
-            if re.match(r".*[1]\s*?\Z", string.strip(string.lower(_path))):
-                value = pat.match(_path.strip())
-                path_to_tc = os.path.dirname(os.path.normpath(os.path.join(bld_path, value.group(1))))
-                cleaned_output.append((path_to_tc, path_to_parent))
-            if re.match(r".*[2]\s*?\Z", string.strip(string.lower(_path))):
-                if cleaned_output:
-                    for cout in cleaned_output:
-                        if string.lower(path_to_parent) == string.lower(cout[0]):
-                            path_to_tc = cout[1]
-            path_to_parent = path_to_tc
-        return cleaned_output
-
-
-class BldFileParser(object):
-    """
-    Parser for bld.inf files. Returns MACRO values.
-    Parsing Paths can be done using CPP parser  
-    """
-    def __init__(self):
-        pass
-
-    #def get_mmp_files():
-    #    """
-    #    returns mmp files from PRJ_MMPFILES macro
-    #   """    
-
-    def get_test_mmp_files(self, bld_file_path = None, with_full_path = True):
-        """
-        returns a list of test mmp files 
-        Usage: if "x:\abc\bldfile", "PRJ_TESTMMPFILES". 
-        1. get_test_mmp_files("x:\abc\bldfile") - with full paths e.g. ["x:\abc\abc.mmp"]
-        2. get_test_mmp_files("x:\abc\bldfile", False) - without full paths e.g. ["abc.mmp"]
-        
-        if bld file is not given, the function will try to find the file(s) on the given location with extension ".inf"
-        """
-        
-        if bld_file_path == None:
-            _logger.warning("Incorrect bld file")
-            return None
-        else:
-            self.bld_file_path = path(bld_file_path)
-            if not "bld.inf" in str(self.bld_file_path).lower():
-                self.bld_file_path = os.path.join(os.path.normpath(self.bld_file_path), "bld.inf")
-
-            if not os.path.exists(self.bld_file_path):
-                _logger.error(r"bld file path does not exist: '%s'" % self.bld_file_path)
-                return None
-
-        return self.get_files(path(self.bld_file_path), "PRJ_TESTMMPFILES", with_full_path)
-
-
-    def get_files(self, bld_inf_path, bld_macro, with_full_path = True):
-        """
-        Component's MMP files, as stored in BLD.INF.
-        """
-        
-        mmp_files = []
-        self.bld_inf_path = path(bld_inf_path)
-        bld_inf = self.bld_inf_path.text()
-        if bld_inf.count(bld_macro) > 1:
-            _logger.error(bld_macro + ' in ' + bld_inf_path + ' more than once')
-        try:
-            bld_inf = re.compile(r"%s" % bld_macro).split(bld_inf)[1].strip()
-            bld_inf = re.compile(r"PRJ_+\S").split(bld_inf)[0].strip()
-            
-        except IndexError:
-            try:
-                bld_inf = re.compile(r"%s" % bld_macro).split(bld_inf)[0].strip()
-                bld_inf = re.compile(r"PRJ_+\S").split(bld_inf)[0].strip()
-                
-            except IndexError:
-                _logger.warning("Index Error while parsing bld.inf file")
-        
-        comments_free_text = self.ignore_comments_from_input(bld_inf)
-        
-        mmp_files = re.findall(r"(\S+?[.]mmp)", comments_free_text)
-        
-        
-        
-        if with_full_path:
-            self.bld_dir = self.bld_inf_path.dirname()
-            return [path.joinpath(self.bld_dir, mmp).normpath()
-                    for mmp in mmp_files]
-        else:
-            return mmp_files
-
-    def ignore_comments_from_input(self, input_str = ""):
-        """
-        Removes comments from the input string. Enables the use of examples
-        in bld.inf.
-        """
-        _input = ""
-        for i in input_str.split("\n"):
-            _input += "\n" + i.split("//")[0]
-
-        if not _input == "":
-            input_str = _input
-        count = input_str.count("/*")
-        count2 = input_str.count("*/")
-        if (count == count2):
-            idx_1 = input_str.find('/*')
-            idx_2 = input_str.find('*/') + 2
-            while count > 0:
-                substr_1 = input_str[:idx_1].strip()
-                substr_2 = input_str[idx_2:].strip()
-                input_str = substr_1 + " " + substr_2
-                idx_1 = input_str.find('/*')
-                idx_2 = input_str.find('*/') + 2
-                count = input_str.count('/*')
-            return input_str.strip()
-        else:
-            _logger.warning("Comments in bld.inf-file inconsistent. "
-                            "Check comments in bld.inf.")
-            return input_str.strip()
-
-
-    #def get_exports():
-    #    """
-    #    returns exports from the macro PRJ_EXPORTS
-    #    """
-
-class MmpFileParser(object):
-    """
-    Parser for .mmp files. Returns wanted information from the mmp-file
-    - file type (executable dll, plugin, exe, etc)
-    - test harness (STIF, EUNIT) if mmp is related to the test component
-    - file name
-    - libraries listed in the mmp
-    """
-
-    def __init__(self):
-        pass
-
-    def get_target_filetype(self, path_to_mmp = None):
-        """
-        Filetype given using TARGETTYPE in .mmp file is returned.
-        If "c:\path\to\mmp" is a location where mmp file is stored
-        get_target_filetype("c:\path\to\mmp")
-        
-        if mmp file is not given, the function will try to find the file(s) on the given location with extension ".mmp"
-        """
-        return self.read_information_from_mmp(path_to_mmp, 4)
-
-    def get_target_filename(self, path_to_mmp = None):
-        """
-        Filename given using TARGET in .mmp file is returned
-        If "c:\path\to\mmp" is a location where mmp file is stored
-        get_target_filename("c:\path\to\mmp")
-        
-        if mmp file is not given, the function will try to find the file(s) on the given location with extension ".mmp"
-        """
-        return self.read_information_from_mmp(path_to_mmp, 3)
-
-    def get_libraries(self, path_to_mmp = None):
-        """
-        Libraries listed in the MMP file are returned in a list
-        If "c:\path\to\mmp" is a location where mmp file is stored
-        get_libraries("c:\path\to\mmp")
-        
-        if mmp file is not given, the function will try to find the file(s) on the given location with extension ".mmp"
-        """
-        return self.read_information_from_mmp(path_to_mmp, 5)
-
-    def get_harness(self, path_to_mmp = None):
-        """
-        Returns harness of test component
-        If "c:\path\to\mmp" is a location where mmp file is stored
-        get_harness("c:\path\to\mmp")
-        
-        if mmp file is not given, the function will try to find the file(s) on the given location with extension ".mmp"
-        """
-        return self.read_information_from_mmp(path_to_mmp, 6)
-
-    def get_dll_type(self, path_to_mmp = None):
-        """
-        Returns type of test whether 'executable' or 'dependent' (dependent can be a stub or plugin)
-        If "c:\path\to\mmp" is a location where mmp file is stored
-        get_dll_type("c:\path\to\mmp")
-        
-        if mmp file is not given, the function will try to find the file(s) on the given location with extension ".mmp"
-        """
-        return self.read_information_from_mmp(path_to_mmp, 7)
-
-    def read_information_from_mmp(self, path_to_mmp, flag = 0):
-        """
-        Returns wanted information - user can define 
-        the wanted information level by setting a flag
-        value following way:
-        0 - (targetfilename, filetype, libraries, harness)
-        1 - (targetfilename, filetype, libraries)
-        2 - (targetfilename, filetype)
-        3 - targetfilename
-        4 - filetype
-        5 - libraries
-        6 - harness (in case of test component)
-        7 - mmpfilename
-        """
-
-
-        filename = ""
-        filetype = ""
-        dll_type = ""
-        libraries = []
-        self.mmp_files = []
-        lst_mmp_paths = []
-        harness = ""
-        stif = False
-        eunit = False
-        stifunit = False
-        tef = False
-        self.path_to_mmp = path_to_mmp
-        try:
-            if isinstance(path_to_mmp, list):
-                lst_mmp_paths = self.path_to_mmp
-            else:    
-                self.path_to_mmp = path(self.path_to_mmp)
-                if not ".mmp" in str(self.path_to_mmp).lower():
-                    bld_parser = BldFileParser()
-                    self.mmp_files = bld_parser.get_test_mmp_files(self.path_to_mmp, False)
-    
-                    for mpath in self.mmp_files:
-                        lst_mmp_paths.append(os.path.join(self.path_to_mmp, mpath))
-                else:
-                    lst_mmp_paths.append(self.path_to_mmp)
-
-            for mmp in lst_mmp_paths:
-                mmp_file = open(mmp, 'r')
-                for line in mmp_file:
-                    if re.match(r"\A(target\s).*([.]\w+)", string.strip(string.lower(line))):
-                        filename = re.findall(r"\Atarget[\s]*(\w+[.]\w+)", string.lower(line))[0]
-                    elif re.match(r"\A(targettype\s).*", string.strip(string.lower(line))):
-                        filetype = re.findall(r"\Atargettype[\s]*(\w+)", string.lower(line))[0]
-
-                libraries = libraries + re.findall(r"\b(\w+[.]lib)\b", mmp.text().lower())
-                if '//rtest' in mmp.text().lower() or '* rtest' in mmp.text().lower() or '// rtest' in mmp.text().lower():
-                    libraries.append('rtest')
-            
-            if libraries:
-                if "stiftestinterface.lib" in libraries:
-                    stif = True
-                if "eunit.lib" in libraries or "qttest.lib" in libraries:
-                    eunit = True
-                if "stifunit.lib" in libraries:
-                    stifunit = True
-                elif "testexecuteutils.lib" in libraries or 'testframeworkclient.lib' in libraries or 'rtest' in libraries:
-                    tef = True
-#                else:
-#                    _logger.debug('No harness found')
-#                    _logger.debug(lst_mmp_paths)
-#                    _logger.debug(libraries)
-            if tef:
-                harness = "GENERIC"
-            elif stif and eunit:
-                #_logger.warning("both eunit.lib and stiftestinterface.lib listed in mmp file - choosing STIF.")
-                harness = "STIF"
-            elif stif and not eunit:
-                harness = "STIF"
-            elif eunit and not stif:
-                harness = "EUNIT"
-            elif stifunit and not stif and not eunit:
-                harness = "STIFUNIT"
-
-            if harness is "":
-                dll_type = "dependent"
-            elif harness is "EUNIT":
-                dll_type = "executable"
-            elif harness is "STIF":
-                dll_type = "executable"
-
-
-        finally:
-            if flag == 0:
-                return (filename, filetype, libraries, harness)
-            elif flag == 1:
-                return (filename, filetype, libraries)
-            elif flag == 2:
-                return (filename, filetype)
-            elif flag == 3:
-                return filename
-            elif flag == 4:
-                return filetype
-            elif flag == 5:
-                return libraries
-            elif flag == 6:
-                return harness
-            elif flag == 7:
-                return dll_type
-
-class PkgFileParser(object):
-    """
-    Parses .pkg files. Returns a list of:
-      a. src path of the file
-      b. dst path on the phone
-      c. type of the file
-    for every file in the pkg file
-    """
-
-    def __init__(self, platform = None):
-        self.platform = platform
-        if self.platform is not None and "_" in self.platform:
-            plat_tar = re.search(r"(.*)_(.*).pkg", self.platform)
-            self.build_platform, self.build_target = plat_tar.groups() 
-
-    def get_pkg_files(self, location = None, with_full_path = True):
-        """
-        Returns list of PKG files on the given location. If True, full path is returned 
-        otherwise only filenames. Default is set to True
-        
-        Assume at location "c:\abd\files", two pkg file '1.pkg' and '2.pkg', then the funtion
-        can be called as:
-        1. get_pkg_files("c:\abd\files")        - will return a list of pkg files with full paths. 
-                                                  like ['c:\abd\files\1.pkg', 'c:\abd\files\2.pkg']
-        2. get_pkg_files("c:\abd\files", False) - will return a list of pkg files only. 
-                                                  like ['1.pkg', '2.pkg']
-        """
-        self.location = path(location)
-        self.pkg_files = []
-        if not self.location.exists():
-            return None
-
-        for p, subdirs, files in os.walk(self.location):
-            pfiles = [f for f in files if self.platform != None and f.endswith(self.platform)]
-            if self.platform != None and len(pfiles)>0:
-                if with_full_path:
-                    self.pkg_files.append(os.path.join(p, pfiles[0]))
-                else:
-                    self.pkg_files.append(str(pfiles[0]))
-            else:
-                for name in files:
-                    if fnmatch.fnmatch(name, "*.pkg"):
-                        if with_full_path:
-                            self.pkg_files.append(os.path.join(p, name))
-                        else:
-                            self.pkg_files.append(str(name))
-
-        return self.pkg_files
-
-    def get_data_files(self, location = [], drive = "", exclude = ""):
-        """
-        Returns data files, source and destination of the files to be installed 
-        on the phone 
-        e.g. location = tsrc\testComponent\group
-        
-        Function can be called in any of the following ways:
-        1. get_data_files("c:\abc\abc.pkg")                 - only data files' paths are returnd 
-                                                              as they are mention in the pkg file
-        2. get_data_files("c:\abc\abc.pkg", "x:")           - Proper data files' paths are returnd 
-                                                              with drive letter included 
-        3. get_data_files("c:\abc\abc.pkg", "x:", "\.dll")  - Data files' paths are returnd with 
-                                                              drive letter included but the dll 
-                                                              files will be excluded if found in 
-                                                              the pkg file
-        
-        if pkg file is not given, the function will try to find the file(s) on the given location with extension ".pkg"
-        """
-
-        self.drive = drive
-        self.exclude = exclude
-        self._files = []
-
-        if type(location) is not list:
-            locations = [location]
-        else:
-            locations = location
-        
-        for _file_ in locations:
-            
-            #if location is already a file
-            if ".pkg" in str(_file_).lower():
-                self._files = _file_
-            else:
-                self.location = path(_file_)
-
-                if not self.location.exists():
-                    continue
-                for p_file in self.get_pkg_files(self.location, True):
-                    self._files.append(p_file)
-
-        return self.__read_pkg_file(self._files)
-
-    def __map_pkg_path(self, pkg_line, pkg_file_path, pkg_file):
-        """Parse package file to get the src and dst paths" for installing files"""
-        mmp_parser = MmpFileParser()
-        ext = ""
-        val1 = ""
-        val2 = ""
-        map_src = ""
-        map_dst = ""
-        self.pkg_file_path = pkg_file_path
-        
-        if not self.exclude == "":
-            if re.search(r'%s' % self.exclude, pkg_line) is not None:
-                return None
-        #searches for the file path (src and dst) in the pkg file
-        #e.g.: "..\conf\VCXErrors.inc"-"C:\TestFramework\VCXErrors.inc"
-        result = re.search(r'^\s*"(.*?)".*?-.*?"(.*?)"', pkg_line)
-
-        if result is None:
-            return None
-        val1, val2 = result.groups()
-
-        if val1 != "":
-            
-            #replacing delimiters (${platform} and ${target}) in PKG file templates, 
-            #for instance, QT tests PKG files have delimeters 
-            if "$(platform)" in val1.lower() and self.build_platform is not None:
-                val1 = val1.lower().replace("$(platform)", self.build_platform)
-            if "$(target)" in val1.lower() and self.build_target is not None:
-                val1 = val1.lower().replace("$(target)", self.build_target)
-
-            if path.isabs(path(val1).normpath()):
-                map_src = str(path.joinpath(self.drive, val1).normpath())
-            elif re.search(r"\A\w", val1, 1):
-                map_src = str(path.joinpath(self.pkg_file_path + os.sep, os.path.normpath(val1)).normpath())
-            else:
-                map_src = str(path.joinpath(self.pkg_file_path, path(val1)).normpath())
-            map_dst = str(path(val2).normpath())
-        else:
-            map_src, map_dst = val1, val2
-        map_src = map_src.strip()
-        
-        #replaces the characters with the drive letters
-        map_dst = map_dst.replace("!:", "c:")
-        map_dst = map_dst.replace("$:", "c:")
-        map_dst = re.sub(r'^(\w)', r'\1', map_dst).strip()
-        indx = map_dst.rsplit(".")
-        try:
-            ext = indx[1]
-        except IndexError:
-            _logger.warning("Index Error in map_pkg_path()")
-
-        _test_type_ = ""
-        _target_filename_ = ""
-        
-        _target_filename_ = mmp_parser.get_target_filename(self.pkg_file_path)
-        _test_type_ = mmp_parser.get_dll_type(self.pkg_file_path)
-        _harness_ = mmp_parser.get_harness(self.pkg_file_path)
-        _libraries_ = mmp_parser.get_libraries(self.pkg_file_path)
-        
-        if ext == "ini":
-            file_type = "engine_ini"
-        elif ext == "cfg":
-            file_type = "conf"
-        elif ext == "dll":
-            #adding type of dll (executable or dependent), if file type is dll
-            if _test_type_ == "dependent":
-                file_type = "data" + ":%s" % _test_type_
-            else:
-                if "qttest.lib" in _libraries_:
-                    file_type = "data" + ":qt:dependent" 
-                else:
-                    file_type = "testmodule"
-                    
-        elif ext == 'exe' and 'rtest' in _libraries_:
-            file_type = "testmodule:rtest"
-        elif ext == "exe":
-            if _test_type_ == "dependent":
-                file_type = "data" + ":%s" % _test_type_
-            else:
-                if "qttest.lib" in _libraries_:
-                    file_type = "testmodule:qt"
-                else:
-                    file_type = "testmodule"
-
-        elif ext == "sisx":
-            file_type = ""
-        elif ext == "xml":
-            file_type = "trace_init"
-        elif ext == "pmd":
-            file_type = "pmd"
-        elif ext == "script":
-            if "testframeworkclient.lib" in _libraries_:
-                file_type = "testscript:mtf"
-            else:
-                file_type = "testscript"
-        else:
-            file_type = "data"
-
-        if not map_src or map_src == "." or not map_dst or map_dst == ".":
-            return None
-
-        return path(map_src).normpath(), path(map_dst).normpath(), file_type, pkg_file
-
-    def __read_pkg_file(self, pkg_files):
-        """Reads contents of PKG file"""
-        pkg_paths = []
-        for pkg_file in pkg_files:
-            if not os.path.exists( pkg_file ):
-                _logger.error("No PKG -file in path specified")
-                continue
-            else:
-                file1 = codecs.open(pkg_file, 'r', 'utf16')
-                try:
-                    lines = file1.readlines()
-                except UnicodeError:
-                    file1 = open(pkg_file, 'r')
-                    lines = file1.readlines()
-                pkg_file_path = path((pkg_file.rsplit(os.sep, 1))[0])
-                for line in lines:
-                    pkg_path = self.__map_pkg_path(line, pkg_file_path, os.path.basename(pkg_file))
-                    if pkg_path is None:
-                        continue
-                    else:
-                        pkg_paths.append(pkg_path)
-
-        return pkg_paths
\ No newline at end of file
--- a/buildframework/helium/tools/common/python/lib/ats3/templates/ats4_macros.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,147 +0,0 @@
-<!-- 
-============================================================================ 
-Name        : ats_template.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:
-
-============================================================================
--->
-
-{% macro ctc_initialization() -%}
-            <task>
-                <type>CreateDirTask</type>
-                <parameters>
-                    <parameter value="{{ atsself.CTC_LOG_DIR }}" name="dir"/>
-                </parameters>
-            </task>
-            <task>
-                <type>NonTestExecuteTask</type>
-                <parameters>
-                    <parameter value="z:\sys\bin\ctcman.exe" name="file" />
-                </parameters>
-            </task>
-{%- endmacro %}
-
-{% macro ctc_finalization(setd) -%}
-            <task>
-                <type>NonTestExecuteTask</type>
-                <parameters>
-                    <parameter value="writelocal" name="parameters" />
-                    <parameter value="z:\sys\bin\ctcman.exe" name="file" />
-                </parameters>
-            </task>
-            <task>
-                <type>NonTestExecuteTask</type>
-                <parameters>
-                    <parameter value="writefile" name="parameters" />
-                    <parameter value="z:\sys\bin\ctcman.exe" name="file" />
-                </parameters>
-            </task>
-            
-            {% if test_plan["ctc_run_process_params"].strip() != "" -%}            
-            <task>
-              <type>FileDownloadTask</type>
-              <parameters>
-                  <parameter name="src" value="{{ atsself.CTC_LOG_DIR }}\ctcdata.txt"/>
-                  <parameter name="dst" value="{{ atsself.ctcnetworkpath(setd, test_plan) }}"/>
-              </parameters>
-            </task>
-            {% endif %}
-            
-            <task>
-              <type>FileDownloadTask</type>
-              <parameters>
-                  <parameter name="src" value="{{ atsself.CTC_LOG_DIR }}\ctcdata.txt"/>
-              </parameters>
-            </task>
-{%- endmacro %}
-
-{% macro generate_runsteps_stif(setd) -%}
-            {% set ini_file = atsself.stif_init_file(setd['src_dst']) %}
-            {% if ini_file -%}
-        <task>
-            <type>StifRunCasesTask</type>
-            <parameters>
-              	<parameter name="filter" value="*"/>
-              	<parameter name="timeout" value="{{ test_plan["test_timeout"] }}"/>
-              	<parameter name="engineini" value="{{ ini_file[1] }}"/>
-            </parameters>
-        </task>
-            {% else %}
-                {% for file in setd['src_dst'] -%}
-                    {% if setd["test_harness"] == "STIF" or setd["test_harness"] == "STIFUNIT" -%}
-                        {% if file[2] == "conf" and ".dll" not in file[1].lower() -%}
-        <task>
-            <type>StifRunCasesTask</type>
-            <parameters>
-              	<parameter name="module" value="TESTSCRIPTER"/>
-              	<parameter name="filter" value="*"/>
-              	<parameter name="timeout" value="{{ test_plan["test_timeout"] }}"/>
-              	<parameter name="testcase-file" value="{{ file[1] }}"/>
-            </parameters>
-        </task>
-                        {% endif %}
-                        {% if file[2] == "testmodule" -%}
-        <task>
-            <type>StifRunCasesTask</type>
-            <parameters>
-              	<parameter name="module" value="{{ os.path.basename(file[1]) }}"/>
-              	<parameter name="filter" value="*"/>
-              	<parameter name="timeout" value="{{ test_plan["test_timeout"] }}"/>
-            </parameters>
-        </task>
-                        {% endif %}
-                    {% endif %}
-                {% endfor -%}
-            {% endif %}
-{%- endmacro %}
-
-
-{% macro generate_runsteps_stif_single_set(setd) -%}
-            {% if setd["engine_ini_file"] != None -%}
-        <task>
-            <type>StifRunCasesTask</type>
-            <parameters>
-              	<parameter name="filter" value="*"/>
-              	<parameter name="timeout" value="{{ test_plan["test_timeout"] }}"/>
-              	<parameter name="engineini" value="c:\testframework\{{ os.path.basename(setd["engine_ini_file"]) }}"/>
-            </parameters>
-        </task>
-            {% elif setd["config_files"] != [] -%}
-                 {% for config_file in setd["config_files"] -%}
-        <task>
-            <type>StifRunCasesTask</type>
-            <parameters>
-              	<parameter name="module" value="TESTSCRIPTER"/>
-              	<parameter name="filter" value="*"/>
-              	<parameter name="timeout" value="{{ test_plan["test_timeout"] }}"/>
-              	<parameter name="testcase-file" value="e:\testing\conf\{{ os.path.basename(config_file) }}"/>
-            </parameters>
-        </task>
-                {% endfor -%}
-            {% else %}
-                {% for testmodule_file in setd["testmodule_files"] -%}
-        <task>
-            <type>StifRunCasesTask</type>
-            <parameters>
-              	<parameter name="module" value="{{ os.path.basename(testmodule_file) }}"/>
-              	<parameter name="filter" value="*"/>
-              	<parameter name="timeout" value="{{ test_plan["test_timeout"] }}"/>
-            </parameters>
-        </task>
-                {% endfor -%}
-            {% endif %}
-{%- endmacro %}
\ No newline at end of file
--- a/buildframework/helium/tools/common/python/lib/ats3/testconfigurator.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,330 +0,0 @@
-# -*- encoding: latin-1 -*-
-
-#============================================================================ 
-#Name        : testconfigurator.py 
-#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:
-#===============================================================================
-
-
-from path import path
-import ats3.parsers as parser
-import logging
-import os
-import re
-import subprocess
-
-_logger = logging.getLogger('ats')
-
-class Ats3ComponentParser(object):
-    """
-    Parse Symbian SW component for ATS3 testing related information.
-    
-    Parses a component's source directories for testing related settings and
-    files, and generates a TestPlan out of the findings.
-    
-    """
-
-    def __init__(self, config):
-        
-        self.target_platform = config.target_platform
-        self.pkg_parser = parser.PkgFileParser(self.target_platform.replace(" ", "_")+".pkg")
-        
-        self.bld_parser = parser.BldFileParser()
-        self.mmp_parser = parser.MmpFileParser()
-        
-        self.data_dirs = config.data_dir
-        self.flash_images = [path(p) for p in config.flash_images]
-        self.tsrc_dir = None
-        self.build_drive = config.build_drive
-        self.target_platform = config.target_platform
-        self.sis_files = config.sis_files
-        self.cfg_harness = config.harness
-        self.test_timeout = config.test_timeout
-        self.trace_enabled = config.trace_enabled
-        self.excludable_dlls = []
-        self.custom_dir = None
-
-    def insert_testset_stif(self, src_dst, pkg_paths):
-        """Inserts test set data to test plan for stif"""
-        if not pkg_paths:    
-            try:
-                
-                tsrc_testdata_files = self.tsrc_data_files()
-                for data_file in tsrc_testdata_files:
-                    if "\\mmc\\" in data_file.lower():
-                        src_dst.append((data_file, path(r"e:\testing\data").joinpath(data_file.name), "data"))
-                    elif "\\c\\" in data_file.lower():
-                        src_dst.append((data_file, path(r"c:\testing\data").joinpath(data_file.name), "data"))
-                    else:
-                        src_dst.append((data_file, path(r"c:\testing\data").joinpath(data_file.name), "data"))
-            except OSError:
-                _logger.warning("No testdata folder" )
-                tsrc_testdata_files = None
-
-        else:
-            try:
-                src_dst = pkg_paths
-            except OSError:
-                _logger.warning("No pkg file found in the directory ( %s )" % self.tsrc_pkg_dir)
-                src_dst = []
-            except IndexError:
-                _logger.warning("No pkg file found in the directory ( %s )" % self.tsrc_pkg_dir)
-                src_dst = []
-        
-        return src_dst
-                
-    def insert_test_set(self, test_plan, tsrc_dir, _paths_dict_):
-        """Parse tsrc directory, storing data into the test plan."""
-        self.tsrc_dir = path(tsrc_dir)  # Store current test source dir.
-        tsrc_testdata_files = []
-        tsrc_config_files = []
-        self.custom_dir = None
-        engine_ini_file = None
-        test_harness = self.cfg_harness
-        src_dst = []
-        pmd_files = []
-        trace_activation_files = []
-        
-        if not os.path.exists( self.tsrc_dir ):
-            _logger.error("Missing test source directory: %s", self.tsrc_dir)
-        else:
-            self.custom_dir = self.tsrc_dir.joinpath("custom")
-            _logger.debug("using customized testing from %s" % self.custom_dir)
-            if os.path.exists(self.tsrc_bld_dir.joinpath("group","bld.inf")):
-                mmp_files = self.bld_parser.get_test_mmp_files(self.tsrc_bld_dir.joinpath("group","bld.inf"))                
-            else:
-                mmp_files = self.bld_parser.get_test_mmp_files(self.tsrc_bld_dir.joinpath("bld.inf"))
-                
-            test_harness = self.mmp_parser.get_harness(mmp_files)
-            
-            pkg_paths = self.pkg_parser.get_data_files(self.tsrc_pkg_files(_paths_dict_), self.build_drive)
-            if self.trace_enabled == "True":
-                try:
-                    pmd_files = self.tsrc_pmd_files()
-                except OSError:
-                    _logger.warning("No pmd file in output-folder.")
-                try:
-                    trace_activation_files = self.tsrc_trace_activation_files()
-                except OSError:
-                    _logger.warning("No trace activation files in trace init folder")
-                if trace_activation_files and not pmd_files:
-                    _logger.warning("Trace activation files available but NOT pmd file.")
-                elif pmd_files and not trace_activation_files:
-                    _logger.warning("Pmd file available but NO trace activation files.")
-            
-            if test_harness == "STIF" or test_harness == "STIFUNIT" or test_harness == "GENERIC":
-                src_dst = self.insert_testset_stif(src_dst, pkg_paths)
-                        
-            elif test_harness == "EUNIT":
-                try:
-                    src_dst  = self.pkg_parser.get_data_files(self.tsrc_pkg_files(_paths_dict_), self.build_drive)
-
-                except OSError:
-                    _logger.warning("No pkg file found in the directory ( %s )" % self.tsrc_pkg_dir)
-                    src_dst = []
-                except IndexError:
-                    _logger.warning("No pkg file found in the directory ( %s )" % self.tsrc_pkg_dir)
-                    src_dst = []
-            try:
-                testmodule_files = self.tsrc_dll_files()
-
-                for dll_file in testmodule_files:
-                    if not self.check_dll_duplication(dll_file.name, src_dst):
-                        _dll_type_ = self.mmp_parser.get_dll_type(self.tsrc_bld_dir)
-
-                        if dll_file.name in self.excludable_dlls:
-                            src_dst.append((dll_file, path(r"c:\sys\bin").joinpath(dll_file.name), "data:%s" % _dll_type_))
-                        else:
-                            src_dst.append((dll_file, path(r"c:\sys\bin").joinpath(dll_file.name), "testmodule"))
-
-            except OSError:
-                _logger.warning("No dll files in dll folders" )
-                tsrc_testdata_files = None
-            temp_list = []
-            
-            if test_plan['multiset_enabled'] == 'True':
-                backup = []
-                temp_src_dst = {}
-                for x in src_dst:
-                    if len(x) < 4:
-                        backup.append(x)
-                for x in src_dst:
-                    if len(x) > 3:
-                        if temp_src_dst.has_key(x[3]):
-                            temp_src_dst[x[3]].append(x)
-                        else:
-                            temp_src_dst[x[3]] = [x] + backup
-                
-                for pkg in temp_src_dst.keys():
-                    src_dst = temp_src_dst[pkg]
-                    
-                    if self.trace_enabled == "True":
-                        test_plan.insert_set(data_files=tsrc_testdata_files,
-                                             config_files=tsrc_config_files,
-                                             engine_ini_file=engine_ini_file,
-                                             image_files=self.flash_images,
-                                             sis_files=self.sis_files,
-                                             #testmodule_files=self.tsrc_dll_files(),
-                                             test_timeout=list(self.test_timeout),
-                                             test_harness=test_harness,
-                                             src_dst=src_dst,
-                                             pmd_files=pmd_files,
-                                             trace_activation_files=trace_activation_files,
-                                             custom_dir=self.custom_dir,
-                                             component_path=tsrc_dir)
-                    else:
-                        test_plan.insert_set(image_files=self.flash_images,
-                                             sis_files=self.sis_files,
-                                             test_timeout=list(self.test_timeout),
-                                             test_harness=test_harness,
-                                             src_dst=src_dst,
-                                             custom_dir=self.custom_dir,
-                                             component_path=tsrc_dir)
-            else:
-                if self.trace_enabled == "True":
-                    test_plan.insert_set(data_files=tsrc_testdata_files,
-                                         config_files=tsrc_config_files,
-                                         engine_ini_file=engine_ini_file,
-                                         image_files=self.flash_images,
-                                         sis_files=self.sis_files,
-                                         #testmodule_files=self.tsrc_dll_files(),
-                                         test_timeout=list(self.test_timeout),
-                                         test_harness=test_harness,
-                                         src_dst=src_dst,
-                                         pmd_files=pmd_files,
-                                         trace_activation_files=trace_activation_files,
-                                         custom_dir=self.custom_dir,
-                                         component_path=tsrc_dir)
-                else:
-                    test_plan.insert_set(image_files=self.flash_images,
-                                         sis_files=self.sis_files,
-                                         test_timeout=list(self.test_timeout),
-                                         test_harness=test_harness,
-                                         src_dst=src_dst,
-                                         custom_dir=self.custom_dir,
-                                         component_path=tsrc_dir)
-
-    def check_dll_duplication(self, _dll_file_, _src_dst_ ):
-        """Checks if the dll is already in the dictionary, created by pkg file"""
-        for item in _src_dst_:
-            first = item[0]
-            second = item[1]
-            return _dll_file_.lower() in first.lower()
-            
-    @property
-    def tsrc_bld_dir(self):
-        """Component's build directory."""
-        return self.tsrc_dir
-
-    @property
-    def tsrc_conf_dir(self):
-        """Component's configuration file directory."""
-        return self.tsrc_dir.joinpath("conf")
-
-    @property
-    def tsrc_custom_dir(self):
-        """Component's test customization directory."""
-        return self.tsrc_dir.joinpath("custom")
-
-
-    @property
-    def tsrc_data_dirs(self):
-        """Component's data directories."""
-        return [self.tsrc_dir.joinpath(d) for d in self.data_dirs]
-
-    @property
-    def tsrc_init_dir(self):
-        """Component's initialization file directory."""
-        return self.tsrc_dir.joinpath("init")
-    
-    @property
-    def tsrc_pkg_dir(self):
-        """Component's .pkg -file directory"""
-        return self.tsrc_dir
-    
-    @property
-    def tsrc_trace_activation_dir(self):
-        """Component's trace activation file directory"""
-        return self.tsrc_dir.joinpath("trace_init")
-
-    @property
-    def tsrc_pmd_dir(self):
-        """Component's pmd file directory"""
-        pmd_dir = self.build_drive + os.sep
-        return pmd_dir.joinpath("output", "pmd")
-
-    def tsrc_pmd_files(self):
-        """Component's trace pmd files from the {build_drive}\output directory"""
-        return list(self.tsrc_pmd_dir.walkfiles("*.pmd"))
-
-    def tsrc_trace_activation_files(self):
-        """Component's trace activation files, from the rtace_init directory."""
-        return list(self.tsrc_trace_activation_dir.walkfiles("*.xml"))
-    
-    def tsrc_config_files(self):
-        """Component's configuration files, from the conf directory."""
-        return list(self.tsrc_conf_dir.walkfiles("*.cfg"))
-
-    def tsrc_ini_files(self):
-        """Component's initialiation files, from the ini directory."""
-        return list(self.tsrc_init_dir.walkfiles("*.ini"))
-
-    def tsrc_data_files(self):
-        """Component's data files, from data directories."""
-        files = []
-        files2 = []
-        for data_dir in self.tsrc_data_dirs:            
-            if data_dir.exists():
-                files.extend(list(data_dir.walkfiles()))        
-        
-        #Remove dist policy files
-        for data_file in files:
-            if data_file.name.lower() != "distribution.policy.s60":
-                files2.append(data_file)
-        return files2
-
-    def tsrc_dll_files(self):
-        """Component's DLL files, reported by ABLD BUILD."""
-
-        dlls = []
-        orig_dir = os.getcwd()
-        try:
-            os.chdir(self.tsrc_bld_dir)
-            os.system("bldmake bldfiles")
-            #os.system("abld test build %s" % self.target_platform)
-            process = subprocess.Popen("abld -w test build %s" % self.target_platform, shell=True, stdout=subprocess.PIPE)
-            pipe = process.communicate()[0]
-            for line in pipe.split('\n'):
-                _logger.debug(line.strip())
-                target = path(line.strip())
-                if target.ext == ".dll":
-                    
-                    build_target = self.build_drive.joinpath(target).normpath()
-                    if not build_target.exists():
-                        _logger.warning("not found: %s" % build_target)
-                    else:
-                        dlls.append(build_target)
-        finally:
-            os.chdir(orig_dir)
-        return dlls
-
-    def tsrc_pkg_files(self, _dict_):
-        """Component's package files, from the group directory"""
-        pkg_dirs = []
-        for sub_component in _dict_[self.tsrc_pkg_dir]['content'].keys():
-            pkg_dirs.append(sub_component)
-        return pkg_dirs
--- a/buildframework/helium/tools/common/python/lib/atsant.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,67 +0,0 @@
-# -*- encoding: latin-1 -*-
-
-#============================================================================ 
-#Name        : atsant.py 
-#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:
-#===============================================================================
-
-import re
-import sysdef.api
-import os
-
-def files_to_test(canonicalsysdeffile, excludetestlayers, idobuildfilter, builddrive):
-    sdf = sysdef.api.SystemDefinition(canonicalsysdeffile)
-    
-    modules = {}
-    paths_list = []
-    for la in sdf.layers:
-        if re.match(r".*_test_layer$", la):
-            try:
-                if re.search(r"\b%s\b" % la, excludetestlayers):
-                    continue
-            except TypeError, exp:
-                pass
-
-            layer = sdf.layers[la]
-            for mod in layer.modules:
-                if mod.name not in modules:
-                    modules[mod.name] = []
-                for unit in mod.units:
-                    include_unit = True
-                    if idobuildfilter != None:
-                        if idobuildfilter != "":
-                            include_unit = False
-                            if hasattr(unit, 'filters'):
-                                if len(unit.filters) > 0:
-                                    for filter in unit.filters:
-                                        if re.search(r"\b%s\b" % filter, idobuildfilter):
-                                            include_unit = True
-                                        else:
-                                            include_unit = False
-                                elif len(unit.filters) == 0:
-                                    include_unit = True
-                            else:
-                                include_unit = False
-                        else:
-                            include_unit = False
-                            if hasattr(unit, 'filters'):                            
-                                if len(unit.filters) == 0:
-                                    include_unit = True
-                    if include_unit:
-                        modules[mod.name].append(os.path.join(builddrive + os.sep, unit.path))
-
-    return modules
--- a/buildframework/helium/tools/common/python/lib/bomtofile.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,75 +0,0 @@
-#============================================================================ 
-#Name        : bomtofile.py
-#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:
-#===============================================================================
-
-import amara
-import nokia.nokiaccm
-import ant
-
-class BOMWriter(object):
-    """
-    Read BOM and output in text
-    """
-    def __init__(self, session, project_name, project, output_dir):
-        self.project_name = project_name
-        self.project = project
-        self.output_dir = output_dir
-        self.session = session
-      
-    def writeprojects(self):
-        fileout = file(self.output_dir + '/' + self.project_name + '_projects.txt', 'w')
-        
-        i = 1
-        for project in self.project.baseline:
-            fileout.write(str(i) + ") " + str(project) + "\n")
-            
-            i += 1
-        fileout.close()
-        
-    def writebaselines(self):
-        fileout = file(self.output_dir + '/' + self.project_name + '_baselines.txt', 'w')    
-        
-        i = 1
-        for project in self.project.baseline:
-            fileout.write(str(i) + ") " + str(project) + "\n")
-            
-            cmproject = self.session.create(str(project))
-            
-            try:
-                baseline = str(cmproject.baseline).strip()
-                if baseline == "None":
-                    fileout.write(str(i) + ") " + str(project) + "\n")
-                else:
-                    fileout.write(str(i) + ") " + baseline + "\n")
-                i += 1
-            except Exception, ex:
-                print ex
-        fileout.close()
-            
-    def writetasks(self):
-        if self.project.xml_properties.has_key("task"):
-            fileout = file(self.output_dir + '/' + self.project_name + '_tasks.txt', 'w')
-            
-            i = 1
-            for task in self.project.task:
-                fileout.write(str(i) + ") Task " + str(task) + "\n")
-                i += 1
-            fileout.close()
-
-
-
--- a/buildframework/helium/tools/common/python/lib/bsf.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,127 +0,0 @@
-#============================================================================ 
-#Name        : bsf.py 
-#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:
-#===============================================================================
-
-""" Helper module to read bsf files.
-"""
-import dircache
-import os.path
-import re
-
-class BSF(object):
-    """ Class that parse and abstract a bsf file.
-    """    
-    def __init__(self, filename, bsflist):
-        self._filename = filename
-        self._is_variant = False
-        self._is_virtual_variant = False
-        self._customize = None
-        self._compile_with_parent = False
-        self._list = bsflist
-        self.parse()
-        
-    def parse(self):
-        """ Parse the bsf file
-        """ 
-        bsffile = open(self._filename)
-        for line in bsffile.readlines():
-            # skipping empty lines and comment
-            if re.match(r"^(\s*|\s*#.*)$", line) != None:
-                continue
-
-            res = re.search(r"^^\s*(?P<key>\w+)\s+(?P<value>\w+)\s*$", line)
-            if res != None:
-                if res.groupdict()['key'].lower() == "customizes":
-                    self._customize = res.groupdict()['value']
-            
-            if re.match(r"^^\s*VARIANT\s*$", line) != None:
-                self._is_variant = True
-            if re.match(r"^^\s*VIRTUALVARIANT\s*$", line) != None:
-                self._is_virtual_variant = True
-            if re.match(r"^^\s*COMPILEWITHPARENT\s*$", line) != None:
-                self._compile_with_parent = True
-                
-         
-        bsffile.close()
-
-    def is_variant(self):
-        """ I am a variant
-        """
-        return self._is_variant
-
-    def is_virtual_variant(self):
-        """ I am a virtual variant
-        """
-        return self._is_virtual_variant
-    
-    def customize(self):
-        """ who am I customizing?
-        """
-        return self._customize.lower()
-    
-    def compile_with_parent(self):
-        """ who am I customizing?
-        """
-        return self._compile_with_parent
-
-    def get_name(self):
-        """ get my name...
-        """
-        return os.path.splitext((os.path.basename(self._filename)))[0].lower()
-    
-    def get_path_as_array(self):        
-        """ return myself plus my parents
-        """
-        result = [self.get_name()]      
-        parent = self._list[self.customize()]
-        while not parent.is_virtual_variant():
-            result.append(parent.get_name())
-            parent = self._list[parent.customize()]
-        result.reverse()
-        return result
-  
-    def get_path(self):        
-        """ return the path section
-        """
-        path = self.get_name()      
-        parent = self._list[self.customize()]
-        while not parent.is_virtual_variant():
-            path = parent.get_name()+'/'+path
-            parent = self._list[parent.customize()]
-        return path
-            
-
-def read_all(path="/epoc32/tools"):   
-    """ Read all bsfs from a directory
-    """
-    result = {}
-    for bsf in dircache.listdir(path):
-        if os.path.splitext(bsf)[1]==".bsf":
-            bsf = BSF(path+"/"+bsf, result)
-            result[bsf.get_name()] = bsf
-    return result
-
-def get_includes(bsfs, product):
-    """ Return an array representing all include path from specific path (product) to generic (platform)
-    """
-    result = []
-    configs = bsfs[product].get_path_as_array()
-    configs.reverse()
-    for customisation in configs:
-        result.append(bsfs[customisation].get_path())
-    return result
--- a/buildframework/helium/tools/common/python/lib/build/__init__.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-#============================================================================ 
-#Name        : __init__.py 
-#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:
-#===============================================================================
-
-""" Package for functionality related to features of a build. """
\ No newline at end of file
--- a/buildframework/helium/tools/common/python/lib/build/ec/__init__.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-#============================================================================ 
-#Name        : __init__.py 
-#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:
-#===============================================================================
-
-""" build.ec framework.  """
\ No newline at end of file
--- a/buildframework/helium/tools/common/python/lib/build/ec/history.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,105 +0,0 @@
-#============================================================================ 
-#Name        : history.py 
-#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:
-#===============================================================================
-
-""" History file management related functionalities. """
-
-
-import sys
-import os
-from os.path import join
-
-
-class HistoryFileManager:
-    """ To manage EC history files. """
-    
-    weak_num = ""
-    branch_name = ""
-    file_dict = {}
-
-    def __init__(self, arg1, arg2, arg3):
-        """ Constructor. """
-        self.path = str(arg1)
-        self.weak_num = str(arg2)
-        self.branch_name = str(arg3)
-
-    def findActualFilePath(self):
-        """Find the new path where the history file will be updated based on the week number and branch.
-        
-        This will normally the same path as used to copy from net drive to local drive.
-        But for new branch / week number, the path will be different. """
-        branch_dir_list = self.branch_name.split(".")
-        for dir_ in branch_dir_list:
-            self.path = os.path.join(self.path, dir_)
-        if(self.path.endswith("\\0")):
-            self.path = self.path[0:-2]
-        return str(self.path)
-        
-    def findHistoryFilePath(self):
-        """ Finds the path of the history file based on input
-        branch and week number. """
-        branch_dir_list = self.branch_name.split(".")
-        for dir_ in branch_dir_list:
-            if(not os.path.exists(os.path.join(self.path, dir_))):
-                break
-            else:
-                self.path = os.path.join(self.path, dir_)
-        if(self.path.endswith("\\0")):
-            self.path = self.path[0:-2]
-
-    def findFile(self):
-        """ Finds the closest history file match to week number. """
-        ret_file_name = None
-        file_names = os.listdir(self.path)
-        file_names_alone = file_names[:]
-
-        # Find the history files without sub directory
-        for name in file_names:
-            if(os.path.isdir(os.path.join(self.path, name))):
-                file_names_alone.remove(name)
-
-        if(len(file_names_alone) > 0):
-            file_names_alone.sort()
-            low_index = 0
-            high_index = len(file_names_alone) - 1
-
-            if(high_index == 0):
-                temp_name = file_names_alone[low_index]
-                if(self.weak_num >= temp_name[0:4]):
-                    return temp_name
-                else:
-                    return ret_file_name
-
-            # Find the matching history file using binary search
-            while(low_index < high_index):
-                mid_index = (low_index + high_index) / 2
-                temp_name = file_names_alone[mid_index]
-                if(temp_name[0:4] < self.weak_num):
-                    low_index = mid_index + 1
-                else:
-                    high_index = mid_index
-                    
-                temp_name = file_names_alone[high_index]
-            if( self.weak_num >= temp_name[0:4]):
-                ret_file_name = file_names_alone[high_index]
-            else:
-                if(high_index != 0):
-                    ret_file_name = file_names_alone[high_index - 1]
-
-        return str(ret_file_name)
-
--- a/buildframework/helium/tools/common/python/lib/build/io.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,113 +0,0 @@
-#============================================================================ 
-#Name        : io.py 
-#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:
-#===============================================================================
-
-""" IO classes for handling build-related objects, e.g. log files.
-"""
-
-import logging
-import re
-import symbian.log
-
-
-_logger = logging.getLogger('build.io')
-
-
-class AbldLogWhatReader(symbian.log.Parser):
-    """ Reader that parses a Symbian build log and extracts abld -what sections.
-    
-    This reader will return, using the iterator protocol, tuples containing:
-    * Unit name.
-    * List of binaries for that unit.
-    
-    """
-    def __init__(self, logpath):
-        symbian.log.Parser.__init__(self, open(logpath, 'r'))
-        self.__match_what = re.compile("abld(\.bat)?(\s+.*)*\s+-w(hat)?", re.I)        
-        self._releasable = {}      
-        self.parse()
-
-    def __iter__(self):
-        keys = self._releasable.keys()
-        keys.sort()
-        for key in keys:
-            yield (key, self._releasable[key])
-    
-    def task(self, name, cmdline, path, output):
-        """ Scans abld what build jobs to extract the list of releasable. """
-        _logger.debug("%s, %s, %s, %s" % (name, cmdline, path, output))
-        if self.__match_what.match(cmdline) == None:
-            return
-        
-        if name not in self._releasable:
-            self._releasable[name] = []
-        for line in output.splitlines():
-            line = line.strip()
-            if line.startswith("\\") or line.startswith("/"):  
-                self._releasable[name].append(line)
-
-                    
-class RombuildLogBinarySizeReader(object):
-    """ Reader that parses a Symbian ROM build log and extracts binary sizes.
-    
-    This reader will return, using the iterator protocol, tuples containing:
-    * Binary name.
-    * Size of binary.\t(\d+)
-    """
-    rom_binary_size_regex = re.compile(r'(\\epoc32[\w\\\.]+)\t(\d+)')
-    rofs_binary_size_regex = re.compile(r"ile '([\w\\\.]+)' size: (\w+)")
-    image_type_regex = re.compile(r'[._]([^._]+)\.log')
-    
-    def __init__(self, logpath):
-        """ Initialisation. 
-        
-        :param logpath: The path to the Symbian log file.
-        """
-        self._logpath = logpath
-        
-    def __iter__(self):
-        """ Implement the iterator protocol. """
-        loghandle = open(self._logpath, 'r')
-        
-        # Find the ROM image type
-        type_match = self.image_type_regex.search(self._logpath)
-        image_type = type_match.group(1)
-        if image_type == 'rom' or image_type.startswith('rofs'):
-            # Extract the binary and size info 
-            for line in loghandle:
-                if image_type == 'rom':
-                    match = self.rom_binary_size_regex.match(line)
-                    if match != None:
-                        # Number is in decimal
-                        size = int(match.group(2))
-                        yield (match.group(1), size, image_type)
-                elif image_type.startswith('rofs'):
-                    match = self.rofs_binary_size_regex.search(line)
-                    if match != None:
-                        # Number is in hexidecimal
-                        size = int(match.group(2), 16)
-                        yield (match.group(1), size, image_type)
-        else:
-            _logger.error('ROM type not matched')
-    
-            
-            
-        
-        
-        
-                    
\ No newline at end of file
--- a/buildframework/helium/tools/common/python/lib/build/model.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,684 +0,0 @@
-#============================================================================ 
-#Name        : model.py 
-#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:
-#===============================================================================
-
-""" Models the concepts and objects that exist in a software build. """
-
-import itertools
-import logging
-import re
-import os
-import amara
-import ccm
-import ccm.extra
-import configuration
-import nokia.nokiaccm
-from xmlhelper import node_scan, recursive_node_scan
-import symrec
-
-# Uncomment this line to enable logging in this module, or configure logging elsewhere
-_logger = logging.getLogger("bom")
-#_logger.setLevel(logging.DEBUG)
-logging.basicConfig(level=logging.DEBUG)
-
-
-class SessionCreator(object):
-    """ Session Creator object. """
-    def __init__(self, username=None, password=None, provider=None):
-        """ Init the SessionCreator object."""
-        self.__provider = provider
-        self.__username = username
-        self.__password = password
-    
-    def session(self, database):
-        """ Get a session for a database. If no session exists just create a new one."""
-        _logger.info("Creating session for %s" % database)
-        return self.__provider.get(username=self.__username, password=self.__password, database=database)
-        
-    def close(self):
-        self.__provider = None
-
-
-class BOM(object):
-    """ The Bill of Materials for a build. """
-    def __init__(self, config):
-        """ Initialization.
-        
-        :param config: The build configuration properties.
-        :param ccm_project: The Synergy project used for reading the BOM.
-        """
-        self.config = config
-        self.build = ""
-        self._projects = []
-        self._icd_icfs = []
-        self._flags = []
-        
-        self._capture_icd_icfs()
-        self._capture_flags()
-        
-    def _capture_icd_icfs(self):
-        prep_xml_path = self.config['prep.xml']
-        if prep_xml_path is not None and os.path.exists(prep_xml_path):
-            prep_doc = amara.parse(open(prep_xml_path,'r'))
-            if hasattr(prep_doc.prepSpec, u'source'):
-                for source in prep_doc.prepSpec.source:
-                    if hasattr(source, u'unzipicds'):
-                        for  unzipicds in source.unzipicds:
-                            if hasattr(unzipicds, u'location'):
-                                for location in unzipicds.location:
-                                    excludes = []
-                                    excluded = False
-                                    if hasattr(location, 'exclude'):
-                                        for exclude in location.exclude:
-                                            _logger.debug('Exclude added: %s' % str(exclude.name))
-                                            excludes.append(str(exclude.name))                                
-                                            excluded = False
-                                    path = str(location.name)                                    
-                                    if os.path.exists(path):
-                                        files = os.listdir(str(location.name))
-                                        for file_ in files:
-                                            for exclude in excludes:
-                                                if file_.endswith(exclude):
-                                                    excluded = True
-                                            if file_.endswith('.zip') and not excluded:
-                                                self._icd_icfs.append(file_)
-                                                self._icd_icfs.sort(key=str)
-        
-    def _capture_flags(self):
-        pass
-        
-    def _getprojects(self):
-        return self._projects
-        
-    projects = property(_getprojects)
-    
-    def all_baselines(self):
-        baselines = {}
-        for project in self._projects:
-            for baseline, baseline_attrs in project.baselines.iteritems():
-                baselines[baseline] = baseline_attrs
-        return baselines
-    
-    def all_tasks(self):
-        tasks = []
-        for project in self._projects:
-            tasks.extend(project.all_tasks())
-        tasks.sort(key=str)
-        return tasks
-            
-    def __str__(self):
-        return str(self._projects)
-
-class SimpleProject(object):
-    def __init__(self, tasks):
-        self.tasks = tasks
-        self.folders = []
-
-class SimpleBOM(BOM):
-    def __init__(self, config, bomxml):
-        BOM.__init__(self, config)
-        self._baselines = {}
-        bom = amara.parse(open(bomxml))
-        for p in bom.bom.content.project:
-            tasks = []
-            self._baselines[str(p.baseline)] = {}
-            for t in p.task:
-                tasks.append(str(t.id) + ': ' + str(t.synopsis))
-            self._projects.append(SimpleProject(tasks))
-    
-    def all_baselines(self):
-        return self._baselines
-
-class SynergyBOM(BOM):
-    def __init__(self, config, ccm_project=None, username=None, password=None, provider=None):
-        BOM.__init__(self, config)
-        self._sessioncreator = SessionCreator(username=username, password=password, provider=provider)
-        self.ccm_project = ccm_project
-        if self.ccm_project != None: 
-            self._projects = [Project(ccm_project, config)]
-        self._capture_projects()
-            
-    def __find_project(self, project, config):
-        if (os.path.exists(os.path.join(config['dir'], project.name, "project.version"))):
-            return project
-        
-        path = os.path.join(config['dir'], project.name, project.name)
-        if (not os.path.exists(path)):
-            return project
-        try:
-            result = project.session.get_workarea_info(path)
-            return result['project']           
-        except ccm.CCMException:            
-            return project
-            
-    def _capture_projects(self):
-        # grab data from new format of delivery.xml
-        configBuilder = configuration.NestedConfigurationBuilder(open(self.config['delivery'], 'r'))
-        for config in configBuilder.getConfiguration().getConfigurations():            
-            _logger.debug('Importing project %s from delivery config.' % str(config.name))            
-            ccm_project = self._sessioncreator.session(config['database']).create(config.name)
-            project = Project(self.__find_project(ccm_project, config), config)
-            self._projects.append(project)
-        
-    def close(self):
-        self._sessioncreator.close()
-
-
-class Project(object):
-    """ An SCM project.
-    
-    An input to the build area, typically copied from an SCM work area.
-    """
-    def __init__(self, ccm_project, config, action=None):
-        """ Initialisation. """
-        self._ccm_project = ccm_project
-        self._baselines = {}
-        #TODO : could querying release attribute return the ccm object? Or add a release attribute to Project
-        # class
-        release = self._ccm_project['release']
-        _logger.debug("Project release: '%s'" % release)
-        self._ccm_release = None
-        if release != '':
-            self._ccm_project.session.create(release)
-
-        # capturing the frozen baseline.
-        _logger.debug('Capture baselines')
-        project_status = self._ccm_project['status']
-        bproject = self._get_toplevel_baselines(self._ccm_project).pop()
-        if bproject != None:        
-            self._baselines[unicode(bproject)] = {u'overridden':u'true'}
-            # This section finds the baselines of all of the checked out projects
-            if project_status == "prep" or project_status == "working" or project_status == "shared":
-                for subproject in self._ccm_project.subprojects:
-                    overridden = u'false'
-                    subprojbaseline = subproject.baseline
-                    if config.has_key('subbaselines'):
-                        for subbaseline in config['subbaselines']:
-                            if str(subbaseline) == str(subprojbaseline):
-                                overridden = u'true'
-                    
-                    if subprojbaseline != None:
-                        self._baselines[unicode(subprojbaseline)] = {u'overridden': overridden}
-            # When a project is a snapshot, the baselines are the projects themselves
-            else:
-                for subproject in bproject.subprojects:            
-                    self._baselines[unicode(subproject)] = {u'overridden':u'false'}
-
-        self._tasks = []
-        self._folders = []
-        
-        # Get Synergy reconfigure properties for folders and tasks
-        if action == None:
-            self._import_baseline_config()
-            # Get tasks from Synergy if using reconfigure template
-            if config.get_boolean("use.reconfigure.template", False):
-                self._tasks = self._ccm_project.tasks
-                self._folders = self._ccm_project.folders
-                        
-        # Or get folders and tasks defined in configuration file
-        elif action != None and action.nodeName == "checkout":
-            if not config.get_boolean("use.reconfigure.template", False):
-                for task_node in action.xml_xpath(u'./task[@id]'):
-                    for task in [x.strip() for x in task_node.id.split(',')]:
-                        self._tasks.append(ccm_project.session.create("Task %s" % task))
-                for folder_node in action.xml_xpath(u'./folder[@id]'):
-                    for folder in [x.strip() for x in folder_node.id.split(',')]:
-                        self._folders.append(ccm_project.session.create("Folder %s" % folder))
-            else:
-                self._tasks = self._ccm_project.tasks
-                self._folders = self._ccm_project.folders
-            self._import_baseline_config()
-
-    def _import_baseline_config(self):
-        """ Import the baseline folders and tasks. """
-        baselines = self._get_toplevel_baselines(self._ccm_project)
-        baselines.pop()
-        for baseline in baselines:
-            for task in baseline.tasks:
-                if task not in self._tasks:                     
-                    self._tasks.append(task)
-            for folder in baseline.folders:
-                if folder not in self._folders:                     
-                    self._folders.append(folder)
-        
-    def _get_toplevel_baselines(self, project):
-        if project == None:
-            return []
-        project_status = project['status']
-        if project_status == "prep" or project_status == "working" or project_status == "shared":
-            result = [project]
-            baseline = project.baseline
-            if baseline != None:
-                result.extend(self._get_toplevel_baselines(baseline))
-            return result
-        else:
-            return [project]
-
-    def _getbaselines(self):
-        return self._baselines
-        
-    baselines = property(_getbaselines)
-       
-    def _getfolders(self):
-        return self._folders
-        
-    folders = property(_getfolders)
-    
-    def all_tasks(self):
-        """ Get all the tasks (individual and folder based). """
-        tasks = [Task(ccm_task) for ccm_task in self._tasks]
-        for folder in self._folders:
-            [tasks.append(Task(ccm_task)) for ccm_task in folder.tasks]
-        tasks.sort(key=str)
-        return tasks
-        
-    def _gettasks(self):
-        return [Task(ccm_task) for ccm_task in self._tasks]
-        
-    tasks = property(_gettasks)
-        
-    def _getsupplier(self):
-        if self._ccm_release != None:
-            component = self._ccm_release.component
-            comparisons = {'MC': '^mc',
-                           'S60': 'S60',
-                           'SPP/NCP': '^spp_config|spp_psw|spp_tools|ncp_sw$',
-                           'IBUSAL': '^IBUSAL'}
-            for supplier, regexp in comparisons.iteritems():
-                if re.search(regexp, component) != None:
-                    return supplier
-        return "Unknown"
-        
-    supplier = property(_getsupplier)
-    
-    def __repr__(self):
-        """ Object representation. """
-        return str(self._ccm_project)
-        
-    def __str__(self):
-        """ String representation. """
-        return str(self._ccm_project)
-
-
-class Fix(object):
-    """ A generic fix. """
-    def __init__(self, description):
-        """ Initialisation. """
-        self._description = description
-        
-    def __str__(self):
-        """ String representation. """
-        return str(self._description)
-        
-        
-class TSWError(Fix):
-    """ A TSW database error. """
-    regex = '([A-Z]{4}-[A-Z0-9]{6})'
-    groupname = 'TSW Errors'
-
-    def __init__(self, description):
-        """ Initialisation. """
-        Fix.__init__(self, description)
-
-
-class PCPError(Fix):
-    """ A PCP database error. """
-    regex = '([A-Z]{2}-[0-9]{11})'
-    groupname = 'PCP Errors'
-
-    def __init__(self, description):
-        """ Initialisation. """
-        Fix.__init__(self, description)
-
-
-class TAChange(Fix):
-    """ A Type Approval change. """
-    regex = '^_TA:(\s*)(.*?)(\s*)$'
-    groupname = 'TA Changes'
-    
-    def __init__(self, description):
-        """ Initialisation. """
-        Fix.__init__(self, description)
-        
-        
-class Task(object):
-    """ A task or unit of change from the SCM system. """
-    fix_types = [TSWError, PCPError, TAChange]
-    
-    def __init__(self, ccm_task):
-        """ Initialisation. """
-        self.ccm_task = ccm_task
-
-    def __getitem__(self, name):
-        """ Dictionary of tasks support. """
-        return self.ccm_task[name]
-            
-    def has_fixed(self):
-        """ Returns an object representing what this task fixed, if anything. """
-        text = str(self.ccm_task)
-        fix_object = None
-        for fix_type in self.fix_types:
-            match = re.search(fix_type.regex, str(self.ccm_task))
-            if match != None:
-                fix_object = fix_type(text)
-                break
-        return fix_object
-        
-    def __cmp__(self, other):
-        """ Compare tasks based on their task number only. """
-        self_task = str(self.ccm_task)
-        other_task = str(other.ccm_task)
-        return cmp(self_task[:self_task.find(':')], other_task[:other_task.find(':')])
-        
-    def __hash__(self):
-        """ Hash support. """
-        self_task = str(self.ccm_task)
-        return hash(self_task[:self_task.find(':')])
-    
-    def __repr__(self):
-        """ Object representation. """
-        self_task = repr(self.ccm_task)
-        return self_task[:self_task.find(':')]
-        
-    def __str__(self):
-        """ String representation. """
-        return str(self.ccm_task)
-        
-        
-class ICD_ICF(object):
-    """ A ICD or ICF patch zip file provided by Symbian. """
-    pass
-
-
-class Flag(object):
-    """ A compilation flag. """
-    pass
-    
-
-class BOMDeltaXMLWriter(object):
-    def __init__(self, bom, bom_log):
-        """ Initialisation. """
-        self._bom = bom
-        self._bom_log = bom_log
-    
-    def write(self, path):
-        """ Write the BOM delta information to an XML file. """
-        bom_log = amara.parse(open(self._bom_log, 'r'))
-        doc = amara.create_document(u'bomDelta')
-        # pylint: disable-msg=E1101
-        doc.bomDelta.xml_append(doc.xml_create_element(u'buildFrom', content=unicode(bom_log.bom.build)))
-        doc.bomDelta.xml_append(doc.xml_create_element(u'buildTo', content=unicode(self._bom.config['build.id'])))
-        content_node = doc.xml_create_element(u'content')
-        doc.bomDelta.xml_append(content_node)
-        
-        old_baselines = {}
-        baselines = {}
-        old_folders = {}
-        folders = {}
-        old_tasks = {}
-        tasks = {}
-        if hasattr(bom_log.bom.content, 'project'):
-            for project in bom_log.bom.content.project:
-                if hasattr(project, 'baseline'):
-                    for baseline in project.baseline:
-                        if not old_baselines.has_key(unicode(baseline)):
-                            old_baselines[unicode(baseline)] = {}
-                        if hasattr(baseline, 'xml_attributes'):
-                            _logger.debug('baseline.xml_attributes: %s' % baseline.xml_attributes)
-                            for attr_name, junk_tuple in sorted(baseline.xml_attributes.iteritems()):
-                                _logger.debug('attr_name: %s' % attr_name)
-                                old_baselines[unicode(baseline)][unicode(attr_name)] = unicode(getattr(baseline, attr_name))
-                if hasattr(project, 'folder'):
-                    for folder in project.folder:
-                        if hasattr(folder, 'name'):
-                            for name in folder.name:
-                                folder_name = unicode(name)
-                                _logger.debug('folder_name: %s' % folder_name)
-                            if not old_folders.has_key(unicode(folder_name)):
-                                old_folders[unicode(folder_name)] = {}
-                            if hasattr(name, 'xml_attributes'):
-                                for attr_name, junk_tuple in sorted(name.xml_attributes.iteritems()):
-                                    _logger.debug('attr_name: %s' % attr_name)
-                                    old_folders[unicode(folder_name)][unicode(attr_name)] = unicode(getattr(name, attr_name))
-        for task in recursive_node_scan(bom_log.bom.content, u'task'):
-            _logger.debug('task: %s' % task)
-            _logger.debug('task: %s' % task.id)
-            _logger.debug('task: %s' % task.synopsis)
-            task_id = u"%s: %s" % (task.id, task.synopsis)
-            if not old_tasks.has_key(task_id):
-                old_tasks[task_id] = {}
-            if hasattr(task, 'xml_attributes'):
-                for attr_name, junk_tuple in sorted(task.xml_attributes.iteritems()):
-                    _logger.debug('attr_name: %s' % attr_name)
-                    old_tasks[task_id][unicode(attr_name)] = unicode(getattr(task, attr_name))
-        for project in self._bom.projects:
-            for folder in project.folders:
-                folders[unicode(folder.instance + "#" + folder.name + ": " + folder.description)] = {u'overridden':u'true'}
-                for task in folder.tasks:
-                    _logger.debug("task_bom:'%s'" % unicode(task))
-                    tasks[unicode(task)] = {u'overridden':u'false'}
-            for task in project.tasks:
-                _logger.debug("task_bom:'%s'" % unicode(task))
-                tasks[unicode(task)] = {u'overridden':u'true'}
-
-        baselines = self._bom.all_baselines()
-
-        self._write_items_with_attributes(content_node, u'baseline', baselines, old_baselines)
-        self._write_items_with_attributes(content_node, u'folder', folders, old_folders)
-        self._write_items_with_attributes(content_node, u'task', tasks, old_tasks)
-        
-        out = open(path, 'w')
-        doc.xml(out, indent='yes')
-        out.close()
-        
-    
-    def validate_delta_bom_contents(self, delta_bom_log, bom_log, old_bom_log):
-        """ To validate delta bom contents with current bom and old bom. """
-        delta_bom_log = amara.parse(open(delta_bom_log, 'r'))
-        bom_log = amara.parse(open(bom_log, 'r'))
-        old_bom_log = amara.parse(open(old_bom_log, 'r'))
-        bom_contents_are_valid = None
-        if hasattr(delta_bom_log.bomDelta.content, 'folder'):
-            for delta_foder in delta_bom_log.bomDelta.content.folder:
-                if(getattr(delta_foder, 'status'))=='added':
-                    for bom_foder in bom_log.bom.content.project.folder:
-                        if(unicode(getattr(bom_foder, 'name')) == unicode(delta_foder)):
-                            bom_contents_are_valid = True
-                        else:
-                            bom_contents_are_valid = False
-                if(getattr(delta_foder, 'status'))=='deleted':
-                    for old_bom_foder in old_bom_log.bom.content.project.folder:
-                        if(unicode(getattr(old_bom_foder, 'name')) == unicode(delta_foder)):
-                            bom_contents_are_valid = True
-                        else:
-                            bom_contents_are_valid = False
-                        
-        if hasattr(delta_bom_log.bomDelta.content, 'task'):
-            for delta_task in delta_bom_log.bomDelta.content.task:
-                if(getattr(delta_task, 'status'))=='added':
-                    for bom_task in recursive_node_scan(bom_log.bom.content, u'task'):
-                        bom_task_id = u"%s: %s" % (bom_task.id, bom_task.synopsis)
-                        if(bom_task_id == unicode(delta_task)):
-                            bom_contents_are_valid = True
-                        else:
-                            bom_contents_are_valid = False
-                if(getattr(delta_task, 'status'))=='deleted':
-                    for old_bom_task in recursive_node_scan(old_bom_log.bom.content, u'task'):
-                        old_bom_task_id = u"%s: %s" % (old_bom_task.id, old_bom_task.synopsis)
-                        if(old_bom_task_id == unicode(delta_task)):
-                            bom_contents_are_valid = True
-                        else:
-                            bom_contents_are_valid = False
-        return bom_contents_are_valid
-     
-    def _write_items(self, node, item_name, items, older_items):
-        items = frozenset(items)
-        older_items = frozenset(older_items)
-        
-        items_added = list(items.difference(older_items))
-        items_added.sort()
-        for item in items_added:
-            node.xml_append(node.xml_create_element(item_name, \
-                            attributes={u'status': u'added'}, content=unicode(item)))
-            
-        items_deleted = list(older_items.difference(items))
-        items_deleted.sort()
-        for item in items_deleted:
-            node.xml_append(node.xml_create_element(item_name, \
-                            attributes={u'status': u'deleted'}, content=unicode(item)))
-
-    # This method takes dictionaries as input to pass along attributes
-    def _write_items_with_attributes(self, node, item_name, items, older_items):
-        fr_items = frozenset(items)
-        fr_older_items = frozenset(older_items)
-        
-        items_added = list(fr_items.difference(fr_older_items))
-        items_added.sort()
-        for item in items_added:
-            item_attributes = {u'status': u'added'}
-            for attr_name, attr_value in sorted(items[item].iteritems()):
-                _logger.debug('item: %s' % item)
-                _logger.debug('attr_name: %s' % attr_name)
-                _logger.debug('attr_value: %s' % attr_value)
-                item_attributes[attr_name] = attr_value
-            node.xml_append(node.xml_create_element(item_name, \
-                            attributes=item_attributes, content=unicode(item)))
-            
-        items_deleted = list(fr_older_items.difference(fr_items))
-        items_deleted.sort()
-        for item in items_deleted:
-            item_attributes = {u'status': u'deleted'}
-            for attr_name, attr_value in sorted(older_items[item].iteritems()):
-                _logger.debug('item: %s' % item)
-                _logger.debug('attr_name: %s' % attr_name)
-                _logger.debug('attr_value: %s' % attr_value)
-                item_attributes[attr_name] = attr_value
-            node.xml_append(node.xml_create_element(item_name, \
-                            attributes=item_attributes, content=unicode(item)))
-
-            
-class BOMXMLWriter(object):
-    def __init__(self, bom):
-        """ Initialisation. """
-        self._bom = bom
-        
-    def write(self, path):
-        """ Write the BOM information to an XML file. """
-        doc = amara.create_document(u'bom')
-        # pylint: disable-msg=E1101
-        doc.bom.xml_append(doc.xml_create_element(u'build', content=unicode(self._bom.config['build.id'])))
-        doc.bom.xml_append(doc.xml_create_element(u'content'))
-        for project in self._bom.projects:
-            project_node = doc.xml_create_element(u'project')
-            project_node.xml_append(doc.xml_create_element(u'name', content=unicode(project)))
-            project_node.xml_append(doc.xml_create_element(u'database', content=unicode(self._bom.config['ccm.database'])))
-            doc.bom.content.xml_append(project_node)
-            _logger.debug('baselines dictionary: %s' % project.baselines)
-            for baseline, baseline_attrs in sorted(project.baselines.iteritems()):
-                _logger.debug('baseline: %s' % baseline)
-                _logger.debug('baseline_attrs: %s' % baseline_attrs)
-                project_node.xml_append(doc.xml_create_element(u'baseline', content=unicode(baseline), attributes=baseline_attrs))
-            for folder in project.folders:
-                folder_node = doc.xml_create_element(u'folder')
-                folder_node.xml_append(doc.xml_create_element(u'name', content=unicode(folder.instance + "#" + folder.name + ": " + folder.description), \
-                            attributes={u'overridden':u'true'}))
-                project_node.xml_append(folder_node)
-                for task in folder.tasks:
-                    task_node = doc.xml_create_element(u'task', attributes={u'overridden':u'false'})
-                    task_node.xml_append(doc.xml_create_element(u'id', content=(unicode(task['displayname']))))
-                    task_node.xml_append(doc.xml_create_element(u'synopsis', content=(unicode(task['task_synopsis']))))
-                    task_node.xml_append(doc.xml_create_element(u'owner', content=(unicode(task['owner']))))
-                    #task_node.xml_append(doc.xml_create_element(u'completed', content=(unicode(self.parse_status_log(task['status_log'])))))
-                    folder_node.xml_append(task_node)
-            for task in project.tasks:
-                task_node = doc.xml_create_element(u'task', attributes={u'overridden':u'true'})
-                task_node.xml_append(doc.xml_create_element(u'id', content=(unicode(task['displayname']))))
-                task_node.xml_append(doc.xml_create_element(u'synopsis', content=(unicode(task['task_synopsis']))))
-                task_node.xml_append(doc.xml_create_element(u'owner', content=(unicode(task['owner']))))
-                #task_node.xml_append(doc.xml_create_element(u'completed', content=(unicode(self.parse_status_log(task['status_log'])))))
-                project_node.xml_append(task_node)
-                
-                fix = task.has_fixed()
-                if fix != None:
-                    fix_node = doc.xml_create_element(u'fix', content=(unicode(task)), attributes = {u'type': unicode(fix.__class__.__name__)})
-                    project_node.xml_append(fix_node)
-
-        if self._bom._icd_icfs != []:
-            # Add ICD info to BOM
-            doc.bom.content.xml_append(doc.xml_create_element(u'input'))
-    
-            # Add default values to unused fields so icds are visible in the BOM
-            empty_bom_str = u'N/A'
-            empty_bom_tm = u'0'
-            doc.bom.content.input.xml_append(doc.xml_create_element(u'name', content=(unicode(empty_bom_str))))
-            doc.bom.content.input.xml_append(doc.xml_create_element(u'year', content=(unicode(empty_bom_tm))))
-            doc.bom.content.input.xml_append(doc.xml_create_element(u'week', content=(unicode(empty_bom_tm))))
-            doc.bom.content.input.xml_append(doc.xml_create_element(u'version', content=(unicode(empty_bom_str))))
-    
-            doc.bom.content.input.xml_append(doc.xml_create_element(u'icds'))
-
-        # pylint: disable-msg=R0914
-        for i, icd in enumerate(self._bom._icd_icfs):
-            doc.bom.content.input.icds.xml_append(doc.xml_create_element(u'icd'))
-            doc.bom.content.input.icds.icd[i].xml_append(doc.xml_create_element(u'name', content=(unicode(icd))))
-        #If currentRelease.xml exists then send s60 <input> tag to diamonds
-        current_release_xml_path = self._bom.config['currentRelease.xml']
-        if current_release_xml_path is not None and os.path.exists(current_release_xml_path):
-            metadata = symrec.ReleaseMetadata(current_release_xml_path)
-            service = metadata.service
-            product = metadata.product
-            release = metadata.release
-            # Get name, year, week and version from baseline configuration
-            s60_input_node = doc.xml_create_element(u'input')
-            s60_version = self._bom.config['s60_version']
-            s60_release = self._bom.config['s60_release']
-            if s60_version != None:
-                s60_year = s60_version[0:4]
-                s60_week = s60_version[4:]
-            else:
-                s60_year = u'0'
-                s60_week = u'0'
-                if s60_version == None:
-                    res = re.match(r'.*\.(.*)_(\d{4})(\d{2})_(.*)', release)
-                    if res != None:
-                        s60_release = res.group(1) + '_' + res.group(4)
-                        s60_year = res.group(2)
-                        s60_week = res.group(3)
-            s60_input_node.xml_append(doc.xml_create_element(u'name', content=(unicode("s60"))))
-            s60_input_node.xml_append(doc.xml_create_element(u'year', content=(unicode(s60_year))))
-            s60_input_node.xml_append(doc.xml_create_element(u'week', content=(unicode(s60_week))))
-            s60_input_node.xml_append(doc.xml_create_element(u'version', content=(unicode(s60_release))))
-
-            s60_input_source = s60_input_node.xml_create_element(u'source')
-            s60_input_source.xml_append(doc.xml_create_element(u'type', content=(unicode("grace"))))
-            s60_input_source.xml_append(doc.xml_create_element(u'service', content=(unicode(service))))
-            s60_input_source.xml_append(doc.xml_create_element(u'product', content=(unicode(product))))
-            s60_input_source.xml_append(doc.xml_create_element(u'release', content=(unicode(release))))
-            s60_input_node.xml_append(s60_input_source)
-            doc.bom.content.xml_append(s60_input_node)
-        out = open(path, 'w')
-        doc.xml(out, indent='yes')
-        out.close()
-        
-    def parse_status_log(self, log):
-        _log_array = log.split('\r')
-        if(len(_log_array) == 3 and log.find('completed') > 0):
-            _completed_line = _log_array[2]
-            return _completed_line[:_completed_line.rfind(':')].strip()
-        else:
-            return u'None'
--- a/buildframework/helium/tools/common/python/lib/buildmanagement.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,137 +0,0 @@
-#============================================================================ 
-#Name        : buildmanagement.py 
-#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:
-#===============================================================================
-
-""" BuildManagement module """
-
-import os
-import logging
-import types
-import string
-
-import ant
-import ccm
-import configuration
-import nokia.nokiaccm
-
-
-# Uncomment this line to enable logging in this module, or configure logging elsewhere
-logging.basicConfig(level=logging.DEBUG)
-logger = logging.getLogger("buildmanagement")
-
-def buildmanager(synergyhost, databasepath, configfile, specname):
-    """ Buildmanager  """
-    logger.debug("Start buildmanger")
-    session = None
-    session = nokia.nokiaccm.open_session(engine=synergyhost, dbpath=databasepath)
-    print ('session = %s', session)
-    session.role = "build_mgr"
-    configBuilder = configuration.NestedConfigurationBuilder(open(configfile, 'r'))
-    configSet = configBuilder.getConfiguration()
-    logger.debug('Getting configuration: "' + specname + '" from: "' + configfile + '"')
-    configs = configSet.getConfigurations(specname)
-    for config in configs:
-        for k in sorted(config.keys()):
-            value = config[k]
-            if isinstance(value, types.UnicodeType):
-                value = value.encode('ascii', 'ignore')
-            #logger.debug( k + ': ' + str(value))
-        logger.debug(config['function.name'])
-        result = eval(config['function.name'])(session, config)
-        logger.debug("got result:" + result) 
-    logger.debug('Finished parsing configs')
-    session.close()
-    del(session)
-
-def add_approved_tasks(session, config):
-    """ add approved tasks to be updated to project """
-    logger.debug("Start adding approved tasks")
-    #this assumes there is only one folder in the reconfigure properties:
-    if config['project.release.folder'] == "automatic":
-        toplevelproject = ccm.Project(session, config['project.four.part.name'])
-        releasefolders = toplevelproject.folders
-        releasefolder = releasefolders[0]
-        logger.debug("Release folder found from rp is: " + releasefolder.name)
-    else:
-        releasefolder = ccm.Folder(session, config['project.release.folder'])
-
-    folderlist = force_list(config['project.approval.folders'])
-
-    for approvalfolderfpn in folderlist:
-        approvalfolder = ccm.Folder(session, approvalfolderfpn)
-        logger.debug("Copying tasks from folder " + approvalfolder.name + ", to folder " + releasefolder.name)
-        approvalfolder.copy(releasefolder)
-        
-    logger.debug("Finished adding approved tasks")
-    
-def reconcile(session, config):
-    """ reconcile """
-    logger.debug("Start reconciling: " + config['project.four.part.name'])
-    toplevelproject = ccm.Project(session, config['project.four.part.name'])
-    toplevelproject.reconcile(updatewa=True, recurse=True, consideruncontrolled=True, missingwafile=True, report=True)
-    logger.debug("Finished reconciling: " + config['project.four.part.name'])
-    
-def set_latest_baseline(session, config):
-    """ Setting latest baseline """
-    logger.debug("Start updating the baseline of: " + config['project.name'])
-    toplevelproject = ccm.Project(session, config['project.four.part.name'])
-    latestbaseline = toplevelproject.get_latest_baseline(config['project.version.filter'], config['project.baseline.state'])
-    logger.debug("Using: " + latestbaseline)
-    toplevelproject.set_baseline(latestbaseline, recurse=True)
-    logger.debug("Finished updating the baseline of: " + config['project.name'])
-
-def reconfigure(session, config):
-    """ recongifure """
-    logger.debug("Start reconfiguring: " + config['project.four.part.name'])
-    toplevelproject = ccm.Project(session, config['project.four.part.name'])
-    replacesubprojects = config.get_boolean('replace.subprojects', True)
-    recursesubprojects = config.get_boolean('recurse.subprojects', True)
-    updatekeepgoing = not config.get_boolean('update.failonerror', True)
-    toplevelproject.update(recursesubprojects, replacesubprojects, updatekeepgoing)
-    logger.debug("Finished reconfiguring: " + config['project.four.part.name'])
-    
-def update_release_tags(session, config):
-    """ update release tags """
-    logger.debug("Start updating release tags in folder: " + config['project.release.folder'])
-    if config['project.release.folder'] == "automatic":
-        toplevelproject = ccm.Project(session, config['project.four.part.name'])
-        releasefolders = toplevelproject.folders
-        releasefolder = releasefolders[0]
-        logger.debug("Release folder found from rp is: " + releasefolder.name)
-    else:
-        releasefolder = ccm.Folder(session, config['project.release.folder'])
-    for task in releasefolder.tasks:
-        if str(task.get_release_tag()).strip() == config['task.release.tag.from']:
-            logger.debug("Changing release tag of %s to %s" % (task.name, config['task.release.tag.to']))
-            task.set_release_tag(config['task.release.tag.to'])
-    logger.debug("Finished updating release tags in folder: " + config['project.release.folder'])
-    
-def create_baseline(session, config):
-    """ Create baseline """
-    logger.debug("Start creating the baseline(s): " + config['project.name'] + "-" + config['baseline.tag'])
-    project = ccm.Project(session, config['project.four.part.name'])
-    logger.debug("Project: " + project.name)
-    project.create_baseline(config['project.name'] + "-" + config['baseline.tag'], config['project.release.tag'], config['baseline.tag'], config['baseline.purpose'], config['baseline.state'])
-    logger.debug("Finished creating the baseline: " + config['project.name'] + "-" + config['baseline.tag'])
-
-def force_list(myobject):
-    """ force list of objects """
-    if isinstance(myobject, list):
-        return myobject
-    else:
-        return [myobject]
\ No newline at end of file
--- a/buildframework/helium/tools/common/python/lib/buildtools.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,508 +0,0 @@
-#============================================================================ 
-#Name        : buildtools.py 
-#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:
-#===============================================================================
-
-"""Enables creation of build command list in several formats.
-
-This module implements class that represent shell commands.
-It supports build stage and command parallelization (depends of the output format).
-CommandList can be generated in different format: ant, make, ebs, batch.
-
-Example:
-from mc.buildtools import CommandList, Convert
-list = CommandList()
-list.addCommand("\\epoc32\\rombuild", "make_fpsx.bat..yy...", "build_xx_rom")
-list.addCommand("\\epoc32\\rombuild", "make_fpsx.bat..xx...", "build_yy_rom")
-list.addCommand("\\epoc32\\rombuild", "copy \\foo \\bar", "simple copy", False)
-
-convert(list, "outputfile.mk", "make")
-convert(list, "outputfile.ant.xml", "ant")
-convert(list, "outputfile.ebs.xml", "ebs")
-convert(list, "outputfile.bat", "bat")
-
-"""
-import os
-import types
-import xml.dom.minidom
-import sys
-
-class PreBuilder(object):
-    """ This class implements an abstract prebuilder.
-        A prebuilder takes a configurationset as input and generates a build file.
-    """
-    def __init__(self, configSet):
-        self.configSet = configSet
-        # Select the first configuration as a default, for referencing common properties
-        self.config = None
-        configs = configSet.getConfigurations()
-        if len(configs) > 0:
-            self.config = configs[0]
-
-    def writeBuildFile(self, taskList, buildFilePath, output='ant'):
-        """ Converting a task list into output format and writing it into buildFilePath file. """
-        writer = None
-        buildFileDir = os.path.dirname(buildFilePath)
-        if len(buildFileDir) > 0 and not os.path.exists(buildFileDir):
-            os.makedirs(buildFileDir)
-        writer = get_writer(output, open(buildFilePath, 'w'))
-        writer.write(taskList)
-
-
-class Task(object):
-    """ Abstract Task object. """
-    pass
-
-        
-class Command(Task):
-    """
-        This class implements a command definition.
-        It handles command id and stage.
-        All command from one stage should be finished before starting the next stage.
-    """
-    def __init__(self, executable, path, args=None, name=''):
-        Task.__init__(self)
-        if args == None:
-            args = []
-        self._id  = 1
-        self._stage = 1
-        self._name = name
-        self._executable = executable
-        self._path = path
-        self._args = args
-
-    def setJobId(self, idn):
-        """ Set the command id. """
-        self._id = idn
-
-    def setStage(self, stage):
-        """ Set the command stage. """
-        self._stage = stage
-
-    def jobId(self):
-        """ Get the command id. """
-        return self._id
-
-    def stage(self):
-        """ Get the command stage. """
-        return self._stage
-
-    def name(self):
-        """ Get the command name. """
-        return self._name
-
-    def executable(self):
-        """ Get the command executable. """
-        return self._executable
-
-    def path(self):
-        """ Get the command path. """
-        return self._path
-
-    def cmd(self):
-        """ Get the command line. """
-        return ' '.join(self._args)
-
-    def addArg(self, arg):
-        """ Add a command line argument. """
-        self._args.append(arg)
-
-    def __repr__(self):
-        argsString = ' '.join(self._args)
-        return "%s: %s: %s" % (self.name(), self.path(), argsString)
-
-
-class AntTask(Task):
-    """ Interface that defines supports for an Ant task rendering. """
-    
-    def toAntTask(self, doc):
-        """ Override this method to convert a specific command into Ant command.
-            e.g: Delete Class will use delete task from Ant, else convert into perl ... remove filename.__getCommandByStage
-        """ 
-        pass
-
-
-class Delete(AntTask, Command):
-    """ Implements file/directory deleletion mechanism. """
-    
-    def __init__(self, filename=None, dirname=None):
-        Command.__init__(self, "perl", "")
-        AntTask.__init__(self)
-        self._filename = filename
-        self._dir = dirname
-        self._args.append("-MExtUtils::Command")
-        self._args.append("-e")
-        if self._filename != None:
-            self._args.append("rm_f")
-            self._args.append('"' + self._filename + '"')
-        elif self._dir != None:
-            self._args.append("rm_rf")
-            self._args.append('"' + self._dir + '"')
-
-    def toAntTask(self, doc):
-        """ Render the delete as an Ant task. """
-        node = doc.createElementNS("", "delete")
-        node.setAttributeNS("", "verbose", "true")
-        node.setAttributeNS("", "failonerror", "false")
-        if self._filename != None:
-            node.setAttributeNS("", "file", self._filename)
-        elif self._dir != None:
-            node.setAttributeNS("", "dir", self._dir)
-        return node
-
-
-class Copy(AntTask, Command):
-    """ Implement copy command. """
-    def __init__(self, srcFile, todir):
-        Command.__init__(self, "perl", os.path.dirname(srcFile))
-        AntTask.__init__(self)
-        self.srcFile = srcFile
-        self.todir = todir
-        self._args.append("-MExtUtils::Command")
-        self._args.append("-e")
-        self._args.append("cp")
-        self._args.append('"' + self.srcFile + '"')
-        self._args.append('"' + os.path.join(self.todir, os.path.basename(self.srcFile)) + '"')
-        
-    def toAntTask(self, doc):
-        """ Render the copy as an Ant task. """
-        node = doc.createElementNS("", "copy")
-        node.setAttributeNS("", "verbose", "true")
-        node.setAttributeNS("", "failonerror", "false")
-        node.setAttributeNS("", "file", self.srcFile)
-        node.setAttributeNS("", "todir", self.todir)
-        node.setAttributeNS("", "overwrite", "true")
-        return node
-         
-
-class CommandList(object):
-    """
-        This class allows to safely handle Command object into lists
-    """
-    def __init__(self):
-        self.__cmds = []
-
-    def allCommands(self):
-        """ Returns all command list. """
-        return self.__cmds
-
-    def addCommand(self, cmd, newstage=False):
-        """ Add a Command to the list. """
-        stage = 1
-        idn = 1
-        if len(self.__cmds) > 0:
-            lastcmd = self.__cmds[-1]
-            idn = lastcmd.jobId() + 1
-            stage = lastcmd.stage()
-            if newstage:
-                stage = stage + 1
-        cmd.setStage(stage)
-        cmd.setJobId(idn)
-        self.__cmds.append(cmd)
-
-
-class AbstractOutputWriter:
-    """Base class which contains define an AbstractOutputWriter.
-
-    The subclass must implement a convert method which compute a command list into
-    some output file.
-    """
-    def __init__(self, fileOut):
-        if isinstance(fileOut, basestring):
-            self._fileOut = open(fileOut, 'w')
-        else:
-            self._fileOut = fileOut
-
-    def write(self, cmdList):
-        """ Method to override to implement format specific output. """
-    def writeTopLevel(self, config_list, spec_name, output_path, xml_file):
-        """ Method to override to implement top level commands. """
-
-    def __call__(self, cmdList):
-        self.write(cmdList)
-
-    def close(self):
-        """ Close the output stream. """
-        self._fileOut.close()
-
-    def __del__(self):
-        self.close()
-
-
-class StringWriter(AbstractOutputWriter):
-    """ Implements a Writer which is able to directly write to the output stream. """
-    
-    def __init__(self, fileOut):
-        AbstractOutputWriter.__init__(self, fileOut)
-
-    def write(self, content):
-        """ Write content to the output. """
-        self._fileOut.write(content)
-
-
-class EBSWriter(AbstractOutputWriter):
-    """ Implements EBS XML output format. """
-    
-    def __init__(self, fileOut):
-        AbstractOutputWriter.__init__(self, fileOut)
-
-    def write(self, cmdList):
-        """ Write the command list to EBS format. """
-        doc = xml.dom.minidom.Document()
-        productnode = doc.createElementNS("", "Product")
-        cmdsnode = doc.createElementNS("", "Commands")
-        productnode.appendChild(cmdsnode)
-        doc.appendChild(productnode)
-
-        for cmd in cmdList.allCommands():
-            cmdsnode.appendChild(self.__commandToXml(doc, cmd))
-
-        self._fileOut.write(doc.toprettyxml())
-
-    @staticmethod
-    def __commandToXml(doc, cmd):
-        """ Convert a Command into an EBS command. """
-        # <Execute ID="1" Stage="1" Component="MAS" Cwd="%EPOCROOT%" CommandLine="getrel MAS 92_013_Symbian_OS"/>
-        cmdsnode = doc.createElementNS("", "Execute")
-        cmdsnode.setAttributeNS("", "ID", "%d" % cmd.jobId())
-        cmdsnode.setAttributeNS("", "Stage", "%d" % cmd.stage())
-        cmdsnode.setAttributeNS("", "Component", cmd.name())
-        cmdsnode.setAttributeNS("", "Cwd", cmd.path())
-        cmdsnode.setAttributeNS("", "CommandLine", cmd.executable()+" "+cmd.cmd())
-        return cmdsnode
-
-
-class AntWriter(AbstractOutputWriter):
-    """ Implements Ant XML output format. """
-    
-    def __init__(self, fileOut):
-        AbstractOutputWriter.__init__(self, fileOut)
-
-    def writeTopLevel(self, config_list, spec_name, output_path, xml_file):
-        doc = xml.dom.minidom.Document()
-        projectnode = doc.createElementNS("", "project")
-        projectnode.setAttributeNS("", "name", '')
-        projectnode.setAttributeNS("", "default", "all")
-        projectnode.setAttributeNS("", "xmlns:hlm", "http://www.nokia.com/helium")
-        doc.appendChild(projectnode)
-        target = doc.createElementNS("", "target")
-        target.setAttributeNS("", "name", "all")
-        projectnode.appendChild(target)
-
-        parallel = doc.createElementNS("", "parallel")
-        parallel.setAttributeNS("", "threadCount", "${number.of.threads}")
-        target.appendChild(parallel)
-        index = 0
-        script_loc = os.path.normpath(os.path.join(os.environ['HELIUM_HOME'], 'tools/common/python/lib/CreateZipInput.py'))
-        for config in config_list:
-            sequential = doc.createElementNS("", "sequential")
-            outputfile = os.path.normpath(os.path.join(output_path, config + ".xml"))
-            exec_element = doc.createElementNS("", "hlm:exec")
-            exec_element.setAttributeNS("", "executable", "python")
-            exec_element.setAttributeNS("", "failonerror", "true")
-
-            args = doc.createElementNS("", "arg")
-            args.setAttributeNS("", "value", "%s" % script_loc)
-            exec_element.appendChild(args)
-
-            args = doc.createElementNS("", "arg")
-            args.setAttributeNS("", "line", "--output=%s" % outputfile)
-            exec_element.appendChild(args)
-            args = doc.createElementNS("", "arg")
-            args.setAttributeNS("", "line", "--config=%s" % spec_name)
-            exec_element.appendChild(args)
-            args = doc.createElementNS("", "arg")
-            args.setAttributeNS("", "line", "--filename=%s" % xml_file)
-            exec_element.appendChild(args)
-            args = doc.createElementNS("", "arg")
-            args.setAttributeNS("", "line", "--id=%d" % index)
-            exec_element.appendChild(args)
-            args = doc.createElementNS("", "arg")
-            args.setAttributeNS("", "line", "--writertype=ant")
-            exec_element.appendChild(args)
-            sequential.appendChild(exec_element)
-            index += 1
-            ant_exec = doc.createElementNS("", "ant")
-            ant_exec.setAttributeNS("", "antfile", outputfile)
-            sequential.appendChild(ant_exec)
-            parallel.appendChild(sequential)
-        
-        self._fileOut.write(doc.toprettyxml())
-        self._fileOut.close()
-        
-    def write(self, cmdList):
-        """ Writes the command list to Ant format. """
-        doc = xml.dom.minidom.Document()
-        projectnode = doc.createElementNS("", "project")
-        projectnode.setAttributeNS("", "name", '')
-        projectnode.setAttributeNS("", "default", "all")
-        projectnode.setAttributeNS("", "xmlns:hlm", "http://www.nokia.com/helium")
-        doc.appendChild(projectnode)
-
-        stages = self.__getCommandByStage(cmdList)
-
-        for stage in stages.keys():
-            projectnode.appendChild(self.__stageToTarget(doc, stage, stages[stage]))
-
-        target = doc.createElementNS("", "target")
-        target.setAttributeNS("", "name", "all")
-        def __toStage(stage):
-            """ Convert the stage id into and Ant target name. """
-            return "stage%s" % stage
-        target.setAttributeNS("", "depends", ','.join([__toStage(stage) for stage in stages.keys()]))
-        projectnode.appendChild(target)
-
-        self._fileOut.write(doc.toprettyxml())
-
-    def __stageToTarget(self, doc, stage, cmds):
-        """ Convert a stage into an Ant target. """
-        target = doc.createElementNS("", "target")
-        target.setAttributeNS("", "name", "stage%s" % stage)
-        parallel = doc.createElementNS("", "parallel")
-        parallel.setAttributeNS("", "threadCount", "${number.of.threads}")
-        target.appendChild(parallel)
-
-        for cmd in cmds:
-            parallel.appendChild(self.__commandToAnt(doc, cmd))
-        return target
-
-    @staticmethod
-    def __commandToAnt(doc, cmd):
-        """ Convert a command into an Ant task. """
-        # does the API support Ant task conversion.
-        # else treat it as a cmd
-        if issubclass(type(cmd), AntTask):
-            return cmd.toAntTask(doc)
-        else:
-            execnode = doc.createElementNS("", "hlm:exec")
-            execnode.setAttributeNS("", "executable", cmd.executable())
-            execnode.setAttributeNS("", "dir", cmd.path())
-            arg = doc.createElementNS("", "arg")
-            arg.setAttributeNS("", "line", cmd.cmd())
-            execnode.appendChild(arg)
-            return execnode
-
-    @staticmethod
-    def __getCommandByStage(cmdList):
-        """ Reorder a CommandList into a list of stages. """
-        stages = {}
-        for cmd in cmdList.allCommands():
-            if not stages.has_key(cmd.stage()):
-                stages[cmd.stage()]=[]
-            stages[cmd.stage()].append(cmd)
-
-        return stages
-
-
-class MakeWriter(AbstractOutputWriter):
-    """ Implements Makefile writer. """
-    
-    def __init__(self, fileOut):
-        AbstractOutputWriter.__init__(self, fileOut)
-
-    def writeTopLevel(self, config_list, spec_name, output_path, xml_file):
-        content = "\n\nall: zip_inputs zip_files\n\n"
-        index = 0
-        input_list = "zip_inputs: "
-        zip_list = "\n\nzip_files: "
-        full_content = ""
-        script_path =  os.path.normpath(os.path.join(os.environ['HELIUM_HOME'], 'tools/compile/ec'))
-        for config in config_list:
-            outputfile = os.path.normpath(os.path.join(output_path, config + ".mk"))
-            input_list += " \\\n\t zip_input%d" % index
-            zip_list += " \\\n\t zip_files%d" % index
-            content += "\n\nzip_input%d :\n" % index
-            content += "\t@echo === identifying files for %s\n" % config
-            
-            content += "\tpython $(HELIUM_HOME)\\tools\\common\\python\\lib\\CreateZipInput.py --config=%s --filename=%s --id=%d --output=%s --writertype=%s\n\n" % (spec_name, xml_file, index, outputfile,'make')
-            content += "\n\nzip_files%d :zip_input%d\n" % (index, index)
-            content += "\t@echo === identifying files for %s\n" % config
-            content += "\t$(MAKE) -f %s" % (outputfile)
-            index += 1
-        
-        full_content += input_list
-        full_content += zip_list
-        full_content += content
-        self._fileOut.write(full_content)
-    def write(self, cmdList):
-        """ Converts the list of command into Makefile. """
-        stages = {}
-        for cmd in cmdList.allCommands():
-            if not stages.has_key(cmd.stage()):
-                stages[cmd.stage()] = []
-            stages[cmd.stage()].append(cmd)
-        
-        # Write the all rule
-        def __toStage(stage):
-            """ Convert stage Id into a target name. """
-            return "stage%s" % stage
-                
-        #self._fileOut.write("all : %s\n" % ' '.join(map(__toStage, max(stages.keys())))
-        if len(stages.keys()) > 0:
-            self._fileOut.write("all : stage%s ;\n" % max(stages.keys()))
-        else:
-            self._fileOut.write("all: ;\n")
-            
-        for stage in stages.keys():
-            # Write each stage rule
-            def __toId(cmd):
-                """ Convert command Id into a target name. """
-                self.__commandToTarget(cmd)
-                return "id%s" % cmd.jobId()
-            self._fileOut.write("stage%s : %s\n" % (stage, ' '.join([__toId(task) for task in stages[stage]])))
-
-    def __commandToTarget(self, cmd):
-        """ Converting a Command into a Makefile target. """
-        deps = ""
-        if cmd.stage() > 1:
-            deps = " stage%s" % (cmd.stage() - 1)
-        self._fileOut.write("id%s:%s\n" % (cmd.jobId(), deps))
-        self._fileOut.write("\t@echo Target %s\n" % cmd.name())
-        winargs = ""
-        if os.sep == '\\':
-            winargs = "/d"
-        self._fileOut.write("\tcd %s %s && %s " % (winargs, cmd.path(), cmd.executable()))
-        self._fileOut.write("%s\n" % cmd.cmd())
-        self._fileOut.write("\n")
-
-
-__writerConstructors = { 'ant': AntWriter,
-                         'make': MakeWriter,
-                         'ebs': EBSWriter }
-
-
-def convert(cmdList, filename, outputtype="ant"):
-    """ Helper to directly convert a command list into a specific runnable command format.
-        e.g:
-        cmdList = CommandList()
-        cmdList.addCommand(...)
-        convert(cmdList, "echo Hello world", "ant")
-    """
-    writer = __writerConstructors[outputtype](filename)
-    writer(cmdList)
-
-
-def get_writer(buildTool, fileOut):
-    """ Get a Writer for a specific format. """
-    return __writerConstructors[buildTool](fileOut)
-
-
-def supported_writers():
-    """ Return the list of supported Writer. """
-    return __writerConstructors.keys()
-
-
--- a/buildframework/helium/tools/common/python/lib/ccm/__init__.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1920 +0,0 @@
-#============================================================================ 
-#Name        : __init__.py 
-#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:
-#===============================================================================
-
-""" CM/Synergy Python toolkit.
-
-"""
-
-import logging
-import netrc
-import os
-import re
-import subprocess
-import sys
-import threading
-
-import fileutils
-import nokia.gscm
-
-
-# Uncomment this line to enable logging in this module, or configure logging elsewhere
-_logger = logging.getLogger("ccm")
-#logging.basicConfig(level=logging.DEBUG)
-
-
-VALID_OBJECT_STATES = ('working', 'checkpoint', 'public', 'prep', 'integrate', 'sqa', 'test','released')
-STATIC_OBJECT_STATES = ('integrate', 'sqa', 'test','released')
-CCM_SESSION_LOCK = os.path.join(os.environ['TEMP'], "ccm_session.lock")
-
-def _execute(command, timeout=None):
-    """ Runs a command and returns the result data. """
-    launcher = os.path.join(os.environ['HELIUM_HOME'], 'tools', 'common', 'python', 'scripts', 'timeout_launcher.py')
-    targ = ""
-    if timeout is not None:
-        targ = "--timeout=%s" % timeout
-    process = subprocess.Popen("python %s %s -- %s" % (launcher, targ, command), stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True)
-    stdout = process.communicate()[0]
-    process.wait()
-    _logger.debug(stdout)
-    _logger.debug("Return code: %s" % process.returncode)
-    return (stdout, process.returncode)
-   
-   
-class CCMException(Exception):
-    """ Base exception that should be raised by methods of this framework. """
-    def __init__(self, reason, result = None):
-        Exception.__init__(self, reason)
-        self.result = result
-
-
-class Result(object):
-    """Class that abstracts ccm call result handling.
-    
-    Subclass it to implement a new generic output parser.
-    """
-    def __init__(self, session):
-        self._session = session
-        self.status = None
-        self._output = None
-        self._output_str = None
-    
-    def _setoutput(self, output):
-        self._output = output
-        
-    def __setoutput(self, output):
-        """ Internal function to allow overloading, you must override _setoutput.
-        """
-        # the output is automatically converted to ascii before any treatment 
-        if isinstance(output, unicode):
-            self._output_str = output.encode('ascii', 'replace')
-        else:
-            self._output_str = output.decode('ascii', 'ignore')
-        _logger.debug("output ---->")
-        for line in self._output_str.splitlines():
-            _logger.debug(line)
-        _logger.debug("<----")
-        self._setoutput(self._output_str)
-                
-    def _getoutput(self):
-        """ Returns the content of _output. """
-        return self._output
-        
-    def __str__(self):
-        """ Synergy output log. """
-        return self._output_str.encode('ascii', 'replace')
-        
-    output = property(_getoutput, __setoutput)
-
-class ResultWithError(Result):
-	
-    def __init__(self, session):
-        Result.__init__(self, session)
-        self._error = None
-        self._error_str = None    
-
-    def _seterror(self, error):
-        self._error = error
-        
-    def __seterror(self, error):
-        """ Internal function to allow overloading, you must override _seterror.
-        """
-        # the error output is automatically converted to ascii before any treatment 
-        if isinstance(error, unicode):
-            self._error_str = error.encode('ascii', 'replace')
-        else:
-            self._error_str = error.decode('ascii', 'ignore')
-        _logger.debug("error ---->")
-        for line in self._error_str.splitlines():
-            _logger.debug(line)
-        _logger.debug("<----")
-        self._seterror(self._error_str)
-                
-    def _geterror(self):
-        """ Returns the content of _output. """
-        _logger.debug("_geterror")
-        return self._error
-
-    error = property(_geterror, __seterror)
-    
-class ProjectCheckoutResult(Result):
-    """ Project checkout output parser. 
-        Sets project to the created project or None if failed.
-    """
-    def __init__(self, session, project):
-        Result.__init__(self, session)
-        self.__project = project
-        self.__result_project = None
-    
-    def _setoutput(self, output):
-        """ Parsing the output of the checkout command. """
-        self._output = output
-        for line in output.splitlines():
-            mresult = re.match(r"Saved work area options for project: '(.+)'", line, re.I)
-            #(?P<name>.+)-(?P<version>.+?)(:(?P<type>\S+):(?P<instance>\S+))?
-            if mresult != None:
-                #self.__project.name + "-" + mo.groupdict()['version'] + ":" + self.__project.type + ":" + self.__project.instance
-                self.__result_project = self._session.create(mresult.group(1))
-                _logger.debug("ProjectCheckoutResult: project: '%s'" % self.__result_project)
-                return
-
-    def __get_result_project(self):
-        """ return the checked out project. """
-        return self.__result_project
-    
-    project = property(__get_result_project)
-
-
-class ProjectPurposeResult(Result):
-    """ Parses purpose query output. """
-    def __init__(self, session):
-        Result.__init__(self, session)
-
-    def _setoutput(self, output):
-        self._output = {}
-        for line in output.splitlines():
-            mresult = re.match(r"(?P<purpose>.+?)\s+(?P<member_status>\w+)\s+(?P<status>\w+)$", line)
-            if mresult != None:
-                data = mresult.groupdict()                
-                if re.match(r'^\s+Purpose\s+Member$', data['purpose'], re.I) == None:
-                    self._output[data['purpose'].strip()] = {'member_status' : data['member_status'].strip(),
-                                                  'status' : data['status'].strip()
-                                                  }
-
-class ConflictsResult(Result):
-    """ Parses purpose query output. """
-    def __init__(self, session):
-        Result.__init__(self, session)
-
-    def _setoutput(self, output):
-        self._output = {}
-        project = None
-                
-        for line in output.splitlines():            
-            mresult = re.match(r"Project:\s*(.+)\s*$", line)
-            if mresult != None:
-                project = self._session.create(mresult.group(1))
-                self._output[project] = []
-            mresult = re.match(r"^(.*)\s+(\w+#\d+)\s+(.+)$", line)
-            if mresult != None and project != None:
-                self._output[project].append({'object': self._session.create(mresult.group(1)),
-                                              'task': self._session.create("Task %s" % mresult.group(2)),
-                                              'comment': mresult.group(3)})
-            mresult = re.match(r"^(\w+#\d+)\s+(.+)$", line)
-            if mresult != None and project != None:
-                self._output[project].append({'task': self._session.create("Task %s" % mresult.group(1)),
-                                              'comment': mresult.group(2)})
-
-
-class FinduseResult(Result):
-    """ Parses finduse query output. """
-    def __init__(self, ccm_object):
-        Result.__init__(self, ccm_object.session)
-        self.__object = ccm_object
-
-    def _setoutput(self, output):
-        self._output = []
-        for line in output.splitlines():
-            _logger.debug("FinduseResult: ---->%s<----" % line)
-            _logger.debug("FinduseResult: ---->%s-%s<----" % (self.__object.name, self.__object.version))
-            
-            # MCNaviscroll\NaviAnim-username7@MCNaviscroll-username6            
-            mresult = re.match(r"^\s*(?P<path>.+)[\\/]%s-%s@(?P<project>.+)" % (self.__object.name, self.__object.version), line, re.I)
-            if mresult != None:
-                data = mresult.groupdict()
-                _logger.debug("FinduseResult: %s" % data)               
-                project = self._session.create(data['project'])
-                self._output.append({'path' : data['path'], 'project' : project})
-        
-        
-class UpdateTemplateInformation(Result):
-    """ Parse update template information output. """
-    def __init__(self, session):
-        Result.__init__(self, session)
-    
-    def _setoutput(self, output):
-        """
-Baseline Selection Mode: Latest Baseline Projects
-Prep Allowed:            No
-Versions Matching:       *abs.50*
-Release Purposes:
-Use by Default:          Yes
-Modifiable in Database:  tr1s60
-In Use For Release:      Yes
-Folder Templates and Folders:
-- Template assigned or completed tasks for %owner for release %release
-- Template all completed tasks for release %release
-- Folder   tr1s60#4844: All completed Xuikon/Xuikon_rel_X tasks
-- Folder   tr1s60#4930: All tasks for release AppBaseDo_50        
-        """
-        self._output = {}
-        for line in output.splitlines():
-            rmo = re.match(r"^\s*(.+):\s*(.*)\s*", line)
-            if rmo != None:
-                if rmo.group(1) == "Baseline Selection Mode":
-                    self._output['baseline_selection_mode'] = rmo.group(2) 
-                elif rmo.group(1) == "Prep Allowed":
-                    self._output['prep_allowed'] = (rmo.group(2) != "No") 
-                elif rmo.group(1) == "Versions Matching":
-                    self._output['version_matching'] = rmo.group(2) 
-                elif rmo.group(1) == "Release Purposes":
-                    self._output['release_purpose'] = rmo.group(2) 
-                elif rmo.group(1) == "Use by Default":
-                    self._output['default'] = (rmo.group(2) != "No") 
-                elif rmo.group(1) == "Modifiable in Database":
-                    self._output['modifiable_in_database'] = rmo.group(2).strip()
-                elif rmo.group(1) == "In Use For Release":
-                    self._output['in_use_for_release'] = (rmo.group(2) != "No") 
-                
-
-class UpdatePropertiesRefreshResult(Result):
-    """ Parse update template refresh output. """
-    def __init__(self, session):
-        Result.__init__(self, session)
-
-    def _setoutput(self, output):
-        self._output = {'added': [], 'removed': []}
-        match_added = re.compile(r"^Added the following tasks")
-        match_removed = re.compile(r"^Removed the following tasks")
-        match_task_new = re.compile(r"^\s+(Task \S+#\d+)")        
-        section = None
-                
-        for line in output.splitlines():
-            res = match_added.match(line)
-            if res != None:
-                section = 'added'
-                continue
-            res = match_removed.match(line)
-            if res != None:
-                section = 'removed'
-                continue
-            if section is not None:
-                res = match_task_new.match(line)
-                if res != None:
-                    self._output[section].append(self._session.create(res.group(1)))
-                    continue
-
-
-class UpdateResultSimple(Result):
-    """ Parse update output. """
-    def __init__(self, session):
-        Result.__init__(self, session)
-        self._success = True
-
-    def _setoutput(self, output):
-        self._output = output
-        match_failed = re.compile(r"(Update failed)")        
-        for line in output.splitlines():
-            res = match_failed.match(line)
-            if res != None:                
-                self._success = False
-    
-    @property
-    def successful(self):
-        return self._success
-         
-class UpdateResult(UpdateResultSimple):
-    """ Parse update output. """
-    def __init__(self, session):
-        UpdateResultSimple.__init__(self, session)
-
-    def _setoutput(self, output):
-        self._output = {"tasks":[], "modifications": [], "errors": [], "warnings": []}
-        match_object_update = re.compile(r"^\s+'(.*)'\s+replaces\s+'(.*)'\s+under\s+'(.*)'\.")
-        match_object_new = re.compile(r"^\s+(?:Subproject\s+)?'(.*)'\s+is now bound under\s+'(.*)'\.")
-        match_task_new = re.compile(r"^\s+(Task \S+#\d+)")
-        match_no_candidate = re.compile(r"^\s+(.+) in project (.+) had no candidates")
-        match_update_failure = re.compile(r"^\s+Failed to use selected object\s+(.+)\s+under directory\s+(.+)\s+in project\s+(.+)\s+:\s+(.+)")
-        match_warning = re.compile(r"^Warning:(.*)")
-        match_failed = re.compile(r"(Update failed)")
-        
-        # TODO: cleanup the parsing to do that in a more efficient way.
-        for line in output.splitlines():
-            _logger.info(line)
-            res = match_object_update.match(line)
-            if res != None:
-                self._output['modifications'].append({ "new": self._session.create(res.group(1)),
-                                      "old": self._session.create(res.group(2)),
-                                      "project": self._session.create(res.group(3))
-                                    })
-                continue
-            res = match_object_new.match(line)
-            if res != None:                
-                self._output['modifications'].append({ "new": self._session.create(res.group(1)),
-                                      "old": None,
-                                      "project": self._session.create(res.group(2))
-                                    })
-                continue
-            res = match_task_new.match(line)
-            if res != None:                
-                self._output['tasks'].append(self._session.create(res.group(1)))
-                continue
-            res = match_no_candidate.match(line)
-            if res != None:                
-                self._output['errors'].append({'family': res.group(1),
-                                               'project': self._session.create(res.group(2)),
-                                               'comment': "had no candidates",
-                                               'line': line,
-                                               })
-                continue
-            res = match_update_failure.match(line)
-            if res != None:                
-                self._output['errors'].append({'family': res.group(1),
-                                               'dir': self._session.create(res.group(2)),
-                                               'project': self._session.create(res.group(3)),
-                                               'comment': res.group(4),
-                                               'line': line,
-                                               })
-                continue
-            res = match_warning.match(line)            
-            if res != None:                
-                self._output['warnings'].append({'family': None,
-                                               'project': None,
-                                               'comment': res.group(1),
-                                               'line': line,
-                                               })
-                continue
-            res = match_failed.match(line)
-            if res != None:
-                self._success = False
-                self._output['errors'].append({'Serious': res.group(1),
-                                               })
-                continue
-                
-            
-
-class WorkAreaInfoResult(Result):
-    """ Parse work area info output. """
-    def __init__(self, session):
-        Result.__init__(self, session)
-
-    def _setoutput(self, output):
-        """ Returns a dict with the following fields:
-               * project: a ccm.Project instance
-               * maintain: a boolean
-               * copies: a boolean
-               * relative: a boolean
-               * time: a boolean
-               * translate: a boolean
-               * modify: a boolean
-               * path: a string representing the project wa path
-        """
-        self._output = None
-        for line in output.splitlines():
-            mresult = re.match(r"(?P<project>.*)\s+(?P<maintain>TRUE|FALSE)\s+(?P<copies>TRUE|FALSE)\s+(?P<relative>TRUE|FALSE)\s+(?P<time>TRUE|FALSE)\s+(?P<translate>TRUE|FALSE)\s+(?P<modify>TRUE|FALSE)\s+'(?P<path>.*)'", line)            
-            if mresult != None:
-                data = mresult.groupdict()
-                self._output = {'project': self._session.create(data['project']),
-                                'maintain' : data['maintain'] == "TRUE",
-                                'copies' : data['copies'] == "TRUE",
-                                'relative' : data['relative'] == "TRUE",
-                                'time' : data['time'] == "TRUE",
-                                'translate' : data['translate'] == "TRUE",
-                                'modify' : data['modify'] == "TRUE",
-                                'path' : data['path']
-                                }
-                return
-
-
-class CreateNewTaskResult(Result):
-    
-    def __init__(self, session):
-        Result.__init__(self, session)
-
-    def _setoutput(self, output):
-        self._output = None
-        for line in output.splitlines():
-            mresult = re.match(r"Task\s+(?P<task>\S+\#\d+)\s+created\.", line)
-            if mresult != None:
-                self._output = self._session.create("Task " + mresult.groupdict()['task'])
-                return
-    
-    
-class AttributeNameListResult(Result):
-    """ Class that abstract ccm call result handling.
-        Subclass it to implement a new generic output parser.
-    """
-    def __init__(self, session):
-        Result.__init__(self, session)
-    
-    def _setoutput(self, obj):
-        def _create(arg):
-            mresult = re.match(r"^\s*(?P<name>\w+)", arg.strip())
-            if mresult != None:
-                return mresult.groupdict()['name']
-            return None
-        self._output = [_create(line) for line in obj.strip().splitlines()]
-
-
-class ObjectListResult(Result):
-    """ Parses an object list Synergy output. """
-    def __init__(self, session):
-        Result.__init__(self, session)
-    
-    def _setoutput(self, obj):        
-        self._output = []
-        if re.match(r"^None|^No tasks|^Warning", obj, re.M) != None:
-            return
-        def _create(arg):
-            arg = arg.strip()
-            if arg != "":
-                return self._session.create(arg)
-            return None
-        result = [_create(line) for line in obj.strip().splitlines()]
-        for result_line in result:
-            if result_line != None:
-                self._output.append(result_line)
-
-class DataMapperListResult(Result):
-    """ Parses an object list Synergy output. """        
-    
-    dataconv = {'ccmobject': lambda x, y: x.create(y),
-                'string': lambda x, y: y,
-                'int': lambda x, y: int(y),
-                'boolean': lambda x, y: (y.lower() == "true")}    
-    
-    def __init__(self, session, separator, keywords, datamodel):
-        self._separator = separator
-        self._keywords = keywords
-        self._datamodel = datamodel
-        Result.__init__(self, session)
-    
-    def format(self):
-        formatted_keywords = ["%s%s%s%%%s" % (self._separator, x, self._separator, x) for x in self._keywords]
-        return "".join(formatted_keywords) + self._separator
-   
-    def regex(self):
-        regex_keywords = [r'%s%s%s(.*?)' % (self._separator, x, self._separator) for x in self._keywords]
-        regex = r''.join(regex_keywords)
-        regex = r"%s%s\s*\n" % (regex, self._separator)
-        return re.compile(regex, re.MULTILINE | re.I | re.DOTALL | re.VERBOSE | re.U)
-    
-    def _setoutput(self, obj):
-        self._output = []
-        regex = self.regex()
-        _logger.debug("Regex %s" % (regex.pattern))
-        for match in regex.finditer(obj):
-            _logger.debug("Found: %s" % (match))
-            if match != None:
-                output_line = {}
-                for i in range(len(self._datamodel)):
-                    _logger.debug("Found %d: %s" % (i, match.group(i + 1)))
-                    model = self._datamodel[i]
-                    output_line[self._keywords[i]] = self.dataconv[model](self._session, match.group(i + 1))
-                    i += 1
-                self._output.append(output_line)
-                
-
-class FolderCopyResult(Result):
-    """ Parses a folder copy result """
-    def __init__(self, session):
-        Result.__init__(self, session)
-
-    def _setoutput(self, output):
-        self._output = None
-        for line in output.splitlines():
-            mo = re.match(r"appended to", line)
-            if mo != None:
-                self._output = self._session.create(line)
-                return
-
-CHECKOUT_LOG_RULES = [[r'^Derive failed for', logging.ERROR],
-                      [r'^Serious:', logging.ERROR],
-                      [r'^Warning: .* failed.', logging.ERROR],
-                      [r'^Invalid work area', logging.ERROR],
-                      [r'^WARNING:', logging.WARNING],
-                      [r'^Warning:', logging.WARNING],]
-
-
-UPDATE_LOG_RULES = [[r'^Update failed.', logging.ERROR],
-                    [r'^Serious:', logging.ERROR],
-                    [r'^\s+Failed to', logging.ERROR],
-                    [r'^\d+ failures to', logging.ERROR],
-                    [r"^Warning: This work area '.+' cannot be reused", logging.ERROR],
-                    [r'^Rebind of .* failed', logging.ERROR],
-                    [r'^Warning: .* failed.', logging.ERROR],
-                    [r'^Skipping \'.*\'\.  You do not have permission to modify this project.', logging.ERROR],
-                    [r'^Work area conflict exists for file', logging.ERROR],
-                    [r'^Warning:  No candidates found for directory entry', logging.ERROR],
-                    [r'^WARNING:', logging.WARNING],
-                    [r'^Warning:', logging.WARNING],]
-
-CONFLICTS_LOG_RULES = [[r'^\w+#\d+\s+Implicit', logging.WARNING],
-                       [r'^(.*)\s+(\w+#\d+)\s+(.+)', logging.WARNING],
-                       [r'.*Explicitly specified but not included', logging.WARNING],]
-
-SYNC_LOG_RULES = [[r'^\s+0\s+Conflict\(s\) for project', logging.INFO],
-                  [r'^\s+\d+\s+Conflict\(s\) for project', logging.ERROR],
-                  [r'^Project \'.*\' does not maintain a workarea.', logging.ERROR],
-                  [r'^Work area conflict exists for file', logging.ERROR],
-                  [r'^Warning: Conflicts detected during synchronization. Check your logs.', logging.ERROR],
-                  [r'^Warning:', logging.WARNING],]
-
-def log_result(result, rules, logger=None):
-    """ Rules it a list of tuple defining a regular expression and an log level. """
-    if logger is None:
-        logger = _logger
-    crules = []
-    if rules is not None:
-        for rule in rules:
-            crules.append([re.compile(rule[0]), rule[1]])
-                
-    for line in str(result).splitlines():
-        for rule in crules:
-            if rule[0].match(line) != None:
-                logger.log(rule[1], line)
-                break
-        else:
-            logger.info(line)
-    
-class AbstractSession(object):
-    """An abstract Synergy session.
-
-    Must be overridden to implement either a single session or
-    multiple session handling.
-    """
-    def __init__(self, username, engine, dbpath, ccm_addr):
-        self.username = username
-        self.engine = engine
-        self.dbpath = dbpath
-        self._session_addr = ccm_addr
-        # internal object list
-        self.__ccm_objects = {}
-    
-    def addr(self):
-        """ Returns the Synergy session id."""
-        return self._session_addr
-    
-    def database(self):
-        _logger.debug("AbstractSession: database")
-        self.__find_dbpath()
-        _logger.debug("AbstractSession: database: %s" % self.dbpath)
-        return os.path.basename(self.dbpath)
-    
-    def __find_dbpath(self):
-        """ retrieve the database path from current session status. """
-        _logger.debug("AbstractSession: __find_dbpath")
-        if (self.dbpath != None):            
-            return
-        result = self.execute("status")
-        for match in re.finditer(r'(?:(?:Graphical)|(?:Command)) Interface\s+@\s+(?P<ccmaddr>\w+:\d+(?:\:\d+\.\d+\.\d+\.\d+)+)(?P<current_session>\s+\(current\s+session\))?\s*\nDatabase:\s*(?P<dbpath>\S+)', result.output, re.M | re.I):
-            d = match.groupdict()
-            if (d['current_session'] != None):
-                _logger.debug("AbstractSession: __find_dbpath: Found dbpath: %s" % d['dbpath'])
-                self.dbpath = d['dbpath']
-        assert self.dbpath != None
-    
-    def execute(self, _, result=None):
-        """ Abstract function that should implement the execution of ccm command
-            line call.
-        """
-        return result
-
-    def create(self, fpn):
-        """ Object factory, this is the toolkit entry point to create objects from
-            four part names. Objects are stored into a dictionary, so you have
-            only one wrapper per synergy object.
-        """
-        result = re.search(r"^(?P<project>.+)-(?P<version>[^:]+?)$", fpn)
-        if result != None:
-            matches = result.groupdict()
-            fpn = "%s-%s:project:%s#1" % (matches['project'], matches['version'], self.database())
-        _logger.debug("session.create('%s')" % fpn)
-        ofpn = FourPartName(fpn)
-        if not self.__ccm_objects.has_key(str(fpn)):
-            obj = None
-            if ofpn.type == 'project':
-                obj = Project(self, fpn)
-            elif ofpn.type == 'dir':
-                obj = Dir(self, fpn)
-            elif ofpn.type == 'task':
-                obj = Task(self, fpn)
-            elif ofpn.type == 'folder':
-                obj = Folder(self, fpn)
-            elif ofpn.type == 'releasedef':
-                obj = Releasedef(self, fpn)
-            else:
-                obj = File(self, fpn)
-            self.__ccm_objects[str(fpn)] = obj
-        return self.__ccm_objects[str(fpn)]
-
-    def get_workarea_info(self, dir_):
-        """ Return a dictionary containing workarea info from directory dir.
-        """
-        if (not os.path.exists(dir_)):
-            raise CCMException("Error retrieving work_area info for the directory '%s' (doesn't exists)" % dir_)
-        path = os.path.abspath(os.path.curdir)        
-        path_ccmwaid = os.path.join(dir_,"_ccmwaid.inf");
-        if(not os.path.exists(path_ccmwaid)):
-            raise CCMException("No work area in '%s'" % dir_)
-        os.chdir(dir_)
-        result = self.execute("wa -show", WorkAreaInfoResult(self))
-        os.chdir(path)
-        if result.output == None:
-            raise CCMException("Error retrieving work_area info for the directory '%s'" % dir_)
-        return result.output
-
-    def _get_role(self):
-        result = self.execute("set role")
-        return result.output.strip()
-    
-    def _set_role_internal(self, role):
-        """ method to be override by child class else property accession is not working properly. """
-        if  role == None or len(role) == 0:
-            raise CCMException("You must provide a role.")
-        result = self.execute("set role %s" % role)
-        if re.match(r'^Warning:', result.output, re.M) != None:
-            raise CCMException("Error switching to role %s: %s" %(role, result.output.strip()))
-
-    def _set_role(self, role):
-        self._set_role_internal(role)
-        
-    role = property(fget=_get_role, fset=_set_role)
-    
-    def _get_home(self):
-        result = self.execute("set Home")
-        return result.output.strip()
-        
-    def _set_home(self, home):
-        if len(home) == 0 or home == None:
-            raise CCMException("You must provide a home.")
-        result = self.execute("set Home %s" % home)
-        if re.match(r'^Warning:', result.output, re.M) != None:
-            raise CCMException("Error switching to Home %s: %s" %(home, result.output.strip()))
-    
-    home = property(_get_home, _set_home)
-    
-    def close(self):
-        pass
-    
-    def __str__(self):
-        self.__find_dbpath()
-        return self._session_addr + ':' + self.dbpath
-        
-    def __repr__(self):
-        return self.__str__()
-    
-    def __del__(self):
-        self.close()
-
-    def purposes(self, role=None):
-        """ Returns available purposes. """
-        args = ""
-        if role != None:
-            args = "-role \"%s\"" % role
-        result = self.execute("project_purpose -show %s" % args, ProjectPurposeResult(self))
-        return result.output        
-
-class Session(AbstractSession):
-    """A Synergy session.
-    """
-    def __init__(self, username, engine, dbpath, ccm_addr, close_on_exit=True):
-        AbstractSession.__init__(self, username, engine, dbpath, ccm_addr)
-        self._execute_lock = threading.Lock()
-        self.close_on_exit = close_on_exit
-
-    @staticmethod
-    def start(username, password, engine, dbpath, timeout=300):
-        if username == None:
-            raise CCMException('username is not valid')
-        if password == None:
-            raise CCMException('password is not valid')
-        if CCM_BIN == None:
-            raise CCMException("Could not find CM/Synergy executable in the path.")
-        command = "%s start -m -q -nogui -n %s -pw %s -h %s -d %s" % \
-                    (CCM_BIN, username, password, engine, dbpath)
-        _logger.debug('Starting new session:' + command.replace(password, "***"))
-        (result, status) = _execute(command, timeout=timeout)
-        if status != 0:
-            raise Exception("Error creating a session: result:\n%s" % result)
-        session_addr = result.strip()
-        _logger.debug(session_addr)
-        if not re.match(r'\w+:\d+:\d+.\d+.\d+.\d+(:\d+.\d+.\d+.\d+)?', session_addr):
-            raise Exception("Error creating a session: result:\n%s" % result)
-        return Session(username, engine, dbpath, session_addr)        
-            
-    def execute(self, cmdline, result=None):
-        """ Executes a Synergy CLI operation. """
-        if self._session_addr == None:
-            raise CCMException("No Synergy session running")        
-        if CCM_BIN == None:
-            raise CCMException("Could not find CM/Synergy executable in the path.")
-        self._execute_lock.acquire()
-        output = ""
-        error = ""
-        try:
-            if result == None:
-                result = Result(self)
-            if os.sep == '\\':
-                command = "set CCM_ADDR=" + self._session_addr + " && " + CCM_BIN + " %s" % cmdline
-            else:
-                command = "export CCM_ADDR=" + self._session_addr + " && " + CCM_BIN + " %s" % cmdline
-            _logger.debug('Execute > ' + command)
-
-            if hasattr(result, 'error'):
-                process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
-                output = process.stdout.read()
-                error = process.stderr.read()
-                result.status = process.returncode
-            else:
-                process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
-                output = process.stdout.read()
-                result.status = process.returncode
-        finally:
-            self._execute_lock.release()
-        result.output = output.strip()
-        if hasattr(result, 'error'):
-            result.error = error.strip()
-        return result
-
-    def close(self):
-        """ Closes this Synergy session if it was not previously running anyway. """
-        _logger.debug("Closing session %s" % self._session_addr)
-        if self._session_addr != None and self.close_on_exit:
-            _logger.debug("Closing session %s" % self._session_addr)
-            self._execute_lock.acquire()
-            if os.sep == '\\':
-                command = "set CCM_ADDR=" + self._session_addr + " && " + CCM_BIN + " stop"
-            else:
-                command = "export CCM_ADDR=" + self._session_addr + " && " + CCM_BIN + " stop"
-            _logger.debug('Execute > ' + command)
-            pipe = os.popen(command)
-            pipe.close()
-            self._session_addr = None
-            self._execute_lock.release()
-        elif self._session_addr != None and not self.close_on_exit:
-            _logger.debug("Keeping session %s alive." % self._session_addr)
-
-
-class SessionPool(AbstractSession):
-    """ Session that transparently handled several subsession, to easily enable
-        multithreaded application.
-    """
-    def __init__(self, username, password, engine, dbpath, database=None, size=4, opener=None):
-        AbstractSession.__init__(self, username, engine, dbpath, None)
-        self._opener = opener
-        if self._opener is None:
-            self._opener = open_session
-        self._free_sessions = []
-        self._used_sessions = []
-        self._thread_sessions = {}
-        self._pool_lock = threading.Condition()
-        self._lock_pool = False
-        self.__password = password
-        self.__database = database        
-        self.size = size
-    
-    def _set_size(self, size):
-        """ Set the pool size """ 
-        self._pool_lock.acquire()
-        poolsize = len(self._free_sessions) + len(self._used_sessions)
-        if  poolsize > size:
-            to_be_remove = poolsize - size
-            self._lock_pool = True
-            while len(self._free_sessions) < to_be_remove:
-                self._pool_lock.wait()            
-            for _ in range(to_be_remove):
-                self._free_sessions.pop().close()
-            self._lock_pool = False
-        else: 
-            for _ in range(size - poolsize):
-                self._free_sessions.append(self._opener(self.username, self.__password, self.engine, self.dbpath, self.__database, False))
-        self._pool_lock.release()
-
-    def _get_size(self):
-        self._pool_lock.acquire()
-        poolsize = len(self._free_sessions) + len(self._used_sessions)
-        self._pool_lock.release()
-        return poolsize
-
-    size = property (_get_size, _set_size)
-    
-    def execute(self, cmdline, result=None):
-        """ Executing a ccm command on a free session. """        
-        _logger.debug("SessionPool:execute: %s %s" % (cmdline, type(result)))
-        
-        # waiting for a free session
-        self._pool_lock.acquire()        
-        
-        # check for recursion, in that case reallocate the same session,
-        if threading.currentThread() in self._thread_sessions:
-            _logger.debug("Same thread, reusing allocation session.")
-            # release the pool and reuse associated session
-            self._pool_lock.release()
-            return self._thread_sessions[threading.currentThread()].execute(cmdline, result)
-
-        while len(self._free_sessions)==0 or self._lock_pool:
-            self._pool_lock.wait()
-        session = self._free_sessions.pop(0)
-        self._used_sessions.append(session)
-        self._thread_sessions[threading.currentThread()] = session
-        self._pool_lock.release()
-        
-        # running command
-        try:
-            result = session.execute(cmdline, result)
-        finally:
-            # we can now release the session - anyway
-            self._pool_lock.acquire()
-            self._thread_sessions.pop(threading.currentThread())                
-            self._used_sessions.remove(session)
-            self._free_sessions.append(session)
-            self._pool_lock.notifyAll()
-            self._pool_lock.release()
-        return result
-
-    def close(self):
-        """ Closing all subsessions. """
-        _logger.debug("Closing session pool sub-sessions")
-        self._lock_pool = True
-        self._pool_lock.acquire()
-        while len(self._used_sessions) > 0:
-            _logger.debug("Waiting to free used sessions.")
-            _logger.debug("Waiting to free used sessions. %s %s" % (len(self._used_sessions), len(self._free_sessions)))            
-            _logger.debug(self._used_sessions)
-            _logger.debug(self._free_sessions)            
-            self._pool_lock.wait()
-        _logger.debug("Closing all free session from the pool.")
-        while len(self._free_sessions) > 0:
-            self._free_sessions.pop().close()
-        self._lock_pool = False
-        self._pool_lock.notifyAll()
-        self._pool_lock.release()
-    
-    def _set_role_internal(self, role):
-        """ Set role on all subsessions. """
-        self._lock_pool = True
-        self._pool_lock.acquire()
-        while len(self._used_sessions)!=0:
-            self._pool_lock.wait()
-            
-        try:
-            for session in self._free_sessions:
-                session.role = session._set_role(role)
-        finally:                
-            self._lock_pool = False
-            self._pool_lock.notifyAll()
-            self._pool_lock.release()
-
-
-class Query(object):
-    """ This object wrap a synergy query, it takes a query as input as well as the
-    attribute you want as output, and get them translated using the model configuration.
-    e.g 
-    Query(session, "type='task' and release='test/next'", ['objectname', 'task_synopsis'], ['ccmobject', 'string'])
-    
-    This will return a list of hash: [{'objectname': Task(xxx), 'task_synopsis': 'xxx'}, ...]
-    """
-    
-    def __init__(self, session, query, keywords, model, cmd="query"):
-        """ Initialize a Synergy query."""
-        self._session = session
-        self._query = query
-        self._keywords = keywords
-        self._model = model
-        self._cmd = cmd
-        
-    def execute(self):
-        """ Executing the query on the database. """
-        mapper = DataMapperListResult(self._session, '@@@', self._keywords, self._model)        
-        query = "%s %s -u -f \"%s\"" % (self._cmd, self._query, mapper.format())
-        return self._session.execute(query, mapper)
-        
-    
-
-class InvalidFourPartNameException(CCMException):
-    """ Badly formed Synergy four-part name. """
-    def __init__(self, fpn = ""):
-        CCMException.__init__(self, fpn)
-
-
-class FourPartName(object):
-    """ This class handle four part name parsing and validation.
-    """
-
-    def __init__(self, ifpn):
-        """ Create a FourPartName object based on a ifpn string.
-        
-        The string have to match the following patterns:
-        - name-version:type:instance
-        - name:version:releasedef:instance
-        - Task database#id
-        - Folder database#id
-        
-        Anything else is considered as old release string format.
-            
-        """
-        _logger.debug("FourPartName: '%s'", ifpn)
-        fpn = FourPartName.convert(ifpn)
-        result = re.search(r"^(?P<name>.+)-(?P<version>.+?):(?P<type>\S+):(?P<instance>\S+)$", fpn)
-        if result == None:
-            result = re.search(r"^(?P<name>.+):(?P<version>.+?):(?P<type>releasedef):(?P<instance>\S+)$", fpn)            
-            if result == None:
-                raise InvalidFourPartNameException(fpn)
-        # set all attributes
-        self._name = result.groupdict()['name']
-        self._version = result.groupdict()['version']
-        self._type = result.groupdict()['type']
-        self._instance = result.groupdict()['instance']    
-
-    def __getname(self):
-        """ Returns the name of the object. """
-        return self._name
-    
-    def __getversion(self):
-        """ Returns the version of the object. """
-        return self._version
-    
-    def __gettype(self):
-        """ Returns the type of the object. """
-        return self._type
-    
-    def __getinstance(self):
-        """ Returns the instance of the object. """
-        return self._instance
-    
-    def __getobjectname(self):
-        """ Returns the objectname of the object. """
-        if (self.type == 'releasedef'):
-            return "%s:%s:%s:%s" % (self.name, self.version, self.type, self.instance)
-        return "%s-%s:%s:%s" % (self.name, self.version, self.type, self.instance)
-    
-    def __str__(self):
-        """ Returns the string representation of the object. """
-        return self.objectname
-    
-    def __repr__(self):
-        """ Returns the string representation of the python object. """
-        if (self.type == 'releasedef'):
-            return "<%s:%s:%s:%s>" % (self.name, self.version, self.type, self.instance)
-        return "<%s-%s:%s:%s>" % (self.name, self.version, self.type, self.instance)
-    
-    def is_same_family(self, ccmobject):
-        """ Returns True if the ccmobject is part of the same family (=same name, type and instance) as self. """
-        assert isinstance(ccmobject, FourPartName)
-        return (self.name == ccmobject.name and self.type == ccmobject.type and self.instance == ccmobject.instance)
-    
-    def __getfamily(self):
-        return "%s:%s:%s" % (self.name, self.type, self.instance)
-    
-    def __eq__(self, ccmobject):
-        """ Returns True if object four parts name are identical. """
-        if ccmobject == None:
-            return False
-        assert isinstance(ccmobject, FourPartName)
-        return (self.name == ccmobject.name and self.version == ccmobject.version and self.type == ccmobject.type and self.instance == ccmobject.instance)
-    
-    def __ne__(self, ccmobject):
-        """ Returns True if object four parts name are different. """
-        if ccmobject == None:
-            return True
-        assert isinstance(ccmobject, FourPartName)
-        return (self.name != ccmobject.name or self.version != ccmobject.version or self.type != ccmobject.type or self.instance != ccmobject.instance)
-    
-    @staticmethod
-    def is_valid(fpn):
-        """ Check if a given string represents a valid four part name.
-        """        
-        return (re.match(r"^(.+)-(.+?):(\S+):(\S+)|(.+):(.+?):releasedef:(\S+)$", fpn) != None)
-    
-    @staticmethod
-    def convert(fpn):
-        """ Update a CCM output string to a valid four part name. This is due to the inconsistent
-             output of CM/Synergy CLI.
-        """
-        fpn = fpn.strip()
-        if FourPartName.is_valid(fpn):
-            return fpn
-        result = re.search(r"^(?P<type>Task|Folder)\s+(?P<instance>\w+)#(?P<id>\d+)$", fpn)
-        if result != None:
-            matches = result.groupdict()
-            if matches["type"] == "Task":
-                return "task%s-1:task:%s" % (matches["id"], matches["instance"])
-            elif matches["type"] == "Folder":
-                return "%s-1:folder:%s" % (matches['id'], matches['instance'])
-        else:
-            result = re.search(r"^(?P<project>\S+)/(?P<version>\S+)$", fpn)
-            if result != None:
-                matches = result.groupdict()
-                return "%s:%s:releasedef:1" % (matches['project'], matches['version'])        
-            else:
-                # Check the name doesn't contains any of the following character: " :-"
-                result = re.search(r"^[^\s^:^-]+$", fpn)
-                if result != None:
-                    return "none:%s:releasedef:1" % (fpn)
-        raise InvalidFourPartNameException(fpn)
-
-    name = property (__getname)
-    version = property (__getversion)
-    type = property (__gettype)
-    instance = property (__getinstance)
-    objectname = property (__getobjectname)
-    family = property(__getfamily)
-                
-                
-class CCMObject(FourPartName):
-    """ Base class for any Synergy object. """
-               
-    def __init__(self, session, fpn):
-        FourPartName.__init__(self, fpn)
-        self._session = session
-    
-    def _getsession(self):
-        return self._session
-    
-    session = property(_getsession)
-    
-    def exists(self):
-        """ Check if an the object exists in the database. """
-        return (len(self._session.execute("query \"name='%s' and version='%s' and type='%s' and instance='%s'\" -u -f \"%%objectname\"" % (self.name, self.version, self.type, self.instance), ObjectListResult(self._session)).output) == 1)
-    
-    def __setitem__(self, name, value):
-        project = ""
-        if self.type == 'project':
-            project = "-p"
-        if value.endswith("\\"):
-            value += "\\"
-        result = self._session.execute("attribute -modify \"%s\" -v \"%s\" %s \"%s\"" % (name, value, project, self))
-        if result.status != 0 and result.status != None:
-            raise CCMException("Error modifying '%s' attribute. Result: '%s'" % (name, result.output), result)
-        
-    def __getitem__(self, name):
-        """ Provides access to Synergy object attributes through the dictionary
-        item interface.
-        """
-        result = self._session.execute("query \"name='%s' and version='%s' and type='%s' and instance='%s'\" -u -f \"%%%s\"" % (self.name, self.version, self.type, self.instance, name), ResultWithError(self._session))
-        if result.status != 0 and result.status != None:
-            raise CCMException("Error retrieving '%s' attribute. Result: '%s'" % (name, result.output), result)
-        if len(result.error.strip()) > 0:
-            raise CCMException("Error retrieving '%s' attribute. Reason: '%s'" % (name, result.error), result)
-        if result.output.strip() == "<void>":
-            return None
-        return result.output.strip()
-    
-    def create_attribute(self, name, type_, value=None):
-        if name in self.keys():
-            raise CCMException("Attribute '%s' already exist." % (name))
-        args = ""
-        proj_arg = ""
-        if value != None:
-            args += " -value \"%s\"" % value
-        if self.type == "project":
-            proj_arg = "-p"
-        result = self._session.execute("attribute -create \"%s\" -type \"%s\" %s %s \"%s\"" % (name, type_, args, proj_arg, self.objectname))
-        if result.status != 0 and result.status != None:
-            raise CCMException("Error creating '%s' attribute. Result: '%s'" % (name, result.output), result)
-        
-    def keys(self):
-        """ The list of supported Synergy attributes. """
-        result = self._session.execute("attribute -la \"%s\"" % self, AttributeNameListResult(self._session))
-        return result.output
-    
-    def is_predecessor_of(self, o):
-        result = self._session.execute("query \"is_predecessor_of('%s') and name='%s'and version='%s'and type='%s'and instance='%s'\" -u -f \"%%objectname\"" % (o, self.name, self.version, self.type, self.instance), ObjectListResult(self._session))        
-        if len(result.output):
-            return True
-        return False
-        
-    def predecessors(self):
-        result = self._session.execute("query \"is_predecessor_of('%s')\" -u -f \"%%objectname\"" % self, ObjectListResult(self._session))        
-        return result.output
-
-    def successors(self):
-        result = self._session.execute("query \"is_successor_of('%s')\" -u -f \"%%objectname\"" % self, ObjectListResult(self._session))        
-        return result.output
-
-    def is_recursive_predecessor_of(self, o):
-        result = self._session.execute("query \"has_predecessor('%s')\" -u -f \"%%objectname\"" % self, ObjectListResult(self._session))
-        for s in result.output:
-            if s == o:
-                return True
-        for s in result.output:
-            if s.is_recursive_predecessor_of(o):
-                return True
-        return False
-
-    def is_recursive_predecessor_of_fast(self, o):
-        """ Fast implementation of the recursive is_predecessor_of method. """
-        input_objects = [self]
-        while len(input_objects) > 0:
-            query = " or ".join(["has_predecessor('%s')" % x for x in input_objects])
-            result = self._session.execute("query \"query\" -u -f \"%%objectname\"" % query, ObjectListResult(self._session))    
-            for s in result.output:
-                if s == o:
-                    return True
-        return False
-
-    def is_recursive_sucessor_of(self, o):
-        result = self._session.execute("query \"has_successor('%s')\" -u -f \"%%objectname\"" % self, ObjectListResult(self._session))
-        for s in result.output:
-            if s == o:
-                return True
-        for s in result.output:
-            if s.is_recursive_sucessor_of(o):
-                return True
-        return False
-
-    def is_recursive_successor_of_fast(self, o):
-        """ Fast implementation of the recursive is_successor_of method. """
-        input_objects = [self]
-        while len(input_objects) > 0:
-            query = " or ".join(["has_successor('%s')" % x for x in input_objects])
-            result = self._session.execute("query \"query\" -u -f \"%%objectname\"" % query, ObjectListResult(self._session))    
-            for s in result.output:
-                if s == o:
-                    return True
-        return False
-    
-    def relate(self, ccm_object):
-        result = self._session.execute("relate -name successor -from \"%s\" -to \"%s\"" % self, ccm_object, Result(self._session))
-        if result.status != None and result.status != 0:
-            raise CCMException("Error relating objects %s to %s\n%s" % (self, ccm_object, result.output))
-        
-    def finduse(self):
-        """ Tries to find where an object is used. """
-        result = self._session.execute("finduse \"%s\"" % self, FinduseResult(self))
-        return result.output
-    
-    
-class File(CCMObject):
-    """ Wrapper for any Synergy file object """
-    
-    def __init__(self, session, fpn):
-        CCMObject.__init__(self, session, fpn)
-    
-    def content(self):
-        result = self._session.execute("cat \"%s\"" % self)
-        return result.output
-    
-    def to_file(self, path):
-        if os.path.exists(path):
-            _logger.error("Error file %s already exists" % path)
-        if not os.path.exists(os.path.dirname(path)):
-            os.makedirs(os.path.dirname(path))
-        # Content to file        
-        result = self._session.execute("cat \"%s\" > \"%s\"" % (self, os.path.normpath(path)))
-        if result.status != 0 and result.status != None:
-            raise CCMException("Error retrieving content from object %s in %s (error status: %s)\n%s" % (self, path, result.status, result.output), result)
-    
-    def merge(self, ccm_object, task):
-        assert ccm_object != None, "object must be defined."
-        assert task != None, "task must be defined."
-        assert task.type == "task", "task parameter must be of 'task' type."
-        result = self._session.execute("merge -task %s \"%s\" \"%s\"" % (task['displayname'], self, ccm_object))
-        
-        validity = 0
-        for line in result.output.splitlines():
-            if re.match(r"Merge Source completed successfully\.", line):
-                validity = 2
-            elif re.match(r"Warning: Merge Source warning. \(overlaps during merge\)\.", line):
-                validity = 1
-            else:                
-                result = re.match(r"Associated object\s+(?P<object>.+)\s+with task", line)
-                if result != None:
-                    return (self._session.create(result.groupdict()['object']), validity)
-                    
-        raise CCMException("Error during merge operation.\n" + result.output, result)
-
-    def checkin(self, state, comment=None):
-        if comment != None:
-            comment = "-c \"%s\"" % comment
-        else:
-            comment = "-nc"
-        result = self._session.execute("checkin -s \"%s\" %s \"%s\" " % (state, comment, self))
-        for line in result.output.splitlines():
-            _logger.debug(line)
-            _logger.debug(r"Checked\s+in\s+'.+'\s+to\s+'%s'" % state)
-            if re.match(r"Checked\s+in\s+'.+'\s+to\s+'%s'" % state, line) != None:
-                return
-        raise CCMException("Error checking in object %s,\n%s" % (self, result.output), result)
-        
-
-class Project(CCMObject):
-    """ Wrapper class for Synergy project object. """
-    
-    def __init__(self, session, fpn):
-        CCMObject.__init__(self, session, fpn)
-        self._release = None
-        self._baseline = None
-
-    def _gettasks(self):
-        result = self._session.execute("rp -show tasks \"%s\" -u -f \"%%objectname\"" % self, ObjectListResult(self._session))
-        return result.output
-
-    def add_task(self, task):
-        """ Add a task to the update properties. """
-        result = self._session.execute("up -add -task %s \"%s\"" % (task['displayname'], self.objectname))
-        if result.status != None and result.status != 0:
-            raise CCMException("Error adding task %s to project '%s'\n%s" % (task, self, result.output))
-        
-    def remove_task(self, task):
-        """ Remove a task to the update properties. """
-        result = self._session.execute("up -remove -task %s \"%s\"" % (task['displayname'], self.objectname))
-        if result.status != None and result.status != 0:
-            raise CCMException("Error removing task %s from project '%s'\n%s" % (task, self, result.output))
-
-    def add_folder(self, folder):
-        """ Add a folder to the update properties. """
-        result = self._session.execute("up -add -folder %s \"%s\"" % (folder['displayname'], self.objectname))
-        if result.status != None and result.status != 0:
-            raise CCMException("Error adding folder %s to project '%s'\n%s" % (folder, self, result.output))
-        
-    def remove_folder(self, folder):
-        """ Remove a folder to the update properties. """
-        result = self._session.execute("up -remove -folder %s \"%s\"" % (folder['displayname'], self.objectname))
-        if result.status != None and result.status != 0:
-            raise CCMException("Error removing folder %s to project '%s'\n%s" % (folder, self, result.output))
-    
-    def _getfolders(self):
-        """ Wrapper method to return the folder list from the update properties - please use the folders attribute to access it. """
-        result = self._session.execute("up -show folders \"%s\" -u -f \"%%objectname\"" % self, ObjectListResult(self._session))
-        return result.output
-        
-    def _getsubprojects(self):
-        """ Wrapper method to return the subprojects list - please use the subprojects attribute to access it. """
-        result = self._session.execute("query -t project \"recursive_is_member_of('%s', none)\" -u -f \"%%objectname\"" % self.objectname, ObjectListResult(self._session))
-        return result.output
-    
-    def get_members(self, recursive=False, **kargs):
-        query = "is_member_of('%s')" % self.objectname
-        if recursive:
-            query = "recursive_is_member_of('%s', none)" % self.objectname           
-        for k in kargs.keys():
-            query += " and %s='%s'" % (k, kargs[k])
-        result = self._session.execute("query \"%s\" -u -f \"%%objectname\"" % query, ObjectListResult(self._session))
-        return result.output
-        
-    def _getrelease(self):
-        """ Get the release of the current object. Returns a Releasedef object. """
-        self._release = Releasedef(self._session, self['release'])
-        return self._release
-
-    def _setrelease(self, release):
-        """ Set the release of the current object. """
-        self['release'] = release['displayname']
-    
-    def refresh(self):
-        """ Refresh project update properties. """
-        result = self._session.execute("up -refresh \"%s\"" % self.objectname, UpdatePropertiesRefreshResult(self._session))
-        return result.output
-    
-    def _getbaseline(self):
-        """ Get the baseline of the current project. """
-        if self._baseline == None:
-            result = self._session.execute("up -show baseline_project \"%s\" -f \"%%displayname\" -u" % self.objectname)
-            if result.output.strip().endswith('does not have a baseline project.'):
-                return None
-            self._baseline = self._session.create(result.output)
-        _logger.debug('baseline: %s' % self._baseline)
-        return self._baseline
-    
-    def set_baseline(self, baseline, recurse=False):
-        """ Set project baseline. raise a CCMException in case or error. """
-        args = ""
-        if recurse:
-            args += " -r"
-        self._baseline = None
-        result = self._session.execute("up -mb \"%s\" %s \"%s\"" % (baseline, args, self.objectname))
-        if result.status != None and result.status != 0:
-            raise CCMException("Error setting basline of project '%s'\n%s" % (self.objectname, result.output))
-
-    def set_update_method(self, name, recurse = False):
-        """ Set the update method for the project (and subproject if recurse is True). """
-        assert name != None, "name must not be None."
-        assert len(name) > 0, "name must not be an empty string."
-        args = "-ru %s" % name
-        if recurse:
-            args += " -r"
-        result = self._session.execute("up %s \"%s\"" % (args, self))
-        if result.status != None and result.status != 0:
-            raise CCMException("Error setting reconfigure properties to %s for project '%s'\nStatus: %s\n%s" % (name, self.objectname, result.status, result.output))
-   
-    def apply_update_properties(self, baseline = True, tasks_and_folders = True, recurse=True):
-        """ Apply update properties to subprojects. """
-        args = ""
-        if not baseline:
-            args += "-no_baseline"
-        if not tasks_and_folders:
-            args += " -no_tasks_and_folders"
-        if recurse:
-            args += " -apply_to_subprojs"
-        result = self._session.execute("rp %s \"%s\"" % (args, self.objectname))
-        if result.status != None and result.status != 0:
-            raise CCMException("Error applying update properties to subprojects for '%s'\n%s" % (self.objectname, result.output))
-    
-    def root_dir(self):
-        """ Return the directory attached to a project. """
-        result = self._session.execute("query \"is_child_of('%s','%s')\" -u -f \"%%objectname\"" % (self.objectname, self.objectname), ObjectListResult(self._session))
-        return result.output[0]
-    
-    def snapshot(self, targetdir, recursive=False):
-        """ Take a snapshot of the project. """
-        assert targetdir != None, "targetdir must be defined."
-        if recursive:
-            recursive = "-recurse"
-        else:
-            recursive = ""
-        result = self._session.execute("wa_snapshot -path \"%s\"  %s \"%s\"" % (os.path.normpath(targetdir), recursive, self.objectname))
-        for line in result.output.splitlines():
-            if re.match(r"^Creation of snapshot work area complete.|Copying to file system complete\.\s*$", line):
-                return result.output
-        raise CCMException("Error creation snapshot of %s,\n%s" % (self.objectname, result.output), result)
-    
-    def checkout(self, release, version=None, purpose=None, subprojects=True):
-        """ Create a checkout of this project. 
-        
-        This will only checkout the project in Synergy. It does not create a work area.
-        
-        :param release: The Synergy release tag to use.
-        :param version: The new version to use for the project. This is applied to all subprojects.
-        :param purpose: The purpose of the checkout. Determines automatically the role from the purpose
-         and switch it automatically (Could be any role from the DB).
-        """    
-        assert release != None, "Release object must be defined."
-        if not release.exists():
-            raise CCMException("Release '%s' must exist in the database." % release)
-            
-        args = ''
-        if version != None:
-            args += '-to "%s"' % version
-        role = None
-        if purpose:
-            #save current role before changing
-            role = self._session.role
-
-            self._session.role = get_role_for_purpose(self._session, purpose)
-            
-            args += " -purpose \"%s\"" % purpose
-        if subprojects:
-            args += " -subprojects"
-        result = self._session.execute("checkout -project \"%s\" -release \"%s\" -no_wa %s" \
-                                  % (self, release['displayname'], args), ProjectCheckoutResult(self._session, self.objectname))
-        if not role is  None:
-            self._session.role = role
-        if result.project == None:
-            raise CCMException("Error checking out project %s,\n%s" % (self.objectname, result.output), result)
-        return result
-    
-    def work_area(self, maintain, recursive=None, relative=None, path=None, pst=None, wat=False):
-        """ Configure the work area. This allow to enable it or disable it, set the path, recursion... """
-        args = ""
-        if maintain:
-            args += "-wa"
-        else:
-            args += "-nwa"
-        # path
-        if path != None:
-            args += " -path \"%s\"" % path        
-        # pst
-        if pst != None:
-            args += " -pst \"%s\"" % pst
-        # relative
-        if relative != None and relative:
-            args += " -relative"
-        elif relative != None and not relative:
-            args += " -not_relative"
-        # recursive
-        if recursive != None and recursive:
-            args += " -recurse"
-        elif recursive != None and not recursive:
-            args += " -no_recurse"        
-        #wat            
-        if wat:
-            args += " -wat"
-        result = self._session.execute("work_area -project \"%s\" %s" \
-                                  % (self.objectname, args), Result(self._session))
-        return result.output
-        
-    def update(self, recurse=True, replaceprojects=True, keepgoing=False, result=None):
-        """ Update the project based on its reconfigure properties. """
-        args = ""
-        if recurse:
-            args += " -r "
-        if replaceprojects:
-            args += " -rs "
-        else:
-            args += " -ks "
-        if result == None:
-            result = UpdateResult(self._session)
-        result = self._session.execute("update %s -project %s" % (args, self.objectname), result)
-        if not result.successful and not keepgoing:
-            raise CCMException("Error updating %s" % (self.objectname), result)
-        return result
-    
-    def reconcile(self, updatewa=True, recurse=True, consideruncontrolled=True, missingwafile=True, report=True):
-        """ Reconcile the project to force the work area to match the database. """
-        args = ""
-        if updatewa:
-            args += " -update_wa "
-        if recurse:
-            args += " -recurse "
-        if consideruncontrolled:
-            args += " -consider_uncontrolled "
-        if missingwafile:
-            args += " -missing_wa_file "
-        if report:
-            args += " -report reconcile.txt "
-        result = self._session.execute("reconcile %s -project %s" % (args, self.objectname), Result(self._session))
-        if re.search(r"There are no conflicts in the Work Area", result.output) == None and re.search(r"Reconcile completed", result.output) == None:
-            raise CCMException("Error reconciling %s,\n%s" % (self.objectname, result.output), result)        
-        return result.output
-
-    def get_latest_baseline(self, filterstring="*", state="released"):
-        result = self._session.execute("query -n %s -t project -f \"%%displayname\" -s %s -u -ns \"version smatch'%s'\"" % (self.name, state, filterstring))
-        lines = result.output.splitlines()
-        return lines[-1]
-
-    def create_baseline(self, baseline_name, release, baseline_tag, purpose="System Testing", state="published_baseline"):
-        result = self._session.execute("baseline -create %s -release %s -purpose \"%s\" -vt %s -project \"%s\" -state \"%s\"" % (baseline_name, release, purpose, baseline_tag, self.objectname, state))
-        return result.output
-    
-    def sync(self, recurse=False, static=False):
-        """ Synchronize project content. By default it is not been done recusively. (Not unittested)"""
-        args = ""
-        if recurse:
-            args += " -recurse"
-        if static:
-            args += " -static"
-        result = self._session.execute("sync %s -project \"%s\"" % (args, self.objectname))
-        if result.status != None and result.status != 0:
-            raise CCMException("Error during synchronization of %s: %s." % (self.objectname, result.output))
-        return result.output
-
-    def conflicts(self, recurse=False, tasks=False):
-        args = "-noformat "
-        if recurse:
-            args += " -r"
-        if tasks:
-            args += " -t"
-        
-        result = self._session.execute("conflicts %s  \"%s\"" % (args, self.objectname), ConflictsResult(self._session))
-        if result.status != None and result.status != 0:
-            raise CCMException("Error during conflict detection of %s: %s." % (self.objectname, result))
-        return result
-    
-    tasks = property(_gettasks)
-    folders = property(_getfolders)
-    subprojects = property(_getsubprojects)
-    release = property(_getrelease, _setrelease)
-    baseline = property(_getbaseline, set_baseline)
-
-
-class Dir(CCMObject):
-    """ Wrapper class for Synergy dir object """
-    
-    def __init__(self, session, fpn):
-        CCMObject.__init__(self, session, fpn)
-
-    def children(self, project):
-        assert(project.type == 'project')
-        result = self._session.execute("query \"is_child_of('%s','%s')\" -u -f \"%%objectname\"" % (self.objectname, project), ObjectListResult(self._session))
-        return result.output
-        
-
-class Releasedef(CCMObject):
-    """ Wrapper class for Synergy releasedef object """
-    
-    def __init__(self, session, fpn):
-        CCMObject.__init__(self, session, fpn)
-    
-    def _getcomponent(self):
-        return self.name
-            
-    component = property(_getcomponent)
-
-
-class Folder(CCMObject):
-    """ Wrapper class for Synergy folder object """
-    
-    def __init__(self, session, fpn):
-        CCMObject.__init__(self, session, fpn)
-
-    def _gettasks(self):
-        """ Accessor for 'tasks' property. """
-        result = self._session.execute("folder -show tasks \"%s\" -u -f \"%%objectname\"" % self.objectname, ObjectListResult(self._session))
-        return result.output
-
-    def _getobjects(self):
-        result = self._session.execute("folder -show objects \"%s\" -u -f \"%%objectname\"" % self.objectname, ObjectListResult(self._session))
-        return result.output
-
-    def _getmode(self):
-        """ Get the mode used by the folder. """
-        result = self._session.execute("folder -show mode \"%s\"" % self.objectname)
-        return result.output.strip()
-
-    def _getquery(self):
-        """ Get the query that populate the folder. """
-        if self.mode.lower() == "query":
-            result = self._session.execute("folder -show query \"%s\"" % self.objectname)
-            return result.output.strip()
-        else:
-            raise CCMException("%s is not a query base folder." % (self.objectname))
-    
-    def _getdescription(self):
-        """ Get the description associated with the folder. """
-        r = self._session.execute("query -t folder -n %s -i %s -u -f \"%%description\"" % (self.name, self.instance))
-        return r.output.strip()
-
-    def remove(self, task):
-        """ Remove task from this folder. """
-        result = self._session.execute("folder -m \"%s\" -remove_task \"%s\"" % (self.objectname, task.objectname))
-        if result.status != None and result.status != 0:
-            raise CCMException("Error removing task %s from %s: %s." % (task.objectname, self.objectname, result.output))
-
-    def update(self):
-        result = self._session.execute("folder -m -update -f \"%%objectname\"" % self.objectname)
-        if result.status != None and result.status != 0:
-            raise CCMException("Error updating the folder content %s: %s." % (self.objectname, result.output))
-        
-    def append(self, task):
-        """ Associate an object to a task """
-        class AddTaskException(CCMException):
-            def __init__(self, reason, task, result):
-                CCMException.__init__(self, reason, result)
-                self.task = task
-        
-        result = self._session.execute("folder -m -at \"%s\" \"%s\"" % (task.objectname, self.objectname))
-        if re.search(r"(Added 1 task to)|(is already in folder)", result.output, re.M) is None:
-            raise AddTaskException(result.output, result, task)
-    
-    def copy(self, existing_folder):
-        """ Copy the contents of existing_folder into this folder.
-        
-        This appends to the destination folder by default.
-        
-        :param existing_folder: The destination Folder object.
-        """
-        result = self._session.execute("folder -copy %s -existing %s -append" % (self.objectname, existing_folder), FolderCopyResult(self._session))
-        return result.output
-        
-    objects = property(_getobjects)
-    tasks = property(_gettasks)
-    mode = property(_getmode)
-    query = property(_getquery)
-    is_query_based = property(lambda x: x.mode.lower() == "query")
-    description = property(_getdescription)
-
-
-class Task(CCMObject):
-    """ Wrapper class for Synergy task object """
-    
-    def __init__(self, session, fpn):
-        CCMObject.__init__(self, session, fpn)
-        self.__unicode_str_text = None
-
-    def _getobjects(self):
-        result = self._session.execute("task -show objects \"%s\" -u -f \"%%objectname\"" % self.objectname, ObjectListResult(self._session))
-        return result.output
-    
-    def append(self, ccm_object):
-        """ Associate an object to a task """
-        class AddObjectException(CCMException):
-            def __init__(self, comment, ccm_object):
-                CCMException.__init__(self, comment)
-                self.ccm_object = ccm_object
-        
-        result = self._session.execute("task -associate \"%s\" -object \"%s\"" % (self.objectname, ccm_object.objectname))
-        if not re.match(r"Associated object .+ with task .*\.", result.output, re.M):
-            raise AddObjectException(result.output)
-
-    def assign(self, username):
-        result = self._session.execute("task -modify \"%s\" -resolver %s" % (self.objectname, username))
-        if not re.match(r"Changed resolver of task", result.output, re.M):
-            raise CCMException("Error assigning task to user '%s',\n%s" % (username, result.output), result)
-        
-    def _getsynopsis(self):
-        return self['task_synopsis']    
-        
-    @staticmethod
-    def create(session, release_tag, synopsis=""):
-        assert release_tag.type == "releasedef", "release_tag must be a CCM object wrapper of releasedef type"    
-        result = session.execute("task -create -synopsis \"%s\" -release \"%s\"" % (synopsis, release_tag['displayname']), CreateNewTaskResult(session))
-        return result.output
-        
-    objects = property(_getobjects)
-    
-    def __unicode__(self):
-        # TODO: use optimised query that makes only 1 ccm query with suitable format
-        if self.__unicode_str_text == None:
-            self.__unicode_str_text = u'%s: %s' % (self['displayname'], self['task_synopsis'])
-        return self.__unicode_str_text
-        
-    def __str__(self):
-        return self.__unicode__().encode('ascii', 'replace')
-    
-    def get_release_tag(self):
-        """ Get task release. Use release property!"""
-        result = self._session.execute("attribute -show release \"%s\"" % (self.objectname), Result(self._session))
-        return result.output
-    
-    def set_release_tag(self, release_tag):
-        """ Set task release. Use release property!"""        
-        result = self._session.execute("attribute -modify release -value \"%s\" \"%s\"" % (release_tag, self.objectname), Result(self._session))
-        return result.output
-
-    release = property(get_release_tag, set_release_tag)
-
-class UpdateTemplate:
-    """ Allow to access Update Template property using Release and Purpose. """
-    def __init__(self, releasedef, purpose):
-        assert(releasedef != None)
-        assert(purpose != None)
-        self._releasedef = releasedef
-        self._purpose = purpose
-        
-    def objectname(self):
-        """ Return the objectname representing this virtual object. """
-        return "%s:%s" % (self._releasedef['displayname'], self._purpose)
-
-    def baseline_projects(self):
-        """ Query all projects for this UpdateTemplate. """
-        result = self._releasedef.session.execute("ut -sh baseline_projects \"%s\"" % self.objectname(), ObjectListResult(self._releasedef.session))
-        print result.output
-        return result.output
-
-    def information(self):
-        """ Query all projects for this UpdateTemplate. """
-        result = self._releasedef.session.execute("ut -sh information \"%s\"" % self.objectname(), UpdateTemplateInformation(self._releasedef.session))
-        print result.output
-        return result.output
-
-    def baseline_selection_mode(self):
-        """ The current Baseline selection mode """
-        result = self._releasedef.session.execute("ut -sh bsm \"%s\"" % self.objectname())
-        print result.output.strip()
-        return result.output.strip()
-
-
-def read_ccmwaid_info(filename):
-    """ Read data from a ccmwaid file. This method is an helper to retreive a project from a physical location. """
-    ccmwaid = open(filename, 'r')
-    # first line: database
-    dbpath = os.path.dirname(ccmwaid.readline().strip())
-    database = os.path.basename(dbpath)
-    # 2nd line should be a timestamp
-    ccmwaid.readline().strip()
-    # 3rd line is the objectname
-    objectref = ccmwaid.readline().strip()
-    ccmwaid.close()    
-    return {'dbpath': dbpath, 'database': database, 'objectname': objectref}
-
-def create_project_from_path(session, path):
-    """ Uses the (_|.)ccmwaid.inf file to create a Project object. """
-    ccmwaid = ".ccmwaid.inf"
-    if os.name == 'nt':
-        ccmwaid = "_ccmwaid.inf"
-        
-    if (not os.path.exists(path + "/" + ccmwaid)):
-        return None    
-    result = read_ccmwaid_info(path + "/" + ccmwaid)
-    
-    return session.create(result['objectname'])
-
-
-def open_session(username=None, password=None, engine=None, dbpath=None, database=None, reuse=True):
-    """Provides a Session object.
-    
-    Attempts to return a Session, based either on existing Synergy
-    sessions or by creating a new one.
-    
-    - If a .netrc file can be found on the user's personal drive,
-      that will be read to obtain Synergy login information if it 
-      is defined there. This will be used to fill in any missing 
-      parameters not passed in the call to open_session().
-      
-      The format of the .netrc file entries should be:
-      
-      machine synergy login USERNAME password foobar account DATABASE_PATH@SERVER
-      
-      If the details refer to a specific database, the machine can be the database name,
-      instead of "synergy".
-    - If an existing session is running that matches the supplied
-      parameters, it will reuse that.
-    
-    """
-    # See if a .netrc file can be used
-    if CCM_BIN == None:
-        raise CCMException("Could not find CM/Synergy executable in the path.")
-    if password == None or username == None or engine == None or dbpath == None:
-        if os.sep == '\\':
-            os.environ['HOME'] = "H:" + os.sep
-        _logger.debug('Opening .netrc file')
-        try:
-            netrc_file = netrc.netrc()
-            netrc_info = None
-            # If settings for a specific database 
-            if database != None:
-                netrc_info = netrc_file.authenticators(database)            
-
-            # if not found just try generic one
-            if netrc_info == None:
-                netrc_info = netrc_file.authenticators('synergy')
-                
-            if netrc_info != None:
-                (n_username, n_account, n_password) = netrc_info
-                if username == None:
-                    username = n_username
-                if password == None:
-                    password = n_password
-                if n_account != None:
-                    (n_dbpath, n_engine) = n_account.split('@')
-                    if dbpath == None and n_dbpath is not None:
-                        _logger.info('Database path set using .netrc (%s)' % n_dbpath)
-                        dbpath = n_dbpath
-                    if engine == None and n_engine is not None:
-                        _logger.info('Database engine set using .netrc (%s)' % n_engine)
-                        engine = n_engine
-        except IOError:
-            _logger.debug('Error accessing .netrc file')
-
-    # last chance...
-    if username == None:
-        username = os.environ['USERNAME']
-
-    # looking for dbpath using GSCM database
-    if dbpath == None and database != None:
-        _logger.info('Database path set using the GSCM database.')
-        dbpath = nokia.gscm.get_db_path(database)        
-
-    # looking for engine host using GSCM database
-    if engine == None and database != None:
-        _logger.info('Database engine set using the GSCM database.')
-        engine = nokia.gscm.get_engine_host(database)
-    
-    _sessions = []
-    # See if any currently running sessions can be used, only if no password submitted, else use a brand new session!
-    if password == None and reuse:
-        _logger.debug('Querying for existing Synergy sessions')
-        command = "%s status" % (CCM_BIN)
-        pipe = os.popen(command, 'r')
-        result = pipe.read()
-        pipe.close()
-        _logger.debug('ccm status result: ' + result)
-        for match in re.finditer(r'(?P<ccmaddr>\w+:\d+:\d+.\d+.\d+.\d+(:\d+.\d+.\d+.\d+)?)(?P<current_session>\s+\(current\s+session\))?\nDatabase:\s*(?P<dbpath>\S+)', result, re.M):
-            d = match.groupdict()
-            _logger.debug(d['ccmaddr'])
-            _logger.debug(os.environ['COMPUTERNAME'])
-            _logger.debug(d['current_session'])
-            if d['ccmaddr'].lower().startswith(os.environ['COMPUTERNAME'].lower()):
-                # These session objects should not close the session on deletion,
-                # because they did not initially create the session
-                existing_session = Session(username, engine, d['dbpath'], d['ccmaddr'], close_on_exit=False)
-                _logger.debug('Existing session found: %s' % existing_session)
-                _sessions.append(existing_session)
-        # looking for session using dbpath
-        for session in _sessions:
-            if session.dbpath == dbpath:
-                return session
-    else:
-        # looking for router address using GSCM database
-        router_address = None
-        if database == None and dbpath != None:
-            database = os.path.basename(dbpath)
-        
-        lock = fileutils.Lock(CCM_SESSION_LOCK)
-        try:
-            lock.lock(wait=True)
-            # if we have the database name we can switch to the correct Synergy router
-            if database != None:
-                _logger.info('Getting router address.')
-                router_address = nokia.gscm.get_router_address(database)
-                if os.sep == '\\' and router_address != None:
-                    routerfile = open(os.path.join(os.path.dirname(CCM_BIN), "../etc/_router.adr"), 'r')
-                    current_router = routerfile.read().strip()
-                    routerfile.close()
-                    if current_router != router_address.strip():
-                        _logger.info('Updating %s' % (os.path.normpath(os.path.join(os.path.dirname(CCM_BIN), "../etc/_router.adr"))))
-                        routerfile = open(os.path.join(os.path.dirname(CCM_BIN), "../etc/_router.adr"), "w+")
-                        routerfile.write("%s\n" % router_address)
-                        routerfile.close()
-        
-            # If no existing sessions were available, start a new one
-            _logger.info('Opening session.')
-            new_session = Session.start(username, password, engine, dbpath)
-            lock.unlock()
-            return new_session
-        finally:
-            lock.unlock()
-    raise CCMException("Cannot open session for user '%s'" % username)
-
-
-def get_role_for_purpose(session, purpose):
-    """  return role needed to modify project with checkout for purpose. """
-    purposes = session.purposes()
-    if purpose in purposes:
-        if purposes[purpose]['status'] == 'prep':
-            return 'build_mgr'
-    else:
-        raise CCMException("Could not find purpose '%s' in the database.\n Valid purpose are: %s." % (purpose, ','.join(purposes.keys())))
-    return 'developer'
-
-def get_role_for_status(session, status):
-    """  return role needed to modify project with a specific status. """
-    if status == 'prep':
-        return 'build_mgr'
-    elif status == 'shared':
-        return 'developer'
-    elif status == 'working':
-        return 'developer'
-    else:
-        raise CCMException("Unknow status '%s'" % status)
-
-def running_sessions(database=None):
-    """ Return the list of synergy session currently available on the local machine.
-        If database is given then it tries to update the router address.
-    """
-    _logger.debug('Querying for existing Synergy sessions')
-    if CCM_BIN == None:
-        raise CCMException("Could not find CM/Synergy executable in the path.")
-    command = "%s status" % (CCM_BIN)
-
-    lock = fileutils.Lock(CCM_SESSION_LOCK)
-    result = ""
-    output = []
-    try:
-        # if we have the database name we can switch to the correct Synergy router
-        if database != None:
-            lock.lock(wait=True)
-            _logger.info('Updating router address.')
-            router_address = nokia.gscm.get_router_address(database)
-            if os.sep == '\\' and router_address != None:
-                routerfile = open(os.path.join(os.path.dirname(CCM_BIN), "../etc/_router.adr"), 'r')
-                current_router = routerfile.read().strip()
-                routerfile.close()
-                if current_router != router_address.strip():
-                    _logger.info('Updating %s' % (os.path.normpath(os.path.join(os.path.dirname(CCM_BIN), "../etc/_router.adr"))))
-                    routerfile = open(os.path.join(os.path.dirname(CCM_BIN), "../etc/_router.adr"), "w+")
-                    routerfile.write("%s\n" % router_address)
-                    routerfile.close()
-
-        _logger.debug('Command: ' + command)
-        (result, status) = _execute(command)
-        if database != None:
-            lock.unlock()
-        if (status != 0):
-            raise CCMException("Ccm status execution returned an error.")
-        _logger.debug('ccm status result: ' + result)
-        for match in re.finditer(r'Command Interface\s+@\s+(?P<ccmaddr>\w+:\d+:\d+.\d+.\d+.\d+(:\d+.\d+.\d+.\d+)*)(?P<current_session>\s+\(current\s+session\))?\s+Database:\s*(?P<dbpath>\S+)', result, re.M):
-            data = match.groupdict()
-            _logger.debug(data['ccmaddr'])
-            _logger.debug(os.environ['COMPUTERNAME'])
-            _logger.debug(data['current_session'])
-            if data['ccmaddr'].lower().startswith(os.environ['COMPUTERNAME'].lower()):
-                # These session objects should not close the session on deletion,
-                # because they did not initially create the session
-                existing_session = Session(None, None, data['dbpath'], data['ccmaddr'], close_on_exit=False)
-                _logger.debug('Existing session found: %s' % existing_session)
-                output.append(existing_session)                
-    finally:
-        if database != None:
-            lock.unlock()        
-    return  output
-
-def session_exists(sessionid, database=None):
-    for session in running_sessions(database=database):
-        _logger.debug(session.addr() + "==" + sessionid + "?")
-        if session.addr() == sessionid:
-            return True
-    return False
-
-# The location of the ccm binary must be located to know where the _router.adr file is, to support
-# switching databases.
-CCM_BIN = fileutils.which("ccm")
-if os.sep == '\\':
-    CCM_BIN = fileutils.which("ccm.exe")
--- a/buildframework/helium/tools/common/python/lib/ccm/extra.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,340 +0,0 @@
-#============================================================================ 
-#Name        : extra.py 
-#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:
-#===============================================================================
-
-""" Library that contains custom Synergy functionnlities: e.g
-        * Snapshotter that can snapshot unfrozen baselines
-        * Threaded snapshotter.
-"""
-import ccm
-import os
-import shutil
-import threading
-import threadpool
-import traceback
-import sys
-import logging
-import xml.dom.minidom
-from xml.dom.minidom import getDOMImplementation, parse
-
-# Uncomment this line to enable logging in this module, or configure logging elsewhere
-#logging.basicConfig(level=logging.DEBUG)
-_logger = logging.getLogger('ccm.extra')
-
-class CCMExtraException(ccm.CCMException):
-    """ Exception raised by the methods of this module. """
-    def __init__(self, description, subexceptions):
-        ccm.CCMException.__init__(self, description)
-        self.subexceptions = subexceptions
-    
-    
-
-def Snapshot(project, targetdir, dir=None):
-    """ This function can snapshot anything from Synergy, even prep/working projects """
-    assert project != None, "a project object must be supplied"
-    assert project.type == "project", "project must be of project type"
-    if not dir:
-        dir = project.root_dir()
-    targetdir = os.path.join(targetdir, dir.name)
-    os.makedirs(targetdir)
-    for object in dir.children(project):
-        if object.type == 'dir':
-            Snapshot(project, targetdir, object)
-        elif object.type == 'project':
-            Snapshot(object, targetdir)
-        else:
-            object.to_file(os.path.join(targetdir, object.name))
-
-
-class _FastSnapshot:
-    """ Snapshot Job executed by the thread pool. """
-    def __init__(self, pool, project, targetdir, callback, exc_hld):
-        """ Construtor, will store the parameter for the checkout. """
-        self.pool = pool
-        self.project = project
-        self.targetdir = targetdir
-        self.callback = callback
-        self.exc_hld = exc_hld
-
-    def __call__(self):
-        """ Do the checkout, and then walkthrough the project hierarchy to find subproject to snapshot. """
-        _logger.info("Snapshotting %s under %s" % (self.project, self.targetdir))
-        self.project.snapshot(self.targetdir, False)
-        def walk(dir, targetdir):
-            for object in dir.children(self.project):
-                if isinstance(object, ccm.Dir):
-                    walk(object, os.path.join(targetdir, object.name))
-                elif isinstance(object, ccm.Project):
-                    _logger.info("Adding project %s" % object.objectname)
-                    self.pool.addWork(_FastSnapshot(self.pool, object, targetdir, self.callback, self.exc_hld))
-                    
-        if len(self.project.subprojects) > 0:
-            rootdir = self.project.root_dir()
-            walk(rootdir, os.path.join(self.targetdir, rootdir.name))
-        return ""
-
-def FastSnapshot(project, targetdir, threads=4):
-    """ Create snapshot running by running snapshots concurrently.
-        Snapshot will be made recursively top-down, and each sub project will
-        be snapshotted in parallel. 
-    """
-    assert threads > 0, "Number of threads must be > 0."
-    assert project != None, "a project object must be supplied."
-    assert project.type == "project", "project must be of project type."
-    
-    # error handling
-    exceptions = []
-    results = []
-    def handle_exception(request, exc_info):
-        _logger.error( "Exception occurred in request #%s: %s" % (request.requestID, exc_info[1]))
-        exceptions.append(exc_info[1])                        
-
-    def handle_result(request, result):        
-        results.append(result)
-   
-    pool = threadpool.ThreadPool(threads)
-    pool.addWork(_FastSnapshot(pool, project, targetdir, handle_result, handle_exception))
-    pool.wait()
-    
-    if len(exceptions):
-        raise CCMExtraException("Errors occurred during snapshot.", exceptions)
-
-    return "\n".join(results)
-
-
-
-def FastMaintainWorkArea(project, path, pst=None, threads=4, wat=False):
-    """ Maintain the workarea of a project in parallel. """
-    assert threads > 0, "Number of threads must be > 0."
-    assert isinstance(project, ccm.Project), "a valid project object must be supplied."
-            
-    # error handling
-    exceptions = []
-    results = []
-    def handle_exception(request, exc_info):
-        _logger.error( "Exception occured in request #%s: %s\n%s" % (request.requestID, exc_info[1], traceback.format_exception(exc_info[0], exc_info[1], exc_info[2])))
-        exceptions.append(exc_info[1])
-    
-    def handle_result(request, result):        
-        results.append(result)
-
-    class __MaintainProject:
-        def __init__(self, subproject, toplevel, wat=False):
-            self.subproject = subproject
-            self.toplevel = toplevel
-            self.wat = wat
-        
-        def __call__(self):
-            output = ""
-            _logger.info("Maintaining project %s" % self.subproject)
-            for tuple in self.subproject.finduse():
-                if tuple['project'] == self.toplevel:
-                    self.subproject['wa_path'] = os.path.join(self.toplevel['wa_path'], tuple['path'])
-                    self.subproject["project_subdir_template"] = ""
-                    _logger.info("Maintaining project %s under %s" % (self.subproject, self.subproject['wa_path']))
-                    output = self.subproject.work_area(True, True, True, wat=self.wat)
-            _logger.info("Project %s maintained" % self.subproject)
-            return output
-            
-    pool = threadpool.ThreadPool(threads)
-    project.work_area(True, False, True, path, pst, wat=wat)
-    for subproject in project.get_members(type="project"):
-        _logger.info("Adding project %s" % subproject)
-        pool.addWork(__MaintainProject(subproject, project, wat), callback=handle_result, exc_callback=handle_exception)
-    pool.wait()
-    
-    if len(exceptions) > 0:
-        raise CCMExtraException("Errors occured during work area maintenance.", exceptions)
-    
-    return "\n".join(results)
-
-
-
-def get_toplevel_project(session, path):
-    try:
-        wainfo = session.get_workarea_info(path)
-        project = get_toplevel_project(session, os.path.dirname(wainfo['path']))
-        if project == None:
-            project = wainfo['project']
-        return project
-    except ccm.CCMException, e:
-        return None
-
-
-class SessionProvider:
-    def __init__(self, opener=None):
-        self._opener = opener
-        if self._opener is None:
-            self._opener = ccm.open_session
-        
-    def get(self, username=None, password=None, engine=None, dbpath=None, database=None, reuse=True):
-        _logger.debug("SessionProvider: Creating a new session.")
-        return self._opener(username, password, engine, dbpath, database, reuse)
-
-    def __del__(self):
-        _logger.info("Deleting the session provider.")
-        self.close()
-
-    def close(self):
-        pass
-        
-        
-class CachedSessionProvider(SessionProvider):
-    """
-<sessions>
-    <session database="foobar" ccmaddr="xxxx"/>
-    <session database="foobarx" ccmaddr="xxxx"/>
-</sessions>
-    """
-
-    def __init__(self, opener=None, cache=None):
-        """ Creates CachedSessionProvider, with a specific 
-            opener and cache file.
-        """
-        SessionProvider.__init__(self, opener=opener)
-        _logger.info("Using CachedSessionProvider.")
-        self.__closed = False
-        self._lock = threading.Lock()
-        self.cacheXml = cache
-        self.cacheFree = {}
-        self.cacheUsed = []
-        self.load()
-
-    
-    def close(self):
-        """ Closing the SessionProvider. """
-        _logger.info("Closing the CachedSessionProvider.")
-        self.save()
-        if self.cacheXml == None:
-            _logger.info("Cleaning up opened sessions.")
-            self._lock.acquire()
-            for dbname in self.cacheFree.keys():
-                while len(self.cacheFree[dbname]) > 0:
-                    session = self.cacheFree[dbname].pop()
-                    session.close_on_exit = True
-                    session.close()
-            while len(self.cacheUsed) > 0:
-                session = self.cacheUsed.pop()
-                session.close_on_exit = True
-            self._lock.release()
-        self.__closed = True   
-    
-    def save(self):
-        if self.cacheXml is not None and not self.__closed:
-            _logger.info("Writing %s" % self.cacheXml)
-            impl = getDOMImplementation()
-            sessions = impl.createDocument(None, "sessions", None)
-            top_element = sessions.documentElement
-            self._lock.acquire()
-            def add_session(dbname, session):
-                sessionNode = sessions.createElement("session")
-                sessionNode.setAttribute("database", dbname)
-                sessionNode.setAttribute("ccmaddr", session.addr())
-                top_element.appendChild(sessionNode)
-            for dbname in self.cacheFree.keys():
-                for session in self.cacheFree[dbname]:
-                    add_session(dbname, session)
-            for session in self.cacheUsed:
-                add_session(session.database(), session)
-            self._lock.release()
-            o = open(self.cacheXml, "w+")
-            o.write(sessions.toprettyxml())
-            o.close()
-            _logger.debug(sessions.toprettyxml())
-            
-    
-    def load(self):
-        if self.cacheXml is not None and os.path.exists(self.cacheXml):
-            _logger.info("Loading %s" % self.cacheXml)
-            doc = parse(open(self.cacheXml, 'r')) 
-            sessions = doc.documentElement
-            self._lock.acquire()
-            try:
-                for child in sessions.childNodes:
-                    if child.nodeType == child.ELEMENT_NODE and child.tagName == "session" and child.hasAttribute('database') and child.hasAttribute('ccmaddr'):
-                        if child.getAttribute('database') not in self.cacheFree:
-                            self.cacheFree[child.getAttribute('database')] = []
-                        if ccm.session_exists(child.getAttribute('ccmaddr'), child.getAttribute('database')):
-                            _logger.info(" + Session: database=%s, ccmaddr=%s" % (child.getAttribute('database'), child.getAttribute('ccmaddr')))
-                            self.cacheFree[child.getAttribute('database')].append(ccm.Session(None, None, None, ccm_addr=child.getAttribute('ccmaddr'), close_on_exit=False))
-                        else:
-                            _logger.info(" - Session database=%s, ccmaddr=%s doesn't seem to be valid anymore." % (child.getAttribute('database'), child.getAttribute('ccmaddr')))
-            finally:
-                self._lock.release()
-
-    
-    def get(self, username=None, password=None, engine=None, dbpath=None, database=None, reuse=True):
-        if self.__closed:
-            raise Exception("Could not create further session the provider is closed.")
-        _logger.debug("CachedSessionProvider: Getting a session.")
-        if database is not None and database in self.cacheFree and len(self.cacheFree[database]) > 0:
-            _logger.info("CachedSessionProvider: Reusing session.")
-            self._lock.acquire()
-            s = self.cacheFree[database].pop()
-            self.cacheUsed.append(s)
-            self._lock.release()
-            return CachedProxySession(self, s) 
-        else:
-            _logger.debug("CachedSessionProvider: Creating new session.")
-            session = SessionProvider.get(self, username, password, engine, dbpath, database, False)
-            session.close_on_exit = False
-            s = CachedProxySession(self, session)
-            db = s.database()
-            self._lock.acquire()
-            if db not in self.cacheFree:
-                self.cacheFree[db] = []
-            self.cacheUsed.append(session)
-            self._lock.release()
-            return s
-
-    def free(self, session):
-        _logger.debug("CachedSessionProvider: Freeing session: %s" % session)
-        db = session.database()
-        if session in self.cacheUsed:
-            _logger.debug("CachedSessionProvider: Removing session from used list.")
-            self._lock.acquire()
-            self.cacheUsed.remove(session)
-            self.cacheFree[db].append(session)
-            self._lock.release()
-
-class CachedProxySession:
-    """ Proxy session which will cleanup the session and free it from the provider """
-    
-    def __init__(self, provider, session):
-        """ Constructor. """
-        self.__session = session 
-        self.__provider = provider
-    
-    def __getattr__(self, attrib):
-        """ Delegate attributes to the session object. """
-        _logger.debug("CachedProxySession.__getattr__(%s)" % attrib)
-        if attrib == "close":
-            return self.__close
-        return getattr(self.__session, attrib)
-
-    def __close(self):
-        """ Overriding the session closing. """
-        _logger.debug("CachedProxySession.__close")
-        self.__provider.free(self.__session)
-        self.__session.close()
-        
-    def __del__(self):
-        """ Free the session on destruction. """
-        _logger.debug("CachedProxySession.__del__")
-        self.__close()
-
--- a/buildframework/helium/tools/common/python/lib/ccmutil.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-#============================================================================ 
-#Name        : ccmutil.py 
-#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:
-#===============================================================================
-
-""" utility module related to ccm """
-
-import nokia.nokiaccm
-import configuration
-import ccm.extra
-
-def get_session(database, username, password, engine, dbpath):
-    """ Returns a user session """
-    session = None
-    if database != None:
-        session = nokia.nokiaccm.open_session(username, password, database=database)
-    else:
-        session = nokia.nokiaccm.open_session(username, password, engine, dbpath)
-    return session    
-
-def get_ccm_cache(ccm_cache_xml):
-    cache = None
-    if ccm_cache_xml is not None:
-        cache = str(ccm_cache_xml)
-    return cache
-    
-def get_ccm_project(session, deliveryfile, waroot):
-    """ Returns top level ccm project """
-    configBuilder = configuration.NestedConfigurationBuilder(open(deliveryfile, 'r'))
-    configSet = configBuilder.getConfiguration()
-    for config in configSet.getConfigurations():
-        waroot = config['dir']
-        print "Found wa for project %s" % waroot
-    return ccm.extra.get_toplevel_project(session, waroot)
-    
-
-
-    
\ No newline at end of file
--- a/buildframework/helium/tools/common/python/lib/comments.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,99 +0,0 @@
-#============================================================================ 
-#Name        : comments.py 
-#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:
-#===============================================================================
-
-""" Helper to parse branch information.
-"""
-import amara
-import logging
-import os
-import re
-import string
-
-
-COMMENT_SYMBOLS = {
-    '.java': ['//'],
-    '.hrh': ['//'],
-    '.cpp': ['//'],
-    '.h': ['//'],
-    '.inf': ['//'],
-    '.mmp': ['//'],
-    '.iby': ['//'],
-    '.pl':['#'],
-    '.py':['#'],
-    '.mk':['#'],
-    '.bat':['REM'],
-    '.xml':['<!--'],
-    '.txt':['//'],
-    '.cmd':['#','REM']
-    }
-
-
-# Uncomment this line to enable logging in this module, or configure logging elsewhere   
-#logging.basicConfig(level=logging.DEBUG)
-_logger = logging.getLogger("comments")
-
-
-class CommentParser(object):
-    """ Parse branch information. """
-    def __init__(self, files, element_name):
-        self.files = files
-        self.element_name = element_name
-
-    def scan(self):
-        """ This method goes processes the input files.
-        
-        It returns an xml document.  """
-        doc = amara.create_document(u"commentLog")
-        for path in self.files:
-            open_file = open(path)
-            CommentParser.scan_content(path, open_file.read(), self.element_name, doc)
-            open_file.close()
-
-        #print doc.xml()
-        return doc
-    
-    @staticmethod
-    def scan_content(filename, content, element_name, doc=None):
-        """ This method scan the defined content to find any custom comment tags.
-        
-        It returns an xml document.
-        """
-        # Creating a doc if not defined
-        if not doc:
-            doc = amara.create_document(u"commentLog")
-            
-        # Search the file for any XML elements matching the given element name
-        regex = string.Template(r"<${element_name}.*</${element_name}>").substitute(element_name=element_name)
-        comment_elements = re.findall(regex, content, re.DOTALL)
-        for comment in comment_elements:
-            (_, file_type) = os.path.splitext(filename)
-            file_type = file_type.lower()
-            if COMMENT_SYMBOLS.has_key(file_type):
-                for i in range(len(COMMENT_SYMBOLS[file_type])): 
-                    comment = comment.replace(COMMENT_SYMBOLS[file_type][i], "")
-            try:
-                doc.commentLog.xml_append_fragment(comment)
-                # Add a generic file attribute to the comment to label which file it comes from
-                doc.commentLog.xml_children[-1].xml_set_attribute(u'file', unicode(filename))
-            except Exception:
-                _logger.warning("A comment in '%s' is not valid XML." % filename)
-
-        #print doc.xml()
-        return doc
-    
\ No newline at end of file
--- a/buildframework/helium/tools/common/python/lib/compilation.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-#============================================================================ 
-#Name        : compilation.py 
-#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:
-#===============================================================================
-
-""" Package contains compilation phase related modules """
-
-import logging
-import build.io
-import sysdef.api
-import sysdef.io
-
-logging.basicConfig(level=logging.INFO)
-
-class BinarySizeLogger(object):
-    """ Read Binary size from rom output logs """
-    def __init__(self, sysDef):
-        self.sysDef = sysDef
-        
-    def read_output_binaries_per_unit(self, build_logs):
-        # Read in the output binaries of each unit
-        logging.info('Reading the output binaries created by each unit.')
-        if len(build_logs) == 0:
-            raise Exception('List of build logs is empty!')
-        logging.info("The list of log files:\n")
-        logging.info("\n".join(build_logs))
-        for logpath in build_logs:
-            binaries_reader = build.io.AbldLogWhatReader(logpath)
-            self.sysDef.merge_binaries(binaries_reader)
-        
-    def read_binary_sizes_in_rom_output_logs(self, rom_logs):    
-        # Read in the binary sizes listed in the ROM output logs
-        logging.info('Reading the binary sizes of each binary from ROM logs.')
-        if len(rom_logs) == 0:
-            raise Exception('List of ROM logs is empty!')
-        logging.info("The list of log files:\n")
-        logging.info("\n".join(rom_logs))
-        for log in rom_logs:
-            binary_sizes_reader = build.io.RombuildLogBinarySizeReader(log)
-            self.sysDef.merge_binary_sizes(binary_sizes_reader)
-    
-    def write2csvfile(self, binary_sizes_output_file, sysdef_config_list):
-        # Write out a .csv file containing
-        size_writer = sysdef.io.FlashImageSizeWriter(binary_sizes_output_file)
-        size_writer.write(self.sysDef, sysdef_config_list)
-        size_writer.close()
\ No newline at end of file
--- a/buildframework/helium/tools/common/python/lib/configuration.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,773 +0,0 @@
-#============================================================================ 
-#Name        : configuration.py 
-#Part of     : Helium 
-#
-#Partly 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: 
-# 
-#==============================================================================
-
-"""Defines an interface for accessing configurations, typically for SW builds.
-
-This interface is generally based on the Jakarta Commons Configuration API. A
-configuration is a collection of properties. Builders create Configuration
-objects from various source inputs.
-
-"""
-
-
-import copy
-import logging
-import os
-import re
-import sys
-import time
-import types
-import UserDict
-import xml.dom.minidom
-
-
-
-_logger = logging.getLogger('configuration')
-logging.basicConfig(level=logging.INFO)
-
-class Configuration(object, UserDict.DictMixin):
-    """ Base Configuration object. """
-    
-    key_re = re.compile(r'\${(?P<name>[._a-zA-Z0-9]+)}', re.M)
-    
-    def __init__(self, data=None):
-        """ Initialization. """
-        #super(UserDict.DictMixin, self).__init__(data)
-        self.name = None
-        self.data = {}
-        if data is not None:
-            self.data.update(data)
-
-    def __contains__(self, key):
-        """ Check if a keys is defined in the dict. """
-        return self.data.__contains__(key)
-    
-    def __getitem__(self, key, interpolate=True):
-        """ Get an item from the configuration via dictionary interface. """
-        if interpolate:
-            return self.interpolate(self.data[key])
-        return self.data[key]
-
-    def __setitem__(self, key, item):
-        """ Set an item from the configuration via dictionary interface. """
-        self.data[key] = item
-
-    def __delitem__(self, key):
-        """ Remove an item from the configuration via dictionary interface. """
-        del self.data[key]
-
-    def keys(self):
-        """ Get the list of item keys. """
-        return self.data.keys()
-    
-    def has_key(self, key):
-        """ Check if key exists. """
-        return self.data.has_key(key)
-
-    def match_name(self, name):
-        """ See if the given name matches the name of this configuration. """
-        return self.name == name
-
-    def get(self, key, default_value):
-        """ Get an item from the configuration. """
-        try:
-            return self.__getitem__(key)
-        except KeyError:
-            return default_value
-
-    def get_list(self, key, default_value):
-        """ Get a value as a list. """
-        try:
-            itemlist = self.__getitem__(key)
-            if not isinstance(itemlist, types.ListType):
-                itemlist = [itemlist]
-            return itemlist
-        except KeyError:
-            return default_value
-        
-    def get_int(self, key, default_value):
-        """ Get a value as an int. """
-        try:
-            value = self.__getitem__(key)
-            return int(value)
-        except KeyError:
-            return default_value
-        
-    def get_boolean(self, key, default_value):
-        """ Get a value as a boolean. """
-        try:
-            value = self.__getitem__(key)
-            return value == "true" or value == "yes" or value == "1"
-        except KeyError:
-            return default_value
-        
-    def interpolate(self, value):
-        """ Search for patterns of the form '${..}' and insert matching values. """
-        if isinstance(value, types.ListType):
-            value = [self.interpolate(elem) for elem in value]
-        else:
-            if isinstance(value, types.StringType) or \
-               isinstance(value, types.UnicodeType) or \
-               isinstance(value, types.ListType):
-                for match in self.key_re.finditer(value):
-                    for property_name in match.groups():
-                        if self.has_key(property_name):
-                            # See if interpolation may cause infinite recursion
-                            raw_property_value = self.__getitem__(property_name, False)
-                            #print 'raw_property_value: ' + raw_property_value
-                            if raw_property_value == None:
-                                raw_property_value = ''
-                            if isinstance(raw_property_value, types.ListType):
-                                for prop in raw_property_value:
-                                    if re.search('\${' + property_name + '}', prop) != None:
-                                        raise Exception("Key '%s' will cause recursive interpolation with value %s" % (property_name, raw_property_value))
-                            else:
-                                if re.search('\${' + property_name + '}', raw_property_value) != None:
-                                    raise Exception("Key '%s' will cause recursive interpolation with value %s" % (property_name, raw_property_value))
-                                    
-                            # Get the property value
-                            property_value = self.__getitem__(property_name)
-                            if isinstance(property_value, types.ListType):
-                                property_value = ",".join(property_value)
-                            else:
-                                property_value = re.sub(r'\\', r'\\\\', property_value, re.M)
-                            value = re.sub('\${' + property_name + '}', property_value, value, re.M)
-        return value
-    
-    def __str__(self):
-        """ A string representation. """
-        return self.__class__.__name__ + '[' + str(self.name) + ']'
-        
-    def __cmp__(self, other):
-        """ Compare with another object. """
-        return cmp(self.__str__, other.__str__)
-       
-       
-class PropertiesConfiguration(Configuration):
-    """ A Configuration that parses a plain text properties file.
-    
-    This typically follows the java.util.Properties format.
-    
-    Note: This code is mostly based on this recipe
-    http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/496795.
-    Copyright (c) Anand Balachandran Pillai
-    """
-    def __init__(self, stream=None, data=None):
-        Configuration.__init__(self, data)
-        
-        self.othercharre = re.compile(r'(?<!\\)(\s*\=)|(?<!\\)(\s*\:)')
-        self.othercharre2 = re.compile(r'(\s*\=)|(\s*\:)')
-        self.bspacere = re.compile(r'\\(?!\s$)')
-        
-        if stream is not None:
-            self.load(stream)
-        
-#    def __str__(self):
-#        s='{'
-#        for key,value in self.data.items():
-#            s = ''.join((s,key,'=',value,', '))
-#
-#        s=''.join((s[:-2],'}'))
-#        return s
-
-    def __parse(self, lines):
-        """ Parse a list of lines and create
-        an internal property dictionary """
-
-        # Every line in the file must consist of either a comment
-        # or a key-value pair. A key-value pair is a line consisting
-        # of a key which is a combination of non-white space characters
-        # The separator character between key-value pairs is a '=',
-        # ':' or a whitespace character not including the newline.
-        # If the '=' or ':' characters are found, in the line, even
-        # keys containing whitespace chars are allowed.
-
-        # A line with only a key according to the rules above is also
-        # fine. In such case, the value is considered as the empty string.
-        # In order to include characters '=' or ':' in a key or value,
-        # they have to be properly escaped using the backslash character.
-
-        # Some examples of valid key-value pairs:
-        #
-        # key     value
-        # key=value
-        # key:value
-        # key     value1,value2,value3
-        # key     value1,value2,value3 \
-        #         value4, value5
-        # key
-        # This key= this value
-        # key = value1 value2 value3
-        
-        # Any line that starts with a '#' is considerered a comment
-        # and skipped. Also any trailing or preceding whitespaces
-        # are removed from the key/value.
-        
-        # This is a line parser. It parses the
-        # contents like by line.
-
-        lineno = 0
-        i = iter(lines)
-
-        for line in i:
-            lineno += 1
-            line = line.strip()
-            # Skip null lines
-            if not line: continue
-            # Skip lines which are comments
-            if line[0] == '#': continue
-
-            # Position of first separation char
-            sepidx = -1
-            # A flag for performing wspace re check
-            #flag = 0
-            # Check for valid space separation
-            # First obtain the max index to which we
-            # can search.
-            m = self.othercharre.search(line)
-            if m:
-                first, last = m.span()
-                start, end = 0, first
-                #flag = 1
-                wspacere = re.compile(r'(?<![\\\=\:])(\s)')        
-            else:
-                if self.othercharre2.search(line):
-                    # Check if either '=' or ':' is present
-                    # in the line. If they are then it means
-                    # they are preceded by a backslash.
-                    
-                    # This means, we need to modify the
-                    # wspacere a bit, not to look for
-                    # : or = characters.
-                    wspacere = re.compile(r'(?<![\\])(\s)')        
-                start, end = 0, len(line)
-                
-            m2 = wspacere.search(line, start, end)
-            if m2:
-                # print 'Space match=>',line
-                # Means we need to split by space.
-                first, last = m2.span()
-                sepidx = first
-            elif m:
-                # print 'Other match=>',line
-                # No matching wspace char found, need
-                # to split by either '=' or ':'
-                first, last = m.span()
-                sepidx = last - 1
-                # print line[sepidx]
-                
-                
-            # If the last character is a backslash
-            # it has to be preceded by a space in which
-            # case the next line is read as part of the
-            # same property
-            while line[-1] == '\\':
-                # Read next line
-                try:
-                    nextline = i.next()
-                    nextline = nextline.strip()
-                    lineno += 1
-                    # This line will become part of the value
-                    line = line[:-1] + nextline
-                except StopIteration:
-                    break
-
-            # Now split to key,value according to separation char
-            if sepidx != -1:
-                key, value = line[:sepidx], line[sepidx+1:]
-            else:
-                key, value = line,''
-
-            self.processPair(key, value)
-            
-    def processPair(self, key, value):
-        """ Process a (key, value) pair """
-
-        oldkey = key
-        oldvalue = value
-        
-        # Create key intelligently
-        keyparts = self.bspacere.split(key)
-        # print keyparts
-
-        strippable = False
-        lastpart = keyparts[-1]
-
-        if lastpart.find('\\ ') != -1:
-            keyparts[-1] = lastpart.replace('\\','')
-
-        # If no backspace is found at the end, but empty
-        # space is found, strip it
-        elif lastpart and lastpart[-1] == ' ':
-            strippable = True
-
-        key = ''.join(keyparts)
-        if strippable:
-            key = key.strip()
-            oldkey = oldkey.strip()
-        
-        oldvalue = self.unescape(oldvalue)
-        value = self.unescape(value)
-        
-        self.data[key] = value.strip()
-
-#        # Check if an entry exists in pristine keys
-#        if self._keymap.has_key(key):
-#            oldkey = self._keymap.get(key)
-#            self._origprops[oldkey] = oldvalue.strip()
-#        else:
-#            self._origprops[oldkey] = oldvalue.strip()
-#            # Store entry in keymap
-#            self._keymap[key] = oldkey
-        
-    def escape(self, value):
-
-        # Java escapes the '=' and ':' in the value
-        # string with backslashes in the store method.
-        # So let us do the same.
-        newvalue = value.replace(':','\:')
-        newvalue = newvalue.replace('=','\=')
-
-        return newvalue
-
-    def unescape(self, value):
-
-        # Reverse of escape
-        newvalue = value.replace('\:',':')
-        newvalue = newvalue.replace('\=','=')
-
-        return newvalue    
-        
-    def load(self, stream):
-        """ Load properties from an open file stream """
-        
-        # For the time being only accept file input streams
-        if not(hasattr(stream, 'readlines') and callable(stream.readlines)):
-            raise TypeError,'Argument should be a file object!'
-        # Check for the opened mode
-        if hasattr(stream, 'mode') and stream.mode != 'r':
-            raise ValueError,'Stream should be opened in read-only mode!'
-
-        try:
-            lines = stream.readlines()
-            self.__parse(lines)
-        except IOError:
-            raise
-
-    def store(self, out):
-        """ Serialize the properties back to a file. """
-
-        if out.mode[0] != 'w':
-            raise ValueError, 'Stream should be opened in write mode!'
-
-        try:
-            # Write timestamp
-            out.write(''.join(('# ', time.strftime('%a %b %d %H:%M:%S %Z %Y', time.localtime()), '\n')))
-            
-            # Write properties from the  dictionary
-            for key in self.data.keys():
-                value = self.data[key]
-                out.write(''.join((key, '=', self.escape(value), '\n')))
-                
-            out.close()
-        except IOError, e:
-            raise
-            
-
-class NestedConfiguration(Configuration):
-    """ A nested configuration that may have a parent or child configurations. """
-    def __init__(self):
-        """ Initialization. """
-        Configuration.__init__(self, None)
-        self.parent = None
-        self.type = None
-        self.abstract = None
-
-    def isBuildable(self):
-        """ Is this a buildable configuration? """
-        return self.abstract == None
-
-    def _addPropertyValue(self, key, value, parseList=True):
-        """Adds a property value to the configuration.
-
-        If the property does not exist, it is added without modification.
-        If there is already a single value matching the key, the value is replaced by a list
-        containing the original and new values.
-        If there is already a list, the new value is added to the list.
-
-        The value is first processed in case it also represents a list of values,
-        e.g. comma-separated values.
-        """
-        if parseList and value.find(',') != -1:
-            value = value.split(',')
-            # Remove all whitespace
-            value = [v.strip() for v in value]
-
-        if key in self.data:
-            currentValue = self.data[key]
-
-            # Make sure current value is a list
-            if not isinstance(currentValue, types.ListType):
-                currentValue = [currentValue]
-
-            # Add new value(s)
-            if isinstance(value, types.ListType):
-                currentValue.extend(value)
-            else:
-                currentValue.append(value)
-            self.data[key] = currentValue
-        else:
-            self.data[key] = value
-
-    def __getitem__(self, key, interpolate=True):
-        """ Get an item. """
-        #print "__getitem__(%s, %s)" % (self.name, key)
-        if self.data.has_key(key):
-            value = super(NestedConfiguration, self).__getitem__(key, False)
-            if interpolate:
-                return self.interpolate(value)
-            return value
-        elif self.parent != None:
-            value = self.parent.__getitem__(key, False)
-            if interpolate:
-                return self.interpolate(value)
-            return value
-        raise KeyError('Cannot find key: ' + key)
-
-    def __setitem__(self, key, item):
-        """ Set the value of an item. """
-        self.data[key] = item
-
-    def __delitem__(self, key):
-        """ Remove an item. """
-        del self.data[key]
-
-    def __contains__(self, key):
-        """ Check if a keys is defined in the dict. """
-        if self.data.__contains__(key):
-            return True 
-        elif self.parent:
-            return self.parent.__contains__(key)
-        return False
-            
-    def keys(self):
-        """ Get the list of item keys. """
-        myKeys = self.data.keys()
-        if self.parent != None:
-            parentKeys = self.parent.keys()
-            for key in parentKeys:
-                if not key in myKeys:
-                    myKeys.append(key)
-        return myKeys
-        
-    def has_key(self, key):
-        """ Check if key exists. """
-        if self.data.has_key(key):
-            return True
-        if self.parent != None:
-            return self.parent.has_key(key)
-        return False
-
-    def match_name(self, name):
-        """ See if the configuration name matches the argument. """
-        if self.name == name:
-            return True
-        if self.parent != None:
-            return self.parent.match_name(name)
-        return False
-
-
-class Specification(NestedConfiguration):
-    """ Deprecated. This should be removed in future, it adds no value. """
-    
-    def __init__(self):
-        """ Initialization. """
-        NestedConfiguration.__init__(self)
-
-
-class ConfigurationSet(Configuration):
-    """A ConfigurationSet represents a set of configurations.
-
-    Each configuration should be processed separately. This is matching
-    the Raptor model where a single XML file can contain definitions
-    of multiple specifications and configurations.
-
-    It is however somewhat different from the Commons Configuration classes
-    that combine configurations, e.g. CombinedConfiguration,
-    CompositeConfiguration. These act to combine configurations in a way
-    such that a single configuration interface is still presented to the
-    client.
-    """
-    
-    def __init__(self, configs):
-        """ Initialization. """
-        Configuration.__init__(self)
-        self._configs = configs
-
-    def getConfigurations(self, name=None, type=None):
-        """ Return a list of configs that matches the name and type specified. 
-        
-        This can be queried multiple times to retrieve different named configurations.
-        """
-        result = []
-        for c in self._configs:
-            if ((name != None and c.match_name(name)) or name == None) and ((type != None and c.type == type) or type == None):
-                result.append(c)        
-        return result
-
-
-class ConfigurationBuilder(object):
-    """ Base class for builders that can create Configuration objects. """
-    
-    def getConfiguration(self):
-        """Returns a Configuration object."""
-        raise NotImplementedError
-
-
-class NestedConfigurationBuilder(ConfigurationBuilder):
-    """ Builder for building Configuration objects from nested configurations. """
-    
-    _constructors = {'spec':Specification, 'config':NestedConfiguration}
-
-    def __init__(self, inputfile, configname=''):
-        """ Initialization. """
-        self.inputfile = inputfile
-        self.configname = configname
-        self._warn_on_deprecated_spec = False
-
-    def getConfiguration(self):
-        """ Returns a ConfigurationSet object.
-
-        A ConfigurationSet represents a number of Configuration objects
-        that all may need to be processed.
-        """
-        try:
-            dom = xml.dom.minidom.parse(self.inputfile)
-        except Exception, exc:
-            raise Exception("XML file '%s' cannot be parsed properly: %s" % (self.inputfile, exc))
-
-        # The root element is typically <build> but can be anything
-        self.rootNode = dom.documentElement
-        configs = []
-
-        # Create a flat list of buildable configurations
-        for child in self.rootNode.childNodes:
-            if child.nodeType == xml.dom.Node.ELEMENT_NODE:
-                _logger.debug('Parsing children')
-                self.parseConfiguration(child, configs)
-
-        # Add configuration references
-        references = []
-        for reference in self.getReferences():
-            for conf in configs:
-                if conf.match_name(reference[1]):
-                    newConf = copy.deepcopy(conf)
-                    newConf.name = reference[0]
-                    references.append(newConf)
-
-        configs = configs + references
-
-        dom.unlink()
-        _logger.debug('Set of configs: ' + str(configs))
-        
-        if self._warn_on_deprecated_spec:
-            _logger.warning("Use of deprecated 'spec' element name in this configuration. Please rename to config")
-        return ConfigurationSet(configs)
-
-    def writeToXML(self, output, config_list, config_name=None):
-        document = """
-<build>
-</build>"""        
-        doc = xml.dom.minidom.parseString(document)
-        docRootNode = doc.documentElement
-        configNode = doc.createElement( 'config')
-        docRootNode.appendChild(configNode)
-        if config_name is not None:
-            configNode.setAttribute( 'name', config_name)        
-        configNode.setAttribute( 'abstract', 'true')
-
-        for config in config_list:
-            configSubNode = doc.createElement( 'config')
-            configNode.appendChild(configSubNode)
-            if config.name is not None:
-                configSubNode.setAttribute( 'name', config.name)
-
-            for key in config.keys():
-                if type(config.__getitem__(key)) == types.ListType:
-                    for i in range(len(config.__getitem__(key))):
-                        setNode = doc.createElement( 'set')
-                        configSubNode.appendChild(setNode)
-                        setNode.setAttribute( 'name', key)
-                        setNode.setAttribute( 'value', config.__getitem__(key)[i]) 
-                else:
-                    setNode = doc.createElement( 'set')
-                    configSubNode.appendChild(setNode)
-                    setNode.setAttribute( 'name', key)
-                    setNode.setAttribute( 'value', config.__getitem__(key))
-        out = open(output, 'w+')
-        out.write(doc.toprettyxml())
-        out.close()            
-
-
-    def getConfigurations(self, name=None, type=None):
-        """ Get a list of the individual configurations. 
-        
-        Once read a new builder must be opened to retrieve a differently filtered set of configurations.
-        """
-        config_set = self.getConfiguration()
-        return config_set.getConfigurations(name, type)
-
-    def getReferences(self):
-        references = []
-        for rootNode in self.rootNode.childNodes:
-            if rootNode.nodeType == xml.dom.Node.ELEMENT_NODE:
-                for child in rootNode.childNodes:
-                    if child.nodeType == xml.dom.Node.ELEMENT_NODE:
-                        for conf in child.childNodes:
-                            if conf.nodeName == 'specRef':
-                                for ref in conf.getAttribute('ref').split(','):
-                                    if not ( child.getAttribute('abstract') and str(self.configname) == '' ):
-                                        references.append([child.getAttribute('name'), ref])
-        return references
-
-    def parseConfiguration(self, configNode, configs, parentConfig=None):
-        """ Parse an individual nested configuration. """
-        # Create appropriate config object
-        if configNode.nodeName == 'spec':
-            self._warn_on_deprecated_spec = True
-        constructor = self._constructors[configNode.nodeName]
-        config = constructor()
-        _logger.debug('Configuration created: ' + str(config))
-        if parentConfig != None:
-            config.parent = parentConfig
-            #config.data.update(parentConfig.data)
-
-        # Add any attribute properties
-        for i in range(configNode.attributes.length):
-            attribute = configNode.attributes.item(i)
-            if hasattr(config, attribute.name):
-                _logger.debug('Adding config attribute: ' + str(attribute.name))
-                setattr(config, str(attribute.name), attribute.nodeValue)
-            else:
-                raise Exception('Invalid attribute for configuration: ' + attribute.name)
-
-        # Process the config element's children
-        configChildNodes = []
-
-        for child in configNode.childNodes:
-            if child.nodeType == xml.dom.Node.ELEMENT_NODE:
-                # <append> directives should add to parent values. In
-                # this case initially set the value to the parent value.
-                if child.nodeName == 'append':
-                    name = child.getAttribute('name')
-                    if parentConfig != None and parentConfig.has_key(name):
-                        parent_value = parentConfig.__getitem__(name, False)
-                        if not isinstance(parent_value, types.ListType):
-                            parent_value = [parent_value]
-                        for value in parent_value:
-                            config._addPropertyValue(name, value)
-
-                if child.nodeName == 'set' or child.nodeName == 'append':
-                    name = child.getAttribute('name')
-                    if child.hasAttribute('value'):
-                        value = child.getAttribute('value')
-                        config._addPropertyValue(name, value)
-                    elif child.hasChildNodes():
-                        value = ""
-                        for textchild in child.childNodes:
-                            value += textchild.data
-                        config._addPropertyValue(name, value, False)
-                elif child.nodeName == 'specRef':
-                    for ref in child.getAttribute('ref').split(','):
-                        node = self.getNodeByReference(ref)
-                        if not node:
-                            raise Exception('Referenced spec not found: ' + ref)
-                elif self._constructors.has_key(child.nodeName):
-                    configChildNodes.append(child)
-                else:
-                    raise Exception('Bad configuration xml element: ' + child.nodeName)
-
-        # Only save the buildable configurations
-        if config.isBuildable():
-            _logger.debug('Adding config to buildable set: ' + str(config))
-            configs.append(config)
-            
-        for childConfigNode in configChildNodes:
-            self.parseConfiguration(childConfigNode, configs, config)
-
-    def getNodeByReference(self, refName):
-        """ Find a node based on a reference to it. """
-        for child in self.rootNode.childNodes:
-            if child.nodeType == xml.dom.Node.ELEMENT_NODE:
-                for conf in child.childNodes:
-                    if conf.nodeName == 'spec':
-                        if refName == conf.getAttribute('name'):
-                            return conf
-
-
-class HierarchicalConfiguration(Configuration):
-    """ Represents hierarchical configurations such as XML documents. """
-    
-    def __init__(self):
-        """ Initialization. """
-        Configuration.__init__(self, None)
-        self._root = None
-        
-    def __getitem__(self, key, interpolate=True):
-        """ Get an item as a dict. """
-        elements = self._root.xpath(_Key(key).to_xpath())
-        values = [element.text for element in elements]
-        value = ','.join(values)
-        if interpolate:
-            value = self.interpolate(value)
-        return value
-        
-    def has_key(self, key):
-        """ Check if key exists. """
-        elements = self._root.xpath(_Key(key).to_xpath())
-        if len(elements) > 0:
-            return True
-        return False
-        
-    
-class _Key(object):
-    """ A hierarchical configuration key. """
-    
-    def __init__(self, string):
-        """ Initialization. """
-        self.string = string
-        
-    def to_xpath(self):
-        """ Convert the key to XPath syntax. """
-        return self.string.replace('.', '/')
-        
-        
-class XMLConfiguration(HierarchicalConfiguration):
-    """ A XML-based hierarchical configuration. """
-    
-    def __init__(self, file_):
-        """ Initialization. """
-        from lxml import etree
-        HierarchicalConfiguration.__init__(self)
-        
-        self._root = etree.parse(file_)
-        
-        
-        
\ No newline at end of file
--- a/buildframework/helium/tools/common/python/lib/configuration_model.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,216 +0,0 @@
-#============================================================================ 
-#Name        : configuration_model.py 
-#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:
-#===============================================================================
-
-import amara
-import logging
-import types
-import copy
-
-_logger = logging.getLogger('configurationmodel')
-#logging.basicConfig(level=logging.DEBUG)
-_handler = logging.StreamHandler()
-_handler.setFormatter(logging.Formatter('%(levelname)s: %(message)s'))
-_logger.addHandler(_handler)
-
-
-class PropertyDef(object):
-    """ The model definition of a property. """
-    
-    def __init__(self, property_node):
-        """ Initialization. """
-        if not hasattr(property_node, 'name'):
-            raise Exception("Name is not defined for '" + str(property_node) + "'")
-        if not hasattr(property_node, 'type'):
-            raise Exception("Type is not defined for '" + str(property_node.name) + "'")
-        if not hasattr(property_node, 'description'):
-            raise Exception("Description is not defined for '" + str(property_node.name) + "'")
-            
-        self.name = str(property_node.name)
-        self.editStatus = str(property_node.editStatus)
-        self.type = str(property_node.type)
-        self.description = str(property_node.description).strip()
-        
-        if len(self.description) == 0:
-            _logger.log(logging.ERROR, "Description has no content for '" + str(property_node.name) + "'")
-        
-        if hasattr(property_node, 'deprecated'):
-            self.deprecated = str(property_node.deprecated)
-                        
-    def __repr__(self):
-        return self.name
-        
-    def __str__(self):
-        return self.name
-    
-    
-class GroupDef(object):
-    """ The model definition of a group of properties. """
-    def __init__(self, group_node):
-        """ Initialization. """
-        self.name = str(group_node.name)
-        self.description = str(group_node.description)
-        self.properties = {}
-        self.propref = []
-        for property_ in group_node.propertyRef:
-            self.properties[str(property_)] = property_.usage
-            
-    def check_config(self, config, items):
-        """ Checks that the set of properties in a group are properly defined. """
-        defined_props = [p for p in self.properties.keys() if config.has_key(p)]
-        if len(defined_props) > 0:
-            required_props = [p for p in self.properties.keys() if self.properties[p] == 'required']
-            required_not_defined_props = set(required_props).difference(set(defined_props))
-            for undefined_property in required_not_defined_props:
-                items.append(UndefinedRequiredInGroupItem((self.name, undefined_property)))
-        
-        
-class DataModel(object):
-    """ A model of the configuration properties. """
-    def __init__(self, modelpath):
-        """ Initialization. """
-        doc = amara.parse(open(modelpath, 'r'))
-        
-        self.properties = {}
-        self.required_props = []
-        for property_ in doc.heliumDataModel.property:
-            self.properties[str(property_.name)] = PropertyDef(property_)
-                   
-        self.nongroupedproperties = copy.copy(self.properties)
-        self.groups = {}
-        for group in doc.heliumDataModel.group:
-            groupobj = GroupDef(group)
-            self.groups[str(group.name)] = groupobj
-            
-            for prop in groupobj.properties:
-                groupobj.propref.append(self.properties[prop])
-                if prop in self.nongroupedproperties:
-                    del self.nongroupedproperties[prop]
-                    
-            groupobj.propref.sort()
-            
-            required_props_in_group = [p for p in group.propertyRef if p.usage == 'required']
-            
-            for required_prop in required_props_in_group:
-                self.required_props.append(required_prop)
-                if not self.properties.has_key(str(required_prop)):
-                    raise Exception("Required property " + str(required_prop) + " is not defined!")
-        
-    def validate_config(self, config):
-        """ Validate the Ant configuration against the model. """
-        items = []
-        self._check_deprecated_properties(config, items)
-        self._check_undefined_properties(config, items)
-        self._check_undefined_properties_in_groups(config, items)
-        self._check_type_validation(config, items)
-        self._check_defined_properties_not_in_groups(config, items)
-        return items
-    
-    def validate_config_at_startup(self, config):
-        """ Validate the Ant configuration against the model at build startup. """
-        items = []
-        
-        for p in self.required_props:
-            if not config.has_key(str(p)):
-                print "Required property " + str(p) + " is not defined!"
-        
-        return items
-    
-    def _check_deprecated_properties(self, config, items):
-        """ Check that deprecated properties not being used. """
-        deprecated_props = [p for p in self.properties.values() if hasattr(p, 'deprecated')]
-        for deprecated_prop in deprecated_props:
-            _logger.debug('Checking deprecated property: ' + str(deprecated_prop))
-            if config.has_key(str(deprecated_prop)):
-                items.append(UsingDeprecatedItem(deprecated_prop))
-    
-    def _check_undefined_properties(self, config, items):
-        """ Check for any defined properties that are not in the model. """ 
-        undefined_properties = [p for p in config.keys() if p not in self.properties]
-        undefined_properties.sort()
-        for undefined_property in undefined_properties:
-            items.append(MissingFromDataModelItem(undefined_property))
-
-    def _check_undefined_properties_in_groups(self, config, items):
-        for group in self.groups.values():
-            _logger.debug('Checking group: %s' % group.name)
-            group.check_config(config, items)
-    
-    def _check_defined_properties_not_in_groups(self, config, items):
-        gp = []
-        for group in self.groups.values():
-            gp = gp + group.properties.keys()
-        for p in self.properties.values():
-            if not str(p) in gp:
-                raise Exception(str(p) + ' not in a group')
-    
-    def _check_type_validation(self, config, items):
-        prop_string = [p for p in self.properties.values() if p.type == 'string']
-        prop_integer = [p for p in self.properties.values() if p.type == 'integer']
-        prop_boolean = [p for p in self.properties.values() if p.type == 'boolean']
-        prop_flag = [p for p in self.properties.values() if p.type == 'flag']
-        
-        for prop in prop_integer:
-            if config.has_key(str(prop)):
-                if not config[str(prop)].isdigit():
-                    items.append(WrongTypeItem(("integer", prop)))            
-               
-        for prop in prop_boolean:
-            if config.has_key(str(prop)) :
-                if not (config[str(prop)] == 'false' or 'true'):
-                    items.append(WrongTypeItem(("boolean", prop)))
-                    
-        for prop in prop_string:
-            if config.has_key(str(prop)):
-                if len(config[str(prop)]) == 0:
-                    items.append(WrongTypeItem(("string", prop)))
-
-        
-class Item(object):
-    level = logging.INFO
-    message = ''
-
-    def __init__(self, values):
-        """ Initialization. """
-        self.values = values
-    
-    def log(self, logger):
-        logger.log(self.level, str(self))
-        
-    def __str__(self):
-        return self.message % self.values
-
-
-class MissingFromDataModelItem(Item):
-    level = logging.INFO
-    message = 'Property not in data model: %s'
-
-    
-class UsingDeprecatedItem(Item):
-    level = logging.WARNING
-    message = 'Deprecated property used: %s'
-
-
-class UndefinedRequiredInGroupItem(Item):
-    level = logging.WARNING
-    message = 'Required property in %s group is not defined: %s'
-
-    
-class WrongTypeItem(Item):
-    level = logging.WARNING
-    message = 'Invalid %s value: %s'
\ No newline at end of file
--- a/buildframework/helium/tools/common/python/lib/cpythontest/__init__.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +0,0 @@
-#============================================================================ 
-#Name        : __init__.py 
-#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:
-#===============================================================================
-
--- a/buildframework/helium/tools/common/python/lib/cpythontest/test_archive.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,994 +0,0 @@
-#============================================================================ 
-#Name        : test_archive.py 
-#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:
-#===============================================================================
-
-"""Test the archive.py module."""
-
-from __future__ import with_statement
-import os
-import amara
-import unittest
-import sys
-
-import archive
-import configuration
-import logging
-import fileutils
-import xml.dom.minidom
-
-import test_fileutils
-
-
-_logger = logging.getLogger('test.archive')
-    
-    
-root_test_dir = test_fileutils.root_test_dir
-
-def setup_module():
-    """ Creates some test data files for file-related testing. """
-    test_fileutils.setup_module()
-    
-def teardown_module():
-    """ Cleans up test data files for file-related testing. """
-    test_fileutils.teardown_module()
-    
-    
-class ArchivePreBuilderTest(unittest.TestCase):
-    """Tests that an archive configuration file successfully creates an Ant exec file."""
-    EXEC_FILE = "archive_create.ant.xml"
-
-    def test_ant_exec(self):
-        """Tests that an archive configuration file successfully creates an Ant exec file."""
-        builder = configuration.NestedConfigurationBuilder('tests/data/archive_test_input.cfg.xml')
-        archiveConfigSet = builder.getConfiguration()
-        archivePreBuilder = archive.ArchivePreBuilder(archiveConfigSet, "config", index=0)
-        buildFilePath = os.path.join(root_test_dir, r'archive_test.ant.xml')
-        archivePreBuilder.write(buildFilePath)
-        build_file = open(buildFilePath)
-        build_file_content = build_file.read()
-        _logger.debug(build_file_content)
-        resultDoc = amara.parse(build_file_content)
-        build_file.close()
-        # The last target in the Ant file should be called 'all'. Other targets
-        # are named stage1, stage2, etc.
-        assert resultDoc.project.target[-1].name == 'all'
-        os.remove(buildFilePath)
-        
-
-
-class LogicalArchiveTest(unittest.TestCase):
-    """tests Logical Archive feature"""
-##    def setup(self):
-##        """Test setup."""
-#        builder = configuration.NestedConfigurationBuilder('tests/data/archive_test.cfg.xml')
-#        self.archiveConfigSet = builder.getConfiguration()
-#        self.config = self.archiveConfigSet.getConfigurations()[0]
-#        self.archivePreBuilder = archive.ArchivePreBuilder(self.archiveConfigSet)
-
-    def test_manifest_files(self):
-        """ A LogicalArchive can create a correct manifest. """
-        configDict = {'root.dir': root_test_dir,
-                  'temp.build.dir': os.path.join(root_test_dir, 'temp_build_files'),
-                  'archives.dir': root_test_dir,
-                  'name': 'manifest_test',
-                  'include': 'dir1/*.txt',
-                  'archive.tool': '7za'
-                 }
-        config = configuration.Configuration(configDict)
-
-        builder = archive.ArchivePreBuilder(configuration.ConfigurationSet([config]), "config", index=0)
-        builder.build_manifest(config)
-
-        expectedPaths = [os.path.normpath('dir1/file1.txt')]
-
-        includeFilePath = os.path.join(root_test_dir, 'temp_build_files/manifest_test_includefile.txt')
-
-        with open(includeFilePath) as f:
-            content = f.readlines()
-        print content
-        print expectedPaths
-        content = [s.strip().lower() for s in content]
-        assert content == expectedPaths
-    
-    def test_empty_manifest_file(self):
-        """ A LogicalArchive can handle empty manifest. """
-        configDict = {'root.dir': root_test_dir,
-                  'temp.build.dir': os.path.join(root_test_dir, 'temp_build_files'),
-                  'archives.dir': root_test_dir,
-                  'name': 'manifest_test',
-                  'include': 'nothing',
-                  'archive.tool': '7za'
-                 }
-        config = configuration.Configuration(configDict)
-
-        builder = archive.ArchivePreBuilder(configuration.ConfigurationSet([config]), "config", index=0)
-        builder.build_manifest(config)
-
-        expectedPaths = []
-
-        includeFilePath = os.path.join(root_test_dir, 'temp_build_files/manifest_test_includefile.txt')
-
-        with open(includeFilePath) as f:
-            content = f.readlines()
-        print content
-        print expectedPaths
-        content = [s.strip().lower() for s in content]
-        assert content == expectedPaths
-
-    def test_manifest_files_with_exclude_list(self):
-        """ A LogicalArchive can create a correct manifest. """
-        excludelst = os.path.join(root_test_dir, 'exclude.lst')
-        flh = open(excludelst, 'w+')
-        flh.write("/epoc32/tools/variant/variant.cfg\n")
-        flh.write("\\epoc32\\tools\\abld.pl\n")
-        flh.write(os.path.join(root_test_dir, 'dir1', 'file1.txt') + "\n")
-        flh.write(os.path.join(root_test_dir, 'dir1/subdir1/subdir1_file.txt') + "\n")
-        flh.close()
-        configDict = {'root.dir': root_test_dir,
-                  'temp.build.dir': os.path.join(root_test_dir, 'temp_build_files'),
-                  'archives.dir': root_test_dir,
-                  'name': 'manifest_test',
-                  'include': 'dir1/**',
-                  'exclude.lst': excludelst,
-                  'archive.tool': '7za'
-                }
-        config = configuration.Configuration(configDict)
-
-        builder = archive.ArchivePreBuilder(configuration.ConfigurationSet([config]), "config", index=0)
-        builder.build_manifest(config)
-
-        expectedPaths = [os.path.normpath('dir1/file2.doc'),
-                         os.path.normpath('dir1/file3_no_extension'),
-                         os.path.normpath('dir1/subdir2/subdir2_file_no_extension'),
-                         os.path.normpath('dir1/subdir3/'),
-                         ]
-        expectedPaths.sort()
-        
-        includeFilePath = os.path.join(root_test_dir, 'temp_build_files/manifest_test_includefile.txt')
-
-        with open(includeFilePath) as f:
-            content = f.readlines()
-        print content
-        print expectedPaths
-        content = [s.strip().lower() for s in content]
-        content.sort()
-        assert content == expectedPaths
-
-    def test_manifest_files_with_exclude_list_abs_nodrive(self):
-        """ A LogicalArchive can create a correct manifest with external list and drive. """
-        rtd = os.path.splitdrive(os.path.abspath(root_test_dir))[1]
-        excludelst = os.path.join(root_test_dir, 'exclude.lst')
-        flh = open(excludelst, 'w+')
-        flh.write("/epoc32/tools/variant/variant.cfg\n")
-        flh.write("\\epoc32\\tools\\abld.pl\n")
-        flh.write(os.path.join(rtd, 'dir1', 'file1.txt') + "\n")
-        flh.write(os.path.join(rtd, 'dir1/subdir1/subdir1_file.txt') + "\n")
-        flh.close()
-        configDict = {'root.dir': os.path.abspath(root_test_dir),
-                  'temp.build.dir': os.path.join(root_test_dir, 'temp_build_files'),
-                  'archives.dir': root_test_dir,
-                  'name': 'manifest_test',
-                  'include': 'dir1/**',
-                  'exclude.lst': excludelst,
-                  'archive.tool': '7za'
-                 }
-        config = configuration.Configuration(configDict)
-
-        builder = archive.ArchivePreBuilder(configuration.ConfigurationSet([config]), "config", index=0)
-        builder.build_manifest(config)
-
-        expectedPaths = [os.path.normpath('dir1/file2.doc'),
-                         os.path.normpath('dir1/file3_no_extension'),
-                         os.path.normpath('dir1/subdir2/subdir2_file_no_extension'),
-                         os.path.normpath('dir1/subdir3/'),
-                         ]
-        expectedPaths.sort()
-        
-        includeFilePath = os.path.join(root_test_dir, 'temp_build_files/manifest_test_includefile.txt')
-
-        with open(includeFilePath) as f:
-            content = f.readlines()
-        if os.sep == '\\':
-            content = [s.strip().lower() for s in content]
-        else:
-            content = [s.strip() for s in content]
-        content.sort()
-        print content
-        print expectedPaths
-        assert content == expectedPaths
-
-    
-    def test_distribution_policy_config(self):
-        """ tests the distribution policy files configuration"""
-        expected_paths = [os.path.normpath('s60/component_public/component_public_file.txt'),
-                         os.path.normpath('s60/component_public/Distribution.Policy.S60'),
-                         os.path.normpath('s60/Distribution.Policy.S60'),
-                         os.path.normpath('s60/missing/subdir/Distribution.Policy.S60'),
-                         os.path.normpath('s60/missing/subdir/not_to_be_removed_0.txt'),
-                         os.path.normpath('s60/UPPERCASE_MISSING/subdir/Distribution.Policy.S60'),
-                         os.path.normpath('s60/UPPERCASE_MISSING/subdir/not_to_be_removed_0.txt'),]
-        if os.sep == '\\':
-            for i in range(len(expected_paths)):
-                expected_paths[i] = expected_paths[i].lower()
-        self.do_distribution_policy_config(expected_paths, policy='0')
-         
-        expected_paths = [os.path.normpath('s60/component_private/component_private_file.txt'),
-                         os.path.normpath('s60/component_private/Distribution.Policy.S60'),]
-        if os.sep == '\\':
-            for i in range(len(expected_paths)):
-                expected_paths[i] = expected_paths[i].lower()
-        self.do_distribution_policy_config(expected_paths, policy='1')
-
-        expected_paths = [os.path.normpath('s60/missing/subdir/another_subdir/to_be_removed_9999.txt'),
-                          os.path.normpath('s60/missing/to_be_removed_9999.txt'),
-                          os.path.normpath('s60/UPPERCASE_MISSING/subdir/another_subdir/to_be_removed_9999.txt'),
-                          os.path.normpath('s60/UPPERCASE_MISSING/to_be_removed_9999.txt')]
-        if os.sep == '\\':
-            for i in range(len(expected_paths)):
-                expected_paths[i] = expected_paths[i].lower()
-        self.do_distribution_policy_config(expected_paths, policy=archive.mappers.MISSING_POLICY)
-        
-    def do_distribution_policy_config(self, expected_paths, policy):
-        """ . """
-        configDict = {'root.dir': root_test_dir,
-                  'temp.build.dir': os.path.join(root_test_dir, 'temp_build_files'),
-                  'archives.dir': root_test_dir,
-                  'name': 's60_policy_test',
-                  'include': 's60/',
-                  'distribution.policy.s60': policy,
-                  'selectors': 'policy',
-                  'archive.tool': '7za'
-                 }
-        config = configuration.Configuration(configDict)
-
-        builder = archive.ArchivePreBuilder(configuration.ConfigurationSet([config]), "config", index=0)
-        builder.build_manifest(config)
-        includeFilePath = os.path.join(root_test_dir, 'temp_build_files/s60_policy_test_includefile.txt')
-        
-        with open(includeFilePath) as f:
-            content = f.readlines()
-        if os.sep == '\\':
-            content = [s.strip().lower() for s in content]
-        else:
-            content = [s.strip() for s in content]
-        content.sort()
-
-        print content
-        if os.sep == '\\':
-            expected_paths = [s.strip().lower() for s in expected_paths]
-        else:
-            expected_paths = [s.strip() for s in expected_paths]
-        expected_paths.sort()
-        print expected_paths
-        assert content == expected_paths
-        
-    def test_split_manifest_file_unicode(self):
-        """ A LogicalArchive can split a manifest correctly. """
-        configDict = {'root.dir': os.path.abspath(root_test_dir),
-                  'temp.build.dir': os.path.abspath(os.path.join(root_test_dir, 'temp_build_files')),
-                  'archives.dir': os.path.abspath(root_test_dir),
-                  'name': 'manifest_test_unicode',
-                  'max.files.per.archive': '1',
-                  'include': 'test_unicode/',
-                  'archive.tool': '7za'
-                 }
-        config = configuration.Configuration(configDict)
-
-        builder = archive.ArchivePreBuilder(configuration.ConfigurationSet([config]), "config", index=0)
-        manifest_file_path = builder.build_manifest(config)        
-        builder.manifest_to_commands(config, manifest_file_path)
-        
-        includeFilePath = os.path.join(root_test_dir, 'temp_build_files/manifest_test_unicode_includefile.txt')
-        includeFilePath1 = os.path.join(root_test_dir, 'temp_build_files/manifest_test_unicode_part01.txt')
-        includeFilePath2 = os.path.join(root_test_dir, 'temp_build_files/manifest_test_unicode_part02.txt')
-        includeFilePath3 = os.path.join(root_test_dir, 'temp_build_files/manifest_test_unicode_part03.txt')
-
-        with open(includeFilePath) as f:
-            content = f.readlines()
-        with open(includeFilePath1) as f:
-            content1 = f.readlines()
-        with open(includeFilePath2) as f:
-            content2 = f.readlines()
-        with open(includeFilePath3) as f:
-            content3 = f.readlines()
-        print "content: ", content
-        print "content1: ", content1
-        print "content2: ", content2
-        print "content3: ", content2
-        content = [s.strip() for s in content]
-        assert len(content) == 3
-        assert len(content1) == 1
-        assert len(content2) == 1
-        assert len(content3) == 1
-
-    def test_distribution_policy_mapper_config(self):
-        """ Testing the policy mapper. """
-        configDict = {'root.dir': root_test_dir,
-                  'temp.build.dir': os.path.join(root_test_dir, 'temp_build_files'),
-                  'archives.dir': root_test_dir,
-                  'name': 's60_policy_mapper_test',
-                  'include': 's60/',
-                  'archive.tool': '7za',
-                  'policy.zip2zip': 'true',
-                  'mapper': 'policy',
-                  'policy.csv': os.path.join(os.environ['HELIUM_HOME'], 'tests/data/distribution.policy.id_status.csv'),
-                 }
-        config = configuration.Configuration(configDict)
-
-        builder = archive.ArchivePreBuilder(configuration.ConfigurationSet([config]), "config", index=0)
-        manifest_file_path = builder.build_manifest(config)
-        cmds = builder.manifest_to_commands(config, manifest_file_path)
-
-        
-        expected_paths = ['s60' + os.sep + 'component_private' + os.sep + 'component_private_file.txt',
-                           's60' + os.sep + 'component_private' + os.sep + 'Distribution.Policy.S60',
-                           's60' + os.sep + 'component_public' + os.sep + 'component_public_file.txt',
-                           's60' + os.sep + 'component_public' + os.sep + 'Distribution.Policy.S60',
-                           's60' + os.sep + 'Distribution.Policy.S60',                           
-                           's60' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'another_subdir' + os.sep + 'to_be_removed_9999.txt',
-                           's60' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'Distribution.Policy.S60',
-                           's60' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'not_to_be_removed_0.txt',
-                           's60' + os.sep + 'missing' + os.sep + 'to_be_removed_9999.txt',
-                           's60' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'subdir' + os.sep + 'another_subdir' + os.sep + 'to_be_removed_9999.txt',
-                           's60' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'subdir' + os.sep + 'Distribution.Policy.S60',
-                           's60' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'subdir' + os.sep + 'not_to_be_removed_0.txt',
-                           's60' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'to_be_removed_9999.txt',
-                           's60' + os.sep + 'not_in_cvs' + os.sep + 'Distribution.Policy.S60',]
-        if os.sep == '\\':
-            for i in range(len(expected_paths)):
-                expected_paths[i] = expected_paths[i].lower()
-        expected_paths0 = ['s60' + os.sep + 'component_public' + os.sep + 'component_public_file.txt',
-                           's60' + os.sep + 'component_public' + os.sep + 'Distribution.Policy.S60',
-                           's60' + os.sep + 'Distribution.Policy.S60',
-                           's60' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'Distribution.Policy.S60',
-                           's60' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'not_to_be_removed_0.txt',
-                           's60' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'subdir' + os.sep + 'Distribution.Policy.S60',
-                           's60' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'subdir' + os.sep + 'not_to_be_removed_0.txt',]
-        if os.sep == '\\':
-            for i in range(len(expected_paths0)):
-                expected_paths0[i] = expected_paths0[i].lower()
-        expected_paths1 = ['s60' + os.sep + 'component_private' + os.sep + 'component_private_file.txt',
-                           's60' + os.sep + 'component_private' + os.sep + 'Distribution.Policy.S60']
-        if os.sep == '\\':
-            for i in range(len(expected_paths1)):
-                expected_paths1[i] = expected_paths1[i].lower()
-        expected_paths9999 = ['s60' + os.sep + 'missing' + os.sep + 'to_be_removed_9999.txt',
-                              's60' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'another_subdir' + os.sep + 'to_be_removed_9999.txt',
-                              's60' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'to_be_removed_9999.txt',
-                              's60' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'subdir' + os.sep + 'another_subdir' + os.sep + 'to_be_removed_9999.txt']
-        if os.sep == '\\':
-            for i in range(len(expected_paths9999)):
-                expected_paths9999[i] = expected_paths9999[i].lower()
-        includeFilePath = os.path.join(root_test_dir, 'temp_build_files/s60_policy_mapper_test_includefile.txt')
-        includeFilePath0 = os.path.join(root_test_dir, 'temp_build_files/s60_policy_mapper_test_0.txt')
-        includeFilePath1 = os.path.join(root_test_dir, 'temp_build_files/s60_policy_mapper_test_1.txt')
-        includeFilePath9999 = os.path.join(root_test_dir, 'temp_build_files/s60_policy_mapper_test_9999.txt')
-        includeFilePathInternal = os.path.join(root_test_dir, 'temp_build_files/s60_policy_mapper_test.internal.txt')
-        
-        content = self.__read_manifest(includeFilePath)
-        expected_paths.sort()
-        print "Content"
-        print content
-        print "Expected"
-        print expected_paths
-        assert content == expected_paths
-
-        content = self.__read_manifest(includeFilePath0)
-        expected_paths0.sort()
-        print content
-        print expected_paths0
-        assert content == expected_paths0
-
-        content = self.__read_manifest(includeFilePath1)
-        expected_paths1.sort()
-        print content
-        print expected_paths1
-        assert content == expected_paths1
-        
-        content = self.__read_manifest(includeFilePath9999)
-        expected_paths9999.sort()
-        print content
-        print expected_paths9999
-        assert content == expected_paths9999
-
-        assert os.path.exists(includeFilePathInternal) == True
-        print "Commands : ", cmds
-        assert len(cmds) == 3
-
-
-    def test_distribution_policy_mapper_config_no_zip2zip(self):
-        """ Testing the policy mapper. """
-        configDict = {'root.dir': root_test_dir,
-                  'temp.build.dir': os.path.join(root_test_dir, 'temp_build_files'),
-                  'archives.dir': root_test_dir,
-                  'name': 's60_policy_mapper_test_noz2z',
-                  'include': 's60/',
-                  'archive.tool': '7za',
-                  'policy.zip2zip': 'false',
-                  'mapper': 'policy'
-                 }
-        config = configuration.Configuration(configDict)
-
-        builder = archive.ArchivePreBuilder(configuration.ConfigurationSet([config]), "config", index=0)
-        manifest_file_path = builder.build_manifest(config)
-        cmds = builder.manifest_to_commands(config, manifest_file_path)
-
-        
-        expected_paths = ['s60' + os.sep + 'component_private' + os.sep + 'component_private_file.txt',
-                           's60' + os.sep + 'component_private' + os.sep + 'Distribution.Policy.S60',
-                           's60' + os.sep + 'component_public' + os.sep + 'component_public_file.txt',
-                           's60' + os.sep + 'component_public' + os.sep + 'Distribution.Policy.S60',
-                           's60' + os.sep + 'Distribution.Policy.S60',                           
-                           's60' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'another_subdir' + os.sep + 'to_be_removed_9999.txt',
-                           's60' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'Distribution.Policy.S60',
-                           's60' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'not_to_be_removed_0.txt',
-                           's60' + os.sep + 'missing' + os.sep + 'to_be_removed_9999.txt',
-                           's60' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'subdir' + os.sep + 'another_subdir' + os.sep + 'to_be_removed_9999.txt',
-                           's60' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'subdir' + os.sep + 'Distribution.Policy.S60',
-                           's60' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'subdir' + os.sep + 'not_to_be_removed_0.txt',
-                           's60' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'to_be_removed_9999.txt',
-                           's60' + os.sep + 'not_in_cvs' + os.sep + 'Distribution.Policy.S60',]
-        if os.sep == '\\':
-            for i in range(len(expected_paths)):
-                expected_paths[i] = expected_paths[i].lower()
-        expected_paths0 = ['s60' + os.sep + 'component_public' + os.sep + 'component_public_file.txt',
-                           's60' + os.sep + 'component_public' + os.sep + 'Distribution.Policy.S60',
-                           's60' + os.sep + 'Distribution.Policy.S60',
-                           's60' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'Distribution.Policy.S60',
-                           's60' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'not_to_be_removed_0.txt',
-                           's60' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'subdir' + os.sep + 'Distribution.Policy.S60',
-                           's60' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'subdir' + os.sep + 'not_to_be_removed_0.txt',]
-        if os.sep == '\\':
-            for i in range(len(expected_paths0)):
-                expected_paths0[i] = expected_paths0[i].lower()
-        expected_paths1 = ['s60' + os.sep + 'component_private' + os.sep + 'component_private_file.txt',
-                           's60' + os.sep + 'component_private' + os.sep + 'Distribution.Policy.S60']
-        if os.sep == '\\':
-            for i in range(len(expected_paths1)):
-                expected_paths1[i] = expected_paths1[i].lower()
-        expected_paths9999 = ['s60' + os.sep + 'missing' + os.sep + 'to_be_removed_9999.txt',
-                              's60' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'another_subdir' + os.sep + 'to_be_removed_9999.txt',
-                              's60' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'to_be_removed_9999.txt',
-                              's60' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'subdir' + os.sep + 'another_subdir' + os.sep + 'to_be_removed_9999.txt']
-        if os.sep == '\\':
-            for i in range(len(expected_paths9999)):
-                expected_paths9999[i] = expected_paths9999[i].lower()
-
-        expected_paths.sort()
-        includeFilePath = os.path.join(root_test_dir, 'temp_build_files/s60_policy_mapper_test_includefile.txt')
-        includeFilePath0 = os.path.join(root_test_dir, 'temp_build_files/s60_policy_mapper_test_0.txt')
-        includeFilePath1 = os.path.join(root_test_dir, 'temp_build_files/s60_policy_mapper_test_1.txt')
-        includeFilePath9999 = os.path.join(root_test_dir, 'temp_build_files/s60_policy_mapper_test_9999.txt')
-        includeFilePathInternal = os.path.join(root_test_dir, 'temp_build_files/s60_policy_mapper_test_noz2z.internal.txt')
-        
-        content = self.__read_manifest(includeFilePath)
-        expected_paths.sort()
-        print content
-        print expected_paths
-        assert content == expected_paths
-
-        content = self.__read_manifest(includeFilePath0)
-        expected_paths0.sort()
-        print content
-        print expected_paths0
-        assert content == expected_paths0
-
-        content = self.__read_manifest(includeFilePath1)
-        expected_paths1.sort()
-        print content
-        print expected_paths1
-        assert content == expected_paths1
-        
-        content = self.__read_manifest(includeFilePath9999)
-        expected_paths9999.sort()
-        print content
-        print expected_paths9999
-        assert content == expected_paths9999
-
-        assert os.path.exists(includeFilePathInternal) == False
-        print "Commands : ", cmds
-        assert len(cmds) == 1
-
-
-    def test_distribution_policy_mapper_remover_config(self):
-        """ Testing the policy remover mapper. """
-        configDict = {'root.dir': root_test_dir,
-                  'temp.build.dir': os.path.join(root_test_dir, 'temp_build_files'),
-                  'archives.dir': root_test_dir,
-                  'name': 's60_policy_mapper_test',
-                  'include': 's60/',
-                  'policy.root.dir': os.path.join(root_test_dir, 's60'),
-                  'archive.tool': '7za',
-                  'mapper': 'policy.remover',
-                  'policy.zip2zip': 'true',
-                  'policy.csv': os.path.join(os.environ['HELIUM_HOME'], 'tests/data/distribution.policy.id_status.csv'),
-                 }
-        config = configuration.Configuration(configDict)
-
-        builder = archive.ArchivePreBuilder(configuration.ConfigurationSet([config]), "config", index=0)
-        manifest_file_path = builder.build_manifest(config)
-        cmds = builder.manifest_to_commands(config, manifest_file_path)
-        
-        expected_paths = ['s60' + os.sep + 'component_private' + os.sep + 'component_private_file.txt',
-                           's60' + os.sep + 'component_private' + os.sep + 'Distribution.Policy.S60',
-                           's60' + os.sep + 'component_public' + os.sep + 'component_public_file.txt',
-                           's60' + os.sep + 'component_public' + os.sep + 'Distribution.Policy.S60',
-                           's60' + os.sep + 'Distribution.Policy.S60',
-                           's60' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'Distribution.Policy.S60',
-                           's60' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'not_to_be_removed_0.txt',                           
-                           's60' + os.sep + 'missing' + os.sep + 'to_be_removed_9999.txt',                           
-                           's60' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'another_subdir' + os.sep + 'to_be_removed_9999.txt',
-                           's60' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'subdir' + os.sep + 'Distribution.Policy.S60',
-                           's60' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'subdir' + os.sep + 'not_to_be_removed_0.txt',
-                           's60' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'to_be_removed_9999.txt',
-                           's60' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'subdir' + os.sep + 'another_subdir' + os.sep + 'to_be_removed_9999.txt',                           
-                           's60' + os.sep + 'not_in_cvs' + os.sep + 'Distribution.Policy.S60',]
-        if os.sep == '\\':
-            for i in range(len(expected_paths)):
-                expected_paths[i] = expected_paths[i].lower()
-        expected_paths.sort()
-        expected_paths0 = ['s60' + os.sep + 'component_public' + os.sep + 'component_public_file.txt',
-                           's60' + os.sep + 'component_public' + os.sep + 'Distribution.Policy.S60',
-                           's60' + os.sep + 'Distribution.Policy.S60',
-                           's60' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'Distribution.Policy.S60',
-                           's60' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'not_to_be_removed_0.txt',                           
-                           's60' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'subdir' + os.sep + 'Distribution.Policy.S60',
-                           's60' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'subdir' + os.sep + 'not_to_be_removed_0.txt']
-        if os.sep == '\\':
-            for i in range(len(expected_paths0)):
-                expected_paths0[i] = expected_paths0[i].lower()
-        expected_paths1 = ['s60' + os.sep + 'component_private' + os.sep + 'component_private_file.txt',
-                           's60' + os.sep + 'component_private' + os.sep + 'Distribution.Policy.S60']
-        if os.sep == '\\':
-            for i in range(len(expected_paths1)):
-                expected_paths1[i] = expected_paths1[i].lower()
-        expected_paths1.sort()
-        includeFilePath = os.path.join(root_test_dir, 'temp_build_files/s60_policy_mapper_test_includefile.txt')
-        includeFilePath0 = os.path.join(root_test_dir, 'temp_build_files/s60_policy_mapper_test_0.txt')
-        includeFilePath1 = os.path.join(root_test_dir, 'temp_build_files/s60_policy_mapper_test_1.txt')
-        
-        content = self.__read_manifest(includeFilePath)
-        expected_paths.sort()
-        print content
-        print expected_paths
-        assert content == expected_paths
-
-        content = self.__read_manifest(includeFilePath0)
-        expected_paths0.sort()
-        print content
-        print expected_paths0
-        assert content == expected_paths0
-
-        content = self.__read_manifest(includeFilePath1)
-        expected_paths1.sort()
-        print content
-        print expected_paths1
-        assert content == expected_paths1
-
-        print cmds        
-        assert len(cmds[3]) == 7
-
-
-    def test_distribution_policy_mapper_sf_remover_config(self):
-        """ Testing the policy SFL remover mapper. """
-        configDict = {'root.dir': root_test_dir,
-                  'temp.build.dir': os.path.join(root_test_dir, 'temp_build_files'),
-                  'archives.dir': root_test_dir,
-                  'name': 'sf_policy_sf_mapper_test',
-                  'include': 'sf/',
-                  'policy.root.dir': os.path.join(root_test_dir, 'sf'),
-                  'archive.tool': '7za',
-                  'mapper': 'sfl.policy.remover',
-                  'policy.zip2zip': 'false',
-                  'policy.csv': os.path.join(os.environ['HELIUM_HOME'], 'tests/data/distribution.policy.extended_for_sf.id_status.csv'),
-                 }
-        config = configuration.Configuration(configDict)
-
-        builder = archive.ArchivePreBuilder(configuration.ConfigurationSet([config]), "config", index=0)
-        manifest_file_path = builder.build_manifest(config)
-        cmds = builder.manifest_to_commands(config, manifest_file_path)
-        
-        expected_paths = ['sf' + os.sep + 'component_private' + os.sep + 'component_private_file.txt',
-                           'sf' + os.sep + 'component_private' + os.sep + 'Distribution.Policy.S60',
-                           'sf' + os.sep + 'component_public' + os.sep + 'component_public_file.txt',
-                           'sf' + os.sep + 'component_public' + os.sep + 'Distribution.Policy.S60',
-                           'sf' + os.sep + 'Distribution.Policy.S60',
-                           'sf' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'Distribution.Policy.S60',
-                           'sf' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'to_be_removed_9999.txt',                           
-                           'sf' + os.sep + 'missing' + os.sep + 'to_be_removed_9999.txt',
-                           'sf' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'subdir_nofiles' + os.sep + 'subdir_nofiles2',
-                           'sf' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'subdir_nopolicy' + os.sep + 'component_private_file.txt',
-                           'sf' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'subdir' + os.sep + 'Distribution.Policy.S60',
-                           'sf' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'subdir' + os.sep + 'to_be_removed_9999.txt',
-                           'sf' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'to_be_removed_9999.txt',
-                           'sf' + os.sep + 'not_in_cvs' + os.sep + 'Distribution.Policy.S60',
-                           'sf' + os.sep + 'component_sfl' + os.sep + 'component_sfl_file.txt',
-                           'sf' + os.sep + 'component_sfl' + os.sep + 'Distribution.Policy.S60',
-                           'sf' + os.sep + 'component_epl' + os.sep + 'component_epl_file.txt',
-                           'sf' + os.sep + 'component_epl' + os.sep + 'Distribution.Policy.S60',]
-        if os.sep == '\\':
-            for i in range(len(expected_paths)):
-                expected_paths[i] = expected_paths[i].lower()
-        expected_paths0 = ['sf' + os.sep + 'component_public' + os.sep + 'component_public_file.txt',
-                           'sf' + os.sep + 'component_public' + os.sep + 'Distribution.Policy.S60',
-                           'sf' + os.sep + 'Distribution.Policy.S60',
-                           'sf' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'Distribution.Policy.S60',
-                           'sf' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'to_be_removed_9999.txt',
-                           'sf' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'subdir' + os.sep + 'Distribution.Policy.S60',
-                           'sf' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'subdir' + os.sep + 'to_be_removed_9999.txt']
-        if os.sep == '\\':
-            for i in range(len(expected_paths0)):
-                expected_paths0[i] = expected_paths0[i].lower()
-        expected_paths1 = ['sf' + os.sep + 'component_private' + os.sep + 'component_private_file.txt',
-                           'sf' + os.sep + 'component_private' + os.sep + 'Distribution.Policy.S60']
-        if os.sep == '\\':
-            for i in range(len(expected_paths1)):
-                expected_paths1[i] = expected_paths1[i].lower()
-        expected_paths3 = ['sf' + os.sep + 'component_sfl' + os.sep + 'component_sfl_file.txt',
-                           'sf' + os.sep + 'component_sfl' + os.sep + 'Distribution.Policy.S60',]
-        if os.sep == '\\':
-            for i in range(len(expected_paths3)):
-                expected_paths3[i] = expected_paths3[i].lower()
-        expected_paths7 = ['sf' + os.sep + 'component_epl' + os.sep + 'component_epl_file.txt',
-                           'sf' + os.sep + 'component_epl' + os.sep + 'Distribution.Policy.S60',]
-        if os.sep == '\\':
-            for i in range(len(expected_paths7)):
-                expected_paths7[i] = expected_paths7[i].lower()
-        expected_paths9 = ['sf' + os.sep + 'missing' + os.sep + 'to_be_removed_9999.txt',
-                           'sf' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'subdir_nofiles' + os.sep + 'subdir_nofiles2',
-                           'sf' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'subdir_nopolicy' + os.sep + 'component_private_file.txt',
-                           'sf' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'to_be_removed_9999.txt',
-                           'sf' + os.sep + 'not_in_cvs' + os.sep + 'Distribution.Policy.S60',]
-        if os.sep == '\\':
-            for i in range(len(expected_paths9)):
-                expected_paths9[i] = expected_paths9[i].lower()
- 
-        includeFilePath = os.path.join(root_test_dir, 'temp_build_files/sf_policy_sf_mapper_test_includefile.txt')
-        includeFilePath0 = os.path.join(root_test_dir, 'temp_build_files/sf_policy_sf_mapper_test_0.txt')
-        includeFilePath1 = os.path.join(root_test_dir, 'temp_build_files/sf_policy_sf_mapper_test_1.txt')
-        includeFilePath3 = os.path.join(root_test_dir, 'temp_build_files/sf_policy_sf_mapper_test_3.txt')
-        includeFilePath7 = os.path.join(root_test_dir, 'temp_build_files/sf_policy_sf_mapper_test_7.txt')
-        includeFilePath9 = os.path.join(root_test_dir, 'temp_build_files/sf_policy_sf_mapper_test_9999.txt')
-        
-        
-        content = self.__read_manifest(includeFilePath)
-        expected_paths.sort()
-        print content
-        print expected_paths
-        assert content == expected_paths
-
-        content = self.__read_manifest(includeFilePath0)
-        expected_paths0.sort()
-        print content
-        print expected_paths0
-        assert content == expected_paths0
-
-        content = self.__read_manifest(includeFilePath1)
-        expected_paths1.sort()
-        print content
-        print expected_paths1
-        assert content == expected_paths1
-
-        content = self.__read_manifest(includeFilePath3)
-        expected_paths3.sort()
-        print content
-        print expected_paths3
-        assert content == expected_paths3
-
-        content = self.__read_manifest(includeFilePath7)
-        expected_paths7.sort()
-        print content
-        print expected_paths7
-        assert content == expected_paths7
-
-        content = self.__read_manifest(includeFilePath9)
-        expected_paths9.sort()
-        print content
-        print expected_paths9
-        assert content == expected_paths9
-        
-        # checking the number of command generated
-        assert len(cmds) == 2, "Must only have 2 steps in the archiving (archiving, removing)."
-        assert len(cmds[0]) == 5, "Must only have 5 output files."
-        print len(cmds[1])
-        for cmd in cmds[1]:
-            print cmd
-        assert len(cmds[1]) == len(expected_paths)-len(expected_paths3), "Remore must be equal to len(expected_paths) - len(expected_paths3)"
-
-    def test_distribution_policy_mapper_epl_remover_config(self):
-        """ Testing the policy EPL remover mapper. """
-        configDict = {'root.dir': root_test_dir,
-                  'temp.build.dir': os.path.join(root_test_dir, 'temp_build_files'),
-                  'archives.dir': root_test_dir,
-                  'name': 'sf_policy_epl_mapper_test',
-                  'include': 'sf/',
-                  'policy.root.dir': os.path.join(root_test_dir, 'sf'),
-                  'archive.tool': '7za',
-                  'mapper': 'epl.policy.remover',
-                  'policy.zip2zip': 'false',
-                  'policy.csv': os.path.join(os.environ['HELIUM_HOME'], 'tests/data/distribution.policy.extended_for_sf.id_status.csv'),
-                 }
-        config = configuration.Configuration(configDict)
-
-        builder = archive.ArchivePreBuilder(configuration.ConfigurationSet([config]), "config", index=0)
-        manifest_file_path = builder.build_manifest(config)
-        cmds = builder.manifest_to_commands(config, manifest_file_path)
-        
-        expected_paths = ['sf' + os.sep + 'component_private' + os.sep + 'component_private_file.txt',
-                           'sf' + os.sep + 'component_private' + os.sep + 'Distribution.Policy.S60',
-                           'sf' + os.sep + 'component_public' + os.sep + 'component_public_file.txt',
-                           'sf' + os.sep + 'component_public' + os.sep + 'Distribution.Policy.S60',
-                           'sf' + os.sep + 'Distribution.Policy.S60',
-                           'sf' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'Distribution.Policy.S60',
-                           'sf' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'to_be_removed_9999.txt',
-                           'sf' + os.sep + 'missing' + os.sep + 'to_be_removed_9999.txt',
-                           'sf' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'subdir_nofiles' + os.sep + 'subdir_nofiles2',
-                           'sf' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'subdir_nopolicy' + os.sep + 'component_private_file.txt',
-                           'sf' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'subdir' + os.sep + 'Distribution.Policy.S60',
-                           'sf' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'subdir' + os.sep + 'to_be_removed_9999.txt',
-                           'sf' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'to_be_removed_9999.txt',
-                           'sf' + os.sep + 'not_in_cvs' + os.sep + 'Distribution.Policy.S60',
-                           'sf' + os.sep + 'component_sfl' + os.sep + 'component_sfl_file.txt',
-                           'sf' + os.sep + 'component_sfl' + os.sep + 'Distribution.Policy.S60',
-                           'sf' + os.sep + 'component_epl' + os.sep + 'component_epl_file.txt',
-                           'sf' + os.sep + 'component_epl' + os.sep + 'Distribution.Policy.S60',]
-        if os.sep == '\\':
-            for i in range(len(expected_paths)):
-                expected_paths[i] = expected_paths[i].lower()
-        expected_paths0 = ['sf' + os.sep + 'component_public' + os.sep + 'component_public_file.txt',
-                           'sf' + os.sep + 'component_public' + os.sep + 'Distribution.Policy.S60',
-                           'sf' + os.sep + 'Distribution.Policy.S60',
-                           'sf' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'Distribution.Policy.S60',
-                           'sf' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'to_be_removed_9999.txt',
-                           'sf' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'subdir' + os.sep + 'Distribution.Policy.S60',
-                           'sf' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'subdir' + os.sep + 'to_be_removed_9999.txt',]
-        if os.sep == '\\':
-            for i in range(len(expected_paths0)):
-                expected_paths0[i] = expected_paths0[i].lower()
-        expected_paths1 = ['sf' + os.sep + 'component_private' + os.sep + 'component_private_file.txt',
-                           'sf' + os.sep + 'component_private' + os.sep + 'Distribution.Policy.S60',]
-        if os.sep == '\\':
-            for i in range(len(expected_paths1)):
-                expected_paths1[i] = expected_paths1[i].lower()
-        expected_paths3 = ['sf' + os.sep + 'component_sfl' + os.sep + 'component_sfl_file.txt',
-                           'sf' + os.sep + 'component_sfl' + os.sep + 'Distribution.Policy.S60',]
-        if os.sep == '\\':
-            for i in range(len(expected_paths3)):
-                expected_paths3[i] = expected_paths3[i].lower()
-        expected_paths7 = ['sf' + os.sep + 'component_epl' + os.sep + 'component_epl_file.txt',
-                           'sf' + os.sep + 'component_epl' + os.sep + 'Distribution.Policy.S60',]
-        if os.sep == '\\':
-            for i in range(len(expected_paths7)):
-                expected_paths7[i] = expected_paths7[i].lower()
-        expected_paths9 = ['sf' + os.sep + 'missing' + os.sep + 'to_be_removed_9999.txt',
-                           'sf' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'subdir_nofiles' + os.sep + 'subdir_nofiles2',
-                           'sf' + os.sep + 'missing' + os.sep + 'subdir' + os.sep + 'subdir_nopolicy' + os.sep + 'component_private_file.txt',
-                           'sf' + os.sep + 'UPPERCASE_MISSING' + os.sep + 'to_be_removed_9999.txt',
-                           'sf' + os.sep + 'not_in_cvs' + os.sep + 'Distribution.Policy.S60',]
-        if os.sep == '\\':
-            for i in range(len(expected_paths9)):
-                expected_paths9[i] = expected_paths9[i].lower()
-
-        includeFilePath = os.path.join(root_test_dir, 'temp_build_files/sf_policy_epl_mapper_test_includefile.txt')
-        includeFilePath0 = os.path.join(root_test_dir, 'temp_build_files/sf_policy_epl_mapper_test_0.txt')
-        includeFilePath1 = os.path.join(root_test_dir, 'temp_build_files/sf_policy_epl_mapper_test_1.txt')
-        includeFilePath3 = os.path.join(root_test_dir, 'temp_build_files/sf_policy_epl_mapper_test_3.txt')
-        includeFilePath7 = os.path.join(root_test_dir, 'temp_build_files/sf_policy_epl_mapper_test_7.txt')
-        includeFilePath9 = os.path.join(root_test_dir, 'temp_build_files/sf_policy_epl_mapper_test_9999.txt')
-        
-        
-        content = self.__read_manifest(includeFilePath)
-        expected_paths.sort()
-        print content
-        print expected_paths
-        assert content == expected_paths
-
-        content = self.__read_manifest(includeFilePath0)
-        expected_paths0.sort()
-        print content
-        print expected_paths0
-        assert content == expected_paths0
-
-        content = self.__read_manifest(includeFilePath1)
-        expected_paths1.sort()
-        print content
-        print expected_paths1
-        assert content == expected_paths1
-
-        content = self.__read_manifest(includeFilePath3)
-        expected_paths3.sort()
-        print content
-        print expected_paths3
-        assert content == expected_paths3
-
-        content = self.__read_manifest(includeFilePath7)
-        expected_paths7.sort()
-        print content
-        print expected_paths7
-        assert content == expected_paths7
-
-        content = self.__read_manifest(includeFilePath9)
-        expected_paths9.sort()
-        print content
-        print expected_paths9
-        assert content == expected_paths9
-        
-        # checking the number of command generated
-        assert len(cmds) == 2, "Must only have 2 steps in the archiving (archiving, removing)."
-        assert len(cmds[0]) == 5, "Must only have 5 output files."
-        assert len(cmds[1]) == len(expected_paths)-len(expected_paths3), "Remore must be equal to len(expected_paths) - len(expected_paths3)"
-
-
-
-
-    def __read_manifest(self, manifest):
-        """ read the file and sort"""
-        with open(manifest) as f:
-            content = f.readlines()
-        if os.sep == '\\':
-            content = [s.strip().lower() for s in content]
-        else:
-            content = [s.strip() for s in content]
-        content.sort()
-        return content
-        
-
-    def test_split_manifest_file(self):
-        """ A LogicalArchive can split a manifest correctly. """
-        configDict = {'root.dir': os.path.abspath(root_test_dir),
-                  'temp.build.dir': os.path.abspath(os.path.join(root_test_dir, 'temp_build_files')),
-                  'archives.dir': os.path.abspath(root_test_dir),
-                  'name': 'manifest_test',
-                  'max.files.per.archive': '1',
-                  'include': 'dir/',
-                  'exclude': 'dir/emptysubdir3',
-                  'archive.tool': '7za'
-                 }
-        config = configuration.Configuration(configDict)
-
-        builder = archive.ArchivePreBuilder(configuration.ConfigurationSet([config]), "config", index=0)
-        manifest_file_path = builder.build_manifest(config)
-        builder.manifest_to_commands(config, manifest_file_path)
-
-        expectedPaths = ['dir' + os.sep + 'emptysubdir1','dir' + os.sep + 'emptysubdir2']
-        expectedPaths1 = ['dir' + os.sep + 'emptysubdir1\n']
-        expectedPaths2 = ['dir' + os.sep + 'emptysubdir2\n']
-        
-        includeFilePath = os.path.join(root_test_dir, 'temp_build_files/manifest_test_includefile.txt')
-        includeFilePath1 = os.path.join(root_test_dir, 'temp_build_files/manifest_test_part01.txt')
-        includeFilePath2 = os.path.join(root_test_dir, 'temp_build_files/manifest_test_part02.txt')
-
-        with open(includeFilePath) as f:
-            content = f.readlines()
-        with open(includeFilePath1) as f:
-            content1 = f.readlines()
-        with open(includeFilePath2) as f:
-            content2 = f.readlines()
-        print "content: ", content
-        print "content1: ", content1
-        print "content2: ", content2
-        print "expectedPaths: ", expectedPaths
-        print "expectedPaths1: ", expectedPaths1
-        print "expectedPaths2: ", expectedPaths2
-        content = [s.strip().lower() for s in content]
-        assert content == expectedPaths
-        assert content1 == expectedPaths1
-        assert content2 == expectedPaths2
-
-class CheckRootDirValueTest(unittest.TestCase):
-    """test root drive value"""
-    def test_checkRootDirValue(self):
-        """ Testing the root drive value. """
-        configDict = {'root.dir': root_test_dir,
-                'temp.build.dir': os.path.join(root_test_dir, 'temp_build_files'),
-                'archives.dir': root_test_dir,
-                'name': 'regular_path_test',
-                'include': 'dir1/*.txt',
-                'archive.tool': '7za'
-               }
-        configDictUnc = {'root.dir': "\\\\server\\share\\dir",
-                'temp.build.dir': os.path.join(root_test_dir, 'temp_build_files'),
-                'archives.dir': root_test_dir,
-                'name': 'unc_test',
-                'include': 'dir1/*.txt',
-                'archive.tool': '7za'
-               }
-        config = configuration.Configuration(configDict)
-        configUnc = configuration.Configuration(configDictUnc)
-        builder = MockedArchivePreBuilder(configuration.ConfigurationSet([config, configUnc]), "config", writerType='make', index=0)
-        builder.rewriteXMLFile(os.path.join(os.environ['HELIUM_HOME'], 'tests/data/zip_checkDrive_test.cfg.xml'), os.path.join(os.environ['HELIUM_HOME'], 'tests/data/zip_checkDrive_test.cfg.xml.parsed'))
-        (build_drive, _) = os.path.splitdrive(os.path.normpath(os.environ['TEMP']))
-        rootList = builder.checkRootDirValue(MockedConfigBuilder(), os.path.join(os.environ['HELIUM_HOME'], 'tests/data/zip_checkDrive_test.cfg.xml.parsed'), build_drive, 'wvdo_sources')
-        assert rootList is not None
-        if os.sep == '\\':
-            roots = builder.getCommonUncRoots(['\\\\server\\share\\dir', 
-                                               '\\\\server\\share', 
-                                               '\\\\server\\share1\\dir',
-                                               '\\\\server2\\share\\somedir'])
-            assert len(roots) == 3
-            assert '\\\\server\\share\\' in roots
-            assert '\\\\server\\share1\\' in roots
-            assert '\\\\server2\\share\\' in roots
-
-class MockedConfigBuilder:
-    """."""
-            
-    def writeToXML(self, xml_file, configs, parse_xml_file):
-        """writeToXML"""
-        pass
-    
-
-class MockedArchivePreBuilder(archive.ArchivePreBuilder):
-    """ ."""
-    def substUncPath(self, _):
-        """ subst the unc path"""
-        if os.sep != '\\':
-            return None
-        return fileutils.get_next_free_drive()
-          
-    def unSubStituteDrives(self, drive):
-        """ unsubstitute the drive"""
-        pass
-    
-    def rewriteXMLFile(self, xml_file, parse_xml_file):
-        """re-write XML file"""
-        doc = xml.dom.minidom.parse(xml_file)
-        out = open(parse_xml_file, 'w')
-        doc.writexml(out, indent='')
-        out.close()
-            
-  
-class ZipArchiverTest(unittest.TestCase):
-
-    def test_extension(self):
-        t = archive.tools.SevenZipArchiver()
-        assert t.extension() == ".zip"
-    
-
-#class ZipArchiverTest(unittest.TestCase):
-#    def setUp(self):
-#        archiveConfig = amara.parse(open('tests/data/zip_archive_test.cfg.xml'))
-#        self.archivePreBuilder = archive.ArchivePreBuilder(archiveConfig)
-#
-#    def testZipArchiverCommand(self):
-#        """Zip archiver creates correct command."""
-#        archiver = archive.ZipArchiver(self.archivePreBuilder)
-#        archiver._start_archive('foo')
-#        archiver.end_archive()
-#        commands = archiver.commandList.allCommands()
-#        assert len(commands) == 1
-#        command = commands[0]
-#        assert command.executable() == 'zip.exe'
-#        assert command.cmd() == '-R . c:\\temp\\foo.zip'
-#
-#    def testZipArchiverOperation(self):
-#        """Zip archiver runs zip operation correctly."""
-#        buildFilePath = self.archivePreBuilder.createArchiveBuildFile('zip_exec.ant.xml')
-#        result = run(r'ant -f c:\temp\output\temp_build_files\zip_exec.ant.xml all -Dnumber.of.threads=1')
-#        print result
-
-def run( command ):
-    """ run the code"""
-    #print "Run command: " + command
-    ( _, stdout ) = os.popen4( command )
-    result = stdout.read()
-    return result
-
-
-if __name__ == "__main__":
-    unittest.main()
--- a/buildframework/helium/tools/common/python/lib/cpythontest/test_ats3.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1657 +0,0 @@
-# -*- encoding: latin-1 -*-
-
-#============================================================================ 
-#Name        : test_ats3.py 
-#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:
-#===============================================================================
-
-""" Testing ATS3 framework. """
-# pylint: disable-msg=E1101,C0302,w0142,w0603,R0912,F0401,R0902,R0903,R0201,W0404
-#w0142 => * and ** were used
-#w0603 => global variables used TSRC_PATH etc
-#R*    => will be fixed while refactoring
-#F0401 => pylint didn't find "path" module
-#E1101 => Mocker shows mockery
-
-
-from cStringIO import StringIO
-from pprint import pprint
-from xml.etree.ElementTree import fromstring, tostring
-from xml.etree import ElementTree as et
-import difflib
-import logging
-logging.getLogger().setLevel(logging.ERROR)
-import tempfile
-import zipfile
-import os
-import re
-import subprocess
-
-from path import path
-import amara
-import mocker
-
-from ntpath import sep as atssep
-from ntpath import sep as sossep
-
-
-import ats3
-import ats3.testconfigurator as atc
-import ats3.dropgenerator as adg
-import ats3.parsers as parser
-
-
-TEST_PATH = None
-TEST_FILES = {}
-TSRC = None
-OUTPUT = None
-
-# Shortcuts
-E = et.Element
-SE = et.SubElement
-
-class Bunch(object):
-    """ Configuration object. Argument from constructor are converted into class attributes. """
-    def __init__(self, **kwargs):
-        self.__dict__.update(kwargs)
-        
-def equal_xml(xml1, xml2):
-    """Check the equality of the given XML snippets.
-    
-    Tag name equality:
-    
-    >>> equal_xml('<a/>', '<a/>')
-    True
-    >>> equal_xml('<a/>', '<b/>')
-    False
-    
-    Attribute equality:
-    
-    >>> equal_xml('<a k="v"/>', '<a k="v"/>')
-    True
-    >>> equal_xml('<a k="v"/>', '<a k="w"/>')
-    False
-    
-    Text content equality:
-    
-    >>> equal_xml('<a>v</a>', '<a>v</a>')
-    True
-    >>> equal_xml('<a>v</a>', '<a>w</a>')
-    False
-    >>> equal_xml('<a>v</a>', '<a></a>')
-    False
-    
-    Text content equality when whitespace differs:
-    >>> equal_xml('<a>v</a>', '<a>v </a>')
-    True
-
-    Equality of child elements:
-    
-    >>> equal_xml('<a><b><c k="v"/></b></a>', '<a><b><c k="v"/></b></a>')
-    True
-    >>> equal_xml('<a><b><c k="v"/></b></a>', '<a><b><c k="w"/></b></a>')
-    False
-    >>> equal_xml('<a><b><c k="v"/>v</b></a>', '<a><b><c k="v"/>w</b></a>')
-    False
-    >>> equal_xml('<a><b><c k="v"/>v</b></a>', '<a><b><c k="v"/>v </b></a>')
-    True
-    
-    """
-    def __init__():
-        check_instance(xml1, xml2)
-    
-    def check_instance(xml1, xml2):
-        """if xml1 and xml2 are instances, converts to strings"""
-        if isinstance(xml1, basestring):
-            xml1 = fromstring(xml1)
-        if isinstance(xml2, basestring):
-            xml2 = fromstring(xml2)
-        check_tags(xml1, xml2)
-
-    def check_tags(xml1, xml2):
-        """check xml tags and text equality"""
-        if xml1.tag != xml2.tag:
-            return False
-        if xml1.attrib != xml2.attrib:
-            return False
-        if xml1.text:
-            if not xml2.text:
-                return False
-        if xml2.text:
-            if not xml1.text:
-                return False
-
-        produce_xml_children(xml1, xml2)
-
-    def produce_xml_children(xml1, xml2):
-        """checks if xml children are of same length and are equal?"""
-        if xml1.text and xml2.text and xml1.text.strip() != xml2.text.strip():
-            return False
-        if xml1.tail is not None and xml2.tail is not None:
-            if xml1.tail.strip() != xml2.tail.strip():
-                return False
-        elif xml1.tail != xml2.tail:
-            return False
-        
-        children1 = list(xml1.getchildren())
-        children2 = list(xml2.getchildren())
-        if len(children1) != len(children2):
-            return False
-        for child1, child2 in zip(children1, children2):
-            return equal_xml(child1, child2)
-    return True        
-
-
-def setup_module():
-    """ Setup test environment. """
-    global TEST_PATH, TSRC, OUTPUT
-    TEST_PATH = path(tempfile.mkdtemp())
-    OUTPUT = TEST_PATH.joinpath(r"output")
-    component = TEST_PATH
-    component.joinpath("group").makedirs()
-    for path_parts in (("tsrc", "group", "bld.inf"),
-                       ("tsrc", "group", "test.pkg"),
-                       ("tsrc", "testmodules", "file1.dll"),
-                       ("tsrc", "testmodules", "file2.dll"),
-                       ("tsrc", "data", "file1"),
-                       ("tsrc", "data", "file2"),
-                       ("tsrc", "data", "file3"),
-                       ("tsrc", "data", "mmc", "file4"),
-                       ("tsrc", "data", "c", "file5"),
-                       ("tsrc", "conf", "file1.cfg"),
-                       ("tsrc", "conf", "file2.cfg"),
-                       ("tsrc", "init", "TestFramework.ini"),
-                       ("tsrc", "custom", "prepostaction.xml"),
-                       ("tsrc", "custom", "postpostaction.xml"),
-                       # These do not have to be under 'tsrc':
-                       ("tsrc", "output", "images", "file1.fpsx"),
-                       ("tsrc", "output", "images", "file2.fpsx"),
-                       ("tsrc", "sis", "file1.sisx"),
-                       ("tsrc", "sis", "file2.sisx"),
-                       ("tsrc", "sis", "file3.sisx"),
-                       ("tsrc", "trace_init", "trace_activation_1.xml")):
-        filepath = component.joinpath(*path_parts)
-        if not filepath.parent.exists():
-            filepath.parent.makedirs()
-        filepath.touch()
-        TEST_FILES.setdefault(path_parts[1], []).append(filepath)
-    TSRC = component.joinpath("tsrc")
-    filepath = OUTPUT.joinpath("pmd", "pmd_file.pmd")
-    if not filepath.parent.exists():
-        filepath.parent.makedirs()
-    filepath.touch()
-    TEST_FILES.setdefault("pmd_file", []).append(filepath)
-    tracing = component.joinpath("tsrc", "trace_init")
-    root = E('ConfigurationFile')
-    confs = E("Configurations")
-    trace_act = SE(confs, "TraceActivation")
-    conf = SE(trace_act, "Configuration")
-    conf.set('Name', 'MCU')
-    mcu = SE(conf, "MCU")
-    sett = SE(mcu, "settings")
-    SE(sett, "timestamp")
-    root.append(confs)
-    ettree = et.ElementTree(root)
-    doc = amara.parse(et.tostring(ettree.getroot()))
-    handle = open(tracing.joinpath("trace_activation_1.xml"), "w")
-    handle.write(doc.xml(indent="yes"))
-    handle.close()
-#    tracing.writestr("trace_activation_1.xml", doc.xml(indent=u"yes"))
-    group = component.joinpath("tsrc", "group")
-    group.joinpath("bld.inf").write_text(
-        r"""
-        PRJ_TESTMMPFILES
-        stif.mmp /* xyz.mmp */ abcd.mmp
-        /*xyz.mmp*/
-        eunit.mmp /* xyz.mmp */
-        both.mmp
-        ..\sub-component\group\sub-component.mmp
-        """.replace('\\', os.sep))
-
-    group.joinpath("test.pkg").write_text(
-        r"""
-        ;Language - standard language definitions
-        &EN
-        
-        ; standard SIS file header
-        #{"BTEngTestApp"},(0x04DA27D5),1,0,0
-        
-        ;Supports Series 60 v 3.0
-        (0x101F7961), 0, 0, 0, {"Series60ProductID"}
-        
-        ;Localized Vendor Name
-        %{"BTEngTestApp"}
-        
-        ;Unique Vendor name
-        :"Nokia"
-        
-        ; Files to copy
-        "\tsrc\testmodules\file1.dll"-"c:\sys\bin\file1.dll"
-        "\tsrc\testmodules\file2.dll"-"c:\sys\bin\file2.dll"
-        "\tsrc\data\file1"-"e:\sys\bin\file1"
-        "\tsrc\data\file2"-"e:\sys\bin\file2"
-        "\tsrc\data\file3"-"e:\sys\bin\file3"
-        "\tsrc\conf\file1.cfg"-"!:\sys\bin\file1.cfg"
-        "\tsrc\conf\file2.cfg"-"!:\sys\bin\file2.cfg"
-        "\tsrc\init\TestFramework.ini"-"!:\sys\bin\TestFramework.ini"
-        "\tsrc\sis\file1.sisx"-"!:\sys\bin\file1.sisx"
-        "\tsrc\sis\file2.sisx"-"!:\sys\bin\file2.sisx"
-        """.replace('\\', os.sep))
-    group.joinpath("stif.mmp").write_text("LIBRARY stiftestinterface.lib")
-    group.joinpath("eunit.mmp").write_text("LIBRARY eunit.lib")
-    group.joinpath("both.mmp").write_text("LIBRARY stiftestinterface.lib eunit.lib")
-    init = component.joinpath("tsrc", "init")
-    
-    init.joinpath("TestFramework.ini").write_text(
-        r"""
-#     - Sets a device reset module's dll name(Reboot).
-#        + If Nokia specific reset module is not available or it is not correct one
-#          StifHWResetStub module may use as a template for user specific reset
-#          module. 
-
-[Engine_Defaults]
-
-TestReportMode= FullReport        # Possible values are: 'Empty', 'Summary', 'Environment',
-                                                               'TestCases' or 'FullReport'
-
-CreateTestReport= YES            # Possible values: YES or NO
-
-TestReportFilePath= C:\LOGS\TestFramework\
-TestReportFileName= TestReport
-
-TestReportFormat= TXT            # Possible values: TXT or HTML
-        
-        """)
-
-
-def teardown_module():
-    """ Cleanup environment after testing. """    
-    def __init__():
-        path(TEST_PATH).rmtree()
-
-# CTC related functions    
-def check_ctc_write(steps):
-    """Checks if CTC data is written on the CTC log"""
-    step = steps.next()
-    assert step.get("name") == "Save CTC data"
-    assert step.findtext("./command") == "execute"
-    params = step.findall("./params/param")
-    assert params[0].get("parameters") == "writelocal"
-    assert params[1].get("file") == path(r"z:\sys\bin\ctcman.exe")
-    step = steps.next()
-    assert step.get("name") == "Save CTC data"
-    assert step.findtext("./command") == "execute"
-    params = step.findall("./params/param")
-    assert params[0].get("parameters") == "writefile"
-    assert params[1].get("file") == path(r"z:\sys\bin\ctcman.exe")
-
-def check_ctc_log(steps, testtype=""):
-    """Fetches CTC Log"""
-    #For the ctcdata.txt to be published on the ATS network drive
-    step = steps.next()
-    assert step.get("name") == "Fetch CTC data for post commands execution" #"Fetch and clean CTC data"
-    assert step.findtext("./command") == "fetch-log"
-    params = step.findall("./params/param")
-    assert params[0].get("delete") == "false"
-    if testtype == "withpkgfiles":
-        assert params[1].get("local-path") == r"\\10.0.0.1\ctc_helium\builds\drop0\set1\ctcdata"
-    else:
-        assert params[1].get("local-path") == r"\\10.0.0.1\ctc_helium\builds\drop0\set0\ctcdata"
-    assert params[2].get("path") == path(r"c:" + os.sep + "data" + os.sep + "ctc" + os.sep + "ctcdata.txt")
-    
-    #For the ctcdata.txt to be published on the build network drive
-    step = steps.next()
-    assert step.get("name") == "Fetch and clean CTC data" #"Fetch and clean CTC data"
-    assert step.findtext("./command") == "fetch-log"
-    params = step.findall("./params/param")
-    assert params[0].get("delete") == "true"
-    assert params[1].get("path") == path(r"c:" + os.sep + "data" + os.sep + "ctc" + os.sep + "ctcdata.txt")
-
-def check_ctc_start(steps):
-    """Checks if CTC starts in ATS"""
-    step = steps.next()
-    assert step.get("name") == "Create CTC log dir"
-    assert step.findtext("./command") == "makedir"
-    params = step.findall("./params/param")
-    assert params[0].get("dir") == path(r"c:" + os.sep + "data" + os.sep + "ctc")
-    step = steps.next()
-    assert step.get("name") == "CTC start"
-    assert step.findtext("./command") == "execute"
-    params = step.findall("./params/param")
-    assert params[0].get("file") == path(r"z:\sys\bin\ctcman.exe")   
-
-def check_fetch_logs(steps):
-    """Checks fetching log directory is created"""
-    step = steps.next()
-    if "Fetch test" in step.get("name"):
-        assert step.get("name") == "Fetch test module logs"
-        assert step.findtext("./command") == "fetch-log"
-        params = step.findall("./params/param")
-        assert params[0].get("type") == "text"
-        assert params[1].get("delete") == "true"
-        if step.get("harness") == "STIF":
-            assert params[2].get("path") == path(r"c:" + os.sep + "logs" + os.sep + "testframework" + os.sep + "*")
-        elif step.get("harness") == "EUNIT":
-            assert params[2].get("path") == path(r"c:" + os.sep + "Shared" + os.sep + "EUnit" + os.sep + "logs" + os.sep + "*")
-    else:
-        step = steps.next()
-        assert step.get("name") == "Fetch test module logs"
-        assert step.findtext("./command") == "fetch-log"
-        params = step.findall("./params/param")
-        assert params[0].get("type") == "text"
-        assert params[1].get("delete") == "true"
-        assert params[2].get("path") == path(r"c:" + os.sep + "logs" + os.sep + "testframework" + os.sep + "*")  
-
-def check_diamonds_action(action):
-    """ Testing Diamonds action. """
-    assert action.findtext("./type") == "DiamondsAction"
-    assert not action.findall("./params/param") 
-
-def check_send_email_action(action, reportemail):
-    """verifies if sening email option works"""
-    assert action.findtext("./type") == "SendEmailAction"
-    params = action.findall("./params/param")
-    assert params[0].get("name") == "subject"
-    assert params[0].get("value") == "email subject"
-    assert params[1].get("name") == "type"
-    assert params[1].get("value") == "ATS3_REPORT"
-    assert params[2].get("name") == "send-files"
-    assert params[2].get("value") == "true"
-    assert params[3].get("name") == "to"
-    assert params[3].get("value") == reportemail
-    
-def check_ctc_run_process_action(action):
-    """verifies if CTC run process action works"""
-    #The parameters for this test are intended to execute on a windows machine
-    assert action.findtext("./type") == "RunProcessAction"
-    params = action.findall("./params/param")
-    assert params[0].get("name") == "file"
-    assert params[0].get("value") == "catsctc2html/catsctc2html.exe"
-    assert params[1].get("name") == "parameters"
-    assert params[1].get("value") == r"--ctcdata_files=\\10.0.0.1\ctc_helium\1234\drop0\set0\ctcdata --monsym_files=\\10.0.0.1\ctc_helium\1234\mon_syms\1\MON.sym --diamonds_build_id=1234 --drop_id=0 --total_amount_of_drops=1"
-
-def check_ats_report_action(action, filestore):
-    """verifies if sening ATS report option works"""
-    assert action.findtext("./type") == "FileStoreAction"
-    params = action.findall("./params/param")
-    assert params[0].get("name") == "to-folder"
-    assert params[0].get("value") == filestore
-    assert params[1].get("name") == "report-type"
-    assert params[1].get("value") == "ATS_REPORT"
-    assert params[2].get("name") == "date-format"
-    assert params[2].get("value") == "yyyyMMdd"
-    assert params[3].get("name") == "time-format"
-    assert params[3].get("value") == "HHmmss"
-
-def check_stif_report_action(action, filestore):
-    """verifies if sening STIF report option works"""
-    assert action.findtext("./type") == "FileStoreAction"
-    params = action.findall("./params/param")
-    assert params[0].get("name") == "to-folder"
-    assert params[0].get("value") == filestore
-    assert params[1].get("name") == "report-type"
-    assert params[1].get("value") == "STIF_COMPONENT_REPORT_ALL_CASES"
-    assert params[2].get("name") == "run-log"
-    assert params[2].get("value") == "true"
-    assert params[3].get("name") == "date-format"
-    assert params[3].get("value") == "yyyyMMdd"
-    assert params[4].get("name") == "time-format"
-    assert params[4].get("value") == "HHmmss"
-
-def check_log_dir(steps):
-    """ Test the log dir. """
-    step = steps.next()
-    if step.get("harness") is "STIF":
-        assert step.get("name") == "Create STIF log dir"
-    elif step.get("harness") is "EUNIT":
-        assert step.get("name") == "Create EUNIT log dir"
-    assert step.findtext("./command") == "makedir"
-
-def check_trace_start(steps, filestore):
-    """Checks if tracing is started on the ATS"""
-    step = steps.next()
-    assert step.get("name") == "Start tracing"
-    assert step.findtext("./command") == "trace-start"
-    params = step.findall("./params/param")
-    assert params[0].get("ta") == path(r"ATS3Drop" + os.sep + "set0" + os.sep + "trace_activation" + os.sep + "trace_activation_1.xml")
-    assert params[1].get("tgrp") == "MCU"
-    assert params[2].get("pmd") == path(r"ATS3Drop" + os.sep + "pmds" + os.sep + "pmd_file.pmd")
-    assert params[3].get("log") == filestore.joinpath("traces", "set0", "tracelog.blx")
-    assert params[4].get("timeout") == "60"
-    assert params[5].get("date-format") == "yyyyMMdd"
-    assert params[6].get("time-format") == "HHmmss"
-    
-def check_trace_end_steps(steps, filestore):
-    """ Test trace end step. """
-    step = steps.next()
-    assert step.get("name") == "Stop tracing"
-    assert step.findtext("./command") == "trace-stop"
-    params = step.findall("./params/param")
-    assert params[0].get("timeout") == "60"
-    step = steps.next()
-    assert step.get("name") == "Convert tracing"
-    assert step.findtext("./command") == "trace-convert"
-    params = step.findall("./params/param")
-    assert params[0].get("pmd") == path(r"ATS3Drop" + os.sep + "pmds" + os.sep + "pmd_file.pmd")
-    assert params[1].get("log") == filestore.joinpath("traces", "set0", "tracelog.blx")
-    assert params[2].get("timeout") == "60"
-    assert params[3].get("date-format") == "yyyyMMdd"
-    assert params[4].get("time-format") == "HHmmss"
-
-class TestTestPlan(mocker.MockerTestCase):
-    """Creates TestPlan mocker setup"""
-    def __init__(self, methodName="runTest"):
-        mocker.MockerTestCase.__init__(self, methodName)  
-          
-    def setUp(self):
-        """ Setup TestTestPlan testsuite. """
-        opts = Bunch(testrun_name="testrun", harness="STIF", 
-                     device_type="product", plan_name="ats3_test_plan",
-                     diamonds_build_url="", report_email="", file_store=path(), test_timeout="60",
-                     device_hwid="5425", trace_enabled="True", ctc_enabled="True", eunitexerunner_flags="/E S60AppEnv /R Off", 
-                     multiset_enabled=False, ctc_run_process_params=r"10.0.0.1#drop0.zip#1", monsym_files="")
-        self.atp = ats3.Ats3TestPlan(opts)
-        self.config_files = TEST_FILES["conf"]
-        self.data_files = TEST_FILES["data"]
-        self.engine_ini_file = TEST_FILES["init"][0]
-        self.image_files = TEST_FILES["output"]
-        self.sis_files = TEST_FILES["sis"]
-        self.testmodule_files = TEST_FILES["testmodules"]
-        self.ctc_enabled = self.atp["ctc_enabled"]
-        self.custom_dir = "CustomD"
-        self.eunitexerunner_flags = self.atp["eunitexerunner_flags"]
-        if self.atp["trace_enabled"].lower() == "true":
-            self.trace_activation_files = TEST_FILES["trace_init"]    
-            self.pmd_files = TEST_FILES["pmd_file"]
-        else:
-            self.trace_activation_files = []    
-            self.pmd_files = []
-        self.test_timeout = self.atp["test_timeout"]
-        self.eunitexerunner_flags = self.atp["eunitexerunner_flags"]
-        self.device_hwid = self.atp["device_hwid"]
-        self.test_harness = self.atp["harness"]
-        self.src_dst = [("" + os.sep + "tsrc" + os.sep + "testmodules" + os.sep + "file1.dll", "c:" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1.dll", "testmodule"),
-            ("" + os.sep + "tsrc" + os.sep + "testmodules" + os.sep + "file2.dll", "c:" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2.dll", "testmodule"),
-            ("" + os.sep + "tsrc" + os.sep + "data" + os.sep + "file1", "e:" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1", "data"),
-            ("" + os.sep + "tsrc" + os.sep + "data" + os.sep + "file2", "e:" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2", "data"),
-            ("" + os.sep + "tsrc" + os.sep + "data" + os.sep + "file3", "e:" + os.sep + "sys" + os.sep + "bin" + os.sep + "file3", "data"),
-            ("" + os.sep + "tsrc" + os.sep + "conf" + os.sep + "file1.cfg", "c:" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1.cfg", "conf"),
-            ("" + os.sep + "tsrc" + os.sep + "conf" + os.sep + "file2.cfg", "c:" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2.cfg", "conf"),
-            ("" + os.sep + "tsrc" + os.sep + "init" + os.sep + "TestFramework.ini", "c:" + os.sep + "sys" + os.sep + "bin" + os.sep + "TestFramework.ini", "engine_ini"),
-            ("" + os.sep + "tsrc" + os.sep + "sis" + os.sep + "file1.sisx", "c:" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1.sisx", ""),
-            ("" + os.sep + "tsrc" + os.sep + "sis" + os.sep + "file2.sisx", "c:" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2.sisx", ""),]
-        self.component_path = str(TEST_PATH.joinpath("tsrc", "group"))
-
-    def test_creation(self):
-        """ Testing creation. """        
-        assert self.atp["testrun_name"] == "testrun"
-        assert self.atp["harness"] == "STIF"
-        assert self.atp["device_type"] == "product"
-    
-    def test_insert_set(self):
-        """ Inserting a set of file. """        
-        self.atp.insert_set(data_files=self.data_files,
-                           config_files=self.config_files,
-                           engine_ini_file=self.engine_ini_file,
-                           image_files=self.image_files,
-                           testmodule_files=self.testmodule_files,
-                           test_timeout=self.test_timeout,
-                           eunitexerunner_flags=self.eunitexerunner_flags,
-                           pmd_files=self.pmd_files,                            
-                           trace_activation_files=self.trace_activation_files,
-                           component_path=self.component_path)
-        self.atp.insert_set(image_files=self.image_files,                           
-                           engine_ini_file=self.engine_ini_file,
-                           sis_files=self.sis_files,
-                           test_timeout=self.test_timeout,
-                           eunitexerunner_flags=self.eunitexerunner_flags,
-                           pmd_files=self.pmd_files,                            
-                           trace_activation_files=self.trace_activation_files,
-                           component_path=self.component_path)
-        self.atp.insert_set(data_files=self.data_files,
-                           config_files=self.config_files,
-                           engine_ini_file=self.engine_ini_file,
-                           image_files=self.image_files,
-                           testmodule_files=self.testmodule_files,
-                           test_timeout=self.test_timeout,
-                           eunitexerunner_flags=self.eunitexerunner_flags,
-                           src_dst=self.src_dst,
-                           pmd_files=self.pmd_files,                            
-                           trace_activation_files=self.trace_activation_files,
-                           component_path=self.component_path)
-        self.atp.insert_set(engine_ini_file=self.engine_ini_file,
-                           test_timeout=self.test_timeout,
-                           eunitexerunner_flags=self.eunitexerunner_flags,
-                           image_files=self.image_files,
-                           test_harness=self.test_harness,
-                           src_dst=self.src_dst,
-                           pmd_files=self.pmd_files,                            
-                           trace_activation_files=self.trace_activation_files,
-                           component_path=self.component_path)
-        self.atp.insert_set(test_timeout=self.test_timeout,      
-                           eunitexerunner_flags=self.eunitexerunner_flags,               
-                           image_files=self.image_files,                        
-                           test_harness=self.test_harness,                      
-                           src_dst=self.src_dst,                                
-                           pmd_files=self.pmd_files,                            
-                           trace_activation_files=self.trace_activation_files,
-                           component_path=self.component_path)  
-
-        assert self.atp.sets[0] == dict(name="set0",
-                                       data_files=self.data_files,
-                                       config_files=self.config_files,
-                                       engine_ini_file=self.engine_ini_file,
-                                       image_files=self.image_files,
-                                       testmodule_files=self.testmodule_files,
-                                       test_timeout=self.test_timeout,
-                                       eunitexerunner_flags=self.eunitexerunner_flags,
-                                       test_harness=self.test_harness,
-                                       src_dst=[],
-                                       pmd_files=self.pmd_files,
-                                       trace_path=self.atp.file_store.joinpath(u"§RUN_NAME§" + os.sep + u"§RUN_START_DATE§_§RUN_START_TIME§", "traces", "set0", "tracelog.blx"),
-                                       trace_activation_files=self.trace_activation_files,
-                                       ctc_enabled=self.atp["ctc_enabled"],
-                                       custom_dir=None,
-                                       component_path=self.component_path)
-        assert self.atp.sets[1] == dict(name="set1",
-                                       image_files=self.image_files,
-                                       engine_ini_file=self.engine_ini_file,
-                                       sis_files=self.sis_files,
-                                       test_timeout=self.test_timeout,
-                                       eunitexerunner_flags=self.eunitexerunner_flags,
-                                       test_harness=self.test_harness,
-                                       pmd_files=self.pmd_files,
-                                       trace_path=self.atp.file_store.joinpath(u"§RUN_NAME§" + os.sep + u"§RUN_START_DATE§_§RUN_START_TIME§", "traces", "set1", "tracelog.blx"),
-                                       trace_activation_files=self.trace_activation_files,
-                                       ctc_enabled=self.atp["ctc_enabled"],
-                                       custom_dir=None,
-                                       component_path=self.component_path)
-
-        assert self.atp.sets[2] == dict(name="set2",
-                                       data_files=self.data_files,
-                                       config_files=self.config_files,
-                                       engine_ini_file=self.engine_ini_file,
-                                       image_files=self.image_files,
-                                       testmodule_files=self.testmodule_files,
-                                       test_timeout=self.test_timeout,
-                                       eunitexerunner_flags=self.eunitexerunner_flags,
-                                       test_harness=self.test_harness,
-                                       src_dst=self.src_dst,
-                                       pmd_files=self.pmd_files,
-                                       trace_path=self.atp.file_store.joinpath(u"§RUN_NAME§" + os.sep + u"§RUN_START_DATE§_§RUN_START_TIME§", "traces", "set2", "tracelog.blx"),
-                                       trace_activation_files=self.trace_activation_files,
-                                       ctc_enabled=self.atp["ctc_enabled"],
-                                       custom_dir=None,
-                                       component_path=self.component_path)
-        assert self.atp.sets[3] == dict(name="set3",
-                                       data_files=[],
-                                       config_files=[],
-                                       engine_ini_file=self.engine_ini_file,
-                                       image_files=self.image_files,
-                                       testmodule_files=[],
-                                       test_timeout=self.test_timeout,
-                                       eunitexerunner_flags=self.eunitexerunner_flags,
-                                       test_harness=self.test_harness,
-                                       src_dst=self.src_dst,
-                                       pmd_files=self.pmd_files,
-                                       trace_path=self.atp.file_store.joinpath(u"§RUN_NAME§" + os.sep + u"§RUN_START_DATE§_§RUN_START_TIME§", "traces", "set3", "tracelog.blx"),
-                                       trace_activation_files=self.trace_activation_files,
-                                       ctc_enabled=self.atp["ctc_enabled"],
-                                       custom_dir=None,
-                                       component_path=self.component_path)
-
-        assert self.atp.sets[4] == dict(name="set4",
-                                       data_files=[],
-                                       config_files=[],
-                                       engine_ini_file=None,
-                                       image_files=self.image_files,
-                                       testmodule_files=[],
-                                       test_timeout=self.test_timeout,
-                                       eunitexerunner_flags=self.eunitexerunner_flags,
-                                       test_harness=self.test_harness,
-                                       src_dst=self.src_dst,
-                                       pmd_files=self.pmd_files,
-                                       trace_path=self.atp.file_store.joinpath(u"§RUN_NAME§" + os.sep + u"§RUN_START_DATE§_§RUN_START_TIME§", "traces", "set4", "tracelog.blx"),
-                                       trace_activation_files=self.trace_activation_files,
-                                       ctc_enabled=self.atp["ctc_enabled"],
-                                       custom_dir=None,
-                                       component_path=self.component_path)
-        
-    def test_post_actions_email(self):
-        """ Testing the send email post-action. """        
-        assert not self.atp.post_actions
-        receiver = "joe.average@example.com"
-        self.atp.report_email = receiver
-        assert len(self.atp.post_actions) == 1
-        action, items = self.atp.post_actions[0]
-        items = dict(items)
-        assert action == "SendEmailAction"
-        assert items["to"] == receiver
-    
-    def test_post_actions_ats3_report_only(self):
-        """ Testing the ats3 report only post-action. """        
-        file_store = path("path/to/files")
-        self.atp.file_store = file_store
-        self.atp.harness = "EUNIT"
-        assert len(self.atp.post_actions) == 2
-        action, items = self.atp.post_actions[0]
-        items = dict(items)
-        assert action == "FileStoreAction"
-        assert items["report-type"] == "ATS3_REPORT"
-        assert items["to-folder"].startswith(file_store)
-        assert items["to-folder"].endswith("ATS3_REPORT")
-    
-    def test_post_actions_stif(self):
-        """ Testing STIF post-actions. """        
-        file_store = path("path/to/files")
-        self.atp.file_store = file_store
-        assert len(self.atp.post_actions) == 2
-        action, items = self.atp.post_actions[1]
-        items = dict(items)
-        assert action == "FileStoreAction"
-        assert items["report-type"] == "STIF_COMPONENT_REPORT_ALL_CASES"
-        assert items["to-folder"].startswith(file_store)
-        assert items["to-folder"].endswith("STIF_REPORT")
-        
-    def test_post_actions_diamonds(self):
-        """ Testing Diamonds post-actions. """        
-        self.atp.diamonds_build_url = "http://diamonds.nmp.company.com/diamonds/builds/1234"
-        assert len(self.atp.post_actions) == 1
-        action, items = self.atp.post_actions[0]
-        assert action == "DiamondsAction"
-        assert not items
-
-
-class TestComponentParser(mocker.MockerTestCase):
-    """ Testing the Ats3ComponentParser component parser. """
-    
-    def __init__(self, methodName="runTest"):
-        mocker.MockerTestCase.__init__(self, methodName)
-    
-    def assert_paths(self, path1, path2):
-        """ Checking the path. Validates that path1 and path2 are instance of path and they are equals. """
-        if not isinstance(path1, path):
-            path1 = path(path1)
-        if not isinstance(path2, path):
-            path2 = path(path2)            
-        return self.assertEqual(path1.normpath(), path2.normpath())
-    
-    def setUp(self):
-        """ Setting up TestComponentParser testsuite."""
-        opts = Bunch(build_drive=path(TEST_PATH+os.sep), target_platform="target platform", eunitexerunner_flags="/E S60AppEnv /R Off",
-                     data_dir=["data"], flash_images=[], sis_files=[], test_timeout="60", harness="STIF", trace_enabled="True")
-        self.acp = atc.Ats3ComponentParser(opts)
-        self.acp.tsrc_dir = TSRC
-      
-    def test_detect_dlls(self):
-        """ Testing dlls detection. """
-        # Setup mock objects.
-        logging.getLogger().setLevel(logging.DEBUG)
-        process = self.mocker.mock()
-        process.communicate()
-        self.mocker.result(["lib1.dll\npath/to/another/library.dll\nsome/other/file.txt\nlib2.dll\nlib3.dll\n"])
-        obj = self.mocker.replace("subprocess.Popen")
-        obj("abld -w test build target platform", shell=True, stdout=subprocess.PIPE)
-        self.mocker.result(process)
-        
-        exists = self.mocker.replace("os.path.exists")
-        exists()
-        self.mocker.result(True)
-        exists()
-        self.mocker.result(True)
-        exists()
-        self.mocker.result(True)
-        exists()
-        self.mocker.result(False)
-        
-        self.mocker.replay()
-        
-        self.assertEqual([u"lib1.dll", u"library.dll", u"lib2.dll"],
-                         [dll.name for dll in self.acp.tsrc_dll_files()])
-        logging.getLogger().setLevel(logging.ERROR)
-
-    def test_harness(self):
-        """ Detect test harness."""
-        mmp_parser = parser.MmpFileParser()
-        group = TSRC.joinpath("group")
-        for harness, mmp in [
-            ("STIF", group / "stif.mmp"),
-            ("EUNIT", group / "eunit.mmp"),
-            ("STIF", group / "both.mmp"),
-            ]:
-            self.assertEqual(harness, mmp_parser.get_harness(mmp))
-
-class TestXMLGeneration(mocker.MockerTestCase):
-    """
-    Unit tests for the test.xml generation.
-    """
-    def __init__(self, methodName="runTest"):
-        mocker.MockerTestCase.__init__(self, methodName)
-        self.data_files = None
-        self.config_files = None
-        self.testmodule_files = None
-        self.image_files = None
-        self.engine_ini_file = None
-        self.report_email = None
-        self.file_store = None
-        self.diamonds_build_url = None
-        self.test_harness = None     
-        self.src_dst = []
-        self.trace_enabled = None
-        self.pmd_files = None
-        self.trace_activation_files = None
-        self.ctc_enabled = None
-        self.eunitexerunner_flags = None
-        self.test_plan = None
-        self.gen = None
-        self.custom_dir = None
-            
-    def generate_xml(self, trace_enabled="False"):
-        """ Generating the XML. """
-        def files(*paths):
-            """creating tsrc path list"""
-            return [TEST_PATH.joinpath("tsrc", tpath) for tpath in paths]
-        self.testmodule_files = files("testmodules/file1.dll", "testmodules/file2.dll")
-        self.data_files = files("data/file1", "data/file2", "data/file3")
-        self.config_files = files("conf/file1.cfg", "conf/file2.cfg")
-        self.image_files = files("output/images/file1.fpsx", "output/images/file2.fpsx")
-        self.engine_ini_file = files("init/TestFramework.ini")[0]
-        self.report_email = "test.receiver@company.com"
-        self.file_store = path(r"path/to/reports")
-        self.diamonds_build_url = "http://diamonds.nmp.company.com/diamonds/builds/1234"
-        self.test_harness = "STIF"        
-        self.src_dst = []
-        self.trace_enabled = trace_enabled
-        self.pmd_files = TEST_FILES["pmd_file"]
-        self.trace_activation_files = files("trace_init/trace_activation_1.xml")
-        self.ctc_enabled = "True"
-        self.eunitexerunner_flags = "/E S60AppEnv /R Off"
-        self.custom_dir = "CustomB"
-        self.component_path = str(TEST_PATH.joinpath("tsrc", "group"))
-        self.ctc_run_process_params = r"10.0.0.1#x:\ats\drop0.zip#1"
-        
-        self.ctc_network = self.ctc_run_process_params.rsplit("#", 2)[0]
-        self.drop_id = re.findall(".*drop(\d*).zip.*", self.ctc_run_process_params.lower())[0] #extracting int part of drop name
-        self.drop_count = self.ctc_run_process_params.rsplit("#", 1)[1]
-        self.diamonds_id = self.diamonds_build_url.rsplit(r"/", 1)[1]
-
-        self.mocker.restore()
-        test_plan = self.mocker.mock(count=False)
-        mocker.expect(test_plan["testrun_name"]).result("test")
-        mocker.expect(test_plan["harness"]).result("STIF")
-        mocker.expect(test_plan["device_type"]).result("product")
-        mocker.expect(test_plan["plan_name"]).result("test plan")
-        mocker.expect(test_plan["diamonds_build_url"]).result(self.diamonds_build_url)
-        mocker.expect(test_plan["test_timeout"]).result("60")
-        mocker.expect(test_plan["eunitexerunner_flags"]).result("/E S60AppEnv /R Off")
-        mocker.expect(test_plan["device_hwid"]).result("5425")
-        mocker.expect(test_plan["custom_dir"]).result("custom")
-        mocker.expect(test_plan.custom_dir).result(path(r"self.custom_dir"))
-        
-        mocker.expect(test_plan["ctc_run_process_params"]).result(self.ctc_run_process_params)
-                
-        if self.trace_enabled.lower() == "true":
-            mocker.expect(test_plan["trace_enabled"]).result("True")
-        else:
-            mocker.expect(test_plan["trace_enabled"]).result("False")
-        if self.trace_enabled == "False":
-            mocker.expect(test_plan.sets).result([
-                dict(name="set0", image_files=self.image_files, data_files=self.data_files,
-                     config_files=self.config_files, testmodule_files=self.testmodule_files,
-                     engine_ini_file=self.engine_ini_file, test_harness="STIF", src_dst=self.src_dst,
-                     ctc_enabled=self.ctc_enabled, eunitexerunner_flags=self.eunitexerunner_flags,
-                     custom_dir=self.custom_dir, component_path=self.component_path),
-                dict(name="set1", image_files=self.image_files, data_files=self.data_files,
-                     config_files=self.config_files, testmodule_files=self.testmodule_files,
-                     engine_ini_file=self.engine_ini_file,test_harness="STIF", src_dst=self.src_dst,
-                     ctc_enabled=self.ctc_enabled, eunitexerunner_flags=self.eunitexerunner_flags,
-                     custom_dir=self.custom_dir, component_path=self.component_path),
-            ])
-        elif self.trace_enabled == "True":
-            mocker.expect(test_plan.sets).result([
-                dict(name="set0", image_files=self.image_files, data_files=self.data_files,
-                     config_files=self.config_files, testmodule_files=self.testmodule_files,
-                     engine_ini_file=self.engine_ini_file, test_harness="STIF", src_dst=self.src_dst,
-                     pmd_files=self.pmd_files, trace_activation_files=self.trace_activation_files,
-                     trace_path=self.file_store.joinpath("traces", "set0", "tracelog.blx"),
-                     ctc_enabled=self.ctc_enabled, eunitexerunner_flags=self.eunitexerunner_flags, component_path=self.component_path),
-                dict(name="set1", image_files=self.image_files, data_files=self.data_files,
-                     config_files=self.config_files, testmodule_files=self.testmodule_files,
-                     engine_ini_file=self.engine_ini_file,test_harness="STIF", src_dst=self.src_dst,
-                     pmd_files=self.pmd_files, trace_activation_files=self.trace_activation_files,
-                     trace_path=self.file_store.joinpath("traces", "set1", "tracelog.blx"),
-                     ctc_enabled=self.ctc_enabled, eunitexerunner_flags=self.eunitexerunner_flags, component_path=self.component_path),
-            ])
-
-        ctc_file_name = "catsctc2html/catsctc2html.exe"
-        ctc_data_path = str(os.path.normpath(r"\\%s\ctc_helium\%s\drop0\set0\ctcdata" % (self.ctc_network, self.diamonds_id)))
-        mon_files = str(os.path.normpath(r"\\%s\ctc_helium\%s\mon_syms\1\MON.sym" % (self.ctc_network, self.diamonds_id)))
-        self.ctc_test_data = [ctc_file_name, self.ctc_network, self.drop_id, self.drop_count, self.diamonds_id, ctc_data_path, mon_files] 
-        
-        mocker.expect(test_plan.post_actions).result([
-            ("RunProcessAction", (("file", ctc_file_name ),
-                                  ("parameters", r"--ctcdata_files=" + ctc_data_path + " --monsym_files=" + mon_files + " --diamonds_build_id=" + self.diamonds_id + " --drop_id=" + self.drop_id + " --total_amount_of_drops=" + self.drop_count ))),
-            ("SendEmailAction", (("subject", "email subject"),
-                                 ("type", "ATS3_REPORT"),
-                                 ("send-files", "true"),
-                                 ("to", self.report_email))),
-            ("FileStoreAction", (("to-folder", self.file_store),
-                                 ("report-type", "ATS_REPORT"),
-                                 ("date-format", "yyyyMMdd"),
-                                 ("time-format", "HHmmss"))),
-            ("FileStoreAction", (("to-folder", self.file_store),
-                                 ("report-type", "STIF_COMPONENT_REPORT_ALL_CASES"),
-                                 ("run-log", "true"),
-                                 ("date-format", "yyyyMMdd"),
-                                 ("time-format", "HHmmss"))),
-            ("DiamondsAction", ())
-        ])
-        
-        self.mocker.replay()
-        self.test_plan = test_plan
-        
-        self.gen = adg.Ats3TestDropGenerator()
-        return self.gen.generate_xml(test_plan)
-
-    def test_basic_structure(self):
-        """ Check that the overall test.xml structure is valid. """
-        xml = self.generate_xml()
-        # Check basics.
-        assert xml.find(".").tag == "test"
-        assert xml.find("./name").text == "test"
-        assert xml.find("./buildid").text == self.diamonds_build_url
-        assert xml.find("./target").tag
-        assert xml.find("./target/device").tag
-        harness, type_, device_hwid = xml.findall("./target/device/property")
-        assert harness.get("value") == "STIF"
-        assert type_.get("value") == "product"
-        assert device_hwid.get("value") == "5425"
-        
-        # Check generation of the test plan.
-        assert xml.find("./plan").get("name") == "test Plan"
-        assert xml.find("./plan/session").tag 
-        sets = xml.findall("./plan/session/set")
-        assert len(sets) == 2
-        assert sets[0].get("name") == "set0-"+str(TEST_PATH.joinpath("tsrc", "group"))
-        assert sets[0].find("./target/device").tag
-    
-    def test_set_structure(self):
-        """ Check that a <set> element's structure is valid. """
-        xml = self.generate_xml()
-        tstset = xml.find("./plan/session/set")
-        assert tstset.tag
-        case = tstset.find("./case")
-        assert case.tag
-        assert case.get("name") == "set0 case"
-        
-    def test_case_flash_elems(self):
-        """ Test case flash elems. """
-        xml = self.generate_xml()
-        case = xml.find("./plan/session/set/case")
-        flashes = case.findall("./flash")
-        assert len(flashes) == len(self.image_files)
-        for i, flash_file in enumerate(self.image_files):
-            assert flashes[i].get("target-alias") == "DEFAULT_STIF"
-            assert flashes[i].get("images") == path(r"ATS3Drop" + os.sep + "images") / flash_file.name
-        
-    def test_case_steps(self):
-        """ Test case steps. """
-        xml = self.generate_xml()
-        steps = iter(xml.findall("./plan/session/set/case/step"))
-        check_ctc_start(steps)
-        check_log_dir(steps)
-        self.check_install_data(steps)
-        self.check_install_configuration(steps)
-        self.check_install_tmodules(steps)
-        self.check_install_engine_ini(steps)
-        self.check_run_cases(steps)
-        check_ctc_write(steps)
-        check_ctc_log(steps)
-        check_fetch_logs(steps)
-
-    def check_install_data(self, steps):
-        """ Test install data. """
-        for filename in self.data_files:
-            step = steps.next()
-            assert step.get("name") == "Install data: %s" % filename.name
-            assert step.findtext("./command") == "install"
-            params = step.findall("./params/param")            
-            src = params[0].get("src")
-            assert src.name == filename.name
-            assert src.parent == path(r"ATS3Drop" + os.sep + "set0" + os.sep + "data")            
-            dst = params[1].get("dst")
-            assert dst.name == filename.name
-            assert dst.parent == path(r"e:\testing\data")
-    
-    def check_install_configuration(self, steps):
-        """ Test install configuration. """
-        for filepath in self.config_files:
-            step = steps.next()
-            assert step.get("name") == "Install conf: %s" % filepath.name
-            assert step.findtext("./command") == "install"
-            params = step.findall("./params/param")
-            assert params[0].get("src") == path(r"ATS3Drop" + os.sep + "set0" + os.sep + "conf") / filepath.name
-            assert params[1].get("dst") == path(r"e:\testing\conf") / filepath.name
-
-    def check_install_tmodules(self, steps):
-        """ Test install tmodules. """
-        for filepath in self.testmodule_files:
-            step = steps.next()
-            assert step.get("name") == "Install testmodule: %s" % filepath.name
-            assert step.findtext("./command") == "install"
-            params = step.findall("./params/param")
-            assert params[0].get("src") == path(r"ATS3Drop" + os.sep + "set0" + os.sep + "testmodules") / filepath.name
-            assert params[1].get("dst") == path(r"c:\sys\bin") / filepath.name            
-    
-    def check_install_engine_ini(self, steps):
-        """ Test install engine ini. """
-        filepath = self.engine_ini_file
-        step = steps.next()
-        assert step.get("name") == "Install engine_ini: %s" % filepath.name
-        assert step.findtext("./command") == "install"
-        params = step.findall("./params/param")
-        assert params[0].get("src") == path(r"ATS3Drop" + os.sep + "set0" + os.sep + "init") / filepath.name
-        assert params[1].get("dst") == path(r"c:" + os.sep + "testframework") / filepath.name
-    
-    def check_run_cases(self, steps):
-        """ Test run cases. """
-        step = steps.next()
-        filepath = self.engine_ini_file
-        assert step.get("name") == "Execute test: %s" % filepath.name
-        assert step.findtext("./command") == "run-cases"
-        params = step.findall("./params/param")
-        assert params[0].get("filter") == "*"
-        assert params[1].get("timeout") == "60"
-        assert params[2].get("engineini") == path(r"c:" + os.sep + "testframework") / self.engine_ini_file.name
-
-    def test_steps_trace_enabled(self):
-        """ Test steps trace enabled. """
-        xml = self.generate_xml(trace_enabled="True")
-        steps = iter(xml.findall("./plan/session/set/case/step"))
-        check_ctc_start(steps)
-        check_log_dir(steps)
-        self.check_install_data(steps)
-        self.check_install_configuration(steps)
-        self.check_install_tmodules(steps)
-        self.check_install_engine_ini(steps)
-        check_trace_start(steps, self.file_store)
-        self.check_run_cases(steps)
-        check_trace_end_steps(steps, self.file_store)
-        check_ctc_write(steps)
-        check_ctc_log(steps)
-        check_fetch_logs(steps) 
-    
-    def test_post_actions(self):
-        """ Post actions are inserted into XML. """
-        xml = self.generate_xml()        
-        post_actions = xml.findall("./postAction")
-        check_ctc_run_process_action(post_actions[0])
-        check_send_email_action(post_actions[1], self.report_email)
-        check_ats_report_action(post_actions[2], self.file_store)
-        check_stif_report_action(post_actions[3], self.file_store)
-        check_diamonds_action(post_actions[4])
-    
-    def test_files(self):
-        """ Testing files. """
-        xml = self.generate_xml()
-        files = iter(xml.findall("./files/file"))
-        assert files.next().text == r"ATS3Drop" + os.sep + "images" + os.sep + "file1.fpsx"
-        assert files.next().text == r"ATS3Drop" + os.sep + "images" + os.sep + "file2.fpsx"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "data" + os.sep + "file1"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "data" + os.sep + "file2"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "data" + os.sep + "file3"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "conf" + os.sep + "file1.cfg"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "conf" + os.sep + "file2.cfg"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "testmodules" + os.sep + "file1.dll"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "testmodules" + os.sep + "file2.dll"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "init" + os.sep + "TestFramework.ini"        
-        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "data" + os.sep + "file1"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "data" + os.sep + "file2"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "data" + os.sep + "file3"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "conf" + os.sep + "file1.cfg"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "conf" + os.sep + "file2.cfg"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "testmodules" + os.sep + "file1.dll"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "testmodules" + os.sep + "file2.dll"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "init" + os.sep + "TestFramework.ini"        
-        self.assertRaises(StopIteration, files.next)
-        xml = self.generate_xml(trace_enabled="True")
-        files = iter(xml.findall("./files/file"))
-        assert files.next().text == r"ATS3Drop" + os.sep + "images" + os.sep + "file1.fpsx"
-        assert files.next().text == r"ATS3Drop" + os.sep + "images" + os.sep + "file2.fpsx"
-        assert files.next().text == r"ATS3Drop" + os.sep + "pmds" + os.sep + "pmd_file.pmd"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "data" + os.sep + "file1"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "data" + os.sep + "file2"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "data" + os.sep + "file3"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "conf" + os.sep + "file1.cfg"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "conf" + os.sep + "file2.cfg"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "testmodules" + os.sep + "file1.dll"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "testmodules" + os.sep + "file2.dll"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "init" + os.sep + "TestFramework.ini"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "trace_init" + os.sep + "trace_activation_1.xml"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "data" + os.sep + "file1"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "data" + os.sep + "file2"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "data" + os.sep + "file3"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "conf" + os.sep + "file1.cfg"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "conf" + os.sep + "file2.cfg"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "testmodules" + os.sep + "file1.dll"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "testmodules" + os.sep + "file2.dll"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "init" + os.sep + "TestFramework.ini"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "trace_init" + os.sep + "trace_activation_1.xml"        
-        self.assertRaises(StopIteration, files.next)
-        
-    def test_generate_drop(self):
-        """ Manifest for ATS3Drop directory structure is generated. """
-        xml = self.generate_xml()
-        strbuffer = StringIO()
-        
-        self.gen.generate_drop(self.test_plan, xml, strbuffer)
-        zfile = zipfile.ZipFile(strbuffer, "r")
-        try:
-            contents = sorted(path(tpath).normpath() for tpath in zfile.namelist())
-            expected = sorted(path(tpath).normpath()
-                           for tpath in [r"ATS3Drop" + os.sep + "set0" + os.sep + "conf" + os.sep + "file1.cfg",
-                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "conf" + os.sep + "file2.cfg",
-                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "data" + os.sep + "file1",
-                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "data" + os.sep + "file2",
-                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "data" + os.sep + "file3",
-                                     r"ATS3Drop" + os.sep + "images" + os.sep + "file1.fpsx",
-                                     r"ATS3Drop" + os.sep + "images" + os.sep + "file2.fpsx",
-                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "init" + os.sep + "TestFramework.ini",
-                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "testmodules" + os.sep + "file1.dll",
-                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "testmodules" + os.sep + "file2.dll",
-                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "conf" + os.sep + "file1.cfg",
-                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "conf" + os.sep + "file2.cfg",
-                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "data" + os.sep + "file1",
-                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "data" + os.sep + "file2",
-                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "data" + os.sep + "file3",
-                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "init" + os.sep + "TestFramework.ini",
-                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "testmodules" + os.sep + "file1.dll",
-                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "testmodules" + os.sep + "file2.dll",
-                                     r"test.xml"])
-            diff = difflib.context_diff(expected, contents)
-            assert contents == expected, "\n".join(diff)
-        finally:
-            zfile.close()
-
-    def test_generate_drop_trace (self):
-        "Manifest for ATS3Drop directory structure is generated when trace enabled."
-        xml = self.generate_xml(trace_enabled="True")
-        strbuffer = StringIO()
-        
-        self.gen.generate_drop(self.test_plan, xml, strbuffer)
-        zfile = zipfile.ZipFile(strbuffer, "r")
-        try:
-            contents = sorted(path(tpath).normpath() for tpath in zfile.namelist())
-            expected = sorted(path(tpath).normpath()
-                           for tpath in [r"ATS3Drop" + os.sep + "set0" + os.sep + "conf" + os.sep + "file1.cfg",
-                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "conf" + os.sep + "file2.cfg",
-                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "data" + os.sep + "file1",
-                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "data" + os.sep + "file2",
-                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "data" + os.sep + "file3",
-                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "trace_init" + os.sep + "trace_activation_1.xml",
-                                     r"ATS3Drop" + os.sep + "images" + os.sep + "file1.fpsx",
-                                     r"ATS3Drop" + os.sep + "images" + os.sep + "file2.fpsx",
-                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "init" + os.sep + "TestFramework.ini",
-                                     r"ATS3Drop" + os.sep + "pmds" + os.sep + "pmd_file.pmd",
-                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "testmodules" + os.sep + "file1.dll",
-                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "testmodules" + os.sep + "file2.dll",
-                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "conf" + os.sep + "file1.cfg",
-                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "conf" + os.sep + "file2.cfg",
-                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "data" + os.sep + "file1",
-                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "data" + os.sep + "file2",
-                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "data" + os.sep + "file3",
-                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "trace_init" + os.sep + "trace_activation_1.xml",
-                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "init" + os.sep + "TestFramework.ini",
-                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "testmodules" + os.sep + "file1.dll",
-                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "testmodules" + os.sep + "file2.dll",
-                                     r"test.xml"])
-            diff = difflib.context_diff(expected, contents)
-            assert contents == expected, "\n".join(diff)
-        finally:
-            zfile.close()
-
-
-class TestXMLGenerationWithPKG(mocker.MockerTestCase):
-    """
-    Unit tests for the test.xml generation.
-    """
-    def __init__(self, methodName="runTest"):
-        mocker.MockerTestCase.__init__(self, methodName)
-        self.src_dst1 = []
-        self.data_files = None
-        self.config_files = None
-        self.testmodule_files = None
-        self.image_files = None
-        self.engine_ini_file = None
-        self.report_email = None
-        self.file_store = None
-        self.diamonds_build_url = None
-        self.trace_enabled = None
-        self.pmd_files = None
-        self.trace_activation_files = None
-        self.ctc_enabled = None
-        self.eunitexerunner_flags = None
-        self.test_plan = None
-        self.gen = None
-        self.src_dst0 = []
-        self.custom_dir = None
-        
-    def generate_xml(self, harness, trace_enabled="False"):
-        """Generates XML"""
-        def files(*paths):
-            """generates paths for the files"""
-            return [TEST_PATH.joinpath("tsrc", tpath) for tpath in paths]
-        self.src_dst1 = []
-        self.data_files = files("data/file1", "data/file2", "data/file3")
-        self.config_files = files("conf/file1.cfg", "conf/file2.cfg")
-        self.testmodule_files = files("testmodules/file1.dll", "testmodules/file2.dll")
-        self.image_files = files("output/images/file1.fpsx", "output/images/file2.fpsx")
-        self.engine_ini_file = files("init/TestFramework.ini")[0]
-        self.report_email = "test.receiver@company.com"
-        self.file_store = path("path/to/reports")
-        self.diamonds_build_url = "http://diamonds.nmp.company.com/diamonds/builds/1234"
-        self.trace_enabled = trace_enabled
-        self.pmd_files = TEST_FILES["pmd_file"]
-        self.trace_activation_files = files("trace_init/trace_activation_1.xml")
-        self.ctc_enabled = "True"
-        self.eunitexerunner_flags = "/E S60AppEnv /R Off"
-        self.custom_dir = "custom"
-        self.custom_files = files("custom/postpostaction.xml", "custom/prepostaction.xml")
-        self.component_path = str(TEST_PATH.joinpath("tsrc", "group"))
-        self.ctc_run_process_params = r"10.0.0.1#drop0.zip#1"
-        
-        
-        self.src_dst0 = [
-            (TEST_PATH.joinpath(r"tsrc" + os.sep + "testmodules" + os.sep + "file1.dll"), path(r"c:" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1.dll"), "testmodule"),
-            (TEST_PATH.joinpath(r"tsrc" + os.sep + "testmodules" + os.sep + "file2.dll"), path(r"c:" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2.dll"), "testmodule"),
-            (TEST_PATH.joinpath(r"tsrc" + os.sep + "data" + os.sep + "file1"), path(r"e:" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1"), "data"),
-            (TEST_PATH.joinpath(r"tsrc" + os.sep + "data" + os.sep + "file2"), path(r"e:" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2"), "data"),
-            (TEST_PATH.joinpath(r"tsrc" + os.sep + "data" + os.sep + "file3"), path(r"e:" + os.sep + "sys" + os.sep + "bin" + os.sep + "file3"), "data"),
-            ]
-        if harness == "STIF" or harness == "MULTI_HARNESS":
-            harness0 = harness1 = "STIF"
-            if "MULTI_HARNESS" in harness:
-                harness1 = "EUNIT"
-                self.src_dst1 = [
-                    (TEST_PATH.joinpath(r"tsrc" + os.sep + "testmodules" + os.sep + "file1.dll"), path(r"c:" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1.dll"), "testmodule"),
-                    (TEST_PATH.joinpath(r"tsrc" + os.sep + "testmodules" + os.sep + "file2.dll"), path(r"c:" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2.dll"), "testmodule"),
-                    (TEST_PATH.joinpath(r"tsrc" + os.sep + "data" + os.sep + "file1"), path(r"e:" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1"), "data"),
-                    (TEST_PATH.joinpath(r"tsrc" + os.sep + "data" + os.sep + "file2"), path(r"e:" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2"), "data"),
-                    (TEST_PATH.joinpath(r"tsrc" + os.sep + "data" + os.sep + "file3"), path(r"e:" + os.sep + "sys" + os.sep + "bin" + os.sep + "file3"), "data"),
-                    ] 
-            self.src_dst0 = [
-                (TEST_PATH.joinpath(r"tsrc" + os.sep + "testmodules" + os.sep + "file1.dll"), path(r"c:" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1.dll"), "testmodule"),
-                (TEST_PATH.joinpath(r"tsrc" + os.sep + "testmodules" + os.sep + "file2.dll"), path(r"c:" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2.dll"), "testmodule"),
-                (TEST_PATH.joinpath(r"tsrc" + os.sep + "data" + os.sep + "file1"), path(r"e:" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1"), "data"),
-                (TEST_PATH.joinpath(r"tsrc" + os.sep + "data" + os.sep + "file2"), path(r"e:" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2"), "data"),
-                (TEST_PATH.joinpath(r"tsrc" + os.sep + "data" + os.sep + "file3"), path(r"e:" + os.sep + "sys" + os.sep + "bin" + os.sep + "file3"), "data"),
-                (TEST_PATH.joinpath(r"tsrc" + os.sep + "conf" + os.sep + "file1.cfg"), path(r"c:" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1.cfg"), "conf"),
-                (TEST_PATH.joinpath(r"tsrc" + os.sep + "conf" + os.sep + "file2.cfg"), path(r"c:" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2.cfg"), "conf"),
-                (TEST_PATH.joinpath(r"tsrc" + os.sep + "init" + os.sep + "TestFramework.ini"), path(r"c:" + os.sep + "sys" + os.sep + "bin" + os.sep + "TestFramework.ini"), "engine_ini"),
-                ]
-            if "STIF" in harness:
-                self.src_dst1 = self.src_dst0
-            
-        elif harness == "EUNIT":
-            harness0 = harness1 = harness
-            self.src_dst1 = self.src_dst0
-            
-        self.mocker.restore()
-        test_plan = self.mocker.mock(count=False)
-        mocker.expect(test_plan["testrun_name"]).result("test")
-        mocker.expect(test_plan["harness"]).result(harness)
-        mocker.expect(test_plan["device_type"]).result("product")
-        mocker.expect(test_plan["plan_name"]).result("test plan")
-        mocker.expect(test_plan["diamonds_build_url"]).result(self.diamonds_build_url)
-        mocker.expect(test_plan["test_timeout"]).result("60")
-        mocker.expect(test_plan["eunitexerunner_flags"]).result("/E S60AppEnv /R Off")
-        mocker.expect(test_plan["eunitexerunner?flags"]).result(self.eunitexerunner_flags)
-        mocker.expect(test_plan["device_hwid"]).result("5425")
-        mocker.expect(test_plan["trace_enabled"]).result(self.trace_enabled)
-        mocker.expect(test_plan["ctc_enabled"]).result(self.ctc_enabled)
-        mocker.expect(test_plan["custom_dir"]).result("custom1A")
-        mocker.expect(test_plan.custom_dir).result(path(r"self.custom_dir"))
-        mocker.expect(test_plan["ctc_run_process_params"]).result(self.ctc_run_process_params)
-        if self.trace_enabled == "False":
-            mocker.expect(test_plan.sets).result([
-                dict(name="set0", image_files=self.image_files, data_files=self.data_files,
-                     config_files=self.config_files, testmodule_files=self.testmodule_files,
-                     engine_ini_file=self.engine_ini_file, test_harness=harness0,src_dst=self.src_dst0,
-                     ctc_enabled=self.ctc_enabled, eunitexerunner_flags=self.eunitexerunner_flags,
-                     custom_dir = self.custom_dir, component_path=self.component_path),
-                dict(name="set1", image_files=self.image_files, data_files=self.data_files,
-                     config_files=self.config_files, testmodule_files=self.testmodule_files,
-                     engine_ini_file=self.engine_ini_file, test_harness=harness1, src_dst=self.src_dst1,
-                     ctc_enabled=self.ctc_enabled, eunitexerunner_flags=self.eunitexerunner_flags,
-                     custom_dir = self.custom_dir, component_path=self.component_path),
-            ])
-        else:
-            mocker.expect(test_plan.sets).result([
-                dict(name="set0", image_files=self.image_files, data_files=self.data_files,
-                     config_files=self.config_files, testmodule_files=self.testmodule_files,
-                     engine_ini_file=self.engine_ini_file, test_harness=harness0, src_dst=self.src_dst0,
-                     pmd_files=self.pmd_files, trace_activation_files=self.trace_activation_files,
-                     trace_path=self.file_store.joinpath("traces", "set0", "tracelog.blx"),
-                     ctc_enabled=self.ctc_enabled, eunitexerunner_flags=self.eunitexerunner_flags,
-                     custom_dir = self.custom_dir, component_path=self.component_path),
-                dict(name="set1", image_files=self.image_files, data_files=self.data_files,
-                     config_files=self.config_files, testmodule_files=self.testmodule_files,
-                     engine_ini_file=self.engine_ini_file, test_harness=harness1, src_dst=self.src_dst1,
-                     pmd_files=self.pmd_files, trace_activation_files=self.trace_activation_files,
-                     trace_path=self.file_store.joinpath("traces", "set1", "tracelog.blx"),
-                     ctc_enabled=self.ctc_enabled, eunitexerunner_flags=self.eunitexerunner_flags,
-                     custom_dir = self.custom_dir, component_path=self.component_path),
-            ])
-        mocker.expect(test_plan.post_actions).result([
-            ("SendEmailAction", (("subject", "email subject"),
-                                 ("type", "ATS3_REPORT"),
-                                 ("send-files", "true"),
-                                 ("to", self.report_email))),
-            ("FileStoreAction", (("to-folder", self.file_store),
-                                 ("report-type", "ATS_REPORT"),
-                                 ("date-format", "yyyyMMdd"),
-                                 ("time-format", "HHmmss"))),
-            ("FileStoreAction", (("to-folder", self.file_store),
-                                 ("report-type", "STIF_COMPONENT_REPORT_ALL_CASES"),
-                                 ("run-log", "true"),
-                                 ("date-format", "yyyyMMdd"),
-                                 ("time-format", "HHmmss"))),
-            ("DiamondsAction", ())
-        ])
-        
-        self.mocker.replay()
-        self.test_plan = test_plan
-        
-        self.gen = adg.Ats3TestDropGenerator()
-        return self.gen.generate_xml(test_plan)
-
-    def test_basic_structure(self):
-        "Check that the overall test.xml structure is valid."
-        
-        test_harness = ["STIF", "EUNIT", "MULTI_HARNESS"]
-        
-        for thar in test_harness:
-            xml = self.generate_xml(thar)
-            # Check basics.
-            assert xml.find(".").tag == "test"
-            assert xml.find("./name").text == "test"
-            assert xml.find("./buildid").text == self.diamonds_build_url
-            assert xml.find("./target").tag
-            assert xml.find("./target/device").tag
-            if self.test_plan["harness"] == "MULTI_HARNESS":
-                harness_1, type_1, device_hwid_1, harness_2, type_2, device_hwid_2 = xml.findall("./target/device/property")
-            else:
-                harness_1, type_1, device_hwid_1 = xml.findall("./target/device/property")
-            
-            if self.test_plan["harness"] == "MULTI_HARNESS":
-                assert harness_1.get("value") == "STIF"
-                assert type_1.get("value") == "product"
-                assert device_hwid_1.get("value") == "5425"
-                assert harness_2.get("value") == "EUNIT"
-                assert type_2.get("value") == "product"
-                assert device_hwid_2.get("value") == "5425"
-            else:
-                assert harness_1.get("value") == thar
-                assert type_1.get("value") == "product"
-                assert device_hwid_1.get("value") == "5425"
-
-        # Check generation of the test plan.
-        assert xml.find("./plan").get("name") == "test Plan"
-        assert xml.find("./plan/session").tag 
-        sets = xml.findall("./plan/session/set")
-        assert len(sets) == 2
-        assert sets[0].get("name") == "set0-"+str(TEST_PATH.joinpath("tsrc", "group"))
-        assert sets[0].find("./target/device").tag
-    
-    def test_set_structure(self):
-        "Check that a <set> element's structure is valid."
-        xml = self.generate_xml("STIF")
-        tstset = xml.find("./plan/session/set")
-        assert tstset.tag
-        case = tstset.find("./case")
-        assert case.tag
-        assert case.get("name") == "set0 case"
-        
-    def test_case_flash_elems(self):
-        """Checks flash target element in the test.xml file"""
-        xml = self.generate_xml("STIF")
-        case = xml.find("./plan/session/set/case")
-        flashes = case.findall("./flash")
-        assert len(flashes) == len(self.image_files)
-        for i, flash_file in enumerate(self.image_files):
-            assert flashes[i].get("target-alias") == "DEFAULT_STIF"
-            assert flashes[i].get("images") == path(r"ATS3Drop" + os.sep + "images") / flash_file.name
-        
-    def test_case_steps(self):
-        """Checks cases in steps in the test.xml file"""
-        test_harness = ["STIF", "EUNIT", "MULTI_HARNESS"]
-        for thar in test_harness:
-            xml = self.generate_xml(thar)
-            steps = iter(xml.findall("./plan/session/set/case/step"))
-            check_ctc_start(steps)
-            check_log_dir(steps)
-            if "MULTI_HARNESS" in thar:            
-                self.check_install_step(steps, "STIF")
-                self.check_run_cases(steps)
-                check_ctc_write(steps)
-                check_ctc_log(steps)
-                check_fetch_logs(steps)
-                check_ctc_start(steps)
-                check_log_dir(steps)
-                self.check_install_step(steps, "EUNIT", set_count="1")
-                self.check_run_cases(steps)
-                check_ctc_write(steps)
-                check_ctc_log(steps, "withpkgfiles")
-                check_fetch_logs(steps)
-            else:
-                self.check_install_step(steps, thar)
-                self.check_run_cases(steps)
-                check_ctc_write(steps)
-                check_ctc_log(steps)
-                check_fetch_logs(steps)
-
-    def check_install_step(self, steps, harness, set_count="0"):
-        """Checks install steps in the test.xml file"""
-        if harness == "MULTI_HARNESS":
-            dst = [self.src_dst0, self.src_dst1]
-        else:
-            dst = [self.src_dst0]
-        if set_count == "1":
-            dst = [self.src_dst1]
-        
-        for dest in dst:
-            for file1 in dest:
-                step = steps.next()
-                filename = file1[1]
-                letter = filename[filename.rfind(":")-1:filename.rfind(":")]
-                filename = filename[filename.rfind(os.sep)+1:]
-                if "Install" in step.get("name"):
-                    assert step.get("name") == "Install %s: %s" %  (file1[2], filename)
-                    assert step.findtext("./command") == "install"
-                    params = step.findall("./params/param")            
-                    src = params[0].get("src")
-                    assert src.name == filename
-                    assert src.parent == path(r"ATS3Drop" + os.sep + "set" + set_count + os.sep + letter + os.sep + "sys" + os.sep + "bin")
-                    dst = params[1].get("dst")
-                    assert dst.name == filename
-                    assert dst.parent == path(letter + ":" + os.sep + "sys" + os.sep + "bin")
-            
-    
-    def check_run_cases(self, steps):
-        """Checks run cases in the test.xml file"""
-        step = steps.next()
-        if step.get("harness") == "STIF":
-            file_ = self.engine_ini_file 
-            assert step.get("name") == "Execute test: %s" % file_.name
-            assert step.findtext("./command") == "run-cases"
-            params = step.findall("./params/param")
-            assert params[0].get("filter") == "*"
-            assert params[1].get("timeout") == "60"
-            assert params[2].get("engineini") == path(r"c:" + os.sep + "sys" + os.sep + "bin") / self.engine_ini_file.name
-        elif step.get("harness") == "EUNIT":
-            file_ = self.testmodule_files[0]
-            if "Execute" in step.get("name"):
-                assert step.get("name") == "Execute test: %s" % file_.name
-                assert step.findtext("./command") == "execute"
-                params = step.findall("./params/param")
-                assert params[0].get("file") == path(r"z:" + os.sep + "sys" + os.sep + "bin" + os.sep + "EUNITEXERUNNER.EXE")
-                assert params[1].get("result-file") == path(r"c:" + os.sep + "Shared" + os.sep + "EUnit" + os.sep + "logs" + os.sep + "file1_log.xml")
-                assert params[2].get("parameters") == "/E S60AppEnv /R Off /F file1 /l xml file1.dll"
-                assert params[3].get("timeout") == "60"
-                step = steps.next()
-                file_ = self.testmodule_files[1]
-                assert step.get("name") == "Execute test: %s" % file_.name
-                assert step.findtext("./command") == "execute"
-                params = step.findall("./params/param")
-                assert params[0].get("file") == path(r"z:" + os.sep + "sys" + os.sep + "bin" + os.sep + "EUNITEXERUNNER.EXE")
-                assert params[1].get("result-file") == path(r"c:" + os.sep + "Shared" + os.sep + "EUnit" + os.sep + "logs" + os.sep + "file2_log.xml")
-                assert params[2].get("parameters") == "/E S60AppEnv /R Off /F file2 /l xml file2.dll"
-                assert params[3].get("timeout") == "60"
-
-    def test_steps_trace_enabled(self):
-        """checks if traing is enabled"""
-        test_harness = ["STIF"]
-        for thar in test_harness:
-            xml = self.generate_xml(thar, trace_enabled="True")
-            steps = iter(xml.findall("./plan/session/set/case/step"))
-            check_ctc_start(steps)
-            check_log_dir(steps)
-            self.check_install_step(steps, thar)
-            check_trace_start(steps, self.file_store)
-            self.check_run_cases(steps)
-            check_trace_end_steps(steps, self.file_store)
-            check_ctc_write(steps)
-            check_ctc_log(steps)
-            check_fetch_logs(steps)
-        
-    def test_post_actions(self):
-        "Post actions are inserted into XML."
-        xml = self.generate_xml("STIF")
-        post_actions = xml.findall("./postAction")
-        check_send_email_action(post_actions[0], self.report_email)
-        check_ats_report_action(post_actions[1], self.file_store)
-        check_stif_report_action(post_actions[2], self.file_store)
-        check_diamonds_action(post_actions[3])
-        
-    def test_files(self):
-        """Tests if the files are created for mock"""
-        xml = self.generate_xml("STIF")
-        files = iter(xml.findall("./files/file"))
-        assert files.next().text == r"ATS3Drop" + os.sep + "images" + os.sep + "file1.fpsx"
-        assert files.next().text == r"ATS3Drop" + os.sep + "images" + os.sep + "file2.fpsx"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1.dll"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2.dll"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "e" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "e" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "e" + os.sep + "sys" + os.sep + "bin" + os.sep + "file3"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1.cfg"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2.cfg"        
-        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "TestFramework.ini"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1.dll"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2.dll"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "e" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "e" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "e" + os.sep + "sys" + os.sep + "bin" + os.sep + "file3"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1.cfg"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2.cfg"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "TestFramework.ini"
-        self.assertRaises(StopIteration, files.next)
-        xml = self.generate_xml(harness="STIF", trace_enabled="True")
-        files = iter(xml.findall("./files/file"))
-        assert files.next().text == r"ATS3Drop" + os.sep + "images" + os.sep + "file1.fpsx"
-        assert files.next().text == r"ATS3Drop" + os.sep + "images" + os.sep + "file2.fpsx"
-        assert files.next().text == r"ATS3Drop" + os.sep + "pmds" + os.sep + "pmd_file.pmd"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "trace_init" + os.sep + "trace_activation_1.xml"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1.dll"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2.dll"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "e" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "e" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "e" + os.sep + "sys" + os.sep + "bin" + os.sep + "file3"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1.cfg"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2.cfg"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set0" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "TestFramework.ini"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "trace_init" + os.sep + "trace_activation_1.xml"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1.dll"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2.dll"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "e" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "e" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "e" + os.sep + "sys" + os.sep + "bin" + os.sep + "file3"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1.cfg"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2.cfg"
-        assert files.next().text == r"ATS3Drop" + os.sep + "set1" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "TestFramework.ini"
-
-        self.assertRaises(StopIteration, files.next)
-        
-    def test_generate_drop(self):
-        "Manifest for ATS3Drop directory structure is generated."        
-        xml = self.generate_xml("STIF")
-        strbuffer = StringIO()
-        self.gen.generate_drop(self.test_plan, xml, strbuffer)
-        
-        zfile = zipfile.ZipFile(strbuffer, "r")
-        try:
-            contents = sorted(path(tpath).normpath() for tpath in zfile.namelist())
-            expected = sorted(path(tpath).normpath()
-                           for tpath in [r"ATS3Drop" + os.sep + "set0" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1.cfg",
-                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2.cfg",
-                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "e" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1",
-                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "e" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2",
-                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "e" + os.sep + "sys" + os.sep + "bin" + os.sep + "file3",
-                                     r"ATS3Drop" + os.sep + "images" + os.sep + "file1.fpsx",
-                                     r"ATS3Drop" + os.sep + "images" + os.sep + "file2.fpsx",
-                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "TestFramework.ini",
-                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1.dll",
-                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2.dll",
-                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1.cfg",
-                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2.cfg",
-                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "e" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1",
-                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "e" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2",
-                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "e" + os.sep + "sys" + os.sep + "bin" + os.sep + "file3",
-                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "TestFramework.ini",
-                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1.dll",
-                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2.dll",
-                                     r"test.xml"])
-            diff = difflib.context_diff(expected, contents)
-            assert contents == expected, "\n".join(diff)
-        finally:
-            zfile.close()
-
-    def test_generate_drop_trace_enabled(self):
-        "Manifest for ATS3Drop directory structure is generated when trace enabled."
-        xml = self.generate_xml(harness="STIF", trace_enabled="True")
-        strbuffer = StringIO()
-        
-        self.gen.generate_drop(self.test_plan, xml, strbuffer)
-        zfile = zipfile.ZipFile(strbuffer, "r")
-        try:
-            contents = sorted(path(tpath).normpath() for tpath in zfile.namelist())
-            expected = sorted(path(tpath).normpath()
-                           for tpath in [r"ATS3Drop" + os.sep + "set0" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1.cfg",
-                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2.cfg",
-                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "e" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1",
-                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "e" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2",
-                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "e" + os.sep + "sys" + os.sep + "bin" + os.sep + "file3",
-                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "trace_init" + os.sep + "trace_activation_1.xml",
-                                     r"ATS3Drop" + os.sep + "images" + os.sep + "file1.fpsx",
-                                     r"ATS3Drop" + os.sep + "images" + os.sep + "file2.fpsx",
-                                     r"ATS3Drop" + os.sep + "pmds" + os.sep + "pmd_file.pmd",
-                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "TestFramework.ini",
-                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1.dll",
-                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2.dll",
-                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1.cfg",
-                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2.cfg",
-                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "e" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1",
-                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "e" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2",
-                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "e" + os.sep + "sys" + os.sep + "bin" + os.sep + "file3",
-                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "trace_init" + os.sep + "trace_activation_1.xml",
-                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "TestFramework.ini",
-                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1.dll",
-                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "c" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2.dll",
-                                     r"test.xml"])
-            diff = difflib.context_diff(expected, contents)
-            assert contents == expected, "\n".join(diff)
-        finally:
-            zfile.close()
-            
-class TestDropGenerationWithSis(mocker.MockerTestCase):
-    """
-    Unit tests for the test.xml generation with sis files.
-    """
-    def __init__(self, methodName="runTest"):
-        mocker.MockerTestCase.__init__(self, methodName)
-        self.sis_files = None
-        self.image_files = None
-        self.engine_ini_file = None
-        self.report_email = None
-        self.file_store = None
-        self.diamonds_build_url = None
-        self.harness = None
-        self.test_plan = None
-        self.gen = None
-        self.src_dst = []
-        
-    def generate_xml(self):
-        """Geberates XML if sis files"""
-        def files(*paths):
-            """generates paths for the files"""
-            return [TEST_PATH.joinpath("tsrc", tpath) for tpath in paths]
-        self.sis_files = files("sis/file1.sisx", "sis/file2.sisx", "sis/file3.sisx")
-        self.image_files = files("output/images/file1.fpsx", "output/images/file2.fpsx")
-        self.engine_ini_file = files("init/TestFramework.ini")[0]
-        self.report_email = "test.receiver@company.com"
-        self.file_store = path("path/to/reports")
-        self.diamonds_build_url = "http://diamonds.nmp.company.com/diamonds/builds/1234"
-        self.harness = "STIF"
-        self.component_path = str(TEST_PATH.joinpath("tsrc", "group"))
-        self.ctc_run_process_params = r"10.0.0.1#x:\ats\drop0.zip#1"
-        
-        test_plan = self.mocker.mock(count=False)
-        mocker.expect(test_plan["testrun_name"]).result("test")
-        mocker.expect(test_plan["harness"]).result("STIF")
-        mocker.expect(test_plan["device_type"]).result("product")
-        mocker.expect(test_plan["plan_name"]).result("test plan")
-        mocker.expect(test_plan["diamonds_build_url"]).result(self.diamonds_build_url)
-        mocker.expect(test_plan["test_timeout"]).result("60")
-        mocker.expect(test_plan["device_hwid"]).result("5425")
-        mocker.expect(test_plan["ctc_enabled"]).result("False")
-        mocker.expect(test_plan["trace_enabled"]).result("False")
-        mocker.expect(test_plan["custom_dir"]).result("CustomC")
-        mocker.expect(test_plan.custom_dir).result(path(r"self.custom_dir"))
-        mocker.expect(test_plan["ctc_run_process_params"]).result(self.ctc_run_process_params)
-        mocker.expect(test_plan.sets).result([
-            dict(name="set0", image_files=self.image_files, sis_files=self.sis_files,
-                 engine_ini_file=self.engine_ini_file, test_harness=self.harness, ctc_enabled="False", component_path=self.component_path),
-             ])
-        mocker.expect(test_plan.post_actions).result([])
-        self.mocker.replay()
-        self.test_plan = test_plan
-        
-        self.gen = adg.Ats3TestDropGenerator()
-        return self.gen.generate_xml(test_plan)
-
-    def test_case_steps(self):
-        """Checks cases in steps in the test.xml file"""
-        xml = self.generate_xml()
-        #print doc.xml(indent="yes")        
-        steps = iter(xml.findall("./plan/session/set/case/step"))
-        steps.next() # Stif log dir creation.
-        self.check_install_sis_files(steps)
-        steps.next() # Install engine ini.
-        self.check_install_sis_to_device(steps)
-        steps.next() # Run cases.
-        steps.next() # Fetch logs.
-        self.assertRaises(StopIteration, steps.next)
-
-    def check_install_sis_files(self, steps):
-        """Checks sis files install steps in the test.xml file"""
-        for filename in self.sis_files:
-            step = steps.next()
-            assert step.get("name") == "Install sis: %s" % filename.name
-            assert step.findtext("./command") == "install"
-            params = step.findall("./params/param")
-            # TO DO: Should sis files be specified outside of the set?
-            assert params[0].get("src") == path(r"ATS3Drop" + os.sep + "set0" + os.sep + "sis") / filename.name
-            assert params[1].get("dst") == path(r"c:" + os.sep + "testframework") / filename.name
-
-    def check_install_sis_to_device(self, steps):
-        """Checks sis files installation on the device"""
-        for filename in self.sis_files:
-            step = steps.next()
-            assert step.get("name") == "Install SIS to the device: %s" % filename.name
-            assert step.findtext("./command") == "install-software"
-            params = step.findall("./params/param")
-            assert params[-1].get("sisPackageName") == path(r"c:" + os.sep + "testframework") / filename.name
--- a/buildframework/helium/tools/common/python/lib/cpythontest/test_ats3_aste.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,495 +0,0 @@
-# -*- coding: latin-1 -*-
-
-#============================================================================ 
-#Name        : test_ats3_aste.py 
-#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:
-#===============================================================================
-
-""" Testing ATS3 ASTE framework. """
-
-# pylint: disable-msg=E1101,W0603,W0142
-
-from cStringIO import StringIO
-from pprint import pprint
-from xml.etree.ElementTree import fromstring, tostring
-from xml.etree import ElementTree as et
-import difflib
-import logging
-logging.getLogger().setLevel(logging.ERROR)
-import re
-import tempfile
-import zipfile
-import os
-
-from path import path
-import amara
-import mocker
-
-import ats3.aste
-
-TEST_PATH = None
-TEST_FILES = {}
-TEST_ASSET_FILES = {}
-TSRC = None
-OUTPUT = None
-TEST_ZIP_PATH = None
-
-# Shortcuts
-E = et.Element
-SE = et.SubElement
-
-_logger = logging.getLogger("test_ast3_aste")
-
-class Bunch(object):
-    
-    def __init__(self, **kwargs): 
-        self.__dict__.update(kwargs)
-    
-
-def equal_xml(xml1, xml2):
-    """Check the equality of the given XML snippets.
-    
-    Tag name equality:
-    
-    >>> equal_xml('<a/>', '<a/>')
-    True
-    >>> equal_xml('<a/>', '<b/>')
-    False
-    
-    Attribute equality:
-    
-    >>> equal_xml('<a k="v"/>', '<a k="v"/>')
-    True
-    >>> equal_xml('<a k="v"/>', '<a k="w"/>')
-    False
-    
-    Text content equality:
-    
-    >>> equal_xml('<a>v</a>', '<a>v</a>')
-    True
-    >>> equal_xml('<a>v</a>', '<a>w</a>')
-    False
-    >>> equal_xml('<a>v</a>', '<a></a>')
-    False
-    
-    Text content equality when whitespace differs:
-    >>> equal_xml('<a>v</a>', '<a>v </a>')
-    True
-
-    Equality of child elements:
-    
-    >>> equal_xml('<a><b><c k="v"/></b></a>', '<a><b><c k="v"/></b></a>')
-    True
-    >>> equal_xml('<a><b><c k="v"/></b></a>', '<a><b><c k="w"/></b></a>')
-    False
-    >>> equal_xml('<a><b><c k="v"/>v</b></a>', '<a><b><c k="v"/>w</b></a>')
-    False
-    >>> equal_xml('<a><b><c k="v"/>v</b></a>', '<a><b><c k="v"/>v </b></a>')
-    True
-    
-    """
-    if isinstance(xml1, basestring):
-        xml1 = fromstring(xml1)
-    if isinstance(xml2, basestring):
-        xml2 = fromstring(xml2)
-    if xml1.tag != xml2.tag:
-        return False
-    if xml1.attrib != xml2.attrib:
-        return False
-    if xml1.text:
-        if not xml2.text:
-            return False
-    if xml2.text:
-        if not xml1.text:
-            return False
-    if xml1.text and xml2.text and xml1.text.strip() != xml2.text.strip():
-        return False
-    if xml1.tail is not None and xml2.tail is not None:
-        if xml1.tail.strip() != xml2.tail.strip():
-            return False
-    elif xml1.tail != xml2.tail:
-        return False
-    children1 = list(xml1.getchildren())
-    children2 = list(xml2.getchildren())
-    if len(children1) != len(children2):
-        return False
-    for child1, child2 in zip(children1, children2):
-        return equal_xml(child1, child2)
-    return True        
-
-
-def setup_module():
-    global TEST_PATH, OUTPUT, TEST_ZIP_PATH
-    TEST_PATH = path(tempfile.mkdtemp())
-    OUTPUT = TEST_PATH.joinpath("TestAsset")
-    TEST_ZIP_PATH = TEST_PATH.joinpath("test_zip")
-    asset = TEST_PATH
-    component = TEST_PATH
-    component.joinpath("group").makedirs()
-    for path_parts in (("output", "images", "file1.fpsx"),
-                       ("output", "images", "file2.fpsx")):
-        filename = component.joinpath(*path_parts)
-        if not filename.parent.exists():
-            filename.parent.makedirs()
-        filename.touch()
-        TEST_FILES.setdefault(path_parts[1], []).append(file)
-    for path_parts in (("TestAsset", "Localisation", "S60", "localisation.txt"),
-                       ("TestAsset", "TestCases", "TC_100_Test0", "file1.sis"),
-                       ("TestAsset", "TestCases", "TC_100_Test0", "file2.tcf"),
-                       ("TestAsset", "Tools", "TestCaseCreator", "test_creator.ini"),
-                       ("TestAsset", "testdrop.xml"),):
-        filename = asset.joinpath(*path_parts)
-        if not filename.parent.exists():
-            filename.parent.makedirs()
-        filename.touch()
-        TEST_ASSET_FILES.setdefault(path_parts[1], []).append(file)
-    try:
-        zip_component = TEST_ZIP_PATH
-        filename = zip_component.joinpath("TestAsset.zip")
-        if not filename.parent.exists():
-            filename.parent.makedirs()
-        filename.touch()
-        zfile = zipfile.ZipFile(zip_component.joinpath("TestAsset.zip"), "w", zipfile.ZIP_DEFLATED)
-        for p in TEST_ASSET_FILES:
-            print p
-            zfile.write(p)
-        zfile.close()
-        TEST_ASSET_FILES.setdefault("ZIP", []).append(file)
-    except OSError:
-        print "Got except OSError. Continuing...\n"  
-        
-    
-def teardown_module():
-    path(TEST_PATH).rmtree()
-    
-    
-class TestTestPlan(mocker.MockerTestCase):
-
-    def __init__(self, methodName="runTest"):
-        mocker.MockerTestCase.__init__(self, methodName)
-             
-    def setUp(self):
-        opts = Bunch(testrun_name="testrun", harness="ASTE", 
-                     device_type="product", plan_name="ats3_test_plan", diamonds_build_url="",
-                     software_version="W810", software_release="SPP 51.32", device_language="English",
-                     testasset_location=TEST_PATH.joinpath("TestAsset"), testasset_caseids="100",repeat="1", report_email="",
-                     file_store=path(), test_timeout="60", device_hwid="5425", test_type="smoke")
-        self.tp = ats3.aste.AsteTestPlan(opts)
-        self.image_files = TEST_FILES["images"]
-        self.test_timeout = self.tp["test_timeout"]
-        self.device_hwid = self.tp["device_hwid"]
-        self.test_harness = self.tp["harness"]
-        self.device_language = self.tp["device_language"]
-        self.software_release = self.tp["software_release"]
-        self.software_version = self.tp["software_version"]
-        self.testasset_caseids = self.tp["testasset_caseids"]
-        self.testasset_location = self.tp["testasset_location"]
-        self.test_type = self.tp["test_type"]
-        
-        if self.testasset_location != "":
-            self.test_asset_testcases = [self.testasset_location.joinpath("TestCases", "TC_100_Test0", "file1.sis"), self.testasset_location.joinpath("TestCases", "TC_100_Test0", "file2.tcf")]
-            self.test_asset_tools = [self.testasset_location.joinpath("Tools", "TestCaseCreator", "test_creator.ini")]
-            self.test_asset_localisation = [self.testasset_location.joinpath("Localisation", "S60", "localisation.txt")]
-            self.test_asset_testdrop = self.testasset_location.joinpath("testdrop.xml")
-        else:
-            self.test_asset_testcases = TEST_ASSET_FILES["TestCases"]
-            self.test_asset_tools = TEST_ASSET_FILES["Tools"]
-            self.test_asset_localisation = TEST_ASSET_FILES["Localisation"]
-            self.test_asset_testdrop = TEST_ASSET_FILES["testdrop.xml"]
-
-            
-    def test_creation(self):        
-        assert self.tp["testrun_name"] == "testrun"
-        assert self.tp["harness"] == "ASTE"
-        assert self.tp["device_type"] == "product"
-    
-    def test_insert_set(self):
-        
-        self.tp.insert_set(image_files=self.image_files,
-                           test_timeout=self.test_timeout)
-        
-        assert self.tp.sets[0] == dict(name="set0",
-                                       image_files=self.image_files,
-                                       test_timeout=self.test_timeout,
-                                       test_harness=self.test_harness)
-
-    def test_post_actions_email(self):
-        assert not self.tp.post_actions
-        receiver = "joe.average@example.com"
-        self.tp.report_email = receiver
-        assert len(self.tp.post_actions) == 1
-        action, items = self.tp.post_actions[0]
-        items = dict(items)
-        assert action == "SendEmailAction"
-        assert items["to"] == receiver
-    
-    def test_post_actions_ats3_report_only(self):
-        file_store = path("path/to/files")
-        self.tp.file_store = file_store
-        self.tp.harness = "EUNIT"
-        assert len(self.tp.post_actions) == 2
-        action, items = self.tp.post_actions[0]
-        items = dict(items)
-        assert action == "FileStoreAction"
-        assert items["report-type"] == "ATS_REPORT"
-        assert items["to-folder"].startswith(file_store)
-        assert items["to-folder"].endswith("ATS3_REPORT")
-    
-    def test_post_actions_aste(self):
-        file_store = path("path/to/files")
-        self.tp.file_store = file_store
-        assert len(self.tp.post_actions) == 2
-        action, items = self.tp.post_actions[1]
-        items = dict(items)
-        assert action == "FileStoreAction"
-        assert items["report-type"] == "ASTE_REPORT"
-        assert items["to-folder"].startswith(file_store)
-        assert items["to-folder"].endswith("ASTE_REPORT")
-        
-    def test_post_actions_diamonds(self):
-        self.tp.diamonds_build_url = "http://diamonds.nmp.company.com/diamonds/builds/1234"
-        assert len(self.tp.post_actions) == 1
-        action, items = self.tp.post_actions[0]
-        assert action == "DiamondsAction"
-        assert not items
-
-
-            
-class TestXMLGeneration(mocker.MockerTestCase):
-    """
-    Unit tests for the test.xml generation.
-    """    
-
-    def __init__(self, methodName="runTest"):
-        self.image_files = None
-        self.report_email = None
-        self.diamonds_build_url = None
-        self.test_harness = None
-        self.file_store = None
-        self.testasset_location = None
-        self.test_plan = None
-        self.gen = None
-        mocker.MockerTestCase.__init__(self, methodName)
-        
-        
-    def generate_xml(self):
-        def files(*paths):
-            return [TEST_PATH.joinpath(p) for p in paths]
-        self.image_files = files("output/images/file1.fpsx", "output/images/file2.fpsx")
-        self.report_email = "test.receiver@company.com"
-        self.diamonds_build_url = "http://diamonds.nmp.company.com/diamonds/builds/1234"
-        self.test_harness = "ASTE"
-        self.file_store = path(r"path/to/reports")
-        self.testasset_location = OUTPUT
-        
-        self.mocker.restore()
-        test_plan = self.mocker.mock(count=False)
-        mocker.expect(test_plan["testrun_name"]).result("test")
-        mocker.expect(test_plan["harness"]).result("ASTE")
-        mocker.expect(test_plan["device_type"]).result("product")
-        mocker.expect(test_plan["plan_name"]).result("test plan")
-        mocker.expect(test_plan["diamonds_build_url"]).result(self.diamonds_build_url)
-        mocker.expect(test_plan["test_timeout"]).result("60")
-        mocker.expect(test_plan["device_hwid"]).result("5425")
-        mocker.expect(test_plan["testasset_location"]).result(self.testasset_location)
-        mocker.expect(test_plan["testasset_caseids"]).result("100")
-        mocker.expect(test_plan["software_release"]).result("SPP 51.32")
-        mocker.expect(test_plan["software_version"]).result("W810")
-        mocker.expect(test_plan["device_language"]).result("English")
-        mocker.expect(test_plan["test_type"]).result("smoke")
-        mocker.expect(test_plan["temp_directory"]).result(TEST_PATH)
-        mocker.expect(test_plan.sets).result([
-            dict(name="set0", image_files=self.image_files, test_harness="ASTE")])
-        mocker.expect(test_plan.post_actions).result([
-            ("SendEmailAction", (("subject", "email subject"),
-                                 ("type", "ATS3_REPORT"),
-                                 ("send-files", "true"),
-                                 ("to", self.report_email))),
-            ("FileStoreAction", (("to-folder", self.file_store),
-                                 ("report-type", "ATS_REPORT"),
-                                 ("date-format", "yyyyMMdd"),
-                                 ("time-format", "HHmmss"))),
-            ("FileStoreAction", (("to-folder", self.file_store),
-                                 ("report-type", "ASTE_REPORT"),
-                                 ("run-log", "true"),
-                                 ("date-format", "yyyyMMdd"),
-                                 ("time-format", "HHmmss"))),
-            ("DiamondsAction", ())
-        ])
-        
-        self.mocker.replay()
-        self.test_plan = test_plan
-        
-        self.gen = ats3.aste.AsteTestDropGenerator()
-        return self.gen.generate_xml(test_plan)
-
-    def test_basic_structure(self):
-        "Check that the overall test.xml structure is valid."
-        xml = self.generate_xml()
-        # Check basics.
-        assert xml.find(".").tag == "test"
-        assert xml.find("./name").text == "test"
-        assert xml.find("./buildid").text == self.diamonds_build_url
-        assert xml.find("./target").tag
-        assert xml.find("./target/device").tag
-        harness, hardware, device_hwid = xml.findall("./target/device/property")
-        softwareVersion, softwareRelease, deviceLanguage = xml.findall("./target/device/setting")
-        assert harness.get("value") == "ASTE"
-        assert hardware.get("value") == "product"
-        assert softwareVersion.get("value") == "W810"
-        assert softwareRelease.get("value") == "SPP 51.32"
-        assert deviceLanguage.get("value") == "English"
-        assert device_hwid.get("value") == "5425"
-        
-        # Check generation of the test plan.
-        assert xml.find("./plan").get("name") == "Plan smoke product"
-        assert xml.find("./plan/session").tag 
-        sets = xml.findall("./plan/session/set")
-        assert len(sets) == 1
-        assert sets[0].get("name") == "set0"
-        assert sets[0].find("./target/device").tag
-    
-    def test_set_structure(self):
-        "Check that a <set> element's structure is valid."
-        xml = self.generate_xml()
-        tstset = xml.find("./plan/session/set")
-        assert tstset.tag
-        case = tstset.find("./case")
-        assert case.tag
-        assert case.get("name") == "set0 case"                
-        
-    def test_case_flash_elems(self):
-        xml = self.generate_xml()
-        case = xml.find("./plan/session/set/case")
-        flashes = case.findall("./flash")
-        assert len(flashes) == len(self.image_files)
-        for i, flash_file in enumerate(self.image_files):
-            assert flashes[i].get("target-alias") == "DEFAULT"
-            assert flashes[i].get("images") == path(r"ATS3Drop" + os.sep + "images") / flash_file.name
-    
-    def test_steps(self):
-        xml = self.generate_xml()
-        steps = iter(xml.findall("./plan/session/set/case/step"))
-        self.check_executeasset_step(steps)
-
-    def check_executeasset_step(self, steps):
-        step = steps.next()
-        assert step.get("name") == "Execute asset zip step"
-        assert step.findtext("./command") == "execute-asset"
-        params = step.findall("./params/param")
-        assert params[0].get("repeat") == "1"
-        assert params[1].get("asset-source") == "ATS3Drop" + os.sep + "TestAssets" + os.sep + "TestAsset.zip"
-        assert params[2].get("testcase-ids") == "100"
-
-    def test_post_actions(self):
-        "Post actions are inserted into XML."
-        xml = self.generate_xml()        
-        post_actions = xml.findall("./postAction")
-        self.check_send_email_action(post_actions[0])
-        self.check_ats_report_action(post_actions[1])
-        self.check_aste_report_action(post_actions[2])
-        self.check_diamonds_action(post_actions[3])
-
-    def check_send_email_action(self, action):
-        assert action.findtext("./type") == "SendEmailAction"
-        params = action.findall("./params/param")
-        assert params[0].get("name") == "subject"
-        assert params[0].get("value") == "email subject"
-        assert params[1].get("name") == "type"
-        assert params[1].get("value") == "ATS3_REPORT"
-        assert params[2].get("name") == "send-files"
-        assert params[2].get("value") == "true"
-        assert params[3].get("name") == "to"
-        assert params[3].get("value") == self.report_email
-
-    def check_ats_report_action(self, action):
-        assert action.findtext("./type") == "FileStoreAction"
-        params = action.findall("./params/param")
-        assert params[0].get("name") == "to-folder"
-        assert params[0].get("value") == self.file_store
-        assert params[1].get("name") == "report-type"
-        assert params[1].get("value") == "ATS_REPORT"
-        assert params[2].get("name") == "date-format"
-        assert params[2].get("value") == "yyyyMMdd"
-        assert params[3].get("name") == "time-format"
-        assert params[3].get("value") == "HHmmss"
-
-    def check_aste_report_action(self, action):
-        assert action.findtext("./type") == "FileStoreAction"
-        params = action.findall("./params/param")
-        assert params[0].get("name") == "to-folder"
-        assert params[0].get("value") == self.file_store
-        assert params[1].get("name") == "report-type"
-        assert params[1].get("value") == "ASTE_REPORT"
-        assert params[2].get("name") == "run-log"
-        assert params[2].get("value") == "true"
-        assert params[3].get("name") == "date-format"
-        assert params[3].get("value") == "yyyyMMdd"
-        assert params[4].get("name") == "time-format"
-        assert params[4].get("value") == "HHmmss"
-        
-    def check_diamonds_action(self, action):
-        assert action.findtext("./type") == "DiamondsAction"
-        assert not action.findall("./params/param")
-    
-    def test_files(self):
-        xml = self.generate_xml()
-        files = iter(xml.findall("./files/file"))
-        assert files.next().text == r"ATS3Drop" + os.sep + "images" + os.sep + "file1.fpsx"
-        assert files.next().text == r"ATS3Drop" + os.sep + "images" + os.sep + "file2.fpsx"
-        assert files.next().text == r"ATS3Drop" + os.sep + "TestAssets" + os.sep + "TestAsset.zip"
-        self.assertRaises(StopIteration, files.next)
-        
-    def test_generate_testasset_zip(self):
-        self.generate_xml()
-        if re.search(r"[.]zip", self.test_plan["testasset_location"]):
-            pass
-        else:
-            strbuffer = StringIO()
-            assert strbuffer == self.gen.generate_testasset_zip(self.test_plan, strbuffer)
-            zfile = zipfile.ZipFile(strbuffer, "r")
-            try:
-                contents = sorted(path(p).normpath() for p in zfile.namelist())
-                expected = sorted(path(p).normpath()
-                               for p in [(r"Localisation" + os.sep + "S60" + os.sep + "localisation.txt"),
-                                         (r"TestCases" + os.sep + "TC_100_Test0" + os.sep + "file1.sis"),
-                                         (r"TestCases" + os.sep + "TC_100_Test0" + os.sep + "file2.tcf"),
-                                         (r"Tools" + os.sep + "TestCaseCreator" + os.sep + "test_creator.ini"),
-                                         (r"testdrop.xml")])
-                diff = difflib.context_diff(expected, contents)
-                assert contents == expected, "\n".join(diff)
-            finally:
-                zfile.close()
-        
-    def test_generate_drop(self):
-        "Manifest for ATS3Drop directory structure is generated."
-        xml = self.generate_xml()
-        strbuffer = StringIO()
-
-        self.gen.generate_drop(self.test_plan, xml, strbuffer)
-        zfile = zipfile.ZipFile(strbuffer, "r")
-        try:
-            contents = sorted(path(p).normpath() for p in zfile.namelist())
-            expected = sorted(path(p).normpath()
-                           for p in [r"ATS3Drop" + os.sep + "images" + os.sep + "file1.fpsx",
-                                     r"ATS3Drop" + os.sep + "images" + os.sep + "file2.fpsx",
-                                     r"ATS3Drop" + os.sep + "TestAssets" + os.sep + "TestAsset.zip",
-                                     r"test.xml"])
-            diff = difflib.context_diff(expected, contents)
-            assert contents == expected, "\n".join(diff)
-        finally:
-            zfile.close()
--- a/buildframework/helium/tools/common/python/lib/cpythontest/test_ats4.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1614 +0,0 @@
-# -*- encoding: latin-1 -*-
-
-#============================================================================ 
-#Name        : test_ats4.py 
-#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:
-#===============================================================================
-
-""" Testing ats4 framework. """
-# pylint: disable-msg=E1101
-#E1101 => Mocker shows mockery
-
-from cStringIO import StringIO
-from pprint import pprint
-from xml.etree.ElementTree import fromstring, tostring
-from xml.etree import ElementTree as et
-import difflib
-import logging
-logging.getLogger().setLevel(logging.ERROR)
-import tempfile
-import zipfile
-import os
-import re
-import subprocess
-
-from path import path
-import amara
-import mocker
-
-import ntpath
-
-import ats3
-import ats3.testconfigurator as atc
-import ats3.dropgenerator as adg
-import ats3.parsers as parser
-
-
-TEST_PATH = None
-TEST_FILES = {}
-TSRC = None
-OUTPUT = None
-
-# Shortcuts
-E = et.Element
-SE = et.SubElement
-
-class Bunch(object):
-    """ Configuration object. Argument from constructor are converted into class attributes. """
-    def __init__(self, **kwargs):
-        self.__dict__.update(kwargs)
-        
-def equal_xml(xml1, xml2):
-    """Check the equality of the given XML snippets.
-    
-    Tag name equality:
-    
-    >>> equal_xml('<a/>', '<a/>')
-    True
-    >>> equal_xml('<a/>', '<b/>')
-    False
-    
-    Attribute equality:
-    
-    >>> equal_xml('<a k="v"/>', '<a k="v"/>')
-    True
-    >>> equal_xml('<a k="v"/>', '<a k="w"/>')
-    False
-    
-    Text content equality:
-    
-    >>> equal_xml('<a>v</a>', '<a>v</a>')
-    True
-    >>> equal_xml('<a>v</a>', '<a>w</a>')
-    False
-    >>> equal_xml('<a>v</a>', '<a></a>')
-    False
-    
-    Text content equality when whitespace differs:
-    >>> equal_xml('<a>v</a>', '<a>v </a>')
-    True
-
-    Equality of child elements:
-    
-    >>> equal_xml('<a><b><c k="v"/></b></a>', '<a><b><c k="v"/></b></a>')
-    True
-    >>> equal_xml('<a><b><c k="v"/></b></a>', '<a><b><c k="w"/></b></a>')
-    False
-    >>> equal_xml('<a><b><c k="v"/>v</b></a>', '<a><b><c k="v"/>w</b></a>')
-    False
-    >>> equal_xml('<a><b><c k="v"/>v</b></a>', '<a><b><c k="v"/>v </b></a>')
-    True
-    
-    """
-    def __init__():
-        check_instance(xml1, xml2)
-    
-    def check_instance(xml1, xml2):
-        """if xml1 and xml2 are instances, converts to strings"""
-        if isinstance(xml1, basestring):
-            xml1 = fromstring(xml1)
-        if isinstance(xml2, basestring):
-            xml2 = fromstring(xml2)
-        check_tags(xml1, xml2)
-
-    def check_tags(xml1, xml2):
-        """check xml tags and text equality"""
-        if xml1.tag != xml2.tag:
-            return False
-        if xml1.attrib != xml2.attrib:
-            return False
-        if xml1.text:
-            if not xml2.text:
-                return False
-        if xml2.text:
-            if not xml1.text:
-                return False
-
-        produce_xml_children(xml1, xml2)
-
-    def produce_xml_children(xml1, xml2):
-        """checks if xml children are of same length and are equal?"""
-        if xml1.text and xml2.text and xml1.text.strip() != xml2.text.strip():
-            return False
-        if xml1.tail is not None and xml2.tail is not None:
-            if xml1.tail.strip() != xml2.tail.strip():
-                return False
-        elif xml1.tail != xml2.tail:
-            return False
-        
-        children1 = list(xml1.getchildren())
-        children2 = list(xml2.getchildren())
-        if len(children1) != len(children2):
-            return False
-        for child1, child2 in zip(children1, children2):
-            return equal_xml(child1, child2)
-    return True        
-
-
-def setup_module():
-    """ Setup test environment. """
-    global TEST_PATH, TSRC, OUTPUT
-    TEST_PATH = path(tempfile.mkdtemp())
-    OUTPUT = TEST_PATH.joinpath(r"output")
-    component = TEST_PATH
-    component.joinpath("group").makedirs()
-    for path_parts in (("tsrc", "group", "bld.inf"),
-                       ("tsrc", "group", "test.pkg"),
-                       ("tsrc", "testmodules", "file1.dll"),
-                       ("tsrc", "testmodules", "file2.dll"),
-                       ("tsrc", "data", "file1"),
-                       ("tsrc", "data", "file2"),
-                       ("tsrc", "data", "file3"),
-                       ("tsrc", "data", "mmc", "file4"),
-                       ("tsrc", "data", "c", "file5"),
-                       ("tsrc", "conf", "file1.cfg"),
-                       ("tsrc", "conf", "file2.cfg"),
-                       ("tsrc", "init", "TestFramework.ini"),
-                       ("tsrc", "custom", "prepostaction.xml"),
-                       ("tsrc", "custom", "postpostaction.xml"),
-                       # These do not have to be under 'tsrc':
-                       ("tsrc", "output", "images", "file1.fpsx"),
-                       ("tsrc", "output", "images", "file2.fpsx"),
-                       ("tsrc", "sis", "file1.sisx"),
-                       ("tsrc", "sis", "file2.sisx"),
-                       ("tsrc", "sis", "file3.sisx"),
-                       ("tsrc", "trace_init", "trace_activation_1.xml")):
-        filepath = component.joinpath(*path_parts)
-        if not filepath.parent.exists():
-            filepath.parent.makedirs()
-        filepath.touch()
-        TEST_FILES.setdefault(path_parts[1], []).append(filepath)
-    TSRC = component.joinpath("tsrc")
-    filepath = OUTPUT.joinpath("pmd", "pmd_file.pmd")
-    if not filepath.parent.exists():
-        filepath.parent.makedirs()
-    filepath.touch()
-    TEST_FILES.setdefault("pmd_file", []).append(filepath)
-    tracing = component.joinpath("tsrc", "trace_init")
-    root = E('ConfigurationFile')
-    confs = E("Configurations")
-    trace_act = SE(confs, "TraceActivation")
-    conf = SE(trace_act, "Configuration")
-    conf.set('Name', 'MCU')
-    mcu = SE(conf, "MCU")
-    sett = SE(mcu, "settings")
-    SE(sett, "timestamp")
-    root.append(confs)
-    ettree = et.ElementTree(root)
-    doc = amara.parse(et.tostring(ettree.getroot()))
-    handle = open(tracing.joinpath("trace_activation_1.xml"), "w")
-    handle.write(doc.xml(indent="yes"))
-    handle.close()
-#    tracing.writestr("trace_activation_1.xml", doc.xml(indent=u"yes"))
-    group = component.joinpath("tsrc", "group")
-    group.joinpath("bld.inf").write_text(
-        r"""
-        PRJ_TESTMMPFILES
-        stif.mmp /* xyz.mmp */ abcd.mmp
-        /*xyz.mmp*/
-        eunit.mmp /* xyz.mmp */
-        both.mmp
-        ..\sub-component\group\sub-component.mmp
-        """.replace('\\', os.sep))
-
-    group.joinpath("test.pkg").write_text(
-        r"""
-        ;Language - standard language definitions
-        &EN
-        
-        ; standard SIS file header
-        #{"BTEngTestApp"},(0x04DA27D5),1,0,0
-        
-        ;Supports Series 60 v 3.0
-        (0x101F7961), 0, 0, 0, {"Series60ProductID"}
-        
-        ;Localized Vendor Name
-        %{"BTEngTestApp"}
-        
-        ;Unique Vendor name
-        :"Nokia"
-        
-        ; Files to copy
-        "\tsrc\testmodules\file1.dll"-"c:\sys\bin\file1.dll"
-        "\tsrc\testmodules\file2.dll"-"c:\sys\bin\file2.dll"
-        "\tsrc\data\file1"-"e:\sys\bin\file1"
-        "\tsrc\data\file2"-"e:\sys\bin\file2"
-        "\tsrc\data\file3"-"e:\sys\bin\file3"
-        "\tsrc\conf\file1.cfg"-"!:\sys\bin\file1.cfg"
-        "\tsrc\conf\file2.cfg"-"!:\sys\bin\file2.cfg"
-        "\tsrc\init\TestFramework.ini"-"!:\sys\bin\TestFramework.ini"
-        "\tsrc\sis\file1.sisx"-"!:\sys\bin\file1.sisx"
-        "\tsrc\sis\file2.sisx"-"!:\sys\bin\file2.sisx"
-        """.replace('\\', os.sep))
-    group.joinpath("stif.mmp").write_text("LIBRARY stiftestinterface.lib")
-    group.joinpath("eunit.mmp").write_text("LIBRARY eunit.lib")
-    group.joinpath("both.mmp").write_text("LIBRARY stiftestinterface.lib eunit.lib")
-    init = component.joinpath("tsrc", "init")
-    
-    init.joinpath("TestFramework.ini").write_text(
-        r"""
-#     - Sets a device reset module's dll name(Reboot).
-#        + If Nokia specific reset module is not available or it is not correct one
-#          StifHWResetStub module may use as a template for user specific reset
-#          module. 
-
-[Engine_Defaults]
-
-TestReportMode= FullReport        # Possible values are: 'Empty', 'Summary', 'Environment',
-                                                               'TestCases' or 'FullReport'
-
-CreateTestReport= YES            # Possible values: YES or NO
-
-TestReportFilePath= C:\LOGS\TestFramework\
-TestReportFileName= TestReport
-
-TestReportFormat= TXT            # Possible values: TXT or HTML
-        
-        """)
-
-
-def teardown_module():
-    """ Cleanup environment after testing. """    
-    def __init__():
-        path(TEST_PATH).rmtree()
-
-# CTC related functions    
-def check_ctc_write(steps):
-    """Checks if CTC data is written on the CTC log"""
-    step = steps.next()
-    assert step.findtext("./type") == "NonTestExecuteTask"
-    params = step.findall("./parameters/parameter")
-    assert params[0].get("value") == "writelocal"
-    assert params[1].get("value") == path(r"z:\sys\bin\ctcman.exe")
-    step = steps.next()
-    assert step.findtext("./type") == "NonTestExecuteTask"
-    params = step.findall("./parameters/parameter")
-    assert params[0].get("value") == "writefile"
-    assert params[1].get("value") == path(r"z:\sys\bin\ctcman.exe")
-
-def check_ctc_log(steps, testtype=""):
-    """Fetches CTC Log"""
-    #For the ctcdata.txt to be published on the ATS network drive
-    step = steps.next()
-    assert step.findtext("./type") == "FileDownloadTask"
-    params = step.findall("./parameters/parameter")
-    #assert params[0].get("value") == "false"
-    assert params[0].get("value") == path(r"c:\data\ctc\ctcdata.txt")
-    if testtype == "withpkgfiles":
-        assert params[1].get("value") == r"\\10.0.0.1\ctc_helium\builds\drop0\set1\ctcdata"
-    else:
-        assert params[1].get("value") == r"\\10.0.0.1\ctc_helium\builds\drop0\set0\ctcdata"
-    
-    #For the ctcdata.txt to be published on the build network drive
-    step = steps.next()
-    assert step.findtext("./type") == "FileDownloadTask"
-    params = step.findall("./parameters/parameter")
-    #assert params[0].get("value") == "true"
-    assert params[0].get("value") == path(r"c:\data\ctc\ctcdata.txt")
-
-def check_ctc_start(steps):
-    """Checks if CTC starts in ATS"""
-    step = steps.next()
-    assert step.findtext("./type") == "CreateDirTask"
-    params = step.findall("./parameters/parameter")
-    assert params[0].get("value") == path(r"c:\data\ctc")
-    step = steps.next()
-    assert step.findtext("./type") == "NonTestExecuteTask"
-    params = step.findall("./parameters/parameter")
-    assert params[0].get("value") == path(r"z:\sys\bin\ctcman.exe")   
-
-def check_fetch_logs(steps, harness="STIF"):
-    """Checks fetching log directory is created"""
-    step = steps.next()
-    assert step.findtext("./type") == "FileDownloadTask"
-    params = step.findall("./parameters/parameter")
-    if harness == "STIF":
-        assert params[0].get("value") == path(r"c:\logs\testframework\*")  
-    else:
-        assert params[0].get("value") == path(r"c:\Shared\EUnit\logs\*")
-
-def check_diamonds_action(action):
-    """ Testing Diamonds action. """
-    assert action.findtext("./type") == "DiamondsAction"
-    assert not action.findall("./parameters/parameter") 
-
-def check_send_email_action(action, reportemail):
-    """verifies if sening email option works"""
-    assert action.findtext("./type") == "EmailAction"
-    params = action.findall("./parameters/parameter")
-    assert params[0].get("name") == "subject"
-    #assert params[0].get("value") == "email subject"
-    assert params[1].get("name") == "to"
-    assert params[1].get("value") == reportemail
-    
-def check_ctc_run_process_action(action):
-    """verifies if CTC run process action works"""
-    #The parameters for this test are intended to execute on a windows machine
-    assert action.findtext("./type") == "RunProcessAction"
-    params = action.findall("./parameters/parameter")
-    assert params[0].get("name") == "file"
-    assert params[0].get("value") == "catsctc2html/catsctc2html.exe"
-    assert params[1].get("name") == "parameters"
-    assert params[1].get("value") == r"--ctcdata_files=\\10.0.0.1\ctc_helium\1234\drop0\set0\ctcdata --monsym_files=\\10.0.0.1\ctc_helium\1234\mon_syms\1\MON.sym --diamonds_build_id=1234 --drop_id=0 --total_amount_of_drops=1"
-
-def check_ats_report_action(action, filestore):
-    """verifies if sening ATS report option works"""
-    assert action.findtext("./type") == "FileStoreAction"
-    params = action.findall("./parameters/parameter")
-    assert params[0].get("name") == "to-folder"
-    assert params[0].get("value") == filestore
-    assert params[1].get("name") == "report-type"
-    assert params[1].get("value") == "ATS_REPORT"
-    assert params[2].get("name") == "date-format"
-    assert params[2].get("value") == "yyyyMMdd"
-    assert params[3].get("name") == "time-format"
-    assert params[3].get("value") == "HHmmss"
-
-def check_stif_report_action(action, filestore):
-    """verifies if sening STIF report option works"""
-    assert action.findtext("./type") == "FileStoreAction"
-    params = action.findall("./parameters/parameter")
-    assert params[0].get("name") == "to-folder"
-    assert params[0].get("value") == filestore
-    assert params[1].get("name") == "report-type"
-    assert params[1].get("value") == "STIF_COMPONENT_REPORT_ALL_CASES"
-    assert params[2].get("name") == "run-log"
-    assert params[2].get("value") == "true"
-    assert params[3].get("name") == "date-format"
-    assert params[3].get("value") == "yyyyMMdd"
-    assert params[4].get("name") == "time-format"
-    assert params[4].get("value") == "HHmmss"
-
-def check_log_dir(steps):
-    """ Test the log dir. """
-    step = steps.next()
-    assert step.findtext("./type") == "CreateDirTask"
-
-def check_trace_start(steps, filestore):
-    """Checks if tracing is started on the ATS"""
-    step = steps.next()
-    assert step.findtext("./type") == "trace-start"
-    params = step.findall("./parameters/parameter")
-    assert params[0].get("value") == path(r"ATS3Drop\set0\trace_activation\trace_activation_1.xml")
-    assert params[1].get("value") == "MCU"
-    assert params[2].get("value") == path(r"ATS3Drop\pmds\pmd_file.pmd")
-    assert params[3].get("value") == filestore.joinpath("traces", "set0", "tracelog.blx")
-    assert params[4].get("value") == "60"
-    assert params[5].get("value") == "yyyyMMdd"
-    assert params[6].get("value") == "HHmmss"
-    
-def check_trace_end_steps(steps, filestore):
-    """ Test trace end step. """
-    step = steps.next()
-    assert step.findtext("./type") == "trace-stop"
-    params = step.findall("./parameters/parameter")
-    assert params[0].get("value") == "60"
-    step = steps.next()
-    assert step.findtext("./type") == "trace-convert"
-    params = step.findall("./parameters/parameter")
-    assert params[0].get("value") == path(r"ATS3Drop\pmds\pmd_file.pmd")
-    assert params[1].get("value") == filestore.joinpath("traces", "set0", "tracelog.blx")
-    assert params[2].get("value") == "60"
-    assert params[3].get("value") == "yyyyMMdd"
-    assert params[4].get("value") == "HHmmss"
-
-class TestTestPlan(mocker.MockerTestCase):
-    """Creates TestPlan mocker setup"""
-    def __init__(self, methodName="runTest"):
-        mocker.MockerTestCase.__init__(self, methodName)  
-          
-    def setUp(self):
-        """ Setup TestTestPlan testsuite. """
-        opts = Bunch(testrun_name="testrun", harness="STIF", 
-                     device_type="product", plan_name="ats3_test_plan",
-                     diamonds_build_url="", report_email="", file_store=path(), test_timeout="60",
-                     device_hwid="5425", trace_enabled="True", ctc_enabled="True", eunitexerunner_flags="/E S60AppEnv /R Off", 
-                     multiset_enabled=False, ctc_run_process_params=r"10.0.0.1#x:\ats\drop0.zip#1", monsym_files="")
-        self.atp = ats3.Ats3TestPlan(opts)
-        self.config_files = TEST_FILES["conf"]
-        self.data_files = TEST_FILES["data"]
-        self.engine_ini_file = TEST_FILES["init"][0]
-        self.image_files = TEST_FILES["output"]
-        self.sis_files = TEST_FILES["sis"]
-        self.testmodule_files = TEST_FILES["testmodules"]
-        self.ctc_enabled = self.atp["ctc_enabled"]
-        self.custom_dir = "CustomD"
-        self.eunitexerunner_flags = self.atp["eunitexerunner_flags"]
-        if self.atp["trace_enabled"].lower() == "true":
-            self.trace_activation_files = TEST_FILES["trace_init"]    
-            self.pmd_files = TEST_FILES["pmd_file"]
-        else:
-            self.trace_activation_files = []    
-            self.pmd_files = []
-        self.test_timeout = self.atp["test_timeout"]
-        self.eunitexerunner_flags = self.atp["eunitexerunner_flags"]
-        self.device_hwid = self.atp["device_hwid"]
-        self.test_harness = self.atp["harness"]
-        self.src_dst = [("" + os.sep + "tsrc" + os.sep + "testmodules" + os.sep + "file1.dll", "c:\sys\bin\file1.dll", "testmodule"),
-            ("" + os.sep + "tsrc" + os.sep + "testmodules" + os.sep + "file2.dll", "c:\sys\bin\file2.dll", "testmodule"),
-            ("" + os.sep + "tsrc" + os.sep + "data" + os.sep + "file1", "e:\sys\bin\file1", "data"),
-            ("" + os.sep + "tsrc" + os.sep + "data" + os.sep + "file2", "e:\sys\bin\file2", "data"),
-            ("" + os.sep + "tsrc" + os.sep + "data" + os.sep + "file3", "e:\sys\bin\file3", "data"),
-            ("" + os.sep + "tsrc" + os.sep + "conf" + os.sep + "file1.cfg", "c:\sys\bin\file1.cfg", "conf"),
-            ("" + os.sep + "tsrc" + os.sep + "conf" + os.sep + "file2.cfg", "c:\sys\bin\file2.cfg", "conf"),
-            ("" + os.sep + "tsrc" + os.sep + "init" + os.sep + "TestFramework.ini", "c:\sys\bin\TestFramework.ini", "engine_ini"),
-            ("" + os.sep + "tsrc" + os.sep + "sis" + os.sep + "file1.sisx", "c:\sys\bin\file1.sisx", ""),
-            ("" + os.sep + "tsrc" + os.sep + "sis" + os.sep + "file2.sisx", "c:\sys\bin\file2.sisx", ""),]
-        self.component_path = str(TEST_PATH.joinpath("tsrc", "group"))
-
-    def test_creation(self):
-        """ Testing creation. """        
-        assert self.atp["testrun_name"] == "testrun"
-        assert self.atp["harness"] == "STIF"
-        assert self.atp["device_type"] == "product"
-    
-    def test_insert_set(self):
-        """ Inserting a set of file. """        
-        self.atp.insert_set(data_files=self.data_files,
-                           config_files=self.config_files,
-                           engine_ini_file=self.engine_ini_file,
-                           image_files=self.image_files,
-                           testmodule_files=self.testmodule_files,
-                           test_timeout=self.test_timeout,
-                           eunitexerunner_flags=self.eunitexerunner_flags,
-                           pmd_files=self.pmd_files,                            
-                           trace_activation_files=self.trace_activation_files,
-                           component_path=self.component_path)
-        self.atp.insert_set(image_files=self.image_files,                           
-                           engine_ini_file=self.engine_ini_file,
-                           sis_files=self.sis_files,
-                           test_timeout=self.test_timeout,
-                           eunitexerunner_flags=self.eunitexerunner_flags,
-                           pmd_files=self.pmd_files,                            
-                           trace_activation_files=self.trace_activation_files,
-                           component_path=self.component_path)
-        self.atp.insert_set(data_files=self.data_files,
-                           config_files=self.config_files,
-                           engine_ini_file=self.engine_ini_file,
-                           image_files=self.image_files,
-                           testmodule_files=self.testmodule_files,
-                           test_timeout=self.test_timeout,
-                           eunitexerunner_flags=self.eunitexerunner_flags,
-                           src_dst=self.src_dst,
-                           pmd_files=self.pmd_files,                            
-                           trace_activation_files=self.trace_activation_files,
-                           component_path=self.component_path)
-        self.atp.insert_set(engine_ini_file=self.engine_ini_file,
-                           test_timeout=self.test_timeout,
-                           eunitexerunner_flags=self.eunitexerunner_flags,
-                           image_files=self.image_files,
-                           test_harness=self.test_harness,
-                           src_dst=self.src_dst,
-                           pmd_files=self.pmd_files,                            
-                           trace_activation_files=self.trace_activation_files,
-                           component_path=self.component_path)
-        self.atp.insert_set(test_timeout=self.test_timeout,      
-                           eunitexerunner_flags=self.eunitexerunner_flags,               
-                           image_files=self.image_files,                        
-                           test_harness=self.test_harness,                      
-                           src_dst=self.src_dst,                                
-                           pmd_files=self.pmd_files,                            
-                           trace_activation_files=self.trace_activation_files,
-                           component_path=self.component_path)  
-
-        assert self.atp.sets[0] == dict(name="set0",
-                                       data_files=self.data_files,
-                                       config_files=self.config_files,
-                                       engine_ini_file=self.engine_ini_file,
-                                       image_files=self.image_files,
-                                       testmodule_files=self.testmodule_files,
-                                       test_timeout=self.test_timeout,
-                                       eunitexerunner_flags=self.eunitexerunner_flags,
-                                       test_harness=self.test_harness,
-                                       src_dst=[],
-                                       pmd_files=self.pmd_files,
-                                       trace_path=self.atp.file_store.joinpath(u"§RUN_NAME§" + os.sep + u"§RUN_START_DATE§_§RUN_START_TIME§", "traces", "set0", "tracelog.blx"),
-                                       trace_activation_files=self.trace_activation_files,
-                                       ctc_enabled=self.atp["ctc_enabled"],
-                                       custom_dir=None,
-                                       component_path=self.component_path)
-        assert self.atp.sets[1] == dict(name="set1",
-                                       image_files=self.image_files,
-                                       engine_ini_file=self.engine_ini_file,
-                                       sis_files=self.sis_files,
-                                       test_timeout=self.test_timeout,
-                                       eunitexerunner_flags=self.eunitexerunner_flags,
-                                       test_harness=self.test_harness,
-                                       pmd_files=self.pmd_files,
-                                       trace_path=self.atp.file_store.joinpath(u"§RUN_NAME§" + os.sep + u"§RUN_START_DATE§_§RUN_START_TIME§", "traces", "set1", "tracelog.blx"),
-                                       trace_activation_files=self.trace_activation_files,
-                                       ctc_enabled=self.atp["ctc_enabled"],
-                                       custom_dir=None,
-                                       component_path=self.component_path)
-
-        assert self.atp.sets[2] == dict(name="set2",
-                                       data_files=self.data_files,
-                                       config_files=self.config_files,
-                                       engine_ini_file=self.engine_ini_file,
-                                       image_files=self.image_files,
-                                       testmodule_files=self.testmodule_files,
-                                       test_timeout=self.test_timeout,
-                                       eunitexerunner_flags=self.eunitexerunner_flags,
-                                       test_harness=self.test_harness,
-                                       src_dst=self.src_dst,
-                                       pmd_files=self.pmd_files,
-                                       trace_path=self.atp.file_store.joinpath(u"§RUN_NAME§" + os.sep + u"§RUN_START_DATE§_§RUN_START_TIME§", "traces", "set2", "tracelog.blx"),
-                                       trace_activation_files=self.trace_activation_files,
-                                       ctc_enabled=self.atp["ctc_enabled"],
-                                       custom_dir=None,
-                                       component_path=self.component_path)
-        assert self.atp.sets[3] == dict(name="set3",
-                                       data_files=[],
-                                       config_files=[],
-                                       engine_ini_file=self.engine_ini_file,
-                                       image_files=self.image_files,
-                                       testmodule_files=[],
-                                       test_timeout=self.test_timeout,
-                                       eunitexerunner_flags=self.eunitexerunner_flags,
-                                       test_harness=self.test_harness,
-                                       src_dst=self.src_dst,
-                                       pmd_files=self.pmd_files,
-                                       trace_path=self.atp.file_store.joinpath(u"§RUN_NAME§" + os.sep + u"§RUN_START_DATE§_§RUN_START_TIME§", "traces", "set3", "tracelog.blx"),
-                                       trace_activation_files=self.trace_activation_files,
-                                       ctc_enabled=self.atp["ctc_enabled"],
-                                       custom_dir=None,
-                                       component_path=self.component_path)
-
-        assert self.atp.sets[4] == dict(name="set4",
-                                       data_files=[],
-                                       config_files=[],
-                                       engine_ini_file=None,
-                                       image_files=self.image_files,
-                                       testmodule_files=[],
-                                       test_timeout=self.test_timeout,
-                                       eunitexerunner_flags=self.eunitexerunner_flags,
-                                       test_harness=self.test_harness,
-                                       src_dst=self.src_dst,
-                                       pmd_files=self.pmd_files,
-                                       trace_path=self.atp.file_store.joinpath(u"§RUN_NAME§" + os.sep + u"§RUN_START_DATE§_§RUN_START_TIME§", "traces", "set4", "tracelog.blx"),
-                                       trace_activation_files=self.trace_activation_files,
-                                       ctc_enabled=self.atp["ctc_enabled"],
-                                       custom_dir=None,
-                                       component_path=self.component_path)
-        
-    def test_post_actions_email(self):
-        """ Testing the send email post-action. """        
-        assert not self.atp.post_actions
-        receiver = "joe.average@example.com"
-        self.atp.report_email = receiver
-        assert len(self.atp.post_actions) == 1
-        action, items = self.atp.post_actions[0]
-        items = dict(items)
-        #assert action == "EmailAction"
-        assert items["to"] == receiver
-    
-    def test_post_actions_ats4_report_only(self):
-        """ Testing the ats4 report only post-action. """        
-        file_store = path("path/to/files")
-        self.atp.file_store = file_store
-        self.atp.harness = "EUNIT"
-        assert len(self.atp.post_actions) == 2
-        action, items = self.atp.post_actions[0]
-        items = dict(items)
-        assert action == "FileStoreAction"
-        assert items["report-type"] == "ATS3_REPORT"
-        assert items["to-folder"].startswith(file_store)
-        assert items["to-folder"].endswith("ATS3_REPORT")
-    
-    def test_post_actions_stif(self):
-        """ Testing STIF post-actions. """        
-        file_store = path("path/to/files")
-        self.atp.file_store = file_store
-        assert len(self.atp.post_actions) == 2
-        action, items = self.atp.post_actions[1]
-        items = dict(items)
-        assert action == "FileStoreAction"
-        assert items["report-type"] == "STIF_COMPONENT_REPORT_ALL_CASES"
-        assert items["to-folder"].startswith(file_store)
-        assert items["to-folder"].endswith("STIF_REPORT")
-        
-    def test_post_actions_diamonds(self):
-        """ Testing Diamonds post-actions. """        
-        self.atp.diamonds_build_url = "http://diamonds.nmp.company.com/diamonds/builds/1234"
-        assert len(self.atp.post_actions) == 1
-        action, items = self.atp.post_actions[0]
-        assert action == "DiamondsAction"
-        assert not items
-
-
-class TestComponentParser(mocker.MockerTestCase):
-    """ Testing the Ats3ComponentParser component parser. """
-    
-    def __init__(self, methodName="runTest"):
-        mocker.MockerTestCase.__init__(self, methodName)
-    
-    def assert_paths(self, path1, path2):
-        """ Checking the path. Validates that path1 and path2 are instance of path and they are equals. """
-        if not isinstance(path1, path):
-            path1 = path(path1)
-        if not isinstance(path2, path):
-            path2 = path(path2)            
-        return self.assertEqual(path1.normpath(), path2.normpath())
-    
-    def setUp(self):
-        """ Setting up TestComponentParser testsuite."""
-        opts = Bunch(build_drive=path(TEST_PATH+os.sep), target_platform="target platform", eunitexerunner_flags="/E S60AppEnv /R Off",
-                     data_dir=["data"], flash_images=[], sis_files=[], test_timeout="60", harness="STIF", trace_enabled="True")
-        self.acp = atc.Ats3ComponentParser(opts)
-        self.acp.tsrc_dir = TSRC
-      
-    def test_detect_dlls(self):
-        """ Testing dlls detection. """
-        # Setup mock objects.
-        process = self.mocker.mock()
-        process.communicate()
-        self.mocker.result(["lib1.dll\npath/to/another/library.dll\nsome/other/file.txt\nlib2.dll\nlib3.dll\n"])
-        obj = self.mocker.replace("subprocess.Popen")
-        obj("abld -w test build target platform", shell=True, stdout=subprocess.PIPE)
-        self.mocker.result(process)
-        
-        exists = self.mocker.replace("os.path.exists")
-        exists()
-        self.mocker.result(True)
-        exists()
-        self.mocker.result(True)
-        exists()
-        self.mocker.result(True)
-        exists()
-        self.mocker.result(False)
-        
-        self.mocker.replay()
-        
-        self.assertEqual([u"lib1.dll", u"library.dll", u"lib2.dll"],
-                         [dll.name for dll in self.acp.tsrc_dll_files()])
-
-    def test_harness(self):
-        """ Detect test harness."""
-        mmp_parser = parser.MmpFileParser()
-        group = TSRC.joinpath("group")
-        for harness, mmp in [
-            ("STIF", group / "stif.mmp"),
-            ("EUNIT", group / "eunit.mmp"),
-            ("STIF", group / "both.mmp"),
-            ]:
-            self.assertEqual(harness, mmp_parser.get_harness(mmp))
-
-class TestXMLGeneration(mocker.MockerTestCase):
-    """
-    Unit tests for the test.xml generation.
-    """
-    def __init__(self, methodName="runTest"):
-        mocker.MockerTestCase.__init__(self, methodName)
-        self.data_files = None
-        self.config_files = None
-        self.testmodule_files = None
-        self.image_files = None
-        self.engine_ini_file = None
-        self.report_email = None
-        self.file_store = None
-        self.diamonds_build_url = None
-        self.test_harness = None     
-        self.src_dst = []
-        self.trace_enabled = None
-        self.pmd_files = None
-        self.trace_activation_files = None
-        self.ctc_enabled = None
-        self.eunitexerunner_flags = None
-        self.test_plan = None
-        self.gen = None
-        self.custom_dir = None
-            
-    def generate_xml(self, trace_enabled="False"):
-        """ Generating the XML. """
-        def files(*paths):
-            """creating tsrc path list"""
-            return [TEST_PATH.joinpath("tsrc", tpath) for tpath in paths]
-        self.testmodule_files = files("testmodules/file1.dll", "testmodules/file2.dll")
-        self.data_files = files("data/file1", "data/file2", "data/file3")
-        self.config_files = files("conf/file1.cfg", "conf/file2.cfg")
-        self.image_files = files("output/images/file1.fpsx", "output/images/file2.fpsx")
-        self.engine_ini_file = files("init/TestFramework.ini")[0]
-        self.report_email = "test.receiver@company.com"
-        self.file_store = path(r"path/to/reports")
-        self.diamonds_build_url = "http://diamonds.nmp.company.com/diamonds/builds/1234"
-        self.test_harness = "STIF"        
-        self.src_dst = []
-        self.trace_enabled = trace_enabled
-        self.pmd_files = TEST_FILES["pmd_file"]
-        self.trace_activation_files = files("trace_init/trace_activation_1.xml")
-        self.ctc_enabled = "True"
-        self.eunitexerunner_flags = "/E S60AppEnv /R Off"
-        self.custom_dir = "CustomB"
-        self.component_path = str(TEST_PATH.joinpath("tsrc", "group"))
-        self.ctc_run_process_params = r"10.0.0.1#x:\ats\drop0.zip#1"
-        
-        self.ctc_network = self.ctc_run_process_params.rsplit("#", 2)[0]
-        self.drop_id = re.findall(".*drop(\d*).zip.*", self.ctc_run_process_params.lower())[0] #extracting int part of drop name
-        self.drop_count = self.ctc_run_process_params.rsplit("#", 1)[1]
-        self.diamonds_id = self.diamonds_build_url.rsplit(r"/", 1)[1]
-
-        self.mocker.restore()
-        test_plan = self.mocker.mock(count=False)
-        mocker.expect(test_plan["testrun_name"]).result("test")
-        mocker.expect(test_plan["harness"]).result("STIF")
-        mocker.expect(test_plan["device_type"]).result("product")
-        mocker.expect(test_plan["plan_name"]).result("test plan")
-        mocker.expect(test_plan["diamonds_build_url"]).result(self.diamonds_build_url)
-        mocker.expect(test_plan["test_timeout"]).result("60")
-        mocker.expect(test_plan["eunitexerunner_flags"]).result("/E S60AppEnv /R Off")
-        mocker.expect(test_plan["device_hwid"]).result("5425")
-        mocker.expect(test_plan["custom_dir"]).result("custom")
-        mocker.expect(test_plan.custom_dir).result(path(r"self.custom_dir"))
-        mocker.expect(test_plan["report_email"]).result(self.report_email)
-        mocker.expect(test_plan["ctc_run_process_params"]).result(self.ctc_run_process_params)
-                
-        if self.trace_enabled.lower() == "true":
-            mocker.expect(test_plan["trace_enabled"]).result("True")
-        else:
-            mocker.expect(test_plan["trace_enabled"]).result("False")
-        if self.trace_enabled == "False":
-            mocker.expect(test_plan.sets).result([
-                dict(name="set0", image_files=self.image_files, data_files=self.data_files,
-                     config_files=self.config_files, testmodule_files=self.testmodule_files,
-                     engine_ini_file=self.engine_ini_file, test_harness="STIF", src_dst=self.src_dst,
-                     ctc_enabled=self.ctc_enabled, eunitexerunner_flags=self.eunitexerunner_flags,
-                     custom_dir=self.custom_dir, component_path=self.component_path),
-                dict(name="set1", image_files=self.image_files, data_files=self.data_files,
-                     config_files=self.config_files, testmodule_files=self.testmodule_files,
-                     engine_ini_file=self.engine_ini_file,test_harness="STIF", src_dst=self.src_dst,
-                     ctc_enabled=self.ctc_enabled, eunitexerunner_flags=self.eunitexerunner_flags,
-                     custom_dir=self.custom_dir, component_path=self.component_path),
-            ])
-        elif self.trace_enabled == "True":
-            mocker.expect(test_plan.sets).result([
-                dict(name="set0", image_files=self.image_files, data_files=self.data_files,
-                     config_files=self.config_files, testmodule_files=self.testmodule_files,
-                     engine_ini_file=self.engine_ini_file, test_harness="STIF", src_dst=self.src_dst,
-                     pmd_files=self.pmd_files, trace_activation_files=self.trace_activation_files,
-                     trace_path=self.file_store.joinpath("traces", "set0", "tracelog.blx"),
-                     ctc_enabled=self.ctc_enabled, eunitexerunner_flags=self.eunitexerunner_flags, component_path=self.component_path),
-                dict(name="set1", image_files=self.image_files, data_files=self.data_files,
-                     config_files=self.config_files, testmodule_files=self.testmodule_files,
-                     engine_ini_file=self.engine_ini_file,test_harness="STIF", src_dst=self.src_dst,
-                     pmd_files=self.pmd_files, trace_activation_files=self.trace_activation_files,
-                     trace_path=self.file_store.joinpath("traces", "set1", "tracelog.blx"),
-                     ctc_enabled=self.ctc_enabled, eunitexerunner_flags=self.eunitexerunner_flags, component_path=self.component_path),
-            ])
-
-        ctc_file_name = "catsctc2html/catsctc2html.exe"
-        ctc_data_path = str(os.path.normpath(r"\\%s\ctc_helium\%s\drop0\set0\ctcdata" % (self.ctc_network, self.diamonds_id)))
-        mon_files = str(os.path.normpath(r"\\%s\ctc_helium\%s\mon_syms\1\MON.sym" % (self.ctc_network, self.diamonds_id)))
-        self.ctc_test_data = [ctc_file_name, self.ctc_network, self.drop_id, self.drop_count, self.diamonds_id, ctc_data_path, mon_files] 
-        
-        mocker.expect(test_plan.post_actions).result([
-            ("RunProcessAction", (("file", ctc_file_name ),
-                                  ("parameters", r"--ctcdata_files=" + ctc_data_path + " --monsym_files=" + mon_files + " --diamonds_build_id=" + self.diamonds_id + " --drop_id=" + self.drop_id + " --total_amount_of_drops=" + self.drop_count ))),
-            ("EmailAction", (("subject", "Release testing"),
-                                 ("to", self.report_email))),
-#            ("FileStoreAction", (("to-folder", self.file_store),
-#                                 ("report-type", "ATS_REPORT"),
-#                                 ("date-format", "yyyyMMdd"),
-#                                 ("time-format", "HHmmss"))),
-#            ("FileStoreAction", (("to-folder", self.file_store),
-#                                 ("report-type", "STIF_COMPONENT_REPORT_ALL_CASES"),
-#                                 ("run-log", "true"),
-#                                 ("date-format", "yyyyMMdd"),
-#                                 ("time-format", "HHmmss"))),
-            ("DiamondsAction", ())
-        ])
-        
-        self.mocker.replay()
-        self.test_plan = test_plan
-        
-        self.gen = adg.Ats3TemplateTestDropGenerator()
-        return self.gen.generate_xml(test_plan)
-
-    def test_basic_structure(self):
-        """ Check that the overall test.xml structure is valid. """
-        xml = self.generate_xml()
-        # Check basics.
-#        assert xml.find(".").tag == "test"
-#        assert xml.find("./name").text == "test"
-#        assert xml.find("./buildid").text == self.diamonds_build_url
-#        assert xml.find("./target").tag
-#        assert xml.find("./target/device").tag
-#        harness, type_, device_hwid = xml.findall("./target/device/property")
-#        assert harness.get("value") == "STIF"
-#        assert type_.get("value") == "product"
-#        assert device_hwid.get("value") == "5425"
-#        
-#        # Check generation of the test plan.
-#        assert xml.find("./plan").get("name") == "test Plan"
-#        assert xml.find("./plan/session").tag 
-#        sets = xml.findall("./execution")
-#        assert len(sets) == 2
-#        assert sets[0].get("name") == "set0-"+str(TEST_PATH.joinpath("tsrc", "group"))
-#        assert sets[0].find("./target/device").tag
-    
-    def test_set_structure(self):
-        """ Check that a <set> element's structure is valid. """
-        xml = self.generate_xml()
-        tstset = xml.find("./execution")
-        assert tstset.tag
-        
-    def test_case_flash_elems(self):
-        """ Test case flash elems. """
-        xml = self.generate_xml()
-        found = False
-        for case in xml.findall(".//task"):
-            if case.find('type').text == 'FlashTask':
-                found = True
-                flashes = case.findall("./parameters/parameter")
-                assert len(flashes) == len(self.image_files)
-                for i, flash_file in enumerate(self.image_files):
-                    assert flashes[i].get("name") == "image-" + str(i + 1)
-                    assert flashes[i].get("value") == "ATS3Drop\\images\\" + flash_file.name
-        assert found
-        
-    def test_case_steps(self):
-        """ Test case steps. """
-        xml = self.generate_xml()
-        steps = iter(xml.findall(".//task"))
-        steps.next() # Flash images
-        check_ctc_start(steps)
-        check_log_dir(steps)
-        self.check_install_data(steps)
-        self.check_install_configuration(steps)
-        self.check_install_tmodules(steps)
-        self.check_install_engine_ini(steps)
-        self.check_run_cases(steps)
-        check_ctc_write(steps)
-        check_ctc_log(steps)
-        check_fetch_logs(steps)
-
-    def check_install_data(self, steps):
-        """ Test install data. """
-        for filename in self.data_files:
-            step = steps.next()
-            assert step.findtext("./type") == "FileUploadTask"
-            params = step.findall("./parameters/parameter")            
-            src = params[0].get("value")
-            assert ntpath.basename(src) == ntpath.basename(filename)
-            assert ntpath.dirname(src) == "ATS3Drop\\set0\\data"
-            dst = params[1].get("value")
-            assert ntpath.basename(dst) == ntpath.basename(filename)
-            assert ntpath.dirname(dst) == r"e:\testing\data"
-    
-    def check_install_configuration(self, steps):
-        """ Test install configuration. """
-        for filepath in self.config_files:
-            step = steps.next()
-            assert step.findtext("./type") == "FileUploadTask"
-            params = step.findall("./parameters/parameter")
-            assert params[0].get("value") == "ATS3Drop\\set0\\conf\\" + ntpath.basename(filepath)
-            assert params[1].get("value") == "e:\\testing\\conf\\" + ntpath.basename(filepath)
-
-    def check_install_tmodules(self, steps):
-        """ Test install tmodules. """
-        for filepath in self.testmodule_files:
-            step = steps.next()
-            assert step.findtext("./type") == "FileUploadTask"
-            params = step.findall("./parameters/parameter")
-            assert params[0].get("value") == "ATS3Drop\\set0\\testmodules\\" + ntpath.basename(filepath)
-            assert params[1].get("value") == "c:\\sys\\bin\\" + ntpath.basename(filepath)
-    
-    def check_install_engine_ini(self, steps):
-        """ Test install engine ini. """
-        filepath = self.engine_ini_file
-        step = steps.next()
-        assert step.findtext("./type") == "FileUploadTask"
-        params = step.findall("./parameters/parameter")
-        assert params[0].get("value") == "ATS3Drop\\set0\\init\\" + ntpath.basename(filepath)
-        assert params[1].get("value") == "c:\\testframework\\" + ntpath.basename(filepath)
-    
-    def check_run_cases(self, steps):
-        """ Test run cases. """
-        step = steps.next()
-        filepath = self.engine_ini_file
-        assert step.findtext("./type") == "StifRunCasesTask"
-        params = step.findall("./parameters/parameter")
-        assert params[0].get("value") == "*"
-        assert params[1].get("value") == "60"
-        assert params[2].get("value") == "c:\\testframework\\" + ntpath.basename(self.engine_ini_file)
-
-    def test_steps_trace_enabled(self):
-        """ Test steps trace enabled. """
-        xml = self.generate_xml(trace_enabled="True")
-        steps = iter(xml.findall(".//task"))
-        steps.next() # Flash images
-        check_ctc_start(steps)
-        check_log_dir(steps)
-        self.check_install_data(steps)
-        self.check_install_configuration(steps)
-        self.check_install_tmodules(steps)
-        self.check_install_engine_ini(steps)
-        #check_trace_start(steps, self.file_store)
-        self.check_run_cases(steps)
-        #check_trace_end_steps(steps, self.file_store)
-        check_ctc_write(steps)
-        check_ctc_log(steps)
-        check_fetch_logs(steps) 
-    
-    def test_post_actions(self):
-        """ Post actions are inserted into XML. """
-        xml = self.generate_xml()        
-        post_actions = xml.findall(".//action")
-        check_ctc_run_process_action(post_actions[0])
-        check_send_email_action(post_actions[1], self.report_email)
-        #check_ats_report_action(post_actions[2], self.file_store)
-        #check_stif_report_action(post_actions[3], self.file_store)
-        check_diamonds_action(post_actions[2])
-    
-#    def test_files(self):
-#        """ Testing files. """
-#        xml = self.generate_xml()
-#        files = iter(xml.findall("./files/file"))
-#        assert files.next().text == r"ATS3Drop/images/file1.fpsx"
-#        assert files.next().text == r"ATS3Drop/images/file2.fpsx"
-#        assert files.next().text == r"ATS3Drop/set0/data/file1"
-#        assert files.next().text == r"ATS3Drop/set0/data/file2"
-#        assert files.next().text == r"ATS3Drop/set0/data/file3"
-#        assert files.next().text == r"ATS3Drop/set0/conf/file1.cfg"
-#        assert files.next().text == r"ATS3Drop/set0/conf/file2.cfg"
-#        assert files.next().text == r"ATS3Drop/set0/testmodules/file1.dll"
-#        assert files.next().text == r"ATS3Drop/set0/testmodules/file2.dll"
-#        assert files.next().text == r"ATS3Drop/set0/init/TestFramework.ini"        
-#        assert files.next().text == r"ATS3Drop/set1/data/file1"
-#        assert files.next().text == r"ATS3Drop/set1/data/file2"
-#        assert files.next().text == r"ATS3Drop/set1/data/file3"
-#        assert files.next().text == r"ATS3Drop/set1/conf/file1.cfg"
-#        assert files.next().text == r"ATS3Drop/set1/conf/file2.cfg"
-#        assert files.next().text == r"ATS3Drop/set1/testmodules/file1.dll"
-#        assert files.next().text == r"ATS3Drop/set1/testmodules/file2.dll"
-#        assert files.next().text == r"ATS3Drop/set1/init/TestFramework.ini"        
-#        self.assertRaises(StopIteration, files.next)
-#        xml = self.generate_xml(trace_enabled="True")
-#        files = iter(xml.findall("./files/file"))
-#        assert files.next().text == r"ATS3Drop/images/file1.fpsx"
-#        assert files.next().text == r"ATS3Drop/images/file2.fpsx"
-#        assert files.next().text == r"ATS3Drop/pmds/pmd_file.pmd"
-#        assert files.next().text == r"ATS3Drop/set0/data/file1"
-#        assert files.next().text == r"ATS3Drop/set0/data/file2"
-#        assert files.next().text == r"ATS3Drop/set0/data/file3"
-#        assert files.next().text == r"ATS3Drop/set0/conf/file1.cfg"
-#        assert files.next().text == r"ATS3Drop/set0/conf/file2.cfg"
-#        assert files.next().text == r"ATS3Drop/set0/testmodules/file1.dll"
-#        assert files.next().text == r"ATS3Drop/set0/testmodules/file2.dll"
-#        assert files.next().text == r"ATS3Drop/set0/init/TestFramework.ini"
-#        assert files.next().text == r"ATS3Drop/set0/trace_init/trace_activation_1.xml"
-#        assert files.next().text == r"ATS3Drop/set1/data/file1"
-#        assert files.next().text == r"ATS3Drop/set1/data/file2"
-#        assert files.next().text == r"ATS3Drop/set1/data/file3"
-#        assert files.next().text == r"ATS3Drop/set1/conf/file1.cfg"
-#        assert files.next().text == r"ATS3Drop/set1/conf/file2.cfg"
-#        assert files.next().text == r"ATS3Drop/set1/testmodules/file1.dll"
-#        assert files.next().text == r"ATS3Drop/set1/testmodules/file2.dll"
-#        assert files.next().text == r"ATS3Drop/set1/init/TestFramework.ini"
-#        assert files.next().text == r"ATS3Drop/set1/trace_init/trace_activation_1.xml"        
-#        self.assertRaises(StopIteration, files.next)
-        
-    def test_generate_drop(self):
-        """ Manifest for ATS3Drop directory structure is generated. """
-        xml = self.generate_xml()
-        strbuffer = StringIO()
-        
-        self.gen.generate_drop(self.test_plan, xml, strbuffer)
-        zfile = zipfile.ZipFile(strbuffer, "r")
-        try:
-            contents = sorted(path(tpath).normpath() for tpath in zfile.namelist())
-            expected = sorted(path(tpath).normpath()
-                           for tpath in [r"ATS3Drop" + os.sep + "set0" + os.sep + "conf" + os.sep + "file1.cfg",
-                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "conf" + os.sep + "file2.cfg",
-                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "data" + os.sep + "file1",
-                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "data" + os.sep + "file2",
-                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "data" + os.sep + "file3",
-                                     r"ATS3Drop" + os.sep + "images" + os.sep + "file1.fpsx",
-                                     r"ATS3Drop" + os.sep + "images" + os.sep + "file2.fpsx",
-                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "init" + os.sep + "TestFramework.ini",
-                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "testmodules" + os.sep + "file1.dll",
-                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "testmodules" + os.sep + "file2.dll",
-                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "conf" + os.sep + "file1.cfg",
-                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "conf" + os.sep + "file2.cfg",
-                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "data" + os.sep + "file1",
-                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "data" + os.sep + "file2",
-                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "data" + os.sep + "file3",
-                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "init" + os.sep + "TestFramework.ini",
-                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "testmodules" + os.sep + "file1.dll",
-                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "testmodules" + os.sep + "file2.dll",
-                                     r"test.xml"])
-            diff = difflib.context_diff(expected, contents)
-            assert contents == expected, "\n".join(diff)
-        finally:
-            zfile.close()
-
-    def test_generate_drop_trace (self):
-        "Manifest for ATS3Drop directory structure is generated when trace enabled."
-        xml = self.generate_xml(trace_enabled="True")
-        strbuffer = StringIO()
-        
-        self.gen.generate_drop(self.test_plan, xml, strbuffer)
-        zfile = zipfile.ZipFile(strbuffer, "r")
-        try:
-            contents = sorted(path(tpath).normpath() for tpath in zfile.namelist())
-            expected = sorted(path(tpath).normpath()
-                           for tpath in [r"ATS3Drop" + os.sep + "set0" + os.sep + "conf" + os.sep + "file1.cfg",
-                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "conf" + os.sep + "file2.cfg",
-                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "data" + os.sep + "file1",
-                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "data" + os.sep + "file2",
-                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "data" + os.sep + "file3",
-                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "trace_init" + os.sep + "trace_activation_1.xml",
-                                     r"ATS3Drop" + os.sep + "images" + os.sep + "file1.fpsx",
-                                     r"ATS3Drop" + os.sep + "images" + os.sep + "file2.fpsx",
-                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "init" + os.sep + "TestFramework.ini",
-                                     r"ATS3Drop" + os.sep + "pmds" + os.sep + "pmd_file.pmd",
-                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "testmodules" + os.sep + "file1.dll",
-                                     r"ATS3Drop" + os.sep + "set0" + os.sep + "testmodules" + os.sep + "file2.dll",
-                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "conf" + os.sep + "file1.cfg",
-                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "conf" + os.sep + "file2.cfg",
-                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "data" + os.sep + "file1",
-                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "data" + os.sep + "file2",
-                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "data" + os.sep + "file3",
-                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "trace_init" + os.sep + "trace_activation_1.xml",
-                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "init" + os.sep + "TestFramework.ini",
-                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "testmodules" + os.sep + "file1.dll",
-                                     r"ATS3Drop" + os.sep + "set1" + os.sep + "testmodules" + os.sep + "file2.dll",
-                                     r"test.xml"])
-            diff = difflib.context_diff(expected, contents)
-            assert contents == expected, "\n".join(diff)
-        finally:
-            zfile.close()
-
-
-class TestXMLGenerationWithPKG(mocker.MockerTestCase):
-    """
-    Unit tests for the test.xml generation.
-    """
-    def __init__(self, methodName="runTest"):
-        mocker.MockerTestCase.__init__(self, methodName)
-        self.src_dst1 = []
-        self.data_files = None
-        self.config_files = None
-        self.testmodule_files = None
-        self.image_files = None
-        self.engine_ini_file = None
-        self.report_email = None
-        self.file_store = None
-        self.diamonds_build_url = None
-        self.trace_enabled = None
-        self.pmd_files = None
-        self.trace_activation_files = None
-        self.ctc_enabled = None
-        self.eunitexerunner_flags = None
-        self.test_plan = None
-        self.gen = None
-        self.src_dst0 = []
-        self.custom_dir = None
-        
-    def generate_xml(self, harness, trace_enabled="False"):
-        """Generates XML"""
-        def files(*paths):
-            """generates paths for the files"""
-            return [TEST_PATH.joinpath("tsrc", tpath) for tpath in paths]
-        self.src_dst1 = []
-        self.data_files = files("data/file1", "data/file2", "data/file3")
-        self.config_files = files("conf/file1.cfg", "conf/file2.cfg")
-        self.testmodule_files = files("testmodules/file1.dll", "testmodules/file2.dll")
-        self.image_files = files("output/images/file1.fpsx", "output/images/file2.fpsx")
-        self.engine_ini_file = files("init/TestFramework.ini")[0]
-        self.report_email = "test.receiver@company.com"
-        self.file_store = path("path/to/reports")
-        self.diamonds_build_url = "http://diamonds.nmp.company.com/diamonds/builds/1234"
-        self.trace_enabled = trace_enabled
-        self.pmd_files = TEST_FILES["pmd_file"]
-        self.trace_activation_files = files("trace_init/trace_activation_1.xml")
-        self.ctc_enabled = "True"
-        self.eunitexerunner_flags = "/E S60AppEnv /R Off"
-        self.custom_dir = "custom"
-        self.custom_files = files("custom/postpostaction.xml", "custom/prepostaction.xml")
-        self.component_path = str(TEST_PATH.joinpath("tsrc", "group"))
-        self.ctc_run_process_params = r"10.0.0.1#x:\ats\drop0.zip#1"
-        
-        
-        self.src_dst0 = [
-            (TEST_PATH.joinpath(r"tsrc" + os.sep + "testmodules" + os.sep + "file1.dll"), path(r"c:\sys\bin\file1.dll"), "testmodule"),
-            (TEST_PATH.joinpath(r"tsrc" + os.sep + "testmodules" + os.sep + "file2.dll"), path(r"c:\sys\bin\file2.dll"), "testmodule"),
-            (TEST_PATH.joinpath(r"tsrc" + os.sep + "data" + os.sep + "file1"), path(r"e:\sys\bin\file1"), "data"),
-            (TEST_PATH.joinpath(r"tsrc" + os.sep + "data" + os.sep + "file2"), path(r"e:\sys\bin\file2"), "data"),
-            (TEST_PATH.joinpath(r"tsrc" + os.sep + "data" + os.sep + "file3"), path(r"e:\sys\bin\file3"), "data"),
-            ]
-        if harness == "STIF" or harness == "MULTI_HARNESS":
-            harness0 = harness1 = "STIF"
-            if "MULTI_HARNESS" in harness:
-                harness1 = "EUNIT"
-                self.src_dst1 = [
-                    (TEST_PATH.joinpath(r"tsrc" + os.sep + "testmodules" + os.sep + "file1.dll"), path(r"c:\sys\bin\file1.dll"), "testmodule"),
-                    (TEST_PATH.joinpath(r"tsrc" + os.sep + "testmodules" + os.sep + "file2.dll"), path(r"c:\sys\bin\file2.dll"), "testmodule"),
-                    (TEST_PATH.joinpath(r"tsrc" + os.sep + "data" + os.sep + "file1"), path(r"e:\sys\bin\file1"), "data"),
-                    (TEST_PATH.joinpath(r"tsrc" + os.sep + "data" + os.sep + "file2"), path(r"e:\sys\bin\file2"), "data"),
-                    (TEST_PATH.joinpath(r"tsrc" + os.sep + "data" + os.sep + "file3"), path(r"e:\sys\bin\file3"), "data"),
-                    ] 
-            self.src_dst0 = [
-                (TEST_PATH.joinpath(r"tsrc" + os.sep + "testmodules" + os.sep + "file1.dll"), path(r"c:\sys\bin\file1.dll"), "testmodule"),
-                (TEST_PATH.joinpath(r"tsrc" + os.sep + "testmodules" + os.sep + "file2.dll"), path(r"c:\sys\bin\file2.dll"), "testmodule"),
-                (TEST_PATH.joinpath(r"tsrc" + os.sep + "data" + os.sep + "file1"), path(r"e:\sys\bin\file1"), "data"),
-                (TEST_PATH.joinpath(r"tsrc" + os.sep + "data" + os.sep + "file2"), path(r"e:\sys\bin\file2"), "data"),
-                (TEST_PATH.joinpath(r"tsrc" + os.sep + "data" + os.sep + "file3"), path(r"e:\sys\bin\file3"), "data"),
-                (TEST_PATH.joinpath(r"tsrc" + os.sep + "conf" + os.sep + "file1.cfg"), path(r"c:\sys\bin\file1.cfg"), "conf"),
-                (TEST_PATH.joinpath(r"tsrc" + os.sep + "conf" + os.sep + "file2.cfg"), path(r"c:\sys\bin\file2.cfg"), "conf"),
-                (TEST_PATH.joinpath(r"tsrc" + os.sep + "init" + os.sep + "TestFramework.ini"), path(r"c:\sys\bin\TestFramework.ini"), "engine_ini"),
-                ]
-            if "STIF" in harness:
-                self.src_dst1 = self.src_dst0
-            
-        elif harness == "EUNIT":
-            harness0 = harness1 = harness
-            self.src_dst1 = self.src_dst0
-            
-        self.mocker.restore()
-        test_plan = self.mocker.mock(count=False)
-        mocker.expect(test_plan["testrun_name"]).result("test")
-        mocker.expect(test_plan["harness"]).result(harness)
-        mocker.expect(test_plan["device_type"]).result("product")
-        mocker.expect(test_plan["plan_name"]).result("test plan")
-        mocker.expect(test_plan["diamonds_build_url"]).result(self.diamonds_build_url)
-        mocker.expect(test_plan["test_timeout"]).result("60")
-        mocker.expect(test_plan["eunitexerunner_flags"]).result("/E S60AppEnv /R Off")
-        mocker.expect(test_plan["eunitexerunner?flags"]).result(self.eunitexerunner_flags)
-        mocker.expect(test_plan["device_hwid"]).result("5425")
-        mocker.expect(test_plan["trace_enabled"]).result(self.trace_enabled)
-        mocker.expect(test_plan["ctc_enabled"]).result(self.ctc_enabled)
-        mocker.expect(test_plan["custom_dir"]).result("custom1A")
-        mocker.expect(test_plan.custom_dir).result(path(r"self.custom_dir"))
-        mocker.expect(test_plan["ctc_run_process_params"]).result(self.ctc_run_process_params)
-        mocker.expect(test_plan["report_email"]).result(self.report_email)
-        if self.trace_enabled == "False":
-            mocker.expect(test_plan.sets).result([
-                dict(name="set0", image_files=self.image_files, data_files=self.data_files,
-                     config_files=self.config_files, testmodule_files=self.testmodule_files,
-                     engine_ini_file=self.engine_ini_file, test_harness=harness0,src_dst=self.src_dst0,
-                     ctc_enabled=self.ctc_enabled, eunitexerunner_flags=self.eunitexerunner_flags,
-                     custom_dir = self.custom_dir, component_path=self.component_path),
-                dict(name="set1", image_files=self.image_files, data_files=self.data_files,
-                     config_files=self.config_files, testmodule_files=self.testmodule_files,
-                     engine_ini_file=self.engine_ini_file, test_harness=harness1, src_dst=self.src_dst1,
-                     ctc_enabled=self.ctc_enabled, eunitexerunner_flags=self.eunitexerunner_flags,
-                     custom_dir = self.custom_dir, component_path=self.component_path),
-            ])
-        else:
-            mocker.expect(test_plan.sets).result([
-                dict(name="set0", image_files=self.image_files, data_files=self.data_files,
-                     config_files=self.config_files, testmodule_files=self.testmodule_files,
-                     engine_ini_file=self.engine_ini_file, test_harness=harness0, src_dst=self.src_dst0,
-                     pmd_files=self.pmd_files, trace_activation_files=self.trace_activation_files,
-                     trace_path=self.file_store.joinpath("traces", "set0", "tracelog.blx"),
-                     ctc_enabled=self.ctc_enabled, eunitexerunner_flags=self.eunitexerunner_flags,
-                     custom_dir = self.custom_dir, component_path=self.component_path),
-                dict(name="set1", image_files=self.image_files, data_files=self.data_files,
-                     config_files=self.config_files, testmodule_files=self.testmodule_files,
-                     engine_ini_file=self.engine_ini_file, test_harness=harness1, src_dst=self.src_dst1,
-                     pmd_files=self.pmd_files, trace_activation_files=self.trace_activation_files,
-                     trace_path=self.file_store.joinpath("traces", "set1", "tracelog.blx"),
-                     ctc_enabled=self.ctc_enabled, eunitexerunner_flags=self.eunitexerunner_flags,
-                     custom_dir = self.custom_dir, component_path=self.component_path),
-            ])
-        mocker.expect(test_plan.post_actions).result([
-            ("EmailAction", (("subject", "Release testing"),
-                                 ("to", self.report_email))),
-#            ("FileStoreAction", (("to-folder", self.file_store),
-#                                 ("report-type", "ATS_REPORT"),
-#                                 ("date-format", "yyyyMMdd"),
-#                                 ("time-format", "HHmmss"))),
-#            ("FileStoreAction", (("to-folder", self.file_store),
-#                                 ("report-type", "STIF_COMPONENT_REPORT_ALL_CASES"),
-#                                 ("run-log", "true"),
-#                                 ("date-format", "yyyyMMdd"),
-#                                 ("time-format", "HHmmss"))),
-            ("DiamondsAction", ())
-        ])
-        
-        self.mocker.replay()
-        self.test_plan = test_plan
-        
-        self.gen = adg.Ats3TemplateTestDropGenerator()
-        return self.gen.generate_xml(test_plan)
-
-    def test_basic_structure(self):
-        "Check that the overall test.xml structure is valid."
-        
-        test_harness = ["STIF", "EUNIT", "MULTI_HARNESS"]
-        
-#        for thar in test_harness:
-#            xml = self.generate_xml(thar)
-#            # Check basics.
-#            assert xml.find(".").tag == "test"
-#            assert xml.find("./name").text == "test"
-#            assert xml.find("./buildid").text == self.diamonds_build_url
-#            assert xml.find("./target").tag
-#            assert xml.find("./target/device").tag
-#            if self.test_plan["harness"] == "MULTI_HARNESS":
-#                harness_1, type_1, device_hwid_1, harness_2, type_2, device_hwid_2 = xml.findall("./target/device/property")
-#            else:
-#                harness_1, type_1, device_hwid_1 = xml.findall("./target/device/property")
-#            
-#            if self.test_plan["harness"] == "MULTI_HARNESS":
-#                assert harness_1.get("value") == "STIF"
-#                assert type_1.get("value") == "product"
-#                assert device_hwid_1.get("value") == "5425"
-#                assert harness_2.get("value") == "EUNIT"
-#                assert type_2.get("value") == "product"
-#                assert device_hwid_2.get("value") == "5425"
-#            else:
-#                assert harness_1.get("value") == thar
-#                assert type_1.get("value") == "product"
-#                assert device_hwid_1.get("value") == "5425"
-#
-#        # Check generation of the test plan.
-#        assert xml.find("./plan").get("name") == "test Plan"
-#        assert xml.find("./plan/session").tag 
-#        sets = xml.findall("./execution")
-#        assert len(sets) == 2
-#        assert sets[0].get("name") == "set0-"+str(TEST_PATH.joinpath("tsrc", "group"))
-#        assert sets[0].find("./target/device").tag
-    
-    def test_set_structure(self):
-        "Check that a <set> element's structure is valid."
-        xml = self.generate_xml("STIF")
-        tstset = xml.find("./execution")
-        assert tstset.tag
-        
-    def test_case_flash_elems(self):
-        """Checks flash target element in the test.xml file"""
-        xml = self.generate_xml("STIF")
-        found = False
-        for case in xml.findall(".//task"):
-            if case.find('type').text == 'FlashTask':
-                found = True
-                flashes = case.findall("./parameters/parameter")
-                assert len(flashes) == len(self.image_files)
-                for i, flash_file in enumerate(self.image_files):
-                    assert flashes[i].get("name") == "image-" + str(i + 1)
-                    assert flashes[i].get("value") == "ATS3Drop\\images\\" + flash_file.name
-        assert found
-
-    def test_case_steps(self):
-        """Checks cases in steps in the test.xml file"""
-        test_harness = ["STIF", "EUNIT", "MULTI_HARNESS"]
-        for thar in test_harness:
-            xml = self.generate_xml(thar)
-            #print et.tostring(xml.getroot())
-            steps = iter(xml.findall(".//task"))
-            steps.next() # Flash images
-            check_ctc_start(steps)
-            check_log_dir(steps)
-            if "MULTI_HARNESS" in thar:            
-                self.check_install_step(steps, "STIF")
-                self.check_run_cases(steps, "STIF")
-                check_ctc_write(steps)
-                check_ctc_log(steps)
-                check_fetch_logs(steps, "STIF")
-                
-                steps.next() # Flash images
-                check_ctc_start(steps)
-                check_log_dir(steps)
-                self.check_install_step(steps, "EUNIT", set_count="1")
-                self.check_run_cases(steps, "EUNIT")
-                check_ctc_write(steps)
-                check_ctc_log(steps, "withpkgfiles")
-                check_fetch_logs(steps, "EUNIT")
-            else:
-                self.check_install_step(steps, thar)
-                self.check_run_cases(steps, thar)
-                check_ctc_write(steps)
-                check_ctc_log(steps)
-                check_fetch_logs(steps, thar)
-
-    def check_install_step(self, steps, harness, set_count="0"):
-        """Checks install steps in the test.xml file"""
-        if harness == "MULTI_HARNESS":
-            dst = [self.src_dst0, self.src_dst1]
-        else:
-            dst = [self.src_dst0]
-        if set_count == "1":
-            dst = [self.src_dst1]
-        
-        for dest in dst:
-            for file1 in dest:
-                step = steps.next()
-                (drive, _) = ntpath.splitdrive(file1[1])
-                filename = ntpath.basename(file1[1])
-                letter = drive[0]
-                #if "FileUploadTask" in step.get("type"):
-                assert step.findtext("./type") == "FileUploadTask"
-                params = step.findall("./parameters/parameter")            
-                src = params[0].get("value")
-                assert ntpath.basename(src) == filename
-                assert ntpath.dirname(src) == "ATS3Drop\\set" + set_count + '\\' + letter + '\\' + "sys\\bin"
-                dst = params[1].get("value")
-                assert ntpath.basename(dst) == filename
-                assert ntpath.dirname(dst) == drive + "\\sys\\bin"
-            
-    
-    def check_run_cases(self, steps, harness="STIF"):
-        """Checks run cases in the test.xml file"""
-        step = steps.next()
-        if harness == "STIF":
-            file_ = self.engine_ini_file 
-            assert step.findtext("./type") == "StifRunCasesTask"
-            params = step.findall("./parameters/parameter")
-            assert params[0].get("value") == "*"
-            assert params[1].get("value") == "60"
-            assert params[2].get("value") == "c:\\sys\\bin\\" + ntpath.basename(self.engine_ini_file)
-        elif harness == "EUNIT":
-            file_ = self.testmodule_files[0]
-            assert step.findtext("./type") == "EUnitTask"
-            params = step.findall("./parameters/parameter")
-            assert params[0].get("value") == path(r"z:\sys\bin\EUNITEXERUNNER.EXE")
-            assert params[1].get("value") == path(r"c:\Shared\EUnit\logs\file1_log.xml")
-            assert params[2].get("value") == "/E S60AppEnv /R Off /F file1 /l xml file1.dll"
-            assert params[3].get("value") == "60"
-            step = steps.next()
-            file_ = self.testmodule_files[1]
-            assert step.findtext("./type") == "EUnitTask"
-            params = step.findall("./parameters/parameter")
-            assert params[0].get("value") == path(r"z:\sys\bin\EUNITEXERUNNER.EXE")
-            assert params[1].get("value") == path(r"c:\Shared\EUnit\logs\file2_log.xml")
-            assert params[2].get("value") == "/E S60AppEnv /R Off /F file2 /l xml file2.dll"
-            assert params[3].get("value") == "60"
-
-    def test_steps_trace_enabled(self):
-        """checks if traing is enabled"""
-        test_harness = ["STIF"]
-        for thar in test_harness:
-            xml = self.generate_xml(thar, trace_enabled="True")
-            steps = iter(xml.findall(".//task"))
-            steps.next() # Flash images
-            check_ctc_start(steps)
-            check_log_dir(steps)
-            self.check_install_step(steps, thar)
-            #check_trace_start(steps, self.file_store)
-            self.check_run_cases(steps)
-            #check_trace_end_steps(steps, self.file_store)
-            check_ctc_write(steps)
-            check_ctc_log(steps)
-            check_fetch_logs(steps)
-        
-    def test_post_actions(self):
-        "Post actions are inserted into XML."
-        xml = self.generate_xml("STIF")
-        post_actions = xml.findall(".//action")
-        check_send_email_action(post_actions[0], self.report_email)
-        #check_ats_report_action(post_actions[1], self.file_store)
-        #check_stif_report_action(post_actions[2], self.file_store)
-        check_diamonds_action(post_actions[1])
-        
-#    def test_files(self):
-#        """Tests if the files are created for mock"""
-#        xml = self.generate_xml("STIF")
-#        files = iter(xml.findall("./files/file"))
-#        assert files.next().text == r"ATS3Drop/images/file1.fpsx"
-#        assert files.next().text == r"ATS3Drop/images/file2.fpsx"
-#        assert files.next().text == r"ATS3Drop/set0/c/sys/bin/file1.dll"
-#        assert files.next().text == r"ATS3Drop/set0/c/sys/bin/file2.dll"
-#        assert files.next().text == r"ATS3Drop/set0/e/sys/bin/file1"
-#        assert files.next().text == r"ATS3Drop/set0/e/sys/bin/file2"
-#        assert files.next().text == r"ATS3Drop/set0/e/sys/bin/file3"
-#        assert files.next().text == r"ATS3Drop/set0/c/sys/bin/file1.cfg"
-#        assert files.next().text == r"ATS3Drop/set0/c/sys/bin/file2.cfg"        
-#        assert files.next().text == r"ATS3Drop/set0/c/sys/bin/TestFramework.ini"
-#        assert files.next().text == r"ATS3Drop/set1/c/sys/bin/file1.dll"
-#        assert files.next().text == r"ATS3Drop/set1/c/sys/bin/file2.dll"
-#        assert files.next().text == r"ATS3Drop/set1/e/sys/bin/file1"
-#        assert files.next().text == r"ATS3Drop/set1/e/sys/bin/file2"
-#        assert files.next().text == r"ATS3Drop/set1/e/sys/bin/file3"
-#        assert files.next().text == r"ATS3Drop/set1/c/sys/bin/file1.cfg"
-#        assert files.next().text == r"ATS3Drop/set1/c/sys/bin/file2.cfg"
-#        assert files.next().text == r"ATS3Drop/set1/c/sys/bin/TestFramework.ini"
-#        self.assertRaises(StopIteration, files.next)
-#        xml = self.generate_xml(harness="STIF", trace_enabled="True")
-#        files = iter(xml.findall("./files/file"))
-#        assert files.next().text == r"ATS3Drop/images/file1.fpsx"
-#        assert files.next().text == r"ATS3Drop/images/file2.fpsx"
-#        assert files.next().text == r"ATS3Drop/pmds/pmd_file.pmd"
-#        assert files.next().text == r"ATS3Drop/set0/trace_init/trace_activation_1.xml"
-#        assert files.next().text == r"ATS3Drop/set0/c/sys/bin/file1.dll"
-#        assert files.next().text == r"ATS3Drop/set0/c/sys/bin/file2.dll"
-#        assert files.next().text == r"ATS3Drop/set0/e/sys/bin/file1"
-#        assert files.next().text == r"ATS3Drop/set0/e/sys/bin/file2"
-#        assert files.next().text == r"ATS3Drop/set0/e/sys/bin/file3"
-#        assert files.next().text == r"ATS3Drop/set0/c/sys/bin/file1.cfg"
-#        assert files.next().text == r"ATS3Drop/set0/c/sys/bin/file2.cfg"
-#        assert files.next().text == r"ATS3Drop/set0/c/sys/bin/TestFramework.ini"
-#        assert files.next().text == r"ATS3Drop/set1/trace_init/trace_activation_1.xml"
-#        assert files.next().text == r"ATS3Drop/set1/c/sys/bin/file1.dll"
-#        assert files.next().text == r"ATS3Drop/set1/c/sys/bin/file2.dll"
-#        assert files.next().text == r"ATS3Drop/set1/e/sys/bin/file1"
-#        assert files.next().text == r"ATS3Drop/set1/e/sys/bin/file2"
-#        assert files.next().text == r"ATS3Drop/set1/e/sys/bin/file3"
-#        assert files.next().text == r"ATS3Drop/set1/c/sys/bin/file1.cfg"
-#        assert files.next().text == r"ATS3Drop/set1/c/sys/bin/file2.cfg"
-#        assert files.next().text == r"ATS3Drop/set1/c/sys/bin/TestFramework.ini"
-#
-#        self.assertRaises(StopIteration, files.next)
-        
-    def test_generate_drop(self):
-        "Manifest for ATS3Drop directory structure is generated."        
-        xml = self.generate_xml("STIF")
-        strbuffer = StringIO()
-        self.gen.generate_drop(self.test_plan, xml, strbuffer)
-        
-        zfile = zipfile.ZipFile(strbuffer, "r")
-        try:
-            contents = sorted(tpath for tpath in zfile.namelist())
-            expected = sorted(tpath
-                           for tpath in [r"ATS3Drop/set0/c/sys/bin/file1.cfg",
-                                     r"ATS3Drop/set0/c/sys/bin/file2.cfg",
-                                     r"ATS3Drop/set0/e/sys/bin/file1",
-                                     r"ATS3Drop/set0/e/sys/bin/file2",
-                                     r"ATS3Drop/set0/e/sys/bin/file3",
-                                     r"ATS3Drop/images/file1.fpsx",
-                                     r"ATS3Drop/images/file2.fpsx",
-                                     r"ATS3Drop/set0/c/sys/bin/TestFramework.ini",
-                                     r"ATS3Drop/set0/c/sys/bin/file1.dll",
-                                     r"ATS3Drop/set0/c/sys/bin/file2.dll",
-                                     r"ATS3Drop/set1/c/sys/bin/file1.cfg",
-                                     r"ATS3Drop/set1/c/sys/bin/file2.cfg",
-                                     r"ATS3Drop/set1/e/sys/bin/file1",
-                                     r"ATS3Drop/set1/e/sys/bin/file2",
-                                     r"ATS3Drop/set1/e/sys/bin/file3",
-                                     r"ATS3Drop/set1/c/sys/bin/TestFramework.ini",
-                                     r"ATS3Drop/set1/c/sys/bin/file1.dll",
-                                     r"ATS3Drop/set1/c/sys/bin/file2.dll",
-                                     r"test.xml"])
-            diff = difflib.context_diff(expected, contents)
-            assert contents == expected, "\n".join(diff)
-        finally:
-            zfile.close()
-
-    def test_generate_drop_trace_enabled(self):
-        "Manifest for ATS3Drop directory structure is generated when trace enabled."
-        xml = self.generate_xml(harness="STIF", trace_enabled="True")
-        strbuffer = StringIO()
-        
-        self.gen.generate_drop(self.test_plan, xml, strbuffer)
-        zfile = zipfile.ZipFile(strbuffer, "r")
-        try:
-            contents = sorted(tpath for tpath in zfile.namelist())
-            expected = sorted(tpath
-                           for tpath in [r"ATS3Drop/set0/c/sys/bin/file1.cfg",
-                                     r"ATS3Drop/set0/c/sys/bin/file2.cfg",
-                                     r"ATS3Drop/set0/e/sys/bin/file1",
-                                     r"ATS3Drop/set0/e/sys/bin/file2",
-                                     r"ATS3Drop/set0/e/sys/bin/file3",
-                                     r"ATS3Drop/set0/trace_init/trace_activation_1.xml",
-                                     r"ATS3Drop/images/file1.fpsx",
-                                     r"ATS3Drop/images/file2.fpsx",
-                                     r"ATS3Drop/pmds/pmd_file.pmd",
-                                     r"ATS3Drop/set0/c/sys/bin/TestFramework.ini",
-                                     r"ATS3Drop/set0/c/sys/bin/file1.dll",
-                                     r"ATS3Drop/set0/c/sys/bin/file2.dll",
-                                     r"ATS3Drop/set1/c/sys/bin/file1.cfg",
-                                     r"ATS3Drop/set1/c/sys/bin/file2.cfg",
-                                     r"ATS3Drop/set1/e/sys/bin/file1",
-                                     r"ATS3Drop/set1/e/sys/bin/file2",
-                                     r"ATS3Drop/set1/e/sys/bin/file3",
-                                     r"ATS3Drop/set1/trace_init/trace_activation_1.xml",
-                                     r"ATS3Drop/set1/c/sys/bin/TestFramework.ini",
-                                     r"ATS3Drop/set1/c/sys/bin/file1.dll",
-                                     r"ATS3Drop/set1/c/sys/bin/file2.dll",
-                                     r"test.xml"])
-            diff = difflib.context_diff(expected, contents)
-            assert contents == expected, "\n".join(diff)
-        finally:
-            zfile.close()
-            
-class TestDropGenerationWithSis(mocker.MockerTestCase):
-    """
-    Unit tests for the test.xml generation with sis files.
-    """
-    def __init__(self, methodName="runTest"):
-        mocker.MockerTestCase.__init__(self, methodName)
-        self.sis_files = None
-        self.image_files = None
-        self.engine_ini_file = None
-        self.report_email = None
-        self.file_store = None
-        self.diamonds_build_url = None
-        self.harness = None
-        self.test_plan = None
-        self.gen = None
-        self.src_dst = []
-        
-    def generate_xml(self):
-        """Geberates XML if sis files"""
-        def files(*paths):
-            """generates paths for the files"""
-            return [TEST_PATH.joinpath("tsrc", tpath) for tpath in paths]
-        self.sis_files = files("sis/file1.sisx", "sis/file2.sisx", "sis/file3.sisx")
-        self.image_files = files("output/images/file1.fpsx", "output/images/file2.fpsx")
-        self.engine_ini_file = files("init/TestFramework.ini")[0]
-        self.report_email = "test.receiver@company.com"
-        self.file_store = path("path/to/reports")
-        self.diamonds_build_url = "http://diamonds.nmp.company.com/diamonds/builds/1234"
-        self.harness = "STIF"
-        self.component_path = str(TEST_PATH.joinpath("tsrc", "group"))
-        self.ctc_run_process_params = r"10.0.0.1#x:\ats\drop0.zip#1"
-        
-        test_plan = self.mocker.mock(count=False)
-        mocker.expect(test_plan["testrun_name"]).result("test")
-        mocker.expect(test_plan["harness"]).result("STIF")
-        mocker.expect(test_plan["device_type"]).result("product")
-        mocker.expect(test_plan["plan_name"]).result("test plan")
-        mocker.expect(test_plan["diamonds_build_url"]).result(self.diamonds_build_url)
-        mocker.expect(test_plan["test_timeout"]).result("60")
-        mocker.expect(test_plan["device_hwid"]).result("5425")
-        mocker.expect(test_plan["ctc_enabled"]).result("False")
-        mocker.expect(test_plan["trace_enabled"]).result("False")
-        mocker.expect(test_plan["custom_dir"]).result("CustomC")
-        mocker.expect(test_plan.custom_dir).result(path(r"self.custom_dir"))
-        mocker.expect(test_plan["ctc_run_process_params"]).result(self.ctc_run_process_params)
-        mocker.expect(test_plan["report_email"]).result(self.report_email)
-        mocker.expect(test_plan.sets).result([
-            dict(name="set0", image_files=self.image_files, sis_files=self.sis_files,
-                 engine_ini_file=self.engine_ini_file, test_harness=self.harness, ctc_enabled="False", component_path=self.component_path),
-             ])
-        mocker.expect(test_plan.post_actions).result([])
-        self.mocker.replay()
-        self.test_plan = test_plan
-        
-        self.gen = adg.Ats3TemplateTestDropGenerator()
-        return self.gen.generate_xml(test_plan)
-
-    def test_case_steps(self):
-        """Checks cases in steps in the test.xml file"""
-        xml = self.generate_xml()
-        steps = iter(xml.findall(".//task"))
-        steps.next() # Flash images
-        steps.next() # Stif log dir creation.
-        self.check_install_sis_files(steps)
-        steps.next() # Install engine ini.
-        self.check_install_sis_to_device(steps)
-        steps.next() # Run cases.
-        steps.next() # Fetch logs.
-        self.assertRaises(StopIteration, steps.next)
-
-    def check_install_sis_files(self, steps):
-        """Checks sis files install steps in the test.xml file"""
-        for filename in self.sis_files:
-            step = steps.next()
-            assert step.findtext("./type") == "FileUploadTask"
-            params = step.findall("./parameters/parameter")
-            # TO DO: Should sis files be specified outside of the set?
-            assert params[0].get("value") == "ATS3Drop\\set0\\sis\\" + ntpath.basename(filename)
-            assert params[1].get("value") == "c:\\testframework\\" + ntpath.basename(filename)
-
-    def check_install_sis_to_device(self, steps):
-        """Checks sis files installation on the device"""
-        for filename in self.sis_files:
-            step = steps.next()
-            assert step.findtext("./type") == "InstallSisTask"
-            params = step.findall("./parameters/parameter")
-            assert params[-1].get("value") == "c:\\testframework\\" + ntpath.basename(filename)
--- a/buildframework/helium/tools/common/python/lib/cpythontest/test_ats4_aste.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,500 +0,0 @@
-# -*- coding: latin-1 -*-
-
-#============================================================================ 
-#Name        : test_ats4_aste.py 
-#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:
-#===============================================================================
-
-""" Testing ATS4 ASTE framework. """
-
-# pylint: disable-msg=E1101
-
-from cStringIO import StringIO
-from pprint import pprint
-from xml.etree.ElementTree import fromstring, tostring
-from xml.etree import ElementTree as et
-import difflib
-import logging
-logging.getLogger().setLevel(logging.ERROR)
-import re
-import tempfile
-import zipfile
-import os
-
-from path import path
-import amara
-import mocker
-
-import ats3.aste
-
-TEST_PATH = None
-TEST_FILES = {}
-TEST_ASSET_FILES = {}
-TSRC = None
-OUTPUT = None
-TEST_ZIP_PATH = None
-
-# Shortcuts
-E = et.Element
-SE = et.SubElement
-
-_logger = logging.getLogger("test.ats4_aste")
-
-class Bunch(object):
-    
-    def __init__(self, **kwargs): 
-        self.__dict__.update(kwargs)
-    
-
-def equal_xml(xml1, xml2):
-    """Check the equality of the given XML snippets.
-    
-    Tag name equality:
-    
-    >>> equal_xml('<a/>', '<a/>')
-    True
-    >>> equal_xml('<a/>', '<b/>')
-    False
-    
-    Attribute equality:
-    
-    >>> equal_xml('<a k="v"/>', '<a k="v"/>')
-    True
-    >>> equal_xml('<a k="v"/>', '<a k="w"/>')
-    False
-    
-    Text content equality:
-    
-    >>> equal_xml('<a>v</a>', '<a>v</a>')
-    True
-    >>> equal_xml('<a>v</a>', '<a>w</a>')
-    False
-    >>> equal_xml('<a>v</a>', '<a></a>')
-    False
-    
-    Text content equality when whitespace differs:
-    >>> equal_xml('<a>v</a>', '<a>v </a>')
-    True
-
-    Equality of child elements:
-    
-    >>> equal_xml('<a><b><c k="v"/></b></a>', '<a><b><c k="v"/></b></a>')
-    True
-    >>> equal_xml('<a><b><c k="v"/></b></a>', '<a><b><c k="w"/></b></a>')
-    False
-    >>> equal_xml('<a><b><c k="v"/>v</b></a>', '<a><b><c k="v"/>w</b></a>')
-    False
-    >>> equal_xml('<a><b><c k="v"/>v</b></a>', '<a><b><c k="v"/>v </b></a>')
-    True
-    
-    """
-    if isinstance(xml1, basestring):
-        xml1 = fromstring(xml1)
-    if isinstance(xml2, basestring):
-        xml2 = fromstring(xml2)
-    if xml1.tag != xml2.tag:
-        return False
-    if xml1.attrib != xml2.attrib:
-        return False
-    if xml1.text:
-        if not xml2.text:
-            return False
-    if xml2.text:
-        if not xml1.text:
-            return False
-    if xml1.text and xml2.text and xml1.text.strip() != xml2.text.strip():
-        return False
-    if xml1.tail is not None and xml2.tail is not None:
-        if xml1.tail.strip() != xml2.tail.strip():
-            return False
-    elif xml1.tail != xml2.tail:
-        return False
-    children1 = list(xml1.getchildren())
-    children2 = list(xml2.getchildren())
-    if len(children1) != len(children2):
-        return False
-    for child1, child2 in zip(children1, children2):
-        return equal_xml(child1, child2)
-    return True        
-
-
-def setup_module():
-    global TEST_PATH, OUTPUT, TEST_ZIP_PATH
-    TEST_PATH = path(tempfile.mkdtemp())
-    OUTPUT = TEST_PATH.joinpath("TestAsset")
-    TEST_ZIP_PATH = TEST_PATH.joinpath("test_zip")
-    asset = TEST_PATH
-    component = TEST_PATH
-    component.joinpath("group").makedirs()
-    for path_parts in (("output", "images", "file1.fpsx"),
-                       ("output", "images", "file2.fpsx")):
-        filename = component.joinpath(*path_parts)
-        if not filename.parent.exists():
-            filename.parent.makedirs()
-        filename.touch()
-        TEST_FILES.setdefault(path_parts[1], []).append(file)
-    for path_parts in (("TestAsset", "Localisation", "S60", "localisation.txt"),
-                       ("TestAsset", "TestCases", "TC_100_Test0", "file1.sis"),
-                       ("TestAsset", "TestCases", "TC_100_Test0", "file2.tcf"),
-                       ("TestAsset", "Tools", "TestCaseCreator", "test_creator.ini"),
-                       ("TestAsset", "testdrop.xml"),):
-        filename = asset.joinpath(*path_parts)
-        if not filename.parent.exists():
-            filename.parent.makedirs()
-        filename.touch()
-        TEST_ASSET_FILES.setdefault(path_parts[1], []).append(file)
-    try:
-        zip_component = TEST_ZIP_PATH
-        filename = zip_component.joinpath("TestAsset.zip")
-        if not filename.parent.exists():
-            filename.parent.makedirs()
-        filename.touch()
-        zfile = zipfile.ZipFile(zip_component.joinpath("TestAsset.zip"), "w", zipfile.ZIP_DEFLATED)
-        for p in TEST_ASSET_FILES:
-            print p
-            zfile.write(p)
-        zfile.close()
-        TEST_ASSET_FILES.setdefault("ZIP", []).append(file)
-    except OSError:
-        print "Got except OSError. Continuing...\n"  
-        
-    
-def teardown_module():
-    path(TEST_PATH).rmtree()
-    
-    
-class TestTestPlan(mocker.MockerTestCase):
-
-    def __init__(self, methodName="runTest"):
-        mocker.MockerTestCase.__init__(self, methodName)
-             
-    def setUp(self):
-        opts = Bunch(testrun_name="testrun", harness="ASTE", 
-                     device_type="product", plan_name="ats3_test_plan", diamonds_build_url="",
-                     software_version="W810", software_release="SPP 51.32", device_language="English",
-                     testasset_location=TEST_PATH.joinpath("TestAsset"), testasset_caseids="100",repeat="1", report_email="",
-                     file_store=path(), test_timeout="60", device_hwid="5425", test_type="smoke")
-        self.tp = ats3.aste.AsteTestPlan(opts)
-        self.image_files = TEST_FILES["images"]
-        self.test_timeout = self.tp["test_timeout"]
-        self.device_hwid = self.tp["device_hwid"]
-        self.test_harness = self.tp["harness"]
-        self.device_language = self.tp["device_language"]
-        self.software_release = self.tp["software_release"]
-        self.software_version = self.tp["software_version"]
-        self.testasset_caseids = self.tp["testasset_caseids"]
-        self.testasset_location = self.tp["testasset_location"]
-        self.test_type = self.tp["test_type"]
-        
-        if self.testasset_location != "":
-            self.test_asset_testcases = [self.testasset_location.joinpath("TestCases", "TC_100_Test0", "file1.sis"), self.testasset_location.joinpath("TestCases", "TC_100_Test0", "file2.tcf")]
-            self.test_asset_tools = [self.testasset_location.joinpath("Tools", "TestCaseCreator", "test_creator.ini")]
-            self.test_asset_localisation = [self.testasset_location.joinpath("Localisation", "S60", "localisation.txt")]
-            self.test_asset_testdrop = self.testasset_location.joinpath("testdrop.xml")
-        else:
-            self.test_asset_testcases = TEST_ASSET_FILES["TestCases"]
-            self.test_asset_tools = TEST_ASSET_FILES["Tools"]
-            self.test_asset_localisation = TEST_ASSET_FILES["Localisation"]
-            self.test_asset_testdrop = TEST_ASSET_FILES["testdrop.xml"]
-
-            
-    def test_creation(self):        
-        assert self.tp["testrun_name"] == "testrun"
-        assert self.tp["harness"] == "ASTE"
-        assert self.tp["device_type"] == "product"
-    
-    def test_insert_set(self):
-        
-        self.tp.insert_set(image_files=self.image_files,
-                           test_timeout=self.test_timeout)
-        
-        assert self.tp.sets[0] == dict(name="set0",
-                                       image_files=self.image_files,
-                                       test_timeout=self.test_timeout,
-                                       test_harness=self.test_harness)
-
-    def test_post_actions_email(self):
-        assert not self.tp.post_actions
-        receiver = "joe.average@example.com"
-        self.tp.report_email = receiver
-        assert len(self.tp.post_actions) == 1
-        action, items = self.tp.post_actions[0]
-        items = dict(items)
-        assert action == "SendEmailAction"
-        assert items["to"] == receiver
-    
-    def test_post_actions_ats3_report_only(self):
-        file_store = path("path/to/files")
-        self.tp.file_store = file_store
-        self.tp.harness = "EUNIT"
-        assert len(self.tp.post_actions) == 2
-        action, items = self.tp.post_actions[0]
-        items = dict(items)
-        assert action == "FileStoreAction"
-        assert items["report-type"] == "ATS_REPORT"
-        assert items["to-folder"].startswith(file_store)
-        assert items["to-folder"].endswith("ATS3_REPORT")
-    
-    def test_post_actions_aste(self):
-        file_store = path("path/to/files")
-        self.tp.file_store = file_store
-        assert len(self.tp.post_actions) == 2
-        action, items = self.tp.post_actions[1]
-        items = dict(items)
-        assert action == "FileStoreAction"
-        assert items["report-type"] == "ASTE_REPORT"
-        assert items["to-folder"].startswith(file_store)
-        assert items["to-folder"].endswith("ASTE_REPORT")
-        
-    def test_post_actions_diamonds(self):
-        self.tp.diamonds_build_url = "http://diamonds.nmp.company.com/diamonds/builds/1234"
-        assert len(self.tp.post_actions) == 1
-        action, items = self.tp.post_actions[0]
-        assert action == "DiamondsAction"
-        assert not items
-
-
-            
-class TestXMLGeneration(mocker.MockerTestCase):
-    """
-    Unit tests for the test.xml generation.
-    """    
-
-    def __init__(self, methodName="runTest"):
-        self.image_files = None
-        self.report_email = None
-        self.diamonds_build_url = None
-        self.test_harness = None
-        self.file_store = None
-        self.testasset_location = None
-        self.test_plan = None
-        self.gen = None
-        mocker.MockerTestCase.__init__(self, methodName)
-        
-        
-    def generate_xml(self):
-        def files(*paths):
-            return [TEST_PATH.joinpath(p) for p in paths]
-        self.image_files = files("output/images/file1.fpsx", "output/images/file2.fpsx")
-        self.report_email = "test.receiver@company.com"
-        self.diamonds_build_url = "http://diamonds.nmp.company.com/diamonds/builds/1234"
-        self.test_harness = "ASTE"
-        self.file_store = path(r"path/to/reports")
-        self.testasset_location = OUTPUT
-        
-        self.mocker.restore()
-        test_plan = self.mocker.mock(count=False)
-        mocker.expect(test_plan["testrun_name"]).result("test")
-        mocker.expect(test_plan["harness"]).result("ASTE")
-        mocker.expect(test_plan["device_type"]).result("product")
-        mocker.expect(test_plan["plan_name"]).result("test plan")
-        mocker.expect(test_plan["diamonds_build_url"]).result(self.diamonds_build_url)
-        mocker.expect(test_plan["test_timeout"]).result("60")
-        mocker.expect(test_plan["device_hwid"]).result("5425")
-        mocker.expect(test_plan["testasset_location"]).result(self.testasset_location)
-        mocker.expect(test_plan["testasset_caseids"]).result("100")
-        mocker.expect(test_plan["report_email"]).result(self.report_email)
-        mocker.expect(test_plan["software_release"]).result("SPP 51.32")
-        mocker.expect(test_plan["software_version"]).result("W810")
-        mocker.expect(test_plan["device_language"]).result("English")
-        mocker.expect(test_plan["test_type"]).result("smoke")
-        mocker.expect(test_plan["temp_directory"]).result(TEST_PATH)
-        mocker.expect(test_plan.sets).result([
-            dict(name="set0", image_files=self.image_files, test_harness="ASTE")])
-        mocker.expect(test_plan.post_actions).result([
-            ("EmailAction", (("subject", "Release testing"),
-                                 ("to", self.report_email))),
-#            ("FileStoreAction", (("to-folder", self.file_store),
-#                                 ("report-type", "ATS_REPORT"),
-#                                 ("date-format", "yyyyMMdd"),
-#                                 ("time-format", "HHmmss"))),
-#            ("FileStoreAction", (("to-folder", self.file_store),
-#                                 ("report-type", "ASTE_REPORT"),
-#                                 ("run-log", "true"),
-#                                 ("date-format", "yyyyMMdd"),
-#                                 ("time-format", "HHmmss"))),
-            ("DiamondsAction", ())
-        ])
-        
-        self.mocker.replay()
-        self.test_plan = test_plan
-        
-        self.gen = ats3.aste.AsteTemplateTestDropGenerator()
-        return self.gen.generate_xml(test_plan)
-
-    def test_basic_structure(self):
-        "Check that the overall test.xml structure is valid."
-        xml = self.generate_xml()
-        # Check basics.
-#        assert xml.find(".").tag == "test"
-#        assert xml.find("./name").text == "test"
-#        assert xml.find("./buildid").text == self.diamonds_build_url
-#        assert xml.find("./target").tag
-#        assert xml.find("./target/device").tag
-#        harness, hardware, device_hwid = xml.findall("./target/device/property")
-#        softwareVersion, softwareRelease, deviceLanguage = xml.findall("./target/device/setting")
-#        assert harness.get("value") == "ASTE"
-#        assert hardware.get("value") == "product"
-#        assert softwareVersion.get("value") == "W810"
-#        assert softwareRelease.get("value") == "SPP 51.32"
-#        assert deviceLanguage.get("value") == "English"
-#        assert device_hwid.get("value") == "5425"
-#        
-#        # Check generation of the test plan.
-#        assert xml.find("./plan").get("name") == "Plan smoke product"
-#        assert xml.find("./plan/session").tag 
-#        sets = xml.findall("./plan/session/set")
-#        assert len(sets) == 1
-#        assert sets[0].get("name") == "set0"
-#        assert sets[0].find("./target/device").tag
-    
-    def test_set_structure(self):
-        "Check that a <set> element's structure is valid."
-        xml = self.generate_xml()
-#        tstset = xml.find("./plan/session/set")
-#        assert tstset.tag
-#        case = tstset.find("./case")
-#        assert case.tag
-#        assert case.get("name") == "set0 case"                
-        
-    def test_case_flash_elems(self):
-        """ Test case flash elems. """
-        xml = self.generate_xml()
-        found = False
-        for case in xml.findall(".//task"):
-            if case.find('type').text == 'FlashTask':
-                found = True
-                flashes = case.findall("./parameters/parameter")
-                assert len(flashes) == len(self.image_files)
-                for i, flash_file in enumerate(self.image_files):
-                    assert flashes[i].get("name") == "image-" + str(i + 1)
-                    assert flashes[i].get("value") == "ATS3Drop\\images\\" + flash_file.name
-        assert found
-    
-    def test_steps(self):
-        xml = self.generate_xml()
-        steps = iter(xml.findall(".//task"))
-        step = steps.next()
-        step = steps.next()
-        self.check_executeasset_step(steps)
-
-    def check_executeasset_step(self, steps):
-        step = steps.next()
-        assert step.findtext("./type") == "SetTestAssetPackageTask"
-        params = step.findall("./parameters/parameter")
-        #assert params[0].get("repeat") == "1"
-        assert params[0].get("value") == "ATS3Drop\\TestAssets\\TestAsset.zip"
-        #assert params[2].get("testcase-ids") == "100"
-
-    def test_post_actions(self):
-        "Post actions are inserted into XML."
-        xml = self.generate_xml()        
-        post_actions = xml.findall(".//action")
-        self.check_send_email_action(post_actions[0])
-#        self.check_ats_report_action(post_actions[1])
-#        self.check_aste_report_action(post_actions[2])
-        self.check_diamonds_action(post_actions[1])
-
-    def check_send_email_action(self, action):
-        assert action.findtext("./type") == "EmailAction"
-        params = action.findall("./parameters/parameter")
-        assert params[0].get("name") == "subject"
-        #assert params[0].get("value") == "email subject"
-        #assert params[1].get("name") == "type"
-        #assert params[1].get("value") == "ATS3_REPORT"
-        #assert params[2].get("name") == "send-files"
-        #assert params[2].get("value") == "true"
-        assert params[1].get("name") == "to"
-        assert params[1].get("value") == self.report_email
-
-    def check_ats_report_action(self, action):
-        assert action.findtext("./type") == "FileStoreAction"
-        params = action.findall("./parameters/parameter")
-        assert params[0].get("name") == "to-folder"
-        assert params[0].get("value") == self.file_store
-        assert params[1].get("name") == "report-type"
-        assert params[1].get("value") == "ATS_REPORT"
-        assert params[2].get("name") == "date-format"
-        assert params[2].get("value") == "yyyyMMdd"
-        assert params[3].get("name") == "time-format"
-        assert params[3].get("value") == "HHmmss"
-
-    def check_aste_report_action(self, action):
-        assert action.findtext("./type") == "FileStoreAction"
-        params = action.findall("./parameters/parameter")
-        assert params[0].get("name") == "to-folder"
-        assert params[0].get("value") == self.file_store
-        assert params[1].get("name") == "report-type"
-        assert params[1].get("value") == "ASTE_REPORT"
-        assert params[2].get("name") == "run-log"
-        assert params[2].get("value") == "true"
-        assert params[3].get("name") == "date-format"
-        assert params[3].get("value") == "yyyyMMdd"
-        assert params[4].get("name") == "time-format"
-        assert params[4].get("value") == "HHmmss"
-        
-    def check_diamonds_action(self, action):
-        assert action.findtext("./type") == "DiamondsAction"
-        assert not action.findall("./parameters/parameter")
-    
-    def test_files(self):
-        xml = self.generate_xml()
-#        files = iter(xml.findall("./files/file"))
-#        assert files.next().text == r"ATS3Drop" + os.sep + "images" + os.sep + "file1.fpsx"
-#        assert files.next().text == r"ATS3Drop" + os.sep + "images" + os.sep + "file2.fpsx"
-#        assert files.next().text == r"ATS3Drop" + os.sep + "TestAssets" + os.sep + "TestAsset.zip"
-#        self.assertRaises(StopIteration, files.next)
-        
-    def test_generate_testasset_zip(self):
-        self.generate_xml()
-        if re.search(r"[.]zip", self.test_plan["testasset_location"]):
-            pass
-        else:
-            strbuffer = StringIO()
-            assert strbuffer == self.gen.generate_testasset_zip(self.test_plan, strbuffer)
-            zfile = zipfile.ZipFile(strbuffer, "r")
-            try:
-                contents = sorted(path(p).normpath() for p in zfile.namelist())
-                expected = sorted(path(p).normpath()
-                               for p in [(r"Localisation" + os.sep + "S60" + os.sep + "localisation.txt"),
-                                         (r"TestCases" + os.sep + "TC_100_Test0" + os.sep + "file1.sis"),
-                                         (r"TestCases" + os.sep + "TC_100_Test0" + os.sep + "file2.tcf"),
-                                         (r"Tools" + os.sep + "TestCaseCreator" + os.sep + "test_creator.ini"),
-                                         (r"testdrop.xml")])
-                diff = difflib.context_diff(expected, contents)
-                assert contents == expected, "\n".join(diff)
-            finally:
-                zfile.close()
-        
-    def test_generate_drop(self):
-        "Manifest for ATS3Drop directory structure is generated."
-        xml = self.generate_xml()
-        strbuffer = StringIO()
-
-        self.gen.generate_drop(self.test_plan, xml, strbuffer)
-        zfile = zipfile.ZipFile(strbuffer, "r")
-        try:
-            contents = sorted(path(p).normpath() for p in zfile.namelist())
-            expected = sorted(path(p).normpath()
-                           for p in [r"ATS3Drop" + os.sep + "images" + os.sep + "file1.fpsx",
-                                     r"ATS3Drop" + os.sep + "images" + os.sep + "file2.fpsx",
-                                     r"ATS3Drop" + os.sep + "TestAssets" + os.sep + "TestAsset.zip",
-                                     r"test.xml"])
-            diff = difflib.context_diff(expected, contents)
-            assert contents == expected, "\n".join(diff)
-        finally:
-            zfile.close()
--- a/buildframework/helium/tools/common/python/lib/cpythontest/test_atsant.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-#============================================================================ 
-#Name        : test_atsant.py 
-#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:
-#===============================================================================
-
-""" atsant.py module tests. """
-
-import os
-import logging
-_logger = logging.getLogger('test.atsant')
-
-import atsant
-
-def test_atsant():
-    files = atsant.files_to_test(os.path.join(os.environ['HELIUM_HOME'], 'tests/data/packageiad/layers.sysdef.xml'), None, None, 'z:')
-    assert len(files) == 3
\ No newline at end of file
--- a/buildframework/helium/tools/common/python/lib/cpythontest/test_atsconfigparser.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,101 +0,0 @@
-#============================================================================ 
-#Name    : test_atsconfigparser.py
-#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:
-#===============================================================================
-
-""" Testing the ATS configuration file """
-
-import os
-import logging
-import tempfile
-import unittest
-
-import ats3.atsconfigparser
-
-_logger = logging.getLogger('test.atsconfigparser')
-logging.basicConfig(level=logging.INFO)
-
-class AtsConfigParserTest(unittest.TestCase):
-      
-    def test_x(self):
-        spectext = """<ATSConfigData>
-    <config name="common" abstract="true">
-
-        <!-- Properties to add/modify -->
-        <config type="properties">
-           <set name="HARNESS" value="STIFx" />
-           <set name="HARNESS2" value="STIF2"/>
-           <set name="HARNESS3" value="STIF2"/>
-           <set name="2" value="3" />
-        </config>
-
-        <!-- Attributes to modify -->
-        <config type="attributes">
-           <set name="xyz" value="2" />
-           <set name="significant" value="true" />
-        </config>
-
-        <!-- Settings to add/modify -->
-        <config type="settings">
-           <set name="HARNESS" value="STIF" />
-           <set name="2" value="3" />
-        </config>
-
-    </config>
-</ATSConfigData>
-        """
-
-        testxmldata = """<test>
-  <name>helium_clock</name>
-  <target>
-    <device alias="DEFAULT_STIF" rank="none">
-      <property name="HARNESS" value="STIF"/>
-      <property name="HARNESS2" value="STIF"/>
-      <property name="HARNESS3" value="STIF"/>
-    </device>
-    <device alias="DEFAULT_EUIT" rank="none">
-      <property name="HARNESS" value="STIF"/>
-      <property name="HARNESS2" value="STIF3"/>
-    </device>
-  </target>
-  <plan passrate="100" harness="STIF" enabled="true" name="helium_clock Plan" significant="false">
-    <session passrate="100" harness="STIF" enabled="true" name="session" significant="false">
-      <set passrate="100" harness="STIF" enabled="true" name="set0" significant="false">
-        <target>
-          <device alias="DEFAULT_STIF" rank="master"/>
-        </target>
-      </set>
-    </session>
-  </plan>
-</test>
-        """
-        
-        (fd, filename) = tempfile.mkstemp()
-        f = os.fdopen(fd, 'w')
-        f.write(spectext)
-        f.close()
-        
-        output = ats3.atsconfigparser.converttestxml(filename, testxmldata)
-        os.remove(filename)
-        _logger.info(output)
-        assert '<property name="2" value="3"/>' in output
-        assert '<property name="HARNESS" value="STIFx"/>' in output
-        assert '<property name="HARNESS" value="STIF"/>' not in output
-        assert '<property name="HARNESS2" value="STIF2"/>' in output
-        assert '<property name="HARNESS2" value="STIF3"/>' not in output
-        assert '<property name="HARNESS3" value="STIF2"/>' in output
-        
\ No newline at end of file
--- a/buildframework/helium/tools/common/python/lib/cpythontest/test_atsconfiguration.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,120 +0,0 @@
-# -*- encoding: latin-1 -*-
-
-#============================================================================ 
-#Name    : test_ATSconfiguration.py 
-#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:
-#===============================================================================
-
-""" Testing the ATS configuration file """
-
-import logging
-import StringIO
-import unittest
-
-import configuration
-import ats3.parsers
-
-_logger = logging.getLogger('test.atsconfiguration')
-logging.basicConfig(level=logging.INFO)
-
-
-
-def test_ATS_element():
-    """ ATS elements can be used in configuration. """
-    config_text = """
-<ATSConfigData>
-    <config name="properties">
-    <set name="PA" value="foo"/>
-    </config>
-    <config name="attributes">
-    <set name="attrs" value="foo"/>
-    <set name="AB" value="100"/>
-    <set name="AC" value="101"/>
-    </config>
-</ATSConfigData>"""
-
-    builder = configuration.NestedConfigurationBuilder(StringIO.StringIO(config_text))
-    config = builder.getConfiguration().getConfigurations()
-    assert config[0]['PA'] == 'foo'
-    assert config[1]['AB'] == '100'
-
-
-
-def test_ATS_config_attirbutes():
-    """ ATS elements can be used attributes only. """
-    config_text = """
-<ATSConfigData>
-    <config name="attributes">
-    <set name="attrs" value="foo"/>
-    <set name="AB" value="100"/>
-    <set name="AC" value="101"/>
-    </config>
-</ATSConfigData>"""
-    (params, attrs) = ats3.parsers.split_config_to_attributes_and_properties(StringIO.StringIO(config_text))
-
-    print attrs
-    print params
-    assert params ==  {}
-    assert attrs ==  {u'attrs': u'foo', u'AC': u'101', u'AB': u'100'}
-
-def test_ATS_config_properties():
-    """ ATS elements can be used properties only. """
-    config_text = """
-<ATSConfigData>
-    <config name="noattributes">
-    <set name="attrs" value="foo"/>
-    <set name="AB" value="100"/>
-    <set name="AC" value="101"/>
-    </config>
-    <config name="properties">
-    <set name="HW" value="foo"/>
-    </config>
-</ATSConfigData>"""
-    (params, attrs) = ats3.parsers.split_config_to_attributes_and_properties(StringIO.StringIO(config_text))
-
-    print attrs
-    print params
-    assert params ==  {u'HW': u'foo' }
-    assert attrs ==  { }
-
-
-def test_ATS_element3():
-    """ All alements can be used and several times. """
-    config_text = """
-<ATSConfigData>
-    <config name="attributes">
-    <set name="attrs" value="foo"/>
-    <set name="AB" value="100"/>
-    <set name="AC" value="101"/>
-    </config>
-    <config name="properties">
-    <set name="PA" value="foo"/>
-    </config>
-    <config name="properties">
-    <set name="HW" value="bar"/>
-    </config>
-</ATSConfigData>"""
-    	
-    (params, attrs) = ats3.parsers.split_config_to_attributes_and_properties(StringIO.StringIO(config_text))
-
-    print attrs
-    print params
-    assert params ==  {u'PA': u'foo' , u'HW': u'bar'}
-    assert attrs ==  {u'attrs': u'foo', u'AC': u'101', u'AB': u'100'}
-
-
-
--- a/buildframework/helium/tools/common/python/lib/cpythontest/test_buildmodel.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,141 +0,0 @@
-#============================================================================ 
-#Name        : test_buildmodel.py 
-#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:
-#===============================================================================
-
-""" Test build.model module. """
-
-import os
-import sys
-import tempfile
-import unittest
-
-import build.model
-import configuration
-import ccm
-import amara
-import logging
-
-_logger = logging.getLogger('test.bom')
-
-database = "to1tobet"
-
-class BOMMockFolder:    
-    def __init__(self, name, instance, description, tasks):
-        self.name = name
-        self.instance = instance
-        self.description = description
-        self.tasks = tasks
-        
-class BOMMockProject:
-    def __init__(self, name):
-        self.name = name
-    
-    def __str__(self):
-        return self.name
-    
-    @property
-    def tasks(self):
-        return []
-    
-    @property
-    def folders(self):
-        return [BOMMockFolder('5856', 'tr1s60', "all completed tasks for release ABS_domain/abs.mcl for collaborative projects", [])] 
-    
-class BOMMock:
-    
-    def __init__(self):
-        self.config = {}
-        self.config['build.id'] = "mock"
-    
-    @property
-    def projects(self):    
-        return [BOMMockProject('ABS_domain-abs.mcl_200843:project:tr1s60#1')] 
-
-    def all_baselines(self):
-        return []
-
-# Refactor required: See http://delivery.nmp.nokia.com/trac/helium/ticket/1517
-class BOMTest(unittest.TestCase):
-    """ Test BOM and related classes. """
-    
-# TODO - removed until non-Synergy dependent tests can be provided.
-
-#    def test_bom_output(self):
-#        """ Test basic BOM execution. Only new spec format will be covered!"""
-#        try:
-#            session = ccm.open_session(database=database)
-#        except ccm.CCMException:
-#            print "Skipping BOMTest test cases."
-#            return
-#            
-#        project = session.create('helium-helium_0.1:project:vc1s60p1#1')
-#        config_dict = {'delivery': 'tests/data/test_delivery.xml',
-#                       'prep.xml': 'tests/data/test_prep.xml',
-#                       'build.id': "test_0.0",
-#                       'ccm.database': session.database()}
-#        config = configuration.Configuration(config_dict)
-#        bom = build.model.BOM_new_spec_config(config, project)
-#        writer = build.model.BOMHTMLWriter(bom)
-#        writer.write("bom2.html")
-#        session.close()
-#        os.remove("bom2.html")
-#        os.remove("bom2.html.xml")
-
-    def test_bom_delta(self):
-        """ Testing BOM delta creation... """
-        delta = build.model.BOMDeltaXMLWriter(BOMMock(), os.path.join(os.environ['HELIUM_HOME'], 'tests/data/bom/build_model_bom.xml'))
-        delta.write(os.path.join(os.environ['HELIUM_HOME'], 'build','delta.xml'))
-        xml = amara.parse(open(os.path.join(os.environ['HELIUM_HOME'], 'build','delta.xml'), 'r'))
-        assert xml.bomDelta[0].buildFrom[0] == "ido_raptor_mcl_abs_MCL.52.57"
-        assert xml.bomDelta[0].buildTo[0] == "mock"
-
-        print "baselines: ", len(xml.bomDelta.content.baseline)
-        print "folders: ", len(xml.bomDelta.content.folder)
-        print "tasks: ", len(xml.bomDelta.content.task)
-        print "baseline[@overridden='false']:", len(xml.bomDelta.content.xml_xpath("baseline[@overridden='false']"))
-        print "baseline[@overridden='true']: ", len(xml.bomDelta.content.xml_xpath("baseline[@overridden='true']"))
-        print "folder[@status='deleted']: ", len(xml.bomDelta.content.xml_xpath("folder[@status='deleted']"))
-        print "task[@status='deleted']: ", len(xml.bomDelta.content.xml_xpath("task[@status='deleted']"))
-
-        assert len(xml.bomDelta.content.baseline) == 156
-        assert len(xml.bomDelta.content.folder) == 1
-        assert len(xml.bomDelta.content.task) == 1
-        assert len(xml.bomDelta.content.xml_xpath("baseline[@overridden='false']")) == 155
-        assert len(xml.bomDelta.content.xml_xpath("baseline[@overridden='true']")) == 1
-
-        assert len(xml.bomDelta.content.xml_xpath("folder[@status='deleted']")) == 1
-
-        assert len(xml.bomDelta.content.xml_xpath("task[@status='deleted']")) == 1
-        
-    def test_validate_bom_delta(self):
-        """ Testing BOM delta validation... """
-        bom_delta_validate = build.model.BOMDeltaXMLWriter((os.path.join(os.environ['HELIUM_HOME'], 'tests/data/bom/bom_validate_102_bom.xml')), (os.path.join(os.environ['HELIUM_HOME'], 'tests/data/bom/bom_validate_101_bom.xml')))
-        delta_bom_content_validity = bom_delta_validate.validate_delta_bom_contents(os.path.join(os.environ['HELIUM_HOME'], 'tests/data/bom/bom_validate_102_bom_delta.xml'), os.path.join(os.environ['HELIUM_HOME'], 'tests/data/bom/bom_validate_102_bom.xml'), os.path.join(os.environ['HELIUM_HOME'], 'tests/data/bom/bom_validate_101_bom.xml'))
-        self.assertEqual(True, delta_bom_content_validity) 
-        delta_bom_content_validity = bom_delta_validate.validate_delta_bom_contents(os.path.join(os.environ['HELIUM_HOME'], 'tests/data/bom/bom_validate_104_bom_delta.xml'), os.path.join(os.environ['HELIUM_HOME'], 'tests/data/bom/bom_validate_102_bom.xml'), os.path.join(os.environ['HELIUM_HOME'], 'tests/data/bom/bom_validate_101_bom.xml'))
-        self.assertEqual(False, delta_bom_content_validity) 
-        delta_bom_content_validity = bom_delta_validate.validate_delta_bom_contents(os.path.join(os.environ['HELIUM_HOME'], 'tests/data/bom/bom_validate_103_bom_delta.xml'), os.path.join(os.environ['HELIUM_HOME'], 'tests/data/bom/bom_validate_103_bom.xml'), os.path.join(os.environ['HELIUM_HOME'], 'tests/data/bom/bom_validate_102_bom.xml'))
-        self.assertEqual(None, delta_bom_content_validity) 
-
-    def test_BOMXMLWriter(self):
-        config_data = {'delivery': 'tests/data/test_delivery.xml', 'prep.xml': 'tests/data/test_prep.xml', 'build.id': 'buildid', 'symbian_rel_week': r'${symbian.version.week}', 'symbian_rel_ver': r'${symbian.version}', 'symbian_rel_year': r'${symbian.version.year}', 's60_version': r'${s60.version}', 's60_release': r'${s60.release}', 'currentRelease.xml': "tests/data/symrec/generated_release_metadata.xml"}
-        bom = build.model.BOM(configuration.Configuration(config_data))
-        xml_writer = build.model.BOMXMLWriter(bom)
-        (_, filename) = tempfile.mkstemp()
-        xml_writer.write(filename)
-        #_logger.info(open(filename).read())
--- a/buildframework/helium/tools/common/python/lib/cpythontest/test_ccm.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,85 +0,0 @@
-#============================================================================ 
-#Name        : test_ccm.py 
-#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:
-#===============================================================================
-
-""" Test cases for ccm python toolkit.
-
-"""
-
-# pylint: disable-msg=E1101
-
-import logging
-import os
-import subprocess
-import sys
-import unittest
-
-import mocker
-
-import ccm
-import nokia.nokiaccm
-
-
-_logger = logging.getLogger('test.ccm')
-
-
-class CcmTest(mocker.MockerTestCase):
-    """ Tests the ccm module using mocker to prevent accessing a real Synergy database. """
-
-    def test_running_sessions(self):
-        """ Running sessions can be checked. """
-        obj = self.mocker.replace(ccm._execute)
-        if sys.platform == "win32":
-            obj('c:\\apps\\ccm65\\bin\\ccm.exe status')
-        else:
-            obj('/nokia/fa_nmp/apps/cmsynergy/6.5/bin/ccm status')
-        self.mocker.result(("""Sessions for user pmackay:
-
-Command Interface @ 1CAL01176:1553:10.241.72.23
-Database: /nokia/vc_nmp/groups/gscm/dbs/vc1s60p1
-
-Current project could not be identified.
-""", 0))
-
-        self.mocker.replay()
-
-        sessions = ccm.running_sessions()
-        print sessions
-
-#    def test_open_session(self):
-#        """ ccm session can be opened. """
-#        gscm_obj = self.mocker.replace(nokia.gscm._execute)
-#        gscm_obj('perl f:\\helium\\svn\\trunk\\helium\\tools/common/bin/get_gscm_info.pl get_router_address /nokia/vc_nmp/groups/gscm/dbs/vc1s60p1')
-#        self.mocker.result(("vccmsr65:55414:172.18.95.98:172.18.95.61:172.18.95.95:172.18.95.96:172.18.95.97", 0))
-#        
-#        obj = self.mocker.replace(ccm._execute)
-#        obj('c:\\apps\\ccm65\\bin\\ccm.exe start -m -q -nogui -n username -pw foobar -h vccmsweh.americas.company.com -d /nokia/vc_nmp/groups/gscm/dbs/vc1s60p1')
-#        self.mocker.result(("1CAL01176:1333:10.186.216.77:10.241.72.68", 0))
-#        
-#        self.mocker.replay()
-#        session = nokia.nokiaccm.open_session(password='foobar', engine='vccmsweh.americas.company.com', dbpath='/nokia/vc_nmp/groups/gscm/dbs/vc1s60p1', database='/nokia/vc_nmp/groups/gscm/dbs/vc1s60p1')
-        
-        
-    def test_timeout_launcher(self):
-        sys.path.append(os.path.join(os.environ['HELIUM_HOME'], 'tools/common/python/scripts'))
-        import timeout_launcher
-        #backup = sys.argv
-        #sys.argv = ['--', 'echo 1']
-        #timeout_launcher.main()
-        #sys.argv = backup
-        
\ No newline at end of file
--- a/buildframework/helium/tools/common/python/lib/cpythontest/test_comments.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,78 +0,0 @@
-#============================================================================ 
-#Name        : test_comments.py 
-#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:
-#===============================================================================
-
-""" Test cases for Comments.py. """
-import unittest
-import comments
-import logging
-import amara
-
-
-class CommentParserTest(unittest.TestCase):
-    """ Test cases for Comments.py. """
-    
-    def setUp(self):
-        # Initialize the sample files into two Comment Parsers.
-        self.parser1 = comments.CommentParser( [r'tests/data/comments_test.txt'], 'branchInfo' )
-        self.parser2 = comments.CommentParser( [r'tests/data/comments_test.cpp', r'tests/data/comments_test.bat',
-                                                r'tests/data/comments_test.h', r'tests/data/comments_test.hrh',
-                                                r'tests/data/comments_test.iby', r'tests/data/comments_test.inf',
-                                                r'tests/data/comments_test.mk', r'tests/data/comments_test.mmp',
-                                                r'tests/data/comments_test.pl', r'tests/data/comments_test.xml',
-                                                r'tests/data/comments_test.py', r'tests/data/comments_test.java',
-                                                r'tests/data/comments_test1.cmd', r'tests/data/comments_test2.cmd'], 'branchInfo' )
-     #   self.parser3 = comments.CommentParser( [r'tests/data/comments_test2.cmd'], 'branchInfo' )
-     
-        
-
-    """ Unit test for method scan() in comments.py. It also tested scan_content by using scan()
-    """
-    def test_scan(self):
-        #doc1 for only one txt file. 
-        doc1 = amara.parse(self.parser1.scan().xml())
-        #doc2 for all other 14 types of files. It also included two types of cmd files.
-        doc2 = amara.parse(self.parser2.scan().xml())
-        
-        # doc1's test verifies all the information the xml comment provides.
-        self.assertEquals(doc1.commentLog.branchInfo.originator, "sanummel")
-        self.assertEquals(doc1.commentLog.branchInfo.category, "")
-        self.assertEquals(doc1.commentLog.branchInfo.since, "07-03-22")
-        self.assertEquals(doc1.commentLog.branchInfo.file, r'tests/data/comments_test.txt')
-        self.assertEquals(doc1.commentLog.branchInfo.error, "kkk")
-        self.assertEquals(str(doc1.commentLog.branchInfo).strip(),"Add rofsfiles for usage in paged images")
-        # s = (str(doc1.commentLog.xml()))
-        # print s
-        # doc2's test only verifies the main comment content.
-        self.assertEquals(str(doc2.commentLog.branchInfo[0]).strip(), "We need TwistOpen and TwistClose to cause display to change between\n landscape and portrait, but SysAp is consuming the key events.  Try\n treating them as Flip events are handled already by SysAp.")
-        self.assertEquals(str(doc2.commentLog.branchInfo[1]).strip(), "Testing if it's good~~~")
-        self.assertEquals(str(doc2.commentLog.branchInfo[2]).strip(), "We need TwistOpen and TwistClose to cause display to change between\n landscape and portrait, but SysAp is consuming the key events.  Try\n treating them as Flip events are handled already by SysAp.")
-        self.assertEquals(str(doc2.commentLog.branchInfo[3]).strip(), "puikko ME SCD DeSW: wk21 Flag fix")
-        self.assertEquals(str(doc2.commentLog.branchInfo[4]).strip(), "Since Catalogs is not compiling at this point, and we are not building it, don't try to\n pull it into the rom.  Also, tfxserver is crashing, so don't build or pull it in either.")
-        self.assertEquals(str(doc2.commentLog.branchInfo[5]).strip(), "Fix target export, which cause issue when cleanexport.")
-        self.assertEquals(str(doc2.commentLog.branchInfo[6]).strip(), "Move command to makmake as EBS does not call abld build")
-        self.assertEquals(str(doc2.commentLog.branchInfo[7]).strip(), "Activate PCFW for Screensaver")
-        self.assertEquals(str(doc2.commentLog.branchInfo[8]).strip(), "Support SPP mechanism for flags support.")
-        self.assertEquals(str(doc2.commentLog.branchInfo[9]).strip(), "Enabling all the HWRM light zones target for product")
-        self.assertEquals(str(doc2.commentLog.branchInfo[10]).strip(), "Again, it is just a test")
-        self.assertEquals(str(doc2.commentLog.branchInfo[11]).strip(), "Test info, so whatever~")
-        self.assertEquals(str(doc2.commentLog.branchInfo[12]).strip(), "k")
-        self.assertEquals(str(doc2.commentLog.branchInfo[13]).strip(), "")
-          
-    
-
--- a/buildframework/helium/tools/common/python/lib/cpythontest/test_configuration_model.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,120 +0,0 @@
-#============================================================================ 
-#Name        : test_configuration_model.py 
-#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:
-#===============================================================================
-
-import logging
-import os
-import sys
-import unittest
-import nose
-
-import configuration
-import configuration_model
-
-
-logger = logging.getLogger('test.configuration_model')
-#logging.basicConfig(level=logging.DEBUG)
-
-class GroupDefTest(unittest.TestCase):
-    """ Check config model groups are correctly defined. """
-    
-    def setUp(self):
-        """ Create model. """
-        self.model = configuration_model.DataModel('tests/data/data_model_test.xml')
-        
-    def test_init_model(self):
-        """ Test groups can be created. """
-        assert len(self.model.properties.keys()) == 3
-        assert len(self.model.groups.keys()) == 1
-        
-        prop1 = self.model.properties['test.property.1']
-        assert prop1.description == 'Test property one.'
-        
-        prop2 = self.model.properties['test.property.2']
-        assert prop2.description == 'Test property two.'
-        
-        assert self.model.groups['testGroup'] != None
-
-    def test_property_not_in_model(self):
-        """ Property not in model is identified. """
-        data = {'missing.property': 'foobar', 'test.property.1': '1'}
-        config = configuration.Configuration(data)
-        items = self.model.validate_config(config)
-        
-        assert len(items) == 2
-        assert isinstance(items[0], configuration_model.MissingFromDataModelItem)
-    
-    def test_required_property_in_group_not_defined(self):
-        """ Required property in a group missing from config is identified. """
-        config = configuration.Configuration({'test.property.1': '1', 'test.property.3': '3'})
-        items = self.model.validate_config(config)
-        
-        assert len(items) == 1
-        assert isinstance(items[0], configuration_model.UndefinedRequiredInGroupItem)
- 
-        
-class MissingFromDataModelItemTest(unittest.TestCase):
-    """ Item class operations. """
-    def test_create(self):
-        """ Basic validation item usage. """
-        item = configuration_model.MissingFromDataModelItem('test.property')
-        assert str(item) == 'Property not in data model: test.property'
-        item.log(logger)
-        
-        
-class DataModelTest(unittest.TestCase):
-    """ Checks Data Model is properly defined """
-    
-    def setUp(self):
-        """ Create model. """
-        self.model = configuration_model.DataModel('tests/data/data_model_validation_test.xml')    
-       
-    def test_init_model(self):
-        """ Test groups can be created. """
-        assert len(self.model.properties.keys()) == 3
-        assert len(self.model.groups.keys()) == 1
-        
-        prop1 = self.model.properties['test.property.1']
-        assert prop1.type == 'string'
-        assert prop1.description == 'Test property one.'
-        
-        prop2 = self.model.properties['test.property.2']
-        assert prop2.type == 'string'
-        assert prop2.description == 'Test property two.'
-        
-        assert self.model.groups['testGroup'] != None
-        
-        
-class DataModelPropertyTest(unittest.TestCase):
-    """ Checks Data Model that an exception is thrown if properties are not properly defined """
-    
-    @nose.tools.raises(Exception)
-    def setUp(self):
-        """ Create model. """
-        self.model = configuration_model.DataModel('tests/data/data_model_validation__property_test.xml')
-        
-        
-class DataModelGroupTest(unittest.TestCase):
-    """ Checks Data Model that an exception is thrown if there is a required property in groups is missing"""
-    
-    @nose.tools.raises(Exception)
-    def setUp(self):
-        """ Create model. """
-        self.model = configuration_model.DataModel('tests/data/data_model_validation_group_test.xml')
-        
-             
\ No newline at end of file
--- a/buildframework/helium/tools/common/python/lib/cpythontest/test_dependancygraph.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-#============================================================================ 
-#Name        : test_dependancygraph.py 
-#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:
-#===============================================================================
-
-import unittest
-import dependancygraph
-import logging
-import tempfile
-import os
-
-_logger = logging.getLogger('test.dependancygraph')
-logging.basicConfig(level=logging.INFO)
-
-class DependancygraphTest(unittest.TestCase):
-        
-    def test_dependancygraph(self):
-        (fd, filename) = tempfile.mkstemp()
-        f = os.fdopen(fd, 'w')
-        f.write('test')
-        f.close()
-        dependancygraph.createGraph(os.path.join(os.environ['HELIUM_HOME'], 'config/ivy/ivy.xml'), filename, os.path.join(os.environ['HELIUM_HOME'], 'external/python/lib'), os.path.join(os.environ['HELIUM_HOME'], 'extensions/nokia/external/python/lib'), False)
\ No newline at end of file
--- a/buildframework/helium/tools/common/python/lib/cpythontest/test_fileutils.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,670 +0,0 @@
-#============================================================================ 
-#Name        : test_fileutils.py 
-#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:
-#===============================================================================
-
-""" Test fileutils module. """
-
-import unittest
-import logging
-import os
-import shutil
-import time
-import sys
-import fileutils
-import archive
-
-_logger = logging.getLogger('test.fileutils')
-
-
-_test_file_paths = [
-    'root_file1.txt',
-    'root_file2.doc',
-    'root_file3_no_extension',
-
-    'dir1/file1.txt',
-    'dir1/file2.doc',
-    'dir1/file3_no_extension',
-    'dir1/subdir1/subdir1_file.txt',
-    'dir1/subdir2/subdir2_file_no_extension',
-    'dir1/subdir3/',
-
-    'dir2/',
-    'dir3/subdir/',
-    
-    'wildcard1.txt',
-    'wildcard2.doc',
-    'wildcard3',
-    'wildcard4/',
-    'wildcard5/file.txt',
-    
-    'dir/emptysubdir1/',
-    'dir/emptysubdir2/',
-    'dir/emptysubdir3/',
-
-    'emptydirerror/dir/',
-    'emptydirerror/dir/emptysubdir/',
-    'emptydirerror/dir/subdir/file.txt',
-    
-    u'test_unicode/test_\u00e9.txt',
-    u'test_unicode/test_\u00e7.txt',
-    u'test_unicode/test_\u00e4.txt',
-    
-    's60/Distribution.Policy.S60',
-    's60/component_public/Distribution.Policy.S60',
-    's60/component_public/component_public_file.txt',
-    's60/component_private/Distribution.Policy.S60',
-    's60/component_private/component_private_file.txt',
-    's60/missing/to_be_removed_9999.txt',    
-    's60/missing/subdir/Distribution.Policy.S60',
-    's60/missing/subdir/not_to_be_removed_0.txt',    
-    's60/missing/subdir/another_subdir/to_be_removed_9999.txt',    
-    's60/UPPERCASE_MISSING/to_be_removed_9999.txt',
-    's60/UPPERCASE_MISSING/subdir/Distribution.Policy.S60',
-    's60/UPPERCASE_MISSING/subdir/not_to_be_removed_0.txt',
-    's60/UPPERCASE_MISSING/subdir/another_subdir/to_be_removed_9999.txt',
-    's60/not_in_cvs/Distribution.Policy.S60',
-    'test_policies/1/Distribution.Policy.S60',
-    'test_policies/2/Distribution.Policy.S60',
-    'test_policies/3/Distribution.Policy.S60',
-    'test_policies/4/Distribution.Policy.S60',
-    'test_policies/5/Distribution.Policy.S60',
-    'test_policies/6/Distribution.Policy.S60',
-    'test_policies/7/Distribution.Policy.S60',
-    'test_policies/8/Distribution.Policy.S60',
-    'test_policies/9/Distribution.Policy.S60',
-    'symbian/distribution.policy',
-    'symbian/dir1/distribution.policy',
-    'symbian/dir2/distribution.policy',
-    'symbian/dir3/distribution.policy',
-    'symbian/dir4/distribution.policy',
-    'symbian/dir5/distribution.policy',
-    's60src/src-a/distribution.policy',
-    's60src/src-b/distribution.policy',
-    's60src/src-c/distribution.policy',
-
-    'sf/Distribution.Policy.S60',
-    'sf/component_public/Distribution.Policy.S60',
-    'sf/component_public/component_public_file.txt',
-    'sf/component_epl/Distribution.Policy.S60',
-    'sf/component_epl/component_epl_file.txt',
-    'sf/component_sfl/Distribution.Policy.S60',
-    'sf/component_sfl/component_sfl_file.txt',
-    'sf/component_private/Distribution.Policy.S60',
-    'sf/component_private/component_private_file.txt',
-    'sf/missing/to_be_removed_9999.txt',
-    'sf/missing/subdir/Distribution.Policy.S60',
-    'sf/missing/subdir/to_be_removed_9999.txt',
-    'sf/missing/subdir/subdir_nofiles/subdir_nofiles2/',    
-    'sf/missing/subdir/subdir_nopolicy/',    
-    'sf/missing/subdir/subdir_nopolicy/component_private_file.txt',
-    'sf/UPPERCASE_MISSING/to_be_removed_9999.txt',
-    'sf/UPPERCASE_MISSING/subdir/Distribution.Policy.S60',
-    'sf/UPPERCASE_MISSING/subdir/to_be_removed_9999.txt',
-    'sf/not_in_cvs/Distribution.Policy.S60',
-    ]
-
-_test_file_content = {
-    's60/Distribution.Policy.S60': '0',
-    's60/missing/subdir/Distribution.Policy.S60' : '0',
-    's60/UPPERCASE_MISSING/subdir/Distribution.Policy.S60': '0',
-    's60/component_public/Distribution.Policy.S60': '0',
-    's60/component_private/Distribution.Policy.S60': '1\r\n',
-    'test_policies/1/Distribution.Policy.S60': '\xFF\xFE\x30\x00\x0D\x00\x0D\x00\x0D\x00\x0A\x00',
-    'test_policies/2/Distribution.Policy.S60': '\xEF\xBB\xBF\x30\x0D\x0D\x0A',
-    'test_policies/3/Distribution.Policy.S60': '0 ; %version: 1 %',
-    'test_policies/4/Distribution.Policy.S60': '10 ; %version: 1 %',
-    'test_policies/5/Distribution.Policy.S60': '10ABC10',
-    'test_policies/6/Distribution.Policy.S60': '10ABC10 ; %version: 1 %',
-    'test_policies/7/Distribution.Policy.S60': '08421A2', # good
-    'test_policies/8/Distribution.Policy.S60': '08421A2 ; %version: 1 %', # bad
-    'test_policies/9/Distribution.Policy.S60': '1110A12', # bad
-    's60/not_in_cvs/Distribution.Policy.S60': '77777',
-    'symbian/distribution.policy': 'Category A',
-    'symbian/dir1/distribution.policy': 'Category B',
-    'symbian/dir2/distribution.policy': 'Line one \r\nAnother one \r\nCategory C',
-    'symbian/dir3/distribution.policy': 'Line one \r\nAnother one \r\nAnother one \r\nCategory D',
-    'symbian/dir4/distribution.policy': 'Line one \r\nAnother one \r\nNo Category',
-    'symbian/dir5/distribution.policy': 'Line one \r\nAnother one \r\nagain no category',
-    's60src/src-a/distribution.policy': 'Category A',
-    's60src/src-b/distribution.policy': 'Category B',
-    's60src/src-c/distribution.policy': 'Category C',
-    'sf/Distribution.Policy.S60': '0',
-    'sf/missing/subdir/Distribution.Policy.S60' : '0',
-    'sf/UPPERCASE_MISSING/subdir/Distribution.Policy.S60': '0',
-    'sf/component_public/Distribution.Policy.S60': '0',
-    'sf/component_sfl/Distribution.Policy.S60': '3',
-    'sf/component_epl/Distribution.Policy.S60': '7',
-    'sf/component_private/Distribution.Policy.S60': '1',
-    }
-    
-""" Used by test_archive. """
-root_test_dir = "build/_test_" + str(time.strftime("%H.%M.%S"))
-    
-def _testpath(subpath):
-    """ Normalised path for test paths. """
-    return os.path.normpath(os.path.join(root_test_dir, subpath))
-    
-def setup_module():
-    """ Setup files test config. 
-    
-    This creates a number of empty files in a temporary directory structure
-    for testing various file selection and archiving operations.
-    """
-    #print 'setup_module()'
-    #print _test_file_content.keys()
-    for child_path in _test_file_paths:
-        path = os.path.join(root_test_dir, child_path)
-        path_dir = path
-        path_dir = os.path.dirname(path)
-        
-        if (not os.path.exists(path_dir)):
-            _logger.debug('Creating dir:  ' + path_dir)
-            os.makedirs(path_dir)
-
-        if(not path.endswith('/') and not path.endswith('\\')):
-            _logger.debug('Creating file: ' + path)
-            handle = open(path, 'w')
-            # Write any file content that is needed
-            if _test_file_content.has_key(child_path):
-                handle.write(_test_file_content[child_path])
-            handle.close()
-
-def teardown_module():
-    """ Teardown test config. """
-    if os.path.exists(root_test_dir):
-        fileutils.rmtree(root_test_dir)
-    
-
-class FileScannerTest(unittest.TestCase):
-    """ Test FileScanner class. """
-    def test_1_scanner_paths(self):
-        """1) String representation of a constructed FileScanner is correct."""
-        scanner = fileutils.FileScanner(_testpath('test'))
-        scanner.add_include('python/')
-        # new implementation of the scanner doesn't convert modify the pattern strings...
-        expected_result = _testpath('test') + ';include:' + os.path.normpath('python/**')
-        assert str(scanner) == expected_result
-
-    def test_2_include_1(self):
-        """Files from root are included, no subdirs."""
-        scanner = fileutils.FileScanner(_testpath(''))
-        scanner.add_include('dir1/*')
-        testpaths = [_testpath('dir1/file1.txt'),
-                     _testpath('dir1/file2.doc'),
-                     _testpath('dir1/file3_no_extension'),
-                     _testpath('dir1/subdir3')]
-        result = []
-        for path in scanner.scan():
-            result.append(path)
-        _logger.debug(result)
-        
-        # sorting the resuts
-        testpaths.sort()
-        result.sort()
-        
-        print result
-        print testpaths
-        assert result == testpaths
-        
-    def test_include_single_file(self):
-        """A single file from root is included."""
-        scanner = fileutils.FileScanner(_testpath(''))
-        scanner.add_include('dir1/file1.txt')
-        testpaths = [_testpath('dir1/file1.txt')]
-        result = []
-        for path in scanner.scan():
-            result.append(path)
-        _logger.debug(result)
-        
-        print result
-        print testpaths
-        assert result == testpaths
-        
-    def test_include_single_file_and_glob_path(self):
-        """A single file from root and a glob path are included."""
-        scanner = fileutils.FileScanner(_testpath(''))
-        scanner.add_include('dir1/file1.txt')
-        scanner.add_include('s60/component_public/')
-        testpaths = [_testpath(u'dir1/file1.txt'),
-                     _testpath(u's60/component_public/Distribution.Policy.S60'),
-                     _testpath(u's60/component_public/component_public_file.txt'),]
-        result = []
-        for path in scanner.scan():
-            result.append(path)
-        
-        if sys.platform == "win32":
-            testpaths = [s.lower() for s in testpaths]
-            result = [s.lower() for s in result]
-        result.sort()
-        testpaths.sort()
-        print result
-        print testpaths
-        assert result == testpaths
-
-    def test_3_include_2(self):
-        """Files and subdirs are included."""
-        scanner = fileutils.FileScanner(_testpath(''))
-        scanner.add_include('dir1/**')
-        testpaths = [_testpath('dir1/file1.txt'),
-                     _testpath('dir1/file2.doc'),
-                     _testpath('dir1/file3_no_extension'),
-                     _testpath('dir1/subdir1/subdir1_file.txt'),
-                     _testpath('dir1/subdir2/subdir2_file_no_extension'),
-                     _testpath('dir1/subdir3')]
-        result = []
-        for path in scanner.scan():
-            result.append(path)
-        _logger.debug(result)
-        result.sort()
-        testpaths.sort()
-        print result
-        print testpaths
-        assert result == testpaths
-
-    def test_4_include_3(self):
-        """Wildcard includes in root."""
-        scanner = fileutils.FileScanner(_testpath(''))
-        scanner.add_include('wild*')
-        testpaths = [_testpath('wildcard1.txt'),
-                     _testpath('wildcard2.doc'),
-                     _testpath('wildcard3'),
-                     _testpath('wildcard4')]
-        result = []
-        for path in scanner.scan():
-            result.append(path)
-        _logger.debug(result)
-        result.sort()
-        testpaths.sort()        
-        print result
-        print testpaths
-        assert result == testpaths
-
-    def test_5_include_4(self):
-        """Include empty dirs."""
-        scanner = fileutils.FileScanner(_testpath(''))
-        scanner.add_include('dir2/')
-        scanner.add_include('dir3/**')
-        testpaths = [_testpath('dir2'),
-                     _testpath('dir3/subdir')]
-        result = []
-        for path in scanner.scan():
-            result.append(path)
-        _logger.debug(result)
-        result.sort()
-        testpaths.sort()        
-        print result
-        print testpaths
-        assert result == testpaths
-
-    def test_6_include_exclude_1(self):
-        """Wildcard excludes."""
-        scanner = fileutils.FileScanner(_testpath(''))
-        scanner.add_include('root*')
-        scanner.add_include('wild*')
-        scanner.add_exclude('root_*')
-        testpaths = [_testpath('wildcard1.txt'),
-                     _testpath('wildcard2.doc'),
-                     _testpath('wildcard3'),
-                     _testpath('wildcard4')]
-        result = []
-        for path in scanner.scan():
-            result.append(path)
-        _logger.debug(result)
-        result.sort()
-        testpaths.sort()
-        
-        print result
-        print testpaths
-        assert result == testpaths
-
-    def test_7_include_exclude_2(self):
-        """Directory can be excluded."""
-        scanner = fileutils.FileScanner(_testpath(''))
-        scanner.add_include('dir1/')
-        scanner.add_exclude('dir1/subdir1/')
-        scanner.add_exclude('dir1/subdir2/')
-        result = []
-        [result.append(path) for path in scanner.scan()]
-        testpaths = [_testpath('dir1/file1.txt'),
-                     _testpath('dir1/file2.doc'),
-                     _testpath('dir1/file3_no_extension'),
-                     _testpath('dir1/subdir3')]                   
-        result.sort()
-        testpaths.sort()
-        
-        print result
-        print testpaths
-        assert result == testpaths
-        
-    def test_8_include_exclude_3(self):
-        """Wildcard exclude."""
-        scanner = fileutils.FileScanner(_testpath(''))
-        scanner.add_include('dir1/')
-        scanner.add_exclude('**/*.doc')
-        scanner.add_exclude('**/*.txt')
-        result = []
-        testpaths = [_testpath('dir1/file3_no_extension'),
-                     _testpath('dir1/subdir2/subdir2_file_no_extension'),
-                     _testpath('dir1/subdir3')]                   
-        [result.append(path) for path in scanner.scan()]
-        result.sort()
-        testpaths.sort()
-        
-        print result
-        print testpaths
-        assert result == testpaths
-
-    def test_case_sensitivity(self):
-        """ Test if returned list has correct case. """
-        scanner = fileutils.FileScanner(_testpath(''))
-        scanner.add_include('s60/UPPERCASE_MISSING/')
-        result = []
-        testpaths = [_testpath('s60/UPPERCASE_MISSING/to_be_removed_9999.txt'),
-                     _testpath('s60/UPPERCASE_MISSING/subdir/Distribution.Policy.S60'),
-                     _testpath('s60/UPPERCASE_MISSING/subdir/not_to_be_removed_0.txt'),
-                     _testpath('s60/UPPERCASE_MISSING/subdir/another_subdir/to_be_removed_9999.txt')
-                     ]                   
-        [result.append(path) for path in scanner.scan()]
-        
-        testpaths.sort()
-        result.sort()
-        print result
-        print testpaths
-        assert result == testpaths
-
-
-    def test_emptydir(self):
-        """Empty dir."""
-        scanner = fileutils.FileScanner(_testpath(''))
-        scanner.add_include('dir/emptysubdir1/')
-        result = []
-        testpaths = [_testpath('dir/emptysubdir1')]                   
-        [result.append(path) for path in scanner.scan()]
-        
-        result.sort()
-        testpaths.sort()
-
-        print result
-        print testpaths
-        assert result == testpaths
-
-    def test_emptydir_subdir(self):
-        """ Empty dir (with excluded subdirs). """
-        scanner = fileutils.FileScanner(_testpath(''))
-        scanner.add_include('emptydirerror/dir/')
-        scanner.add_exclude('emptydirerror/dir/subdir/')
-        scanner.add_exclude('emptydirerror/dir/emptysubdir/')
-        result = []
-        testpaths = []                   
-        [result.append(path) for path in scanner.scan()]
-        
-        result.sort()
-        testpaths.sort()
-
-        print result
-        print testpaths
-        assert result == testpaths
-        
-    def test_emptydirs(self):
-        """Empty dirs."""
-        scanner = fileutils.FileScanner(_testpath(''))
-        scanner.add_include('dir/')
-        scanner.add_exclude('dir/emptysubdir3/')
-        result = []
-        testpaths = [_testpath('dir/emptysubdir1'),
-                     _testpath('dir/emptysubdir2')]                   
-        [result.append(path) for path in scanner.scan()]
-        
-        print result
-        print testpaths
-        assert result == testpaths
-        
-    def test_distribution_policy_include(self):
-        """ Distribution policy files can determine file selection - include. """
-        scanner = fileutils.FileScanner(_testpath(''))
-        scanner.add_include('s60/component_public/')
-        selector = archive.selectors.DistributionPolicySelector(['Distribution.policy.s60'], '0')
-        scanner.add_selector(selector)
-        
-        result = []
-        [result.append(path) for path in scanner.scan()]
-        testpaths = [_testpath('s60/component_public/component_public_file.txt'),
-                     _testpath('s60/component_public/distribution.policy.s60')]                   
-        
-        result = [s.lower() for s in result]
-        result.sort()
-        testpaths.sort()
-        print result
-        print testpaths
-        assert result == testpaths
-        
-        
-    def test_distribution_policy_exclude(self):
-        """ Distribution policy files can determine file selection - exclude. """
-        scanner = fileutils.FileScanner(_testpath(''))
-        scanner.add_include('s60/component_private/')
-        selector = archive.selectors.DistributionPolicySelector(['Distribution.policy.s60'], '0')
-        scanner.add_selector(selector)
-        
-        result = []
-        [result.append(path) for path in scanner.scan()]
-        testpaths = []                   
-        
-        assert result == testpaths
-        
-        
-    def test_symbian_distribution_policy_cat_a(self):
-        scanner = fileutils.FileScanner(_testpath(''))
-        scanner.add_include('s60src/src-a/')
-        selector = archive.selectors.SymbianPolicySelector(['distribution.policy'], 'A')
-        scanner.add_selector(selector)
-                
-        result = []
-        [result.append(path) for path in scanner.scan()]
-        testpaths = [_testpath('s60src/src-a/distribution.policy')] 
- 
-        assert result == testpaths
-        
-    def test_symbian_distribution_policy_cat_b(self):        
-        scanner = fileutils.FileScanner(_testpath(''))
-        scanner.add_include('s60src/src-b/')
-        selector = archive.selectors.SymbianPolicySelector(['distribution.policy'], 'B')
-        scanner.add_selector(selector)
-                       
-        result = []
-        [result.append(path) for path in scanner.scan()]
-        testpaths = [_testpath('s60src/src-b/distribution.policy')] 
-              
-        assert result == testpaths     
-        
-    def test_symbian_distribution_policy_cat_not_a_not_b(self):        
-        scanner = fileutils.FileScanner(_testpath(''))
-        scanner.add_include('s60src/src-c/')
-        selector = archive.selectors.SymbianPolicySelector(['distribution.policy'], '!A,!B')
-        scanner.add_selector(selector)
-                       
-        result = []
-        [result.append(path) for path in scanner.scan()]
-                  
-        testpaths = [_testpath('s60src/src-c/distribution.policy')] 
-        
-        assert result == testpaths     
-    
-        
-    def test_find_subroots(self):
-        """ Testing the find_subroots method. """
-        scanner = fileutils.FileScanner(_testpath(''))
-        scanner.add_include('dir/emptysubdir1')
-        scanner.add_include('dir/**/dir')
-        scanner.add_include('foo/**/dir')
-        scanner.add_include('bar/subdir/dir1/**')
-        scanner.add_include('bar/subdir/dir2/**')
-        scanner.add_include('bar/subdir/dir3/x/**')
-        scanner.add_include('bar/subdir/dir3/**')
-        result = scanner.find_subroots()
-        _logger.debug(result)
-        print result              
-        assert result == [_testpath('dir'), _testpath('foo'), 
-                          _testpath('bar/subdir/dir1'), 
-                          _testpath('bar/subdir/dir2'), 
-                          _testpath('bar/subdir/dir3')]
-
-        scanner = fileutils.FileScanner(_testpath(''))
-        scanner.add_include('dir/emptysubdir1')
-        scanner.add_include('**/dir')
-        scanner.add_include('foo/**/dir')
-        result = scanner.find_subroots()
-        _logger.debug(result)              
-        assert result == [_testpath('')]
-
-
-    def test_load_policy_content(self):
-        try:
-            fileutils.load_policy_content(_testpath('test_policies/1/Distribution.Policy.S60'))
-            assert "Should fail while loading 'test_policies/1/Distribution.Policy.S60'."
-        except:
-            pass
-        
-        try:
-            fileutils.load_policy_content(_testpath('s60/Distribution.Policy.S60'))
-        except:
-            assert "Should not fail while loading 's60/Distribution.Policy.S60'."
-
-
-    def assert_policy_file(self, filename, value=None, exception=False):
-        if exception:
-            try:
-                fileutils.read_policy_content(filename)
-                assert "Should fail while loading '%s'." % filename
-            except:
-                pass
-        else:
-            assert fileutils.read_policy_content(filename) == value
-    def assert_symbian_policy_file(self, filename, value=None, exception=False):
-        if exception:
-            try:
-                fileutils.read_symbian_policy_content(filename)
-                assert "Should fail while loading '%s'." % filename
-            except:
-                pass
-        else:
-            assert fileutils.read_symbian_policy_content(filename) == value
-        
-    def test_read_policy_content_strict(self):
-        """ Test policy content using strict rules. """
-
-        self.assert_policy_file(_testpath('s60/Distribution.Policy.S60'), value='0')
-        self.assert_policy_file(_testpath('s60/component_private/Distribution.Policy.S60'), value='1')
-        self.assert_policy_file(_testpath('test_policies/1/Distribution.Policy.S60'), exception=True)
-        self.assert_policy_file(_testpath('test_policies/2/Distribution.Policy.S60'), exception=True)
-        self.assert_policy_file(_testpath('test_policies/3/Distribution.Policy.S60'), exception=True)
-        self.assert_policy_file(_testpath('test_policies/4/Distribution.Policy.S60'), exception=True)
-        self.assert_policy_file(_testpath('test_policies/5/Distribution.Policy.S60'), exception=True)
-        self.assert_policy_file(_testpath('test_policies/6/Distribution.Policy.S60'), exception=True)
-
-    def test_read_policy_content_strict_focalid(self):
-        """ Testing Focal ID support. """
-        self.assert_policy_file(_testpath('test_policies/7/Distribution.Policy.S60'), value='08421A2')
-        self.assert_policy_file(_testpath('test_policies/8/Distribution.Policy.S60'), exception=True)
-        self.assert_policy_file(_testpath('test_policies/9/Distribution.Policy.S60'), exception=True)
-
-    def test_read_symbian_policy_content_strict(self):
-        """ Test symbian policy content using strict rules. """
-
-        self.assert_symbian_policy_file(_testpath('symbian/distribution.policy'), value='A')
-        self.assert_symbian_policy_file(_testpath('symbian/dir1/distribution.policy'), value='B')
-        self.assert_symbian_policy_file(_testpath('symbian/dir2/distribution.policy'), value='C')
-        self.assert_symbian_policy_file(_testpath('symbian/dir3/distribution.policy'), value='D')
-        self.assert_symbian_policy_file(_testpath('symbian/dir4/distribution.policy'), exception=True)
-        self.assert_symbian_policy_file(_testpath('symbian/dir5/distribution.policy'), exception=True)
-
-class TestLongPath(unittest.TestCase):
-
-    long_path = os.path.join(root_test_dir, '01234567890123456789012345678901234567890123456789', 
-                     '01234567890123456789012345678901234567890123456789', '01234567890123456789012345678901234567890123456789',
-                     '01234567890123456789012345678901234567890123456789', '01234567890123456789012345678901234567890123456789')
-    def setUp(self):
-        self.mkdirs(os.path.join(self.long_path, r'dir1'))
-        self.mkdirs(os.path.join(self.long_path, r'dir2'))
-        if not '\\\\?\\' + os.path.abspath((os.path.join( self.long_path, r'foo.txt'))):
-            import win32file
-            win32file.CreateFileW('\\\\?\\' + os.path.abspath(os.path.join(self.long_path, r'foo.txt')), 0, 0, None, win32file.CREATE_NEW, 0, None)
-
-    def mkdirs(self, path):
-        if not os.path.isabs(path):
-            path = os.path.join(os.path.abspath('.'), os.path.normpath(path))
-        if not os.path.exists(os.path.dirname(path)):
-            self.mkdirs(os.path.dirname(path))
-        self.mkdir(path)
-
-    def mkdir(self, path):
-        if 'java' in sys.platform:
-            import java.io
-            f = java.io.File(path)
-            if not f.exists():
-                os.mkdir(path)
-        elif not os.path.exists(path):
-            if sys.platform == "win32":
-                try:
-                    import win32file
-                    win32file.CreateDirectoryW('\\\\?\\' + path, None)
-                except:
-                    pass
-            else:
-                os.mkdir(path)
-
-    def test_rmtree_long_path(self):
-        fileutils.rmtree(root_test_dir)
-        assert not os.path.exists(self.long_path)
-        assert not os.path.exists(root_test_dir)
-
-    def test_rmtree_long_path_unc_format(self):
-        if sys.platform == "win32":
-            fileutils.rmtree(u"\\\\?\\" + os.path.join(os.path.abspath('.'), root_test_dir))
-            assert not os.path.exists(self.long_path)
-            assert not os.path.exists(root_test_dir)
-        
-class DestInSrcTest(unittest.TestCase):
-    
-    def test_destinsrc(self):
-        """ Verify that Z:/a/b/c/d is under Z:/a/b/c """
-        src = r"Z:/a/b/c"
-        dst = r"Z:/a/b/c/d"
-        assert fileutils.destinsrc(src, dst) is True
-    
-    def test_destinsrc2(self):
-        """ Verify that Z:/a/b/c/d is not under Z:/a/b/cc """
-        src = r"Z:/a/b/cc"
-        dst = r"Z:/a/b/c/d"
-        assert fileutils.destinsrc(src, dst) is False
-
-    def test_destinsrc_nt(self):
-        """ Verify that Z:/a/b/c/d is under Z:/a/b/C """
-        src = r"Z:/a/b/C"
-        dst = r"Z:/a/b/c/d"
-        if os.sep == '\\':
-            assert fileutils.destinsrc(src, dst) is True
-        else:
-            assert fileutils.destinsrc(src, dst) is False
-
-    def test_destinsrc2_nt(self):
-        """ Verify that Z:/a/b/c/d is not under Z:/a/b/CC """
-        if os.sep == '\\':
-            src = r"Z:/a/b/CC"
-            dst = r"Z:/a/b/c/d"
-            assert fileutils.destinsrc(src, dst) is False
--- a/buildframework/helium/tools/common/python/lib/cpythontest/test_iqrf.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-#============================================================================ 
-#Name        : test_iqrf.py 
-#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:
-#===============================================================================
-
-""" Test cases for iqrf module. """
-import unittest
-import os
-import imaker.iqrf
-
-
-class Test_iQRF(unittest.TestCase):
-    """ Test for iQRF data access. """
-    
-    def test_file_parsing_5250(self):
-        """ Testing if the iqrf module is able to load the 5250 configuration. """
-        root = imaker.iqrf.load(os.path.join(os.environ['HELIUM_HOME'], "tests/data/iqrf/imaker_5250.xml"))        
-        assert root.result != None
-        assert len(root.result.targets) == 228
-        assert len(root.result.interfaces) == 1
-        assert len(root.result.configurations) == 6
-        
-        # testing a configurations
-        assert root.result.configurations[0].name == "image_conf_product52.mk"
-        assert root.result.configurations[0].filePath == r"\epoc32\rom\config\platform\product52\image_conf_product52.mk"
-        assert len(root.result.configurations[0].targetrefs) == 38
-        assert root.result.configurations[0].targetrefs[0].name == "all"
-        
-        # testing interfaces
-        print "root.result.configurations[0].filePath: %s" % root.result.configurations[0].filePath
-        assert len(root.result.interfaces[0].configurationElements) == 516
--- a/buildframework/helium/tools/common/python/lib/cpythontest/test_logger.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,100 +0,0 @@
-#============================================================================ 
-#Name        : test_logger.py 
-#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:
-#===============================================================================
-
-import logging
-import os
-import unittest
-
-import helium.logger
-import helium.outputer
-
-
-# Uncomment this line to enable logging in this module, or configure logging elsewhere
-#logging.basicConfig(level=logging.DEBUG)
-logger = logging.getLogger('test.helium.logger')
-
-
-class TestHeliumLogger(unittest.TestCase):
-            
-    def test_mc_logger_xml_generation(self):
-        """ Test simple XML logging generation. """
-        mclogger = helium.logger.Logger()
-        mclogger.SetInterface("http://fawww.europe.company.com/isis/isis_interface/")
-        mclogger.SetTitle("Validate Overlay")
-        mclogger.SetSubTitle("Validating: ")
-        mclogger.OpenMainContent("test")
-        mclogger.PrintRaw("<a href=\"google.com\">test</a>")
-        mclogger.Print("test")
-        mclogger.Print(u"\u00A9")
-        mclogger.error("test")
-        mclogger.CloseMainContent()
-        mclogger.OpenMainContent("test2")
-        mclogger.OpenEvent("test2")
-        mclogger.Print("test2")
-        mclogger.error("test2")
-        mclogger.CloseEvent()
-        mclogger.CloseMainContent()
-        mclogger.WriteToFile('log.xml')
-        
-        logger.info(mclogger)
-        
-        os.unlink('log.xml')
-        
-        #out = helium.outputer.XML2XHTML("log.xml")
-        #out.generate()
-        #out.WriteToFile("log.html")
-
-    def test_helium_logger_unicode_handling(self):
-        """ Test simple XML logging generation with unicode handling. """
-        mclogger = helium.logger.Logger()
-        mclogger.SetInterface("http://fawww.europe.company.com/isis/isis_interface/")
-        mclogger.SetTitle("Validate Overlay")
-        mclogger.SetSubTitle("Validating: ")
-        mclogger.OpenMainContent("test")
-        mclogger.Print(u"Test unicode handling: \u00A9")
-        mclogger.CloseMainContent()
-        mclogger.WriteToFile('log.xml')
-        
-        logger.info(mclogger)
-        
-        os.unlink('log.xml')
-
-    def test_helium_logger_outputer(self):
-        """ Test simple XML logging generation with unicode handling and XHTML generation. """
-        mclogger = helium.logger.Logger()
-        mclogger.SetInterface("http://fawww.europe.company.com/isis/isis_interface/")
-        mclogger.SetTitle("Validate Overlay")
-        mclogger.SetSubTitle("Validating: ")
-        mclogger.OpenMainContent("test")
-        mclogger.Print(u"Test unicode handling: \u00A9")
-        mclogger.CloseMainContent()
-        mclogger.WriteToFile('log.xml')
-        
-        logger.info(mclogger)
-        
-        out = helium.outputer.XML2XHTML('log.xml')
-        out.generate()
-        out.WriteToFile('log.html')
-        
-        os.unlink('log.xml')
-        os.unlink('log.html')
-
-
-if __name__ == '__main__':
-    unittest.main()
--- a/buildframework/helium/tools/common/python/lib/cpythontest/test_matti.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,216 +0,0 @@
-# -*- coding: latin-1 -*-
-
-#============================================================================ 
-#Name        : test_matti.py 
-#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:
-#===============================================================================
-
-""" Testing MATTI framework. """
-
-# pylint: disable-msg=E1101,W0603,W0142
-
-import logging
-logging.getLogger().setLevel(logging.ERROR)
-import os
-#import shutil
-
-from path import path
-
-import ats3.aste
-import ats3.matti.MattiDrops
-#from lxml import objectify
-#from lxml import etree
-
-
-
-# Shortcuts
-HELIUM_ADDR = os.environ['HELIUM_HOME']
-TEST_FILE_NAME = os.path.join(HELIUM_ADDR, 'test.xml')
-ZIP_FILE_NAME = os.path.join(HELIUM_ADDR, 'MATTIDrop.zip')
-
-class Bunch(object):
-    """do something with the paramerters passed to it"""    
-    def __init__(self, **kwargs): 
-        self.__dict__.update(kwargs)
-    
-
-def equal_xml(result, expect):
-    """Check the equality of the given XML snippets. """
-#    logging.info(" expect %s" % expect)
-#    xml1 = objectify.fromstring(expect)
-#    expect1 = etree.tostring(xml1)
-#    logging.info(" expect1 %s" % expect1)
-#    logging.info(" expect2 -------------%s" % expect2)
-#            
-#    xml2 = objectify.fromstring(result)
-#    result2 = etree.tostring(xml2)        
-#    self.assertEquals(expect1, result1)
-#
-#    if xml1.tag != xml2.tag:
-#        return False
-#    if xml1.attrib != xml2.attrib:
-#        return False
-#    if xml1.text:
-#        if not xml2.text:
-#            return False
-#    if xml2.text:
-#        if not xml1.text:
-#            return False
-#    if xml1.text and xml2.text and xml1.text.strip() != xml2.text.strip():
-#        return False
-#    if xml1.tail is not None and xml2.tail is not None:
-#        if xml1.tail.strip() != xml2.tail.strip():
-#            return False
-#    elif xml1.tail != xml2.tail:
-#        return False
-#    children1 = list(xml1.getchildren())
-#    children2 = list(xml2.getchildren())
-#    if len(children1) != len(children2):
-#        return False
-#    for child1, child2 in zip(children1, children2):
-#        return equal_xml(child1, child2)
-#    return True
-    if expect:
-        return result   
-
-
-def setup_module():
-    """ stuff to do before running the tests """
-    pass    
-    
-def teardown_module():
-    """ stuff to do after running the tests """
-    if os.path.exists(TEST_FILE_NAME):
-        os.remove(TEST_FILE_NAME)
-    if os.path.exists(ZIP_FILE_NAME):
-        os.remove(ZIP_FILE_NAME)
-    
-    
-class TestPlanMatti():
-    """ test MattiDrop.py """
-    def __init__(self): 
-        self.config = None
-        self.tp_result = None
-            
-    def test_all_present(self):
-        """ test mattiDrops.py with all parameters present and correct"""
-        teardown_module()
-        opts = Bunch(build_drive="z:", 
-             matti_scripts=os.path.join(HELIUM_ADDR, 'testconfig/ats3/matti/script/'), 
-             flash_images = HELIUM_ADDR + os.sep + "testconfig/ats3/matti/variant_images/test_file.fpsx," \
-                + HELIUM_ADDR + os.sep + "testconfig/ats3/matti/variant_images/test_file_3rd.fpsx," \
-                + HELIUM_ADDR + os.sep + "testconfig/ats3/matti/variant_images/test_file_another.fpsx",
-             report_email="", harness="STIF", 
-             file_store=path(), testrun_name="testrun",  
-             device_type="product", device_hwid="5425", diamonds_build_url="", drop_file="MATTIDrop.zip", 
-             minimum_flash_images="2", plan_name="matti_test_plan", 
-             sis_files= HELIUM_ADDR + os.sep + "testconfig/ats3/matti/sis/test_file_matti_install.sis," \
-                + HELIUM_ADDR + os.sep + "testconfig/ats3/matti/sis/another_test_file_matti_install.sis", 
-             template_loc=os.path.join(HELIUM_ADDR, 'tools/common/python/lib/ats3/matti/template/matti_demo.xml'), 
-             test_timeout="60", verbose="false")
-       
-        self.config = ats3.matti.MattiDrops.Configuration(opts)
-        self.tp_result = ats3.matti.MattiDrops.create_drop(self.config)
-        assert os.path.exists(ZIP_FILE_NAME)
-        assert os.path.exists(TEST_FILE_NAME)
-        #shutil.copy(TEST_FILE_NAME, os.path.join(HELIUM_ADDR, 'testconfig/ats3/matti/test_all_present.xml'))
-        #equal_xml(TEST_FILE_NAME, os.path.join(HELIUM_ADDR, 'testconfig/ats3/matti/test_all_present.xml'))
-        
-    def test_no_sis_or_flash_files(self):
-        """test mattiDrops.py with no sis or flash files in the parameters"""
-        teardown_module()
-        opts = Bunch(build_drive="z:", 
-             matti_scripts=os.path.join(HELIUM_ADDR, 'testconfig/ats3/matti/script/'), 
-             flash_images = "",
-             report_email="", harness="STIF", 
-             file_store=path(), testrun_name="testrun",  
-             device_type="product", device_hwid="5425", diamonds_build_url="", drop_file="MATTIDrop.zip", 
-             minimum_flash_images="2", plan_name="matti_test_plan", 
-             sis_files= "", 
-             template_loc=os.path.join(HELIUM_ADDR, 'tools/common/python/lib/ats3/matti/template/matti_demo.xml'), 
-             test_timeout="60", verbose="true")
-       
-        self.config = ats3.matti.MattiDrops.Configuration(opts)
-        self.tp_result = ats3.matti.MattiDrops.create_drop(self.config)
-        assert os.path.exists(ZIP_FILE_NAME)
-        assert os.path.exists(TEST_FILE_NAME)
-        #shutil.copy(TEST_FILE_NAME, os.path.join(HELIUM_ADDR, 'testconfig/ats3/matti/test_no_sis_or_flash.xml'))
-        #equal_xml(TEST_FILE_NAME, os.path.join(HELIUM_ADDR, 'testconfig/ats3/matti/test_no_sis_or_flash.xml'))
-
-
-    def test_no_files(self):
-        """ test mattiDtops.py with no filespresent at all"""
-        teardown_module()
-        opts = Bunch(build_drive="z:", 
-             matti_scripts=os.path.join(HELIUM_ADDR, 'testconfig/ats3/matti/variant_images/'), 
-             flash_images = "",
-             report_email="", harness="STIF", 
-             file_store=path(), testrun_name="testrun",  
-             device_type="product", device_hwid="5425", diamonds_build_url="", drop_file="MATTIDrop.zip", 
-             minimum_flash_images="2", plan_name="matti_test_plan", 
-             sis_files= "", 
-             template_loc=os.path.join(HELIUM_ADDR, 'tools/common/python/lib/ats3/matti/template/matti_demo.xml'), 
-             test_timeout="60", verbose="true")
-        self.config = ats3.matti.MattiDrops.Configuration(opts)
-        self.tp_result = ats3.matti.MattiDrops.create_drop(self.config)
-        assert not os.path.exists(ZIP_FILE_NAME)
-        assert os.path.exists(TEST_FILE_NAME)
-        #shutil.copy(TEST_FILE_NAME, os.path.join(HELIUM_ADDR, 'testconfig/ats3/matti/test_no_files.xml'))
-        #equal_xml(TEST_FILE_NAME, os.path.join(HELIUM_ADDR, 'testconfig/ats3/matti/test_no_files.xml'))
-
-    def test_no_params(self):
-        """test MattiDrops.py with no parameters present at all"""
-        teardown_module()
-        opts = Bunch(build_drive="", 
-             matti_scripts="", 
-             flash_images = "",
-             report_email="", harness="", 
-             file_store="", testrun_name="",  
-             device_type="", device_hwid="", diamonds_build_url="", drop_file="", 
-             minimum_flash_images="", plan_name="", 
-             sis_files= "", 
-             template_loc="", 
-             test_timeout="", verbose="true")
-       
-        self.config = ats3.matti.MattiDrops.Configuration(opts)
-        self.tp_result = ats3.matti.MattiDrops.create_drop(self.config)
-        assert not os.path.exists(ZIP_FILE_NAME)
-        assert not os.path.exists(TEST_FILE_NAME)
-
-    def test_some_not_present(self):
-        """ test MattiDrops.py with an extra file not present in the dir"""
-        teardown_module()
-        opts = Bunch(build_drive="z:", 
-             matti_scripts=os.path.join(HELIUM_ADDR, 'testconfig/ats3/matti/script/'), 
-             flash_images = HELIUM_ADDR + os.sep + "testconfig/ats3/matti/variant_images/test_file.fpsx," \
-                + HELIUM_ADDR + os.sep + "testconfig/ats3/matti/variant_images/test_file_3rd.fpsx," \
-                + HELIUM_ADDR + os.sep + "testconfig/ats3/matti/variant_images/test_file_different.fpsx",
-             report_email="", harness="STIF", 
-             file_store=path(), testrun_name="testrun",  
-             device_type="product", device_hwid="5425", diamonds_build_url="", drop_file="MATTIDrop.zip", 
-             minimum_flash_images="2", plan_name="matti_test_plan", 
-             sis_files= HELIUM_ADDR + os.sep + "testconfig/ats3/matti/sis/test_file_matti_install.sis," \
-                + HELIUM_ADDR + os.sep + "testconfig/ats3/matti/sis/another_test_file.sis", 
-             template_loc=os.path.join(HELIUM_ADDR, 'tools/common/python/lib/ats3/matti/template/matti_demo.xml'), 
-             test_timeout="60", verbose="false")
-       
-        self.config = ats3.matti.MattiDrops.Configuration(opts)
-        self.tp_result = ats3.matti.MattiDrops.create_drop(self.config)
-        assert os.path.exists(ZIP_FILE_NAME)
-        assert os.path.exists(TEST_FILE_NAME)
-        #shutil.copy(TEST_FILE_NAME, os.path.join(HELIUM_ADDR, 'testconfig/ats3/matti/test_some_not_present.xml'))
-        #equal_xml(TEST_FILE_NAME, os.path.join(HELIUM_ADDR, 'testconfig/ats3/matti/test_some_not_present.xml'))
--- a/buildframework/helium/tools/common/python/lib/cpythontest/test_packageiad.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,91 +0,0 @@
-#============================================================================ 
-#Name        : test_packageiad.py 
-#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:
-#===============================================================================
-
-""" Test cases for packageiad.
-
-"""
-import sys
-import os
-import filecmp
-import xml.dom.minidom
-import logging
-
-
-logger = logging.getLogger('test.ccm_results')
-logging.basicConfig(level=logging.INFO)
-
-
-def setup_module():
-    """ Creates some test data files for file-related testing. """
-    
-    
-def teardown_module():
-    """ Cleans up test data files for file-related testing. """
-    if os.path.exists('testPackage.zip') and os.path.isfile('testPackage.zip'): 
-        os.remove('testPackage.zip')
-
-    
-#def test_package_main(self):
-    """ Test the package IAD class.
-    sys.path.append(os.path.join(os.environ['HELIUM_HOME'], 'tools', 'iad'))
-    iad = __import__('packageiad')
-    sysdef = os.path.join(os.environ['HELIUM_HOME'], 'tests', 'data', 'packageiad', 'layers.sysdef.xml')
-    sysdefconfigs = "developer_mc_4032"
-    builddrive = os.path.join(os.environ['HELIUM_HOME'], 'tests', 'data', 'packageiad')
-    result = iad.main(sysdef, sysdefconfigs, builddrive) """
-
-#def test_package_processSisDir(self):
-    """ Test the packageiad test_package_processSisDir method.
-    sys.path.append(os.path.join(os.environ['HELIUM_HOME'], 'tools', 'iad'))
-    iad = __import__('packageiad')
-    packager = iad.IADPackager()    #init the packager
-    builddrive = os.path.join(os.environ['HELIUM_HOME'], 'tests', 'data', 'packageiad')
-    buildDirs = os.path.join(os.environ['HELIUM_HOME'], 'tests', 'data', 'packageiad', 'sis\\')
-    packager.processSisDir(buildDirs, builddrive + "\\epoc32\\tools\\makesis.exe") """
-    
-def test_createPackage():
-    """ test the create package method """
-    #load up the python file
-    sys.path.append(os.path.join(os.environ['HELIUM_HOME'], 'tools', 'iad'))
-    iad = __import__('packageiad')
-    packager = iad.IADPackager()    #init the packager
-    topDir = os.path.join(os.environ['HELIUM_HOME'], 'tests', 'data', 'packageiad', 'sis')
-    packageName = 'testPackage'
-    currentDir = os.getcwd()
-    packager.createPackage(topDir, packageName)
-    if not os.path.exists('testPackage.zip') and not os.path.isfile('testPackage.zip'):
-        logger.info("testPackage.zip file not created")
-        assert (os.path.exists('testPackage.zip') and os.path.isfile('testPackage.zip'))
-    os.chdir(currentDir)
-    
-def test_getLayers():
-    """ test getLayers in packageIAD """
-    sys.path.append(os.path.join(os.environ['HELIUM_HOME'], 'tools', 'iad'))
-    iad = __import__('packageiad')
-    sysdefFile = os.path.join(os.environ['HELIUM_HOME'], 'tests', 'data', 'packageiad', 'layers.sysdef.xml')
-    sysdef = xml.dom.minidom.parse (sysdefFile)
-    configurations = sysdef.getElementsByTagName ("configuration")
-    layers = sysdef.getElementsByTagName ("layer")
-
-    bldDirs = []
-    
-    packager = iad.IADPackager()
-    
-    for configuration in configurations :
-        packager.getLayer (configuration, layers, bldDirs)
--- a/buildframework/helium/tools/common/python/lib/cpythontest/test_parsers.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,687 +0,0 @@
-# -*- encoding: latin-1 -*-
-
-#============================================================================ 
-#Name        : test_parsers.py 
-#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:
-#===============================================================================
-
-import os
-import sys
-import tempfile
-import mocker
-from path import path
-import StringIO
-
-import ats3.parsers
-import ats3.testconfigurator
-
-import logging
-logging.getLogger().setLevel(logging.ERROR)
-
-TSRC_DIR = None
-
-def setup_module():
-    """Setup the test environment. The testing of the test parser script requires spesific
-    structure to be available with bld.inf files (with the content written into those)."""
-    global TSRC_DIR
-    TSRC_DIR = path(tempfile.mkdtemp()).normpath()
-    test_component = TSRC_DIR
-    for path_parts in (("tsrc", "group"),
-                       ("tsrc", "tc1", "group"),
-                       ("tsrc", "tc1", "data"),
-                       ("tsrc", "tc1", "dependent_1", "group"),
-                       ("tsrc", "tc1", "dependent_2", "group"),
-                       ("tsrc", "tc1", "subtest", "group"),
-                       ("tsrc", "tc1", "subtest", "data"),
-                       ("tsrc", "tc1", "subtest", "if_test", "group"),
-                       ("tsrc", "tc2", "group"),
-                       ("tsrc", "tc2", "data"),
-                       ("tsrc", "tc3", "group"),
-                       ("tsrc", "tc3", "data"),
-                       ("tmp", "macros"),
-                       ):
-        filepath = path.joinpath(test_component, *path_parts).normpath()
-        if not filepath.exists():
-            os.makedirs(filepath)
-    
-        
-    tsrc = open(path.joinpath(TSRC_DIR, "tsrc", "group", "bld.inf"), 'w')
-    tsrc.write(
-            r"""
-#include "../tc1/group/bld.inf"
-#include "../tc2/group/bld.inf"
-#include "../tc3/group/bld.inf" 
-
-PRJ_TESTMMPFILES
-
-            """)
-    tsrc.close()
-    
-    tc1 = open(path.joinpath(TSRC_DIR, "tsrc", "tc1", "group", "bld.inf"), 'w')
-    tc1.write(
-            r"""
-#include "../dependent_1/group/bld.inf"
-#include "../dependent_2/group/bld.inf"
-#include "../subtest/group/bld.inf"
-
-PRJ_TESTMMPFILES
-tc1.mmp
-
-PRJ_MMPFILES
-not_included.mmp
-            """)
-    tc1.close()
-    
-    tc1_mmp = open(path.joinpath(TSRC_DIR, "tsrc", "tc1", "group", "tc1.mmp"), 'w')
-    tc1_mmp.write(
-            r"""
-TARGET          tc1.dll
-TARGETTYPE      dll
-LIBRARY         stiftestinterface.lib
-LIBRARY         user.lib
-            """)
-    tc1_mmp.close()
-    
-    tc1_sub = open(path.joinpath(TSRC_DIR, "tsrc", "tc1", "subtest", "group", "bld.inf"), "w")
-    tc1_sub.write(
-            r"""
-PRJ_TESTMMPFILES
-sub_test.mmp    
-#ifndef RD_TEST1
-#include "../if_test/group/bld.inf"
-#endif
-            """)
-    tc1_sub.close()
-    tc1_sub_mmp = open(path.joinpath(TSRC_DIR, "tsrc", "tc1", "subtest", "group", "sub_test.mmp"), 'w')
-    tc1_sub_mmp.write(
-            r"""
-TARGET          sub_test.dll
-TARGETTYPE      dll
-LIBRARY         stiftestinterface.lib
-            """)
-    tc1_sub_mmp.close()
-
-    
-    tc1_if = open(path.joinpath(TSRC_DIR, "tsrc", "tc1", "subtest", "if_test", "group", "bld.inf"), "w")
-    tc1_if.write(
-            r"""
-PRJ_TESTMMPFILES
-if_test.mmp
-            """)
-    tc1_if.close()
-    tc1_if_mmp = open(path.joinpath(TSRC_DIR, "tsrc", "tc1", "subtest", "if_test", "group", "if_test.mmp"), 'w')
-    tc1_if_mmp.write(
-            r"""
-TARGET          tc1_if.dll
-TARGETTYPE      dll
-LIBRARY         stifunit.lib
-            """)
-    tc1_if_mmp.close()
-
-    tc1_dep1 = open(path.joinpath(TSRC_DIR, "tsrc", "tc1", "dependent_1", "group", "bld.inf"), "w")
-    tc1_dep1.write(
-            r"""
-PRJ_TESTMMPFILES
-dependent_1.mmp
-onemore.mmp
-            """)
-    tc1_dep1.close()
-
-    tc1_dep1_mmp = open(path.joinpath(TSRC_DIR, "tsrc", "tc1", "dependent_1", "group", "dependent_1.mmp"), 'w')
-    tc1_dep1_mmp.write(
-            r"""
-TARGET          dependent_1.dll
-TARGETTYPE      PLUGIN
-            """)
-    tc1_dep1_mmp.close()
-        
-    tc1_dep2 = open(path.joinpath(TSRC_DIR, "tsrc", "tc1", "dependent_2", "group", "bld.inf"), "w")
-    tc1_dep2.write(
-            r"""
-PRJ_TESTMMPFILES
-dependent_2.mmp
-            """)
-    tc1_dep2.close()
-    
-    tc1_dep2_mmp = open(path.joinpath(TSRC_DIR, "tsrc", "tc1", "dependent_2", "group", "dependent_2.mmp"), 'w')
-    tc1_dep2_mmp.write(
-            r"""
-TARGET          dependent_2.dll
-TARGETTYPE      PLUGIN
-            """)
-    tc1_dep2_mmp.close()
-    
-    tc1_pkg = open(path.joinpath(TSRC_DIR, "tsrc", "tc1", "group", "tc1.pkg"), 'w')
-    tc1_pkg.write(
-                  r"""
-;Language - standard language definitions
-&EN
-
-; standard SIS file header
-#{"BTEngTestApp"},(0x04DA27D5),1,0,0
-
-;Supports Series 60 v 3.0
-(0x101F7961), 0, 0, 0, {"Series60ProductID"}
-
-;Localized Vendor Name
-%{"BTEngTestApp"}
-
-;Unique Vendor name
-:"Nokia"
-
-; Files to copy
-"..\data\file1.dll"-"c:\sys\bin\file1.dll"
-"..\data\file1.txt"-"e:\sys\bin\file1.txt" , FF   ; FF stands for Normal file
-"..\data\file2.mp3"-"e:\sys\bin\file2.mp3"
-"..\data\TestFramework.ini"-"c:\sys\bin\TestFramework.ini"
-;"..\xyz\TestFramework.ini"-"!:\sys\bin\TestFramework.ini" (commented line)
-"../data/temp.ini"-"!:/sys/bin/temp.ini" , FF ; "something here"
-"..\data\tc1.cfg"-"e:\sys\bin\tc1.cfg"
-"..\data\tc1.sisx"-"e:\sys\bin\tc1.sisx"
-"..\data\DUMP.xyz"-"e:\sys\bin\DUMP.xyz"
-
-            
-        """.replace('\\', os.sep))
-    tc1_pkg.close()
-    
-    open(path.joinpath(TSRC_DIR, "tsrc", "tc1", "data", "file1.dll"), 'w').close()
-    open(path.joinpath(TSRC_DIR, "tsrc", "tc1", "data", "file1.txt"), 'w').close()
-    open(path.joinpath(TSRC_DIR, "tsrc", "tc1", "data", "file2.mp3"), 'w').close()
-    open(path.joinpath(TSRC_DIR, "tsrc", "tc1", "data", "TestFramework.ini"), 'w').close()
-    open(path.joinpath(TSRC_DIR, "tsrc", "tc1", "data", "temp.ini"), 'w').close()
-    open(path.joinpath(TSRC_DIR, "tsrc", "tc1", "data", "DUMP.xyz"), 'w').close()
-    
-    tc2 = open(path.joinpath(TSRC_DIR, "tsrc", "tc2", "group", "bld.inf"), "w")
-    tc2.write(
-            r"""
-PRJ_TESTMMPFILES
-tc2.mmp
-            """)
-    tc2.close()
-    tc2_mmp = open(path.joinpath(TSRC_DIR, "tsrc", "tc2", "group", "tc2.mmp"), 'w')
-    tc2_mmp.write(
-            r"""
-TARGET          tc2.dll
-TARGETTYPE      dll
-LIBRARY         EUnit.lib
-            """)
-    tc2_mmp.close()
-    
-    tc2_pkg = open(path.joinpath(TSRC_DIR, "tsrc", "tc2", "group", "tc2.pkg"), 'w')
-    tc2_pkg.write(
-                  r"""
-;Language - standard language definitions
-&EN
-
-; standard SIS file header
-#{"BTEngTestApp"},(0x04DA27D5),1,0,0
-
-;Supports Series 60 v 3.0
-(0x101F7961), 0, 0, 0, {"Series60ProductID"}
-
-;Localized Vendor Name
-%{"BTEngTestApp"}
-
-;Unique Vendor name
-:"Nokia"
-
-; Files to copy
-"..\data\file1.dll"-"c:\sys\bin\file1.dll"
-"..\data\file1.txt"-"e:\sys\bin\file1.txt"
-"..\data\file2.mp3"-"e:\sys\bin\file2.mp3"
-"..\data\TestFramework.ini"-"!:\sys\bin\TestFramework.ini" , FF   ; FF stands for Normal file
-"..\data\tc2.cfg"-"!:\sys\bin\tc2.cfg"
-        """.replace('\\', os.sep))
-    tc2_pkg.close()
-    
-    open(path.joinpath(TSRC_DIR, "tsrc", "tc2", "data", "file1.dll"), 'w').close()
-    open(path.joinpath(TSRC_DIR, "tsrc", "tc2", "data", "file1.txt"), 'w').close()
-    open(path.joinpath(TSRC_DIR, "tsrc", "tc2", "data", "file2.mp3"), 'w').close()
-    open(path.joinpath(TSRC_DIR, "tsrc", "tc2", "data", "TestFramework.ini"), 'w').close()
-    open(path.joinpath(TSRC_DIR, "tsrc", "tc2", "data", "tc2.cfg"), 'w').close()
-
-    
-    tc3 = open(path.joinpath(TSRC_DIR, "tsrc", "tc3", "group", "bld.inf"), "w")
-    tc3.write(
-            r"""
-PRJ_TESTMMPFILES
-tc3.mmp
-            """)
-    tc3.close()
-    tc3_mmp = open(path.joinpath(TSRC_DIR, "tsrc", "tc3", "group", "tc3.mmp"), 'w')
-    tc3_mmp.write(
-            r"""
-TARGET          tc3.dll
-TARGETTYPE      dll
-LIBRARY         EUnit.lib
-            """)
-    tc3_mmp.close()
-    
-    tc3_pkg = open(path.joinpath(TSRC_DIR, "tsrc", "tc2", "group", "tc2.pkg"), 'w')
-    tc3_pkg.write(
-                  r"""
-;Language - standard language definitions
-&EN
-
-; standard SIS file header
-#{"BTEngTestApp"},(0x04DA27D5),1,0,0
-
-;Supports Series 60 v 3.0
-(0x101F7961), 0, 0, 0, {"Series60ProductID"}
-
-;Localized Vendor Name
-%{"BTEngTestApp"}
-
-;Unique Vendor name
-:"Nokia"
-
-; Files to copy
-"..\data\file1.dll"-"c:\sys\bin\file1.dll"
-"..\data\file1.txt"-"e:\sys\bin\file1.txt"
-"..\data\file2.mp3"-"e:\sys\bin\file2.mp3" , FF   ; FF stands for Normal file
-"..\data\TestFramework.ini"-"!:\sys\bin\TestFramework.ini"
-"..\data\temp.ini"-"!:\sys\bin\temp.ini"
-"..\data\tc2.cfg"-"!:\sys\bin\tc2.cfg"
-        """.replace('\\', os.sep))
-    tc3_pkg.close()
-    
-    open(path.joinpath(TSRC_DIR, "tsrc", "tc3", "data", "file1.dll"), 'w').close()
-    open(path.joinpath(TSRC_DIR, "tsrc", "tc3", "data", "file1.txt"), 'w').close()
-    open(path.joinpath(TSRC_DIR, "tsrc", "tc3", "data", "file2.mp3"), 'w').close()
-    open(path.joinpath(TSRC_DIR, "tsrc", "tc3", "data", "TestFramework.ini"), 'w').close()
-    open(path.joinpath(TSRC_DIR, "tsrc", "tc3", "data", "temp.ini"), 'w').close()
-    open(path.joinpath(TSRC_DIR, "tsrc", "tc3", "data", "tc2.cfg"), 'w').close()
-    
-    macros = open(path.joinpath(TSRC_DIR, "tmp", "macros", "bldcodeline.hrh"), 'w')
-    macros.write(
-              r"""
-#ifndef __BLDCODELINE_HRH
-#define __BLDCODELINE_HRH
-
-/** #RD_TEST */
-#define RD_TEST1
-
-/** #RD_TEST2 */
-#define RD_TEST2
-
-/** #RD_TEST3 */
-#define RD_TEST3
-
-#endif  // __BLDCODELINE_HRH
-
-    """)
-    macros.close()
-
-    
-def teardown_module():
-    """ Cleanup environment after testing. """    
-    def __init__():
-        TSRC_DIR.rmtree()
-        
-        
-#        list_of_paths = []
-#        list_of_paths = path.walk(TSRC_DIR)
-#        for file in list_of_paths[2]:
-#            continue
-#        for dir in list_of_paths[1]:
-#            continue
-        
-
-class TestPkgFileParser(mocker.MockerTestCase):
-    """Testing Package file parser"""
-    def __init__(self, methodName="runTest"):
-        mocker.MockerTestCase.__init__(self, methodName)
-
-    def setUp(self):
-        """Setup for PkgFile parser"""
-        self.pkg_file_path1 = os.path.normpath(os.path.join(TSRC_DIR, "tsrc", "tc1", "group"))
-        self.pkg_file_path2 = os.path.normpath(os.path.join(TSRC_DIR, "tsrc", "tc2", "group"))
-        self.pkg_file_path3 = os.path.normpath(os.path.join(TSRC_DIR, "tsrc", "tc3", "group"))
-        self.tcp = ats3.parsers.PkgFileParser("tc1.pkg")        
-        
-        self.data_files = [
-            (path(TSRC_DIR+r"" + os.sep + "tsrc" + os.sep + "tc1" + os.sep + "data" + os.sep + "file1.dll").normpath(), path(r"c:" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1.dll").normpath(), "testmodule", 'tc1.pkg'),
-            (path(TSRC_DIR+r"" + os.sep + "tsrc" + os.sep + "tc1" + os.sep + "data" + os.sep + "file1.txt").normpath(), path(r"e:" + os.sep + "sys" + os.sep + "bin" + os.sep + "file1.txt").normpath(), "data", 'tc1.pkg'),
-            (path(TSRC_DIR+r"" + os.sep + "tsrc" + os.sep + "tc1" + os.sep + "data" + os.sep + "file2.mp3").normpath(), path(r"e:" + os.sep + "sys" + os.sep + "bin" + os.sep + "file2.mp3").normpath(), "data", 'tc1.pkg'),
-            (path(TSRC_DIR+r"" + os.sep + "tsrc" + os.sep + "tc1" + os.sep + "data" + os.sep + "TestFramework.ini").normpath(), path(r"c:" + os.sep + "sys" + os.sep + "bin" + os.sep + "TestFramework.ini").normpath(), "engine_ini", 'tc1.pkg'),
-            (path(TSRC_DIR+r"" + os.sep + "tsrc" + os.sep + "tc1" + os.sep + "data" + os.sep + "temp.ini").normpath(), path(r"c:" + os.sep + "sys" + os.sep + "bin" + os.sep + "temp.ini").normpath(), "engine_ini", 'tc1.pkg'),
-            (path(TSRC_DIR+r"" + os.sep + "tsrc" + os.sep + "tc1" + os.sep + "data" + os.sep + "tc1.cfg").normpath(), path(r"e:" + os.sep + "sys" + os.sep + "bin" + os.sep + "tc1.cfg").normpath(), "conf", 'tc1.pkg'),
-            (path(TSRC_DIR+r"" + os.sep + "tsrc" + os.sep + "tc1" + os.sep + "data" + os.sep + "tc1.sisx").normpath(), path(r"e:" + os.sep + "sys" + os.sep + "bin" + os.sep + "tc1.sisx").normpath(), "", 'tc1.pkg'),
-            (path(TSRC_DIR+r"" + os.sep + "tsrc" + os.sep + "tc1" + os.sep + "data" + os.sep + "DUMP.xyz").normpath(), path(r"e:" + os.sep + "sys" + os.sep + "bin" + os.sep + "DUMP.xyz").normpath(), "data", 'tc1.pkg'),
-            ]
-
-    def test_get_pkg_files(self):
-        """Test if pkg files are returned from a specified location"""
-        assert self.tcp.get_pkg_files(self.pkg_file_path1, False) == ["tc1.pkg"]
-
-
-
-    def test_parser_receives_path(self):      
-        """Test if None is returned when a path to PKG file is incorrect"""
-        assert self.tcp.get_data_files("string") == []
-            
-    def test_data_files_creation_without_exclude(self):
-        """ Tests if PKG file parser creates data files list as expected without exclude"""
-        assert self.tcp.get_data_files(self.pkg_file_path1, "d:") == self.data_files
-        
-    def test_data_files_creation_with_exclude(self):
-        """ Tests if PKG file parser creates data files list as expected with exclude"""
-        self.data_files.pop()
-        assert self.tcp.get_data_files(self.pkg_file_path1, "d:", "\.xyz") == self.data_files
-
-    def test_data_files_creation_without_drive_with_exclude(self):
-        """ Tests if PKG file parser creates data files list as expected without drive with exclude"""
-        
-        self.data_files.pop()
-        assert self.tcp.get_data_files(self.pkg_file_path1, "", "\.xyz") == self.data_files
-
-    def test_data_files_creation_without_drive_without_exclude(self):
-        """ Tests if PKG file parser creates data files list as expected without drive without exclude"""
-        
-        assert self.tcp.get_data_files(self.pkg_file_path1, "") == self.data_files
-            
-
-class TestCppParser(mocker.MockerTestCase):
-    """Testing CPP parser"""
-    def __init__(self, methodName="runTest"):
-        mocker.MockerTestCase.__init__(self, methodName)
-
-    def setUp(self):
-        self.bld_path = os.path.normpath(os.path.join(TSRC_DIR, "tsrc", "group"))
-        self.bld_path_comp1 = os.path.normpath(os.path.join(TSRC_DIR, "tsrc", "tc1", "group"))
-        self.tcp = ats3.parsers.CppParser()
-        upper_bld_path = os.path.dirname(self.bld_path)
-        
-        self.dependent_paths_dictionary = {(os.path.normpath(os.path.join(upper_bld_path, "../tsrc/tc1/subtest/if_test/group"))): {'content': {(os.path.normpath(os.path.join(upper_bld_path, "../tsrc/tc1/subtest/if_test/group"))): {'pkg_files': [], 'mmp_files': ['if_test.mmp'], 'harness': 'STIFUNIT', 'type': ''}}},
-                                            (os.path.normpath(os.path.join(upper_bld_path, "../tsrc/tc2//group"))): {'content': {(os.path.normpath(os.path.join(upper_bld_path, "../tsrc/tc2/group"))): {'pkg_files': ['tc2.pkg'], 'mmp_files': ['tc2.mmp'], 'harness': 'EUNIT', 'type': 'executable'}}}, 
-                                            (os.path.normpath(os.path.join(upper_bld_path, "../tsrc/tc3/group"))): {'content': {(os.path.normpath(os.path.join(upper_bld_path, "../tsrc/tc3/group"))): {'pkg_files':[], 'mmp_files': ['tc3.mmp'], 'harness': 'EUNIT', 'type': 'executable'}}},
-                                            (os.path.normpath(os.path.join(upper_bld_path, "../tsrc/tc1/group"))): {'content': {(os.path.normpath(os.path.join(upper_bld_path, "../tsrc/tc1/subtest/group"))): {'pkg_files': [], 'mmp_files': ['sub_test.mmp'], 'harness': 'STIF', 'type': 'executable'}, 
-                                                                                                                                (os.path.normpath(os.path.join(upper_bld_path, "../tsrc/tc1/dependent_1/group"))): {'pkg_files': [], 'mmp_files': ['dependent_1.mmp', 'onemore.mmp'], 'harness': "", 'type':''}, 
-                                                                                                                                (os.path.normpath(os.path.join(upper_bld_path, "../tsrc/tc1/dependent_2/group"))): {'pkg_files': [], 'mmp_files': ['dependent_2.mmp'], 'harness': "", 'type': 'dependent'}, 
-                                                                                                                                (os.path.normpath(os.path.join(upper_bld_path, "../tsrc/tc1/group"))): {'pkg_files': ['tc1.pkg'], 'mmp_files': ['tc1.mmp'],'harness': 'STIF', 'type': 'executable'}}}} 
-        
-        self.extended_path_list = [(os.path.normpath(upper_bld_path), upper_bld_path),
-                           (os.path.normpath(os.path.join(upper_bld_path, "../tsrc/tc1/group")), upper_bld_path),
-                           (os.path.normpath(os.path.join(upper_bld_path, "../tsrc/tc1/group/../dependent_1/group")), os.path.normpath(os.path.join(upper_bld_path, "../tc1/group"))),
-                           (os.path.normpath(os.path.join(upper_bld_path, "../tsrc/tc1/group/../dependent_2/group")), os.path.normpath(os.path.join(upper_bld_path, "../tc1/group"))),
-                           (os.path.normpath(os.path.join(upper_bld_path, "../tsrc/tc1/group/../subtest/group")), os.path.normpath(os.path.join(upper_bld_path, "../tc1/group"))),
-                           (os.path.normpath(os.path.join(upper_bld_path, "../tsrc/tc1/group/../subtest/group/../if_test/group")), os.path.normpath(os.path.join(upper_bld_path, "../tc1/group/../subtest/group"))),
-                           (os.path.normpath(os.path.join(upper_bld_path, "../tsrc/tc2/group")), upper_bld_path),
-                           (os.path.normpath(os.path.join(upper_bld_path, "../tsrc/tc3/group")), upper_bld_path),
-                           (os.path.normpath(os.path.join(upper_bld_path, "../tsrc/group/group")), upper_bld_path),
-                           ]
-        self.path_list = [os.path.normpath(os.path.join(upper_bld_path, "group")),
-                           os.path.normpath(os.path.join(upper_bld_path, "../tsrc/tc1/group")),
-                           os.path.normpath(os.path.join(upper_bld_path, "../tsrc/tc1/group/../dependent_1/group")),
-                           os.path.normpath(os.path.join(upper_bld_path, "../tsrc/tc1/group/../dependent_2/group")),
-                           os.path.normpath(os.path.join(upper_bld_path, "../tsrc/tc1/group/../subtest/group")),
-                           os.path.normpath(os.path.join(upper_bld_path, "../tsrc/tc1/group/../subtest/group/../if_test/group")),
-                           os.path.normpath(os.path.join(upper_bld_path, "../tsrc/tc2/group")),
-                           os.path.normpath(os.path.join(upper_bld_path, "../tsrc/tc3/group")),
-                           ]
-        self.path_list_without_undefined = [os.path.normpath(upper_bld_path),
-                           os.path.normpath(os.path.join(upper_bld_path, "../tc1/group")),
-                           os.path.normpath(os.path.join(upper_bld_path, "../tc1/group/../dependent_1/group")),
-                           os.path.normpath(os.path.join(upper_bld_path, "../tc1/group/../dependent_2/group")),
-                           os.path.normpath(os.path.join(upper_bld_path, "../tc1/group/../subtest/group")),
-                           os.path.normpath(os.path.join(upper_bld_path, "../tc2/group")),
-                           os.path.normpath(os.path.join(upper_bld_path, "../tc3/group")),
-                           ]
-        self.cpp_output = ['# 1 "bld.inf"', 
-                           '# 1 "../tc1/group/bld.inf" 1', 
-                           '# 1 "../tc1/group/../dependent_1/group/bld.inf" 1', 
-                           '# 4 "../tc1/group/bld.inf" 2', 
-                           '# 1 "../tc1/group/../dependent_2/group/bld.inf" 1', 
-                           '# 5 "../tc1/group/bld.inf" 2', 
-                           '# 1 "../tc1/group/../subtest/group/bld.inf" 1', 
-                           '# 1 "../tc1/group/../subtest/group/../if_test/group/bld.inf" 1', 
-                           '# 4 "../tc1/group/../subtest/group/bld.inf" 2', 
-                           '# 6 "../tc1/group/bld.inf" 2', 
-                           '# 3 "bld.inf" 2', 
-                           '# 1 "../tc2/group/bld.inf" 1', 
-                           '# 4 "bld.inf" 2', 
-                           '# 1 "../tc3/group/bld.inf" 1', 
-                           '# 5 "bld.inf" 2']
-        
-        
-         
-    def test_pathlist_output(self):
-        """Test get_cpp_output-method using "n" -parameter"""
-        assert self.path_list.sort() == self.tcp.get_cpp_output(self.bld_path, "n").sort()
-        
-    def test_extended_pathlist_output(self):
-        """Test get_cpp_output-method using "e" -parameter"""
-        assert self.extended_path_list.sort() == self.tcp.get_cpp_output(self.bld_path, "e").sort()
-
-    def test_dictionary_pathlist_output(self):
-        """Test get_cpp_output-method using "d" -parameter (dependent paths)"""
-        output = """# 1 "bld.inf"
-
-# 1 "../tc1/group/bld.inf" 1
-
-# 1 "../tc1/group/../dependent_1/group/bld.inf" 1
-
-PRJ_TESTMMPFILES
-dependent_1.mmp
-onemore.mmp
-            
-# 2 "../tc1/group/bld.inf" 2
-
-# 1 "../tc1/group/../dependent_2/group/bld.inf" 1
-
-PRJ_TESTMMPFILES
-dependent_2.mmp
-            
-# 3 "../tc1/group/bld.inf" 2
-
-# 1 "../tc1/group/../subtest/group/bld.inf" 1
-
-PRJ_TESTMMPFILES
-sub_test.mmp    
-
-# 1 "../tc1/group/../subtest/group/../if_test/group/bld.inf" 1
-
-PRJ_TESTMMPFILES
-if_test.mmp
-            
-# 5 "../tc1/group/../subtest/group/bld.inf" 2
-
-
-            
-# 4 "../tc1/group/bld.inf" 2
-
-
-PRJ_TESTMMPFILES
-tc1.mmp
-
-PRJ_MMPFILES
-not_included.mmp
-            
-# 2 "bld.inf" 2
-
-# 1 "../tc2/group/bld.inf" 1
-
-PRJ_TESTMMPFILES
-tc2.mmp
-            
-# 3 "bld.inf" 2
-
-# 1 "../tc3/group/bld.inf" 1
-
-PRJ_TESTMMPFILES
-tc3.mmp
-            
-# 4 "bld.inf" 2
-
-
-PRJ_TESTMMPFILES
-
-            
-"""
-        
-        result = self.tcp.create_dependency_dictionary(StringIO.StringIO(output), self.bld_path)
-        print "INPUT :", self.dependent_paths_dictionary
-        print "OUTPUT:", result 
-
-        assert self.dependent_paths_dictionary == result
-        
-    def test_conditional_cpp_parsing(self):
-        """Test functionality of cpp parser when removing conditionals"""
-        assert self.path_list_without_undefined.sort() == self.tcp.get_cpp_output(bld_path=self.bld_path, output_parameter="n", imacros=os.path.normpath(os.path.join(TSRC_DIR, "tmp", "macros", "bldcodeline.hrh"))).sort()
-
-class TestBldFileParser(mocker.MockerTestCase):
-    """Testing BldFileParser Class"""
-    
-    def __init__(self, methodName="runTest"):
-        mocker.MockerTestCase.__init__(self, methodName)
-    
-    def setUp(self):
-        """Setup for BldFile parser"""
-
-        self.bld_path = path.joinpath(TSRC_DIR, "tsrc", "group", "bld.inf").normpath()
-        upper_bld_path = self.bld_path.dirname()
-        self.tcp = ats3.parsers.BldFileParser()
-        
-        self.test_mmp_files = [
-                               ['tc1.mmp'], 
-                               ['dependent_1.mmp', 'onemore.mmp'], 
-                               ['dependent_2.mmp'], 
-                               ['sub_test.mmp'], 
-                               ['if_test.mmp'], 
-                               ['tc2.mmp'], 
-                               ["tc3.mmp"],
-                               ]
-
-        self.path_list = [path.joinpath(upper_bld_path, "../tc1/group").normpath(),
-                           path.joinpath(upper_bld_path, "../tc1/group/../dependent_1/group").normpath(),
-                           path.joinpath(upper_bld_path, "../tc1/group/../dependent_2/group").normpath(),
-                           path.joinpath(upper_bld_path, "../tc1/group/../subtest/group").normpath(),
-                           path.joinpath(upper_bld_path, "../tc1/group/../subtest/group/../if_test/group").normpath(),
-                           path.joinpath(upper_bld_path, "../tc2/group").normpath(),
-                           path.joinpath(upper_bld_path, "../tc3/group").normpath(),
-                           ]
-
-
-    def test_testmmp_files_with_full_path(self):
-        """Test if mmp file is returned with its full path"""
-        self.mmp_file_path = [path.joinpath(TSRC_DIR, "tsrc", "tc1", "group", "tc1.mmp").normpath()]
-        assert self.tcp.get_test_mmp_files(os.path.normpath(os.path.join(self.path_list[0], "bld.inf"))) == self.mmp_file_path
-        
-        
-
-    def test_testmmp_files(self):
-        """Tests if test mmp files are included"""
-        self.lst_test_mmp = []
-        
-        for p in self.path_list:
-            self.lst_test_mmp.append(self.tcp.get_test_mmp_files(os.path.normpath(os.path.join(p, "bld.inf")), False))
-
-        assert self.lst_test_mmp == self.test_mmp_files
-        
-    def test_ignore_comments(self):
-        """ Test if comments are ignored correctly. """
-        for input_, output in [
-            ("abc.mmp /* apuva.mmp */ xyz.mmp", ("abc.mmp xyz.mmp")),
-            ("abc.mmp /* apuva.mmp */", ("abc.mmp")),
-            ("/* apuva.mmp */", ""),
-            ("  // apuva.mmp", ""),
-            ("   apuva.mmp", "apuva.mmp"),
-            ("xyz.mmp // apuva.mmp", "xyz.mmp"),
-            ("abc.mmp /* apuva.mmp */ xyz.mmp //rst.mmp", ("abc.mmp xyz.mmp")),
-            ]:
-            assert self.tcp.ignore_comments_from_input(input_) == output
-        
-    def test_broken_path(self):
-        """Tests if 'None' is returned when path is broken"""
-        upper_bld_path = os.path.dirname(self.bld_path)
-        assert self.tcp.get_test_mmp_files(os.path.normpath(os.path.join(upper_bld_path, "../tc99/group"))) == None
-    
-    def test_empty_parameter(self):
-        """Tests if 'None' is returned when bld file path is empty"""
-        upper_bld_path = os.path.dirname(self.bld_path)
-        assert self.tcp.get_test_mmp_files("") == None
-
-    
-class TestMmpFileParser(mocker.MockerTestCase):
-    """Testing MmpFileParser Class"""
-    def __init__(self, methodName="runTest"):
-        mocker.MockerTestCase.__init__(self, methodName)
-        
-    def setUp(self):
-        self.bld_path = os.path.normpath(os.path.join(TSRC_DIR, "tsrc", "group", "bld.inf"))
-        upper_bld_path = os.path.dirname(self.bld_path)
-        self.tcp = ats3.parsers.MmpFileParser()
-        self.tc1_type = "dll"
-        self.tc1_name = "tc1.dll"
-        self.tc1_dll_type = "executable"
-        self.tc1_harness = "STIF"
-        self.tc1_libraries = ['stiftestinterface.lib', 'user.lib']
-        self.tc1_all = (self.tc1_name, self.tc1_type, self.tc1_libraries, self.tc1_harness)
-        self.tc1_no_harness = (self.tc1_name, self.tc1_type, self.tc1_libraries)
-        self.tc1_name_type = (self.tc1_name, self.tc1_type) 
-        self.tc1_iftest_harness = "STIFUNIT"
-        self.tc1_iftest_name = "tc1_if.dll"
-        self.tc1_iftest_type = "dll"
-        
-        self.test_mmp_files = [['tc1.mmp'], ['dependent_1.mmp', 'onemore.mmp'], ['dependent_2.mmp'], ['sub_test.mmp'], ['if_test.mmp'], 
-                               ['tc2.mmp'], ["tc3.mmp"]]
-
-        self.path_list = [os.path.normpath(os.path.join(upper_bld_path, "../tc1/group")),
-                           os.path.normpath(os.path.join(upper_bld_path, "../tc1/group/../dependent_1/group")),
-                           os.path.normpath(os.path.join(upper_bld_path, "../tc1/group/../dependent_2/group")),
-                           os.path.normpath(os.path.join(upper_bld_path, "../tc1/group/../subtest/group")),
-                           os.path.normpath(os.path.join(upper_bld_path, "../tc1/group/../subtest/group/../if_test/group")),
-                           os.path.normpath(os.path.join(upper_bld_path, "../tc2/group")),
-                           os.path.normpath(os.path.join(upper_bld_path, "../tc3/group")),
-                           ]
-    
-    def test_get_dlltype(self):
-        """Test if get_filetype returns right type for given mmp"""
-        assert self.tc1_dll_type == self.tcp.get_dll_type(os.path.normpath(os.path.join(self.path_list[0], 'tc1.mmp'))) 
-    
-    def test_get_target_filename(self):
-        """Test if get_filename returns right name for dll for given mmp"""
-        assert self.tc1_name == self.tcp.get_target_filename(os.path.normpath(os.path.join(self.path_list[0], 'tc1.mmp')))
-    
-    def test_get_libraries(self):
-        """Test if get_harness returns right harness for given mmp"""
-        assert self.tc1_libraries == self.tcp.get_libraries(os.path.normpath(os.path.join(self.path_list[0], 'tc1.mmp')))
-    
-    def test_get_harness(self):
-        """Test if get_harness returns right harness for given mmp"""
-        assert self.tc1_harness == self.tcp.get_harness(os.path.normpath(os.path.join(self.path_list[0], 'tc1.mmp')))
-    
-    def test_read_information_method(self):
-        """Test if read_information_from_mmp returns wanted output for given parameter and mmp-file"""
-        assert self.tc1_all == self.tcp.read_information_from_mmp(os.path.normpath(os.path.join(self.path_list[0], 'tc1.mmp')), 0)
-        assert self.tc1_no_harness == self.tcp.read_information_from_mmp(os.path.normpath(os.path.join(self.path_list[0], 'tc1.mmp')), 1)
-        assert self.tc1_name_type == self.tcp.read_information_from_mmp(os.path.normpath(os.path.join(self.path_list[0], 'tc1.mmp')), 2)
-        assert self.tc1_name == self.tcp.read_information_from_mmp(os.path.normpath(os.path.join(self.path_list[0], 'tc1.mmp')), 3)
-        assert self.tc1_type == self.tcp.read_information_from_mmp(os.path.normpath(os.path.join(self.path_list[0], 'tc1.mmp')), 4) 
-        assert self.tc1_libraries == self.tcp.read_information_from_mmp(os.path.normpath(os.path.join(self.path_list[0], 'tc1.mmp')), 5)
-        assert self.tc1_harness == self.tcp.read_information_from_mmp(os.path.normpath(os.path.join(self.path_list[0], 'tc1.mmp')), 6)
-        assert self.tc1_iftest_name == self.tcp.read_information_from_mmp(os.path.normpath(os.path.join(self.path_list[4], 'if_test.mmp')), 3)
-        assert self.tc1_iftest_type == self.tcp.read_information_from_mmp(os.path.normpath(os.path.join(self.path_list[4], 'if_test.mmp')), 4) 
-        assert self.tc1_iftest_harness == self.tcp.read_information_from_mmp(os.path.normpath(os.path.join(self.path_list[4], 'if_test.mmp')), 6)
-
-class TestParsers(mocker.MockerTestCase):
-    """Testing Parsers functionality"""
-    def __init__(self, methodName="runTest"):
-        mocker.MockerTestCase.__init__(self, methodName)
-        
-    def setUp(self):
-        pass
--- a/buildframework/helium/tools/common/python/lib/cpythontest/test_policy_validator.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,150 +0,0 @@
-#============================================================================ 
-#Name        : test_policy_validator.py 
-#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:
-#===============================================================================
-
-"""Test the integration.quality module."""
-
-import os
-import unittest
-import sys
-import time
-import shutil
-
-import integration.quality
-import logging
-
-_logger = logging.getLogger('test.archive')
-    
-    
-_test_file_paths = [
-    's60/Distribution.Policy.S60',
-    's60/ADO/Distribution.Policy.S60',
-    's60/ADO/group/Distribution.Policy.S60',
-    's60/ADO/internal/Distribution.Policy.S60',
-    's60/ADO/internal/good/Distribution.Policy.S60',
-    's60/ADO/internal/bad/Distribution.Policy.S60',
-    's60/ADO/tsrc/Distribution.Policy.S60',
-    's60/ADO/tsrc/group/Distribution.Policy.S60',
-    's60/ADO/tsrc/private/Distribution.Policy.S60',
-    's60/component_public/Distribution.Policy.S60',
-    's60/component_public/component_public_file.txt',
-    's60/component_private/Distribution.Policy.S60',
-    's60/component_private/component_private_file.txt',    
-    's60/missing/to_be_removed_9999.txt',
-    's60/missing/subdir/Distribution.Policy.S60',
-    's60/missing/subdir/to_be_removed_9999.txt',
-    's60/invalid/Distribution.Policy.S60',
-    's60/invalid/comment/Distribution.Policy.S60',
-    's60/invalid/utf16/Distribution.Policy.S60',
-    's60/invalid/letter/Distribution.Policy.S60',
-    's60/new_rules/',
-    's60/new_rules/subdir1/invalid.txt',
-    's60/new_rules/subdir2/',
-    ]
-
-_test_file_content = {
-    's60/Distribution.Policy.S60': '0',
-    's60/missing/subdir/Distribution.Policy.S60' : '0',
-    's60/component_public/Distribution.Policy.S60': '0',
-    's60/component_private/Distribution.Policy.S60': '1',
-    's60/ADO/Distribution.Policy.S60': '0',
-    's60/ADO/group/Distribution.Policy.S60': '0',
-    's60/ADO/internal/Distribution.Policy.S60': '1',
-    's60/ADO/internal/good/Distribution.Policy.S60': '1',
-    's60/ADO/internal/bad/Distribution.Policy.S60': '0',
-    's60/ADO/tsrc/Distribution.Policy.S60': '950',
-    's60/ADO/tsrc/group/Distribution.Policy.S60': '0',
-    's60/ADO/tsrc/private/Distribution.Policy.S60': '0',
-    's60/invalid/Distribution.Policy.S60': '0',
-    's60/invalid/comment/Distribution.Policy.S60': '0 ; some comment',
-    's60/invalid/utf16/Distribution.Policy.S60': '\xFF\xFE\x30\x00\x0D\x00\x0D\x00\x0D\x00\x0A\x00',
-    's60/invalid/letter/Distribution.Policy.S60': '9A0',
-    }
-    
-class PolicyValidatorTest(unittest.TestCase):
-    EXEC_FILE = "archive_create.ant.xml"
-    
-    def _testpath(self, subpath):
-        """ Normalised path for test paths. """
-        return os.path.normpath(os.path.join(self.root_test_dir, subpath))
-
-    def setUp(self):
-        """ Setup files test config. 
-        
-        This creates a number of empty files in a temporary directory structure
-        for testing various file selection and archiving operations.
-        """
-        #print 'setup_module()'
-        #print _test_file_content.keys()
-        self.root_test_dir = "_test_" + str(time.strftime("%H.%M.%S"))
-        for child_path in _test_file_paths:
-            path = os.path.join(self.root_test_dir, child_path)
-            path_dir = path
-            path_dir = os.path.dirname(path)
-            
-            if (not os.path.exists(path_dir)):
-                _logger.debug('Creating dir:  ' + path_dir)
-                os.makedirs(path_dir)
-    
-            if(not path.endswith('/') and not path.endswith('\\')):
-                _logger.debug('Creating file: ' + path)
-                handle = open(path, 'w')
-                # Write any file content that is needed
-                if _test_file_content.has_key(child_path):
-                    handle.write(_test_file_content[child_path])
-                handle.close()
-    
-    def tearDown(self):
-        """ Teardown test config. """
-        shutil.rmtree(self.root_test_dir)
-
-    def test_policy_validator(self):
-        """ Testing the policy validator behaviour. """
-        validator = integration.quality.PolicyValidator()
-        errors = [] 
-        errors.extend(validator.validate(self._testpath('s60')))
-        errors.sort()
-        print errors
-        assert len(errors) == 5
-
-        
-        # Invalid encoding: contains other stuff than policy id.
-        assert errors[0][0] == "invalidencoding"
-        assert errors[0][1].lower() == self._testpath('s60' + os.sep + 'invalid' + os.sep + 'comment' + os.sep + 'distribution.policy.s60')
-        assert errors[0][2] == None
-        
-        # Invalid encoding: ID contains a letter.
-        assert errors[1][0] == "invalidencoding"
-        assert errors[1][1].lower() == self._testpath('s60' + os.sep + 'invalid' + os.sep + 'letter' + os.sep + 'distribution.policy.s60')
-        assert errors[1][2] == None
-        
-        # Invalid encoding: not ascii.
-        assert errors[2][0] == "invalidencoding"
-        assert errors[2][1].lower() == self._testpath('s60' + os.sep + 'invalid' + os.sep + 'utf16' + os.sep + 'distribution.policy.s60')
-        assert errors[2][2] == None
-        
-        # Policy file is missing
-        assert errors[3][0] == "missing"
-        assert errors[3][1].lower() == self._testpath('s60' + os.sep + 'missing')
-        assert errors[3][2] == None
-
-        # Policy file is missing
-        assert errors[4][0] == "missing"
-        assert errors[4][1].lower() == self._testpath('s60' + os.sep + 'new_rules' + os.sep + 'subdir1')
-        assert errors[4][2] == None
-        
--- a/buildframework/helium/tools/common/python/lib/cpythontest/test_relnotes.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,93 +0,0 @@
-#============================================================================ 
-#Name        : test_relnotes.py 
-#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:
-#===============================================================================
-
-""" Unit tests for the relnotes tool.
-
-"""
-import unittest
-import StringIO
-import rtfutils
-import logging
-import os
-
-def test_initialization():
-    "Modules are imported properly, i.e. PyRTF is there etc."
-    import PyRTF
-
-def test_pyrtf():
-    import PyRTF
-    
-    DR = PyRTF.Renderer()
-    doc     = PyRTF.Document()
-    ss      = doc.StyleSheet
-    section = PyRTF.Section()
-    doc.Sections.append( section )
-    
-    string = StringIO.StringIO()
-    DR.Write(doc, string)
-    assert string.getvalue() != ""
-    string.close()
-    
-class RelNotesTest( unittest.TestCase ):
-    
-    def setUp(self):
-        self.helium_home = os.environ["HELIUM_HOME"]
-        self.logger = logging.getLogger('test.relnotes')
-        logging.basicConfig(level=logging.INFO)
-      
-    def test_rtfconvert(self):
-        props = {r'my.val1=hello world' : r'my.val1=hello world',
-        r'my.val2=http://www.company.com/a' : r'my.val2={\\field{\\*\\fldinst HYPERLINK http://www.company.com/a}}',
-        r'my.val3=ftp://ftp.company.com/a' : r'my.val3={\\field{\\*\\fldinst HYPERLINK ftp://ftp.company.com/a}}',
-        r'my.val4=\\server\share1\dir' : r'my.val4={\\field{\\*\\fldinst HYPERLINK \\\\\\\\\\\\\\\\server\\\\\\\\share1\\\\\\\\dir}}',
-        r'my.val5=.\projects' : r'my.val5={\\field{\\*\\fldinst HYPERLINK .\\\\\\\\projects}}'}
-        
-        for p, output in props.iteritems():
-            self._check_rtfconvert(p, output)
-        
-    def _check_rtfconvert(self, value, correctoutput):
-        output = StringIO.StringIO()
-        rtfu = rtfutils.RTFUtils('')
-        rtfu._rtfconvert([value], output)
-        self.logger.info(output.getvalue())
-        self.logger.info(correctoutput) 
-        assert output.getvalue() == correctoutput #.strip()
-        output.close()
-
-    def test_rtftable(self):
-        output = StringIO.StringIO()
-        errors = ["component,error,warning", "app2,1,2"]
-        input = ["text <tag> text"]
-        
-        rtfu = rtfutils.RTFUtils('')
-        rtfu._rtftable(errors, output, '<tag>', input)
-        
-        self.logger.info(output.getvalue())
-        output.close()
-        
-    def test_rtfimage(self):
-        output = StringIO.StringIO()
-        image = os.path.join(self.helium_home, 'extensions', 'nokia', 'config', 'relnotes', 'logo.png')
-        input = ["text <tag> text"]
-        
-        rtfu = rtfutils.RTFUtils('')
-        rtfu._rtfimage(image, output, '<tag>', input)
-        
-        self.logger.info(output.getvalue())
-        output.close()
--- a/buildframework/helium/tools/common/python/lib/cpythontest/test_sis.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,75 +0,0 @@
-#============================================================================ 
-#Name        : test_sis.py 
-#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:
-#===============================================================================
-
-""" Test sis module. """
-
-import logging
-import unittest
-
-from lxml import etree
-
-import configuration
-import sis
-
-_logger = logging.getLogger('test.sis')
-
-
-class ArchivePreBuilderTest(unittest.TestCase):
-    """ Tests for sis module. """
-    
-    def test_sis_v1(self):
-        """ V1 config format. """
-        data = {'name': 'foo',
-                'path': 'bar'}
-        tree = self._setup_test_case(data)
-        assert tree.xpath("/project/target[@name='stage1']/parallel/*/arg/@line")[0] == '-v foo.pkg foo.sis'
-        
-    def test_sis_v2(self):
-        """ V2 config format. """
-        data = {'input': 'foo.pkg'}
-        tree = self._setup_test_case(data)
-        assert tree.xpath("/project/target[@name='stage1']/parallel/*/arg/@line")[0] == '-v foo.pkg foo.sis'
-
-    def test_sis_v2_1(self):
-        """ V2 config format for sisx. """
-        data = {'input': 'foo.pkg', 'output': 'foo.sisx'}
-        tree = self._setup_test_case(data)
-        assert tree.xpath("/project/target[@name='stage1']/parallel/*/arg/@line")[0] == '-v foo.pkg foo.sis'
-        assert tree.xpath("/project/target[@name='stage2']/parallel/*/arg/@line")[0] == '-v foo.sis foo.sisx cert1 key1'
-        
-    def _setup_test_case(self, additional_data):
-        """ Setup test case based on varying inputs. """
-        data = {'makesis.tool': 'makesis',
-                'signsis.tool': 'signsis',
-                'key': 'key1',
-                'cert': 'cert1',
-                'build.sisfiles.dir': 'dir'}
-        data.update(additional_data)
-        config = configuration.ConfigurationSet([configuration.Configuration(data)])
-        sis_prebuilder = sis.SisPreBuilder(config)
-        sis_prebuilder.write('test.xml')
-        
-        tree = etree.parse('test.xml')
-        return tree
-    
-
-
-
-
-
--- a/buildframework/helium/tools/common/python/lib/cpythontest/test_timeout_launcher.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,174 +0,0 @@
-#============================================================================ 
-#Name        : test_timeout_launcher.py 
-#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:
-#===============================================================================
-""" unit tests the timeout launcher """
-
-# pylint: disable-msg=E1101
-
-import logging
-import unittest
-import tempfile
-import sys
-import mocker
-import subprocess
-
-
-_logger = logging.getLogger('test.configuration')
-logging.basicConfig(level=logging.INFO)
-
-# Platform
-WINDOWS = False
-if sys.platform == "win32":
-    import win32process
-    import win32con
-    import win32api
-    WINDOWS = True
-
-
-
-class os(object):
-    """ dummy the os function call"""
-    def kill(self, pid, value):
-        """dummy OS class"""
-        pid = value #just for pylint
-        return 1
-
-class TimeoutLauncherTest(mocker.MockerTestCase):
-    """class containing methods to test the timeout launcher"""
-
-    def test_cmdlineIsEmpty(self):
-        """test_cmdlineIsEmpty: nothing in the command line"""
-        import timeout_launcher
-        obj = self.mocker.replace(timeout_launcher.sys)
-        obj.exit(-1)
-        self.mocker.result(1)
-        self.mocker.replay()
-        
-        sys.argv = ['timeout_launcher.py', '--timeout=1', 'version']
-        timeout_launcher.main()
-
-    def test_valid_with_timeout(self):
-        """test_valid_with_timeout: initial test with valid values and timeout."""
-        import timeout_launcher
-        cmdline =  ['dir']
-        shell = True
-        if WINDOWS:
-            shell = False
-        process = self.mocker.mock()
-        process.poll()
-        self.mocker.result(None)
-        process.poll()
-        self.mocker.result(1)
-
-        obj = self.mocker.replace("subprocess.Popen")
-        obj(' '.join(cmdline), stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=shell)
-        self.mocker.result(process)
-
-        obj2 = self.mocker.replace(timeout_launcher.sys)
-        obj2.exit(mocker.ANY)
-        self.mocker.result(1)
-
-        process.communicate()[0]
-        self.mocker.result(None)
-        process.returncode
-        self.mocker.result(1)
-
-        self.mocker.replay()
-        
-        sys.argv = ['--timeout=1', '--', ' '.join(cmdline)]
-        timeout_launcher.main()
-
-    def test_valid_no_timeout(self):
-        """test_valid_no_timeout: initial test with valid values and no timeout."""
-        import timeout_launcher
-        cmdline =  ['dir']
-        process = self.mocker.mock()
-
-        obj = self.mocker.replace("subprocess.Popen")
-        obj(' '.join(cmdline), stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True)
-        self.mocker.result(process)
-
-        process.communicate()[0]
-        self.mocker.result(None)
-        process.returncode
-        self.mocker.result(1)
-
-        obj2 = self.mocker.replace(timeout_launcher.sys)
-        obj2.exit(mocker.ANY)
-        self.mocker.result(1)
-        self.mocker.replay()
-
-        sys.argv = ['--', ' '.join(cmdline)]
-        timeout_launcher.main()
-
-    def test_timedout(self):
-        """test_timedout: initial test with valid values but times out."""
-        import timeout_launcher
-        cmdline =  ['dir']
-        shell = True
-        if WINDOWS:
-            shell = False
-        process = self.mocker.mock()
-
-        timeValue = self.mocker.replace("time.time")
-        timeValue()
-        self.mocker.result(1)
-        #if debug not set then it won't call the logger functions and so these are not needed
-        if logging.DEBUG:
-            timeValue()
-            self.mocker.result(1)
-            timeValue()
-            self.mocker.result(1)
-            timeValue()
-            self.mocker.result(1)
-            timeValue()
-            self.mocker.result(1)
-
-        obj = self.mocker.replace("subprocess.Popen")
-        obj(' '.join(cmdline), stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=shell)
-        self.mocker.result(process)
-
-        self.mocker.order()
-        process.poll()
-        self.mocker.result(None)
-        timeValue()
-        self.mocker.result(5)
-        self.mocker.unorder()
-
-        process.pid
-        self.mocker.result(0x0129B460)
-
-        if WINDOWS:
-            handle = self.mocker.mock()
-            handle_1 = self.mocker.replace("win32api.OpenProcess")
-            handle_1(True, win32con.PROCESS_TERMINATE, mocker.ANY)
-            self.mocker.result(handle)
-            handle_1 = self.mocker.replace("win32process.TerminateProcess")
-            handle_1(handle, -1)
-            
-
-        self.mocker.replay()
-
-        sys.argv = ['--timeout=3', '--', ' '.join(cmdline)]
-        failed = False
-        try:
-            timeout_launcher.main()
-        except:
-            failed = True
-        assert failed
-
--- a/buildframework/helium/tools/common/python/lib/cpythontest/test_vbaconf.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,87 +0,0 @@
-#============================================================================ 
-#Name        : test_vbaconf.py 
-#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:
-#===============================================================================
-
-""" Some test cases for VBA config generation.
-"""
-import unittest
-import logging
-import os
-import vbaconf
-import vbaconf.new_delivery
-import amara
-
-# Uncomment this line to enable logging in this module, or configure logging elsewhere
-#logging.basicConfig(level=logging.DEBUG)
-logger = logging.getLogger('test.vbaconf')
-
-
-class TestVBAConf(unittest.TestCase):
-    """ Implementation of VBA test cases. """
-    
-    def test_vba_conf_generation(self):
-        """ Testing all methods from VBA config generation.
-        """
-        delivery = os.path.join(os.environ['HELIUM_HOME'],'tests/data/validate_overlay/delivery.xml.parsed')
-        prep = os.path.join(os.environ['HELIUM_HOME'],'tests/data/validate_overlay/prep.xml.parsed')
-        doc = vbaconf.generate_config(delivery, prep)
-        
-        logger.info(doc.toprettyxml())
-        
-        doc = amara.parse(str(doc.toprettyxml()))
-        assert len(doc.xml_xpath("/virtualBuildArea/add")) == 24 
-        
-    def test_vba_conf_generation_new_delivery_format(self):
-        """ Testing all methods from VBA config generation.
-        """
-        delivery = os.path.join(os.environ['HELIUM_HOME'],'tests/data/validate_overlay/new_delivery/delivery.xml.parsed')
-        prep = os.path.join(os.environ['HELIUM_HOME'],'tests/data/validate_overlay/new_delivery/prep.xml.parsed')
-        doc = vbaconf.new_delivery.generate_config(delivery, prep)
-        
-        logger.info(doc.toprettyxml())
-        
-        doc = amara.parse(str(doc.toprettyxml()))
-        ##assert len(doc.xml_xpath("/virtualBuildArea/add")) == 24 
-        
-    def test_vba_conf_generation_new_api(self):
-        """ Testing all methods from VBA config generation.
-        """
-        delivery = os.path.join(os.environ['HELIUM_HOME'],'tests/data/validate_overlay/delivery.xml.parsed')
-        prep = os.path.join(os.environ['HELIUM_HOME'],'tests/data/validate_overlay/prep.xml.parsed')
-        conv = vbaconf.ConfigConverter(delivery, prep)
-        doc = conv.generate_config()
-        
-        logger.info(doc.toprettyxml())
-        
-        doc = amara.parse(str(doc.toprettyxml()))
-        assert len(doc.xml_xpath("/virtualBuildArea/add")) == 24 
-
-    def test_vba_conf_generation_new_api_new_delivery_format(self):
-        """ Testing all methods from VBA config generation.
-        """
-        delivery = os.path.join(os.environ['HELIUM_HOME'],'tests/data/validate_overlay/new_delivery/delivery.xml.parsed')
-        prep = os.path.join(os.environ['HELIUM_HOME'],'tests/data/validate_overlay/new_delivery/prep.xml.parsed')
-        conv = vbaconf.ConfigConverterNewDelivery(delivery, prep)
-        doc = conv.generate_config()
-        
-        logger.info(doc.toprettyxml())
-        
-        doc = amara.parse(str(doc.toprettyxml()))
-        assert len(doc.xml_xpath("/virtualBuildArea/add")) == 24 
-
- 
\ No newline at end of file
--- a/buildframework/helium/tools/common/python/lib/ctc.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,74 +0,0 @@
-#============================================================================ 
-#Name        : ctc.py 
-#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:
-#===============================================================================
-
-import os
-import ftplib
-
-
-class MonSymFTPUploader:
-    """ This class implement an uploader for MON.SYM file. """
-    
-    def __init__(self, server, paths, diamondsid):
-        """ Upload the files discovered under the paths,
-            and upload them under the FTP server.
-        """
-        self.server = server
-        self.paths = paths
-        self.diamondsid = diamondsid
-        self.ftp = None
-    
-    def upload(self):
-        self._open()
-        """ Proceed to the upload. """
-        monsyms = []
-        i = 1
-        for p in self.paths:
-            if os.path.exists(p) and os.path.isfile(p):
-                # ftp://1.2.3.4/ctc_helium/[diamonds_id]/mon_syms/2/mon.sym
-                outputdir = "ctc_helium/%s/mon_syms/%d" % (self.diamondsid , i)
-                output = outputdir + "/MON.SYM"
-                self._ftpmkdirs(outputdir)
-                print "Copying %s under %s" % (p, output)
-                self._send(p, output)
-                monsyms.append(output)
-                i += 1
-        self._close()
-        return monsyms
-
-    def _open(self):
-        self.ftp = ftplib.FTP(self.server, 'anonymous', '')
-    
-    def _close(self):
-        self.ftp.quit()
-
-    def _ftpmkdirs(self, dir):
-        pwd = self.ftp.pwd()
-        for d in dir.split('/'):
-            if len(d)!=0:
-                try:
-                    print "Creating %s under %s" % (d, self.ftp.pwd())
-                    self.ftp.mkd(d)
-                except ftplib.error_perm, exc:
-                    pass
-                self.ftp.cwd(d)
-        self.ftp.cwd(pwd)
-    
-    def _send(self, src, dst):
-        self.ftp.storbinary("STOR " + dst, open(src, "rb"), 1024)
-
--- a/buildframework/helium/tools/common/python/lib/dataurl.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-#============================================================================ 
-#Name        : dataurl.py 
-#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:
-#===============================================================================
-
-""" This module implements method to create dataurl """
-import mimetypes
-import base64
-import urllib
-
-def from_url(url):
-    """ This function returns a data url using content pointed by url. """
-    (mimetype, encoding) = mimetypes.guess_type(url)
-    if mimetype == None:
-        return url
-    if encoding != None:
-        encoding = "charset=%s;" % encoding
-    else:
-        encoding = ""
-    data = urllib.urlopen(url).read()
-    return "data:%s;%sbase64,%s" % (mimetype, encoding, base64.encodestring(data).replace("\n",""))
--- a/buildframework/helium/tools/common/python/lib/delta_zip.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,375 +0,0 @@
-#============================================================================ 
-#Name        : delta_zip.py 
-#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:
-#===============================================================================
-
-import os
-import shutil
-import re
-import fileutils
-import buildtools
-import logging
-
-_logger = logging.getLogger('delta_zip')
-logging.basicConfig(level=logging.INFO)
-
-class MD5SignatureBuilder(object):
-    """ MD5 CRC creation base class"""
-    def __init__(self, build_area_root, nb_split, temp_dir, exclude_dirs, list_of_files):
-        """constructor"""
-        if not build_area_root.endswith(os.sep):
-            self.build_area_root = build_area_root + os.sep
-        self.nb_split = int(nb_split)
-        self.temp_dir = temp_dir
-        self.exclude_dirs = exclude_dirs
-        self.list_of_files = list_of_files
-        
-    def create_file_list(self):
-        """Create list of files (was list_files.pl)"""
-        #list_of_files_symbol = os.path.join(self.temp_dir, "list_files_sym.txt")
-        
-        if not os.path.exists(self.temp_dir):
-            os.mkdir(self.temp_dir)
-      
-        fp_filelist = open(self.list_of_files, 'w')
-        #fp_filelist_sym = open(list_of_files_symbol, 'w')
-                        
-        scanner = fileutils.FileScanner(self.build_area_root)
-        scanner.add_include('**')
-        
-        for _dir in self.exclude_dirs.split(','):
-            _dir = _dir.replace(self.build_area_root, "")
-            scanner.add_exclude(_dir)
-
-        for path in scanner.scan():
-            if (not os.path.isdir(path)) or (os.path.isdir(path) and (os.listdir(path) != []  and os.listdir(path) != ['.svn'])):
-                (drive, _) = os.path.splitdrive(path)
-                path = path.replace(drive + os.sep, "")
-                fp_filelist.write(path + "\n")
-            
-    def split_file_list(self):
-        """Split the list of files for parallelalisation"""
-        md5_dir = os.path.join(self.temp_dir, "md5_temp")
-        self.dest_dir = os.path.join(md5_dir, str(self.nb_split))
-        if not os.path.exists(self.dest_dir):
-            os.makedirs(self.dest_dir)
-        fp_split = []
-        #Open files
-        #White list_of_lists.txt
-        self.list_of_lists = self.dest_dir + "/list_of_lists.txt"
-        fp_list_of_lists = open(self.list_of_lists, 'w')
-        for i in range(self.nb_split):
-            filename = self.dest_dir + "/" + str(i) + ".txt"
-            _fp = open(filename, 'w')
-            fp_split.append(_fp)
-            #Write in list_of_lists
-            fp_list_of_lists.write(filename + "\n")
-            
-        #Write in files
-        fp_read = open(self.list_of_files, 'r') 
-        line = fp_read.readline()
-        line_number = 0
-        while(line != ""):
-            fp_split[line_number % len(fp_split)].write(line)
-            line = fp_read.readline()
-            line_number += 1
-        
-        fp_list_of_lists.close()    
-        fp_read.close()
-        for _fp in fp_split:
-            _fp.close()
-            
-    def create_command_list(self):        
-        """ create the command to run evalid on each file in the list of files"""
-        liste = buildtools.CommandList()
-        
-        #tools_dir = os.path.join(self.build_area_root, "/epoc32/tools")
-        
-        for i in range(self.nb_split):
-            #liste.addCommand(buildtools.Command("perl -I"+tools_dir, tools_dir, [os.path.join(tools_dir,"evalid_multiple.pl"), "-f", self.__get_partial_input_file_name(i), "> "+self.__get_partial_signature_file_name(i) ]))
-            liste.addCommand(buildtools.Command("evalid", os.sep, ["", "-f", self.__get_partial_input_file_name(i) + " "+self.build_area_root, self.__get_partial_signature_file_name(i) ]))
-            
-        return liste
-    
-    def __get_partial_input_file_name(self, _nb):
-        """ get the input file name string as has been created so far and add .txt to it"""
-        return os.path.join(self.dest_dir, str(_nb) + ".txt")
-            
-    def __get_partial_signature_file_name(self, _nb):
-        """ get the signature file name string as has been created so far and add .md5 to it"""
-        return os.path.join(self.dest_dir, str(_nb) + ".md5")
-        
-    def concatenate_signature_files(self, signature_file):
-        """ concatenate all the files with the MD5 CRC in """
-        # Get header
-        _fp = open(self.__get_partial_signature_file_name(0), 'r')
-        line = ""
-        header_temp = ""
-        header = ""
-        while (re.search(r'(\S+).*MD5=(\S+)', line) == None):
-            header_temp = header_temp + line
-            line = _fp.readline()
-        
-        for line in header_temp.splitlines():
-            if re.match(r'Directory:.*', line):
-                line =  "Directory:" + self.build_area_root
-            if re.match(r'FileList:.*', line):
-                line = "FileList:" + self.list_of_files
-            header = header + line + "\n"
-        
-        #re.sub(r'(Directory:).*\n', "\1"+self.build_area_root, header)
-        #re.sub(r'(FileList:).*\n', "\1"+self.list_of_files, header)
-            
-        header_size = len(header.splitlines())
-        
-        fp_md5_signatures_file = open(signature_file, 'w')
-        fp_md5_signatures_file.write(header)
-        for i in range(self.nb_split):
-            _fp = open(self.__get_partial_signature_file_name(i), 'r')
-
-            for i in range(header_size): # Skip header
-                _fp.readline()
-            
-            fp_md5_signatures_file.write(_fp.read())
-            _fp.close()
-        fp_md5_signatures_file.close()
-
-    def write_build_file(self):
-        """ create the file of the list of files to have a CRC created"""
-        self.create_file_list()
-        self.split_file_list()
-        self.create_build_file()
-    
-    def create_build_file(self):
-        """ there should always be an overloaded version of this method in sub-classes"""
-        raise NotImplementedError()
-    
-    def build(self, signature_file):
-        """create the list of files generate the MD5 CRC and create the final file with CRCs in"""
-        self.write_build_file()
-        self.compute_evalid_MD5()
-        self.concatenate_signature_files(signature_file)
-            
-    def compute_evalid_MD5(self):
-        """ there should always be an overlaoded version in the methos sub-class"""
-        raise NotImplementedError()
-    
-class MD5SignatureBuilderEBS(MD5SignatureBuilder):
-    """ build the MD5 CRCs for all the files in the list of files"""
-    def create_build_file(self):
-        """Create EBS XML"""
-        liste = self.create_command_list()
-        self.makefile = self.dest_dir + "/ebs.xml"
-        buildtools.convert(liste, self.makefile, "ebs")
-
-    def compute_evalid_MD5(self):
-        """Compute MD5 using the requested parallel build system"""
-        os.chdir(self.build_area_root)
-        os.system("perl -I%HELIUM_HOME%/tools/common/packages %HELIUM_HOME%/tools/compile/buildjob.pl -d " + self.makefile + " -l " + os.path.join(self.dest_dir, "md5.log") + " -n " + str(int(os.environ['NUMBER_OF_PROCESSORS'])*2))
-
-"""
-Run the delta zipping over the EC build system
-"""
-class MD5SignatureBuilderEC(MD5SignatureBuilder):
-    """ The MD5 CRC creation for delta zippinf for use on EC machines"""
-    def __init__(self, build_area_root, nb_split, temp_dir, exclude_dirs, ec_cluster_manager, ec_build_class, list_of_files):
-        MD5SignatureBuilder.__init__(self, build_area_root, nb_split, temp_dir, exclude_dirs, list_of_files)
-        self.ec_cluster_manager = ec_cluster_manager
-        self.ec_build_class = ec_build_class
-    
-    def create_build_file(self):
-        """Create makefile"""
-        liste = self.create_command_list()
-        self.makefile = self.dest_dir + "/Makefile"
-        buildtools.convert(liste, self.makefile, "make")
-
-    def compute_evalid_MD5(self):
-        """Compute MD5 using the requested parallel build system"""
-        root_path = os.environ['EMAKE_ROOT'] +";" + "c:\\apps;"
-        os.chdir(self.build_area_root)
-        
-        print "emake --emake-cm=" + self.ec_cluster_manager + " --emake-class=" + self.ec_build_class + " --emake-root="+root_path+ " --emake-emulation-table make=symbian,emake=symbian,nmake=nmake -f " + self.makefile
-        os.system("emake --emake-cm=" + self.ec_cluster_manager + " --emake-annodetail=basic,history,file,waiting --emake-annofile="+self.temp_dir+"\\delta_zip_anno.xml"+ " --emake-class=" + self.ec_build_class + " --emake-root="+root_path+" --emake-emulation-table make=symbian,emake=symbian,nmake=nmake -f " + self.makefile)
-
-class DeltaZipBuilder(object):
-    """methods to create the delta zip after all the prep"""
-    def __init__(self, build_area_root, temp_path, old_md5_signature, new_md5_signature):
-        self.build_area_root = os.path.join(build_area_root, os.sep)
-        self.temp_path = temp_path
-        self.old_md5_signature = old_md5_signature
-        self.new_md5_signature = new_md5_signature
-        self.sign_dic = SignaturesDict()
-        
-    def __fill_signature_dict(self, signature_file, old_new):
-        """ read each line of signature file search for .MD5"""
-        _fp = open(signature_file, 'r')
-        lines = _fp.read().splitlines()
-        _fp.close()
-        for line in lines:
-            info = re.search(r'([ \S]+) TYPE=.*MD5=(\S+)', line)
-            if info != None:
-                filename = info.group(1)
-                if not self.sign_dic.has_key(filename):
-                    self.sign_dic[filename] = ["", ""]
-                self.sign_dic[filename][old_new] = info.group(2)                
-    
-    def create_delta_zip(self, zip_file, delete_list_file, no_of_zips, ant_file):
-        """Create Delta zip and list of file to delete."""
-        
-        no_of_zips = int(no_of_zips)
-        self.__fill_signature_dict(self.old_md5_signature, 0)
-        self.__fill_signature_dict(self.new_md5_signature, 1)
-        
-        #fp_dic = open(zip_file + ".dic.txt", 'w')
-        #fp_dic.write(str(self.sign_dic))
-        #fp_dic.close()
-        
-        delete_list = []
-        
-        if not os.path.exists(os.path.dirname(delete_list_file)):
-            os.mkdir(os.path.dirname(delete_list_file))
-        if not os.path.exists(self.temp_path):
-            os.mkdir(self.temp_path)
-        
-        archive_txt = open(os.path.join(self.temp_path, 'create_zips.txt'), 'w')
-
-        for _file in self.sign_dic.keys():
-            filepath = os.path.join(self.build_area_root, _file)
-            
-            signatures = self.sign_dic[_file]
-            
-            ( _, rest) = os.path.splitdrive(filepath)
-            (frontpath, rest) = os.path.split(rest)
-            
-            if (signatures[0] != signatures[1]):  #File changed between the 2 BAs
-                if (signatures[0] != "") and  (signatures[1] != ""): # File is present in both BAs and has changed
-                    if os.path.exists(filepath): # File could have been deleting after running 'build-md5':
-                        archive_txt.write(_file + "\n")
-                else:
-                    if (signatures[1] != ""): # New file
-                        if os.path.exists(filepath):
-                            archive_txt.write(_file + "\n")
-                    else: # Deleted file
-                        delete_list.append(filepath)
-        
-        archive_txt.close()
-        
-        splitter = MD5SignatureBuilder('', no_of_zips, self.temp_path, '', os.path.join(self.temp_path, 'create_zips.txt'))
-        splitter.split_file_list()
-        
-        os.chdir(self.build_area_root)
-        
-        (frontpath, rest) = os.path.split(zip_file)
-        stages = buildtools.CommandList()
-        
-        for i in range(no_of_zips):
-            md5_dir = os.path.join(self.temp_path, "md5_temp")
-            path = os.path.join(md5_dir, os.path.join(str(no_of_zips), str(i) + '.txt'))
-            output = os.path.join(frontpath, rest.replace(".zip", "_part_%sof%s.zip" % (str(i+1), str(no_of_zips))))
-            
-            cmd = buildtools.Command('7za.exe', self.build_area_root)
-            cmd.addArg('a')
-            # Set the format to be zip-compatible
-            cmd.addArg('-tzip')
-            cmd.addArg(output)
-            cmd.addArg('@' + path)
-            
-            stages.addCommand(cmd)
-
-        writer = buildtools.AntWriter(ant_file)
-        writer.write(stages)
-
-        fp_delete = open(delete_list_file, 'w')
-        fp_delete.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n")
-        fp_delete.write("<updateinstructions>\n")
-        for i in delete_list:
-            fp_delete.write("<deletefileaction target=\"" + i[2:] + "\"/>\n")
-        fp_delete.write("</updateinstructions>\n")
-        fp_delete.close()
-        
-                
-class SignaturesDict(dict):
-    """ class to handle signature comparison"""
-    def __init__(self):
-        """ constructor"""
-        dict.__init__(self)
-    
-    def __str__(self):
-        """ compare the tree structures"""
-        string = ""
-        #o = OldNewBA()
-        both = False
-        only_old = False
-        only_new = False
-        for filename in self.keys():
-            signatures = self[filename]
-            if signatures[0] == signatures[1]: #File did not change
-                both = True
-            elif (signatures[0] != "") and  (signatures[1] != ""): # File is present in both BAs and has changed
-                both = False
-            else:
-                if (signatures[1] != ""): # New file
-                    only_old = True
-                else: # Deleted file
-                    only_new = True
-            
-            string = string + filename + " " + str(both) + " " + " " + str(only_old) + " " + str(only_new) + " " + self[filename][0] + " " + self[filename][1] + "\n"
-        
-        return string
-
-def readEvalid(dir):
-    filesdict = {}
-    for root, _, files in os.walk(dir):
-        for name in files:
-            f = os.path.join(root, name)
-            directory = None
-            for md5line in open(f):
-                if md5line.startswith('Directory:'):
-                    directory = md5line.replace('Directory:', '').replace('\n', '')
-                if 'MD5=' in md5line:
-                    info = re.search(r'([ \S]+) TYPE=.*MD5=(\S+)', md5line)
-                    if info != None:
-                        assert directory
-                        filesdict[os.path.join(directory, info.group(1))] = info.group(2)
-    return filesdict
-    
-def changedFiles(atsevalidpre, atsevalidpost):
-    filesbefore = readEvalid(atsevalidpre)
-    filesafter = readEvalid(atsevalidpost)
-    
-    changedfiles = []
-    
-    for key in filesafter.keys():
-        if key not in filesbefore:
-            changedfiles.append(key)
-        else:
-            if filesafter[key] != filesbefore[key]:
-                changedfiles.append(key)
-    
-    return changedfiles
-    
-def evalidAdomapping(builddrive, dest, adomappingfile):
-    os.chdir(builddrive)
-    i = 0
-    if os.path.exists(dest):
-        shutil.rmtree(dest)
-    os.mkdir(dest)
-    for line in open(adomappingfile):
-        dir = line.split('=')[0].replace(r'\:', ':')
-        tmpfile = os.path.join(dest, str(i))
-        os.system('evalid -g ' + dir + ' ' + tmpfile)
-        i = i + 1
\ No newline at end of file
--- a/buildframework/helium/tools/common/python/lib/dependancygraph.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,349 +0,0 @@
-#============================================================================ 
-#Name        : dependancygraph.py
-#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:
-#===============================================================================
-
-import os
-import amara
-import codecs
-import zipfile
-
-class Library:
-    def __init__(self, name, license, version=''):
-        self.name = name
-        self.license = license
-        self.version = version
-        self.requires = []
-
-class ModuleGroup:
-    def __init__(self):
-        self.libraries = {}
-    def addConf(self, name, des, color):
-        self.libraries[name] = (des, [], color)
-    def addLibrary(self, conf, library):
-        for lib in self.getLibraries(conf):
-            if lib.name.lower() == library.name.lower():
-                lib.license = library.license
-                return
-        self.getLibraries(conf).append(library)
-    def getLibraries(self, conf):
-        (_, libs, _) = self.libraries[conf]
-        return libs
-    def getDescription(self, conf):
-        (des, _, _) = self.libraries[conf]
-        return des
-    def getColor(self, conf):
-        (_, _, color) = self.libraries[conf]
-        return color
-
-COLORS = ['pink', 'red', 'lightblue', 'orange', 'green', 'yellow', 'turquoise', 'limegreen']
-
-class ReadIvyConfig:
-    def __init__(self, ivyfilename):
-        self.ivyfilename = ivyfilename
-        self.ivyxml = amara.parse(open(ivyfilename))
-        self.group = ModuleGroup()
-
-    def readConfigurations(self):
-        for conf in self.ivyxml['ivy-module'].configurations.conf:
-            color = COLORS.pop()
-            self.group.addConf(conf.name, conf.description, color)
-
-    def readModules(self):
-        license = ''
-        for module in self.ivyxml['ivy-module'].dependencies.xml_children:
-            if hasattr(module, 'data'):
-                if 'License:' in module.data:
-                    license = module.data.strip()
-            elif hasattr(module, 'name'):
-                modulename = module.name.replace('-', '_')
-            
-                if module.org != 'SWEPT':
-                    self.group.addLibrary(module.conf, Library(modulename, license))
-                    license = ''
-
-    def readSubModules(self):
-        for module in self.ivyxml['ivy-module'].dependencies.xml_children:
-            if hasattr(module, 'name'):
-                if 'jars' in module.name:
-                    ivydir = os.path.dirname(self.ivyfilename)
-                    ivydir = os.path.join(ivydir, 'modules')
-                    ivyjarfile = os.path.join(ivydir, module.name + '-1.0.ivy.xml')
-                    ivymodulexml = amara.parse(open(ivyjarfile))
-                    license = ''
-                    for artifact in ivymodulexml['ivy-module'].publications.xml_children:
-                        if hasattr(artifact, 'data'):
-                            if 'License:' in artifact.data:
-                                license = artifact.data.strip()
-                        elif hasattr(artifact, 'name'):
-                            bits = artifact.name.split('-')
-                            name = bits[0]
-                            version = ''
-                            if len(bits) > 1:
-                                version = bits[1]
-                            self.group.addLibrary(module.conf, Library(name, license, version))
-                            license = ''
-
-PYTHON_GROUP = True
-SUBCON_PYTHON_GROUP = False
-
-def readEggs(libraries, dirtosearch, internaldir):
-    libraries.addConf(PYTHON_GROUP, 'Python libs', libraries.getColor('core_install'))
-    libraries.addConf(SUBCON_PYTHON_GROUP, 'Python subcon libs', libraries.getColor('subcon'))
-    
-    for x in [os.walk(dirtosearch, topdown=False), os.walk(internaldir, topdown=False)]:
-        for root, _, files in x:
-            notinsubcon = os.path.normpath(internaldir) in os.path.normpath(root)
-            
-            for fname in files:
-                filename = os.path.join(root, fname)
-                if fname == 'PKG-INFO':
-                    pkgmetafile = open(filename)
-                    library = readPkgInfo(pkgmetafile)
-                    pkgmetafile.close()
-                    
-                    requirefilename = os.path.join(filename, '..', 'requires.txt')
-                    if os.path.exists(requirefilename):
-                        requiresfile = open(requirefilename)
-                        readRequiresFile(requiresfile, library)
-                        requiresfile.close()
-                        
-                    libraries.addLibrary(notinsubcon, library)
-                    
-                if os.path.isfile(filename) and fname.endswith('.egg'):
-                    eggfile = zipfile.ZipFile(filename, 'r', zipfile.ZIP_DEFLATED)
-                    
-                    data = eggfile.read('EGG-INFO/PKG-INFO')
-                    
-                    library = readPkgInfo(data.split('\n'))
-                    
-                    if 'EGG-INFO/requires.txt' in eggfile.namelist():
-                        requiresdata = eggfile.read('EGG-INFO/requires.txt')
-                        readRequiresFile(requiresdata.split('\n'), library)
-                        
-                    libraries.addLibrary(notinsubcon, library)
-                    
-                    eggfile.close()
-
-def readRequiresFile(data, library):
-    for line in data:
-        line = line.strip()
-        if line != '' and not (line.startswith('[') and line.endswith(']')):
-            library.requires.append(line.split('>=')[0].strip())
-
-def readPkgInfo(data):
-    name = ''
-    version = ''
-    license = ''
-    license2 = ''
-  
-    for line in data:
-        if 'Name:' in line:
-            name = line.strip().replace('Name: ', '')
-        if 'Version:' in line:
-            version = line.strip().replace('Version: ', '')
-        if 'License:' in line:
-            license = line.strip().replace('License: ', '')                    
-        if 'Classifier: License :: ' in line:
-            license2 = license2 + ' ' + line.strip().replace('Classifier: License :: ', '').replace('OSI Approved :: ', '')
-    
-    if license.lower() == 'unknown' or license == '' or license2 != '':
-        license = license2
-    
-    return Library(name, license, version)
-
-def addLicensesColors(graphdata, group):
-    newgraphdata = []
-    for line in graphdata:
-        newline = line
-        for conf in group.libraries:
-            for module in group.getLibraries(conf):
-                if module.name.lower() in line.lower() and 'label=' in line:
-                    newline = line.replace('label=', 'color=%s,label=' % group.getColor(conf))
-                    
-                    if module.license != '':
-                        newline = newline.replace("\"];", "|%s\"];" % module.license)
-                    
-                    break
-        newgraphdata.append(newline)
-    return newgraphdata
-    
-def createKey(group):
-    key = """subgraph cluster1 {
-    label = "Key";
-    style=filled;
-    color=lightgrey;
-    """
-    
-    for conf in group.libraries:
-        if conf != PYTHON_GROUP and conf != SUBCON_PYTHON_GROUP:
-            key = key + "\"%s: %s\" [style=filled,color=%s];" % (conf, group.getDescription(conf), group.getColor(conf))
-    
-    key = key + "}"
-    return key
-
-def createGraph(ivyxmlfilename, graphfilename, dirtosearch, internaldir, subcon):
-    readivy = ReadIvyConfig(ivyxmlfilename)
-    readivy.readConfigurations()
-    readivy.readModules()
-    readivy.readSubModules()
-    
-    group = readivy.group
-    
-    readEggs(group, dirtosearch, internaldir)
-    
-    key = createKey(group)
-    
-    graphdata = loadGraphFile(graphfilename)
-    
-    newgraphdata = addLicensesColors(graphdata, group)
-    
-    #add key to graph
-    newgraphdata[-1] = newgraphdata[-1].replace('}', key + '\n}')
-    
-    graphwritefile = codecs.open(graphfilename, 'w', 'utf8')
-    graphwritefile.writelines(newgraphdata)
-    graphwritefile.close()
-    
-    linkPythonLibs(group, graphfilename, subcon)
-
-def loadGraphFile(graphfilename):
-    destgraphfile = codecs.open(graphfilename, 'r', 'utf8')
-    graphdata = []
-    for line in destgraphfile:
-        graphdata.append(line)
-    destgraphfile.close()
-    return graphdata
-
-def addToGraph(graphfilenametoadd, destgraphfilename):
-    graphdata = loadGraphFile(destgraphfilename)
-    
-    graphfile = codecs.open(graphfilenametoadd, 'r', 'utf8')
-    graphdatatoadd = ''
-    for line in graphfile:
-        line = line.replace('digraph {', '')
-        graphdatatoadd = graphdatatoadd + line
-    graphfile.close()
-    
-    graphdata[-1] = graphdata[-1].replace('}', graphdatatoadd)
-    
-    graphwritefile = codecs.open(destgraphfilename, 'w', 'utf8')
-    graphwritefile.writelines(graphdata)
-    graphwritefile.close()
-
-def linkPythonLibs(libraries, destgraphfilename, subcon):    
-    graphdata = loadGraphFile(destgraphfilename)
-  
-    output = "helium_ant -> helium_python;\n"
-    
-    if subcon:
-        list = [SUBCON_PYTHON_GROUP]
-    else:
-        list = [SUBCON_PYTHON_GROUP, PYTHON_GROUP]
-    
-    for group in list:
-        for lib in libraries.getLibraries(group):
-            output = output + ("helium_python -> \"%s\";\n" % lib.name)
-            output = output + ("\"%s\" [style=filled,shape=record,color=%s,label=\"%s %s|%s\"];\n" % (lib.name, libraries.getColor(group), lib.name, lib.version, lib.license))
-            
-            for require in lib.requires:
-                output = output + ("\"%s\" -> \"%s\";\n" % (lib.name, require))
-    
-    graphdata.reverse()
-    for line in graphdata:
-        if line.strip() == '':
-            graphdata.pop(0)
-        else:
-            break
-    graphdata.reverse()
-    
-    graphdata[-1] = graphdata[-1].replace('}', output + '}')
-    
-    graphwritefile = codecs.open(destgraphfilename, 'w', 'utf8')
-    graphwritefile.writelines(graphdata)
-    graphwritefile.close()
-
-def externalDependancies(database, output):
-    out = open(output, 'w')
-    db = amara.parse(open(database))
-    out.write('digraph G {\n')
-    for p in db.antDatabase.project:
-        items = []
-        if hasattr(p, 'property'):
-            for prop in p.property:
-                if 'external' + os.sep in os.path.abspath(str(prop.defaultValue)):
-                    items.append(str(prop.defaultValue))
-        if hasattr(p, 'fileDependency'):
-            for dep in p.fileDependency:
-                dep = str(dep).split(' ')[0]
-                if 'external' + os.sep in os.path.abspath(str(dep)):
-                    items.append(str(dep))
-                    
-        items = set(items)
-        for i in items:
-            out.write('\"%s\" -> \"%s\"\n' % (str(p.name), i.replace(os.environ['HELIUM_HOME'], 'helium').replace(os.sep, '/')))
-    out.write('}')                
-    out.close()
-
-def appendLogs(t, p, output, macro=False):
-    if hasattr(t, 'signal'):
-        for signal in t.signal:
-            if macro:
-                output.append("\"%s\" [fontname=\"Times-Italic\"];" % str(t.name))
-            output.append('subgraph \"cluster%s\" {label = \"%s\"; \"%s\"}\n' % (str(p.name), str(p.name), str(t.name)))
-            s = str(signal).split(',')
-            if len(s) > 1:
-                if s[1] == 'now':
-                    color = 'red'
-                elif s[1] == 'defer':
-                    color = 'yellow'
-                else:
-                    color = 'green'
-                output.append('subgraph \"cluster%s\" {color=%s;style=filled;label = \"Failbuild: %s\"; \"%s\"}\n' % (str(s[1]), color, str(s[1]), str(s[0])))
-            output.append('\"%s\" -> \"%s\" [style=dotted]\n' % (str(t.name), str(s[0])))
-    if hasattr(t, 'log'):
-        for log in t.log:
-            logdir = '/output/logs/'
-            logname = os.path.basename(str(log))
-            if not ('**' in logname):
-                logname = logname.replace('*', '${sysdef.configuration}').replace('--logfile=', '')
-                if not logdir in logname:
-                    logname = logdir + logname
-                logname = logname.replace(os.sep, '/')
-                
-                if macro:
-                    output.append("\"%s\" [fontname=\"Times-Italic\"];" % str(t.name))
-                output.append('subgraph \"cluster%s\" {label = \"%s\"; \"%s\"}\n' % (str(p.name), str(p.name), str(t.name)))
-                output.append('\"%s\" -> \"%s\"\n' % (str(t.name), logname))
-
-def findLogFiles(database, output):
-    out = open(output, 'w')
-    db = amara.parse(open(database))
-    out.write('digraph G {\n')
-    output = []
-    
-    for p in db.antDatabase.project:
-        if hasattr(p, 'macro'):
-            for t in p.macro:
-                appendLogs(t, p, output, True)
-        if hasattr(p, 'target'):
-            for t in p.target:
-                appendLogs(t, p, output)
-    for l in set(output):
-        out.write(l)
-    out.write('}')                
-    out.close()
--- a/buildframework/helium/tools/common/python/lib/docs.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-#============================================================================ 
-#Name        : docs.py 
-#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:
-#===============================================================================
-
-""" Modules related to documentation """
-
-from __future__ import with_statement
-import re
-import os
-import string
-import amara
-import ant
-
-def find_python_dependencies(setpath, dbPath, dbPrj):
-    """ Search python dependencies """
-    for root, dirs, files in os.walk(setpath, topdown=False):
-        for fname in files:
-            filePattern = re.compile('.ant.xml$')
-            fileMatch = filePattern.search(fname)
-            modulelist = []
-            if (fileMatch):
-                filePath = os.path.abspath(os.path.join(root, fname))
-                with open(filePath) as f:
-                    filePathAmara = 'file:///'+ filePath.replace('\\','/')
-                    curPrj=amara.parse(filePathAmara)
-                    for line in f:
-                        linePattern = re.compile('^import')
-                        lineMatch = linePattern.search(line)
-                        if ((lineMatch) and (line.find('.')==-1)):
-                            newLine = line.replace('import','')
-                            newLine = newLine.replace(',','')
-                            moduleArray = newLine.split()
-                            for curModule in moduleArray:
-                                try:
-                                    importModule = __import__(curModule)
-                                    modulePath=importModule.__file__
-                                    if (modulePath.find('\\helium\\tools')!= -1):
-                                        for projectList in dbPrj.antDatabase.project:
-                                            if (projectList.name==curPrj.project.name):
-                                                if not (curModule in modulelist):
-                                                    print " Python module : " +curModule
-                                                    moduleElement = projectList.pythonDependency.xml_create_element(u'module', content=u''+curModule)
-                                                    projectList.pythonDependency.xml_append(moduleElement)
-                                                modulelist = modulelist + [curModule]
-                                except Exception, e:
-                                    error ="yes"
--- a/buildframework/helium/tools/common/python/lib/escapeddict.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +0,0 @@
-#============================================================================ 
-#Name        : escapeddict.py 
-#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:
-#===============================================================================
-
-""" This class enables developer to use ${xxx} pattern in their dict and 
-    get them replaced recursively.
-"""
-import re
-import types
-import UserDict
-
-
-class _CustomArray(list):
-    """ Internal class
-    """
-    def __str__(self):
-        string = ""
-        for elem in self:
-            string += " "+elem
-        return string
-
-
-class EscapedDict(UserDict.UserDict):
-    """ Implements a dictionary that escapes the key values recursively. """        
-    
-    def __init__(self, dict={}, failonerror=False):
-        UserDict.UserDict.__init__(self, dict)
-        self.__failonerror = failonerror
-        
-    def __getitem__(self, key):
-        """ Overrides the usual __getitem__ to insert values of other keys referenced in this key's
-        value. """
-        if key in self.data:
-            value = self.data[key]
-            result = value
-            if isinstance(value, types.ListType):
-                result = _CustomArray()
-                for elem in value:
-                    (string, changes) = re.subn(r'\${(?P<name>[._a-zA-Z0-9]+)}', r'%(\g<name>)s', elem)
-                    if changes > 0:
-                        result.append(string % self)
-                    else:
-                        result.append(elem)
-            else:
-                (string, changes) = re.subn(r'\${(?P<name>[._a-zA-Z0-9]+)}', r'%(\g<name>)s', value)
-                if changes > 0:
-                    result = string % self
-            return result
-        elif not self.__failonerror:
-            return "${%s}" % key
-        raise KeyError("Could not find key '%s'" % key)
-        
-
-
-def escapeString(input_string, config):
-    """ Escape a string recursively.
-    
-    :param input_string: the string to be escaped.
-    :param config: a dictionnary containing the values to escape.
-    :return: the escaped string.
-    """
-    data = EscapedDict(config)
-    match = re.search(r'\${(?P<name>[._a-zA-Z0-9]+)}', input_string)
-    if match != None:
-        for property_name in match.groups():
-            property_value = data[property_name]
-            property_value = re.sub(r'\\', r'\\\\', property_value)
-            input_string = re.sub('\${' + property_name + '}', property_value, input_string)
-    return input_string
-
-        
--- a/buildframework/helium/tools/common/python/lib/fileutils.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,677 +0,0 @@
-#============================================================================ 
-#Name        : fileutils.py 
-#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:
-#===============================================================================
-
-"""
-File manipulation related functionalities:
- * Filescanner
- * rmtree (fixed version)
- * move (fixed version)
-"""
-import codecs
-import fnmatch
-import locale
-import logging
-import os
-import re
-import sys
-import shutil
-import StringIO
-import hashlib
-import subprocess
-import string
-
-import pathaddition.match
-import stat
-
-if os.name == 'nt':
-    import win32api
-
-LOGGER = logging.getLogger('fileutils')
-LOGGER_LOCK = logging.getLogger('fileutils.lock')
-#LOGGER.addHandler(logging.FileHandler('default.log'))
-#logging.basicConfig(level=logging.DEBUG)
-#LOGGER.setLevel(logging.DEBUG)
-
-class AbstractScanner(object):
-    """ This class implements all the required infrastructure for filescanning. """
-
-    def __init__(self):
-        """ Initialization. """
-        self.includes = []
-        self.excludes = []
-        self.includes_files = []
-        self.excludes_files = []
-        self.selectors = []
-        self.filetypes = []
-
-    def add_include(self, include):
-        """ Adds an include path to the scanner. """
-        if include.endswith('/') or include.endswith('\\'):
-            include = include + '**'
-
-        self.includes.append(include)
-
-    def add_exclude(self, exclude):
-        """ Adds an exclude path to the scanner. """
-        if exclude.endswith('/') or exclude.endswith('\\'):
-            exclude = exclude + '**'
-
-        self.excludes.append(exclude)
-        
-    def add_exclude_file(self, exclude):
-        """ Adds an exclude file to the scanner. """
-        self.excludes_files.append(exclude)
-    
-    def add_selector(self, selector):
-        """ Add selector to the scanner. """
-        self.selectors.append(selector)
-        
-    def add_filetype(self, filetype):
-        """ Adds a filetype selection to the scanner. """
-        self.filetypes.append(filetype)
-
-    def is_included(self, path):
-        """ Returns if path is included by the scanner. """
-        LOGGER.debug("is_included: path = " + path)
-        if path.replace('\\', '/') in self.includes_files or path in self.includes_files:
-            return True
-        for inc in self.includes:
-            if self.match(path, inc):
-                LOGGER.debug("Included: " + path + " by " + inc)
-                return True
-        return False
-
-    def is_excluded(self, path):
-        """ Returns if path is excluded by the scanner. """
-        LOGGER.debug("is_excluded: path = " + path)
-        if path.replace('\\', '/') in self.excludes_files or path in self.excludes_files:
-            return True
-        for ex in self.excludes:
-            if self.match(path, ex):
-                LOGGER.debug("Excluded: " + path + " by " + ex)
-                return True
-        return False
-    
-    def is_selected(self, path):
-        """ Returns if path is selected by all selectors in the scanner. """
-        LOGGER.debug("is_selected: path = " + path)
-        for selector in self.selectors:
-            if not selector.is_selected(path):
-                return False
-        LOGGER.debug("Selected: " + path)
-        return True
-
-    def is_filetype(self, path):
-        """ Test if a file matches one filetype. """
-        if len(self.filetypes) == 0:
-            return True
-        LOGGER.debug("is_filetype: path = " + path)
-        for filetype in self.filetypes:
-            if self.match(path, filetype):
-                LOGGER.debug("Filetype: " + path + " by " + filetype)
-                return True
-        return False
-
-    def match(self, filename, pattern):
-        """ Is filename matching pattern? """
-        return pathaddition.match.ant_match(filename, pattern, casesensitive=(os.sep != '\\'))
-
-    def test_path(self, root, relpath):
-        """ Test if a path matches filetype, include, exclude, and selection process."""
-        return self.is_filetype(relpath) and self.is_included(relpath) \
-                         and not self.is_excluded(relpath) and \
-                         self.is_selected(os.path.join(root, relpath))
-
-    def __str__(self):
-        """ Returns a string representing this instance. """
-        content = []
-        for inc in self.includes:
-            content.append('include:' + os.path.normpath(inc))
-        for ex in self.excludes:
-            content.append('exclude:' + os.path.normpath(ex))
-        return ';'.join(content)
-
-    def __repr__(self):
-        """ Returns a string representing this instance. """
-        return self.__str__()
-
-    def scan(self):
-        """ Abstract method which much be overriden to implement the scanning process. """
-        raise Exception("scan method must be overriden")
-
-
-class FileScanner(AbstractScanner):
-    """Scans the filesystem for files that match the selection paths.
-
-    The scanner is configured with a root directory. Any number of include
-    and exclude paths can be added. The scan() method is a generator that
-    returns matching files one at a time when called as an iterator.
-
-    This is a revisited implementation of the filescanner. It now relies on
-    the module pathaddition.match that implements a Ant-like regular expression matcher.
-    
-    Rules:
-    - Includes and excludes should not start with *
-    - Includes and excludes should not have wildcard searches ending with ** (e.g. wildcard**)
-    
-    Supported includes and excludes:
-    - filename.txt
-    - filename.*
-    - dir/
-    - dir/*
-    - dir/**    
-    """
-    def __init__(self, root_dir):
-        """ Initialization. """
-        AbstractScanner.__init__(self)
-        self.root_dir = os.path.normpath(root_dir)
-        if not self.root_dir.endswith(os.sep):
-            self.root_dir = self.root_dir + os.sep
-        # Add 1 so the final path separator is removed
-        #self.root_dirLength = len(self.root_dir) + 1
-
-    def scan(self):
-        """ Scans the files required to zip"""
-        #paths_cache = []
-        
-        excludescopy = self.excludes[:]
-        for f in excludescopy:
-            if os.path.exists(os.path.normpath(os.path.join(self.root_dir, f))):
-                self.excludes_files.append(f)
-                self.excludes.remove(f)
-        
-        includescopy = self.includes[:]
-        for f in includescopy:
-            if os.path.exists(os.path.normpath(os.path.join(self.root_dir, f))):
-                self.includes_files.append(f)
-                self.includes.remove(f)
-        
-        LOGGER.debug('Scanning sub-root directories')
-        for root_dir in self.find_subroots():
-            for dirpath, subdirs, files in os.walk(unicode(root_dir)):
-                # Let's save the len before it's getting modified.
-                subdirsLen = len(subdirs)
-                subroot = dirpath[len(self.root_dir):]
-
-                dirs_to_remove = []
-                for subdir in subdirs:
-                    if self.is_excluded(os.path.join(subroot, subdir)):
-                        dirs_to_remove.append(subdir)
-                
-                for dir_remove in dirs_to_remove:
-                    subdirs.remove(dir_remove)
-                
-                LOGGER.debug('Scanning directory: ' + dirpath)
-                for file_ in files:
-                    path = os.path.join(subroot, file_)
-                    if self.is_filetype(path) and self.is_included(path) and \
-                        self.is_selected(os.path.join(dirpath, file_)) and not self.is_excluded(path):
-                        ret_path = os.path.join(dirpath, file_)
-                        yield ret_path
-            
-                LOGGER.debug('Checking for empty directory: ' + dirpath)
-                # Check for including empty directories
-                if self.is_included(subroot) and not self.is_excluded(subroot):
-                    if len(files) == 0 and subdirsLen == 0:
-                        LOGGER.debug('Including empty dir: ' + dirpath)
-                        yield dirpath
-                    
-
-    def find_subroots(self):
-        """Finds all the subdirectory roots based on the include paths.
-
-        Often large archive operations define a number of archives from the root
-        of the drive. Walking the tree from the root is very time-consuming, so
-        selecting more specific subdirectory roots improves performance.
-        """
-        def splitpath(path):
-            """ Returns the splitted path"""
-            return path.split(os.sep)
-
-        root_dirs = []
-        
-        # Look for includes that start with wildcards.
-        subdirs_not_usable = False
-        for inc in self.includes + self.includes_files:
-            first_path_segment = splitpath(os.path.normpath(inc))[0]
-            if first_path_segment.find('*') != -1:
-                subdirs_not_usable = True
-                
-        # Parse all includes for sub-roots
-        if not subdirs_not_usable:
-            for inc in self.includes + self.includes_files:
-                include = None
-                LOGGER.debug("===> inc %s" % inc)
-                contains_globs = False                
-                for pathcomp in splitpath(os.path.normpath(inc)):
-                    if pathcomp.find('*') != -1:
-                        contains_globs = True
-                        break
-                    else:
-                        if include == None:
-                            include = pathcomp
-                        else:
-                            include = os.path.join(include, pathcomp)
-                if not contains_globs:
-                    include = os.path.dirname(include) 
-    
-                LOGGER.debug("include %s" % include)
-                if include != None:
-                    root_dir = os.path.normpath(os.path.join(self.root_dir, include))
-                    is_new_root = True
-                    for root in root_dirs[:]:
-                        if destinsrc(root, root_dir):
-                            LOGGER.debug("root contains include, skip it")
-                            is_new_root = False
-                            break
-                        if destinsrc(root_dir, root):
-                            LOGGER.debug("include contains root, so remove root")
-                            root_dirs.remove(root)
-                    if is_new_root:
-                        root_dirs.append(root_dir)    
-
-        if len(root_dirs) == 0:
-            root_dirs = [os.path.normpath(self.root_dir)]
-        LOGGER.debug('Roots = ' + str(root_dirs))
-        return root_dirs
-
-    def __str__(self):
-        return os.path.normpath(self.root_dir) + ';' + AbstractScanner.__str__(self) 
-
-    def __repr__(self):
-        return self.__str__()
-
-        
-def move(src, dst):
-    """Recursively move a file or directory to another location.
-
-    If the destination is on our current filesystem, then simply use
-    rename.  Otherwise, copy src to the dst and then remove src.
-    A lot more could be done here...  A look at a mv.c shows a lot of
-    the issues this implementation glosses over.
-
-    """
-    try:
-        os.rename(src, dst)
-    except OSError:
-        if os.path.isdir(src):
-            if destinsrc(src, dst):
-                raise Exception, "Cannot move a directory '%s' into itself '%s'." % (src, dst)
-            shutil.copytree(src, dst, symlinks=True)
-            rmtree(src)
-        else:
-            shutil.copy2(src, dst)
-            os.unlink(src)
-
-def rmtree(rootdir):
-    """ Catch shutil.rmtree failures on Windows when files are read-only. Thanks Google!""" 
-    if sys.platform == 'win32':
-        rootdir = os.path.normpath(rootdir)
-        if not os.path.isabs(rootdir):
-            rootdir = os.path.join(os.path.abspath('.'), rootdir)
-        if not rootdir.startswith('\\\\'):
-            rootdir = u"\\\\?\\" + rootdir
-
-    def cb_handle_error(fcn, path, excinfo):
-        """ Error handler, removing readonly and deleting the file. """
-        os.chmod(path, 0666)
-        if os.path.isdir(path):
-            rmdir(path)
-        elif os.path.isfile(path):
-            remove(path)
-        else:
-            fcn(path)
-    
-    if 'java' in sys.platform:
-        import java.io
-        import org.apache.commons.io.FileUtils
-        f = java.io.File(rootdir)
-        org.apache.commons.io.FileUtils.deleteDirectory(f)
-    else:
-        return shutil.rmtree(rootdir, onerror=cb_handle_error)
-
-def destinsrc(src, dst):
-    """ Fixed version of destinscr, that doesn't match dst with same root name."""
-    if os.sep == '\\':
-        src = src.lower()
-        dst = dst.lower()
-    src = os.path.abspath(src)
-    dst = os.path.abspath(dst)
-    if not src.endswith(os.path.sep):
-        src += os.path.sep
-    if not dst.endswith(os.path.sep):
-        dst += os.path.sep
-    return dst.startswith(src)
-
-
-def which(executable):
-    """ Search for executable in the PATH."""
-    pathlist = os.environ['PATH'].split(os.pathsep)
-    for folder in pathlist:
-        filename = os.path.join(folder, executable)
-        try:
-            status = os.stat(filename)
-        except os.error:
-            continue
-        # Check if the path is a regular file
-        if stat.S_ISREG(status[stat.ST_MODE]):
-            mode = stat.S_IMODE(status[stat.ST_MODE])
-            if mode & 0111:
-                return os.path.normpath(filename)
-    return None
-
-
-def read_policy_content(filename):
-    """ Read the policy number from the policy file.
-        strict allows to activate the new policy scanning.
-    """
-    value = None
-    error = ""
-    try:
-        LOGGER.debug('Opening policy file: ' + filename)
-        policy_data = load_policy_content(filename)            
-        match = re.match(r'^((?:\d+)|(?:0842[0-9a-zA-Z]{3}))\s*$', policy_data, re.M|re.DOTALL)
-        if match != None:
-            value = match.group(1)
-        else:
-            error = "Content of '%s' doesn't match r'^\d+|0842[0-9a-zA-Z]{3}\s*$'." % filename
-    except Exception, exc:
-        error = str(exc)
-    if value is not None:
-        return value
-    # worse case....
-    raise Exception(error)  
-
-def load_policy_content(filename):
-    """ Testing policy content loading. """
-    try:
-        fileh = codecs.open(filename, 'r', 'ascii')
-        data = fileh.read()
-        fileh.close()
-        return data
-    except:
-        raise Exception("Error loading '%s' as an ASCII file." % filename)
-
-ENCODING_MATRIX = {
-   codecs.BOM_UTF8: 'utf_8',
-   codecs.BOM_UTF16: 'utf_16',
-   codecs.BOM_UTF16_BE: 'utf_16_be',
-   codecs.BOM_UTF16_LE: 'utf_16_le',
-}
-
-def guess_encoding(data):
-    """Given a byte string, guess the encoding.
-
-    First it tries for UTF8/UTF16 BOM.
-
-    Next it tries the standard 'UTF8', 'ISO-8859-1', and 'cp1252' encodings,
-    Plus several gathered from locale information.
-
-    The calling program *must* first call locale.setlocale(locale.LC_ALL, '')
-
-    If successful it returns (decoded_unicode, successful_encoding)
-    If unsuccessful it raises a ``UnicodeError``.
-
-    This was taken from http://www.voidspace.org.uk/python/articles/guessing_encoding.shtml
-    """
-    for bom, enc in ENCODING_MATRIX.items():
-        if data.startswith(bom):
-            return data.decode(enc), enc
-    encodings = ['ascii', 'UTF-8']
-    successful_encoding = None
-    try:
-        encodings.append(locale.getlocale()[1])
-    except (AttributeError, IndexError):
-        pass
-    try:
-        encodings.append(locale.getdefaultlocale()[1])
-    except (AttributeError, IndexError):
-        pass
-    # latin-1
-    encodings.append('ISO8859-1')
-    encodings.append('cp1252')
-    for enc in encodings:
-        if not enc:
-            continue
-        try:
-            decoded = unicode(data, enc)
-            successful_encoding = enc
-            break
-        except (UnicodeError, LookupError):
-            pass
-    if successful_encoding is None:
-        raise UnicodeError('Unable to decode input data. Tried the'
-                           ' following encodings: %s.' %
-                           ', '.join([repr(enc) for enc in encodings if enc]))
-    else:
-        if successful_encoding == 'ascii':
-            # our default ascii encoding
-            successful_encoding = 'ISO8859-1'
-        return (decoded, successful_encoding)
-        
-def getmd5(fullpath, chunk_size=2**16):
-    """ returns the md5 value"""
-    file_handle = open(fullpath, "rb")
-    md5 = hashlib.md5()
-    while 1:
-        chunk = file_handle.read(chunk_size)
-        if not chunk:
-            break
-        md5.update(chunk)
-    file_handle.close()
-    return md5.hexdigest()
-
-def read_symbian_policy_content(filename):
-    """ Read the policy category from the policy file. """
-    value = None
-    error = ""
-    try:
-        LOGGER.debug('Opening symbian policy file: ' + filename)
-        try:
-            fileh = codecs.open(filename, 'r', 'ascii')
-        except:
-            raise Exception("Error loading '%s' as an ASCII file." % filename)        
-        for line in fileh:
-            match = re.match(r'^Category\s+([A-Z])\s*$', line, re.M|re.DOTALL)
-            if match != None:
-                value = match.group(1)
-                fileh.close()
-                return value
-        fileh.close()
-        if match == None:
-            error = "Content of '%s' doesn't match r'^Category\s+([A-Z])\s*$'." % filename
-    except Exception, exc:
-        error = str(exc)
-    if value is not None:
-        return value
-    # worse case....
-    raise Exception(error)
-
-
-class LockFailedException(Exception):
-    pass
-
-if os.name == 'nt':
-    import win32file
-    import win32con
-    import winerror
-    import time
-    import pywintypes
-    import win32netcon
-    import win32wnet
-    
-    class Lock:
-        """ This object implement file locking for windows. """
-        
-        def __init__(self, filename):
-            LOGGER_LOCK.debug("__init__")
-            self._filename = filename
-            self.fd = None
-
-        def lock(self, wait=False):
-            LOGGER_LOCK.debug("lock")
-            # Open the file
-            if self.fd == None:
-                self.fd = open(self._filename, "w+")
-            wfd = win32file._get_osfhandle(self.fd.fileno())
-            if not wait:
-                try:
-                    win32file.LockFile(wfd, 0, 0, 0xffff, 0)
-                except:
-                    raise LockFailedException()
-            else:    
-                while True:
-                    try:
-                        win32file.LockFile(wfd, 0, 0, 0xffff, 0)
-                        break
-                    except win32file.error, exc:
-                        if exc[0] != winerror.ERROR_LOCK_VIOLATION:
-                            raise exc
-                    LOGGER_LOCK.debug("waiting")
-                    time.sleep(1)
-                    
-        def unlock(self):
-            LOGGER_LOCK.debug("unlock")
-            if self.fd == None:
-                LOGGER_LOCK.debug("already unlocked")
-                return
-            wfd = win32file._get_osfhandle(self.fd.fileno())
-            try:
-                # pylint: disable-msg=E1101
-                win32file.UnlockFile(wfd, 0 , 0, 0xffff, 0)
-                self.fd.close()
-                self.fd = None
-            except win32file.error, exc:
-                if exc[0] != 158:
-                    raise
-            
-            
-        def __del__(self):
-            LOGGER_LOCK.debug("__del__")
-            self.unlock()
-
-    def rmdir(path):
-        """ Catch os.rmdir failures on Windows when path is too long (more than 256 chars)."""
-        path = win32api.GetShortPathName(path)        
-        win32file.RemoveDirectory(path)
-
-    def remove(filename):
-        """ Catch os.rmdir failures on Windows when path is too long (more than 256 chars)."""
-        filename = win32api.GetShortPathName(filename)
-        filename = filename.lstrip("\\\\?\\")
-        os.remove(filename)
-
-    def mount(drive, unc, username=None, password=None, persistent=False):
-        """ Windows helper function to map a network drive. """
-        flags = 0
-        if persistent:
-            flags = win32netcon.CONNECT_UPDATE_PROFILE
-        win32wnet.WNetAddConnection2(win32netcon.RESOURCETYPE_DISK, drive, unc, None, username, password, flags)
-
-
-    def umount(drive):
-        """ Windows helper function to map a network drive. """
-        drive_type = win32file.GetDriveType(drive)
-        if drive_type == win32con.DRIVE_REMOTE:
-            win32wnet.WNetCancelConnection2(drive, win32netcon.CONNECT_UPDATE_PROFILE, 1)
-        else:
-            raise Exception("%s couldn't be umount." % drive)
-
-else:
-    def rmdir(path):
-        return os.rmdir(path)
-
-    def remove(path):
-        return os.remove(path)
-
-    class Lock:
-        def __init__(self, filename):
-            pass
-        def lock(self, wait=False):
-            pass
-        def unlock(self):
-            pass
-            
-if os.sep == '\\':
-    def get_next_free_drive():
-        """ Return the first free drive found else it raise an exception. """
-        if os.name == 'nt':
-            DRIVE_LABELS = sorted(list(set(string.ascii_uppercase) - set(win32api.GetLogicalDriveStrings())), reverse=True)
-            if len(DRIVE_LABELS) != 0 :
-                return DRIVE_LABELS[0] + ":"
-            raise Exception("No free drive left.")        
-        if 'java' in sys.platform:
-            import java.io        
-            used = []
-            for x in java.io.File.listRoots():
-                used.append(str(x).replace(':\\', ''))
-            DRIVE_LABELS = sorted(list(set(string.ascii_uppercase) - set(used)), reverse=True)
-            if len(DRIVE_LABELS) != 0 :
-                return DRIVE_LABELS[0] + ":"
-            raise Exception("No free drive left.")
-
-    def subst(drive, path):
-        """ Substing path as a drive. """
-        path = os.path.normpath(path)
-        p = subprocess.Popen("subst %s %s" % (drive, path),  shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
-        errmsg = p.communicate()[0]
-        if p.returncode != 0:
-            raise Exception("Error substing '%s' under '%s': %s" % (path, drive, errmsg))
-    
-    def unsubst(drive):
-        """ Unsubsting the drive. """
-        p = subprocess.Popen("subst /D %s" % (drive), shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
-        errmsg = p.communicate()[0]
-        if p.returncode != 0:
-            raise Exception("Error unsubsting '%s': %s" % (drive, errmsg))
-    
-    def getSubstedDrives():
-        driveInformation = {}
-        subStedDriveList = []
-        p = subprocess.Popen("subst",  shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
-        subStedDriveList = re.split('\\n', p.communicate()[0])
-        del subStedDriveList[len(subStedDriveList)-1]
-        for path in subStedDriveList:        
-            subStedDrivePath = []
-            if(re.search(r'UNC', path) is not None):
-                subStedDrivePath = re.split('=>', path)
-                (drive_to_unsubst, root_dir_path) = os.path.splitdrive(os.path.normpath(subStedDrivePath[0]))
-                uncPath = re.sub('UNC', r'\\', subStedDrivePath[1].strip())
-                if(uncPath != subStedDrivePath[1].strip()):
-                    driveInformation[drive_to_unsubst] = uncPath
-            else:
-                subStedDrivePath = re.split('=>', path)                
-                (drive_to_unsubst, root_dir_path) = os.path.splitdrive(os.path.normpath(subStedDrivePath[0]))
-                driveInformation[drive_to_unsubst] = os.path.normpath(subStedDrivePath[1].strip())
-    
-        return driveInformation
-
-def touch(srcdir):
-    """
-    Recursively touches all the files in the source path mentioned.
-    It does not touch the directories.
-    """
-    srcnames = os.listdir(srcdir)
-    for name in srcnames:
-        srcfname = os.path.join(srcdir, name)
-        if os.path.isdir(srcfname):
-            touch(srcfname)
-        else:
-            if os.path.exists(srcfname):
-                os.utime(srcfname, None)
\ No newline at end of file
--- a/buildframework/helium/tools/common/python/lib/flash_config.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,286 +0,0 @@
-#============================================================================ 
-#Name        : flash_config.py 
-#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:
-#===============================================================================
-
-""" This modules implements flash configuration writer.
-"""
-import logging
-import os
-import re
-import rom
-import types
-import imaker
-
-
-# Uncomment this line to enable logging in this module, or configure logging elsewhere
-#logging.basicConfig(level=logging.DEBUG)
-logger = logging.getLogger("flash_config")
-
-class ImagePack:
-    """ Local storage of image type
-    """
-    
-    def __init__(self, config, type):
-        """ init from config
-        """
-        config['image.type'] = '${image.type.temp}'
-        self._type = type
-        self._id = config[type + '.id']
-        self._image_name = config[type + '.image.name']
-        self._image_path = config[type + '.image.path']
-        
-    def set_config(self, config):
-        """ Set the image type in a config
-        """
-        config[self._type + '.id'] = self._id
-        config[self._type + '.image.name'] = self._image_name
-        config[self._type + '.image.path'] = self._image_path 
-        
-    def __repr__(self):
-        """ String representation the class
-        """
-        return self._id + " " + self._image_name + " " + self._image_path
-
-class FlashConfigurationWriter:
-    """ Builder that creates the flash configuration files
-    """
-    def __init__(self, configs, product):
-        """ FlashConfigurationWriter init 
-        """
-        self._configs = configs
-        self._product = product
-        self._all_languagepacks = {} # pylint recomendation
-        self._all_udas = {}
-        self._all_mms = {}
-        self._all_mcs = {}
-        
-    def _get_all_languagepacks(self):
-        """ Collect all language packs and store them internally 
-        """
-        self._all_languagepacks = {}
-        for config in self._configs.getConfigurations(self._product):
-            if (config.type == "languagepack"):
-                lp = ImagePack(config, 'languagepack')
-                self._all_languagepacks[lp._id] = lp
-    
-    def _get_compatible_languagepacks(self, config):
-        """ Get language packs compatible with a customer variant 
-        """
-        languagepack_list = []
-        if config.has_key('compatible.languagepack'):
-            lp_list = config['compatible.languagepack']
-            if not isinstance(lp_list, types.ListType):
-                lp_list = [lp_list]
-            for lp_id in lp_list:
-                if self._all_languagepacks.has_key(lp_id):
-                    languagepack_list.append(self._all_languagepacks[lp_id])
-                else:
-                    print "Compatible languagepack " + str(lp_id) + " does not exists"
-        else:
-            languagepack_list = self._all_languagepacks.values()        
-            
-        return languagepack_list
-        
-    def _get_all_udas(self):
-        """ Collect all udas and store them internally 
-        """
-        self._all_udas = {}
-        for config in self._configs.getConfigurations(self._product):
-            if (config.type == "uda"):
-                lp = ImagePack(config, 'uda')
-                self._all_udas[lp._id] = lp
-                
-    def _get_all_mms(self):
-        """ Collect all mm's and store them internally 
-        """
-        self._all_mms = {}
-        for config in self._configs.getConfigurations(self._product):
-            if (config.type == "massmemory"):
-                lp = ImagePack(config, 'massmemory')
-                self._all_mms[lp._id] = lp
-                
-    def _get_all_mcs(self):
-        """ Collect all mc's and store them internally 
-        """
-        self._all_mcs = {}
-        for config in self._configs.getConfigurations(self._product):
-            if (config.type == "memorycard"):
-                lp = ImagePack(config, 'memorycard')
-                self._all_mcs[lp._id] = lp
-    
-    def _get_compatible_udas(self, config):
-        """ Get uda's compatible with a customer variant 
-        """
-        uda_list = []
-        if config.has_key('compatible.uda'):
-            lp_list = config['compatible.uda']
-            if not isinstance(lp_list, types.ListType):
-                lp_list = [lp_list]
-            for lp_id in lp_list:
-                if self._all_udas.has_key(lp_id):
-                    uda_list.append(self._all_udas[lp_id])
-                else:
-                    print "Compatible uda " + str(lp_id) + " does not exists"
-        else:
-            return None
-            
-        return uda_list
-        
-    def _get_compatible_mms(self, config):
-        """ Get mm's compatible with a customer variant 
-        """
-        mm_list = []
-        if config.has_key('compatible.massmemory'):
-            lp_list = config['compatible.massmemory']
-            
-            if not isinstance(lp_list, types.ListType):
-                lp_list = [lp_list]
-            for lp_id in lp_list:
-                if self._all_mms.has_key(lp_id):
-                    mm_list.append(self._all_mms[lp_id])
-                else:
-                    print "Compatible massmemory " + str(lp_id) + " does not exists"
-        else:
-            return None
-            
-        return mm_list
-        
-    def _get_compatible_mcs(self, config):
-        """ Get mc's compatible with a customer variant 
-        """
-        mc_list = []
-        if config.has_key('compatible.memorycard'):
-            lp_list = config['compatible.memorycard']
-            if not isinstance(lp_list, types.ListType):
-                lp_list = [lp_list]
-            for lp_id in lp_list:
-                if self._all_mcs.has_key(lp_id):
-                    mc_list.append(self._all_mcs[lp_id])
-                else:
-                    print "Compatible memorycard " + str(lp_id) + " does not exists"
-        else:
-            return None
-            
-        return mc_list
-    
-    def _write_file(self, config, romtype, uda, mm, mc):
-        """ Write an xml flash configuration file 
-        """
-        
-        #data = escapeddict.EscapedDict(config)
-        template = rom.read_file_content(config['flash.config.template'])
-        
-        if not uda:
-            #templatexml = amara.parse(template)
-            
-            #for image in templatexml.flash_config.image_set.image:
-            #    if image.type == u'uda':
-            #        templatexml.flash_config.image_set.xml_remove_child(image)
-            
-            #template = templatexml.xml(indent=u"yes")
-            #needed to avoid customer complaints about empty lines
-            #template = template.replace('\n\t\t\n', '\n')
-            
-            #workaround for makeupct, can't use real xml library
-            template = re.sub(r".*<image type=\"uda\".*/>\n", '', template)
-            
-        if not mm:
-            template = re.sub(r".*<image type=\"massmemory\".*/>\n", '', template)
-        if not mc:
-            template = re.sub(r".*<image type=\"memorycard\".*/>\n", '', template)
-        
-        if not os.path.exists(config['flash.config.publish.dir']):
-            print "Creating " + config['flash.config.publish.dir']
-            os.makedirs(config['flash.config.publish.dir'])
-            
-        fp = open(os.path.join(config['flash.config.publish.dir'], config['flash.config.name']), 'w')
-        print "Writing file " + fp.name
-        fp.write(rom.escape_string(template, config))
-        fp.close()        
-        
-    def _append_to_makefile(self, config, romtype):
-        template = rom.read_file_content(config['flash.config.makefile.template'])
-        out = config.interpolate(template) + "\n"
-        self._makefile_content += out + "\n"
-        self._targets += rom.get_makefile_target(out) + " "
-
-    def write(self):
-        """ Go throught the config and creates the flash configuration files
-        """
-        
-        # Pass #1: Store all language packs
-        self._get_all_languagepacks()
-        self._get_all_udas()
-        self._get_all_mcs()
-        self._get_all_mms()
-        self._makefile_content = ""
-        self._targets = "flash_config: "
-        
-        # Pass #2: Create all flash config files
-        for config in self._configs.getConfigurations(self._product):
-            if (config.type == "customer") or (config.type == "operator"):
-                image_types = config['image.type']
-                if not isinstance(config['image.type'], types.ListType):
-                    image_types = [config['image.type']]
-                
-                for lp in self._get_compatible_languagepacks(config):
-                    lp.set_config(config)
-                    config['image.type.temp'] = '${image.type}'
-                    
-                    enable_uda = True
-                    enable_mm = True
-                    enable_mc = True
-                    compatible_uda = self._get_compatible_udas(config)
-                    compatible_mm = self._get_compatible_mms(config)
-                    compatible_mc = self._get_compatible_mcs(config)
-                    
-                    if compatible_uda == None:
-                        enable_uda = False
-                        compatible_uda = [None]
-                    if compatible_mm == None:
-                        enable_mm = False
-                        compatible_mm = [None]
-                    if compatible_mc == None:
-                        enable_mc = False
-                        compatible_mc = [None]
-                        
-                    for uda in compatible_uda:
-                        if uda:
-                            uda.set_config(config)
-                        for mm in compatible_mm:
-                            if mm:
-                                mm.set_config(config)
-                            for mc in compatible_mc:
-                                if mc:
-                                    mc.set_config(config)
-                                for romtype in image_types:
-                                    config['image.type'] = romtype
-                                    self._write_file(config, romtype, enable_uda, enable_mm, enable_mc)
-                                    self._append_to_makefile(config, romtype)
-        
-        if self._makefile_content == "":
-            logger.warning("No customer's or operator's found in rom config") 
-        
-        # Write makefile
-        makefile_filename = "%s/mc_flash_config.mk" % imaker.get_product_dir(self._product)
-        print "Writing makfile " + makefile_filename
-        fp = open(makefile_filename, 'w')
-        fp.write("include $(E32ROMCFG)/helium_features.mk\n")
-        fp.write(self._makefile_content)
-        fp.write(self._targets)
-        fp.close()
\ No newline at end of file
--- a/buildframework/helium/tools/common/python/lib/helium/__init__.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-#============================================================================ 
-#Name        : __init__.py 
-#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:
-#===============================================================================
-
-""" Functionality that is closely tied to the Helium framework. """
\ No newline at end of file
--- a/buildframework/helium/tools/common/python/lib/helium/documentation.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,112 +0,0 @@
-#============================================================================ 
-#Name        : documentation.py 
-#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:
-#===============================================================================
-
-""" Helium API documentation processing. """
-
-from lxml import etree
-
-
-class APIDeltaWriter(object):
-    """ Creates an XML delta of the Helium API between releases. """
-    def __init__(self, old_database, new_database):
-        """ Initialisation. """
-        self.old_database = old_database
-        self.new_database = new_database
-        
-    def write(self, path):
-        """ Write the API delta information to an XML file. """
-        root = etree.Element('apiChanges')
-        
-        old_db = etree.parse(self.old_database)
-        new_db = etree.parse(self.new_database)
-        
-        
-        old_macro_names = set([macro[0].text for macro in old_db.findall('/project/macro')])
-        new_macro_names = set([macro[0].text for macro in new_db.findall('/project/macro')])
-        
-        old_target_names = set([target[0].text for target in old_db.findall('/project/target')])
-        new_target_names = set([target[0].text for target in new_db.findall('/project/target')])
-        
-        old_property_names = set([property[0].text for property in old_db.findall('/project/property')])
-        new_property_names = set([property[0].text for property in new_db.findall('/project/property')])
-        
-        old_project_names = set([project[0].text for project in old_db.findall('/project')])
-        new_project_names = set([project[0].text for project in new_db.findall('/project')])
-        
-        dict_old_taskdef_names  = {}
-        dict_new_taskdef_names  = {}
-        for taskdef in old_db.findall('/project/taskdef'):
-            dict_old_taskdef_names[taskdef[0].text] = taskdef[1].text
-        for taskdef in new_db.findall('/project/taskdef'):
-            dict_new_taskdef_names[taskdef[0].text] = taskdef[1].text
-
-        projects_removed = old_project_names.difference(new_project_names)
-        for project in projects_removed:
-            project_element = etree.SubElement(root, 'project', attrib={'state': 'removed'})
-            project_element.text = project
-        projects_added = new_project_names.difference(old_project_names)
-        for project in projects_added:
-            project_element = etree.SubElement(root, 'project', attrib={'state': 'added'})
-            project_element.text = project
-        
-        propertys_removed = old_property_names.difference(new_property_names)
-        for property in propertys_removed:
-            property_element = etree.SubElement(root, 'property', attrib={'state': 'removed'})
-            property_element.text = property
-        propertys_added = new_property_names.difference(old_property_names)
-        for property in propertys_added:
-            property_element = etree.SubElement(root, 'property', attrib={'state': 'added'})
-            property_element.text = property
-                    
-        macros_removed = old_macro_names.difference(new_macro_names)
-        for macro in macros_removed:
-            macro_element = etree.SubElement(root, 'macro', attrib={'state': 'removed'})
-            macro_element.text = macro
-        macros_added = new_macro_names.difference(old_macro_names)
-        for macro in macros_added:
-            macro_element = etree.SubElement(root, 'macro', attrib={'state': 'added'})
-            macro_element.text = macro
-        targets_removed = old_target_names.difference(new_target_names)
-        
-        for target in targets_removed:
-            target_element = etree.SubElement(root, 'target', attrib={'state': 'removed'})
-            target_element.text = target
-        targets_added = new_target_names.difference(old_target_names)
-        for target in targets_added:
-            target_element = etree.SubElement(root, 'target', attrib={'state': 'added'})
-            target_element.text = target
-
-        taskdefs_removed = set(dict_old_taskdef_names.keys()) - set(dict_new_taskdef_names.keys()) 
-        for taskdefKey in taskdefs_removed:
-            taskdef_element = etree.SubElement(root, 'taskdef', attrib={'state': 'removed'})
-            taskdef_element.text = taskdefKey
-            taskdef_element.attrib['classname'] =  dict_old_taskdef_names[taskdefKey]
-        taskdefs_added = set(dict_new_taskdef_names.keys()) - set(dict_old_taskdef_names.keys())
-        for taskdefKey in taskdefs_added:
-            taskdef_element = etree.SubElement(root, 'taskdef', attrib={'state': 'added'})
-            taskdef_element.text = taskdefKey
-            taskdef_element.attrib['classname'] =  dict_new_taskdef_names[taskdefKey]
-            
-        etree.dump(root)
-        tree = etree.ElementTree(root)
-        tree.write(path, pretty_print=True)
-        
-        
-        
-        
\ No newline at end of file
--- a/buildframework/helium/tools/common/python/lib/helium/logger.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,250 +0,0 @@
-#============================================================================ 
-#Name        : logger.py 
-#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:
-#===============================================================================
-
-##
-# Logger module
-# Description : Port to python of the ISIS::Logger3 perl module
-#
-# 1.0.0 (13/12/2006)
-#  - First version of the module.
-##
-
-# pylint: disable-msg=E1101,E1103
-
-import codecs
-import xml.dom.minidom
-import datetime
-from os import popen
-import traceback
-
-#
-# This is an Internal helper call. 
-#
-class _CustomizePrint(object):
-    
-    ##
-    # Initialise the instance content 
-    # @param logger a Logger instance
-    # @param name method name (e.g. Print, Error), could be any strings
-    def __init__(self, logger, name):
-        self.__logger = logger
-        self.__name = name
-    
-    ##
-    # Make this object callable. Call _print from the logger instance.
-    # @params *args a list of arguments
-    def __call__(self, *args):
-        self.__logger._print(self.__name, args)        
-    
-##
-# The Logger enables to create xml logging in Python.
-#
-class Logger(object):
-    
-    ##
-    # Constructor of the Logger.
-    def __init__(self):
-        self.__step = 1
-        self.__doc = xml.dom.minidom.Document()
-        self.__lognode = self.__doc.createElementNS("", "__log")        
-        self.__header = self.__doc.createElementNS("", "__header")
-        self.__footer = self.__doc.createElementNS("", "__footer")
-        self.__summary = self.__doc.createElementNS("", "__summary")
-        self.__lognode.appendChild(self.__header)
-        self.__lognode.appendChild(self.__summary)
-        self.__lognode.appendChild(self.__footer)        
-        self.__lognode.setAttributeNS("", "date", "%s" % datetime.datetime.now().ctime())
-        self.__footer.setAttributeNS("", "title", "")
-        self.__footer.setAttributeNS("", "subtitle", "")
-        self.__doc.appendChild(self.__lognode)
-        self.__build = self.__doc.createElementNS("", "build")
-        self.__lognode.appendChild(self.__build)
-        self.__current_node = self.__build
-        self.__stack = []
-        self.__verbose = True
-        #<__log date="Wed Dec  6 03:07:25 2006">
-
-    ##
-    # Set the url of interface to use.
-    def SetInterface(self, url):
-        self.__lognode.setAttributeNS("", "interface", url)
-
-    ##
-    # Enable/Disable shell output
-    # @param v boolean to set the logger output
-    def SetVerbose(self, v):
-        self.__verbose = v
-    
-    ##
-    # Set the title of the document
-    # @param title the title to set
-    def SetTitle(self, title):        
-        self.__header.setAttributeNS("", "title", title)
-        
-    ##
-    # Set the subtitle of the document
-    # @param subtitle the subtitle to set
-    def SetSubTitle(self, title):        
-        self.__header.setAttributeNS("", "subtitle", title)
-
-    ##
-    # Set the sumamry title
-    # @param title the title to set
-    def SetSummaryTitle(self, title):
-        self.__summary.setAttributeNS("", "title", title)
-        
-    ##
-    # Creates a summary couple.
-    # @param tag the description
-    # @param value the value
-    def AddSummaryElement(self, tag, value):
-        e = self.__doc.createElementNS("", "__elmt")
-        e.setAttributeNS("", "tag", tag)
-        e.setAttributeNS("", "val", value)
-        self.__summary.appendChild(e)
-        
-        
-    ##
-    # Open a MainContent section.
-    # @param title title of the MainContent section
-    def OpenMainContent(self, title=""):
-        self.__stack.append(self.__current_node)
-        n = self.__doc.createElementNS("", "task")
-        n.setAttributeNS("", "name", title)
-        n.setAttributeNS("", "type", "maincontent")
-        n.setAttributeNS("", "time", datetime.datetime.now().ctime())
-        self.__current_node.appendChild(n)
-        self.__current_node = n
-        if self.__verbose:
-            print ("---------------------------------------------------------------------")
-            print ("  %s" % title)
-            print ("---------------------------------------------------------------------")
-
-        
-    ##
-    # Close the current main content section.
-    # Make sure you have closed other Event/Section first
-    def CloseMainContent(self):
-        if self.__current_node.nodeName != "task" and not (self.__current_node.attributes.has_key('type') and self.__current_node.attributes['type']=="maincontent"):
-            raise Exception("not closing a 'maincontent' typed node")
-        self.__current_node = self.__stack.pop()
-        
-        
-    ##
-    # Create an Event section (can be opened/closed)
-    # @param title title of the MainContent section
-    def OpenEvent(self, title=""):
-        self.__stack.append(self.__current_node)
-        n = self.__doc.createElementNS("", "task")
-        n.setAttributeNS("", "name", title)
-        n.setAttributeNS("", "type", "event")
-        n.setAttributeNS("", "time", datetime.datetime.now().ctime())
-        self.__current_node.appendChild(n)
-        self.__current_node = n
-        if self.__verbose:
-            print ("---------------------------------------------------------------------")
-            print (" + %s" % title)
-
-    def SetCustomOutputer(self, type, classname, config = None):
-        n = self.__doc.createElementNS("", "__customoutputer")
-        n.setAttributeNS("", "type", type)
-        n.setAttributeNS("", "module", classname)
-        if config != None:
-            n.appendChild(config)
-        self.__lognode.appendChild(n)
-        
-    ##
-    # Close the current Event
-    # Make sure you have closed other Event/Section first
-    def CloseEvent(self):
-        if self.__current_node.nodeName != "task" and (self.__current_node.attributes.has_key('type') and self.__current_node.attributes['type']=="event"):
-            raise Exception("not closing a 'event' typed node")
-        self.__current_node = self.__stack.pop()
-    
-    ##
-    # __getattribute__ has been overrided to enable dynamic messaging.
-    # @param attr the name of the method (or attribute...)
-    def __getattribute__(self, attr):
-        try:
-            return object.__getattribute__(self, attr)  
-        except AttributeError:
-            return _CustomizePrint(self, attr)        
-            
-    ##
-    # Generic method that handle the print in the XML document
-    # @param kind type of output
-    # @param *args a list of arguments (must be strings)
-    def _print(self, kind, *args):
-        output = u"".join(map(lambda x: u"%s" % x, list(*args)))
-        nodetype = kind.lower()
-        msgtype = ""
-        if nodetype != "print" and nodetype != "info" and nodetype != "debug":
-            msgtype = "%s:" % nodetype.upper()
-        if self.__verbose:
-            print "%s %s" % (msgtype, output.encode('utf-8'))
-        
-                
-        n = self.__doc.createElementNS("", "message")
-        n.setAttributeNS("", "priority", nodetype)
-        #n.setAttributeNS("", "time", datetime.datetime.now().ctime())
-        n.appendChild(self.__doc.createCDATASection(output))
-        self.__current_node.appendChild(n)
-#        nodetype = kind.lower()
-#        if kind.lower() != "print" and kind.lower() != "printraw":
-#            nodename = kind.lower()
-#
-#        if nodename=="__print" and self.__current_node.lastChild!=None and self.__current_node.lastChild.nodeName  == nodename:
-#            self.__current_node.lastChild.appendChild(self.__doc.createTextNode("".join(*args).decode('iso-8859-1')))
-#        else:
-#            n = self.__doc.createElementNS("", nodename)
-#            n.setAttributeNS("", "step", "%d" % self.__step)
-#            self.__step += 1
-#            n.setAttributeNS("", "time", datetime.datetime.now().ctime())
-#            text_content = "".join(map(lambda x: str(x), list(*args))).decode('iso-8859-1')
-#            n.appendChild(self.__doc.createTextNode(text_content))
-#            self.__current_node.appendChild(n)
-    
-    
-    ##
-    #
-    def SetFooterTitle(self, title):
-        self.__footer.attributes['title'] = title
-        
-    def SetFooterSubTitle(self, subtitle):
-        self.__footer.attributes['subtitle'] = subtitle
-    
-    def Die(self, title, subtitle, exception):
-        self.SetFooterTitle(title)
-        self.SetFooterSubTitle("%s\nException raised: %s\n%s" % (subtitle, exception, traceback.format_exc()))
-
-    ##
-    # Write the DOM tree into a file.
-    # @param filename the file to write in.
-    def WriteToFile(self, filename):        
-        file_object = open(filename, "w")
-        file_object.write(codecs.BOM_UTF8)
-        file_object.write(self.__doc.toprettyxml(encoding = "utf-8"))
-        file_object.close()
-
-
-    ##
-    # Write the DOM tree into a file.
-    # @param filename the file to write in.
-    def __str__(self):        
-        return self.__doc.toprettyxml(encoding="utf-8")
--- a/buildframework/helium/tools/common/python/lib/helium/output/__init__.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +0,0 @@
-#============================================================================ 
-#Name        : __init__.py 
-#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:
-#===============================================================================
-
--- a/buildframework/helium/tools/common/python/lib/helium/output/widgets.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,301 +0,0 @@
-#============================================================================ 
-#Name        : widgets.py 
-#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:
-#===============================================================================
-
-
-# pylint: disable-msg=E1101
-
-import xml.dom.minidom
-class Widget:
-    def __init__(self):
-        pass
-    
-    def getDOMContainer(self):
-        pass
-    
-    
-class Box(Widget):
-    def __init__(self, doc, container, divId = "mb", divClass = "mc"):
-        Widget.__init__(self)
-        d1 = doc.createElementNS("", "div")
-        d1.setAttributeNS("", "id", divId)
-        container.appendChild(d1)
-        mc = doc.createElementNS("", "div")
-        mc.setAttributeNS("", "class", divClass)
-        d1.appendChild(mc)        
-        self.__doc = doc
-        self.__title = None
-        self.__mc = mc
-        
-    def setTitle(self, title=""):
-        if self.__title == None:
-            t = self.__doc.createElementNS("", "h1")
-            self.__mc.insertBefore(t, self.__mc.firstChild)            
-            self.__title = self.__doc.createTextNode(title)
-            t.appendChild(self.__title)
-        self.__title.data = title
-
-    def getDOMContainer(self):
-        return self.__mc
-    
-class Summary(Box):    
-    def __init__(self, doc, container):
-        Box.__init__(self, doc, container, divId = "s_mb", divClass = "s_mc")
-        self.__table = doc.createElementNS("", "table")
-        self.__table.setAttributeNS("", "cellspacing", "0")
-        self.__table.setAttributeNS("", "cellpadding", "0")
-        self.__table.setAttributeNS("", "border", "0")
-        self.__table.setAttributeNS("", "width", "100%")
-        self.__table.appendChild(self._Box__doc.createTextNode(""))
-        div = self._Box__doc.createElementNS("", "div")
-        div.setAttributeNS("", "class", "t_wrapper")
-        div.appendChild(self.__table)
-        self.getDOMContainer().appendChild(div)
-        self.__table_stat = None
-        self.setTitle()
-
-    
-    def addElement(self, tag, value):
-        row = self._Box__doc.createElementNS("", "tr")
-        #Tag
-        td = self._Box__doc.createElementNS("", "td")
-        td.setAttributeNS("", "valign", "top")
-        td.setAttributeNS("", "nowrap", "nowrap")        
-        div = self._Box__doc.createElementNS("", "div")
-        div.setAttributeNS("", "class", "s_tag")
-        div.appendChild(self._Box__doc.createTextNode(tag))
-        td.appendChild(div)        
-        row.appendChild(td)
-        
-        # Value
-        td = self._Box__doc.createElementNS("", "td")
-        td.setAttributeNS("", "width", "100%")        
-        div = self._Box__doc.createElementNS("", "div")
-        div.setAttributeNS("", "class", "s_val")
-        div.appendChild(self._Box__doc.createTextNode(value))
-        td.appendChild(div)
-        row.appendChild(td)
-
-        self.__table.appendChild(row)
-
-    def addStatistics(self, type, value):
-        if self.__table_stat == None:
-            h1 = self._Box__doc.createElementNS("", "h1")
-            h1.appendChild(self._Box__doc.createTextNode("Global Statistics"))
-            self.getDOMContainer().appendChild(h1)
-                            
-            div = self._Box__doc.createElementNS("", "div")
-            div.setAttributeNS("", "class", "t_wrapper")
-            self.getDOMContainer().appendChild(div)
-            self.__table_stat = self._Box__doc.createElementNS("", "table")
-            self.__table_stat.setAttributeNS("", "cellspacing", "0")
-            self.__table_stat.setAttributeNS("", "cellpadding", "0")
-            self.__table_stat.setAttributeNS("", "border", "0")
-            self.__table_stat.setAttributeNS("", "width", "100%")
-            div.appendChild(self.__table_stat)
-        
-            row = self._Box__doc.createElementNS("", "tr")
-            self.__table_stat.appendChild(row)
-            self.__table_stat = row
-
-        td = self._Box__doc.createElementNS("", "td")
-        div = self._Box__doc.createElementNS("", "div")
-        div.setAttributeNS("", "class", "gbl_cnt_" + type)
-        div.appendChild(self._Box__doc.createTextNode("%d %ss" % (value, type)))
-        td.appendChild(div)
-        self.__table_stat.appendChild(td)
-          
-    
-    
-class Event(Widget):
-    def __init__(self, doc, container, id):
-        Widget.__init__(self)
-        self.__doc = doc
-        node_head = doc.createElementNS("", "div")
-        node_head.setAttributeNS("", "class", "node_head")
-        container.appendChild(node_head)
-
-        link = doc.createElementNS("", "a")
-        link.setAttributeNS("", "href", "javascript:ToggleNode('Img%d')" % id)
-        node_head.appendChild(link)
-        
-        span = doc.createElementNS("", "span")
-        span.setAttributeNS("", "id", "Img%d" % id)
-        span.setAttributeNS("", "style", "background:url(http://fawww.europe.nokia.com/isis/isis_interface/img/icons/button_open.gif) no-repeat")
-        link.appendChild(span)
-
-        stitle = doc.createElementNS("", "span")
-        stitle.setAttributeNS("", "class", "node_title")
-        self.__title = doc.createTextNode("")
-        stitle.appendChild(self.__title)
-        span.appendChild(stitle)
-        
-        # shaow all
-        showall = doc.createElementNS("", "a")
-        showall.setAttributeNS("", "href", "javascript:ShowChilds('Img%d')"  % id)
-        span = doc.createElementNS("", "span")
-        span.setAttributeNS("", "class", "node_action")
-        span.appendChild(doc.createTextNode("[Show All]"))
-        showall.appendChild(span)
-        
-        #hide all
-        hideall = doc.createElementNS("", "a")
-        hideall.setAttributeNS("", "href", "javascript:HideChilds('Img%d')" % id)
-        span = doc.createElementNS("", "span")
-        span.setAttributeNS("", "class", "node_action")
-        span.appendChild(doc.createTextNode("[Hide All]"))
-        hideall.appendChild(span)
-        
-        #toggle node
-        self.__togglenode = doc.createElementNS("", "a")
-        self.__togglenode.setAttributeNS("", "href", "javascript:ToggleNode('Img%d')" % id)
-        self.__togglenode.appendChild(doc.createTextNode(""))
-        # append container
-        node_head.appendChild(showall)
-        node_head.appendChild(hideall)
-        node_head.appendChild(self.__togglenode)        
-
-        contentx = doc.createElementNS("", "div")
-        contentx.setAttributeNS("", "id", "Content%d" % id)
-        contentx.setAttributeNS("", "style", "display:none")
-        container.appendChild(contentx)
-        content = doc.createElementNS("", "div")
-        content.setAttributeNS("", 'class', "node_content")
-        content.appendChild(doc.createTextNode(""))
-        contentx.appendChild(content)
-        self.__container = content
-        self.__node_info = None
-        
-    def setTitle(self, title = ""):
-        self.__title.data = title
-
-    def addStatistics(self, type, value):
-        if self.__node_info == None:
-            self.__node_info = self.__doc.createElementNS("", "span")
-            self.__node_info.setAttributeNS("", "class", "node_info")
-            self.__togglenode.appendChild(self.__node_info)
-        span = self.__doc.createElementNS("", "span")
-        span.setAttributeNS("", "class","cnt_%s" % type)
-        span.appendChild(self.__doc.createTextNode("%d %ss" % (value, type)))
-        self.__node_info.appendChild(span)
-          #<span class="node_info">
-          #  <span class="cnt_warning">2 warnings</span>
-          #</span>
-
-    def getDOMContainer(self):
-        return self.__container
-
-
-class Header(Widget):
-    def __init__(self, doc, container):
-        Widget.__init__(self)
-        self.__doc = doc
-        h_wrapper = self.__doc.createElementNS("", "div")
-        h_wrapper.setAttributeNS("", "id", "h_wrapper")
-        h_elmt = self.__doc.createElementNS("", "div")
-        h_elmt.setAttributeNS("", "class", "h_elmt")
-        h_wrapper.appendChild(h_elmt)
-        container.appendChild(h_wrapper)
-        #title
-        t = self.__doc.createElementNS("", "div")
-        self.__title = doc.createTextNode("")
-        t.appendChild(self.__title)
-        t.setAttributeNS("", "class", "h_title")
-        h_elmt.appendChild(t)
-        #subtitle
-        t = self.__doc.createElementNS("", "div")
-        self.__subtitle = doc.createTextNode("")
-        t.appendChild(self.__subtitle)
-        t.setAttributeNS("", "class", "h_subtitle")
-        h_elmt.appendChild(t)
-        
-        
-        
-    def setTitle(self, title):            
-        self.__title.data = title
-        
-    def setSubTitle(self, title):            
-        self.__subtitle.data = title
-
-    def getDOMContainer(self):
-        return None
-
-class Footer(Widget):
-    def __init__(self, doc, container):
-        Widget.__init__(self)
-        self.__doc = doc
-        h_wrapper = self.__doc.createElementNS("", "div")
-        h_wrapper.setAttributeNS("", "id", "f_wrapper")
-        h_elmt = self.__doc.createElementNS("", "div")
-        h_elmt.setAttributeNS("", "class", "f_elmt")
-        h_wrapper.appendChild(h_elmt)
-        container.appendChild(h_wrapper)
-        #title
-        t = self.__doc.createElementNS("", "div")
-        self.__title = doc.createTextNode("")
-        t.appendChild(self.__title)
-        t.setAttributeNS("", "class", "f_title")
-        h_elmt.appendChild(t)
-        #subtitle
-        t = self.__doc.createElementNS("", "div")
-        self.__subtitle = doc.createTextNode("")
-        t.appendChild(self.__subtitle)
-        t.setAttributeNS("", "class", "f_subtitle")
-        h_elmt.appendChild(t)
-        
-    def setTitle(self, title):            
-        self.__title.data = title
-        
-    def setSubTitle(self, title):            
-        self.__subtitle.data = title
-    
-class Text(Widget):
-    def __init__(self, doc, container):
-        Widget.__init__(self)
-        self.__doc = doc
-        self.__div = self.__doc.createElementNS("", "div")
-        self.__div.setAttributeNS("", "class", "icn_dft")
-        container.appendChild(self.__div)
-    
-    def setIcon(self, name):
-        self.__div.setAttributeNS("", "class", name)
-
-    def appendText(self, text):            
-        def pushContent(arg):
-            self.getDOMContainer().appendChild(self.__doc.createTextNode(arg))
-            self.getDOMContainer().appendChild(self.__doc.createElementNS("","br"))
-        map(pushContent, text.strip().split("\n"))            
-
-    def getDOMContainer(self):
-        return self.__div
-
-class RawText(Text):
-    def appendText(self, text):
-        for child in xml.dom.minidom.parseString("<xhtml>" + text.strip() + "</xhtml>").documentElement.childNodes:
-            self.getDOMContainer().appendChild(child.cloneNode(True))
-
-class BoldText(Text):
-    def __init__(self, doc, container):
-        Text.__init__(self, doc, container)
-        self.__bold = doc.createElementNS("","b")
-        self._Text__div.appendChild(self.__bold)
-        
-    def getDOMContainer(self):
-        return self.__bold
-    
-    
\ No newline at end of file
--- a/buildframework/helium/tools/common/python/lib/helium/outputer.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,306 +0,0 @@
-#============================================================================ 
-#Name        : outputer.py 
-#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:
-#===============================================================================
-
-##
-# Outputer module
-# Description : Port to python of the ISIS::Logger3::XML2HTML perl module
-#
-# 1.0.0 (13/12/2006)
-#  - First version of the module.
-##
-import codecs
-import xml.dom.minidom
-from helium.output.widgets import *
-import urllib2
-import amara
-import re
-import dataurl
-
-class Configuration:
-    def __init__(self, url):
-        f = urllib2.urlopen(url)#
-        data = f.read()
-        f.close()
-        self.__xml = amara.parse(data)
-        
-    def getClass(self, type, default = None):
-        return self._getValue(type, "class", default)
-
-    def getImg(self, type, default = None):
-        return self._getValue(type, "img", default)
-    
-    def getWidth(self, type, default = None):
-        return self._getValue(type, "width", default)
-    
-    def getHeight(self, type, default = None):
-        return self._getValue(type, "height", default)
-    
-    def _getValue(self, type, attr, default = None):
-        r = self.__xml.xml_xpath("/htmloutput/icons/icon[@type='%s']" % type)
-        if len(r) == 0:
-            if default == None:
-                raise Exception("Not found")
-            else:
-                return default
-        return r[0][attr]
-    
-class XML2XHTML:
-    
-    def __init__(self, filename, url="http://fawww.europe.nokia.com/isis/isis_interface/configuration.xml", usedataurl=False):
-        self.__config = Configuration(url)
-        self.__filename = filename
-        self.__srcdoc = xml.dom.minidom.parse(filename)
-        self.__srcdoc.normalize()
-        self.__usedataurl = usedataurl
-        
-        # xhtml output
-        dom = xml.dom.minidom.getDOMImplementation()
-        doctype = dom.createDocumentType("html", 
-              "-//W3C//DTD XHTML 1.0 Strict//EN", 
-              "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd")
-        self.__doc = dom.createDocument(None, "html", doctype)
-        self.__xhtml = self.__doc.getElementsByTagName("html")[0]
-        self.__xhtml.setAttributeNS("", "xmlns", "http://www.w3.org/1999/xhtml")        
-        self.__id = 0
-        self.__xhtml_summary = None
-        self.__tags = {}
-        self.__css = ["http://fawww.europe.nokia.com/isis/isis_interface/css/logger2.css"]
-        self.__javascript = ["http://fawww.europe.nokia.com/isis/isis_interface/javascript/expand2.js"]
-        self.__factory = {'__header' : XML2XHTML.forname('helium.output.widgets.Header'),
-                          '__footer' : XML2XHTML.forname('helium.output.widgets.Footer'),
-                          '__maincontent' : XML2XHTML.forname('helium.output.widgets.Box'),
-                          '__summary' : XML2XHTML.forname('helium.output.widgets.Summary'),
-                          '__print' : XML2XHTML.forname('helium.output.widgets.Text'),
-                          '__printraw' : XML2XHTML.forname('helium.output.widgets.RawText'),
-                          '__event' : XML2XHTML.forname('helium.output.widgets.Event')}
-    
-    def _getId(self):
-        self.__id += 1
-        return self.__id
-
-    def addCSSLink(self, url):
-        self.__css.append(url)
-        
-    def addJScriptLink(self, url):
-        self.__javascript.append(url)
-        
-    def _generateCSSLinks(self, container):
-        for link in self.__css:
-            l = self.__doc.createElementNS("", "link")
-            if self.__usedataurl:
-                l.setAttributeNS("", "href", dataurl.from_url(link))
-            else:
-                l.setAttributeNS("", "href", link)
-            l.setAttributeNS("", "rel", "stylesheet")
-            l.setAttributeNS("", "type", "text/css")
-            container.appendChild(l)
-            
-    def _generateJScriptLink(self, container):
-        for link in self.__javascript:
-            l = self.__doc.createElementNS("", "script")
-            if self.__usedataurl:
-                l.setAttributeNS("", "src", dataurl.from_url(link))
-            else:
-                l.setAttributeNS("", "src", link)
-            l.setAttributeNS("", "type", "text/javascript")
-            l.appendChild(self.__doc.createTextNode(""))
-            container.appendChild(l)
-        
-        
-    def generate(self):
-        root = self.__srcdoc.documentElement
-        if root.tagName != "__log":
-            raise Exception("Invalid document must be __log.")
-
-        for c in root.getElementsByTagName("__customoutputer"):
-            self.__factory[c.attributes['type'].value] = XML2XHTML.forname(c.attributes['module'].value)
-
-        
-        head = self.__doc.createElementNS("", "head")
-        title = self.__doc.createElementNS("", "title")
-        self.__title = self.__doc.createTextNode("")
-        title.appendChild(self.__title)
-        head.appendChild(title)
-        
-        self._generateCSSLinks(head)
-        self._generateJScriptLink(head)
-        
-        body = self.__doc.createElementNS("", "body") 
-        self.__xhtml.appendChild(head)
-        self.__xhtml.appendChild(body)
-        
-                    
-        for c in root.childNodes:            
-            if c.nodeType == xml.dom.Node.ELEMENT_NODE and c.tagName == "__header":
-                self._handleHeader(c, body)
-            elif c.nodeType == xml.dom.Node.ELEMENT_NODE and c.tagName == "__summary":
-                self._handleSummary(c, body)
-            elif c.nodeType == xml.dom.Node.ELEMENT_NODE and c.tagName == "__maincontent":
-                self._handleMainContent(c, body)
-            elif c.nodeType == xml.dom.Node.ELEMENT_NODE and c.tagName == "build":
-                self._handleBuild(c, body)
-            elif c.nodeType == xml.dom.Node.ELEMENT_NODE and c.tagName == "task" and c.attributes.has_key('type') and c.attributes['type'] == "maincontent":
-                self._handleMainContent(c, body)
-
-        try:
-            footer = root.getElementsByTagName("__footer")[0]
-            f = self.__factory["__footer"](self.__doc, body)
-            if footer.attributes.has_key("title"):
-                f.setTitle(footer.attributes['title'].value)
-            if footer.attributes.has_key("subtitle"):
-                f.setSubTitle(footer.attributes['subtitle'].value)
-        except Exception:            
-            pass
-        # Generate summary
-        self._createSummary()
-
-    def _handleHeader(self, node, container):
-        h = self.__factory["__header"](self.__doc, container)
-        if node.attributes.has_key('title'):
-            self.__title.data = node.attributes['title'].value
-            h.setTitle(node.attributes['title'].value)        
-        if node.attributes.has_key("subtitle"):
-            h.setSubTitle(node.attributes['subtitle'].value)
-        
-    def _handleSummary(self, node, container):
-        box = self.__factory["__summary"](self.__doc, container)
-        if node.attributes.has_key('title'):
-            box.setTitle(node.attributes["title"].value)
-        
-        for c in node.getElementsByTagName("__elmt"):           
-            box.addElement(c.attributes['tag'].value, c.attributes['val'].value)
-        self.__xhtml_summary = box
-    
-    def _handleBuild(self, node, container):
-        for c in node.childNodes:
-            if c.nodeType == xml.dom.Node.ELEMENT_NODE and c.tagName == "task" and c.attributes.has_key('type') and c.attributes['type'].value == 'maincontent':
-                self._handleMainContent(c, container)
-                
-
-    def _handleMainContent(self, node, container):
-        box = self.__factory["__maincontent"](self.__doc, container)
-        if node.attributes.has_key("title"):
-            box.setTitle(node.attributes["title"].value)
-        if node.attributes.has_key("name"):
-            box.setTitle(node.attributes["name"].value)
-        for c in node.childNodes:
-            if c.nodeType == xml.dom.Node.ELEMENT_NODE and c.tagName == "__event":
-                self._handleEvent(c, box.getDOMContainer())
-            elif c.nodeType == xml.dom.Node.ELEMENT_NODE and c.tagName == "task" and c.attributes.has_key('type') and c.attributes['type'].value == 'event':
-                self._handleEvent(c, box.getDOMContainer())
-            elif c.nodeType == xml.dom.Node.ELEMENT_NODE and c.tagName == "message":
-                self._handleMessage(c, box.getDOMContainer())
-            elif c.nodeType == xml.dom.Node.ELEMENT_NODE:
-                self._handlePrint(c, box.getDOMContainer())
-
-    def _handleEvent(self, node, container):
-        tags = self.__tags
-        self.__tags = {}
-        event = self.__factory["__event"](self.__doc, container, self._getId())
-        if node.attributes.has_key('title'):
-            event.setTitle(node.attributes['title'].value)
-        elif node.attributes.has_key('name'):
-            event.setTitle(node.attributes['name'].value)
-        for c in node.childNodes:            
-            if c.nodeType == xml.dom.Node.ELEMENT_NODE and c.tagName == "__event":
-                self._handleEvent(c, event.getDOMContainer())
-            elif c.nodeType == xml.dom.Node.ELEMENT_NODE and c.tagName == "task" and c.attributes.has_key('type') and c.attributes['type'].value == 'event':
-                self._handleEvent(c, event.getDOMContainer())
-            elif c.nodeType == xml.dom.Node.ELEMENT_NODE and c.tagName == "message":
-                self._handleMessage(c, event.getDOMContainer())
-            elif c.nodeType == xml.dom.Node.ELEMENT_NODE:
-                self._handlePrint(c, event.getDOMContainer())
-                
-        keys = self.__tags.keys()
-        keys.sort()
-        for name in keys:         
-            event.addStatistics(name.replace("__", ""), self.__tags[name])
-        self.__tags = self._mergeStatistics(tags, self.__tags)
-        
-    def _handleMessage(self, node, container):
-        if node.attributes['priority'].value == "printraw":
-            t = self.__factory["__printraw"](self.__doc, container)
-            for n in node.childNodes:
-                if n.nodeType == xml.dom.Node.CDATA_SECTION_NODE:
-                    t.appendText(n.data)
-        else:
-            t = self.__factory["__print"](self.__doc, container)
-            for n in node.childNodes:
-                if n.nodeType == xml.dom.Node.CDATA_SECTION_NODE:
-                    t.appendText(n.data)
-            if node.attributes['priority'].value != "print":
-                t.setIcon(self.__config.getClass(node.attributes['priority'].value, "icn_dft"))
-                if self.__tags.has_key(node.attributes['priority'].value):
-                    self.__tags[node.attributes['priority'].value] += 1
-                else:
-                    self.__tags[node.attributes['priority'].value] = 1
-
-    def _handlePrint(self, node, container):
-        if node.tagName == "__printraw":
-            t = self.__factory["__printraw"](self.__doc, container)
-            for n in node.childNodes:
-                if n.nodeType == xml.dom.Node.CDATA_SECTION_NODE or n.nodeType == xml.dom.Node.TEXT_NODE:
-                    t.appendText(n.data)
-        else:
-            t = self.__factory["__print"](self.__doc, container)
-            for n in node.childNodes:
-                if n.nodeType == xml.dom.Node.CDATA_SECTION_NODE or n.nodeType == xml.dom.Node.TEXT_NODE:
-                    t.appendText(n.data)
-            if node.tagName != "__print":
-                t.setIcon(self.__config.getClass(node.tagName, "icn_dft"))
-                if self.__tags.has_key(node.tagName):
-                    self.__tags[node.tagName] += 1
-                else:
-                    self.__tags[node.tagName] = 1
-
-    def _createSummary(self):
-        # pylint: disable-msg=E1101
-        if self.__xhtml_summary == None:
-            self.__xhtml_summary = Summary(self.__doc, self.__body)
-            self.__xhtml_summary.setTitle("Global Statistics")
-        keys = self.__tags.keys()
-        keys.sort()
-        for name in keys:
-            self.__xhtml_summary.addStatistics(name.replace("__", ""), self.__tags[name])
-
-   
-    def _mergeStatistics(self, tags, newTags):
-        for name in newTags.keys():
-            if tags.has_key(name):
-                tags[name] += newTags[name]
-            else:
-                tags[name] = newTags[name]
-        return tags
-        
-    def WriteToFile(self, filename):        
-        file_object = open(filename, "w")
-        file_object.write(codecs.BOM_UTF8)
-        file_object.write(self.__doc.toprettyxml(encoding="utf-8"))
-        file_object.close()
-    
-    
-    @staticmethod
-    def forname(classname):
-        r = re.match("^(?P<modname>(?:\w+\.?)*)\.(?P<classname>(\w+?))$", classname)
-        if r != None:
-            return getattr(__import__(r.groupdict()['modname'], [], [], r.groupdict()['classname']), r.groupdict()['classname'])
-        else:
-            raise Exception("Error retreiving module and classname for %s" % classname)
-        
-
--- a/buildframework/helium/tools/common/python/lib/heliumlogging.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-#============================================================================ 
-#Name        : heliumlogging.py 
-#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:
-#===============================================================================
-
-import os
-import logging
-import logging.config
-if os.environ.has_key("HELIUM_CACHE_DIR"):
-    logconf = os.path.join(os.environ['HELIUM_CACHE_DIR'], "logging." + os.environ['PID'] + ".conf")
-else:
-    logconf = os.path.join(os.getcwd(), "logging.conf")
-
-assert os.path.exists(logconf)
-logging.config.fileConfig(logconf)
\ No newline at end of file
--- a/buildframework/helium/tools/common/python/lib/ido.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
-#============================================================================ 
-#Name        : ido.py 
-#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:
-#===============================================================================
-
-"""
-IDO specific features
-    * find layer_real_source_path from sysdef file.
-    * time manipulation for robot releasing.
-"""
-import re
-import datetime
-
-MATCH_ENTITY = re.compile(r".*ENTITY\s+layer_real_source_path\s+\"(.+)\"\s*>?.*")
-
-def get_sysdef_location(sysdef):
-    """ Search for layer_real_source_path entity inside the sysdef file. """
-    input = open(sysdef, 'r')
-    for line in input.readlines():
-        result = MATCH_ENTITY.match(line)
-        if result != None:
-            input.close()
-            return result.groups()[0]
-    input.close()
-    print 'layer_real_source_path entity not found in ' + sysdef
-    return None
-
-
-def get_first_day_of_cycle(now = datetime.datetime.now()):
-    """ This function returns a datetime object representing the monday from closest
-        even week.
-    """
-    week = int(now.strftime("%W"))
-    day = int(now.strftime("%w")) - 1
-    monday = now - datetime.timedelta(days=day + week.__mod__(2) * 7)
-    monday = monday.replace(hour = 0, minute = 0, second = 0, microsecond = 0)
-    return monday
-
-def get_absolute_date(day, time, now = datetime.datetime.now()):
-    """ Get the absolute date from the day and time. """
-    time = datetime.datetime.strptime(time, "%H:%M")
-    delta = datetime.timedelta(days = day-1, hours = time.hour, minutes= time.minute)
-    return get_first_day_of_cycle(now) + delta
-
-
-def is_in_interval(day1, time1, day2, time2, now = datetime.datetime.now()):
-    """ Return True is get_absolute_date(day1, time1) < now < get_absolute_date(day2, time2). """
-    delta1 = get_absolute_date(day1, time1, now)
-    delta2 = get_absolute_date(day2, time2, now)
-    if now <= delta1:
-        return False
-    if delta2 <= now:
-        return False
-    return True
-    
\ No newline at end of file
--- a/buildframework/helium/tools/common/python/lib/idoprep.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,151 +0,0 @@
-#============================================================================ 
-#Name        : idoprep.py 
-#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:
-#===============================================================================
-
-""" Modules related to ido-prep """
-
-import re
-import os
-import symrec
-import logging
-import traceback
-import ant
-import sys
-import ido
-
-logging.basicConfig(level=logging.INFO)
-logger = logging.getLogger("check_latest_release")
-
-def validate(grace, service, product, release):
-    """ Validate s60 grace server, s60 grace service, s60 grace product and 
-        s60 grace release are set.
-    """    
-    if not grace:
-        raise Exception("Property 's60.grace.server' is not defined.")
-    if not service:
-        raise Exception("Property 's60.grace.service' is not defined.")
-    if not product:
-        raise Exception("Property 's60.grace.product' is not defined.")
-    if not release:
-        raise Exception("Property 's60.grace.release' is not defined.")
-            
-def get_s60_env_details(grace, service, product, release, rev, cachefilename, s60gracecheckmd5, s60graceusetickler):
-    """ Return s60 environ details """
-    validate(grace, service, product, release)
-    revision = r'(_\d{3})?'
-    if rev != None:
-        revision = rev
-
-    if cachefilename:
-        logger.info(str("Using cache file: %s" % cachefilename))
-    
-    checkmd5 = False
-    if s60gracecheckmd5 != None:
-        checkmd5 = str(s60gracecheckmd5).lower()
-        checkmd5 = ((checkmd5 == "true") or (checkmd5 == "1") or (checkmd5 == "on"))
-                
-    branch = os.path.join(grace, service, product)
-    if not os.path.exists(branch):
-        raise Exception("Error occurred: Could not find directory %s" % branch)
-        
-    result = []
-    for rel in os.listdir(branch):
-        relpath = os.path.join(branch, rel)
-        logger.info("Checking: %s" % str(relpath))
-        res = re.match(r"%s%s$" % (release, revision), rel, re.I)
-        if res != None:
-            logger.info("Found: %s" % str(relpath))
-            result.append(relpath)
-    result.sort(reverse=True)
-    use_tickler = False
-    tickler_validation = str(s60graceusetickler).lower()
-    if tickler_validation != None:
-        use_tickler = ((tickler_validation == "true") or (tickler_validation == "1"))
-    validresults = []
-    for rel in result:
-        try:
-            metadata_filename = symrec.find_latest_metadata(str(rel))
-            if metadata_filename is not None and os.path.exists(metadata_filename):
-                logger.info(str("Validating: %s" % metadata_filename))
-                if (use_tickler):
-                    validator = symrec.ValidateTicklerReleaseMetadata(metadata_filename, cachefilename)
-                else:
-                    validator = symrec.ValidateReleaseMetadataCached(metadata_filename, cachefilename)
-                if validator.is_valid(checkmd5):
-                    logger.info(str("%s is valid." % rel))
-                    validresults.append(rel)
-                    break
-                else:
-                    logger.info(str("%s is not a valid release." % rel))
-            elif metadata_filename is None:
-                logger.info(str("Could not find the release metadata file under %s" % rel))
-        except Exception, e:
-            logger.warning(str("WARNING: %s: %s" % (rel , e)))
-            logger.warning(("%s is not a valid release." % rel))
-            traceback.print_exc()
-    
-    result = validresults
-    if len(result) == 0:
-        raise Exception("Error finding GRACE release.")
-    print result[0]
-    return result
-    
-def get_version(buiddrive, resultname):
-    """ Return s60 version """
-    vfile = os.path.join(buiddrive + os.sep, 's60_version.txt')
-    version = None
-    if (os.path.exists(vfile)):
-        logger.info("Are we still up-to-date compare to %s" % str(vfile))
-        f = open(str(vfile), 'r')
-        version = f.readline()
-        logger.info(str("'%s' == '%s'" % (version, resultname)))
-        f.close()
-    else:
-        logger.info("Version file not found getting new environment...")
-    return version
-        
-def create_ado_mapping(sysdefconfig, adomappingfile, adoqualitymappingfile, builddrive, adoqualitydirs):
-    """ Creates ado mapping and ado quality mapping files """
-    input = open(sysdefconfig, 'r')
-    output = open(adomappingfile, 'w')
-    outputquality = open(adoqualitymappingfile, 'w')
-    components = {}
-    for sysdef in input.readlines():
-        sysdef = sysdef.strip()
-        if len(sysdef) > 0:
-            print "Checking %s" % sysdef
-            os.path.dirname(sysdef)
-            location = ido.get_sysdef_location(sysdef)
-            if location != None:
-                sysdef = os.path.dirname(sysdef).replace('\\','/').replace(':','\\:')
-                component = os.path.normpath(os.path.join(builddrive, os.environ['EPOCROOT'], location)).replace('\\','/').replace(':','\\:')
-                print "%s=%s\n" % (sysdef, component)
-                output.write("%s=%s\n" % (sysdef, component))
-                
-                if adoqualitydirs == None:
-                    outputquality.write("%s=%s\n" % (sysdef, component))
-                else:
-                    for dir in adoqualitydirs.split(','):
-                        if os.path.normpath(dir) == os.path.normpath(os.path.join(builddrive), os.environ['EPOCROOT'], location):
-                            outputquality.write("%s=%s\n" % (sysdef, component))
-    outputquality.close()
-    output.close()
-    input.close()
-
-
-    
\ No newline at end of file
--- a/buildframework/helium/tools/common/python/lib/imaker/__init__.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-#============================================================================ 
-#Name        : __init__.py 
-#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:
-#===============================================================================
-
-""" iMaker framework. """
-from ant import *
-from api import *
- 
\ No newline at end of file
--- a/buildframework/helium/tools/common/python/lib/imaker/ant.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,203 +0,0 @@
-#============================================================================ 
-#Name        : ant.py 
-#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:
-#===============================================================================
-
-"""
-    iMaker related functionalities.
-    * configuration introspection
-    * target introspection 
-"""
-import os
-import pathaddition.match
-import re
-import fileutils
-import imaker.api
-
-def ant_run(task, config, target, variables=None):
-    """ Running iMaker under Ant. """
-    if variables == None:
-        variables = {}
-    cmdline = "imaker"
-    cmdline += " -f %s" % config
-    cmdline += " %s" % target    
-    for key in  variables.keys():
-        cmdline += ' "%s=%s"' % (key, variables[key])
-    # run imaker and log to Ant.
-    task.log("Running %s" % cmdline)
-    handle = os.popen(cmdline)
-    for line in handle.read().splitlines():
-        task.log(line)
-    return handle.close()
-
-
-def is_included(incs, target):
-    """ Does target matches an include pattern. """
-    for inc in incs:
-        if inc.match(target):
-            return True
-    return False
-
-def is_excluded(excs, target):
-    """ Does target matches an exclude pattern. """
-    for exc in excs:
-        if exc.match(target):
-            return True
-    return False
-        
-
-def ant_task_configuration(project, task, elements, attributes):
-    """ Implementation of the Ant task. """
-    # assert attributes.get('property') != None, "'property' attribute is not defined."
-    configIndex = 0
-    if attributes.get('dir') != None:
-        os.chdir(str(attributes.get('dir')))
-    tdd = "[\n"
-    if elements.get("imakerconfigurationset") is not None:
-        if elements.get("imakerconfigurationset").size() == 0:
-            task.log(str("No configuration defined."))
-        for cid in range(elements.get("imakerconfigurationset").size()):
-            configurationset = elements.get("imakerconfigurationset").get(int(cid))            
-            if configurationset.isReference() == 1:
-                task.log("Using configuration from reference '%s'." % str(configurationset.getRefid().getRefId()))
-                ref = project.getReference(str(configurationset.getRefid().getRefId()))
-                if ref == None:
-                    raise Exception("Could not find reference '%s'" % str(configurationset.getRefid().getRefId()))
-                configurationset = ref            
-            for configuration in configurationset.getImakerConfiguration().toArray():
-                configIndex += 1
-                tdd += handle_configuration(project, task, elements, attributes, configuration, configIndex)
-    else:
-        task.log(str("No configuration defined."))
-    tdd += "]\n"
-    
-    if attributes.get('property') != None:
-        task.log("Setting property '%s'." % str(attributes.get('property')))
-        project.setProperty(str(attributes.get('property')), str(tdd))
-    if attributes.get('file') != None:
-        task.log("Creating file '%s'." % str(attributes.get('file')))
-        out = open(str(attributes.get('file')), "w")
-        out.write(tdd)
-        out.close()
-        
-def handle_configuration(project, task, elements, attributes, configuration,  configIndex):
-    """ Convert a configuration into a TDD for future FMPP transformation. """
-    includes = []
-    excludes = []
-    tincludes = []
-    texcludes = []
-    variables = {}
-    
-    for configs in configuration.getMakefileSet().toArray():
-        incs = configs.getIncludePatterns(project)
-        if incs is not None:
-            for inc in incs:
-                includes.append(str(inc))
-        excs = configs.getExcludePatterns(project)
-        if excs is not None:
-            for exc in excs:
-                excludes.append(str(exc))
-    if len(includes)==0:
-        task.log("WARNING: config %s has no makefile and hence not executed" % configIndex)
-        
-    
-    for targets in configuration.getTargetSet().toArray():
-        incs = targets.getIncludePatterns(project)
-        if incs is not None:
-            for inc in incs:
-                tincludes.append(re.compile(str(inc)))
-        excs = targets.getExcludePatterns(project)
-        if excs is not None:
-            for exc in excs:
-                texcludes.append(re.compile(str(exc)))
-    if len(tincludes) == 0:
-        tincludes.append(re.compile(r".*"))
-    
-    # Reading the variables
-    for variableset in configuration.getVariableSet().toArray():
-        vector = variableset.getVariables()
-        for variable in vector.toArray():
-            variables[str(variable.getName())] = str(variable.getValue())
-
-    configs = imaker.api.scan_configs(includes, excludes)
-    targets = {}
-    if len(configs) == 0:
-        for inc in includes:
-            task.log("WARNING: Could not find configurations to build roms for '%s'" % inc)
-        
-    for config in configs:
-        task.log("Configuration: %s" % config)
-        if config not in targets:
-            targets[config] = []
-        for target in imaker.api.targets_for_config(config):
-            if is_included(tincludes, target) and not is_excluded(texcludes, target)\
-                    and target not in targets[config]:
-                targets[config].append(target)
-
-    task.log(str("Regional variation: %s" % configuration.getRegionalVariation()))
-    if configuration.getRegionalVariation():
-        task.log("Sorting target by region.")
-        regiontargets = {}
-        for config in targets.keys():
-            task.log(" * %s:" % config)
-            for target in targets[config]:
-                region = imaker.api.get_variable('LANGPACK_REGION', target=target, config=config, default="western")                
-                task.log("    - %s: %s" % (target, region))
-                if not regiontargets.has_key(region):
-                    regiontargets[region] = {}
-                if not regiontargets[region].has_key(config):
-                    regiontargets[region][config] = []
-                regiontargets[region][config].append(target)                
-            # sort by region
-        tdd = ""
-        for region in regiontargets.keys():
-            tdd += region_switch_to_tdd(region)
-            tdd += imaker_command_to_tdd(regiontargets[region], variables)
-        return tdd
-
-    # generating the TDD
-    return imaker_command_to_tdd(targets, variables)
-
-
-def region_switch_to_tdd(region):
-    tdd = "{\n"
-    tdd += "\t\"command\": \"switch_region\",\n"
-    tdd += "\t\"region\": \"%s\",\n" % region
-    tdd += "},\n"
-    return tdd
-    
-
-def imaker_command_to_tdd(targets, variables):
-    # generating the TDD
-    tdd = "{\n"
-    tdd += "\t\"command\": \"imaker\",\n"
-    tdd += "\t\"config\": {\n"
-    for config in targets.keys():
-        tdd += "\t\t\"%s\": [\n" % config
-        for target in targets[config]:
-            tdd += "\t\t\t{\n"
-            tdd += "\t\t\t\"target\": \"%s\",\n" % target
-            tdd += "\t\t\t\"variables\": {\n"
-            for varname in variables.keys():
-                tdd += "\t\t\t\t\"%s\": \"%s\",\n" % (varname, variables[varname])  
-            tdd += "\t\t\t\t},\n"
-            tdd += "\t\t\t},\n"
-        tdd += "\t\t],\n"
-    tdd += "\t},\n"
-    tdd += "},\n"
-    return tdd
-    
--- a/buildframework/helium/tools/common/python/lib/imaker/api.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,98 +0,0 @@
-#============================================================================ 
-#Name        : api.py 
-#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:
-#===============================================================================
-
-""" This module is an helper to interface iMaker. """
-import os
-import re
-import pathaddition.match
-import fileutils
-import tempfile
-import logging
-import subprocess
-
-logging.basicConfig(level=logging.INFO)
-logger = logging.getLogger("imaker.api")
-
-class IMakerConfigScanner(fileutils.AbstractScanner):
-    """ Specialize the abstract filescanner to support detection of the configuration. """
-    def scan(self):
-        """ Implement scanning of relevant configuration. """
-        p = subprocess.Popen("imaker help-config", shell=True, stdout=subprocess.PIPE)
-        handle = p.communicate()[0]
-        for line in handle.splitlines():
-            line = line.strip()
-            if line.startswith('/') and self.is_included(line) \
-                and not self.is_excluded(line):
-                yield line
-        
-def scan_configs(includes, excludes):
-    """ Use iMaker to scan the available buildable configurations. """
-    scanner = IMakerConfigScanner()
-    for inc in includes:
-        scanner.add_include(inc)
-    for exc in excludes:
-        scanner.add_exclude(exc)
-    return [r for r in scanner.scan()]
-
-def targets_for_config(config):
-    """ Return the list of target supported by the provided configuration of iMaker. """
-    cmd = "imaker -f %s help-target-*-list" % config
-    p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
-    handle = p.communicate()[0]
-    result = []
-    for line in handle.splitlines():
-        line = line.strip()
-        if line == "" or line.startswith("Total duration"):
-            continue
-        result.append(line)
-    return result
-
-
-def get_product_dir(product):
-    """ Return the PRODUCT_DIR variable from iMaker. """
-    return get_variable("PRODUCT_DIR", product=product)
-
-    
-def get_variable(variable, target=None, product=None, config=None, default=None):
-    """ Get variable value from iMaker. """
-    cmdline = ""
-    if product != None:
-        cmdline = "-p%s" % product
-    if config != None:
-        cmdline += " -f %s" % config
-    if target != None:
-        cmdline += " %s" % target
-    
-    logdir = tempfile.mkdtemp()
-    logger.info("imaker %s print-%s WORKDIR=%s" % (cmdline, variable, logdir))
-    (_, handle, child_stderr) = os.popen3("imaker %s print-%s WORKDIR=%s" % (cmdline, variable, logdir))
-    logger.info(child_stderr.read())
-    result = []
-    for line in handle.read().splitlines():
-        line = line.strip()
-        if line == "" or line.startswith("Total duration"):
-            continue
-        if variable in line:
-            result.append(line)
-    handle.close()
-    result = re.match("%s\s*=\s*`(.*)'" % variable, "\n".join(result), re.DOTALL)
-    if result != None:
-        return result.group(1)
-    assert (result != None)
-    return default
--- a/buildframework/helium/tools/common/python/lib/imaker/ecore.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
-#============================================================================ 
-#Name        : ecore.py 
-#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:
-#===============================================================================
-
-""" Implements few eclipse ecore XML parser helpers. """
-import re
-
-class Reference(object):
-    """ Reference to real instance. """
-    
-    def __init__(self, node, reference):
-        """ The constructor. """
-        self.reference = reference
-        self.node = node
-    
-    def __getattr__(self, name):
-        """ Delegate to the reference object.
-            So the reference object can behave the
-            same way as the real object.
-        """
-        return getattr(self.instance(), name)
-        
-    def instance(self):
-        """ Retrieve the real object instance from the object hierarchy. """
-        ref = self.reference
-        cnode = self.node
-        if ref.startswith("//"):
-            cnode = self.node.get_root()    
-            ref = ref[2:]
-        for pel in ref.split("/"):
-            res = re.match(r"@([^.]+)(?:\.(\d+))?", pel)
-            if res != None:
-                name = res.group(1)
-                
-                if res.group(2) != None:
-                    cnode = getattr(cnode, name)[int(res.group(2))]
-                else:
-                    cnode = getattr(cnode, name)
-            else:
-                raise Exception("Invalid reference %s" % ref)
-        return cnode
-
-
-class ContainerBase(object):
-    """ Container class that implements a parent relationship. """
-    def __init__(self, parent=None):
-        self.parent = parent
-    
-    def get_root(self):
-        """ Retrieving the root container. """
-        if self.parent == None:
-            return self
-        else:
-            return self.parent.get_root()
--- a/buildframework/helium/tools/common/python/lib/imaker/iqrf.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,168 +0,0 @@
-#============================================================================ 
-#Name        : iqrf.py 
-#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:
-#===============================================================================
-
-"""
-    Implements iQRF model.
-    
-    How to use it:
-    import imaker.iqrf
-    root = imaker.iqrf.load(filename)
-    root.result
-"""
-import amara
-import logging
-from  imaker.ecore import ContainerBase, Reference       
-
-logging.basicConfig()
-logger = logging.getLogger("iqrf.model")
-#logger.setLevel(logging.DEBUG)
-
-        
-class IMaker(ContainerBase):
-    """ IMaker container. """
-    def __init__(self, parent=None):
-        ContainerBase.__init__(self, parent)
-        self.result = None
-
-    def load(self, node):
-        """ Load data from XML node. """
-        if hasattr(node, 'result'):
-            logger.debug("IMaker has result attribute.")
-            self.result = Result(self)
-            self.result.load(node.result)
-
-
-class Result(ContainerBase):
-    """ Result container. """
-    def __init__(self, parent=None):
-        ContainerBase.__init__(self, parent)
-        self.interfaces = []
-        self.configurations = []
-        self.targets = []
-
-    def load(self, node):
-        """ Load data from XML node. """
-        logger.debug("Loading Result")
-        for elem in node.interfaces:
-            interface = Interface(self)
-            interface.load(elem)
-            self.interfaces.append(interface)
-        for elem in node.configurations:
-            configuration = Configuration(self)
-            configuration.load(elem)
-            self.configurations.append(configuration)
-        for elem in node.targets:
-            target = Target(self)
-            target.load(elem)
-            self.targets.append(target)
-
-class Configuration(ContainerBase):
-    """ Configuration container. """
-
-    def __init__(self, parent=None):
-        ContainerBase.__init__(self, parent)
-        self.name = None
-        self.settings = []
-        self.filePath = None
-        self.targetrefs = []
-
-    def load(self, node):
-        """ Load data from XML node. """
-        logger.debug("Loading Configuration")
-        self.name = node.name        
-        self.filePath = node.filePath
-        for elem in node.xml_xpath('./settings'):
-            setting = Setting(self)
-            setting.load(elem)
-            self.settings.append(setting)
-            
-        for ref in node.targetrefs.split(" "):
-            self.targetrefs.append(Reference(self, ref))
-
-class Setting(ContainerBase):
-
-    def __init__(self, parent=None):
-        ContainerBase.__init__(self, parent)
-        self.name = None
-        self.value = None
-        self.ref = None
-
-    def load(self, node):        
-        logger.debug("Loading Setting")
-        self.name = node.name        
-        self.value = node.value        
-        self.ref = Reference(node.ref)        
-
-    
-class Interface(ContainerBase):
-    """ Interface container. """
-    def __init__(self, parent=None):
-        ContainerBase.__init__(self, parent)
-        self.name = None
-        self.configurationElements = []
-
-    def load(self, node):
-        """ Load data from XML node. """
-        logger.debug("Loading Interface")
-        self.name = node.name        
-        for cel in node.configurationElements:
-            conf = ConfigurationElement(self)
-            conf.load(cel)
-            self.configurationElements.append(conf)
-    
-class ConfigurationElement(ContainerBase):
-    """ ConfigurationElement container. """
-    def __init__(self, parent=None):
-        ContainerBase.__init__(self, parent)
-        self.name = None
-        self.description = None
-        self.values = None
-
-    def load(self, node):
-        """ Load data from XML node. """
-        logger.debug("Loading ConfigurationElement")
-        self.name = node.name        
-        self.description = node.description
-        self.values = node.values
-
-class Target(ContainerBase):
-    """ Target container. """
-
-    def __init__(self, parent=None):
-        ContainerBase.__init__(self, parent)
-        self.name = None
-        self.description = None
-
-    def load(self, node):
-        """ Load data from XML node. """
-        logger.debug("Loading Target")
-        self.name = node.name        
-        self.description = node.description
-
-        
-
-
-def load(filename):
-    """ Load IMaker serialized ecore configuration. """
-    doc = amara.parse(open(filename, 'r'))
-    imaker = IMaker()    
-    imaker.load(doc.IMaker)
-    return imaker
-    
-        
\ No newline at end of file
--- a/buildframework/helium/tools/common/python/lib/integration/__init__.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +0,0 @@
-#============================================================================ 
-#Name        : __init__.py 
-#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:
-#===============================================================================
-
--- a/buildframework/helium/tools/common/python/lib/integration/ant.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-#============================================================================ 
-#Name        : ant.py 
-#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:
-#===============================================================================
-
-""" Quality Ant task implementation. """
-import integration.quality
-import os
-import traceback
-
-def check_build_duplicates_task(project, task, attributes, elements):
-    """ This is the implementation of the checkBuildDuplicatesMacro Ant task."""
-    try:
-        if attributes.get('output') == None:
-            raise Exception("'output' attribute is not defined.")
-        output = str(attributes.get('output'))
-        task.log("Creating %s" % output)
-        output = open(output, "w+")
-        output.write("<?xml version=\"1.0\"?>\n<buildconflicts>\n")
-        components_per_file = {}
-        for eid in range(elements.get("fileset").size()):
-            dirscanner = elements.get("fileset").get(int(eid)).getDirectoryScanner(project)
-            dirscanner.scan()
-            for jfilename in dirscanner.getIncludedFiles():
-                filename = str(jfilename)
-                task.log("Parsing %s" % filename)
-                filename = os.path.join(str(dirscanner.getBasedir()), filename)
-                parser = integration.quality.AbldWhatParser(open(filename, 'r'))
-                parser.components_per_file = components_per_file
-                parser.parse()
-            
-        for filename in components_per_file.keys():
-            if len(components_per_file[filename]) > 1:
-                output.write("    <file name=\"%s\">\n" % filename)
-                output.write("".join(map(lambda x: "        <component name=\"%s\"/>\n" % x, components_per_file[filename])))
-                output.write("    </file>\n")
-        output.write("</buildconflicts>\n")
-        output.close()
-    except Exception, exc:
-        task.log('ERROR: %s' % exc)
-        traceback.print_exc()
-        raise exc
--- a/buildframework/helium/tools/common/python/lib/integration/quality.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,189 +0,0 @@
-#============================================================================ 
-#Name        : quality.py 
-#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:
-#===============================================================================
-
-"""
-Symbian log based analyser.
-
- * Internal export parser
- * Duplicate generation parser (relying on abld -what)
-
-Policy validation.
-"""
-
-import symbian.log
-import re
-import os
-import sys
-import csv
-import fileutils
-import pathaddition.match
-import logging
-
-#logging.basicConfig(level=logging.DEBUG)
-_logger = logging.getLogger("integration.quality")
-
-class InternalExportParser(symbian.log.Parser):
-    """ This class extends the Symbian log parser class and implement
-        an "abld -what" analyser which detects file generated/exported inside
-        the source tree.
-    """
-    def __init__(self, _file):
-        """The constructor """
-        symbian.log.Parser.__init__(self, _file)
-        self.__match_what = re.compile("abld(\.bat)?(\s+.*)*\s+-(check)?w(hat)?", re.I)
-        self.internalexports = {}
-        
-    def task(self, name, _cmd, _dir, content):
-        """ Analyse task log. """
-        if self.__match_what.match(_cmd) != None:
-            for line in content.splitlines():
-                if line.startswith(os.path.sep) \
-                    and not os.path.normpath(line.strip().lower()).startswith(os.path.sep+"epoc32"+os.path.sep) \
-                    and os.path.splitext(line.strip().lower())[1] != '':
-                    if name not in self.internalexports:
-                        self.internalexports[name] = []
-                    self.internalexports[name].append(line)
-
-
-class AbldWhatParser(symbian.log.Parser):
-    """ This class extends the Symbian log parser class and implement
-        an "abld -what" analyser which sort the generated files by component. 
-    """
-    def __init__(self, _file):
-        """The constructor """
-        symbian.log.Parser.__init__(self, _file)
-        self.__match_what = re.compile(r"abld(\.bat)?(\s+.*)*\s+-(check)?w(hat)?", re.I)
-        self.__match_cmaker_what = re.compile(r"cmaker(\.cmd)?(\s+.*)*\s+ACTION=what", re.I)
-        self.files_per_component = {}
-        self.components_per_file = {}
-        
-    def task(self, name, _cmd, _dir, content):
-        """ Analyse task log. """
-        if _cmd != None and self.__match_what.match(_cmd) != None:
-            for line in content.splitlines():
-                line = line.strip()
-                if not os.path.normpath(line).startswith(os.path.sep):
-                    continue
-                # component per file
-                if line.lower() not in self.components_per_file:
-                    self.components_per_file[line.lower()] = []
-                if name not in self.components_per_file[line.lower()]:
-                    self.components_per_file[line.lower()].append(name)
-
-                # file per components
-                if name not in self.files_per_component:
-                    self.files_per_component[name] = []
-                self.files_per_component[name].append(line)
-        elif _cmd != None and self.__match_cmaker_what.match(_cmd) != None:
-            for line in content.splitlines():
-                line = line.strip()
-                if not line.startswith('"'):
-                    continue
-                if not line.endswith('"'):
-                    continue
-                line = os.path.normpath(line.strip('"')).lower()
-                # component per file
-                if line not in self.components_per_file:
-                    self.components_per_file[line] = []
-                if name not in self.components_per_file[line]:
-                    self.components_per_file[line].append(name)
-            
-                # file per components
-                if name not in self.files_per_component:
-                    self.files_per_component[name] = []
-                self.files_per_component[name].append(line)
-
-
-class PolicyValidator(object):
-    """ Validate policy files on a hierarchy. """    
-    def __init__(self, policyfiles=None, csvfile=None, ignoreroot=False):
-        """The constructor """
-        if policyfiles is None:
-            policyfiles = ['distribution.policy.s60']
-        self._policyfiles = policyfiles
-        self._ids = None
-        self._ignoreroot = ignoreroot
-
-    def load_policy_ids(self, csvfile):
-        """ Load the icds from the CSV file.
-            report format by generating array: ['unknownstatus', value, description]
-        """
-        self._ids = {}
-        reader = csv.reader(open(csvfile, "rU"))
-        for row in reader:            
-            if len(row)>=3 and re.match(r"^\s*\d+\s*$", row[0]): 
-                self._ids[row[0]] = row
-                if row[1].lower() != "yes" and row[1].lower() != "no" and row[1].lower() != "bin":
-                    yield ["unknownstatus", row[0], row[2]]
-
-    def validate_content(self, filename):
-        """  Validating the policy file content. If it cannot be decoded, 
-            it reports an 'invalidencoding'.            
-            Case 'notinidlist': value is not defined under the id list.
-        """
-        value = None
-        try:
-            value = fileutils.read_policy_content(filename)
-        except Exception:
-            yield ["invalidencoding", filename, None]
-        if value is not None:                        
-            if self._ids != None:
-                if value not in self._ids:
-                    yield ["notinidlist", filename, value]
-    
-    def find_policy(self, path):
-        """ find the policy file under path using filenames under the list. """
-        for filename in self._policyfiles:
-            if os.sep != '\\':
-                for f in os.listdir(path):
-                    if f.lower() == filename.lower():
-                        return os.path.join(path, f)
-            if os.path.exists(os.path.join(path, filename)):
-                return os.path.join(path, filename)
-        return None
-
-    def validate(self, path):
-        """ Return a list couple [errortype, location, policy].
-            errortype: missing, invalidencoding, notinidlist .
-            missing: location is a directory.
-            otherwise the doggie policy file.
-        """
-        path = os.path.normpath(path)
-        for dirpath, _, _ in os.walk(path):
-            # skipping the root
-            if dirpath == path and self._ignoreroot:
-                continue
-            # skip svn dirs
-            if pathaddition.match.ant_match(dirpath, "**/.svn/**"):
-                continue
-            # Skipping j2me content. Shouln't this be done differently?
-            if pathaddition.match.ant_match(dirpath, "**/j2me/**"):
-                continue
-            filename = self.find_policy(dirpath)
-            if filename != None:
-                for result in self.validate_content(filename):
-                    yield result
-            else:
-                # report an error is the directory has no DP file
-                # and any files underneith.
-                for item in os.listdir(dirpath):
-                    if os.path.isfile(os.path.join(dirpath, item)):
-                        yield ['missing', dirpath, None]
-                        break
-
--- a/buildframework/helium/tools/common/python/lib/localisation.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,221 +0,0 @@
-#============================================================================ 
-#Name        : localisation.py 
-#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:
-#===============================================================================
-
-""" Localisation related function. 
-        * Parsing of languages.xml
-"""
-import re
-import amara
-import os
-import bsf
-import os.path
-
-class Languages:
-    """ Languages.xml file parser. """
-
-    def __init__(self, filename):
-        self.__filename = filename
-        self.__xml = amara.parse(open(filename,"r"))        
-    
-    def get_language_ids(self):
-        """ returns languages id list """
-        result = []
-        for language in self.__xml.xml_xpath("/languages/language"):
-            result.append(language.id.strip())
-        return result
-            
-
-    def get_name(self, lid):
-        """ returns languages id list """
-        for language in self.__xml.xml_xpath("/languages/language[@id='%s']" % lid):
-            return language.name.strip()
-
-    def get_attribute(self, lid, name, default=None):
-        """ returns the value for a specific language attribute name. It returns default if not found. """
-        for language in self.__xml.xml_xpath("/languages/language[@id='%s']/%s" % (lid, name)):
-            return language.xml_child_text.strip()
-        return default
-    
-    
-    def get_fallbacks(self, lid):        
-        """ Return the list of available fallbacks
-            None if not any.
-        """
-        string = self.get_attribute(lid, 'fallbacks')
-        if (string != None):
-            return string.split(',')
-        return None
-    
-    def find_first_fallback(self, lid, exists):
-        """ Find recursively the first reasonable alternative
-            lid the language id
-            exists an existance function that takes a language id
-            as parameter and return a boolean
-        """
-        
-        if (exists(lid)):
-            return lid
-        
-        # get fallback list
-        fallbacks = self.get_fallbacks(lid)
-        if fallbacks == None:
-            return None
-        
-        for fallback in fallbacks:
-            if exists(fallback):
-                return fallback
-        
-        for fallback in fallbacks:
-            ffallback = self.find_first_fallback(fallback)
-            if ffallback != None:
-                return ffallback
-
-        return None
-        
-
-
-def get_all_variations(languages_xml):
-    """ Returns a list of all regional variations supported by platform. """
-    variations = {'western':1}
-    xml = Languages(languages_xml)
-    for lid in xml.get_language_ids():
-        variations[xml.get_attribute(lid, 'core', 'western')] = 1
-    return variations.keys()
-
-def get_languages_for_variation(languages_xml, variation='western'):
-    """ Returns alist of all supported languages for a specific region. """
-    xml = Languages(languages_xml)
-    result = []
-    for lid in xml.get_language_ids():
-        if (xml.get_attribute(lid, 'core', 'western') == variation):
-            result.append(lid)
-    return result
-
-
-def _apply_override(overrides, line):
-    res = re.match(r'\s*(data|file)=\s*(\S+)\s+(\S+)', line)
-    if res != None and overrides.has_key(res.group(3).lower()):
-        print "OVERRIDE: %s => %s" % (res.group(2), overrides[res.group(3).lower()])         
-        return "%s=%s %s" % (res.group(1), overrides[res.group(3).lower()], res.group(3))
-    return line 
-        
-
-def create_locales_iby(product, lid, flags=None, prefix='', suffix=''):
-    """ Function that generates locales_xx.iby into rom product folder.
-    """
-    if flags is None:
-        flags = []
-    bsfs = bsf.read_all()
-    if not bsfs.has_key(product):
-        raise Exception("Product not defined, could not find %s.bsf" % product)
-    
-    variantpath = bsfs[product].get_path()
-    if lid == "sc":
-        return
-    outputfile = "/epoc32/rom/%s/locales_%s.iby" % (variantpath, lid)
-    
-    print ("Generating %s..." % outputfile)
-
-    
-    output = open (outputfile, "w+")
-    output.write("#ifndef __LOCALES_%s_IBY__\n" % lid)
-    output.write("#define __LOCALES_%s_IBY__\n" % lid)
-    
-    args = ''
-    configs = bsfs[product].get_path_as_array()
-    configs.reverse()
-    for customisation in configs:
-        args += "-I \"./%s\" " % bsfs[customisation].get_path()
-        args += "-I \"../include/%s\" " % bsfs[customisation].get_path()
-    
-    args += "-I ..\\include\\oem"
-    for flag in flags:
-        args = args + " -D%s" % flag
-    
-    cdir = os.curdir
-    os.chdir ("/epoc32/rom")
-    cmd = "cpp -nostdinc -u %s %s include\\locales_sc.iby -include .\\include\\header.iby %s" % (prefix, args, suffix)
-    print ("Calling %s\n" % cmd)
-    stdin, stdout, stderr = os.popen3(cmd)
-    stdin.close()
-    result = stdout.read()
-    errors =  stderr.read()
-    stderr.close()
-    status = stdout.close() or 0
-    
-    print errors
-
-    # parsing overrides first    
-    overrides = {}
-    for line in result.splitlines():
-        res = re.match(r'^\s*(?:ROM_IMAGE\[\d+\]\s+)?data-override\s*=\s*(\S+)\s+(\S+)', line)
-        if res != None:
-            print "Found override directive %s -> %s" % (res.group(2).lower(), res.group(1))
-            overrides[res.group(2).lower()] = res.group(1)
-        
-    for line in result.splitlines():        
-        if re.match(r'^\s*(ROM_IMAGE\[\d+\]\s+)?data-override\s*=\s*(\S+)\s+(\S+)', line):            
-            pass
-        else:
-            line = _apply_override(overrides, line)
-            if re.match("^\\s*data\\s*=\\s*MULTI_LINGUIFY", line):
-                res = re.search(r"MULTI_LINGUIFY\s*\(\s*(\S+)\s+(\S+)\s+(\S+)\s*\)", line)
-                if res.group(1).lower() == "rsc":
-                    ext = "r%s" % lid
-                    output.write("data=%s.%s %s.%s\n" % (res.group(2), res.group(1), res.group(3), ext))
-                else:
-                    print "WARNING: Cannot extract '%s'" % line
-            
-            elif re.search(r"\.rsc", line, re.I) != None:
-                output.write(re.sub(r"\.[rR][sS][cC]", r".r%s" % lid, line) + "\n")
-            elif re.search(r"\.dbz", line, re.I):
-                output.write(re.sub(r"\.[dD][bB][zZ]", r".d%s" % lid, line) + "\n")
-            elif re.search(r"\.hlp", line, re.I):
-                output.write(re.sub(r"\.[hH][lL][pP]", r".h%s" % lid, line) + "\n")
-            elif re.search(r"Content\\01", line, re.I):
-                #rename Content\01 to Content\xx (where xx is language id). This is for handlng DTD files
-                output.write(re.sub(r"Content\\01", r"Content\\%s" % lid, line) + "\n")
-            elif re.search(r"\.o0001", line, re.I):
-                lang = lid
-                while (len(lang)<4):
-                    lang = "0%s" % lang
-                output.write(re.sub(r"\.[oO]\d+", ".o%s" % lang, line) + "\n")
-            elif re.search(r"elocl\.dll", line, re.I):
-                output.write(re.sub(r"\.[lL][oO][cC]|\.[dD][lL][lL]", ".%s" % lid, line) + "\n")
-            elif re.search(r"^\s*(data|file)=", line, re.I):
-                print ("WARNING: This should not be included in resource.iby '%s'\nThis file should be included using an 'applicationnameVariant.iby' file.\n" % line)
-    output.write("#endif\n")
-    output.close()
-    os.chdir(cdir)
-    return status    
-
-
-
-VARIANT_ID_KEY = 'variant.id'
-VARIATION_DIR_KEY = 'variation.dir'
-
-def find_variant_path(config, key=VARIANT_ID_KEY):
-    """ This function helps to find the variant directory
-        using variant configuration
-    """
-    if config.has_key(VARIATION_DIR_KEY) and os.path.exists(config[VARIATION_DIR_KEY]):
-        for directory in os.listdir(config[VARIATION_DIR_KEY]):
-            if (config.has_key(key) and re.match(r".*_%s$" % config[key], directory) != None):
-                return os.path.join(config[VARIATION_DIR_KEY], directory)
-    return None
--- a/buildframework/helium/tools/common/python/lib/log2xml.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,416 +0,0 @@
-#============================================================================ 
-#Name        : log2xml.py 
-#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:
-#===============================================================================
-
-""" Symbian log converter.
-"""
-import xml.dom.minidom
-import sys
-import os
-import re
-import shutil
-import codecs
-import time
-import datetime
-from xml.sax import make_parser 
-from xml.sax.handler import ContentHandler 
-from xml.sax.saxutils import escape
-
-
-DEFAULT_CONFIGURATION = {"FATAL": [r"mingw_make.exe"],
-                         "ERROR": [r'^(?:(?:\s*\d+\)\s*)|(?:\s*\*\*\*\s*))ERROR:',
-                                   r"^MISSING:",
-                                   r"Error:\s+",
-                                   r"^Error:",
-                                   r"'.+' is not recognized as an internal or external command",
-                                   r"FLEXlm error:",
-                                   r"(ABLD|BLDMAKE) ERROR:",
-                                   r"FATAL ERROR\(S\):",
-                                   r"fatal error U1077",
-                                   r"warning U4010",
-                                   r"^make(?:\[\d+\])?\: \*\*\*",
-                                   r"^make(?:\[\d+\])?:\s+.*\s+not\s+remade",
-                                   r"\"(.*)\", line (\d+): (Error: +(.\d+.*?):.*)$",
-                                   r"error: ((Internal fault):.*)$",
-                                   r"Exception: [A-Z0-9_]+",
-                                   r"target .* given more than once in the same rule",
-                                   r"^ERROR:",
-                                   r"^ERROR EC\d+:",
-                                   r"^ERROR\t",
-                                   r"syntax error at line",],
-                         "CRITICAL": [r"[Ww]arning:?\s+(#111-D|#1166-D|#117-D|#128-D|#1293-D|#1441-D|#170-D|#174-D|#175-D|#185-D|#186-D|#223-D|#231-D|#257-D|#284-D|#368-D|#414-D|#430-D|#47-D|#514-D|#546-D|#68-D|#69-D|#830-D|#940-D|#836-D|A1495E|L6318W|C2874W|C4127|C4355|C4530|C4702|C4786|LNK4049)"],
-                         "WARNING": [r'\): Missing file:',
-                                      r'^(\d+\))?\s*WARNING:', r'^MAKEDEF WARNING:',
-                                      r'line \d+: Warning:', r':\s+warning\s+\w+:',
-                                      r"\\\\(.*?)\(\d+\)\s:\sWarning:\s\(\d+\)",
-                                      r"^(BLDMAKE |MAKEDEF )?WARNING:",
-                                      r"WARNING\(S\)",
-                                      r"\(\d+\) : warning C",
-                                      r"LINK : warning",
-                                      r":\d+: warning:",
-                                      r"\"(.*)\", line (\d+): (Warning: +(?!A1495E)(.\d+.*?):.*)$",
-                                      r"Usage Warning:",
-                                      r"mwld.exe:",
-                                      r"^Command line warning",
-                                      r"ERROR: bad relocation:",
-                                      r"^(\d+) warning",
-                                      r"EventType:\s+Error\s+Source:\s+SweepNT",
-                                      r"^WARN\t",
-                                      ],
-                        "REMARK": [r"Command line warning D4025 : ",
-                                   r"^REMARK: ",
-                                   r"^EventType:\s+Error\s+Source:\s+GNU\s+Make",
-                                   r":\d+: warning: cannot find matching deallocation function",
-                                   r"((:\d+)*: note: )",
-                                   ],
-                        "INFO": [r"^INFO:"]
-                        }
-
-
-def find_priority(line, config):
-    keys = config.keys()
-    keys.reverse()    
-    for category in keys:
-        for rule in config[category]:
-            if rule.search(line) != None:
-                return category.lower()
-    return "stdout"
-
-class Stack:
-    """ Bottomless stack. If empty just pop a default element. """
-    
-    def __init__(self, default):
-        self.__default = default
-        self.__stack = []
-  
-    def pop(self):
-        result = None
-        try:
-            result = self.__stack.pop()
-        except IndexError, e:
-            result = self.__default
-        return result
-  
-    def push(self, item):
-        self.__stack.append(item)
-  
-    def __len__(self):
-        return len(self.__stack)
-
-def to_cdata(text):
-    """ Cleanup string to match CDATA requiements.
-        These are the only allowed characters: #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF].
-    """
-    result = ""
-    for c in list(text):
-        v = ord(c)        
-        if v == 0x9 or v == 0xa or v == 0xd:
-            result += c
-        elif v>=0x20 and v <= 0xd7ff:
-            result += c
-        elif v>=0xe000 and v <= 0xfffd:
-            result += c
-        elif v>=0x10000 and v <= 0x10ffff:
-            result += c
-        else:
-            result += " " 
-    return result
-
-class LogWriter(object):
-    """ XML Log writer. """
-    
-    def __init__(self, stream, filename):
-        self.__stream = stream
-        self.__stream.write("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n")
-        self.__stream.write("<log filename=\"%s\">\n" % filename)
-        self.__stream.write("\t<build>\n")
-        self.__indent = "\t"
-        self.__intask = 0
-
-    def close(self):
-        # closing open tasks...
-        while self.__intask > 0:
-            self.close_task()
-        self.__stream.write("\t</build>\n")
-        self.__stream.write("</log>\n")
-        self.__stream.close()
-
-    def open_task(self, name):
-        self.__indent += "\t"
-        self.__intask += 1
-        self.__stream.write("%s<task name=\"%s\">\n" % (self.__indent, name))
-
-    def close_task(self):
-        if self.__intask > 0:
-            self.__intask -= 1
-            self.__stream.write("%s</task>\n" % (self.__indent))
-            self.__indent = self.__indent[:-1]
-    
-    def message(self, priority, msg):
-        try:
-            acdata = to_cdata(msg.decode('utf-8', 'ignore'))
-            self.__stream.write("%s<message priority=\"%s\"><![CDATA[%s]]></message>\n" % (self.__indent+"\t", priority, acdata))
-        except UnicodeDecodeError, e:
-            print e
-        
-
-
-def convert(inputfile, outputfile, fulllogging=True, configuration=DEFAULT_CONFIGURATION):
-    """ Convert an input log into an XML log and write an outputfile. """
-    
-    # Compiling the regexp  
-    built_config = {}
-    for category in configuration.keys():
-        built_config[category] = []
-        for rule in configuration[category]:
-            built_config[category].append(re.compile(rule))
-    
-    # Generating the XML log
-    log = open(inputfile, 'r')
-    olog = codecs.open(outputfile, 'w+', 'utf-8', errors='ignore')
-    xmllog = LogWriter(olog, inputfile)
-
-    
-    match_finnished = re.compile(r"^===\s+.+\s+finished") 
-    match_started = re.compile(r"^===\s+(.+)\s+started") 
-    match_component = re.compile(r"^===\s+(.+?)\s+==\s+(.+)")
-    match_logger_component = re.compile(r'^\s*\[.+?\]\s*')
-    #match_ant_target_start = re.compile(r'.*INFO\s+-\s+Target\s+####\s+(.+)\s+####\s+has\s+started')
-    #match_ant_target_end = re.compile(r'.*INFO\s+-\s+Target\s+####\s+(.+)\s+####\s+has\s+finnished')
-    match_ant_target_start = re.compile(r'^([^\s=\[\]]+):$')
-    match_ant_target_end = re.compile(r'^([^\s=]+):\s+duration')
-    symbian = False
-    ant_has_open_task = False
-    # looping
-    for line in log:
-                
-        # matching Ant logging
-        if not symbian and match_ant_target_end.match(line):
-            xmllog.close_task()
-            ant_has_open_task = False
-            continue
-        elif not symbian and match_ant_target_start.match(line):
-            result = match_ant_target_start.match(line)
-            if result != None:
-                if ant_has_open_task:
-                    xmllog.close_task()
-                    ant_has_open_task = False
-                xmllog.open_task(result.group(1))
-                ant_has_open_task = True
-            continue
-        # matching Symbian logging
-        line = match_logger_component.sub(r'', line)
-        line = line.strip()
-        if line.startswith("++ Finished at"):
-            xmllog.close_task()
-        elif line.startswith("=== "):
-            if match_finnished.match(line):
-                xmllog.close_task()
-            else:
-                # This is a symbian log
-                symbian = True
-                result = match_component.match(line)
-                if result != None:
-                    xmllog.open_task(result.group(2))
-                # === cenrep_s60_32 started
-                result = match_started.match(line)
-                if result != None:
-                    xmllog.open_task(result.group(1))
-        else:
-            # Type?
-            priority = find_priority(line, built_config)
-            if (fulllogging or priority != 'stdout'):
-                xmllog.message(priority, line)
-    # end file
-    xmllog.close()
-    
-def convert_old(inputfile, outputfile, fulllogging=True, configuration=DEFAULT_CONFIGURATION):
-    """ Convert an input log into an XML log and write an outputfile. """
-    
-    # Compiling the regexp  
-    built_config = {}
-    for category in configuration.keys():
-        built_config[category] = []
-        for rule in configuration[category]:
-            built_config[category].append(re.compile(rule))
-    
-    # Generating the XML log
-    log = open (inputfile, 'r')
-    doc = xml.dom.minidom.Document()
-    root = doc.createElementNS("", "log")
-    root.setAttributeNS("", "name", inputfile)
-    doc.appendChild(root)
-    build = doc.createElementNS("", "build")
-    root.appendChild(build)
-    # current group/task
-    current = build
-    # bottomless stask, if losing sync all message will be at top level.
-    stack = Stack(build)
-    
-    match_finnished = re.compile(r"^===\s+.+\s+finished") 
-    match_started = re.compile(r"===\s+(.+)\s+started") 
-    match_component = re.compile(r"^===\s+(.+?)\s+==\s+(.+)")
-    match_logger_component = re.compile(r'^\s*\[.+?\]\s*')
-    #match_ant_target_start = re.compile(r'.*INFO\s+-\s+Target\s+####\s+(.+)\s+####\s+has\s+started')
-    #match_ant_target_end = re.compile(r'.*INFO\s+-\s+Target\s+####\s+(.+)\s+####\s+has\s+finnished')
-    match_ant_target_start = re.compile(r'^([^\s=]+):$')
-    match_ant_target_end = re.compile(r'^([^\s=]+):\s+duration')
-    # looping
-    for line in log:
-                
-        # matching Ant logging
-        if match_ant_target_end.match(line):
-            current = stack.pop()
-            continue
-        elif match_ant_target_start.match(line):
-            result = match_ant_target_start.match(line)
-            if result != None:
-                stack.push(current)
-                task = doc.createElementNS("", "task")
-                task.setAttributeNS("", "name", result.group(1))
-                current.appendChild(task)
-                current = task
-            continue
-        # matching Symbian logging
-        line = match_logger_component.sub(r'', line)
-        line = line.strip()
-        if line.startswith("++ Finished at"):
-            current = stack.pop()
-        elif line.startswith("==="):
-            if match_finnished.match(line):
-                current = stack.pop()
-            else:
-                result = match_component.match(line)
-                if result != None:
-                    stack.push(current)
-                    task = doc.createElementNS("", "task")
-                    task.setAttributeNS("", "name", result.group(2))
-                    current.appendChild(task)
-                    current = task
-                # === cenrep_s60_32 started
-                result = match_started.match(line)
-                if result != None:
-                    task = doc.createElementNS("", "task")
-                    task.setAttributeNS("", "name", result.group(1))
-                    stack.push(current)
-                    current.appendChild(task)
-                    current = task
-        else:
-            msg = doc.createElementNS("", "message")
-            # Type?
-            priority = find_priority(line, built_config)
-            if (fulllogging or priority != 'stdout'):
-                msg.setAttributeNS("", "priority", priority)
-                msg.appendChild(doc.createCDATASection(to_cdata(line.decode("utf-8"))))
-                current.appendChild(msg)
-        
-    file_object = codecs.open(outputfile, 'w', "utf_8")
-    file_object.write(doc.toprettyxml())
-    file_object.close()
-
-class ContentWriter(ContentHandler):
-    """ SAX Content writer. Parse and write an XML file. """
-    def __init__(self, os, indent=""):
-        self.os = os
-        self.indent = indent
-        self.__content = u""
-    
-    def startElement(self, name, attrs):
-        self.os.write(self.indent + "<" + name)        
-        if attrs.getLength() > 0:
-            self.os.write(" ")        
-        self.os.write(" ".join(map(lambda x: "%s=\"%s\"" % (x, attrs.getValue(x)), attrs.getNames())))            
-        self.os.write(">\n")
-        self.indent += "\t"
-        self.__content = ""
-    
-    def endElement(self, name):
-        if len(self.__content) > 0:
-            self.os.write(self.indent + self.__content + "\n")                
-        self.indent = self.indent[:-1]
-        self.os.write("%s</%s>\n" % (self.indent, name))
-        self.__content = ""
-        
-    def characters(self, content):        
-        self.__content += unicode(escape(content.strip()))
-
-class AppendSummary(ContentWriter):
-    """ SAX content handler to add an XML log to the summary. """
-    def __init__(self, output, xmllog):
-        ContentWriter.__init__(self, output)
-        self.xmllog = xmllog
-
-    def startDocument(self):
-        self.os.write('<?xml version="1.0" encoding="utf-8"?>\n')
-    
-    def startElement(self, name, attrs):
-        ContentWriter.startElement(self, name, attrs)
-        if name == "logSummary":
-            parser = make_parser()
-            parser.setContentHandler(ContentWriter(self.os, self.indent))
-            parser.parse(open(self.xmllog, 'r'))
-    
-
-def append_summary(summary, xmllog, maxmb=80):
-    """ Append content to the summary xml file. """
-    if os.path.getsize(summary) + os.path.getsize(xmllog) > (maxmb*1024*1024):
-        print 'Error: ' + summary + ' larger than ' + str(maxmb) + 'MB, not appending'
-        return
-    
-    outfile = codecs.open(summary + ".tmp", 'w', "utf8")
-    parser = make_parser()
-    parser.setContentHandler(AppendSummary(outfile, xmllog))
-    
-    input = open(summary, 'r')
-    parser.parse(input)
-    input.close()
-    outfile.close()
-    # Updating the summary file.
-    os.unlink(summary)
-    os.rename(summary + ".tmp", summary)    
-    
-
-def symbian_log_header(output, config, command, dir):
-    output.log("===-------------------------------------------------")
-    output.log("=== %s" % config)
-    output.log("===-------------------------------------------------")
-    output.log("=== %s started %s" % (config, datetime.datetime.now().ctime()))
-    output.log("=== %s == %s" % (config, dir))
-    output.log("-- %s" % command)
-    output.log("++ Started at %s" % datetime.datetime.now().ctime())
-    output.log("+++ HiRes Start %f" % time.time())
-    output.log("Chdir %s" % dir)
-    
-
-def symbian_log_footer(output):
-    output.log("+++ HiRes End %f" % time.time())
-    output.log("++ Finished at %s" % datetime.datetime.now().ctime())
-    
-    
-if __name__ == "__main__":
-    convert(sys.argv[1], "%s.xml" % sys.argv[1], fulllogging=False)
-    """ An empty summary:
-        <?xml version=\"1.0\" encoding=\"UTF-8\"?><logSummary/>
-    """
-    #s = open(r"z:\summary.xml", "w")
-    #s.write("""<?xml version=\"1.0\" encoding=\"UTF-8\"?><logSummary/>""")
-    #s.close()
-    #append_summary(r'Z:\summary.xml', r'Z:\output\logs\test_0.0.1.mc_5132_2_build.log2.xml')
-    #append_summary(r'Z:\summary.xml', r'Z:\output\logs\test_0.0.1_BOM.xml')
-    
-    
\ No newline at end of file
--- a/buildframework/helium/tools/common/python/lib/minidomamara.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,101 +0,0 @@
-#============================================================================ 
-#Name        : minidomamara.py 
-#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:
-#===============================================================================
-
-# pylint: disable-msg=E1103
-
-import xml.dom.minidom
-from xml.etree.ElementTree import ElementTree
-
-def parse(f):
-    return MinidomAmara(f)
-
-def create_document(name):
-    impl = xml.dom.minidom.getDOMImplementation()
-    newdoc = impl.createDocument(None, name, None).toxml()
-    return MinidomAmara(newdoc)
-
-class MinidomAmara(object):
-    """ amara api using minidom """
-    
-    def __init__(self, dom, parent=None):
-        self.parent = parent
-        if isinstance(dom, file):
-            self.dom = xml.dom.minidom.parse(dom)
-        elif isinstance(dom, basestring):
-            self.dom = xml.dom.minidom.parseString(dom)
-        else:
-            self.dom = dom
-    
-    def __getitem__(self, name):
-        if type(self.dom).__name__ == 'instance':
-            return self
-        return MinidomAmara(self.dom[name])
-    
-    def __getattr__(self, attr):
-        self.attr = attr
-        res = self.dom.getElementsByTagName(attr)
-        if len(res) == 0:
-            return self.dom.getAttribute(attr)
-        return MinidomAmara(res[0], self.dom)
-
-    def __iter__(self):
-        for entry in self.parent.getElementsByTagName(self.dom.tagName):
-            yield MinidomAmara(entry)
-
-    def __str__(self):
-        text = ''
-        for t in self.dom.childNodes:
-            if t.nodeType == t.TEXT_NODE and t.data != None:
-                text = text + t.data
-        return text
-    
-    def xml(self):
-        return self.dom.toxml()
-    
-    def xml_append_fragment(self, text):
-        self.dom.appendChild(xml.dom.minidom.parseString(text).documentElement)
-
-    def xml_set_attribute(self, name, value):
-        self.dom.setAttribute(name, value)
-    
-    def _getxml_children(self):
-        return [MinidomAmara(entry) for entry in self.dom.childNodes]
-        
-    def xml_append(self, value):
-        pass
-    
-    def xml_create_element(self, name, content=None, attributes=None):
-        pass
-    
-    xml_children = property(_getxml_children)
-    
-#    def xml_xpath(self, xpath):
-#        tree = ElementTree()
-#        tree.parse(self.dom.toxml())
-#        return tree.findall(xpath)
-
-def test():
-    x = parse(r'<commentLog><branchInfo category="" error="kkk" file="tests/data/comments_test.txt" originator="sanummel" since="07-03-22">Add rofsfiles for usage in paged images</branchInfo></commentLog>')
-    assert str(x.commentLog.branchInfo) == 'Add rofsfiles for usage in paged images'
-    
-    x = parse(r'<commentLog><branchInfo>1</branchInfo><branchInfo>2</branchInfo></commentLog>')
-    for y in x.commentLog.branchInfo:
-        assert str(y) == '1'
-        break
-    
\ No newline at end of file
--- a/buildframework/helium/tools/common/python/lib/nokia/__init__.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +0,0 @@
-#============================================================================ 
-#Name        : __init__.py 
-#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:
-#===============================================================================
-
--- a/buildframework/helium/tools/common/python/lib/nokia/gscm.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,71 +0,0 @@
-#============================================================================ 
-#Name        : gscm.py 
-#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:
-#===============================================================================
-
-""" Wrapper module that get CCM info using GSCM framework. """
-
-
-import logging
-import os
-import subprocess
-
-
-# Uncomment this line to enable logging in this module, or configure logging elsewhere
-#logging.basicConfig(level=logging.DEBUG)
-_logger = logging.getLogger("gscm")
-
-
-def _execute(command):
-    """ Runs a command and returns the result data. """
-    process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
-    output = process.stdout.read()
-    process.poll()
-    status = process.returncode
-    return (output, status)
-
-
-def __get_gscm_info(method, dbname):
-    """ Generic method that call function 'method' on GSCM wrapper script. """
-    command = "perl " + os.path.join(os.environ['HELIUM_HOME'], "tools/common/bin/get_gscm_info.pl")
-    command += " %s %s" % (method, dbname)    
-    _logger.debug("Running command: %s" % command)
-    (output, status) = _execute(command)
-    _logger.debug("Status: %s" % status)
-    _logger.debug("Output: %s" % output)
-    if status == 0 or status == None and not ("Can't locate" in output):
-        return output.strip()
-    if not 'HLM_SUBCON' in os.environ:
-        raise Exception("Error retrieving get_db_path info for '%s' database.\nOUTPUT:%s" % (dbname, output.strip()))
-    return None
-
-def get_db_path(dbname):
-    """ Returns the database path for dbname database. """
-    _logger.debug("get_db_path: %s" % dbname)
-    return __get_gscm_info('get_db_path', dbname)
-
-
-def get_router_address(dbname):
-    """ Returns the database router address for dbname database. """
-    _logger.debug("get_router_address: %s" % dbname)
-    return __get_gscm_info('get_router_address', dbname)
-
-
-def get_engine_host(dbname):
-    """ Returns the database engine host for dbname database. """
-    _logger.debug("get_engine_host: %s" % dbname)
-    return __get_gscm_info('get_engine_host', dbname)
--- a/buildframework/helium/tools/common/python/lib/nokia/nokiaccm.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,147 +0,0 @@
-#============================================================================ 
-#Name        : nokiaccm.py 
-#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:
-#===============================================================================
-
-""" Nokia specific interface to Synergy sessions. """
-
-import logging
-import netrc
-import os
-import os.path
-import sys
-import fileutils
-
-import ccm
-import nokia.gscm
-
-
-# Uncomment this line to enable logging in this module, or configure logging elsewhere
-#logging.basicConfig(level=logging.DEBUG)
-_logger = logging.getLogger("nokia.nokiaccm")
-
-
-def open_session(username=None, password=None, engine=None, dbpath=None, database=None, reuse=True):
-    """Provides a Session object.
-    
-    Attempts to return a Session, based either on existing Synergy
-    sessions or by creating a new one.
-    
-    - If a .netrc file can be found on the user's personal drive,
-      that will be read to obtain Synergy login information if it 
-      is defined there. This will be used to fill in any missing 
-      parameters not passed in the call to open_session().
-      
-      The format of the .netrc file entries should be:
-      
-      machine synergy login USERNAME password foobar account DATABASE_PATH@SERVER
-      
-      If the details refer to a specific database, the machine can be the database name,
-      instead of "synergy".
-    - If an existing session is running that matches the supplied
-      parameters, it will reuse that.
-    
-    """    
-    # See if a .netrc file can be used
-    if password == None or username == None or engine == None or dbpath == None:
-        if os.sep == '\\':
-            os.environ['HOME'] = "H:" + os.sep
-        _logger.debug('Opening .netrc file')
-        try:
-            netrc_file = netrc.netrc()
-            netrc_info = None
-            # If settings for a specific database 
-            if database != None:
-                netrc_info = netrc_file.authenticators(database)            
-
-            # if not found just try generic one
-            if netrc_info == None:
-                netrc_info = netrc_file.authenticators('synergy')
-                
-            if netrc_info != None:
-                (n_username, n_account, n_password) = netrc_info
-                if username == None:
-                    username = n_username
-                if password == None:
-                    password = n_password
-                if n_account != None:
-                    (n_dbpath, n_engine) = n_account.split('@')
-                    if dbpath == None and n_dbpath is not None:
-                        _logger.info('Database path set using .netrc (%s)' % n_dbpath)
-                        dbpath = n_dbpath
-                    if engine == None and n_engine is not None:
-                        _logger.info('Database engine set using .netrc (%s)' % n_engine)
-                        engine = n_engine
-        except IOError:
-            _logger.debug('Error accessing .netrc file')
-
-    # using environment username in case username is not defined.
-    if username == None:
-        username = os.environ['USERNAME']
-
-    # looking for dbpath using GSCM database
-    if dbpath == None and database != None:
-        _logger.info('Database path set using the GSCM database.')
-        dbpath = nokia.gscm.get_db_path(database)        
-
-    # looking for engine host using GSCM database
-    if engine == None and database != None:
-        _logger.info('Database engine set using the GSCM database.')
-        engine = nokia.gscm.get_engine_host(database)
-            
-    
-    _sessions = []
-    # See if any currently running sessions can be used, only if no password submitted, else use a brand new session!
-    if password == None and reuse:
-        current_sessions = ccm.running_sessions()
-        for current_session in current_sessions:
-            if current_session.dbpath == dbpath:
-                return current_session
-    else:
-        if ccm.CCM_BIN == None:
-            raise ccm.CCMException("Could not find CM/Synergy executable in the path.")
-        # Looking for router address using GSCM database
-        router_address = None
-        if database == None and dbpath != None:
-            database = os.path.basename(dbpath)
-
-        lock = fileutils.Lock(ccm.CCM_SESSION_LOCK)
-        try:
-            lock.lock(wait=True)
-            # if we have the database name we can switch to the correct Synergy router
-            if database != None:
-                router_address = nokia.gscm.get_router_address(database)
-                if os.sep == '\\' and router_address != None:
-                    routerfile = open(os.path.join(os.path.dirname(ccm.CCM_BIN), "../etc/_router.adr"), 'r')
-                    current_router = routerfile.read().strip()
-                    routerfile.close()
-                    if current_router != router_address.strip():
-                        _logger.info('Updating %s' % (os.path.normpath(os.path.join(os.path.dirname(ccm.CCM_BIN), "../etc/_router.adr"))))
-                        routerfile = open(os.path.join(os.path.dirname(ccm.CCM_BIN), "../etc/_router.adr"), "w+")
-                        routerfile.write("%s\n" % router_address)
-                        routerfile.close()
-        
-            # If no existing sessions were available, start a new one
-            new_session = ccm.Session.start(username, password, engine, dbpath)
-            lock.unlock()
-            return new_session
-        finally:
-            lock.unlock()
-    raise ccm.CCMException("Cannot open session for user '%s'" % username)
-
-
-
--- a/buildframework/helium/tools/common/python/lib/pathaddition/__init__.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +0,0 @@
-#============================================================================ 
-#Name        : __init__.py 
-#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:
-#===============================================================================
-
--- a/buildframework/helium/tools/common/python/lib/pathaddition/match.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,110 +0,0 @@
-#============================================================================ 
-#Name        : match.py 
-#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:
-#===============================================================================
-
-""" This module provides support for Ant-style wildcards,
-    which are not the same as regular expressions (which are documented in the re module).
-"""
-import os
-import pathaddition.relative
-import logging
-import fnmatch
-import re
-import sys
-
-_logger = logging.getLogger('path.match')
-#logging.basicConfig()
-
-# local regular expression cache.
-_cache = {}
-
-def ant_match(name, pattern, casesensitive=True):
-    """Check if name matches pattern (Ant-style wildcards).
-    """
-    _logger.debug("ant_match: path='%s' pattern='%s'" % (name, pattern))
-    if pattern.endswith('/') or pattern.endswith('\\'):
-        pattern = pattern + '**'
-        _logger.debug("ant_match: pattern ending with / or \ pattern='%s'" % (pattern))
-    name = os.path.normpath(name)
-    pattern = os.path.normpath(pattern)
-    name = name.replace('/', os.sep)
-    name = name.replace('\\', os.sep)
-    pattern = pattern.replace('/', os.sep)
-    pattern = pattern.replace('\\', os.sep)
-    _logger.debug("ant_match:normpath: path='%s' pattern='%s'" % (name, pattern))
-    
-    if not _cache.has_key(pattern):
-        res = translate(pattern)
-        _logger.debug("ant_match: regexp=%s" % (res))
-        if os.sep == '\\' or not casesensitive:
-            _cache[pattern] = re.compile(res, re.I)
-        else:
-            _cache[pattern] = re.compile(res)
-    return _cache[pattern].match(name) is not None
-
-
-def translate(pat):
-    """Translate a Ant-style PATTERN to a regular expression.
-
-    There is no way to quote meta-characters.
-    """
-
-    i, n = 0, len(pat)
-    res = ''
-    while i < n:
-        c = pat[i]
-        i = i+1
-        if c == '*':
-            # identifying a **
-            if i < len(pat) and pat[i] == '*':
-                res = res + "(?:(?:^|%s)[^%s]+)*(?:^|%s|$)" % (os.sep.replace('\\','\\\\'), os.sep.replace('\\','\\\\'), os.sep.replace('\\','\\\\'))
-                i = i+1
-                # skipping next \ or / 
-                if i < len(pat) and pat[i] == os.sep:
-                    i = i+1
-            else:
-                res = res + '[^%s]*' % os.sep.replace('\\','\\\\')
-        elif c == '?':
-            res = res + '[^%s]*' % os.sep.replace('\\','\\\\')
-        elif c == '[':
-            j = i
-            if j < n and pat[j] == '!':
-                j = j+1
-            if j < n and pat[j] == ']':
-                j = j+1
-            while j < n and pat[j] != ']':
-                j = j+1
-            if j >= n:
-                res = res + '\\['
-            else:
-                stuff = pat[i:j].replace('\\','\\\\')
-                i = j+1
-                if stuff[0] == '!':
-                    stuff = '^' + stuff[1:]
-                elif stuff[0] == '^':
-                    stuff = '\\' + stuff
-                res = '%s[%s]' % (res, stuff)
-        else:
-            
-            if c == os.sep and i+2 <= len(pat) and pat[i] == "*" and pat[i+1] == "*":
-#                res = res + "?"
-                pass
-            else:
-                res = res + re.escape(c)
-    return res + "$"
-
--- a/buildframework/helium/tools/common/python/lib/pathaddition/relative.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,129 +0,0 @@
-#============================================================================ 
-#Name        : relative.py 
-#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:
-#===============================================================================
-
-"""
-    Additional path functionnality.
-    abs2rel
-    rel2abs
-"""
-import os
-import os.path
-import re
-
-# matches http:// and ftp:// and mailto://
-protocolPattern = re.compile(r'^\w+://')
-
-def isabs(string):
-    """ 
-    
-    @return true if string is an absolute path or protocoladdress
-    for addresses beginning in http:// or ftp:// or ldap:// - 
-    they are considered "absolute" paths.
-    """
-    if protocolPattern.match(string): 
-        return True
-    return os.path.isabs(string)
-
-def rel2abs(path, base = None):
-    """ converts a relative path to an absolute path.
-
-    @param path the path to convert - if already absolute, is returned
-    without conversion.
-    @param base - optional. Defaults to the current directory.
-    The base is intelligently concatenated to the given relative path.
-    @return the relative path of path from base
-    """
-    if isabs(path):
-        return path
-    if base is None:
-        base = os.curdir
-    retval = os.path.join(base, path)
-    return os.path.abspath(retval)
-    
-
-def pathsplit(p, rest=None):
-    """ Split path to pieces """
-    if rest is None:
-        rest = []
-    (h, t) = os.path.split(p)
-    if len(h) < 1: 
-        return [t]+rest
-    if len(t) < 1: 
-        return [h]+rest
-    return pathsplit(h, [t]+rest)
-
-def commonpath(l1, l2, common=None):
-    """ return the common path"""
-    if common is None:
-        common = []
-    if len(l1) < 1:
-        return (common, l1, l2)
-    if len(l2) < 1:
-        return (common, l1, l2)
-    if l1[0] != l2[0]:
-        return (common, l1, l2)
-    return commonpath(l1[1:], l2[1:], common+[l1[0]])
-
-
-def relpath(p1, p2):
-    (common, l1, l2) = commonpath(pathsplit(p1), pathsplit(p2))
-    p = []
-    if len(l1) > 0:
-        p = [ '../' * len(l1) ]
-    p = p + l2
-    if len(p) is 0:
-        return "."
-    return os.path.join( *p )
-    
-    
-def abs2rel(path, base = None):
-    """ @return a relative path from base to path.
-    
-    base can be absolute, or relative to curdir, or defaults
-    to curdir.
-    """
-    if protocolPattern.match(path):
-        return path
-    if base is None:
-        base = os.curdir
-    base = rel2abs(base)
-    path = rel2abs(path) # redundant - should already be absolute
-    return relpath(base, path)
-
-
-def commonprefix(paths):
-    """ 
-    Returns the common prefix base on the path components.
-    """
-    if len(paths) == 0:
-        return ''
-    if len(paths) == 1:
-        return paths[0]
-
-    def _commonprefix_internal(p1, p2):
-        c = commonpath(pathsplit(p1), pathsplit(p2))[0]
-        if len(c) == 0:
-            return ''
-        return os.path.join(*c)
-    common = _commonprefix_internal(paths[0], paths[1])
-    for p in paths[2:]:
-        common = _commonprefix_internal(common, p)
-    return common
-
-    
\ No newline at end of file
--- a/buildframework/helium/tools/common/python/lib/preparation.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,627 +0,0 @@
-#============================================================================ 
-#Name        : preparation.py 
-#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:
-#===============================================================================
-
-""" This package implements the new update work area functionality.
-
-"""
-
-import logging
-import os
-import shutil
-import time
-import xml.dom.minidom
-
-import ccm
-import ccm.extra
-import configuration
-import fileutils
-
-
-# Uncomment this line to enable logging in this module, or configure logging elsewhere
-logging.basicConfig(level=logging.INFO)
-_logger = logging.getLogger("preparation.ccmgetinput")
-
-
-DEFAULT_THREADS = 1
-THREADS_MIN_TOTAL = 1
-THREADS_MAX_TOTAL = 10
-
-
-def find(function, seq):
-    """Return first item in sequence where f(item) == True."""
-    for item in seq:
-        if function(item): 
-            return item
-    return None
-
-
-class PreparationAction(object):
-    """ Implements an abstract preparation function. """
-    
-    def __init__(self, config, builder):
-        self._config = config
-        self._builder = builder
-
-    def check(self):
-        """ Checks if project is available in synergy. """
-        self._check_object(self._config.name)
-        
-    def _check_object(self, fpn):
-        """ Check if ccmobject exists in synergy database. """
-        session = self.get_session()
-        ccm_object = session.create(fpn)
-        if ccm_object.exists():
-            _logger.info("Checking '%s'...Ok" % fpn)
-        else:
-            _logger.info("Checking '%s'...Not Found!" % fpn)
-            raise Exception("Could not find  object %s in the database." % fpn)
-
-    def execute(self):
-        """ This method needs to be override by child class.
-        
-        It should implement the action to achieve.
-        """
-        pass
-
-    def get_session(self):
-        """ Helper that retreive the session from the builder. Setting threads correctly. """
-        if self._config.has_key('database'):
-            return self._builder.session(self._config['database'], self.get_threads())
-        if not self._config.has_key('host'):
-            raise Exception("Database engine host configuration is not found")
-        elif not self._config.has_key('dbpath'):
-            raise Exception("Database path configuration is not found")
-        else:
-            return self._builder.session(None, self.get_threads(), self._config['host'], self._config['dbpath'])
-
-    def get_threads(self):
-        """ Returning the number of threads that should be used. """
-        threads = self._config.get_int('threads', DEFAULT_THREADS)
-        if threads < THREADS_MIN_TOTAL:
-            threads = THREADS_MIN_TOTAL
-        if threads > THREADS_MAX_TOTAL:
-            threads = THREADS_MAX_TOTAL
-        return threads
-
-
-class PreparationSnapshot(PreparationAction):
-    """ Implements a Snapshot preparation function. 
-    
-    Support the parallel snapshotter.
-    """
-    
-    def __init__(self, config, builder):
-        """ Initialization. """
-        PreparationAction.__init__(self, config, builder)
-
-    def execute(self):
-        """ Method that implements snapshoting of the project into a folder. """        
-        _logger.info("=== Stage=snapshot = %s" % self._config.name)
-        _logger.info("++ Started at %s" % time.strftime("%H:%M:%S", time.localtime()))
-        session = self.get_session()
-        project = session.create(self._config.name)
-
-        target_dir = os.path.normpath(os.path.join(self._config['dir'], project.name))
-        if not self._check_version(project, target_dir):
-            if not os.path.exists(target_dir):
-                _logger.info("Creating '%s'." % target_dir)
-                os.makedirs(target_dir)
-            else:
-                _logger.info("Project needs to be updated, so deleting '%s'." % target_dir)
-                fileutils.rmtree(target_dir)
-            
-            try:
-                _logger.info("Snapshotting project.")                
-                if self.get_threads() == 1:                    
-                    _logger.info(project.snapshot(target_dir, True))
-                else:
-                    _logger.info(ccm.extra.FastSnapshot(project, target_dir, self.get_threads()))
-                                    
-                # writing version file                
-                _logger.info("Saving project version information.")
-                versionfile = open(os.path.join(self._config['dir'], project.name, 'project.version'), "w+")
-                versionfile.write(str(project))
-                versionfile.close()                
-            except Exception, exc:
-                if isinstance(exc, ccm.extra.CCMExtraException):
-                    for sexc in exc.subexceptions:
-                        _logger.info(sexc)
-                _logger.info("ERROR: snapshotting %s" % self._config.name)
-                _logger.info(exc)
-                raise exc
-        else:
-            _logger.info("Project snapshot is still up to date. Nothing to do.")
-
-        _logger.info("++ Finished at %s" % time.strftime("%H:%M:%S", time.localtime()))
-    
-    def _check_version(self, project, targetdir):
-        """ Check the version file for snaphot and identify if the project has to be snapshot or not.
-            Returns True if the content of the file matches the project to snapshot (nothing to do).
-            Returns falls either if the file is missing, or the content is different.
-        """
-        versionfile = os.path.join(targetdir, 'project.version')
-        if (os.path.exists(versionfile)):
-            file_ = open(versionfile, "r")
-            projectname = file_.read().strip()
-            file_.close()
-            if (projectname == project.objectname):
-                return True
-        return False
-    
-    
-class PreparationCheckout(PreparationAction):
-    """ Handle the checkout and update of project content. """
-    def __init__(self, config, builder):
-        """ Initialization. """
-        PreparationAction.__init__(self, config, builder)
-        self.__role = None
-
-    def check(self):
-        """ Checks if all synergy resources are available. """
-        PreparationAction.check(self)
-        if self._config.has_key('release'):
-            self._check_object(str(self._config['release']))
-        else:
-            raise Exception("'release' property is not defined for %s" % self._config.name)
-
-        for task in self.__get_tasks():
-            self._check_object("Task %s" % task)
-        for folder in self.__get_folders():
-            self._check_object("Folder %s" % folder)
-        
-        for project in self.__get_subbaselines():
-            self._check_object(project)
-            
-        # checking if the purpose exists
-        if self._config.has_key('purpose'):
-            session = self.get_session()
-            purposes = session.purposes()
-            if purposes.has_key(str(self._config['purpose'])):
-                _logger.info("Checking purpose '%s'...Ok" % (self._config['purpose']))
-            else:
-                _logger.info("Checking purpose '%s'...Not Found!" % (self._config['purpose']))
-                raise Exception("Could not find purpose %s in the database." % self._config['purpose'])
-            
-            role = session.role
-            co_role = ccm.get_role_for_purpose(session, str(self._config['purpose']))
-            _logger.info("Try to switch user to role: %s" % co_role)
-            session.role = co_role
-            session.role = role
-            
-    def execute(self):
-        """ Creates a checkout of the project, or updates an existing checkout if one is found.
-        
-        The work area is maintained as part of this.
-        """
-        _logger.info("=== Stage=checkout = %s" % self._config.name)
-        _logger.info("++ Started at %s" % time.strftime("%H:%M:%S", time.localtime()))
-        session = self.get_session()
-        project = session.create(self._config.name)
-        
-        session.home = self._config['dir']
-        
-        result = self.__find_project(project)
-        # for testing: result = session.create("ppd_sw-fa1f5132#wbernard2:project:sa1spp#1")
-        if (result != None):
-            _logger.info("Project found: '%s'" % result)
-
-            # setting up the project
-            self.__setup_project(project, result)
-        else:
-            _logger.info("Checking out from '%s'." % project)
-            
-            purpose = None
-            if self._config.has_key('purpose'):
-                purpose = self._config['purpose']
-                _logger.info("Using purpose: '%s'" % purpose)
-                
-            version = None
-            if self._config.has_key('version'):
-                version = self._config['version']
-                _logger.info("Using version: '%s'" % version)
-
-            try:
-                self.__setRole(session)
-                result = project.checkout(session.create(self._config['release']), version=version, purpose=purpose)
-                ccm.log_result(result, ccm.CHECKOUT_LOG_RULES, _logger)
-            except ccm.CCMException, exc:
-                ccm.log_result(exc.result, ccm.CHECKOUT_LOG_RULES, _logger)
-                raise exc
-            finally:
-                self.__restoreRole(session)
-            _logger.info('Checkout complete')
-            
-            if result.project != None and result.project.exists():                
-                _logger.info("Project checked out: '%s'" % result.project)
-                
-                try:
-                    self.__setRole(session)
-                    _logger.info("Maintaining the workarea...")
-                    if self.get_threads() == 1:
-                        output = result.project.work_area(True, True, True, self._config['dir'], result.project.name)
-                    else:
-                        output = ccm.extra.FastMaintainWorkArea(result.project, self._config['dir'], result.project.name, self.get_threads())
-                    ccm.log_result(output, ccm.CHECKOUT_LOG_RULES, _logger)
-                finally:
-                    self.__restoreRole(session)
-                self.__setup_project(project, result.project)
-            else:
-                raise Exception("Error checking out '%s'" % project)
-
-        _logger.info("++ Finished at %s" % time.strftime("%H:%M:%S", time.localtime()))
-
-    def __find_project(self, project):
-        """ Private method. """
-        if (os.path.exists(os.path.join(self._config['dir'], project.name, "project.version"))):
-            _logger.info("Snapshot to checkout deleting '%s'." % os.path.join(self._config['dir'], project.name))
-            fileutils.rmtree(os.path.join(self._config['dir'], project.name))
-            return None
-        
-        path = os.path.join(self._config['dir'], project.name, project.name)
-        try:
-            result = project.session.get_workarea_info(path)
-            if(result == None):
-                fileutils.rmtree(path)
-                return result
-            return result['project']
-        except ccm.CCMException:
-            # Delete the project dir if found
-            if os.path.exists(os.path.dirname(path)):
-                fileutils.rmtree(os.path.dirname(path))
-            return None
-
-    def __setRole(self, session):
-        """ Updating the role of a session. """
-        self.__role = session.role
-        if self._config.has_key('purpose'):
-            co_role = ccm.get_role_for_purpose(session, self._config['purpose'])
-            _logger.info("Switching user to role: %s" % co_role)
-            session.role = co_role
-            _logger.info("Switched user to role: %s" % session._get_role())
-
-    
-    def __restoreRole(self, session):
-        """ Restoring to default user role. """
-        if self.__role:
-            _logger.info("Switching user to role: %s" % self.__role)
-
-            session.role = self.__role
-            self.__role = None
-            _logger.info("Switched user to role: %s" % session._get_role())
-
-            
-    def __setup_project(self, project, coproject):
-        """ Private method. """
-        session = self.get_session()
-        self.__setRole(session)
-        
-        newprojs = []
-        if not self._config.get_boolean('use.reconfigure.template', False):
-            _logger.info("Validating release")
-            self.__set_release(coproject)
-            _logger.info("Setting update properties to manual")
-            coproject.set_update_method('manual', True)
-            _logger.info("Setting the baseline to '%s'" % project)
-            coproject.set_baseline(project, True)
-            self.__set_subbaselines(coproject)
-            _logger.info("Cleaning up update properties")
-            self._clean_update_properties(coproject)
-            _logger.info("Setting update properties.")
-            self._set_tasks_and_folders(coproject)
-            _logger.info("Applying update properties.")
-            coproject.apply_update_properties(baseline=False)
-        else:
-            _logger.info("Validating release")
-            self.__set_release(coproject)
-                        
-        replace_subprojects = True
-        if not self._config.get_boolean('replace.subprojects', True):
-            _logger.info("NOT replacing subprojects")
-            replace_subprojects = False
-        update_keepgoing = True
-        if self._config.get_boolean('update.failonerror', False):
-            _logger.info("The build will fail with update errors")
-            update_keepgoing = False
-        _logger.info("Updating...")
-        result = coproject.update(True, replace_subprojects, update_keepgoing, result=ccm.UpdateResultSimple(coproject.session))
-        
-        if self._config.get_boolean('fix.missing.baselines', False) and replace_subprojects:
-            newprojs = self.__fix_baseline(coproject)
-            if len(newprojs) > 0:
-                result = coproject.update(True, replace_subprojects, update_keepgoing, result=ccm.UpdateResultSimple(coproject.session))
-                ccm.log_result(result, ccm.UPDATE_LOG_RULES, _logger)
-                _logger.info("Detected additional projects into baseline - Maintaining the whole toplevel project again...")
-                coproject.work_area(True, True)
-            else:
-                ccm.log_result(result, ccm.UPDATE_LOG_RULES, _logger)
-        else:
-            ccm.log_result(result, ccm.UPDATE_LOG_RULES, _logger)
-
-        # Running sync
-        self._sync(coproject)
-
-        # Running check conflicts
-        self._check_conflicts(coproject)
-        
-        self.__restoreRole(session)
-
-    def _sync(self, coproject):
-        """ Run the sync if the 'sync' property is defined to true in the 
-            configuration
-        """
-        if self._config.get_boolean('sync', False):
-            _logger.info("Synchronizing...")
-            result = coproject.sync(True, True)
-            ccm.log_result(result, ccm.SYNC_LOG_RULES, _logger)
-
-
-    def __set_release(self, project):
-        """ Update the release of the project hierarchy if required. """
-        release = project.session.create(self._config['release'])
-        _logger.info("Current release: '%s'" % project.release)
-        _logger.info("Configuration release: '%s'" % release)
-        if project.release != release:
-            _logger.info("Updating release on the project hierarchy.")
-            for subp in [project] + project.subprojects:
-                subp.release = release
-        
-    def __fix_baseline(self, coproject):
-        """ Check for project in a different status, then check them out. """
-        newprojs = []
-        _logger.info("Looking for new projects in the check out.")
-        status = coproject['status']
-        for subproj in coproject.subprojects:
-            if subproj['status'] == status:
-                continue           
-            _logger.info("New project detected in the checkout '%s'" % subproj.objectname)
-            purpose = None
-            if self._config.has_key('purpose'):
-                purpose = self._config['purpose']
-                _logger.info("Using purpose: '%s'" % purpose)
-                
-            version = None
-            if self._config.has_key('version'):
-                version = self._config['version']
-                _logger.info("Using version: '%s'" % version)
-
-            result = subproj.checkout(subproj.session.create(self._config['release']), version=version, purpose=purpose, subprojects=False)
-            _logger.info('Checkout complete')
-            if result.project != None and result.project.exists():
-                newcop = result.project
-                newprojs.append(newcop)
-                
-                _logger.info("Setting is_relative to true")                    
-                if "is_relative" in newcop.keys():
-                    newcop["is_relative"] = "TRUE"
-                else:
-                    newcop.create_attribute("is_relative", "boolean", "TRUE")
-                
-                if not self._config.get_boolean('use.reconfigure.template', False):
-                    newcop.set_update_method('manual', False)
-                    
-                    _logger.info("Setting the baseline to '%s'" % subproj)
-                    newcop.set_baseline(subproj, True)
-                                            
-                    _logger.info("Cleaning up update properties")
-                    self._clean_update_properties(newcop)
-                    
-                    _logger.info("Setting update properties.")
-                    self._set_tasks_and_folders(newcop)
-        return newprojs        
-
-    def _check_conflicts(self, coproject):
-        """ Private method. """
-        conflictsobjects = self._config.get_boolean('show.conflicts.objects', False)
-        
-        if self._config.get_boolean('show.conflicts', False) or conflictsobjects:
-            result = coproject.conflicts(True, not conflictsobjects)
-            ccm.log_result(result, ccm.CONFLICTS_LOG_RULES, _logger)
-#        for project in result.keys():
-#            for error in result[project]:
-#                if 'object' in error:
-#                    _logger.info("CONFLICTS: %s" % error['comment'])
-#                else:
-#                    _logger.info("CONFLICTS: %s" % error['comment'])
-        
-    @staticmethod
-    def _clean_update_properties(project):
-        """ Private method. """
-        for task in project.tasks:
-            project.remove_task(task)        
-        for folder in project.folders:
-            project.remove_folder(folder)
-
-    @staticmethod
-    def __find_subproject(subprojects, project):
-        """ Private method. """
-        for subproj in subprojects:
-            if subproj.is_same_family(project):
-                return subproj
-        raise Exception("Error could not identify check out project for '%s'" % project)
-    
-    def __set_subbaselines(self, project):
-        """ Private method. """
-        if len(self.__get_subbaselines()) > 0:
-            subprojects = project.subprojects
-            for subbaseline in self.__get_subbaselines():
-                subbaseline = project.session.create(subbaseline)
-                subproj = self.__find_subproject(subprojects, subbaseline)
-                _logger.info("Setting subproject '%s' baseline to '%s'" % (subproj, subbaseline))
-                subproj.set_baseline(subbaseline, True)
-    
-    def __get_array(self, key):
-        """ Private method. """
-        result = []
-        if (self._config.has_key(key)):
-            if isinstance(self._config[key], type([])):                
-                for value in self._config[key]:
-                    value = value.strip()
-                    if len(value) > 0:
-                        result.append(value) 
-            else:
-                value = self._config[key].strip()
-                if len(value) > 0:
-                    result.append(value)
-        return result
-
-    def __get_subbaselines(self):
-        """ Private method. """
-        return self.__get_array('subbaselines')
-    
-    def __get_tasks(self):
-        """ Private method. """
-        return self.__get_array('tasks')
-
-    def __get_folders(self):
-        """ Private method. """
-        return self.__get_array('folders')
-    
-    def _set_tasks_and_folders(self, project):
-        """ Private method. """
-        for task in self.__get_tasks():
-            _logger.info("Adding task %s" % task)
-            project.add_task(project.session.create("Task %s" % task))
-        for folder in self.__get_folders():
-            _logger.info("Adding folder %s" % folder)
-            project.add_folder(project.session.create("Folder %s" % folder))
-
-class PreparationUpdate(PreparationCheckout):
-    """ Synergy project updater. """
-    
-    def __init__(self, config, builder):
-        """ Initialization. """
-        PreparationCheckout.__init__(self, config, builder)
-
-    def check(self):
-        """ Checks if all synergy resources are available. """
-        PreparationAction.check(self)
-
-        session = self.get_session()
-        ccm_object = session.create(self._config.name)
-        role = session.role
-        co_role = ccm.get_role_for_status(session, ccm_object['status'])
-        _logger.info("Try to switch user to role: %s" % co_role)
-        session.role = co_role
-        session.role = role
-
-    def execute(self):
-        """ Updating the mentioned project. """
-
-        session = self.get_session()
-        ccmproject = session.create(self._config.name)
-        role = session.role
-
-        status = ccmproject['status']
-        co_role = ccm.get_role_for_status(session, status)
-        session.role = co_role
-
-        if not self._config.get_boolean('use.reconfigure.template', False):
-            _logger.info("Setting update properties to manual")
-            ccmproject.set_update_method('manual', True)
-            _logger.info("Cleaning up update properties")
-            self._clean_update_properties(ccmproject)
-            _logger.info("Setting update properties.")
-            self._set_tasks_and_folders(ccmproject)
-            _logger.info("Applying update properties.")
-            ccmproject.apply_update_properties(baseline=False)
-        replace_subprojects = True
-        if not self._config.get_boolean('replace.subprojects', True):
-            _logger.info("NOT replacing subprojects")
-            replace_subprojects = False
-        update_keepgoing = True
-        if self._config.get_boolean('update.failonerror', False):
-            _logger.info("The build will fail with update errors")
-            update_keepgoing = False
-
-        _logger.info("Updating %s..." % ccmproject.objectname)
-        result = ccmproject.update(True, replace_subprojects, update_keepgoing, result=ccm.UpdateResultSimple(ccmproject.session))
-        ccm.log_result(result, ccm.UPDATE_LOG_RULES, _logger)
-        
-        self._sync(ccmproject)
-        
-        self._check_conflicts(ccmproject)
-        
-        session.role = role
-
-class PreparationBuilder(object):
-    """ Creates an updated work area from a configuration. """
-    def __init__(self, configs, username = None, password = None, cache=None):
-        """ Initialization. """
-        self._configs = configs
-        self._sessions = {}
-        self._actions = []
-        self.__username = username
-        self.__password = password
-        self.__provider = ccm.extra.CachedSessionProvider(cache=cache)
-        for config in self._configs:
-            if config.type == "snapshot":
-                self._actions.append(PreparationSnapshot(config, self))
-            elif config.type == "checkout":
-                self._actions.append(PreparationCheckout(config, self))        
-            elif config.type == "update":
-                self._actions.append(PreparationUpdate(config, self))
-        
-    def check(self):
-        """ Check that all dependencies are there. """
-        for action in self._actions:
-            action.check()
-    
-    def get_content(self):
-        """ Run the each action. """
-        for action in self._actions:
-            action.execute()
-
-    def session(self, database, size=1, engine=None, dbpath=None):
-        """ Handles pool rather that sessions. """
-        assert size > 0, "The pool must contains at least one session!"
-        if self.__provider is None:
-            raise Exception("The builder has been closed.") 
-        if not self._sessions.has_key(database):
-            _logger.info("Get a session for %s" % database)
-            session = ccm.SessionPool(self.__username, self.__password, engine, dbpath, database, size, opener=self.__provider.get)
-            self._sessions[database] = session
-            # be developer by default
-            session.role = "developer"
-        session = self._sessions[database]
-        if session.size < size:
-            _logger.info("Resizing the pool for database %s to %d" % (database, size))
-            session.size = size
-            # be developer by default
-            session.role = "developer"
-        return session
-    
-    def close(self):
-        """ This is the preparation cleanup method.
-            It closes all opened sessions.
-        """
-        _logger.debug("Closing sessions...")
-        dbs = self._sessions.keys()
-        while len(dbs) > 0:
-            session = self._sessions.pop(dbs.pop())
-            session.close()
-        if self.__provider is not None:
-            self.__provider.close()
-            self.__provider = None
-        
-    
-    def __del__(self):
-        self.close()
-            
-        
-
--- a/buildframework/helium/tools/common/python/lib/rom.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,353 +0,0 @@
-#============================================================================ 
-#Name        : rom.py 
-#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:
-#===============================================================================
-
-""" This modules implements rombuilders.
-"""
-import logging
-import os
-import sys
-import shutil
-import types
-from version import Version
-import re
-import escapeddict
-import imaker
-
-# Uncomment this line to enable logging in this module, or configure logging elsewhere
-#logging.basicConfig(level=logging.DEBUG)
-logger = logging.getLogger("rom")
-
-
-def get_abstract_parents(config):
-    """ Create from a config element a list of parent
-        that are abstract (not buildable).
-    """
-    result = []
-    while (config.parent != None):
-        if config.parent.abstract != None:
-            result.append(config.parent)
-        config = config.parent
-    return result
-
-def read_file_content(filename):
-    """ Read the whole file content.
-    """
-    ftr = open(filename, "r")
-    content = ftr.read()
-    ftr.close()
-    return content
-
-def escape_string(string, config):
-    """ Escape a string recursively.
-    """
-    #data = escapeddict.EscapedDict(config)
-    #string = re.sub(r'\${(?P<name>[._a-zA-Z0-9]+)}', r'%(\g<name>)s', string)
-    #return string % data
-    return config.interpolate(string)
-
-def get_makefile_target(text):
-    """ Retrieve the target name of a step
-    """
-    result = re.search(r"^(?P<target>.+?)\s*:", text, re.M)
-    if (result != None):
-        return result.groupdict()['target']
-    raise Exception("Could'nt determine target name")
-
-def remove_duplicates(array):
-    """ Remove dusplicates values from an array. """
-    elements = {}
-    for element in array: elements[element] = element
-    return elements.keys()
-
-def get_product_path_bsf(product):
-    """ Get product path using the BSF. """
-    import bsf
-    # read product hierarchy
-    bsfs = bsf.read_all()
-    return bsfs[product].get_path()
-    
-def get_product_path_var(product):
-    """ Get product path using the new tool. """
-    return imaker.get_product_dir(product)
-
-class IMakerRomBuilder:
-    """ Configuration Builder for iMaker tool.
-        This tool generate a makefile.
-    """
-    
-    def __init__(self, config, product, usevar=False):
-        self._config = config
-        self._product = product
-
-    def process_my_traces(self, config):
-        """ Generates a mytraces.txt file under \epoc32 based on the <mytraces/>
-            XML sub-elements defined for the image.
-        """
-        sys.stdout.flush()
-        if config.has_key('mytraces.binaries') and len(str(config['mytraces.binaries'])) > 0:
-            mytracestxt = escape_string(config['mytraces.file'], config)
-            logger.debug("Writing %s file" % mytracestxt)
-            binaries = config['mytraces.binaries']
-            traces_file = open(mytracestxt, 'w')
-            for binary in binaries:
-                traces_file.write(str(binary) + "\n")
-            traces_file.close()
-
-    def build(self):
-        """ Generate the makefile from xml configuration.
-            That method should be splitted....it's to long!!!
-        """
-        configs = self._config.getConfigurations(self._product)
-        if (len(configs) > 0):
-            
-            # creating additional targets
-            targets = {}
-            
-            master_filename = configs[0]['main.makefile.template']
-            
-            outputfilename = os.path.basename(master_filename)
-            if configs[0].has_key('output.makefile.filename'):
-                outputfilename = configs[0]['output.makefile.filename']
-            
-            filename = "%s/%s" % (get_product_path_var(self._product), outputfilename)
-            output = open(filename, "w+")
-            output.write("# DO NOT EDIT - FILE AUTOMATICALLY GENERATED\n")
-            output.write("# HELIUM variant configuration tool (C) Nokia - 2007\n\n")
-            mkdefine = '__' + re.sub(r'[^\w]', '_', os.path.basename(outputfilename)).upper() + '__'
-            output.write("ifndef %s\n" % mkdefine)
-            output.write("%s := 1\n\n" % mkdefine)
-            master_template = read_file_content(master_filename)
-            output.write(configs[0].interpolate(master_template) + "\n")
-                        
-            for config in configs:
-                # generating traces
-                #self.process_my_traces(config)
-                                                 
-                
-                if config.type == None:
-                    raise Exception("Type not defined for configuration '%s'" % config.name)
-                
-                # generate makefile targets from templates
-                if config.has_key("%s.makefile.template" % config.type):
-                    template = read_file_content(config["%s.makefile.template" % config.type])
-                    image_types = config['image.type']
-                    if not isinstance(config['image.type'], types.ListType):
-                        image_types = [config['image.type']]
-                    for romtype in image_types:
-                        config['image.type'] = romtype
-                        out = config.interpolate(str(template))
-                        output.write(out+"\n")
-                        subtargets = [get_makefile_target(out)]
-                        for parent in get_abstract_parents(config):
-                            if not targets.has_key(parent.name):
-                                targets[parent.name] = {}
-                                targets[parent.name]['parent'] = parent
-                                targets[parent.name]['subtargets'] = []
-                            targets[parent.name]['subtargets'].extend(subtargets)
-                            targets[parent.name]['subtargets'] = remove_duplicates(targets[parent.name]['subtargets'])
-                            subtargets = [parent.name]
-                    config['image.type'] = image_types
-                else:
-                    # Do not raise error anymore when template is not found. 
-                    print "WARNING: Could not find template for %s (%s)" % (config.name,"%s.makefile.template" % config.type)
-                    #raise Exception("Could not find template for %s (%s)" % (config.name,"%s.makefile.template" % config.type))
-               
-                    
-            output.write("###############################################################################\n")
-            output.write("# Generated group target\n")
-            output.write("###############################################################################\n\n")
-            for target in targets.keys():
-                if targets[target]['parent']['build.parallel'] == 'true':
-                    output.write("%s: %s\n\n" % (target, " ".join(targets[target]['subtargets'])))
-                    output.write("%s-dryrun:\n" % target)
-                    output.write("\t@$(CALL_TARGET) -n %s\n\n" % target)
-                else:
-                    output.write("%s-dryrun:\n" % target)
-                    for subtarget in targets[target]['subtargets']:
-                        output.write("\t@$(CALL_TARGET) -n %s\n" % subtarget)
-                    output.write("\n")
-                    output.write("%s:\n" % target)
-                    output.write("\t@echo === %s started\n" % target)
-                    for subtarget in targets[target]['subtargets']:
-                        output.write("\t$(CALL_TARGET) %s\n" % subtarget)
-                    output.write("\t@echo === %s finished\n" % target)
-                    output.write("\n")
-            output.write("\nendif # %s\n" % mkdefine)
-            output.close()
-            print "File %s has been generated." % filename
-        else:
-            raise Exception("Could not find configuration: '%s'" % self._product)
-
-
-class RomBuilder:
-    """ Builder that create roms using makefpsx.
-    """
-    def __init__(self, configs):
-        self.configs = configs
-
-    def build(self):
-        """ Go throught the config and build each roms.
-        """
-        for config in self.configs:
-            for k in sorted(config.keys()):
-                value = config[k]
-                if isinstance(value, types.UnicodeType):
-                    value = value.encode('ascii', 'ignore')
-                print k + ': ' + str(value)
-            image = Image(config)
-            image.build()
-            print '======================================'
-            print
-
-class Image:
-    """ An Image object represents a ROM image, or .fpsx file.
-    """
-
-    def __init__(self, config):
-        """ Initialise the Image object.
-        """
-        self.config = config
-
-    def build(self):
-        """ Main method that handles the whole sequence of building the rom and
-            moving all related files to the correct location.
-        """
-        self._create_destination()
-        self._process_cmt()
-        self._write_version()
-        self._process_my_traces()
-        self._callrommake()
-        self._clean_mytraces()
-        self._move_image_files()
-        print
-
-    def _create_destination(self):
-        """ Creates the destination directory of the ROM files if it does not exist.
-        """
-        dest = self.config['rom.output.dir']
-        if not os.path.exists( dest ):
-            os.makedirs( dest )
-
-    def _process_cmt(self):
-        """ Copies the CMT image under \epoc32 and to the destination directory of
-            the ROM image, if the image will include the CMT.
-        """
-        # Check if a CMT is needed
-        if self.config['image.nocmt'] != 'true':
-            dest = self.config['rom.output.dir']
-            logger.debug("Copying " + self.config['cmt'] + " to " + dest)
-            shutil.copy( self.config['cmt'], dest )
-            logger.debug("Copying " + self.config['cmt'] + " to " + self.config['rommake.cmt.path'])
-            shutil.copy( self.config['cmt'], self.config['rommake.cmt.path'] )
-
-    def _write_version(self):
-        """ Generates the version text files that define the version of the ROM image.
-            These are in UTF16 little endian (Symbian) format.
-        """
-        Version('sw', self.config).write()
-        Version('langsw', self.config).write()
-        Version('model', self.config).write()
-
-    def _process_my_traces(self):
-        """ Generates a mytraces.txt file under \epoc32 based on the <mytraces/>
-            XML sub-elements defined for the image.
-        """
-        sys.stdout.flush()
-        if self.config.has_key('mytraces.binaries'):
-            logger.debug("Writing mytraces.txt file")
-            binaries = self.config['mytraces.binaries']
-            traces_file = open( str(self.config['rommake.mytraces.file']), 'w' )
-            for binary in binaries:
-                traces_file.write( str(binary) + "\n" )
-            traces_file.close()
-        else:
-            self._clean_mytraces()
-
-    def _callrommake(self):
-        """ Calls the make_fpsx.cmd to build a ROM image.
-        """
-        logger.debug("Building rom image: " + str(self))
-        sys.stdout.flush()
-
-        args = [str(self.config['rommake.command']),
-                '-hid',
-                str(self.config['rommake.hwid']),
-                '-p',
-                str(self.config['rommake.product.name']),
-                '-iby',
-                str(self.config['image.iby']),
-                '-type',
-                str(self.config['image.type']),
-                '-traces',
-                '-verbose',
-                '-target',
-                self.config['rom.output.dir'],
-                '-o' + str(self)]
-        if 'rommake.args' in self.config:
-            extra_args = str(self.config['rommake.args']).split( ' ' )
-            args += extra_args
-        logger.debug("with args: " + str(args))
-        os.chdir(os.path.dirname(str(self.config['rommake.command'])))
-        os.spawnv(os.P_WAIT, str(self.config['rommake.command']), args)
-
-    def _clean_mytraces(self):
-        logger.debug("Removing mytraces.txt file")
-        if os.path.exists( str( self.config['rommake.mytraces.file'] ) ):
-            os.remove( str( self.config['rommake.mytraces.file'] ) )
-    
-    def _move_image_files(self):
-        os.chdir( self.config['rom.output.dir'] )
-        if not( os.path.isdir('temp') ):
-            os.mkdir( 'temp' )
-        if not( os.path.isdir('logs') ):
-            os.mkdir( 'logs' )
-        if not( os.path.isdir('obys') ):
-            os.mkdir( 'obys' )
-        
-        for element in os.listdir('.'):
-            if( os.path.isfile(element) ):
-                if( element.endswith('.img') or element.endswith('.bin') or element.endswith('.bb5') ):
-                    shutil.move( element, 'temp' )
-                if( element.endswith('.log') or element.endswith('.dir') or element.endswith('.symbol') ):
-                    shutil.move( element, 'logs' )
-                if( element.endswith('.oby') ):
-                    shutil.move( element, 'obys' )
-
-                
-    # Returns the name of this ROM image
-    def __str__(self):
-        """ Returns the filename of the image file once copied to the
-            \*_flash_images directory.
-        """
-        # Get the unique build ID for these ROM image names
-        name = str(self.config['rom.id']) + '_' + self.config['image.type']
-
-        # Add a flag if the ROM is textshell
-        if self.config['image.ui'] == 'text':
-            name += "_text"
-
-        # Add a flag if the image does not a CMT
-        if self.config['image.nocmt'] == 'true':
-            name += "_nocmt"
-
-        # Add any differentiating name extension if present3
-        if self.config['image.name.extension'] != '':
-            name += '_' + self.config['image.name.extension']
-
-        return name
--- a/buildframework/helium/tools/common/python/lib/rtfutils.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,172 +0,0 @@
-#============================================================================ 
-#Name        : rtfutils.py 
-#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:
-#===============================================================================
-
-import csv
-import os
-import PyRTF
-import StringIO
-import re
-import logging
-
-class RTFUtils(object):
-  
-    def __init__(self, template):
-        """ template would be a RTF file to modify """
-        self.template = template
-        
-        self.logger = logging.getLogger('test.relnotes')
-        logging.basicConfig(level=logging.DEBUG)
-        
-    def rtftable(self, errorsfilename, outputfilename, tagtoreplace):
-        """ Create a .rtf file from the errors.csv file. """
-        
-        errors = file(errorsfilename, 'rb')
-        template = file(self.template, 'rb' )
-        output = file(outputfilename, 'w' )
-        
-        self._rtftable(errors, output, tagtoreplace, template)
-        
-        errors.close()
-        output.close()
-        template.close()
-        
-    def _rtftable(self, errors, output, tagtoreplace, template):
-        PyRTF.Elements.StandardColours.append(PyRTF.PropertySets.Colour('NokiaBlue', 153, 204, 255))    
-       
-        DR = PyRTF.Renderer()
-        doc     = PyRTF.Document()
-        ss      = doc.StyleSheet
-        section = PyRTF.Section()
-        doc.Sections.append( section )
-    
-        table = PyRTF.Table( PyRTF.TabPS.DEFAULT_WIDTH * 7,
-                             PyRTF.TabPS.DEFAULT_WIDTH * 3,
-                             PyRTF.TabPS.DEFAULT_WIDTH * 3 )
-                       
-        reader = csv.reader(errors)
-        
-        style = None    
-        for row in reader:
-            assert len(row) == 3
-            
-            if style == None:
-                style = ss.ParagraphStyles.Heading2
-            else:
-                style = ss.ParagraphStyles.Normal
-            
-            # Handle each value from the row
-            rowcell = []
-            
-            for value in row:           
-                cell = PyRTF.Text( value )
-                rowcell.append(PyRTF.Cell( PyRTF.Paragraph(style, cell) ))
-            table.AddRow( *rowcell )
-    
-        section.append( table )
-        string = StringIO.StringIO()
-        DR.Write( doc, string )
-                
-        keep = ''
-        for line in string.getvalue().splitlines():
-            if keep != '' or line.startswith('{\\trowd'):
-                keep += line
-                    
-        #remove last '}'
-        keep = keep[0:-1]
-        
-        for line in template:
-            line = line.replace(tagtoreplace, keep)
-            output.write(line)
-    
-    def rtfimage(self, image, outputfilename, tagtoreplace):
-        """ Replaces tagtoreplace in a RTF file with a image """
-        
-        template = file(self.template, 'rb' )
-        output = file(outputfilename, 'w' )
-        
-        self._rtfimage(image, output, tagtoreplace, template)
-        
-        output.close()
-        template.close()
-    
-    def _rtfimage(self, image, output, tagtoreplace, template):
-        TEMP_FILE = 'image_temp.rtf'
-        
-        DR = PyRTF.Renderer()
-        doc = PyRTF.Document()
-        ss = doc.StyleSheet
-        section = PyRTF.Section()
-        doc.Sections.append( section )
-    
-        section.append( PyRTF.Image( image ) )    
-        
-        tempOutput = file( TEMP_FILE, 'w' )
-        DR.Write( doc, tempOutput )
-        
-        tempOutput = file( TEMP_FILE, 'rb' )
-        
-        keep = ''
-        for line in tempOutput:
-            if keep != '':
-                keep += line
-            elif line.startswith('{\pict'):
-                keep = line
-        
-        #remove last '}'
-        keep = keep[0:-1]
-        
-        tempOutput.close()
-        
-        for line in template:
-            line = line.replace(tagtoreplace, keep)
-            output.write(line)
-        
-        os.remove(TEMP_FILE)
-        
-    def rtfconvert(self, inputfilename, outputfilename):
-        """ Converts a property file to be RTF link syntax """
-        inputfile = file( inputfilename, 'r' )
-        outputfile = file( outputfilename, 'w' )
-        
-        self._rtfconvert(inputfile, outputfile)
-        
-        inputfile.close()
-        outputfile.close()
-        
-    def _rtfconvert(self, inputfile, outputfile):
-        p = re.compile(r'(.+=)((\\\\|http|\.\\|ftp)(.+))')
-        for line in inputfile:
-            newline = line
-            
-            #fix bad links generated in ant
-            if newline.count('\\\\')>0:
-                newline = newline.replace('//','\\')
-                newline = newline.replace('/','\\')
-                
-            if "\\n" in newline:
-                newline = newline.replace("\\n", " \\\\line ")
-            else:
-                newline = newline.replace('\\','\\\\\\\\\\\\\\\\')
-                
-            
-            newline = p.sub('\g<1>{_backslash_field{_backslash_*_backslash_fldinst HYPERLINK \g<2>}}', newline)
-            
-            newline = newline.replace('_backslash_', r'\\')
-            
-            outputfile.write(newline)
--- a/buildframework/helium/tools/common/python/lib/sis.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,113 +0,0 @@
-#============================================================================ 
-#Name        : sis.py 
-#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:
-#===============================================================================
-
-import os
-
-import configuration
-import buildtools
-
-
-class SisPreBuilder(buildtools.PreBuilder):
-    """ Generates a set of build commands for processing a SIS/X build
-    configuration file. """
-    def __init__(self, config_set, config_name=None):
-        """ Initialisation. """
-        buildtools.PreBuilder.__init__(self, config_set)
-        self._config_name = config_name
-
-    def write(self, buildFilePath):
-        """ Generate the build file that will run the actual commands. """
-        sisConfigs = self.configSet.getConfigurations(self._config_name)
-        commandList = buildtools.CommandList()
-        for config in sisConfigs:
-            if 'input' in config:
-                SisPreBuilder._write_v2(config, commandList)
-            else:
-                SisPreBuilder._write_v1(config, commandList)
-                
-        self.writeBuildFile(commandList, buildFilePath)
-                
-    @staticmethod
-    def _write_v1(config, commandList):
-        """ v1 config that uses name and path properties. """
-        sis_filename = config['name'] + '.sis'
-        if config.get('sis.name', None) != None:
-            sis_filename = config['sis.name'] + '.sis'
-        makeSisArgs = ['-v', config['name'] + '.pkg', sis_filename]
-        makeSisCommand = buildtools.Command(config['makesis.tool'], config['path'], makeSisArgs)
-        commandList.addCommand(makeSisCommand)
-        
-        if config.get_boolean('publish.unsigned', False):
-            srcFile = os.path.join(config['path'], sis_filename)
-            todir = config['build.sisfiles.dir']
-            copyCommand = buildtools.Copy(srcFile, todir)
-            commandList.addCommand(copyCommand, newstage=True)
-
-        sisx_filename = sis_filename + 'x'
-        signSisArgs = ['-v', sis_filename, sisx_filename, config['cert'], config['key']]
-        signSisCommand = buildtools.Command(config['signsis.tool'], config['path'], signSisArgs)
-        commandList.addCommand(signSisCommand, newstage=True)
-
-        # Copy content to SIS files directory
-        srcFile = os.path.join(config['path'], sisx_filename)
-        todir = config['build.sisfiles.dir']
-        copyCommand = buildtools.Copy(srcFile, todir)
-        commandList.addCommand(copyCommand, newstage=True)
-
-    @staticmethod
-    def _write_v2(config, commandList):
-        """ v2 config that uses input and output properties. """ 
-        # Check for invalid old parameters
-        v1_properties = ['name', 'path', 'sis.name']
-        for property_ in v1_properties:
-            if property_ in config:
-                raise Exception("Invalid property %s if using new 'input' SIS configuration" % property_)
-        
-        input_ = config['input']
-        (input_path, input_name) = os.path.split(input_)
-        (input_root, input_ext) = os.path.splitext(input_)
-        valid_extensions = ['.pkg', '.sis', '.sisx']
-        if input_ext not in valid_extensions:
-            raise Exception('Invalid extension for SIS configuration.')
-        
-        # See if makesis needs to be run
-        if input_ext == '.pkg':
-            output = config.get('output', input_root + '.sis')
-            if output.endswith('.sisx'):
-                output = output[:-1]
-            # Set input for the next stage
-            makesis_args = ['-v', input_, output]
-            makesis_command = buildtools.Command(config['makesis.tool'], input_path, makesis_args)
-            commandList.addCommand(makesis_command)
-            input_ = output
-            
-        # See if signsis needs to be run
-        if 'key' in config:
-            output = config.get('output', input_root + '.sisx')
-            signsis_args = ['-v', input_, output, config['cert'], config['key']]
-            signsis_command = buildtools.Command(config['signsis.tool'], input_path, signsis_args)
-            commandList.addCommand(signsis_command, newstage=True)
-            
-        # Copy content to SIS files directory
-        copyCommand = buildtools.Copy(output, config['build.sisfiles.dir'])
-        commandList.addCommand(copyCommand, newstage=True)
-        
-
-
-
--- a/buildframework/helium/tools/common/python/lib/symbian/__init__.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +0,0 @@
-#============================================================================ 
-#Name        : __init__.py 
-#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:
-#===============================================================================
-
--- a/buildframework/helium/tools/common/python/lib/symbian/log.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,145 +0,0 @@
-#============================================================================ 
-#Name        : log.py 
-#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:
-#===============================================================================
-
-"""
-Library that support Symbiam log parsing:
-
-===-------------------------------------------------
-=== Stage=1
-===-------------------------------------------------
-=== Stage=1 started Fri Apr 18 21:09:55 2008
-=== Stage=1 == ncp_psw
--- xcopy *.*  \\ /F /R /Y /S
---- Client0 Executed ID 1
-++ Started at Fri Apr 18 21:09:55 2008
-+++ HiRes Start 1208542195.09307
-Chdir \\psw\\ncp_psw\\psw
-S:\\psw\\ncp_psw\\psw\\s60\\tools\\customizationtool\\ct.ini -> S:\\s60\\tools\\customizationtool\\ct.ini
-S:\\psw\\ncp_psw\\psw\\s60\\tools\\customizationtool\\xml_data\\NCPAudioEqualizer_settings.xml -> S:\\s60\\tools\\customizationtool\\xml_data\\NCPAudioEqualizer_settings.xml
-S:\\psw\\ncp_psw\\psw\\s60\\tools\\customizationtool\\xml_data\\NCPHWGeneral_settings.xml -> S:\\s60\\tools\\customizationtool\\xml_data\\NCPHWGeneral_settings.xml
-S:\\psw\\ncp_psw\\psw\\s60\\tools\\customizationtool\\xml_data\\NCPLight_settings.xml -> S:\\s60\\tools\\customizationtool\\xml_data\\NCPLight_settings.xml
-S:\\psw\\ncp_psw\\psw\\s60\\tools\\customizationtool\\xml_data\\NCPSysAp_settings.xml -> S:\\s60\\tools\\customizationtool\\xml_data\\NCPSysAp_settings.xml
-S:\\psw\\ncp_psw\\psw\\s60\\tools\\customizationtool\\xml_data\\VariantFeatures.xml -> S:\\s60\\tools\\customizationtool\\xml_data\\VariantFeatures.xml
-6 File(s) copied
-+++ HiRes End 1208542195.28056
-++ Finished at Fri Apr 18 21:09:55 2008
-=== Stage=1 finished Fri Apr 18 21:09:55 2008
-...
-"""
-import re
-import logging
-import StringIO
-
-# Uncomment this line to enable logging in this module, or configure logging elsewhere
-#logging.basicConfig(level=logging.DEBUG)
-_logger = logging.getLogger('symbian.log')
-
-class Parser(object):
-    """ Generic Symbian log parser. You just need to derive that class an override few methods
-     from the interface to implement your own functionnalities.
-    """
-    
-    def __init__(self, fileobject):
-        """ The constructor, it accepts a file object:
-            parser = Parser(open('output.log', 'r'))
-        """
-        self.__file = fileobject
-
-    def parse(self):
-        """ Function that run the parsing of the log.        
-        """
-        #=== Stage=1 started Fri Apr 18 21:09:55 2008
-        match_stage = re.compile(r"===\s+(?:Stage=)?(.+)\s+(started|finished)\s+(.+)")
-
-        # === Stage=1 == ncp_psw 
-        match_component_start = re.compile(r"===\s+(?:Stage=)?(.+?)\s+==\s+(.+)")
-        match_component_finished = re.compile(r"\+\+\s+Finished\s+at")        
-        # === Stage=1 == ncp_psw 
-        match_component_cmdline = re.compile(r"--\s+(.+)")
-        match_component_chdir = re.compile(r"Chdir\s+(.+)|cd\s+(.*?)\s+.*")
-        component_name =  None
-        cmdline =  None
-        chdir =  None
-        content = StringIO.StringIO()
-        
-        # parsing the content
-        for line in self.__file:
-            line = line.strip()
-            _logger.debug(line)
-            if component_name == None:
-                _logger.debug("Searching stage")            
-                m = match_stage.match(line)
-                _logger.debug(m)
-                if m != None:
-                    _logger.debug("Found stage %s, %s" % (m.group(2), m.group(3)))
-                    if m.group(2) == "started":
-                        self.start_stage(m.group(1), m.group(3))
-                    else:                        
-                        component_name = None  
-                        cmdline = None
-                        chdir = None
-                        content = StringIO.StringIO()
-                        self.end_stage(m.group(1), m.group(3))
-                else:
-                    _logger.debug("Searching for component")
-                    m = match_component_start.match(line)
-                    if  m != None:
-                        _logger.debug("Found component: %s" % m.group(2))
-                        component_name = m.group(2)
-            else:
-                _logger.debug("Searching for component end")
-                m = match_component_finished.match(line)
-                if m != None:
-                    self.task(component_name, cmdline, chdir, content.getvalue())
-                    component_name = None  
-                    cmdline = None
-                    chdir = None
-                    content = StringIO.StringIO()                
-                if cmdline == None:
-                    _logger.debug("Searching for component command line")
-                    m = match_component_cmdline.match(line)
-                    if m != None:
-                        _logger.debug("Found command line: %s" % m.group(1))
-                        cmdline = m.group(1)
-                else:
-                    _logger.debug("Searching for component dir")
-                    if chdir == None:
-                        m = match_component_chdir.match(line)
-                        if m != None:
-                            chdir = m.group(1)
-                            if chdir == None:
-                                chdir = m.group(2)
-                            _logger.debug("Found dir: %s" % chdir)
-                            continue
-                    if not line.startswith("++ ") and not line.startswith("+++ "):                            
-                        _logger.debug("Adding content")
-                        content.write(line + "\n")
-                
-    def start_stage(self, name, date):
-        """ Method to override to catch the start stage event. """
-        pass
-    
-    def end_stage(self, name, date):
-        """ Method to override to catch the end stage event. """
-        pass
-    
-    def task(self, name, cmdline, dir, output):
-        """ Method to override to catch the task event. """
-        pass
-    
--- a/buildframework/helium/tools/common/python/lib/symrec.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,542 +0,0 @@
-#============================================================================ 
-#Name        : symrec.py 
-#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:
-#===============================================================================
-
-""" SYMREC metadata file generation. """
-import xml.dom.minidom
-import codecs
-import os
-import re
-import logging
-import fileutils
-import csv
-
-LOGGER = logging.getLogger("symrec")
-logging.basicConfig(level=logging.INFO)
-
-def _cleanup_list(input):
-    result = []
-    for chars in input:
-        if chars is not None and chars.strip() != "":
-            result.append(chars)
-    return result
-
-def xml_setattr(node, attr, value):
-    """ Create the attribute if needed. """
-    node.setAttribute(attr, value)
-
-def is_child_text_only(node):
-    """ Returns true if child node are all from TEXT_NODE type. """
-    for child in node.childNodes:
-        if child.nodeType != xml.dom.minidom.Node.TEXT_NODE:
-            return False
-    return True
-
-
-def ignore_whitespace_writexml(self, writer, indent="", addindent="", newl=""):
-    """ This version of writexml will ignore whitespace text to alway render
-    the output in a structure way.
-    indent = current indentation
-    addindent = indentation to add to higher levels
-    newl = newline string
-    """
-    writer.write(indent + "<" + self.tagName)
-
-    attrs = self._get_attributes()
-    a_names = attrs.keys()
-    a_names.sort()
-
-    for a_name in a_names:
-        writer.write(" %s=\"" % a_name)
-        xml.dom.minidom._write_data(writer, attrs[a_name].value)
-        writer.write("\"")
-    if self.childNodes:
-        writer.write(">")
-        if is_child_text_only(self):
-            for node in self.childNodes:
-                node.writexml(writer, '', '', '')
-            writer.write("</%s>%s" % (self.tagName, newl))
-        else:
-            writer.write(newl)
-            for node in self.childNodes:
-                if node.nodeType == xml.dom.minidom.Node.TEXT_NODE and node.data.isspace():
-                    pass
-                else:
-                    node.writexml(writer, indent + addindent, addindent, newl)
-            writer.write("%s</%s>%s" % (indent, self.tagName, newl))
-    else:
-        writer.write("/>%s" % (newl))
-
-xml.dom.minidom.Element.writexml = ignore_whitespace_writexml
-
-
-class ServicePack(object):
-    
-    def __init__(self, node):
-        self.__xml = node
-    
-    @property
-    def name(self):
-        return self.__xml.getAttribute('name')
-    
-    @property
-    def files(self):
-        result = []
-        for filen in self.__xml.getElementsByTagName('file'):
-            result.append(filen.getAttribute('name'))
-        return result
-
-    @property
-    def instructions(self):
-        result = []
-        for instr in self.__xml.getElementsByTagName('instructions'):
-            result.append(instr.getAttribute('name'))
-        return result
-
-class ReleaseMetadata(object):
-    """ Create or read Metadata XML from SYMREC/SYMDEC. """
-    
-    def __init__(self, filename, service=None, product=None, release=None):
-        self._filename = filename
-        if filename and os.path.exists(filename):
-            self._xml = xml.dom.minidom.parse(open(filename, "r"))
-            releaseInformation = self._xml.getElementsByTagName(u"releaseInformation")
-            if releaseInformation != []:
-                self._releaseInformation = releaseInformation[0]
-            else:
-                self._releaseInformation = self._xml.createElement(u"releaseInformation")
-            releaseDetails = self._xml.getElementsByTagName(u'releaseDetails')
-            if releaseDetails != []:
-                self._releaseDetails = releaseDetails[0]
-            else:
-                self._releaseDetails = self._xml.createElement(u'releaseDetails')
-            releaseFiles = self._xml.getElementsByTagName(u'releaseFiles')
-            if releaseFiles != []:
-                self._releaseFiles = releaseFiles[0]
-            else:
-                self._releaseFiles = self._xml.createElement(u'releaseFiles')
-                
-            if service != None:
-                self.service = service
-            if product != None:
-                self.product = product
-            if release != None:
-                self.release = release
-        elif service!=None and product!=None and release!=None:
-            self._xml = xml.dom.minidom.Document()
-            self._releaseInformation = self._xml.createElement(u"releaseInformation")
-            self._xml.appendChild(self._releaseInformation)
-            self._releaseDetails = self._xml.createElement(u'releaseDetails')
-            self._releaseInformation.appendChild(self._releaseDetails)
-            releaseID = self._xml.createElement(u'releaseID')
-            self._releaseDetails.appendChild(releaseID)
-            
-            #           service
-            serv = self._xml.createElement(u'service')            
-            xml_setattr(serv, 'name', unicode(service))
-            releaseID.appendChild(serv)
-            #           product
-            prod = self._xml.createElement(u'product')
-            xml_setattr(prod, 'name', unicode(product))
-            releaseID.appendChild(prod)
-            #           release
-            rel = self._xml.createElement(u'release')
-            xml_setattr(rel, 'name', unicode(release))
-            releaseID.appendChild(rel)
-            
-            #    releaseFiles
-            self._releaseFiles = self._xml.createElement(u'releaseFiles')
-            self._releaseInformation.appendChild(self._releaseFiles)
-
-            #    releaseFiles
-            self._releaseInformation.appendChild(self._xml.createElement(u'externalFiles'))
-        else:
-            raise Exception("Error metadata file doesn't exists.")
-
-
-    def get_dependsof(self):
-        """ Return a ReleaseMetada object pointing to the dependency release. """
-        if self.dependsof_service != None and self.dependsof_product != None and self.dependsof_release != None:
-            filename = os.path.join(os.path.dirname(self._filename), "../../..",
-                                self.dependsof_service,
-                                self.dependsof_product,
-                                self.dependsof_release)
-            return ReleaseMetadata(find_latest_metadata(filename))
-        else:
-            return None
-
-
-    def set_dependsof(self, filename):
-        """ Setting the dependency release. """
-        metadata  = ReleaseMetadata(filename)
-        self.dependsof_service  = metadata.service
-        self.dependsof_product  = metadata.product
-        self.dependsof_release  = metadata.release
-
-    def add_package(self, name, type=None, default=True, filters=None, extract="single", md5checksum=None, size=None):
-        """ Adding a package to the metadata file. """
-        # check if update mode
-        package = None
-        
-        for pkg in self._xml.getElementsByTagName('package'):
-            if (pkg.getAttribute('name').lower() == os.path.basename(name).lower()):
-                package = pkg
-                break
-        
-        # if not found create new package.
-        if package is None:
-            package = self._xml.createElement(u'package')
-            self._releaseFiles.appendChild(package)
-            
-        xml_setattr(package, 'name', os.path.basename(name))
-        if type != None:
-            xml_setattr(package, 'type', type)
-        else:
-            xml_setattr(package, 'type', os.path.splitext(name)[1].lstrip('.'))
-        xml_setattr(package, 'default', str(default).lower())
-        xml_setattr(package, 'extract', extract)
-        if filters and len(filters)>0:
-            xml_setattr(package, 'filters', ','.join(filters))
-            xml_setattr(package, 's60filter', ','.join(filters))
-        else:
-            xml_setattr(package, 'filters', '')
-            xml_setattr(package, 's60filter', '')
-        if md5checksum != None:
-            xml_setattr(package, unicode("md5checksum"), unicode(md5checksum))
-        if size != None:
-            xml_setattr(package, unicode("size"), unicode(size))
-        
-
-    def keys(self):
-        keys = []
-        for pkg in self._releaseFiles.getElementsByTagName('package'):
-            keys.append(pkg.getAttribute('name'))
-        return keys
-
-    def __getitem__(self, key):
-        for pkg in self._releaseFiles.getElementsByTagName('package'):
-            if pkg.getAttribute('name').lower() == key.lower():
-                filters = []
-                s60filters = []
-                md5checksum = None
-                size = None
-                if pkg.hasAttribute(u'filters'):
-                    filters = _cleanup_list(pkg.getAttribute('filters').split(','))
-                if pkg.hasAttribute(u's60filter'):
-                    s60filters = _cleanup_list(pkg.getAttribute('s60filter').split(','))
-                if pkg.hasAttribute(u'md5checksum'):
-                    md5checksum = pkg.getAttribute('md5checksum')
-                if pkg.hasAttribute(u'size'):
-                    size = pkg.getAttribute('size')
-                return {'type': pkg.getAttribute('type'), 'extract': pkg.getAttribute('extract'), 'default': (pkg.getAttribute('default')=="true"), \
-                         'filters': filters, 's60filter': s60filters, 'md5checksum': md5checksum, 'size': size}
-        raise Exception("Key '%s' not found." % key)
-
-    def __setitem__(self, key, value):
-        self.add_package(key, value['type'], value['default'], value['filters'], value['extract'], value['md5checksum'], value['size'])
-
-    def set_releasedetails_info(self, name, value, details="releaseID"):
-        """ Generic function to set releaseid info. """
-        detailsnode = None
-        if self._releaseDetails.getElementsByTagName(details) == []:
-            detailsnode = self._xml.createElement(details)
-            self._releaseDetails.appendChild(detailsnode)
-        else:
-            detailsnode = self._releaseDetails.getElementsByTagName(details)[0]
-        namenode = None
-        if detailsnode.getElementsByTagName(name) == []:
-            namenode = self._xml.createElement(name)
-            namenode.setAttribute(u'name', unicode(value))
-            detailsnode.appendChild(namenode)
-        else:  
-            namenode = detailsnode.getElementsByTagName(name)[0]
-            namenode.setAttribute('name', value)
-
-    
-    def get_releasedetails_info(self, name, details="releaseID"):
-        """ Generic function to extract releaseid info. """
-        for group in self._releaseDetails.getElementsByTagName(details):
-            for i in group.getElementsByTagName(name):
-                return i.getAttribute('name')
-        return None
-
-    def getVariantPackage(self, variant_name):
-        for variant in self._xml.getElementsByTagName('variant'):
-            if variant.getAttribute('name').lower() == variant_name.lower():
-                for x in variant.getElementsByTagName('file'):
-                    return x.getAttribute('name')        
-
-    def xml(self):
-        """ Returning the XML as a string. """
-        return self._xml.toprettyxml()
-        
-    def save(self, filename = None):
-        """ Saving the XML into the provided filename. """
-        if filename == None:
-            filename = self._filename
-        file_object = codecs.open(os.path.join(filename), 'w', "utf_8")
-        file_object.write(self.xml())
-        file_object.close()
-
-    @property
-    def servicepacks(self):
-        """ Getting the service pack names. """
-        result = []
-        for sp in self._releaseInformation.getElementsByTagName('servicePack'):
-            result.append(ServicePack(sp))
-        return result
-
-    filename = property(lambda self:self._filename)
-    service = property(lambda self:self.get_releasedetails_info('service'), lambda self, value:self.set_releasedetails_info('service', value))
-    product = property(lambda self:self.get_releasedetails_info('product'), lambda self, value:self.set_releasedetails_info('product', value))
-    release = property(lambda self:self.get_releasedetails_info('release'), lambda self, value:self.set_releasedetails_info('release', value))
-    dependsof_service = property(lambda self:self.get_releasedetails_info('service', 'dependsOf'), lambda self, value:self.set_releasedetails_info('service', value, 'dependsOf'))
-    dependsof_product = property(lambda self:self.get_releasedetails_info('product', 'dependsOf'), lambda self, value:self.set_releasedetails_info('product', value, 'dependsOf'))
-    dependsof_release = property(lambda self:self.get_releasedetails_info('release', 'dependsOf'), lambda self, value:self.set_releasedetails_info('release', value, 'dependsOf'))
-    baseline_service = property(lambda self:self.get_releasedetails_info('service', 'previousBaseline'), lambda self, value:self.set_releasedetails_info('service', value, 'previousBaseline'))
-    baseline_product = property(lambda self:self.get_releasedetails_info('product', 'previousBaseline'), lambda self, value:self.set_releasedetails_info('product', value, 'previousBaseline'))
-    baseline_release = property(lambda self:self.get_releasedetails_info('release', 'previousBaseline'), lambda self, value:self.set_releasedetails_info('release', value, 'previousBaseline'))
-
-
-class MD5Updater(ReleaseMetadata):
-    """ Update Metadata XML already created from SYMREC/SYMDEC. """
-    def __init__(self, filename):
-        ReleaseMetadata.__init__(self, filename)
-        self._filepath = os.path.dirname(filename)
-                  
-    def update(self):
-        """ Update each existing package md5checksum and size attribute."""
-        for name in self.keys():
-            fullname = os.path.join(self._filepath, name)                
-            if os.path.exists(fullname):
-                result = self[name]
-                result['md5checksum'] = unicode(fileutils.getmd5(fullname))
-                result['size'] = unicode(os.path.getsize(fullname))
-                self[name] = result
-
-
-class ValidateReleaseMetadata(ReleaseMetadata):
-    """ This class validate if a metadata file is stored in the correct location and
-        if all deps exists.
-    """
-    def __init__(self, filename):
-        ReleaseMetadata.__init__(self, filename)
-        self.location = os.path.dirname(filename)
-    
-    def is_valid(self, checkmd5=True, checkPath=True):
-        """ Run the validation mechanism. """
-        status = os.path.join(os.path.dirname(self._filename), 'HYDRASTATUS.xml')
-        if os.path.exists(status):
-            hydraxml = xml.dom.minidom.parse(open(status, "r"))
-            for t in hydraxml.getElementsByTagName('state')[0].childNodes:
-                if t.nodeType == t.TEXT_NODE:
-                    if t.nodeValue != 'Ready':
-                        LOGGER.error("HYDRASTATUS.xml is not ready")
-                        return False
-        if checkPath:
-            if os.path.basename(self.location) != self.release:
-                LOGGER.error("Release doesn't match.")
-                return False
-            if os.path.basename(os.path.dirname(self.location)) != self.product:
-                LOGGER.error("Product doesn't match.")
-                return False
-            if os.path.basename(os.path.dirname(os.path.dirname(self.location))) != self.service:
-                LOGGER.error("Service doesn't match.")
-                return False
-        
-        for name in self.keys():
-            path = os.path.join(self.location, name)
-            if not os.path.exists(path):
-                LOGGER.error("%s doesn't exist." % path)
-                return False
-            try:
-                LOGGER.debug("Trying to open %s" % path)
-                content_file = open(path)
-                content_file.read(1)
-            except IOError:
-                LOGGER.error("%s is not available yet" % path)
-                return False
-                
-            if checkmd5 and self[name].has_key('md5checksum'):
-                if self[name]['md5checksum'] != None:
-                    if fileutils.getmd5(path).lower() != self[name]['md5checksum']:
-                        LOGGER.error("%s md5checksum missmatch." % path)
-                        return False
-
-        for sp in self.servicepacks:
-            for name in sp.files:
-                path = os.path.join(self.location, name)
-                if not os.path.exists(path):
-                    LOGGER.error("%s doesn't exist." % path)
-                    return False
-            for name in sp.instructions:
-                path = os.path.join(self.location, name)
-                if not os.path.exists(path):
-                    LOGGER.error("%s doesn't exist." % path)
-                    return False
-        
-        dependency = self.get_dependsof()
-        if dependency != None:
-            return ValidateReleaseMetadata(dependency.filename).is_valid(checkmd5)
-        return True
-
-class MetadataMerger(object):
-    """ Merge packages definition to the root metadata. """
-    
-    def __init__(self, metadata):
-        """ Construct a metadata merger providing root metadata filename. """ 
-        self._metadata = ReleaseMetadata(metadata)
-                
-    def merge(self, filename):
-        """ Merge the content of filename into the root metadata. """
-        metadata = ReleaseMetadata(filename)
-        for name in metadata.keys():
-            if name in self._metadata.keys():
-                LOGGER.warning('Package %s already declared, overriding previous definition!' % name)        
-            self._metadata[name] = metadata[name]
-
-    def xml(self):
-        """ Returning the XML as a string. """
-        return self._metadata.xml()
-
-    def save(self, filename = None):
-        """ Saving the XML into the provided filename. """
-        return self._metadata.save(filename)
- 
-class Metadata2TDD(ReleaseMetadata):
-
-    def __init__(self, filename, includes=None, excludes=None):
-        ReleaseMetadata.__init__(self, filename)
-        if includes is None:
-            includes = []
-        if excludes is None:
-            excludes = []
-        self.location = os.path.dirname(filename)
-        self.includes = includes
-        self.excludes = excludes
-
-    def archives_to_tdd(self, metadata):
-        tdd = "\t[\n"
-        for name in metadata.keys():
-            path_ = os.path.join(os.path.dirname(metadata.filename), name)
-            if (((len(self.includes) == 0) and metadata[name]['extract']) or (self.includes in metadata[name]['s60filter'])) and self.excludes not in metadata[name]['s60filter']:
-                tdd += "\t\t{\n"
-                tdd += "\t\t\t\"command\": \"unzip_%s\",\n" % metadata[name]['extract']
-                tdd += "\t\t\t\"src\": \"%s\",\n" % os.path.normpath(path_).replace('\\', '/')
-                tdd += "\t\t},\n"
-        tdd += "\t],\n"
-        return tdd
-        
-    def to_tdd(self):
-        """ Generating a TDD file that contains a list of list of filenames. """
-        tdd = "[\n"
-        # generates unarchiving steps for dependency
-        dependency = self.get_dependsof()
-        if dependency != None:
-            tdd += self.archives_to_tdd(dependency)
-        # generates unarchiving steps
-        tdd += self.archives_to_tdd(self)
-        tdd += "]\n"
-        return tdd
-
-
-
-def find_latest_metadata(releasedir):
-    """ Finding the release latest release metadata file. """ 
-    try:
-        metadatas = []
-        for filename in os.listdir(releasedir):
-            if re.match(r'^release_metadata(_\d+)?\.xml$', filename, re.I) is not None:
-                LOGGER.debug("Found %s" % filename)
-                metadatas.append(filename)
-        # reverse the order...
-        metadatas.sort(reverse=True)
-        if len(metadatas) > 0:
-            return os.path.normpath(os.path.join(releasedir, metadatas[0]))
-    except Exception, exc:
-        LOGGER.error(exc)
-        return None
-    return None
-
-class ValidateReleaseMetadataCached(ValidateReleaseMetadata):
-    """ Cached version of the metadata validation. """
-    def __init__(self, filename, cachefile=None):
-        ValidateReleaseMetadata.__init__(self, filename)
-        self.__cachefile = cachefile
-
-    def is_valid(self, checkmd5=True, checkPath=True):
-        """ Check if file is in the local cache.
-            Add valid release to the cache.
-        """
-        metadatas = self.load_cache()
-        if self.in_cache(metadatas, os.path.normpath(self._filename)):
-            LOGGER.debug("Release found in cache.")
-            return self.value_from_cache(metadatas, os.path.normpath(self._filename))
-        else:
-            result = ValidateReleaseMetadata.is_valid(self, checkmd5, checkPath)        
-            LOGGER.debug("Updating the cache.")
-            metadatas.append([os.path.normpath(self._filename), result])
-            self.update_cache(metadatas)
-        return result
-
-    def in_cache(self, metadatas, key):
-        for metadata in metadatas:
-            if metadata[0] == key:
-                return True 
-        return False
-    
-    def value_from_cache(self, metadatas, key):
-        for metadata in metadatas:
-            if metadata[0] == key:
-                return metadata[1]
-        return None
-    
-    def load_cache(self):
-        metadatas = []
-        if self.__cachefile is not None and os.path.exists(self.__cachefile):
-            for row in csv.reader(open(self.__cachefile, "rb")):
-                if len(row) == 2:
-                    metadatas.append([os.path.normpath(row[0]), row[1].lower() == "true"])
-                elif len(row) == 1:
-                    # backward compatibility with old cache.
-                    metadatas.append([os.path.normpath(row[0]), True])
-        return metadatas
-
-    def update_cache(self, metadatas):
-        if self.__cachefile is not None and os.path.exists(os.path.dirname(self.__cachefile)):
-            f = open(self.__cachefile, "wb")
-            writer = csv.writer(f)
-            writer.writerows(metadatas)
-            f.close()
-
-class ValidateTicklerReleaseMetadata(ValidateReleaseMetadataCached):
-    """ This class validate if a metadata file is stored in the correct location and
-        if all deps exists.
-    """
-    def __init__(self, filename):
-        ReleaseMetadata.__init__(self, filename)
-        self.location = os.path.dirname(filename)
-    
-    def is_valid(self, checkmd5=True):
-        """ Run the validation mechanism. """
-        tickler_path = os.path.join(self.location,"TICKLER")
-        if not os.path.exists(tickler_path):
-            LOGGER.error("Release not available yet")
-            return False
-        else:
-            return ValidateReleaseMetadataCached.is_valid(self, checkmd5)
--- a/buildframework/helium/tools/common/python/lib/sysdef/__init__.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +0,0 @@
-#============================================================================ 
-#Name        : __init__.py 
-#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:
-#===============================================================================
-
--- a/buildframework/helium/tools/common/python/lib/sysdef/api.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,617 +0,0 @@
-#============================================================================ 
-#Name        : api.py 
-#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:
-#===============================================================================
-
-""" System Definition file parser.
-
-Priority are not handled yet.
-Nested task unitlist are not handled properly yet.
-    
-How to use it::
-
-    sdf = SystemDefinition(filename)
-    for name in sdf.layers:
-        print " + Units in layer %s" % name
-        for unit in sdf.layers[name].units:
-            print "     - " +  sdf.units[name].id
-
-    for name in sdf.units:
-        print sdf.units[name].id
-    
-"""
-
-import logging
-import os
-import re
-import sys
-import types
-
-from xmlhelper import node_scan, recursive_node_scan
-from xml.dom import Node
-import xml.dom.minidom
-
-import buildtools
-
-logging.basicConfig(level=logging.INFO)
-_logger = logging.getLogger('sysdef.api')
-
-
-def filter_out(config_filters, unit_filters):
-    """ Function that determines if a unit should be included or not. 
-        returns None => could be included, string reason.
-    """
-
-    def hasvalue(filter_list, value):
-        """ Check if a filter list contains a particular value.
-            It handles list's item negation using "!".
-        """
-        for list_value in filter_list:
-            if list_value == value:
-                return True
-        return False
-    for filter_ in unit_filters:
-        if filter_.startswith("!"):
-            if hasvalue(config_filters, filter_[1:]):
-                return filter
-        else:
-            if not hasvalue(config_filters, filter_):
-                return filter_
-    return None
-
-
-def extract_filter_list(filters):
-    """ Convert a comma separated list of filters into a python list.
-        The method will skip empty filters (empty strings).
-    """
-    result = []
-    for filter_ in [filter_.strip() for filter_ in filters.split(",")]:
-        if len(filter_) > 0:
-            result.append(filter_)
-    return result
-
-
-class SysDefElement(object):
-    """ A generic element of a System Definition. """
-    def __init__(self, sysDef):
-        """ Initialisation """
-        self._sysDef = sysDef
-        
-    def _getname(self):
-        """ Name getter method """
-        return NotImplementedError()
-        
-    def get_id(self):
-        """ Use name as default ID. """
-        return getattr(self, 'name').lower()
-    
-    def __str__(self):
-        return self.get_id()
-        
-        
-class Unit(SysDefElement):
-    """ Abstract unit from SDF file. """
-    def __init__(self, node, sysDef):
-        """ Initialisation """
-        SysDefElement.__init__(self, sysDef)
-        self.__xml = node
-        self.binaries = []
-
-    def __getid(self):
-        """ Id getter. """
-        return self.__xml.getAttribute('unitID')
-
-    def _getname(self):
-        """ Name getter. """
-        if self.__xml.hasAttribute('name'):
-            return self.__xml.getAttribute('name')
-        if self.__xml.hasAttribute('bldFile'):
-            return self.__xml.getAttribute('bldFile')
-        return self.__xml.getAttribute('mrp')
-    
-    def __getpath(self):
-        """ Path getter. """
-        if self.__xml.hasAttribute('bldFile'):
-            return os.path.join(os.path.sep, self.__xml.getAttribute('bldFile'))
-        return os.path.join(os.sep, os.path.dirname(self.__xml.getAttribute('mrp')))
-            
-    def __getfilters(self):
-        """ filter getter. """
-        filters = []
-        if self.__xml.hasAttribute('filter'):
-            filters = extract_filter_list(self.__xml.getAttribute('filter'))
-        return filters
-
-    id = property(__getid)
-    name = property(_getname)
-    path = property(__getpath)
-    filters = property(__getfilters)
-    
-    
-class _UnitGroup(SysDefElement):
-    """ A group of units. """
-    def __init__(self, node, sysDef):
-        """ Initialisation """
-        SysDefElement.__init__(self, sysDef)
-        self._xml = node
-        self._units = []
-
-    def __getname(self):
-        """ Name getter method """
-        return self._xml.getAttribute('name')
-
-    def __getunits(self):
-        """ Units getter method """
-        return self._units
-
-    name = property(__getname)
-    units = property(__getunits)
-
-
-class Layer(_UnitGroup):
-    """ Abstract layer from SDF file. """    
-    def __init__(self, node, sysDef):
-        """ Initialisation """
-        _UnitGroup.__init__(self, node, sysDef)
-        self._modules = []
-        self._module_count = 0
-        for unitNode in recursive_node_scan(self._xml, 'unit'):
-            unit = Unit(unitNode, self._sysDef)
-            self._units.append(unit)
-            self._sysDef.addElement(unit)
-
-        for moduleNode in recursive_node_scan(self._xml, 'module') + recursive_node_scan(self._xml, 'collection'):
-            module = Module(moduleNode, self._sysDef)
-            self._modules.append(module)
-            self._module_count += 1
-            # Not added to the model.
-            #self._sysDef.addElement(module) 
-    
-    def __getmodules(self):
-        """ Module list accessor. """
-        return self._modules
-
-    def __getmodulescount(self):
-        """ Module cound accessor. """
-        return self._module_count
-    
-    modules = property(__getmodules)
-    modules_count = property(__getmodulescount)
-    
-    
-class Module(_UnitGroup):
-    """ Abstract module from SDF file. """    
-    def __init__(self, node, sysDef):
-        """ Initialisation """
-        _UnitGroup.__init__(self, node, sysDef)
-        for unitNode in recursive_node_scan(self._xml, "unit"):
-            unit = Unit(unitNode, self._sysDef)
-            self._units.append(unit)
-
-
-class UnitList(_UnitGroup):
-    """ Abstract unitlist from SDF file. """
-    def __init__(self, node, units, sysDef):
-        """ Initialisation """
-        _UnitGroup.__init__(self, node, sysDef)
-        for unitRef in node_scan(self._xml, "unitRef"):
-            try:
-                self._units.append(units[unitRef.getAttribute('unit')])
-            except KeyError, error:
-                sys.stderr.write("ERROR: Could not find unit '%s'\n" % unitRef.getAttribute('unit') + str(error) + "\n")
-
-
-class BuildLayer(SysDefElement):
-    """ Abstract buildlayer. """
-    def __init__(self, node, config, sysDef):
-        """ Initialisation """
-        SysDefElement.__init__(self, sysDef)
-        self.__xml = node
-        self.config = config
-        self.targetList = []
-        if self.__xml.hasAttribute('targetList'):
-            for tlname in re.split(r'\s+', self.__xml.getAttribute('targetList').strip()):
-                for target in self._sysDef.targetlists[tlname].targets:
-                    self.targetList.append(target)                
-    
-    def __getcommand(self):
-        """ Command getter method. """
-        return self.__xml.getAttribute('command')
-    
-    def __getunitParallel(self):
-        """ Unit Parallel getter method (boolean). """
-        return (self.__xml.getAttribute('unitParallel').upper() == "Y")
-
-    command = property(__getcommand)
-    unitParallel = property(__getunitParallel)
-    
-    
-class Option(SysDefElement):
-    """ Represents an option used in abld calls. """
-    def __init__(self, node, sysDef):
-        """ Initialisation """
-        SysDefElement.__init__(self, sysDef)
-        self.__xml = node
-    
-    def __getname(self):
-        """ Name getter method. """
-        return self.__xml.getAttribute('name')
-    
-    def __getabldOption(self):
-        """ Abld option getter method. """
-        return self.__xml.getAttribute('abldOption')
-    
-    def __getenable(self):
-        """ Unit Parallel getter method (boolean). """
-        return (self.__xml.getAttribute('enable').upper() == 'Y')
-
-    def __getfilteredOption(self):
-        """ Filtered abld option getter method. """
-        if not self.enable:
-            return ''
-        return self.abldOption
-   
-    name = property(__getname)
-    abldOption = property(__getabldOption)
-    enable = property(__getenable)
-    filteredOption = property(__getfilteredOption)
-    
-
-class SpecialInstruction(SysDefElement):
-    """ Reads special instruction command. """
-    def __init__(self, node, sysDef):
-        """ Initialisation """
-        SysDefElement.__init__(self, sysDef)
-        self.__xml = node
-
-    def __getname(self):
-        """ Name getter method """
-        return self.__xml.getAttribute('name')
-    
-    def __getcommand(self):
-        """ Command getter method """
-        return self.__xml.getAttribute('command')
-
-    def __getpath(self):
-        """ Path getter method """
-        return self.__xml.getAttribute('cwd')
-    
-    name = property(__getname)
-    command = property(__getcommand)
-    path = property(__getpath)
-    
-    
-class Task(SysDefElement):
-    """ Abstract task node from SDF xml. """
-    def __init__(self, node, config, sysDef):
-        """ Initialisation """
-        SysDefElement.__init__(self, sysDef)
-        self.__xml = node
-        self._config = config
-        self.__job = None
-
-    def units(self):
-        """ Process unit list from layers """
-        result = []
-        for ref in node_scan(self.__xml, "unitListRef"):
-            units = []
-            try:
-                units = self._config.sdf.unitlists[ref.getAttribute('unitList')].units
-                for unit in units:
-                    reason = filter_out(self._config.filters, unit.filters)
-                    if reason == None:
-                        result.append(unit)
-                    else:
-                        sys.stderr.write("Filter-out: %s (%s)\n" % (unit.id, reason)) 
-            except KeyError, error:
-                sys.stderr.write("ERROR: Could not find unitList of layer %s\n" % error)
-        return result
-        
-    def __getjob(self):
-        """ Return the job contained inside the task. """
-        for job in node_scan(self.__xml, r"buildLayer|specialInstructions"):
-            if job.nodeName == 'specialInstructions':
-                self.__job = SpecialInstruction(job, self._sysDef)
-            elif job.nodeName == 'buildLayer':
-                self.__job = BuildLayer(job, self._config, self._sysDef)
-        return self.__job
-
-    job = property(__getjob)
-
-
-class Configuration(SysDefElement):
-    """ Abstract configuration from SDF file. """
-    def __init__(self, node, sysDef):
-        """ Initialisation """
-        SysDefElement.__init__(self, sysDef)
-        self.__xml = node
-    
-    def __getname(self):
-        """ Name getter method """
-        return self.__xml.getAttribute('name')    
-
-    def __getfilters(self):
-        """ Filters getter method. """
-        filters = []
-        if self.__xml.hasAttribute('filter'):
-            filters = extract_filter_list(self.__xml.getAttribute('filter'))
-        return filters  
-    
-    def __getlayerrefs(self):
-        """ Layer's references getter method. """
-        result = []
-        for ref in node_scan(self.__xml, "layerRef"):
-            try:
-                result.append(self._sysDef.layers[ref.getAttribute('layerName')])
-            except KeyError, error:
-                sys.stderr.write("ERROR: Could not find layer '%s'\n" % error)
-        return result
-    
-    def __getunitlistrefs(self):
-        """ Unit list references getter method. """
-        result = []
-        for ref in node_scan(self.__xml, "unitListRef"):
-            try:
-                result.append(self._sysDef.unitlists[ref.getAttribute('unitList')])
-            except KeyError, error:
-                sys.stderr.write("ERROR: Could not find unitList %s\n" % error)
-        return result
-        
-    def __getunits(self):
-        """ Return unit from unitList or layer. """
-        result = []            
-        for ref in node_scan(self.__xml, "unitListRef|layerRef"):
-            units = []
-            try:
-                if ref.nodeName == 'unitListRef':
-                    units = self._sysDef.unitlists[ref.getAttribute('unitList')].units
-                else:
-                    units = self._sysDef.layers[ref.getAttribute('layerName')].units
-                for unit in units:
-                    reason = filter_out(self.filters, unit.filters)
-                    if reason == None:
-                        # Get the unit object from the cache if this is a string
-                        # TODO - remove once unitlist returns list of Unit objects
-                        if isinstance(unit, types.UnicodeType):
-                            unit = self._sysDef[unit]
-                        result.append(unit)
-                    else:
-                        sys.stderr.write("Filter-out: %s (%s)\n" % (unit.id, reason)) 
-            except KeyError, error:
-                sys.stderr.write("ERROR: Could not find unitList or layer %s\n" % error)
-        return result
-    
-    def __gettasks(self):
-        """ Tasks getter method. """
-        result = []
-        for task in node_scan(self.__xml, "task"):
-            result.append(Task(task, self, self._sysDef))
-        return result
-    
-    name = property(__getname)
-    filters = property(__getfilters)    
-    layerrefs = property(__getlayerrefs)
-    unitlistrefs = property(__getunitlistrefs)
-    units = property(__getunits)
-    tasks = property(__gettasks)
-
-
-class Target(SysDefElement):
-    """ Abstract target from SDF file. """
-    def __init__(self, node, sysDef):
-        """ Initialisation """
-        SysDefElement.__init__(self, sysDef)
-        self.__xml = node
-
-    def __getname(self):
-        """ Name getter method. """
-        return self.__xml.getAttribute('name')    
-
-    def __getabldTarget(self):
-        """ Abld target getter method. """
-        return self.__xml.getAttribute('abldTarget')
-
-    name = property(__getname)
-    abldTarget = property(__getabldTarget)
-
-
-class TargetList(SysDefElement):
-    """ Abstract targetlist from SDF file. """
-    def __init__(self, node, sysDef):
-        """ Initialisation """
-        SysDefElement.__init__(self, sysDef)
-        self.__xml = node
-
-    def __getname(self):
-        """ Name getter method. """
-        return self.__xml.getAttribute('name')    
-
-    def __gettargets(self):
-        """ Targets getter method. """
-        result = []
-        for target in re.split(r'\s+', self.__xml.getAttribute('target')):
-            result.append(self._sysDef.targets[target.strip()])
-        return result
-        
-    name = property(__getname)
-    targets = property(__gettargets)    
-
-
-class SystemDefinition(object):
-    """ Logical representation of the System Definition.
-    
-    The System Definition is defined in terms of a system model and a
-    build model. The default physical representation of this is the Symbian
-    XML format. """
-    def __init__(self, filename):
-        """ Initialisation """
-        self.__xml = xml.dom.minidom.parse(open(filename, "r"))
-        self._cache = {}
-        #TODO - why store these as hashes?
-        self._units = {}
-        self._layers = {}
-        self._modules = {}
-        self._unitlists = {}
-        self._configurations = {}
-        self._options = {}
-        self._targets = {}
-        self._targetlists = {}
-        self.__parse()
-    
-    def __getunits(self):
-        """ Units getter method. """
-        return self._units
-    
-    def __getmodules(self):
-        """ Modules getter method. """
-        return self._modules
-
-    def __getlayers(self):
-        """ Layers getter method. """
-        return self._layers
-    
-    def __getunitlists(self):
-        """ Unit lists getter method. """
-        return self._unitlists
-    
-    def __getoptions(self):
-        """ Options getter method. """
-        return self._options    
-    
-    def __getconfigurations(self):
-        """ Configurations getter method. """
-        return self._configurations
-
-    def __gettargetlists(self):
-        """ Targets lists getter method. """
-        return self._targetlists
-
-    def __gettargets(self):
-        """ Targets getter method. """
-        return self._targets
-    
-    units = property(__getunits)
-    unitlists = property(__getunitlists)
-    layers = property(__getlayers)
-    options = property(__getoptions)
-    configurations = property(__getconfigurations)
-    targetlists = property(__gettargetlists)
-    targets = property(__gettargets)
-    modules = property(__getmodules)
-    
-    def __parse(self):
-        for l in self.__xml.getElementsByTagName('layer'):
-            layer = Layer(l, self)
-            self.layers[layer.name] = layer
-            self.addElement(layer)
-            for unit in layer.units:
-                self._units[unit.get_id()] = unit
-            for mod in layer.modules:
-                self._modules[mod.name] = mod
-            
-        for build in self.__xml.getElementsByTagName('build'):
-            for ul in build.getElementsByTagName('unitList'):
-                unitlist = UnitList(ul, self._units, self)
-                self.unitlists[unitlist.name] = unitlist
-                self.addElement(unitlist)
-
-            for xml_config in build.getElementsByTagName('configuration'):
-                config = Configuration(xml_config, self)
-                self.configurations[config.name] = config
-                self.addElement(config)
-
-            for option_node in build.getElementsByTagName('option'):         
-                option = Option(option_node, self)
-                if option.name == 'SAVESPACE':
-                    continue
-                self.options[option.name] = option 
-                self.addElement(option)
-
-            for target_node in build.getElementsByTagName('target'):
-                target = Target(target_node, self)
-                self.targets[target.name] = target
-                self.addElement(target)
-
-            for targetlist_node in build.getElementsByTagName('targetList'):
-                targetlist = TargetList(targetlist_node, self)
-                self.targetlists[targetlist.name] = targetlist
-                self.addElement(targetlist)
-            
-    def addElement(self, element):
-        """ Adds SysDef element to cache. """
-        #TODO - handle duplicate names of different types
-        if not self._cache.has_key(element.get_id()):
-            self._cache[element.get_id()] = element
-            _logger.info('Adding SysDef element to cache: %s' % str(element))
-        else:
-            _logger.warning("Element already exists: %s" % element.name)
-        
-    def __getitem__(self, key):
-        """ Item getter method. """
-        return self._cache[key]
-    
-    def merge_binaries(self, binaries_reader):
-        """ Merge binaries based on build log and system definition. """
-        for (unit_name, binaries) in binaries_reader:
-            unit_name = unit_name.lower()
-            if self.units.has_key(unit_name):
-                for bin in binaries:
-                    #if bin.find('_stolon_ekern') != -1:
-                    _logger.debug("Merging: %s" % bin)
-                unit = self.units[unit_name]
-                unit.binaries = [Binary(bin.lower(), self) for bin in binaries]
-                for binary in unit.binaries:
-                    self.addElement(binary)
-                    _logger.info('Merging binary: %s' % str(binary))
-            else:
-                _logger.warning('Component found in the build log but not in sysdef: %s' % unit_name)
-                
-    def merge_binary_sizes(self, binary_sizes_reader):
-        """ Merge binary size base on binary sizes input and system definition. """
-        for (binary_name, size, rom_type) in binary_sizes_reader:
-            #if binary_name.find('_stolon_ekern') != -1:
-            
-            binary_name = binary_name.lower()
-            _logger.debug("Merging binary size: %s" % binary_name)
-            if self._cache.has_key(binary_name):
-                binary = self._cache[binary_name]
-                binary.size = size
-                binary.rom_type = rom_type
-            else:
-                _logger.warning('Binary found in the binary sizes input but not in the system definition: %s' % binary_name)
-                
-
-class Binary(SysDefElement):
-    """ A binary file that may go into a ROM image. """
-    
-    def __init__(self, name, sysDef):
-        """ Initialisation """
-        SysDefElement.__init__(self, sysDef)
-        self.name = name
-        
-    
-          
-          
-          
-                                 
-#if __name__ == "__main__":
-#    sdf = SystemDefinitionFile("Z:/output/build/canonical_system_definition.xml")
-#    writer = MakeWriter2("Z:/output/build/makefile")
-#    writer.write(sdf)
-#    writer.close()
-#    print sdf.toMakefile()
-
--- a/buildframework/helium/tools/common/python/lib/sysdef/io.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,583 +0,0 @@
-#============================================================================ 
-#Name        : io.py 
-#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:
-#===============================================================================
-# pylint: disable-msg=W0212,W0141
-""" IO module for SystemDefinitionFile.
-    - Allow convertion to m,a 
-"""
-import re
-import sys
-import os
-import buildtools
-import sysdef.api
-
-def path_to_makefile_echo(path):
-    """ Cleanup the path to transfer it to the makefile.
-        This is needed for echo command for example.
-    """
-    result = os.path.join(os.environ['EPOCROOT'], path)
-    result = re.sub(r'(.*(?:\\\\)*)\\$', r'\1\\\\', result)
-    return result
-
-def path_to_makefile_command(path):
-    """ Cleanup the path to transfer it to the makefile.
-        This is needed for echo command for example.
-    """
-    result = re.sub(r'%EPOCROOT%', '', path)
-    return result
-
-
-def command_to_makefile(cmd):
-    return re.sub(r'(.*(?:\\\\)*)\\\s*$', r'\1\\\\', cmd)
-
-def command_to_echo(cmd):
-    """ Precede special characters with a caret so
-        that they can output with the DOS echo command 
-    """
-    result = re.sub(r'\|', r'^|', cmd)
-    result = re.sub(r'&', r'^&', result)
-    result = re.sub(r'>', r'^>', result)
-    result = re.sub(r'<', r'^<', result)
-    return result
-
-def get_localtime_command(title='Started at'): 
-    return "perl -e \"print '++ %s '.localtime().\\\"\\n\\\"\"" % title
-
-def get_hires_command(title='Start'): 
-    return "perl -e \"use Time::HiRes; print '+++ HiRes %s '.Time::HiRes::time().\\\"\\n\\\";\"" % title
-
-def is_abld_what_or_check_command(command):
-    """ This function is used to determined if the command is using -c/-w/-what/-check flag. """
-    return re.match(r'abld\s+(\w+\s+)*(-c(heck)?|-w(hat)?)(\s+.*)?', command) != None
-
-def to_target(name):
-    return re.sub("\s", "_", name)
-
-
-class MakeWriter(buildtools.AbstractOutputWriter):
-    def __init__(self, output):
-        buildtools.AbstractOutputWriter.__init__(self, output)
-                 
-    def write(self, sdf):
-        self._fileOut.write("# Generated makefile\n")
-        for option in sdf._options:
-            self._fileOut.write("%s := %s\n\n" % (option, sdf._options[option].filteredOption))
-        for cf in sdf._configurations:
-            self._configuration_to_makefile(sdf._configurations[cf])
-    
-    def _configuration_to_makefile(self, config):
-        sys.stderr.write(" * Generating configuration %s\n" % config.name)
-        
-        self._fileOut.write("%s-UNITLIST := " % config.target)
-        
-        for unit in config.units():
-            self._fileOut.write(" \\\n   %s" % unit.path)
-        
-        self._fileOut.write("\n\n")    
-        self._fileOut.write("%s:\n" % config.target)
-        mainoutput = ""
-        for task in config.tasks:
-            self._fileOut.write(self._task_to_makefile_target(task))
-            mainoutput +=  task._task_to_makefile()
-        
-        self._fileOut.write("\n\n" + mainoutput)
-       
-    def _task_to_makefile(self, task):
-        output = ""
-        if isinstance(task.job, sysdef.api.BuildLayer):
-            if len(task.job.targetList) > 0:        
-                output += "%s-buildLayer-%s:" % (task.job.config.target, task.job.target)
-                for target in task.job.targetList:
-                    output += " $(foreach UNIT,$(%s-UNITLIST),$(UNIT)-command-%s-%s)" % (task.job.config.target, task.job.target, target.target)
-                output += "\n\n"                 
-                for target in task.job.targetList:
-                    if is_abld_what_or_check_command(task.job.command):
-                        command = "%s %s" % (task.job.command, target.abldTarget)
-                    else: 
-                        command = "%s $(KEEPGOING) %s" % (task.job.command, target.abldTarget) 
-                    output += "%%-command-%s-%s:\n" % (task.job.target, target.target) 
-                    output += "\t@echo === Stage=%s == $*\n" % task.job.target             
-                    output += "\t@echo --- ElectricCloud Executed ID %s\n" % command_to_makefile(command_to_echo(command))
-                    output += "\t@echo -- %s\n" % command_to_makefile(command_to_echo(command))
-                    output += "\t-@%s\n" % get_localtime_command()
-                    output += "\t-@%s\n" % get_hires_command()
-                    output += "\t@echo Chdir $*\n" 
-                    output += "\t-@cd $* && %s\n" % command_to_makefile(command) 
-                    output += "\t-@%s\n" % get_localtime_command("End")
-                    output += "\t-@%s\n" % get_localtime_command("Finished at")
-            else:
-                if not is_abld_what_or_check_command(task.job.command):
-                    command = "%s $(KEEPGOING)" % task.job.command
-                else:
-                    command = task.job.command
-                output += "%s-buildLayer-%s: $(foreach UNIT,$(%s-UNITLIST),$(UNIT)-command-%s)\n\n" % (task.job.config.target, task.job.target, task.job.config.target, task.job.target)
-                output += "%%-command-%s:\n" % task.job.target 
-                output += "\t@echo === Stage=%s == $*\n" % task.job.target           
-                output += "\t@echo --- ElectricCloud Executed ID %s\n" % command_to_makefile(command_to_echo(command))
-                output += "\t@echo -- %s\n" % re.sub(r'\|', r'^|', command)
-                output += "\t-@%s\n" % get_localtime_command()
-                output += "\t-@%s\n" % get_hires_command()
-                output += "\t@echo Chdir $*\n" 
-                output += "\t-@cd $* && %s\n" % command_to_makefile(command) 
-                output += "\t-@%s\n" % get_localtime_command("End")
-                output += "\t-@%s\n\n" % get_localtime_command("Finished at")
-            
-        return output
-    
-    def _task_to_makefile_target(self, task):
-        output = ""
-        if isinstance(task.job, sysdef.api.SpecialInstruction):
-            output = ("\t@echo ===-------------------------------------------------\n")
-            output += ("\t@echo === Stage=%s\n" % task.job.name)
-            output += ("\t@echo ===-------------------------------------------------\n")
-            output += ("\t-@perl -e \"print '=== Stage=%s started '.localtime().\\\"\\n\\\"\"\n" % task.job.name)
-            output += "\t@echo === Stage=%s == %s\n" % (task.job.name, task.job.name)
-            output += "\t@echo --- ElectricCloud Executed ID %s\n" % command_to_makefile(command_to_echo(task.job.command))
-            output += "\t@echo -- %s\n" % command_to_makefile(command_to_echo(task.job.command))
-            output += "\t-@%s\n" % get_localtime_command()
-            output += "\t-@%s\n" % get_hires_command()
-            output += "\t@echo Chdir %s\n" % path_to_makefile_echo(task.job.path)
-            output += "\t-@cd %s && %s\n" % (os.path.join(os.path.sep, path_to_makefile_command(task.job.path)), command_to_makefile(task.job.command))
-            output += "\t-@%s\n" % get_localtime_command("End")
-            output += "\t-@%s\n\n" % get_localtime_command("Finished at")
-            output += ("\t-@perl -e \"print '=== Stage=%s finished '.localtime().\\\"\\n\\\"\"\n\n" % task.job.name)
-        else:
-            output = ("\t@echo ===-------------------------------------------------\n")
-            output += ("\t@echo === Stage=%s\n" % task.job.target)
-            output += ("\t@echo ===-------------------------------------------------\n")
-            output += ("\t-@perl -e \"print '=== Stage=%s started '.localtime().\\\"\\n\\\"\"\n" % task.job.target)
-            output += "\t-@$(MAKE) -k %s-buildLayer-%s\n" % (task.job.config.target, task.job.target)
-            output += ("\t-@perl -e \"print '=== Stage=%s finished '.localtime().\\\"\\n\\\"\"\n\n" % task.job.target)    
-        return output
-        
-        
-class MakeWriter2(buildtools.AbstractOutputWriter):
-    def __init__(self, output):
-        buildtools.AbstractOutputWriter.__init__(self, output)
-        self._command_targets = {}
-               
-    def __read_file(self, filename):
-        f = open(filename)
-        content = f.read()
-        f.close()
-        return content
-     
-    def write(self, sdf):
-        self._fileOut.write("# Generated makefile\n")
-        self._fileOut.write(self.__read_file(os.path.join(os.environ['HELIUM_HOME'], 'tools/compile/ec/ec_functions.mk')))
-        self._fileOut.write("\n\n")
-
-        # options
-        self._fileOut.write("\n# Options\n")
-        for option in sdf._options:
-            self._fileOut.write("%s := %s\n\n" % (option, sdf._options[option].filteredOption))
-        self._fileOut.write("\n# Units\n")
-        for unitid in sdf.units.keys():
-            self._unit_to_makefile(sdf.units[unitid])
-        self._fileOut.write("\n# Layers\n")
-        for layerid in sdf.layers.keys():
-            self._group_to_makefile(sdf.layers[layerid], "LAYER")        
-        self._fileOut.write("\n# Unitlists\n")
-        for unitlistid in sdf.unitlists.keys():            
-            self._group_to_makefile(sdf.unitlists[unitlistid], "UNITLIST")
-
-        self._fileOut.write("\n# Configurations\n")
-        for cf in sdf.configurations.keys():
-            self._configuration_to_makefile(sdf._configurations[cf])
-
-        self._fileOut.write("\n# Helps\n")
-        self._fileOut.write("\nhelp:\n")
-        self._fileOut.write("\t@echo (e)make configurations           display all available configurations.\n")
-        self._fileOut.write("\t@echo (e)make units                    display all available units.\n")
-        
-        self._fileOut.write("\nconfigurations:\n")
-        for cf in sdf.configurations.keys():
-            self._fileOut.write("\t@echo %s\n" % sdf._configurations[cf].name)
-
-        self._fileOut.write("\nunits:\n")
-        for unit in sdf.units.keys():
-            self._fileOut.write("\t@echo %s\n" % sdf.units[unit].id)
-                    
-        
-    def _unit_to_makefile(self, unit):
-        self._fileOut.write("UNIT_%s:=%s|%s|%s\n" % (unit.id, unit.name, unit.path, " ".join(unit.filters)))
-
-    def _group_to_makefile(self, group, gtype):
-        self._fileOut.write("%s_%s:=" % (gtype, to_target(group.name)))
-        for unit in group.units:
-            self._fileOut.write(" \\\n%s" % unit.id)
-        self._fileOut.write(" \n\n")
-        
-    def _configuration_to_makefile(self, config):        
-        for task in config.tasks:
-            self._fileOut.write(self._task_to_makefile(task))
-        self._fileOut.write("\n\n")
-         
-        self._fileOut.write("%s: FILTERS=%s\n" % (config.name, " ".join(config.filters)))
-        self._fileOut.write("%s:\n" % (config.name))        
-        for task in config.tasks:
-            self._fileOut.write(self._task_to_makefile_target(task))
-            
-        self._fileOut.write("\n\n")
-
-    def _task_to_makefile(self, task):
-        output = ""
-        if isinstance(task.job, sysdef.api.BuildLayer):
-            
-            # generating the list of required unit groups
-            glist = []
-            for unitlist in task.job.config.unitlistrefs:
-                glist.append("$(UNITLIST_%s)" % to_target(unitlist.name))
-            for layer in task.job.config.layerrefs:
-                glist.append("$(LAYER_%s)" % to_target(layer.name))
-
-            if len(task.job.targetList) > 0:
-                
-                if not self._buildlayer_target_dep(task.job) in self._command_targets:                    
-                    self._command_targets[self._buildlayer_target_dep(task.job)] = True
-                    output += "%s:" % self._buildlayer_target_dep(task.job)
-                    if task.job.unitParallel:                    
-                        for target in task.job.targetList:
-                            output += " $(foreach unit,$(call filter-unitlist,%s),$(unit)-command-%s-%s)" % (" ".join(glist), self._buildlayer_target(task.job), to_target(target.name))
-                        output += "\n\n"
-                    else:
-                        output += " ; "
-                        for target in task.job.targetList:
-                            output += " $(foreach unit,$(call filter-unitlist,%s),$(call serialize,$(unit)-command-%s-%s))" % (" ".join(glist), self._buildlayer_target(task.job), to_target(target.name))
-                        output += "\n\n"
-                        
-                                                 
-                for target in task.job.targetList:
-                    target_name = "%%-command-%s-%s" % (self._buildlayer_target(task.job), to_target(target.name))
-                    if not target_name in self._command_targets:
-                        self._command_targets[target_name] = True
-                        if is_abld_what_or_check_command(task.job.command):
-                            command = "%s %s" % (task.job.command, target.abldTarget)
-                        else: 
-                            command = "%s $(KEEPGOING) %s" % (task.job.command, target.abldTarget) 
-                        output += "%s:\n" % target_name 
-                        output += "\t@echo === Stage=%s == $(call get_unit_name,$*)\n" % self._buildlayer_target(task.job)            
-                        output += "\t@echo --- ElectricCloud Executed ID $(call get_unit_name,$*)\n"
-                        output += "\t@echo -- %s\n" % command_to_makefile(command_to_echo(command))
-                        output += "\t-@%s\n" % get_localtime_command()
-                        output += "\t-@%s\n" % get_hires_command()
-                        output += "\t@echo Chdir $(call get_unit_path,$*)\n" 
-                        output += "\t-@cd $(call get_unit_path,$*) && %s\n" % command_to_makefile(command) 
-                        output += "\t-@%s\n" % get_localtime_command("End")
-                        output += "\t-@%s\n" % get_localtime_command("Finished at")
-                        output += "\n\n"                 
-            else:                
-                if not self._buildlayer_target_dep(task.job) in self._command_targets:
-                    self._command_targets[self._buildlayer_target_dep(task.job)] = True
-                    if task.job.unitParallel:
-                        output += "%s: $(foreach unit,$(call filter-unitlist,%s),$(unit)-command-%s)\n\n" % (self._buildlayer_target_dep(task.job), 
-                                                                                                         " ".join(glist), 
-                                                                                                         self._buildlayer_target(task.job))
-                    else:
-                        output += "%s: ; $(foreach unit,$(call filter-unitlist,%s),$(call serialize,$(unit)-command-%s))\n\n" % (self._buildlayer_target_dep(task.job),
-                                                                                                         " ".join(glist),
-                                                                                                         self._buildlayer_target(task.job))
-                        
-                cmd_target_name = "%%-command-%s" % self._buildlayer_target(task.job)                
-                if not cmd_target_name in self._command_targets: 
-                    self._command_targets[cmd_target_name] = True                                    
-                    if not is_abld_what_or_check_command(task.job.command):
-                        command = "%s $(KEEPGOING)" % task.job.command
-                    else:
-                        command = task.job.command
-                    output += "%s:\n" % cmd_target_name 
-                    output += "\t@echo === Stage=%s == $(call get_unit_name,$*)\n" % self._buildlayer_target(task.job)           
-                    output += "\t@echo --- ElectricCloud Executed ID %s\n" % command_to_makefile(command_to_echo(command))
-                    output += "\t@echo -- %s\n" % command_to_makefile(command_to_echo(task.job.command))
-                    output += "\t-@%s\n" % get_localtime_command()
-                    output += "\t-@%s\n" % get_hires_command()
-                    output += "\t@echo Chdir $(call get_unit_path,$*)\n" 
-                    output += "\t-@cd $(call get_unit_path,$*) && %s\n" % command_to_makefile(command) 
-                    output += "\t-@%s\n" % get_localtime_command("End")
-                    output += "\t-@%s\n\n" % get_localtime_command("Finished at")            
-        return output
-
-    def _task_to_makefile_target(self, task):
-        output = ""        
-        if isinstance(task.job, sysdef.api.SpecialInstruction):
-            output = ("\t@echo ===-------------------------------------------------\n")
-            output += ("\t@echo === Stage=%s\n" % task.job.name)
-            output += ("\t@echo ===-------------------------------------------------\n")
-            output += ("\t-@perl -e \"print '=== Stage=%s started '.localtime().\\\"\\n\\\"\"\n" % task.job.name)
-            output += "\t@echo === Stage=%s == %s\n" % (task.job.name, task.job.name)
-            output += "\t@echo --- ElectricCloud Executed ID %s\n" % command_to_makefile(command_to_echo(task.job.command))
-            output += "\t@echo -- %s\n" % command_to_makefile(command_to_echo(task.job.command))
-            output += "\t-@%s\n" % get_localtime_command()
-            output += "\t-@%s\n" % get_hires_command()
-            output += "\t@echo Chdir %s\n" % path_to_makefile_echo(task.job.path)
-            output += "\t-@cd %s && %s\n" % (os.path.join(os.path.sep, path_to_makefile_command(task.job.path)), command_to_makefile(task.job.command))
-            output += "\t-@%s\n" % get_localtime_command("End")
-            output += "\t-@%s\n" % get_localtime_command("Finished at")
-            output += ("\t-@perl -e \"print '=== Stage=%s finished '.localtime().\\\"\\n\\\"\"\n\n" % task.job.name)
-        else:
-            output = ("\t@echo ===-------------------------------------------------\n")
-            output += ("\t@echo === Stage=%s\n" % self._buildlayer_target(task.job))
-            output += ("\t@echo ===-------------------------------------------------\n")
-            output += ("\t-@perl -e \"print '=== Stage=%s started '.localtime().\\\"\\n\\\"\"\n" % self._buildlayer_target(task.job))
-            output += "\t-@$(MAKE) $(MAKEFILE_CMD_LINE) -k %s \"FILTERS=$(FILTERS)\"\n" % self._buildlayer_target_dep(task.job)
-            output += ("\t-@perl -e \"print '=== Stage=%s finished '.localtime().\\\"\\n\\\"\"\n\n" % self._buildlayer_target(task.job))    
-        return output
-    
-    def _buildlayer_target(self, bl):
-        cmd = bl.command + "_".join(map(lambda x: x.name, bl.targetList))
-        cmd = re.sub("[\s]", "_", cmd)
-        cmd = re.sub("[|]", "_pipe_", cmd)
-        cmd = re.sub("[&]", "_and_", cmd)
-        return cmd
-
-    def _buildlayer_target_dep(self, bl):
-        """ Generating target name for buildlayer:
-             <config_name>-buildLayer-<_buildlayer_target_cmd>
-        """
-        return "%s-buildLayer-%s" % (to_target(bl.config.name), self._buildlayer_target(bl))
-
-class MakeWriter3(buildtools.AbstractOutputWriter):    
-    
-    def __init__(self, output):
-        buildtools.AbstractOutputWriter.__init__(self, output)
-        self._command_targets = {}
-        self.build_layers_always_parallel = True
-               
-    def __read_file(self, filename):
-        f = open(filename)
-        content = f.read()
-        f.close()
-        return content
-     
-    def write(self, sdf):
-        self._fileOut.write("# Generated makefile\n")
-        self._fileOut.write(self.__read_file(os.path.join(os.environ['HELIUM_HOME'], 'tools/compile/ec/ec_functions.mk')))
-        self._fileOut.write("\n\n")
-
-        # options
-        self._fileOut.write("\n# Options\n")
-        for option in sdf._options:
-            self._fileOut.write("%s := %s\n\n" % (option, sdf._options[option].filteredOption))
-        self._fileOut.write("\n# Units\n")
-        for unitid in sdf.units.keys():
-            self._unit_to_makefile(sdf.units[unitid])
-        self._fileOut.write("\n# Layers\n")
-        for layerid in sdf.layers.keys():
-            self._group_to_makefile(sdf.layers[layerid], "LAYER")        
-        self._fileOut.write("\n# Unitlists\n")
-        for unitlistid in sdf.unitlists.keys():            
-            self._group_to_makefile(sdf.unitlists[unitlistid], "UNITLIST")
-
-        self._fileOut.write("\n# Configurations\n")
-        for cf in sdf.configurations.keys():
-            self._configuration_to_makefile(sdf._configurations[cf])
-
-        self._fileOut.write("\n# Helps\n")
-        self._fileOut.write("\nhelp:\n")
-        self._fileOut.write("\t@echo (e)make configurations           display all available configurations.\n")
-        self._fileOut.write("\t@echo (e)make units                    display all available units.\n")
-        
-        self._fileOut.write("\nconfigurations:\n")
-        for cf in sdf.configurations.keys():
-            self._fileOut.write("\t@echo %s\n" % sdf._configurations[cf].name)
-
-        self._fileOut.write("\nunits:\n")
-        for unit in sdf.units.keys():
-            self._fileOut.write("\t@echo %s\n" % sdf.units[unit].id)
-                    
-        
-    def _unit_to_makefile(self, unit):
-        self._fileOut.write("UNIT_%s:=%s|%s|%s\n" % (unit.id, unit.name, unit.path, " ".join(unit.filters)))
-
-    def _group_to_makefile(self, group, gtype):
-        self._fileOut.write("%s_%s:=" % (gtype, to_target(group.name)))
-        for unit in group.units:
-            self._fileOut.write(" \\\n%s" % unit.id)
-        self._fileOut.write(" \n\n")
-        
-    def _configuration_to_makefile(self, config):        
-        for task in config.tasks:
-            self._fileOut.write(self._task_to_makefile(task))
-        self._fileOut.write("\n\n")
-         
-        self._fileOut.write("%s: FILTERS=%s\n" % (config.name, " ".join(config.filters)))
-        self._fileOut.write("%s:" % (config.name))
-        if len(config.tasks)>0:
-            self._fileOut.write(" %s-task-%d" % (config.name, len(config.tasks)-1))
-        else:
-            self._fileOut.write(" ; @echo Nothing to do for configuration %s" % (config.name))
-        self._fileOut.write("\n\n")
-        
-        count = 0
-        for task in config.tasks:
-            if count == 0:
-                self._fileOut.write("%s-task-%d:\n" % (config.name, count))
-            else:    
-                self._fileOut.write("%s-task-%d: %s-task-%d\n" % (config.name, count, config.name, count-1))
-            self._fileOut.write(self._task_to_makefile_target(task))
-            count += 1
-            
-        self._fileOut.write("\n\n")
-
-    def _task_to_makefile(self, task):
-        output = ""
-        if isinstance(task.job, sysdef.api.BuildLayer):
-            
-            # generating the list of required unit groups
-            glist = []
-            for unitlist in task.job.config.unitlistrefs:
-                glist.append("$(UNITLIST_%s)" % to_target(unitlist.name))
-            for layer in task.job.config.layerrefs:
-                glist.append("$(LAYER_%s)" % to_target(layer.name))
-
-            if len(task.job.targetList) > 0:
-                
-                if not self._buildlayer_target_dep(task.job) in self._command_targets:                    
-                    self._command_targets[self._buildlayer_target_dep(task.job)] = True
-                    output += "%s:" % self._buildlayer_target_dep(task.job)
-                    if task.job.unitParallel or self.build_layers_always_parallel:                    
-                        for target in task.job.targetList:
-                            output += " $(foreach unit,$(call filter-unitlist,%s),$(unit)-command-%s-%s)" % (" ".join(glist), self._buildlayer_target(task.job), to_target(target.name))
-                        output += "\n\n"
-                    else:
-                        output += " ; "
-                        for target in task.job.targetList:
-                            output += " $(foreach unit,$(call filter-unitlist,%s),$(call serialize,$(unit)-command-%s-%s))" % (" ".join(glist), self._buildlayer_target(task.job), to_target(target.name))
-                        output += "\n\n"
-                        
-                                                 
-                for target in task.job.targetList:
-                    target_name = "%%-command-%s-%s" % (self._buildlayer_target(task.job), to_target(target.name))
-                    if not target_name in self._command_targets:
-                        self._command_targets[target_name] = True
-                        if is_abld_what_or_check_command(task.job.command):
-                            command = "%s %s" % (task.job.command, target.abldTarget)
-                        else: 
-                            command = "%s $(KEEPGOING) %s" % (task.job.command, target.abldTarget) 
-                        output += "%s:\n" % target_name 
-                        output += "\t@echo === Stage=%s == $(call get_unit_name,$*)\n" % self._buildlayer_target(task.job)            
-                        output += "\t@echo --- ElectricCloud Executed ID $(call get_unit_name,$*)\n"
-                        output += "\t@echo -- %s\n" % command_to_makefile(command_to_echo(command))
-                        output += "\t-@%s\n" % get_localtime_command()
-                        output += "\t-@%s\n" % get_hires_command()
-                        output += "\t@echo Chdir $(call get_unit_path,$*)\n" 
-                        output += "\t-@cd $(call get_unit_path,$*) && %s\n" % command_to_makefile(command) 
-                        output += "\t-@%s\n" % get_localtime_command("End")
-                        output += "\t-@%s\n" % get_localtime_command("Finished at")
-                        output += "\n\n"                 
-            else:                
-                if not self._buildlayer_target_dep(task.job) in self._command_targets:
-                    self._command_targets[self._buildlayer_target_dep(task.job)] = True
-                    if task.job.unitParallel or self.build_layers_always_parallel:
-                        output += "%s: $(foreach unit,$(call filter-unitlist,%s),$(unit)-command-%s)\n\n" % (self._buildlayer_target_dep(task.job), 
-                                                                                                         " ".join(glist), 
-                                                                                                         self._buildlayer_target(task.job))
-                    else:
-                        output += "%s: ; $(foreach unit,$(call filter-unitlist,%s),$(call serialize,$(unit)-command-%s))\n\n" % (self._buildlayer_target_dep(task.job),
-                                                                                                         " ".join(glist),
-                                                                                                         self._buildlayer_target(task.job))
-                        
-                cmd_target_name = "%%-command-%s" % self._buildlayer_target(task.job)                
-                if not cmd_target_name in self._command_targets: 
-                    self._command_targets[cmd_target_name] = True                                    
-                    if not is_abld_what_or_check_command(task.job.command):
-                        command = "%s $(KEEPGOING)" % task.job.command
-                    else:
-                        command = task.job.command
-                    output += "%s:\n" % cmd_target_name 
-                    output += "\t@echo === Stage=%s == $(call get_unit_name,$*)\n" % self._buildlayer_target(task.job)           
-                    output += "\t@echo --- ElectricCloud Executed ID %s\n" % command_to_makefile(command_to_echo(command))
-                    output += "\t@echo -- %s\n" % command_to_makefile(command_to_echo(task.job.command))
-                    output += "\t-@%s\n" % get_localtime_command()
-                    output += "\t-@%s\n" % get_hires_command()
-                    output += "\t@echo Chdir $(call get_unit_path,$*)\n" 
-                    output += "\t-@cd $(call get_unit_path,$*) && %s\n" % command_to_makefile(command) 
-                    output += "\t-@%s\n" % get_localtime_command("End")
-                    output += "\t-@%s\n\n" % get_localtime_command("Finished at")            
-        return output
-
-    def _task_to_makefile_target(self, task):
-        output = ""        
-        if isinstance(task.job, sysdef.api.SpecialInstruction):
-            output = ("\t@echo ===-------------------------------------------------\n")
-            output += ("\t@echo === Stage=%s\n" % task.job.name)
-            output += ("\t@echo ===-------------------------------------------------\n")
-            output += ("\t-@perl -e \"print '=== Stage=%s started '.localtime().\\\"\\n\\\"\"\n" % task.job.name)
-            output += "\t@echo === Stage=%s == %s\n" % (task.job.name, task.job.name)
-            output += "\t@echo --- ElectricCloud Executed ID %s\n" % command_to_makefile(command_to_echo(task.job.command))
-            output += "\t@echo -- %s\n" % command_to_makefile(command_to_echo(task.job.command))
-            output += "\t-@%s\n" % get_localtime_command()
-            output += "\t-@%s\n" % get_hires_command()
-            output += "\t@echo Chdir %s\n" % path_to_makefile_echo(task.job.path)
-            output += "\t-@cd %s && %s\n" % (os.path.join(os.path.sep, path_to_makefile_command(task.job.path)), command_to_makefile(task.job.command))
-            output += "\t-@%s\n" % get_localtime_command("End")
-            output += "\t-@%s\n" % get_localtime_command("Finished at")
-            output += ("\t-@perl -e \"print '=== Stage=%s finished '.localtime().\\\"\\n\\\"\"\n\n" % task.job.name)
-        else:
-            output = ("\t@echo ===-------------------------------------------------\n")
-            output += ("\t@echo === Stage=%s\n" % self._buildlayer_target(task.job))
-            output += ("\t@echo ===-------------------------------------------------\n")
-            output += ("\t-@perl -e \"print '=== Stage=%s started '.localtime().\\\"\\n\\\"\"\n" % self._buildlayer_target(task.job))
-            output += "\t-@$(MAKE) $(MAKEFILE_CMD_LINE) -k %s \"FILTERS=$(FILTERS)\"\n" % self._buildlayer_target_dep(task.job)
-            output += ("\t-@perl -e \"print '=== Stage=%s finished '.localtime().\\\"\\n\\\"\"\n\n" % self._buildlayer_target(task.job))    
-        return output
-    
-    def _buildlayer_target(self, bl):
-        cmd = bl.command + "_".join(map(lambda x: x.name, bl.targetList))
-        cmd = re.sub("[\s]", "_", cmd)
-        cmd = re.sub("[|]", "_pipe_", cmd)
-        cmd = re.sub("[&]", "_and_", cmd)
-        return cmd
-
-    def _buildlayer_target_dep(self, bl):
-        """ Generating target name for buildlayer:
-             <config_name>-buildLayer-<_buildlayer_target_cmd>
-        """
-        return "%s-buildLayer-%s" % (to_target(bl.config.name), self._buildlayer_target(bl))
-
-
-class FlashImageSizeWriter(object):
-    """ Writes a .csv file listing the content of the flash images. """
-    def __init__(self, output):
-        """ Initialisation. """
-        self.output = output
-        self._out = file(output, 'w')
-        
-    def write(self, sys_def, config_list):
-        """ Write the .csv data to a file for the given System Definition and configuration name. """
-        self._out.write('component,binary,rom,rofs1,rofs2,rofs3\n')
-        for configuration in sys_def.configurations.values():
-            #print configuration.name  
-            if configuration.name in config_list:
-                for unit in configuration.units:
-                    #print str(unit.name) + '  ' + str(unit.binaries)
-                    for binary in unit.binaries:
-                        # Only print out the binaries for which there is size information
-                        if hasattr(binary, 'size'):
-                            rom_types = {'rom': 0, 'rofs1': 1, 'rofs2': 2, 'rofs3': 3}
-                            rom_type_values = ['', '', '', '']
-                            rom_type_values[rom_types[binary.rom_type]] = str(binary.size)
-                            rom_type_text = ','.join(rom_type_values)
-                            self._out.write('%s,%s,%s\n' % (unit.name, binary.name, rom_type_text))
-                    
-    def close(self):
-        """ Closing the writer. """
-        self._out.close()
-    
-    
-    
--- a/buildframework/helium/tools/common/python/lib/test/__init__.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +0,0 @@
-#============================================================================ 
-#Name        : __init__.py 
-#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:
-#===============================================================================
-
--- a/buildframework/helium/tools/common/python/lib/test/test_ant.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,67 +0,0 @@
-#============================================================================ 
-#Name        : test_ant.py 
-#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:
-#===============================================================================
-
-""" ant.py module tests. """
-
-
-import ant
-
-
-def test_get_property():
-    """ Test get_property function. """
-    assert ant.get_property('') == ''
-    
-    # Property was not defined in Ant
-    assert ant.get_property('${foo}') == None
-    
-    # Property was defined, should provide value
-    assert ant.get_property('foo') == 'foo'
-
-
-def test_get_property_macro():
-    """ Test the support of get_property inside macro. """
-    # Property was not defined in Ant
-    assert ant.get_property('@{foo}') == None
-    
-    # Property was defined, should provide value
-    assert ant.get_property('foo') == 'foo'
-    
-    
-def test_get_previous_build_number():
-    """ Test get_previous_build_number function. """
-    assert ant.get_previous_build_number('01') == ''
-    
-    assert ant.get_previous_build_number('02') == '01'
-    
-    assert ant.get_previous_build_number('oci.01') == ''
-    
-    assert ant.get_previous_build_number('t.02') == 't.01'
-    
-    assert ant.get_previous_build_number('oci.02') == 'oci.01'
-    
-    assert ant.get_previous_build_number('oci.002') == 'oci.001'
-    
-    assert ant.get_previous_build_number('oci.12') == 'oci.11'
-    
-    assert ant.get_previous_build_number('oci.patch.02') == 'oci.patch.01'
-    
-    assert ant.get_previous_build_number('oci.patch.10') == 'oci.patch.9'
-
-    assert ant.get_previous_build_number('oci.patch.010') == 'oci.patch.009'
-    
\ No newline at end of file
--- a/buildframework/helium/tools/common/python/lib/test/test_bsf.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-#============================================================================ 
-#Name        : test_bsf.py 
-#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:
-#===============================================================================
-
-""" Some test cases for BSF file handling.
-"""
-
-import logging
-import os
-import unittest
-
-import bsf
-
-
-# Uncomment this line to enable logging in this module, or configure logging elsewhere
-#logging.basicConfig(level=logging.DEBUG)
-logger = logging.getLogger('test.bsf')
-
-
-class BSFTest(unittest.TestCase):
-    """ Implementation of BSF test cases. """
-    
-    def test_bsf(self):
-        """ Testing all methods from bsf class.
-        """
-        bsfs = bsf.read_all(os.path.join(os.environ['HELIUM_HOME'],'tests/data/bsf'))
-        assert len(bsfs.keys()) == 9, "Could not find 9 bsf files."
-        assert bsfs['product'] is not  None, "Could not find product."
-        assert bsfs['product'].is_variant() == True, "'product' should be a variant"
-        assert bsfs['product'].is_virtual_variant() == False, "'product' should not be a virtual variant"
-        assert bsfs['variant'].is_virtual_variant() == True, "'variant' should be a virtual variant"
-        assert bsfs['variant'].customize() == "armv5", "'variant' should customize armv5."
-        assert bsfs['product'].customize() == "platform", "'product' should customize armv5."
-        assert bsfs['variant'].compile_with_parent() == True, "'variant' should be compile with its parent."
-        assert bsfs['product'].compile_with_parent() == False, "'product' should not be compile with its parent."
-
-
- 
\ No newline at end of file
--- a/buildframework/helium/tools/common/python/lib/test/test_build_io.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,83 +0,0 @@
-#============================================================================ 
-#Name        : test_build_io.py 
-#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:
-#===============================================================================
-
-""" Test the build.io module. """
-
-import logging
-import unittest
-import os
-import build.io
-
-
-logger = logging.getLogger('test.build.io')
-
-
-class AbldLogWhatReaderTest(unittest.TestCase):
-    """ Test reading Symbian build logs for extracting abld -what sections. """
-    
-    def test_abld_what_parsing(self):
-        """ Basic abld -what section parsing. """ 
-        reader = build.io.AbldLogWhatReader(os.path.join(os.environ['HELIUM_HOME'], 'tests/data/build/io/abld_what.log'))
-        reader_iter = iter(reader)
-        (component1, binaries1) = reader_iter.next()
-        assert component1 == 'ibusal_chipset_product'
-        assert binaries1 == [r'\epoc32\release\ARMV5\UDEB\_product_NaviScrollPdd.pdd',
-                             r'\epoc32\release\ARMV5\UDEB\_product_NaviScrollPdd.pdd.map']
-        
-        (component2, binaries2) = reader_iter.next()
-        assert component2 == 'ibusal_chipset_product2'
-        assert binaries2 == [r'\epoc32\release\ARMV5\UDEB\_product2_accelerometerpdd.pdd',
-                             r'\epoc32\release\ARMV5\UDEB\_product2_accelerometerpdd.pdd.map']
-
-class RombuildLogBinarySizeReaderTest(unittest.TestCase):
-    """ Test reading Symbian ROM build logs for extracting binaries and their sizes. """
-    
-    def test_rom_log_parsing(self):
-        """ Basic ROM log binary size parsing. """ 
-        reader = build.io.RombuildLogBinarySizeReader(os.path.join(os.environ['HELIUM_HOME'], 'tests/data/build/io/test_rom.log'))
-        reader_iter = iter(reader)
-        (binary, size, rom_type) = reader_iter.next()
-        assert binary == r'\epoc32\release\ARMV5\urel\__ekern.exe'
-        assert size == 221788
-        assert rom_type == 'rom'
-        
-        (binary, size, rom_type) = reader_iter.next()
-        assert binary == r'\epoc32\release\ARMV5\urel\elocd.ldd'
-        assert size == 15192
-        assert rom_type == 'rom'
-        
-        (binary, size, rom_type) = reader_iter.next()
-        assert binary == r'\epoc32\release\ARMV5\urel\__medint.pdd'
-        assert size == 2320
-        assert rom_type == 'rom'
-        
-    def test_rofs_log_parsing(self):
-        """ Basic ROFS log binary size parsing. """ 
-        reader = build.io.RombuildLogBinarySizeReader(os.path.join(os.environ['HELIUM_HOME'], 'tests/data/build/io/test_rofs.log'))
-        reader_iter = iter(reader)
-        (binary, size, rom_type) = reader_iter.next()
-        assert binary == r'\epoc32\data\Z\Resource\ICL\jpegcodec_extra.rsc'
-        assert size == 202
-        assert rom_type == 'rofs'
-        
-        (binary, size, rom_type) = reader_iter.next()
-        assert binary == r'\epoc32\release\ARMV5\urel\jpegcodec.dll'
-        assert size == 89728
-        assert rom_type == 'rofs'
-        
\ No newline at end of file
--- a/buildframework/helium/tools/common/python/lib/test/test_buildtools.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-#============================================================================ 
-#Name        : test_buildtools.py 
-#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:
-#===============================================================================
-
-
-import os.path
-import shutil
-import unittest
-
-from buildtools import *
-
-
-class AntWriterTest(unittest.TestCase):
-    
-    def setUp(self):
-        self.temp = "temp"
-        os.makedirs(self.temp)
-    
-    def tearDown(self):
-        shutil.rmtree(self.temp)
-
-    def testOutput(self):
-        writer = AntWriter(os.path.join(self.temp, "buildtools_antwriter_test.ant.xml"))
-        commands = CommandList()
-        commands.addCommand(Command(self.temp, "foo"))
-        writer.write(commands)
-        writer.close()
-
-class MakerWriterTest(unittest.TestCase):
-    
-    def setUp(self):
-        self.temp = "temp"
-        os.makedirs(self.temp)
-    
-    def tearDown(self):
-        shutil.rmtree(self.temp)
-
-    def testOutput(self):
-        writer = AntWriter(os.path.join(self.temp, "buildtools_makewriter_test.mk"))
-        commands = CommandList()
-        commands.addCommand(Command(self.temp, "foo"))
-        writer.write(commands)
-        writer.close()
-
-if __name__ == "__main__":
-    unittest.main()
--- a/buildframework/helium/tools/common/python/lib/test/test_ccm_4pn.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,145 +0,0 @@
-#============================================================================ 
-#Name        : test_ccm_4pn.py 
-#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:
-#===============================================================================
-
-""" Test cases for ccm python toolkit.
-
-"""
-import unittest
-import sys
-import ccm
-import logging
-
-
-logger = logging.getLogger('test.ccm')
-
-
-class FourPartNameTest(unittest.TestCase):
-
-    def testSimpleFourPartNameParsing(self):
-        """Test the parsing of a simple four part name"""
-        strfpn = "simple.test-myversion1:ascii:mydb#1"
-        fpn = ccm.FourPartName(strfpn)
-        assert fpn.name == "simple.test"
-        assert fpn.version == "myversion1"
-        assert fpn.type == "ascii"
-        assert fpn.instance == "mydb#1"
-        assert strfpn == str(fpn)
-        assert strfpn == fpn.objectname
-
-    def testSpacesFourPartNameParsing(self):
-        """Test the parsing of a four part name that contains spaces"""
-        strfpn = "simple test.ext - myversion1 :ascii:mydb#1"
-        fpn = ccm.FourPartName(strfpn)
-        assert fpn.name == "simple test.ext "
-        assert fpn.version == " myversion1 "
-        assert fpn.type == "ascii"
-        assert fpn.instance == "mydb#1"
-        assert strfpn == str(fpn)
-        assert strfpn == fpn.objectname
-
-    def testHyphenedFourPartNameParsing(self):
-        """Test the parsing of a hyphened four part name"""
-        strfpn = "simple-test.ext-myversion1:ascii:mydb#1"
-        fpn = ccm.FourPartName(strfpn)
-        assert fpn.name == "simple-test.ext"
-        assert fpn.version == "myversion1"
-        assert fpn.type == "ascii"
-        assert fpn.instance == "mydb#1"
-        assert strfpn == str(fpn)
-        assert strfpn == fpn.objectname
-   
-    def testReleasedefParsing(self):
-        """Test the parsing of a releasedef four part name"""
-        strfpn = "myproject:myversion1:releasedef:mydb#1"
-        fpn = ccm.FourPartName(strfpn)
-        assert fpn.name == "myproject"
-        assert fpn.version == "myversion1"
-        assert fpn.type == "releasedef"
-        assert fpn.instance == "mydb#1"
-        assert strfpn == str(fpn)
-        assert strfpn == fpn.objectname
-
-    def testEquality(self):
-        """Test equality and same familly function"""
-        # testing different name
-        fpn1 = ccm.FourPartName("simple.test-myversion1:ascii:mydb#1")
-        fpn2 = ccm.FourPartName("simple.testx-myversion1:ascii:mydb#1")
-        assert fpn1 != fpn2
-        assert not fpn1.is_same_family(fpn2), "Should not be from the same family"
-        # testing different version
-        fpn2 = ccm.FourPartName("simple.test-myversion2:ascii:mydb#1")
-        assert fpn1 != fpn2
-        assert fpn1.is_same_family(fpn2), "Should be from the same family"
-        # testing different type
-        fpn2 = ccm.FourPartName("simple.test-myversion1:ascii2:mydb#1")
-        assert fpn1 != fpn2
-        assert not fpn1.is_same_family(fpn2), "Should not be from the same family"
-        # testing different instance
-        fpn2 = ccm.FourPartName("simple.test-myversion1:ascii:mydb#2")
-        assert fpn1 != fpn2
-        assert not fpn1.is_same_family(fpn2), "Should not be from the same family"
-
-    def testConvert(self):
-        # Test task displayname tranformation
-        fpn = ccm.FourPartName("Task mydb#123")
-        assert fpn.type == "task"
-        # Test folder displayname tranformation
-        fpn = ccm.FourPartName("Folder mydb#123")
-        assert fpn.type == "folder"
-        # Test Release tag displayname tranformation
-        fpn = ccm.FourPartName("mc/integration")
-        assert fpn.name == "mc"
-        assert fpn.version == "integration"
-        assert fpn.type == "releasedef"
-        assert fpn.instance == "1"
-
-        fpn = ccm.FourPartName("BTHID/3.2_2007_wk03")
-        assert fpn.name == "BTHID"
-        assert fpn.version == "3.2_2007_wk03"
-        assert fpn.type == "releasedef"
-        assert fpn.instance == "1"
-        
-        fpn = ccm.FourPartName("DRM_0.9")
-        assert fpn.name == "none"
-        assert fpn.version == "DRM_0.9"
-        assert fpn.type == "releasedef"
-        assert fpn.instance == "1"
-
-        try:
-            fpn = ccm.FourPartName("task mydb#123")
-            assert False, "Should raise InvalidFourPartNameException when parsing'task mydb#123'"
-        except ccm.InvalidFourPartNameException, e:
-            pass
-
-        try:
-            fpn = ccm.FourPartName("folder mydb#123")
-            assert False, "Should raise InvalidFourPartNameException when parsing'folder mydb#123'"
-        except ccm.InvalidFourPartNameException, e:
-            pass
-            
-            
-class InvalidFourPartNameExceptionTest(unittest.TestCase):
-    def testOutput(self):
-        """ Test the exception shows the arguments. """
-        ex = ccm.InvalidFourPartNameException('foo')
-        assert str(ex) == 'foo'
-
-
-if __name__ == "__main__":
-    unittest.main()
--- a/buildframework/helium/tools/common/python/lib/test/test_ccm_object.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,117 +0,0 @@
-#============================================================================ 
-#Name        : test_ccm_object.py 
-#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:
-#===============================================================================
-
-""" Test cases for ccm python toolkit.
-    unitesting CCMObject functionality
-"""
-import unittest
-import sys
-import ccm
-import logging
-
-# Uncomment this line to enable logging in this module, or configure logging elsewhere
-logging.basicConfig(level=logging.DEBUG)
-logger = logging.getLogger('test.ccm_objects')
-#
-#class CCMObjectTest(unittest.TestCase):
-#    """ Module related to CCMObject (and related) function testing. """
-#    
-#    def setUp(self):
-#        #vc1tltst
-#        self.session = ccm.open_session(database = 'to1tobet')
-#        if self.session is None:
-#            logger.error("Error creating connection.")
-#            raise Exception("Couldn't open a session.")
-#
-#    def tearDown(self):
-#        """ End of test: close opened synergy sessions. """
-#        if self.session is not None:
-#            self.session.close()
-#            self.session = None
-#        
-#    def test_query(self):
-#        """ Test simple synergy query that returns an object list. """
-#        result = self.session.execute("query \"name='mc'and type='project' and status='released'\" /u /f \"%objectname\"", ccm.ObjectListResult(self.session))
-#        for o in result.output:
-#            assert o.type == 'project'
-#            assert o['status'] == 'released'
-#                    
-#    def _test_checkout(self):
-#        """ Test project checkout. """
-#        project = self.session.create("mc-mc_4032_0728:project:vc1s60p1#1")
-#        release = self.session.create("mc/next")
-#        if not project.exists():
-#           logger.error("Project doesn't exists.")
-#           return       
-#        if not release.exists():           
-#           logger.error("Release doesn't exists.")
-#           return
-#           
-#        coproject = project.checkout(release).project
-#        assert coproject != None
-#        assert coproject.name == project.name
-#        assert coproject.type == project.type
-#        assert coproject.instance == project.instance
-#        try:
-#            coproject2 = project.checkout(release, coproject.version).project
-#            assert False, "Should fail as we are specifying an already existing version."
-#        except Exception, e:
-#            pass
-#        
-#
-
-class MockResultSession(ccm.AbstractSession):
-    """ Fake session used to test Result"""
-    def __init__(self, behave = {}, database="fakedb"):
-        ccm.AbstractSession.__init__(self, None, None, None, None)
-        self._behave = behave
-        self._database = database
-    
-    def database(self):
-        return self._database
-    
-    def execute(self, cmdline, result=None):
-        logger.debug(cmdline)
-        if result == None:
-            result = ccm.Result(self)        
-        if self._behave.has_key(cmdline):
-            result.status = 0  
-            result.output = self._behave[cmdline]
-        else:
-            result.status = -1  
-        return result
-
-class CCMObjectTest(unittest.TestCase):
-    
-    def test_get_baseline(self):
-        behave = {'up -show baseline_project "foo-1.0:project:db#1" -f "%displayname" -u': """foo-1.0:project:db#1 does not have a baseline project.
-""",
-                  'up -show baseline_project "foo-2.0:project:db#1" -f "%displayname" -u': """foo-1.0:project:db#1
-"""}
-        session = MockResultSession(behave)
-        objv1 = session.create('foo-1.0:project:db#1')
-        assert objv1.baseline == None
-        objv2 = session.create('foo-2.0:project:db#1')
-        assert objv2.baseline == objv1
-
-
-if __name__ == "__main__":
-    unittest.main()
-
-
--- a/buildframework/helium/tools/common/python/lib/test/test_ccm_results.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,483 +0,0 @@
-#============================================================================ 
-#Name        : test_ccm_results.py 
-#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:
-#===============================================================================
-
-""" Test cases for ccm python toolkit.
-
-"""
-import unittest
-import sys
-import ccm
-import os
-import logging
-
-
-logger = logging.getLogger('test.ccm_results')
-logging.basicConfig(level=logging.INFO)
-
-class CounterHandler(logging.Handler):
-    def __init__(self, level=logging.NOTSET):
-        logging.Handler.__init__(self, level)
-        self.warnings = 0
-        self.errors = 0
-        self.infos = 0
-    
-    def emit(self, record):
-        """ Handle the count the errors. """
-        if record.levelno == logging.INFO:
-            self.infos += 1
-        elif record.levelno == logging.WARNING:
-            self.warnings += 1
-        elif record.levelno == logging.ERROR:
-            self.errors += 1
-
-class MockResultSession(ccm.AbstractSession):
-    """ Fake session used to test Result"""
-    def __init__(self, behave = {}, database="fakedb"):
-        ccm.AbstractSession.__init__(self, None, None, None, None)
-        self._behave = behave
-        self._database = database
-    
-    def database(self):
-        return self._database
-    
-    def execute(self, cmdline, result=None):
-        if result == None:
-            result = ccm.Result(self)        
-        if self._behave.has_key(cmdline):
-            result.statuserrors = 0  
-            result.output = self._behave[cmdline]
-        else:
-            result.status = -1  
-        return result
-
-    
-class ResultTest(unittest.TestCase):
-    """ Testing Results parsers. """
-    def test_Result(self):
-        """ Test result. """
-        result = ccm.Result(None)
-        result.output = u"Nokia"
-        assert result.output == u"Nokia"
-
-    def test_Result_unicode_character(self):
-        """ Test result with unicode character. """
-        result = ccm.Result(None)
-        result.output = u"Nokia\xc2"
-        print result.output.encode('ascii', 'replace')
-        assert result.output == u"Nokia?"
-
-    def test_Result_str(self):
-        """ Test result from str. """
-        result = ccm.Result(None)
-        result.output = "Nokia"
-        assert result.output == "Nokia"
-
-    def test_Result_str_not_ascii(self):
-        """ Test result from str with not ascii. """
-        result = ccm.Result(None)
-        result.output = "Noki\xe4"
-        print result.output
-        assert result.output == "Noki"
-
-   
-    def test_ObjectListResult(self):
-        behave = { 'test_ObjectListResult': """mc-mc_0638:project:vc1s60p1#1
-mc-mc_4031_0642:project:vc1s60p1#1
-mc-mc_4031_0646:project:vc1s60p1#1
-mc-mc_4031_0650:project:vc1s60p1#1
-mc-mc_4031_0702:project:vc1s60p1#1
-mc-mc_4031_0704:project:vc1s60p1#1
-mc-mc_4031_0706:project:vc1s60p1#1
-mc-mc_4031_0706_v2:project:vc1s60p1#1
-mc-mc_4032_0708:project:vc1s60p1#1
-mc-mc_4032_0710:project:vc1s60p1#1
-mc-mc_4032_0712:project:vc1s60p1#1
-mc-mc_4032_0714:project:vc1s60p1#1
-mc-mc_4032_0716:project:vc1s60p1#1
-mc-mc_4032_0718:project:vc1s60p1#1
-mc-mc_4032_0720:project:vc1s60p1#1
-mc-mc_4032_0722:project:vc1s60p1#1
-mc-mc_4032_0724:project:vc1s60p1#1
-mc-mc_4032_0726.lum.09:project:vc1s60p1#1
-mc-mc_4032_0726:project:vc1s60p1#1
-mc-mc_4032_0728:project:vc1s60p1#1
-mc-mc_4032_0730:project:vc1s60p1#1
-mc-mc_4032_0732:project:vc1s60p1#1
-mc-mc_4032_0734:project:vc1s60p1#1
-mc-mc_4032_0736:project:vc1s60p1#1
-
-"""}
-        session = MockResultSession(behave)
-        result = session.execute('test_ObjectListResult', ccm.ObjectListResult(session))
-        assert len(result.output) == 24, "output doesn't contains the right number of result project."
-        for o in result.output:
-            assert o.type == 'project'
-            assert o.name == 'mc'
-
-    def test_WorkAreaInfoResult(self):
-        behave = { 'test_WorkAreaInfoResult': """
-Project                                            Maintain Copies Relative Time Translate Modify Path
--------------------------------------------------------------------
-mc_5132_build-fa1f5132#loc_0734:project:jk1f5132#1 TRUE     TRUE   TRUE     TRUE TRUE      FALSE  'E:\\WBERNARD\\ccm_wa\\fa1f5132\\mc-fa1f5132#loc_0734\\mc\\mc_build'
-
-"""}
-        session = MockResultSession(behave)
-        result = session.execute('test_WorkAreaInfoResult', ccm.WorkAreaInfoResult(session))
-        print result.output
-        print result.output['path']
-        assert str(result.output['project']) == "mc_5132_build-fa1f5132#loc_0734:project:jk1f5132#1", "wrong project name."
-        assert result.output['maintain'] == True, "maintain value is wrong."
-        assert result.output['copies'] == True, "copies value is wrong."
-        assert result.output['relative'] == True, "relative value is wrong."
-        assert result.output['time'] == True, "time value is wrong."
-        assert result.output['translate'] == True, "translate value is wrong."
-        assert result.output['modify'] == False, "modify value is wrong."
-        assert result.output['path'] == "E:\\WBERNARD\\ccm_wa\\fa1f5132\\mc-fa1f5132#loc_0734\\mc\\mc_build", "path value is wrong."
-            
-    def test_FinduseResult(self):
-        """ Test the parsing of the FinduseResult class. """
-        behave = { 'test_FinduseResult': """
-Ibusal_internal-fa1f5132#wbernard16:project:jk1imeng#1 working wbernard project Ibusal_internal jk1imeng#1 fa1f5132#2561
-        IBUSAL_RapidoYawe\Ibusal_internal-fa1f5132#wbernard16@IBUSAL_RapidoYawe-fa1f5132#wbernard16:project:jk1imeng#1
-        
-"""}
-        session = MockResultSession(behave)
-        object = session.create("Ibusal_internal-fa1f5132#wbernard16:project:jk1imeng#1")
-        result = session.execute('test_FinduseResult', ccm.FinduseResult(object))
-        print result.output
-        assert len(result.output) == 1
-        assert result.output[0]['project'].objectname == "IBUSAL_RapidoYawe-fa1f5132#wbernard16:project:jk1imeng#1"
-        assert result.output[0]['path'] == "IBUSAL_RapidoYawe"
-          
-          
-    def test_read_ccmwaid_info(self):
-        """ Testing read_ccmwaid_info, open a _ccmwaid.inf file and check the extracted data. """
-        data = ccm.read_ccmwaid_info(os.path.join(os.environ["HELIUM_HOME"], 'tests', 'data', 'test_ccmwaid.inf'))
-        logger.debug(data)
-        assert data['database'] == "jk1f5132"
-        assert data['objectname'] == "sa1spp#1/project/S60/jk1f5132#wbernard"
-
-    def test_update_result(self):
-        """ Validating UpdateResult."""        
-        behave = {'test_update' :"""Starting update process...
-
-Updating project 'Cartman-wbernard5:project:tr1test1#1' from object version 'Cartman-wbernard5:project:tr1test1#1'...
-Refreshing baseline and tasks for project grouping 'My cartman/060530_v2 Collaborative Development Projects'.
-Replacing tasks in folder tr1test1#2008
-  Contents of folder tr1test1#2008 have not changed.
-Replacing tasks in folder tr1test1#2009
-  Contents of folder tr1test1#2009 have not changed.
-Added the following tasks to project grouping 'My cartman/060530_v2 Collaborative Development Projects':
-    Task tr1test1#3426: Update Cartman subprojects
-    Task tr1test1#3429: Create Kyle subprojects
-    Task tr1test1#3430: Add Kyle02 subpr hierarchy
-    Task tr1test1#3431: Add a file to cartman_sub_sub02
-
-
-Updating project 'Cartman_sub01-wbernard3:project:tr1test1#1', reselecting root object version...
-Update for 'Cartman-wbernard5:project:tr1test1#1' complete with 0 out of 3 objects replaced.
-
-Updating project 'Cartman_sub_sub01-wbernard3:project:tr1test1#1', reselecting root object version...
-Update for 'Cartman_sub01-wbernard3:project:tr1test1#1' complete with 0 out of 2 objects replaced.
-
-Updating project 'Cartman_sub02-wbernard3:project:tr1test1#1', reselecting root object version...
-Update for 'Cartman_sub_sub01-wbernard3:project:tr1test1#1' complete with 0 out of 1 objects replaced.
-    'Cartman_sub02-2:dir:tr1test1#1' replaces 'Cartman_sub02-1:dir:tr1test1#1' under 'Cartman_sub02-wbernard3:project:tr1test1#1'.
-
-Updating project 'Cartman_sub_sub02-wbernard6:project:tr1test1#1', reselecting root object version...
-Update for 'Cartman_sub02-wbernard3:project:tr1test1#1' complete with 2 out of 2 objects replaced.
-    Subproject 'Cartman_sub_sub02-wbernard6:project:tr1test1#1' is now bound under 'Cartman_sub02-2:dir:tr1test1#1'.
-    'Cartman_sub_sub02-2:dir:tr1test1#1' replaces 'Cartman_sub_sub02-1:dir:tr1test1#1' under 'Cartman_sub_sub02-wbernard6:project:tr1test1#1'.
-Update for 'Cartman_sub_sub02-wbernard6:project:tr1test1#1' complete with 2 out of 2 objects replaced.
-    'xzx.iby-1:epocrom:tr1test1#1' is now bound under 'Cartman_sub_sub02-2:dir:tr1test1#1'.
-
-
-Update Summary:
- Cartman_sub_sub02:dir:tr1test1#1 in project Cartman_sub_sub02-wbernard2:project:tr1test1#1 had no candidates
-
-Update complete.
-"""}
-        session = MockResultSession(behave)
-        result = session.execute('test_update', ccm.UpdateResult(session))
-        #logger.debug(result.output)
-        assert len(result.output['tasks']) == 4, "Number of tasks doesn't match."
-        assert len(result.output['modifications']) == 4, "Number of modifications doesn't match."
-        assert len(result.output['errors']) == 1, "Number of errors doesn't match."
-
-    def test_update_result_serious_failure(self):
-        """ Validating UpdateResult with serious failure."""        
-        behave = {'test_update' :"""Starting update process...
-
-Updating project 'MinibuildDomain-wbernard3:project:tr1test1#1' from object version 'MinibuildDomain-wbernard3:project:tr1test1#1'...
-Refreshing baseline and tasks for project grouping 'My MinibuildDomain/next Insulated Development Projects'.
-Replacing tasks in folder tr1test1#2068
-  Contents of folder tr1test1#2068 have not changed.
-Setting path for work area of 'helloworldcons-wbernard2' to 'c:\users\ccm65\ccm_wa\tr1test1\MinibuildDomain'...
-Warning: 'c:\users\ccm65\ccm_wa\tr1test1\MinibuildDomain\helloworldcons' already used as work area for project 'helloworldcons-wbernard'
-Warning: Unable to update path for work area of 'helloworldcons-wbernard2'
-Warning: Unable to update membership of project 'MinibuildDomain-wbernard3'
-Work area delete of 'helloworldcons-wbernard2:project:tr1test1#1' failed
-Warning: Unable to update membership of project MinibuildDomain-wbernard3 with MinibuildDomain-2:dir:tr1test1#1
-Rebind of MinibuildDomain-1:dir:tr1test1#1 failed
-Warning: Update for project 'MinibuildDomain-wbernard3:project:tr1test1#1' failed.
-
-Update Summary
-2 failures to use the selected object version
-    Failed to remove selected object helloworldcons-wbernard2:project:tr1test1#1 under directory MinibuildDomain-1:dir:tr1test1#1 from project MinibuildDomain-wbernard3 : work area delete failed
-    Failed to use selected object MinibuildDomain-2:dir:tr1test1#1 under directory MinibuildDomain-wbernard3:project:tr1test1#1 in project MinibuildDomain-wbernard3
-Serious: 
-Update failed.
-"""}
-        session = MockResultSession(behave)
-        result = session.execute('test_update', ccm.UpdateResult(session))
-        #logger.debug(result.output)
-        #logger.debug(result.output.keys())
-        #logger.debug(len(result.output['tasks']))
-        #logger.debug(len(result.output['modifications']))
-        #logger.debug(len(result.output['errors']))
-        #logger.debug(len(result.output['warnings']))
-        
-        assert (len(result.output['tasks']) == 0), "Number of tasks doesn't match."
-        assert (len(result.output['modifications']) == 0), "Number of modifications doesn't match."
-        assert (len(result.output['errors']) == 1), "Number of errors doesn't match."
-        assert (len(result.output['warnings']) == 5), "Number of warnings doesn't match."
-
-
-    def test_UpdateTemplateInformation_result(self):        
-        """ Validating UpdateTemplateInformation."""                
-        behave = {'test_update' : """Baseline Selection Mode: Latest Baseline Projects
-Prep Allowed:            No
-Versions Matching:       *abs.50*
-Release Purposes:
-Use by Default:          Yes
-Modifiable in Database:  tr1s60
-In Use For Release:      Yes
-Folder Templates and Folders:
-    Template assigned or completed tasks for %owner for release %release
-    Template all completed tasks for release %release
-    Folder   tr1s60#4844: All completed Xuikon/Xuikon_rel_X tasks
-    Folder   tr1s60#4930: All tasks for release AppBaseDo_50        
-        """}
-        session = MockResultSession(behave)
-        result = session.execute('test_update', ccm.UpdateTemplateInformation(session))
-        #logger.debug(result.output)
-        assert result.output['baseline_selection_mode'] == "Latest Baseline Projects", "BSM doesn't match."
-        assert result.output['prep_allowed'] == False, "Prep allowed doesn't match."
-        assert result.output['version_matching'] == "*abs.50*", "Version matching doesn't match."
-        assert result.output['release_purpose'] == "", "Release purpose doesn't match."
-        assert result.output['modifiable_in_database'] == "tr1s60", "Modifiable in Database doesn't match."
-        assert result.output['in_use_for_release'] == True, "In Use For Release doesn't match."
-    
-    def test_ConflictsResult_result(self):        
-        """ Validating ConflictsResult."""                
-        behave = {'test_update' : """        
-Project: Cartman-Release_v4
-
-         No conflicts detected.
-
-Project: Cartman_sub03-next
-
-         No conflicts detected.
-
-Project: Cartman_sub01-Release_v2
-
-         No conflicts detected.
-
-Project: Cartman_sub02-Release_v4
-
-         No conflicts detected.
-
-Project: Cartman_sub_sub01-Release_v2
-
-         No conflicts detected.
-
-Project: Cartman_sub_sub02-Release_v4
-
-         No conflicts detected.
-
-Project: Cartman_sub_sub_sub02-Release_v4
-
-tr1test1#5224   Explicitly specified but not included
-tr1test1#5226   Explicitly specified but not included
-        """}
-        session = MockResultSession(behave)
-        result = session.execute('test_update', ccm.ConflictsResult(session))
-        #logger.debug(result.output)
-        # pylint: disable-msg=E1103
-        assert len(result.output.keys()) == 7, "Should detect 7 projects."
-        subproj = session.create("Cartman_sub_sub_sub02-Release_v4:project:%s#1" % session.database())
-        assert len(result.output[subproj]) == 2, "%s should contain 2 conflicts" % subproj.objectname
-
-
-    def test_DataMapperListResult_result(self):        
-        """ Validating DataMapperListResult."""                        
-        behave = {'test_query' : """>>>objectname>>>task5204-1:task:tr1test1>>>task_synopsis>>>Create Cartman_sub03>>>
->>>objectname>>>task5223-1:task:tr1test1>>>task_synopsis>>>cartman/next test1>>>
->>>objectname>>>task5224-1:task:tr1test1>>>task_synopsis>>>test.txt>>>
->>>objectname>>>task5225-1:task:tr1test1>>>task_synopsis>>>test.txt 2>>>
->>>objectname>>>task5226-1:task:tr1test1>>>task_synopsis>>>test.txt merge>>>
->>>objectname>>>task5240-1:task:tr1test1>>>task_synopsis>>>add calculator>>>
-"""}
-        session = MockResultSession(behave)
-        result = session.execute('test_query', ccm.DataMapperListResult(session, '>>>', ['objectname', 'task_synopsis'], ['ccmobject', 'string']))        
-        logger.debug(result.output)
-        assert len(result.output) == 6
-        
-    def test_UpdatePropertiesRefreshResult_result(self):        
-        """ Validating UpdatePropertiesRefreshResult."""                        
-        behave = {'test_refresh' : """Refreshing baseline and tasks for project grouping 'All cartman/next Integration Testing Projects from Database tr1test1'.
-Replacing tasks in folder tr1test1#2045
-  Removed the following tasks from folder tr1test1#2045
-        Task tr1test1#5225: test.txt 2
-
-  Added the following tasks to folder tr1test1#2045
-        Task tr1test1#5223: cartman/next test1
-
-Added the following tasks to project grouping 'All cartman/next Integration Testing Projects from Database tr1test1':
-        Task tr1test1#5223: cartman/next test1
-
-Removed the following tasks from project grouping 'All cartman/next Integration Testing Projects from Database tr1test1':
-        Task tr1test1#5225: test.txt 2
-"""}
-        session = MockResultSession(behave)
-        result = session.execute('test_refresh', ccm.UpdatePropertiesRefreshResult(session))        
-        logger.debug(result.output)
-        assert result.output['added'] == [session.create("Task tr1test1#5223")]
-        assert result.output['removed'] == [session.create("Task tr1test1#5225")]
-
-    def test_update_log_result(self):
-        """ Testing update log parsing. """
-        log = """Starting update process...
-
-Updating project 'MinibuildDomain-wbernard3:project:tr1test1#1' from object version 'MinibuildDomain-wbernard3:project:tr1test1#1'...
-Refreshing baseline and tasks for project grouping 'My MinibuildDomain/next Insulated Development Projects'.
-Replacing tasks in folder tr1test1#2068
-  Contents of folder tr1test1#2068 have not changed.
-Setting path for work area of 'helloworldcons-wbernard2' to 'c:\users\ccm65\ccm_wa\tr1test1\MinibuildDomain'...
-Warning: 'c:\users\ccm65\ccm_wa\tr1test1\MinibuildDomain\helloworldcons' already used as work area for project 'helloworldcons-wbernard'
-Warning: Unable to update path for work area of 'helloworldcons-wbernard2'
-Warning: Unable to update membership of project 'MinibuildDomain-wbernard3'
-Work area delete of 'helloworldcons-wbernard2:project:tr1test1#1' failed
-Warning: Unable to update membership of project MinibuildDomain-wbernard3 with MinibuildDomain-2:dir:tr1test1#1
-Rebind of MinibuildDomain-1:dir:tr1test1#1 failed
-Warning: Update for project 'MinibuildDomain-wbernard3:project:tr1test1#1' failed.
-Warning: This work area 'c:\users\ccm65\ccm_wa\tr1sido\mrurlparserplugin\mrurlparserplugin' cannot be reused
-Warning:  No candidates found for directory entry ecompluginnotifier.cpp:cppsrc:e003sa01#1.  It will be left empty!
-WARNING: There is no matching baseline project for 'ci-hitchcock_nga' in baseline 'tr1s60#ABS_domain_mcl92-abs.mcl.92_200907'.  This baseline might not be complete
-
-Update Summary
-2 failures to use the selected object version
-    Failed to remove selected object helloworldcons-wbernard2:project:tr1test1#1 under directory MinibuildDomain-1:dir:tr1test1#1 from project MinibuildDomain-wbernard3 : work area delete failed
-    Failed to use selected object MinibuildDomain-2:dir:tr1test1#1 under directory MinibuildDomain-wbernard3:project:tr1test1#1 in project MinibuildDomain-wbernard3
-Serious: 
-Update failed.
-"""
-        logger = logging.getLogger('count.logger')
-        logger.setLevel(logging.WARNING)
-        handler = CounterHandler()
-        logger.addHandler(handler)
-        ccm.log_result(log, ccm.UPDATE_LOG_RULES, logger)
-        print handler.warnings
-        print handler.errors
-        assert handler.warnings == 5
-        assert handler.errors == 9
-
-
-    def test_checkout_log_result(self):
-        """ Testing checkout log parsing. """
-        log = """Setting path for work area of 'swservices_domain-ssdo_7132_200912_Shakira_Gwen1' to 'E:\Build_E\DaveS\Integration\_no_context_\swservices_domain'...
-Saved work area options for project: 'swservices_domain-ssdo_7132_200912_Shakira_Gwen1'
-Derive failed for MobileSearch-MobileSearch_4_10_09w09_S60_3_2:project:sa1mosx1#1
-Warning: Project name is either invalid or does not exist: 
-Warning: fa1ssdo#MobileSearch_4_10_09w09_S60_3_3 too long, use name less than 32 characters long.
-Warning: Object version 'fa1ssdo#MobileSearch_4_10_09w09_S60_3_3' too long, use version less than 32 characters long.
-Copy Project complete with 1 errors.
-WARNING: There is no matching baseline project for 'ci-hitchcock_nga' in baseline 'tr1s60#ABS_domain_mcl92-abs.mcl.92_200907'.  This baseline might not be complete
-"""
-        logger = logging.getLogger('count.logger')
-        logger.setLevel(logging.WARNING)
-        handler = CounterHandler()
-        logger.addHandler(handler)
-        ccm.log_result(log, ccm.CHECKOUT_LOG_RULES, logger)
-        print handler.warnings
-        print handler.errors
-        assert handler.warnings == 4
-        assert handler.errors == 1
-
-        
-    def test_sync_log_result(self):
-        """ Testing sync log parsing. """
-        log = """Synchronization summary:
-       0 Update(s) for project MinibuildDomain-wbernard7
-       0 Update(s) for project helloworldapi-wbernard7
-       0 Update(s) for project helloworldcons-wbernard5
-       0 Conflict(s) for project MinibuildDomain-wbernard7
-       1 Conflict(s) for project helloworldapi-wbernard7
-       0 Conflict(s) for project helloworldcons-wbernard5
-You can use Reconcile to resolve work area conflicts
-Warning: Conflicts detected during synchronization. Check your logs.
-"""
-        logger = logging.getLogger('count.logger')
-        logger.setLevel(logging.WARNING)
-        handler = CounterHandler()
-        logger.addHandler(handler)
-        ccm.log_result(log, ccm.SYNC_LOG_RULES, logger)
-        print handler.warnings
-        print handler.errors
-        assert handler.warnings == 0
-        assert handler.errors == 2
-
-    def test_ResultWithError(self):
-        """ Test result. """
-        result = ccm.ResultWithError(None)
-        result.output = u"Nokia"
-        result.error = u"Nokio"
-        assert result.output == u"Nokia"
-        assert result.error == u"Nokio"
-
-    def test_ResultWithError_unicode_character(self):
-        """ Test result with unicode character. """
-        result = ccm.ResultWithError(None)
-        result.output = u"Nokia\xc2"
-        result.error = u"Nokio\xc2"
-        print result.output.encode('ascii', 'replace')
-        print result.error.encode('ascii', 'replace')
-        assert result.output == u"Nokia?"
-        assert result.error == u"Nokio?"
-
-    def test_ResultWithError_str(self):
-        """ Test result from str. """
-        result = ccm.ResultWithError(None)
-        result.output = "Nokia"
-        result.error = "Nokio"
-        assert result.output == "Nokia"
-        assert result.error == "Nokio"
-
-    def test_ResultWithError_str_not_ascii(self):
-        """ Test result from str with not ascii. """
-        result = ccm.ResultWithError(None)
-        result.output = "Noki\xe4"
-        result.error = "Nokio\xe5"
-        print result.output
-        print result.error
-        assert result.output == "Noki"
-        assert result.error == "Nokio"
-
-if __name__ == "__main__":
-    unittest.main()
--- a/buildframework/helium/tools/common/python/lib/test/test_configuration.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,283 +0,0 @@
-#============================================================================ 
-#Name        : test_configuration.py 
-#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:
-#===============================================================================
-
-import logging
-import StringIO
-import unittest
-import os
-import tempfile
-import sys
-import configuration
-
-_logger = logging.getLogger('test.configuration')
-logging.basicConfig(level=logging.INFO)
-
-class NestedConfigurationBuilderTest(unittest.TestCase):
-    def setUp(self):
-        """ Setup. """
-        config_file = open(os.path.join(os.environ['HELIUM_HOME'], 'tests/data/config_test.cfg.xml'), 'r')
-        self._builder = configuration.NestedConfigurationBuilder(config_file)
-        
-    def test_config_parsing(self):
-        """A basic configuration can be parsed."""
-        config_set = self._builder.getConfiguration()
-        configs = config_set.getConfigurations()
-        
-        assert len(configs) == 10
-        for config in configs:
-            print
-            for k in config.keys():
-                print k + ': ' + str(config[k])
-
-        assert configs[0]['A'] == 'foo'
-        assert configs[0]['B'] == 'child -> foo'
-        assert configs[0]['C'] == 'missing value test ${does_not_exist}'
-        assert configs[0]['node.content'].strip() == 'This is the value!'
-        assert configs[1]['A'] == 'foo'
-        assert configs[1]['B'] == 'parent: foo'
-        assert configs[1]['C'] == ['one', 'two']
-        assert 'C' in configs[1]
-        assert 'Z' not in configs[1]
-
-        configs = config_set.getConfigurations('spec.with.type')
-        assert len(configs) == 1
-        assert configs[0].type == 'test.type', "config.type must match 'test.type'."
-        
-        configs = config_set.getConfigurations(type='test.type')
-        assert len(configs) == 2
-        assert configs[0].type == 'test.type', "config.type must match 'test.type'."
-
-        configs = config_set.getConfigurations(name='test_spec', type='test.type')
-        assert len(configs) == 2
-        assert configs[0].type == 'test.type', "config.type must match 'test.type'."
-        
-    def test_append(self):
-        """A child value can be appended to a parent value."""
-        configs = self._builder.getConfigurations()
-        config = configs[4]
-        assert config['A'] == ['foo', 'bar']
-        
-    def test_parent_interpolated_by_child(self):
-        """ A child value can be interpolated into a parent template. """
-        configs = self._builder.getConfigurations()
-        parent_config = configs[5]
-        child_config = configs[6]
-        assert parent_config['template'] == 'value -> from parent'
-        assert child_config['template'] == 'value -> from child'
-     
-    def test_property_escaping(self):
-        """ Property values can be escaped in the values of other properties. """
-        config_text = """
-<build>
-    <config name="test_spec">
-        <set name="A" value="foo"/>
-        <set name="B" value="A = ${A}"/>
-    </config>
-</build>"""
-
-        builder = configuration.NestedConfigurationBuilder(StringIO.StringIO(config_text))
-        config = builder.getConfiguration().getConfigurations()[0]
-        print config['B']
-        #assert configs[1]['C'] == ['one', 'two']
-
-    def test_any_root_element(self):
-        """ Any root element name can be used. """
-        config_text = """
-<someConfigData>
-    <config name="test_spec">
-        <set name="A" value="foo"/>
-    </config>
-</someConfigData>"""
-
-        builder = configuration.NestedConfigurationBuilder(StringIO.StringIO(config_text))
-        config = builder.getConfiguration().getConfigurations()[0]
-        assert config['A'] == 'foo'
-
-    def test_list_templating(self):
-        """ Testing list templating. """
-        configs = self._builder.getConfigurations('test_list_config1')
-        # should return only one config.
-        assert len(configs) == 1
-        
-        _logger.debug(configs[0].get_list('include', []))
-        result = configs[0].get_list('include', [])
-        result.sort()
-        print result
-        assert len(result) == 3
-        assert result == [u'bar1_config1', u'bar2_config1', u'foo_config1']        
-
-    def test_list_templating2(self):
-        """ Testing list templating 2. """
-        configs = self._builder.getConfigurations('test_list_config2')
-        # should return only one config.
-        assert len(configs) == 1
-        
-        _logger.debug(configs[0].get_list('include', []))
-        result = configs[0].get_list('include', [])
-        result.sort()
-        print result
-        assert len(result) == 3
-        assert result == [u'bar1_config2', u'bar2_config2', u'foo_config2']        
-        
-
-    def test_append_list(self):
-        """ Testing if append handles the list correctly..."""
-        config_text = """
-<build>
-<config name="prebuild_zip" abstract="true">
-   <set name="exclude" value="**/_ccmwaid.inf" />
-   <set name="exclude" value="build/**" />
-   <set name="exclude" value="config/**" />
-   <set name="exclude" value="ncp_sw/**" />
-   <set name="exclude" value="ppd_sw/**" />
-   <set name="exclude" value="psw/**" />
-   <set name="exclude" value="tools/**" />
-   <set name="include" value="foo/**" />
-   <config>
-    <set name="root.dir" value="X:/rootdir" />
-    <set name="name" value="PF5250_200832_internal_code" />
-    <set name="include" value="**/internal/**" />
-    <set name="grace.filters" value="tsrc" />
-    <set name="grace.default" value="false" />
-   </config>
-   <config>
-    <set name="root.dir" value="X:/rootdir" />
-    <set name="name" value="PF5250_200832_doc" />
-    <append name="include" value="**/doc/**" />
-    <set name="include" value="**/docs/**" />
-    <append name="exclude" value="**/internal/**" />                            <!-- set changed to append -->
-    <set name="grace.filters" value="tsrc" />
-    <set name="grace.default" value="false" />
-   </config>
-  </config>
-</build>
-"""        
-        builder = configuration.NestedConfigurationBuilder(StringIO.StringIO(config_text))
-        configs = builder.getConfigurations()
-        config = configs[1]
-        print config['exclude']
-        print config['include']
-        exclude_match = [u'**/_ccmwaid.inf', u'build/**', u'config/**',
-                                          u'ncp_sw/**', u'ppd_sw/**', u'psw/**', u'tools/**',
-                                          u'**/internal/**']
-        exclude_result = config['exclude']
-        exclude_match.sort()
-        exclude_result.sort()
-        assert len(config['include']) == 3
-        assert exclude_result == exclude_match
-
-        config = configs[0]
-        assert config['include'] == '**/internal/**'
-        assert len(config['exclude']) == 7
-        
-    def test_writeToXML(self):
-        """ To write the configurations into XML file. """
-        config_text = """
-<build>
-    <config name="test_spec">
-        <set name="A" value="foo"/>
-        <set name="B" value="A = ${A}"/>
-        <config name="test_spec_1">
-            <set name="A" value="foo"/>
-            <set name="B" value="A = ${A}"/>        
-        </config>
-        <config name="test_spec_2">
-            <set name="A" value="foo"/>
-            <set name="B" value="A = ${A}"/>
-            <config name="test_spec_3">
-                <set name="A" value="foo"/>
-                <set name="B" value="A = ${A}"/>        
-            </config>        
-        </config>        
-    </config>
-</build>"""    
-        
-        builder = configuration.NestedConfigurationBuilder(StringIO.StringIO(config_text))
-        configSet = builder.getConfiguration()
-        configs = configSet.getConfigurations('test_spec_1')
-        (out, outputFile) = tempfile.mkstemp('.tmp', 'zip_test')
-        builder.writeToXML(outputFile, configs, 'test_spec_1')
-        
-        builder = configuration.NestedConfigurationBuilder(open(outputFile), 'r')
-        configSet = builder.getConfiguration()
-        configs = configSet.getConfigurations('test_spec_1')
-        config = configs[0]
-        assert config['A'] == 'foo'
-        
-        builder = configuration.NestedConfigurationBuilder(StringIO.StringIO(config_text))
-        configSet = builder.getConfiguration()
-        configs = configSet.getConfigurations('test_spec')
-        (out, outputFile) = tempfile.mkstemp('.tmp', 'zip_test')
-        builder.writeToXML(outputFile, configs )
-        
-        builder = configuration.NestedConfigurationBuilder(open(outputFile), 'r')
-        configSet = builder.getConfiguration()
-        configs = configSet.getConfigurations('test_spec')
-        config = configs[0]
-        assert config['B'] == 'A = foo'
-        
-        
-
-        
-class PropertiesConfigurationTest(unittest.TestCase):
-    """ Test plain text configuration files. """
-    def test_text_config(self):
-        """ Basic text properties can be read. """
-        config = configuration.PropertiesConfiguration(open(os.path.join(os.environ['HELIUM_HOME'], 'tests/data/ant_config_test.txt'), 'r'))
-        
-        assert config['text.a'] == 'text.value.A'
-        assert config['text.b'] == 'text.value.B'
-
-    def test_text_config_store(self):
-        """ Basic text properties can be read. """
-        config = configuration.PropertiesConfiguration(open(os.path.join(os.environ['HELIUM_HOME'], 'tests/data/ant_config_test.txt'), 'r'))
-
-        config['foo'] = "bar"
-        
-        config.store(open(os.path.join(os.environ['HELIUM_HOME'], 'build/test.ini'), "w+"))
-        config = configuration.PropertiesConfiguration(open(os.path.join(os.environ['HELIUM_HOME'], 'build/test.ini'), 'r'))
-        
-        assert config['text.a'] == 'text.value.A'
-        assert config['text.b'] == 'text.value.B'
-        assert config['foo'] == 'bar'
-        
-        
-if 'java' not in sys.platform:
-    class XMLConfigurationTest(unittest.TestCase):
-        """ Test XML format configuration files. """
-        
-        def test_single_node_xml(self):
-            """ Properties can be read from 1 level of XML sub-elements. """
-            config = configuration.XMLConfiguration(open(os.path.join(os.environ['HELIUM_HOME'], 'tests/data/ant_config_test.xml'), 'r'))
-            
-            assert config['foo'] == 'bar'
-            assert config['interpolated'] == 'foo value = bar'
-            
-        def test_nested_node_xml(self):
-            """ Properties can be read from multiple levels of XML sub-elements. """
-            config = configuration.XMLConfiguration(open(os.path.join(os.environ['HELIUM_HOME'], 'tests/data/ant_config_test.xml'), 'r'))
-            
-            assert config['xml.c'] == 'C'
-            
-        def test_xml_list(self):
-            """ Multiple XML elements can be read as a list. """
-            config = configuration.XMLConfiguration(open(os.path.join(os.environ['HELIUM_HOME'], 'tests/data/ant_config_test.xml'), 'r'))
-            
-            assert config['array.value'] == 'one,two,three'
-        
\ No newline at end of file
--- a/buildframework/helium/tools/common/python/lib/test/test_ctc.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,98 +0,0 @@
-#============================================================================ 
-#Name        : test_ctc.py 
-#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:
-#===============================================================================
-
-import unittest
-import ctc
-import logging
-import time
-import os
-import fileutils
-
-_logger = logging.getLogger('test.configuration')
-logging.basicConfig(level=logging.INFO)
-
-root_test_dir = "build/_test_" + str(time.strftime("%H.%M.%S"))
-_test_file_paths = [
-                    "ctc/dir/component1/group/MON.SYM",
-                    "ctc/dir/component2/group/",
-                    "ctc/dir/component3/group/MON.SYM",
-]
-
-def _testpath(subpath):
-    """ Normalised path for test paths. """
-    return os.path.normpath(os.path.join(root_test_dir, subpath))
-
-_test_file_content = {}
-
-def setup_module():
-    """ Setup files test config. 
-    
-    This creates a number of empty files in a temporary directory structure
-    for testing various file selection and archiving operations.
-    """
-    for child_path in _test_file_paths:
-        path = os.path.join(root_test_dir, child_path)
-        path_dir = path
-        path_dir = os.path.dirname(path)
-        
-        if (not os.path.exists(path_dir)):
-            _logger.debug('Creating dir:  ' + path_dir)
-            os.makedirs(path_dir)
-
-        if(not path.endswith('/') and not path.endswith('\\')):
-            _logger.debug('Creating file: ' + path)
-            handle = open(path, 'w')
-            # Write any file content that is needed
-            if _test_file_content.has_key(child_path):
-                handle.write(_test_file_content[child_path])
-            handle.close()
-
-def teardown_module():
-    """ Teardown test config. """
-    if os.path.exists(root_test_dir):
-        fileutils.rmtree(root_test_dir)
-    
-
-class MockUploader(ctc.MonSymFTPUploader):
-    
-    def _open(self):
-        pass
-    
-    def _close(self):
-        pass
-
-    def _ftpmkdirs(self, dir):
-        pass    
-    
-    def _send(self, src, dst):
-        pass
-
-class NestedConfigurationBuilderTest(unittest.TestCase):
-        
-    def test_uploader(self):
-        paths = [   "ctc/dir/component1/group/MON.SYM",
-                    "ctc/dir/component2/group/MON.SYM",
-                    "ctc/dir/component3/group/MON.SYM",
-                    ]
-        uploader = MockUploader("server", [_testpath(p) for p in paths], "1234")
-        result = uploader.upload()
-        print result
-        assert len(result) == 2
-        assert result[0] == "ctc_helium/1234/mon_syms/1/MON.SYM"
-        assert result[1] == "ctc_helium/1234/mon_syms/2/MON.SYM"
--- a/buildframework/helium/tools/common/python/lib/test/test_deltazip.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,123 +0,0 @@
-#============================================================================ 
-#Name        : test_deltazip.py 
-#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:
-#===============================================================================
-
-""" Unit tests for the delta zip tool.
-
-"""
-
-from __future__ import with_statement
-import unittest
-import delta_zip
-import logging
-import os
-import sys
-import tempfile
-
-class DeltaZipTest( unittest.TestCase ):
-    
-    def setUp(self):
-        self.cwd_backup = os.getcwd()
-        self.helium_home = os.environ["HELIUM_HOME"]
-        self.logger = logging.getLogger('test.deltazip')
-        self.root = os.path.join(self.helium_home, r'tools\common\python\lib')
-        self.output = os.path.join(os.environ['TEMP'], 'deltazip')
-        self.output2 = os.path.join(os.environ['TEMP'], 'deltazip2')
-        
-        logging.basicConfig(level=logging.INFO)
-
-    def test_MD5SignatureBuilder(self):
-        
-        output = os.path.join(self.output2, 'md5_list.txt')
-        md5output = os.path.join(self.output2, 'delta.md5')
-        
-        if os.path.exists(output):
-            os.remove(output)
-        
-        sig = delta_zip.MD5SignatureBuilderEBS(self.root, 1, self.output2, '', output)
-        sig.write_build_file()
-        if sys.platform == 'win32':
-            assert os.path.splitdrive(self.root)[0] + os.sep not in open(output).read()
-        assert os.path.exists(output)
-    def test_DeltaZipBuilder(self):
-        if not os.path.exists(self.output):
-            os.mkdir(self.output)
-      
-        md5output = os.path.join(self.output, 'delta.md5')
-        oldmd5output = os.path.join(self.output, 'olddelta.md5')
-      
-        thisfile = os.path.abspath(__file__)
-        md5string = """
-Host:fasym014
-Username:ssteiner
-Date-Time:Fri Aug 17 08:47:40 2007
-Version:0.02
-Directory:z:\
-FileList:z:\output/delta_zip\list_files.txt
-Exclusion(s):
-Inclusion(s):
-----------------
-%s TYPE=unknown format MD5=34dcda0d351c75e4942b55e1b2e2422f
-        """ % thisfile
-        
-
-        tempoutput = open(md5output, 'w')
-        tempoutput.write(md5string)
-        tempoutput.close()
-        
-        md5string = """
-Host:fasym014
-Username:ssteiner
-Date-Time:Fri Aug 17 08:47:40 2007
-Version:0.02
-Directory:z:\
-FileList:z:\output/delta_zip\list_files.txt
-Exclusion(s):
-Inclusion(s):
-----------------
-%s TYPE=unknown format MD5=34dcda0d351c75e4942b55e1b2e2422g
-        """ % thisfile
-        
-        tempoutput = open(oldmd5output, 'w')
-        tempoutput.write(md5string)
-        tempoutput.close()
-        
-        deltazipfile = os.path.join(self.output, 'delta.zip')
-        deltaantfile = os.path.join(self.output, 'delta.ant.xml')
-        deletefile = os.path.join(self.output, 'delta_zip_specialInstructions.xml')
-        
-      
-        delta = delta_zip.DeltaZipBuilder(self.root, self.output, oldmd5output, md5output)
-        delta.create_delta_zip(deltazipfile, deletefile, 1, deltaantfile)
-
-    def test_changedFiles(self):
-        dir1 = tempfile.mkdtemp()
-        dir2 = tempfile.mkdtemp()
-        
-        with open(os.path.join(dir1, '1'), 'w') as f1:
-            f1.write('Directory:%s\n' % self.helium_home)
-            f1.write('myfile1 TYPE=unknown format MD5=34dcda0d351c75e4942b55e1b2e2422g')
-        with open(os.path.join(dir2, '2'), 'w') as f2:
-            f2.write('Directory:%s\n' % self.helium_home)
-            f2.write('myfile1 TYPE=unknown format MD5=34dcda0d351c75e4542b55e1b2e2422g')
-        
-        assert delta_zip.changedFiles(dir1, dir2) == [os.path.join(self.helium_home, 'myfile1')]
-
-    def tearDown(self):
-        """ Restore path """
-        os.chdir(self.cwd_backup)
\ No newline at end of file
--- a/buildframework/helium/tools/common/python/lib/test/test_escapeddict.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-#============================================================================ 
-#Name        : test_escapeddict.py 
-#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:
-#===============================================================================
-
-import logging
-import unittest
-
-import escapeddict
-
-
-logger = logging.getLogger('test.escapeddict')
-
-
-class EscapedDictTest(unittest.TestCase):
-    def test_escape(self):
-        testdict = escapeddict.EscapedDict({'key1': 'value1', 'key2': 'value2 ${key1}'})
-        for key in testdict.keys():
-            logger.info(testdict[key])
-        assert testdict['key1'] == 'value1'
-        assert testdict['key2'] == 'value2 value1'
-        
-    def test_escape_no_value_present(self):
-        testdict = escapeddict.EscapedDict({'key1': 'value1', 'key2': 'value2 ${key_not_present} ${key1}'})
-        for key in testdict.keys():
-            print testdict[key]
-        assert testdict['key1'] == 'value1'
-        assert testdict['key2'] == 'value2 ${key_not_present} value1'
-        
-    def test_escape_value_as_list(self):
-        testdict = escapeddict.EscapedDict({'key1': 'value1', 'key2': ['value2', '${key1}']})
-        for key in testdict.keys():
-            print testdict[key]
-        assert testdict['key1'] == 'value1'
-        assert testdict['key2'] == ['value2', 'value1']
\ No newline at end of file
--- a/buildframework/helium/tools/common/python/lib/test/test_filter_heliumlog.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,256 +0,0 @@
-#============================================================================ 
-#Name        : test_filter_heliumlog.py 
-#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:
-#===============================================================================
-
-""" Test cases for filter meta data logs.
-
-"""
-
-# pylint: disable-msg=E1101
-
-import logging
-import os
-import sys
-import time
-import mocker
-import re
-import tempfile
-import shutil
-
-_logger = logging.getLogger('test.test_filter_heliumlog')
-
-TEMP_PATH = tempfile.mkdtemp()
-#NOTE: THE COMMENTED OUT CODE IS REQUIRED WHEN RUNNING THIS TEST USING THE PT TARGET
-#WITH THE COMMENTED OUT CODE IT DOES NOT WORK IN THE FULL UNITTEST TARGET DUE TO RAPTOR.PY
-#FILE BEING CALLED WITHOUT ALL THE ENVIRONMENT VARIABLES SET WHEN RUN SINGLY AND THEY ARE SET WHEN
-#RUN AS PART OF THE UNITTEST TARGET.
-
-PYTHON_FILE_NAME = os.path.join(TEMP_PATH, 'raptor.py')
-FILTER_FILE_NAME = os.path.join(TEMP_PATH, 'filter_interface.py')
-
-sys.path = [TEMP_PATH] + sys.path
-print "temp path is %s " % TEMP_PATH
-
-def setup_module():
-    """ Setup for test_filter_metadata """
-    #in order to allow the filter_metadata.py file to compile we need to create a dummy 
-    #raptor.py file as this is part of SBS and not present here, the classes and objects 
-    #it uses from raptor.py file are created in this file, the same goes for the file filter_interface.py
-
-    #does not exist so create empty python.py file
-    f_handle = open(PYTHON_FILE_NAME, "w")
-    f_handle.write("class testRaptor():\n")
-    f_handle.write("    def testRaptorFunc(self):\n")
-    f_handle.write("        return True \n")
-    f_handle.close()
-
-    #does not exist so create empty python.py file
-    f_handle = open(FILTER_FILE_NAME, "w")
-    f_handle.write("class Filter():\n")
-    f_handle.write("    def testFilterFunc(self):\n")
-    f_handle.write("        return True \n")
-    f_handle.close()
-
-
-def teardown_module():
-    """ Teardown test_filter_metadata. """
-    if os.path.exists(TEMP_PATH):
-        shutil.rmtree(TEMP_PATH)
-
-# regex for "bare" drive letters  
-DRIVERE = re.compile('^[A-Za-z]:$')
-
-# are we on windows, and if so what is the current drive letter
-ISWIN = sys.platform.lower().startswith("win")
-if ISWIN:
-    DRIVE = re.match('^([A-Za-z]:)', os.getcwd()).group(0)
-
-# Base class
-class Path(object):
-    """This class represents a file path.                                      
-                                                                               
-    A generic path object supports operations without needing to know          
-    about Windows and Linux differences. The standard str() function can       
-    obtain a string version of the path in Local format for use by             
-    platform-specific functions (file opening for example).                    
-                                                                               
-    We use forward slashes as path separators (even on Windows).               
-                                                                               
-    For example,                                                               
-                                                                               
-      path1 = generic_path.Path("/foo")                                        
-      path2 = generic_path.Path("bar", "bing.bang")                            
-                                                                               
-      print str(path1.Append(path2))                                           
-                                                                               
-    Prints /foo/bar/bing.bang   on Linux                                       
-    Prints c:/foo/bar/bing.bang   on Windows (if c is the current drive)       
-    """                                                                        
-
-    def __init__(self, *arguments):
-        """construct a path from a list of path elements"""
-        
-        if len(arguments) == 0:
-            self.path = ""
-            return
-        
-        list = []
-        for i, arg in enumerate(arguments):
-            if ISWIN:
-                if i == 0:
-                    # If the first element starts with \ or / then we will
-                    # add the current drive letter to make a fully absolute path
-                    if arg.startswith("\\\\"):
-                        list.append(arg) # A UNC path - don't mess with it
-                    elif arg.startswith("\\") or arg.startswith("/"):
-                        list.append(DRIVE + arg)
-                    # If the first element is a bare drive then dress it with a \
-                    # temporarily otherwise "join" will not work properly.
-                    elif DRIVERE.match(arg):
-                        list.append(arg + "\\")
-                    # nothing special about the first element
-                    else:
-                        list.append(arg)
-                else:
-                    if arg.startswith("\\\\"):
-                        raise ValueError("non-initial path components must not start with \\\\ : %s" % arg)
-                    else:
-                        list.append(arg)
-                if ";" in arg:
-                    raise ValueError("An individual windows Path may not contain ';' : %s" % arg)
-            else:
-                list.append(arg)
-      
-        self.path = os.path.join(*list)
-        
-        # normalise to avoid nastiness with dots and multiple separators
-        # but do not normalise "" as it will become "."
-        if self.path != "":
-            self.path = os.path.normpath(self.path)
-        
-        # always use forward slashes as separators
-        self.path = self.path.replace("\\", "/")
-        
-        # remove trailing slashes unless we are just /
-        if self.path != "/":
-            self.path = self.path.rstrip("/")
-
-    def Dir(self):
-        "return an object for the directory part of this path"
-        if DRIVERE.match(self.path):
-            return Path(self.path)
-        else:
-            return Path(os.path.dirname(self.path))
-    def __str__(self):
-        return self.path
-
-
-class Raptor(object):
-    """An instance of a running Raptor program.
-
-    When operated from the command-line there is a single Raptor object
-    created by the Main function. When operated by an IDE several Raptor
-    objects may be created and operated at the same time."""
-
-    def defaultSetUp(self):
-        """ setup some variables for use by the unit under test """
-        self.logFile = None #self.mocker.proxy(generic_path.Join)
-        self.summary = True
-        # things to initialise
-        self.starttime = time.time()
-        self.timestring = time.strftime("%Y-%m-%d-%H-%M-%S")
-        self.logFileName = Path(os.path.join(TEMP_PATH, 'makefile_2009-11-12-12-32-34.log'))
-
-class FilterHeliumLogTest(mocker.MockerTestCase):
-    """ Tests the filter_heliumLog wrapper to the SBS plugin. 
-    The plugin uses the SBS API of open, write, summary and close. """
-
-#    def test_a_setupOK(self):       #need to call it this to get it executed in the right order (alphabetical)
-#        """test_a_setupOK: tests that we have imported the correct files and that they are present 
-#        before importing the file to be tested and having it fail due to missing files"""
-#        import filter_heliumlog
-#        #setup an instance of the class and test it exists OK
-#        obj = filter_heliumlog.raptor.testRaptor()
-#        result = obj.testRaptorFunc()
-#        assert result == True
-#        obj = filter_heliumlog.filter_interface.Filter()
-#        result = obj.testFilterFunc()
-#        assert result == True
-
-    def test_openWriteSummaryCloseInvalidData(self):
-        """test_openWriteSummaryCloseInvalidData: test the opening writing, summary and 
-        closing of the log file with invalid data."""
-        import filter_heliumlog
-        obj = self.mocker.patch(filter_heliumlog.SBSScanlog)
-        obj.initialize(mocker.ANY)
-        self.mocker.result(False)
-        self.mocker.replay()
-        
-        raptor_instance = Raptor()
-        raptor_instance.defaultSetUp()
-        raptor_instance.logFileName = Path("..")
-        filter_HLog = filter_heliumlog.FilterHeliumLog()
-        result = filter_HLog.open(raptor_instance)
-        assert result == False
-        result = filter_HLog.close()
-        assert result == False
-
-    def test_openValidData_default(self):
-        """test_openValidData_default: test the opening of the log file with valid data."""
-        import filter_heliumlog
-        obj = self.mocker.patch(filter_heliumlog.SBSScanlog)
-        obj.initialize(mocker.ANY)
-        self.mocker.result(True)
-        self.mocker.replay()
-        
-        raptor_instance = Raptor()
-        raptor_instance.defaultSetUp()
-        filter_HLog = filter_heliumlog.FilterHeliumLog()
-        result = filter_HLog.open(raptor_instance)
-        assert result == True
-
-    def test_openValidData_empty(self):
-        """test_openValidData_empty: test the opening of the log file with valid data."""
-        import filter_heliumlog
-        obj = self.mocker.patch(filter_heliumlog.SBSScanlog)
-        obj.initialize(mocker.ANY)
-        self.mocker.result(True)
-        self.mocker.replay()
-        
-        raptor_instance = Raptor()
-        raptor_instance.defaultSetUp()
-        raptor_instance.logFileName = Path("")
-        filter_HLog = filter_heliumlog.FilterHeliumLog()
-        result = filter_HLog.open(raptor_instance)
-        assert result == True
-
-    def test_openValidData_stdout(self):
-        """test_openValidData_stdout: test the opening of the log file with valid data."""
-        import filter_heliumlog
-        obj = self.mocker.patch(filter_heliumlog.SBSScanlog)
-        obj.initialize(mocker.ANY)
-        self.mocker.count(0, 0)
-        self.mocker.replay()
-        
-        raptor_instance = Raptor()
-        raptor_instance.defaultSetUp()
-        raptor_instance.logFileName = None
-        filter_HLog = filter_heliumlog.FilterHeliumLog()
-        result = filter_HLog.open(raptor_instance)
-        assert result == True
-
--- a/buildframework/helium/tools/common/python/lib/test/test_filter_metadatalog.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,257 +0,0 @@
-#============================================================================ 
-#Name        : test_filter_metadatalog.py 
-#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:
-#===============================================================================
-
-""" Test cases for filter meta data logs.
-
-"""
-
-# pylint: disable-msg=E1101
-
-import logging
-import os
-import sys
-import time
-import mocker
-import re
-import tempfile
-import shutil
-
-_logger = logging.getLogger('test.test_filter_metadatalog')
-logging.basicConfig(level=logging.DEBUG)
-
-TEMP_PATH = tempfile.mkdtemp()
-#NOTE: THE COMMENTED OUT CODE IS REQUIRED WHEN RUNNING THIS TEST USING THE PT TARGET
-#WITH THE COMMENTED OUT CODE IT DOES NOT WORK IN THE FULL UNITTEST TARGET DUE TO RAPTOR.PY
-#FILE BEING CALLED WITHOUT ALL THE ENVIRONMENT VARIABLES SET WHEN RUN SINGLY AND THEY ARE SET WHEN
-#RUN AS PART OF THE UNITTEST TARGET.
-
-PYTHON_FILE_NAME = os.path.join(TEMP_PATH, 'raptor.py')
-FILTER_FILE_NAME = os.path.join(TEMP_PATH, 'filter_interface.py')
-
-sys.path = [TEMP_PATH] + sys.path
-
-def setup_module():
-    """ Setup for test_filter_metadata """
-    #in order to allow the filter_metadata.py file to compile we need to create a dummy 
-    #raptor.py file as this is part of SBS and not present here, the classes and objects 
-    #it uses from raptor.py file are created in this file, the same goes for the file filter_interface.py
-    #does not exist so create empty python.py file
-    f_handle = open(PYTHON_FILE_NAME, "w")
-    f_handle.write("class testRaptor():\n")
-    f_handle.write("    def testRaptorFunc(self):\n")
-    f_handle.write("        return True \n")
-    f_handle.close()
-    #does not exist so create empty python.py file
-    f_handle = open(FILTER_FILE_NAME, "w")
-    f_handle.write("class Filter():\n")
-    f_handle.write("    def testFilterFunc(self):\n")
-    f_handle.write("        return True \n")
-    f_handle.close()
-
-
-def teardown_module():
-    """ Teardown test_filter_metadata. """
-    print("teardown called")
-    if os.path.exists(TEMP_PATH):
-        shutil.rmtree(TEMP_PATH)
-
-# regex for "bare" drive letters  
-DRIVERE = re.compile('^[A-Za-z]:$')
-
-# are we on windows, and if so what is the current drive letter
-ISWIN = sys.platform.lower().startswith("win")
-if ISWIN:
-    DRIVE = re.match('^([A-Za-z]:)', os.getcwd()).group(0)
-
-# Base class
-class Path(object):
-    """This class represents a file path.                                      
-                                                                               
-    A generic path object supports operations without needing to know          
-    about Windows and Linux differences. The standard str() function can       
-    obtain a string version of the path in Local format for use by             
-    platform-specific functions (file opening for example).                    
-                                                                               
-    We use forward slashes as path separators (even on Windows).               
-                                                                               
-    For example,                                                               
-                                                                               
-      path1 = generic_path.Path("/foo")                                        
-      path2 = generic_path.Path("bar", "bing.bang")                            
-                                                                               
-      print str(path1.Append(path2))                                           
-                                                                               
-    Prints /foo/bar/bing.bang   on Linux                                       
-    Prints c:/foo/bar/bing.bang   on Windows (if c is the current drive)       
-    """                                                                        
-
-    def __init__(self, *arguments):
-        """construct a path from a list of path elements"""
-        
-        if len(arguments) == 0:
-            self.path = ""
-            return
-        
-        list = []
-        for i, arg in enumerate(arguments):
-            if ISWIN:
-                if i == 0:
-                    # If the first element starts with \ or / then we will
-                    # add the current drive letter to make a fully absolute path
-                    if arg.startswith("\\\\"):
-                        list.append(arg) # A UNC path - don't mess with it
-                    elif arg.startswith("\\") or arg.startswith("/"):
-                        list.append(DRIVE + arg)
-                    # If the first element is a bare drive then dress it with a \
-                    # temporarily otherwise "join" will not work properly.
-                    elif DRIVERE.match(arg):
-                        list.append(arg + "\\")
-                    # nothing special about the first element
-                    else:
-                        list.append(arg)
-                else:
-                    if arg.startswith("\\\\"):
-                        raise ValueError("non-initial path components must not start with \\\\ : %s" % arg)
-                    else:
-                        list.append(arg)
-                if ";" in arg:
-                    raise ValueError("An individual windows Path may not contain ';' : %s" % arg)
-            else:
-                list.append(arg)
-      
-        self.path = os.path.join(*list)
-        
-        # normalise to avoid nastiness with dots and multiple separators
-        # but do not normalise "" as it will become "."
-        if self.path != "":
-            self.path = os.path.normpath(self.path)
-        
-        # always use forward slashes as separators
-        self.path = self.path.replace("\\", "/")
-        
-        # remove trailing slashes unless we are just /
-        if self.path != "/":
-            self.path = self.path.rstrip("/")
-
-    def Dir(self):
-        "return an object for the directory part of this path"
-        if DRIVERE.match(self.path):
-            return Path(self.path)
-        else:
-            return Path(os.path.dirname(self.path))
-    def __str__(self):
-        return self.path
-
-
-class Raptor(object):
-    """An instance of a running Raptor program.
-
-    When operated from the command-line there is a single Raptor object
-    created by the Main function. When operated by an IDE several Raptor
-    objects may be created and operated at the same time."""
-
-    def defaultSetUp(self):
-        """ setup some variables for use by the unit under test """
-        self.logFile = None #self.mocker.proxy(generic_path.Join)
-        self.summary = True
-        # things to initialise
-        self.starttime = time.time()
-        self.timestring = time.strftime("%Y-%m-%d-%H-%M-%S")
-        self.logFileName = Path(os.path.join(TEMP_PATH, 'makefile_2009-11-12-12-32-34.log'))
-
-class FilterMetaDataLogTest(mocker.MockerTestCase):
-    """ Tests the filter_metadataLog wrapper to the SBS plugin. 
-    The plugin uses the SBS API of open, write, summary and close. """
-
-#    def test_a_setupOK(self):       #need to call it this to get it executed in the right order (alphabetical)
-#        """test_a_setupOK: tests that we have imported the correct files and that they are present 
-#        before importing the file to be tested and having it fail due to missing files"""
-#        print("got to test-a-setup ")
-#        import filter_metadatalog
-#        print("got passed import filter file to test-a-setup ")
-#        #setup an instance of the class and test it exists OK
-#        obj = filter_metadatalog.raptor.testRaptor()
-#        result = obj.testRaptorFunc()
-#        assert result == True
-#        obj = filter_metadatalog.filter_interface.Filter()
-#        result = obj.testFilterFunc()
-#        assert result == True
-
-    def test_openWriteSummaryCloseInvalidData(self):
-        """test_openWriteSummaryCloseInvalidData: test the opening writing, summary and 
-        closing of the log file with invalid data."""
-        import filter_metadatalog
-        obj = self.mocker.patch(filter_metadatalog.SBSScanlogMetadata)
-        obj.initialize(mocker.ANY)
-        self.mocker.result(False)
-        self.mocker.replay()
-        
-        raptor_instance = Raptor()
-        raptor_instance.defaultSetUp()
-        raptor_instance.logFileName = Path("..")
-        filter_mLog = filter_metadatalog.FilterMetadataLog()
-        result = filter_mLog.open(raptor_instance)
-        assert result == False
-        result = filter_mLog.close()
-        assert result == False
-
-    def test_openValidData_default(self):
-        """test_openValidData_default: test the opening of the log file with valid data."""
-        import filter_metadatalog
-        obj = self.mocker.patch(filter_metadatalog.SBSScanlogMetadata)
-        obj.initialize(mocker.ANY)
-        self.mocker.result(True)
-        self.mocker.replay()
-        
-        raptor_instance = Raptor()
-        raptor_instance.defaultSetUp()
-        filter_mLog = filter_metadatalog.FilterMetadataLog()
-        result = filter_mLog.open(raptor_instance)
-        assert result == True
-
-    def test_openValidData_empty(self):
-        """test_openValidData_empty: test the opening of the log file with valid data."""
-        import filter_metadatalog
-        obj = self.mocker.patch(filter_metadatalog.SBSScanlogMetadata)
-        obj.initialize(mocker.ANY)
-        self.mocker.result(True)
-        self.mocker.replay()
-        
-        raptor_instance = Raptor()
-        raptor_instance.defaultSetUp()
-        raptor_instance.logFileName = Path("")
-        filter_mLog = filter_metadatalog.FilterMetadataLog()
-        result = filter_mLog.open(raptor_instance)
-        assert result == True
-
-    def test_openValidData_stdout(self):
-        """test_openValidData_stdout: test the opening of the log file with valid data."""
-        import filter_metadatalog
-        obj = self.mocker.patch(filter_metadatalog.SBSScanlogMetadata)
-        obj.initialize(mocker.ANY)
-        self.mocker.count(0, 0)
-        self.mocker.replay()
-        
-        raptor_instance = Raptor()
-        raptor_instance.defaultSetUp()
-        raptor_instance.logFileName = None
-        filter_mLog = filter_metadatalog.FilterMetadataLog()
-        result = filter_mLog.open(raptor_instance)
-        assert result == True
-
--- a/buildframework/helium/tools/common/python/lib/test/test_flash_config.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,73 +0,0 @@
-#============================================================================ 
-#Name        : test_flash_config.py 
-#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:
-#===============================================================================
-
-""" Test flash_config.py module. """
-
-import unittest
-import configuration
-import flash_config
-import os
-
-class FlashConfigTest(unittest.TestCase):
-    
-    def setUp(self):
-        input_file = os.path.join(os.environ['HELIUM_HOME'], \
-                                  'tests/data/flash_config/rom_image_config_test.xml')
-        configBuilder = configuration.NestedConfigurationBuilder(open(input_file, 'r'))
-        configSet = configBuilder.getConfiguration()
-        self._configs = configSet.getConfigurations('product')
-        self._writer = flash_config.FlashConfigurationWriter(configSet, 'product')
-    
-    def test_language_pack(self):
-        """ Testing languagepack class. """
-        for conf in self._configs:
-            if conf.has_key('languagepack.id') and conf['languagepack.id'] == "01":
-                lp = flash_config.ImagePack(conf, 'languagepack')
-        
-        assert lp != None
-        
-        assert lp._id == "01"
-        assert lp._image_name == "RM-235_0.0728.3.0.1_${image.type.temp}_01"
-        assert lp._image_path == "${image.type.temp}/language/01_variant_EURO1/"
-        
-    def test_get_all_languagepacks(self):
-        """ Testing _get_all_languagepacks method. """
-        self._writer._get_all_languagepacks()
-        assert len(self._writer._all_languagepacks.keys()) == 4
-        
-    def test_get_compatible_languagepacks(self):
-        """ Testing _get_compatible_languagepacks method. """
-        self._writer._get_all_languagepacks()
-        for config in self._configs:
-            if (config.type == "customer"):
-                customer_config = config
-        
-        assert customer_config != None
-        # Only 2 valid compatible LPs. LP 03 is not a valid one b/c it is absent from rom_image_config_test.txt
-        assert len(self._writer._get_compatible_languagepacks(customer_config)) == 2
-        
-    def test_write(self):
-        """ Testing FlashConfigurationWriter method. """
-        #self._writer.write()
-        
-        #Test the numbert of created files
-        
-        
-        #Tes the content of one file
-        
\ No newline at end of file
--- a/buildframework/helium/tools/common/python/lib/test/test_freedisk.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,118 +0,0 @@
-#============================================================================ 
-#Name        : test_freedisk.py 
-#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:
-#===============================================================================
-
-""" Acceptance tests for freedisk.py
-
-"""
-
-import unittest
-import logging
-import os, string
-import sys
-
-class FreeDiskTest(unittest.TestCase):
-        
-    def test_freedisk(self):
-        sys.path.append(os.path.join(os.environ['HELIUM_HOME'], 'tools/preparation'))
-        import freedisk
-        freedisk.print_space_report(os.environ['HELIUM_HOME'], 1)
-
-if sys.platform == "win32":
-    from win32api import GetLogicalDriveStrings
-    
-    logger = logging.getLogger('test_freedisk')
-    
-    ## MAKE SURE that the drive being tested MUST be there.
-    class ToolTest(unittest.TestCase):
-        """
-        Setup and Tests for the script
-        """
-    
-        def setUp(self):
-            """
-            All the settings related to the tests are defined here
-            """
-            self.drive_letter = next_free_label()
-            self.str_path = "%HELIUM_HOME%\\tools\\preparation\\"
-    
-    
-            
-        def test_when_enough_space(self):
-            """
-            Both drive and space parameters are correct with minimum required space
-            """
-            output = os.system('python ' + self.str_path+"freedisk.py -d c: -s 1")
-            assert(output==0)
-                       
-    
-        def test_when_not_enough_space(self):
-            """
-            Both drive and space parameters are correct with maximum required space
-            """
-            output = os.system('python ' + self.str_path+\
-                               "freedisk.py -d c: -s 10000000000")
-            assert(output==-1)
-    
-        def test_wrong_drive_letter(self):
-            """
-            Tests with drive which does not exist
-            """
-            output = os.system('python ' + self.str_path+\
-                               "freedisk.py -d %s: -s 10 "%self.drive_letter)
-            assert(output==-2)
-            
-        def test_missing_parameters(self):
-            """
-            Several cases to give invalid parameters
-            """
-    
-            ##Required space parameter is missing
-            output = os.system('python ' + self.str_path+"freedisk.py -d c:")
-            assert(output==-3)
-            ##Drive parameter is missing
-            output = os.system('python ' + self.str_path+"freedisk.py -s 1")
-            assert(output==-3)
-            ##Both parameters are missing
-            output = os.system('python ' + self.str_path+"freedisk.py")
-            assert(output==-3)
-    
-        def test_wrong_drive_parameters(self):
-            """
-            Drive parameter is incorrect
-            """
-            output = os.system('python ' + self.str_path+"freedisk.py -d c -s 10")
-            assert(output==0)
-    
-    
-    def next_free_label():
-        """
-        Detects the next free drive letter for test_wrong_drive_letter
-        """
-        for letter in set(string.ascii_uppercase)-set(GetLogicalDriveStrings()):
-            try:
-                drv_letter = letter
-                os.chdir(drv_letter+":\\")
-            except OSError:
-                break
-        else:
-            raise ValueError("Out of drives")
-        return drv_letter
-    
-    if __name__ == '__main__':
-        unittest.main()
\ No newline at end of file
--- a/buildframework/helium/tools/common/python/lib/test/test_gscm.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,77 +0,0 @@
-#============================================================================ 
-#Name        : test_gscm.py 
-#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:
-#===============================================================================
-
-""" Test cases for gscm python wrapper.
-
-"""
-
-import logging
-import sys
-import unittest
-
-import nokia.gscm
-
-
-# Uncomment this line to enable logging in this module, or configure logging elsewhere
-#logging.basicConfig(level=logging.DEBUG)
-_logger = logging.getLogger('test.gscm')
-
-
-class TestGSCM(unittest.TestCase):
-
-    def test_get_db_path(self):
-        """ Test the get_db_path function. """
-        dbpath = nokia.gscm.get_db_path('fa1f5132')
-        _logger.info("get_db_path('fa1f5132'): %s" % dbpath)
-        assert dbpath == "/nokia/fa_nmp/groups/gscm/dbs/fa1f5132", "Wrong value returned!"
-        
-    def test_get_db_path2(self):
-        """ Test the get_db_path function with unexistant database. """
-        try:        
-            _logger.info("get_db_path('not_valid_db'): %s" % nokia.gscm.get_db_path('not_valid_db'))
-            assert False, "Should raise Exception when giving unexisting db.'"
-        except Exception, exc:
-            _logger.info(exc)
-
-    def test_get_engine_host(self):
-        """ Test the get_engine_host function. """
-        engine = nokia.gscm.get_engine_host('fa1f5132')
-        _logger.info("get_engine_host('fa1f5132'): %s" % engine)
-        print engine
-        assert engine == "facmsweh.europe.nokia.com" or "faccm" in engine, "Wrong value returned!"
-        
-    def test_get_engine_host2(self):
-        """ Test the get_engine_host function with unexistant database. """
-        try:        
-            _logger.info("get_engine_host('not_valid_db'): %s" % nokia.gscm.get_engine_host('not_valid_db'))
-            assert False, "Should raise Exception when giving unexisting db.'"
-        except Exception, exc:
-            _logger.info(exc)
-
-    def test_get_router_address(self):
-        """ Test the get_router_address function. """
-        _logger.info("get_router_address('fa1f5132'): %s" % nokia.gscm.get_router_address('fa1f5132'))
-        
-    def test_get_router_address2(self):
-        """ Test the get_router_address function with unexistant database. """
-        try:        
-            _logger.info("get_router_address('not_valid_db'): %s" % nokia.gscm.get_router_address('not_valid_db'))
-            assert False, "Should raise Exception when giving unexisting db.'"
-        except Exception, exc:
-            _logger.info(exc)
--- a/buildframework/helium/tools/common/python/lib/test/test_help32.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
-#============================================================================ 
-#Name        : test_help32.py 
-#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:
-#===============================================================================
-
-""" Test cases for the generation of help delivery IBY include file.
-
-"""
-import unittest
-import sys
-import imp
-import os
-import logging
-
-
-# Uncomment this line to enable logging in this module, or configure logging elsewhere
-logging.basicConfig(level=logging.DEBUG)
-logger = logging.getLogger('test.help32')
-
-
-class TestHelp32(unittest.TestCase):
-    """ Test cases for S60 3.2 help deliveries handling. """
-    
-    def test_basket(self):
-        """ Test the basket class. Basket class is a container that sort
-            content for a root directory into common and language specific content.
-        """
-        sys.path.append(os.path.join(os.environ['HELIUM_HOME'],'tools/localisation/helps'))
-        generate_iby = __import__('generate_iby_32')
-        basket = generate_iby.Basket(os.path.join(os.environ['HELIUM_HOME'],'tests/data/help_delivery/Data'), excludes=['**/distribution.policy.S60'])
-        print basket.common
-        print basket.language
-        assert len(basket.common) == 1
-        assert len(basket.language['01']) == 2
-        assert len(basket.language['02']) == 1
-        assert not basket.language.has_key('03')
-        
-        
-    def test_basket_with_tag(self):
-        """ Test the basket class. Basket class is a container that sort
-            content for a root directory into common and language specific content.
-        """
-        sys.path.append(os.path.join(os.environ['HELIUM_HOME'],'tools/localisation/helps'))
-        generate_iby = __import__('generate_iby_32')
-        basket = generate_iby.Basket(os.path.join(os.environ['HELIUM_HOME'],'tests/data/help_delivery/Data'), '_3g', excludes=['**/distribution.policy.S60'])
-        print basket.common
-        print basket.language
-        assert len(basket.common) == 1
-        assert len(basket.language['01']) == 2
-        assert len(basket.language['02']) == 1
-        assert basket.language.has_key('03')
-
-        
-    def test_basket_exclude(self):
-        """ Testing the basket exclude list.
-        """
-        sys.path.append(os.path.join(os.environ['HELIUM_HOME'],'tools/localisation/helps'))
-        generate_iby = __import__('generate_iby_32')
-        basket = generate_iby.Basket(os.path.join(os.environ['HELIUM_HOME'],'tests/data/help_delivery/Data'), excludes=['**/subdir/**', '**/distribution.policy.S60'])
-        print basket.common
-        print basket.language
-        assert len(basket.common) == 0
-        assert not basket.language.has_key('01')
-        assert not basket.language.has_key('02')
-        assert not basket.language.has_key('03')
- 
\ No newline at end of file
--- a/buildframework/helium/tools/common/python/lib/test/test_ido.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-#============================================================================ 
-#Name        : test_ido.py 
-#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:
-#===============================================================================
-
-import unittest
-import ido
-import logging
-
-_logger = logging.getLogger('test.ido')
-logging.basicConfig(level=logging.INFO)
-
-class IDOTest(unittest.TestCase):
-        
-    def test_ido(self):
-        ido.is_in_interval(1, '01:02', 2, '02:03')
\ No newline at end of file
--- a/buildframework/helium/tools/common/python/lib/test/test_log2xml.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-#============================================================================ 
-#Name        : test_log2xml.py 
-#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:
-#===============================================================================
-
-""" Acceptance tests for freedisk.py
-
-"""
-
-import unittest
-import logging
-import os
-import log2xml
-from xml.dom import minidom
-
-logger = logging.getLogger('test.log2xml')
-
-
-class Log2XMLTest(unittest.TestCase):
-
-    def test_log_conversion(self):
-        """
-        Convert a log into xml.
-        """
-        logfile = os.path.join(os.environ["HELIUM_HOME"], 'tests', 'data', 'log2xml_test.log')
-        testfile = os.path.join(os.environ["TEMP"], "log2xml_test.xml")
-        log2xml.convert(logfile, testfile)        
-        minidom.parse(testfile)        
-
-    def test_log_utf16_conversion(self):
-        """
-        Convert a log into xml.
-        """
-        logfile = os.path.join(os.environ["HELIUM_HOME"], 'tests', 'data', 'log2xml_failure.log')
-        testfile = os.path.join(os.environ["TEMP"], "log2xml_test2.xml")
-        log2xml.convert(logfile, testfile)        
-        minidom.parse(testfile)        
-
-
-if __name__ == '__main__':
-    unittest.main()
\ No newline at end of file
--- a/buildframework/helium/tools/common/python/lib/test/test_misc.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-#============================================================================ 
-#Name        : test_misc.py 
-#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:
-#===============================================================================
-
-""" Miscellaneous tests.
-
-"""
-
-
-def test_optparse_import():
-    """Ensure 'optparse' module is not imported from within docutils.
-    
-    Docutils, as of docutils-0.5 at least, comes bundled with a version of the
-    `optparse` module that is older than what comes with Python 2.4 standard
-    library.
-    
-    This test, although implemented in a slightly unpythonic manner (thinking
-    pythonically, we should only care about a module's behaviour, not its
-    version), checks that the `optparse` module acquired without any import
-    magic is not the old buggy one from within docutils.
-    
-    """
-    import optparse
-    assert "docutils" not in optparse.__file__
-    
-def test_optparse_help():
-    """Test for this issue:
-    SF #960515: don't crash when generating help for callback
-    options that specify 'type', but not 'dest' or 'metavar'.from 
-    http://sourceforge.net/project/shownotes.php?release_id=278548&group_id=38019
-    """
-    
-    import optparse
-    
-    def testCallback(option, opt, value, parser):
-        pass
-    
-    parser = optparse.OptionParser()
-    parser.add_option("--x", help="x", callback=testCallback, action="callback", type="string", default=True)
-    parser.print_help()
--- a/buildframework/helium/tools/common/python/lib/test/test_path_match.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-#============================================================================ 
-#Name        : test_path_match.py 
-#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:
-#===============================================================================
-
-""" path/match.py module tests. """
-
-import pathaddition.match
-
-
-def test_path_match_ant_match():
-    # Matching stuff
-    assert pathaddition.match.ant_match(r"CVS/Repository", r"**/CVS/*") == True
-    assert pathaddition.match.ant_match(r"org/apache/CVS/Entries", r"**/CVS/*") == True
-    assert pathaddition.match.ant_match(r"org/apache/jakarta/tools/ant/CVS/Entries", r"**/CVS/*") == True
-
-    assert pathaddition.match.ant_match(r"org/apache/jakarta/tools/ant/docs/index.html", r"org/apache/jakarta/**") == True
-    assert pathaddition.match.ant_match(r"org/apache/jakarta/test.xml", r"org/apache/jakarta/**") == True
-
-    assert pathaddition.match.ant_match(r"org/apache/CVS/Entries", r"org/apache/**/CVS/*") == True
-    assert pathaddition.match.ant_match(r"org/apache/jakarta/tools/ant/CVS/Entries", r"org/apache/**/CVS/*") == True
-
-    assert pathaddition.match.ant_match(r"/test/foo", r"**/test/**") == True
-    assert pathaddition.match.ant_match(r"/test", r"**/test/**") == True
-    
-    assert pathaddition.match.ant_match(r"C:\development\test\7zip.exe", r"**\*.exe") == True
-    assert pathaddition.match.ant_match(r"C:\development\test\7zip.exe", r"**\?zip.exe") == True
-    assert pathaddition.match.ant_match(r"C:\development\test\7zip.exe", r"**\?zip.*?") == True
-    assert pathaddition.match.ant_match(r"C:\development\test\7zip.exe", r"**/development/*/7zip.exe") == True
-    assert pathaddition.match.ant_match(r"C:\development\test\7zip.exe", r"C:\development\**") == True
-    assert pathaddition.match.ant_match(r"C:\deve.lopment\te.st\7zip.exe", r"**\*.exe") == True
-
-    # Not matching stuff
-    assert pathaddition.match.ant_match(r"org/apache/CVS/foo/bar/Entries", r"**/CVS/*") == False
-    assert pathaddition.match.ant_match(r"org/apache/xyz.java", r"org/apache/jakarta/**") == False
-    assert pathaddition.match.ant_match(r"org/apache/CVS/foo/bar/Entries", r"org/apache/**/CVS/*") == False
-
-    assert pathaddition.match.ant_match(r"C:\development\test\7zip.exe", r"**/foo/**\?zip.*?") == False
-    
-    
--- a/buildframework/helium/tools/common/python/lib/test/test_pathaddition_relative.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-#============================================================================ 
-#Name        : test_pathaddition_relative.py 
-#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:
-#===============================================================================
-
-""" path/match.py module tests. """
-
-import pathaddition.relative
-import os
-
-
-def test_commonprefix():
-    paths = ['E:/Build_E/ido_wa/ido_lcdo_mcl_product_52_ec/LC_Domain/LC_Domain/localconnectivity',
-             'E:/Build_E/ido_wa/ido_lcdo_mcl_product_52_ec/LC_Domain_osext/LC_Domain_osext/localconnectivityextensions',
-             'E:/Build_E/ido_wa/ido_lcdo_mcl_product_52_ec/LC_Domain_osext/LC_Domain_osext/localconnectivityextensions/src',
-             'E:/Build_E/ido_wa/different_root/LC_Domain_osext/LC_Domain_osext/localconnectivityextensions/src',
-             ]
-
-    paths2 = ['Y:/Build_E']
-    paths2.extend(paths)
-
-    # basic tests
-    # empty list => empty string 
-    assert pathaddition.relative.commonprefix([]) == ''
-    # one element list => return the element
-    assert pathaddition.relative.commonprefix(['foo']) == 'foo'
-    
-    print pathaddition.relative.commonprefix([paths[0], paths[1]])
-    assert os.path.normpath(pathaddition.relative.commonprefix([paths[0], paths[1]])) == os.path.normpath('E:/Build_E/ido_wa/ido_lcdo_mcl_product_52_ec')
-
-    assert os.path.normpath(pathaddition.relative.commonprefix(paths)) == os.path.normpath('E:/Build_E/ido_wa')
-
-    assert pathaddition.relative.commonprefix(paths2) == ''
-    
\ No newline at end of file
--- a/buildframework/helium/tools/common/python/lib/test/test_rom.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-#============================================================================ 
-#Name        : test_rom.py 
-#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:
-#===============================================================================
-
-from __future__ import with_statement
-import unittest, os
-from rom import *
-import configuration
-
-class ImageTest( unittest.TestCase ):
-    def setUp( self ):
-        pass #productConfig = amara.parse( PRODUCT_CONFIG )
-    
-    def test_mytraces(self):
-        """ mytraces.txt file can be added and deleted. """
-        config = configuration.Configuration({'rom.output.dir': '',
-                                            'rommake.mytraces.file': 'mytraces.txt',
-                                            'mytraces.binaries': ['foo.dll', 'bar.dll']})
-        image = Image(config)
-        image._clean_mytraces()
-        
-        image._process_my_traces()
-        assert os.path.exists('mytraces.txt')
-        
-        # Check content
-        with open('mytraces.txt') as f:
-            mytraces_lines = f.readlines()
-        print mytraces_lines[0]
-        assert mytraces_lines[0] == 'foo.dll\n'
-        assert mytraces_lines[1] == 'bar.dll\n'
-        
-        image._clean_mytraces()
-        assert not os.path.exists('mytraces.txt')
-
-    def test_mytraces_not_needed(self):
-        """ mytraces.txt file not used if config does not define. """
-        config = configuration.Configuration({'rom.output.dir': '',
-                                            'rommake.mytraces.file': 'mytraces.txt'})
-        image = Image(config)
-        image._clean_mytraces()
-        
-        image._process_my_traces()
-        assert not os.path.exists('mytraces.txt')
\ No newline at end of file
--- a/buildframework/helium/tools/common/python/lib/test/test_sbs.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-#============================================================================ 
-#Name        : test_sbs.py 
-#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:
-#===============================================================================
-
-import unittest
-import logging
-import sys
-import os
-import tempfile
-
-_logger = logging.getLogger('test.sbs')
-logging.basicConfig(level=logging.INFO)
-
-class SBSTest(unittest.TestCase):
-        
-    def setUp(self):
-        sys.path.append(os.path.join(os.environ['HELIUM_HOME'], 'tools/common/python/scripts'))
-        
-    def test_sbs(self):
-        #import filter_metadatalog
-        import sbsscanlogmetadata
-        sbs = sbsscanlogmetadata.SBSScanlogMetadata()
-        (_, filename) = tempfile.mkstemp()
-        sbs.open(filename)
-        sbs.write(open(os.path.join(os.environ['HELIUM_HOME'], 'tests/data/scanlog/all_regex_type.log')).read())
-        sbs.close()
-        
-    def test_sbsscanlog(self):
-        import sbsscanlog
-        filter = sbsscanlog.SBSScanlog()
-        (_, filename) = tempfile.mkstemp()
-        filter.open(filename)
-        filter.write('hi')
-        filter.summary()
-        filter.close()
\ No newline at end of file
--- a/buildframework/helium/tools/common/python/lib/test/test_searchnextdrive.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-#============================================================================ 
-#Name        : test_searchnextdrive.py 
-#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:
-#===============================================================================
-
-""" Test searchnextdrive module. """
-import os
-from string import strip
-from subprocess import Popen, PIPE 
-from tempfile import mkdtemp
-if os.sep == '\\':
-    from searchnextdrive import search_next_free_drive
-    from fileutils import subst, unsubst
-import unittest
-
-class SearchNextDriveTest(unittest.TestCase):
-    """ Test search next drive script... """
-
-    def test_searchnextdrive(self):
-        """ Testing search next drive script... """
-        if os.sep == '\\':
-            if os.environ.has_key("HELIUM_HOME"):
-                freedrive1 = search_next_free_drive()
-                if freedrive1 != "Error: No free drive!":
-                    mytmpdir = mkdtemp()
-                    subst(freedrive1, mytmpdir)
-                    freedrive2 = search_next_free_drive()
-                    unsubst(freedrive1)
-                    os.rmdir(mytmpdir)
-                    if freedrive2 != "Error: No free drive!":
-                        self.assertNotEqual(freedrive1, freedrive2, "searchnextdrive.py couldn't find a valid free drive");
-                    else:
-                        raise Exception("Couldn't find a valid free drive")
-                else:
-                    raise Exception("Couldn't find a valid free drive")
-            else:
-                raise Exception("HELIUM_HOME variable not defined.")
--- a/buildframework/helium/tools/common/python/lib/test/test_session_provider.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,155 +0,0 @@
-#============================================================================ 
-#Name        : test_session_provider.py 
-#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:
-#===============================================================================
-
-""" Test cases for ccm python toolkit.
-
-"""
-import unittest
-import sys
-import ccm
-import ccm.extra
-import os
-import logging
-
-
-_logger = logging.getLogger('test.test_session_provider')
-logging.basicConfig(level=logging.INFO)
-
-class MockResultSession(ccm.AbstractSession):
-    """ Fake session used to test Result"""
-    def __init__(self, behave = {}, database="fakedb"):
-        ccm.AbstractSession.__init__(self, None, None, None, None)
-        self._behave = behave
-        self._database = database
-        self.dbpath = "/path/to/" + database
-        self._session_addr = "LOCALHOST:127.0.0.1:1234"
-    
-    def database(self):
-        _logger.info("running database from MockResultSession")
-        return self._database
-    
-    def execute(self, cmdline, result=None):
-        if result == None:
-            result = ccm.Result(self)        
-        if self._behave.has_key(cmdline):
-            result.statuserrors = 0  
-            result.output = self._behave[cmdline]
-        else:
-            result.status = -1  
-        return result
-
-class MockOpener(object):
-    def __init__(self):
-        self.failOnNewOpen = False
-    
-    def __call__(self, username=None, password=None, engine=None, dbpath=None, database=None, reuse=True):
-        assert self.failOnNewOpen == False, "This method should not be called again."
-        if database != "fakedb":
-            raise ccm.CCMException("Invalid database")
-        return MockResultSession()
-    
-class SessionProviderTest(unittest.TestCase):
-    """ Testing Results parsers. """
-    def test_get_valid_db(self):
-        """ Test the opening of a valid database. """
-        p = ccm.extra.SessionProvider(opener=MockOpener())
-        db = p.get(database="fakedb")
-        assert db is not None
-
-    def test_get_invalid_db(self):
-        """ Test the opening of an invalid database. """
-        p = ccm.extra.SessionProvider(opener=MockOpener())
-        try:            
-            db = p.get(database="invaliddb")
-            assert False, "Should raise Exception when giving unexisting db.'"
-        except Exception, exc:
-            _logger.info(exc)
-        
-        
-        
-class CachedSessionProviderTest(unittest.TestCase):
-    """ Testing Results parsers. """
-    session_cache = "build/session_cache.xml"
-    
-    def setUp(self):
-        if not os.path.exists(os.path.dirname(self.session_cache)):
-            os.makedirs(os.path.dirname(self.session_cache))
-        if os.path.exists(self.session_cache):
-            os.remove(self.session_cache)
-    
-    def tearDown(self):
-        if os.path.exists(self.session_cache):
-            os.remove(self.session_cache)
-    
-    def test_get_valid_db(self):
-        """ Test the opening of a valid database (cached). """
-        p = ccm.extra.CachedSessionProvider(opener=MockOpener())
-        db = p.get(database="fakedb")
-        assert db is not None
-
-    def test_get_invalid_db(self):
-        """ Test the opening of an invalid database (cached). """
-        p = ccm.extra.CachedSessionProvider(opener=MockOpener())
-        try:
-            db = p.get(database="invaliddb")
-            assert False, "Should raise Exception when giving unexisting db.'"
-        except Exception, exc:
-            _logger.info(exc)
-        
-    def test_open_session_twice(self):
-        """ Open session then free it then open it again... """
-        opener = MockOpener()
-        p = ccm.extra.CachedSessionProvider(opener=opener)
-        db = p.get(database="fakedb")
-        assert db is not None
-        db.close()
-        opener.failOnNewOpen = True
-        db2 = p.get(database="fakedb")
-        assert db2 is not None
-        
-    def test_write_cache(self):
-        p = ccm.extra.CachedSessionProvider(opener=MockOpener(), cache=self.session_cache)
-        db = p.get(database="fakedb")
-        assert db is not None
-        del db
-        p.save()
-        assert os.path.exists(self.session_cache), "Cache file %s is missing." % self.session_cache
-        
-    def test_write_and_load_cache(self):
-        
-        # patching the default implementation
-        def always_true(sid, db=None):
-            return True
-        ccm.session_exists = always_true
-        
-        p = ccm.extra.CachedSessionProvider(opener=MockOpener(), cache=self.session_cache)
-        db = p.get(database="fakedb")
-        assert db is not None
-        del db
-        p.close()
-        assert os.path.exists(self.session_cache), "Cache file %s is missing." % self.session_cache
-        
-        opener = MockOpener()
-        opener.failOnNewOpen = True
-        p = ccm.extra.CachedSessionProvider(opener=opener, cache=self.session_cache)        
-        assert 'fakedb' in p.cacheFree
-        assert len(p.cacheFree['fakedb']) == 1
-        
-        
-        
\ No newline at end of file
--- a/buildframework/helium/tools/common/python/lib/test/test_symbian_log.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,119 +0,0 @@
-#============================================================================ 
-#Name        : test_symbian_log.py 
-#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:
-#===============================================================================
-
-import unittest
-import logging
-import StringIO
-import symbian.log
-
-
-# Uncomment this line to enable logging in this module, or configure logging elsewhere
-logging.basicConfig(level=logging.DEBUG)
-logger = logging.getLogger('test.symbian.log')
-
-test_output = """
-===-------------------------------------------------
-=== Stage=1
-===-------------------------------------------------
-=== Stage=1 started Fri Apr 18 21:09:55 2008
-=== Stage=1 == ncp_psw
--- xcopy *.*  \\ /F /R /Y /S
---- Client0 Executed ID 1
-++ Started at Fri Apr 18 21:09:55 2008
-+++ HiRes Start 1208542195.09307
-Chdir \\psw\\ncp_psw\\psw
-S:\\psw\\ncp_psw\\psw\\s60\\tools\\customizationtool\\ct.ini -> S:\\s60\\tools\\customizationtool\\ct.ini
-S:\\psw\\ncp_psw\\psw\\s60\\tools\\customizationtool\\xml_data\\NCPAudioEqualizer_settings.xml -> S:\\s60\\tools\\customizationtool\\xml_data\\NCPAudioEqualizer_settings.xml
-S:\\psw\\ncp_psw\\psw\\s60\\tools\\customizationtool\\xml_data\\NCPHWGeneral_settings.xml -> S:\\s60\\tools\\customizationtool\\xml_data\\NCPHWGeneral_settings.xml
-S:\\psw\\ncp_psw\\psw\\s60\\tools\\customizationtool\\xml_data\\NCPLight_settings.xml -> S:\\s60\\tools\\customizationtool\\xml_data\\NCPLight_settings.xml
-S:\\psw\\ncp_psw\\psw\\s60\\tools\\customizationtool\\xml_data\\NCPSysAp_settings.xml -> S:\\s60\\tools\\customizationtool\\xml_data\\NCPSysAp_settings.xml
-S:\\psw\\ncp_psw\\psw\\s60\\tools\\customizationtool\\xml_data\\VariantFeatures.xml -> S:\\s60\\tools\\customizationtool\\xml_data\\VariantFeatures.xml
-6 File(s) copied
-+++ HiRes End 1208542195.28056
-++ Finished at Fri Apr 18 21:09:55 2008
-=== Stage=1 finished Fri Apr 18 21:09:55 2008
-===-------------------------------------------------
-=== Stage=2
-===-------------------------------------------------
-=== Stage=2 started Fri Apr 18 21:29:33 2008
-=== Stage=2 == localconnectivityextensions
--- abld export -keepgoing
---- Client2 Executed ID 213
-++ Started at Fri Apr 18 21:29:33 2008
-+++ HiRes Start 1208543373.36786
-Chdir \s60\osext\localconnectivityextensions\group
-  make -r  -k -f "\EPOC32\BUILD\s60\osext\localconnectivityextensions\group\EXPORT.make" EXPORT VERBOSE=-s KEEPGOING=-k
-copy "\s60\osext\localconnectivityextensions\lcext_dom\bluetooth_audio_adaptation_api\inc\btaudiostreaminputbase.h" "\epoc32\include\domain\osextensions\btaudiostreaminputbase.h"
-        1 file(s) copied.
-copy "\s60\osext\localconnectivityextensions\lcext_dom\bluetooth_power_management_api\inc\btpm.h" "\epoc32\include\domain\osextensions\btpm.h"
-        1 file(s) copied.
-+++ HiRes End 1208543373.72723
-++ Finished at Fri Apr 18 21:29:33 2008
-=== Stage=2 == messagingextensions
--- abld export -keepgoing
---- Client6 Executed ID 217
-++ Started at Fri Apr 18 21:29:33 2008
-+++ HiRes Start 1208543373.36786
-Chdir \s60\osext\messagingextensions\group
-  make -r  -k -f "\EPOC32\BUILD\s60\osext\messagingextensions\group\EXPORT.make" EXPORT VERBOSE=-s KEEPGOING=-k
-Creating \epoc32\include\domain\osextensions\loc\sc
-Creating \epoc32\rom\include\language\osext
-copy "\s60\osext\messagingextensions\msgbranched\rom\messageserver_rsc.iby" "\epoc32\rom\include\language\osext\messageserver_rsc.iby"
-        1 file(s) copied.
-copy "\s60\osext\messagingextensions\msgbranched\rom\gtemailmtmResources.iby" "\epoc32\rom\include\language\osext\gtemailmtmResources.iby"
-        1 file(s) copied.
-copy "\s60\osext\messagingextensions\msgbranched\messaging\email\clientmtms\loc\imcm.loc" "\epoc32\include\domain\osextensions\loc\sc\imcm.loc"
-        1 file(s) copied.
-copy "\s60\osext\messagingextensions\msgbranched\messaging\email\clientmtms\loc\imcm_default_charset.loc" "\epoc32\include\domain\osextensions\loc\sc\imcm_default_charset.loc"
-        1 file(s) copied.
-copy "\s60\osext\messagingextensions\msgbranched\messaging\framework\server\loc\msgs.loc" "\epoc32\include\domain\osextensions\loc\sc\msgs.loc"
-        1 file(s) copied.
-+++ HiRes End 1208543373.80535
-++ Finished at Fri Apr 18 21:29:33 2008
-=== Stage=2 finished Fri Apr 18 21:09:55 2008
-"""
-
-
-
-class Parser(symbian.log.Parser):
-    def __init__(self, content=StringIO.StringIO(test_output)):        
-        symbian.log.Parser.__init__(self, content)
-        self.stages = []
-        self.tasks = []
-
-    def start_stage(self, name, time):
-        logger.debug(name) 
-        self.stages.append(name)
-
-    def task(self, name, cmdline, dir, output):
-        logger.debug("%s, %s, %s, %s" % (name, cmdline, dir, output)) 
-        self.tasks.append({'name': name, 'cmdline': cmdline, 'dir': dir, 'output': output})
-
-
-class TestSymbianLog(unittest.TestCase):
-    """ Test cases for Helium Symbian log parser. """
-    
-    def test_parser(self):
-        """ Test the parser
-        """
-        parser = Parser()
-        parser.parse()
-        assert len(parser.stages) == 2
-        assert len(parser.tasks) == 3
-        
--- a/buildframework/helium/tools/common/python/lib/test/test_symrec.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,263 +0,0 @@
-#============================================================================ 
-#Name        : test_symrec.py 
-#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:
-#===============================================================================
-
-""" ant.py module tests. """
-
-
-import symrec
-import logging
-import os
-from xml.dom.minidom import *
-
-logger = logging.getLogger("test.symrec")
-logging.basicConfig()
-logger.setLevel(logging.DEBUG)
-
-def test_symrec_creation():
-    """ Test metadata generation functions. """
-    metadata = symrec.ReleaseMetadata("release_metadata.xml",
-                                   service="myservice",
-                                   product="myproduct",
-                                   release="myrelease")
-    metadata.add_package(name="my_archive.zip")
-    metadata.add_package(name="my_archive2.zip", filters=['foo', 'bar'])
-    logger.debug(metadata.xml())
-    print metadata.service
-    assert metadata.service == "myservice"
-    assert metadata.product == "myproduct"
-    assert metadata.release == "myrelease"
-    assert metadata.dependsof_service == None
-    assert metadata.dependsof_product == None
-    assert metadata.dependsof_release == None
-    # Package validation
-    assert metadata.keys() == ['my_archive.zip', 'my_archive2.zip']
-    assert metadata['my_archive.zip'] == {'type': u'zip', 'extract': u'single', 'default': True, 'filters': [], 's60filter':[], 'md5checksum': None, 'size': None}
-    assert metadata['my_archive2.zip'] == {'type': u'zip', 'extract': u'single', 'default': True, 'filters': ['foo', 'bar'], 's60filter': ['foo', 'bar'], 'md5checksum': None, 'size': None}
-
-def test_symrec_loading():
-    """ Test loading generated metadata. """
-    filename = os.path.join(os.environ['HELIUM_HOME'], "tests/data/symrec", "generated_release_metadata.xml")    
-    metadata = symrec.ReleaseMetadata(filename)
-    assert metadata.dependsof_service == None
-    assert metadata.dependsof_product == None
-    assert metadata.dependsof_release == None
-    print metadata.keys()
-    assert metadata.keys() == [u's60_app_organizer_clock.zip', u's60_app_organizer_clock_binary.zip', u's60_mw_classicui_and_app_radio.zip', u's60_mw_classicui_and_app_radio_internal.zip']
-    for name in metadata.keys():
-        print metadata[name]
-        assert metadata[name]['md5checksum'] == None
-        assert metadata[name]['size'] == None
-        assert metadata[name]['type'] == "zip"
-                           
-def test_symrec_update():
-    """ Testing symrec MD5updater class. """
-    filename = os.path.join(os.environ['HELIUM_HOME'], "tests/data/symrec/GRACE", "service/product/release_1/release_metadata.xml")
-    updatemd5 = symrec.MD5Updater(filename)
-    updatemd5.update()
-    print updatemd5['test1.zip']['md5checksum']
-    print updatemd5['test2.zip']['md5checksum']
-    assert updatemd5['test1.zip']['md5checksum'] == "29b6ddc0265958641949c15e5c16c580"
-    assert updatemd5['test2.zip']['md5checksum'] == "433fd286bcf7e55be9d0e7e88f0cd84c"
-    assert updatemd5['test1.zip']['size'] == "112"
-    assert updatemd5['test2.zip']['size'] == "112"
-
-
-def test_symrec_releaseinfo_modification():
-    """ Testing symrec release information modifications. """
-    filename = os.path.join(os.environ['HELIUM_HOME'], "tests/data/symrec/GRACE", "service/product/release_1/release_metadata.xml")
-    metadata = symrec.ReleaseMetadata(filename)
-    metadata.service = "test_service"
-    metadata.product = "test_product"
-    metadata.release = "test_release"
-    assert metadata.service == "test_service"
-    assert metadata.product == "test_product"
-    assert metadata.release == "test_release"
-    
-    metadata.dependsof_service = "test_service_dep"
-    metadata.dependsof_product = "test_product_dep"
-    metadata.dependsof_release = "test_release_dep"
-    assert metadata.dependsof_service == "test_service_dep"
-    assert metadata.dependsof_product == "test_product_dep"
-    assert metadata.dependsof_release == "test_release_dep"
-
-      
-def test_release_validator():
-    """ Testing release metadata xml validator. """
-    validator = symrec.ValidateReleaseMetadata(os.path.join(os.environ['HELIUM_HOME'],
-                                                            "tests/data/symrec/GRACE",
-                                                            "service/product/release_1/release_metadata.xml"))
-    assert validator.is_valid() == True
-
-    validator = symrec.ValidateReleaseMetadata(os.path.join(os.environ['HELIUM_HOME'],
-                                                            "tests/data/symrec/GRACE",
-                                                            "service/product/release_2/release_metadata.xml"))
-    assert validator.is_valid() == False
-
-    validator = symrec.ValidateReleaseMetadata(os.path.join(os.environ['HELIUM_HOME'],
-                                                            "tests/data/symrec/GRACE",
-                                                            "service/product/release_1_001/release_metadata.xml"))
-    assert validator.is_valid() == True
-    
-    validator = symrec.ValidateReleaseMetadata(os.path.join(os.environ['HELIUM_HOME'],
-                                                            "tests/data/symrec/GRACE",
-                                                            "service/product/release_1_001/release_metadata_1.xml"))
-    assert validator.is_valid() == True
-
-    validator = symrec.ValidateReleaseMetadata(os.path.join(os.environ['HELIUM_HOME'],
-                                                            "tests/data/symrec/GRACE",
-                                                            "service/product/release_1_002/release_metadata.xml"))
-    assert validator.is_valid() == True
-    
-    validator = symrec.ValidateReleaseMetadata(os.path.join(os.environ['HELIUM_HOME'],
-                                                            "tests/data/symrec/GRACE",
-                                                            "service/product/release_5/release_metadata.xml"))
-    assert validator.is_valid() == True
-    validator = symrec.ValidateReleaseMetadata(os.path.join(os.environ['HELIUM_HOME'],
-                                                            "tests/data/symrec/GRACE",
-                                                            "service/product/release_6/release_metadata.xml"))
-    assert validator.is_valid() == False
-def test_xml_merge():
-    """ Testing the merge of metadata files. """
-    merger = symrec.MetadataMerger(os.path.join(os.environ['HELIUM_HOME'], "tests/data/symrec/merge/main_metadata_1.xml"))
-    merger.merge(os.path.join(os.environ['HELIUM_HOME'], "tests/data/symrec/merge/main_metadata_2.xml"))
-    merger.merge(os.path.join(os.environ['HELIUM_HOME'], "tests/data/symrec/merge/main_metadata_3.xml"))
-    logger.debug(merger.xml())
-    output = open(os.path.join(os.environ['TEMP'], "release_data.xml"), "w+")
-    output.write(merger.xml())
-    output.close()
-    
-    metadata = symrec.ReleaseMetadata(os.path.join(os.environ['TEMP'], "release_data.xml"))
-    logger.debug(metadata.keys())
-    assert len(metadata.keys()) == 4
-    assert metadata.keys() == [u'test1.zip', u'test2.zip', u'test3_1.zip', u'test3_2.zip']
-    
-    
-
-def test_symrec_loading_sp_invalid():
-    """ Test loading generated metadata. """
-    filename = os.path.join(os.environ['HELIUM_HOME'], "tests/data/symrec/GRACE/service/product/release_1_001", "release_metadata.xml")    
-    metadata = symrec.ReleaseMetadata(filename)
-    assert metadata.service == "service"
-    assert metadata.product == "product"
-    assert metadata.release == "release_1_001"
-    assert metadata.dependsof_service == "service"
-    assert metadata.dependsof_product == "product"
-    assert metadata.dependsof_release == "release_1"
-    assert metadata.keys() == [u'sp1.zip']
-
-    validator = symrec.ValidateReleaseMetadata(filename)
-    assert validator.is_valid() == True
-
-def test_symrec_loading_sp_valid():
-    """ Test loading generated metadata. """
-    filename = os.path.join(os.environ['HELIUM_HOME'], "tests/data/symrec/GRACE/service/product/release_1_001", "release_metadata_1.xml")    
-    metadata = symrec.ReleaseMetadata(filename)
-    assert metadata.service == "service"
-    assert metadata.product == "product"
-    assert metadata.release == "release_1_001"
-    assert metadata.dependsof_service == "service"
-    assert metadata.dependsof_product == "product"
-    assert metadata.dependsof_release == "release_1"
-    assert metadata.keys() == []    
-    assert len(metadata.servicepacks) == 1
-    assert metadata.servicepacks[0].name == u'SP1'
-    assert metadata.servicepacks[0].files == [u'sp1.zip']
-    assert metadata.servicepacks[0].instructions == [u'specialInstructions.xml']
-
-    validator = symrec.ValidateReleaseMetadata(filename)
-    assert validator.is_valid() == True
-
-
-def test_symrec_to_tdd():
-    filename = os.path.join(os.environ['HELIUM_HOME'], "tests/data/symrec/GRACE/service/product/release_1_001", "release_metadata.xml")        
-    logger.info(symrec.Metadata2TDD(filename).to_tdd())
-
-
-def test_find_latest_metadata():
-    """ Check find latest metadata. """
-    assert symrec.find_latest_metadata(os.path.join(os.environ['HELIUM_HOME'], "tests/data/symrec/override/none")) == None
-    
-    expected = os.path.normpath(os.path.join(os.environ['HELIUM_HOME'], "tests/data/symrec/override/one", "release_metadata.xml"))
-    filename = symrec.find_latest_metadata(os.path.dirname(expected))
-    assert expected == filename, "Should be %s (%s)" % (expected, filename)
-
-    expected = os.path.normpath(os.path.join(os.environ['HELIUM_HOME'], "tests/data/symrec/override/several", "release_metadata_2.xml"))
-    filename = symrec.find_latest_metadata(os.path.dirname(expected))
-    assert expected == filename, "Should be %s (%s)" % (expected, filename)
-
-def test_find_latest_metadata_invalid_path():
-    """ Check find latest metadata with an invalid path. """
-    path = os.path.join(os.environ['HELIUM_HOME'], "tests/data/symrec/override/invalid")
-    open(path, "w+").close()
-    assert symrec.find_latest_metadata(path) == None
-    os.remove(path)
-    
-def test_cached_release_validator():
-    """ Testing the cached release metadata xml validator. """
-    
-    cachefile = os.path.join(os.environ['HELIUM_HOME'], 'build', 'test_cache.txt')
-    if not os.path.exists(os.path.dirname(cachefile)):
-        os.makedirs(os.path.dirname(cachefile))
-    if os.path.exists(cachefile):
-        os.remove(cachefile)
-    # 1st release
-    validator = symrec.ValidateReleaseMetadataCached(os.path.join(os.environ['HELIUM_HOME'],
-                                                            "tests/data/symrec/GRACE",
-                                                            "service/product/release_2/release_metadata.xml"), cachefile)
-    assert validator.is_valid() == False
-    assert os.path.exists(cachefile), "Cache file has not been created"
-    assert len(validator.load_cache()) == 1
-    
-    # 2nd release
-    validator = symrec.ValidateReleaseMetadataCached(os.path.join(os.environ['HELIUM_HOME'],
-                                                            "tests/data/symrec/GRACE",
-                                                            "service/product/release_1/release_metadata.xml"), cachefile)
-    assert validator.is_valid() == True
-    assert os.path.exists(cachefile), "Cache file has not been created"
-    assert len(validator.load_cache()) == 2
-
-    # 3st release
-    validator = symrec.ValidateReleaseMetadataCached(os.path.join(os.environ['HELIUM_HOME'],
-                                                            "tests/data/symrec/GRACE",
-                                                            "service/product/release_1_001/release_metadata_1.xml"), cachefile)
-    assert validator.is_valid() == True
-    assert os.path.exists(cachefile), "Cache file has not been created"
-    print validator.load_cache()
-    assert len(validator.load_cache()) == 3
-
-    # testing 2nd release again
-    validator = symrec.ValidateReleaseMetadataCached(os.path.join(os.environ['HELIUM_HOME'],
-                                                            "tests/data/symrec/GRACE",
-                                                            "service/product/release_1/release_metadata.xml"), cachefile)
-    assert validator.is_valid() == True
-    assert os.path.exists(cachefile), "Cache file has not been created"
-    assert len(validator.load_cache()) == 3
-
-
-def test_ignore_whitespace_writexml():
-    myText = '''<foo>    
-     <bar attr1="value" attr2="&gt;">   foo bar  
-     </bar>
-     <bar x="y"/>    
-     </foo>'''
-    result1 =  xml.dom.minidom.parseString(myText).toprettyxml()
-    result2 =  xml.dom.minidom.parseString(result1).toprettyxml()
-    print logger.debug(result1)
-    print logger.debug(result2)
-    assert result1 == result2
--- a/buildframework/helium/tools/common/python/lib/test/test_sysdef.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-#============================================================================ 
-#Name        : test_sysdef.py 
-#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:
-#===============================================================================
-
-""" Test cases for the sysdef module. """
-
-import logging
-import sys
-import unittest
-import os
-import sysdef.api
-import sysdef.io
-import StringIO
-
-# Uncomment this line to enable logging in this module, or configure logging elsewhere
-logging.basicConfig(level=logging.DEBUG)
-logger = logging.getLogger('test.sysdef')
-
-class SysdefTest(unittest.TestCase):
-    """ Testing sydef module. """
-    
-    def test_basic_parsing(self):
-        """ A System Definition file can be parsed and information extracted. """
-        sysDef = sysdef.api.SystemDefinition(os.path.join(os.environ["HELIUM_HOME"], r'tests', 'data', 'sysdef2make', 'SDF.xml'))
-        assert len(sysDef.configurations) == 4
-        assert len(sysDef.layers) == 1
-        assert len(sysDef.unitlists) == 1
-        
-        # UnitList
-        assert sysDef.unitlists['unitlist1'].name == 'unitlist1'
-        assert len(sysDef.unitlists['unitlist1'].units) == 3
-        
-        # Layer
-        assert sysDef.layers['layer1'].name == 'layer1'
-        assert len(sysDef.layers['layer1'].units) == 3
-
-        # Configs
-        assert sysDef.configurations['config1'].name == 'config1'
-        assert len(sysDef.configurations['config1'].tasks) == 12
-
-    def test_makefile_generation(self):
-        sysDef = sysdef.api.SystemDefinition(os.path.join(os.environ["HELIUM_HOME"], r'tests', 'data', 'sysdef2make', 'SDF.xml'))
-        output = StringIO.StringIO()
-        writer = sysdef.io.MakeWriter2(output)
-        writer.write(sysDef)
-        logger.debug(output.getvalue())
-        writer.close()
-
--- a/buildframework/helium/tools/common/python/lib/test/test_threadpool.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,85 +0,0 @@
-#============================================================================ 
-#Name        : test_threadpool.py 
-#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:
-#===============================================================================
-
-""" Test cases for threadpool module.
-
-"""
-
-import logging
-import sys
-import time
-import unittest
-
-import threadpool
-
-# Uncomment this line to enable logging in this module, or configure logging elsewhere
-logging.basicConfig(level=logging.DEBUG)
-_logger = logging.getLogger('test.threadpool')
-
-class Job:
-    """Job: a job created, used to test threadpool"""
-    def __init__(self, jid):
-        self.__id = jid
-        
-    def __call__(self):
-        _logger.debug("Job %d" % self.__id)
-        self.work()
-        _logger.debug("Job %d - done" % self.__id)
-        
-    def work(self):
-        time.sleep(1)
-
-class LeavingJob(Job):
-    """LeavingJob: sleeps and raises exception"""
-    def work(self):
-        time.sleep(1)
-        raise Exception("Error!")
-    
-
-class TestThreadPool(unittest.TestCase):
-    """TestThreadPool: sets up 6 jobs and clears them down again."""
-    def test_thread_pool(self):
-        """ Test the thread pool.
-        """
-        pool = threadpool.ThreadPool(4)
-        pool.addWork(Job(1))
-        pool.addWork(Job(2))
-        pool.addWork(Job(3))
-        pool.addWork(Job(4))
-        pool.addWork(Job(5))
-        pool.addWork(Job(6))
-        pool.wait()
-
-    def test_thread_pool_leaving(self):
-        """ Test the thread pool when exception happens.
-        """
-        exceptions = []
-        def handle_exception(request, exc_info):
-            _logger.debug( "Exception occured in request #%s: %s" % (request.requestID, exc_info[1]))
-            exceptions.append(exc_info[1])                        
-        pool = threadpool.ThreadPool(4)
-        pool.addWork(LeavingJob(1), exc_callback=handle_exception)
-        pool.addWork(LeavingJob(2), exc_callback=handle_exception)
-        pool.addWork(LeavingJob(3), exc_callback=handle_exception)
-        pool.addWork(LeavingJob(4), exc_callback=handle_exception)
-        pool.addWork(LeavingJob(5), exc_callback=handle_exception)
-        pool.addWork(LeavingJob(6), exc_callback=handle_exception)
-        pool.wait()
-        assert len(exceptions)==6
-        _logger.debug(exceptions)
--- a/buildframework/helium/tools/common/python/lib/test/test_unittestadditions.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-#============================================================================ 
-#Name        : test_unittestadditions.py 
-#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:
-#===============================================================================
-import unittest
-from unittestadditions import skip
-
-class TestSkipDecorator(unittest.TestCase):
-
-    def test_skip_false(self):
-        """ A skip(False) decorated function is executed properly """
-        @skip(False)
-        def func(data):
-            return data
-        
-        assert func("test") == "test"
-    
-    def test_skip_true(self):
-        """ A skip(True) decorated function is executed properly """
-        @skip(True)
-        def func(data):
-            return data
-        
-        assert func("test") == None
-
-
-    def test_skip_true_default_return(self):
-        """ A skip(True, 'some return value') decorated function is executed properly """
-        @skip(True, "stub")
-        def func(data):
-            return data
-        
-        assert func("test") == "stub"
--- a/buildframework/helium/tools/common/python/lib/unittestadditions.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-#============================================================================ 
-#Name        : unittestadditions.py 
-#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:
-#===============================================================================
-
-import logging
-logger = logging.getLogger('unittestadditions')
-
-class skip(object):
-    """ Skip decorator. The decorated function will only be called
-        if the parameter is true.
-         
-        e.g: 
-        @skip(True)
-        def test():
-           assert True==False
-               
-    """
-    
-    def __init__(self, shouldSkip, returns=None):
-        self.shouldSkip = shouldSkip
-        self.returns = returns
-
-    def __call__(self, f):
-        """ Returns the function f if  shouldSkip is False. Else a stub function is returned. """
-        def __skiptest(*args, **kargs):
-            logger.warning("Skipping test %s" % f.__name__)
-            return self.returns
-        if self.shouldSkip:
-            return __skiptest
-        return f
--- a/buildframework/helium/tools/common/python/lib/validateoverlay.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,305 +0,0 @@
-#============================================================================ 
-#Name        : validateoverlay.py 
-#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:
-#===============================================================================
-
-
-
-import StringIO
-import sys
-import os
-import optparse
-import traceback
-
-import amara
-
-import ccm
-import comments
-import helium.logger
-from helium.outputer import XML2XHTML
-import nokia.nokiaccm
-import virtualbuildarea
-
-
-def __findChild(p, d, name):
-    if (p is None or d is None):
-        return None
-    for child in d.children(p):
-        if name.lower() == child.name.lower():
-            return child
-    return None
-
-def __getDir(p, o):
-    if (o.type == 'project'):
-        return o, o.root_dir()
-    return p, o
-
-class ValidateOverlayInfo:
-    UNKNOW = 0
-    STILL_VALID = 1
-    MERGE = 2
-    def __init__(self, name):
-        self.name = name
-        #self.status = status
-        self.overlayObject = None
-        self.deliveryObjects = []
-
-def ValidateOverlay(vproject, vdir, oproject, odir, extraobject = None):
-    """ This function scan an the virtual build area and the overlay to validate
-        if the overlay content is still up to date compare to the delivery.
-    """
-    if extraobject is None:
-        extraobject = []
-    print "ValidateOverlay(%s,%s,%s,%s)" % (vproject, vdir, oproject, odir)
-    result = {'name': odir.name, 'content': []}
-    for child in odir.children(oproject):
-        o = __findChild(vproject, vdir, child.name)
-        if o is None:
-            if (child.type == 'dir' or child.type == 'project'):
-                op, oo = __getDir(oproject, child)
-                result['content'].append(ValidateOverlay(None, None, op, oo, extraobject))
-            else:
-                info = ValidateOverlayInfo(child.name)
-                info.overlayObject = child
-                result['content'].append(info)
-        else:
-            if (child.type == 'dir' or child.type == 'project'):
-                vp, vo = __getDir(vproject, o)
-                op, oo = __getDir(oproject, child)
-                result['content'].append(ValidateOverlay(vp, vo, op, oo, extraobject))
-            else:
-                info = ValidateOverlayInfo(child.name)
-                info.overlayObject = child
-                info.deliveryObjects.append({'status': ValidateOverlayInfo.UNKNOW, 'object': o})
-                
-                for eo in extraobject:
-                    if eo.is_same_family(o):
-                        info.deliveryObjects.append({'status': ValidateOverlayInfo.UNKNOW, 'object': eo})
-                
-                for delivery in info.deliveryObjects:
-                    if child.is_recursive_sucessor_of(delivery['object']):
-                        delivery['status'] = ValidateOverlayInfo.STILL_VALID
-                    else:
-                        delivery['status'] = ValidateOverlayInfo.MERGE
-
-                result['content'].append(info)
-    return result
-
-def getObjectPath(project, spath, dir=None):
-    name = spath.pop(0)
-    if (dir == None):        
-        if project.root_dir().name.lower() == name.lower():
-            return getObjectPath(project, spath, project.root_dir())
-        raise Exception("project.root_dir().name.lower()!=name.lower():")
-    else:
-        for o in dir.children(project):
-            if o.name.lower() == name.lower():
-                if len(spath) == 0:
-                    return o
-                elif o.type == 'dir':
-                    return getObjectPath(project, spath, o)
-                else:
-                    raise Exception("Object could not be accessed")
-        raise Exception("Object not found")
- 
-def showBranchInfo(logger, object):    
-    doc = comments.CommentParser.scan_content(str(object.overlayObject), object.overlayObject.content(), "branchInfo")
-    if len(doc.commentLog.xml_xpath('branchInfo'))>0:
-        for child in doc.commentLog.xml_xpath('branchInfo'):
-            logger.PrintRaw("<b>Branch Information:</b>\n")
-            if hasattr(child, 'xml_attributes'):
-                for attr in child.xml_attributes:
-                    logger.PrintRaw("<b>%s:</b> %s\n" % (attr, getattr(child, attr)))
-                    if hasattr(child, 'branch'):
-                        logger.PrintRaw("<b>Should validate compare to file:</b> %s\n" % child.branch)
-    else:
-        logger.Print("No branch info...\n")
-
-def showValidity(logger, obj):
-    if len(obj.deliveryObjects)==0:
-        logger.NotFound("Could not find %s relative objects." % (obj.overlayObject))                
-    else:
-        for delivery in obj.deliveryObjects:
-            if (delivery['status'] == ValidateOverlayInfo.MERGE):
-                logger.Merge("Overlay object %s requires a merge with %s." % (obj.overlayObject, delivery['object']))
-            elif (delivery['status'] == ValidateOverlayInfo.STILL_VALID):
-                logger.Valid("%s is still a successor of %s." % (obj.overlayObject, delivery['object']))
-    
-
-def showValidateOverlayInfo(logger, data, comments=False):
-    logger.OpenEvent(data['name'])
-    for o in data['content']:
-        if isinstance(o, ValidateOverlayInfo):            
-            logger.OpenEvent(o.name)
-            showValidity(logger, o)                    
-            # Showing branch information.
-            if comments:
-                showBranchInfo(logger, o)
-            logger.CloseEvent()
-        else:
-            showValidateOverlayInfo(logger, o, comments)
-    logger.CloseEvent()
-
-def mergeObjects(logger, data, task):
-    for obj in data['content']:
-        if isinstance(obj, ValidateOverlayInfo):
-            mergedobject = None
-            for delivery in obj.deliveryObjects:
-                if (delivery['status'] == ValidateOverlayInfo.MERGE):
-                    try:
-                        if not mergedobject:
-                            (mergedobject, validity) = obj.overlayObject.merge(delivery['object'], task)
-                            mergedobject.checkin('public', 'Makes object public.')
-                            logger.Print("%s (%s, %s)" % (mergedobject, obj.overlayObject, delivery['object']))
-                        else:
-                            delivery['object'].relate(mergedobject)
-                            logger.Print("%s (%s, %s)" % (mergedobject, obj.overlayObject, delivery['object']))
-                            #mergedobject
-                    except Exception, e:
-                        logger.Error("%s" % e)
-#            if o.status == ValidateOverlayInfo.MERGE:            
-#                try:
-#                    (object, validity) = o.overlayObject.merge(o.deliveryObject, task)
-#                    object.checkin('public', 'Makes object public.')
-##                   logger.Print("%s (%s, %s)" % (object, o.overlayObject, o.deliveryObject))
-#                except Exception, e:
-#                    logger.Error("%s" % e)
-        else:
-            mergeObjects(logger, obj, task)
-
-
-def validate(session, inputfile, overlaydir, showBranchInfo, createtask=False, releasetag = None, extra_objects = None, logname = "validate_overlay"):
-    """ Validate an overlay uisng data from the inputfile to generate the virtual build area. """
-    vba = virtualbuildarea.create(session, open(inputfile, 'r'))
-    print overlaydir
-    if extra_objects is None:
-        extra_objects = []
-    overlay = session.get_workarea_info(overlaydir)['project']
-    voresult = ValidateOverlay(vba, vba.root_dir(), overlay, getObjectPath(overlay, [overlay.name, 'common', 'files']), extra_objects)
-
-    mclogger = helium.logger.Logger()
-    mclogger.SetInterface("http://fawww.europe.nokia.com/isis/isis_interface/")
-    mclogger.SetTitle("Validate Overlay")
-    mclogger.SetSubTitle("Validating: %s" % overlay)
-    mclogger.OpenMainContent("Analysing %s" % overlay)
-    showValidateOverlayInfo(mclogger, voresult, showBranchInfo)
-    mclogger.CloseMainContent()
-    if createtask and releasetag != None:
-        mclogger.OpenMainContent("Creating merge task")
-        team = 'TEAM_NAME'
-        if os.environ.has_key('TEAM'):
-            team = os.environ['TEAM']            
-        try:
-            task = ccm.Task.create(session, session.create(releasetag), "%s: %s: %s: Merge task" % (team, overlay.name, os.environ['USERNAME']))
-            #task = session.create("Task fa1f5132#17458")
-            task.assign(os.environ['USERNAME'])
-            mclogger.Print("Created task %s.\n" % task['displayname'])
-            mergeObjects(mclogger, voresult, task)
-        except Exception, e:
-            traceback.print_exc(file=sys.stdout)
-            mclogger.Error(e)
-        mclogger.CloseMainContent()
-    
-    mclogger.WriteToFile(logname + ".xml")
-    g = XML2XHTML(logname+".xml")    
-    g.addCSSLink("http://fawww.europe.nokia.com/isis/isis_interface/css/overlaycheck.css")
-    g.generate()
-    g.WriteToFile(logname + ".html")
-
-
-def main():
-
-    usage = "usage: %prog [options] arg1 arg2"
-    parser = optparse.OptionParser(usage=usage)
-    parser.add_option("--host", dest="ccm_host", action="store",
-                                help="Synergy Host")
-    parser.add_option("-d", "--db", dest="ccm_db", action="store",
-                                help="Synergy database")
-    parser.add_option("-u", "--username", dest="ccm_login",  action="store",                    
-                                help="Synergy username")
-    parser.add_option("-p", "--password", dest="ccm_password",  action="store",                    
-                                help="Synergy user password")    
-    parser.add_option("-c",  "--config", dest="inputfile", action="store",
-                                help="Configuration file", metavar="PATH")
-    parser.add_option("-o", "--overlay", dest="overlaydir", action="store",
-                                help="Overlay work area directory", metavar="PATH")
-    parser.add_option("--showBranchInfo", dest="showBranchInfo", action="store_true",
-                                help="Show up branch information", default=False)
-    parser.add_option("--ct", dest="createtask", action="store_true",
-                                help="Create merge task", default=False)
-    parser.add_option("--rt", dest="releasetag", action="store",
-                                help="Release tag", default=None)
-
-    (options, args) = parser.parse_args()
-    session = nokia.nokiaccm.open_session(options.ccm_login, options.ccm_password, options.ccm_host, options.ccm_db)
-    validate(session, options.inputfile, options.overlaydir, options.showBranchInfo, options.createtask, options.releasetag)
-    session.close()
-
-if __name__ == "__main__":
-    main()
-
-#vba = virtualbuildarea.VirtualProject(session,'vba')
-
-#try:
-#    #dom = xml.dom.minidom.parse(input)
-#    dom = xml.dom.minidom.parseString(input)
-#except Exception, e:
-#    raise Exception("XML cannot be parsed properly %s" % e)
-#
-#virtualBA = dom.documentElement
-#for child in virtualBA.childNodes:
-#    if (child.nodeType == xml.dom.Node.ELEMENT_NODE) and (child.nodeName=='add'):
-#        print "add node :%s (%d)" % (child.getAttribute('project'),len(child.childNodes))
-#        pathobject = createVirtualPath(child.getAttribute('to').split('/'),vba)
-#        if len(child.childNodes)==0:
-#            p = session.create(child.getAttribute('project'))
-#            pathobject.addChild(p,p)
-#        else:
-#            project = session.create(child.getAttribute('project'))
-#            for subChild in child.childNodes:
-#                if (subChild.nodeType == xml.dom.Node.ELEMENT_NODE) and (subChild.nodeName=='objects'):
-#                    spath = removeEmptyStrings(subChild.getAttribute('from').split('/'))
-#                    for t in getObjects(project,spath):
-#                        pathobject.addChild(t['object'],t['project'])
-#                    
-
-
-#print "******************************************"
-def showVirtualContent(project, path, indent=''):
-    if not isinstance(path, virtualbuildarea.VirtualDir):
-        return
-    print "%s+ %s" % (indent, path)
-    indent += "   "
-    for obj in path.children(project):        
-        if (obj.type == 'dir'):
-            showVirtualContent(project, obj, indent)
-        else:
-            print "%s- %s" % (indent, obj)
-    
-#showVirtualContent(vba, vba.root_dir())
-
-def get_additional_delivery_objects(session, deliveryinput):
-    objects = []
-    delivery = amara.parse(open(deliveryinput, 'r'))
-    for t in delivery.xml_xpath('/deliveryConfiguration//task[@id]'):
-        for task in map(lambda x: x.strip(), t.id.split(',')):
-            objects.extend(session.create("Task %s" % task).objects)
-    for f in delivery.xml_xpath('/deliveryConfiguration//folder[@id]'):
-        for folder in map(lambda x: x.strip(), f.id.split(',')):
-            objects.extend(session.create("Folder %s" % folder).objects)
-    return objects
-
--- a/buildframework/helium/tools/common/python/lib/vbaconf/__init__.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,220 +0,0 @@
-#============================================================================ 
-#Name        : __init__.py 
-#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:
-#===============================================================================
-
-""" Helper to convert delivery.xml and prep.xml to VirtualBuildArea
-    configuration file.
-"""
-from  xml.dom.minidom import getDOMImplementation
-import amara
-import ccm
-import re
-import os.path
-import sys
-import configuration
-
-def cleanup_path(path):
-    """ Returns path without any sequence of '/' and replacing '\' by '/' """
-    return re.sub(r'/+', '/', re.sub(r'\\', '/', path))
-    
-def generate_config(deliveryinput, prepinput):
-    """ deliveryinput: path to delivery conf file (old format).
-        prepinput: path to the prep conf file.
-        Return XML Document object.
-    """
-    impl = getDOMImplementation()
-    doc = getDOMImplementation().createDocument(None, "virtualBuildArea", None)
-    vba = doc.getElementsByTagName("virtualBuildArea")[0]
-
-    # Loading delivery content
-    delivery = amara.parse(open(deliveryinput, 'r'))
-    # loading prep file
-    prep = amara.parse(open(prepinput, 'r'))
-    # analysing preparation creation
-    for source in prep.xml_xpath('/prepSpec/source'):
-        basedir = cleanup_path(source.basedir)
-        for copy in source.xml_xpath('./copy'):            
-            src = cleanup_path(copy.name)
-            for p in delivery.xml_xpath('/deliveryConfiguration/*'):
-                ccmp = ccm.FourPartName(p.project)                
-                p_dir = cleanup_path(p.dir)
-                #print "ccmp: %s" % ccmp
-                #print "pdir: %s" % p_dir
-                # looking for project_name/project_name pattern, and if dest doesn't exist
-                if (re.match(r"%s/%s" % (ccmp.name, ccmp.name), src, re.I) is not None) and not hasattr(copy, 'dest'):
-                    print "All object from root."
-                    add = doc.createElementNS("", "add")
-                    add.setAttributeNS("", "project", str(ccmp))                    
-                    vba.appendChild(add)
-                    objs = doc.createElementNS("", "objects")
-                    objs.setAttributeNS("", "from", ccmp.name)
-                    add.appendChild(objs)
-                # looking for project_name/project_name pattern, and if dest exists
-                elif (re.match(r"%s/%s" % (ccmp.name, ccmp.name), src, re.I) is not None) and hasattr(copy, 'dest'):
-                    if os.path.basename(copy.dest).lower() == ccmp.name.lower():                        
-                        add = doc.createElementNS("", "add")
-                        add.setAttributeNS("", "project", str(ccmp))
-                        add.setAttributeNS("", "to", cleanup_path('/' + os.path.dirname(copy.dest)))
-                        vba.appendChild(add)
-                    else:                        
-                        add = doc.createElementNS("", "add")
-                        add.setAttributeNS("", "project", str(ccmp))
-                        add.setAttributeNS("", "to", cleanup_path('/' + copy.dest))
-                        vba.appendChild(add)
-                # for directory copy
-                elif cleanup_path(basedir + "/" + src) == p_dir:
-                    print "Adding to subdirectory"
-                    print ccmp.name, basedir + "/" + src, p_dir
-                    add = doc.createElementNS("", "add")
-                    add.setAttributeNS("", "project", str(ccmp))                
-                    if hasattr(copy, 'dest'):
-                        add.setAttributeNS("", "to", cleanup_path('/' + copy.dest + '/' + ccmp.name))
-                    else:
-                        add.setAttributeNS("", "to", cleanup_path('/'+ ccmp.name))
-                    vba.appendChild(add)
-                elif p_dir.startswith(cleanup_path(basedir + "/" + src + '/')):
-                    print "Adding to subdirectory"
-                    delta = p_dir[len(cleanup_path(basedir)):]
-                    add = doc.createElementNS("", "add")                    
-                    add.setAttributeNS("", "project", str(ccmp))
-                    if hasattr(copy, 'dest'):
-                        add.setAttributeNS("", "to", cleanup_path('/' + os.path.dirname(copy.dest) + '/' + delta + '/' + ccmp.name))
-                    else:
-                        add.setAttributeNS("", "to", cleanup_path(delta + '/' + ccmp.name))
-                    vba.appendChild(add)                        
-    return doc
-
-
-
-class AbstractConfigConverter:
-
-    def __init__(self):
-        pass
-    
-    def _get_projects_configs(self):
-        raise Exception("Todo: not implemented.")
-
-    def _get_prep_configs(self):
-        raise Exception("Todo: not implemented.")
-    
-    def generate_config(self):
-        """ deliveryinput: path to delivery conf file (old format).
-            prepinput: path to the prep conf file.
-            Return XML Document object.
-        """
-        impl = getDOMImplementation()
-        doc = getDOMImplementation().createDocument(None, "virtualBuildArea", None)
-        vba = doc.getElementsByTagName("virtualBuildArea")[0]
-    
-        # analysing preparation creation
-        for copy in self._get_prep_configs():
-            basedir = cleanup_path(copy.basedir)
-            src = cleanup_path(copy.name)
-            for p in self._get_projects_configs():
-                ccmp = ccm.FourPartName(p.project)                
-                p_dir = cleanup_path(p.dir)
-                #print "ccmp: %s" % ccmp
-                #print "pdir: %s" % p_dir
-                # looking for project_name/project_name pattern, and if dest doesn't exist
-                if (re.match(r"%s/%s" % (ccmp.name, ccmp.name), src, re.I) is not None) and not hasattr(copy, 'dest'):
-                    print "All object from root."
-                    add = doc.createElementNS("", "add")
-                    add.setAttributeNS("", "project", str(ccmp))                    
-                    vba.appendChild(add)
-                    objs = doc.createElementNS("", "objects")
-                    objs.setAttributeNS("", "from", ccmp.name)
-                    add.appendChild(objs)
-                # looking for project_name/project_name pattern, and if dest exists
-                elif (re.match(r"%s/%s" % (ccmp.name, ccmp.name), src, re.I) is not None) and hasattr(copy, 'dest'):
-                    if os.path.basename(copy.dest).lower() == ccmp.name.lower():                        
-                        add = doc.createElementNS("", "add")
-                        add.setAttributeNS("", "project", str(ccmp))
-                        add.setAttributeNS("", "to", cleanup_path('/' + os.path.dirname(copy.dest)))
-                        vba.appendChild(add)
-                    else:                        
-                        add = doc.createElementNS("", "add")
-                        add.setAttributeNS("", "project", str(ccmp))
-                        add.setAttributeNS("", "to", cleanup_path('/' + copy.dest))
-                        vba.appendChild(add)
-                # for directory copy
-                elif cleanup_path(basedir + "/" + src) == p_dir:
-                    print "Adding to subdirectory"
-                    print ccmp.name, basedir + "/" + src, p_dir
-                    add = doc.createElementNS("", "add")
-                    add.setAttributeNS("", "project", str(ccmp))                
-                    if hasattr(copy, 'dest'):
-                        add.setAttributeNS("", "to", cleanup_path('/' + copy.dest + '/' + ccmp.name))
-                    else:
-                        add.setAttributeNS("", "to", cleanup_path('/'+ ccmp.name))
-                    vba.appendChild(add)
-                elif p_dir.startswith(cleanup_path(basedir + "/" + src + '/')):
-                    print "Adding to subdirectory"
-                    delta = p_dir[len(cleanup_path(basedir)):]
-                    add = doc.createElementNS("", "add")                    
-                    add.setAttributeNS("", "project", str(ccmp))
-                    if hasattr(copy, 'dest'):
-                        add.setAttributeNS("", "to", cleanup_path('/' + os.path.dirname(copy.dest) + '/' + delta + '/' + ccmp.name))
-                    else:
-                        add.setAttributeNS("", "to", cleanup_path(delta + '/' + ccmp.name))
-                    vba.appendChild(add)                        
-        return doc
-
-
-class ConfigConverter(AbstractConfigConverter):
-    def __init__(self, deliveryinput, prepinput):
-        AbstractConfigConverter.__init__(self)
-        self._deliveryinput = deliveryinput
-        self._prepinput = prepinput
-    
-    def _get_projects_configs(self):
-        # Loading delivery content
-        delivery = amara.parse(open(self._deliveryinput, 'r'))
-        return delivery.xml_xpath('/deliveryConfiguration/*')
-
-    def _get_prep_configs(self):
-        # loading prep file        
-        prep = amara.parse(open(self._prepinput, 'r'))
-        class __ConfigWrapper:
-            """ wrapper object to access directly conf property. """
-            def __init__(self, source, config):
-                self.basedir = source.basedir
-                self.name = config.name
-                if hasattr(copy, 'dest'):
-                    self.dest = copy.dest
-        
-        result = []
-        for source in prep.xml_xpath('/prepSpec/source'):
-            for copy in source.xml_xpath('./copy'):
-                result.append(__ConfigWrapper(source, copy))
-        return result
-
-
-class ConfigConverterNewDelivery(ConfigConverter):
-    def __init__(self, deliveryinput, prepinput):
-        ConfigConverter.__init__(self, deliveryinput, prepinput)
-        configBuilder = configuration.NestedConfigurationBuilder(open(self._deliveryinput, 'r'))
-        self.__configs = configBuilder.getConfiguration().getConfigurations()
-    
-    def _get_projects_configs(self):
-        class __ConfigWrapper:
-            """ wrapper object to access directly conf property. """
-            def __init__(self, config):
-                self.project = config.name
-                self.dir = config['dir']
-        # Loading delivery content
-        return map(lambda c: __ConfigWrapper(c), self.__configs)
--- a/buildframework/helium/tools/common/python/lib/vbaconf/new_delivery.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,110 +0,0 @@
-#============================================================================ 
-#Name        : new_delivery.py 
-#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:
-#===============================================================================
-
-""" Helper to convert delivery.xml and prep.xml to VirtualBuildArea
-    configuration file.
-"""
-from  xml.dom.minidom import getDOMImplementation
-import amara
-import ccm
-import re
-import os.path
-import sys
-import configuration
-
-def cleanup_path(path):
-    """ Returns path without any sequence of '/' and replacing '\' by '/' """
-    return re.sub(r'/+', '/', re.sub(r'\\', '/', path))
-
-class config_wrapper:
-    """ wrapper object to access directly conf property. """
-    def __init__(self, config):
-        self.project = config.name
-        self.dir = config['dir']
-
-def generate_config(deliveryinput, prepinput):
-    """ deliveryinput: path to delivery conf file (old format).
-        prepinput: path to the prep conf file.
-        Return XML Document object.
-    """
-    impl = getDOMImplementation()
-    doc = getDOMImplementation().createDocument(None, "virtualBuildArea", None)
-    vba = doc.getElementsByTagName("virtualBuildArea")[0]
-
-    # Loading delivery content
-    configBuilder = configuration.NestedConfigurationBuilder(open(deliveryinput, 'r'))
-    deliveryConfigs = configBuilder.getConfiguration().getConfigurations()
-
-    # loading prep file
-    prep = amara.parse(open(prepinput, 'r'))
-    # analysing preparation creation
-    for source in prep.xml_xpath('/prepSpec/source'):
-        basedir = cleanup_path(source.basedir)
-        for copy in source.xml_xpath('./copy'):            
-            src = cleanup_path(copy.name)
-            for config in deliveryConfigs:
-                p = config_wrapper(config)
-                ccmp = ccm.FourPartName(p.project)                
-                p_dir = cleanup_path(p.dir)
-                #print "ccmp: %s" % ccmp
-                #print "pdir: %s" % p_dir
-                # looking for project_name/project_name pattern, and if dest doesn't exist
-                if (re.match(r"%s/%s" % (ccmp.name, ccmp.name), src, re.I) is not None) and not hasattr(copy, 'dest'):
-                    print "All object from root."
-                    add = doc.createElementNS("", "add")
-                    add.setAttributeNS("", "project", str(ccmp))                    
-                    vba.appendChild(add)
-                    objs = doc.createElementNS("", "objects")
-                    objs.setAttributeNS("", "from", ccmp.name)
-                    add.appendChild(objs)
-                # looking for project_name/project_name pattern, and if dest exists
-                elif (re.match(r"%s/%s" % (ccmp.name, ccmp.name), src, re.I) is not None) and hasattr(copy, 'dest'):
-                    if os.path.basename(copy.dest).lower() == ccmp.name.lower():                        
-                        add = doc.createElementNS("", "add")
-                        add.setAttributeNS("", "project", str(ccmp))
-                        add.setAttributeNS("", "to", cleanup_path('/' + os.path.dirname(copy.dest)))
-                        vba.appendChild(add)
-                    else:                        
-                        add = doc.createElementNS("", "add")
-                        add.setAttributeNS("", "project", str(ccmp))
-                        add.setAttributeNS("", "to", cleanup_path('/' + copy.dest))
-                        vba.appendChild(add)
-                # for directory copy
-                elif cleanup_path(basedir + "/" + src) == p_dir:
-                    print "Adding to subdirectory"
-                    print ccmp.name, basedir + "/" + src, p_dir
-                    add = doc.createElementNS("", "add")
-                    add.setAttributeNS("", "project", str(ccmp))                
-                    if hasattr(copy, 'dest'):
-                        add.setAttributeNS("", "to", cleanup_path('/' + copy.dest + '/' + ccmp.name))
-                    else:
-                        add.setAttributeNS("", "to", cleanup_path('/'+ ccmp.name))
-                    vba.appendChild(add)
-                elif p_dir.startswith(cleanup_path(basedir + "/" + src + '/')):
-                    print "Adding to subdirectory"
-                    delta = p_dir[len(cleanup_path(basedir)):]
-                    add = doc.createElementNS("", "add")                    
-                    add.setAttributeNS("", "project", str(ccmp))
-                    if hasattr(copy, 'dest'):
-                        add.setAttributeNS("", "to", cleanup_path('/' + os.path.dirname(copy.dest) + '/' + delta + '/' + ccmp.name))
-                    else:
-                        add.setAttributeNS("", "to", cleanup_path(delta + '/' + ccmp.name))
-                    vba.appendChild(add)                        
-    return doc
-
--- a/buildframework/helium/tools/common/python/lib/version.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,87 +0,0 @@
-#============================================================================ 
-#Name        : version.py 
-#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:
-#===============================================================================
-
-""" S60 Version Management module.
-
-::
-
-    config = {'model.name': 'NXX',
-              'variant.id': '01',
-              'variant.revision' : '0',
-              'model.template': '${model.name} (${variant.id}.${variant.revision})'}
-    v = Version('model',config)
-    print v.version_string()
-
-"""
-
-from datetime import date
-import codecs
-import os
-import re
-
-class Version:
-    """ Version template.
-    """
-    def __init__(self, vtype, config):
-        """ Initialise the Version object.
-        """
-        self.vtype = vtype
-        self.config = config
-        today = date.today().strftime( "%d-%m-%y" )
-        self.config['today'] = today
-  
-    def version_string( self ):
-        """ Returns the formatted version string.
-        """
-        # Insert the attributes of this object into the format string
-        # Make all Ant-like substitution match the Python format for string substitution
-        return self.__unescape(self.config["%s.template" % self.vtype])
-
-    def write(self):
-        """ Write the version string to the vtype.txt.path file.
-        """
-        self.__write(self.__unescape(self.config["%s.txt.path" % self.vtype]), self.version_string())
-
-    def __write( self, path, content ):
-        print 'Writing version file: ' + path
-        #print 'Content: ' + content
-        if os.path.exists( path ):
-            os.remove( path )
-        newfile = open( path, 'w+' )
-        newfile.write( codecs.BOM_UTF16_LE )
-        newfile.close()
-        vout = codecs.open( path, 'a', 'utf-16-le' )
-        vout.write( unicode( content ) )
-        vout.close()
-
-    
-    def __unescape(self, text):
-        previous = u''
-        while previous != text:
-            previous = text
-            text = re.sub(r'\${(?P<name>[._a-zA-Z0-9]+)}', r'%(\g<name>)s', text)
-            text = text % self.config
-        return text
-        
-
-    def __str__(self):
-        """ The string representation of the version object is the full version string.
-        """
-        return self.version_string()
-
--- a/buildframework/helium/tools/common/python/lib/virtualbuildarea.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,194 +0,0 @@
-#============================================================================ 
-#Name        : virtualbuildarea.py 
-#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:
-#===============================================================================
-
-"""
-This modules helps to recreate a fake synergy project for the 
-ccm toolkit. The fake project can be composed of any real synergy 
-objects. 
-"""
-
-
-# pylint: disable-msg=E1103
-
-
-import ccm
-import xml.dom.minidom
-import traceback
-import sys
-DEBUG_VIRTUALDIR = True
-
-class VirtualDir(ccm.Dir):
-    """ Fake directory object.
-        The four parts name will be: <dirname>-1:dir:fakedb#1
-    """
-    def __init__(self, session, name, project):
-        fpn = "%s-1:dir:fakedb#1" % name
-        ccm.Dir.__init__(self, session, fpn)
-        self.__data = []
-        self._project = project
-        
-    def addChild(self, o, project):
-        """ Add an object to the directory. """
-        if (o.type == 'dir'):
-            if DEBUG_VIRTUALDIR:
-                print "Dir adding %s to %s" % (o, self)
-            vdir = self.getDirNamed(o.name)            
-            if vdir == None:
-                # Adding a directory, convert it into a virtual one
-                if DEBUG_VIRTUALDIR:
-                    print "Dir not found creating a virtual one"
-                vdir = VirtualDir(self._session, o.name, self._project)
-                self.__data.append(vdir)
-            elif vdir.type == 'project':
-                # this is a project, covert it into a directory
-                self.__data.remove(vdir)
-                self.addChild(vdir.root_dir(), vdir)
-                vdir = self.getDirNamed(o.name)
-                
-            # Adding content of the directory into the virtual one
-            for child in o.children(project):
-                vdir.addChild(child, project)
-        elif (o.type == 'project'):
-            # Adding a project
-            if DEBUG_VIRTUALDIR:
-                print "Project adding %s to %s" % (o, self)
-            # check for directory with the same name first            
-            vdir = self.getDirNamed(o.name)
-            if vdir == None:
-                # if it is new, just add it 
-                if DEBUG_VIRTUALDIR:
-                    print "Adding project directly"
-                self.__data.append(o)
-            else:
-                if vdir.type == 'project':
-                    if DEBUG_VIRTUALDIR:
-                        print "Replacing project by dir %s" % vdir
-                    self.__data.remove(vdir)
-                    self.addChild(vdir.root_dir(), vdir)
-                    vdir = self.getDirNamed(o.name)                    
-                # if a directory already exist grab the content
-                if DEBUG_VIRTUALDIR:
-                    print "Adding childs under %s" % vdir
-                for child in o.root_dir().children(o):
-                    vdir.addChild(child, o)
-        else:
-            self.__data.append(o)
-            
-    def getDirNamed(self, name):
-        """ Look for a subdirectory named in its children.
-        The test is done in a case insensitive way.
-        """
-        for o in self.__data:
-            if (o.name.lower() == name.lower()):
-                return o
-        return None
-    
-    def children(self, project):
-        """ Returns a copy of the children list. """
-        return self.__data[:]
-    
-    def virtualproject(self):
-        """ Return the associated virtual project. """
-        return self._project
-    
-    
-class VirtualProject(ccm.Project):
-    """ Create a fake project containing on fake directory.
-    The four part name will be <projectname>-1:project:fakedb#1.
-    """
-    def __init__(self, session, name):
-        fpn = "%s-1:project:fakedb#1" % name
-        ccm.Project.__init__(self, session, fpn)
-        self._root_dir = VirtualDir(session, name, self)
-    
-    def root_dir(self):
-        """ Returns the associated virtual directory object. """
-        return self._root_dir
-
-
-def __removeEmptyStrings(a):
-    o = []
-    for e in a:
-        if (len(e)>0):
-            o.append(e)
-    return o
-
-def __createVirtualPath(vpath, root):
-    """ Creating a directory structure using the vpath list given as input.    
-    """
-    vpath = __removeEmptyStrings(vpath)
-    if (root.type == 'project'):
-        root = root.root_dir()
-    if (len(vpath) == 0):
-        return root
-    else:
-        name = vpath.pop(0)
-        root.addChild(VirtualDir(root.session, name, root.virtualproject()), root.virtualproject())
-        return __createVirtualPath(vpath, root.getDirNamed(name))
-
-def __getObjects(project, spath, dir=None):
-    name = spath.pop(0)
-    if (len(spath) == 0 and dir == None):
-        result = []
-        for o in project.root_dir().children(project):
-            result.append({'project':project, 'object':o})
-        return result
-    
-    if (dir == None):
-        root_dir = project.root_dir()
-        if (root_dir.name.lower() == name.lower()):
-            return __getObjects(project, spath, root_dir)
-        else:
-            Exception("getObjects: root_dir.name(%s)!=name(%s)" % (root_dir.name, name))
-    else:
-        for d in dir.children(project):
-            if d.type == 'dir' and d.name.lower() == name.lower():
-                return __getObjects(project, spath, d)
-        raise Exception("Could not find object %s" % name)
-                
-
-
-def create(session, file, name = "vba"):
-    """ Creates a virtual toplevel project using the XML configuration. """
-    try:
-        dom = xml.dom.minidom.parse(file)
-        #dom = xml.dom.minidom.parseString(input)
-
-        vba = VirtualProject(session, name)
-        virtualBA = dom.documentElement
-        for child in virtualBA.childNodes:
-            if (child.nodeType == xml.dom.Node.ELEMENT_NODE) and (child.nodeName == 'add'):
-                print "add node :%s (%d)" % (child.getAttribute('project'), len(child.childNodes))
-                pathobject = __createVirtualPath(child.getAttribute('to').split('/'), vba)
-                if len(child.childNodes) == 0:
-                    p = session.create(child.getAttribute('project'))
-                    pathobject.addChild(p, p)
-                else:
-                    project = session.create(child.getAttribute('project'))
-                    for subChild in child.childNodes:
-                        if (subChild.nodeType == xml.dom.Node.ELEMENT_NODE) and (subChild.nodeName == 'objects'):
-                            spath = __removeEmptyStrings(subChild.getAttribute('from').split('/'))
-                            for t in __getObjects(project, spath):
-                                pathobject.addChild(t['object'], t['project'])
-        virtualBA.unlink()
-        return vba
-    except Exception, e:
-        traceback.print_exc(file = sys.stdout)
-        raise Exception("XML cannot be parsed properly %s" % e)
-    
--- a/buildframework/helium/tools/common/python/lib/xmlhelper.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-#============================================================================ 
-#Name        : xmlhelper.py 
-#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:
-#===============================================================================
-
-import re
-from xml.dom import Node
-
-def node_scan(node, name):
-    """
-        Replacement function for node.xml_xpath('./name').
-        name is a regular expression.
-    """
-    results = []
-    for subnode in node.childNodes:
-        if subnode.nodeType == Node.ELEMENT_NODE and re.match(name, subnode.nodeName) is not None:
-            results.append(subnode)
-    return results
-
-def recursive_node_scan(node, name):
-    """
-        Replacement function for node.xml_xpath('.//name').
-        name is a regular expression.
-    """
-    results = node_scan(node, name)
-    for subnode in node.childNodes:        
-        results.extend(recursive_node_scan(subnode, name))
-    return results
--- a/buildframework/helium/tools/common/python/scripts/filter_heliumlog.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,77 +0,0 @@
-#============================================================================ 
-#Name        : filter_heliumlog.py 
-#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:
-#===============================================================================
-
-import os
-import sys
-import raptor
-import filter_interface
-import re
-import xml.sax
-import datetime
-import time
-from xml.sax.handler import ContentHandler
-from xml.dom.minidom import parse, parseString
-from xml.sax.saxutils import XMLGenerator
-from xml.sax.xmlreader import AttributesNSImpl
-import codecs
-from sbsscanlog import SBSScanlog
-from optparse import OptionParser
-
-
-
-
-""" plugin that gets copied to raptor folder so that wehn raptor (SBS) runs it
-    knows the format of the log files.
-"""
-class FilterHeliumLog(filter_interface.Filter):
-    """ Log scanner for filter logs"""
-    def open(self, raptor_instance):
-        """Open a log file for the various I/O methods to write to."""
-        self.raptor = raptor_instance
-        self.logFileName = self.raptor.logFileName
-        self.scanlog = SBSScanlog()
-
-        # insert the time into the log file name
-        if self.logFileName:
-            self.logFileName.path = self.logFileName.path.replace("%TIME",
-                    self.raptor.timestring)
-    
-            try:
-                dirname = str(self.raptor.logFileName.Dir())
-                if dirname and not os.path.isdir(dirname):
-                    os.makedirs(dirname)
-            except Exception, e_error:
-                return False
-            return  self.scanlog.initialize(self.logFileName)
-        else:
-            self.out = sys.stdout
-                
-        return True
-
-    def write(self, text):
-        """write text to the open file"""
-        return self.scanlog.write(text)
-
-    def summary(self):
-        """write the summary log file"""
-        return self.scanlog.summary()
-
-    def close(self):
-        """close the log file"""
-        return self.scanlog.close()
--- a/buildframework/helium/tools/common/python/scripts/filter_metadatalog.py	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/common/python/scripts/filter_metadatalog.py	Thu Mar 04 15:10:37 2010 +0200
@@ -1,5 +1,5 @@
 #============================================================================ 
-#Name        : filter_heliumlog.py 
+#Name        : filter_metadatalog.py
 #Part of     : Helium 
 
 #Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
--- a/buildframework/helium/tools/common/python/scripts/sbslogscanner.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,300 +0,0 @@
-#============================================================================ 
-#Name        : sbs2logxml.py 
-#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:
-#===============================================================================
-
-""" Temporary solution to extract raptor logs.
-Should be replace by a log listenner when raptor will support it.
-"""
-import xml.sax
-import xml.sax.handler
-import xml.dom.minidom
-import re
-import codecs
-import os
-import sys
-from optparse import OptionParser
-
-
-DEFAULT_CONFIGURATION = {"FATAL": [r"mingw_make.exe"],
-                         "ERROR": [ r'\): Missing file:', r'^(?:(?:\s*\d+\)\s*)|(?:\s*\*\*\*\s*))ERROR:',
-                                   r"^MISSING:",
-                                   r"Error:\s+", r"'.+' is not recognized as an internal or external command",
-                                   r"FLEXlm error:",
-                                   r"(ABLD|BLDMAKE) ERROR:",
-                                   r"FATAL ERROR\(S\):",
-                                   r"fatal error U1077",
-                                   r"warning U4010",
-                                   r"^make(?:\[\d+\])?\: \*\*\*",
-                                   r"^make(?:\[\d+\])?:\s+.*\s+not\s+remade",
-                                   r"\"(.*)\", line (\d+): (Error: +(.\d+.*?):.*)$",
-                                   r"error: ((Internal fault):.*)$",
-                                   r"Exception: [A-Z0-9_]+",
-                                   r"target .* given more than once in the same rule",
-                                   r"^ERROR:",
-                                   r"^ERROR EC\d+:",
-                                   r"^ERROR\t",],
-                         "CRITICAL": [r"[Ww]arning:?\s+(#111-D|#1166-D|#117-D|#128-D|#1293-D|#1441-D|#170-D|#174-D|#175-D|#185-D|#186-D|#223-D|#231-D|#257-D|#284-D|#368-D|#414-D|#430-D|#47-D|#514-D|#546-D|#68-D|#69-D|#830-D|#940-D|#836-D|A1495E|L6318W|C2874W|C4127|C4355|C4530|C4702|C4786|LNK4049)"],
-                         "WARNING": [r'^(\d+\))?\s*WARNING:', r'^MAKEDEF WARNING:',
-                                      r'line \d+: Warning:', r':\s+warning\s+\w+:',
-                                      r"\\\\(.*?)\(\d+\)\s:\sWarning:\s\(\d+\)",
-                                      r"^(BLDMAKE |MAKEDEF )?WARNING:",
-                                      r"WARNING\(S\)",
-                                      r"\(\d+\) : warning C",
-                                      r"LINK : warning",
-                                      r":\d+: warning:",
-                                      r"\"(.*)\", line (\d+): (Warning: +(?!A1495E)(.\d+.*?):.*)$",
-                                      r"Usage Warning:",
-                                      r"mwld.exe:",
-                                      r"^Command line warning",
-                                      r"ERROR: bad relocation:",
-                                      r"^(\d+) warning",
-                                      r"EventType:\s+Error\s+Source:\s+SweepNT",
-                                      r"^WARN\t",
-                                      ],
-                        "REMARK": [r"Command line warning D4025 : ",
-                                   r"^REMARK: ",
-                                   r"^EventType:\s+Error\s+Source:\s+GNU\s+Make",
-                                   r":\d+: warning: cannot find matching deallocation function",
-                                   r"((:\d+)*: note: )",
-                                   ],
-                        "INFO": [r"^INFO:"]
-                        }
-
-
-def find_priority(line, config):
-    keys = config.keys()
-    keys.reverse()    
-    for category in keys:
-        for rule in config[category]:
-            if rule.search(line) != None:
-                return category.lower()
-    return "stdout"
-
-
-class SymbianLogHandler(xml.sax.handler.ContentHandler):
-    def __init__ (self):
-        xml.sax.handler.ContentHandler.__init__(self)
-        self._in_recipe = False
-        self._in_error = False
-        self._in_warning = False
-        self._recipe_status = None
-        self._recipe_log = ""
-        self._recipe_component = None
-        self.errors = []
-        self.warnings = []
-        self.components = {}
-        self.scan_config = {}
-        for category in DEFAULT_CONFIGURATION.keys():
-            self.scan_config[category] = []
-            for rule in DEFAULT_CONFIGURATION[category]:
-                self.scan_config[category].append(re.compile(rule))
-
-    
-    
-    def startElement(self, name, attrs):
-        if name == "recipe":
-            self._in_recipe = True
-            self._recipe_component = attrs.get('bldinf', None)
-            if self._recipe_component not in self.components:
-                self.components[self._recipe_component] = {}
-                for cat in self.scan_config.keys():
-                    self.components[self._recipe_component][cat.lower()] = []
-            self._recipe_log = ""
-            self._recipe_status = None
-        elif name == "status" and self._in_recipe:
-            self._recipe_status = attrs.get('exit', 'ok')
-        elif name == "error":  
-            self._in_error = True
-            self._recipe_log = ""
-        elif name == "warning":  
-            self._in_warning = True
-            self._recipe_log = ""
-              
-    def endElement(self, name):
-        if name == "recipe":
-            for line in self._recipe_log.splitlines():
-                if not line.startswith('+ '):
-                    priority = find_priority(line, self.scan_config)
-                    if priority == "stdout":
-                        continue
-                    else:
-                        self.components[self._recipe_component][priority].append(line)
-            #if self._recipe_status == 'failed':
-            #    self.components[self._recipe_component]['error'].append(self._recipe_log.strip())
-            self._in_recipe = False
-            self._recipe_log = ""
-            self._recipe_status = None
-            self._recipe_component = None
-        elif name == "error":
-            self.errors.append(self._recipe_log)  
-            self._in_error = False
-        elif name == "warning":
-            self.warnings.append(self._recipe_log)
-            self._in_warning = False
-      
-    def characters (self, ch):
-        if self._in_recipe or self._in_error or self._in_warning:
-            self._recipe_log += ch
-
-
-def create_logxml(components, logname, outname):
-    """
-    Converting the output to Helium log xml format.
-<?xml version="1.0" encoding="utf-8"?>
-<log filename="K:\output\logs\ido_raptor_mcl_ipmsdo_MCL.52.61.s60_build_compile.log">
-    <build>
-        <task name="all">
-            <message priority="warning"><![CDATA[E:/apps/sbs_2.2.0/win32/mingw/bin/cpp.exe: K:/s60/mw/ipappservices/rtp/rtpstack/group/RtpStpPacket.mmp:43:7: warning: extra tokens at end of #else directive]]></message>
-    """
-    impl = xml.dom.minidom.getDOMImplementation()
-
-    xmllog = impl.createDocument(None, "log", None)
-    root = xmllog.documentElement
-    root.setAttribute('filename', logname)
-    build = xmllog.createElement('build')
-    root.appendChild(build)
-    
-    mtask = xmllog.createElement('task')
-    mtask.setAttribute('name', os.path.basename(logname))
-    build.appendChild(mtask)
-    
-    for cname in components.keys():
-        task = xmllog.createElement('task')
-        task.setAttribute('name', cname)
-        mtask.appendChild(task)
-        for category in components[cname].keys():
-            for msg in components[cname][category]:
-                msgnode = xmllog.createElement('message')
-                msgnode.setAttribute('priority', category)
-                msgnode.appendChild(xmllog.createCDATASection(msg))
-                task.appendChild(msgnode)
-
-    print "Writing %s" % outname
-    fh = codecs.open(outname, 'w+', 'UTF-8')
-    fh.write(xmllog.toprettyxml(encoding="UTF-8"))
-    fh.close()
-
-def create_scanlog(components, logname, outname):
-    """
-    Converting the output to Helium log html scanlog format.
-<table border="1" cellpadding="0" cellspacing="0" width="100%">
-<tr>
-    <th width="55%">Component</th>
-    <th width="15%">Errors</th>
-    <th width="15%">Criticals</th>
-    <th width="15%">Warnings</th>
-    <th width="15%">Notes</th>
-</tr>
-    """
-
-    html = """<html>
-    <head><title>%s</title></head>
-    <body>
-    <h1>%s</h1>
-    <h2>By Component</h2>
-<table border="1" cellpadding="0" cellspacing="0" width="100%%">
-<tr>
-    <th width="55%%">Component</th>
-    <th width="15%%">Errors</th>
-    <th width="15%%">Criticals</th>
-    <th width="15%%">Warnings</th>
-    <th width="15%%">Notes</th>
-</tr>""" % (os.path.basename(logname), os.path.basename(logname))
-        
-    cid = 0
-    for cname in components.keys():
-        html += "<tr>"
-        html += "<td>%s</td>" % cname
-        def add_category(cat):
-            color = {'error': 'FF0000', 'critical': 'FF7000', 'warning': 'FFF000', 'remark': '0000FF', 'note': '000088'}
-            val = len(components[cname][cat])
-            if val > 0:
-                if cat == 'error':
-                    return "<td align=\"center\" bgcolor=\"%s\"><a href=\"#section%s\">%s</a></td>" % (color[cat], cid, val)
-                else:
-                    return "<td align=\"center\" bgcolor=\"%s\">%s</td>" % (color[cat], val)
-            return "<td align=\"center\">%s</td>" % val
-        html += add_category('error')     
-        html += add_category('critical')     
-        html += add_category('warning')     
-        html += add_category('remark')     
-        html += "</tr>"
-        cid += 1
-    html += "</table>"
-
-    cid = 0
-    html += "<h2>Error Details by Component</h2>"
-    for cname in components.keys():
-        html += "<h3><a name=\"section%s\">%s</a></h3>" % (cid, cname)
-        def add_dump(cat):
-            out = ""
-            for line in components[cname][cat]:
-                out += line + "<br/>"
-            return out
-        html += add_dump('error')
-        cid += 1
-        
-    html += """
-<body>
-</html>
-    """
-
-    print "Writing %s" % outname
-    fh = codecs.open(outname, 'w+', 'utf8')
-    fh.write(html.encode('utf8'))
-    fh.close()
-
-if __name__ == "__main__":
-
-    """ The application main. """
-    cli = OptionParser(usage="%prog [options]")
-    cli.add_option("--log", help="Raptor log file") 
-    cli.add_option("--logxml", help="Logxml output file.")
-    cli.add_option("--scanlog", help="HTML scanlog parsing")
-                   
-    opts, dummy_args = cli.parse_args()
-    if not opts.log:
-        cli.print_help()
-        sys.exit(-1)
-    
-    #logname = 'log/ido_raptor_mcl_ipmsdo_MCL.52.61.s60_build_compile.log'
-    parser = xml.sax.make_parser()   
-    handler = SymbianLogHandler()
-    parser.setContentHandler(handler)
-    parser.parse(open(opts.log, 'r')) 
-
-    # adding parsing issues
-    components = handler.components.copy()
-    components['raptor_parsing'] = {}
-    for category in DEFAULT_CONFIGURATION.keys():
-        components['raptor_parsing'][category.lower()] = []
-    components['raptor_parsing']['error'] = handler.errors
-    components['raptor_parsing']['warning'] = handler.warnings
-
-    print "Summary:"
-    print "%s\t%s%s%s%s" % ("Component".ljust(40), "Errors".ljust(10), "Criticals".ljust(10), "Warnings".ljust(10), "Remarks".ljust(10))
-    for cname in components.keys():
-        print "%s\t%s%s%s%s" % (cname.ljust(40), str(len(components[cname]['error'])).ljust(10),
-                                             str(len(components[cname]['critical'])).ljust(10),
-                                             str(len(components[cname]['warning'])).ljust(10),
-                                             str(len(components[cname]['remark'])).ljust(10))
-
-    if opts.logxml is not None:
-        create_logxml(components, opts.log, opts.logxml)
-    if opts.scanlog is not None:
-        create_scanlog(components, opts.log, opts.scanlog)
--- a/buildframework/helium/tools/common/python/scripts/sbsscanlog.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,415 +0,0 @@
-#============================================================================ 
-#Name        : sbsscanlog.py 
-#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:
-#===============================================================================
-
-import os
-import sys
-import re
-import xml.sax
-import datetime
-import time
-from xml.sax.handler import ContentHandler
-from xml.dom.minidom import parse, parseString
-from xml.sax.saxutils import XMLGenerator
-from xml.sax.xmlreader import AttributesNSImpl
-import codecs
-from optparse import OptionParser
-
-START_TAG_REG_EX = "<recipe|<error|<warning"
-
-IGNORE_TEXT_REG_EX = "warning: no newline at end of file"
-
-DEFAULT_STRING = "general"
-
-END_TAG_REG_EX = "</recipe>|</error>|</warning>"
-
-DEFAULT_CONFIGURATION = {    "FATAL":     [r"mingw_make.exe"],
-                            "ERROR": [ r'\): Missing file:', r'^(?:(?:\s*\d+\)\s*)|(?:\s*\*\*\*\s*))ERROR:',
-                                        r"^MISSING:",
-                                        r"Error:\s+", r"'.+' is not recognized as an internal or external command",
-                                        r"FLEXlm error:",
-                                        r"(ABLD|BLDMAKE) ERROR:",
-                                        r"FATAL ERROR\(S\):",
-                                        r"fatal error U1077",
-                                        r"warning U4010",
-                                        r"^make(?:\[\d+\])?\: \*\*\*",
-                                        r"^make(?:\[\d+\])?:\s+.*\s+not\s+remade",
-                                        r"\"(.*)\", line (\d+): (Error: +(.\d+.*?):.*)$",
-                                        r"error: ((Internal fault):.*)$",
-                                        r"Exception: [A-Z0-9_]+",
-                                        r"target .* given more than once in the same rule",
-                                        r"^ERROR:",
-                                        r"^ERROR EC\d+:",
-                                        r"Errors caused tool to abort.",
-                                        r"^ERROR\t",],
-                         "CRITICAL": [r"[Ww]arning:?\s+(#111-D|#1166-D|#117-D|#128-D|#1293-D|#1441-D|#170-D|#174-D|#175-D|#185-D|#186-D|#223-D|#231-D|#257-D|#284-D|#368-D|#414-D|#430-D|#47-D|#514-D|#546-D|#68-D|#69-D|#830-D|#940-D|#836-D|A1495E|L6318W|C2874W|C4127|C4355|C4530|C4702|C4786|LNK4049)"],
-                         "WARNING": [r'^(\d+\))?\s*WARNING:', r'^MAKEDEF WARNING:',
-                                        r'line \d+: Warning:', r':\s+warning\s+\w+:',
-                                        r"\\\\(.*?)\(\d+\)\s:\sWarning:\s\(\d+\)",
-                                        r"^(BLDMAKE |MAKEDEF )?WARNING:",
-                                        r"WARNING\(S\)",
-                                        r"\(\d+\) : warning C",
-                                        r"LINK : warning",
-                                        r":\d+: warning:",
-                                        r"\"(.*)\", line (\d+): (Warning: +(?!A1495E)(.\d+.*?):.*)$",
-                                        r"Usage Warning:",
-                                        r"mwld.exe:",
-                                        r"^Command line warning",
-                                        r"ERROR: bad relocation:",
-                                        r"^(\d+) warning",
-                                        r"EventType:\s+Error\s+Source:\s+SweepNT",
-                                        r"^WARN\t",
-                                      ],
-                        "REMARK": [r"Command line warning D4025 : ",
-                                        r"^REMARK: ",
-                                        r"^EventType:\s+Error\s+Source:\s+GNU\s+Make",
-                                        r":\d+: warning: cannot find matching deallocation function",
-                                        r"((:\d+)*: note: )",
-                                   ],
-                        "INFO": [r"^INFO:"]
-                        }
-
-def find_priority(line, config):
-    """ finds the error prioroty of the given line of text"""
-    keys = config.keys()
-    keys.reverse()    
-    for category in keys:
-        for rule in config[category]:
-            if rule.search(line) != None:
-                return category.lower()
-    return "stdout"
-
-def getText(nodelist):
-    rc = ""
-    for node in nodelist:
-        if node.nodeType == node.TEXT_NODE:
-            rc = rc + node.data
-    return rc
-
-class SBSScanlog(object):
-    """parses the raptor logs and separates the info out into HTML and XML logs for writing to diamonds
-    and other logs"""
-    def initialize(self, logFile):
-        """Initialize helium log filter"""
-    #try:
-        self.scan_config = {}
-        self.component_level_messages = {}
-        self.error_level_counts = {}
-        self.inReceipe = False
-        self.logContents = ""
-        self.logFileName = logFile
-        self.startTagCompileObject = re.compile(START_TAG_REG_EX);
-        self.endTagCompileObject = re.compile(END_TAG_REG_EX);
-        self.ignoreTextCompileObject = re.compile(IGNORE_TEXT_REG_EX);
-        self.startRecording = False
-        self.inReceipe = False
-        self.logContents = ""
-        self.lineNumber = 0
-        self.startLineNumber = 0
-        self.start_time = datetime.datetime.now()
-        for category in DEFAULT_CONFIGURATION.keys():
-            self.scan_config[category] = []
-            self.error_level_counts[category.lower()] = 0
-
-            for rule in DEFAULT_CONFIGURATION[category]:
-                self.scan_config[category].append(re.compile(rule))
-                
-        self.logName = str(self.logFileName) + ".xml"
-        self.loggerout = open(str(self.logFileName),"w")
-        print "logName: %s\n" % self.logName
-        #self.out = open(str(self.logFileName), "w")
-        self.outxml = open(self.logName, "w")
-        self.scanlogName = str(self.logFileName) +".scan2.html"
-        self.logger = XMLGenerator(self.outxml, 'utf-8')
-        self.logger.startDocument()
-        empty_attrs = AttributesNSImpl({}, {})
-        filename_attrs = {
-            (None, u'filename'): str(self.logFileName) ,
-        }
-        filename_qnames = {
-            (None, u'filename'): u'filename',
-        }
-        attrs = AttributesNSImpl(filename_attrs, filename_qnames)
-        self.logger.startElementNS((None, u'log'), u'log', attrs)
-        self.logger.characters("\n")
-        self.logger.startElementNS((None, u'build'), u'build', empty_attrs)
-        self.logger.characters("\n")
-        return True
-    #except:
-        #self.out = None
-        #sys.stderr.write("%s : error: cannot write log %s\n" %\
-        #    (str(raptor.name), self.logFileName.GetShellPath()))
-        #return False
-
-    def open(self, logFile):
-        self.logFileName = logFile
-        self.initialize(logFile)
-        
-        
-    def write(self, text):
-        """ callback function which is to process the logs"""
-        for textLine in text.splitlines():
-            if(self.ignoreTextCompileObject.search(textLine)):
-                continue
-
-            self.lineNumber += 1
-            if(self.startTagCompileObject.search(textLine) != None):
-                self.logContents = ""
-                self.startRecording = True
-                self.startLineNumber =  self.lineNumber
-    
-            if(self.endTagCompileObject.search(textLine)!= None):
-                self.logContents += textLine + "\n"
-                self.startRecording = False
-                try:
-                    self.parseContents()
-                except:
-                    print " error during helium log parsing"
-                    print self.logContents
-                
-            self.loggerout.write(textLine + "\n")
-            if self.startRecording:
-                self.logContents += textLine + "\n"
-            else:
-                error_level = find_priority(textLine, self.scan_config)
-                if(error_level != 'stdout'):
-                    if DEFAULT_STRING not in self.component_level_messages:
-                        self.component_level_messages[DEFAULT_STRING] = {}
-                        for error_level in self.scan_config.keys():
-                            self.component_level_messages[DEFAULT_STRING][error_level.lower()] = []
-                    self.component_level_messages[DEFAULT_STRING][error_level.lower()].append("%s : line-number: %d " % 
-                        (textLine, self.lineNumber))
-                    self.error_level_counts[error_level.lower()] +=1
-        return True
-
-    def parseContents(self):
-        """ Parse the contents within the tag, check if the errors within the tag is 
-        matching the error list, using minidom.
-        """        
-        doc = parseString((self.logContents))
-        for node in doc.childNodes:
-            if (node.nodeType == node.ELEMENT_NODE):
-                if(node.tagName == "recipe"):
-                    component_name = node.getAttribute("bldinf")
-                    self.process_output(component_name)
-                elif(node.tagName == "warning" or node.tagName == "error"):
-                    self.error_level_counts[node.tagName] += 1
-                    if DEFAULT_STRING not in self.component_level_messages:
-                        self.component_level_messages[DEFAULT_STRING] = {}
-                        for error_level in self.scan_config.keys():
-                            self.component_level_messages[DEFAULT_STRING][error_level.lower()] = []
-                    self.component_level_messages[DEFAULT_STRING][str(node.tagName.lower())].append(
-                    "%s : line-number: %d" % 
-                    (getText(node.childNodes), self.lineNumber))
-                    
-
-    def writeToXMLFile(self):
-        """ Writes the log output to diamonds understandable xml format."""
-        try:
-            components_size = (len(self.component_level_messages.keys()))
-            if(components_size > 0):
-                for component_name in self.component_level_messages.keys():
-                    name_attr = {
-                        (None, u'name'): component_name,
-                    }
-                    name_attr_qnames = {
-                        (None, u'name'): u'name',
-                    }
-                    name_attrs = AttributesNSImpl(name_attr, name_attr_qnames)
-                    self.logger.startElementNS((None, u'task'), u'task', name_attrs)
-                    for err_level in self.component_level_messages[component_name].keys():
-                        message_attr = {
-                        (None, u'priority'): err_level,
-                        }
-                        message_attr_qnames = {
-                            (None, u'priority'): u'priority',
-                        }
-                        for err in self.component_level_messages[component_name][err_level.lower()]:
-                            message_attrs = AttributesNSImpl(message_attr, message_attr_qnames)
-                            self.logger.characters("\n")
-                            self.logger.characters("  ")
-                            self.logger.startElementNS((None, u'message'), u'message', message_attrs)
-                            self.logger.characters(err)
-                            self.logger.endElementNS((None, u'message'), u'message')
-                            #self.out.write(err)
-    
-                    self.logger.characters("\n")
-                    self.logger.endElementNS((None, u'task'), u'task')
-                    self.logger.characters("\n")
-        
-        except:
-            print " error during writing log xml"
-                
-        
-    def process_output(self, component_name):
-        """ Process the log output for errors and stores it in dictionary"""    
-        #self.component_level_messages.clear()
-        count = 0
-        for line in self.logContents.splitlines():
-            error_level = find_priority(line, self.scan_config)
-            if component_name not in self.component_level_messages:
-                self.component_level_messages[component_name] = {}
-                for error_level in self.scan_config.keys():
-                    self.component_level_messages[component_name][error_level.lower()] = []
-            if(error_level != 'stdout'):
-                if(error_level not in self.component_level_messages[component_name]):
-                    self.component_level_messages[component_name][error_level.lower()] = []
-                self.component_level_messages[component_name][error_level.lower()].append(
-                "%s : line-number: %d" % 
-                    ((line, self.startLineNumber + count)))
-                self.error_level_counts[error_level.lower()] +=1
-            count += 1
-
-    def summary(self):
-        """Writes finally the logs in xml format using SAX and creates the scanlog"""
-        self.writeToXMLFile()
-        self.end_time = datetime.datetime.now()
-        total_time = self.end_time - self.start_time
-        create_scanlog(self.component_level_messages, self.logName, self.scanlogName, 
-            self.error_level_counts,total_time)
-        return True
-
-    def close(self):
-        """Close the log file"""
-
-        try:
-            self.logger.endElementNS((None, u'build'), u'build')
-            self.logger.endElementNS((None, u'log'), u'log')
-            #self.logger.close()
-            self.loggerout.close()
-            self.outxml.close()
-            #self.scanlogName.close()
-            return True
-        except:
-            return False
-
-def create_scanlog(components_level_messages, logname, outname, error_level_counts, total_time):
-    """
-    Converting the output to Helium log html scanlog format.
-    """
-
-    fh = codecs.open(outname, 'w+', 'utf8')
-    html = """<html>
-    <head><title>%s</title></head>
-    <body>
-    <h2>Overall</h2>
-    <table border="1" cellpadding="0" cellspacing="0" width="100%%">
-    <tr>
-        <th width="22%%">&nbsp;</th>
-        <th width="12%%">Time</th>
-        <th width="12%%">Errors</th>
-        <th width="12%%">Warnings</th>
-        <th width="12%%">Critical</th>
-        <th width="30%%">Migration Notes</th>
-    </tr>
-    <tr>""" % ( os.path.basename(logname))
-    html += "<td width=\"22%%\">Total</td>"
-    html += "<td width=\"12%%\" align=\"center\">%s</td>" % time.strftime("%H:%M:%S", time.gmtime(total_time.seconds))
-    def add_err_count(error_level, count):
-        color = {'error': 'FF0000', 'warning': 'FFF000', 'critical': 'FF7000', 'remark': '0000FF', 'info': 'FFFFFF'}
-        if error_level.lower() in color:
-            if count > 0:
-                if error_level == 'error':
-                    return "<td width=\"12%%\" align=\"center\" bgcolor=\"%s\">%d</td>" % (color[error_level], count)
-                else:
-                    return "<td align=\"center\" bgcolor=\"%s\">%d</td>" % (color[error_level], count)
-            return "<td align=\"center\">%s</td>" % count
-    html += add_err_count('error', error_level_counts['error'] )
-    html += add_err_count('warning', error_level_counts['warning'])
-    html += add_err_count('critical', error_level_counts['critical'])
-    html += add_err_count('info', error_level_counts['info'])
-    html += """</tr></table>
-    <h1>%s</h1>
-    <h2>By Component</h2>
-        <table border=\"1\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%%\">
-            <tr>
-                <th width=\"55%%\">Component</th>
-                <th width=\"15%%\">Errors</th>
-                <th width=\"15%%\">Warnings</th>
-                <th width=\"15%%\">Criticals</th>
-                <th width=\"15%%\">Notes</th>
-            </tr>""" % ( os.path.basename(logname))
-        
-    cid = 0
-    for component_name in components_level_messages.keys():
-        html += "<tr>"
-        html += "<td>%s</td>" % component_name
-        def add_category(error_level):
-            color = {'error': 'FF0000', 'critical': 'FF7000', 'warning': 'FFF000', 'remark': '0000FF', 'info': 'FFFFFF'}
-            val = len(components_level_messages[component_name][error_level])
-            if val > 0:
-                if error_level == 'error':
-                    return "<td align=\"center\" bgcolor=\"%s\"><a href=\"#section%s\">%s</a></td>" % (color[error_level], cid, val)
-                else:
-                    return "<td align=\"center\" bgcolor=\"%s\">%s</td>" % (color[error_level], val)
-            return "<td align=\"center\">%s</td>" % val
-        html += add_category('error')     
-        html += add_category('warning')
-        html += add_category('critical')     
-        html += add_category('info')
-        html += "</tr>"
-        cid += 1
-    html += "</table>"
-    cid = 0
-    html += "<h2>Error Details by Component</h2>"
-    fh.write(html.encode('utf8'))
-    for component_name in components_level_messages.keys():
-        html = "<h3><a name=\"section%s\">%s</a></h3>" % (cid, component_name)
-        def add_dump(cat):
-            """ adds the list of errors of the build """
-            out = ""
-            if ( components_level_messages[component_name][cat]):
-                out = "<h1>%s</h1>" % (cat)
-            for line in components_level_messages[component_name][cat]:
-                out += line + "<br/>"
-            return out
-        html += add_dump('error')     
-        html += add_dump('warning')     
-        html += add_dump('critical')     
-        html += add_dump('info')     
-        fh.write(html.encode('utf8'))
-        cid += 1
-    html = """
-<body>
-</html>
-    """
-    fh.write(html.encode('utf8'))
-    fh.close()
-
-if __name__ == "__main__":
-
-    """ standalone app """
-    cli = OptionParser(usage="%prog [options]")
-    cli.add_option("--log", help="Raptor log file")
-    cli.add_option("--output", help="Raptor log file")
-                   
-    opts, dummy_args = cli.parse_args()
-    if not opts.log:
-        cli.print_help()
-        sys.exit(-1)
-
-    filter = SBSScanlog()
-    filter.open(opts.output)
-
-    logFile = open(opts.log, 'r')
-
-    for line in logFile:
-        filter.write(line)
-
-    filter.summary()
-    filter.close() 
\ No newline at end of file
--- a/buildframework/helium/tools/common/python/scripts/sbsscanlogmetadata.py	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/common/python/scripts/sbsscanlogmetadata.py	Thu Mar 04 15:10:37 2010 +0200
@@ -1,5 +1,5 @@
 #============================================================================ 
-#Name        : filter_heliumlog.py 
+#Name        : sbsscanlogmetadata.py
 #Part of     : Helium 
 
 #Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
@@ -34,14 +34,14 @@
 IGNORE_TEXT_REG_EX = "warning: no newline at end of file"
 
 STREAM_REGEX =  {   "clean" : [r'<clean', r'</clean'],
-                    "whatlog" : [r'<whatlog', r'</whatlog'],
+                    "what" : [r'<whatlog', r'</whatlog'],
                     "warning" : [r'<warning', r'</warning']
                 }
 
 class SBSScanlogMetadata(object):
     """parses the raptor meatadata logs and separates the info out into HTML and XML logs for writing 
     to diamonds and other logs"""
-    
+
     def initializeLogPath(self):
         index = self.logFileName.rfind(".")
         if index < 0:
@@ -51,6 +51,8 @@
                         self.logFileName[index:]            
         if os.environ.has_key('SBS_CLEAN_LOG_FILE'):
             self.stream_path['clean'] = os.environ['SBS_CLEAN_LOG_FILE']
+        if os.environ.has_key('SBS_WHAT_LOG_FILE'):
+            self.stream_path['what'] = os.environ['SBS_WHAT_LOG_FILE']
             
     def initialize(self, logFile):
         """Initialize helium log filter"""
@@ -68,6 +70,9 @@
             self.compiled_stream_object[stream] = []
             self.streams[stream] = open(self.stream_path[stream], "w")
             self.streamStatus[stream] = False
+            self.streams[stream].write(\
+"""<?xml version="1.0" encoding="ISO-8859-1" ?>
+<buildlog sbs_version="" xmlns="http://symbian.com/xml/build/log" xmlns:progress="http://symbian.com/xml/build/log/progress" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symbian.com/xml/build/log http://symbian.com/xml/build/log/1_0.xsd">""")
             for  searchString in STREAM_REGEX[stream]:
                 self.compiled_stream_object[stream].append(re.compile(searchString))
         return True
@@ -85,8 +90,6 @@
             if textLine.startswith("<?xml ") or textLine.startswith("<buildlog ") \
                 or textLine.startswith("</buildlog"):
                 self.loggerout.write(textLine)
-                for stream in stream_list:
-                    self.streams[stream].write(textLine)
                 continue
             if(self.ignoreTextCompileObject.search(textLine)):
                 continue
@@ -99,6 +102,9 @@
                     break
     
                 if(self.streamStatus[stream]):
+                    if textLine.startswith("<?xml ") or textLine.startswith("<buildlog ") \
+                        or textLine.startswith("</buildlog"):
+                        continue
                     self.streams[stream].write(textLine)
                     break
 
@@ -116,6 +122,7 @@
         try:
             self.loggerout.close()
             for stream in self.streams.keys():
+                self.streams[stream].write('</buildlog>')
                 self.streams[stream].close()
             return True
         except:
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/tools/common/python/scripts/scripttests/__init__.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,18 @@
+#============================================================================ 
+#Name        : __init__.py 
+#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:
+#===============================================================================
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/tools/common/python/scripts/scripttests/test_filter_metadatalog.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,257 @@
+#============================================================================ 
+#Name        : test_filter_metadatalog.py 
+#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:
+#===============================================================================
+
+""" Test cases for filter meta data logs.
+
+"""
+
+# pylint: disable-msg=E1101
+
+import logging
+import os
+import sys
+import time
+import mocker
+import re
+import tempfile
+import shutil
+
+_logger = logging.getLogger('test.test_filter_metadatalog')
+logging.basicConfig(level=logging.DEBUG)
+
+TEMP_PATH = tempfile.mkdtemp()
+#NOTE: THE COMMENTED OUT CODE IS REQUIRED WHEN RUNNING THIS TEST USING THE PT TARGET
+#WITH THE COMMENTED OUT CODE IT DOES NOT WORK IN THE FULL UNITTEST TARGET DUE TO RAPTOR.PY
+#FILE BEING CALLED WITHOUT ALL THE ENVIRONMENT VARIABLES SET WHEN RUN SINGLY AND THEY ARE SET WHEN
+#RUN AS PART OF THE UNITTEST TARGET.
+
+PYTHON_FILE_NAME = os.path.join(TEMP_PATH, 'raptor.py')
+FILTER_FILE_NAME = os.path.join(TEMP_PATH, 'filter_interface.py')
+
+sys.path = [TEMP_PATH] + sys.path
+
+def setup_module():
+    """ Setup for test_filter_metadata """
+    #in order to allow the filter_metadata.py file to compile we need to create a dummy 
+    #raptor.py file as this is part of SBS and not present here, the classes and objects 
+    #it uses from raptor.py file are created in this file, the same goes for the file filter_interface.py
+    #does not exist so create empty python.py file
+    f_handle = open(PYTHON_FILE_NAME, "w")
+    f_handle.write("class testRaptor():\n")
+    f_handle.write("    def testRaptorFunc(self):\n")
+    f_handle.write("        return True \n")
+    f_handle.close()
+    #does not exist so create empty python.py file
+    f_handle = open(FILTER_FILE_NAME, "w")
+    f_handle.write("class Filter():\n")
+    f_handle.write("    def testFilterFunc(self):\n")
+    f_handle.write("        return True \n")
+    f_handle.close()
+
+
+def teardown_module():
+    """ Teardown test_filter_metadata. """
+    print("teardown called")
+    if os.path.exists(TEMP_PATH):
+        shutil.rmtree(TEMP_PATH)
+
+# regex for "bare" drive letters  
+DRIVERE = re.compile('^[A-Za-z]:$')
+
+# are we on windows, and if so what is the current drive letter
+ISWIN = sys.platform.lower().startswith("win")
+if ISWIN:
+    DRIVE = re.match('^([A-Za-z]:)', os.getcwd()).group(0)
+
+# Base class
+class Path(object):
+    """This class represents a file path.                                      
+                                                                               
+    A generic path object supports operations without needing to know          
+    about Windows and Linux differences. The standard str() function can       
+    obtain a string version of the path in Local format for use by             
+    platform-specific functions (file opening for example).                    
+                                                                               
+    We use forward slashes as path separators (even on Windows).               
+                                                                               
+    For example,                                                               
+                                                                               
+      path1 = generic_path.Path("/foo")                                        
+      path2 = generic_path.Path("bar", "bing.bang")                            
+                                                                               
+      print str(path1.Append(path2))                                           
+                                                                               
+    Prints /foo/bar/bing.bang   on Linux                                       
+    Prints c:/foo/bar/bing.bang   on Windows (if c is the current drive)       
+    """                                                                        
+
+    def __init__(self, *arguments):
+        """construct a path from a list of path elements"""
+        
+        if len(arguments) == 0:
+            self.path = ""
+            return
+        
+        list = []
+        for i, arg in enumerate(arguments):
+            if ISWIN:
+                if i == 0:
+                    # If the first element starts with \ or / then we will
+                    # add the current drive letter to make a fully absolute path
+                    if arg.startswith("\\\\"):
+                        list.append(arg) # A UNC path - don't mess with it
+                    elif arg.startswith("\\") or arg.startswith("/"):
+                        list.append(DRIVE + arg)
+                    # If the first element is a bare drive then dress it with a \
+                    # temporarily otherwise "join" will not work properly.
+                    elif DRIVERE.match(arg):
+                        list.append(arg + "\\")
+                    # nothing special about the first element
+                    else:
+                        list.append(arg)
+                else:
+                    if arg.startswith("\\\\"):
+                        raise ValueError("non-initial path components must not start with \\\\ : %s" % arg)
+                    else:
+                        list.append(arg)
+                if ";" in arg:
+                    raise ValueError("An individual windows Path may not contain ';' : %s" % arg)
+            else:
+                list.append(arg)
+      
+        self.path = os.path.join(*list)
+        
+        # normalise to avoid nastiness with dots and multiple separators
+        # but do not normalise "" as it will become "."
+        if self.path != "":
+            self.path = os.path.normpath(self.path)
+        
+        # always use forward slashes as separators
+        self.path = self.path.replace("\\", "/")
+        
+        # remove trailing slashes unless we are just /
+        if self.path != "/":
+            self.path = self.path.rstrip("/")
+
+    def Dir(self):
+        "return an object for the directory part of this path"
+        if DRIVERE.match(self.path):
+            return Path(self.path)
+        else:
+            return Path(os.path.dirname(self.path))
+    def __str__(self):
+        return self.path
+
+
+class Raptor(object):
+    """An instance of a running Raptor program.
+
+    When operated from the command-line there is a single Raptor object
+    created by the Main function. When operated by an IDE several Raptor
+    objects may be created and operated at the same time."""
+
+    def defaultSetUp(self):
+        """ setup some variables for use by the unit under test """
+        self.logFile = None #self.mocker.proxy(generic_path.Join)
+        self.summary = True
+        # things to initialise
+        self.starttime = time.time()
+        self.timestring = time.strftime("%Y-%m-%d-%H-%M-%S")
+        self.logFileName = Path(os.path.join(TEMP_PATH, 'makefile_2009-11-12-12-32-34.log'))
+
+class FilterMetaDataLogTest(mocker.MockerTestCase):
+    """ Tests the filter_metadataLog wrapper to the SBS plugin. 
+    The plugin uses the SBS API of open, write, summary and close. """
+
+#    def test_a_setupOK(self):       #need to call it this to get it executed in the right order (alphabetical)
+#        """test_a_setupOK: tests that we have imported the correct files and that they are present 
+#        before importing the file to be tested and having it fail due to missing files"""
+#        print("got to test-a-setup ")
+#        import filter_metadatalog
+#        print("got passed import filter file to test-a-setup ")
+#        #setup an instance of the class and test it exists OK
+#        obj = filter_metadatalog.raptor.testRaptor()
+#        result = obj.testRaptorFunc()
+#        assert result == True
+#        obj = filter_metadatalog.filter_interface.Filter()
+#        result = obj.testFilterFunc()
+#        assert result == True
+
+    def test_openWriteSummaryCloseInvalidData(self):
+        """test_openWriteSummaryCloseInvalidData: test the opening writing, summary and 
+        closing of the log file with invalid data."""
+        import filter_metadatalog
+        obj = self.mocker.patch(filter_metadatalog.SBSScanlogMetadata)
+        obj.initialize(mocker.ANY)
+        self.mocker.result(False)
+        self.mocker.replay()
+        
+        raptor_instance = Raptor()
+        raptor_instance.defaultSetUp()
+        raptor_instance.logFileName = Path("..")
+        filter_mLog = filter_metadatalog.FilterMetadataLog()
+        result = filter_mLog.open(raptor_instance)
+        assert result == False
+        result = filter_mLog.close()
+        assert result == False
+
+    def test_openValidData_default(self):
+        """test_openValidData_default: test the opening of the log file with valid data."""
+        import filter_metadatalog
+        obj = self.mocker.patch(filter_metadatalog.SBSScanlogMetadata)
+        obj.initialize(mocker.ANY)
+        self.mocker.result(True)
+        self.mocker.replay()
+        
+        raptor_instance = Raptor()
+        raptor_instance.defaultSetUp()
+        filter_mLog = filter_metadatalog.FilterMetadataLog()
+        result = filter_mLog.open(raptor_instance)
+        assert result == True
+
+    def test_openValidData_empty(self):
+        """test_openValidData_empty: test the opening of the log file with valid data."""
+        import filter_metadatalog
+        obj = self.mocker.patch(filter_metadatalog.SBSScanlogMetadata)
+        obj.initialize(mocker.ANY)
+        self.mocker.result(True)
+        self.mocker.replay()
+        
+        raptor_instance = Raptor()
+        raptor_instance.defaultSetUp()
+        raptor_instance.logFileName = Path("")
+        filter_mLog = filter_metadatalog.FilterMetadataLog()
+        result = filter_mLog.open(raptor_instance)
+        assert result == True
+
+    def test_openValidData_stdout(self):
+        """test_openValidData_stdout: test the opening of the log file with valid data."""
+        import filter_metadatalog
+        obj = self.mocker.patch(filter_metadatalog.SBSScanlogMetadata)
+        obj.initialize(mocker.ANY)
+        self.mocker.count(0, 0)
+        self.mocker.replay()
+        
+        raptor_instance = Raptor()
+        raptor_instance.defaultSetUp()
+        raptor_instance.logFileName = None
+        filter_mLog = filter_metadatalog.FilterMetadataLog()
+        result = filter_mLog.open(raptor_instance)
+        assert result == True
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/tools/common/python/scripts/scripttests/test_sbs.py	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,44 @@
+#============================================================================ 
+#Name        : test_sbs.py 
+#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:
+#===============================================================================
+"""Tests Raptor (SBS) log creation/scanning """
+import unittest
+import logging
+import sys
+import os
+import tempfile
+
+_logger = logging.getLogger('test.sbs')
+logging.basicConfig(level=logging.INFO)
+
+class SBSTest(unittest.TestCase):
+    """SBSTest: tests for raptor log creation"""
+        
+    def setUp(self):
+        """setUp: setup any params or variable required by all tests later"""
+        sys.path.append(os.path.join(os.environ['HELIUM_HOME'], 'tools/common/python/scripts'))
+        
+    def test_sbs(self):
+        """test_sbs: test SBSScanlogMetadata """
+        #import filter_metadatalog
+        import sbsscanlogmetadata
+        sbs = sbsscanlogmetadata.SBSScanlogMetadata()
+        (_, filename) = tempfile.mkstemp()
+        sbs.open(filename)
+        sbs.write(open(os.path.join(os.environ['TEST_DATA'], 'data/scanlog/all_regex_type.log')).read())
+        sbs.close()
\ No newline at end of file
--- a/buildframework/helium/tools/common/python/scripts/searchnextdrive.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-#============================================================================ 
-#Name        : searchnextdrive.py 
-#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:
-#===============================================================================
-
-"""
-    Script that prints the next free drive on the current system.
-    If none available it returns "Error: No free drive!". 
-    win32 only!
-"""
-from fileutils import get_next_free_drive
-def search_next_free_drive():
-    try:
-        return get_next_free_drive()
-    except Exception, e:
-        return "Error: No free drive!"
-
-if __name__ == "__main__":
-    print search_next_free_drive()
--- a/buildframework/helium/tools/common/python/scripts/test_scanlog.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/common/python/scripts/test_scanlog.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -30,7 +30,6 @@
     
     <property name="helium.dir" location="${test.scanlog.dir}/../../../.."/>
     <import file="${helium.dir}/helium.ant.xml"/>
-
     <!-- Macro to process the log to generate scanlog. -->
     <macrodef name="scanlogTest" uri="http://www.nokia.com/helium">
         <attribute name="log"/>
@@ -50,8 +49,12 @@
     <macrodef name="scanlogMetadataTest" uri="http://www.nokia.com/helium">
         <attribute name="log"/>
         <attribute name="output"/>
+        <attribute name="whatlog" default="@{output}.what.log"/>
+        <attribute name="cleanlog" default="@{output}.clean.log"/>
         <sequential>
             <exec executable="python" dir="${test.scanlog.dir}" failonerror="false">
+                <env key="SBS_WHAT_LOG_FILE" value="@{whatlog}" />
+                <env key="SBS_CLEAN_LOG_FILE" value="@{cleanlog}" />
                 <arg value="sbsscanlogmetadata.py"/>
                 <arg value="--log"/>
                 <arg value="@{log}"/>
@@ -95,38 +98,226 @@
         <hlm:assertFileExists file="${env.TEMP}/test-scanlog-3.log.xml"/>
         <hlm:assertFileExists file="${env.TEMP}/test-scanlog-3.log.scan2.html"/>
     </target>
-
-    <target name="test-scanlog-metadata-1">
-        <echo message="log.dir:${env.TEMP}/" />
-        <delete file="${helium.dir}\tests\data\test-scanlog-metadata-1.log" failonerror="false"/>
-        <delete file="${helium.dir}\tests\data\test-metadata-1.sqlite" failonerror="false"/>
-        <delete file="${helium.dir}\tests\data\test-scanlog-metadata-1.log.scan2.html" failonerror="false"/>
-        
-        <hlm:scanlogMetadataTest log="${helium.dir}/tests/data/scanlog/all_regex_type.log"
-            output="${helium.dir}/tests/data/test-scanlog-metadata-1.log" />
-        <hlm:assertFileExists file="${helium.dir}/tests/data/test-scanlog-metadata-1.log"/>
-        <hlm:metadatarecord database="${helium.dir}/tests/data/test-metadata-1.sqlite">
+    
+    <target name="s60-compilation-logs">
+        <mkdir dir="${helium.dir}/tests/data/output/" />
+        <delete file="${helium.dir}\tests\data\test-s60.db" failonerror="false"/>
+        <delete file="${helium.dir}\tests\data\test-s60.scan2.html" failonerror="false"/>
+        <hlm:metadatarecord database="${helium.dir}/tests/data/output/test-s60.db">
             <hlm:sbsmetadatainput>
-                <fileset casesensitive="false" file="${helium.dir}/tests/data/test-scanlog-metadata-1.log"/>
+                <fileset dir="${helium.dir}/tests/data/scanlog/s60_logs/logs/compile" casesensitive="false">
+                    <include  name="92_7952_RAPTOR_201004_wk04_02_dfs_build_export.log"/>
+                    <include  name="92_7952_RAPTOR_201004_wk04_02_dfs_build_ncp_dfs_variants.log"/>
+                    <include  name="92_7952_RAPTOR_201004_wk04_02_dfs_build_sf_tools.log"/>
+                    <include  name="92_7952_RAPTOR_201004_wk04_02_dfs_build_sf_dfs_variants.log"/>
+                </fileset>
                 <metadatafilterset refid="filterset.sbs" />
             </hlm:sbsmetadatainput>
         </hlm:metadatarecord>
-        <fmpp sourceFile="${helium.dir}/tools/common/templates/log/scan2.html.ftl"
+        <fmpp sourceFile="${helium.dir}/tools/common/templates/log/scan2_orm.html.ftl"
+                     outputfile="${helium.dir}/tests/data/output/92_7952_RAPTOR_201004_wk04_02_dfs_build_export.log.html">
+            <freemarkerLinks expandProperties="yes">
+                macro: ${helium.dir}/tools/common/templates/macro
+            </freemarkerLinks>
+            <data expandProperties="yes">
+                dbPath: ${helium.dir}/tests/data/output/test-s60.db
+                doc: xml(${helium.dir}/tests/data/scanlog/s60_logs/logs/compile/92_7952_RAPTOR_201004_wk04_02_dfs_build_export.log.info.xml)
+                ant: antProperties()
+            </data>
+        </fmpp>
+        <fmpp sourceFile="${helium.dir}/tools/common/templates/log/scan2_orm.html.ftl"
+                     outputfile="${helium.dir}/tests/data/output/92_7952_RAPTOR_201004_wk04_02_dfs_build_ncp_dfs_variants.log.html">
+            <freemarkerLinks expandProperties="yes">
+                macro: ${helium.dir}/tools/common/templates/macro
+            </freemarkerLinks>
+            <data expandProperties="yes">
+                dbPath: ${helium.dir}/tests/data/output/test-s60.db
+                doc: xml(${helium.dir}/tests/data/scanlog/s60_logs/logs/compile/92_7952_RAPTOR_201004_wk04_02_dfs_build_ncp_dfs_variants.log.info.xml)
+                ant: antProperties()
+            </data>
+        </fmpp>
+        <fmpp sourceFile="${helium.dir}/tools/common/templates/log/scan2_orm.html.ftl"
+                     outputfile="${helium.dir}/tests/data/output/92_7952_RAPTOR_201004_wk04_02_dfs_build_sf_tools.log">
+            <freemarkerLinks expandProperties="yes">
+                macro: ${helium.dir}/tools/common/templates/macro
+            </freemarkerLinks>
+            <data expandProperties="yes">
+                dbPath: ${helium.dir}/tests/data/output/test-s60.db
+                doc: xml(${helium.dir}/tests/data/scanlog/s60_logs/logs/compile/92_7952_RAPTOR_201004_wk04_02_dfs_build_sf_tools.log.info.xml)
+                ant: antProperties()
+            </data>
+        </fmpp>
+        <fmpp sourceFile="${helium.dir}/tools/common/templates/log/scan2_orm.html.ftl"
+                     outputfile="${helium.dir}/tests/data/output/92_7952_RAPTOR_201004_wk04_02_dfs_build_sf_dfs_variants.log.html">
+            <freemarkerLinks expandProperties="yes">
+                macro: ${helium.dir}/tools/common/templates/macro
+            </freemarkerLinks>
+            <data expandProperties="yes">
+                dbPath: ${helium.dir}/tests/data/output/test-s60.db
+                doc: xml(${helium.dir}/tests/data/scanlog/s60_logs/logs/compile/92_7952_RAPTOR_201004_wk04_02_dfs_build_sf_dfs_variants.log.info.xml)
+                ant: antProperties()
+            </data>
+        </fmpp>
+    </target>
+
+    <target name="diamonds-faults">
+        <fmpp sourceFile="${helium.dir}/tools/common/templates/diamonds/faults_metadata.ftl"
+                outputfile="${helium.dir}/tests/data/output/compile-main.xml">
+            <data expandProperties="yes">
+                  dbPath: ${helium.dir}/tests/data/output/test-s60.db
+                  logpath: 92_7952_RAPTOR_201004_wk04_02_dfs_build_export.log 
+                  ant: antProperties()
+            </data>
+        </fmpp>
+        <fmpp sourceFile="${helium.dir}/tools/common/templates/diamonds/faults_metadata.ftl"
+                outputfile="${helium.dir}/tests/data/output/compile-main-tools.xml">
+            <data expandProperties="yes">
+                  dbPath: ${helium.dir}/tests/data/output/test-s60.db
+                  logpath: 92_7952_RAPTOR_201004_wk04_02_dfs_build_sf_tools.log
+                  ant: antProperties()
+            </data>
+        </fmpp>
+        <fmpp sourceFile="${helium.dir}/tools/common/templates/diamonds/faults_metadata.ftl"
+                outputfile="${helium.dir}/tests/data/output/compile-main-ncp.xml">
+            <data expandProperties="yes">
+                  dbPath: ${helium.dir}/tests/data/output/test-s60.db
+                  logpath: 92_7952_RAPTOR_201004_wk04_02_dfs_build_ncp_dfs_variants.log 
+                  ant: antProperties()
+            </data>
+        </fmpp>
+        <fmpp sourceFile="${helium.dir}/tools/common/templates/diamonds/faults_metadata.ftl"
+                       outputfile="${helium.dir}/tests/data/output/compile-main-dfs.xml">
+            <data expandProperties="yes">
+                  dbPath: ${helium.dir}/tests/data/output/test-s60.db
+                  logpath: 92_7952_RAPTOR_201004_wk04_02_dfs_build_sf_dfs_variants.log 
+                  ant: antProperties()
+            </data>
+        </fmpp>
+    </target>
+
+    <target name="email-status-html">
+        <fmpp sourceFile="${helium.dir}/tools/common/templates/log/email_status.html.ftl"
+                       outputfile="${helium.dir}/tests/data/output/email_status.html">
+            <data expandProperties="yes">
+                  dbPath: ${helium.dir}/tests/data/output/test-s60.db
+                  logpath: 92_7952_RAPTOR_201004_wk04_02_dfs_build_sf_dfs_variants.log 
+                  ant: antProperties()
+            </data>
+        </fmpp>
+    </target>
+
+    <target name="summary-html">
+        
+        <fmpp sourceFile="${helium.dir}/tools/common/templates/log/summary_metadata.html.ftl"
+                outputfile="${helium.dir}/tests/data/output/summary.html">
+            <freemarkerLinks expandProperties="yes">
+                    macro: ${helium.dir}/tools/common/templates/macro
+            </freemarkerLinks>
+            <data expandProperties="yes">
+                    dbPath: ${helium.dir}/tests/data/output/test-s60.db
+                    loginfo: xml(${helium.dir}/tests/data/scanlog/s60_logs/logs/92_7952_RAPTOR_201004_wk04_02_info.log.xml)
+                    ant: antProperties()
+            </data>
+        </fmpp>
+    </target>
+
+    <target name="scanlog-metadata-1">
+        <echo message="log.dir:${env.TEMP}/" />
+        <property name="sbslog" value="${helium.dir}/tests/data/test-scanlog-metadata-1.log" />
+        <property name="whatlog" value="${helium.dir}/tests/data/test-scanlog-metadata-1.log.what1.log" />
+        <property name="cleanlog" value="${helium.dir}/tests/data/test-scanlog-metadata-1.log.clean1.log" />
+        <delete file="${sbslog}" failonerror="false"/>
+        <delete file="${whatlog}" failonerror="false"/>
+        <delete file="${cleanlog}" failonerror="false"/>
+        <delete dir="${helium.dir}\tests\data\test-metadata-1_db" failonerror="false"/>
+        <delete file="${sbslog}.scan2.html" failonerror="false"/>
+        <hlm:scanlogMetadataTest whatlog="${whatlog}" cleanlog="${cleanlog}" log="${helium.dir}/tests/data/scanlog/all_regex_type.log"
+            output="${sbslog}" />
+        <hlm:assertFileExists file="${sbslog}"/>
+        <hlm:metadatarecord  database="${helium.dir}/tests/data/test-metadata-1_db">
+            <hlm:sbsmetadatainput whatLogFile="${whatlog}">
+                <fileset casesensitive="false" file="${sbslog}"/>
+                <metadatafilterset refid="filterset.sbs" />
+            </hlm:sbsmetadatainput>
+        </hlm:metadatarecord>
+        <hlm:assertFileExists file="${cleanlog}"/>
+        <hlm:assertFileExists file="${whatlog}"/>
+        <hlm:assertFileExists file="${sbslog}"/>
+        <hlm:assertFileExists file="${sbslog}.sbs_error.log"/>
+        <fmpp sourceFile="${helium.dir}/tools/common/templates/log/scan2_orm.html.ftl"
                      outputfile="${helium.dir}/tests/data/test-scanlog-metadata-1.log.scan2.html">
             <freemarkerLinks expandProperties="yes">
                 macro: ${helium.dir}/tools/common/templates/macro
             </freemarkerLinks>
             <data expandProperties="yes">
-                dbPath: ${helium.dir}/tests/data/test-metadata-1.sqlite
+                dbPath: ${helium.dir}/tests/data/test-metadata-1_db
+                whatLogPath: ${whatlog}
+                doc: xml(${helium.dir}/tests/data/scanlog/all_regex_type.log_sbs_info.xml)
+                ant: antProperties()
+            </data>
+        </fmpp>
+        <hlm:generateBuildStatus dbfile="${helium.dir}/tests/data/test-metadata-1_db" output-dir="${helium.dir}/tests/data/" file="test-scanlog-metadata-1.log"/>
+        <hlm:assertFileExists file="${helium.dir}/tests/data/test-scanlog-metadata-1.log.scan2.html"/>
+    </target>
+
+    <target name="scanlog-metadata-text">
+        <echo message="log.dir:${env.TEMP}/" />
+        <delete file="${helium.dir}\tests\data\test-scanlog-metadata-text.log" failonerror="false"/>
+        <delete dir="${helium.dir}\tests\data\test-metadata-1_db" failonerror="false"/>
+        <delete file="${helium.dir}\tests\data\test-scanlog-metadata-text.scan2.html" failonerror="false"/>
+        
+        <hlm:scanlogMetadataTest log="${helium.dir}/tests/data/scanlog/all_regex_type.log"
+            output="${helium.dir}/tests/data/test-scanlog-metadata-text.log" />
+        <hlm:assertFileExists file="${helium.dir}/tests/data/test-scanlog-metadata-text"/>
+        <hlm:metadatarecord  database="${helium.dir}/tests/data/test-metadata-1_db">
+            <hlm:textmetadatainput>
+                <fileset casesensitive="false" file="${helium.dir}/tests/data/test-scanlog-metadata-1.log"/>
+                <metadatafilterset refid="filterset.sbs" />
+            </hlm:textmetadatainput>
+        </hlm:metadatarecord>
+        <fmpp sourceFile="${helium.dir}/tools/common/templates/log/scan2_text_orm.html.ftl"
+                     outputfile="${helium.dir}/tests/data/test-scanlog-metadata-1.log.scan2.html">
+            <freemarkerLinks expandProperties="yes">
+                macro: ${helium.dir}/tools/common/templates/macro
+            </freemarkerLinks>
+            <data expandProperties="yes">
+                dbPath: ${helium.dir}/tests/data/test-metadata-1_db
                 doc: xml(${helium.dir}/tests/data/scanlog/all_regex_type.log_sbs_info.xml)
                 ant: antProperties()
             </data>
         </fmpp>
-        <hlm:generateBuildStatus dbfile="${helium.dir}/tests/data/test-metadata-1.sqlite" output-dir="${helium.dir}/tests/data/" file="test-scanlog-metadata-1.log"/>
+        <hlm:generateBuildStatus dbfile="${helium.dir}/tests/data/test-metadata-1_db" output-dir="${helium.dir}/tests/data/" file="test-scanlog-metadata-1.log"/>
         <hlm:assertFileExists file="${helium.dir}/tests/data/test-scanlog-metadata-1.log.scan2.html"/>
     </target>
-    
+
+    <target name="scanlog-metadata-whatlog-test">
+        <echo message="log.dir:${env.TEMP}/" />
+        <delete dir="${helium.dir}\tests\data\test-metadata-1_db" failonerror="false"/>
+        <delete file="${helium.dir}\tests\data\test-scanlog-metadata-text.scan2.html" failonerror="false"/>
+
+        <hlm:scanlogMetadataTest log="${helium.dir}/tests/data/scanlog/ido_gsdo_tb92-release_9.0.2859_armv5_dfs_build.log"
+            output="${helium.dir}/tests/data/test-scanlog-metadata-1.log" />
+        
+        <hlm:metadatarecord  database="${helium.dir}/tests/data/test-metadata-1_db">
+            <hlm:sbsmetadatainput whatLogFile="${helium.dir}/tests/data/test-scanlog-metadata-1.whatlog.log">
+                <fileset casesensitive="false" file="${helium.dir}/tests/data/test-scanlog-metadata-1.log"/>
+                <metadatafilterset refid="filterset.sbs" />
+            </hlm:sbsmetadatainput>
+        </hlm:metadatarecord>
+        <fmpp sourceFile="${helium.dir}/tools/common/templates/log/scan2_orm.html.ftl"
+                     outputfile="${helium.dir}/tests/data/test-scanlog-metadata-1.log.scan2.html">
+            <freemarkerLinks expandProperties="yes">
+                macro: ${helium.dir}/tools/common/templates/macro
+            </freemarkerLinks>
+            <data expandProperties="yes">
+                dbPath: ${helium.dir}/tests/data/test-metadata-1_db
+                whatLogPath: ${helium.dir}\tests\data/test-scanlog-metadata-1.what.log
+                doc: xml(${helium.dir}/tests/data/scanlog/all_regex_type.log_sbs_info.xml)
+                ant: antProperties()
+            </data>
+        </fmpp>
+    </target>    
     <target name="test-metadata-signal">
-        <antcall target="test-scanlog-metadata-1" />
+        <antcall target="scanlog-metadata-1" />
     </target>
 </project>
--- a/buildframework/helium/tools/common/python/scripts/timeout_launcher.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,99 +0,0 @@
-#============================================================================ 
-#Name        : timeout_launcher.py 
-#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:
-#===============================================================================
-
-""" Application launcher supporting timeout. """
-import os
-import sys
-import re
-import subprocess
-import logging
-import time
-
-_logger = logging.getLogger('timeout_launcher')
-logging.basicConfig(level=logging.INFO)
-
-
-# Platform
-windows = False
-if sys.platform == "win32":
-    import win32process
-    import win32con
-    import win32api
-    windows = True
-
-def main():
-    cmdarg = False
-    cmdline = []
-    timeout = None
-    
-    for arg in sys.argv:
-        res = re.match("^--timeout=(\d+)$", arg)
-        if not cmdarg and res is not None:
-            timeout = int(res.group(1))
-            _logger.debug("Set timeout to %s" % timeout)
-        elif not cmdarg and arg == '--':
-            _logger.debug("Parsing command start")
-            cmdarg = True
-        elif cmdarg:
-            _logger.debug("Adding arg: %s" % arg)
-            cmdline.append(arg)
-    
-    if len(cmdline) == 0:
-        print "Empty command line."
-        print "e.g: timeout_launcher.py --timeout=1 -- cmd /c sleep 10"
-        sys.exit(-1)
-    else:
-        _logger.debug("Start command")
-        if timeout != None:
-            finish = time.time() + timeout
-            timedout = False
-            shell = True
-            if windows:
-                shell = False
-            p = subprocess.Popen(' '.join(cmdline), stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=shell)
-            while (p.poll() == None):
-                if time.time() > finish:
-                    timedout = True
-                    break
-                time.sleep(1)
-            if timedout:
-                print "ERROR: Application has timed out (timeout=%s)." % timeout
-                if windows:
-                    try:
-                        print "ERROR: Trying to kill the process..."
-                        handle = win32api.OpenProcess(True, win32con.PROCESS_TERMINATE, p.pid)
-                        win32process.TerminateProcess(handle, -1)
-                        print "ERROR: Process killed..."
-                    except Exception, exc:
-                        print "ERROR: %s" % exc
-                else:
-                    # pylint: disable-msg=E1101
-                    os.kill(p.pid, 9)
-                print "ERROR: exiting..."
-                raise Exception("Timeout exception.")
-            else:
-                print p.communicate()[0]
-                sys.exit(p.returncode)
-        else:
-            p = subprocess.Popen(' '.join(cmdline), stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True)
-            print p.communicate()[0]
-            sys.exit(p.returncode)
-
-if __name__ == '__main__':
-    main()
\ No newline at end of file
--- a/buildframework/helium/tools/common/schema/ant.xsd	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/common/schema/ant.xsd	Thu Mar 04 15:10:37 2010 +0200
@@ -1,1 +1,1 @@
-<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="ant.apache.org"
           xmlns:au="org.apache.ant.antunit"
           xmlns:hlm="http://www.nokia.com/helium"
           xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="unqualified">
    <xs:import namespace="org.apache.ant.antunit" schemaLocation="antunit.xsd"/>
    <xs:import namespace="http://www.nokia.com/helium" schemaLocation="helium_ant.xsd"/>
    <xs:complexType name="taskcontainerType" abstract="true">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="propertyfile" type="propertyfileType"/>
            <xs:element name="propertycopy" type="propertycopyType"/>
            <xs:element name="importtypelib" type="importtypelibType"/>
            <xs:element name="sql" type="sqlType"/>
            <xs:element name="cvspass" type="cvspassType"/>
            <xs:element name="p4reopen" type="p4reopenType"/>
            <xs:element name="csc" type="cscType"/>
            <xs:element name="dirname" type="dirnameType"/>
            <xs:element name="p4label" type="p4labelType"/>
            <xs:element name="p4revert" type="p4revertType"/>
            <xs:element name="replaceregexp" type="replaceregexpType"/>
            <xs:element name="get" type="getType"/>
            <xs:element name="jjtree" type="jjtreeType"/>
            <xs:element name="sleep" type="sleepType"/>
            <xs:element name="jarlib-display" type="jarlib-displayType"/>
            <xs:element name="dependset" type="dependsetType"/>
            <xs:element name="zip" type="zipType"/>
            <xs:element name="patch" type="patchType"/>
            <xs:element name="jspc" type="jspcType"/>
            <xs:element name="style" type="styleType"/>
            <xs:element name="test" type="testType"/>
            <xs:element name="tstamp" type="tstampType"/>
            <xs:element name="unwar" type="unwarType"/>
            <xs:element name="icontract" type="icontractType"/>
            <xs:element name="cvschangelog" type="cvschangelogType"/>
            <xs:element name="p4submit" type="p4submitType"/>
            <xs:element name="p4change" type="p4changeType"/>
            <xs:element name="bzip2" type="bzip2Type"/>
            <xs:element name="sync" type="syncType"/>
            <xs:element name="p4delete" type="p4deleteType"/>
            <xs:element name="javadoc" type="javadocType"/>
            <xs:element name="p4integrate" type="p4integrateType"/>
            <xs:element name="translate" type="translateType"/>
            <xs:element name="signjar" type="signjarType"/>
            <xs:element name="chown" type="chownType"/>
            <xs:element name="vajload" type="vajloadType"/>
            <xs:element name="jarlib-available" type="jarlib-availableType"/>
            <xs:element name="buildnumber" type="buildnumberType"/>
            <xs:element name="jpcovmerge" type="jpcovmergeType"/>
            <xs:element name="war" type="warType"/>
            <xs:element name="rename" type="renameType"/>
            <xs:element name="sequential" type="sequentialType"/>
            <xs:element name="serverdeploy" type="serverdeployType"/>
            <xs:element name="property" type="propertyType"/>
            <xs:element name="subant" type="subantType"/>
            <xs:element name="move" type="moveType"/>
            <xs:element name="ildasm" type="ildasmType"/>
            <xs:element name="copydir" type="copydirType"/>
            <xs:element name="fixcrlf" type="fixcrlfType"/>
            <xs:element name="pathconvert" type="pathconvertType"/>
            <xs:element name="record" type="recordType"/>
            <xs:element name="p4sync" type="p4syncType"/>
            <xs:element name="exec" type="execType"/>
            <xs:element name="ccmklabel" type="ccmklabelType"/>
            <xs:element name="p4edit" type="p4editType"/>
            <xs:element name="manifest" type="manifestType"/>
            <xs:element name="maudit" type="mauditType"/>
            <xs:element name="antlr" type="antlrType"/>
            <xs:element name="jpcovreport" type="jpcovreportType"/>
            <xs:element name="execon" type="execonType"/>
            <xs:element name="ant" type="antType"/>
            <xs:element name="xmlvalidate" type="xmlvalidateType"/>
            <xs:element name="xslt" type="xsltType"/>
            <xs:element name="p4resolve" type="p4resolveType"/>
            <xs:element name="gzip" type="gzipType"/>
            <xs:element name="native2ascii" type="native2asciiType"/>
            <xs:element name="ccrmtype" type="ccrmtypeType"/>
            <xs:element name="ear" type="earType"/>
            <xs:element name="input" type="inputType"/>
            <xs:element name="presetdef" type="presetdefType"/>
            <xs:element name="rmic" type="rmicType"/>
            <xs:element name="checksum" type="checksumType"/>
            <xs:element name="mail" type="mailType"/>
            <xs:element name="loadfile" type="loadfileType"/>
            <xs:element name="loadresource" type="loadresourceType"/>
            <xs:element name="mimemail" type="mimemailType"/>
            <xs:element name="gunzip" type="gunzipType"/>
            <xs:element name="concat" type="concatType"/>
            <xs:element name="cab" type="cabType"/>
            <xs:element name="touch" type="touchType"/>
            <xs:element name="parallel" type="parallelType"/>
            <xs:element name="splash" type="splashType"/>
            <xs:element name="antcall" type="antcallType"/>
            <xs:element name="typedef" type="typedefType"/>
            <xs:element name="p4have" type="p4haveType"/>
            <xs:element name="filter" type="filterType"/>
            <xs:element name="xmlproperty" type="xmlpropertyType"/>
            <xs:element name="import" type="importType"/>
            <xs:element name="copy" type="copyType"/>
            <xs:element name="jsharpc" type="jsharpcType"/>
            <xs:element name="symlink" type="symlinkType"/>
            <xs:element name="antstructure" type="antstructureType"/>
            <xs:element name="script" type="scriptType"/>
            <xs:element name="rpm" type="rpmType"/>
            <xs:element name="delete" type="deleteType"/>
            <xs:element name="replace" type="replaceType"/>
            <xs:element name="attrib" type="attribType"/>
            <xs:element name="waitfor" type="waitforType"/>
            <xs:element name="untar" type="untarType"/>
            <xs:element name="loadproperties" type="loadpropertiesType"/>
            <xs:element name="available" type="availableType"/>
            <xs:element name="echoproperties" type="echopropertiesType"/>
            <xs:element name="chgrp" type="chgrpType"/>
            <xs:element name="vajexport" type="vajexportType"/>
            <xs:element name="bunzip2" type="bunzip2Type"/>
            <xs:element name="whichresource" type="whichresourceType"/>
            <xs:element name="copyfile" type="copyfileType"/>
            <xs:element name="p4labelsync" type="p4labelsyncType"/>
            <xs:element name="macrodef" type="macrodefType"/>
            <xs:element name="unjar" type="unjarType"/>
            <xs:element name="vbc" type="vbcType"/>
            <xs:element name="mkdir" type="mkdirType"/>
            <xs:element name="condition" type="conditionType"/>
            <xs:element name="cvs" type="cvsType"/>
            <xs:element name="tempfile" type="tempfileType"/>
            <xs:element name="junit" type="junitType"/>
            <xs:element name="junitreport" type="junitreportType"/>
            <xs:element name="cobertura-instrument" type="cobertura-instrumentType"/>
            <xs:element name="cobertura-report" type="cobertura-reportType"/>
            <xs:element name="taskdef" type="taskdefType"/>
            <xs:element name="echo" type="echoType"/>
            <xs:element name="java" type="javaType"/>
            <xs:element name="renameext" type="renameextType"/>
            <xs:element name="basename" type="basenameType"/>
            <xs:element name="javadoc2" type="javadoc2Type"/>
            <xs:element name="tar" type="tarType"/>
            <xs:element name="vajimport" type="vajimportType"/>
            <xs:element name="p4fstat" type="p4fstatType"/>
            <xs:element name="setproxy" type="setproxyType"/>
            <xs:element name="p4counter" type="p4counterType"/>
            <xs:element name="ilasm" type="ilasmType"/>
            <xs:element name="apply" type="applyType"/>
            <xs:element name="jarlib-resolve" type="jarlib-resolveType"/>
            <xs:element name="jlink" type="jlinkType"/>
            <xs:element name="cvstagdiff" type="cvstagdiffType"/>
            <xs:element name="javacc" type="javaccType"/>
            <xs:element name="chmod" type="chmodType"/>
            <xs:element name="pvcs" type="pvcsType"/>
            <xs:element name="jarlib-manifest" type="jarlib-manifestType"/>
            <xs:element name="jar" type="jarType"/>
            <xs:element name="ccmklbtype" type="ccmklbtypeType"/>
            <xs:element name="sound" type="soundType"/>
            <xs:element name="scriptdef" type="scriptdefType"/>
            <xs:element name="defaultexcludes" type="defaultexcludesType"/>
            <xs:element name="blgenclient" type="blgenclientType"/>
            <xs:element name="uptodate" type="uptodateType"/>
            <xs:element name="jjdoc" type="jjdocType"/>
            <xs:element name="genkey" type="genkeyType"/>
            <xs:element name="javah" type="javahType"/>
            <xs:element name="ccmreconfigure" type="ccmreconfigureType"/>
            <xs:element name="fail" type="failType"/>
            <xs:element name="unzip" type="unzipType"/>
            <xs:element name="javac" type="javacType"/>
            <xs:element name="p4add" type="p4addType"/>
            <xs:element name="jpcoverage" type="jpcoverageType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="deltree" type="deltreeType"/>
            <xs:element name="ddcreator" type="ddcreatorType"/>
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="assertions" type="assertionsType"/>
            <xs:element name="propertyset" type="propertysetType"/>
            <xs:element name="filterset" type="filtersetType"/>
            <xs:element name="libfileset" type="libfilesetType"/>
            <xs:element name="filterreader" type="filterreaderType"/>
            <xs:element name="scriptfilter" type="scriptfilterType"/>
            <xs:element name="concatfilter" type="concatfilterType"/>
            <xs:element name="extension" type="extensionType"/>
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="dirset" type="dirsetType"/>
            <xs:element name="filelist" type="filelistType"/>
            <xs:element name="filterchain" type="filterchainType"/>
            <xs:element name="path" type="pathType"/>
            <xs:element name="classfileset" type="classfilesetType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="xmlcatalog" type="xmlcatalogType"/>
            <xs:element name="description" type="descriptionType"/>
            <xs:element name="mapper" type="mapperType"/>
            <xs:element name="zipfileset" type="zipfilesetType"/>
            <xs:element name="substitution" type="substitutionType"/>
            <xs:element name="extensionSet" type="extensionSetType"/>
            <xs:element name="regexp" type="regexpType"/>
            <xs:element name="foreach" type="foreachType"/>
            <xs:element name="doxygen" type="doxygenType"/>
            <xs:element name="var" type="varType"/>
            <xs:element name="propertyregex" type="propertyregexType"/>
            <xs:element name="if" type="ifType"/>
            <xs:element name="for" type="forType"/>
            <xs:element name="mergelogs" type="mergelogsType"/>
            <xs:element name="reviewplan" type="reviewplanType"/>
            <xs:element name="processreviewplan" type="processreviewplanType"/>
            <xs:element name="convertreviewlog" type="convertreviewlogType"/>
            <xs:element name="lint" type="lintType"/>
            <xs:element name="customcopy" type="customcopyType"/>
            <xs:element name="fop" type="fopType"/>
            <xs:element name="xmltask" type="xmltaskType"/>
            <xs:element name="ftp" type="ftpType"/>
            <xs:element name="abld" type="abldType"/>
            <xs:element name="getsize" type="getsizeType"/>
            <xs:element name="grand" type="grandType"/>
            <xs:element name="svn" type="svnType"/>
            <xs:element name="antunit" type="antunitType"/>
            <xs:element name="schemavalidate" type="schemavalidateType"/>
            <xs:element name="python" type="pythonType"/>
            <xs:element name="antform" type="antformType"/>
            <xs:element name="math" type="mathType"/>
            <xs:element name="antserver" type="antserverType"/>
            <xs:element name="shellscript" type="shellscriptType"/>
            <xs:element name="runtarget" type="runtargetType"/>
            <xs:element name="echoxml" type="echoxmlType"/>
            <xs:element name="trycatch" type="trycatchType"/>
            <xs:element name="resourcecount" type="resourcecountType"/>
            <xs:element name="remoteant" type="remoteantType"/>
            <xs:element name="retry" type="retryType"/>
            <xs:element name="equals" type="equalsType"/>
            <xs:element name="then" type="thenType"/>
            <xs:element name="antcallback" type="antcallbackType"/>
            <xs:element name="diagnostics" type="diagnosticsType"/>
            <xs:element name="sshexec" type="sshexecType"/>
            <xs:element name="scp" type="scpType"/>
            <xs:element name="xcluder" type="xcluderType"/>
            <xs:element name="assertTrue" type="assertTrueType"/>
            <xs:element name="assertFileExists" type="assertFileExistsType"/>
            <xs:element name="fmpp" type="fmppType"/>
            <xs:element name="timestampselector" type="timestampselectorType"/>
            <xs:element name="preset.exec" type="preset.execType"/>
            <xs:element name="preset.mail" type="preset.mailType"/>
            <xs:element name="createDeltaZipMacro" type="createDeltaZipMacroType"/>
            <xs:element name="zipContentMacro" type="zipContentMacroType"/>
            
            <xs:element ref="au:assertPropertyEquals"/>
            <xs:element ref="au:assertLogDoesntContain"/>
            <xs:element ref="au:assertPropertySet"/>
            
            <xs:element ref="hlm:configuration"/>
            <xs:element ref="hlm:database"/>
            <xs:element ref="hlm:logextract"/>
            <xs:element ref="hlm:signal"/>
            <xs:element ref="hlm:dependencies"/>
            <xs:element ref="hlm:compileHtmlscanlogMacro"/>
            <xs:element ref="hlm:cmakerMacro"/>
            <xs:element ref="hlm:compileEbsMacro"/>
            <xs:element ref="hlm:buildEbsXmlMacro"/>
            <xs:element ref="hlm:logHtmlMacro"/>
            <xs:element ref="hlm:compileGenxmlMacro"/>
            <xs:element ref="hlm:bldmakeBldfilesMacro"/>
            <xs:element ref="hlm:abldMacro"/>
            <xs:element ref="hlm:filterRecordStartMacro"/>
            <xs:element ref="hlm:filterRecordStopMacro"/>
            <xs:element ref="hlm:updateStatusMacro"/>
            <xs:element ref="hlm:createCshelpBldinfMacro"/>
            <xs:element ref="hlm:imakerMacro"/>
            <xs:element ref="hlm:imaker"/>
            <xs:element ref="hlm:defaultEngine"/>
            <xs:element ref="hlm:emakeEngine"/>
            <xs:element ref="hlm:rombuildImakerMacro"/>
            <xs:element ref="hlm:ecImakerMacro"/>
            <xs:element ref="hlm:preECImakerMacro"/>
            <xs:element ref="hlm:ccmAvailableMacro"/>
            <xs:element ref="hlm:publishMacro"/>
            <xs:element ref="hlm:rombuildMacro"/>
            <xs:element ref="hlm:notifyMacro"/>
            <xs:element ref="hlm:diskspaceMacro"/>
            <xs:element ref="hlm:netrcPasswordMacro"/>
            <xs:element ref="hlm:netrcUsernameMacro"/>
            <xs:element ref="hlm:compileGenxmlMergeMacro"/>
            <xs:element ref="hlm:declareIdMacro"/>
            <xs:element ref="hlm:mailTargetCompletedMacro"/>
            <xs:element ref="hlm:deleteFotaConfMacro"/>
            <xs:element ref="hlm:rombuildValueMacro"/>
            <xs:element ref="hlm:assert"/>
            <xs:element ref="hlm:assertFileExists"/>
            <xs:element ref="hlm:referenceToFileMacro"/>
            <xs:element ref="hlm:xmlToFmtlMacro"/>
            <xs:element ref="hlm:tempRecordStartMacro"/>
            <xs:element ref="hlm:tempRecordStopMacro"/>
            <xs:element ref="hlm:fooMacro"/>
            <!-- Presets -->
            <!-- Macros -->
        </xs:choice>
    </xs:complexType>
    <xs:complexType name="resourceCollectionContainerType" abstract="true">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="dirset" type="dirsetType"/>
            <xs:element name="extdirs" type="extdirsType"/>
            <xs:element name="filelist" type="filelistType"/>
            <xs:element name="existing" type="existingType"/>
            <xs:element name="pathelement" type="pathelementType"/>
            <xs:element name="path" type="pathType"/>
            <xs:element name="first" type="firstType"/>
            <xs:element name="sort" type="sortType"/>
        </xs:choice>
    </xs:complexType>
    <xs:complexType name="addfilesType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="dirset" type="dirsetType"/>
            <xs:element name="extdirs" type="extdirsType"/>
            <xs:element name="filelist" type="filelistType"/>
            <xs:element name="existing" type="existingType"/>
            <xs:element name="pathelement" type="pathelementType"/>
            <xs:element name="path" type="pathType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="location" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="path" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="andType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="custom" type="customType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="and" type="andType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="equals" type="equalsType"/>
            <xs:element name="isset" type="issetType"/>
            <xs:element name="os" type="osType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="antType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="reference" type="referenceType"/>
            <xs:element name="propertyset" type="propertysetType"/>
            <xs:element name="property" type="propertyType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="output" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="inheritAll">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="inheritrefs">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="antfile" type="xs:string"/>
        <xs:attribute name="target" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="antcallType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="reference" type="referenceType"/>
            <xs:element name="propertyset" type="propertysetType"/>
            <xs:element name="param" type="paramType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="inheritAll">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="inheritrefs">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="target" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="antlrType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="jvmarg" type="jvmargType"/>
            <xs:element name="classpath" type="classpathType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="debug">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="outputdirectory" type="xs:string"/>
        <xs:attribute name="fork">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="trace">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="tracetreewalker">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="html">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="tracelexer">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="diagnostic">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="traceparser">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="target" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="glib" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="antstructureType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="output" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="applyType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="arg" type="argType"/>
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="dirset" type="dirsetType"/>
            <xs:element name="env" type="envType"/>
            <xs:element name="filelist" type="filelistType"/>
            <xs:element name="targetfile" type="targetfileType"/>
            <xs:element name="srcfile" type="srcfileType"/>
            <xs:element name="mapper" type="mapperType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="resultproperty" type="xs:string"/>
        <xs:attribute name="skipemptyfilesets">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="failifexecutionfails">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="command" type="xs:string"/>
        <xs:attribute name="type">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="file"/>
                    <xs:enumeration value="dir"/>
                    <xs:enumeration value="both"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="maxparallel" type="xs:string"/>
        <xs:attribute name="executable" type="xs:string"/>
        <xs:attribute name="os" type="xs:string"/>
        <xs:attribute name="errorproperty" type="xs:string"/>
        <xs:attribute name="output" type="xs:string"/>
        <xs:attribute name="timeout" type="xs:string"/>
        <xs:attribute name="dest" type="xs:string"/>
        <xs:attribute name="spawn">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="input" type="xs:string"/>
        <xs:attribute name="inputstring" type="xs:string"/>
        <xs:attribute name="addsourcefile">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="verbose">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="logerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="forwardslash">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="outputproperty" type="xs:string"/>
        <xs:attribute name="resolveexecutable">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="append">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="vmlauncher">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="newenvironment">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="relative">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="parallel">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="archivesType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="src" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="filemode" type="xs:string"/>
        <xs:attribute name="prefix" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="fullpath" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
        <xs:attribute name="dirmode" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="argType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="line" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="pathref" type="xs:IDREF"/>
        <xs:attribute name="value" type="xs:string"/>
        <xs:attribute name="path" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="argumentType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="line" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="pathref" type="xs:IDREF"/>
        <xs:attribute name="value" type="xs:string"/>
        <xs:attribute name="path" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="assertionsType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="disable" type="disableType"/>
            <xs:element name="enable" type="enableType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="enablesystemassertions">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="attribType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="arg" type="argType"/>
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="dirset" type="dirsetType"/>
            <xs:element name="env" type="envType"/>
            <xs:element name="filelist" type="filelistType"/>
            <xs:element name="targetfile" type="targetfileType"/>
            <xs:element name="srcfile" type="srcfileType"/>
            <xs:element name="mapper" type="mapperType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="addsourcefile">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="verbose">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="parallel">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="input" type="xs:string"/>
        <xs:attribute name="executable" type="xs:string"/>
        <xs:attribute name="inputstring" type="xs:string"/>
        <xs:attribute name="readonly">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="relative">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="skipemptyfilesets">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="command" type="xs:string"/>
        <xs:attribute name="forwardslash">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="spawn">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="hidden">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="vmlauncher">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="logerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="errorproperty" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="output" type="xs:string"/>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="os" type="xs:string"/>
        <xs:attribute name="dest" type="xs:string"/>
        <xs:attribute name="resolveexecutable">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="resultproperty" type="xs:string"/>
        <xs:attribute name="failifexecutionfails">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="append">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="timeout" type="xs:string"/>
        <xs:attribute name="maxparallel" type="xs:string"/>
        <xs:attribute name="system">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="outputproperty" type="xs:string"/>
        <xs:attribute name="archive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="newenvironment">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="type">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="file"/>
                    <xs:enumeration value="dir"/>
                    <xs:enumeration value="both"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="attributeType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="default" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="availableType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="classpath" type="classpathType"/>
            <xs:element name="filepath" type="filepathType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="classpath" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="classname" type="xs:string"/>
        <xs:attribute name="resource" type="xs:string"/>
        <xs:attribute name="ignoresystemclasses">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="type">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="file"/>
                    <xs:enumeration value="dir"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="classpathref" type="xs:IDREF"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="value" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="property" type="xs:string"/>
        <xs:attribute name="filepath" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="basenameType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="property" type="xs:string"/>
        <xs:attribute name="suffix" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="bccType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="address" type="xs:string"/>
        <xs:attribute name="name" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="blgenclientType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="classpath" type="classpathType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="debug">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="classpath" type="xs:string"/>
        <xs:attribute name="mode" type="xs:string"/>
        <xs:attribute name="ejbjar" type="xs:string"/>
        <xs:attribute name="version" type="xs:string"/>
        <xs:attribute name="classpathref" type="xs:IDREF"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="clientjar" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="bootclasspathType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="dirset" type="dirsetType"/>
            <xs:element name="extdirs" type="extdirsType"/>
            <xs:element name="filelist" type="filelistType"/>
            <xs:element name="existing" type="existingType"/>
            <xs:element name="pathelement" type="pathelementType"/>
            <xs:element name="path" type="pathType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="location" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="path" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="bottomType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="id" type="xs:ID"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:complexType name="buildnumberType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="buildpathType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="dirset" type="dirsetType"/>
            <xs:element name="extdirs" type="extdirsType"/>
            <xs:element name="filelist" type="filelistType"/>
            <xs:element name="existing" type="existingType"/>
            <xs:element name="pathelement" type="pathelementType"/>
            <xs:element name="path" type="pathType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="location" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="path" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="buildpathelementType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="location" type="xs:string"/>
        <xs:attribute name="path" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="bunzip2Type">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="dest" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="src" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="bzip2Type">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="zipfile" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="src" type="xs:string"/>
        <xs:attribute name="destfile" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="cabType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="cabfile" type="xs:string"/>
        <xs:attribute name="compress">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="verbose">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="basedir" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
        <xs:attribute name="options" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="catalogpathType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="dirset" type="dirsetType"/>
            <xs:element name="extdirs" type="extdirsType"/>
            <xs:element name="filelist" type="filelistType"/>
            <xs:element name="existing" type="existingType"/>
            <xs:element name="pathelement" type="pathelementType"/>
            <xs:element name="path" type="pathType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="location" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="path" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="ccType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="address" type="xs:string"/>
        <xs:attribute name="name" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="ccmklabelType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="recurse">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="replace">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="viewpath" type="xs:string"/>
        <xs:attribute name="typename" type="xs:string"/>
        <xs:attribute name="comment" type="xs:string"/>
        <xs:attribute name="version" type="xs:string"/>
        <xs:attribute name="failonerr">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="objselect" type="xs:string"/>
        <xs:attribute name="cleartooldir" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="vob" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="commentfile" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="ccmklbtypeType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="global">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="replace">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="shared">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="viewpath" type="xs:string"/>
        <xs:attribute name="typename" type="xs:string"/>
        <xs:attribute name="pbranch">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="comment" type="xs:string"/>
        <xs:attribute name="failonerr">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="objselect" type="xs:string"/>
        <xs:attribute name="cleartooldir" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="vob" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="commentfile" type="xs:string"/>
        <xs:attribute name="ordinary">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="ccmreconfigureType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="ccmaction" type="xs:string"/>
        <xs:attribute name="verbose">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="ccmproject" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="recurse">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="ccmdir" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="ccrmtypeType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="viewpath" type="xs:string"/>
        <xs:attribute name="typename" type="xs:string"/>
        <xs:attribute name="rmall">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="comment" type="xs:string"/>
        <xs:attribute name="ignore">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="typekind" type="xs:string"/>
        <xs:attribute name="failonerr">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="objselect" type="xs:string"/>
        <xs:attribute name="cleartooldir" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="vob" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="commentfile" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="checksumType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="fileext" type="xs:string"/>
        <xs:attribute name="totalproperty" type="xs:string"/>
        <xs:attribute name="property" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="readbuffersize" type="xs:string"/>
        <xs:attribute name="verifyproperty" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="todir" type="xs:string"/>
        <xs:attribute name="algorithm" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="provider" type="xs:string"/>
        <xs:attribute name="forceoverwrite">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="chgrpType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="arg" type="argType"/>
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="dirset" type="dirsetType"/>
            <xs:element name="env" type="envType"/>
            <xs:element name="filelist" type="filelistType"/>
            <xs:element name="targetfile" type="targetfileType"/>
            <xs:element name="srcfile" type="srcfileType"/>
            <xs:element name="mapper" type="mapperType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="resultproperty" type="xs:string"/>
        <xs:attribute name="skipemptyfilesets">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="failifexecutionfails">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="type">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="file"/>
                    <xs:enumeration value="dir"/>
                    <xs:enumeration value="both"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="command" type="xs:string"/>
        <xs:attribute name="maxparallel" type="xs:string"/>
        <xs:attribute name="executable" type="xs:string"/>
        <xs:attribute name="os" type="xs:string"/>
        <xs:attribute name="errorproperty" type="xs:string"/>
        <xs:attribute name="group" type="xs:string"/>
        <xs:attribute name="output" type="xs:string"/>
        <xs:attribute name="timeout" type="xs:string"/>
        <xs:attribute name="dest" type="xs:string"/>
        <xs:attribute name="spawn">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="input" type="xs:string"/>
        <xs:attribute name="inputstring" type="xs:string"/>
        <xs:attribute name="addsourcefile">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="verbose">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="logerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="forwardslash">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="outputproperty" type="xs:string"/>
        <xs:attribute name="resolveexecutable">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="append">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="vmlauncher">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="newenvironment">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="relative">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="parallel">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="chmodType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="mapper" type="mapperType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="srcfile" type="srcfileType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="targetfile" type="targetfileType"/>
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="env" type="envType"/>
            <xs:element name="filelist" type="filelistType"/>
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="dirset" type="dirsetType"/>
            <xs:element name="arg" type="argType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="addsourcefile">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="verbose">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="parallel">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="input" type="xs:string"/>
        <xs:attribute name="executable" type="xs:string"/>
        <xs:attribute name="inputstring" type="xs:string"/>
        <xs:attribute name="relative">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="skipemptyfilesets">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="command" type="xs:string"/>
        <xs:attribute name="forwardslash">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="spawn">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
        <xs:attribute name="vmlauncher">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="logerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="errorproperty" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="output" type="xs:string"/>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="os" type="xs:string"/>
        <xs:attribute name="dest" type="xs:string"/>
        <xs:attribute name="resolveexecutable">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="resultproperty" type="xs:string"/>
        <xs:attribute name="failifexecutionfails">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="append">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="timeout" type="xs:string"/>
        <xs:attribute name="maxparallel" type="xs:string"/>
        <xs:attribute name="outputproperty" type="xs:string"/>
        <xs:attribute name="perm" type="xs:string"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="newenvironment">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="type">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="file"/>
                    <xs:enumeration value="dir"/>
                    <xs:enumeration value="both"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="chownType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="arg" type="argType"/>
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="dirset" type="dirsetType"/>
            <xs:element name="env" type="envType"/>
            <xs:element name="filelist" type="filelistType"/>
            <xs:element name="targetfile" type="targetfileType"/>
            <xs:element name="srcfile" type="srcfileType"/>
            <xs:element name="mapper" type="mapperType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="resultproperty" type="xs:string"/>
        <xs:attribute name="owner" type="xs:string"/>
        <xs:attribute name="skipemptyfilesets">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="failifexecutionfails">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="type">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="file"/>
                    <xs:enumeration value="dir"/>
                    <xs:enumeration value="both"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="command" type="xs:string"/>
        <xs:attribute name="maxparallel" type="xs:string"/>
        <xs:attribute name="executable" type="xs:string"/>
        <xs:attribute name="os" type="xs:string"/>
        <xs:attribute name="errorproperty" type="xs:string"/>
        <xs:attribute name="output" type="xs:string"/>
        <xs:attribute name="timeout" type="xs:string"/>
        <xs:attribute name="dest" type="xs:string"/>
        <xs:attribute name="spawn">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="input" type="xs:string"/>
        <xs:attribute name="inputstring" type="xs:string"/>
        <xs:attribute name="addsourcefile">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="verbose">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="logerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="forwardslash">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="outputproperty" type="xs:string"/>
        <xs:attribute name="resolveexecutable">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="append">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="vmlauncher">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="newenvironment">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="relative">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="parallel">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="classType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="name" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="classconstantsType">
        <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
    <xs:complexType name="classesType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="src" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="filemode" type="xs:string"/>
        <xs:attribute name="prefix" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="fullpath" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
        <xs:attribute name="dirmode" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="classfilesetType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="rootfileset" type="rootfilesetType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="root" type="rootType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="rootclass" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="classpathType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="dirset" type="dirsetType"/>
            <xs:element name="extdirs" type="extdirsType"/>
            <xs:element name="filelist" type="filelistType"/>
            <xs:element name="existing" type="existingType"/>
            <xs:element name="pathelement" type="pathelementType"/>
            <xs:element name="path" type="pathType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="location" type="xs:string"/>
        <xs:attribute name="refid" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="path" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="commandlineType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="marker" type="markerType"/>
            <xs:element name="argument" type="argumentType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="executable" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="commentType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="value" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="compilerargType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="line" type="xs:string"/>
        <xs:attribute name="implementation" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="compiler" type="xs:string"/>
        <xs:attribute name="pathref" type="xs:IDREF"/>
        <xs:attribute name="value" type="xs:string"/>
        <xs:attribute name="path" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="compilerclasspathType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="dirset" type="dirsetType"/>
            <xs:element name="extdirs" type="extdirsType"/>
            <xs:element name="filelist" type="filelistType"/>
            <xs:element name="existing" type="existingType"/>
            <xs:element name="pathelement" type="pathelementType"/>
            <xs:element name="path" type="pathType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="location" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="path" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="concatType" mixed="true">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="filterchain" type="filterchainType"/>
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="filelist" type="filelistType"/>
            <xs:element name="path" type="pathType"/>
            <xs:element name="footer" type="footerType"/>
            <xs:element name="header" type="headerType"/>
            <xs:element name="propertyresource" type="propertyresourceType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="force">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="encoding" type="xs:string"/>
        <xs:attribute name="append">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="destfile" type="xs:string"/>
        <xs:attribute name="eol">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="asis"/>
                    <xs:enumeration value="cr"/>
                    <xs:enumeration value="lf"/>
                    <xs:enumeration value="crlf"/>
                    <xs:enumeration value="mac"/>
                    <xs:enumeration value="unix"/>
                    <xs:enumeration value="dos"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="outputencoding" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="fixlastline">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="concatfilterType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="append" type="xs:string"/>
        <xs:attribute name="prepend" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="conditionType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="isfalse" type="isfalseType"/>
            <xs:element name="isreference" type="isreferenceType"/>
            <xs:element name="equals" type="equalsType"/>
            <xs:element name="available" type="availableType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="contains" type="containsconditionType"/>
            <xs:element name="os" type="osType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="and" type="andType"/>
            <xs:element name="filesmatch" type="filesmatchType"/>
            <xs:element name="checksum" type="checksumType"/>
            <xs:element name="istrue" type="istrueType"/>
            <xs:element name="isset" type="issetType"/>
            <xs:element name="socket" type="socketType"/>
            <xs:element name="http" type="httpType"/>
            <xs:element name="uptodate" type="uptodateType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="value" type="xs:string"/>
        <xs:attribute name="property" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="containsType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="ignorewhitespace">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="text" type="xs:string"/>
    </xs:complexType>
    <!-- Used for <contains> in <fail> -->
    <xs:complexType name="containsconditionType">
        <xs:attribute name="casesensitive" type="xs:boolean"/>
        <xs:attribute name="string" type="xs:string"/>
        <xs:attribute name="substring" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="containsregexType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="flags" type="xs:string"/>
        <xs:attribute name="byline">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="replace" type="xs:string"/>
        <xs:attribute name="pattern" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="containsregexpType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="expression" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="containsstringType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="contains" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="copyType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="filterchain" type="filterchainType"/>
            <xs:element name="resources" type="resourcesType"/>
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="filterset" type="filtersetType"/>
            <xs:element name="mapper" type="mapperType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="flatten">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="tofile" type="xs:string"/>
        <xs:attribute name="encoding" type="xs:string"/>
        <xs:attribute name="todir" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="verbose" type="xs:string"/>
        <xs:attribute name="includeemptydirs">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="overwrite">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="enablemultiplemappings">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="outputencoding" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="preservelastmodified">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="filtering">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="copydirType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="flatten">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="src" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="dest" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="forceoverwrite">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="filtering">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="includes" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="copyfileType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="forceoverwrite">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="dest" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="filtering" type="xs:string"/>
        <xs:attribute name="src" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="coveragepathType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="dirset" type="dirsetType"/>
            <xs:element name="extdirs" type="extdirsType"/>
            <xs:element name="filelist" type="filelistType"/>
            <xs:element name="existing" type="existingType"/>
            <xs:element name="pathelement" type="pathelementType"/>
            <xs:element name="path" type="pathType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="location" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="path" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="cscType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="resource" type="resourceType"/>
            <xs:element name="define" type="defineType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="reference" type="referenceType"/>
            <xs:element name="src" type="srcType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="executable" type="xs:string"/>
        <xs:attribute name="destfile" type="xs:string"/>
        <xs:attribute name="win32icon" type="xs:string"/>
        <xs:attribute name="definitions" type="xs:string"/>
        <xs:attribute name="referencefiles" type="xs:string"/>
        <xs:attribute name="fullpaths">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="outputfile" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
        <xs:attribute name="mainclass" type="xs:string"/>
        <xs:attribute name="utf8output">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="useresponsefile">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="destdir" type="xs:string"/>
        <xs:attribute name="debug">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="includedefaultreferences">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="warnlevel" type="xs:string"/>
        <xs:attribute name="win32res" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="extraoptions" type="xs:string"/>
        <xs:attribute name="incremental">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="noconfig">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="references" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="srcdir" type="xs:string"/>
        <xs:attribute name="optimize">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="additionalmodules" type="xs:string"/>
        <xs:attribute name="docfile" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="unsafe">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="filealign" type="xs:string"/>
        <xs:attribute name="targettype">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="exe"/>
                    <xs:enumeration value="library"/>
                    <xs:enumeration value="module"/>
                    <xs:enumeration value="winexe"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="customType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="classpath" type="classpathType"/>
            <xs:element name="param" type="paramType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="classpath" type="xs:string"/>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="classpathref" type="xs:IDREF"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="classname" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="cvsType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="commandline" type="commandlineType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="cvsrsh" type="xs:string"/>
        <xs:attribute name="quiet">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="passfile" type="xs:string"/>
        <xs:attribute name="command" type="xs:string"/>
        <xs:attribute name="package" type="xs:string"/>
        <xs:attribute name="cvsroot" type="xs:string"/>
        <xs:attribute name="reallyquiet">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="output" type="xs:string"/>
        <xs:attribute name="port" type="xs:string"/>
        <xs:attribute name="dest" type="xs:string"/>
        <xs:attribute name="compressionlevel" type="xs:string"/>
        <xs:attribute name="noexec">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="append">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="date" type="xs:string"/>
        <xs:attribute name="compression">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="tag" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="cvschangelogType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="user" type="userType"/>
            <xs:element name="commandline" type="commandlineType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="cvsrsh" type="xs:string"/>
        <xs:attribute name="quiet">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="passfile" type="xs:string"/>
        <xs:attribute name="end" type="xs:string"/>
        <xs:attribute name="command" type="xs:string"/>
        <xs:attribute name="package" type="xs:string"/>
        <xs:attribute name="start" type="xs:string"/>
        <xs:attribute name="cvsroot" type="xs:string"/>
        <xs:attribute name="reallyquiet">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="output" type="xs:string"/>
        <xs:attribute name="port" type="xs:string"/>
        <xs:attribute name="compressionlevel" type="xs:string"/>
        <xs:attribute name="dest" type="xs:string"/>
        <xs:attribute name="destfile" type="xs:string"/>
        <xs:attribute name="usersfile" type="xs:string"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="noexec">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="daysinpast" type="xs:string"/>
        <xs:attribute name="append">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="date" type="xs:string"/>
        <xs:attribute name="compression">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="tag" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="cvspassType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="password" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="cvsroot" type="xs:string"/>
        <xs:attribute name="passfile" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="cvstagdiffType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="commandline" type="commandlineType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="cvsrsh" type="xs:string"/>
        <xs:attribute name="endtag" type="xs:string"/>
        <xs:attribute name="quiet">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="passfile" type="xs:string"/>
        <xs:attribute name="command" type="xs:string"/>
        <xs:attribute name="package" type="xs:string"/>
        <xs:attribute name="cvsroot" type="xs:string"/>
        <xs:attribute name="reallyquiet">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="starttag" type="xs:string"/>
        <xs:attribute name="output" type="xs:string"/>
        <xs:attribute name="port" type="xs:string"/>
        <xs:attribute name="compressionlevel" type="xs:string"/>
        <xs:attribute name="dest" type="xs:string"/>
        <xs:attribute name="destfile" type="xs:string"/>
        <xs:attribute name="enddate" type="xs:string"/>
        <xs:attribute name="noexec">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="append">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="date" type="xs:string"/>
        <xs:attribute name="startdate" type="xs:string"/>
        <xs:attribute name="compression">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="tag" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="daemonsType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:choice minOccurs="0" maxOccurs="unbounded">
                <xs:element name="propertyfile" type="propertyfileType"/>
                <xs:element name="importtypelib" type="importtypelibType"/>
                <xs:element name="sql" type="sqlType"/>
                <xs:element name="cvspass" type="cvspassType"/>
                <xs:element name="p4reopen" type="p4reopenType"/>
                <xs:element name="csc" type="cscType"/>
                <xs:element name="dirname" type="dirnameType"/>
                <xs:element name="p4label" type="p4labelType"/>
                <xs:element name="p4revert" type="p4revertType"/>
                <xs:element name="replaceregexp" type="replaceregexpType"/>
                <xs:element name="get" type="getType"/>
                <xs:element name="jjtree" type="jjtreeType"/>
                <xs:element name="sleep" type="sleepType"/>
                <xs:element name="jarlib-display" type="jarlib-displayType"/>
                <xs:element name="dependset" type="dependsetType"/>
                <xs:element name="zip" type="zipType"/>
                <xs:element name="patch" type="patchType"/>
                <xs:element name="jspc" type="jspcType"/>
                <xs:element name="style" type="styleType"/>
                <xs:element name="test" type="testType"/>
                <xs:element name="tstamp" type="tstampType"/>
                <xs:element name="unwar" type="unwarType"/>
                <xs:element name="icontract" type="icontractType"/>
                <xs:element name="cvschangelog" type="cvschangelogType"/>
                <xs:element name="p4submit" type="p4submitType"/>
                <xs:element name="p4change" type="p4changeType"/>
                <xs:element name="bzip2" type="bzip2Type"/>
                <xs:element name="sync" type="syncType"/>
                <xs:element name="p4delete" type="p4deleteType"/>
                <xs:element name="javadoc" type="javadocType"/>
                <xs:element name="p4integrate" type="p4integrateType"/>
                <xs:element name="translate" type="translateType"/>
                <xs:element name="signjar" type="signjarType"/>
                <xs:element name="chown" type="chownType"/>
                <xs:element name="vajload" type="vajloadType"/>
                <xs:element name="jarlib-available" type="jarlib-availableType"/>
                <xs:element name="buildnumber" type="buildnumberType"/>
                <xs:element name="jpcovmerge" type="jpcovmergeType"/>
                <xs:element name="war" type="warType"/>
                <xs:element name="rename" type="renameType"/>
                <xs:element name="sequential" type="sequentialType"/>
                <xs:element name="serverdeploy" type="serverdeployType"/>
                <xs:element name="property" type="propertyType"/>
                <xs:element name="subant" type="subantType"/>
                <xs:element name="move" type="moveType"/>
                <xs:element name="ildasm" type="ildasmType"/>
                <xs:element name="copydir" type="copydirType"/>
                <xs:element name="fixcrlf" type="fixcrlfType"/>
                <xs:element name="pathconvert" type="pathconvertType"/>
                <xs:element name="record" type="recordType"/>
                <xs:element name="p4sync" type="p4syncType"/>
                <xs:element name="exec" type="execType"/>
                <xs:element name="ccmklabel" type="ccmklabelType"/>
                <xs:element name="p4edit" type="p4editType"/>
                <xs:element name="manifest" type="manifestType"/>
                <xs:element name="maudit" type="mauditType"/>
                <xs:element name="antlr" type="antlrType"/>
                <xs:element name="jpcovreport" type="jpcovreportType"/>
                <xs:element name="execon" type="execonType"/>
                <xs:element name="ant" type="antType"/>
                <xs:element name="xmlvalidate" type="xmlvalidateType"/>
                <xs:element name="xslt" type="xsltType"/>
                <xs:element name="p4resolve" type="p4resolveType"/>
                <xs:element name="gzip" type="gzipType"/>
                <xs:element name="native2ascii" type="native2asciiType"/>
                <xs:element name="ccrmtype" type="ccrmtypeType"/>
                <xs:element name="ear" type="earType"/>
                <xs:element name="input" type="inputType"/>
                <xs:element name="presetdef" type="presetdefType"/>
                <xs:element name="rmic" type="rmicType"/>
                <xs:element name="checksum" type="checksumType"/>
                <xs:element name="mail" type="mailType"/>
                <xs:element name="loadfile" type="loadfileType"/>
                <xs:element name="mimemail" type="mimemailType"/>
                <xs:element name="gunzip" type="gunzipType"/>
                <xs:element name="concat" type="concatType"/>
                <xs:element name="cab" type="cabType"/>
                <xs:element name="touch" type="touchType"/>
                <xs:element name="parallel" type="parallelType"/>
                <xs:element name="splash" type="splashType"/>
                <xs:element name="antcall" type="antcallType"/>
                <xs:element name="typedef" type="typedefType"/>
                <xs:element name="p4have" type="p4haveType"/>
                <xs:element name="filter" type="filterType"/>
                <xs:element name="xmlproperty" type="xmlpropertyType"/>
                <xs:element name="import" type="importType"/>
                <xs:element name="copy" type="copyType"/>
                <xs:element name="jsharpc" type="jsharpcType"/>
                <xs:element name="symlink" type="symlinkType"/>
                <xs:element name="antstructure" type="antstructureType"/>
                <xs:element name="script" type="scriptType"/>
                <xs:element name="rpm" type="rpmType"/>
                <xs:element name="delete" type="deleteType"/>
                <xs:element name="replace" type="replaceType"/>
                <xs:element name="attrib" type="attribType"/>
                <xs:element name="waitfor" type="waitforType"/>
                <xs:element name="untar" type="untarType"/>
                <xs:element name="loadproperties" type="loadpropertiesType"/>
                <xs:element name="available" type="availableType"/>
                <xs:element name="echoproperties" type="echopropertiesType"/>
                <xs:element name="chgrp" type="chgrpType"/>
                <xs:element name="vajexport" type="vajexportType"/>
                <xs:element name="bunzip2" type="bunzip2Type"/>
                <xs:element name="whichresource" type="whichresourceType"/>
                <xs:element name="copyfile" type="copyfileType"/>
                <xs:element name="p4labelsync" type="p4labelsyncType"/>
                <xs:element name="macrodef" type="macrodefType"/>
                <xs:element name="unjar" type="unjarType"/>
                <xs:element name="vbc" type="vbcType"/>
                <xs:element name="mkdir" type="mkdirType"/>
                <xs:element name="condition" type="conditionType"/>
                <xs:element name="cvs" type="cvsType"/>
                <xs:element name="tempfile" type="tempfileType"/>
                <xs:element name="junit" type="junitType"/>
                <xs:element name="junitreport" type="junitreportType"/>
                <xs:element name="cobertura-instrument" type="cobertura-instrumentType"/>
                <xs:element name="cobertura-report" type="cobertura-reportType"/>
                <xs:element name="taskdef" type="taskdefType"/>
                <xs:element name="echo" type="echoType"/>
                <xs:element name="java" type="javaType"/>
                <xs:element name="renameext" type="renameextType"/>
                <xs:element name="basename" type="basenameType"/>
                <xs:element name="javadoc2" type="javadoc2Type"/>
                <xs:element name="tar" type="tarType"/>
                <xs:element name="vajimport" type="vajimportType"/>
                <xs:element name="p4fstat" type="p4fstatType"/>
                <xs:element name="setproxy" type="setproxyType"/>
                <xs:element name="p4counter" type="p4counterType"/>
                <xs:element name="ilasm" type="ilasmType"/>
                <xs:element name="apply" type="applyType"/>
                <xs:element name="jarlib-resolve" type="jarlib-resolveType"/>
                <xs:element name="jlink" type="jlinkType"/>
                <xs:element name="cvstagdiff" type="cvstagdiffType"/>
                <xs:element name="javacc" type="javaccType"/>
                <xs:element name="chmod" type="chmodType"/>
                <xs:element name="pvcs" type="pvcsType"/>
                <xs:element name="jarlib-manifest" type="jarlib-manifestType"/>
                <xs:element name="jar" type="jarType"/>
                <xs:element name="ccmklbtype" type="ccmklbtypeType"/>
                <xs:element name="sound" type="soundType"/>
                <xs:element name="scriptdef" type="scriptdefType"/>
                <xs:element name="defaultexcludes" type="defaultexcludesType"/>
                <xs:element name="blgenclient" type="blgenclientType"/>
                <xs:element name="uptodate" type="uptodateType"/>
                <xs:element name="jjdoc" type="jjdocType"/>
                <xs:element name="genkey" type="genkeyType"/>
                <xs:element name="javah" type="javahType"/>
                <xs:element name="fail" type="failType"/>
                <xs:element name="unzip" type="unzipType"/>
                <xs:element name="javac" type="javacType"/>
                <xs:element name="p4add" type="p4addType"/>
                <xs:element name="jpcoverage" type="jpcoverageType"/>
                <xs:element name="depend" type="dependType"/>
                <xs:element name="deltree" type="deltreeType"/>
                <xs:element name="ddcreator" type="ddcreatorType"/>
                <xs:element name="retry" type="retryType"/>
            </xs:choice>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
    <xs:complexType name="dateType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="when">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="before"/>
                    <xs:enumeration value="after"/>
                    <xs:enumeration value="equal"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="millis" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="checkdirs">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="granularity" type="xs:string"/>
        <xs:attribute name="datetime" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="ddcreatorType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="classpath" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="dest" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="descriptors" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="defaultexcludesType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="remove" type="xs:string"/>
        <xs:attribute name="echo">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="default">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="add" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="defineType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="unless" type="xs:string"/>
        <xs:attribute name="if" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="deleteType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="quiet">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="verbose">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="includeemptydirs">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="deletecharactersType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="chars" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="deltreeType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="dependType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="mapper" type="mapperType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="targetdir" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="granularity" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="dependsType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="libfileset" type="libfilesetType"/>
            <xs:element name="extension" type="extensionType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="dependsetType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="targetfileset" type="targetfilesetType"/>
            <xs:element name="srcfileset" type="srcfilesetType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="srcfilelist" type="srcfilelistType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
            <xs:element name="targetfilelist" type="targetfilelistType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="depthType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="max" type="xs:string"/>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="min" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="descriptionType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="id" type="xs:ID"/>
                <xs:attribute name="refid" type="xs:IDREF"/>
                <xs:attribute name="description" type="xs:string"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:complexType name="differentType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="mapper" type="mapperType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="targetdir" type="xs:string"/>
        <xs:attribute name="ignoreFileTimes" type="xs:string"/>
        <xs:attribute name="ignoreContents" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="ignorefiletimes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="granularity" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="dirnameType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="property" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="dirsetType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="refid" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="disableType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="package" type="xs:string"/>
        <xs:attribute name="class" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="dnameType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="param" type="paramType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
    <xs:complexType name="docletType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="path" type="pathType"/>
            <xs:element name="param" type="paramType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="pathref" type="xs:IDREF"/>
        <xs:attribute name="path" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="doctitleType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="id" type="xs:ID"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:complexType name="dtdType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="location" type="xs:string"/>
        <xs:attribute name="base" type="xs:string"/>
        <xs:attribute name="publicid" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="earType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="manifest" type="manifestType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="metainf" type="metainfType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="archives" type="archivesType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="zipgroupfileset" type="zipgroupfilesetType"/>
            <xs:element name="zipfileset" type="zipfilesetType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="keepcompression">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="whenempty">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="fail"/>
                    <xs:enumeration value="skip"/>
                    <xs:enumeration value="create"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="duplicate">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="add"/>
                    <xs:enumeration value="preserve"/>
                    <xs:enumeration value="fail"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="basedir" type="xs:string"/>
        <xs:attribute name="encoding" type="xs:string"/>
        <xs:attribute name="manifest" type="xs:string"/>
        <xs:attribute name="jarfile" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="index">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="update">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="destfile" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="earfile" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="appxml" type="xs:string"/>
        <xs:attribute name="compress">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="manifestencoding" type="xs:string"/>
        <xs:attribute name="filesonly">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="filesetmanifest">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="skip"/>
                    <xs:enumeration value="merge"/>
                    <xs:enumeration value="mergewithoutmain"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="zipfile" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="echoType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="id" type="xs:ID"/>
                <xs:attribute name="append">
                    <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                            <xs:enumeration value="true"/>
                            <xs:enumeration value="false"/>
                            <xs:enumeration value="on"/>
                            <xs:enumeration value="off"/>
                            <xs:enumeration value="yes"/>
                            <xs:enumeration value="no"/>
                        </xs:restriction>
                    </xs:simpleType>
                </xs:attribute>
                <xs:attribute name="taskname" type="xs:string"/>
                <xs:attribute name="file" type="xs:string"/>
                <xs:attribute name="description" type="xs:string"/>
                <xs:attribute name="message" type="xs:string"/>
                <xs:attribute name="level">
                    <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                            <xs:enumeration value="error"/>
                            <xs:enumeration value="warning"/>
                            <xs:enumeration value="info"/>
                            <xs:enumeration value="verbose"/>
                            <xs:enumeration value="debug"/>
                        </xs:restriction>
                    </xs:simpleType>
                </xs:attribute>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:complexType name="echopropertiesType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="propertyset" type="propertysetType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="prefix" type="xs:string"/>
        <xs:attribute name="format">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="xml"/>
                    <xs:enumeration value="text"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="srcfile" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="destfile" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="elementType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="optional">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="implicit" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="classname" type="xs:string"/>
        <xs:attribute name="type" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="enableType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="package" type="xs:string"/>
        <xs:attribute name="class" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="entityType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="location" type="xs:string"/>
        <xs:attribute name="base" type="xs:string"/>
        <xs:attribute name="publicid" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="entryType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="operation" type="xs:string"/>
        <xs:attribute name="default" type="xs:string"/>
        <xs:attribute name="key" type="xs:string"/>
        <xs:attribute name="type">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="int"/>
                    <xs:enumeration value="date"/>
                    <xs:enumeration value="string"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="unit">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="millisecond"/>
                    <xs:enumeration value="second"/>
                    <xs:enumeration value="minute"/>
                    <xs:enumeration value="hour"/>
                    <xs:enumeration value="day"/>
                    <xs:enumeration value="week"/>
                    <xs:enumeration value="month"/>
                    <xs:enumeration value="year"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="pattern" type="xs:string"/>
        <xs:attribute name="value" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="envType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="key" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="value" type="xs:string"/>
        <xs:attribute name="path" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="redirectorType">
        <xs:attribute name="output" type="xs:string"/>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="logError" type="xs:string"/>
        <xs:attribute name="append" type="xs:boolean"/>
        <xs:attribute name="createemptyfiles" type="xs:boolean"/>
        <xs:attribute name="outputproperty" type="xs:string"/>
        <xs:attribute name="errorproperty" type="xs:string"/>
        <xs:attribute name="input" type="xs:string"/>
        <xs:attribute name="inputstring" type="xs:string"/>
        <xs:attribute name="inputencoding" type="xs:string"/>
        <xs:attribute name="outputencoding" type="xs:string"/>
        <xs:attribute name="errorencoding" type="xs:string"/>
        <xs:attribute name="alwayslog" type="xs:boolean"/>
        <xs:attribute name="loginputstring" type="xs:boolean"/>
    </xs:complexType>
    <xs:complexType name="equalsType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="trim">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="arg2" type="xs:string"/>
        <xs:attribute name="arg1" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="escapeunicodeType">
        <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
    <xs:complexType name="excludeType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="unless" type="xs:string"/>
        <xs:attribute name="if" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="excludepackageType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="name" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="excludesfileType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="unless" type="xs:string"/>
        <xs:attribute name="if" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="execType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="arg" type="argType"/>
            <xs:element name="env" type="envType"/>
            <xs:element name="redirector" type="redirectorType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="resultproperty" type="xs:string"/>
        <xs:attribute name="failifexecutionfails">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="command" type="xs:string"/>
        <xs:attribute name="executable" type="xs:string"/>
        <xs:attribute name="os" type="xs:string"/>
        <xs:attribute name="osfamily" type="xs:string"/>
        <xs:attribute name="errorproperty" type="xs:string"/>
        <xs:attribute name="output" type="xs:string"/>
        <xs:attribute name="timeout" type="xs:string"/>
        <xs:attribute name="spawn">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="input" type="xs:string"/>
        <xs:attribute name="inputstring" type="xs:string"/>
        <xs:attribute name="logerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="outputproperty" type="xs:string"/>
        <xs:attribute name="resolveexecutable">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="failonerror" type="xs:string"/>
        <xs:attribute name="append">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="newenvironment">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="vmlauncher">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="execonType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="arg" type="argType"/>
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="dirset" type="dirsetType"/>
            <xs:element name="env" type="envType"/>
            <xs:element name="filelist" type="filelistType"/>
            <xs:element name="targetfile" type="targetfileType"/>
            <xs:element name="srcfile" type="srcfileType"/>
            <xs:element name="mapper" type="mapperType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="resultproperty" type="xs:string"/>
        <xs:attribute name="skipemptyfilesets">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="failifexecutionfails">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="command" type="xs:string"/>
        <xs:attribute name="type">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="file"/>
                    <xs:enumeration value="dir"/>
                    <xs:enumeration value="both"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="maxparallel" type="xs:string"/>
        <xs:attribute name="executable" type="xs:string"/>
        <xs:attribute name="os" type="xs:string"/>
        <xs:attribute name="errorproperty" type="xs:string"/>
        <xs:attribute name="output" type="xs:string"/>
        <xs:attribute name="timeout" type="xs:string"/>
        <xs:attribute name="dest" type="xs:string"/>
        <xs:attribute name="spawn">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="input" type="xs:string"/>
        <xs:attribute name="inputstring" type="xs:string"/>
        <xs:attribute name="addsourcefile">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="verbose">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="logerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="forwardslash">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="outputproperty" type="xs:string"/>
        <xs:attribute name="resolveexecutable">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="append">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="vmlauncher">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="newenvironment">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="relative">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="parallel">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="existingType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="dirset" type="dirsetType"/>
            <xs:element name="extdirs" type="extdirsType"/>
            <xs:element name="filelist" type="filelistType"/>
            <xs:element name="existing" type="existingType"/>
            <xs:element name="pathelement" type="pathelementType"/>
            <xs:element name="path" type="pathType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="location" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="path" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="expandpropertiesType">
        <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
    <xs:complexType name="extdirsType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="dirset" type="dirsetType"/>
            <xs:element name="extdirs" type="extdirsType"/>
            <xs:element name="filelist" type="filelistType"/>
            <xs:element name="existing" type="existingType"/>
            <xs:element name="pathelement" type="pathelementType"/>
            <xs:element name="path" type="pathType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="location" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="path" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="extensionType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="implementationversion" type="xs:string"/>
        <xs:attribute name="specificationversion" type="xs:string"/>
        <xs:attribute name="extensionname" type="xs:string"/>
        <xs:attribute name="implementationvendorid" type="xs:string"/>
        <xs:attribute name="specificationvendor" type="xs:string"/>
        <xs:attribute name="implementationurl" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="implementationvendor" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="extensionSetType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="libfileset" type="libfilesetType"/>
            <xs:element name="extension" type="extensionType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="extensionsetType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="libfileset" type="libfilesetType"/>
            <xs:element name="extension" type="extensionType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="factoryType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="attribute" type="attributeType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="name" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="failType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="condition" type="conditionType"/>
        </xs:choice>
        <xs:attribute name="message" type="xs:string"/>
        <xs:attribute name="if" type="xs:string"/>
        <xs:attribute name="unless" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="failsoundType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="loops" type="xs:string"/>
        <xs:attribute name="source" type="xs:string"/>
        <xs:attribute name="duration" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="filelistType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="files" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="filenameType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="negate">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="filepathType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="dirset" type="dirsetType"/>
            <xs:element name="extdirs" type="extdirsType"/>
            <xs:element name="filelist" type="filelistType"/>
            <xs:element name="existing" type="existingType"/>
            <xs:element name="pathelement" type="pathelementType"/>
            <xs:element name="path" type="pathType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="location" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="path" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="resourcesType">
        <xs:attribute name="refid" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="filesetType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:string"/>
        <xs:attribute name="refid" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="filesmatchType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="file2" type="xs:string"/>
        <xs:attribute name="file1" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="filetokenizerType">
        <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
    <xs:complexType name="filterType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="token" type="xs:string"/>
        <xs:attribute name="value" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="filterchainType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="headfilter" type="headfilterType"/>
            <xs:element name="classconstants" type="classconstantsType"/>
            <xs:element name="linecontains" type="linecontainsType"/>
            <xs:element name="filterreader" type="filterreaderType"/>
            <xs:element name="replaceregex" type="replaceregexType"/>
            <xs:element name="replacetokens" type="replacetokensType"/>
            <xs:element name="escapeunicode" type="escapeunicodeType"/>
            <xs:element name="ignoreblank" type="ignoreblankType"/>
            <xs:element name="tailfilter" type="tailfilterType"/>
            <xs:element name="tabstospaces" type="tabstospacesType"/>
            <xs:element name="prefixlines" type="prefixlinesType"/>
            <xs:element name="expandproperties" type="expandpropertiesType"/>
            <xs:element name="striplinebreaks" type="striplinebreaksType"/>
            <xs:element name="trim" type="trimType"/>
            <xs:element name="striplinecomments" type="striplinecommentsType"/>
            <xs:element name="replacestring" type="replacestringType"/>
            <xs:element name="tokenfilter" type="tokenfilterType"/>
            <xs:element name="stripjavacomments" type="stripjavacommentsType"/>
            <xs:element name="containsregex" type="containsregexType"/>
            <xs:element name="deletecharacters" type="deletecharactersType"/>
            <xs:element name="linecontainsregexp" type="linecontainsregexpType"/>
            <xs:element name="concatfilter" type="concatfilterType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="filtermapperType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="replaceregex" type="replaceregexType"/>
            <xs:element name="scriptfilter" type="scriptfilterType"/>
        </xs:choice>
    </xs:complexType>
    <xs:complexType name="scriptmapperType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="id" type="xs:ID"/>
                <xs:attribute name="setbeans">
                    <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                            <xs:enumeration value="true"/>
                            <xs:enumeration value="false"/>
                            <xs:enumeration value="on"/>
                            <xs:enumeration value="off"/>
                            <xs:enumeration value="yes"/>
                            <xs:enumeration value="no"/>
                        </xs:restriction>
                    </xs:simpleType>
                </xs:attribute>
                <xs:attribute name="src" type="xs:string"/>
                <xs:attribute name="language" type="xs:string"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:complexType name="filterreaderType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="classpath" type="classpathType"/>
            <xs:element name="param" type="paramType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="classpath" type="xs:string"/>
        <xs:attribute name="classpathref" type="xs:IDREF"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="classname" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="filtersType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="include" type="includeType"/>
            <xs:element name="exclude" type="excludeType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="defaultexclude">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="filtersetType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="filterset" type="filtersetType"/>
            <xs:element name="filter" type="filterType"/>
            <xs:element name="filtersfile" type="filtersfileType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="begintoken" type="xs:string"/>
        <xs:attribute name="endtoken" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="filtersfile" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="filtersfileType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="file" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="fixcrlfType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="tab">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="add"/>
                    <xs:enumeration value="asis"/>
                    <xs:enumeration value="remove"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="encoding" type="xs:string"/>
        <xs:attribute name="cr">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="add"/>
                    <xs:enumeration value="asis"/>
                    <xs:enumeration value="remove"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="destdir" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="eol">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="asis"/>
                    <xs:enumeration value="cr"/>
                    <xs:enumeration value="lf"/>
                    <xs:enumeration value="crlf"/>
                    <xs:enumeration value="mac"/>
                    <xs:enumeration value="unix"/>
                    <xs:enumeration value="dos"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="javafiles">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="eof">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="add"/>
                    <xs:enumeration value="asis"/>
                    <xs:enumeration value="remove"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="tablength" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="fixlast">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="srcdir" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="footerType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="id" type="xs:ID"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:complexType name="formatType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="locale" type="xs:string"/>
        <xs:attribute name="timezone" type="xs:string"/>
        <xs:attribute name="unit">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="millisecond"/>
                    <xs:enumeration value="second"/>
                    <xs:enumeration value="minute"/>
                    <xs:enumeration value="hour"/>
                    <xs:enumeration value="day"/>
                    <xs:enumeration value="week"/>
                    <xs:enumeration value="month"/>
                    <xs:enumeration value="year"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="pattern" type="xs:string"/>
        <xs:attribute name="property" type="xs:string"/>
        <xs:attribute name="offset" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="fromType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="address" type="xs:string"/>
        <xs:attribute name="name" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="genericType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="arg" type="argType"/>
            <xs:element name="classpath" type="classpathType"/>
            <xs:element name="jvmarg" type="jvmargType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="classpath" type="xs:string"/>
        <xs:attribute name="password" type="xs:string"/>
        <xs:attribute name="server" type="xs:string"/>
        <xs:attribute name="classname" type="xs:string"/>
        <xs:attribute name="username" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="genkeyType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="dname" type="dnameType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="storepass" type="xs:string"/>
        <xs:attribute name="sigalg" type="xs:string"/>
        <xs:attribute name="verbose">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="keypass" type="xs:string"/>
        <xs:attribute name="dname" type="xs:string"/>
        <xs:attribute name="keysize" type="xs:string"/>
        <xs:attribute name="alias" type="xs:string"/>
        <xs:attribute name="keyalg" type="xs:string"/>
        <xs:attribute name="validity" type="xs:string"/>
        <xs:attribute name="keystore" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="storetype" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="getType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="src" type="xs:string"/>
        <xs:attribute name="verbose">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="ignoreerrors">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="username" type="xs:string"/>
        <xs:attribute name="usetimestamp">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="dest" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="password" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="grantType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="class" type="xs:string"/>
        <xs:attribute name="actions" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="groupType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="package" type="packageType"/>
            <xs:element name="title" type="titleType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="packages" type="xs:string"/>
        <xs:attribute name="title" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="gunzipType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="dest" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="src" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="gzipType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="zipfile" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="src" type="xs:string"/>
        <xs:attribute name="destfile" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="headerType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="id" type="xs:ID"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:complexType name="headfilterType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="lines" type="xs:string"/>
        <xs:attribute name="skip" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="httpType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="url" type="xs:string"/>
        <xs:attribute name="errorsbeginat" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="icontractType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="classpath" type="classpathType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="classdir" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="quiet">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="classpathref" type="xs:IDREF"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="repositorydir" type="xs:string"/>
        <xs:attribute name="instrumentdir" type="xs:string"/>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="builddir" type="xs:string"/>
        <xs:attribute name="updateicontrol">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="classpath" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="pre">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="controlfile" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="invariant">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="post">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="srcdir" type="xs:string"/>
        <xs:attribute name="failthrowable" type="xs:string"/>
        <xs:attribute name="verbosity" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="repbuilddir" type="xs:string"/>
        <xs:attribute name="targets" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="ignoreblankType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="byline">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="ilasmType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="reference" type="referenceType"/>
            <xs:element name="src" type="srcType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="owner" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="extraoptions" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="targettype">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="exe"/>
                    <xs:enumeration value="library"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="destfile" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="verbose">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="debug">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="includes" type="xs:string"/>
        <xs:attribute name="outputfile" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="resourcefile" type="xs:string"/>
        <xs:attribute name="srcdir" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="listing">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="keyfile" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="ildasmType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="assembler">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="encoding">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="ascii"/>
                    <xs:enumeration value="utf8"/>
                    <xs:enumeration value="unicode"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="executable" type="xs:string"/>
        <xs:attribute name="progressbar">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="linenumbers">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="rawexceptionhandling">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="showsource">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="metadata">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="destfile" type="xs:string"/>
        <xs:attribute name="srcfile" type="xs:string"/>
        <xs:attribute name="bytes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="resourcedir" type="xs:string"/>
        <xs:attribute name="quoteallnames">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="header">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="visibility" type="xs:string"/>
        <xs:attribute name="sourcefile" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="item" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="importType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="optional">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="importtypelibType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="unsafe">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="usesysarray">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="namespace" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="extraoptions" type="xs:string"/>
        <xs:attribute name="srcfile" type="xs:string"/>
        <xs:attribute name="destfile" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="includeType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="unless" type="xs:string"/>
        <xs:attribute name="if" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="includesfileType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="unless" type="xs:string"/>
        <xs:attribute name="if" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="inputType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="id" type="xs:ID"/>
                <xs:attribute name="taskname" type="xs:string"/>
                <xs:attribute name="addproperty" type="xs:string"/>
                <xs:attribute name="description" type="xs:string"/>
                <xs:attribute name="defaultvalue" type="xs:string"/>
                <xs:attribute name="validargs" type="xs:string"/>
                <xs:attribute name="message" type="xs:string"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:complexType name="isfalseType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="value">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="isreferenceType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="type" type="xs:string"/>
        <xs:attribute name="refid" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="issetType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="property" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="istrueType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="value">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="jarType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="manifest" type="manifestType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="metainf" type="metainfType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="zipgroupfileset" type="zipgroupfilesetType"/>
            <xs:element name="zipfileset" type="zipfilesetType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="whenempty">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="fail"/>
                    <xs:enumeration value="skip"/>
                    <xs:enumeration value="create"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="keepcompression">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="duplicate">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="add"/>
                    <xs:enumeration value="preserve"/>
                    <xs:enumeration value="fail"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="basedir" type="xs:string"/>
        <xs:attribute name="encoding" type="xs:string"/>
        <xs:attribute name="manifest" type="xs:string"/>
        <xs:attribute name="jarfile" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="index">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="update">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="destfile" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="includes" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="compress">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="manifestencoding" type="xs:string"/>
        <xs:attribute name="filesonly">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="filesetmanifest">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="skip"/>
                    <xs:enumeration value="merge"/>
                    <xs:enumeration value="mergewithoutmain"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="zipfile" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="jarlib-availableType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="extensionset" type="extensionsetType"/>
            <xs:element name="extension" type="extensionType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="property" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="jarlib-displayType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="jarlib-manifestType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="options" type="optionsType"/>
            <xs:element name="attribute" type="attributeType"/>
            <xs:element name="depends" type="dependsType"/>
            <xs:element name="extension" type="extensionType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="destfile" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="jarlib-resolveType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="ant" type="antType"/>
            <xs:element name="location" type="locationType"/>
            <xs:element name="url" type="urlType"/>
            <xs:element name="extension" type="extensionType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="checkextension">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="property" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="javaType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="classpath" type="classpathType"/>
            <xs:element name="sysproperty" type="syspropertyType"/>
            <xs:element name="bootclasspath" type="bootclasspathType"/>
            <xs:element name="syspropertyset" type="syspropertysetType"/>
            <xs:element name="env" type="envType"/>
            <xs:element name="permissions" type="permissionsType"/>
            <xs:element name="jvmarg" type="jvmargType"/>
            <xs:element name="arg" type="argType"/>
            <xs:element name="assertions" type="assertionsType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="resultproperty" type="xs:string"/>
        <xs:attribute name="jvmargs" type="xs:string"/>
        <xs:attribute name="args" type="xs:string"/>
        <xs:attribute name="fork">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="maxmemory" type="xs:string"/>
        <xs:attribute name="classpathref" type="xs:IDREF"/>
        <xs:attribute name="jar" type="xs:string"/>
        <xs:attribute name="errorproperty" type="xs:string"/>
        <xs:attribute name="output" type="xs:string"/>
        <xs:attribute name="timeout" type="xs:string"/>
        <xs:attribute name="spawn">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="input" type="xs:string"/>
        <xs:attribute name="jvm" type="xs:string"/>
        <xs:attribute name="inputstring" type="xs:string"/>
        <xs:attribute name="classpath" type="xs:string"/>
        <xs:attribute name="logerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="jvmversion" type="xs:string"/>
        <xs:attribute name="outputproperty" type="xs:string"/>
        <xs:attribute name="append">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="newenvironment">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="classname" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="javacType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="extdirs" type="extdirsType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="src" type="srcType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="classpath" type="classpathType"/>
            <xs:element name="sourcepath" type="sourcepathType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="bootclasspath" type="bootclasspathType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="compilerarg" type="compilerargType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="target" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="verbose">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="bootclasspathref" type="xs:IDREF"/>
        <xs:attribute name="compiler" type="xs:string"/>
        <xs:attribute name="executable" type="xs:string"/>
        <xs:attribute name="debuglevel" type="xs:string"/>
        <xs:attribute name="memoryinitialsize" type="xs:string"/>
        <xs:attribute name="deprecation">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="includeantruntime">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="sourcepathref" type="xs:IDREF"/>
        <xs:attribute name="depend">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="includes" type="xs:string"/>
        <xs:attribute name="source" type="xs:string"/>
        <xs:attribute name="includejavaruntime">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="destdir" type="xs:string"/>
        <xs:attribute name="debug">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="tempdir" type="xs:string"/>
        <xs:attribute name="classpath" type="xs:string"/>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="bootclasspath" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="nowarn">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="proceed">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="classpathref" type="xs:IDREF"/>
        <xs:attribute name="fork">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="srcdir" type="xs:string"/>
        <xs:attribute name="memorymaximumsize" type="xs:string"/>
        <xs:attribute name="optimize">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="encoding" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="sourcepath" type="xs:string"/>
        <xs:attribute name="listfiles">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="extdirs" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="javaccType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="debugparser">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="javacchome" type="xs:string"/>
        <xs:attribute name="forcelacheck">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="optimizetokenmanager">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="commontokenaction">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="buildtokenmanager">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="sanitycheck">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="buildparser">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="otherambiguitycheck" type="xs:string"/>
        <xs:attribute name="lookahead" type="xs:string"/>
        <xs:attribute name="debuglookahead">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="choiceambiguitycheck" type="xs:string"/>
        <xs:attribute name="unicodeinput">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="usercharstream">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="debugtokenmanager">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="keeplinecolumn">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="outputdirectory" type="xs:string"/>
        <xs:attribute name="cachetokens">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="javaunicodeescape">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="static">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="target" type="xs:string"/>
        <xs:attribute name="ignorecase">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="usertokenmanager">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="errorreporting">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="javadocType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="taglet" type="tagletType"/>
            <xs:element name="doclet" type="docletType"/>
            <xs:element name="package" type="packageType"/>
            <xs:element name="arg" type="argType"/>
            <xs:element name="link" type="linkType"/>
            <xs:element name="doctitle" type="doctitleType"/>
            <xs:element name="bottom" type="bottomType"/>
            <xs:element name="group" type="groupType"/>
            <xs:element name="packageset" type="packagesetType"/>
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="classpath" type="classpathType"/>
            <xs:element name="sourcepath" type="sourcepathType"/>
            <xs:element name="footer" type="footerType"/>
            <xs:element name="source" type="sourceType"/>
            <xs:element name="bootclasspath" type="bootclasspathType"/>
            <xs:element name="header" type="headerType"/>
            <xs:element name="excludepackage" type="excludepackageType"/>
            <xs:element name="tag" type="tagType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="bottom" type="xs:string"/>
        <xs:attribute name="verbose">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="bootclasspathref" type="xs:IDREF"/>
        <xs:attribute name="header" type="xs:string"/>
        <xs:attribute name="link" type="xs:string"/>
        <xs:attribute name="noindex">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="access">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="protected"/>
                    <xs:enumeration value="public"/>
                    <xs:enumeration value="package"/>
                    <xs:enumeration value="private"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="doclet" type="xs:string"/>
        <xs:attribute name="noqualifier" type="xs:string"/>
        <xs:attribute name="public">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="author">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="footer" type="xs:string"/>
        <xs:attribute name="docletpath" type="xs:string"/>
        <xs:attribute name="package">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="useexternalfile">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="sourcepathref" type="xs:IDREF"/>
        <xs:attribute name="protected">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="breakiterator">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="nonavbar">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="maxmemory" type="xs:string"/>
        <xs:attribute name="group" type="xs:string"/>
        <xs:attribute name="source" type="xs:string"/>
        <xs:attribute name="linkoffline" type="xs:string"/>
        <xs:attribute name="additionalparam" type="xs:string"/>
        <xs:attribute name="linksource">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="locale" type="xs:string"/>
        <xs:attribute name="destdir" type="xs:string"/>
        <xs:attribute name="classpath" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="bootclasspath" type="xs:string"/>
        <xs:attribute name="private">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="charset" type="xs:string"/>
        <xs:attribute name="nodeprecatedlist">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="classpathref" type="xs:IDREF"/>
        <xs:attribute name="stylesheetfile" type="xs:string"/>
        <xs:attribute name="docencoding" type="xs:string"/>
        <xs:attribute name="excludepackagenames" type="xs:string"/>
        <xs:attribute name="docletpathref" type="xs:IDREF"/>
        <xs:attribute name="packagenames" type="xs:string"/>
        <xs:attribute name="windowtitle" type="xs:string"/>
        <xs:attribute name="notree">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="splitindex">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="packagelist" type="xs:string"/>
        <xs:attribute name="encoding" type="xs:string"/>
        <xs:attribute name="doctitle" type="xs:string"/>
        <xs:attribute name="serialwarn">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="old">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="use">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="sourcepath" type="xs:string"/>
        <xs:attribute name="helpfile" type="xs:string"/>
        <xs:attribute name="version">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="sourcefiles" type="xs:string"/>
        <xs:attribute name="extdirs" type="xs:string"/>
        <xs:attribute name="nohelp">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="nodeprecated">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="overview" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="javadoc2Type">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="taglet" type="tagletType"/>
            <xs:element name="doclet" type="docletType"/>
            <xs:element name="package" type="packageType"/>
            <xs:element name="arg" type="argType"/>
            <xs:element name="link" type="linkType"/>
            <xs:element name="doctitle" type="doctitleType"/>
            <xs:element name="bottom" type="bottomType"/>
            <xs:element name="group" type="groupType"/>
            <xs:element name="packageset" type="packagesetType"/>
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="classpath" type="classpathType"/>
            <xs:element name="sourcepath" type="sourcepathType"/>
            <xs:element name="footer" type="footerType"/>
            <xs:element name="source" type="sourceType"/>
            <xs:element name="bootclasspath" type="bootclasspathType"/>
            <xs:element name="header" type="headerType"/>
            <xs:element name="excludepackage" type="excludepackageType"/>
            <xs:element name="tag" type="tagType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="bottom" type="xs:string"/>
        <xs:attribute name="verbose">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="bootclasspathref" type="xs:IDREF"/>
        <xs:attribute name="header" type="xs:string"/>
        <xs:attribute name="link" type="xs:string"/>
        <xs:attribute name="noindex">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="access">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="protected"/>
                    <xs:enumeration value="public"/>
                    <xs:enumeration value="package"/>
                    <xs:enumeration value="private"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="doclet" type="xs:string"/>
        <xs:attribute name="noqualifier" type="xs:string"/>
        <xs:attribute name="public">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="author">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="footer" type="xs:string"/>
        <xs:attribute name="docletpath" type="xs:string"/>
        <xs:attribute name="package">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="useexternalfile">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="sourcepathref" type="xs:IDREF"/>
        <xs:attribute name="protected">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="breakiterator">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="nonavbar">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="maxmemory" type="xs:string"/>
        <xs:attribute name="group" type="xs:string"/>
        <xs:attribute name="source" type="xs:string"/>
        <xs:attribute name="linkoffline" type="xs:string"/>
        <xs:attribute name="additionalparam" type="xs:string"/>
        <xs:attribute name="linksource">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="locale" type="xs:string"/>
        <xs:attribute name="destdir" type="xs:string"/>
        <xs:attribute name="classpath" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="bootclasspath" type="xs:string"/>
        <xs:attribute name="private">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="charset" type="xs:string"/>
        <xs:attribute name="nodeprecatedlist">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="classpathref" type="xs:IDREF"/>
        <xs:attribute name="stylesheetfile" type="xs:string"/>
        <xs:attribute name="docencoding" type="xs:string"/>
        <xs:attribute name="excludepackagenames" type="xs:string"/>
        <xs:attribute name="docletpathref" type="xs:IDREF"/>
        <xs:attribute name="packagenames" type="xs:string"/>
        <xs:attribute name="windowtitle" type="xs:string"/>
        <xs:attribute name="notree">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="splitindex">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="packagelist" type="xs:string"/>
        <xs:attribute name="encoding" type="xs:string"/>
        <xs:attribute name="doctitle" type="xs:string"/>
        <xs:attribute name="serialwarn">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="old">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="use">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="sourcepath" type="xs:string"/>
        <xs:attribute name="helpfile" type="xs:string"/>
        <xs:attribute name="version">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="sourcefiles" type="xs:string"/>
        <xs:attribute name="extdirs" type="xs:string"/>
        <xs:attribute name="nohelp">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="nodeprecated">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="overview" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="javahType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="classpath" type="classpathType"/>
            <xs:element name="class" type="classType"/>
            <xs:element name="bootclasspath" type="bootclasspathType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="stubs">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="force">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="destdir" type="xs:string"/>
        <xs:attribute name="classpath" type="xs:string"/>
        <xs:attribute name="old">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="outputfile" type="xs:string"/>
        <xs:attribute name="class" type="xs:string"/>
        <xs:attribute name="verbose">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="bootclasspath" type="xs:string"/>
        <xs:attribute name="bootclasspathref" type="xs:IDREF"/>
        <xs:attribute name="classpathref" type="xs:IDREF"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="jjdocType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="outputfile" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="javacchome" type="xs:string"/>
        <xs:attribute name="target" type="xs:string"/>
        <xs:attribute name="text">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="onetable">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="jjtreeType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="nodedefaultvoid">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="buildnodefiles">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="outputdirectory" type="xs:string"/>
        <xs:attribute name="outputfile" type="xs:string"/>
        <xs:attribute name="static">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="javacchome" type="xs:string"/>
        <xs:attribute name="nodeprefix" type="xs:string"/>
        <xs:attribute name="nodefactory">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="multi">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="visitor">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="target" type="xs:string"/>
        <xs:attribute name="nodeusesparser">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="visitorexception" type="xs:string"/>
        <xs:attribute name="nodescopehook">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="nodepackage" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="jlinkType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="mergefiles" type="mergefilesType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="addfiles" type="addfilesType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="outfile" type="xs:string"/>
        <xs:attribute name="compress">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="addfiles" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="mergefiles" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="jonasType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="classpath" type="classpathType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="jonasroot" type="xs:string"/>
        <xs:attribute name="keepgeneric">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="additionalargs" type="xs:string"/>
        <xs:attribute name="javac" type="xs:string"/>
        <xs:attribute name="destdir" type="xs:string"/>
        <xs:attribute name="classpath" type="xs:string"/>
        <xs:attribute name="orb" type="xs:string"/>
        <xs:attribute name="jarsuffix" type="xs:string"/>
        <xs:attribute name="verbose">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="genericjarsuffix" type="xs:string"/>
        <xs:attribute name="nogenic">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="rmicopts" type="xs:string"/>
        <xs:attribute name="javacopts" type="xs:string"/>
        <xs:attribute name="novalidation">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="keepgenerated">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="nocompil">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="secpropag">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="jpcoverageType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="arg" type="argType"/>
            <xs:element name="socket" type="socketType"/>
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="jvmarg" type="jvmargType"/>
            <xs:element name="classpath" type="classpathType"/>
            <xs:element name="triggers" type="triggersType"/>
            <xs:element name="filters" type="filtersType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="applet">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="recordfromstart">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="coverage"/>
                    <xs:enumeration value="none"/>
                    <xs:enumeration value="all"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="vm">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="java2"/>
                    <xs:enumeration value="jdk118"/>
                    <xs:enumeration value="jdk117"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="classname" type="xs:string"/>
        <xs:attribute name="workingdir" type="xs:string"/>
        <xs:attribute name="inputfile" type="xs:string"/>
        <xs:attribute name="snapshotdir" type="xs:string"/>
        <xs:attribute name="seedname" type="xs:string"/>
        <xs:attribute name="javaexe" type="xs:string"/>
        <xs:attribute name="home" type="xs:string"/>
        <xs:attribute name="exitprompt" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="warnlevel" type="xs:string"/>
        <xs:attribute name="finalsnapshot" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="tracknatives">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="jpcovmergeType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="verbose">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="tofile" type="xs:string"/>
        <xs:attribute name="home" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="jpcovreportType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="reference" type="referenceType"/>
            <xs:element name="coveragepath" type="coveragepathType"/>
            <xs:element name="sourcepath" type="sourcepathType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="snapshot" type="xs:string"/>
        <xs:attribute name="tofile" type="xs:string"/>
        <xs:attribute name="filters" type="xs:string"/>
        <xs:attribute name="percent" type="xs:string"/>
        <xs:attribute name="home" type="xs:string"/>
        <xs:attribute name="type">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="executive"/>
                    <xs:enumeration value="summary"/>
                    <xs:enumeration value="detailed"/>
                    <xs:enumeration value="verydetailed"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="format">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="html"/>
                    <xs:enumeration value="text"/>
                    <xs:enumeration value="xml"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="includesource">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="jsharpcType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="resource" type="resourceType"/>
            <xs:element name="define" type="defineType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="reference" type="referenceType"/>
            <xs:element name="src" type="srcType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="references" type="xs:string"/>
        <xs:attribute name="useresponsefile">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="mainclass" type="xs:string"/>
        <xs:attribute name="extraoptions" type="xs:string"/>
        <xs:attribute name="additionalmodules" type="xs:string"/>
        <xs:attribute name="win32icon" type="xs:string"/>
        <xs:attribute name="destdir" type="xs:string"/>
        <xs:attribute name="executable" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="utf8output">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="includedefaultreferences">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="optimize">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="targettype">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="exe"/>
                    <xs:enumeration value="library"/>
                    <xs:enumeration value="module"/>
                    <xs:enumeration value="winexe"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="destfile" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="win32res" type="xs:string"/>
        <xs:attribute name="baseaddress" type="xs:string"/>
        <xs:attribute name="debug">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="securescoping">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="includes" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="purejava">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="warnlevel" type="xs:string"/>
        <xs:attribute name="srcdir" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="referencefiles" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="jspcType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="compilerclasspath" type="compilerclasspathType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="classpath" type="classpathType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="webapp" type="webappType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="mapped">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="ieplugin" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="classpathref" type="xs:IDREF"/>
        <xs:attribute name="package" type="xs:string"/>
        <xs:attribute name="destdir" type="xs:string"/>
        <xs:attribute name="compilerclasspath" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="uribase" type="xs:string"/>
        <xs:attribute name="classpath" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="verbose" type="xs:string"/>
        <xs:attribute name="compiler" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="webxml" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="srcdir" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="uriroot" type="xs:string"/>
        <xs:attribute name="webinc" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="junitType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="formatter" type="formatterType"/>
            <xs:element name="classpath" type="classpathType"/>
            <xs:element name="batchtest" type="batchtestType"/>
            <xs:element name="sysproperty" type="syspropertyType"/>
        </xs:choice>
        <xs:attribute name="fork" type="xs:string"/>
        <xs:attribute name="printsummary" type="xs:string"/>
        <xs:attribute name="haltonfailure" type="xs:string"/>
        <xs:attribute name="showoutput" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="junitreportType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="report" type="reportType"/>
            <xs:element name="fileset" type="filesetType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="todir" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="tofile" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="cobertura-instrumentType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="ignore" type="ignoreType"/>
            <xs:element name="fileset" type="filesetType"/>
        </xs:choice>
        <xs:attribute name="todir" type="xs:string"/>
        <xs:attribute name="datafile" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="cobertura-reportType">
        <xs:choice minOccurs="0" maxOccurs="unbounded"/>
        <xs:attribute name="format" type="xs:string"/>
        <xs:attribute name="destdir" type="xs:string"/>
        <xs:attribute name="srcdir" type="xs:string"/>
        <xs:attribute name="datafile" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="formatterType">
        <xs:attribute name="type" type="xs:string"/>
        <xs:attribute name="usefile" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="batchtestType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="formatter" type="formatterType"/>
            <xs:element name="fileset" type="filesetType"/>
        </xs:choice>
        <xs:attribute name="fork" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="ignoreType">
        <xs:attribute name="regex" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="jvmargType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="line" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="pathref" type="xs:IDREF"/>
        <xs:attribute name="value" type="xs:string"/>
        <xs:attribute name="path" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="libType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="src" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="filemode" type="xs:string"/>
        <xs:attribute name="prefix" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="fullpath" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
        <xs:attribute name="dirmode" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="libfilesetType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="urlbase" type="xs:string"/>
        <xs:attribute name="includeimpl">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="includeurl">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="linecontainsType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="contains" type="linecontains_containsType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
    <xs:complexType name="linecontains_containsType">
        <xs:attribute name="value" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="linecontainsregexpType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="regexp" type="regexpType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
    <xs:complexType name="linetokenizerType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="includedelims">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="linkType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="href" type="xs:string"/>
        <xs:attribute name="offline">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="packagelistloc" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="loadfileType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="filterchain" type="filterchainType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="encoding" type="xs:string"/>
        <xs:attribute name="property" type="xs:string"/>
        <xs:attribute name="srcFile" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="loadresourceType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="propertyresource" type="propertyresourceType"/>
            <xs:element name="filterchain" type="filterchainType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="encoding" type="xs:string"/>
        <xs:attribute name="property" type="xs:string"/>
        <xs:attribute name="quiet" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="loadpropertiesType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="filterchain" type="filterchainType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="encoding" type="xs:string"/>
        <xs:attribute name="srcFile" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="locationType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="location" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="macrodefType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="sequential" type="sequentialType"/>
            <xs:element name="element" type="elementType"/>
            <xs:element name="attribute" type="attributeType"/>
            <xs:element name="text" type="textType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="uri" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="mailType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="bcc" type="bccType"/>
            <xs:element name="message" type="messageType"/>
            <xs:element name="replyto" type="replytoType"/>
            <xs:element name="cc" type="ccType"/>
            <xs:element name="to" type="toType"/>
            <xs:element name="from" type="fromType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="cclist" type="xs:string"/>
        <xs:attribute name="messagefile" type="xs:string"/>
        <xs:attribute name="password" type="xs:string"/>
        <xs:attribute name="encoding">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="auto"/>
                    <xs:enumeration value="mime"/>
                    <xs:enumeration value="uu"/>
                    <xs:enumeration value="plain"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="charset" type="xs:string"/>
        <xs:attribute name="files" type="xs:string"/>
        <xs:attribute name="subject" type="xs:string"/>
        <xs:attribute name="message" type="xs:string"/>
        <xs:attribute name="ssl">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="tolist" type="xs:string"/>
        <xs:attribute name="mailport" type="xs:string"/>
        <xs:attribute name="messagemimetype" type="xs:string"/>
        <xs:attribute name="bcclist" type="xs:string"/>
        <xs:attribute name="from" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="replyto" type="xs:string"/>
        <xs:attribute name="mailhost" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="includefilenames">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="user" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="majorityType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="custom" type="customType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="and" type="andType"/>
            <xs:element name="depth" type="depthType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="allowtie">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="manifestType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="attribute" type="attributeType"/>
            <xs:element name="section" type="sectionType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
    <xs:complexType name="mapType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="from" type="xs:string"/>
        <xs:attribute name="to" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="mapperType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="classpath" type="classpathType"/>
            <xs:element name="chainedmapper" type="chainedmapperType"/>
            <xs:element name="filtermapper" type="filtermapperType"/>
            <xs:element name="scriptmapper" type="scriptmapperType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="classpath" type="xs:string"/>
        <xs:attribute name="classpathref" type="xs:IDREF"/>
        <xs:attribute name="type">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="identity"/>
                    <xs:enumeration value="flatten"/>
                    <xs:enumeration value="glob"/>
                    <xs:enumeration value="merge"/>
                    <xs:enumeration value="regexp"/>
                    <xs:enumeration value="package"/>
                    <xs:enumeration value="unpackage"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="classname" type="xs:string"/>
        <xs:attribute name="from" type="xs:string"/>
        <xs:attribute name="to" type="xs:string"/>
        <!-- TODO: define separate globmapper type because it has extra attributes -->
        <!--<xs:attribute name="casesensitive" type="xs:string"/>-->
    </xs:complexType>
    <xs:complexType name="globmapperType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="classpath" type="xs:string"/>
        <xs:attribute name="classpathref" type="xs:IDREF"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="classname" type="xs:string"/>
        <xs:attribute name="from" type="xs:string"/>
        <xs:attribute name="to" type="xs:string"/>
        <xs:attribute name="casesensitive" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="markerType">
        <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
    <xs:complexType name="mauditType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="jvmarg" type="jvmargType"/>
            <xs:element name="classpath" type="classpathType"/>
            <xs:element name="rulespath" type="rulespathType"/>
            <xs:element name="searchpath" type="searchpathType"/>
            <xs:element name="sourcepath" type="sourcepathType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="tofile" type="xs:string"/>
        <xs:attribute name="exit">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="offsets">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="quiet">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="unused">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="verbose">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="maxmemory" type="xs:string"/>
        <xs:attribute name="fix">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="metamatahome" type="xs:string"/>
        <xs:attribute name="list">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="home" type="xs:string"/>
        <xs:attribute name="fullsemanticize">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="mergefilesType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="dirset" type="dirsetType"/>
            <xs:element name="extdirs" type="extdirsType"/>
            <xs:element name="filelist" type="filelistType"/>
            <xs:element name="existing" type="existingType"/>
            <xs:element name="pathelement" type="pathelementType"/>
            <xs:element name="path" type="pathType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="location" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="path" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="messageType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="id" type="xs:ID"/>
                <xs:attribute name="mimetype" type="xs:string"/>
                <xs:attribute name="src" type="xs:string"/>
                <xs:attribute name="charset" type="xs:string"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:complexType name="metainfType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="src" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="filemode" type="xs:string"/>
        <xs:attribute name="prefix" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="fullpath" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
        <xs:attribute name="dirmode" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="methodType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="event" type="xs:string"/>
        <xs:attribute name="action" type="xs:string"/>
        <xs:attribute name="param" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="mimemailType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="bcc" type="bccType"/>
            <xs:element name="message" type="messageType"/>
            <xs:element name="replyto" type="replytoType"/>
            <xs:element name="cc" type="ccType"/>
            <xs:element name="to" type="toType"/>
            <xs:element name="from" type="fromType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="cclist" type="xs:string"/>
        <xs:attribute name="messagefile" type="xs:string"/>
        <xs:attribute name="password" type="xs:string"/>
        <xs:attribute name="encoding">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="auto"/>
                    <xs:enumeration value="mime"/>
                    <xs:enumeration value="uu"/>
                    <xs:enumeration value="plain"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="charset" type="xs:string"/>
        <xs:attribute name="files" type="xs:string"/>
        <xs:attribute name="subject" type="xs:string"/>
        <xs:attribute name="message" type="xs:string"/>
        <xs:attribute name="ssl">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="tolist" type="xs:string"/>
        <xs:attribute name="mailport" type="xs:string"/>
        <xs:attribute name="messagemimetype" type="xs:string"/>
        <xs:attribute name="bcclist" type="xs:string"/>
        <xs:attribute name="from" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="replyto" type="xs:string"/>
        <xs:attribute name="mailhost" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="includefilenames">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="user" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="mkdirType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="modifiedType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="param" type="paramType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="comparator">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="equal"/>
                    <xs:enumeration value="rule"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="seldirs">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="cache">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="propertyfile"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="algorithm">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="hashvalue"/>
                    <xs:enumeration value="digest"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="update">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="moveType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="filterchain" type="filterchainType"/>
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="filterset" type="filtersetType"/>
            <xs:element name="mapper" type="mapperType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="flatten">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="tofile" type="xs:string"/>
        <xs:attribute name="encoding" type="xs:string"/>
        <xs:attribute name="todir" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="verbose">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="includeemptydirs">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="overwrite">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="enablemultiplemappings">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="outputencoding" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="preservelastmodified">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="filtering">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="native2asciiType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="mapper" type="mapperType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="src" type="xs:string"/>
        <xs:attribute name="encoding" type="xs:string"/>
        <xs:attribute name="ext" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="reverse">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="dest" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="noneType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="custom" type="customType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="and" type="andType"/>
            <xs:element name="depth" type="depthType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="notType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="custom" type="customType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="and" type="andType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="filesmatch" type="filesmatchType"/>
            <xs:element name="equals" type="equalsType"/>
            <xs:element name="isset" type="issetType"/>
            <xs:element name="available" type="availableType"/>
            <xs:element name="uptodate" type="uptodateType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="optionsType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="libfileset" type="libfilesetType"/>
            <xs:element name="extension" type="extensionType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="orType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="custom" type="customType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="and" type="andType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="equals" type="equalsType"/>
            <xs:element name="isset" type="issetType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="osType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="version" type="xs:string"/>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="family" type="xs:string"/>
        <xs:attribute name="arch" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="outputpropertyType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="value" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="p4addType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="port" type="xs:string"/>
        <xs:attribute name="client" type="xs:string"/>
        <xs:attribute name="inerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="user" type="xs:string"/>
        <xs:attribute name="changelist" type="xs:string"/>
        <xs:attribute name="cmdopts" type="xs:string"/>
        <xs:attribute name="globalopts" type="xs:string"/>
        <xs:attribute name="view" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="errormessage" type="xs:string"/>
        <xs:attribute name="commandlength" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="p4changeType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="port" type="xs:string"/>
        <xs:attribute name="client" type="xs:string"/>
        <xs:attribute name="inerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="user" type="xs:string"/>
        <xs:attribute name="cmdopts" type="xs:string"/>
        <xs:attribute name="globalopts" type="xs:string"/>
        <xs:attribute name="view" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="errormessage" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="p4counterType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="port" type="xs:string"/>
        <xs:attribute name="client" type="xs:string"/>
        <xs:attribute name="inerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="user" type="xs:string"/>
        <xs:attribute name="cmdopts" type="xs:string"/>
        <xs:attribute name="globalopts" type="xs:string"/>
        <xs:attribute name="view" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="value" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="property" type="xs:string"/>
        <xs:attribute name="errormessage" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="p4deleteType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="port" type="xs:string"/>
        <xs:attribute name="client" type="xs:string"/>
        <xs:attribute name="inerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="user" type="xs:string"/>
        <xs:attribute name="cmdopts" type="xs:string"/>
        <xs:attribute name="globalopts" type="xs:string"/>
        <xs:attribute name="view" type="xs:string"/>
        <xs:attribute name="change" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="errormessage" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="p4editType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="port" type="xs:string"/>
        <xs:attribute name="client" type="xs:string"/>
        <xs:attribute name="inerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="user" type="xs:string"/>
        <xs:attribute name="cmdopts" type="xs:string"/>
        <xs:attribute name="globalopts" type="xs:string"/>
        <xs:attribute name="view" type="xs:string"/>
        <xs:attribute name="change" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="errormessage" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="p4fstatType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="port" type="xs:string"/>
        <xs:attribute name="client" type="xs:string"/>
        <xs:attribute name="inerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="user" type="xs:string"/>
        <xs:attribute name="changelist" type="xs:string"/>
        <xs:attribute name="cmdopts" type="xs:string"/>
        <xs:attribute name="globalopts" type="xs:string"/>
        <xs:attribute name="view" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="errormessage" type="xs:string"/>
        <xs:attribute name="showfilter" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="p4haveType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="port" type="xs:string"/>
        <xs:attribute name="client" type="xs:string"/>
        <xs:attribute name="inerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="user" type="xs:string"/>
        <xs:attribute name="cmdopts" type="xs:string"/>
        <xs:attribute name="globalopts" type="xs:string"/>
        <xs:attribute name="view" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="errormessage" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="p4integrateType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="branch" type="xs:string"/>
        <xs:attribute name="leavetargetrevision">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="errormessage" type="xs:string"/>
        <xs:attribute name="forceintegrate">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="client" type="xs:string"/>
        <xs:attribute name="enablebaselessmerges">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="fromfile" type="xs:string"/>
        <xs:attribute name="reversebranchmappings">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="port" type="xs:string"/>
        <xs:attribute name="change" type="xs:string"/>
        <xs:attribute name="simulationmode">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="propagatesourcefiletype">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="view" type="xs:string"/>
        <xs:attribute name="nocopynewtargetfiles">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="tofile" type="xs:string"/>
        <xs:attribute name="cmdopts" type="xs:string"/>
        <xs:attribute name="globalopts" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="restoredeletedrevisions">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="inerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="user" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="p4labelType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="port" type="xs:string"/>
        <xs:attribute name="client" type="xs:string"/>
        <xs:attribute name="inerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="user" type="xs:string"/>
        <xs:attribute name="cmdopts" type="xs:string"/>
        <xs:attribute name="desc" type="xs:string"/>
        <xs:attribute name="globalopts" type="xs:string"/>
        <xs:attribute name="view" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="errormessage" type="xs:string"/>
        <xs:attribute name="lock" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="p4labelsyncType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="port" type="xs:string"/>
        <xs:attribute name="client" type="xs:string"/>
        <xs:attribute name="inerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="user" type="xs:string"/>
        <xs:attribute name="cmdopts" type="xs:string"/>
        <xs:attribute name="globalopts" type="xs:string"/>
        <xs:attribute name="simulationmode">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="view" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="errormessage" type="xs:string"/>
        <xs:attribute name="delete">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="add">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="p4reopenType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="tochange" type="xs:string"/>
        <xs:attribute name="port" type="xs:string"/>
        <xs:attribute name="client" type="xs:string"/>
        <xs:attribute name="inerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="user" type="xs:string"/>
        <xs:attribute name="cmdopts" type="xs:string"/>
        <xs:attribute name="globalopts" type="xs:string"/>
        <xs:attribute name="view" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="errormessage" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="p4resolveType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="forcetextmode">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="port" type="xs:string"/>
        <xs:attribute name="client" type="xs:string"/>
        <xs:attribute name="inerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="user" type="xs:string"/>
        <xs:attribute name="cmdopts" type="xs:string"/>
        <xs:attribute name="globalopts" type="xs:string"/>
        <xs:attribute name="markersforall">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="simulationmode">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="view" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="errormessage" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="resolvemode" type="xs:string"/>
        <xs:attribute name="redoall">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="p4revertType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="port" type="xs:string"/>
        <xs:attribute name="client" type="xs:string"/>
        <xs:attribute name="inerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="revertonlyunchanged">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="user" type="xs:string"/>
        <xs:attribute name="cmdopts" type="xs:string"/>
        <xs:attribute name="globalopts" type="xs:string"/>
        <xs:attribute name="view" type="xs:string"/>
        <xs:attribute name="change" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="errormessage" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="p4submitType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="port" type="xs:string"/>
        <xs:attribute name="client" type="xs:string"/>
        <xs:attribute name="inerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="user" type="xs:string"/>
        <xs:attribute name="needsresolveproperty" type="xs:string"/>
        <xs:attribute name="changeproperty" type="xs:string"/>
        <xs:attribute name="cmdopts" type="xs:string"/>
        <xs:attribute name="globalopts" type="xs:string"/>
        <xs:attribute name="view" type="xs:string"/>
        <xs:attribute name="change" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="errormessage" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="p4syncType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="force" type="xs:string"/>
        <xs:attribute name="port" type="xs:string"/>
        <xs:attribute name="client" type="xs:string"/>
        <xs:attribute name="inerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="user" type="xs:string"/>
        <xs:attribute name="cmdopts" type="xs:string"/>
        <xs:attribute name="globalopts" type="xs:string"/>
        <xs:attribute name="view" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="label" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="errormessage" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="packageType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="name" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="packagesetType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="parallelType">
        <xs:complexContent>
            <xs:extension base="taskcontainerType">
                <xs:attribute name="id" type="xs:ID"/>
                <xs:attribute name="pollinterval" type="xs:string"/>
                <xs:attribute name="taskname" type="xs:string"/>
                <xs:attribute name="description" type="xs:string"/>
                <xs:attribute name="threadsperprocessor" type="xs:string"/>
                <xs:attribute name="timeout" type="xs:string"/>
                <xs:attribute name="threadcount" type="xs:string"/>
                <xs:attribute name="failonany">
                    <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                            <xs:enumeration value="true"/>
                            <xs:enumeration value="false"/>
                            <xs:enumeration value="on"/>
                            <xs:enumeration value="off"/>
                            <xs:enumeration value="yes"/>
                            <xs:enumeration value="no"/>
                        </xs:restriction>
                    </xs:simpleType>
                </xs:attribute>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="paramType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="type" type="xs:string"/>
        <xs:attribute name="value" type="xs:string"/>
        <xs:attribute name="location" type="xs:string"/>
        <xs:attribute name="expression" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="patchType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="strip" type="xs:string"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="destfile" type="xs:string"/>
        <xs:attribute name="quiet">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="originalfile" type="xs:string"/>
        <xs:attribute name="patchfile" type="xs:string"/>
        <xs:attribute name="reverse">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="backups">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="ignorewhitespace">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="pathType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="dirset" type="dirsetType"/>
            <xs:element name="extdirs" type="extdirsType"/>
            <xs:element name="filelist" type="filelistType"/>
            <xs:element name="existing" type="existingType"/>
            <xs:element name="pathelement" type="pathelementType"/>
            <xs:element name="path" type="pathType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="location" type="xs:string"/>
        <xs:attribute name="refid" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="path" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="pathconvertType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="path" type="pathType"/>
            <xs:element name="map" type="mapType"/>
            <xs:element name="mapper" type="mapperType"/>
            <xs:element name="resources" type="resourcesType"/>
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="dirset" type="dirsetType"/>
            <xs:element name="first" type="firstType"/>
            <xs:element name="globmapper" type="globmapperType"/>
            <xs:element name="chainedmapper" type="chainedmapperType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="pathsep" type="xs:string"/>
        <xs:attribute name="refid" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="dirsep" type="xs:string"/>
        <xs:attribute name="setonempty">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="property" type="xs:string"/>
        <xs:attribute name="targetos" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="pathelementType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="location" type="xs:string"/>
        <xs:attribute name="path" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="patternsetType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="include" type="includeType"/>
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="includesfile" type="includesfileType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="includes" type="xs:string"/>
        <xs:attribute name="refid" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="permissionsType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="grant" type="grantType"/>
            <xs:element name="revoke" type="revokeType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
    <xs:complexType name="prefixlinesType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="prefix" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="presentType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="mapper" type="mapperType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="targetdir" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="present">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="srconly"/>
                    <xs:enumeration value="both"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="presetdefType">
        <xs:complexContent>
            <xs:extension base="taskcontainerType">
                <xs:attribute name="id" type="xs:ID"/>
                <xs:attribute name="taskname" type="xs:string"/>
                <xs:attribute name="name" type="xs:string"/>
                <xs:attribute name="description" type="xs:string"/>
                <xs:attribute name="uri" type="xs:string"/>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:element name="project">
        <xs:complexType>
            <xs:choice minOccurs="0" maxOccurs="unbounded">
                <xs:element name="target" type="targetType"/>
                <xs:element name="propertyfile" type="propertyfileType"/>
                <xs:element name="importtypelib" type="importtypelibType"/>
                <xs:element name="sql" type="sqlType"/>
                <xs:element name="cvspass" type="cvspassType"/>
                <xs:element name="p4reopen" type="p4reopenType"/>
                <xs:element name="csc" type="cscType"/>
                <xs:element name="dirname" type="dirnameType"/>
                <xs:element name="p4label" type="p4labelType"/>
                <xs:element name="p4revert" type="p4revertType"/>
                <xs:element name="replaceregexp" type="replaceregexpType"/>
                <xs:element name="get" type="getType"/>
                <xs:element name="jjtree" type="jjtreeType"/>
                <xs:element name="sleep" type="sleepType"/>
                <xs:element name="jarlib-display" type="jarlib-displayType"/>
                <xs:element name="dependset" type="dependsetType"/>
                <xs:element name="zip" type="zipType"/>
                <xs:element name="patch" type="patchType"/>
                <xs:element name="jspc" type="jspcType"/>
                <xs:element name="style" type="styleType"/>
                <xs:element name="test" type="testType"/>
                <xs:element name="tstamp" type="tstampType"/>
                <xs:element name="unwar" type="unwarType"/>
                <xs:element name="icontract" type="icontractType"/>
                <xs:element name="cvschangelog" type="cvschangelogType"/>
                <xs:element name="p4submit" type="p4submitType"/>
                <xs:element name="p4change" type="p4changeType"/>
                <xs:element name="bzip2" type="bzip2Type"/>
                <xs:element name="sync" type="syncType"/>
                <xs:element name="p4delete" type="p4deleteType"/>
                <xs:element name="javadoc" type="javadocType"/>
                <xs:element name="p4integrate" type="p4integrateType"/>
                <xs:element name="translate" type="translateType"/>
                <xs:element name="signjar" type="signjarType"/>
                <xs:element name="chown" type="chownType"/>
                <xs:element name="vajload" type="vajloadType"/>
                <xs:element name="jarlib-available" type="jarlib-availableType"/>
                <xs:element name="buildnumber" type="buildnumberType"/>
                <xs:element name="jpcovmerge" type="jpcovmergeType"/>
                <xs:element name="war" type="warType"/>
                <xs:element name="rename" type="renameType"/>
                <xs:element name="sequential" type="sequentialType"/>
                <xs:element name="serverdeploy" type="serverdeployType"/>
                <xs:element name="property" type="propertyType"/>
                <xs:element name="subant" type="subantType"/>
                <xs:element name="move" type="moveType"/>
                <xs:element name="ildasm" type="ildasmType"/>
                <xs:element name="copydir" type="copydirType"/>
                <xs:element name="fixcrlf" type="fixcrlfType"/>
                <xs:element name="pathconvert" type="pathconvertType"/>
                <xs:element name="record" type="recordType"/>
                <xs:element name="p4sync" type="p4syncType"/>
                <xs:element name="exec" type="execType"/>
                <xs:element name="ccmklabel" type="ccmklabelType"/>
                <xs:element name="p4edit" type="p4editType"/>
                <xs:element name="manifest" type="manifestType"/>
                <xs:element name="maudit" type="mauditType"/>
                <xs:element name="antlr" type="antlrType"/>
                <xs:element name="jpcovreport" type="jpcovreportType"/>
                <xs:element name="execon" type="execonType"/>
                <xs:element name="ant" type="antType"/>
                <xs:element name="xmlvalidate" type="xmlvalidateType"/>
                <xs:element name="xslt" type="xsltType"/>
                <xs:element name="p4resolve" type="p4resolveType"/>
                <xs:element name="gzip" type="gzipType"/>
                <xs:element name="native2ascii" type="native2asciiType"/>
                <xs:element name="ccrmtype" type="ccrmtypeType"/>
                <xs:element name="ear" type="earType"/>
                <xs:element name="input" type="inputType"/>
                <xs:element name="presetdef" type="presetdefType"/>
                <xs:element name="rmic" type="rmicType"/>
                <xs:element name="checksum" type="checksumType"/>
                <xs:element name="mail" type="mailType"/>
                <xs:element name="loadfile" type="loadfileType"/>
                <xs:element name="mimemail" type="mimemailType"/>
                <xs:element name="gunzip" type="gunzipType"/>
                <xs:element name="concat" type="concatType"/>
                <xs:element name="cab" type="cabType"/>
                <xs:element name="touch" type="touchType"/>
                <xs:element name="parallel" type="parallelType"/>
                <xs:element name="splash" type="splashType"/>
                <xs:element name="antcall" type="antcallType"/>
                <xs:element name="typedef" type="typedefType"/>
                <xs:element name="p4have" type="p4haveType"/>
                <xs:element name="filter" type="filterType"/>
                <xs:element name="xmlproperty" type="xmlpropertyType"/>
                <xs:element name="import" type="importType"/>
                <xs:element name="copy" type="copyType"/>
                <xs:element name="jsharpc" type="jsharpcType"/>
                <xs:element name="symlink" type="symlinkType"/>
                <xs:element name="antstructure" type="antstructureType"/>
                <xs:element name="script" type="scriptType"/>
                <xs:element name="rpm" type="rpmType"/>
                <xs:element name="delete" type="deleteType"/>
                <xs:element name="replace" type="replaceType"/>
                <xs:element name="attrib" type="attribType"/>
                <xs:element name="waitfor" type="waitforType"/>
                <xs:element name="untar" type="untarType"/>
                <xs:element name="loadproperties" type="loadpropertiesType"/>
                <xs:element name="available" type="availableType"/>
                <xs:element name="echoproperties" type="echopropertiesType"/>
                <xs:element name="chgrp" type="chgrpType"/>
                <xs:element name="vajexport" type="vajexportType"/>
                <xs:element name="bunzip2" type="bunzip2Type"/>
                <xs:element name="whichresource" type="whichresourceType"/>
                <xs:element name="copyfile" type="copyfileType"/>
                <xs:element name="p4labelsync" type="p4labelsyncType"/>
                <xs:element name="macrodef" type="macrodefType"/>
                <xs:element name="unjar" type="unjarType"/>
                <xs:element name="vbc" type="vbcType"/>
                <xs:element name="mkdir" type="mkdirType"/>
                <xs:element name="condition" type="conditionType"/>
                <xs:element name="cvs" type="cvsType"/>
                <xs:element name="tempfile" type="tempfileType"/>
                <xs:element name="junit" type="junitType"/>
                <xs:element name="junitreport" type="junitreportType"/>
                <xs:element name="cobertura-instrument" type="cobertura-instrumentType"/>
                <xs:element name="taskdef" type="taskdefType"/>
                <xs:element name="echo" type="echoType"/>
                <xs:element name="java" type="javaType"/>
                <xs:element name="renameext" type="renameextType"/>
                <xs:element name="basename" type="basenameType"/>
                <xs:element name="javadoc2" type="javadoc2Type"/>
                <xs:element name="tar" type="tarType"/>
                <xs:element name="vajimport" type="vajimportType"/>
                <xs:element name="p4fstat" type="p4fstatType"/>
                <xs:element name="setproxy" type="setproxyType"/>
                <xs:element name="p4counter" type="p4counterType"/>
                <xs:element name="ilasm" type="ilasmType"/>
                <xs:element name="apply" type="applyType"/>
                <xs:element name="jarlib-resolve" type="jarlib-resolveType"/>
                <xs:element name="jlink" type="jlinkType"/>
                <xs:element name="cvstagdiff" type="cvstagdiffType"/>
                <xs:element name="javacc" type="javaccType"/>
                <xs:element name="chmod" type="chmodType"/>
                <xs:element name="pvcs" type="pvcsType"/>
                <xs:element name="jarlib-manifest" type="jarlib-manifestType"/>
                <xs:element name="jar" type="jarType"/>
                <xs:element name="ccmklbtype" type="ccmklbtypeType"/>
                <xs:element name="sound" type="soundType"/>
                <xs:element name="scriptdef" type="scriptdefType"/>
                <xs:element name="defaultexcludes" type="defaultexcludesType"/>
                <xs:element name="blgenclient" type="blgenclientType"/>
                <xs:element name="uptodate" type="uptodateType"/>
                <xs:element name="jjdoc" type="jjdocType"/>
                <xs:element name="genkey" type="genkeyType"/>
                <xs:element name="javah" type="javahType"/>
                <xs:element name="ccmreconfigure" type="ccmreconfigureType"/>
                <xs:element name="fail" type="failType"/>
                <xs:element name="unzip" type="unzipType"/>
                <xs:element name="javac" type="javacType"/>
                <xs:element name="p4add" type="p4addType"/>
                <xs:element name="jpcoverage" type="jpcoverageType"/>
                <xs:element name="depend" type="dependType"/>
                <xs:element name="deltree" type="deltreeType"/>
                <xs:element name="ddcreator" type="ddcreatorType"/>
                <xs:element name="patternset" type="patternsetType"/>
                <xs:element name="assertions" type="assertionsType"/>
                <xs:element name="propertyset" type="propertysetType"/>
                <xs:element name="filterset" type="filtersetType"/>
                <xs:element name="libfileset" type="libfilesetType"/>
                <xs:element name="filterreader" type="filterreaderType"/>
                <xs:element name="scriptfilter" type="scriptfilterType"/>
                <xs:element name="concatfilter" type="concatfilterType"/>
                <xs:element name="extension" type="extensionType"/>
                <xs:element name="fileset" type="filesetType"/>
                <xs:element name="dirset" type="dirsetType"/>
                <xs:element name="filelist" type="filelistType"/>
                <xs:element name="filterchain" type="filterchainType"/>
                <xs:element name="path" type="pathType"/>
                <xs:element name="classfileset" type="classfilesetType"/>
                <xs:element name="selector" type="selectorType"/>
                <xs:element name="xmlcatalog" type="xmlcatalogType"/>
                <xs:element name="description" type="descriptionType"/>
                <xs:element name="mapper" type="mapperType"/>
                <xs:element name="zipfileset" type="zipfilesetType"/>
                <xs:element name="substitution" type="substitutionType"/>
                <xs:element name="extensionSet" type="extensionSetType"/>
                <xs:element name="regexp" type="regexpType"/>
                <xs:element name="var" type="varType"/>
                <xs:element name="if" type="ifType"/>
                <xs:element name="retry" type="retryType"/>
            </xs:choice>
            <xs:attribute name="name" type="xs:string"/>
            <xs:attribute name="default" type="xs:string"/>
            <xs:attribute name="basedir" type="xs:string"/>
        </xs:complexType>
    </xs:element>
    <xs:complexType name="propertyType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="classpath" type="classpathType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="url" type="xs:string"/>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="classpath" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="userproperty">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="resource" type="xs:string"/>
        <xs:attribute name="environment" type="xs:string"/>
        <xs:attribute name="prefix" type="xs:string"/>
        <xs:attribute name="classpathref" type="xs:IDREF"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="value" type="xs:string"/>
        <xs:attribute name="location" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="propertyfileType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="entry" type="entryType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="comment" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="propertycopyType">
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="from" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="propertyrefType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="builtin">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="all"/>
                    <xs:enumeration value="system"/>
                    <xs:enumeration value="commandline"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="regex" type="xs:string"/>
        <xs:attribute name="prefix" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="propertysetType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="propertyref" type="propertyrefType"/>
            <xs:element name="propertyset" type="propertysetType"/>
            <xs:element name="mapper" type="mapperType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="negate" type="xs:boolean"/>
        <xs:attribute name="dynamic">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="pvcsType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="pvcsproject" type="pvcsprojectType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="updateonly">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="force" type="xs:string"/>
        <xs:attribute name="config" type="xs:string"/>
        <xs:attribute name="workspace" type="xs:string"/>
        <xs:attribute name="pvcsbin" type="xs:string"/>
        <xs:attribute name="pvcsproject" type="xs:string"/>
        <xs:attribute name="filenameformat" type="xs:string"/>
        <xs:attribute name="userid" type="xs:string"/>
        <xs:attribute name="repository" type="xs:string"/>
        <xs:attribute name="ignorereturncode">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="revision" type="xs:string"/>
        <xs:attribute name="linestart" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="promotiongroup" type="xs:string"/>
        <xs:attribute name="label" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="pvcsprojectType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="name" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="recordType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="append">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="loglevel">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="error"/>
                    <xs:enumeration value="warn"/>
                    <xs:enumeration value="info"/>
                    <xs:enumeration value="verbose"/>
                    <xs:enumeration value="debug"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="emacsmode">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="action">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="start"/>
                    <xs:enumeration value="stop"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="referenceType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="refid" type="xs:string"/>
        <xs:attribute name="torefid" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="regexpType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="pattern" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="renameType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="dest" type="xs:string"/>
        <xs:attribute name="replace" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="src" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="renameextType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="replace">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="toextension" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="fromextension" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="srcdir" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="replaceType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="replacefilter" type="replacefilterType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="replacetoken" type="replacetokenType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="replacevalue" type="replacevalueType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="encoding" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="token" type="xs:string"/>
        <xs:attribute name="propertyfile" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="summary">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="value" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="replacefilterfile" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="replacefilterType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="token" type="xs:string"/>
        <xs:attribute name="value" type="xs:string"/>
        <xs:attribute name="property" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="replaceregexType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="flags" type="xs:string"/>
        <xs:attribute name="byline">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="replace" type="xs:string"/>
        <xs:attribute name="pattern" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="replaceregexpType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="substitution" type="substitutionType"/>
            <xs:element name="regexp" type="regexpType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="flags" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="match" type="xs:string"/>
        <xs:attribute name="byline">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="replace" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="encoding" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="replacestringType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="byline">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="from" type="xs:string"/>
        <xs:attribute name="to" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="replacetokenType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="id" type="xs:ID"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:complexType name="replacetokensType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="token" type="tokenType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="begintoken" type="xs:string"/>
        <xs:attribute name="endtoken" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="replacevalueType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="id" type="xs:ID"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:complexType name="replytoType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="address" type="xs:string"/>
        <xs:attribute name="name" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="reportType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="todir" type="xs:string"/>
        <xs:attribute name="styledir" type="xs:string"/>
        <xs:attribute name="format">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="frames"/>
                    <xs:enumeration value="noframes"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="extension" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="resourceType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="public">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="embed">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="revokeType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="class" type="xs:string"/>
        <xs:attribute name="actions" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="rmicType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="extdirs" type="extdirsType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="classpath" type="classpathType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="compilerarg" type="compilerargType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="verify">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="iiop">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="idlopts" type="xs:string"/>
        <xs:attribute name="extdirs" type="xs:string"/>
        <xs:attribute name="sourcebase" type="xs:string"/>
        <xs:attribute name="classpathref" type="xs:IDREF"/>
        <xs:attribute name="base" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="includeantruntime">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="includejavaruntime">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="classpath" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="debug">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="compiler" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="idl">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="iiopopts" type="xs:string"/>
        <xs:attribute name="classname" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="filtering">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="stubversion" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="rootType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="classname" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="rootfilesetType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="rpmType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="removesource">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="output" type="xs:string"/>
        <xs:attribute name="command" type="xs:string"/>
        <xs:attribute name="cleanbuilddir">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="removespec">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="specfile" type="xs:string"/>
        <xs:attribute name="topdir" type="xs:string"/>
        <xs:attribute name="rpmbuildcommand" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="rulespathType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="dirset" type="dirsetType"/>
            <xs:element name="extdirs" type="extdirsType"/>
            <xs:element name="filelist" type="filelistType"/>
            <xs:element name="existing" type="existingType"/>
            <xs:element name="pathelement" type="pathelementType"/>
            <xs:element name="path" type="pathType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="location" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="path" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="scriptType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="id" type="xs:ID"/>
                <xs:attribute name="taskname" type="xs:string"/>
                <xs:attribute name="description" type="xs:string"/>
                <xs:attribute name="src" type="xs:string"/>
                <xs:attribute name="language" type="xs:string"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:complexType name="scriptdefType" mixed="true">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="classpath" type="classpathType"/>
            <xs:element name="element" type="elementType"/>
            <xs:element name="attribute" type="attributeType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="src" type="xs:string"/>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="uri" type="xs:string"/>
        <xs:attribute name="classpath" type="xs:string"/>
        <xs:attribute name="language" type="xs:string"/>
        <xs:attribute name="classpathref" type="xs:IDREF"/>
        <xs:attribute name="loaderref" type="xs:IDREF"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="reverseloader">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="scriptfilterType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="id" type="xs:ID"/>
                <xs:attribute name="byline">
                    <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                            <xs:enumeration value="true"/>
                            <xs:enumeration value="false"/>
                            <xs:enumeration value="on"/>
                            <xs:enumeration value="off"/>
                            <xs:enumeration value="yes"/>
                            <xs:enumeration value="no"/>
                        </xs:restriction>
                    </xs:simpleType>
                </xs:attribute>
                <xs:attribute name="token" type="xs:string"/>
                <xs:attribute name="src" type="xs:string"/>
                <xs:attribute name="language" type="xs:string"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:complexType name="searchpathType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="dirset" type="dirsetType"/>
            <xs:element name="extdirs" type="extdirsType"/>
            <xs:element name="filelist" type="filelistType"/>
            <xs:element name="existing" type="existingType"/>
            <xs:element name="pathelement" type="pathelementType"/>
            <xs:element name="path" type="pathType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="location" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="path" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="sectionType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="attribute" type="attributeType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="name" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="selectorType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="custom" type="customType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="and" type="andType"/>
            <xs:element name="depth" type="depthType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="unless" type="xs:string"/>
        <xs:attribute name="if" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="timestampselectorType">
        <xs:complexContent>
            <xs:extension base="resourceCollectionContainerType">
                <xs:attribute name="property" type="xs:string"/>
                <xs:attribute name="outputsetid" type="xs:string"/>
                <xs:attribute name="count" type="xs:string"/>
                <xs:attribute name="age" type="xs:string"/>
                <xs:attribute name="pathSep" type="xs:string"/>
                <xs:attribute name="pathref" type="xs:string"/>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="sequentialType">
        <xs:complexContent>
            <xs:extension base="taskcontainerType">
                <xs:attribute name="id" type="xs:ID"/>
                <xs:attribute name="taskname" type="xs:string"/>
                <xs:attribute name="description" type="xs:string"/>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="serverdeployType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="generic" type="genericType"/>
            <xs:element name="jonas" type="jonasType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="action" type="xs:string"/>
        <xs:attribute name="source" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="setproxyType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="nonproxyhosts" type="xs:string"/>
        <xs:attribute name="proxyhost" type="xs:string"/>
        <xs:attribute name="socksproxyhost" type="xs:string"/>
        <xs:attribute name="proxyport" type="xs:string"/>
        <xs:attribute name="socksproxyport" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="proxyuser" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="proxypassword" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="signjarType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="storepass" type="xs:string"/>
        <xs:attribute name="lazy">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="jar" type="xs:string"/>
        <xs:attribute name="verbose">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="keypass" type="xs:string"/>
        <xs:attribute name="maxmemory" type="xs:string"/>
        <xs:attribute name="alias" type="xs:string"/>
        <xs:attribute name="sectionsonly">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="keystore" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="sigfile" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="internalsf">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="storetype" type="xs:string"/>
        <xs:attribute name="signedjar" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="sizeType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="when">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="less"/>
                    <xs:enumeration value="more"/>
                    <xs:enumeration value="equal"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="units">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="K"/>
                    <xs:enumeration value="k"/>
                    <xs:enumeration value="kilo"/>
                    <xs:enumeration value="KILO"/>
                    <xs:enumeration value="Ki"/>
                    <xs:enumeration value="KI"/>
                    <xs:enumeration value="ki"/>
                    <xs:enumeration value="kibi"/>
                    <xs:enumeration value="KIBI"/>
                    <xs:enumeration value="M"/>
                    <xs:enumeration value="m"/>
                    <xs:enumeration value="mega"/>
                    <xs:enumeration value="MEGA"/>
                    <xs:enumeration value="Mi"/>
                    <xs:enumeration value="MI"/>
                    <xs:enumeration value="mi"/>
                    <xs:enumeration value="mebi"/>
                    <xs:enumeration value="MEBI"/>
                    <xs:enumeration value="G"/>
                    <xs:enumeration value="g"/>
                    <xs:enumeration value="giga"/>
                    <xs:enumeration value="GIGA"/>
                    <xs:enumeration value="Gi"/>
                    <xs:enumeration value="GI"/>
                    <xs:enumeration value="gi"/>
                    <xs:enumeration value="gibi"/>
                    <xs:enumeration value="GIBI"/>
                    <xs:enumeration value="T"/>
                    <xs:enumeration value="t"/>
                    <xs:enumeration value="tera"/>
                    <xs:enumeration value="TERA"/>
                    <xs:enumeration value="Ti"/>
                    <xs:enumeration value="TI"/>
                    <xs:enumeration value="ti"/>
                    <xs:enumeration value="tebi"/>
                    <xs:enumeration value="TEBI"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="value" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="sleepType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="hours" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="milliseconds" type="xs:string"/>
        <xs:attribute name="minutes" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="seconds" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="socketType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="port" type="xs:string"/>
        <xs:attribute name="server" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="soundType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fail" type="failsoundType"/>
            <xs:element name="success" type="successType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="sourceType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="file" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="sourcepathType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="dirset" type="dirsetType"/>
            <xs:element name="extdirs" type="extdirsType"/>
            <xs:element name="filelist" type="filelistType"/>
            <xs:element name="existing" type="existingType"/>
            <xs:element name="pathelement" type="pathelementType"/>
            <xs:element name="path" type="pathType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="location" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="path" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="splashType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="port" type="xs:string"/>
        <xs:attribute name="user" type="xs:string"/>
        <xs:attribute name="proxy" type="xs:string"/>
        <xs:attribute name="imageurl" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="password" type="xs:string"/>
        <xs:attribute name="showduration" type="xs:string"/>
        <xs:attribute name="useproxy">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="sqlType" mixed="true">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="classpath" type="classpathType"/>
            <xs:element name="transaction" type="transactionType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="onerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="continue"/>
                    <xs:enumeration value="stop"/>
                    <xs:enumeration value="abort"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="userid" type="xs:string"/>
        <xs:attribute name="password" type="xs:string"/>
        <xs:attribute name="autocommit">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="rdbms" type="xs:string"/>
        <xs:attribute name="print">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="classpathref" type="xs:IDREF"/>
        <xs:attribute name="encoding" type="xs:string"/>
        <xs:attribute name="version" type="xs:string"/>
        <xs:attribute name="url" type="xs:string"/>
        <xs:attribute name="src" type="xs:string"/>
        <xs:attribute name="output" type="xs:string"/>
        <xs:attribute name="driver" type="xs:string"/>
        <xs:attribute name="showheaders">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="classpath" type="xs:string"/>
        <xs:attribute name="delimitertype">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="normal"/>
                    <xs:enumeration value="row"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="escapeprocessing">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="append">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="caching">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="keepformat">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="delimiter" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="srcType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="srcfileType">
        <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
    <xs:complexType name="srcfilelistType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="files" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="srcfilesType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="srcfilesetType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="stringtokenizerType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="suppressdelims">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="includedelims">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="delimsaretokens">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="delims" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="stripjavacommentsType">
        <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
    <xs:complexType name="striplinebreaksType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="linebreaks" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="striplinecommentsType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="comment" type="commentType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
    <xs:complexType name="styleType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="factory" type="factoryType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="param" type="paramType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="classpath" type="classpathType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="xmlcatalog" type="xmlcatalogType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="outputproperty" type="outputpropertyType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="force">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="processor" type="xs:string"/>
        <xs:attribute name="classpathref" type="xs:IDREF"/>
        <xs:attribute name="basedir" type="xs:string"/>
        <xs:attribute name="destdir" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="scanincludeddirectories">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="extension" type="xs:string"/>
        <xs:attribute name="in" type="xs:string"/>
        <xs:attribute name="classpath" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="reloadstylesheet">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="includes" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="out" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="style" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="subantType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="reference" type="referenceType"/>
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="buildpathelement" type="buildpathelementType"/>
            <xs:element name="dirset" type="dirsetType"/>
            <xs:element name="buildpath" type="buildpathType"/>
            <xs:element name="propertyset" type="propertysetType"/>
            <xs:element name="filelist" type="filelistType"/>
            <xs:element name="property" type="propertyType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="genericantfile" type="xs:string"/>
        <xs:attribute name="output" type="xs:string"/>
        <xs:attribute name="inheritall" type="xs:boolean"/>
        <xs:attribute name="inheritrefs">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="antfile" type="xs:string"/>
        <xs:attribute name="buildpathref" type="xs:IDREF"/>
        <xs:attribute name="target" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="buildpath" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="substitutionType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="expression" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="successType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="loops" type="xs:string"/>
        <xs:attribute name="source" type="xs:string"/>
        <xs:attribute name="duration" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="supportType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="symlinkType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="linkfilename" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="overwrite">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="link" type="xs:string"/>
        <xs:attribute name="action" type="xs:string"/>
        <xs:attribute name="resource" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="syncType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="verbose">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="todir" type="xs:string"/>
        <xs:attribute name="overwrite">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="includeemptydirs">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="syspropertyType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="key" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="value" type="xs:string"/>
        <xs:attribute name="path" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="syspropertysetType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="propertyref" type="propertyrefType"/>
            <xs:element name="propertyset" type="propertysetType"/>
            <xs:element name="mapper" type="mapperType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="dynamic">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="tabstospacesType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="tablength" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="tagType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="enabled">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="scope" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="tagletType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="path" type="pathType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="pathref" type="xs:IDREF"/>
        <xs:attribute name="path" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="tailfilterType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="lines" type="xs:string"/>
        <xs:attribute name="skip" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="tarType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="tarfileset" type="tarfilesetType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="tarfile" type="xs:string"/>
        <xs:attribute name="destfile" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="basedir" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="compression">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="none"/>
                    <xs:enumeration value="gzip"/>
                    <xs:enumeration value="bzip2"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="longfile">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="warn"/>
                    <xs:enumeration value="fail"/>
                    <xs:enumeration value="truncate"/>
                    <xs:enumeration value="gnu"/>
                    <xs:enumeration value="omit"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="includes" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="tarfilesetType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="preserveleadingslashes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="username" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="fullpath" type="xs:string"/>
        <xs:attribute name="group" type="xs:string"/>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="mode" type="xs:string"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="prefix" type="xs:string"/>
        <xs:attribute name="dirmode" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="targetType">
        <xs:complexContent>
            <xs:extension base="taskcontainerType">
                <xs:attribute name="id" type="xs:ID"/>
                <xs:attribute name="name" type="xs:string" use="required"/>
                <xs:attribute name="if" type="xs:string"/>
                <xs:attribute name="unless" type="xs:string"/>
                <xs:attribute name="depends" type="xs:string"/>
                <xs:attribute name="description" type="xs:string"/>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="targetfileType">
        <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
    <xs:complexType name="targetfilelistType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="files" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="targetfilesetType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="taskdefType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="classpath" type="classpathType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="uri" type="xs:string"/>
        <xs:attribute name="classpath" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="classname" type="xs:string"/>
        <xs:attribute name="resource" type="xs:string"/>
        <xs:attribute name="adaptto" type="xs:string"/>
        <xs:attribute name="onerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="fail"/>
                    <xs:enumeration value="report"/>
                    <xs:enumeration value="ignore"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="loaderref" type="xs:IDREF"/>
        <xs:attribute name="classpathref" type="xs:IDREF"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="adapter" type="xs:string"/>
        <xs:attribute name="format">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="properties"/>
                    <xs:enumeration value="xml"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="reverseloader">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="tempfileType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="destdir" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="prefix" type="xs:string"/>
        <xs:attribute name="property" type="xs:string"/>
        <xs:attribute name="suffix" type="xs:string"/>
        <xs:attribute name="deleteonexit" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="testType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="classpath" type="classpathType"/>
            <xs:element name="sysproperty" type="syspropertyType"/>
            <xs:element name="bootclasspath" type="bootclasspathType"/>
            <xs:element name="env" type="envType"/>
            <xs:element name="syspropertyset" type="syspropertysetType"/>
            <xs:element name="permissions" type="permissionsType"/>
            <xs:element name="jvmarg" type="jvmargType"/>
            <xs:element name="arg" type="argType"/>
            <xs:element name="assertions" type="assertionsType"/>
            <xs:element name="testlet" type="testletType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="resultproperty" type="xs:string"/>
        <xs:attribute name="jvmargs" type="xs:string"/>
        <xs:attribute name="args" type="xs:string"/>
        <xs:attribute name="fork">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="maxmemory" type="xs:string"/>
        <xs:attribute name="classpathref" type="xs:IDREF"/>
        <xs:attribute name="jar" type="xs:string"/>
        <xs:attribute name="errorproperty" type="xs:string"/>
        <xs:attribute name="forceshowtrace">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="output" type="xs:string"/>
        <xs:attribute name="timeout" type="xs:string"/>
        <xs:attribute name="spawn">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="input" type="xs:string"/>
        <xs:attribute name="jvm" type="xs:string"/>
        <xs:attribute name="inputstring" type="xs:string"/>
        <xs:attribute name="classpath" type="xs:string"/>
        <xs:attribute name="logerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="showsuccess">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="jvmversion" type="xs:string"/>
        <xs:attribute name="outputproperty" type="xs:string"/>
        <xs:attribute name="append">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="showbanner" type="xs:string"/>
        <xs:attribute name="newenvironment">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="classname" type="xs:string"/>
        <xs:attribute name="showtrace">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="testletType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="id" type="xs:ID"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:complexType name="textType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="trim">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="optional">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="titleType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="id" type="xs:ID"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:complexType name="toType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="address" type="xs:string"/>
        <xs:attribute name="name" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="tokenType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="key" type="xs:string"/>
        <xs:attribute name="value" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="tokenfilterType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="containsstring" type="containsstringType"/>
            <xs:element name="linetokenizer" type="linetokenizerType"/>
            <xs:element name="trim" type="trimType"/>
            <xs:element name="stringtokenizer" type="stringtokenizerType"/>
            <xs:element name="replaceregex" type="replaceregexType"/>
            <xs:element name="replacestring" type="replacestringType"/>
            <xs:element name="ignoreblank" type="ignoreblankType"/>
            <xs:element name="deletecharacters" type="deletecharactersType"/>
            <xs:element name="containsregex" type="containsregexType"/>
            <xs:element name="filetokenizer" type="filetokenizerType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="delimoutput" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="touchType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="millis" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="datetime" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="transactionType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="id" type="xs:ID"/>
                <xs:attribute name="src" type="xs:string"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:complexType name="translateType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="bundlecountry" type="xs:string"/>
        <xs:attribute name="bundlelanguage" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="srcencoding" type="xs:string"/>
        <xs:attribute name="bundle" type="xs:string"/>
        <xs:attribute name="bundleencoding" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="destencoding" type="xs:string"/>
        <xs:attribute name="bundlevariant" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="todir" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="endtoken" type="xs:string"/>
        <xs:attribute name="forceoverwrite">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="starttoken" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="triggersType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="method" type="methodType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
    <xs:complexType name="trimType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="byline">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="tstampType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="format" type="formatType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="prefix" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="typeType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="type">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="file"/>
                    <xs:enumeration value="dir"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="typedefType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="classpath" type="classpathType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="uri" type="xs:string"/>
        <xs:attribute name="classpath" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="classname" type="xs:string"/>
        <xs:attribute name="resource" type="xs:string"/>
        <xs:attribute name="adaptto" type="xs:string"/>
        <xs:attribute name="onerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="fail"/>
                    <xs:enumeration value="report"/>
                    <xs:enumeration value="ignore"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="loaderref" type="xs:IDREF"/>
        <xs:attribute name="classpathref" type="xs:IDREF"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="adapter" type="xs:string"/>
        <xs:attribute name="format">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="properties"/>
                    <xs:enumeration value="xml"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="reverseloader">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="unjarType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="patternset" type="patternsetType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="dest" type="xs:string"/>
        <xs:attribute name="overwrite">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="encoding" type="xs:string"/>
        <xs:attribute name="src" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="untarType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="patternset" type="patternsetType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="compression">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="none"/>
                    <xs:enumeration value="gzip"/>
                    <xs:enumeration value="bzip2"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="dest" type="xs:string"/>
        <xs:attribute name="overwrite">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="encoding" type="xs:string"/>
        <xs:attribute name="src" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="unwarType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="patternset" type="patternsetType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="dest" type="xs:string"/>
        <xs:attribute name="overwrite">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="encoding" type="xs:string"/>
        <xs:attribute name="src" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="unzipType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="patternset" type="patternsetType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="dest" type="xs:string"/>
        <xs:attribute name="overwrite">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="encoding" type="xs:string"/>
        <xs:attribute name="src" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="uptodateType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="srcfiles" type="srcfilesType"/>
            <xs:element name="mapper" type="mapperType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="value" type="xs:string"/>
        <xs:attribute name="property" type="xs:string"/>
        <xs:attribute name="targetfile" type="xs:string"/>
        <xs:attribute name="srcfile" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="urlType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="destdir" type="xs:string"/>
        <xs:attribute name="url" type="xs:string"/>
        <xs:attribute name="destfile" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="userType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="userid" type="xs:string"/>
        <xs:attribute name="displayname" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="vajexportType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="include" type="includeType"/>
            <xs:element name="exclude" type="excludeType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="exportclasses">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="haltonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="remote" type="xs:string"/>
        <xs:attribute name="destdir" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="exportresources">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="exportsources">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="overwrite">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="exportdebuginfo">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="vajimportType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="haltonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="remote" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="importsources">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="project" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="importresources">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="importclasses">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="vajloadType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="vajproject" type="vajprojectType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="remote" type="xs:string"/>
        <xs:attribute name="haltonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="vajprojectType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="version" type="xs:string"/>
        <xs:attribute name="name" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="vbcType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="resource" type="resourceType"/>
            <xs:element name="define" type="defineType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="reference" type="referenceType"/>
            <xs:element name="src" type="srcType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="references" type="xs:string"/>
        <xs:attribute name="useresponsefile">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="removeintchecks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="mainclass" type="xs:string"/>
        <xs:attribute name="extraoptions" type="xs:string"/>
        <xs:attribute name="additionalmodules" type="xs:string"/>
        <xs:attribute name="win32icon" type="xs:string"/>
        <xs:attribute name="optionstrict">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="destdir" type="xs:string"/>
        <xs:attribute name="executable" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="utf8output">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="includedefaultreferences">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="optimize">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="targettype">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="exe"/>
                    <xs:enumeration value="library"/>
                    <xs:enumeration value="module"/>
                    <xs:enumeration value="winexe"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="destfile" type="xs:string"/>
        <xs:attribute name="rootnamespace" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="win32res" type="xs:string"/>
        <xs:attribute name="debug">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="optionexplicit">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="includes" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="warnlevel" type="xs:string"/>
        <xs:attribute name="srcdir" type="xs:string"/>
        <xs:attribute name="optioncompare" type="xs:string"/>
        <xs:attribute name="imports" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="referencefiles" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="waitforType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="isfalse" type="isfalseType"/>
            <xs:element name="isreference" type="isreferenceType"/>
            <xs:element name="equals" type="equalsType"/>
            <xs:element name="available" type="availableType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="os" type="osType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="and" type="andType"/>
            <xs:element name="filesmatch" type="filesmatchType"/>
            <xs:element name="checksum" type="checksumType"/>
            <xs:element name="istrue" type="istrueType"/>
            <xs:element name="isset" type="issetType"/>
            <xs:element name="socket" type="socketType"/>
            <xs:element name="http" type="httpType"/>
            <xs:element name="uptodate" type="uptodateType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="checkeveryunit">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="millisecond"/>
                    <xs:enumeration value="second"/>
                    <xs:enumeration value="minute"/>
                    <xs:enumeration value="hour"/>
                    <xs:enumeration value="day"/>
                    <xs:enumeration value="week"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="checkevery" type="xs:string"/>
        <xs:attribute name="maxwaitunit">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="millisecond"/>
                    <xs:enumeration value="second"/>
                    <xs:enumeration value="minute"/>
                    <xs:enumeration value="hour"/>
                    <xs:enumeration value="day"/>
                    <xs:enumeration value="week"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="maxwait" type="xs:string"/>
        <xs:attribute name="timeoutproperty" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="warType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="manifest" type="manifestType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="metainf" type="metainfType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="lib" type="libType"/>
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="zipgroupfileset" type="zipgroupfilesetType"/>
            <xs:element name="zipfileset" type="zipfilesetType"/>
            <xs:element name="classes" type="classesType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="webinf" type="webinfType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="keepcompression">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="whenempty">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="fail"/>
                    <xs:enumeration value="skip"/>
                    <xs:enumeration value="create"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="duplicate">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="add"/>
                    <xs:enumeration value="preserve"/>
                    <xs:enumeration value="fail"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="basedir" type="xs:string"/>
        <xs:attribute name="encoding" type="xs:string"/>
        <xs:attribute name="manifest" type="xs:string"/>
        <xs:attribute name="jarfile" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="index">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="update">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="destfile" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="includes" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="webxml" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="compress">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="manifestencoding" type="xs:string"/>
        <xs:attribute name="filesonly">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="warfile" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="filesetmanifest">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="skip"/>
                    <xs:enumeration value="merge"/>
                    <xs:enumeration value="mergewithoutmain"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="zipfile" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="wasclasspathType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="dirset" type="dirsetType"/>
            <xs:element name="extdirs" type="extdirsType"/>
            <xs:element name="filelist" type="filelistType"/>
            <xs:element name="existing" type="existingType"/>
            <xs:element name="pathelement" type="pathelementType"/>
            <xs:element name="path" type="pathType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="location" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="path" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="webappType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="basedir" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="webinfType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="src" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="filemode" type="xs:string"/>
        <xs:attribute name="prefix" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="fullpath" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
        <xs:attribute name="dirmode" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="whichresourceType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="classpath" type="classpathType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="classpath" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="resource" type="xs:string"/>
        <xs:attribute name="class" type="xs:string"/>
        <xs:attribute name="property" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="wlclasspathType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="dirset" type="dirsetType"/>
            <xs:element name="extdirs" type="extdirsType"/>
            <xs:element name="filelist" type="filelistType"/>
            <xs:element name="existing" type="existingType"/>
            <xs:element name="pathelement" type="pathelementType"/>
            <xs:element name="path" type="pathType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="location" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="path" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="xmlcatalogType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="entity" type="entityType"/>
            <xs:element name="classpath" type="classpathType"/>
            <xs:element name="catalogpath" type="catalogpathType"/>
            <xs:element name="dtd" type="dtdType"/>
            <xs:element name="xmlcatalog" type="xmlcatalogType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="catalogpathref" type="xs:IDREF"/>
        <xs:attribute name="classpath" type="xs:string"/>
        <xs:attribute name="classpathref" type="xs:IDREF"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="xmlpropertyType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="semanticattributes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="keeproot">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="prefix" type="xs:string"/>
        <xs:attribute name="collapseattributes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="validate">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="rootdirectory" type="xs:string"/>
        <xs:attribute name="includesemanticattribute">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="xmlvalidateType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="classpath" type="classpathType"/>
            <xs:element name="attribute" type="attributeType"/>
            <xs:element name="dtd" type="dtdType"/>
            <xs:element name="xmlcatalog" type="xmlcatalogType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="classpath" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="classname" type="xs:string"/>
        <xs:attribute name="lenient">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="warn">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="classpathref" type="xs:IDREF"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="xsltType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="factory" type="factoryType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="param" type="paramType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="classpath" type="classpathType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="xmlcatalog" type="xmlcatalogType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="outputproperty" type="outputpropertyType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
            <xs:element name="mapper" type="mapperType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="force">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="processor" type="xs:string"/>
        <xs:attribute name="classpathref" type="xs:IDREF"/>
        <xs:attribute name="basedir" type="xs:string"/>
        <xs:attribute name="destdir" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="scanincludeddirectories">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="extension" type="xs:string"/>
        <xs:attribute name="in" type="xs:string"/>
        <xs:attribute name="classpath" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="reloadstylesheet">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="includes" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="out" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="style" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="zipType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="zipgroupfileset" type="zipgroupfilesetType"/>
            <xs:element name="zipfileset" type="zipfilesetType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="whenempty">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="fail"/>
                    <xs:enumeration value="skip"/>
                    <xs:enumeration value="create"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="keepcompression">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="duplicate">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="add"/>
                    <xs:enumeration value="preserve"/>
                    <xs:enumeration value="fail"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="basedir" type="xs:string"/>
        <xs:attribute name="encoding" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="update">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="destfile" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="includes" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="compress">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="filesonly">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="zipfile" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="zipfilesetType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="src" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="filemode" type="xs:string"/>
        <xs:attribute name="prefix" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="fullpath" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
        <xs:attribute name="dirmode" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="zipgroupfilesetType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="doxygenType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="property">
                <xs:complexType>
                    <xs:choice minOccurs="0" maxOccurs="unbounded">
                        <xs:element name="fileset" type="filesetType"/>
                    </xs:choice>
                    <xs:attribute name="name" type="xs:string" use="required"/>
                    <xs:attribute name="value" type="xs:string" use="optional"/>
                </xs:complexType>
            </xs:element>
        </xs:choice>
        <xs:attribute name="versionCompatible" type="xs:string"/>
        <xs:attribute name="doxygenPath" type="xs:string"/>
        <xs:attribute name="configFilename" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="foreachType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="path" type="pathType"/>
            <xs:element name="param" type="paramType"/>
        </xs:choice>
        <xs:attribute name="list" type="xs:string"/>
        <xs:attribute name="target" type="xs:string" use="required"/>
        <xs:attribute name="param" type="xs:string"/>
        <xs:attribute name="delimiter" type="xs:string"/>
        <xs:attribute name="inheritall" type="xs:string"/>
        <xs:attribute name="inheritrefs" type="xs:string"/>
        <xs:attribute name="parallel" type="xs:string"/>
        <xs:attribute name="maxThreads" type="xs:string"/>
        <xs:attribute name="trim" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="varType">
        <xs:choice minOccurs="0" maxOccurs="unbounded"/>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="value" type="xs:string"/>
        <xs:attribute name="unset" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="ifType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="isfalse" type="isfalseType"/>
            <xs:element name="isreference" type="isreferenceType"/>
            <xs:element name="equals" type="equalsType"/>
            <xs:element name="available" type="availableType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="os" type="osType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="and" type="andType"/>
            <xs:element name="filesmatch" type="filesmatchType"/>
            <xs:element name="checksum" type="checksumType"/>
            <xs:element name="istrue" type="istrueType"/>
            <xs:element name="isset" type="issetType"/>
            <xs:element name="socket" type="socketType"/>
            <xs:element name="http" type="httpType"/>
            <xs:element name="uptodate" type="uptodateType"/>
            <xs:element name="then" type="thenType"/>
            <xs:element name="elseif" type="elseifType"/>
            <xs:element name="else" type="elseType"/>
            <xs:element name="resourcecount" type="resourcecountType"/>
        </xs:choice>
    </xs:complexType>
    <xs:complexType name="propertyregexType">
        <xs:attribute name="property" type="xs:string" use="required"/>
        <xs:attribute name="override" type="xs:boolean"/>
        <xs:attribute name="input" type="xs:string" use="required"/>
        <xs:attribute name="regexp" type="xs:string"/>
        <xs:attribute name="select" type="xs:string"/>
        <xs:attribute name="replace" type="xs:string"/>
        <xs:attribute name="casesensitive" type="xs:string"/>
        <xs:attribute name="global" type="xs:boolean"/>
        <xs:attribute name="defaultValue" type="xs:string" use="optional"/>
    </xs:complexType>
    <xs:complexType name="thenType">
        <xs:complexContent>
            <xs:extension base="taskcontainerType"/>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="elseifType">
        <xs:complexContent>
            <xs:extension base="taskcontainerType"/>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="elseType">
        <xs:complexContent>
            <xs:extension base="taskcontainerType"/>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="mergelogsType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="log" type="logType"/>
            <xs:element name="fileset" type="filesetType"/>
        </xs:choice>
        <xs:attribute name="destfile" type="xs:string" use="required"/>
        <xs:attribute name="stdout" type="xs:string" use="optional"/>
    </xs:complexType>
    <xs:complexType name="logType">
        <xs:attribute name="file" type="xs:string" use="required"/>
        <xs:attribute name="tool" type="xs:string" use="required"/>
        <xs:attribute name="regex" type="xs:string" use="required"/>
    </xs:complexType>
    <xs:complexType name="reviewplanType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
        </xs:choice>
        <xs:attribute name="destdir" type="xs:string" use="required"/>
        <xs:attribute name="component" type="xs:string" use="required"/>
    </xs:complexType>
    <xs:complexType name="processreviewplanType">
        <xs:attribute name="in" type="xs:string" use="required"/>
    </xs:complexType>
    <xs:complexType name="convertreviewlogType">
        <xs:attribute name="input" type="xs:string" use="required"/>
        <xs:attribute name="template" type="xs:string" use="required"/>
        <xs:attribute name="review" type="xs:string" use="required"/>
    </xs:complexType>
    <xs:complexType name="lintType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="option">
                <xs:complexType>
                    <xs:choice minOccurs="0" maxOccurs="unbounded">
                        <xs:element name="fileset" type="filesetType"/>
                        <xs:element name="dirset" type="dirsetType"/>
                    </xs:choice>
                    <xs:attribute name="type" type="xs:string" use="optional"/>
                    <xs:attribute name="value" type="xs:string" use="optional"/>
                </xs:complexType>
            </xs:element>
            <xs:element name="fileset" type="filesetType"/>
        </xs:choice>
        <xs:attribute name="output" type="xs:string" use="required"/>
        <xs:attribute name="lintPath" type="xs:string" use="optional"/>
    </xs:complexType>
    <xs:complexType name="customcopyType">
        <xs:complexContent>
            <xs:extension base="copyType">
                <xs:attribute name="preservereadonly">
                    <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                            <xs:enumeration value="true"/>
                            <xs:enumeration value="false"/>
                            <xs:enumeration value="on"/>
                            <xs:enumeration value="off"/>
                            <xs:enumeration value="yes"/>
                            <xs:enumeration value="no"/>
                        </xs:restriction>
                    </xs:simpleType>
                </xs:attribute>
                <xs:attribute name="checkcontents">
                    <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                            <xs:enumeration value="true"/>
                            <xs:enumeration value="false"/>
                            <xs:enumeration value="on"/>
                            <xs:enumeration value="off"/>
                            <xs:enumeration value="yes"/>
                            <xs:enumeration value="no"/>
                        </xs:restriction>
                    </xs:simpleType>
                </xs:attribute>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="fopType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
        </xs:choice>
        <xs:attribute name="messagelevel" type="xs:string"/>
        <xs:attribute name="userconfig" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="xmltaskType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="cut" type="cutXmlType"/>
            <xs:element name="copy" type="copyXmlType"/>
            <xs:element name="insert" type="insertXmlType"/>
            <xs:element name="rename" type="renameXmlType"/>
            <xs:element name="remove" type="removeXmlType"/>
            <xs:element name="attr" type="attrXmlType"/>
            <xs:element name="xmlcatalog" type="xmlcatalogType"/>
        </xs:choice>
        <xs:attribute name="source" type="xs:string"/>
        <xs:attribute name="sourcebuffer" type="xs:string"/>
        <xs:attribute name="dest" type="xs:string"/>
        <xs:attribute name="todir" type="xs:string"/>
        <xs:attribute name="report" type="xs:string"/>
        <xs:attribute name="public" type="xs:string"/>
        <xs:attribute name="system" type="xs:string"/>
        <xs:attribute name="preservetype" type="xs:string"/>
        <xs:attribute name="failWithoutMatch" type="xs:string"/>
        <xs:attribute name="indent" type="xs:string"/>
        <xs:attribute name="encoding" type="xs:string"/>
        <xs:attribute name="outputter" type="xs:string"/>
        <xs:attribute name="omitHeader" type="xs:string"/>
        <xs:attribute name="standalone" type="xs:string"/>
        <xs:attribute name="clearBuffers" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="cutXmlType">
        <xs:attribute name="path" type="xs:string"/>
        <xs:attribute name="buffer" type="xs:string"/>
        <xs:attribute name="property" type="xs:string"/>
        <xs:attribute name="append" type="xs:string"/>
        <xs:attribute name="attrValue" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="copyXmlType">
        <xs:attribute name="path" type="xs:string"/>
        <xs:attribute name="buffer" type="xs:string"/>
        <xs:attribute name="property" type="xs:string"/>
        <xs:attribute name="append" type="xs:string"/>
        <xs:attribute name="attrValue" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="insertXmlType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="path" type="xs:string" use="required"/>
                <xs:attribute name="buffer" type="xs:string" use="optional"/>
                <xs:attribute name="file" type="xs:string" use="optional"/>
                <xs:attribute name="xml" type="xs:string" use="optional"/>
                <xs:attribute name="position" type="xs:string" use="optional"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:complexType name="renameXmlType">
        <xs:attribute name="path" type="xs:string"/>
        <xs:attribute name="to" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="removeXmlType">
        <xs:attribute name="path" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="attrXmlType">
        <xs:attribute name="path" type="xs:string" use="required"/>
        <xs:attribute name="attr" type="xs:string" use="required"/>
        <xs:attribute name="value" type="xs:string" use="optional"/>
        <xs:attribute name="remove" type="xs:boolean" use="optional"/>
    </xs:complexType>
    <xs:complexType name="ftpType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
        </xs:choice>
        <xs:attribute name="server" type="xs:string"/>
        <xs:attribute name="userid" type="xs:string"/>
        <xs:attribute name="password" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="getsizeType">
        <xs:choice maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
        </xs:choice>
        <xs:attribute name="output" type="xs:string" use="required"/>
    </xs:complexType>
    <xs:complexType name="abldType">
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="output" type="xs:string" use="optional"/>
        <xs:attribute name="test" type="xs:boolean" use="optional"/>
        <xs:attribute name="command" use="required">
            <xs:simpleType>
                <xs:restriction base="xs:token">
                    <xs:enumeration value="build"/>
                    <xs:enumeration value="clean"/>
                    <xs:enumeration value="cleanall"/>
                    <xs:enumeration value="cleanexport"/>
                    <xs:enumeration value="export"/>
                    <xs:enumeration value="final"/>
                    <xs:enumeration value="freeze"/>
                    <xs:enumeration value="help"/>
                    <xs:enumeration value="library"/>
                    <xs:enumeration value="listing"/>
                    <xs:enumeration value="makefile"/>
                    <xs:enumeration value="reallyclean"/>
                    <xs:enumeration value="resource"/>
                    <xs:enumeration value="target"/>
                    <xs:enumeration value="tidy"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="platform" use="optional">
            <xs:simpleType>
                <xs:restriction base="xs:string">
                    <xs:enumeration value="wins"/>
                    <xs:enumeration value="winscw"/>
                    <xs:enumeration value="gccxml"/>
                    <xs:enumeration value="thumb"/>
                    <xs:enumeration value="arm4at"/>
                    <xs:enumeration value="vc6"/>
                    <xs:enumeration value="cw_ide"/>
                    <xs:enumeration value="armv5"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="variant" use="optional">
            <xs:simpleType>
                <xs:restriction base="xs:string">
                    <xs:enumeration value="udeb"/>
                    <xs:enumeration value="urel"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="grandType">
        <xs:attribute name="buildfile" type="xs:string"/>
        <xs:attribute name="output" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="svnType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="update" type="updateSvnType"/>
            <xs:element name="status" type="statusSvnType"/>
        </xs:choice>
        <xs:attribute name="username" type="xs:string"/>
        <xs:attribute name="password" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="updateSvnType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
        </xs:choice>
        <xs:attribute name="file" type="xs:string" use="optional"/>
        <xs:attribute name="dir" type="xs:string" use="optional"/>
        <xs:attribute name="recurse" type="xs:string" use="optional"/>
        <xs:attribute name="revision" type="xs:string" use="optional"/>
    </xs:complexType>
    <xs:complexType name="statusSvnType">
        <xs:attribute name="path" type="xs:string"/>
        <xs:attribute name="textStatusProperty" type="xs:string" use="optional"/>
        <xs:attribute name="propStatusProperty" type="xs:string" use="optional"/>
        <xs:attribute name="revisionProperty" type="xs:string" use="optional"/>
        <xs:attribute name="lastChangedRevisionProperty" type="xs:string" use="optional"/>
        <xs:attribute name="lastCommitAuthorProperty" type="xs:string" use="optional"/>
    </xs:complexType>
    <xs:complexType name="antunitType">
        <xs:choice maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="plainlistener" type="plainlistenerType"/>
        </xs:choice>
    </xs:complexType>
    <xs:complexType name="plainlistenerType"/>
    <xs:complexType name="schemavalidateType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="schema" type="schemaType"/>
        </xs:choice>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="noNamespaceFile" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="pythonType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="outputproperty" type="xs:string"/>
                <xs:attribute name="resultproperty" type="xs:string"/>
                <xs:attribute name="failonerror" type="xs:string"/>
                <xs:attribute name="script" type="xs:string"/>
                <xs:attribute name="dir" type="xs:string"/>
                <xs:attribute name="output" type="xs:string"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:complexType name="forType">
        <xs:choice maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="dirset" type="dirsetType"/>
            <xs:element name="path" type="pathType"/>
            <xs:element name="resources" type="resourcesType"/>
            <xs:element name="sequential" type="sequentialType"/>
        </xs:choice>
        <xs:attribute name="list" type="xs:string"/>
        <xs:attribute name="param" type="xs:string"/>
        <xs:attribute name="delimiter" type="xs:string"/>
        <xs:attribute name="parallel" type="xs:string"/>
        <xs:attribute name="keepgoing" type="xs:string"/>
        <xs:attribute name="threadCount" type="xs:string"/>
        <xs:attribute name="trim" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="chainedmapperType">
        <xs:choice maxOccurs="unbounded">
            <xs:element name="mapper" type="mapperType"/>
            <xs:element name="flattenmapper" type="flattenmapperType"/>
            <xs:element name="globmapper" type="globmapperType"/>
        </xs:choice>
    </xs:complexType>
    <xs:complexType name="flattenmapperType"/>
    <xs:complexType name="antformType">
        <xs:choice maxOccurs="unbounded">
            <xs:element name="label" type="xs:string"/>
            <xs:element name="separator"/>
            <xs:element name="tab">
                <xs:complexType>
                    <xs:attribute name="label" type="xs:string"/>
                </xs:complexType>
            </xs:element>
            <xs:element name="fileSelectionProperty">
                <xs:complexType>
                    <xs:attribute name="if" type="xs:string"/>
                    <xs:attribute name="unless" type="xs:string"/>
                    <xs:attribute name="label" type="xs:string"/>
                    <xs:attribute name="property" type="xs:string"/>
                    <xs:attribute name="directoryChooser" type="xs:string"/>
                    <xs:attribute name="required" type="xs:boolean"/>
                    <xs:attribute name="tooltip" type="xs:string"/>
                    <xs:attribute name="focus" type="xs:boolean"/>
                </xs:complexType>
            </xs:element>
            <xs:element name="selectionProperty">
                <xs:complexType>
                    <xs:attribute name="if" type="xs:string"/>
                    <xs:attribute name="unless" type="xs:string"/>
                    <xs:attribute name="label" type="xs:string"/>
                    <xs:attribute name="property" type="xs:string"/>
                    <xs:attribute name="values" type="xs:string"/>
                    <xs:attribute name="tooltip" type="xs:string"/>
                    <xs:attribute name="separator" type="xs:string"/>
                    <xs:attribute name="focus" type="xs:boolean"/>
                </xs:complexType>
            </xs:element>
            <xs:element name="textProperty">
                <xs:complexType>
                    <xs:attribute name="if" type="xs:string"/>
                    <xs:attribute name="unless" type="xs:string"/>
                    <xs:attribute name="label" type="xs:string"/>
                    <xs:attribute name="property" type="xs:string"/>
                    <xs:attribute name="required" type="xs:boolean"/>
                    <xs:attribute name="tooltip" type="xs:string"/>
                    <xs:attribute name="password" type="xs:string"/>
                    <xs:attribute name="focus" type="xs:boolean"/>
                </xs:complexType>
            </xs:element>
        </xs:choice>
        <xs:attribute name="title" type="xs:string"/>
        <xs:attribute name="image" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="mathType">
        <xs:attribute name="result" type="xs:string"/>
        <xs:attribute name="datatype" type="xs:string"/>
        <xs:attribute name="strict" type="xs:boolean"/>
        <xs:attribute name="operation" type="xs:string"/>
        <xs:attribute name="operand1" type="xs:string"/>
        <xs:attribute name="operand2" type="xs:string"/>
        <!-- TODO: define nested elements -->
    </xs:complexType>
    <xs:complexType name="antserverType">
        <xs:attribute name="port" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="shellscriptType" mixed="true">
        <xs:choice maxOccurs="unbounded">
            <xs:element name="arg">
                <xs:complexType>
                    <xs:attribute name="value" type="xs:string"/>
                </xs:complexType>
            </xs:element>
        </xs:choice>
        <xs:attribute name="shell" type="xs:string"/>
        <xs:attribute name="tmpsuffix" type="xs:string"/>
        <xs:attribute name="dir" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="runtargetType">
        <xs:attribute name="target" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="echoxmlType">
        <xs:choice maxOccurs="unbounded">
            <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
        </xs:choice>
        <xs:attribute name="file" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="trycatchType">
        <xs:sequence>
            <xs:element name="try">
                <xs:complexType>
                    <xs:complexContent>
                        <xs:extension base="taskcontainerType"/>
                    </xs:complexContent>
                </xs:complexType>
            </xs:element>
            <xs:element name="catch">
                <xs:complexType>
                    <xs:complexContent>
                        <xs:extension base="taskcontainerType"/>
                    </xs:complexContent>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
        <xs:attribute name="property" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="resourcecountType">
        <xs:choice maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="dirset" type="dirsetType"/>
        </xs:choice>
        <xs:attribute name="property" type="xs:string"/>
        <xs:attribute name="when" type="xs:string"/>
        <xs:attribute name="count" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="remoteantType">
        <xs:choice maxOccurs="unbounded">
            <xs:element name="runtarget" type="runtargetType"/>
        </xs:choice>
        <xs:attribute name="machine" type="xs:string"/>
        <xs:attribute name="port" type="xs:string"/>
        <xs:attribute name="persistent" type="xs:string"/>
        <xs:attribute name="failonerror" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="propertyresourceType">
        <xs:attribute name="name" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="firstType">
        <xs:complexContent>
            <xs:extension base="resourceCollectionContainerType">
                <xs:attribute name="count" type="xs:string"/>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="sortType">
        <xs:choice maxOccurs="unbounded">
            <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
        </xs:choice>
    </xs:complexType>
    <xs:complexType name="schemaType">
        <xs:attribute name="namespace" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="retryType">
        <xs:complexContent>
            <xs:extension base="taskcontainerType">
                <xs:attribute name="sleepTime" type="xs:string"/>
                <xs:attribute name="retryCount" type="xs:string"/>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="antcallbackType">
        <xs:complexContent>
            <xs:extension base="antcallType">
                <xs:attribute name="return" type="xs:string"/>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="diagnosticsType"/>
    <xs:complexType name="sshexecType">
        <xs:attribute name="host" type="xs:string"/>
        <xs:attribute name="username" type="xs:string"/>
        <xs:attribute name="password" type="xs:string"/>
        <xs:attribute name="trust" type="xs:string"/>
        <xs:attribute name="command" type="xs:string"/>
        <xs:attribute name="failonerror" type="xs:boolean"/>
    </xs:complexType>
    <xs:complexType name="scpType">
        <xs:choice maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
        </xs:choice>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="localFile" type="xs:string"/>
        <xs:attribute name="remoteFile" type="xs:string"/>
        <xs:attribute name="todir" type="xs:string"/>
        <xs:attribute name="localTodir" type="xs:string"/>
        <xs:attribute name="localTofile" type="xs:string"/>
        <xs:attribute name="remoteTodir" type="xs:string"/>
        <xs:attribute name="remoteTofile" type="xs:string"/>
        <xs:attribute name="port" type="xs:string"/>
        <xs:attribute name="trust" type="xs:string"/>
        <xs:attribute name="knownhosts" type="xs:string"/>
        <xs:attribute name="failonerror" type="xs:string"/>
        <xs:attribute name="password" type="xs:string"/>
        <xs:attribute name="keyfile" type="xs:string"/>
        <xs:attribute name="passphrase" type="xs:string"/>
        <xs:attribute name="verbose" type="xs:string"/>
        <xs:attribute name="sftp" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="xcluderType">
        <xs:attribute name="in" type="xs:string"/>
        <xs:attribute name="out" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="assertTrueType">
        <xs:complexContent>
            <xs:extension base="taskcontainerType">
                <xs:attribute name="message" type="xs:string"/>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="assertFileExistsType">
        <xs:complexContent>
            <xs:extension base="taskcontainerType">
                <xs:attribute name="file" type="xs:string"/>
                <xs:attribute name="message" type="xs:string"/>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="fmppType">
        <xs:choice maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="data">
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="xs:string">
                            <xs:attribute name="expandProperties" type="xs:string"/>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
        </xs:choice>
        <xs:attribute name="sourceFile" type="xs:string"/>
        <xs:attribute name="outputFile" type="xs:string"/>
        <xs:attribute name="sourceRoot" type="xs:string"/>
        <xs:attribute name="outputRoot" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="replaceExtension" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="databaseType">
        <xs:attribute name="output" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="logextractType">
        <xs:complexContent>
            <xs:extension base="resourceCollectionContainerType">
                <xs:attribute name="file" type="xs:string"/>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="signalType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
        </xs:choice>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="result" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="dependenciesType">
        <xs:attribute name="format" type="xs:string"/>
    </xs:complexType>
    <!-- Presets -->
    <xs:complexType name="preset.mailType">
        <xs:complexContent>
            <xs:extension base="mailType"/>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="preset.execType">
        <xs:complexContent>
            <xs:extension base="execType"/>
        </xs:complexContent>
    </xs:complexType>
    <!-- Macros -->
    <xs:complexType name="macro.compile.htmlscanlogType">
        <xs:attribute name="input" type="xs:string"/>
        <xs:attribute name="output" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="macro.cmakerType">
        <xs:attribute name="ncp" type="xs:string"/>
        <xs:attribute name="s60" type="xs:string"/>
        <xs:attribute name="action" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="macro.compile.genxmlType">
        <xs:attribute name="input" type="xs:string"/>
        <xs:attribute name="output" type="xs:string"/>
        <xs:attribute name="configuration" type="xs:string"/>
        <xs:attribute name="log" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="macro.compile.ebsType">
        <xs:attribute name="input" type="xs:string"/>
        <xs:attribute name="log" type="xs:string"/>
        <xs:attribute name="threads" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="macro.build.ebs.xmlType">
        <xs:attribute name="input" type="xs:string"/>
        <xs:attribute name="logname" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="macro.log.htmlType">
        <xs:attribute name="input" type="xs:string"/>
        <xs:attribute name="output" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="macro.bldmake-bldfilesType">
        <xs:attribute name="dir" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="macro.abldType">
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="command" type="xs:string"/>
        <xs:attribute name="platform" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="macro.filtered-record-startType"/>
    <xs:complexType name="macro.filtered-record-stopType">
        <xs:attribute name="pattern" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="macro.update-statusType"/>
    <xs:complexType name="macro.create-cshelp-bldinfType">
        <xs:attribute name="delivery" type="xs:string"/>
        <xs:attribute name="product" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="createDeltaZipMacroType">
        <xs:attribute name="variant" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="macro.rombuild-imakerType">
        <xs:attribute name="product" type="xs:string"/>
        <xs:attribute name="target" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="macro.imakerType">
        <xs:attribute name="product" type="xs:string"/>
        <xs:attribute name="target" type="xs:string"/>
        <xs:attribute name="makefile" type="xs:string"/>
        <xs:attribute name="cmd" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="macro.ccm-availableType">
        <xs:attribute name="resultproperty" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="macro.publishType"/>
    <xs:complexType name="macro.rom-buildType">
        <xs:attribute name="stage" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="macro.disk-spaceType">
        <xs:attribute name="drive" type="xs:string"/>
        <xs:attribute name="space" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="macro.notifyType">
        <xs:attribute name="message" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="macro.netrc-passwordType">
        <xs:attribute name="output-prop" type="xs:string"/>
        <xs:attribute name="result-prop" type="xs:string"/>
        <xs:attribute name="type" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="macro.netrc-usernameType">
        <xs:attribute name="output-prop" type="xs:string"/>
        <xs:attribute name="result-prop" type="xs:string"/>
        <xs:attribute name="type" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="macro.compile.genxml-mergeType">
        <xs:attribute name="input" type="xs:string"/>
        <xs:attribute name="output" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="macro.declare.idType">
        <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
    <xs:complexType name="macro.mail-target-completedType">
        <xs:attribute name="section" type="xs:string"/>
        <xs:attribute name="sms" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="zipContentMacroType">
        <xs:attribute name="type" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="macro.delete-fota-confType">
        <xs:attribute name="product" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="macro.rombuild.valueType">
        <xs:attribute name="product.name" type="xs:string"/>
        <xs:attribute name="outputproperty" type="xs:string"/>
        <xs:attribute name="rombuild.value" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="hlm-assertType">
        <xs:complexContent>
            <xs:extension base="taskcontainerType">
                <xs:attribute name="message" type="xs:string"/>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="hlm-assertFileExistsType">
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="message" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="reference-to-fileType">
        <xs:attribute name="refid" type="xs:string"/>
        <xs:attribute name="output" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="macro.xml.to.fmtlType">
        <xs:attribute name="input" type="xs:string"/>
        <xs:attribute name="xmlroot" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="macro.temp.record.startType">
        <xs:attribute name="name" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="macro.temp.record.stopType">
        <xs:attribute name="name" type="xs:string"/>
    </xs:complexType>
    <!--
    
    <xs:complexType name="Type">
        <xs:attribute name="" type="xs:string"/>
    </xs:complexType>
    -->
</xs:schema>
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="ant.apache.org"
           xmlns:au="org.apache.ant.antunit"
           xmlns:hlm="http://www.nokia.com/helium"
           xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="unqualified">
    <xs:import namespace="org.apache.ant.antunit" schemaLocation="antunit.xsd"/>
    <xs:import namespace="http://www.nokia.com/helium" schemaLocation="helium_ant.xsd"/>
    <xs:complexType name="taskcontainerType" abstract="true">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="propertyfile" type="propertyfileType"/>
            <xs:element name="propertycopy" type="propertycopyType"/>
            <xs:element name="importtypelib" type="importtypelibType"/>
            <xs:element name="sql" type="sqlType"/>
            <xs:element name="cvspass" type="cvspassType"/>
            <xs:element name="p4reopen" type="p4reopenType"/>
            <xs:element name="csc" type="cscType"/>
            <xs:element name="dirname" type="dirnameType"/>
            <xs:element name="p4label" type="p4labelType"/>
            <xs:element name="p4revert" type="p4revertType"/>
            <xs:element name="replaceregexp" type="replaceregexpType"/>
            <xs:element name="get" type="getType"/>
            <xs:element name="jjtree" type="jjtreeType"/>
            <xs:element name="sleep" type="sleepType"/>
            <xs:element name="jarlib-display" type="jarlib-displayType"/>
            <xs:element name="dependset" type="dependsetType"/>
            <xs:element name="zip" type="zipType"/>
            <xs:element name="patch" type="patchType"/>
            <xs:element name="jspc" type="jspcType"/>
            <xs:element name="style" type="styleType"/>
            <xs:element name="test" type="testType"/>
            <xs:element name="tstamp" type="tstampType"/>
            <xs:element name="unwar" type="unwarType"/>
            <xs:element name="icontract" type="icontractType"/>
            <xs:element name="cvschangelog" type="cvschangelogType"/>
            <xs:element name="p4submit" type="p4submitType"/>
            <xs:element name="p4change" type="p4changeType"/>
            <xs:element name="bzip2" type="bzip2Type"/>
            <xs:element name="sync" type="syncType"/>
            <xs:element name="p4delete" type="p4deleteType"/>
            <xs:element name="javadoc" type="javadocType"/>
            <xs:element name="p4integrate" type="p4integrateType"/>
            <xs:element name="translate" type="translateType"/>
            <xs:element name="signjar" type="signjarType"/>
            <xs:element name="chown" type="chownType"/>
            <xs:element name="vajload" type="vajloadType"/>
            <xs:element name="jarlib-available" type="jarlib-availableType"/>
            <xs:element name="buildnumber" type="buildnumberType"/>
            <xs:element name="jpcovmerge" type="jpcovmergeType"/>
            <xs:element name="war" type="warType"/>
            <xs:element name="rename" type="renameType"/>
            <xs:element name="sequential" type="sequentialType"/>
            <xs:element name="serverdeploy" type="serverdeployType"/>
            <xs:element name="property" type="propertyType"/>
            <xs:element name="subant" type="subantType"/>
            <xs:element name="move" type="moveType"/>
            <xs:element name="ildasm" type="ildasmType"/>
            <xs:element name="copydir" type="copydirType"/>
            <xs:element name="fixcrlf" type="fixcrlfType"/>
            <xs:element name="pathconvert" type="pathconvertType"/>
            <xs:element name="record" type="recordType"/>
            <xs:element name="p4sync" type="p4syncType"/>
            <xs:element name="exec" type="execType"/>
            <xs:element name="ccmklabel" type="ccmklabelType"/>
            <xs:element name="p4edit" type="p4editType"/>
            <xs:element name="manifest" type="manifestType"/>
            <xs:element name="maudit" type="mauditType"/>
            <xs:element name="antlr" type="antlrType"/>
            <xs:element name="jpcovreport" type="jpcovreportType"/>
            <xs:element name="execon" type="execonType"/>
            <xs:element name="ant" type="antType"/>
            <xs:element name="xmlvalidate" type="xmlvalidateType"/>
            <xs:element name="xslt" type="xsltType"/>
            <xs:element name="p4resolve" type="p4resolveType"/>
            <xs:element name="gzip" type="gzipType"/>
            <xs:element name="native2ascii" type="native2asciiType"/>
            <xs:element name="ccrmtype" type="ccrmtypeType"/>
            <xs:element name="ear" type="earType"/>
            <xs:element name="input" type="inputType"/>
            <xs:element name="presetdef" type="presetdefType"/>
            <xs:element name="rmic" type="rmicType"/>
            <xs:element name="checksum" type="checksumType"/>
            <xs:element name="mail" type="mailType"/>
            <xs:element name="loadfile" type="loadfileType"/>
            <xs:element name="loadresource" type="loadresourceType"/>
            <xs:element name="mimemail" type="mimemailType"/>
            <xs:element name="gunzip" type="gunzipType"/>
            <xs:element name="concat" type="concatType"/>
            <xs:element name="cab" type="cabType"/>
            <xs:element name="touch" type="touchType"/>
            <xs:element name="parallel" type="parallelType"/>
            <xs:element name="splash" type="splashType"/>
            <xs:element name="antcall" type="antcallType"/>
            <xs:element name="typedef" type="typedefType"/>
            <xs:element name="p4have" type="p4haveType"/>
            <xs:element name="filter" type="filterType"/>
            <xs:element name="xmlproperty" type="xmlpropertyType"/>
            <xs:element name="import" type="importType"/>
            <xs:element name="copy" type="copyType"/>
            <xs:element name="jsharpc" type="jsharpcType"/>
            <xs:element name="symlink" type="symlinkType"/>
            <xs:element name="antstructure" type="antstructureType"/>
            <xs:element name="script" type="scriptType"/>
            <xs:element name="rpm" type="rpmType"/>
            <xs:element name="delete" type="deleteType"/>
            <xs:element name="replace" type="replaceType"/>
            <xs:element name="attrib" type="attribType"/>
            <xs:element name="waitfor" type="waitforType"/>
            <xs:element name="untar" type="untarType"/>
            <xs:element name="loadproperties" type="loadpropertiesType"/>
            <xs:element name="available" type="availableType"/>
            <xs:element name="echoproperties" type="echopropertiesType"/>
            <xs:element name="chgrp" type="chgrpType"/>
            <xs:element name="vajexport" type="vajexportType"/>
            <xs:element name="bunzip2" type="bunzip2Type"/>
            <xs:element name="whichresource" type="whichresourceType"/>
            <xs:element name="copyfile" type="copyfileType"/>
            <xs:element name="p4labelsync" type="p4labelsyncType"/>
            <xs:element name="macrodef" type="macrodefType"/>
            <xs:element name="unjar" type="unjarType"/>
            <xs:element name="vbc" type="vbcType"/>
            <xs:element name="mkdir" type="mkdirType"/>
            <xs:element name="condition" type="conditionType"/>
            <xs:element name="cvs" type="cvsType"/>
            <xs:element name="tempfile" type="tempfileType"/>
            <xs:element name="junit" type="junitType"/>
            <xs:element name="junitreport" type="junitreportType"/>
            <xs:element name="cobertura-instrument" type="cobertura-instrumentType"/>
            <xs:element name="cobertura-report" type="cobertura-reportType"/>
            <xs:element name="taskdef" type="taskdefType"/>
            <xs:element name="echo" type="echoType"/>
            <xs:element name="java" type="javaType"/>
            <xs:element name="renameext" type="renameextType"/>
            <xs:element name="basename" type="basenameType"/>
            <xs:element name="javadoc2" type="javadoc2Type"/>
            <xs:element name="tar" type="tarType"/>
            <xs:element name="vajimport" type="vajimportType"/>
            <xs:element name="p4fstat" type="p4fstatType"/>
            <xs:element name="setproxy" type="setproxyType"/>
            <xs:element name="p4counter" type="p4counterType"/>
            <xs:element name="ilasm" type="ilasmType"/>
            <xs:element name="apply" type="applyType"/>
            <xs:element name="jarlib-resolve" type="jarlib-resolveType"/>
            <xs:element name="jlink" type="jlinkType"/>
            <xs:element name="cvstagdiff" type="cvstagdiffType"/>
            <xs:element name="javacc" type="javaccType"/>
            <xs:element name="chmod" type="chmodType"/>
            <xs:element name="pvcs" type="pvcsType"/>
            <xs:element name="jarlib-manifest" type="jarlib-manifestType"/>
            <xs:element name="jar" type="jarType"/>
            <xs:element name="ccmklbtype" type="ccmklbtypeType"/>
            <xs:element name="sound" type="soundType"/>
            <xs:element name="scriptdef" type="scriptdefType"/>
            <xs:element name="defaultexcludes" type="defaultexcludesType"/>
            <xs:element name="blgenclient" type="blgenclientType"/>
            <xs:element name="uptodate" type="uptodateType"/>
            <xs:element name="jjdoc" type="jjdocType"/>
            <xs:element name="genkey" type="genkeyType"/>
            <xs:element name="javah" type="javahType"/>
            <xs:element name="ccmreconfigure" type="ccmreconfigureType"/>
            <xs:element name="fail" type="failType"/>
            <xs:element name="unzip" type="unzipType"/>
            <xs:element name="javac" type="javacType"/>
            <xs:element name="p4add" type="p4addType"/>
            <xs:element name="jpcoverage" type="jpcoverageType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="deltree" type="deltreeType"/>
            <xs:element name="ddcreator" type="ddcreatorType"/>
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="assertions" type="assertionsType"/>
            <xs:element name="propertyset" type="propertysetType"/>
            <xs:element name="filterset" type="filtersetType"/>
            <xs:element name="libfileset" type="libfilesetType"/>
            <xs:element name="filterreader" type="filterreaderType"/>
            <xs:element name="scriptfilter" type="scriptfilterType"/>
            <xs:element name="concatfilter" type="concatfilterType"/>
            <xs:element name="extension" type="extensionType"/>
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="dirset" type="dirsetType"/>
            <xs:element name="filelist" type="filelistType"/>
            <xs:element name="filterchain" type="filterchainType"/>
            <xs:element name="path" type="pathType"/>
            <xs:element name="classfileset" type="classfilesetType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="xmlcatalog" type="xmlcatalogType"/>
            <xs:element name="description" type="descriptionType"/>
            <xs:element name="mapper" type="mapperType"/>
            <xs:element name="zipfileset" type="zipfilesetType"/>
            <xs:element name="substitution" type="substitutionType"/>
            <xs:element name="extensionSet" type="extensionSetType"/>
            <xs:element name="regexp" type="regexpType"/>
            <xs:element name="foreach" type="foreachType"/>
            <xs:element name="doxygen" type="doxygenType"/>
            <xs:element name="var" type="varType"/>
            <xs:element name="propertyregex" type="propertyregexType"/>
            <xs:element name="if" type="ifType"/>
            <xs:element name="for" type="forType"/>
            <xs:element name="mergelogs" type="mergelogsType"/>
            <xs:element name="reviewplan" type="reviewplanType"/>
            <xs:element name="processreviewplan" type="processreviewplanType"/>
            <xs:element name="convertreviewlog" type="convertreviewlogType"/>
            <xs:element name="lint" type="lintType"/>
            <xs:element name="customcopy" type="customcopyType"/>
            <xs:element name="fop" type="fopType"/>
            <xs:element name="xmltask" type="xmltaskType"/>
            <xs:element name="ftp" type="ftpType"/>
            <xs:element name="abld" type="abldType"/>
            <xs:element name="getsize" type="getsizeType"/>
            <xs:element name="grand" type="grandType"/>
            <xs:element name="svn" type="svnType"/>
            <xs:element name="antunit" type="antunitType"/>
            <xs:element name="schemavalidate" type="schemavalidateType"/>
            <xs:element name="python" type="pythonType"/>
            <xs:element name="antform" type="antformType"/>
            <xs:element name="math" type="mathType"/>
            <xs:element name="antserver" type="antserverType"/>
            <xs:element name="shellscript" type="shellscriptType"/>
            <xs:element name="runtarget" type="runtargetType"/>
            <xs:element name="echoxml" type="echoxmlType"/>
            <xs:element name="trycatch" type="trycatchType"/>
            <xs:element name="resourcecount" type="resourcecountType"/>
            <xs:element name="remoteant" type="remoteantType"/>
            <xs:element name="retry" type="retryType"/>
            <xs:element name="equals" type="equalsType"/>
            <xs:element name="then" type="thenType"/>
            <xs:element name="antcallback" type="antcallbackType"/>
            <xs:element name="diagnostics" type="diagnosticsType"/>
            <xs:element name="sshexec" type="sshexecType"/>
            <xs:element name="scp" type="scpType"/>
            <xs:element name="xcluder" type="xcluderType"/>
            <xs:element name="assertTrue" type="assertTrueType"/>
            <xs:element name="assertFileExists" type="assertFileExistsType"/>
            <xs:element name="fmpp" type="fmppType"/>
            <xs:element name="timestampselector" type="timestampselectorType"/>
            <xs:element name="preset.exec" type="preset.execType"/>
            <xs:element name="preset.mail" type="preset.mailType"/>
            <xs:element name="createDeltaZipMacro" type="createDeltaZipMacroType"/>
            <xs:element name="zipContentMacro" type="zipContentMacroType"/>
            
            <xs:element ref="au:assertPropertyEquals"/>
            <xs:element ref="au:assertLogDoesntContain"/>
            <xs:element ref="au:assertPropertySet"/>
            
            <xs:element ref="hlm:configuration"/>
            <xs:element ref="hlm:database"/>
            <xs:element ref="hlm:logextract"/>
            <xs:element ref="hlm:signal"/>
            <xs:element ref="hlm:dependencies"/>
            <xs:element ref="hlm:compileHtmlscanlogMacro"/>
            <xs:element ref="hlm:cmakerMacro"/>
            <xs:element ref="hlm:compileEbsMacro"/>
            <xs:element ref="hlm:buildEbsXmlMacro"/>
            <xs:element ref="hlm:logHtmlMacro"/>
            <xs:element ref="hlm:compileGenxmlMacro"/>
            <xs:element ref="hlm:bldmakeBldfilesMacro"/>
            <xs:element ref="hlm:abldMacro"/>
            <xs:element ref="hlm:filterRecordStartMacro"/>
            <xs:element ref="hlm:filterRecordStopMacro"/>
            <xs:element ref="hlm:updateStatusMacro"/>
            <xs:element ref="hlm:createCshelpBldinfMacro"/>
            <xs:element ref="hlm:imakerMacro"/>
            <xs:element ref="hlm:imaker"/>
            <xs:element ref="hlm:defaultEngine"/>
            <xs:element ref="hlm:emakeEngine"/>
            <xs:element ref="hlm:ccmAvailableMacro"/>
            <xs:element ref="hlm:publishMacro"/>
            <xs:element ref="hlm:rombuildMacro"/>
            <xs:element ref="hlm:notifyMacro"/>
            <xs:element ref="hlm:diskspaceMacro"/>
            <xs:element ref="hlm:netrcPasswordMacro"/>
            <xs:element ref="hlm:netrcUsernameMacro"/>
            <xs:element ref="hlm:compileGenxmlMergeMacro"/>
            <xs:element ref="hlm:declareIdMacro"/>
            <xs:element ref="hlm:mailTargetCompletedMacro"/>
            <xs:element ref="hlm:deleteFotaConfMacro"/>
            <xs:element ref="hlm:rombuildValueMacro"/>
            <xs:element ref="hlm:assert"/>
            <xs:element ref="hlm:assertFileExists"/>
            <xs:element ref="hlm:referenceToFileMacro"/>
            <xs:element ref="hlm:xmlToFmtlMacro"/>
            <xs:element ref="hlm:tempRecordStartMacro"/>
            <xs:element ref="hlm:tempRecordStopMacro"/>
            <xs:element ref="hlm:fooMacro"/>
            <!-- Presets -->
            <!-- Macros -->
        </xs:choice>
    </xs:complexType>
    <xs:complexType name="resourceCollectionContainerType" abstract="true">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="dirset" type="dirsetType"/>
            <xs:element name="extdirs" type="extdirsType"/>
            <xs:element name="filelist" type="filelistType"/>
            <xs:element name="existing" type="existingType"/>
            <xs:element name="pathelement" type="pathelementType"/>
            <xs:element name="path" type="pathType"/>
            <xs:element name="first" type="firstType"/>
            <xs:element name="sort" type="sortType"/>
        </xs:choice>
    </xs:complexType>
    <xs:complexType name="addfilesType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="dirset" type="dirsetType"/>
            <xs:element name="extdirs" type="extdirsType"/>
            <xs:element name="filelist" type="filelistType"/>
            <xs:element name="existing" type="existingType"/>
            <xs:element name="pathelement" type="pathelementType"/>
            <xs:element name="path" type="pathType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="location" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="path" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="andType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="custom" type="customType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="and" type="andType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="equals" type="equalsType"/>
            <xs:element name="isset" type="issetType"/>
            <xs:element name="os" type="osType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="antType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="reference" type="referenceType"/>
            <xs:element name="propertyset" type="propertysetType"/>
            <xs:element name="property" type="propertyType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="output" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="inheritAll">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="inheritrefs">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="antfile" type="xs:string"/>
        <xs:attribute name="target" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="antcallType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="reference" type="referenceType"/>
            <xs:element name="propertyset" type="propertysetType"/>
            <xs:element name="param" type="paramType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="inheritAll">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="inheritrefs">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="target" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="antlrType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="jvmarg" type="jvmargType"/>
            <xs:element name="classpath" type="classpathType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="debug">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="outputdirectory" type="xs:string"/>
        <xs:attribute name="fork">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="trace">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="tracetreewalker">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="html">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="tracelexer">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="diagnostic">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="traceparser">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="target" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="glib" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="antstructureType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="output" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="applyType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="arg" type="argType"/>
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="dirset" type="dirsetType"/>
            <xs:element name="env" type="envType"/>
            <xs:element name="filelist" type="filelistType"/>
            <xs:element name="targetfile" type="targetfileType"/>
            <xs:element name="srcfile" type="srcfileType"/>
            <xs:element name="mapper" type="mapperType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="resultproperty" type="xs:string"/>
        <xs:attribute name="skipemptyfilesets">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="failifexecutionfails">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="command" type="xs:string"/>
        <xs:attribute name="type">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="file"/>
                    <xs:enumeration value="dir"/>
                    <xs:enumeration value="both"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="maxparallel" type="xs:string"/>
        <xs:attribute name="executable" type="xs:string"/>
        <xs:attribute name="os" type="xs:string"/>
        <xs:attribute name="errorproperty" type="xs:string"/>
        <xs:attribute name="output" type="xs:string"/>
        <xs:attribute name="timeout" type="xs:string"/>
        <xs:attribute name="dest" type="xs:string"/>
        <xs:attribute name="spawn">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="input" type="xs:string"/>
        <xs:attribute name="inputstring" type="xs:string"/>
        <xs:attribute name="addsourcefile">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="verbose">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="logerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="forwardslash">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="outputproperty" type="xs:string"/>
        <xs:attribute name="resolveexecutable">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="append">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="vmlauncher">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="newenvironment">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="relative">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="parallel">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="archivesType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="src" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="filemode" type="xs:string"/>
        <xs:attribute name="prefix" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="fullpath" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
        <xs:attribute name="dirmode" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="argType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="line" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="pathref" type="xs:IDREF"/>
        <xs:attribute name="value" type="xs:string"/>
        <xs:attribute name="path" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="argumentType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="line" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="pathref" type="xs:IDREF"/>
        <xs:attribute name="value" type="xs:string"/>
        <xs:attribute name="path" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="assertionsType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="disable" type="disableType"/>
            <xs:element name="enable" type="enableType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="enablesystemassertions">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="attribType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="arg" type="argType"/>
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="dirset" type="dirsetType"/>
            <xs:element name="env" type="envType"/>
            <xs:element name="filelist" type="filelistType"/>
            <xs:element name="targetfile" type="targetfileType"/>
            <xs:element name="srcfile" type="srcfileType"/>
            <xs:element name="mapper" type="mapperType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="addsourcefile">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="verbose">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="parallel">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="input" type="xs:string"/>
        <xs:attribute name="executable" type="xs:string"/>
        <xs:attribute name="inputstring" type="xs:string"/>
        <xs:attribute name="readonly">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="relative">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="skipemptyfilesets">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="command" type="xs:string"/>
        <xs:attribute name="forwardslash">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="spawn">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="hidden">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="vmlauncher">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="logerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="errorproperty" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="output" type="xs:string"/>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="os" type="xs:string"/>
        <xs:attribute name="dest" type="xs:string"/>
        <xs:attribute name="resolveexecutable">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="resultproperty" type="xs:string"/>
        <xs:attribute name="failifexecutionfails">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="append">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="timeout" type="xs:string"/>
        <xs:attribute name="maxparallel" type="xs:string"/>
        <xs:attribute name="system">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="outputproperty" type="xs:string"/>
        <xs:attribute name="archive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="newenvironment">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="type">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="file"/>
                    <xs:enumeration value="dir"/>
                    <xs:enumeration value="both"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="attributeType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="default" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="availableType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="classpath" type="classpathType"/>
            <xs:element name="filepath" type="filepathType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="classpath" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="classname" type="xs:string"/>
        <xs:attribute name="resource" type="xs:string"/>
        <xs:attribute name="ignoresystemclasses">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="type">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="file"/>
                    <xs:enumeration value="dir"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="classpathref" type="xs:IDREF"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="value" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="property" type="xs:string"/>
        <xs:attribute name="filepath" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="basenameType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="property" type="xs:string"/>
        <xs:attribute name="suffix" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="bccType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="address" type="xs:string"/>
        <xs:attribute name="name" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="blgenclientType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="classpath" type="classpathType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="debug">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="classpath" type="xs:string"/>
        <xs:attribute name="mode" type="xs:string"/>
        <xs:attribute name="ejbjar" type="xs:string"/>
        <xs:attribute name="version" type="xs:string"/>
        <xs:attribute name="classpathref" type="xs:IDREF"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="clientjar" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="bootclasspathType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="dirset" type="dirsetType"/>
            <xs:element name="extdirs" type="extdirsType"/>
            <xs:element name="filelist" type="filelistType"/>
            <xs:element name="existing" type="existingType"/>
            <xs:element name="pathelement" type="pathelementType"/>
            <xs:element name="path" type="pathType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="location" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="path" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="bottomType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="id" type="xs:ID"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:complexType name="buildnumberType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="buildpathType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="dirset" type="dirsetType"/>
            <xs:element name="extdirs" type="extdirsType"/>
            <xs:element name="filelist" type="filelistType"/>
            <xs:element name="existing" type="existingType"/>
            <xs:element name="pathelement" type="pathelementType"/>
            <xs:element name="path" type="pathType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="location" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="path" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="buildpathelementType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="location" type="xs:string"/>
        <xs:attribute name="path" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="bunzip2Type">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="dest" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="src" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="bzip2Type">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="zipfile" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="src" type="xs:string"/>
        <xs:attribute name="destfile" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="cabType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="cabfile" type="xs:string"/>
        <xs:attribute name="compress">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="verbose">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="basedir" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
        <xs:attribute name="options" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="catalogpathType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="dirset" type="dirsetType"/>
            <xs:element name="extdirs" type="extdirsType"/>
            <xs:element name="filelist" type="filelistType"/>
            <xs:element name="existing" type="existingType"/>
            <xs:element name="pathelement" type="pathelementType"/>
            <xs:element name="path" type="pathType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="location" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="path" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="ccType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="address" type="xs:string"/>
        <xs:attribute name="name" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="ccmklabelType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="recurse">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="replace">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="viewpath" type="xs:string"/>
        <xs:attribute name="typename" type="xs:string"/>
        <xs:attribute name="comment" type="xs:string"/>
        <xs:attribute name="version" type="xs:string"/>
        <xs:attribute name="failonerr">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="objselect" type="xs:string"/>
        <xs:attribute name="cleartooldir" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="vob" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="commentfile" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="ccmklbtypeType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="global">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="replace">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="shared">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="viewpath" type="xs:string"/>
        <xs:attribute name="typename" type="xs:string"/>
        <xs:attribute name="pbranch">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="comment" type="xs:string"/>
        <xs:attribute name="failonerr">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="objselect" type="xs:string"/>
        <xs:attribute name="cleartooldir" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="vob" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="commentfile" type="xs:string"/>
        <xs:attribute name="ordinary">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="ccmreconfigureType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="ccmaction" type="xs:string"/>
        <xs:attribute name="verbose">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="ccmproject" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="recurse">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="ccmdir" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="ccrmtypeType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="viewpath" type="xs:string"/>
        <xs:attribute name="typename" type="xs:string"/>
        <xs:attribute name="rmall">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="comment" type="xs:string"/>
        <xs:attribute name="ignore">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="typekind" type="xs:string"/>
        <xs:attribute name="failonerr">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="objselect" type="xs:string"/>
        <xs:attribute name="cleartooldir" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="vob" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="commentfile" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="checksumType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="fileext" type="xs:string"/>
        <xs:attribute name="totalproperty" type="xs:string"/>
        <xs:attribute name="property" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="readbuffersize" type="xs:string"/>
        <xs:attribute name="verifyproperty" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="todir" type="xs:string"/>
        <xs:attribute name="algorithm" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="provider" type="xs:string"/>
        <xs:attribute name="forceoverwrite">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="chgrpType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="arg" type="argType"/>
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="dirset" type="dirsetType"/>
            <xs:element name="env" type="envType"/>
            <xs:element name="filelist" type="filelistType"/>
            <xs:element name="targetfile" type="targetfileType"/>
            <xs:element name="srcfile" type="srcfileType"/>
            <xs:element name="mapper" type="mapperType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="resultproperty" type="xs:string"/>
        <xs:attribute name="skipemptyfilesets">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="failifexecutionfails">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="type">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="file"/>
                    <xs:enumeration value="dir"/>
                    <xs:enumeration value="both"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="command" type="xs:string"/>
        <xs:attribute name="maxparallel" type="xs:string"/>
        <xs:attribute name="executable" type="xs:string"/>
        <xs:attribute name="os" type="xs:string"/>
        <xs:attribute name="errorproperty" type="xs:string"/>
        <xs:attribute name="group" type="xs:string"/>
        <xs:attribute name="output" type="xs:string"/>
        <xs:attribute name="timeout" type="xs:string"/>
        <xs:attribute name="dest" type="xs:string"/>
        <xs:attribute name="spawn">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="input" type="xs:string"/>
        <xs:attribute name="inputstring" type="xs:string"/>
        <xs:attribute name="addsourcefile">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="verbose">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="logerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="forwardslash">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="outputproperty" type="xs:string"/>
        <xs:attribute name="resolveexecutable">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="append">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="vmlauncher">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="newenvironment">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="relative">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="parallel">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="chmodType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="mapper" type="mapperType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="srcfile" type="srcfileType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="targetfile" type="targetfileType"/>
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="env" type="envType"/>
            <xs:element name="filelist" type="filelistType"/>
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="dirset" type="dirsetType"/>
            <xs:element name="arg" type="argType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="addsourcefile">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="verbose">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="parallel">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="input" type="xs:string"/>
        <xs:attribute name="executable" type="xs:string"/>
        <xs:attribute name="inputstring" type="xs:string"/>
        <xs:attribute name="relative">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="skipemptyfilesets">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="command" type="xs:string"/>
        <xs:attribute name="forwardslash">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="spawn">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
        <xs:attribute name="vmlauncher">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="logerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="errorproperty" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="output" type="xs:string"/>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="os" type="xs:string"/>
        <xs:attribute name="dest" type="xs:string"/>
        <xs:attribute name="resolveexecutable">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="resultproperty" type="xs:string"/>
        <xs:attribute name="failifexecutionfails">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="append">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="timeout" type="xs:string"/>
        <xs:attribute name="maxparallel" type="xs:string"/>
        <xs:attribute name="outputproperty" type="xs:string"/>
        <xs:attribute name="perm" type="xs:string"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="newenvironment">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="type">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="file"/>
                    <xs:enumeration value="dir"/>
                    <xs:enumeration value="both"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="chownType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="arg" type="argType"/>
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="dirset" type="dirsetType"/>
            <xs:element name="env" type="envType"/>
            <xs:element name="filelist" type="filelistType"/>
            <xs:element name="targetfile" type="targetfileType"/>
            <xs:element name="srcfile" type="srcfileType"/>
            <xs:element name="mapper" type="mapperType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="resultproperty" type="xs:string"/>
        <xs:attribute name="owner" type="xs:string"/>
        <xs:attribute name="skipemptyfilesets">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="failifexecutionfails">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="type">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="file"/>
                    <xs:enumeration value="dir"/>
                    <xs:enumeration value="both"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="command" type="xs:string"/>
        <xs:attribute name="maxparallel" type="xs:string"/>
        <xs:attribute name="executable" type="xs:string"/>
        <xs:attribute name="os" type="xs:string"/>
        <xs:attribute name="errorproperty" type="xs:string"/>
        <xs:attribute name="output" type="xs:string"/>
        <xs:attribute name="timeout" type="xs:string"/>
        <xs:attribute name="dest" type="xs:string"/>
        <xs:attribute name="spawn">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="input" type="xs:string"/>
        <xs:attribute name="inputstring" type="xs:string"/>
        <xs:attribute name="addsourcefile">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="verbose">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="logerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="forwardslash">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="outputproperty" type="xs:string"/>
        <xs:attribute name="resolveexecutable">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="append">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="vmlauncher">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="newenvironment">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="relative">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="parallel">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="classType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="name" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="classconstantsType">
        <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
    <xs:complexType name="classesType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="src" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="filemode" type="xs:string"/>
        <xs:attribute name="prefix" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="fullpath" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
        <xs:attribute name="dirmode" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="classfilesetType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="rootfileset" type="rootfilesetType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="root" type="rootType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="rootclass" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="classpathType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="dirset" type="dirsetType"/>
            <xs:element name="extdirs" type="extdirsType"/>
            <xs:element name="filelist" type="filelistType"/>
            <xs:element name="existing" type="existingType"/>
            <xs:element name="pathelement" type="pathelementType"/>
            <xs:element name="path" type="pathType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="location" type="xs:string"/>
        <xs:attribute name="refid" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="path" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="commandlineType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="marker" type="markerType"/>
            <xs:element name="argument" type="argumentType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="executable" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="commentType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="value" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="compilerargType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="line" type="xs:string"/>
        <xs:attribute name="implementation" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="compiler" type="xs:string"/>
        <xs:attribute name="pathref" type="xs:IDREF"/>
        <xs:attribute name="value" type="xs:string"/>
        <xs:attribute name="path" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="compilerclasspathType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="dirset" type="dirsetType"/>
            <xs:element name="extdirs" type="extdirsType"/>
            <xs:element name="filelist" type="filelistType"/>
            <xs:element name="existing" type="existingType"/>
            <xs:element name="pathelement" type="pathelementType"/>
            <xs:element name="path" type="pathType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="location" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="path" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="concatType" mixed="true">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="filterchain" type="filterchainType"/>
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="filelist" type="filelistType"/>
            <xs:element name="path" type="pathType"/>
            <xs:element name="footer" type="footerType"/>
            <xs:element name="header" type="headerType"/>
            <xs:element name="propertyresource" type="propertyresourceType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="force">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="encoding" type="xs:string"/>
        <xs:attribute name="append">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="destfile" type="xs:string"/>
        <xs:attribute name="eol">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="asis"/>
                    <xs:enumeration value="cr"/>
                    <xs:enumeration value="lf"/>
                    <xs:enumeration value="crlf"/>
                    <xs:enumeration value="mac"/>
                    <xs:enumeration value="unix"/>
                    <xs:enumeration value="dos"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="outputencoding" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="fixlastline">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="concatfilterType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="append" type="xs:string"/>
        <xs:attribute name="prepend" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="conditionType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="isfalse" type="isfalseType"/>
            <xs:element name="isreference" type="isreferenceType"/>
            <xs:element name="equals" type="equalsType"/>
            <xs:element name="available" type="availableType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="contains" type="containsconditionType"/>
            <xs:element name="os" type="osType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="and" type="andType"/>
            <xs:element name="filesmatch" type="filesmatchType"/>
            <xs:element name="checksum" type="checksumType"/>
            <xs:element name="istrue" type="istrueType"/>
            <xs:element name="isset" type="issetType"/>
            <xs:element name="socket" type="socketType"/>
            <xs:element name="http" type="httpType"/>
            <xs:element name="uptodate" type="uptodateType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="value" type="xs:string"/>
        <xs:attribute name="property" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="containsType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="ignorewhitespace">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="text" type="xs:string"/>
    </xs:complexType>
    <!-- Used for <contains> in <fail> -->
    <xs:complexType name="containsconditionType">
        <xs:attribute name="casesensitive" type="xs:boolean"/>
        <xs:attribute name="string" type="xs:string"/>
        <xs:attribute name="substring" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="containsregexType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="flags" type="xs:string"/>
        <xs:attribute name="byline">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="replace" type="xs:string"/>
        <xs:attribute name="pattern" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="containsregexpType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="expression" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="containsstringType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="contains" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="copyType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="filterchain" type="filterchainType"/>
            <xs:element name="resources" type="resourcesType"/>
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="filterset" type="filtersetType"/>
            <xs:element name="mapper" type="mapperType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="flatten">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="tofile" type="xs:string"/>
        <xs:attribute name="encoding" type="xs:string"/>
        <xs:attribute name="todir" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="verbose" type="xs:string"/>
        <xs:attribute name="includeemptydirs">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="overwrite">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="enablemultiplemappings">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="outputencoding" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="preservelastmodified">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="filtering">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="copydirType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="flatten">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="src" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="dest" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="forceoverwrite">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="filtering">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="includes" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="copyfileType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="forceoverwrite">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="dest" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="filtering" type="xs:string"/>
        <xs:attribute name="src" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="coveragepathType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="dirset" type="dirsetType"/>
            <xs:element name="extdirs" type="extdirsType"/>
            <xs:element name="filelist" type="filelistType"/>
            <xs:element name="existing" type="existingType"/>
            <xs:element name="pathelement" type="pathelementType"/>
            <xs:element name="path" type="pathType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="location" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="path" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="cscType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="resource" type="resourceType"/>
            <xs:element name="define" type="defineType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="reference" type="referenceType"/>
            <xs:element name="src" type="srcType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="executable" type="xs:string"/>
        <xs:attribute name="destfile" type="xs:string"/>
        <xs:attribute name="win32icon" type="xs:string"/>
        <xs:attribute name="definitions" type="xs:string"/>
        <xs:attribute name="referencefiles" type="xs:string"/>
        <xs:attribute name="fullpaths">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="outputfile" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
        <xs:attribute name="mainclass" type="xs:string"/>
        <xs:attribute name="utf8output">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="useresponsefile">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="destdir" type="xs:string"/>
        <xs:attribute name="debug">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="includedefaultreferences">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="warnlevel" type="xs:string"/>
        <xs:attribute name="win32res" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="extraoptions" type="xs:string"/>
        <xs:attribute name="incremental">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="noconfig">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="references" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="srcdir" type="xs:string"/>
        <xs:attribute name="optimize">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="additionalmodules" type="xs:string"/>
        <xs:attribute name="docfile" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="unsafe">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="filealign" type="xs:string"/>
        <xs:attribute name="targettype">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="exe"/>
                    <xs:enumeration value="library"/>
                    <xs:enumeration value="module"/>
                    <xs:enumeration value="winexe"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="customType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="classpath" type="classpathType"/>
            <xs:element name="param" type="paramType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="classpath" type="xs:string"/>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="classpathref" type="xs:IDREF"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="classname" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="cvsType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="commandline" type="commandlineType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="cvsrsh" type="xs:string"/>
        <xs:attribute name="quiet">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="passfile" type="xs:string"/>
        <xs:attribute name="command" type="xs:string"/>
        <xs:attribute name="package" type="xs:string"/>
        <xs:attribute name="cvsroot" type="xs:string"/>
        <xs:attribute name="reallyquiet">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="output" type="xs:string"/>
        <xs:attribute name="port" type="xs:string"/>
        <xs:attribute name="dest" type="xs:string"/>
        <xs:attribute name="compressionlevel" type="xs:string"/>
        <xs:attribute name="noexec">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="append">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="date" type="xs:string"/>
        <xs:attribute name="compression">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="tag" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="cvschangelogType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="user" type="userType"/>
            <xs:element name="commandline" type="commandlineType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="cvsrsh" type="xs:string"/>
        <xs:attribute name="quiet">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="passfile" type="xs:string"/>
        <xs:attribute name="end" type="xs:string"/>
        <xs:attribute name="command" type="xs:string"/>
        <xs:attribute name="package" type="xs:string"/>
        <xs:attribute name="start" type="xs:string"/>
        <xs:attribute name="cvsroot" type="xs:string"/>
        <xs:attribute name="reallyquiet">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="output" type="xs:string"/>
        <xs:attribute name="port" type="xs:string"/>
        <xs:attribute name="compressionlevel" type="xs:string"/>
        <xs:attribute name="dest" type="xs:string"/>
        <xs:attribute name="destfile" type="xs:string"/>
        <xs:attribute name="usersfile" type="xs:string"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="noexec">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="daysinpast" type="xs:string"/>
        <xs:attribute name="append">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="date" type="xs:string"/>
        <xs:attribute name="compression">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="tag" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="cvspassType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="password" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="cvsroot" type="xs:string"/>
        <xs:attribute name="passfile" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="cvstagdiffType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="commandline" type="commandlineType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="cvsrsh" type="xs:string"/>
        <xs:attribute name="endtag" type="xs:string"/>
        <xs:attribute name="quiet">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="passfile" type="xs:string"/>
        <xs:attribute name="command" type="xs:string"/>
        <xs:attribute name="package" type="xs:string"/>
        <xs:attribute name="cvsroot" type="xs:string"/>
        <xs:attribute name="reallyquiet">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="starttag" type="xs:string"/>
        <xs:attribute name="output" type="xs:string"/>
        <xs:attribute name="port" type="xs:string"/>
        <xs:attribute name="compressionlevel" type="xs:string"/>
        <xs:attribute name="dest" type="xs:string"/>
        <xs:attribute name="destfile" type="xs:string"/>
        <xs:attribute name="enddate" type="xs:string"/>
        <xs:attribute name="noexec">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="append">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="date" type="xs:string"/>
        <xs:attribute name="startdate" type="xs:string"/>
        <xs:attribute name="compression">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="tag" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="daemonsType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:choice minOccurs="0" maxOccurs="unbounded">
                <xs:element name="propertyfile" type="propertyfileType"/>
                <xs:element name="importtypelib" type="importtypelibType"/>
                <xs:element name="sql" type="sqlType"/>
                <xs:element name="cvspass" type="cvspassType"/>
                <xs:element name="p4reopen" type="p4reopenType"/>
                <xs:element name="csc" type="cscType"/>
                <xs:element name="dirname" type="dirnameType"/>
                <xs:element name="p4label" type="p4labelType"/>
                <xs:element name="p4revert" type="p4revertType"/>
                <xs:element name="replaceregexp" type="replaceregexpType"/>
                <xs:element name="get" type="getType"/>
                <xs:element name="jjtree" type="jjtreeType"/>
                <xs:element name="sleep" type="sleepType"/>
                <xs:element name="jarlib-display" type="jarlib-displayType"/>
                <xs:element name="dependset" type="dependsetType"/>
                <xs:element name="zip" type="zipType"/>
                <xs:element name="patch" type="patchType"/>
                <xs:element name="jspc" type="jspcType"/>
                <xs:element name="style" type="styleType"/>
                <xs:element name="test" type="testType"/>
                <xs:element name="tstamp" type="tstampType"/>
                <xs:element name="unwar" type="unwarType"/>
                <xs:element name="icontract" type="icontractType"/>
                <xs:element name="cvschangelog" type="cvschangelogType"/>
                <xs:element name="p4submit" type="p4submitType"/>
                <xs:element name="p4change" type="p4changeType"/>
                <xs:element name="bzip2" type="bzip2Type"/>
                <xs:element name="sync" type="syncType"/>
                <xs:element name="p4delete" type="p4deleteType"/>
                <xs:element name="javadoc" type="javadocType"/>
                <xs:element name="p4integrate" type="p4integrateType"/>
                <xs:element name="translate" type="translateType"/>
                <xs:element name="signjar" type="signjarType"/>
                <xs:element name="chown" type="chownType"/>
                <xs:element name="vajload" type="vajloadType"/>
                <xs:element name="jarlib-available" type="jarlib-availableType"/>
                <xs:element name="buildnumber" type="buildnumberType"/>
                <xs:element name="jpcovmerge" type="jpcovmergeType"/>
                <xs:element name="war" type="warType"/>
                <xs:element name="rename" type="renameType"/>
                <xs:element name="sequential" type="sequentialType"/>
                <xs:element name="serverdeploy" type="serverdeployType"/>
                <xs:element name="property" type="propertyType"/>
                <xs:element name="subant" type="subantType"/>
                <xs:element name="move" type="moveType"/>
                <xs:element name="ildasm" type="ildasmType"/>
                <xs:element name="copydir" type="copydirType"/>
                <xs:element name="fixcrlf" type="fixcrlfType"/>
                <xs:element name="pathconvert" type="pathconvertType"/>
                <xs:element name="record" type="recordType"/>
                <xs:element name="p4sync" type="p4syncType"/>
                <xs:element name="exec" type="execType"/>
                <xs:element name="ccmklabel" type="ccmklabelType"/>
                <xs:element name="p4edit" type="p4editType"/>
                <xs:element name="manifest" type="manifestType"/>
                <xs:element name="maudit" type="mauditType"/>
                <xs:element name="antlr" type="antlrType"/>
                <xs:element name="jpcovreport" type="jpcovreportType"/>
                <xs:element name="execon" type="execonType"/>
                <xs:element name="ant" type="antType"/>
                <xs:element name="xmlvalidate" type="xmlvalidateType"/>
                <xs:element name="xslt" type="xsltType"/>
                <xs:element name="p4resolve" type="p4resolveType"/>
                <xs:element name="gzip" type="gzipType"/>
                <xs:element name="native2ascii" type="native2asciiType"/>
                <xs:element name="ccrmtype" type="ccrmtypeType"/>
                <xs:element name="ear" type="earType"/>
                <xs:element name="input" type="inputType"/>
                <xs:element name="presetdef" type="presetdefType"/>
                <xs:element name="rmic" type="rmicType"/>
                <xs:element name="checksum" type="checksumType"/>
                <xs:element name="mail" type="mailType"/>
                <xs:element name="loadfile" type="loadfileType"/>
                <xs:element name="mimemail" type="mimemailType"/>
                <xs:element name="gunzip" type="gunzipType"/>
                <xs:element name="concat" type="concatType"/>
                <xs:element name="cab" type="cabType"/>
                <xs:element name="touch" type="touchType"/>
                <xs:element name="parallel" type="parallelType"/>
                <xs:element name="splash" type="splashType"/>
                <xs:element name="antcall" type="antcallType"/>
                <xs:element name="typedef" type="typedefType"/>
                <xs:element name="p4have" type="p4haveType"/>
                <xs:element name="filter" type="filterType"/>
                <xs:element name="xmlproperty" type="xmlpropertyType"/>
                <xs:element name="import" type="importType"/>
                <xs:element name="copy" type="copyType"/>
                <xs:element name="jsharpc" type="jsharpcType"/>
                <xs:element name="symlink" type="symlinkType"/>
                <xs:element name="antstructure" type="antstructureType"/>
                <xs:element name="script" type="scriptType"/>
                <xs:element name="rpm" type="rpmType"/>
                <xs:element name="delete" type="deleteType"/>
                <xs:element name="replace" type="replaceType"/>
                <xs:element name="attrib" type="attribType"/>
                <xs:element name="waitfor" type="waitforType"/>
                <xs:element name="untar" type="untarType"/>
                <xs:element name="loadproperties" type="loadpropertiesType"/>
                <xs:element name="available" type="availableType"/>
                <xs:element name="echoproperties" type="echopropertiesType"/>
                <xs:element name="chgrp" type="chgrpType"/>
                <xs:element name="vajexport" type="vajexportType"/>
                <xs:element name="bunzip2" type="bunzip2Type"/>
                <xs:element name="whichresource" type="whichresourceType"/>
                <xs:element name="copyfile" type="copyfileType"/>
                <xs:element name="p4labelsync" type="p4labelsyncType"/>
                <xs:element name="macrodef" type="macrodefType"/>
                <xs:element name="unjar" type="unjarType"/>
                <xs:element name="vbc" type="vbcType"/>
                <xs:element name="mkdir" type="mkdirType"/>
                <xs:element name="condition" type="conditionType"/>
                <xs:element name="cvs" type="cvsType"/>
                <xs:element name="tempfile" type="tempfileType"/>
                <xs:element name="junit" type="junitType"/>
                <xs:element name="junitreport" type="junitreportType"/>
                <xs:element name="cobertura-instrument" type="cobertura-instrumentType"/>
                <xs:element name="cobertura-report" type="cobertura-reportType"/>
                <xs:element name="taskdef" type="taskdefType"/>
                <xs:element name="echo" type="echoType"/>
                <xs:element name="java" type="javaType"/>
                <xs:element name="renameext" type="renameextType"/>
                <xs:element name="basename" type="basenameType"/>
                <xs:element name="javadoc2" type="javadoc2Type"/>
                <xs:element name="tar" type="tarType"/>
                <xs:element name="vajimport" type="vajimportType"/>
                <xs:element name="p4fstat" type="p4fstatType"/>
                <xs:element name="setproxy" type="setproxyType"/>
                <xs:element name="p4counter" type="p4counterType"/>
                <xs:element name="ilasm" type="ilasmType"/>
                <xs:element name="apply" type="applyType"/>
                <xs:element name="jarlib-resolve" type="jarlib-resolveType"/>
                <xs:element name="jlink" type="jlinkType"/>
                <xs:element name="cvstagdiff" type="cvstagdiffType"/>
                <xs:element name="javacc" type="javaccType"/>
                <xs:element name="chmod" type="chmodType"/>
                <xs:element name="pvcs" type="pvcsType"/>
                <xs:element name="jarlib-manifest" type="jarlib-manifestType"/>
                <xs:element name="jar" type="jarType"/>
                <xs:element name="ccmklbtype" type="ccmklbtypeType"/>
                <xs:element name="sound" type="soundType"/>
                <xs:element name="scriptdef" type="scriptdefType"/>
                <xs:element name="defaultexcludes" type="defaultexcludesType"/>
                <xs:element name="blgenclient" type="blgenclientType"/>
                <xs:element name="uptodate" type="uptodateType"/>
                <xs:element name="jjdoc" type="jjdocType"/>
                <xs:element name="genkey" type="genkeyType"/>
                <xs:element name="javah" type="javahType"/>
                <xs:element name="fail" type="failType"/>
                <xs:element name="unzip" type="unzipType"/>
                <xs:element name="javac" type="javacType"/>
                <xs:element name="p4add" type="p4addType"/>
                <xs:element name="jpcoverage" type="jpcoverageType"/>
                <xs:element name="depend" type="dependType"/>
                <xs:element name="deltree" type="deltreeType"/>
                <xs:element name="ddcreator" type="ddcreatorType"/>
                <xs:element name="retry" type="retryType"/>
            </xs:choice>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
    <xs:complexType name="dateType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="when">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="before"/>
                    <xs:enumeration value="after"/>
                    <xs:enumeration value="equal"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="millis" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="checkdirs">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="granularity" type="xs:string"/>
        <xs:attribute name="datetime" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="ddcreatorType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="classpath" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="dest" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="descriptors" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="defaultexcludesType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="remove" type="xs:string"/>
        <xs:attribute name="echo">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="default">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="add" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="defineType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="unless" type="xs:string"/>
        <xs:attribute name="if" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="deleteType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="quiet">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="verbose">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="includeemptydirs">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="deletecharactersType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="chars" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="deltreeType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="dependType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="mapper" type="mapperType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="targetdir" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="granularity" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="dependsType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="libfileset" type="libfilesetType"/>
            <xs:element name="extension" type="extensionType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="dependsetType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="targetfileset" type="targetfilesetType"/>
            <xs:element name="srcfileset" type="srcfilesetType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="srcfilelist" type="srcfilelistType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
            <xs:element name="targetfilelist" type="targetfilelistType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="depthType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="max" type="xs:string"/>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="min" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="descriptionType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="id" type="xs:ID"/>
                <xs:attribute name="refid" type="xs:IDREF"/>
                <xs:attribute name="description" type="xs:string"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:complexType name="differentType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="mapper" type="mapperType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="targetdir" type="xs:string"/>
        <xs:attribute name="ignoreFileTimes" type="xs:string"/>
        <xs:attribute name="ignoreContents" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="ignorefiletimes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="granularity" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="dirnameType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="property" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="dirsetType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="refid" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="disableType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="package" type="xs:string"/>
        <xs:attribute name="class" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="dnameType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="param" type="paramType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
    <xs:complexType name="docletType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="path" type="pathType"/>
            <xs:element name="param" type="paramType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="pathref" type="xs:IDREF"/>
        <xs:attribute name="path" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="doctitleType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="id" type="xs:ID"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:complexType name="dtdType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="location" type="xs:string"/>
        <xs:attribute name="base" type="xs:string"/>
        <xs:attribute name="publicid" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="earType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="manifest" type="manifestType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="metainf" type="metainfType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="archives" type="archivesType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="zipgroupfileset" type="zipgroupfilesetType"/>
            <xs:element name="zipfileset" type="zipfilesetType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="keepcompression">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="whenempty">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="fail"/>
                    <xs:enumeration value="skip"/>
                    <xs:enumeration value="create"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="duplicate">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="add"/>
                    <xs:enumeration value="preserve"/>
                    <xs:enumeration value="fail"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="basedir" type="xs:string"/>
        <xs:attribute name="encoding" type="xs:string"/>
        <xs:attribute name="manifest" type="xs:string"/>
        <xs:attribute name="jarfile" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="index">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="update">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="destfile" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="earfile" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="appxml" type="xs:string"/>
        <xs:attribute name="compress">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="manifestencoding" type="xs:string"/>
        <xs:attribute name="filesonly">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="filesetmanifest">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="skip"/>
                    <xs:enumeration value="merge"/>
                    <xs:enumeration value="mergewithoutmain"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="zipfile" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="echoType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="id" type="xs:ID"/>
                <xs:attribute name="append">
                    <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                            <xs:enumeration value="true"/>
                            <xs:enumeration value="false"/>
                            <xs:enumeration value="on"/>
                            <xs:enumeration value="off"/>
                            <xs:enumeration value="yes"/>
                            <xs:enumeration value="no"/>
                        </xs:restriction>
                    </xs:simpleType>
                </xs:attribute>
                <xs:attribute name="taskname" type="xs:string"/>
                <xs:attribute name="file" type="xs:string"/>
                <xs:attribute name="description" type="xs:string"/>
                <xs:attribute name="message" type="xs:string"/>
                <xs:attribute name="level">
                    <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                            <xs:enumeration value="error"/>
                            <xs:enumeration value="warning"/>
                            <xs:enumeration value="info"/>
                            <xs:enumeration value="verbose"/>
                            <xs:enumeration value="debug"/>
                        </xs:restriction>
                    </xs:simpleType>
                </xs:attribute>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:complexType name="echopropertiesType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="propertyset" type="propertysetType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="prefix" type="xs:string"/>
        <xs:attribute name="format">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="xml"/>
                    <xs:enumeration value="text"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="srcfile" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="destfile" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="elementType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="optional">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="implicit" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="classname" type="xs:string"/>
        <xs:attribute name="type" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="enableType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="package" type="xs:string"/>
        <xs:attribute name="class" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="entityType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="location" type="xs:string"/>
        <xs:attribute name="base" type="xs:string"/>
        <xs:attribute name="publicid" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="entryType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="operation" type="xs:string"/>
        <xs:attribute name="default" type="xs:string"/>
        <xs:attribute name="key" type="xs:string"/>
        <xs:attribute name="type">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="int"/>
                    <xs:enumeration value="date"/>
                    <xs:enumeration value="string"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="unit">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="millisecond"/>
                    <xs:enumeration value="second"/>
                    <xs:enumeration value="minute"/>
                    <xs:enumeration value="hour"/>
                    <xs:enumeration value="day"/>
                    <xs:enumeration value="week"/>
                    <xs:enumeration value="month"/>
                    <xs:enumeration value="year"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="pattern" type="xs:string"/>
        <xs:attribute name="value" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="envType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="key" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="value" type="xs:string"/>
        <xs:attribute name="path" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="redirectorType">
        <xs:attribute name="output" type="xs:string"/>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="logError" type="xs:string"/>
        <xs:attribute name="append" type="xs:boolean"/>
        <xs:attribute name="createemptyfiles" type="xs:boolean"/>
        <xs:attribute name="outputproperty" type="xs:string"/>
        <xs:attribute name="errorproperty" type="xs:string"/>
        <xs:attribute name="input" type="xs:string"/>
        <xs:attribute name="inputstring" type="xs:string"/>
        <xs:attribute name="inputencoding" type="xs:string"/>
        <xs:attribute name="outputencoding" type="xs:string"/>
        <xs:attribute name="errorencoding" type="xs:string"/>
        <xs:attribute name="alwayslog" type="xs:boolean"/>
        <xs:attribute name="loginputstring" type="xs:boolean"/>
    </xs:complexType>
    <xs:complexType name="equalsType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="trim">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="arg2" type="xs:string"/>
        <xs:attribute name="arg1" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="escapeunicodeType">
        <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
    <xs:complexType name="excludeType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="unless" type="xs:string"/>
        <xs:attribute name="if" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="excludepackageType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="name" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="excludesfileType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="unless" type="xs:string"/>
        <xs:attribute name="if" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="execType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="arg" type="argType"/>
            <xs:element name="env" type="envType"/>
            <xs:element name="redirector" type="redirectorType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="resultproperty" type="xs:string"/>
        <xs:attribute name="failifexecutionfails">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="command" type="xs:string"/>
        <xs:attribute name="executable" type="xs:string"/>
        <xs:attribute name="os" type="xs:string"/>
        <xs:attribute name="osfamily" type="xs:string"/>
        <xs:attribute name="errorproperty" type="xs:string"/>
        <xs:attribute name="output" type="xs:string"/>
        <xs:attribute name="timeout" type="xs:string"/>
        <xs:attribute name="spawn">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="input" type="xs:string"/>
        <xs:attribute name="inputstring" type="xs:string"/>
        <xs:attribute name="logerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="outputproperty" type="xs:string"/>
        <xs:attribute name="resolveexecutable">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="failonerror" type="xs:string"/>
        <xs:attribute name="append">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="newenvironment">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="vmlauncher">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="execonType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="arg" type="argType"/>
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="dirset" type="dirsetType"/>
            <xs:element name="env" type="envType"/>
            <xs:element name="filelist" type="filelistType"/>
            <xs:element name="targetfile" type="targetfileType"/>
            <xs:element name="srcfile" type="srcfileType"/>
            <xs:element name="mapper" type="mapperType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="resultproperty" type="xs:string"/>
        <xs:attribute name="skipemptyfilesets">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="failifexecutionfails">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="command" type="xs:string"/>
        <xs:attribute name="type">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="file"/>
                    <xs:enumeration value="dir"/>
                    <xs:enumeration value="both"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="maxparallel" type="xs:string"/>
        <xs:attribute name="executable" type="xs:string"/>
        <xs:attribute name="os" type="xs:string"/>
        <xs:attribute name="errorproperty" type="xs:string"/>
        <xs:attribute name="output" type="xs:string"/>
        <xs:attribute name="timeout" type="xs:string"/>
        <xs:attribute name="dest" type="xs:string"/>
        <xs:attribute name="spawn">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="input" type="xs:string"/>
        <xs:attribute name="inputstring" type="xs:string"/>
        <xs:attribute name="addsourcefile">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="verbose">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="logerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="forwardslash">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="outputproperty" type="xs:string"/>
        <xs:attribute name="resolveexecutable">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="append">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="vmlauncher">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="newenvironment">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="relative">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="parallel">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="existingType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="dirset" type="dirsetType"/>
            <xs:element name="extdirs" type="extdirsType"/>
            <xs:element name="filelist" type="filelistType"/>
            <xs:element name="existing" type="existingType"/>
            <xs:element name="pathelement" type="pathelementType"/>
            <xs:element name="path" type="pathType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="location" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="path" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="expandpropertiesType">
        <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
    <xs:complexType name="extdirsType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="dirset" type="dirsetType"/>
            <xs:element name="extdirs" type="extdirsType"/>
            <xs:element name="filelist" type="filelistType"/>
            <xs:element name="existing" type="existingType"/>
            <xs:element name="pathelement" type="pathelementType"/>
            <xs:element name="path" type="pathType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="location" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="path" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="extensionType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="implementationversion" type="xs:string"/>
        <xs:attribute name="specificationversion" type="xs:string"/>
        <xs:attribute name="extensionname" type="xs:string"/>
        <xs:attribute name="implementationvendorid" type="xs:string"/>
        <xs:attribute name="specificationvendor" type="xs:string"/>
        <xs:attribute name="implementationurl" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="implementationvendor" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="extensionSetType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="libfileset" type="libfilesetType"/>
            <xs:element name="extension" type="extensionType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="extensionsetType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="libfileset" type="libfilesetType"/>
            <xs:element name="extension" type="extensionType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="factoryType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="attribute" type="attributeType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="name" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="failType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="condition" type="conditionType"/>
        </xs:choice>
        <xs:attribute name="message" type="xs:string"/>
        <xs:attribute name="if" type="xs:string"/>
        <xs:attribute name="unless" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="failsoundType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="loops" type="xs:string"/>
        <xs:attribute name="source" type="xs:string"/>
        <xs:attribute name="duration" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="filelistType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="files" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="filenameType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="negate">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="filepathType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="dirset" type="dirsetType"/>
            <xs:element name="extdirs" type="extdirsType"/>
            <xs:element name="filelist" type="filelistType"/>
            <xs:element name="existing" type="existingType"/>
            <xs:element name="pathelement" type="pathelementType"/>
            <xs:element name="path" type="pathType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="location" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="path" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="resourcesType">
        <xs:attribute name="refid" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="filesetType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:string"/>
        <xs:attribute name="refid" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="filesmatchType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="file2" type="xs:string"/>
        <xs:attribute name="file1" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="filetokenizerType">
        <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
    <xs:complexType name="filterType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="token" type="xs:string"/>
        <xs:attribute name="value" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="filterchainType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="headfilter" type="headfilterType"/>
            <xs:element name="classconstants" type="classconstantsType"/>
            <xs:element name="linecontains" type="linecontainsType"/>
            <xs:element name="filterreader" type="filterreaderType"/>
            <xs:element name="replaceregex" type="replaceregexType"/>
            <xs:element name="replacetokens" type="replacetokensType"/>
            <xs:element name="escapeunicode" type="escapeunicodeType"/>
            <xs:element name="ignoreblank" type="ignoreblankType"/>
            <xs:element name="tailfilter" type="tailfilterType"/>
            <xs:element name="tabstospaces" type="tabstospacesType"/>
            <xs:element name="prefixlines" type="prefixlinesType"/>
            <xs:element name="expandproperties" type="expandpropertiesType"/>
            <xs:element name="striplinebreaks" type="striplinebreaksType"/>
            <xs:element name="trim" type="trimType"/>
            <xs:element name="striplinecomments" type="striplinecommentsType"/>
            <xs:element name="replacestring" type="replacestringType"/>
            <xs:element name="tokenfilter" type="tokenfilterType"/>
            <xs:element name="stripjavacomments" type="stripjavacommentsType"/>
            <xs:element name="containsregex" type="containsregexType"/>
            <xs:element name="deletecharacters" type="deletecharactersType"/>
            <xs:element name="linecontainsregexp" type="linecontainsregexpType"/>
            <xs:element name="concatfilter" type="concatfilterType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="filtermapperType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="replaceregex" type="replaceregexType"/>
            <xs:element name="scriptfilter" type="scriptfilterType"/>
        </xs:choice>
    </xs:complexType>
    <xs:complexType name="scriptmapperType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="id" type="xs:ID"/>
                <xs:attribute name="setbeans">
                    <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                            <xs:enumeration value="true"/>
                            <xs:enumeration value="false"/>
                            <xs:enumeration value="on"/>
                            <xs:enumeration value="off"/>
                            <xs:enumeration value="yes"/>
                            <xs:enumeration value="no"/>
                        </xs:restriction>
                    </xs:simpleType>
                </xs:attribute>
                <xs:attribute name="src" type="xs:string"/>
                <xs:attribute name="language" type="xs:string"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:complexType name="filterreaderType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="classpath" type="classpathType"/>
            <xs:element name="param" type="paramType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="classpath" type="xs:string"/>
        <xs:attribute name="classpathref" type="xs:IDREF"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="classname" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="filtersType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="include" type="includeType"/>
            <xs:element name="exclude" type="excludeType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="defaultexclude">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="filtersetType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="filterset" type="filtersetType"/>
            <xs:element name="filter" type="filterType"/>
            <xs:element name="filtersfile" type="filtersfileType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="begintoken" type="xs:string"/>
        <xs:attribute name="endtoken" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="filtersfile" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="filtersfileType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="file" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="fixcrlfType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="tab">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="add"/>
                    <xs:enumeration value="asis"/>
                    <xs:enumeration value="remove"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="encoding" type="xs:string"/>
        <xs:attribute name="cr">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="add"/>
                    <xs:enumeration value="asis"/>
                    <xs:enumeration value="remove"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="destdir" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="eol">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="asis"/>
                    <xs:enumeration value="cr"/>
                    <xs:enumeration value="lf"/>
                    <xs:enumeration value="crlf"/>
                    <xs:enumeration value="mac"/>
                    <xs:enumeration value="unix"/>
                    <xs:enumeration value="dos"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="javafiles">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="eof">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="add"/>
                    <xs:enumeration value="asis"/>
                    <xs:enumeration value="remove"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="tablength" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="fixlast">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="srcdir" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="footerType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="id" type="xs:ID"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:complexType name="formatType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="locale" type="xs:string"/>
        <xs:attribute name="timezone" type="xs:string"/>
        <xs:attribute name="unit">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="millisecond"/>
                    <xs:enumeration value="second"/>
                    <xs:enumeration value="minute"/>
                    <xs:enumeration value="hour"/>
                    <xs:enumeration value="day"/>
                    <xs:enumeration value="week"/>
                    <xs:enumeration value="month"/>
                    <xs:enumeration value="year"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="pattern" type="xs:string"/>
        <xs:attribute name="property" type="xs:string"/>
        <xs:attribute name="offset" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="fromType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="address" type="xs:string"/>
        <xs:attribute name="name" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="genericType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="arg" type="argType"/>
            <xs:element name="classpath" type="classpathType"/>
            <xs:element name="jvmarg" type="jvmargType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="classpath" type="xs:string"/>
        <xs:attribute name="password" type="xs:string"/>
        <xs:attribute name="server" type="xs:string"/>
        <xs:attribute name="classname" type="xs:string"/>
        <xs:attribute name="username" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="genkeyType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="dname" type="dnameType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="storepass" type="xs:string"/>
        <xs:attribute name="sigalg" type="xs:string"/>
        <xs:attribute name="verbose">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="keypass" type="xs:string"/>
        <xs:attribute name="dname" type="xs:string"/>
        <xs:attribute name="keysize" type="xs:string"/>
        <xs:attribute name="alias" type="xs:string"/>
        <xs:attribute name="keyalg" type="xs:string"/>
        <xs:attribute name="validity" type="xs:string"/>
        <xs:attribute name="keystore" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="storetype" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="getType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="src" type="xs:string"/>
        <xs:attribute name="verbose">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="ignoreerrors">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="username" type="xs:string"/>
        <xs:attribute name="usetimestamp">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="dest" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="password" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="grantType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="class" type="xs:string"/>
        <xs:attribute name="actions" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="groupType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="package" type="packageType"/>
            <xs:element name="title" type="titleType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="packages" type="xs:string"/>
        <xs:attribute name="title" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="gunzipType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="dest" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="src" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="gzipType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="zipfile" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="src" type="xs:string"/>
        <xs:attribute name="destfile" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="headerType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="id" type="xs:ID"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:complexType name="headfilterType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="lines" type="xs:string"/>
        <xs:attribute name="skip" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="httpType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="url" type="xs:string"/>
        <xs:attribute name="errorsbeginat" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="icontractType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="classpath" type="classpathType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="classdir" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="quiet">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="classpathref" type="xs:IDREF"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="repositorydir" type="xs:string"/>
        <xs:attribute name="instrumentdir" type="xs:string"/>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="builddir" type="xs:string"/>
        <xs:attribute name="updateicontrol">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="classpath" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="pre">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="controlfile" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="invariant">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="post">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="srcdir" type="xs:string"/>
        <xs:attribute name="failthrowable" type="xs:string"/>
        <xs:attribute name="verbosity" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="repbuilddir" type="xs:string"/>
        <xs:attribute name="targets" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="ignoreblankType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="byline">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="ilasmType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="reference" type="referenceType"/>
            <xs:element name="src" type="srcType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="owner" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="extraoptions" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="targettype">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="exe"/>
                    <xs:enumeration value="library"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="destfile" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="verbose">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="debug">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="includes" type="xs:string"/>
        <xs:attribute name="outputfile" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="resourcefile" type="xs:string"/>
        <xs:attribute name="srcdir" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="listing">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="keyfile" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="ildasmType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="assembler">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="encoding">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="ascii"/>
                    <xs:enumeration value="utf8"/>
                    <xs:enumeration value="unicode"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="executable" type="xs:string"/>
        <xs:attribute name="progressbar">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="linenumbers">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="rawexceptionhandling">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="showsource">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="metadata">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="destfile" type="xs:string"/>
        <xs:attribute name="srcfile" type="xs:string"/>
        <xs:attribute name="bytes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="resourcedir" type="xs:string"/>
        <xs:attribute name="quoteallnames">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="header">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="visibility" type="xs:string"/>
        <xs:attribute name="sourcefile" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="item" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="importType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="optional">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="importtypelibType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="unsafe">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="usesysarray">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="namespace" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="extraoptions" type="xs:string"/>
        <xs:attribute name="srcfile" type="xs:string"/>
        <xs:attribute name="destfile" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="includeType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="unless" type="xs:string"/>
        <xs:attribute name="if" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="includesfileType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="unless" type="xs:string"/>
        <xs:attribute name="if" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="inputType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="id" type="xs:ID"/>
                <xs:attribute name="taskname" type="xs:string"/>
                <xs:attribute name="addproperty" type="xs:string"/>
                <xs:attribute name="description" type="xs:string"/>
                <xs:attribute name="defaultvalue" type="xs:string"/>
                <xs:attribute name="validargs" type="xs:string"/>
                <xs:attribute name="message" type="xs:string"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:complexType name="isfalseType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="value">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="isreferenceType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="type" type="xs:string"/>
        <xs:attribute name="refid" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="issetType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="property" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="istrueType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="value">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="jarType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="manifest" type="manifestType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="metainf" type="metainfType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="zipgroupfileset" type="zipgroupfilesetType"/>
            <xs:element name="zipfileset" type="zipfilesetType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="whenempty">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="fail"/>
                    <xs:enumeration value="skip"/>
                    <xs:enumeration value="create"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="keepcompression">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="duplicate">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="add"/>
                    <xs:enumeration value="preserve"/>
                    <xs:enumeration value="fail"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="basedir" type="xs:string"/>
        <xs:attribute name="encoding" type="xs:string"/>
        <xs:attribute name="manifest" type="xs:string"/>
        <xs:attribute name="jarfile" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="index">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="update">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="destfile" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="includes" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="compress">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="manifestencoding" type="xs:string"/>
        <xs:attribute name="filesonly">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="filesetmanifest">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="skip"/>
                    <xs:enumeration value="merge"/>
                    <xs:enumeration value="mergewithoutmain"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="zipfile" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="jarlib-availableType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="extensionset" type="extensionsetType"/>
            <xs:element name="extension" type="extensionType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="property" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="jarlib-displayType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="jarlib-manifestType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="options" type="optionsType"/>
            <xs:element name="attribute" type="attributeType"/>
            <xs:element name="depends" type="dependsType"/>
            <xs:element name="extension" type="extensionType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="destfile" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="jarlib-resolveType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="ant" type="antType"/>
            <xs:element name="location" type="locationType"/>
            <xs:element name="url" type="urlType"/>
            <xs:element name="extension" type="extensionType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="checkextension">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="property" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="javaType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="classpath" type="classpathType"/>
            <xs:element name="sysproperty" type="syspropertyType"/>
            <xs:element name="bootclasspath" type="bootclasspathType"/>
            <xs:element name="syspropertyset" type="syspropertysetType"/>
            <xs:element name="env" type="envType"/>
            <xs:element name="permissions" type="permissionsType"/>
            <xs:element name="jvmarg" type="jvmargType"/>
            <xs:element name="arg" type="argType"/>
            <xs:element name="assertions" type="assertionsType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="resultproperty" type="xs:string"/>
        <xs:attribute name="jvmargs" type="xs:string"/>
        <xs:attribute name="args" type="xs:string"/>
        <xs:attribute name="fork">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="maxmemory" type="xs:string"/>
        <xs:attribute name="classpathref" type="xs:IDREF"/>
        <xs:attribute name="jar" type="xs:string"/>
        <xs:attribute name="errorproperty" type="xs:string"/>
        <xs:attribute name="output" type="xs:string"/>
        <xs:attribute name="timeout" type="xs:string"/>
        <xs:attribute name="spawn">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="input" type="xs:string"/>
        <xs:attribute name="jvm" type="xs:string"/>
        <xs:attribute name="inputstring" type="xs:string"/>
        <xs:attribute name="classpath" type="xs:string"/>
        <xs:attribute name="logerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="jvmversion" type="xs:string"/>
        <xs:attribute name="outputproperty" type="xs:string"/>
        <xs:attribute name="append">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="newenvironment">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="classname" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="javacType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="extdirs" type="extdirsType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="src" type="srcType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="classpath" type="classpathType"/>
            <xs:element name="sourcepath" type="sourcepathType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="bootclasspath" type="bootclasspathType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="compilerarg" type="compilerargType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="target" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="verbose">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="bootclasspathref" type="xs:IDREF"/>
        <xs:attribute name="compiler" type="xs:string"/>
        <xs:attribute name="executable" type="xs:string"/>
        <xs:attribute name="debuglevel" type="xs:string"/>
        <xs:attribute name="memoryinitialsize" type="xs:string"/>
        <xs:attribute name="deprecation">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="includeantruntime">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="sourcepathref" type="xs:IDREF"/>
        <xs:attribute name="depend">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="includes" type="xs:string"/>
        <xs:attribute name="source" type="xs:string"/>
        <xs:attribute name="includejavaruntime">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="destdir" type="xs:string"/>
        <xs:attribute name="debug">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="tempdir" type="xs:string"/>
        <xs:attribute name="classpath" type="xs:string"/>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="bootclasspath" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="nowarn">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="proceed">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="classpathref" type="xs:IDREF"/>
        <xs:attribute name="fork">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="srcdir" type="xs:string"/>
        <xs:attribute name="memorymaximumsize" type="xs:string"/>
        <xs:attribute name="optimize">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="encoding" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="sourcepath" type="xs:string"/>
        <xs:attribute name="listfiles">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="extdirs" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="javaccType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="debugparser">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="javacchome" type="xs:string"/>
        <xs:attribute name="forcelacheck">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="optimizetokenmanager">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="commontokenaction">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="buildtokenmanager">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="sanitycheck">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="buildparser">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="otherambiguitycheck" type="xs:string"/>
        <xs:attribute name="lookahead" type="xs:string"/>
        <xs:attribute name="debuglookahead">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="choiceambiguitycheck" type="xs:string"/>
        <xs:attribute name="unicodeinput">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="usercharstream">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="debugtokenmanager">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="keeplinecolumn">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="outputdirectory" type="xs:string"/>
        <xs:attribute name="cachetokens">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="javaunicodeescape">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="static">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="target" type="xs:string"/>
        <xs:attribute name="ignorecase">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="usertokenmanager">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="errorreporting">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="javadocType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="taglet" type="tagletType"/>
            <xs:element name="doclet" type="docletType"/>
            <xs:element name="package" type="packageType"/>
            <xs:element name="arg" type="argType"/>
            <xs:element name="link" type="linkType"/>
            <xs:element name="doctitle" type="doctitleType"/>
            <xs:element name="bottom" type="bottomType"/>
            <xs:element name="group" type="groupType"/>
            <xs:element name="packageset" type="packagesetType"/>
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="classpath" type="classpathType"/>
            <xs:element name="sourcepath" type="sourcepathType"/>
            <xs:element name="footer" type="footerType"/>
            <xs:element name="source" type="sourceType"/>
            <xs:element name="bootclasspath" type="bootclasspathType"/>
            <xs:element name="header" type="headerType"/>
            <xs:element name="excludepackage" type="excludepackageType"/>
            <xs:element name="tag" type="tagType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="bottom" type="xs:string"/>
        <xs:attribute name="verbose">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="bootclasspathref" type="xs:IDREF"/>
        <xs:attribute name="header" type="xs:string"/>
        <xs:attribute name="link" type="xs:string"/>
        <xs:attribute name="noindex">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="access">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="protected"/>
                    <xs:enumeration value="public"/>
                    <xs:enumeration value="package"/>
                    <xs:enumeration value="private"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="doclet" type="xs:string"/>
        <xs:attribute name="noqualifier" type="xs:string"/>
        <xs:attribute name="public">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="author">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="footer" type="xs:string"/>
        <xs:attribute name="docletpath" type="xs:string"/>
        <xs:attribute name="package">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="useexternalfile">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="sourcepathref" type="xs:IDREF"/>
        <xs:attribute name="protected">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="breakiterator">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="nonavbar">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="maxmemory" type="xs:string"/>
        <xs:attribute name="group" type="xs:string"/>
        <xs:attribute name="source" type="xs:string"/>
        <xs:attribute name="linkoffline" type="xs:string"/>
        <xs:attribute name="additionalparam" type="xs:string"/>
        <xs:attribute name="linksource">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="locale" type="xs:string"/>
        <xs:attribute name="destdir" type="xs:string"/>
        <xs:attribute name="classpath" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="bootclasspath" type="xs:string"/>
        <xs:attribute name="private">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="charset" type="xs:string"/>
        <xs:attribute name="nodeprecatedlist">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="classpathref" type="xs:IDREF"/>
        <xs:attribute name="stylesheetfile" type="xs:string"/>
        <xs:attribute name="docencoding" type="xs:string"/>
        <xs:attribute name="excludepackagenames" type="xs:string"/>
        <xs:attribute name="docletpathref" type="xs:IDREF"/>
        <xs:attribute name="packagenames" type="xs:string"/>
        <xs:attribute name="windowtitle" type="xs:string"/>
        <xs:attribute name="notree">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="splitindex">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="packagelist" type="xs:string"/>
        <xs:attribute name="encoding" type="xs:string"/>
        <xs:attribute name="doctitle" type="xs:string"/>
        <xs:attribute name="serialwarn">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="old">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="use">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="sourcepath" type="xs:string"/>
        <xs:attribute name="helpfile" type="xs:string"/>
        <xs:attribute name="version">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="sourcefiles" type="xs:string"/>
        <xs:attribute name="extdirs" type="xs:string"/>
        <xs:attribute name="nohelp">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="nodeprecated">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="overview" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="javadoc2Type">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="taglet" type="tagletType"/>
            <xs:element name="doclet" type="docletType"/>
            <xs:element name="package" type="packageType"/>
            <xs:element name="arg" type="argType"/>
            <xs:element name="link" type="linkType"/>
            <xs:element name="doctitle" type="doctitleType"/>
            <xs:element name="bottom" type="bottomType"/>
            <xs:element name="group" type="groupType"/>
            <xs:element name="packageset" type="packagesetType"/>
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="classpath" type="classpathType"/>
            <xs:element name="sourcepath" type="sourcepathType"/>
            <xs:element name="footer" type="footerType"/>
            <xs:element name="source" type="sourceType"/>
            <xs:element name="bootclasspath" type="bootclasspathType"/>
            <xs:element name="header" type="headerType"/>
            <xs:element name="excludepackage" type="excludepackageType"/>
            <xs:element name="tag" type="tagType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="bottom" type="xs:string"/>
        <xs:attribute name="verbose">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="bootclasspathref" type="xs:IDREF"/>
        <xs:attribute name="header" type="xs:string"/>
        <xs:attribute name="link" type="xs:string"/>
        <xs:attribute name="noindex">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="access">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="protected"/>
                    <xs:enumeration value="public"/>
                    <xs:enumeration value="package"/>
                    <xs:enumeration value="private"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="doclet" type="xs:string"/>
        <xs:attribute name="noqualifier" type="xs:string"/>
        <xs:attribute name="public">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="author">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="footer" type="xs:string"/>
        <xs:attribute name="docletpath" type="xs:string"/>
        <xs:attribute name="package">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="useexternalfile">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="sourcepathref" type="xs:IDREF"/>
        <xs:attribute name="protected">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="breakiterator">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="nonavbar">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="maxmemory" type="xs:string"/>
        <xs:attribute name="group" type="xs:string"/>
        <xs:attribute name="source" type="xs:string"/>
        <xs:attribute name="linkoffline" type="xs:string"/>
        <xs:attribute name="additionalparam" type="xs:string"/>
        <xs:attribute name="linksource">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="locale" type="xs:string"/>
        <xs:attribute name="destdir" type="xs:string"/>
        <xs:attribute name="classpath" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="bootclasspath" type="xs:string"/>
        <xs:attribute name="private">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="charset" type="xs:string"/>
        <xs:attribute name="nodeprecatedlist">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="classpathref" type="xs:IDREF"/>
        <xs:attribute name="stylesheetfile" type="xs:string"/>
        <xs:attribute name="docencoding" type="xs:string"/>
        <xs:attribute name="excludepackagenames" type="xs:string"/>
        <xs:attribute name="docletpathref" type="xs:IDREF"/>
        <xs:attribute name="packagenames" type="xs:string"/>
        <xs:attribute name="windowtitle" type="xs:string"/>
        <xs:attribute name="notree">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="splitindex">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="packagelist" type="xs:string"/>
        <xs:attribute name="encoding" type="xs:string"/>
        <xs:attribute name="doctitle" type="xs:string"/>
        <xs:attribute name="serialwarn">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="old">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="use">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="sourcepath" type="xs:string"/>
        <xs:attribute name="helpfile" type="xs:string"/>
        <xs:attribute name="version">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="sourcefiles" type="xs:string"/>
        <xs:attribute name="extdirs" type="xs:string"/>
        <xs:attribute name="nohelp">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="nodeprecated">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="overview" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="javahType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="classpath" type="classpathType"/>
            <xs:element name="class" type="classType"/>
            <xs:element name="bootclasspath" type="bootclasspathType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="stubs">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="force">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="destdir" type="xs:string"/>
        <xs:attribute name="classpath" type="xs:string"/>
        <xs:attribute name="old">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="outputfile" type="xs:string"/>
        <xs:attribute name="class" type="xs:string"/>
        <xs:attribute name="verbose">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="bootclasspath" type="xs:string"/>
        <xs:attribute name="bootclasspathref" type="xs:IDREF"/>
        <xs:attribute name="classpathref" type="xs:IDREF"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="jjdocType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="outputfile" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="javacchome" type="xs:string"/>
        <xs:attribute name="target" type="xs:string"/>
        <xs:attribute name="text">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="onetable">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="jjtreeType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="nodedefaultvoid">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="buildnodefiles">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="outputdirectory" type="xs:string"/>
        <xs:attribute name="outputfile" type="xs:string"/>
        <xs:attribute name="static">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="javacchome" type="xs:string"/>
        <xs:attribute name="nodeprefix" type="xs:string"/>
        <xs:attribute name="nodefactory">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="multi">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="visitor">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="target" type="xs:string"/>
        <xs:attribute name="nodeusesparser">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="visitorexception" type="xs:string"/>
        <xs:attribute name="nodescopehook">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="nodepackage" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="jlinkType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="mergefiles" type="mergefilesType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="addfiles" type="addfilesType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="outfile" type="xs:string"/>
        <xs:attribute name="compress">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="addfiles" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="mergefiles" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="jonasType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="classpath" type="classpathType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="jonasroot" type="xs:string"/>
        <xs:attribute name="keepgeneric">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="additionalargs" type="xs:string"/>
        <xs:attribute name="javac" type="xs:string"/>
        <xs:attribute name="destdir" type="xs:string"/>
        <xs:attribute name="classpath" type="xs:string"/>
        <xs:attribute name="orb" type="xs:string"/>
        <xs:attribute name="jarsuffix" type="xs:string"/>
        <xs:attribute name="verbose">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="genericjarsuffix" type="xs:string"/>
        <xs:attribute name="nogenic">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="rmicopts" type="xs:string"/>
        <xs:attribute name="javacopts" type="xs:string"/>
        <xs:attribute name="novalidation">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="keepgenerated">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="nocompil">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="secpropag">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="jpcoverageType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="arg" type="argType"/>
            <xs:element name="socket" type="socketType"/>
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="jvmarg" type="jvmargType"/>
            <xs:element name="classpath" type="classpathType"/>
            <xs:element name="triggers" type="triggersType"/>
            <xs:element name="filters" type="filtersType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="applet">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="recordfromstart">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="coverage"/>
                    <xs:enumeration value="none"/>
                    <xs:enumeration value="all"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="vm">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="java2"/>
                    <xs:enumeration value="jdk118"/>
                    <xs:enumeration value="jdk117"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="classname" type="xs:string"/>
        <xs:attribute name="workingdir" type="xs:string"/>
        <xs:attribute name="inputfile" type="xs:string"/>
        <xs:attribute name="snapshotdir" type="xs:string"/>
        <xs:attribute name="seedname" type="xs:string"/>
        <xs:attribute name="javaexe" type="xs:string"/>
        <xs:attribute name="home" type="xs:string"/>
        <xs:attribute name="exitprompt" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="warnlevel" type="xs:string"/>
        <xs:attribute name="finalsnapshot" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="tracknatives">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="jpcovmergeType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="verbose">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="tofile" type="xs:string"/>
        <xs:attribute name="home" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="jpcovreportType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="reference" type="referenceType"/>
            <xs:element name="coveragepath" type="coveragepathType"/>
            <xs:element name="sourcepath" type="sourcepathType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="snapshot" type="xs:string"/>
        <xs:attribute name="tofile" type="xs:string"/>
        <xs:attribute name="filters" type="xs:string"/>
        <xs:attribute name="percent" type="xs:string"/>
        <xs:attribute name="home" type="xs:string"/>
        <xs:attribute name="type">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="executive"/>
                    <xs:enumeration value="summary"/>
                    <xs:enumeration value="detailed"/>
                    <xs:enumeration value="verydetailed"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="format">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="html"/>
                    <xs:enumeration value="text"/>
                    <xs:enumeration value="xml"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="includesource">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="jsharpcType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="resource" type="resourceType"/>
            <xs:element name="define" type="defineType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="reference" type="referenceType"/>
            <xs:element name="src" type="srcType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="references" type="xs:string"/>
        <xs:attribute name="useresponsefile">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="mainclass" type="xs:string"/>
        <xs:attribute name="extraoptions" type="xs:string"/>
        <xs:attribute name="additionalmodules" type="xs:string"/>
        <xs:attribute name="win32icon" type="xs:string"/>
        <xs:attribute name="destdir" type="xs:string"/>
        <xs:attribute name="executable" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="utf8output">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="includedefaultreferences">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="optimize">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="targettype">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="exe"/>
                    <xs:enumeration value="library"/>
                    <xs:enumeration value="module"/>
                    <xs:enumeration value="winexe"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="destfile" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="win32res" type="xs:string"/>
        <xs:attribute name="baseaddress" type="xs:string"/>
        <xs:attribute name="debug">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="securescoping">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="includes" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="purejava">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="warnlevel" type="xs:string"/>
        <xs:attribute name="srcdir" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="referencefiles" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="jspcType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="compilerclasspath" type="compilerclasspathType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="classpath" type="classpathType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="webapp" type="webappType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="mapped">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="ieplugin" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="classpathref" type="xs:IDREF"/>
        <xs:attribute name="package" type="xs:string"/>
        <xs:attribute name="destdir" type="xs:string"/>
        <xs:attribute name="compilerclasspath" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="uribase" type="xs:string"/>
        <xs:attribute name="classpath" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="verbose" type="xs:string"/>
        <xs:attribute name="compiler" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="webxml" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="srcdir" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="uriroot" type="xs:string"/>
        <xs:attribute name="webinc" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="junitType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="formatter" type="formatterType"/>
            <xs:element name="classpath" type="classpathType"/>
            <xs:element name="batchtest" type="batchtestType"/>
            <xs:element name="sysproperty" type="syspropertyType"/>
        </xs:choice>
        <xs:attribute name="fork" type="xs:string"/>
        <xs:attribute name="printsummary" type="xs:string"/>
        <xs:attribute name="haltonfailure" type="xs:string"/>
        <xs:attribute name="showoutput" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="junitreportType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="report" type="reportType"/>
            <xs:element name="fileset" type="filesetType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="todir" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="tofile" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="cobertura-instrumentType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="ignore" type="ignoreType"/>
            <xs:element name="fileset" type="filesetType"/>
        </xs:choice>
        <xs:attribute name="todir" type="xs:string"/>
        <xs:attribute name="datafile" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="cobertura-reportType">
        <xs:choice minOccurs="0" maxOccurs="unbounded"/>
        <xs:attribute name="format" type="xs:string"/>
        <xs:attribute name="destdir" type="xs:string"/>
        <xs:attribute name="srcdir" type="xs:string"/>
        <xs:attribute name="datafile" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="formatterType">
        <xs:attribute name="type" type="xs:string"/>
        <xs:attribute name="usefile" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="batchtestType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="formatter" type="formatterType"/>
            <xs:element name="fileset" type="filesetType"/>
        </xs:choice>
        <xs:attribute name="fork" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="ignoreType">
        <xs:attribute name="regex" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="jvmargType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="line" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="pathref" type="xs:IDREF"/>
        <xs:attribute name="value" type="xs:string"/>
        <xs:attribute name="path" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="libType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="src" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="filemode" type="xs:string"/>
        <xs:attribute name="prefix" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="fullpath" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
        <xs:attribute name="dirmode" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="libfilesetType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="urlbase" type="xs:string"/>
        <xs:attribute name="includeimpl">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="includeurl">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="linecontainsType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="contains" type="linecontains_containsType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
    <xs:complexType name="linecontains_containsType">
        <xs:attribute name="value" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="linecontainsregexpType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="regexp" type="regexpType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
    <xs:complexType name="linetokenizerType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="includedelims">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="linkType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="href" type="xs:string"/>
        <xs:attribute name="offline">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="packagelistloc" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="loadfileType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="filterchain" type="filterchainType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="encoding" type="xs:string"/>
        <xs:attribute name="property" type="xs:string"/>
        <xs:attribute name="srcFile" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="loadresourceType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="propertyresource" type="propertyresourceType"/>
            <xs:element name="filterchain" type="filterchainType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="encoding" type="xs:string"/>
        <xs:attribute name="property" type="xs:string"/>
        <xs:attribute name="quiet" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="loadpropertiesType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="filterchain" type="filterchainType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="encoding" type="xs:string"/>
        <xs:attribute name="srcFile" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="locationType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="location" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="macrodefType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="sequential" type="sequentialType"/>
            <xs:element name="element" type="elementType"/>
            <xs:element name="attribute" type="attributeType"/>
            <xs:element name="text" type="textType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="uri" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="mailType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="bcc" type="bccType"/>
            <xs:element name="message" type="messageType"/>
            <xs:element name="replyto" type="replytoType"/>
            <xs:element name="cc" type="ccType"/>
            <xs:element name="to" type="toType"/>
            <xs:element name="from" type="fromType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="cclist" type="xs:string"/>
        <xs:attribute name="messagefile" type="xs:string"/>
        <xs:attribute name="password" type="xs:string"/>
        <xs:attribute name="encoding">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="auto"/>
                    <xs:enumeration value="mime"/>
                    <xs:enumeration value="uu"/>
                    <xs:enumeration value="plain"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="charset" type="xs:string"/>
        <xs:attribute name="files" type="xs:string"/>
        <xs:attribute name="subject" type="xs:string"/>
        <xs:attribute name="message" type="xs:string"/>
        <xs:attribute name="ssl">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="tolist" type="xs:string"/>
        <xs:attribute name="mailport" type="xs:string"/>
        <xs:attribute name="messagemimetype" type="xs:string"/>
        <xs:attribute name="bcclist" type="xs:string"/>
        <xs:attribute name="from" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="replyto" type="xs:string"/>
        <xs:attribute name="mailhost" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="includefilenames">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="user" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="majorityType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="custom" type="customType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="and" type="andType"/>
            <xs:element name="depth" type="depthType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="allowtie">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="manifestType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="attribute" type="attributeType"/>
            <xs:element name="section" type="sectionType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
    <xs:complexType name="mapType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="from" type="xs:string"/>
        <xs:attribute name="to" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="mapperType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="classpath" type="classpathType"/>
            <xs:element name="chainedmapper" type="chainedmapperType"/>
            <xs:element name="filtermapper" type="filtermapperType"/>
            <xs:element name="scriptmapper" type="scriptmapperType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="classpath" type="xs:string"/>
        <xs:attribute name="classpathref" type="xs:IDREF"/>
        <xs:attribute name="type">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="identity"/>
                    <xs:enumeration value="flatten"/>
                    <xs:enumeration value="glob"/>
                    <xs:enumeration value="merge"/>
                    <xs:enumeration value="regexp"/>
                    <xs:enumeration value="package"/>
                    <xs:enumeration value="unpackage"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="classname" type="xs:string"/>
        <xs:attribute name="from" type="xs:string"/>
        <xs:attribute name="to" type="xs:string"/>
        <!-- TODO: define separate globmapper type because it has extra attributes -->
        <!--<xs:attribute name="casesensitive" type="xs:string"/>-->
    </xs:complexType>
    <xs:complexType name="globmapperType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="classpath" type="xs:string"/>
        <xs:attribute name="classpathref" type="xs:IDREF"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="classname" type="xs:string"/>
        <xs:attribute name="from" type="xs:string"/>
        <xs:attribute name="to" type="xs:string"/>
        <xs:attribute name="casesensitive" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="markerType">
        <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
    <xs:complexType name="mauditType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="jvmarg" type="jvmargType"/>
            <xs:element name="classpath" type="classpathType"/>
            <xs:element name="rulespath" type="rulespathType"/>
            <xs:element name="searchpath" type="searchpathType"/>
            <xs:element name="sourcepath" type="sourcepathType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="tofile" type="xs:string"/>
        <xs:attribute name="exit">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="offsets">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="quiet">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="unused">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="verbose">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="maxmemory" type="xs:string"/>
        <xs:attribute name="fix">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="metamatahome" type="xs:string"/>
        <xs:attribute name="list">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="home" type="xs:string"/>
        <xs:attribute name="fullsemanticize">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="mergefilesType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="dirset" type="dirsetType"/>
            <xs:element name="extdirs" type="extdirsType"/>
            <xs:element name="filelist" type="filelistType"/>
            <xs:element name="existing" type="existingType"/>
            <xs:element name="pathelement" type="pathelementType"/>
            <xs:element name="path" type="pathType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="location" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="path" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="messageType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="id" type="xs:ID"/>
                <xs:attribute name="mimetype" type="xs:string"/>
                <xs:attribute name="src" type="xs:string"/>
                <xs:attribute name="charset" type="xs:string"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:complexType name="metainfType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="src" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="filemode" type="xs:string"/>
        <xs:attribute name="prefix" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="fullpath" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
        <xs:attribute name="dirmode" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="methodType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="event" type="xs:string"/>
        <xs:attribute name="action" type="xs:string"/>
        <xs:attribute name="param" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="mimemailType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="bcc" type="bccType"/>
            <xs:element name="message" type="messageType"/>
            <xs:element name="replyto" type="replytoType"/>
            <xs:element name="cc" type="ccType"/>
            <xs:element name="to" type="toType"/>
            <xs:element name="from" type="fromType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="cclist" type="xs:string"/>
        <xs:attribute name="messagefile" type="xs:string"/>
        <xs:attribute name="password" type="xs:string"/>
        <xs:attribute name="encoding">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="auto"/>
                    <xs:enumeration value="mime"/>
                    <xs:enumeration value="uu"/>
                    <xs:enumeration value="plain"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="charset" type="xs:string"/>
        <xs:attribute name="files" type="xs:string"/>
        <xs:attribute name="subject" type="xs:string"/>
        <xs:attribute name="message" type="xs:string"/>
        <xs:attribute name="ssl">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="tolist" type="xs:string"/>
        <xs:attribute name="mailport" type="xs:string"/>
        <xs:attribute name="messagemimetype" type="xs:string"/>
        <xs:attribute name="bcclist" type="xs:string"/>
        <xs:attribute name="from" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="replyto" type="xs:string"/>
        <xs:attribute name="mailhost" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="includefilenames">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="user" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="mkdirType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="modifiedType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="param" type="paramType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="comparator">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="equal"/>
                    <xs:enumeration value="rule"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="seldirs">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="cache">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="propertyfile"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="algorithm">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="hashvalue"/>
                    <xs:enumeration value="digest"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="update">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="moveType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="filterchain" type="filterchainType"/>
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="filterset" type="filtersetType"/>
            <xs:element name="mapper" type="mapperType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="flatten">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="tofile" type="xs:string"/>
        <xs:attribute name="encoding" type="xs:string"/>
        <xs:attribute name="todir" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="verbose">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="includeemptydirs">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="overwrite">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="enablemultiplemappings">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="outputencoding" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="preservelastmodified">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="filtering">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="native2asciiType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="mapper" type="mapperType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="src" type="xs:string"/>
        <xs:attribute name="encoding" type="xs:string"/>
        <xs:attribute name="ext" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="reverse">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="dest" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="noneType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="custom" type="customType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="and" type="andType"/>
            <xs:element name="depth" type="depthType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="notType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="custom" type="customType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="and" type="andType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="filesmatch" type="filesmatchType"/>
            <xs:element name="equals" type="equalsType"/>
            <xs:element name="isset" type="issetType"/>
            <xs:element name="available" type="availableType"/>
            <xs:element name="uptodate" type="uptodateType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="optionsType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="libfileset" type="libfilesetType"/>
            <xs:element name="extension" type="extensionType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="orType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="custom" type="customType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="and" type="andType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="equals" type="equalsType"/>
            <xs:element name="isset" type="issetType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="osType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="version" type="xs:string"/>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="family" type="xs:string"/>
        <xs:attribute name="arch" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="outputpropertyType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="value" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="p4addType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="port" type="xs:string"/>
        <xs:attribute name="client" type="xs:string"/>
        <xs:attribute name="inerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="user" type="xs:string"/>
        <xs:attribute name="changelist" type="xs:string"/>
        <xs:attribute name="cmdopts" type="xs:string"/>
        <xs:attribute name="globalopts" type="xs:string"/>
        <xs:attribute name="view" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="errormessage" type="xs:string"/>
        <xs:attribute name="commandlength" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="p4changeType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="port" type="xs:string"/>
        <xs:attribute name="client" type="xs:string"/>
        <xs:attribute name="inerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="user" type="xs:string"/>
        <xs:attribute name="cmdopts" type="xs:string"/>
        <xs:attribute name="globalopts" type="xs:string"/>
        <xs:attribute name="view" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="errormessage" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="p4counterType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="port" type="xs:string"/>
        <xs:attribute name="client" type="xs:string"/>
        <xs:attribute name="inerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="user" type="xs:string"/>
        <xs:attribute name="cmdopts" type="xs:string"/>
        <xs:attribute name="globalopts" type="xs:string"/>
        <xs:attribute name="view" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="value" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="property" type="xs:string"/>
        <xs:attribute name="errormessage" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="p4deleteType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="port" type="xs:string"/>
        <xs:attribute name="client" type="xs:string"/>
        <xs:attribute name="inerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="user" type="xs:string"/>
        <xs:attribute name="cmdopts" type="xs:string"/>
        <xs:attribute name="globalopts" type="xs:string"/>
        <xs:attribute name="view" type="xs:string"/>
        <xs:attribute name="change" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="errormessage" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="p4editType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="port" type="xs:string"/>
        <xs:attribute name="client" type="xs:string"/>
        <xs:attribute name="inerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="user" type="xs:string"/>
        <xs:attribute name="cmdopts" type="xs:string"/>
        <xs:attribute name="globalopts" type="xs:string"/>
        <xs:attribute name="view" type="xs:string"/>
        <xs:attribute name="change" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="errormessage" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="p4fstatType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="port" type="xs:string"/>
        <xs:attribute name="client" type="xs:string"/>
        <xs:attribute name="inerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="user" type="xs:string"/>
        <xs:attribute name="changelist" type="xs:string"/>
        <xs:attribute name="cmdopts" type="xs:string"/>
        <xs:attribute name="globalopts" type="xs:string"/>
        <xs:attribute name="view" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="errormessage" type="xs:string"/>
        <xs:attribute name="showfilter" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="p4haveType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="port" type="xs:string"/>
        <xs:attribute name="client" type="xs:string"/>
        <xs:attribute name="inerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="user" type="xs:string"/>
        <xs:attribute name="cmdopts" type="xs:string"/>
        <xs:attribute name="globalopts" type="xs:string"/>
        <xs:attribute name="view" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="errormessage" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="p4integrateType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="branch" type="xs:string"/>
        <xs:attribute name="leavetargetrevision">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="errormessage" type="xs:string"/>
        <xs:attribute name="forceintegrate">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="client" type="xs:string"/>
        <xs:attribute name="enablebaselessmerges">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="fromfile" type="xs:string"/>
        <xs:attribute name="reversebranchmappings">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="port" type="xs:string"/>
        <xs:attribute name="change" type="xs:string"/>
        <xs:attribute name="simulationmode">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="propagatesourcefiletype">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="view" type="xs:string"/>
        <xs:attribute name="nocopynewtargetfiles">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="tofile" type="xs:string"/>
        <xs:attribute name="cmdopts" type="xs:string"/>
        <xs:attribute name="globalopts" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="restoredeletedrevisions">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="inerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="user" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="p4labelType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="port" type="xs:string"/>
        <xs:attribute name="client" type="xs:string"/>
        <xs:attribute name="inerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="user" type="xs:string"/>
        <xs:attribute name="cmdopts" type="xs:string"/>
        <xs:attribute name="desc" type="xs:string"/>
        <xs:attribute name="globalopts" type="xs:string"/>
        <xs:attribute name="view" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="errormessage" type="xs:string"/>
        <xs:attribute name="lock" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="p4labelsyncType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="port" type="xs:string"/>
        <xs:attribute name="client" type="xs:string"/>
        <xs:attribute name="inerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="user" type="xs:string"/>
        <xs:attribute name="cmdopts" type="xs:string"/>
        <xs:attribute name="globalopts" type="xs:string"/>
        <xs:attribute name="simulationmode">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="view" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="errormessage" type="xs:string"/>
        <xs:attribute name="delete">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="add">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="p4reopenType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="tochange" type="xs:string"/>
        <xs:attribute name="port" type="xs:string"/>
        <xs:attribute name="client" type="xs:string"/>
        <xs:attribute name="inerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="user" type="xs:string"/>
        <xs:attribute name="cmdopts" type="xs:string"/>
        <xs:attribute name="globalopts" type="xs:string"/>
        <xs:attribute name="view" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="errormessage" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="p4resolveType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="forcetextmode">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="port" type="xs:string"/>
        <xs:attribute name="client" type="xs:string"/>
        <xs:attribute name="inerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="user" type="xs:string"/>
        <xs:attribute name="cmdopts" type="xs:string"/>
        <xs:attribute name="globalopts" type="xs:string"/>
        <xs:attribute name="markersforall">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="simulationmode">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="view" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="errormessage" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="resolvemode" type="xs:string"/>
        <xs:attribute name="redoall">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="p4revertType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="port" type="xs:string"/>
        <xs:attribute name="client" type="xs:string"/>
        <xs:attribute name="inerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="revertonlyunchanged">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="user" type="xs:string"/>
        <xs:attribute name="cmdopts" type="xs:string"/>
        <xs:attribute name="globalopts" type="xs:string"/>
        <xs:attribute name="view" type="xs:string"/>
        <xs:attribute name="change" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="errormessage" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="p4submitType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="port" type="xs:string"/>
        <xs:attribute name="client" type="xs:string"/>
        <xs:attribute name="inerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="user" type="xs:string"/>
        <xs:attribute name="needsresolveproperty" type="xs:string"/>
        <xs:attribute name="changeproperty" type="xs:string"/>
        <xs:attribute name="cmdopts" type="xs:string"/>
        <xs:attribute name="globalopts" type="xs:string"/>
        <xs:attribute name="view" type="xs:string"/>
        <xs:attribute name="change" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="errormessage" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="p4syncType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="force" type="xs:string"/>
        <xs:attribute name="port" type="xs:string"/>
        <xs:attribute name="client" type="xs:string"/>
        <xs:attribute name="inerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="user" type="xs:string"/>
        <xs:attribute name="cmdopts" type="xs:string"/>
        <xs:attribute name="globalopts" type="xs:string"/>
        <xs:attribute name="view" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="label" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="errormessage" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="packageType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="name" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="packagesetType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="parallelType">
        <xs:complexContent>
            <xs:extension base="taskcontainerType">
                <xs:attribute name="id" type="xs:ID"/>
                <xs:attribute name="pollinterval" type="xs:string"/>
                <xs:attribute name="taskname" type="xs:string"/>
                <xs:attribute name="description" type="xs:string"/>
                <xs:attribute name="threadsperprocessor" type="xs:string"/>
                <xs:attribute name="timeout" type="xs:string"/>
                <xs:attribute name="threadcount" type="xs:string"/>
                <xs:attribute name="failonany">
                    <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                            <xs:enumeration value="true"/>
                            <xs:enumeration value="false"/>
                            <xs:enumeration value="on"/>
                            <xs:enumeration value="off"/>
                            <xs:enumeration value="yes"/>
                            <xs:enumeration value="no"/>
                        </xs:restriction>
                    </xs:simpleType>
                </xs:attribute>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="paramType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="type" type="xs:string"/>
        <xs:attribute name="value" type="xs:string"/>
        <xs:attribute name="location" type="xs:string"/>
        <xs:attribute name="expression" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="patchType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="strip" type="xs:string"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="destfile" type="xs:string"/>
        <xs:attribute name="quiet">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="originalfile" type="xs:string"/>
        <xs:attribute name="patchfile" type="xs:string"/>
        <xs:attribute name="reverse">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="backups">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="ignorewhitespace">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="pathType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="dirset" type="dirsetType"/>
            <xs:element name="extdirs" type="extdirsType"/>
            <xs:element name="filelist" type="filelistType"/>
            <xs:element name="existing" type="existingType"/>
            <xs:element name="pathelement" type="pathelementType"/>
            <xs:element name="path" type="pathType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="location" type="xs:string"/>
        <xs:attribute name="refid" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="path" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="pathconvertType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="path" type="pathType"/>
            <xs:element name="map" type="mapType"/>
            <xs:element name="mapper" type="mapperType"/>
            <xs:element name="resources" type="resourcesType"/>
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="dirset" type="dirsetType"/>
            <xs:element name="first" type="firstType"/>
            <xs:element name="globmapper" type="globmapperType"/>
            <xs:element name="chainedmapper" type="chainedmapperType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="pathsep" type="xs:string"/>
        <xs:attribute name="refid" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="dirsep" type="xs:string"/>
        <xs:attribute name="setonempty">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="property" type="xs:string"/>
        <xs:attribute name="targetos" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="pathelementType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="location" type="xs:string"/>
        <xs:attribute name="path" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="patternsetType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="include" type="includeType"/>
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="includesfile" type="includesfileType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="includes" type="xs:string"/>
        <xs:attribute name="refid" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="permissionsType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="grant" type="grantType"/>
            <xs:element name="revoke" type="revokeType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
    <xs:complexType name="prefixlinesType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="prefix" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="presentType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="mapper" type="mapperType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="targetdir" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="present">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="srconly"/>
                    <xs:enumeration value="both"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="presetdefType">
        <xs:complexContent>
            <xs:extension base="taskcontainerType">
                <xs:attribute name="id" type="xs:ID"/>
                <xs:attribute name="taskname" type="xs:string"/>
                <xs:attribute name="name" type="xs:string"/>
                <xs:attribute name="description" type="xs:string"/>
                <xs:attribute name="uri" type="xs:string"/>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:element name="project">
        <xs:complexType>
            <xs:choice minOccurs="0" maxOccurs="unbounded">
                <xs:element name="target" type="targetType"/>
                <xs:element name="propertyfile" type="propertyfileType"/>
                <xs:element name="importtypelib" type="importtypelibType"/>
                <xs:element name="sql" type="sqlType"/>
                <xs:element name="cvspass" type="cvspassType"/>
                <xs:element name="p4reopen" type="p4reopenType"/>
                <xs:element name="csc" type="cscType"/>
                <xs:element name="dirname" type="dirnameType"/>
                <xs:element name="p4label" type="p4labelType"/>
                <xs:element name="p4revert" type="p4revertType"/>
                <xs:element name="replaceregexp" type="replaceregexpType"/>
                <xs:element name="get" type="getType"/>
                <xs:element name="jjtree" type="jjtreeType"/>
                <xs:element name="sleep" type="sleepType"/>
                <xs:element name="jarlib-display" type="jarlib-displayType"/>
                <xs:element name="dependset" type="dependsetType"/>
                <xs:element name="zip" type="zipType"/>
                <xs:element name="patch" type="patchType"/>
                <xs:element name="jspc" type="jspcType"/>
                <xs:element name="style" type="styleType"/>
                <xs:element name="test" type="testType"/>
                <xs:element name="tstamp" type="tstampType"/>
                <xs:element name="unwar" type="unwarType"/>
                <xs:element name="icontract" type="icontractType"/>
                <xs:element name="cvschangelog" type="cvschangelogType"/>
                <xs:element name="p4submit" type="p4submitType"/>
                <xs:element name="p4change" type="p4changeType"/>
                <xs:element name="bzip2" type="bzip2Type"/>
                <xs:element name="sync" type="syncType"/>
                <xs:element name="p4delete" type="p4deleteType"/>
                <xs:element name="javadoc" type="javadocType"/>
                <xs:element name="p4integrate" type="p4integrateType"/>
                <xs:element name="translate" type="translateType"/>
                <xs:element name="signjar" type="signjarType"/>
                <xs:element name="chown" type="chownType"/>
                <xs:element name="vajload" type="vajloadType"/>
                <xs:element name="jarlib-available" type="jarlib-availableType"/>
                <xs:element name="buildnumber" type="buildnumberType"/>
                <xs:element name="jpcovmerge" type="jpcovmergeType"/>
                <xs:element name="war" type="warType"/>
                <xs:element name="rename" type="renameType"/>
                <xs:element name="sequential" type="sequentialType"/>
                <xs:element name="serverdeploy" type="serverdeployType"/>
                <xs:element name="property" type="propertyType"/>
                <xs:element name="subant" type="subantType"/>
                <xs:element name="move" type="moveType"/>
                <xs:element name="ildasm" type="ildasmType"/>
                <xs:element name="copydir" type="copydirType"/>
                <xs:element name="fixcrlf" type="fixcrlfType"/>
                <xs:element name="pathconvert" type="pathconvertType"/>
                <xs:element name="record" type="recordType"/>
                <xs:element name="p4sync" type="p4syncType"/>
                <xs:element name="exec" type="execType"/>
                <xs:element name="ccmklabel" type="ccmklabelType"/>
                <xs:element name="p4edit" type="p4editType"/>
                <xs:element name="manifest" type="manifestType"/>
                <xs:element name="maudit" type="mauditType"/>
                <xs:element name="antlr" type="antlrType"/>
                <xs:element name="jpcovreport" type="jpcovreportType"/>
                <xs:element name="execon" type="execonType"/>
                <xs:element name="ant" type="antType"/>
                <xs:element name="xmlvalidate" type="xmlvalidateType"/>
                <xs:element name="xslt" type="xsltType"/>
                <xs:element name="p4resolve" type="p4resolveType"/>
                <xs:element name="gzip" type="gzipType"/>
                <xs:element name="native2ascii" type="native2asciiType"/>
                <xs:element name="ccrmtype" type="ccrmtypeType"/>
                <xs:element name="ear" type="earType"/>
                <xs:element name="input" type="inputType"/>
                <xs:element name="presetdef" type="presetdefType"/>
                <xs:element name="rmic" type="rmicType"/>
                <xs:element name="checksum" type="checksumType"/>
                <xs:element name="mail" type="mailType"/>
                <xs:element name="loadfile" type="loadfileType"/>
                <xs:element name="mimemail" type="mimemailType"/>
                <xs:element name="gunzip" type="gunzipType"/>
                <xs:element name="concat" type="concatType"/>
                <xs:element name="cab" type="cabType"/>
                <xs:element name="touch" type="touchType"/>
                <xs:element name="parallel" type="parallelType"/>
                <xs:element name="splash" type="splashType"/>
                <xs:element name="antcall" type="antcallType"/>
                <xs:element name="typedef" type="typedefType"/>
                <xs:element name="p4have" type="p4haveType"/>
                <xs:element name="filter" type="filterType"/>
                <xs:element name="xmlproperty" type="xmlpropertyType"/>
                <xs:element name="import" type="importType"/>
                <xs:element name="copy" type="copyType"/>
                <xs:element name="jsharpc" type="jsharpcType"/>
                <xs:element name="symlink" type="symlinkType"/>
                <xs:element name="antstructure" type="antstructureType"/>
                <xs:element name="script" type="scriptType"/>
                <xs:element name="rpm" type="rpmType"/>
                <xs:element name="delete" type="deleteType"/>
                <xs:element name="replace" type="replaceType"/>
                <xs:element name="attrib" type="attribType"/>
                <xs:element name="waitfor" type="waitforType"/>
                <xs:element name="untar" type="untarType"/>
                <xs:element name="loadproperties" type="loadpropertiesType"/>
                <xs:element name="available" type="availableType"/>
                <xs:element name="echoproperties" type="echopropertiesType"/>
                <xs:element name="chgrp" type="chgrpType"/>
                <xs:element name="vajexport" type="vajexportType"/>
                <xs:element name="bunzip2" type="bunzip2Type"/>
                <xs:element name="whichresource" type="whichresourceType"/>
                <xs:element name="copyfile" type="copyfileType"/>
                <xs:element name="p4labelsync" type="p4labelsyncType"/>
                <xs:element name="macrodef" type="macrodefType"/>
                <xs:element name="unjar" type="unjarType"/>
                <xs:element name="vbc" type="vbcType"/>
                <xs:element name="mkdir" type="mkdirType"/>
                <xs:element name="condition" type="conditionType"/>
                <xs:element name="cvs" type="cvsType"/>
                <xs:element name="tempfile" type="tempfileType"/>
                <xs:element name="junit" type="junitType"/>
                <xs:element name="junitreport" type="junitreportType"/>
                <xs:element name="cobertura-instrument" type="cobertura-instrumentType"/>
                <xs:element name="taskdef" type="taskdefType"/>
                <xs:element name="echo" type="echoType"/>
                <xs:element name="java" type="javaType"/>
                <xs:element name="renameext" type="renameextType"/>
                <xs:element name="basename" type="basenameType"/>
                <xs:element name="javadoc2" type="javadoc2Type"/>
                <xs:element name="tar" type="tarType"/>
                <xs:element name="vajimport" type="vajimportType"/>
                <xs:element name="p4fstat" type="p4fstatType"/>
                <xs:element name="setproxy" type="setproxyType"/>
                <xs:element name="p4counter" type="p4counterType"/>
                <xs:element name="ilasm" type="ilasmType"/>
                <xs:element name="apply" type="applyType"/>
                <xs:element name="jarlib-resolve" type="jarlib-resolveType"/>
                <xs:element name="jlink" type="jlinkType"/>
                <xs:element name="cvstagdiff" type="cvstagdiffType"/>
                <xs:element name="javacc" type="javaccType"/>
                <xs:element name="chmod" type="chmodType"/>
                <xs:element name="pvcs" type="pvcsType"/>
                <xs:element name="jarlib-manifest" type="jarlib-manifestType"/>
                <xs:element name="jar" type="jarType"/>
                <xs:element name="ccmklbtype" type="ccmklbtypeType"/>
                <xs:element name="sound" type="soundType"/>
                <xs:element name="scriptdef" type="scriptdefType"/>
                <xs:element name="defaultexcludes" type="defaultexcludesType"/>
                <xs:element name="blgenclient" type="blgenclientType"/>
                <xs:element name="uptodate" type="uptodateType"/>
                <xs:element name="jjdoc" type="jjdocType"/>
                <xs:element name="genkey" type="genkeyType"/>
                <xs:element name="javah" type="javahType"/>
                <xs:element name="ccmreconfigure" type="ccmreconfigureType"/>
                <xs:element name="fail" type="failType"/>
                <xs:element name="unzip" type="unzipType"/>
                <xs:element name="javac" type="javacType"/>
                <xs:element name="p4add" type="p4addType"/>
                <xs:element name="jpcoverage" type="jpcoverageType"/>
                <xs:element name="depend" type="dependType"/>
                <xs:element name="deltree" type="deltreeType"/>
                <xs:element name="ddcreator" type="ddcreatorType"/>
                <xs:element name="patternset" type="patternsetType"/>
                <xs:element name="assertions" type="assertionsType"/>
                <xs:element name="propertyset" type="propertysetType"/>
                <xs:element name="filterset" type="filtersetType"/>
                <xs:element name="libfileset" type="libfilesetType"/>
                <xs:element name="filterreader" type="filterreaderType"/>
                <xs:element name="scriptfilter" type="scriptfilterType"/>
                <xs:element name="concatfilter" type="concatfilterType"/>
                <xs:element name="extension" type="extensionType"/>
                <xs:element name="fileset" type="filesetType"/>
                <xs:element name="dirset" type="dirsetType"/>
                <xs:element name="filelist" type="filelistType"/>
                <xs:element name="filterchain" type="filterchainType"/>
                <xs:element name="path" type="pathType"/>
                <xs:element name="classfileset" type="classfilesetType"/>
                <xs:element name="selector" type="selectorType"/>
                <xs:element name="xmlcatalog" type="xmlcatalogType"/>
                <xs:element name="description" type="descriptionType"/>
                <xs:element name="mapper" type="mapperType"/>
                <xs:element name="zipfileset" type="zipfilesetType"/>
                <xs:element name="substitution" type="substitutionType"/>
                <xs:element name="extensionSet" type="extensionSetType"/>
                <xs:element name="regexp" type="regexpType"/>
                <xs:element name="var" type="varType"/>
                <xs:element name="if" type="ifType"/>
                <xs:element name="retry" type="retryType"/>
            </xs:choice>
            <xs:attribute name="name" type="xs:string"/>
            <xs:attribute name="default" type="xs:string"/>
            <xs:attribute name="basedir" type="xs:string"/>
        </xs:complexType>
    </xs:element>
    <xs:complexType name="propertyType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="classpath" type="classpathType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="url" type="xs:string"/>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="classpath" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="userproperty">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="resource" type="xs:string"/>
        <xs:attribute name="environment" type="xs:string"/>
        <xs:attribute name="prefix" type="xs:string"/>
        <xs:attribute name="classpathref" type="xs:IDREF"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="value" type="xs:string"/>
        <xs:attribute name="location" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="propertyfileType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="entry" type="entryType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="comment" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="propertycopyType">
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="from" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="propertyrefType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="builtin">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="all"/>
                    <xs:enumeration value="system"/>
                    <xs:enumeration value="commandline"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="regex" type="xs:string"/>
        <xs:attribute name="prefix" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="propertysetType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="propertyref" type="propertyrefType"/>
            <xs:element name="propertyset" type="propertysetType"/>
            <xs:element name="mapper" type="mapperType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="negate" type="xs:boolean"/>
        <xs:attribute name="dynamic">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="pvcsType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="pvcsproject" type="pvcsprojectType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="updateonly">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="force" type="xs:string"/>
        <xs:attribute name="config" type="xs:string"/>
        <xs:attribute name="workspace" type="xs:string"/>
        <xs:attribute name="pvcsbin" type="xs:string"/>
        <xs:attribute name="pvcsproject" type="xs:string"/>
        <xs:attribute name="filenameformat" type="xs:string"/>
        <xs:attribute name="userid" type="xs:string"/>
        <xs:attribute name="repository" type="xs:string"/>
        <xs:attribute name="ignorereturncode">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="revision" type="xs:string"/>
        <xs:attribute name="linestart" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="promotiongroup" type="xs:string"/>
        <xs:attribute name="label" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="pvcsprojectType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="name" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="recordType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="append">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="loglevel">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="error"/>
                    <xs:enumeration value="warn"/>
                    <xs:enumeration value="info"/>
                    <xs:enumeration value="verbose"/>
                    <xs:enumeration value="debug"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="emacsmode">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="action">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="start"/>
                    <xs:enumeration value="stop"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="referenceType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="refid" type="xs:string"/>
        <xs:attribute name="torefid" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="regexpType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="pattern" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="renameType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="dest" type="xs:string"/>
        <xs:attribute name="replace" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="src" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="renameextType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="replace">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="toextension" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="fromextension" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="srcdir" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="replaceType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="replacefilter" type="replacefilterType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="replacetoken" type="replacetokenType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="replacevalue" type="replacevalueType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="encoding" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="token" type="xs:string"/>
        <xs:attribute name="propertyfile" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="summary">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="value" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="replacefilterfile" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="replacefilterType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="token" type="xs:string"/>
        <xs:attribute name="value" type="xs:string"/>
        <xs:attribute name="property" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="replaceregexType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="flags" type="xs:string"/>
        <xs:attribute name="byline">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="replace" type="xs:string"/>
        <xs:attribute name="pattern" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="replaceregexpType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="substitution" type="substitutionType"/>
            <xs:element name="regexp" type="regexpType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="flags" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="match" type="xs:string"/>
        <xs:attribute name="byline">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="replace" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="encoding" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="replacestringType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="byline">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="from" type="xs:string"/>
        <xs:attribute name="to" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="replacetokenType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="id" type="xs:ID"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:complexType name="replacetokensType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="token" type="tokenType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="begintoken" type="xs:string"/>
        <xs:attribute name="endtoken" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="replacevalueType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="id" type="xs:ID"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:complexType name="replytoType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="address" type="xs:string"/>
        <xs:attribute name="name" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="reportType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="todir" type="xs:string"/>
        <xs:attribute name="styledir" type="xs:string"/>
        <xs:attribute name="format">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="frames"/>
                    <xs:enumeration value="noframes"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="extension" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="resourceType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="public">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="embed">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="revokeType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="class" type="xs:string"/>
        <xs:attribute name="actions" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="rmicType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="extdirs" type="extdirsType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="classpath" type="classpathType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="compilerarg" type="compilerargType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="verify">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="iiop">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="idlopts" type="xs:string"/>
        <xs:attribute name="extdirs" type="xs:string"/>
        <xs:attribute name="sourcebase" type="xs:string"/>
        <xs:attribute name="classpathref" type="xs:IDREF"/>
        <xs:attribute name="base" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="includeantruntime">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="includejavaruntime">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="classpath" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="debug">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="compiler" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="idl">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="iiopopts" type="xs:string"/>
        <xs:attribute name="classname" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="filtering">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="stubversion" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="rootType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="classname" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="rootfilesetType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="rpmType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="removesource">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="output" type="xs:string"/>
        <xs:attribute name="command" type="xs:string"/>
        <xs:attribute name="cleanbuilddir">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="removespec">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="specfile" type="xs:string"/>
        <xs:attribute name="topdir" type="xs:string"/>
        <xs:attribute name="rpmbuildcommand" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="rulespathType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="dirset" type="dirsetType"/>
            <xs:element name="extdirs" type="extdirsType"/>
            <xs:element name="filelist" type="filelistType"/>
            <xs:element name="existing" type="existingType"/>
            <xs:element name="pathelement" type="pathelementType"/>
            <xs:element name="path" type="pathType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="location" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="path" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="scriptType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="id" type="xs:ID"/>
                <xs:attribute name="taskname" type="xs:string"/>
                <xs:attribute name="description" type="xs:string"/>
                <xs:attribute name="src" type="xs:string"/>
                <xs:attribute name="language" type="xs:string"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:complexType name="scriptdefType" mixed="true">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="classpath" type="classpathType"/>
            <xs:element name="element" type="elementType"/>
            <xs:element name="attribute" type="attributeType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="src" type="xs:string"/>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="uri" type="xs:string"/>
        <xs:attribute name="classpath" type="xs:string"/>
        <xs:attribute name="language" type="xs:string"/>
        <xs:attribute name="classpathref" type="xs:IDREF"/>
        <xs:attribute name="loaderref" type="xs:IDREF"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="reverseloader">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="scriptfilterType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="id" type="xs:ID"/>
                <xs:attribute name="byline">
                    <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                            <xs:enumeration value="true"/>
                            <xs:enumeration value="false"/>
                            <xs:enumeration value="on"/>
                            <xs:enumeration value="off"/>
                            <xs:enumeration value="yes"/>
                            <xs:enumeration value="no"/>
                        </xs:restriction>
                    </xs:simpleType>
                </xs:attribute>
                <xs:attribute name="token" type="xs:string"/>
                <xs:attribute name="src" type="xs:string"/>
                <xs:attribute name="language" type="xs:string"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:complexType name="searchpathType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="dirset" type="dirsetType"/>
            <xs:element name="extdirs" type="extdirsType"/>
            <xs:element name="filelist" type="filelistType"/>
            <xs:element name="existing" type="existingType"/>
            <xs:element name="pathelement" type="pathelementType"/>
            <xs:element name="path" type="pathType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="location" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="path" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="sectionType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="attribute" type="attributeType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="name" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="selectorType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="custom" type="customType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="and" type="andType"/>
            <xs:element name="depth" type="depthType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="unless" type="xs:string"/>
        <xs:attribute name="if" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="timestampselectorType">
        <xs:complexContent>
            <xs:extension base="resourceCollectionContainerType">
                <xs:attribute name="property" type="xs:string"/>
                <xs:attribute name="outputsetid" type="xs:string"/>
                <xs:attribute name="count" type="xs:string"/>
                <xs:attribute name="age" type="xs:string"/>
                <xs:attribute name="pathSep" type="xs:string"/>
                <xs:attribute name="pathref" type="xs:string"/>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="sequentialType">
        <xs:complexContent>
            <xs:extension base="taskcontainerType">
                <xs:attribute name="id" type="xs:ID"/>
                <xs:attribute name="taskname" type="xs:string"/>
                <xs:attribute name="description" type="xs:string"/>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="serverdeployType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="generic" type="genericType"/>
            <xs:element name="jonas" type="jonasType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="action" type="xs:string"/>
        <xs:attribute name="source" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="setproxyType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="nonproxyhosts" type="xs:string"/>
        <xs:attribute name="proxyhost" type="xs:string"/>
        <xs:attribute name="socksproxyhost" type="xs:string"/>
        <xs:attribute name="proxyport" type="xs:string"/>
        <xs:attribute name="socksproxyport" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="proxyuser" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="proxypassword" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="signjarType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="storepass" type="xs:string"/>
        <xs:attribute name="lazy">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="jar" type="xs:string"/>
        <xs:attribute name="verbose">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="keypass" type="xs:string"/>
        <xs:attribute name="maxmemory" type="xs:string"/>
        <xs:attribute name="alias" type="xs:string"/>
        <xs:attribute name="sectionsonly">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="keystore" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="sigfile" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="internalsf">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="storetype" type="xs:string"/>
        <xs:attribute name="signedjar" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="sizeType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="when">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="less"/>
                    <xs:enumeration value="more"/>
                    <xs:enumeration value="equal"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="units">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="K"/>
                    <xs:enumeration value="k"/>
                    <xs:enumeration value="kilo"/>
                    <xs:enumeration value="KILO"/>
                    <xs:enumeration value="Ki"/>
                    <xs:enumeration value="KI"/>
                    <xs:enumeration value="ki"/>
                    <xs:enumeration value="kibi"/>
                    <xs:enumeration value="KIBI"/>
                    <xs:enumeration value="M"/>
                    <xs:enumeration value="m"/>
                    <xs:enumeration value="mega"/>
                    <xs:enumeration value="MEGA"/>
                    <xs:enumeration value="Mi"/>
                    <xs:enumeration value="MI"/>
                    <xs:enumeration value="mi"/>
                    <xs:enumeration value="mebi"/>
                    <xs:enumeration value="MEBI"/>
                    <xs:enumeration value="G"/>
                    <xs:enumeration value="g"/>
                    <xs:enumeration value="giga"/>
                    <xs:enumeration value="GIGA"/>
                    <xs:enumeration value="Gi"/>
                    <xs:enumeration value="GI"/>
                    <xs:enumeration value="gi"/>
                    <xs:enumeration value="gibi"/>
                    <xs:enumeration value="GIBI"/>
                    <xs:enumeration value="T"/>
                    <xs:enumeration value="t"/>
                    <xs:enumeration value="tera"/>
                    <xs:enumeration value="TERA"/>
                    <xs:enumeration value="Ti"/>
                    <xs:enumeration value="TI"/>
                    <xs:enumeration value="ti"/>
                    <xs:enumeration value="tebi"/>
                    <xs:enumeration value="TEBI"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="value" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="sleepType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="hours" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="milliseconds" type="xs:string"/>
        <xs:attribute name="minutes" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="seconds" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="socketType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="port" type="xs:string"/>
        <xs:attribute name="server" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="soundType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fail" type="failsoundType"/>
            <xs:element name="success" type="successType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="sourceType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="file" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="sourcepathType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="dirset" type="dirsetType"/>
            <xs:element name="extdirs" type="extdirsType"/>
            <xs:element name="filelist" type="filelistType"/>
            <xs:element name="existing" type="existingType"/>
            <xs:element name="pathelement" type="pathelementType"/>
            <xs:element name="path" type="pathType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="location" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="path" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="splashType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="port" type="xs:string"/>
        <xs:attribute name="user" type="xs:string"/>
        <xs:attribute name="proxy" type="xs:string"/>
        <xs:attribute name="imageurl" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="password" type="xs:string"/>
        <xs:attribute name="showduration" type="xs:string"/>
        <xs:attribute name="useproxy">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="sqlType" mixed="true">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="classpath" type="classpathType"/>
            <xs:element name="transaction" type="transactionType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="onerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="continue"/>
                    <xs:enumeration value="stop"/>
                    <xs:enumeration value="abort"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="userid" type="xs:string"/>
        <xs:attribute name="password" type="xs:string"/>
        <xs:attribute name="autocommit">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="rdbms" type="xs:string"/>
        <xs:attribute name="print">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="classpathref" type="xs:IDREF"/>
        <xs:attribute name="encoding" type="xs:string"/>
        <xs:attribute name="version" type="xs:string"/>
        <xs:attribute name="url" type="xs:string"/>
        <xs:attribute name="src" type="xs:string"/>
        <xs:attribute name="output" type="xs:string"/>
        <xs:attribute name="driver" type="xs:string"/>
        <xs:attribute name="showheaders">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="classpath" type="xs:string"/>
        <xs:attribute name="delimitertype">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="normal"/>
                    <xs:enumeration value="row"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="escapeprocessing">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="append">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="caching">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="keepformat">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="delimiter" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="srcType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="srcfileType">
        <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
    <xs:complexType name="srcfilelistType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="files" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="srcfilesType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="srcfilesetType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="stringtokenizerType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="suppressdelims">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="includedelims">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="delimsaretokens">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="delims" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="stripjavacommentsType">
        <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
    <xs:complexType name="striplinebreaksType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="linebreaks" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="striplinecommentsType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="comment" type="commentType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
    <xs:complexType name="styleType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="factory" type="factoryType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="param" type="paramType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="classpath" type="classpathType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="xmlcatalog" type="xmlcatalogType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="outputproperty" type="outputpropertyType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="force">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="processor" type="xs:string"/>
        <xs:attribute name="classpathref" type="xs:IDREF"/>
        <xs:attribute name="basedir" type="xs:string"/>
        <xs:attribute name="destdir" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="scanincludeddirectories">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="extension" type="xs:string"/>
        <xs:attribute name="in" type="xs:string"/>
        <xs:attribute name="classpath" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="reloadstylesheet">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="includes" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="out" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="style" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="subantType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="reference" type="referenceType"/>
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="buildpathelement" type="buildpathelementType"/>
            <xs:element name="dirset" type="dirsetType"/>
            <xs:element name="buildpath" type="buildpathType"/>
            <xs:element name="propertyset" type="propertysetType"/>
            <xs:element name="filelist" type="filelistType"/>
            <xs:element name="property" type="propertyType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="genericantfile" type="xs:string"/>
        <xs:attribute name="output" type="xs:string"/>
        <xs:attribute name="inheritall" type="xs:boolean"/>
        <xs:attribute name="inheritrefs">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="antfile" type="xs:string"/>
        <xs:attribute name="buildpathref" type="xs:IDREF"/>
        <xs:attribute name="target" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="buildpath" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="substitutionType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="expression" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="successType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="loops" type="xs:string"/>
        <xs:attribute name="source" type="xs:string"/>
        <xs:attribute name="duration" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="supportType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="symlinkType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="linkfilename" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="overwrite">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="link" type="xs:string"/>
        <xs:attribute name="action" type="xs:string"/>
        <xs:attribute name="resource" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="syncType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="verbose">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="todir" type="xs:string"/>
        <xs:attribute name="overwrite">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="includeemptydirs">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="syspropertyType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="key" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="value" type="xs:string"/>
        <xs:attribute name="path" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="syspropertysetType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="propertyref" type="propertyrefType"/>
            <xs:element name="propertyset" type="propertysetType"/>
            <xs:element name="mapper" type="mapperType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="dynamic">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="tabstospacesType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="tablength" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="tagType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="enabled">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="scope" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="tagletType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="path" type="pathType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="pathref" type="xs:IDREF"/>
        <xs:attribute name="path" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="tailfilterType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="lines" type="xs:string"/>
        <xs:attribute name="skip" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="tarType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="tarfileset" type="tarfilesetType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="tarfile" type="xs:string"/>
        <xs:attribute name="destfile" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="basedir" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="compression">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="none"/>
                    <xs:enumeration value="gzip"/>
                    <xs:enumeration value="bzip2"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="longfile">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="warn"/>
                    <xs:enumeration value="fail"/>
                    <xs:enumeration value="truncate"/>
                    <xs:enumeration value="gnu"/>
                    <xs:enumeration value="omit"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="includes" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="tarfilesetType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="preserveleadingslashes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="username" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="fullpath" type="xs:string"/>
        <xs:attribute name="group" type="xs:string"/>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="mode" type="xs:string"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="prefix" type="xs:string"/>
        <xs:attribute name="dirmode" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="targetType">
        <xs:complexContent>
            <xs:extension base="taskcontainerType">
                <xs:attribute name="id" type="xs:ID"/>
                <xs:attribute name="name" type="xs:string" use="required"/>
                <xs:attribute name="if" type="xs:string"/>
                <xs:attribute name="unless" type="xs:string"/>
                <xs:attribute name="depends" type="xs:string"/>
                <xs:attribute name="description" type="xs:string"/>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="targetfileType">
        <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
    <xs:complexType name="targetfilelistType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="files" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="targetfilesetType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="taskdefType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="classpath" type="classpathType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="uri" type="xs:string"/>
        <xs:attribute name="classpath" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="classname" type="xs:string"/>
        <xs:attribute name="resource" type="xs:string"/>
        <xs:attribute name="adaptto" type="xs:string"/>
        <xs:attribute name="onerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="fail"/>
                    <xs:enumeration value="report"/>
                    <xs:enumeration value="ignore"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="loaderref" type="xs:IDREF"/>
        <xs:attribute name="classpathref" type="xs:IDREF"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="adapter" type="xs:string"/>
        <xs:attribute name="format">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="properties"/>
                    <xs:enumeration value="xml"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="reverseloader">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="tempfileType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="destdir" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="prefix" type="xs:string"/>
        <xs:attribute name="property" type="xs:string"/>
        <xs:attribute name="suffix" type="xs:string"/>
        <xs:attribute name="deleteonexit" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="testType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="classpath" type="classpathType"/>
            <xs:element name="sysproperty" type="syspropertyType"/>
            <xs:element name="bootclasspath" type="bootclasspathType"/>
            <xs:element name="env" type="envType"/>
            <xs:element name="syspropertyset" type="syspropertysetType"/>
            <xs:element name="permissions" type="permissionsType"/>
            <xs:element name="jvmarg" type="jvmargType"/>
            <xs:element name="arg" type="argType"/>
            <xs:element name="assertions" type="assertionsType"/>
            <xs:element name="testlet" type="testletType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="resultproperty" type="xs:string"/>
        <xs:attribute name="jvmargs" type="xs:string"/>
        <xs:attribute name="args" type="xs:string"/>
        <xs:attribute name="fork">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="maxmemory" type="xs:string"/>
        <xs:attribute name="classpathref" type="xs:IDREF"/>
        <xs:attribute name="jar" type="xs:string"/>
        <xs:attribute name="errorproperty" type="xs:string"/>
        <xs:attribute name="forceshowtrace">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="output" type="xs:string"/>
        <xs:attribute name="timeout" type="xs:string"/>
        <xs:attribute name="spawn">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="input" type="xs:string"/>
        <xs:attribute name="jvm" type="xs:string"/>
        <xs:attribute name="inputstring" type="xs:string"/>
        <xs:attribute name="classpath" type="xs:string"/>
        <xs:attribute name="logerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="showsuccess">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="jvmversion" type="xs:string"/>
        <xs:attribute name="outputproperty" type="xs:string"/>
        <xs:attribute name="append">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="showbanner" type="xs:string"/>
        <xs:attribute name="newenvironment">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="classname" type="xs:string"/>
        <xs:attribute name="showtrace">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="testletType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="id" type="xs:ID"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:complexType name="textType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="trim">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="optional">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="titleType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="id" type="xs:ID"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:complexType name="toType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="address" type="xs:string"/>
        <xs:attribute name="name" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="tokenType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="key" type="xs:string"/>
        <xs:attribute name="value" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="tokenfilterType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="containsstring" type="containsstringType"/>
            <xs:element name="linetokenizer" type="linetokenizerType"/>
            <xs:element name="trim" type="trimType"/>
            <xs:element name="stringtokenizer" type="stringtokenizerType"/>
            <xs:element name="replaceregex" type="replaceregexType"/>
            <xs:element name="replacestring" type="replacestringType"/>
            <xs:element name="ignoreblank" type="ignoreblankType"/>
            <xs:element name="deletecharacters" type="deletecharactersType"/>
            <xs:element name="containsregex" type="containsregexType"/>
            <xs:element name="filetokenizer" type="filetokenizerType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="delimoutput" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="touchType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="millis" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="datetime" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="transactionType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="id" type="xs:ID"/>
                <xs:attribute name="src" type="xs:string"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:complexType name="translateType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="bundlecountry" type="xs:string"/>
        <xs:attribute name="bundlelanguage" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="srcencoding" type="xs:string"/>
        <xs:attribute name="bundle" type="xs:string"/>
        <xs:attribute name="bundleencoding" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="destencoding" type="xs:string"/>
        <xs:attribute name="bundlevariant" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="todir" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="endtoken" type="xs:string"/>
        <xs:attribute name="forceoverwrite">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="starttoken" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="triggersType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="method" type="methodType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
    <xs:complexType name="trimType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="byline">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="tstampType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="format" type="formatType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="prefix" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="typeType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="error" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="type">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="file"/>
                    <xs:enumeration value="dir"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="typedefType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="classpath" type="classpathType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="uri" type="xs:string"/>
        <xs:attribute name="classpath" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="classname" type="xs:string"/>
        <xs:attribute name="resource" type="xs:string"/>
        <xs:attribute name="adaptto" type="xs:string"/>
        <xs:attribute name="onerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="fail"/>
                    <xs:enumeration value="report"/>
                    <xs:enumeration value="ignore"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="loaderref" type="xs:IDREF"/>
        <xs:attribute name="classpathref" type="xs:IDREF"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="adapter" type="xs:string"/>
        <xs:attribute name="format">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="properties"/>
                    <xs:enumeration value="xml"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="reverseloader">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="unjarType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="patternset" type="patternsetType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="dest" type="xs:string"/>
        <xs:attribute name="overwrite">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="encoding" type="xs:string"/>
        <xs:attribute name="src" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="untarType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="patternset" type="patternsetType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="compression">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="none"/>
                    <xs:enumeration value="gzip"/>
                    <xs:enumeration value="bzip2"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="dest" type="xs:string"/>
        <xs:attribute name="overwrite">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="encoding" type="xs:string"/>
        <xs:attribute name="src" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="unwarType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="patternset" type="patternsetType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="dest" type="xs:string"/>
        <xs:attribute name="overwrite">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="encoding" type="xs:string"/>
        <xs:attribute name="src" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="unzipType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="patternset" type="patternsetType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="dest" type="xs:string"/>
        <xs:attribute name="overwrite">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="encoding" type="xs:string"/>
        <xs:attribute name="src" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="uptodateType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="srcfiles" type="srcfilesType"/>
            <xs:element name="mapper" type="mapperType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="value" type="xs:string"/>
        <xs:attribute name="property" type="xs:string"/>
        <xs:attribute name="targetfile" type="xs:string"/>
        <xs:attribute name="srcfile" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="urlType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="destdir" type="xs:string"/>
        <xs:attribute name="url" type="xs:string"/>
        <xs:attribute name="destfile" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="userType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="userid" type="xs:string"/>
        <xs:attribute name="displayname" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="vajexportType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="include" type="includeType"/>
            <xs:element name="exclude" type="excludeType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="exportclasses">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="haltonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="remote" type="xs:string"/>
        <xs:attribute name="destdir" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="exportresources">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="exportsources">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="overwrite">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="exportdebuginfo">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="vajimportType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="haltonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="remote" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="importsources">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="project" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="importresources">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="importclasses">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="vajloadType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="vajproject" type="vajprojectType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="remote" type="xs:string"/>
        <xs:attribute name="haltonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="vajprojectType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="version" type="xs:string"/>
        <xs:attribute name="name" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="vbcType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="resource" type="resourceType"/>
            <xs:element name="define" type="defineType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="reference" type="referenceType"/>
            <xs:element name="src" type="srcType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="references" type="xs:string"/>
        <xs:attribute name="useresponsefile">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="removeintchecks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="mainclass" type="xs:string"/>
        <xs:attribute name="extraoptions" type="xs:string"/>
        <xs:attribute name="additionalmodules" type="xs:string"/>
        <xs:attribute name="win32icon" type="xs:string"/>
        <xs:attribute name="optionstrict">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="destdir" type="xs:string"/>
        <xs:attribute name="executable" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="utf8output">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="includedefaultreferences">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="optimize">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="targettype">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="exe"/>
                    <xs:enumeration value="library"/>
                    <xs:enumeration value="module"/>
                    <xs:enumeration value="winexe"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="destfile" type="xs:string"/>
        <xs:attribute name="rootnamespace" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="win32res" type="xs:string"/>
        <xs:attribute name="debug">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="optionexplicit">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="includes" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="warnlevel" type="xs:string"/>
        <xs:attribute name="srcdir" type="xs:string"/>
        <xs:attribute name="optioncompare" type="xs:string"/>
        <xs:attribute name="imports" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="referencefiles" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="waitforType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="isfalse" type="isfalseType"/>
            <xs:element name="isreference" type="isreferenceType"/>
            <xs:element name="equals" type="equalsType"/>
            <xs:element name="available" type="availableType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="os" type="osType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="and" type="andType"/>
            <xs:element name="filesmatch" type="filesmatchType"/>
            <xs:element name="checksum" type="checksumType"/>
            <xs:element name="istrue" type="istrueType"/>
            <xs:element name="isset" type="issetType"/>
            <xs:element name="socket" type="socketType"/>
            <xs:element name="http" type="httpType"/>
            <xs:element name="uptodate" type="uptodateType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="checkeveryunit">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="millisecond"/>
                    <xs:enumeration value="second"/>
                    <xs:enumeration value="minute"/>
                    <xs:enumeration value="hour"/>
                    <xs:enumeration value="day"/>
                    <xs:enumeration value="week"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="checkevery" type="xs:string"/>
        <xs:attribute name="maxwaitunit">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="millisecond"/>
                    <xs:enumeration value="second"/>
                    <xs:enumeration value="minute"/>
                    <xs:enumeration value="hour"/>
                    <xs:enumeration value="day"/>
                    <xs:enumeration value="week"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="maxwait" type="xs:string"/>
        <xs:attribute name="timeoutproperty" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="warType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="manifest" type="manifestType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="metainf" type="metainfType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="lib" type="libType"/>
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="zipgroupfileset" type="zipgroupfilesetType"/>
            <xs:element name="zipfileset" type="zipfilesetType"/>
            <xs:element name="classes" type="classesType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="webinf" type="webinfType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="keepcompression">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="whenempty">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="fail"/>
                    <xs:enumeration value="skip"/>
                    <xs:enumeration value="create"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="duplicate">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="add"/>
                    <xs:enumeration value="preserve"/>
                    <xs:enumeration value="fail"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="basedir" type="xs:string"/>
        <xs:attribute name="encoding" type="xs:string"/>
        <xs:attribute name="manifest" type="xs:string"/>
        <xs:attribute name="jarfile" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="index">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="update">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="destfile" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="includes" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="webxml" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="compress">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="manifestencoding" type="xs:string"/>
        <xs:attribute name="filesonly">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="warfile" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="filesetmanifest">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="skip"/>
                    <xs:enumeration value="merge"/>
                    <xs:enumeration value="mergewithoutmain"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="zipfile" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="wasclasspathType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="dirset" type="dirsetType"/>
            <xs:element name="extdirs" type="extdirsType"/>
            <xs:element name="filelist" type="filelistType"/>
            <xs:element name="existing" type="existingType"/>
            <xs:element name="pathelement" type="pathelementType"/>
            <xs:element name="path" type="pathType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="location" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="path" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="webappType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="basedir" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="webinfType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="src" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="filemode" type="xs:string"/>
        <xs:attribute name="prefix" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="fullpath" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
        <xs:attribute name="dirmode" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="whichresourceType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="classpath" type="classpathType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="classpath" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="resource" type="xs:string"/>
        <xs:attribute name="class" type="xs:string"/>
        <xs:attribute name="property" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="wlclasspathType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="dirset" type="dirsetType"/>
            <xs:element name="extdirs" type="extdirsType"/>
            <xs:element name="filelist" type="filelistType"/>
            <xs:element name="existing" type="existingType"/>
            <xs:element name="pathelement" type="pathelementType"/>
            <xs:element name="path" type="pathType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="location" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="path" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="xmlcatalogType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="entity" type="entityType"/>
            <xs:element name="classpath" type="classpathType"/>
            <xs:element name="catalogpath" type="catalogpathType"/>
            <xs:element name="dtd" type="dtdType"/>
            <xs:element name="xmlcatalog" type="xmlcatalogType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="catalogpathref" type="xs:IDREF"/>
        <xs:attribute name="classpath" type="xs:string"/>
        <xs:attribute name="classpathref" type="xs:IDREF"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="description" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="xmlpropertyType">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="semanticattributes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="keeproot">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="prefix" type="xs:string"/>
        <xs:attribute name="collapseattributes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="validate">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="rootdirectory" type="xs:string"/>
        <xs:attribute name="includesemanticattribute">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="xmlvalidateType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="classpath" type="classpathType"/>
            <xs:element name="attribute" type="attributeType"/>
            <xs:element name="dtd" type="dtdType"/>
            <xs:element name="xmlcatalog" type="xmlcatalogType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="classpath" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="classname" type="xs:string"/>
        <xs:attribute name="lenient">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="warn">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="classpathref" type="xs:IDREF"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="failonerror">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="xsltType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="factory" type="factoryType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="param" type="paramType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="classpath" type="classpathType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="xmlcatalog" type="xmlcatalogType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="outputproperty" type="outputpropertyType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
            <xs:element name="mapper" type="mapperType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="force">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="processor" type="xs:string"/>
        <xs:attribute name="classpathref" type="xs:IDREF"/>
        <xs:attribute name="basedir" type="xs:string"/>
        <xs:attribute name="destdir" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="scanincludeddirectories">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="extension" type="xs:string"/>
        <xs:attribute name="in" type="xs:string"/>
        <xs:attribute name="classpath" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="reloadstylesheet">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="includes" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="out" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="style" type="xs:string"/>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="zipType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="zipgroupfileset" type="zipgroupfilesetType"/>
            <xs:element name="zipfileset" type="zipfilesetType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="whenempty">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="fail"/>
                    <xs:enumeration value="skip"/>
                    <xs:enumeration value="create"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="keepcompression">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="duplicate">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="add"/>
                    <xs:enumeration value="preserve"/>
                    <xs:enumeration value="fail"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="basedir" type="xs:string"/>
        <xs:attribute name="encoding" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="update">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="destfile" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="includes" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="compress">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="taskname" type="xs:string"/>
        <xs:attribute name="filesonly">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="zipfile" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="zipfilesetType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="src" type="xs:string"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="filemode" type="xs:string"/>
        <xs:attribute name="prefix" type="xs:string"/>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="fullpath" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
        <xs:attribute name="dirmode" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="zipgroupfilesetType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="patternset" type="patternsetType"/>
            <xs:element name="exclude" type="excludeType"/>
            <xs:element name="include" type="includeType"/>
            <xs:element name="custom" type="customType"/>
            <xs:element name="present" type="presentType"/>
            <xs:element name="none" type="noneType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="type" type="typeType"/>
            <xs:element name="modified" type="modifiedType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="depend" type="dependType"/>
            <xs:element name="different" type="differentType"/>
            <xs:element name="size" type="sizeType"/>
            <xs:element name="majority" type="majorityType"/>
            <xs:element name="containsregexp" type="containsregexpType"/>
            <xs:element name="filename" type="filenameType"/>
            <xs:element name="selector" type="selectorType"/>
            <xs:element name="includesfile" type="includesfileType"/>
            <xs:element name="date" type="dateType"/>
            <xs:element name="excludesfile" type="excludesfileType"/>
            <xs:element name="depth" type="depthType"/>
            <xs:element name="and" type="andType"/>
        </xs:choice>
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="refid" type="xs:IDREF"/>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="defaultexcludes">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="followsymlinks">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="casesensitive">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                    <xs:enumeration value="on"/>
                    <xs:enumeration value="off"/>
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="includesfile" type="xs:string"/>
        <xs:attribute name="excludesfile" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="doxygenType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="property">
                <xs:complexType>
                    <xs:choice minOccurs="0" maxOccurs="unbounded">
                        <xs:element name="fileset" type="filesetType"/>
                    </xs:choice>
                    <xs:attribute name="name" type="xs:string" use="required"/>
                    <xs:attribute name="value" type="xs:string" use="optional"/>
                </xs:complexType>
            </xs:element>
        </xs:choice>
        <xs:attribute name="versionCompatible" type="xs:string"/>
        <xs:attribute name="doxygenPath" type="xs:string"/>
        <xs:attribute name="configFilename" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="foreachType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="path" type="pathType"/>
            <xs:element name="param" type="paramType"/>
        </xs:choice>
        <xs:attribute name="list" type="xs:string"/>
        <xs:attribute name="target" type="xs:string" use="required"/>
        <xs:attribute name="param" type="xs:string"/>
        <xs:attribute name="delimiter" type="xs:string"/>
        <xs:attribute name="inheritall" type="xs:string"/>
        <xs:attribute name="inheritrefs" type="xs:string"/>
        <xs:attribute name="parallel" type="xs:string"/>
        <xs:attribute name="maxThreads" type="xs:string"/>
        <xs:attribute name="trim" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="varType">
        <xs:choice minOccurs="0" maxOccurs="unbounded"/>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="value" type="xs:string"/>
        <xs:attribute name="unset" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="ifType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="isfalse" type="isfalseType"/>
            <xs:element name="isreference" type="isreferenceType"/>
            <xs:element name="equals" type="equalsType"/>
            <xs:element name="available" type="availableType"/>
            <xs:element name="not" type="notType"/>
            <xs:element name="contains" type="containsType"/>
            <xs:element name="os" type="osType"/>
            <xs:element name="or" type="orType"/>
            <xs:element name="and" type="andType"/>
            <xs:element name="filesmatch" type="filesmatchType"/>
            <xs:element name="checksum" type="checksumType"/>
            <xs:element name="istrue" type="istrueType"/>
            <xs:element name="isset" type="issetType"/>
            <xs:element name="socket" type="socketType"/>
            <xs:element name="http" type="httpType"/>
            <xs:element name="uptodate" type="uptodateType"/>
            <xs:element name="then" type="thenType"/>
            <xs:element name="elseif" type="elseifType"/>
            <xs:element name="else" type="elseType"/>
            <xs:element name="resourcecount" type="resourcecountType"/>
        </xs:choice>
    </xs:complexType>
    <xs:complexType name="propertyregexType">
        <xs:attribute name="property" type="xs:string" use="required"/>
        <xs:attribute name="override" type="xs:boolean"/>
        <xs:attribute name="input" type="xs:string" use="required"/>
        <xs:attribute name="regexp" type="xs:string"/>
        <xs:attribute name="select" type="xs:string"/>
        <xs:attribute name="replace" type="xs:string"/>
        <xs:attribute name="casesensitive" type="xs:string"/>
        <xs:attribute name="global" type="xs:boolean"/>
        <xs:attribute name="defaultValue" type="xs:string" use="optional"/>
    </xs:complexType>
    <xs:complexType name="thenType">
        <xs:complexContent>
            <xs:extension base="taskcontainerType"/>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="elseifType">
        <xs:complexContent>
            <xs:extension base="taskcontainerType"/>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="elseType">
        <xs:complexContent>
            <xs:extension base="taskcontainerType"/>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="mergelogsType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="log" type="logType"/>
            <xs:element name="fileset" type="filesetType"/>
        </xs:choice>
        <xs:attribute name="destfile" type="xs:string" use="required"/>
        <xs:attribute name="stdout" type="xs:string" use="optional"/>
    </xs:complexType>
    <xs:complexType name="logType">
        <xs:attribute name="file" type="xs:string" use="required"/>
        <xs:attribute name="tool" type="xs:string" use="required"/>
        <xs:attribute name="regex" type="xs:string" use="required"/>
    </xs:complexType>
    <xs:complexType name="reviewplanType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
        </xs:choice>
        <xs:attribute name="destdir" type="xs:string" use="required"/>
        <xs:attribute name="component" type="xs:string" use="required"/>
    </xs:complexType>
    <xs:complexType name="processreviewplanType">
        <xs:attribute name="in" type="xs:string" use="required"/>
    </xs:complexType>
    <xs:complexType name="convertreviewlogType">
        <xs:attribute name="input" type="xs:string" use="required"/>
        <xs:attribute name="template" type="xs:string" use="required"/>
        <xs:attribute name="review" type="xs:string" use="required"/>
    </xs:complexType>
    <xs:complexType name="lintType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="option">
                <xs:complexType>
                    <xs:choice minOccurs="0" maxOccurs="unbounded">
                        <xs:element name="fileset" type="filesetType"/>
                        <xs:element name="dirset" type="dirsetType"/>
                    </xs:choice>
                    <xs:attribute name="type" type="xs:string" use="optional"/>
                    <xs:attribute name="value" type="xs:string" use="optional"/>
                </xs:complexType>
            </xs:element>
            <xs:element name="fileset" type="filesetType"/>
        </xs:choice>
        <xs:attribute name="output" type="xs:string" use="required"/>
        <xs:attribute name="lintPath" type="xs:string" use="optional"/>
    </xs:complexType>
    <xs:complexType name="customcopyType">
        <xs:complexContent>
            <xs:extension base="copyType">
                <xs:attribute name="preservereadonly">
                    <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                            <xs:enumeration value="true"/>
                            <xs:enumeration value="false"/>
                            <xs:enumeration value="on"/>
                            <xs:enumeration value="off"/>
                            <xs:enumeration value="yes"/>
                            <xs:enumeration value="no"/>
                        </xs:restriction>
                    </xs:simpleType>
                </xs:attribute>
                <xs:attribute name="checkcontents">
                    <xs:simpleType>
                        <xs:restriction base="xs:NMTOKEN">
                            <xs:enumeration value="true"/>
                            <xs:enumeration value="false"/>
                            <xs:enumeration value="on"/>
                            <xs:enumeration value="off"/>
                            <xs:enumeration value="yes"/>
                            <xs:enumeration value="no"/>
                        </xs:restriction>
                    </xs:simpleType>
                </xs:attribute>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="fopType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
        </xs:choice>
        <xs:attribute name="messagelevel" type="xs:string"/>
        <xs:attribute name="userconfig" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="xmltaskType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="cut" type="cutXmlType"/>
            <xs:element name="copy" type="copyXmlType"/>
            <xs:element name="insert" type="insertXmlType"/>
            <xs:element name="rename" type="renameXmlType"/>
            <xs:element name="remove" type="removeXmlType"/>
            <xs:element name="attr" type="attrXmlType"/>
            <xs:element name="xmlcatalog" type="xmlcatalogType"/>
        </xs:choice>
        <xs:attribute name="source" type="xs:string"/>
        <xs:attribute name="sourcebuffer" type="xs:string"/>
        <xs:attribute name="dest" type="xs:string"/>
        <xs:attribute name="todir" type="xs:string"/>
        <xs:attribute name="report" type="xs:string"/>
        <xs:attribute name="public" type="xs:string"/>
        <xs:attribute name="system" type="xs:string"/>
        <xs:attribute name="preservetype" type="xs:string"/>
        <xs:attribute name="failWithoutMatch" type="xs:string"/>
        <xs:attribute name="indent" type="xs:string"/>
        <xs:attribute name="encoding" type="xs:string"/>
        <xs:attribute name="outputter" type="xs:string"/>
        <xs:attribute name="omitHeader" type="xs:string"/>
        <xs:attribute name="standalone" type="xs:string"/>
        <xs:attribute name="clearBuffers" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="cutXmlType">
        <xs:attribute name="path" type="xs:string"/>
        <xs:attribute name="buffer" type="xs:string"/>
        <xs:attribute name="property" type="xs:string"/>
        <xs:attribute name="append" type="xs:string"/>
        <xs:attribute name="attrValue" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="copyXmlType">
        <xs:attribute name="path" type="xs:string"/>
        <xs:attribute name="buffer" type="xs:string"/>
        <xs:attribute name="property" type="xs:string"/>
        <xs:attribute name="append" type="xs:string"/>
        <xs:attribute name="attrValue" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="insertXmlType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="path" type="xs:string" use="required"/>
                <xs:attribute name="buffer" type="xs:string" use="optional"/>
                <xs:attribute name="file" type="xs:string" use="optional"/>
                <xs:attribute name="xml" type="xs:string" use="optional"/>
                <xs:attribute name="position" type="xs:string" use="optional"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:complexType name="renameXmlType">
        <xs:attribute name="path" type="xs:string"/>
        <xs:attribute name="to" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="removeXmlType">
        <xs:attribute name="path" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="attrXmlType">
        <xs:attribute name="path" type="xs:string" use="required"/>
        <xs:attribute name="attr" type="xs:string" use="required"/>
        <xs:attribute name="value" type="xs:string" use="optional"/>
        <xs:attribute name="remove" type="xs:boolean" use="optional"/>
    </xs:complexType>
    <xs:complexType name="ftpType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
        </xs:choice>
        <xs:attribute name="server" type="xs:string"/>
        <xs:attribute name="userid" type="xs:string"/>
        <xs:attribute name="password" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="getsizeType">
        <xs:choice maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
        </xs:choice>
        <xs:attribute name="output" type="xs:string" use="required"/>
    </xs:complexType>
    <xs:complexType name="abldType">
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="output" type="xs:string" use="optional"/>
        <xs:attribute name="test" type="xs:boolean" use="optional"/>
        <xs:attribute name="command" use="required">
            <xs:simpleType>
                <xs:restriction base="xs:token">
                    <xs:enumeration value="build"/>
                    <xs:enumeration value="clean"/>
                    <xs:enumeration value="cleanall"/>
                    <xs:enumeration value="cleanexport"/>
                    <xs:enumeration value="export"/>
                    <xs:enumeration value="final"/>
                    <xs:enumeration value="freeze"/>
                    <xs:enumeration value="help"/>
                    <xs:enumeration value="library"/>
                    <xs:enumeration value="listing"/>
                    <xs:enumeration value="makefile"/>
                    <xs:enumeration value="reallyclean"/>
                    <xs:enumeration value="resource"/>
                    <xs:enumeration value="target"/>
                    <xs:enumeration value="tidy"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="platform" use="optional">
            <xs:simpleType>
                <xs:restriction base="xs:string">
                    <xs:enumeration value="wins"/>
                    <xs:enumeration value="winscw"/>
                    <xs:enumeration value="gccxml"/>
                    <xs:enumeration value="thumb"/>
                    <xs:enumeration value="arm4at"/>
                    <xs:enumeration value="vc6"/>
                    <xs:enumeration value="cw_ide"/>
                    <xs:enumeration value="armv5"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="variant" use="optional">
            <xs:simpleType>
                <xs:restriction base="xs:string">
                    <xs:enumeration value="udeb"/>
                    <xs:enumeration value="urel"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="grandType">
        <xs:attribute name="buildfile" type="xs:string"/>
        <xs:attribute name="output" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="svnType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="update" type="updateSvnType"/>
            <xs:element name="status" type="statusSvnType"/>
        </xs:choice>
        <xs:attribute name="username" type="xs:string"/>
        <xs:attribute name="password" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="updateSvnType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
        </xs:choice>
        <xs:attribute name="file" type="xs:string" use="optional"/>
        <xs:attribute name="dir" type="xs:string" use="optional"/>
        <xs:attribute name="recurse" type="xs:string" use="optional"/>
        <xs:attribute name="revision" type="xs:string" use="optional"/>
    </xs:complexType>
    <xs:complexType name="statusSvnType">
        <xs:attribute name="path" type="xs:string"/>
        <xs:attribute name="textStatusProperty" type="xs:string" use="optional"/>
        <xs:attribute name="propStatusProperty" type="xs:string" use="optional"/>
        <xs:attribute name="revisionProperty" type="xs:string" use="optional"/>
        <xs:attribute name="lastChangedRevisionProperty" type="xs:string" use="optional"/>
        <xs:attribute name="lastCommitAuthorProperty" type="xs:string" use="optional"/>
    </xs:complexType>
    <xs:complexType name="antunitType">
        <xs:choice maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="plainlistener" type="plainlistenerType"/>
        </xs:choice>
    </xs:complexType>
    <xs:complexType name="plainlistenerType"/>
    <xs:complexType name="schemavalidateType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="schema" type="schemaType"/>
        </xs:choice>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="noNamespaceFile" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="pythonType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="outputproperty" type="xs:string"/>
                <xs:attribute name="resultproperty" type="xs:string"/>
                <xs:attribute name="failonerror" type="xs:string"/>
                <xs:attribute name="script" type="xs:string"/>
                <xs:attribute name="dir" type="xs:string"/>
                <xs:attribute name="output" type="xs:string"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:complexType name="forType">
        <xs:choice maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="dirset" type="dirsetType"/>
            <xs:element name="path" type="pathType"/>
            <xs:element name="resources" type="resourcesType"/>
            <xs:element name="sequential" type="sequentialType"/>
        </xs:choice>
        <xs:attribute name="list" type="xs:string"/>
        <xs:attribute name="param" type="xs:string"/>
        <xs:attribute name="delimiter" type="xs:string"/>
        <xs:attribute name="parallel" type="xs:string"/>
        <xs:attribute name="keepgoing" type="xs:string"/>
        <xs:attribute name="threadCount" type="xs:string"/>
        <xs:attribute name="trim" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="chainedmapperType">
        <xs:choice maxOccurs="unbounded">
            <xs:element name="mapper" type="mapperType"/>
            <xs:element name="flattenmapper" type="flattenmapperType"/>
            <xs:element name="globmapper" type="globmapperType"/>
        </xs:choice>
    </xs:complexType>
    <xs:complexType name="flattenmapperType"/>
    <xs:complexType name="antformType">
        <xs:choice maxOccurs="unbounded">
            <xs:element name="label" type="xs:string"/>
            <xs:element name="separator"/>
            <xs:element name="tab">
                <xs:complexType>
                    <xs:attribute name="label" type="xs:string"/>
                </xs:complexType>
            </xs:element>
            <xs:element name="fileSelectionProperty">
                <xs:complexType>
                    <xs:attribute name="if" type="xs:string"/>
                    <xs:attribute name="unless" type="xs:string"/>
                    <xs:attribute name="label" type="xs:string"/>
                    <xs:attribute name="property" type="xs:string"/>
                    <xs:attribute name="directoryChooser" type="xs:string"/>
                    <xs:attribute name="required" type="xs:boolean"/>
                    <xs:attribute name="tooltip" type="xs:string"/>
                    <xs:attribute name="focus" type="xs:boolean"/>
                </xs:complexType>
            </xs:element>
            <xs:element name="selectionProperty">
                <xs:complexType>
                    <xs:attribute name="if" type="xs:string"/>
                    <xs:attribute name="unless" type="xs:string"/>
                    <xs:attribute name="label" type="xs:string"/>
                    <xs:attribute name="property" type="xs:string"/>
                    <xs:attribute name="values" type="xs:string"/>
                    <xs:attribute name="tooltip" type="xs:string"/>
                    <xs:attribute name="separator" type="xs:string"/>
                    <xs:attribute name="focus" type="xs:boolean"/>
                </xs:complexType>
            </xs:element>
            <xs:element name="textProperty">
                <xs:complexType>
                    <xs:attribute name="if" type="xs:string"/>
                    <xs:attribute name="unless" type="xs:string"/>
                    <xs:attribute name="label" type="xs:string"/>
                    <xs:attribute name="property" type="xs:string"/>
                    <xs:attribute name="required" type="xs:boolean"/>
                    <xs:attribute name="tooltip" type="xs:string"/>
                    <xs:attribute name="password" type="xs:string"/>
                    <xs:attribute name="focus" type="xs:boolean"/>
                </xs:complexType>
            </xs:element>
        </xs:choice>
        <xs:attribute name="title" type="xs:string"/>
        <xs:attribute name="image" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="mathType">
        <xs:attribute name="result" type="xs:string"/>
        <xs:attribute name="datatype" type="xs:string"/>
        <xs:attribute name="strict" type="xs:boolean"/>
        <xs:attribute name="operation" type="xs:string"/>
        <xs:attribute name="operand1" type="xs:string"/>
        <xs:attribute name="operand2" type="xs:string"/>
        <!-- TODO: define nested elements -->
    </xs:complexType>
    <xs:complexType name="antserverType">
        <xs:attribute name="port" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="shellscriptType" mixed="true">
        <xs:choice maxOccurs="unbounded">
            <xs:element name="arg">
                <xs:complexType>
                    <xs:attribute name="value" type="xs:string"/>
                </xs:complexType>
            </xs:element>
        </xs:choice>
        <xs:attribute name="shell" type="xs:string"/>
        <xs:attribute name="tmpsuffix" type="xs:string"/>
        <xs:attribute name="dir" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="runtargetType">
        <xs:attribute name="target" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="echoxmlType">
        <xs:choice maxOccurs="unbounded">
            <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
        </xs:choice>
        <xs:attribute name="file" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="trycatchType">
        <xs:sequence>
            <xs:element name="try">
                <xs:complexType>
                    <xs:complexContent>
                        <xs:extension base="taskcontainerType"/>
                    </xs:complexContent>
                </xs:complexType>
            </xs:element>
            <xs:element name="catch">
                <xs:complexType>
                    <xs:complexContent>
                        <xs:extension base="taskcontainerType"/>
                    </xs:complexContent>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
        <xs:attribute name="property" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="resourcecountType">
        <xs:choice maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="dirset" type="dirsetType"/>
        </xs:choice>
        <xs:attribute name="property" type="xs:string"/>
        <xs:attribute name="when" type="xs:string"/>
        <xs:attribute name="count" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="remoteantType">
        <xs:choice maxOccurs="unbounded">
            <xs:element name="runtarget" type="runtargetType"/>
        </xs:choice>
        <xs:attribute name="machine" type="xs:string"/>
        <xs:attribute name="port" type="xs:string"/>
        <xs:attribute name="persistent" type="xs:string"/>
        <xs:attribute name="failonerror" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="propertyresourceType">
        <xs:attribute name="name" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="firstType">
        <xs:complexContent>
            <xs:extension base="resourceCollectionContainerType">
                <xs:attribute name="count" type="xs:string"/>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="sortType">
        <xs:choice maxOccurs="unbounded">
            <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
        </xs:choice>
    </xs:complexType>
    <xs:complexType name="schemaType">
        <xs:attribute name="namespace" type="xs:string"/>
        <xs:attribute name="file" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="retryType">
        <xs:complexContent>
            <xs:extension base="taskcontainerType">
                <xs:attribute name="sleepTime" type="xs:string"/>
                <xs:attribute name="retryCount" type="xs:string"/>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="antcallbackType">
        <xs:complexContent>
            <xs:extension base="antcallType">
                <xs:attribute name="return" type="xs:string"/>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="diagnosticsType"/>
    <xs:complexType name="sshexecType">
        <xs:attribute name="host" type="xs:string"/>
        <xs:attribute name="username" type="xs:string"/>
        <xs:attribute name="password" type="xs:string"/>
        <xs:attribute name="trust" type="xs:string"/>
        <xs:attribute name="command" type="xs:string"/>
        <xs:attribute name="failonerror" type="xs:boolean"/>
    </xs:complexType>
    <xs:complexType name="scpType">
        <xs:choice maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
        </xs:choice>
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="localFile" type="xs:string"/>
        <xs:attribute name="remoteFile" type="xs:string"/>
        <xs:attribute name="todir" type="xs:string"/>
        <xs:attribute name="localTodir" type="xs:string"/>
        <xs:attribute name="localTofile" type="xs:string"/>
        <xs:attribute name="remoteTodir" type="xs:string"/>
        <xs:attribute name="remoteTofile" type="xs:string"/>
        <xs:attribute name="port" type="xs:string"/>
        <xs:attribute name="trust" type="xs:string"/>
        <xs:attribute name="knownhosts" type="xs:string"/>
        <xs:attribute name="failonerror" type="xs:string"/>
        <xs:attribute name="password" type="xs:string"/>
        <xs:attribute name="keyfile" type="xs:string"/>
        <xs:attribute name="passphrase" type="xs:string"/>
        <xs:attribute name="verbose" type="xs:string"/>
        <xs:attribute name="sftp" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="xcluderType">
        <xs:attribute name="in" type="xs:string"/>
        <xs:attribute name="out" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="assertTrueType">
        <xs:complexContent>
            <xs:extension base="taskcontainerType">
                <xs:attribute name="message" type="xs:string"/>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="assertFileExistsType">
        <xs:complexContent>
            <xs:extension base="taskcontainerType">
                <xs:attribute name="file" type="xs:string"/>
                <xs:attribute name="message" type="xs:string"/>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="fmppType">
        <xs:choice maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
            <xs:element name="data">
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="xs:string">
                            <xs:attribute name="expandProperties" type="xs:string"/>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
        </xs:choice>
        <xs:attribute name="sourceFile" type="xs:string"/>
        <xs:attribute name="outputFile" type="xs:string"/>
        <xs:attribute name="sourceRoot" type="xs:string"/>
        <xs:attribute name="outputRoot" type="xs:string"/>
        <xs:attribute name="includes" type="xs:string"/>
        <xs:attribute name="excludes" type="xs:string"/>
        <xs:attribute name="replaceExtension" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="databaseType">
        <xs:attribute name="output" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="logextractType">
        <xs:complexContent>
            <xs:extension base="resourceCollectionContainerType">
                <xs:attribute name="file" type="xs:string"/>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="signalType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="fileset" type="filesetType"/>
        </xs:choice>
        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="result" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="dependenciesType">
        <xs:attribute name="format" type="xs:string"/>
    </xs:complexType>
    <!-- Presets -->
    <xs:complexType name="preset.mailType">
        <xs:complexContent>
            <xs:extension base="mailType"/>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="preset.execType">
        <xs:complexContent>
            <xs:extension base="execType"/>
        </xs:complexContent>
    </xs:complexType>
    <!-- Macros -->
    <xs:complexType name="macro.compile.htmlscanlogType">
        <xs:attribute name="input" type="xs:string"/>
        <xs:attribute name="output" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="macro.cmakerType">
        <xs:attribute name="ncp" type="xs:string"/>
        <xs:attribute name="s60" type="xs:string"/>
        <xs:attribute name="action" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="macro.compile.genxmlType">
        <xs:attribute name="input" type="xs:string"/>
        <xs:attribute name="output" type="xs:string"/>
        <xs:attribute name="configuration" type="xs:string"/>
        <xs:attribute name="log" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="macro.compile.ebsType">
        <xs:attribute name="input" type="xs:string"/>
        <xs:attribute name="log" type="xs:string"/>
        <xs:attribute name="threads" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="macro.build.ebs.xmlType">
        <xs:attribute name="input" type="xs:string"/>
        <xs:attribute name="logname" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="macro.log.htmlType">
        <xs:attribute name="input" type="xs:string"/>
        <xs:attribute name="output" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="macro.bldmake-bldfilesType">
        <xs:attribute name="dir" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="macro.abldType">
        <xs:attribute name="dir" type="xs:string"/>
        <xs:attribute name="command" type="xs:string"/>
        <xs:attribute name="platform" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="macro.filtered-record-startType"/>
    <xs:complexType name="macro.filtered-record-stopType">
        <xs:attribute name="pattern" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="macro.update-statusType"/>
    <xs:complexType name="macro.create-cshelp-bldinfType">
        <xs:attribute name="delivery" type="xs:string"/>
        <xs:attribute name="product" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="createDeltaZipMacroType">
        <xs:attribute name="variant" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="macro.rombuild-imakerType">
        <xs:attribute name="product" type="xs:string"/>
        <xs:attribute name="target" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="macro.imakerType">
        <xs:attribute name="product" type="xs:string"/>
        <xs:attribute name="target" type="xs:string"/>
        <xs:attribute name="makefile" type="xs:string"/>
        <xs:attribute name="cmd" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="macro.ccm-availableType">
        <xs:attribute name="resultproperty" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="macro.publishType"/>
    <xs:complexType name="macro.rom-buildType">
        <xs:attribute name="stage" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="macro.disk-spaceType">
        <xs:attribute name="drive" type="xs:string"/>
        <xs:attribute name="space" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="macro.notifyType">
        <xs:attribute name="message" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="macro.netrc-passwordType">
        <xs:attribute name="output-prop" type="xs:string"/>
        <xs:attribute name="result-prop" type="xs:string"/>
        <xs:attribute name="type" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="macro.netrc-usernameType">
        <xs:attribute name="output-prop" type="xs:string"/>
        <xs:attribute name="result-prop" type="xs:string"/>
        <xs:attribute name="type" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="macro.compile.genxml-mergeType">
        <xs:attribute name="input" type="xs:string"/>
        <xs:attribute name="output" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="macro.declare.idType">
        <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
    <xs:complexType name="macro.mail-target-completedType">
        <xs:attribute name="section" type="xs:string"/>
        <xs:attribute name="sms" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="zipContentMacroType">
        <xs:attribute name="type" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="macro.delete-fota-confType">
        <xs:attribute name="product" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="macro.rombuild.valueType">
        <xs:attribute name="product.name" type="xs:string"/>
        <xs:attribute name="outputproperty" type="xs:string"/>
        <xs:attribute name="rombuild.value" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="hlm-assertType">
        <xs:complexContent>
            <xs:extension base="taskcontainerType">
                <xs:attribute name="message" type="xs:string"/>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="hlm-assertFileExistsType">
        <xs:attribute name="file" type="xs:string"/>
        <xs:attribute name="message" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="reference-to-fileType">
        <xs:attribute name="refid" type="xs:string"/>
        <xs:attribute name="output" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="macro.xml.to.fmtlType">
        <xs:attribute name="input" type="xs:string"/>
        <xs:attribute name="xmlroot" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="macro.temp.record.startType">
        <xs:attribute name="name" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="macro.temp.record.stopType">
        <xs:attribute name="name" type="xs:string"/>
    </xs:complexType>
    <!--
    
    <xs:complexType name="Type">
        <xs:attribute name="" type="xs:string"/>
    </xs:complexType>
    -->
</xs:schema>
\ No newline at end of file
--- a/buildframework/helium/tools/common/schema/helium_ant.xsd	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/common/schema/helium_ant.xsd	Thu Mar 04 15:10:37 2010 +0200
@@ -118,20 +118,6 @@
             <xs:attribute name="variant" type="xs:string"/>
         </xs:complexType>
     </xs:element>
-    <xs:element name="rombuildImakerMacro">
-        <xs:complexType>
-            <xs:attribute name="product" type="xs:string"/>
-            <xs:attribute name="target" type="xs:string"/>
-        </xs:complexType>
-    </xs:element>
-    <xs:element name="ecImakerMacro">
-        <xs:complexType>
-            <xs:attribute name="makefile.target" type="xs:string"/>
-        </xs:complexType>
-    </xs:element>
-    <xs:element name="preECImakerMacro">
-        <xs:complexType/>
-    </xs:element>
     <xs:element name="imakerMacro">
         <xs:complexType>
             <xs:attribute name="product" type="xs:string"/>
--- a/buildframework/helium/tools/common/templates/coveragerecord.html.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/common/templates/coveragerecord.html.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -58,7 +58,7 @@
 <h2>Ant Code Coverage</h2>
 <p>Total Targets: ${totalTargets}</p>
 <p>Executed Targets: ${execTargets}</p>
-<p>Percentage Targets: ${(execTargets/totalTargets*100)?int}</p>
+<p>Percentage Targets: <#if totalTargets!=0>${(execTargets/totalTargets*100)?int}<#else>N/A</#if></p>
 <p>Total Tasks: ${totalTasks}</p>
 <p>Executed Tasks: ${execTasks}</p>
-<p>Percentage Tasks: ${(execTasks/totalTasks*100)?int}</p>
\ No newline at end of file
+<p>Percentage Tasks: <#if totalTasks!=0>${(execTasks/totalTasks*100)?int}<#else>N/A</#if></p>
\ No newline at end of file
--- a/buildframework/helium/tools/common/templates/coveragerecord.txt.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/common/templates/coveragerecord.txt.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -61,8 +61,8 @@
 +---------+-------+-----------+-----------+
 |type     |total  |executed   |%executed  |
 +=========+=======+===========+===========+
-|target   |${totalTargets}      |${execTargets}      |${(execTargets/totalTargets*100)?int}     |
+|target   |${totalTargets}      |${execTargets}      |<#if totalTargets!=0>${(execTargets/totalTargets*100)?int}<#else>N/A</#if>     |
 +---------+-------+-----------+-----------+
-|task     |${totalTasks}      |${execTasks}        |${(execTasks/totalTasks*100)?int}     |
+|task     |${totalTasks}      |${execTasks}        |<#if totalTasks!=0>${(execTasks/totalTasks*100)?int}<#else>N/A</#if>     |
 +---------+-------+-----------+-----------+
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/tools/common/templates/coverity/coverity.summary.html.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,79 @@
+<#--
+============================================================================ 
+Name        : coverity.summary.html.ftl 
+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:
+
+============================================================================
+--> 
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html>
+  <head>
+  <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+    <title>
+      Coverity tool summary information.
+    </title>
+    <style type="text/css">
+        body{font-family:Verdana; font-size:8pt; line-height:1.1em; padding: 10px 10px; background-color:#F8F8F2;}
+        h1{
+          font-size:14pt;
+          color:#000;
+          padding: 20px 15px;
+          margin:0;
+         }
+        h2 {
+          font-size:10pt;
+          margin: 1em 0;
+        }
+        h5{
+          font-size:10pt;
+          text-align:center;
+          background-color:#4682B4;
+          color:"black";
+          heigth:20pt;
+          padding: 5px 15px;
+          
+         }
+        .data{color:#00F;font-family:Verdana; font-size:10pt;color:"black";}
+        span.items{text-indent:-1em; padding-left: 1em; display:block; word-wrap:normal;}
+
+        span.bold{font-weight:bold; display:block; padding: 1em 0;}
+        p.maintext{padding-top: 1em;}
+        p.logfolder{color:#000;font-weight:bold; padding-top: 1em;}
+        p.distrib{font-weight:bold;}
+ 
+ 
+        a:link,a:visited{color:#00E;}
+        
+    </style>
+  </head>
+  <body>
+        <div id="coveritysummary">
+            <h5>Coverity Summary</h5>
+                <#assign htmlString = covsummary?replace("["," ")>
+                <#assign htmlString = htmlString?replace("]"," ")>
+                <#list htmlString?split(",") as line>
+                    <#if line?starts_with("   ")>
+                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;${line}<br />
+                    <#elseif !line?contains("cov-analyze")>
+                        ${line}<br />
+                    </#if>
+                </#list>
+        </div>
+        </br>
+    </body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/tools/common/templates/coverity/coverity.summary.xml.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,36 @@
+<#--
+============================================================================ 
+Name        : coverity.summary.xml.ftl 
+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:
+
+============================================================================
+--> 
+<?xml version="1.0" encoding="utf-8"?>
+<coverity>
+    <#assign htmlString = covsummary?replace("["," ")>
+    <#assign htmlString = htmlString?replace("]"," ")>
+    <#list htmlString?split(",") as line>
+        <#if !line?contains("cov-analyze") && !line?starts_with("---") && !line?contains("summary") && !line?contains("defects") >
+            <#assign words = line?split(":")>
+            <#if words[1]??>
+                <#assign firstword=words[0]?trim secondword=words[1]?trim>
+<summary message="${firstword}" value="${secondword}"/> 
+            </#if>
+        </#if>
+    </#list>
+</coverity>
+        
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/tools/common/templates/diamonds/coverity.xml.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,44 @@
+  <#--
+============================================================================ 
+Name        : coverity.xml.ftl 
+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:
+
+============================================================================
+--> 
+<#include "diamonds_header.ftl">
+    <quality aspect="coverity"> 
+        <#if (doc)?? >
+            <#list doc["coverity/coverity/summary"] as summary>
+                <summary message="${summary.@message}" value="${summary.@value}"/> 
+            </#list>
+        </#if>
+        <#if (doc)?? >
+            <#list doc["coverity/error"] as error>
+                <#if error.checker?contains("Total")>
+                <summary message="Total Errors" value="${error.num}"/>
+                </#if>
+            </#list>
+        </#if>
+        <#if (doc)?? >
+            <#list doc["coverity/error"] as error>
+                <#if !error.checker?contains("Total")>
+                <message severity="error" type="${error.checker}" message="Checker name" location=" " value="${error.num}"/> 
+                </#if>
+            </#list>
+        </#if>
+    </quality>
+<#include "diamonds_footer.ftl">
--- a/buildframework/helium/tools/common/templates/diamonds/diamonds_locations.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/common/templates/diamonds/diamonds_locations.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -20,10 +20,10 @@
 ============================================================================
 -->
 <locations>
-    <#if ant?keys?seq_contains("release.grace.dir") &&  !(ant["release.grace.dir"]?contains("${"))>
+    <#if ant?keys?seq_contains("release.hydra.dir")>
         <location>
-               <link>${ant["release.grace.dir"]}</link>
-               <description>GRACE server</description>
+               <link>${ant["release.hydra.dir"]}</link>
+               <description>Hydra server</description>
         </location>
     </#if>
     <#if ant?keys?seq_contains("publish.dir.list")>
--- a/buildframework/helium/tools/common/templates/diamonds/diamonds_macro.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/common/templates/diamonds/diamonds_macro.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -102,4 +102,4 @@
         </components>
     </#if>
 </#macro>
-<#assign schema_version=13/>
\ No newline at end of file
+<#assign schema_version=20/>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/tools/common/templates/diamonds/faults_metadata_orm.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,51 @@
+<#--
+============================================================================ 
+Name        : macro.ftl 
+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:
+
+============================================================================
+-->
+<#include "diamonds_header.ftl"> 
+
+<#setting number_format="0">
+
+    <#assign table_info = pp.loadData('com.nokia.helium.metadata.ORMFMPPLoader',
+        "${dbPath}") >
+    <#assign convertedLogPath = "${logpath}"?replace("\\","/") >
+    <#assign logfile =  table_info['jpasingle']['select l from LogFile l where LOWER(l.path) like \'%${convertedLogPath?lower_case}\''][0]>
+   <faults>
+        <total severity="error">${table_info['jpasingle']['select Count(m.id) from MetadataEntry m JOIN m.priority as p where m.logPathId=${logfile.id} and p.priority like \'%ERROR%\''][0]}</total>
+        <total severity="warning">${table_info['jpasingle']['select Count(m.id) from MetadataEntry m JOIN m.priority as p where m.logPathId=${logfile.id} and UPPER(p.priority) like \'%WARNING%\''][0]}</total>
+        <total severity="warning_rvct_other">${table_info['jpasingle']['select Count(m.id) from MetadataEntry m JOIN m.priority as p where m.logPathId=${logfile.id} and UPPER(p.priority) like \'%WARNING%\''][0]}</total>
+        <!-- todo update to calculate the correct value -->
+        <total severity="warning_rvct_bad">${table_info['jpasingle']['select Count(m.id) from MetadataEntry m JOIN  m.priority as p where m.logPathId = ${logfile.id} and UPPER(p.priority) like \'%REMARK%\''][0]}</total>
+    <#list table_info['jpa']['select c from Component c where c.logPathID=${logfile.id} ORDER BY c.component'] as component>
+        <component>
+            <name>${component.component}</name>
+            <total severity="error">${table_info['jpasingle']['select Count(m.id) from MetadataEntry m JOIN m.priority as p where UPPER(p.priority) like \'%ERROR%\' and m.componentId = ${component.id}'][0]}</total>
+            <total severity="warning">${table_info['jpasingle']['select Count(m.id) from MetadataEntry m JOIN m.priority as p where UPPER(p.priority) like \'%WARNING%\' and m.componentId = ${component.id}'][0]}</total>
+            <total severity="critical">${table_info['jpasingle']['select Count(m.id) from MetadataEntry m JOIN m.priority as p where UPPER(p.priority) like \'%REMARK%\' and m.componentId = ${component.id}'][0]}</total>
+        </component>
+    </#list>
+    </faults>
+    <components>
+    <#list table_info['jpa']['select c from Component c where c.logPathID=${logfile.id}'] as component>
+    <!-- all components -->
+        <component>${component.component}</component>
+    </#list>
+    </components>
+<#include "diamonds_footer.ftl"> 
\ No newline at end of file
--- a/buildframework/helium/tools/common/templates/ido/ido-ant-copy.xml.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/common/templates/ido/ido-ant-copy.xml.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -34,6 +34,8 @@
                         <#if (!ant?keys?seq_contains('keep.internals'))>
                         <exclude name="**/internal/**"/>
                         </#if>
+                        <exclude name="**/.hg/**"/>
+                        <exclude name="**/.svn/**"/>
                     </fileset>
                 </copy>
                 <exec executable="attrib" dir="${data[component]}">
--- a/buildframework/helium/tools/common/templates/ido/ido-robot-zip.ant.xml.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/common/templates/ido/ido-robot-zip.ant.xml.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -28,14 +28,14 @@
                 <#list ant['do.robot.release']?split(',') as project>
                     <#if name?replace('\\', '/')?lower_case?contains("/${project}/${project}"?lower_case)>
                     <#-- 7za u test.7z  output/analysisdata/ -->
-                    <exec executable="7za" dir="${data[name]}/../">
+                    <exec executable="7za" dir="${name}/../">
                         <arg value="u"/>
                         <arg value="-xr!*/internal/*"/>
                         <arg value="-xr!*/doc/*"/>
                         <arg value="-xr!_ccmwaid.inf"/>
                         <arg value="-xr!abld.bat"/>
                         <arg value="${ant['build.output.dir']}/s60Sources.7z"/>
-                        <arg value="${data[name]?split("/")?last}/"/>
+                        <arg value="${name?split("/")?last}/"/>
                     </exec>                    
                     </#if>
                 </#list>
--- a/buildframework/helium/tools/common/templates/imaker/build_imaker_roms.ant.xml.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +0,0 @@
-<#--
-============================================================================ 
-Name        : build_imaker_roms.ant.xml.ftl 
-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:
-
-============================================================================
---> 
-<?xml version="1.0"?>
-<project name="build_imaker_roms" default="all">
-    <#assign dollar="$"/>
-    <#assign romnumber=0/>
-    
-    <property name="imaker.temp.dir" location="${dollar}{build.drive}/epoc32/rombuild/imaker/temp"/>
-    
-    <target name="all">
-        <#list data as configuration>
-            <#if configuration['command'] == "switch_region">
-                <echo>Switching to ${configuration['region']}.</echo>
-                <unzip src="${dollar}{zips.loc.dir}/delta_${configuration['region']}_package.zip" 
-                dest="${dollar}{build.drive}/" overwrite="true"/>
-            </#if>
-            
-            <#assign romproperties=pp.newWritableSequence()/>
-            <#if configuration['command'] == "imaker">
-                <!--<parallel>-->
-                <#list configuration['config']?keys as config>
-                    <#list configuration['config'][config] as target>
-                        <@pp.add seq=romproperties value="imaker.output.${romnumber}" />
-                        <sequential>
-                            <mkdir dir="${dollar}{imaker.temp.dir}/conf_${romnumber}"/>
-                            <!--  outputproperty="imaker.output.${romnumber}" -->
-                            <exec executable="${dollar}{imaker.command}" dir="${dollar}{build.drive}/">
-                                <arg line="-f ${config?xml}"/>
-                                <#list target['variables']?keys as varname>
-                                    <arg value="${varname?xml}=${target['variables'][varname]?xml}"/>
-                                </#list>
-                                <arg value="${target['target']?xml}"/>
-                                <arg value="WORKDIR=${dollar}{imaker.temp.dir}/conf_${romnumber}"/>
-                            </exec>
-                        </sequential>
-                        <#assign romnumber=romnumber+1/>
-                    </#list>
-                </#list>
-                <!--</parallel>
-                <#list romproperties as romproperty>
-                    <echo>${dollar}{${romproperty}}</echo>
-                </#list>-->
-            </#if>
-        </#list>
-    </target>
-
-</project>
\ No newline at end of file
--- a/buildframework/helium/tools/common/templates/imaker/build_imaker_roms.mk.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-<#--
-============================================================================ 
-Name        : build_imaker_roms.mk.ftl 
-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:
-
-============================================================================
---> 
-###################################################################
-#
-# Generated build file.
-#
-#
-###################################################################
-<#assign deps=""/>
-<#assign configid=1/>
-<#list data as configuration>	
-	<#list configuration?keys as config>
-		<#list configuration[config] as target>
-			<#assign deps="${deps} configuration${configid}_${config}_${target['target']}"/>
-###################################################################
-# building configuration${configid}_${config}_${target['target']}
-###################################################################
-configuration${configid}_${config}_${target['target']}:
-	-imaker -f ${config} <#list target['variables']?keys as varname>"${varname}=${target['variables'][varname]}" </#list> ${target['target']}
-
-
-		</#list>
-	</#list>
-	<#assign configid= configid + 1/>
-</#list>
-
-
-###################################################################
-# Toplevel target
-###################################################################
-all: ${deps} ;
-
-# End of config
\ No newline at end of file
--- a/buildframework/helium/tools/common/templates/imaker/build_imaker_roms_signing.mk.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,104 +0,0 @@
-<#--
-============================================================================ 
-Name        : build_imaker_roms_signing.mk.ftl 
-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:
-
-============================================================================
--->
-<#assign dollar="$"/>
-
-IMAKER_WORKDIR=\epoc32\rombuild\imaker_temp
-
-${dollar}(IMAKER_WORKDIR):
-	-mkdir ${dollar}(IMAKER_WORKDIR)
-
-
-###################################################################
-#
-# Generated build file.
-#  * Implements Electic Cloud signing optimizations.
-#
-###################################################################
-<#assign deps_image=""/>
-<#assign deps_all=""/>
-<#assign configid=1/>
-<#assign romid=0/>
-<#list data as configuration>
-
-	<#if configuration['command'] == "switch_region">
-###################################################################
-# Config${configid} : Switching region (${configuration['region']})
-###################################################################
-
-build-configuration${configid}: <#if (configid-1 > 0) >build-configuration${configid-1}</#if>
-	@echo Switching to ${configuration['region']}.
-	-@unzip -o -d $(subst \,/,$(EPOCROOT)) ${ant['zips.loc.dir']}/delta_${configuration['region']}_package.zip 
-
-   		<#assign deps_all="build-configuration${configid}"/>
- 		<#assign configid= configid + 1/>
-	</#if>
-
-	<#if configuration['command'] == "imaker">
-		<#assign deps_conf_image=""/>
-		<#assign deps_conf_signing=""/>
-		<#list configuration['config']?keys as config>
-			<#list configuration['config'][config] as target>
-				<#assign deps_conf_image="${deps_conf_image} configuration${configid}_${config}_${target['target']}"/>
-				<#assign deps_conf_signing="${deps_conf_signing} signing_configuration${configid}_${config}_${target['target']}"/>
-###################################################################
-# building configuration${configid}_${config}_${target['target']}
-###################################################################
-configuration${configid}_${config}_${target['target']}:  ${dollar}(IMAKER_WORKDIR) <#if (configid-1 > 0) >build-configuration${configid-1}</#if>
-	@echo === config_${configid} == configuration${configid}_${config}_${target['target']}
-	@echo -- imaker -f ${config} image ... ${target['target']}
-	-@perl -e "print '++ Started at '.localtime().\"\n\""
-	-@perl -e "use Time::HiRes; print '+++ HiRes Start '.Time::HiRes::time().\"\n\";"
-	-imaker -f ${config} <#list target['variables']?keys as varname>"${varname}=${target['variables'][varname]}" </#list> ${target['target']}-image  WORKDIR=${dollar}(IMAKER_WORKDIR)/conf_${romid}
-	-@perl -e "use Time::HiRes; print '+++ HiRes End '.Time::HiRes::time().\"\n\";"
-	-@perl -e "print '++ Finished at '.localtime().\"\n\""
-
-#pragma runlocal
-signing_configuration${configid}_${config}_${target['target']}: ${dollar}(IMAKER_WORKDIR) all-image-conf${configid}
-	@echo === config_${configid} == signing_configuration${configid}_${config}_${target['target']}
-	@echo -- imaker -f ${config} elf2flash ... ${target['target']}
-	-@perl -e "print '++ Started at '.localtime().\"\n\""
-	-@perl -e "use Time::HiRes; print '+++ HiRes Start '.Time::HiRes::time().\"\n\";"	
-	-imaker -f ${config} <#list target['variables']?keys as varname>"${varname}=${target['variables'][varname]}" </#list> ${target['target']}-e2flash  WORKDIR=${dollar}(IMAKER_WORKDIR)/conf_${romid}
-	-@perl -e "use Time::HiRes; print '+++ HiRes End '.Time::HiRes::time().\"\n\";"
-	-@perl -e "print '++ Finished at '.localtime().\"\n\""
-
-		<#assign romid= romid + 1/>
-            </#list>
-		</#list>
-
-        <#if deps_conf_image != "" && deps_conf_signing!= "" >
-all-image-conf${configid}: ${deps_conf_image} ;
-build-configuration${configid}: ${deps_conf_signing} ;
-            <#assign deps_all="build-configuration${configid}"/>
-            <#assign configid= configid + 1/>
-        </#if>
-    </#if>
-</#list>
-
-
-###################################################################
-# Toplevel target
-###################################################################
-
-all: ${deps_all} ;
-
-# End of config
\ No newline at end of file
--- a/buildframework/helium/tools/common/templates/log/bt_email.html.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,118 +0,0 @@
-<#--
-============================================================================ 
-Name        : email.html.ftl 
-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:
-
-============================================================================
---> 
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html>
-  <head>
-  <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
-    <title>
-      Build result e-mail from ${ant["env.COMPUTERNAME"]}.
-    </title>
-    <style type="text/css">
-        body{font-family:Verdana; font-size:10pt; line-height:1.1em; padding: 10px 10px; background-color:#E4F0F4;}
-        h1{
-          font-size:14pt;
-          color:#000;
-          padding: 20px 15px;
-              margin:0;
-         }
-        h2{font-size:12pt;}
-        h5{
-          font-size:10pt;
-          background-color:#8495BA;
-          color:#fff;
-          heigth:20pt;
-          padding: 5px 15px;
-          border-left:2px solid #5A6FA0;
-          border-bottom:2px solid #5A6FA0;
-          border-top:2px solid #98A6C6;
-          border-right:2px solid #98A6C6;
-          margin:0;
-         }
- 
-  
-        p {
-          font-size:10pt;
-          padding: 0em 1em 1em 1em;
-          margin: 0 1em 0.5em 1em;
-          border-right:1px solid #5A6FA0;
-          border-top:0;
-          border-bottom:1px solid #98A6C6;
-          border-left:1px solid #98A6C6;
-          background-color:#CDE4EB;
-          white-space:normal;
-        }
- 
-        .data{color:#00F;}
-        .okmessage{color:#24A22D;font-weight:bold; display:block; margin-bottom: 1em;padding-top: 1em;}
-        .errormessage{color:#F00;font-weight:bold; display:block; margin-bottom: 1em;padding-top: 1em;}
- 
-        span.items{text-indent:-1em; padding-left: 1em; display:block; word-wrap:normal;}
-
-        span.bold{font-weight:bold; display:block; padding: 1em 0;}
-        p.maintext{padding-top: 1em;}
-        p.logfolder{color:#000;font-weight:bold; padding-top: 1em;}
-        p.distrib{font-weight:bold;}
- 
- 
-        a:link,a:visited{color:#00E;}
-        
-    </style>
-  </head>
-  <body>
-      <!-- The title -->
-      <div id="buildname">
-        <h1>This is an e-mail notification that a bootability test has been completed on ${ant["env.COMPUTERNAME"]}</h1>
-      </div>
-
-    <!-- section -->
-    <#macro create_section title type>
-        <div id="foldername">
-            <h5>${title}</h5>
-            <p class="maintext">
-                <!-- content span -->
-                <span class="${type}"><#nested></span>
-            </p>
-        </div>
-    </#macro>
-    
-    <#macro dumplog>
-        <#list doc["diamonds-build/tests/test_results/test"] as testdoc>
-            Total       : ${testdoc.total} <br>
-            Executed    : ${testdoc.executed} <br>
-            Successfull : ${testdoc.successful} <br>
-            Failed      : ${testdoc.failed} <br>
-            
-            <#list testdoc.images as curimage>
-            Image       : ${curimage.image.name}
-            </#list>
-        </#list>    
-    </#macro>
-    
-    <@create_section title="Bootability test status" type="data">
-        <@dumplog/>
-    </@create_section>
-    
-    
-    
-    </body>
-</html>
\ No newline at end of file
--- a/buildframework/helium/tools/common/templates/log/bt_email_subject.txt.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,24 +0,0 @@
-<#--
-============================================================================ 
-Name        : bt_email_subject.txt.ftl 
-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:
-
-============================================================================
---> 
-<#if ant?keys?seq_contains("blacktusk.build.id")>
-[signal]:${ant["env.COMPUTERNAME"]}: ${signalname} check
-</#if>
\ No newline at end of file
--- a/buildframework/helium/tools/common/templates/log/bt_sms_content.txt.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,24 +0,0 @@
-<#--
-============================================================================ 
-Name        : bt_sms_content.txt.ftl 
-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:
-
-============================================================================
--->
-<#if ant?keys?seq_contains("blacktusk.build.id")>
-${ant["blacktusk.build.id"]}:${ant["env.COMPUTERNAME"]}: ${signalname} alert
-</#if>
\ No newline at end of file
--- a/buildframework/helium/tools/common/templates/log/build_status.xml.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/common/templates/log/build_status.xml.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -27,7 +27,7 @@
 <#assign priority_ids = priority_table?keys>
 
 <#list priority_ids as priority>
-    <#assign priority_count = table_info['select count(data) as COUNT from metadata where priority_id = ${priority} and logpath_id in (select id from logfiles where path like \'%${logfile}%\')'][0]['COUNT'] >
+    <#assign priority_count = table_info['select count(data) as COUNT from metadata where priority_id = ${priority} and logpath_id in (select id from logfiles where path like \'%${logpath}%\')'][0]['COUNT'] >
     <#if (priority_count >= 0)>
         <${priority_table['${priority}']?lower_case} count= "${priority_count}" />
     </#if>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/tools/common/templates/log/build_status_orm.xml.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,32 @@
+<#--
+============================================================================ 
+Name        : email.html.ftl 
+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:
+
+============================================================================
+-->
+<?xml version="1.0" encoding="utf-8"?>
+<build-status>
+    <#assign table_info = pp.loadData('com.nokia.helium.metadata.ORMFMPPLoader',
+        "${dbPath}") >
+    <#list table_info['jpa']['select p from Priority p'] as priority>
+        <#assign priority_count = table_info['jpasingle']['select Count(m.id) from MetadataEntry m JOIN  m.logFile  as l JOIN m.priority as p where LOWER(l.path) like \'%${logpath?lower_case}%\' and UPPER(p.priority) like \'%${priority.priority}%\''][0]>
+        <#if (priority_count >= 0)>
+            <${priority.priority?lower_case} count= "${priority_count}" />
+        </#if>
+    </#list>
+</build-status>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/tools/common/templates/log/cc_summary_metadata_orm.html.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,109 @@
+<#--
+============================================================================ 
+Name        : cc_summary.html.ftl 
+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:
+
+============================================================================
+-->
+
+    <#assign table_info = pp.loadData('com.nokia.helium.metadata.ORMFMPPLoader',
+        "${dbPath}") >
+ 
+<h1>${ant['build.id']}</h1>
+
+<#if ant?keys?seq_contains('publish')>
+    <#if ant?keys?seq_contains('publish.dir.list')>
+        <h2>Publish locations</h2>
+        <p>
+        <#list ant['publish.dir.list']?split(',') as site>
+          <a href="${site}">${site}</a></br>
+        </#list>
+        </p>
+    <#else>
+        <#if ant?keys?seq_contains('publish.dir')>
+        <h2>Publish locations</h2>
+        <p><a href="${ant['publish.dir']}">${ant['publish.dir']}</a></p>
+        </#if>
+    </#if>
+</#if>
+
+<#list table_info['jpa']['select l from LogFile l where LOWER(l.path) like \'%_ccm_get_input.log%\''] as logfile>
+
+<#assign metadata_ccm_records = table_info['native']['select * from metadataentry where logpath_id = ${logpath} and (priority_id in (select id from priority where priority=\'ERROR\')  or priority_id in (select id from priority where priority=\'WARNING\'))'] >
+<h2>Synergy errors</h2>
+    <p>
+    <#list table_info['native:com.nokia.helium.jpa.entity.metadata.MetadataEntry']['select * from metadataentry INNER JOIN priority ON priority.priority_id=metadataentry.priority_id where metadateentry.logpath_id=${logfile.id} and (UPPER(priority.priority) like \'ERROR\' OR UPPER(priority.priority) like \'WARNING\''] as entry >    
+        ${entry.text}
+    </#list>
+    </p>
+</#list>
+
+<h2>Build errors</h2>
+<#list table_info['jpa']['select l from LogFile l where LOWER(l.path) like \'%_compile.log\' and path not like \'%_clean_compile.log\''] as logfile>
+<#assign colors = {'error': 'FF0000', 'critical': 'FF7000', 'warning': 'FFF000', 'remark': '0000FF'}/>
+
+<table border="1" cellpadding="0" cellspacing="0" width="100%">
+<tr>
+    <th width="55%">Component</th>
+    <th width="15%">Errors</th>
+    <th width="15%">Criticals</th>
+    <th width="15%">Warnings</th>
+    <th width="15%">Notes</th>
+</tr>
+    <#assign component_table = table_info['select id, component from component where logPath_id=${logpath}'] >
+    <#assign component_ids = component_table?keys?sort >
+
+<#list table_info['jpa']['select c from Component c where c.logpathID=${logpath.id} ORDERBY component'] as component>
+<tr>
+<td>"${component.id}"</td>
+    <#list colors?keys as type>
+         <#assign count =  table_info['jpasingle']['select count(m.id) from MetadataEntry as m JOIN  m.priority as p where (UPPER(p.priority) like \'%${type?upper_case}%\' and M.componentId=${component.id}'][0] >    
+        <#if ( count?number &gt; 0)>
+<td align="center" bgcolor="#${colors[type]}">${count}</td>
+        <#else>
+<td align="center">0</td>
+        </#if>
+    </#list>
+</tr>
+</#list>
+</#list>
+</table>
+
+<#list table_info['jpa']['select l from LogFile l where LOWER(l.path) like \'%roms.log\''] as logfile>
+    <h2>ROMs ${logfile.path}</h2>
+        <p>
+    <#list table_info['native:com.nokia.helium.jpa.entity.metadata.MetadataEntry']['select * from metadataentry where m.logpathId=${logfile.id}'] as entry >
+        ${entry.text}<br/>
+    </#list>
+        </p>
+</#list>
+
+<#list table_info['jpa']['select l from LogFile l where LOWER(l.path) like \'%validate_policy.xml\''] as logfile>
+        <h2>Distribution Policy validation</h2>
+        <p>
+        <#list table_info['native:com.nokia.helium.jpa.entity.metadata.MetadataEntry']['select * from metadataentry where m.logpathId=${logfile.id}'] as entry >
+            ${entry.text}<br/>
+        </#list>
+        </p>
+</#list>
+
+<#if ant?keys?seq_contains('diamonds.build.id')>
+<p>
+<h2>ATS Test Results</h2>
+    <a href="http://${ant['diamonds.host']}${ant['diamonds.build.id']}#tab=4" >http://${ant['diamonds.host']}${ant['diamonds.build.id']}#tab=4 </a>
+</p>
+</#if>
\ No newline at end of file
--- a/buildframework/helium/tools/common/templates/log/email.html.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/common/templates/log/email.html.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -147,11 +147,6 @@
         <@dumplog regex=".*validate_policy.xml"/>
     </@create_section>
     
-    <#elseif (signalname == 'btSmokeTestNotifySignal')>
-    <@create_section title="Smoke test status for the images" type="data">
-        <@dumplog regex=".*_blacktusk.log.xml"/>
-    </@create_section>
-    
     <#else>
     <@create_section title="Build status" type="data">
         <@dumplog regex=".*compile.log"/>
--- a/buildframework/helium/tools/common/templates/log/email_status.html.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/common/templates/log/email_status.html.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -87,7 +87,7 @@
     <#assign table_info = pp.loadData('com.nokia.helium.metadata.SQLFMPPLoader',
         "${dbPath}") >
 
-<#assign error_count = table_info['select count(data) as COUNT from metadata where priority_id in (select id from priority where priority like \'ERROR\') and logpath_id in (select id from logfiles where path like \'%${logfile}%\')'][0]['COUNT'] >
+<#assign error_count = table_info['select count(data) as COUNT from metadata where priority_id in (select id from priority where priority like \'ERROR\') and logpath_id in (select id from logfiles where path like \'%${logpath}%\')'][0]['COUNT'] >
     <!-- section -->
     <#macro create_section title type>
            <div id="foldername">
@@ -100,15 +100,15 @@
        </#macro>
 <#if (error_count > 0)>
         <span class="errormessage">
-            ${logfile}...FAIL<br/>
-    <#list table_info['select * from metadata where priority_id in (select id from priority where priority like \'ERROR\') and logpath_id in (select id from logfiles where path like \'%${logfile}%\')'] as recordentry >
+            ${logpath}...FAIL<br/>
+    <#list table_info['select * from metadata where priority_id in (select id from priority where priority like \'ERROR\') and logpath_id in (select id from logfiles where path like \'%${logpath}%\')'] as recordentry >
             <ul>
             ${recordentry['data']}<br/>
             </ul>
     </#list>
         </span>
 <#else>
-    <span class="okmessage">${logfile}...OK<br/></span>
+    <span class="okmessage">${logpath}...OK<br/></span>
 </#if>
 </body>
 </html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/tools/common/templates/log/email_status_orm.html.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,118 @@
+<#--
+============================================================================ 
+Name        : email.html.ftl 
+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:
+
+============================================================================
+-->
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html>
+  <head>
+  <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+    <title>
+      Build result e-mail from ${ant["env.COMPUTERNAME"]}.
+    </title>
+    <style type="text/css">
+        body{font-family:Verdana; font-size:10pt; line-height:1.1em; padding: 10px 10px; background-color:#E4F0F4;}
+        h1{
+          font-size:14pt;
+          color:#000;
+          padding: 20px 15px;
+              margin:0;
+         }
+        h2{font-size:12pt;}
+        h5{
+          font-size:10pt;
+          background-color:#8495BA;
+          color:#fff;
+          heigth:20pt;
+          padding: 5px 15px;
+          border-left:2px solid #5A6FA0;
+          border-bottom:2px solid #5A6FA0;
+          border-top:2px solid #98A6C6;
+          border-right:2px solid #98A6C6;
+          margin:0;
+         }
+ 
+  
+        p {
+          font-size:10pt;
+          padding: 0em 1em 1em 1em;
+          margin: 0 1em 0.5em 1em;
+          border-right:1px solid #5A6FA0;
+          border-top:0;
+          border-bottom:1px solid #98A6C6;
+          border-left:1px solid #98A6C6;
+          background-color:#CDE4EB;
+          white-space:normal;
+        }
+ 
+        .data{color:#00F;}
+        .okmessage{color:#24A22D;font-weight:bold; display:block; margin-bottom: 1em;padding-top: 1em;}
+        .errormessage{color:#F00;font-weight:bold; display:block; margin-bottom: 1em;padding-top: 1em;}
+ 
+        span.items{text-indent:-1em; padding-left: 1em; display:block; word-wrap:normal;}
+
+        span.bold{font-weight:bold; display:block; padding: 1em 0;}
+        p.maintext{padding-top: 1em;}
+        p.logfolder{color:#000;font-weight:bold; padding-top: 1em;}
+        p.distrib{font-weight:bold;}
+ 
+ 
+        a:link,a:visited{color:#00E;}
+        
+    </style>
+  </head>
+  <body>
+      <!-- The title -->
+      <div id="buildname">
+        <h1>This is an e-mail notification that a build has been completed on ${ant["env.COMPUTERNAME"]}</h1>
+      </div>
+
+    <#assign table_info = pp.loadData('com.nokia.helium.metadata.ORMFMPPLoader',
+        "${dbPath}") >
+
+    <#assign convertedLogFile = "${logpath}"?replace("\\","/")>
+    <#assign logfile =  table_info['jpasingle']['select l from LogFile l where LOWER(l.path) like \'%${convertedLogFile?lower_case}\''][0]>
+
+
+<#assign error_count = table_info['jpasingle']['select Count(m.id) from MetadataEntry m JOIN m.priority as p where m.logPathId=${logfile.id} and p.priority like \'%ERROR%\''][0]> 
+    <!-- section -->
+    <#macro create_section title type>
+           <div id="foldername">
+               <h5>${title}</h5>
+               <p class="maintext">
+                   <!-- content span -->
+                   <span class="${type}"><#nested></span>
+               </p>
+           </div>
+       </#macro>
+<#if (error_count > 0)>
+        <span class="errormessage">
+            ${logfile.path}...FAIL<br/>
+            <#list table_info['native:com.nokia.helium.jpa.entity.metadata.MetadataEntry']['select * from metadataentry INNER JOIN priority ON priority.priority_id=metadataentry.priority_id where UPPER(priority.priority) like \'%ERROR%\' and logpath_id=${logfile.id}'] as entry >
+            <ul>
+            ${entry.text}<br/>
+            </ul>
+    </#list>
+        </span>
+<#else>
+    <span class="okmessage">${logfile.path}...OK<br/></span>
+</#if>
+</body>
+</html>
\ No newline at end of file
--- a/buildframework/helium/tools/common/templates/log/scan2.html.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/common/templates/log/scan2.html.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -44,7 +44,7 @@
 
 <td align="center">${hours?string("00")}:${minutes?string("00")}:${seconds?string("00")}</td>
 <#list priority_ids as priority>
-    <#assign count = table_info['select count(data) as COUNT from metadata where priority_id in (select id from priority      where priority like \'${priority}\') and logpath_id in (select id from logfiles where path like \'%${logfile}%\') and component_id = \'${component}\' '][0]['COUNT'] >
+    <#assign count = table_info['select count(data) as COUNT from metadata where priority_id in (select id from priority      where priority like \'${priority}\') and logpath_id in (select id from logfiles where path like \'%${logfile}\') and component_id = \'${component}\' '][0]['COUNT'] >
     <#if count &gt; 0>
         <#assign color = color_list['${priority}']>
         <td align="center" bgcolor="${color}"><a href="#section${href_c_id}${href_id}">${count}</a></td>
@@ -57,7 +57,7 @@
 </#macro>
 
 <#macro print_list_text priority component href_id>
-<#assign count = table_info['select count(data) as COUNT from metadata where component_id=\'${component}\' and priority_id in (select id from priority where priority like \'${priority}\') and logpath_id in (select id from logfiles where path like \'%${logfile}%\')'][0]['COUNT'] >
+<#assign count = table_info['select count(data) as COUNT from metadata where component_id=\'${component}\' and priority_id in (select id from priority where priority like \'${priority}\') and logpath_id in (select id from logfiles where path like \'%${logfile}\')'][0]['COUNT'] >
 <#if count &gt; 0>
 <#if component_table?keys?seq_contains("${component}")>
     <#if component_table["${component}"] != "general">
@@ -90,8 +90,8 @@
     <#assign table_info = pp.loadData('com.nokia.helium.metadata.SQLFMPPLoader',
         "${dbPath}") >
 <#-- overall summary -->
-<#assign component_table = table_info['select id, component from component where logpath_id in (select id from logfiles where path like \'%${logfile}%\') ORDER BY component'] >
-<#assign general_id = table_info['select id from component where logpath_id in (select id from logfiles where path like \'%${logfile}%\') and component like \'%general%\''] >
+<#assign component_table = table_info['select id, component from component where logpath_id in (select id from logfiles where path like \'%${logfile}\') ORDER BY component'] >
+<#assign general_id = table_info['select id from component where logpath_id in (select id from logfiles where path like \'%${logfile}\') and component like \'%general%\''] >
 
 <html>
 <head><title>${logfile}</title></head>
@@ -114,7 +114,7 @@
 <#assign priority_ids = color_list?keys>
 <#list priority_ids as priority>
     <@add_severity_count severity='${priority}' 
-        count = table_info['select count(data) as COUNT from metadata where priority_id in (select id from priority where priority like \'${priority}\') and logpath_id in (select id from logfiles where path like \'%${logfile}%\')'][0]['COUNT'] color=color_list['${priority}'] />
+        count = table_info['select count(data) as COUNT from metadata where priority_id in (select id from priority where priority like \'${priority}\') and logpath_id in (select id from logfiles where path like \'%${logfile}\')'][0]['COUNT'] color=color_list['${priority}'] />
 </#list>
 </tr>
 </table>
@@ -136,6 +136,7 @@
 <#assign c_id = 0>
 <#if general_id?size &gt; 0>
 <@print_component_summary component="${general_id[0][\"id\"]}" href_c_id="${c_id}"/>
+<#assign c_id = c_id + 1>
 </#if>
 
 <#assign component_ids = component_table?keys>
@@ -152,7 +153,7 @@
 
 <#assign href_pid = 0>
 <#list priority_ids as p_id>
-<#assign p_count = table_info['select count(data) as COUNT from metadata where priority_id in (select id from priority where priority like \'${p_id}\') and logpath_id in (select id from logfiles where path like \'%${logfile}%\')'][0]['COUNT'] >
+<#assign p_count = table_info['select count(data) as COUNT from metadata where priority_id in (select id from priority where priority like \'${p_id}\') and logpath_id in (select id from logfiles where path like \'%${logfile}\')'][0]['COUNT'] >
 <#if p_count &gt; 0>
     <h3><a>${p_id} Details By Component</a></h3>
 </#if>
@@ -165,8 +166,8 @@
 <#list component_ids as component>
     <#if component_table["${component}"] != "general">
         <@print_list_text priority="${p_id}" component="${component}" href_id="${href_cid}${href_pid}" />
-        <#assign href_cid = href_cid + 1>
     </#if>
+    <#assign href_cid = href_cid + 1>
 </#list>
 <#assign href_pid = href_pid + 1>
 </#list>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/tools/common/templates/log/scan2_orm.html.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,188 @@
+<#--
+============================================================================ 
+Name        : scan2_orm.html.ftl 
+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:
+
+============================================================================
+-->
+
+<#macro print_component_summary component href_c_id >
+<#assign href_id = 0>
+<#assign component_time_list = table_info['jpasingle']['select t.componentTime from ComponentTime t where  t.componentId =${component.id}']>
+
+<#if component_time_list[0]?? >
+    <#assign time = component_time_list[0]?number>
+<#else>
+    <#assign time = 0>
+</#if>
+<tr>
+<#assign hours = (time /(60 * 60))?floor>
+<#assign minutes_secs = (time % (60 * 60))?floor>
+<#assign minutes = (minutes_secs / 60)?floor>
+<#assign seconds = (minutes_secs % 60)?floor>
+    <td>${component.component}</td>
+<#--write each of the component tables information -->
+<td align="center">${hours?string("00")}:${minutes?string("00")}:${seconds?string("00")}</td>
+<#list color_list?keys as priority>
+    <#assign count =  table_info['jpasingle']['select count(m.id) from MetadataEntry as m JOIN  m.priority as p JOIN m.component as c where UPPER(p.priority) like \'%${priority?upper_case}%\' and c.id=${component.id}'][0] >
+    <#if priority == 'error'>
+        <#assign count_check_missing_files = table_info['jpasingle']['select Count(w.id) from WhatLogEntry w, Component c where c.component=\'${component.component}\' and c.logPathID=${whatlogpath.id} and w.componentID=c.id and w.missing=1'][0]>
+        <#assign count = count + count_check_missing_files>
+    </#if>
+    <#if count &gt; 0>
+        <#assign color = color_list['${priority}']>
+        <td align="center" bgcolor="${color}"><a href="#section${priority}${href_c_id}">${count}</a></td>
+    <#else>
+        <td align="center">${count}</td>
+    </#if>
+    <#assign href_id = href_id + 1>
+</#list>
+</tr>
+</#macro>
+
+<#macro print_list_text priority component href_id>
+<#assign count =  table_info['jpasingle']['select count(m.id) from MetadataEntry as m JOIN m.priority as p JOIN m.component as c where  UPPER(p.priority) like \'%${priority?upper_case}%\' and c.id=${component.id}'][0] >
+<#if priority == 'error'>
+    <#assign count_check_missing_files = table_info['jpasingle']['select Count(w.id) from WhatLogEntry w, Component c where c.component=\'${component.component}\' and c.logPathID=${whatlogpath.id} and w.componentID=c.id and w.missing=1'][0]>
+    <#assign count = count + count_check_missing_files>
+</#if>
+<#if count?? && count?number &gt; 0>
+<#if "${component.component}" != "general">
+        <h3><a name="section${href_id}">${component.component}(${count})</a></h3>
+    <#else>
+        <h3><a name="section${href_id}">Uncategorized(${count})</a></h3>
+    </#if>
+<#list table_info['native:com.nokia.helium.jpa.entity.metadata.MetadataEntry']['select * from metadataentry INNER JOIN component ON component.component_id=metadataentry.component_id INNER JOIN priority ON priority.priority_id=metadataentry.priority_id where component.component_id=${component.id} and UPPER(priority.priority) like \'%${priority?upper_case}%\''] as entry >
+${logfile}:${entry.lineNumber}>${entry.text}<br />
+</#list>
+<#list table_info['jpa']['select distinct w FROM Component c, WhatLogEntry w WHERE c.component=\'${component.component}\' AND c.logPathID=${whatlogpath.id} AND c.id=w.componentID AND w.missing=1'] as entry>
+${logfile}: MISSING: ${entry.member}<br/>
+</#list>
+</#if>
+</#macro>
+
+<#macro component_check_error component count >
+<#if count &gt; 0>
+<#list table_info['native:com.nokia.helium.jpa.entity.metadata.WhatLogEntry']['select * from whatlogentry where COMPONENT_ID=${component.id} and missing=1'] as whatlogentry>
+${whatlogpath.path}:${whatlogentry.member}<br/><br/>
+</#list>
+</#if>
+</#macro>
+
+<#macro add_severity_count severity, color, count>
+    <#if count &gt; 0>
+<td width="12%%" align="center" bgcolor="${color}"><a href="#${severity}">${count}</a></td>
+    <#else>
+    <td align="center">${count}</td>
+    </#if>
+</#macro>
+
+<#-- end of macros code starts here -->
+
+
+<#if (doc)??>
+    <#assign logfile = "${doc.sbsinfo.logfile.@name}"?replace("\\","/") >
+    <#assign whatlogfile = "${whatLogPath}"?replace("\\","/") >
+    <#assign time = "${doc.sbsinfo.duration.@time}" >
+
+    <#assign table_info = pp.loadData('com.nokia.helium.metadata.ORMFMPPLoader',
+        "${dbPath}") >
+<#-- overall summary -->
+<#assign logpath = table_info['jpasingle']['select l from LogFile l where LOWER(l.path) like \'%${logfile?lower_case}\''][0] >
+<#assign whatlogpath = table_info['jpasingle']['select l from LogFile l where LOWER(l.path) like \'%${whatlogfile?lower_case}\''][0] >
+<html>
+<head><title>${logfile}</title></head>
+<body>
+<h2>Overall</h2>
+<table border="1" cellpadding="0" cellspacing="0" width="100%%">
+<tr>
+    <th width="22%%">&nbsp;</th>
+    <th width="11%%">Time</th>
+    <th width="11%%">Errors</th>
+    <th width="11%%">Warnings</th>
+    <th width="11%%">Critical</th>
+    <th width="23%%">Migration Notes</th>
+    <th width="11%%">Info</th>
+</tr>
+<tr>
+<#-- need to create variables for the items tobe displayed in the comment title Overall_Total
+doing this the long winded way because I could not find a way to add items to a hash in a loop -->
+<#assign color_list={'error': 'FF0000', 'warning': 'FFF000', 'critical': 'FF7000', 'remark': 'FFCCFF', 'info': 'FFFFFF'}>
+<#assign priority_ids = color_list?keys>
+<td width="22%%">Total</td>
+<td width="12%%" align="center">${time}</td>
+<#assign count_check_errors = table_info['jpasingle']['select Count(w.id) from WhatLogEntry w JOIN w.component c where c.logPathID = ${whatlogpath.id} and w.missing=\'true\''][0]> 
+<#list priority_ids as priority>
+    <#assign count = table_info['jpasingle']['select Count(m.id) from MetadataEntry m JOIN m.priority p where m.logPathId=${logpath.id} and UPPER(p.priority) like \'%${priority?upper_case}%\''][0]>
+    <#if  '${priority}' == 'error'>
+        <#assign count = count + count_check_errors>
+    </#if>
+    <@add_severity_count severity='${priority}' color=color_list['${priority}'] 
+        count = count />
+</#list>
+</tr>
+</table>
+
+<#-- Summary for each component -->
+
+<h1>${logfile}</h1>
+<h2>By Component</h2>
+    <table border="1" cellpadding="0" cellspacing="0" width="100%%">
+        <tr>
+            <th width="50%%">Component</th>
+            <th width="9%%">Time</th>
+            <th width="9%%">Errors</th>
+            <th width="9%%">Warnings</th>
+            <th width="9%%">Criticals</th>
+            <th width="9%%">Notes</th>
+            <th width="9%%">Info</th>
+        </tr>
+
+<#assign c_id = 0>
+<#assign general_component_list = table_info['jpasingle']['select c from Component c where LOWER(c.component) like \'%general%\' and c.logPathID=${logpath.id}']>
+<#if general_component_list[0]?? >
+<#assign general_component = general_component_list[0] >
+<@print_component_summary component=general_component  href_c_id="${c_id}"/>
+<#assign c_id = c_id + 1>
+</#if>
+<#list table_info['jpa']['select c from Component c where c.logPathID=${logpath.id} and LOWER(c.component) not like \'%general%\' ORDER BY c.component'] as componentEntry>
+<@print_component_summary component=componentEntry href_c_id="${c_id}"/>
+<#assign c_id = c_id + 1>
+
+</#list>
+</table>
+
+<#-- Individual components status -->
+<#list priority_ids as p_id>
+<#assign p_count = table_info['jpasingle']['select Count(m.id) from MetadataEntry m JOIN m.priority as p where m.logPathId=${logpath.id} and UPPER(p.priority) like \'%${p_id?upper_case}%\''][0]>
+<#if p_count &gt; 0>
+    <h3><a>${p_id} Details By Component</a></h3>
+</#if>
+<#assign href_cid = 0>
+<#if general_component??>
+    <@print_list_text priority="${p_id}" component=general_component href_id="${p_id}${href_cid}" /> 
+    <#assign href_cid = href_cid + 1>
+</#if>
+<#list table_info['jpa']['select c from Component c where c.logPathID=${logpath.id} and LOWER(c.component) not like \'%general%\' ORDER BY c.component'] as componentEntry>
+    <@print_list_text priority="${p_id}" component=componentEntry href_id="${p_id}${href_cid}" />
+    <#assign href_cid = href_cid + 1>
+</#list>
+</#list>
+</table>
+</body>
+</html>
+</#if>
\ No newline at end of file
--- a/buildframework/helium/tools/common/templates/log/scan2_text.html.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/common/templates/log/scan2_text.html.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -44,7 +44,7 @@
 
 <td align="center">${hours?string("00")}:${minutes?string("00")}:${seconds?string("00")}</td>
 <#list priority_ids as priority>
-    <#assign count = table_info['select count(data) as COUNT from metadata where priority_id in (select id from priority      where priority like \'${priority}\') and logpath_id in (select id from logfiles where path like \'%${logfile}%\') and component_id = \'${component}\' '][0]['COUNT'] >
+    <#assign count = table_info['select count(data) as COUNT from metadata where priority_id in (select id from priority      where priority like \'${priority}\') and logpath_id in (select id from logfiles where path like \'%${logfile}\') and component_id = \'${component}\' '][0]['COUNT'] >
     <#if count &gt; 0>
         <#assign color = color_list['${priority}']>
         <td align="center" bgcolor="${color}"><a href="#section${href_c_id}${href_id}">${count}</a></td>
@@ -57,7 +57,7 @@
 </#macro>
 
 <#macro print_list_text priority component href_id>
-<#assign count = table_info['select count(data) as COUNT from metadata where component_id=\'${component}\' and priority_id in (select id from priority where priority like \'${priority}\') and logpath_id in (select id from logfiles where path like \'%${logfile}%\')'][0]['COUNT'] >
+<#assign count = table_info['select count(data) as COUNT from metadata where component_id=\'${component}\' and priority_id in (select id from priority where priority like \'${priority}\') and logpath_id in (select id from logfiles where path like \'%${logfile}\')'][0]['COUNT'] >
 <#if count &gt; 0>
 <#if component_table?keys?seq_contains("${component}")>
     <#if component_table["${component}"] != "general">
@@ -94,8 +94,8 @@
     <#assign table_info = pp.loadData('com.nokia.helium.metadata.SQLFMPPLoader',
         "${dbPath}") >
 <#-- overall summary -->
-<#assign component_table = table_info['select id, component from component where logpath_id in (select id from logfiles where path like \'%${logfile}%\') ORDER BY component'] >
-<#assign general_id = table_info['select id from component where logpath_id in (select id from logfiles where path like \'%${logfile}%\') and component like \'%general%\''] >
+<#assign component_table = table_info['select id, component from component where logpath_id in (select id from logfiles where path like \'%${logfile}\') ORDER BY component'] >
+<#assign general_id = table_info['select id from component where logpath_id in (select id from logfiles where path like \'%${logfile}\') and component like \'%general%\''] >
 
 <html>
 <head><title>${logfile}</title></head>
@@ -119,7 +119,7 @@
 <#assign priority_ids = color_list?keys>
 <#list priority_ids as priority>
     <@add_severity_count severity='${priority}' 
-        count = table_info['select count(data) as COUNT from metadata where priority_id in (select id from priority where priority like \'${priority}\') and logpath_id in (select id from logfiles where path like \'%${logfile}%\')'][0]['COUNT'] color=color_list['${priority}'] />
+        count = table_info['select count(data) as COUNT from metadata where priority_id in (select id from priority where priority like \'${priority}\') and logpath_id in (select id from logfiles where path like \'%${logfile}\')'][0]['COUNT'] color=color_list['${priority}'] />
 </#list>
 </tr>
 </table>
@@ -158,7 +158,7 @@
 
 <#assign href_pid = 0>
 <#list priority_ids as p_id>
-<#assign p_count = table_info['select count(data) as COUNT from metadata where priority_id in (select id from priority where priority like \'${p_id}\') and logpath_id in (select id from logfiles where path like \'%${logfile}%\')'][0]['COUNT'] >
+<#assign p_count = table_info['select count(data) as COUNT from metadata where priority_id in (select id from priority where priority like \'${p_id}\') and logpath_id in (select id from logfiles where path like \'%${logfile}\')'][0]['COUNT'] >
 <#if p_count &gt; 0>
     <h3><a>${p_id} Details By Component</a></h3>
 </#if>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/tools/common/templates/log/scan2_text_orm.html.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,170 @@
+<#--
+============================================================================ 
+Name        : scan2_text_orm.html.ftl 
+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:
+
+============================================================================
+    -->
+
+<#macro print_component_summary component href_c_id >
+<#assign href_id = 0>
+<#assign component_time_list = table_info['jpasingle']['select t.componentTime from ComponentTime t where  t.componentId =${component.id}']>
+
+<#if component_time_list[0]?? >
+    <#assign time = component_time_list[0]?number>
+<#else>
+    <#assign time = 0>
+</#if>
+<tr>
+<#assign hours = (time /(60 * 60))?floor>
+<#assign minutes_secs = (time % (60 * 60))?floor>
+<#assign minutes = (minutes_secs / 60)?floor>
+<#assign seconds = (minutes_secs % 60)?floor>
+    <td>${component.component}</td>
+<#--write each of the component tables information -->
+<td align="center">${hours?string("00")}:${minutes?string("00")}:${seconds?string("00")}</td>
+<#list color_list?keys as priority>
+    <#assign count =  table_info['jpasingle']['select count(m.id) from MetadataEntry as m JOIN  m.priority as p JOIN m.component as c where UPPER(p.priority) like \'%${priority?upper_case}%\' and c.id=${component.id}'][0] >
+    <#if count &gt; 0>
+        <#assign color = color_list['${priority}']>
+        <td align="center" bgcolor="${color}"><a href="#section${priority}${href_c_id}">${count}</a></td>
+    <#else>
+        <td align="center">${count}</td>
+    </#if>
+    <#assign href_id = href_id + 1>
+</#list>
+</tr>
+</#macro>
+
+<#macro print_list_text priority component href_id>
+<#assign count =  table_info['jpasingle']['select count(m.id) from MetadataEntry as m JOIN m.priority as p JOIN m.component as c where  UPPER(p.priority) like \'%${priority?upper_case}%\' and c.id=${component.id}'][0] >
+<#if count?? && count?number &gt; 0>
+<#if "${component.component}" != "general">
+        <h3><a name="section${href_id}">${component.component}(${count})</a></h3>
+    <#else>
+        <h3><a name="section${href_id}">Uncategorized(${count})</a></h3>
+    </#if>
+</#if>
+<#list table_info['native:com.nokia.helium.jpa.entity.metadata.MetadataEntry']['select * from metadataentry INNER JOIN component ON component.component_id=metadataentry.component_id INNER JOIN priority ON priority.priority_id=metadataentry.priority_id where component.component_id=${component.id} and UPPER(priority.priority) like \'%${priority?upper_case}%\''] as entry >
+${logfile}:${entry.lineNumber}>${entry.text}<br />
+</#list>
+</#macro>
+
+<#macro add_severity_count severity, color, count>
+<#assign additional_count = count>
+<#if severity == 'error'>
+    <#assign additional_count = count + 1>
+</#if>
+    <#if additional_count &gt; 0>
+        <#if severity == 'error'>
+<td width="12%%" align="center" bgcolor="${color}">${additional_count}</td>
+        <#else>
+<td align="center" bgcolor="${color}">${count}</td>
+        </#if>
+    <#else>
+    <td align="center">${count}</td>
+    </#if>
+</#macro>
+
+<#-- end of macros code starts here -->
+
+
+<#if (doc)??>
+    <#assign logfile = "${doc.sbsinfo.logfile.@name}"?replace("\\","/") >
+    <#assign time = "${doc.sbsinfo.duration.@time}" >
+
+    <#assign table_info = pp.loadData('com.nokia.helium.metadata.ORMFMPPLoader',
+        "${dbPath}") >
+<#-- overall summary -->
+<#assign logpath = table_info['jpasingle']['select l from LogFile l where LOWER(l.path) like \'%${logfile?lower_case}\''][0] >
+<html>
+<head><title>${logfile}</title></head>
+<body>
+<h2 STYLE="background-color :#FF0000">Generated using Text Parser instead of XML Parser because of Invalid XML output from Raptor</h2>
+<h2>Overall</h2>
+<table border="1" cellpadding="0" cellspacing="0" width="100%%">
+<tr>
+    <th width="22%%">&nbsp;</th>
+    <th width="11%%">Time</th>
+    <th width="11%%">Errors</th>
+    <th width="11%%">Warnings</th>
+    <th width="11%%">Critical</th>
+    <th width="23%%">Migration Notes</th>
+    <th width="11%%">Info</th>
+</tr>
+<tr>
+<#-- need to create variables for the items tobe displayed in the comment title Overall_Total
+doing this the long winded way because I could not find a way to add items to a hash in a loop -->
+<#assign color_list={'error': 'FF0000', 'warning': 'FFF000', 'critical': 'FF7000', 'remark': 'FFCCFF', 'info': 'FFFFFF'}>
+<#assign priority_ids = color_list?keys>
+<td width="22%%">Total</td>
+<td width="12%%" align="center">${time}</td>
+<#list priority_ids as priority>
+    <@add_severity_count severity='${priority}' color=color_list['${priority}'] 
+        count = table_info['jpasingle']['select Count(m.id) from MetadataEntry m JOIN m.priority p where m.logPathId=${logpath.id} and UPPER(p.priority) like \'%${priority?upper_case}%\''][0] />
+</#list>
+</tr>
+</table>
+
+<#-- Summary for each component -->
+
+
+<h1>${logfile}</h1>
+<h2>By Component</h2>
+    <table border="1" cellpadding="0" cellspacing="0" width="100%%">
+        <tr>
+            <th width="50%%">Component</th>
+            <th width="9%%">Time</th>
+            <th width="9%%">Errors</th>
+            <th width="9%%">Warnings</th>
+            <th width="9%%">Criticals</th>
+            <th width="9%%">Notes</th>
+            <th width="9%%">Info</th>
+        </tr>
+
+<#assign c_id = 0>
+<#assign general_component_list = table_info['jpasingle']['select c from Component c where LOWER(c.component) like \'%general%\' and c.logPathID=${logpath.id}']>
+<#if general_component_list[0]?? >
+<#assign general_component = general_component_list[0] >
+<@print_component_summary component=general_component  href_c_id="${c_id}"/>
+<#assign c_id = c_id + 1>
+</#if>
+<#list table_info['jpa']['select c from Component c where c.logPathID=${logpath.id} and LOWER(c.component) not like \'%general%\' ORDER BY c.component'] as componentEntry>
+<@print_component_summary component=componentEntry href_c_id="${c_id}"/>
+<#assign c_id = c_id + 1>
+</#list>
+</table>
+
+<#-- Individual components status -->
+<#list priority_ids as p_id>
+<#assign p_count = table_info['jpasingle']['select Count(m.id) from MetadataEntry m JOIN m.priority as p where m.logPathId=${logpath.id} and UPPER(p.priority) like \'%${p_id?upper_case}%\''][0]>
+<#if p_count &gt; 0>
+    <h3><a>${p_id} Details By Component</a></h3>
+</#if>
+<#assign href_cid = 0>
+<#if general_component??>
+    <@print_list_text priority="${p_id}" component=general_component href_id="${p_id}${href_cid}" /> 
+    <#assign href_cid = href_cid + 1>
+</#if>
+<#list table_info['jpa']['select c from Component c where c.logPathID=${logpath.id} and LOWER(c.component) not like \'%general%\' ORDER BY c.component'] as componentEntry>
+    <@print_list_text priority="${p_id}" component=componentEntry href_id="${p_id}${href_cid}" />
+    <#assign href_cid = href_cid + 1>
+</#list>
+</#list>
+</body>
+</html>
+</#if>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/tools/common/templates/log/summary_metadata_orm.html.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,122 @@
+<#--
+============================================================================ 
+Name        : summary.html.ftl 
+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:
+
+============================================================================
+--> 
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html>
+
+
+<#include "/@macro/logger/logger.ftl"/>
+
+    <#assign table_info = pp.loadData('com.nokia.helium.metadata.ORMFMPPLoader',
+        "${dbPath}") >
+
+<head>
+    <title>
+<#if loginfo?? >
+<#assign mykey=loginfo.info.id>
+<#if (conv[mykey])?exists>
+${loginfo.info.id}
+</#if>
+build summary</title>
+    <@helium_logger_html_head/>
+</head>
+</#if>
+<body>
+
+
+<!--
+    Processing the Helium log summary.
+-->
+<#macro logentry text, severity>
+    <#assign conv={"error": "error", "warning": "warning"}>
+    <#if (conv['${severity}'])?exists>
+        <@helium_logger_print type="${conv[\"${severity}\"]}">${text}</@helium_logger_print>
+    <#else>
+        <@helium_logger_print type="">${text}</@helium_logger_print>
+    </#if>
+</#macro>
+
+<#macro logfile_severity logname, priority, count, helium_node_id>
+    <@helium_message_box nodeid="${helium_node_id}" type="${priority}"  count="${count}"?number />
+</#macro>
+
+
+<#macro logfile_entry_detail text, priority, helium_node_id>
+    <@logentry "${text}", "${priority?lower_case}" />
+</#macro>
+
+<!-- Call the macros to render the log contents. -->
+<#assign mykey=loginfo>
+<#if (conv[mykey])?exists>
+<@helium_logger_header title="${loginfo.info.id} build"/>
+
+<@helium_logger_content title="Build overview">
+    Time started: ${loginfo.info.startTime}<br/>
+    Build machine: ${loginfo.info.machine}<br/>
+    Is published?: ${loginfo.info.publish.status}<br/>
+    <#if loginfo.info.publish.status?string == true?string>
+        Published location: ${loginfo.info.publish.location}</br>
+    </#if>
+</@helium_logger_content>
+</#if>
+
+<@helium_logger_content title="Errors and warnings details">
+<#list table_info['jpa']['select l from LogFile l'] as logentry>
+    <#assign helium_node_id = helium_node_id + 1>
+    <#-- -->
+    <@helium_logger_node_head nodeid="${helium_node_id}" title="${logentry.path}">
+        <#list table_info['jpa']['select p from Priority p where p.priority not like \'%DEFAULT%\''] as priority>
+        <#assign count = table_info['jpasingle']['select Count(m.id) from MetadataEntry m where m.priorityId = ${priority.id} and m.logPathId=${logentry.id}'][0]>
+            <@logfile_severity "${logentry.path}", "${priority.priority?lower_case}", 
+                "${count}", 
+                "${helium_node_id}" />
+        </#list>
+    </@helium_logger_node_head>
+    <@helium_logger_node_content nodeid="${helium_node_id}">
+        <#list table_info['jpa']['select c from Component c where c.logPathID=${logentry.id}'] as component>
+            <#assign helium_node_id = helium_node_id + 1>
+            <@helium_logger_node_head nodeid="${helium_node_id}" title="${component.component}">
+                <#list table_info['jpa']['select p from Priority p where p.priority not like \'%DEFAULT%\''] as priority>
+                    <@logfile_severity "${component.id}", "${priority.priority}", 
+                            table_info['jpasingle']['select Count(m.id) from MetadataEntry m where m.priorityId=${priority.id} and m.componentId = ${component.id}'][0], 
+                            "${helium_node_id}" />
+                </#list>
+            </@helium_logger_node_head>
+            <@helium_logger_node_content nodeid="${helium_node_id}">
+                <#list table_info['jpa']['select p from Priority p'] as priority>
+                <#list table_info['native:com.nokia.helium.jpa.entity.metadata.MetadataEntry']['select * from metadataentry where metadataentry.component_id=${component.id} and metadataentry.priority_id = ${priority.id}'] as entry >
+                    <#if entry.text??>
+                    <#-- <#if sublog?node_name == "logfile"> --> 
+                        <@logfile_entry_detail "${entry.text}", "${priority.priority}", "${helium_node_id}" />
+                    </#if>
+                    <#-- <#elseif sublog?node_name == "log">
+                        <@antlognode sublog/>
+                    </#if> -->
+                </#list>
+            </#list>
+            </@helium_logger_node_content>
+        </#list>
+    </@helium_logger_node_content>
+</#list>
+</@helium_logger_content>
+</body>
+</html>
--- a/buildframework/helium/tools/common/test/test_common.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/common/test/test_common.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -87,16 +87,6 @@
         <delete file="${helium.dir}/record-test.txt"/>
     </target>
     
-    
-    <target name="test-python-task">
-        <hlm:python script="${helium.dir}/tests/data/PythonTest.py" outputProperty="correct_output" resultProperty="correct_result"/>
-        <au:assertPropertyEquals name="correct_output" value="test complete!"/>
-        <au:assertPropertyEquals name="correct_result" value="0"/>
-        <hlm:python script="PythonTest.py" resultProperty="no_file_result"/>     
-        <au:assertPropertyEquals name="no_file_result" value="2"/>
-    </target>
-    
-    
     <target name="test-assert">
         <assert>
             <bool>
@@ -129,7 +119,7 @@
     </target>
     
     
-    <target name="test-jepp">
+    <target name="test-jython">
         <script language="jython" setbeans="false">
 print "It works!"
 print dir(project)
@@ -202,22 +192,6 @@
         <au:assertPropertySet name="hlm-assertXmlEqual.thrown"/>
     </target>
     
-    
-    <target name="test-prettyprintxml-filter">
-        <loadfile srcfile="${helium.dir}/tests/data/config_test.cfg.xml" property="xml.test.content">
-            <filterchain>
-                <tokenfilter>
-                    <filetokenizer/>
-                    <hlm:prettyprintxml/>
-                </tokenfilter>
-            </filterchain>
-        </loadfile>
-        <echo>Pretty-printed XML:
-            
-${xml.test.content}</echo>
-    </target>
-    
-    
     <!--<target name="test-ccm-task">
         <ccm/>
     </target>-->
@@ -251,68 +225,13 @@
     <target name="test-helium-user-graph">
         <runtarget target="helium-user-graph"/>
         <!--<au:assertFileExists file="${helium.build.dir}/doc/user-graph.html"/>-->
-        <au:assertFileExists file="${helium.build.dir}/doc/images/user-graph.dot.png"/>
-        <!--<sequential>
-            <au:assertTrue>
-                <isfileselected file="${helium.build.dir}/doc/user-graph.html">
-                    <contains text="area shape"/>
-                </isfileselected>
-            </au:assertTrue>
-        </sequential>-->
-    </target>
-    
-    
-    <target name="test-tempRecordMacro">
-        <delete file="${build.cache.log.dir}/test.log" failonerror="false"/>
-        <delete file="${build.cache.log.dir}/test.log.xml" failonerror="false"/>
-        <delete file="${build.cache.log.dir}/test.sqlite" failonerror="false"/>
-        <delete file="${metadata.dbfile}" failonerror="false"/>
-        <var name="build.log.dir" value="${build.cache.dir}/helium/temp_drive/output/logs" unset="true"/>
-        <var name="test.log.dir" value="${build.cache.dir}/helium/temp_drive/output/logs/test" unset="true"/>        
-        <hlm:tempRecordStartMacro name="test.log" />
-        <echo>ERROR: an error</echo>
-        <echo>WARNING: a warning</echo>
-        <echo>INFO: some useless message</echo>
-        <hlm:tempRecordStopMacro name="test.log" database="${build.cache.log.dir}/test.sqlite" phase="test"/>
-        <au:assertTrue>
-            <and>
-                <hlm:hasSeverity file="${build.cache.log.dir}/signals/test.log.status.xml" severity="error"/>
-                <hlm:hasSeverity file="${build.cache.log.dir}/signals/test.log.status.xml" severity="warning"/>
-                <hlm:hasSeverity file="${build.cache.log.dir}/signals/test.log.status.xml" severity="info"/>
-            </and>
-        </au:assertTrue>
-    </target> 
-
-    <target name="test-helium_project_path">
-        <delete file="${build.cache.log.dir}/project-compile.cmaker.html" failonerror="false"/>
-        <fmpp sourceFile="${helium.dir}/doc/src/api/project.html.ftl" outputFile="${build.cache.log.dir}/project-compile.cmaker.html">
-            <data expandProperties="yes">
-                ant: antProperties()
-                doc: xml(${helium.dir}/tests/data/test_database.xml)
-                data: xml(${helium.dir}/tests/data/data_model_validation_test.xml)
-            </data>            
-        </fmpp>
-        <au:assertFileExists file="${build.cache.log.dir}/project-compile.cmaker.html"/>
-        <sequential>
-            <au:assertTrue>
-                <isfileselected file="${build.cache.log.dir}/project-compile.cmaker.html">
-                    <contains text="Location"/>
-                </isfileselected>
-            </au:assertTrue>
-            <au:assertTrue>
-                <isfileselected file="${build.cache.log.dir}/project-compile.cmaker.html">
-                    <contains text="helium/tools/compile/cmaker.ant.xml"/>
-                </isfileselected>
-            </au:assertTrue>
-            <au:assertTrue>
-                <isfileselected file="${build.cache.log.dir}/project-compile.cmaker.html">
-                    <contains text="http://helium.nmp.nokia.com/trac/browser/helium/trunk/helium/tools/compile/cmaker.ant.xml"/>
-                </isfileselected>
-            </au:assertTrue>
-        </sequential>
+        <au:assertFileExists file="${docs.build.dir}/images/user-graph.dot.png"/>
+        <delete dir="${docs.build.dir}"/>
     </target>
 
+
     <target name="test-sisfiles">
+        <delete dir="${build.cache.dir}/helium/temp_drive/output/logs/${build.id}_metadata_db"/>
         <tempfile destdir="${build.cache.dir}" property="sisfiles.tempconfig.file" suffix=".xml"/>
         <tempfile destdir="${build.cache.dir}" property="sis.config.file.parsed" suffix=".xml"/>
         <condition property="echocmd" value="${helium.dir}/tools/common/test/echo.bat" else="echo">
@@ -340,10 +259,9 @@
             <param name="temp.build.dir" value="${build.cache.dir}/helium/temp_drive/output/temp_build_files"/>
             <param name="build.drive" value="${build.cache.dir}/helium/temp_drive/"/>
             <param name="build.cache.log.dir" value="${build.cache.dir}/helium/temp_drive/output/logs"/>
-            <param name="metadata.dbfile" value="${build.cache.dir}/helium/temp_drive/output/logs/${build.id}_metadata.sqlite"/>
+            <param name="metadata.dbfile" value="${build.cache.dir}/helium/temp_drive/output/logs/${build.id}_metadata_db"/>
             <param name="build.log.dir" value="${build.cache.dir}/helium/temp_drive/output/logs"/>            
             <param name="post.log.dir" value="${build.cache.dir}/helium/temp_drive/output/logs/post"/>
-            
         </antcall>
         <au:assertFileExists file="${build.cache.dir}/helium/temp_drive/output/temp_build_files/sis_build.ant.xml"/>
         <delete file="${sisfiles.tempconfig.file}"/>
--- a/buildframework/helium/tools/common/test/test_getvariablevalue.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : test_getvariablevalue.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="test_getvariablevalue" xmlns:au="org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
-    <description>
-        Get Variable Value Testing target
-    </description>
-    <property environment="env"/>
-    
-    <property name="helium.dir" location="../../.." />
-    <import file="../../../helium.ant.xml"/>
-        
-    
-    <target name="test-getvariablevalue">
-        <hlm:sbsinput id="test.variableSet">
-            <sbsOptions>
-                <arg name="v1" value="test"/>
-            </sbsOptions>
-        </hlm:sbsinput>
-        
-        <hlm:getVariableValue name="v1" property="v1.value">
-            <hlm:sbsinput refid="test.variableSet" />
-        </hlm:getVariableValue>
-        <au:assertTrue>
-            <equals arg1="${v1.value}" arg2="test"/>
-        </au:assertTrue>
-    </target>    
-</project>
\ No newline at end of file
--- a/buildframework/helium/tools/common/test/test_logging.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,154 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : test_logging.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="test_logging" xmlns:au="org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
-    <description>
-        Logging testing targets
-    </description>
-    <property environment="env"/>
-    
-    <property name="helium.dir" location="../../.." />
-    <property name="build.drive" location="${env.TEMP}/helium/temp_drive"/>
-    <import file="../../../helium.ant.xml"/>
-    
-    
-    <target name="test-logrecord">
-        <hlm:logrecord name="logrecord_test.log" action="start" loglevel="verbose" emacsmode="true"/>
-        <echo>Some logrecord test output.</echo>
-        <hlm:logrecord name="logrecord_test.log" action="stop"/>
-        <delete file="logrecord_test.log"/>
-    </target>
-    
-    
-    <target name="test-logrecord-filtering">
-        <hlm:logrecord name="${env.TEMP}/logrecord_test.log" action="start" regexp="badtext"/>
-        <echo>Some sensitive test output badtext</echo>
-        <hlm:logrecord name="${env.TEMP}/logrecord_test.log" action="stop"/>
-        <loadfile srcfile="${env.TEMP}/logrecord_test.log" property="logrecord.test.file"/>
-        <au:assertTrue>
-            <contains string="${logrecord.test.file}" substring="Some sensitive test output ******"/>
-        </au:assertTrue>
-        <delete file="${env.TEMP}/logrecord_test.log"/>
-    </target>
-    
-    <target name="test-logrecord-filtering-regexp">
-        <hlm:logrecord name="${env.TEMP}/logrecord_regexp_test.log" action="start" regexp="bad(text"/>
-        <echo>Some sensitive test output. fubar and bad(text</echo>
-        <hlm:logrecord name="${env.TEMP}/logrecord_regexp_test.log" action="stop"/>
-        <loadfile srcfile="${env.TEMP}/logrecord_regexp_test.log" property="logrecord.test.regexp.file1"/>
-        <au:assertTrue>
-            <contains string="${logrecord.test.regexp.file1}" substring="Some sensitive test output. fubar and ********"/>
-        </au:assertTrue>
-        <delete file="${env.TEMP}/logrecord_regexp_test.log"/>
-        
-        <hlm:logrecord name="${env.TEMP}/logrecord_regexp_test.log" action="start" regexp="bad[text"/>
-        <echo>Some sensitive test output. fubar and bad[text</echo>
-        <hlm:logrecord name="${env.TEMP}/logrecord_regexp_test.log" action="stop"/>
-        <loadfile srcfile="${env.TEMP}/logrecord_regexp_test.log" property="logrecord.test.regexp.file2"/>
-        <au:assertTrue>
-            <contains string="${logrecord.test.regexp.file2}" substring="Some sensitive test output. fubar and ********"/>
-        </au:assertTrue>
-        <delete file="${env.TEMP}/logrecord_regexp_test.log"/>
-        
-        <hlm:logrecord name="${env.TEMP}/logrecord_regexp_test.log" action="start" regexp="(ba[dt]ex)t"/>
-        <echo>Some sensitive test output. fubar and (ba[dt]ex)t</echo>
-        <hlm:logrecord name="${env.TEMP}/logrecord_regexp_test.log" action="stop"/>
-        <loadfile srcfile="${env.TEMP}/logrecord_regexp_test.log" property="logrecord.test.regexp.file3"/>
-        <au:assertTrue>
-            <contains string="${logrecord.test.regexp.file3}" substring="Some sensitive test output. fubar and ********"/>
-        </au:assertTrue>
-        <delete file="${env.TEMP}/logrecord_regexp_test.log"/>
-        
-    </target>
-    
-    <!--<target name="test-logextract">
-        <hlm:logextract file="${helium.dir}/tests/data/logs/test_log.log"/>
-        <xmltask source="${helium.dir}/tests/data/logs/test_log.log2.xml">
-            <copy path="count(/log/build/message)" property="message.total"/>
-        </xmltask>
-        <assertPropertyEquals name="message.total" value="2"/>
-        <delete file="${helium.dir}/tests/data/logs/test_log.log2.xml"/>
-    </target>-->
-
-  
-    <target name="test-specificlogmacro-create">
-        <!--Record something-->
-        <hlm:startSpecificLogMacro name="${env.TEMP}/record_test.log" phase="test"/>         
-        <echo>astalavista</echo>
-        <hlm:stopSpecificLogMacro name="${env.TEMP}/record_test.log" phase="test"/>         
-        
-        <!-- Assert if the file doesn't exists-->
-        <au:assertFileExists file="${env.TEMP}/record_test.log"/>
-        
-        <!--Match the file content-->        
-        <loadfile property="file.message" srcFile="${env.TEMP}/record_test.log"/>               
-        <au:assertTrue message="Failed to match content!!">
-            <equals arg1="${file.message}" arg2="[echo] astalavista" trim="true"/>          
-        </au:assertTrue>        
-        <delete file="${env.TEMP}/record_test.log"/>        
-    </target>
-    
-   <!-- Commenting, as hlm:record is not yet has the feature of back up Raghu--> 
- <!--   <target name="test-specificlogmacro-backup">
-        <touch file="${env.TEMP}/backup_test.log"/>        
-        <echo file="${env.TEMP}/backup_test.log">childhood memory</echo>
-        <hlm:startSpecificLogMacro name="${env.TEMP}/backup_test.log" backup="true" phase="test"/>         
-        <echo>Now a days</echo>        
-        <hlm:stopSpecificLogMacro name="${env.TEMP}/backup_test.log" phase="test"/>     -->                                       
-        
-        <!--Match the backup file content-->        
-    <!--    <loadfile property="backup.message" srcFile="${backup.file.name}"/>        
-        <au:assertTrue message="Failed to match content!!">
-            <equals arg1="${backup.message}" arg2="childhood memory" trim="true"/>          
-        </au:assertTrue>-->
-        
-        <!--Match the current file content-->        
-     <!--   <loadfile property="current.message" srcFile="${env.TEMP}/backup_test.log"/>               
-        <au:assertTrue message="Failed to match content!!">
-            <equals arg1="${current.message}" arg2="[echo] Now a days" trim="true"/>          
-        </au:assertTrue>
-        
-        <delete file="${env.TEMP}/backup_test.log"/>
-        <delete file="${backup.file.name}"/>                
-        
-    </target>
-    <target name="test-log4j-log-file">                
-        <au:assertFileExists file="${log4j.cache.dir}/hlm_debug.log" />        
-        <au:assertFileDoesntExist file="hlm_debug.log" />
-    </target>-->
-    
-     <!-- Check the build-property-cache-file exists or not -->
-    <target name="test-build-property-cache-file-exists">
-        <antcall target="diamonds"/>
-        <au:assertFileExists file="${build.property.cache.file}" />
-    </target>
-    
-    <!-- Check the build-property-cache-file contents-->
-    <target name="test-build-property-cache-file-content">
-        <antcall target="diamonds"/>
-        <loadfile property="test.data" srcFile="${build.property.cache.file}"/>
-        <au:assertMatches string="${test.data}" pattern="diamonds.build.url" />
-    </target>
-    
-    
-</project>
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/tools/common/test/test_scanlog.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : test_common.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="test_scanlog" xmlns:au="org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
+    <description>
+        Testing targets
+    </description>
+    <property environment="env"/>
+    
+    
+    <property name="helium.dir" location="../../.." />
+    <import file="../../../helium.ant.xml"/>
+    <property name="scanlog.temp.dir" location="${helium.build.dir}/antunit/scanlog" />
+
+    <target name="setUp">
+        <delete dir="${scanlog.temp.dir}" failonerror="false" />
+        <mkdir dir="${scanlog.temp.dir}" />
+    </target>
+
+    <target name="tearDown">
+        <!--delete dir="${scanlog.temp.dir}" failonerror="false" /-->
+    </target>
+    
+    <target name="test-scanlog-generation">
+        <unzip src="${helium.dir}/tests/data/minibuild_ido_sbs_0.0.1_metadata_db.zip" dest="${scanlog.temp.dir}" />
+        <fmpp sourceFile="${helium.dir}/tools/common/templates/log/scan2_orm.html.ftl"
+                     outputfile="${scanlog.temp.dir}/scanlog.scan2.html">
+            <freemarkerLinks expandProperties="yes">
+                macro: ${helium.dir}/tools/common/templates/macro
+            </freemarkerLinks>
+            <data expandProperties="yes">
+                dbPath: ${scanlog.temp.dir}/minibuild_ido_sbs_0.0.1_metadata_db
+                whatLogPath: "v:/output/logs/compile/minibuild_ido_sbs_0.0.1_armv5_helium_minibuild_ido.log.whatlog.log"
+                doc: xml(${scanlog.temp.dir}/minibuild_ido_sbs_0.0.1_armv5_helium_minibuild_ido.log.info.xml)
+                ant: antProperties()
+            </data>
+        </fmpp>
+    </target>
+    
+</project>
+
--- a/buildframework/helium/tools/common/testing.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/common/testing.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -20,23 +20,18 @@
 
 ============================================================================
 -->
+<!--* @package framework -->
 <project name="internal.testing" xmlns:au="org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium"> 
     <description>
         Targets to test Helium itself.
     </description>
     
-    <fileset id="python.files" dir="${helium.dir}">
-        <include name="tools/**/*.py"/>
-        <include name="extensions/nokia/tools/**/*.py"/>
-        <exclude name="tools/startup/bootstrap/site.py"/>
-    </fileset>
-
     <!-- Runs all the unit testing targets. -->
-    <target name="unittest" depends="ju-unittest,check,ant-unittest,py-unittest"/>
+    <target name="unittest" depends="ju-unittest,ant-unittest,py-unittest"/>
     
     <!-- Unit testing -->
 
-    <!-- Setup environment for Python unit tests -->
+    <!-- Setup environment for Python unit tests. -->
     <target name="setup-py-unittest">
         <!-- Autogenerate test data for ArchivePreBuilderTest based on ANT properties -->
         <if>
@@ -54,20 +49,22 @@
 
     <!-- Do Python tests. -->
     <target name="do-py-unittest" depends="setup-py-unittest">
-        <property name="nose.args" value="cpythontest nokiacpythontest nokiatest test"/>
+        <property name="nose.args" value="nokiacpythontest scripttests"/>
         <exec executable="python" failonerror="true">
+            <env key="TEST_DATA" value="${helium.dir}/tests"/>
             <arg line="${python.tools}/coverage.py -x ${python.tools}/nosetests-script.py -v ${nose.args}"/>
         </exec>
         <script language="jython" setbeans="false">
 import sys
 import os
+os.putenv('TEST_DATA', os.path.join(os.environ['HELIUM_HOME'], 'tests'))
 sys.path.append(os.path.join(os.environ['HELIUM_HOME'], 'external/python/lib/common/nose-0.11.1-py2.6.egg'))
 sys.path.append(os.path.join(os.environ['HELIUM_HOME'], 'external/python/lib/common/mocker-0.10.1-py2.5.egg'))
 import nose
 args = project.getProperty('nose.args')
-if args == 'cpythontest nokiacpythontest nokiatest test':
-    nose.run(argv=['-v', os.path.join(os.environ['HELIUM_HOME'], 'tools/common/python/lib/test'), 'nokiatest'])
-elif args.startswith('nokiatest.') or args.startswith('test.'):
+if ' ' in args:
+    nose.run(argv=['-v', 'scripttests'])
+elif 'cpython' not in args:
     nose.run(argv=['-v', args])
 print >> sys.stderr
         </script>
@@ -81,7 +78,11 @@
     <target name="py-unittest-coverage">
         <mkdir dir="${helium.build.dir}/coverage"/>
         <pathconvert pathsep=" " property="python.modules.coverage">
-            <fileset refid="python.files"/>
+            <fileset dir="${helium.dir}">
+                <include name="tools/**/*.py"/>
+                <include name="extensions/nokia/tools/**/*.py"/>
+                <exclude name="tools/startup/bootstrap/site.py"/>
+            </fileset>
         </pathconvert>
         <exec executable="python" failonerror="true">
             <arg line="${python.tools}/coverage.py -a -d ${helium.build.dir}/coverage ${python.modules.coverage}"/>
@@ -136,8 +137,16 @@
     <!-- Run JUnit unit tests. -->
     <target name="ju-unittest" depends="build-java-src">
         <!-- Source location for test class -->
+        <!-- Source location for junit test class.
+        @type string
+        @scope private
+        -->
         <property name="src" location="tools/common/java/test" /> 
         <!-- Source classes location -->
+        <!-- Java source files location for helium library.
+        @type string
+        @scope private
+        -->
         <property name="src.classes" location="tools/common/java/src" />
         
         <delete dir="${build.temp.dir}/junit_classes"/>
@@ -192,52 +201,6 @@
         </emma>
         <loadfile property="message" srcFile="${build.temp.dir}/coverage.txt"/>
         <echo message="${message}"/>
-    </target>
-    
-    
-    <!-- iMaker Helium feature unittesting. -->
-    <target name="imaker-unittest" depends="rombuild-export-features">
-        <property name="imaker.unittest.args" value="" />
-        <for param="unittest.filename">
-            <path>
-                <fileset dir="${build.drive}/epoc32/rom/config/unittest" casesensitive="yes">        
-                    <include name="**/test_*.mk"/>
-                </fileset>
-            </path>
-            <sequential>
-                <echo>Running @{unittest.filename}</echo>
-                <exec executable="${imaker.command}" dir="${build.drive}/">
-                    <arg line="${imaker.unittest.args}"/>
-                    <arg line="-f @{unittest.filename}"/>
-                    <arg value="unittest"/>
-                </exec>
-            </sequential>
-        </for>
-    </target>
-    
-    <!-- Validates XML files against suitable schema or DTDs. -->
-    <target name="validate-xml">
-        <!--<schemavalidate fullchecking="false" noNamespaceFile="tools/common/schema/ant.xsd">
-            <Schema namespace="ant.apache.org"
-                    file="tools/common/schema/ant.xsd" />
-            <schema namespace="http://www.nokia.com/helium"
-                    file="tools/common/schema/helium_ant.xsd" />
-            <fileset dir="tools">
-                <include name="**/build.xml"/>
-                <include name="**/*.ant.xml"/>
-                <exclude name="**/test_*.ant.xml"/>
-            </fileset>
-        </schemavalidate>-->
-        <schemavalidate noNamespaceFile="tools/common/schema/helium_data_model.xsd"
-                        file="${data.model.file}"/>
-        <!--<schemavalidate noNamespaceFile="tools/common/schema/helium_config.xsd">
-            <fileset dir="testconfig">
-                <include name="**/delivery.xml"/>
-                <include name="**/*.cfg.xml"/>
-                <exclude name="**/test_*.ant.xml"/>
-            </fileset>
-        </schemavalidate>-->
-    </target>
-    
+    </target>    
     
 </project>
--- a/buildframework/helium/tools/compile/ImageCreation.pl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,90 +0,0 @@
-#============================================================================ 
-#Name        : ImageCreation.pl 
-#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: 
-#============================================================================
-
-use warnings;
-#use strict;
-use IPC::Open2;
-use FileHandle;
-use File::Copy;
-use Cwd;
-use Getopt::Long;
-
-my($copyto,$MyTraces,$Drive,$product,$type);
-my $result = GetOptions(
-        "copyto=s"  => \$copyto,
-        "mytraces=s"  => \$Mytraces,
-        "Drive=s"=> \$Drive,
-        "product=s"=> \$product,
-        "type=s"=> \$type
-        );
-if((!$copyto) or (!$product) or (!$type))
-  {
-    &Usage;
-    }
-
-my $imagedes=$copyto;
-my $Traces="\\epoc32\\rombuild";
-my $pid;
-
-if($Drive)
-{
-	chdir "$Drive" or die "Cannot change Directory to $Drive\n";
-}
-
-chdir ("/epoc32/rom/") or die "Cannot Change Directory to /epoc32/rom/";
-
-if($Mytraces)
-	{
-		print "Removing $Traces \n";
-		print unlink "$Traces\\mytraces.txt";
-    `echo " " > $Traces\\mytraces.txt`;
-	}
-AGAIN:
-#system("del *$product* 2>&1");
-
-
-print system("perl BuildS60Rom.pl -product $product -type $type -b -dir $imagedes") or die "cannot open BuildS60Rom.pl";
-
-#system("move *$product*.* $copyto");
-system("move \\flash_temp\\*erase_userdisk.fpsx $copyto");
-if($Mytraces)
-  {
-    print copy ($Mytraces,"$Traces\\myTraces.txt");;
-    
-    $imagedes="$copyto\\udeb";
-    system ("mkdir $copyto");
-    $Mytraces=();
-    goto AGAIN;
-  }
-
-#system("7za a $copyto\\images.zip  $copyto\\*%USERNAME%*.*");
-
-sub Usage
-{
-  print "Usage:
-              imagecreation.pl -copyto <1> -MyTraces <2> -Drive <3> -product <4> -type <5>
-              
-                <1> Create images to specified directory [Mandatory]
-                <2> Location to Mytraces.txt or any other file to-be used as mytraces
-                <3> Drive where SDK is Istalled on which Image needs to be created
-                <4> Supported for particular release [Mandatory]
-                <5> [rnd|prd|subcon]  Set the image type [Mandatory]
-        ";
-        exit 0
-  }
--- a/buildframework/helium/tools/compile/cmaker.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/compile/cmaker.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -20,15 +20,33 @@
 
 ============================================================================
 -->
+<!--* @package compile -->
 <project name="compile.cmaker" xmlns:hlm="http://www.nokia.com/helium">
     <description>
         cMaker support.
     </description>
     
+    <!-- Location of the cmaker component to install it.
+    @type string
+    @scope private
+    -->
     <property name="cmaker.component.dir" location="${build.drive}/tools/cmaker"/>
+    <!-- Directory where to execute cMaker.
+    @type string
+    @scope private
+    -->
     <property name="cmaker.config.dir" location="${build.drive}/config"/>
+    <!-- Version of PP(NCP) configuration to be exported
+    @type string
+    -->
     <property name="cmaker.pp.version" value=""/>
+    <!-- Version of S60(require cmaker.pp.version to be set) configuration to be exported
+    @type string
+    -->
     <property name="cmaker.s60.version" value=""/>
+    <!-- Custom label added to the cmaker logs.
+    @type string
+    -->
     <property name="cmaker.log.label" value=""/>
 
     <!--
@@ -78,7 +96,7 @@
     <!--  Installing CMaker. -->    
     <target name="cmaker-install">
         <hlm:recordStartMacro name="${build.id}_install.cmaker.log" emacsmode="true"/>
-        <exec executable="${build.drive}/epoc32/tools/make.exe" dir="${cmaker.component.dir}">
+        <exec executable="${cmaker.component.dir}/bin/mingw_make.exe" dir="${cmaker.component.dir}">
             <arg line="install"/>
         </exec>
         <hlm:recordStopMacro name="${build.id}_install.cmaker.log"/>
--- a/buildframework/helium/tools/compile/compile.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/compile/compile.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -20,19 +20,41 @@
 
 ============================================================================
 -->
+<!--* @package compile -->
 <project name="compile" xmlns:hlm="http://www.nokia.com/helium">
     <description>
         Targets related to compile stage. It includes cmaker,
         ec, ebs, sbs, sbs-ec build system.
     </description>
+    
+    <!--* @property sysdef.configurations.list
+    Comma-separated list of System Definition configuration names to be built in the compile-main stage.
+    @type string
+    @editable required
+    @scope public
+    -->
 
     <!-- Property declaration -->
+    <!-- Suffix used in genxml related output files. This value is added into file names to show that they are genxml related. Used in log files, genxml output files and component list for EE images. Normally does not need to be set.
+    @type string
+    @scope private
+    -->
     <property name="genxml.output.file.suffix" value="genxml" />
+    <!-- Path of sysdef dtd
+    @type string
+    -->
     <property name="compile.sysdef.dtd.stub" location="${helium.dir}/tools/common/dtd/sysdef_dtd_1_4_0.xml" />
+    <!-- Name of the signal input to be able to override the compile-main target.
+    @type string
+    @scope private
+    -->
     <property name="compile.signal.input" value="compileSignalInput" />
+    <!-- Compilation summary file for diamonds.
+    @type string
+    @scope private
+    -->
     <property name="diamonds.compile.summary" location="${compile.log.dir}/${build.id}_compile_diamonds.xml" />
-
-
+    
     <!-- including common compilation macros -->
     <hlm:typedef file="${helium.dir}/tools/compile/compile.antlib.xml" uri="http://www.nokia.com/helium"/>
     <import file="cmaker.ant.xml" />
@@ -41,6 +63,7 @@
     <import file="sbs/sbs.ant.xml" />
     <import file="sis.ant.xml" />
     <import file="qt/qt.ant.xml" />
+    <import file="coverity.ant.xml" />
 
     <!-- A few basic steps (directory creation) that are needed before starting compilation. -->
     <target name="prebuild">
@@ -53,13 +76,14 @@
     </target>
 
     <!-- Does all the necessary steps before starting the component build -->
-    <target name="precompile" depends="record-compile-start-time,create-canonical-sysdef-file,precompile-ec"/>
+    <target name="precompile" depends="record-compile-start-time,create-canonical-sysdef-file,precompile-ec,run-coverity-configure"/>
 
     <!-- post operation for EC builds, submits the compile time and lists all the built components-->
-    <target name="postcompile" depends="postcompile-ec,render-build-duplicates" unless="env.HLM_SUBCON">
+    <target name="postcompile" depends="postcompile-ec,render-build-duplicates,post-coverity" unless="env.HLM_SUBCON">
         <runtarget target="submit-compile-time"/>
     </target>
     
+    
     <!-- Pre-processes all System Definition input files.
 
     Any Ant properties used in the files will be replaced by their values.
@@ -108,6 +132,7 @@
 
     <!-- Merges all preprocessed System Definition files into one combined file. -->
     <target name="create-canonical-sysdef-file" depends="preprocess-sysdef-files">
+        <mkdir dir="${compile.log.dir}" />
         <if>
             <istrue value="${schema.new}" />
             <then>
@@ -123,7 +148,7 @@
                 <pathconvert pathsep=" " property="system.definition.files.list">
                     <fileset dir="${build.output.dir}/build/input/" includes="**"/>
                     <chainedmapper>
-                        <globmapper from="*" to="-x *" casesensitive="no"/>
+                        <globmapper from="*" to="-x '*'" casesensitive="no"/>
                     </chainedmapper>
                 </pathconvert>
                 <hlm:compileGenxmlMergeMacro input="-x ${compile.sysdef.dtd.stub} ${system.definition.files.list}"
@@ -132,9 +157,8 @@
         </if>
     </target>
 
-    <!--
-      Supports a cleaning of binaries before starting compilation, based on a SysDef configuration.
-      <deprecated>Please consider using ido-prep-clean target.</deprecated>
+    <!-- Supports a cleaning of binaries before starting compilation, based on a SysDef configuration.
+    @deprecated Please consider using ido-prep-clean target.
     -->
     <target name="compile-clean" depends="create-canonical-sysdef-file"
       if="sysdef.clean.configuration">
@@ -364,6 +388,10 @@
     <!-- Creates a .csv log of the sizes of all the binaries created in the build. -->
     <target name="binary-sizes-log" if="binary.sizes.output">
         <hlm:startSpecificLogMacro name="${compile.log.dir}/${build.id}_binary_sizes.log" phase="compile"/>
+        <!-- File containing data related to flash image size
+        @type string
+        @scope private
+        -->
         <property name="binary.sizes.output.file" location="${build.log.dir}/${build.id}_flash_image_size_data.csv"/>
         <pathconvert pathsep=";" property="build.logs.list">
             <fileset dir="${compile.log.dir}" includes="*_build.log" excludes="*ant_build.log;*_zipup_build.log"/>
--- a/buildframework/helium/tools/compile/compile.antlib.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/compile/compile.antlib.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -20,6 +20,7 @@
 
 ============================================================================
 -->
+<!--* @package compile -->
 <antlib xmlns:hlm="http://www.nokia.com/helium">
     <!-- This task transfer the log file into html format -->
     <macrodef name="compileHtmlscanlogMacro" uri="http://www.nokia.com/helium">
@@ -47,7 +48,7 @@
                     <isset property="skip.diamonds"/>
                 </not>
                 <then>
-                    <fmpp sourceFile="${helium.dir}/tools/common/templates/diamonds/faults_metadata.ftl"
+                    <fmpp sourceFile="${helium.dir}/tools/common/templates/diamonds/faults_metadata_orm.ftl"
                                  outputfile="${diamonds.build.output.dir}/compile-main.xml">
                         <data expandProperties="yes">
                             dbPath: ${metadata.dbfile}
@@ -65,6 +66,7 @@
         <attribute name="error.limit"/>
         <attribute name="phase" default="compile"/>
         <sequential>
+            <hlm:calculateErrorsFromLog logfile="@{compile.summary.file}" />
             <hlm:metadataCountSeverity severity="ERROR" log="@{compile.summary.file}" 
                 db="${metadata.dbfile}" 
                 property="build.errors.total"/>
@@ -151,6 +153,8 @@
         <attribute name="output"/>
         <attribute name="logfile"/>
         <sequential>
+            <basename property="base.merge.log" file="@{logfile}"/>
+            <hlm:tempRecordStartMacro name="${base.merge.log}"/>
             <echo message="input:@{input}" />
             <echo message="output:@{output}" />
             <mkdir dir="${compile.log.dir}"/>
@@ -158,7 +162,7 @@
             <copy todir="${build.drive}/" verbose="true">
                 <fileset dir="${helium.dir}/tools/common/dtd" includes="*.dtd"/>
             </copy>
-            <preset.exec executable="perl" dir="${build.drive}/" failonerror="${failonerror}" output="@{logfile}">
+            <preset.exec executable="perl" dir="${build.drive}/" failonerror="${failonerror}">
                 <arg value="${epocroot}epoc32/tools/build/genxml.pl"/>
                 <arg value="-s"/>
                 <arg value="${epocroot}"/>
@@ -166,35 +170,11 @@
                 <arg value="@{output}"/>              
                 <arg line="@{input}"/>
             </preset.exec>
-            <if>
-                <not>
-                    <available file="@{output}"/>
-                </not>
-                <then>
-                    <echo file="@{logfile}" message="ERROR: Check @{input}" append="true"/>
-                    <!-- Todo: metadata: Make sure that logfilter is added to the filterset -->
-                    <hlm:metadatarecord database="${metadata.dbfile}">
-                        <hlm:textmetadatainput>
-                            <fileset casesensitive="false" file="@{logfile}" />
-                            <metadatafilterset refid="filterset.genxml.merge" />
-                        </hlm:textmetadatainput>
-                    </hlm:metadatarecord>
-                    <hlm:generateBuildStatus file="${build.id}.sysdef_GenxmlMerge.log" />
-                    <hlm:signal name="canonicalSysDefFailSignal" result="1" >
-                        <signalNotifierInput>
-                            <signalInput refid="canonicalSysDefFailSignalInput" >
-                                <notifierInput>
-                                    <fileset dir="${build.log.dir}" >
-                                        <include name="**/${build.id}.sysdef_GenxmlMerge.log*" />
-                                    </fileset>
-                                </notifierInput>
-                            </signalInput>
-                        </signalNotifierInput>
-                    </hlm:signal>
-                </then>
-            </if>
-
-            <hlm:assertFileExists file="@{output}"/>
+            <hlm:tempRecordStopMacro name="${base.merge.log}" phase="compile" filterref="filterset.genxml.merge"/>
+            <hlm:signalMacro
+                logfile="${build.cache.log.dir}/${base.merge.log}"
+                phase="compile" 
+                signal.input="canonicalSysDefFailSignalInput" />
         </sequential>
     </macrodef>
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/tools/compile/coverity.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,302 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : coverity.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.coverity" xmlns:hlm="http://www.nokia.com/helium">
+    <description>
+        code-coverity measure.
+    </description>
+    
+    <!-- Coverity property declaration and types defination-->
+    <!-- coverity output directory location
+    @type string
+    @scope private
+    -->
+    <property name="coverity.output.dir" location="${build.output.dir}/coverity"/>
+    <!-- coverity log directory location
+    @type string
+    @scope private
+    -->
+    <property name="coverity.log.dir" location="${build.log.dir}/coverity"/>
+    <!-- coverity link directory location
+    @type string
+    @scope private
+    -->
+    <property name="coverity.link.dir" value="${coverity.output.dir}/coveritylink"/>
+    <!-- coverity config directory location
+    @type string
+    @scope private
+    -->
+    <property name="coverity.config.dir" value="${coverity.output.dir}/config"/>
+    <!-- coverity analyze directory location
+    @type string
+    @scope private
+    -->
+    <property name="coverity.analyze.dir" value="${coverity.link.dir}/analyze"/>
+    <!-- coverity intermidiate directory location
+    @type string
+    @scope private
+    -->
+    <property name="coverity.inter.dir" value="${coverity.output.dir}/intermidiate"/>
+    <!-- coverity report directory location
+    @type string
+    @scope private
+    -->
+    <property name="coverity.report.dir" value="${coverity.output.dir}/coverity_report_${build.id}"/>
+    <!-- coverity report file name
+    @type string
+    @scope private
+    -->
+    <property name="coverity.report.file" value="${build.id}_coverity_build_report.html"/>
+    <!-- coverity summary XML file name
+    @type string
+    @scope private
+    -->
+    <property name="coverity.summary.xml.file" value="${temp.build.dir}/${build.id}_coverity_build_summary.xml"/>
+    <!-- coverity checkers XML file name
+    @type string
+    @scope private
+    -->
+    <property name="coverity.checkers.xml.file" value="${temp.build.dir}/${build.id}_coverity_build_checkers.xml"/>
+    <!-- diamonds coverity report file name
+    @type string
+    @scope private
+    -->
+    <property name="diamonds.coverity.report.file" value="${temp.build.dir}/${build.id}_coverity_build_report.xml"/>
+    
+    <if>
+        <isset property="env.NUMBER_OF_PROCESSORS"/>
+        <then>
+            <math result="coverity.no.thread" operand1="${env.NUMBER_OF_PROCESSORS}" operation="*" operand2="2" datatype="int"/>
+        </then>
+        <else>
+            <!-- Number of parallel coverity emit threads can run.
+            @type string
+            @scope private
+            -->
+            <property name="coverity.no.thread" value="2"/>
+        </else>
+    </if>
+    
+    <!-- set property if coverity is enabled -->
+    <condition property="run.coverity">
+        <istrue value="${enabled.coverity}" />
+    </condition>
+    
+    <!-- cov-build command options -->
+    <hlm:coverityoptions id="coverity.build.options">
+        <arg name="--config" value="${coverity.config.dir}/coverity_config.xml"/>
+        <arg name="--dir" value="${coverity.inter.dir}"/>
+        <arg name="--auto-diff" value=""/>
+        <arg name="--preprocess-first" value=""/>
+        <arg name="--record-only" value=""/>
+    </hlm:coverityoptions>
+    
+    <!-- cov-build emit command options -->
+    <hlm:coverityoptions id="coverity.emit.options">
+        <arg name="--config" value="${coverity.config.dir}/coverity_config.xml"/>
+        <arg name="--dir" value="${coverity.inter.dir}"/>
+        <arg name="--replay" value=""/>
+        <arg name="--replay-processes" value="${coverity.no.thread}"/>
+    </hlm:coverityoptions>
+    
+    <!-- cov-config command options -->
+    <hlm:coverityoptions id="coverity.config.options">
+        <hlm:arg name="--config" value="${coverity.config.dir}/coverity_config.xml"/>
+        <hlm:arg name="--template" value=""/>
+        <hlm:arg name="--comptype" value="armcc"/>
+        <hlm:arg name="--compiler" value="armcc.exe"/>
+    </hlm:coverityoptions>
+    
+    <!-- cov-analyze command options -->
+    <hlm:coverityoptions id="coverity.analyze.options">
+        <hlm:arg name="--dir" value="${coverity.analyze.dir}"/>
+        <hlm:arg name="--all" value=""/>
+        <hlm:arg name="--symbian" value=""/>
+        <hlm:arg name="--append" value=""/>
+        <hlm:arg name="--enable-callgraph-metrics" value=""/>
+    </hlm:coverityoptions>
+
+    <!-- To run post coverity steps -->
+    <target name="post-coverity" if="run.coverity">
+        
+        <!-- To emit the file into defect database -->
+        <antcall target="run-coverity-emit"/>
+        
+        <!-- To analyze the sources file -->
+        <antcall target="run-coverity-analyze"/>
+        
+        <!-- To generate the HTML error pages -->
+        <antcall target="gen-coverity-report"/>
+    
+    </target>
+    
+    <!-- Run coverity configure if the enabled.coverity is set to true -->
+    <target name="run-coverity-configure" if="run.coverity">
+    
+        <hlm:coverity command="cov-configure" dir="${build.drive}/">
+            <hlm:coverityoptions refid="coverity.config.options"/>
+        </hlm:coverity >
+        
+    </target>
+    
+    <!-- Run coverity build with emit options if the enabled.coverity is set to true 
+     re-running the cov-build with replay option will reduce the build time by ~ 20% 
+    -->
+    <target name="run-coverity-emit" >
+        
+        <hlm:coverity command="cov-build" dir="${build.drive}/">
+            <hlm:coverityoptions refid="coverity.emit.options"/>
+        </hlm:coverity >
+        
+    </target>
+    
+    <!-- Run coverity-analyze if the enabled.coverity is set to true 
+     Sometimes the same file is compiled several times with different command-line options. 
+     Due to the inherent difficulty of tracking linkage information, the cov-analyze command cannot automatically determine which files are linked together. 
+     To avoid errors in function call resolution (especially in C code, which doesn't have any name mangling), use the cov-link command to get this information. 
+     
+     and also
+     
+     working with link files is faster than collecting data from the intermediate directory multiple times
+     
+     So run the cov-link commands and analyze the database using cov-analyze command.
+    
+    -->
+    <target name="run-coverity-analyze" >
+        
+        <mkdir dir="${coverity.link.dir}"/>
+        
+        <hlm:coverity command="cov-link" dir="${build.drive}/">
+            <hlm:arg name="--dir" value="${coverity.inter.dir}"/>
+            <hlm:arg name="--collect" value=""/>
+            <hlm:arg name="-of" value="${coverity.link.dir}/all.link"/>
+        </hlm:coverity >
+                
+        <hlm:coverity command="cov-link" dir="${build.drive}/">
+            <hlm:arg name="--dir" value="${coverity.inter.dir}"/>
+            <hlm:arg name="--compile-arg" value="armv5"/>
+            <hlm:arg name="-of" value="${coverity.link.dir}/armv5.link"/>
+            <hlm:arg name="${coverity.link.dir}/all.link" value=""/>
+        </hlm:coverity >
+             
+        <hlm:coverity command="cov-link" dir="${build.drive}/">
+            <hlm:arg name="--dir" value="${coverity.inter.dir}"/>
+            <hlm:arg name="--output-dir" value="${coverity.analyze.dir}"/>
+            <hlm:arg name="${coverity.link.dir}/armv5.link" value=""/>
+        </hlm:coverity >
+                
+        <hlm:coverity command="cov-analyze" dir="${build.drive}/">
+            <hlm:coverityoptions refid="coverity.analyze.options"/>
+        </hlm:coverity >
+        
+    </target>
+    
+    
+    <!-- Generate coverity report -->
+    <target name="gen-coverity-report">
+        
+        <!-- Read the summary file generated by cov-analyze and generate html file -->
+        <fmpp sourceFile="${helium.dir}/tools/common/templates/coverity/coverity.summary.html.ftl"
+              outputFile="${temp.build.dir}/${build.id}_coverity_build_summary.html">
+            <data   expandProperties="yes">
+                    ant: antProperties()
+                    covsummary: slicedText (${coverity.analyze.dir}/c/output/summary.txt)
+            </data>
+        </fmpp>
+        
+        <!-- To generate summary file for diamonds -->
+        <fmpp sourceFile="${helium.dir}/tools/common/templates/coverity/coverity.summary.xml.ftl"
+              outputFile="${coverity.summary.xml.file}">
+            <data   expandProperties="yes">
+                    ant: antProperties()
+                    covsummary: slicedText (${coverity.analyze.dir}/c/output/summary.txt)
+            </data>
+        </fmpp>
+        
+        <!-- Run this to get the static html pages -->
+        <hlm:coverity command="cov-format-errors" dir="${build.drive}/">
+            <hlm:arg name="--dir" value="${coverity.analyze.dir}"/>
+            <hlm:arg name="--filesort" value=""/>
+            <hlm:arg name="--functionsort" value=""/>
+        </hlm:coverity >
+        
+        <!-- Copy the summary file to resolve the xml load error -->
+        <copy file="${coverity.analyze.dir}/c/output/errors/summary.xml" tofile="${coverity.checkers.xml.file}" overwrite="true" failonerror="false">
+            <filterchain>
+                <linecontains negate="true">
+                    <contains value="config.dtd"/>
+                </linecontains>
+            </filterchain>
+        </copy>
+        
+        <!-- Insert summary tags into checkers file -->
+        <xmltask source="${coverity.checkers.xml.file}"  dest="${diamonds.coverity.report.file}" report="false">
+            <insert path="/coverity" file="${coverity.summary.xml.file}"/> 
+        </xmltask>
+        
+        <!-- collect all the html files into folder -->        
+        <copy todir="${coverity.report.dir}" overwrite="true" failonerror="false">
+            <fileset dir="${coverity.analyze.dir}/c/output/errors">
+                <exclude name="index.html"/>
+                <exclude name="**/*.xml"/>
+                <exclude name="summary.html"/>
+            </fileset>
+        </copy>
+        
+        <!-- Concatinate all the html pages to get the final error report page -->
+        <concat destfile="${coverity.report.dir}/${coverity.report.file}">
+            <fileset dir="${temp.build.dir}" includes="${build.id}_coverity_build_summary.html"/>
+            <fileset dir="${coverity.analyze.dir}/c/output/errors" includes="index.html"/>
+        </concat>
+        
+    </target>
+    
+    
+    <!-- To get the SBS variable value -->
+    <macrodef name="getSBSVariableValue" uri="http://www.nokia.com/helium">
+        <attribute name="variablename"/>
+        <attribute name="outputvar"/>
+        <attribute name="sbsinput"/>
+        <sequential>
+            <var name="output.var" unset="true"/>
+            <hlm:getVariableValue name="@{variablename}" property="output.var">
+                <hlm:sbsinput refid="@{sbsinput}" />
+            </hlm:getVariableValue>
+            <if>
+                <and>
+                    <isset property="output.var"/>
+                    <matches string="${output.var}" pattern="arm.*"/>
+                </and>
+                <then>
+                    <antcall target="set-arm-version"/>
+                </then>
+            </if>
+            <script language="beanshell"> <![CDATA[
+                curVal=project.getProperty("output.var"); 
+                project.setProperty("@{outputvar}",curVal);
+                ]]>
+            </script> 
+        </sequential>
+    </macrodef>
+    
+
+</project>
--- a/buildframework/helium/tools/compile/ebs/ebs.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/compile/ebs/ebs.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -20,6 +20,7 @@
 
 ============================================================================
 -->
+<!--* @package compile -->
 <project name="compile.ebs" xmlns:hlm="http://www.nokia.com/helium">
     <description>
         EBS compilation targets.
@@ -45,7 +46,6 @@
         <hlm:assertFileExists file="${genxml.output.file}"/>
         <hlm:compileEbsMacro input="${genxml.output.file}" log="${compile.log.dir}/${build.id}.${sysdef.configuration}_compile.log" />
         <!-- calculate below only if metadata is enabled, error is calculated before the signal is being sent.-->
-        <hlm:calculateErrorsFromLog logfile="${compile.log.dir}/${build.id}.${sysdef.configuration}_compile.log" />
     </target>
 
     
--- a/buildframework/helium/tools/compile/ec/ec.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/compile/ec/ec.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -20,22 +20,50 @@
 
 ============================================================================
 -->
+<!--* @package compile -->
 <project name="compile.ec" xmlns:hlm="http://www.nokia.com/helium">
     <description>
         EC compilation targets.
     </description>
 
+    <!-- Location of emake tool.
+    @type string
+    @scope private
+    -->
     <property name="ec.emake" value="emake"/>
+    <!-- Location of the Makefile generated to run the EC build.
+    @type string
+    @scope private
+    -->
     <property name="ec.makefile.file" location="${build.drive}/Makefile"/>
 
+    <!-- Location of sysdef2make.pl file, which is used to translate system definition files to make files. Internal property that normally does not require changes.
+    @type string
+    @scope private
+    -->
     <property name="ec.sysdef2make" location="${helium.dir}/tools/compile/ec/sysdef2make.pl"/>
+    <!-- Extra command line parameters for the sysdef2make call.
+    @type string
+    -->
     <property name="ec.sysdef2make.cmdline" value="-forcemake ((abld.*\-(w|what|c|check))|(abld.*resource))" />
     
+    <!-- Temporary location of the EC history file used by the current build.
+    @type string
+    @scope private
+    -->
     <property name="ec.historyfile" value="${build.drive}/emake.data"/>
+    <!-- memory limit for EC execution. See user guide for more details
+    @type string
+    @scope private
+    -->
     <property name="ec.mem.limit" value="1000000000"/>
     
     <!-- This can be used to query cluster manager to find information about the build. Set
     to default as all the clusture supports default class id.-->
+    <!-- Build class for Electric Cloud. No default value.
+    @type string
+    @scope private
+    -->
     <property name="ec.build.class" value="default"/>
     
 
@@ -151,7 +179,14 @@
                 <var name="ec.history.option" value="create"/>
             </then>
             <else>
+                <!-- Maximum number of agent to be used
+                @type string
+                -->
                 <property name="ec.maxagents" value="0"/>    
+                <!-- Should be create for single node build and merge for multi node build.
+                @type string
+                @scope private
+                -->
                 <property name="ec.history.option" value="merge"/>
                 <if>
                     <isset property="week.number"/>
@@ -327,6 +362,5 @@
         <hlm:assertFileExists file="${temp.build.dir}/${build.id}.${sysdef.configuration}_run_emake.bat"/>
         <hlm:assertFileExists file="${compile.log.dir}/${build.id}.${sysdef.configuration}_build_output.log"/>
         <hlm:assertFileExists file="${compile.log.dir}/${build.id}.${sysdef.configuration}_compile.log"/>
-        <hlm:calculateErrorsFromLog logfile="${compile.log.dir}/${build.id}.${sysdef.configuration}_compile.log" />
     </target>
 </project>
--- a/buildframework/helium/tools/compile/ec/ec_functions.mk	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/compile/ec/ec_functions.mk	Thu Mar 04 15:10:37 2010 +0200
@@ -70,11 +70,11 @@
 	@echo === automatic == $*
 	@echo -- bldmake_bldfiles-v-k
 	-@perl -e "print '++ Started at '.localtime().\"\n\""
-	-@perl -e "use Time::HiRes; print '+++ HiRes Start '.Time::HiRes::time().\"\n\";"
+	-@python -c "import time; print '+++ HiRes Start ',time.time();"
 	@echo Error 42 abld command issued when bldmake was not done first
 	@echo Error 42 This is a serious error in your build configuration and must be fixed.
 	@echo Error 42 In this build the error has been fixed automatically.
 	cd $* && bldmake bldfiles -v -k
-	-@perl -e "use Time::HiRes; print '+++ HiRes End '.Time::HiRes::time().\"\n\";"
+	-@python -c "import time; print '+++ HiRes End ',time.time();"
 	-@perl -e "print '++ Finished at '.localtime().\"\n\""
 
--- a/buildframework/helium/tools/compile/ec/sysdef2make.pl	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/compile/ec/sysdef2make.pl	Thu Mar 04 15:10:37 2010 +0200
@@ -641,12 +641,12 @@
 print(MAKEFILE "\@echo === \$(CONFIGURATION) == \$\*\n");
 print(MAKEFILE "\t\@echo -- \$\(1\) \n");
 print(MAKEFILE "\t-\@perl -e \"print '++ Started at '.localtime().\\\"\\n\\\"\"\n");
-print(MAKEFILE "\t-\@perl -e \"use Time::HiRes; print '+++ HiRes Start '.Time::HiRes::time().\\\"\\n\\\";\"\n");
+print(MAKEFILE "\t-\@python -c \"import time; print '+++ HiRes Start ',time.time();\"\n");
 print(MAKEFILE "endef\n\n");
 
 
 print(MAKEFILE "define ENDTASK\n");
-print(MAKEFILE "\t\-\@perl -e \"use Time::HiRes; print '+++ HiRes End '.Time::HiRes::time().\\\"\\n\\\";\"\n");
+print(MAKEFILE "\t\-\@python -c \"import time; print '+++ HiRes End ',time.time();\"\n");
 print(MAKEFILE "\t-\@perl -e \"print '++ Finished at '.localtime().\\\"\\n\\\"\"\n");
 print(MAKEFILE "endef\n\n");
 
--- a/buildframework/helium/tools/compile/qt/qt.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/compile/qt/qt.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -20,14 +20,27 @@
 
 ============================================================================
 -->
+<!--* @package compile -->
 <project name="qt" xmlns:hlm="http://www.nokia.com/helium">
     <description>
     Qt build support.
     </description>
     
+    <!-- The location of the ant template to run qmake commands.
+    @type string
+    -->
     <property name="qt.qmake.ant.template" location="${helium.dir}/tools/compile/qt/templates/run-qmake.ant.xml.ftl" />
+    <!-- The location of the makefile template to run qmake commands.
+    @type string
+    -->
     <property name="qt.qmake.makefile.template" location="${helium.dir}/tools/compile/qt/templates/run-qmake.mk.ftl" />
+    <!-- The command lines argument passed to the configure tool.
+    @type string
+    -->
     <property name="qt.configure.args" value="-platform win32-mwc -xplatform symbian-abld -confirm-license"/>
+    <!-- Setting default arguments to qMake command line, if the qmakeArgs is defined from the system definition file then those arguments are discarded.
+    @type string
+    -->
     <property name="qt.qmake.default.args" value="-r"/>
 
     <!--
--- a/buildframework/helium/tools/compile/qt/templates/run-qmake.mk.ftl	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/compile/qt/templates/run-qmake.mk.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -28,8 +28,8 @@
 <#list data["//unit/@proFile/.."] as unit>
 ##########################################################################
 /${unit.@bldFile}/bld.inf: /${unit.@bldFile}/${unit.@proFile}
-	@echo cd /${unit.@bldFile} ^&^& qmake -listgen <#if unit.@qmakeArgs[0]??>${unit.@qmakeArgs}<#else>${ant['qt.qmake.default.args']}</#if> ${unit.@proFile}
-	cd /${unit.@bldFile} && qmake -listgen <#if unit.@qmakeArgs[0]??>${unit.@qmakeArgs}<#else>${ant['qt.qmake.default.args']}</#if> ${unit.@proFile}
+	@echo cd /${unit.@bldFile} ^&^& qmake -listgen <#if unit.@qmakeArgs[0]??>${unit.@qmakeArgs}<#else>${ant['qt.qmake.default.args']}</#if><#if "${ant['build.system']?lower_case}" = 'sbs-ec'> -spec symbian-sbsv2</#if> ${unit.@proFile}
+	-@cd /${unit.@bldFile} && qmake -listgen <#if unit.@qmakeArgs[0]??>${unit.@qmakeArgs}<#else>${ant['qt.qmake.default.args']}</#if> ${unit.@proFile}
 
 all:: /${unit.@bldFile}/bld.inf
 
--- a/buildframework/helium/tools/compile/sbs/sbs.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/compile/sbs/sbs.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -20,6 +20,7 @@
 
 ============================================================================
 -->
+<!--* @package compile -->
 <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. 
@@ -43,6 +44,9 @@
 
     -->
 
+    <!-- skip sbs layer filtering (true) for new schema and false for schema 1.4.0
+    @type boolean
+    -->
     <property name="skip.sbs.layer.generation" value="false" />
     
     <!-- This target filters the canonical system definition file compare to the "raptor_${sysdef.configuration}" filter. -->
@@ -89,9 +93,18 @@
                 <copy file="${helium.dir}/tools/common/python/scripts/sbsscanlogmetadata.py" todir="${env.SBS_HOME}/python/plugins/" failonerror="true" />
                 <echo message="sbs.patternset: ${sbs.patternset}" />
                 <hlm:generate-layers />
-                <var name="sbs.inputs.list" value="" unset="true"/>
-                <hlm:getsbsinputs config="sbs.${sysdef.configuration}" outputProperty="sbs.inputs.list"/>
-                <for list="${sbs.inputs.list}" delimiter="," param="sbs.input">
+                <var name="sbs.internal.inputs.list" value="" unset="true"/>
+                <if>
+                    <istrue value="${schema.new}" />
+                    <then>
+                        <var name="sbs.internal.inputs.list" value="${sbs.inputs.list}"/>
+                    </then>
+                    <else>
+                        <var name="sbs.internal.inputs.list" value="" unset="true"/>
+                        <hlm:getsbsinputs config="sbs.${sysdef.configuration}" outputProperty="sbs.internal.inputs.list"/>
+                    </else>
+                </if>
+                <for list="${sbs.internal.inputs.list}" delimiter="," param="sbs.input">
                     <sequential>
                         <echo message="building raptor input: @{sbs.input}" />
                         <hlm:getVariableValue name="--logfile" property="sbs.log.file">
@@ -112,35 +125,83 @@
                             </then>
                         </if>
                         <var name="sbs.clean.log" value="${sbs.log.file}.clean.log"/>
+                        <var name="sbs.what.log" value="${sbs.log.file}.whatlog.log"/>
                         <!-- Generate the filtered layers -->
-                        <hlm:sbstask sbsinput="@{sbs.input}" sysdefFile="${build.drive}/output/build/canonical_system_definition_${sysdef.configuration}.xml" 
-                            layerPatternSetRef="${sbs.patternset}" errorOutput="${sbs.log.file}.sbs_error.log" 
-                            workingDir="${build.drive}/" failOnError="false" outputLog="${sbs.log.file}" cleanLog = "${sbs.clean.log}"
-                             statsLog="${compile.log.dir}/${build.id}_${sysdef.configuration}.info.xml" />
+                        <if>
+                            <isset property="run.coverity"/>
+                            <then>
+                                <hlm:coveritybuild  sbsinput="@{sbs.input}" 
+                                                    sysdeffile="${build.drive}/output/build/canonical_system_definition_${sysdef.configuration}.xml"
+                                                    layerpatternsetref="${sbs.patternset}" 
+                                                    workingdir="${build.drive}/" 
+                                                    execute="true"
+                                                    failonerror="false"
+                                                    outputlog="${sbs.log.file}" 
+                                                    cleanlog = "${sbs.clean.log}"
+                                                    whatlog = "${sbs.what.log}"
+                                                    erroroutput="${sbs.log.file}.sbs_error.log"
+                                                    statslog="${sbs.log.file}.info.xml">
+                                    <hlm:coverityoptions refid="coverity.build.options"/>
+                                </hlm:coveritybuild>
+                            </then>
+                            <elseif>
+                                <istrue value="${sbs.build.ctc}"/>
+                                <then>
+                                    <hlm:ctctask sbsinput="@{sbs.input}" 
+                                                    sysdefFile="${build.drive}/output/build/canonical_system_definition_${sysdef.configuration}.xml" 
+                                                    layerPatternSetRef="${sbs.patternset}" 
+                                                    errorOutput="${sbs.log.file}.sbs_error.log" 
+                                                    workingDir="${build.drive}/" 
+                                                    failOnError="false" 
+                                                    outputLog="${sbs.log.file}" 
+                                                    cleanLog = "${sbs.clean.log}"
+                                                    whatlog = "${sbs.what.log}"
+                                                    statsLog="${sbs.log.file}.info.xml" />                                
+                                </then>
+                            </elseif>
+                            <else>
+                                <hlm:sbstask sbsinput="@{sbs.input}" 
+                                                sysdefFile="${build.drive}/output/build/canonical_system_definition_${sysdef.configuration}.xml" 
+                                                layerPatternSetRef="${sbs.patternset}" 
+                                                errorOutput="${sbs.log.file}.sbs_error.log" 
+                                                workingDir="${build.drive}/" 
+                                                failOnError="false" 
+                                                outputLog="${sbs.log.file}" 
+                                                cleanLog = "${sbs.clean.log}"
+                                                whatlog = "${sbs.what.log}"
+                                                statsLog="${sbs.log.file}.info.xml" />
+                            </else>
+                        </if>
+                        <hlm:assertFileExists file="${sbs.log.file}"/>
+                        <hlm:assertFileExists file="${sbs.clean.log}"/>
+                        <hlm:assertFileExists file="${sbs.what.log}"/>
+                        <hlm:assertFileExists file="${sbs.log.file}.sbs_error.log"/>
+                        <hlm:assertFileExists file="${sbs.log.file}.info.xml"/>
                         <!-- run arm license checking / setting arm version only for arm config --> 
                         <echo message="sbs.log.file: ${sbs.log.file}" />
                         <hlm:sbsProcessOutputMacro sbs.log.file="${sbs.log.file}"
-                            sbs.clean.log.file="${sbs.clean.log}"  sbs.stats.file="${compile.log.dir}/${build.id}_${sysdef.configuration}.info.xml"
+                            sbs.clean.log.file="${sbs.clean.log}" sbs.what.log.file="${sbs.what.log}" 
+                            sbs.stats.file="${sbs.log.file}.info.xml"
                             sbs.ant.output.file="${sbs.log.file}" sbs.error.output.file="${sbs.log.file}.sbs_error.log"/>
                     </sequential>
                 </for>
-                <hlm:assertFileExists file="${sbs.log.file}.sbs_error.log"/>
-                <hlm:assertFileExists file="${compile.log.dir}/${build.id}_${sysdef.configuration}.info.xml"/>
-                <hlm:assertFileExists file="${sbs.log.file}"/>
-                <hlm:assertFileExists file="${sbs.clean.log}"/>
             </then>
         </if>
     </target>
-
+    
+    
     <macrodef name="sbsProcessOutputMacro" uri="http://www.nokia.com/helium">
         <attribute name="sbs.clean.log.file" />
+        <attribute name="sbs.what.log.file" />
         <attribute name="sbs.log.file" />
         <attribute name="sbs.stats.file" />
         <attribute name="sbs.error.output.file" />
         <attribute name="sbs.ant.output.file" />
         <sequential>
-            <var name="sbs.scan2.template" value="scan2.html.ftl" />
-            <basename property="base.sbs.log" file="@{sbs.log.file}" suffix=".log"/>
+            <var name="sbs.scan2.template" value="scan2_orm.html.ftl" />
+            <var name="base.sbs.log" value="" unset="true"/>
+            <basename property="base.sbs.log" file="@{sbs.log.file}" />
+            <echo message="base.sbs.log: ${base.sbs.log}" />
             <hlm:metadatarecord database="${metadata.dbfile}">
                 <hlm:textmetadatainput>
                     <fileset casesensitive="false" file="@{sbs.error.output.file}"/>
@@ -154,10 +215,11 @@
             <echo message="Metadata enabled, storing build status in database" />
             <echo message="sbs log file :@{sbs.log.file}" />
             <echo message="sbs.clean.log.file :@{sbs.clean.log.file}" />
+            <echo message="sbs.what.log.file :@{sbs.what.log.file}" />
             <trycatch property="hlm-sbs.parser.thrown">
                 <try>
-                    <hlm:metadatarecord database="${metadata.dbfile}">
-                        <hlm:sbsmetadatainput cleanLogFile="@{sbs.clean.log.file}">
+                    <hlm:metadatarecord  database="${metadata.dbfile}">
+                        <hlm:sbsmetadatainput whatLogFile="@{sbs.what.log.file}" cleanLogFile="@{sbs.clean.log.file}">
                             <fileset casesensitive="false" file="@{sbs.log.file}"/>
                             <metadatafilterset refid="filterset.sbs" />
                         </hlm:sbsmetadatainput>
@@ -167,13 +229,14 @@
                     <if>
                         <istrue value="${skip.sbs.parser.exception}" />
                         <then>
-                            <var name="sbs.scan2.template" value="scan2_text.html.ftl" />
-                            <hlm:metadatadelete database="${metadata-read-db}">
+                            <var name="sbs.scan2.template" value="scan2_text_orm.html.ftl" />
+                            <hlm:metadatadelete database="${metadata.dbfile}">
                                 <fileset casesensitive="false" file="@{sbs.log.file}"/>
                             </hlm:metadatadelete>
-                            <hlm:metadatarecord database="${metadata-read-db}" >
+                            <hlm:metadatarecord database="${metadata.dbfile}" >
                                 <hlm:textmetadatainput>
                                     <fileset casesensitive="false" file="@{sbs.log.file}"/>
+                                    <metadatafilterset refid="filterset.sbs" />
                                 </hlm:textmetadatainput>
                             </hlm:metadatarecord>
                         </then>
@@ -184,20 +247,20 @@
                 </catch>
             </trycatch>
             <fmpp sourceFile="${helium.dir}/tools/common/templates/log/${sbs.scan2.template}"
-                         outputfile="@{sbs.log.file}.scan2.html">
+                         outputfile="${build.log.dir}/${base.sbs.log}.scan2.html">
                 <freemarkerLinks expandProperties="yes">
                     macro: ${helium.dir}/tools/common/templates/macro
                 </freemarkerLinks>
                 <data expandProperties="yes">
                     dbPath: ${metadata.dbfile}
                     doc: xml(@{sbs.stats.file})
+                    whatLogPath: @{sbs.what.log.file}
                     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}" 
+            <hlm:assertFileExists file="${build.log.dir}/${base.sbs.log}.scan2.html"/>
+            <hlm:compileLogSignalMacro compile.summary.file="@{sbs.log.file}" 
                 error.limit="${build.errors.limit}" phase="compile"/>
             <!-- Blocks packaging configuration generation. -->
             <if>
@@ -219,4 +282,17 @@
             </if>
         </sequential>
     </macrodef>
+    
+    <scriptdef language="jython" name="getSbsHome" uri="http://www.nokia.com/helium">
+        <attribute name="property" />
+if attributes.get("property") is None:
+    raise Exception("property attribute has not been set.")
+if project.getProperty(attributes.get("property")) is None:
+    import symbian.raptor
+    sbs_home = symbian.raptor.getSBSHome()
+    if sbs_home is not None:
+        #self.log("Found SBS_HOME as " + sbs_home)
+        project.setNewProperty(attributes.get("property"), sbs_home)
+    </scriptdef>
+
 </project>
\ No newline at end of file
--- a/buildframework/helium/tools/compile/scanbuildlog.pl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,157 +0,0 @@
-#!perl -w
-
-#============================================================================ 
-#Name        : scanbuildlog.pl 
-#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: 
-#============================================================================
-
-# ==============================================================================
-#  %name:          scanbuildlog.pl %
-#  Part of:        juno_build
-#
-#  %version:	   1 %
-#  %date_modified: Mon Feb 06 17:21:13 2006 %
-#
-#  See POD text at the end of this file for usage details.
-# ==============================================================================
-
-use strict;
-use Getopt::Long;
-use Pod::Usage;
-use XML::Simple;
-use lib "$ENV{'BUILD_DRIVE'}\\epoc32\\tools";
-use Scanlog;
-use XML::Parser::Expat;
-
-my $help        = 0;
-my $man         = 0;
-my $unique      = 0;
-my $logfilename = '';
-
-GetOptions('unique' => \$unique,
-           'log=s'  => \$logfilename,
-           'man'    => \$man,
-           'help|?' => \$help)
-  or pod2usage(2);
-pod2usage(1) if $help;
-pod2usage(-exitstatus => 0, -verbose => 2) if $man;
-$logfilename = shift unless $logfilename;
-my $logfile;
-
-if ($logfilename)
-{
-    open(LOGFILE, $logfilename) or die("Can't open '$logfilename': $!\n");
-    $logfile = \*LOGFILE;
-}
-else
-{
-    $logfile = \*STDIN;
-}
-
-#<!DOCTYPE logfile SYSTEM "logfile.dtd">
-#<?xml-stylesheet type="text/xsl" href="logfile.xsl"?>
-print <<EOT;
-<?xml version="1.0" encoding="ascii"?>
-EOT
-print("<logfile name=\"$logfilename\">\n");
-
-my %logentry  = ();
-my $phase     = '';
-my $component = '';
-my $parser = new XML::Parser::Expat;
-
-while (<$logfile>)
-{
-    chomp;
-    next if Scanlog::CheckForIgnore($_);
-
-    ($phase = $1) =~ s/\\/\\\\/ and next
-      if /^=== (.+) started ... ... .. (..):(..):(..)/;
-    $phase = $1 and next if /^=== (.+) started ... ... .. (..):(..):(..)/;
-    $component = $1 and next if $phase && /^=== $phase == (\S+)/;
-    if ($phase && /^=== $phase finished ... ... .. (..):(..):(..)/)
-    {
-        $component = '';
-        next;
-    }
-
-    my $logrec = {line    => $.,
-                  content => $parser->xml_escape($_)};
-
-    $logrec->{severity} = 'info'
-      if Scanlog::CheckForMigrationNotes($_)
-      or Scanlog::CheckForRemarks($_);
-
-      if ( Scanlog::CheckForErrors($_)
-      or Scanlog::CheckForNotBuilt($_)
-      or Scanlog::CheckForMissing($_) )
-    {
-        $logrec->{severity} = 'error';
-    }
-    $logrec->{severity} = 'warn' if Scanlog::CheckForWarnings($_);
-    next unless $logrec->{severity};
-
-    print XMLout($logrec, rootname => 'logentry', noescape => 0);
-}
-
-print("</logfile>\n");
-
-__END__
-
-=head1 NAME
-
-scanbuildlog - Scan EBS build log for errors and warnings
-
-=head1 SYNOPSIS
-
-perl scanbuildlog.pl [-h] | -l <log file>
-
-=head1 OPTIONS
-
-=over 8
-
-=item B<-help>
-
-Print a brief help message and exits.
-
-=item B<-man>
-
-Prints the manual page and exits.
-
-=item B<-l>
-
-Specify the log file to parse.
-
-=back
-
-=head1 DESCRIPTION
-
-Prints out a summary of the errors, warnings and informational
-messages found in the log file in an XML format conforming to the
-following DTD:
-
- <!ELEMENT logfile (logentry*)>
- <!ELEMENT logentry (#PCDATA)>
- <!ATTLIST logentry
-   severity (error|warn|info) #REQUIRED
-   line     CDATA             #REQUIRED
-   errfile  CDATA             #IMPLIED
-   errline  CDATA             #IMPLIED>
-
-=head1 SEE ALSO
-
-=cut
--- a/buildframework/helium/tools/compile/sis.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/compile/sis.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -20,9 +20,13 @@
 
 ============================================================================
 -->
+<!--* @package compile -->
 <project name="compile.sis" xmlns:hlm="http://www.nokia.com/helium">
     <description>Create SIS files.</description>
     
+    <!-- Common Configuration config name. Override to select a specific config group.
+    @type string
+    -->
     <property name="sis.config.name" value=""/>
     
     <!-- Preprocesses the SIS configuration file to insert Ant properties. -->
--- a/buildframework/helium/tools/iad/iad.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/iad/iad.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -20,6 +20,7 @@
 
 ============================================================================
 -->
+<!--* @package iad -->
 <project name="iad">
     <description>
         Targets related to iad
@@ -33,7 +34,7 @@
             </path>
             <sequential>
                 <exec executable="python" dir="${build.log.dir}" failonerror="true">
-                    <arg value="${helium.dir}/tools/iad/packageiad.py"/>
+                    <arg line="-m packageiad"/>
                     <arg value="@{sysdef.file}"/>
                     <arg value="${sysdef.configurations}"/>
                     <arg value="${build.drive}"/>
--- a/buildframework/helium/tools/iad/iadinfo.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1095 +0,0 @@
-#============================================================================ 
-#Name        : iadinfo.py 
-#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:
-#===============================================================================
-
-import optparse
-import sys, os
-import struct
-import zlib
-import pdb
-    
-PyASN1Availabe = True
-
-try :
-    from pyasn1.codec.der import decoder
-    from pyasn1.type import univ, base
-except :
-    PyASN1Availabe = False
-
-def _findItem(item, itemParent, index, objectIdentifier) :
-    if isinstance(item, base.AbstractSimpleAsn1Item) :
-        if item == objectIdentifier :
-            return itemParent[index + 1]
-    else:
-        for i in range(len(item)) :
-            found = _findItem(item[i], item, i, objectIdentifier)
-            if found: 
-                return found
-
-def findItem(decodedCert, objectIdentifier) :
-    return _findItem(decodedCert, None, 0, objectIdentifier)
-
-
-class CertificateOrganization :
-    def __init__(self) :
-        pass
-    
-    def parse(self, decodedCert) :
-        self.commonName = findItem(decodedCert, (2, 5, 4, 3))
-        self.countryCode = findItem(decodedCert, (2, 5, 4, 6))
-        self.locality = findItem(decodedCert, (2, 5, 4, 7))
-        self.state = findItem(decodedCert, (2, 5, 4, 8))
-        self.street = findItem(decodedCert, (2, 5, 4, 9))
-        self.organization = findItem(decodedCert, (2, 5, 4, 10))
-
-    def readableStr(self) :
-        buf = ""
-        if self.commonName :
-            buf += self.commonName.prettyPrint() + "\n"
-        if self.countryCode :
-            buf += self.countryCode.prettyPrint() + "\n"
-        if self.locality :
-            buf += self.locality.prettyPrint() + "\n"
-        if self.state :
-            buf += self.state.prettyPrint() + "\n"
-        if self.street :
-            buf += self.street.prettyPrint() + "\n"
-        if self.organization :
-            buf += self.organization.prettyPrint()
-        return buf
-
-class CertificateInfo :
-    def __init__(self) :
-        pass
-        
-    def parse(self, decodedCert) :
-        self.issuer = CertificateOrganization()
-        self.issuer.parse(decodedCert[0][3])
-        
-        self.signer = CertificateOrganization()
-        self.signer.parse(decodedCert[0][5])
-        
-    def readableStr(self) :
-        buf = "Signer:\n      " + "\n      ".join(self.signer.readableStr().split('\n')) + "\n"
-        buf += "Issuer:\n      " + "\n      ".join(self.issuer.readableStr().split('\n')) + "\n"
-        return buf
-            
-
-class SISFileHeader :
-    def __init__(self) :
-        self.uid1 = 0
-        self.uid2 = 0
-        self.uid3 = 0
-        self.uidChecksum = 0
-
-class SISField :
-    def __init__(self) :
-        self.type = 0
-        self.length = None
-        self.subFields = []
-        
-    def readFieldLength(self, fileReader) :
-        length = fileReader.readBytesAsUint(4)
-        if length & 0x80000000 > 0 :
-            length = length << 32
-            length |= fileReader.readBytesAsUint(4)
-        return length
-        
-    def findField(self, fieldType, startIndex=0) :
-        result = None
-        index = startIndex
-        
-        for field in self.subFields[startIndex:] :
-            if field.type == fieldType :
-                result = field
-                break
-            ++ index
-        return (result, index)
-        
-    def readableStr(self) :
-        return ""
-    
-    def traverse(self, handler, depth=0) :
-        handler.handleField(self, depth)
-        for field in self.subFields :
-            field.traverse(handler, depth + 1)
-        
-class SISUnsupportedField(SISField) :
-    def __init__(self) :
-        SISField.__init__(self)
-        
-    def initFromFile(self, fileReader) :
-        self.length = self.readFieldLength(fileReader)
-        fileReader.readPlainBytes(self.length)
-
-class SISStringField(SISField) :
-    def __init__(self) :
-        SISField.__init__(self)
-        self.data = None
-        
-    def initFromFile(self, fileReader) :
-        self.length = self.readFieldLength(fileReader)
-        buf = fileReader.readPlainBytes(self.length)
-        self.data = u""
-        while len(buf) > 0 :
-            temp = buf[:2]
-            buf = buf[2:]
-            self.data += unichr(ord(temp[0]) | ord(temp[1]) << 8)
-        
-    def readableStr(self) :
-        return self.data
-        
-class SISArrayField(SISField) :
-    def __init__(self) :
-        SISField.__init__(self)
-        
-    def initFromFile(self, fileReader) :
-        self.length = self.readFieldLength(fileReader)
-        type = fileReader.readBytesAsInt(4)
-        l = self.length - 4
-        while l > 0 :
-            field = SISFieldTypes[type]()
-            field.type = type
-            field.initFromFile(fileReader)
-            self.subFields.append(field)
-            
-            l -= field.length + 4 # field length + the length field
-            padding = fileReader.skipPadding()
-            l -= padding
-
-class SISCompressedField(SISField) :
-    def __init__(self) :
-        SISField.__init__(self)
-        self.algorithm = None
-        self.uncompressedDataSize = None
-        self.data = None
-        
-    def initFromFile(self, fileReader) :
-        self.length = self.readFieldLength(fileReader)
-        self.algorithm = fileReader.readBytesAsUint(4)
-        self.uncompressedDataSize = fileReader.readBytesAsUint(8)
-        data = fileReader.readPlainBytes(self.length - 4 - 8)
-        if self.algorithm == 0 :
-            self.data = data
-        elif self.algorithm == 1 :
-            self.data = zlib.decompress(data)
-            
-class SISVersionField(SISField) :
-    def __init__(self) :
-        SISField.__init__(self)
-        self.version = (- 1, - 1, - 1)
-        
-    def initFromFile(self, fileReader) :
-        self.length = self.readFieldLength(fileReader)
-        major = fileReader.readBytesAsInt(4)
-        minor = fileReader.readBytesAsInt(4)
-        build = fileReader.readBytesAsInt(4)
-        self.version = (major, minor, build)
-        
-    def readableStr(self) :
-        return str(self.version)
-    
-class SISVersionRangeField(SISField) :
-    def __init__(self) :
-        SISField.__init__(self)
-        self.fromVersion = None
-        self.toVersion = None
-        
-    def initFromFile(self, fileReader) :
-        self.length = self.readFieldLength(fileReader)
-        fieldParser = SISFieldParser()
-        self.fromVersion = fieldParser.parseField(fileReader)
-        if self.length - fieldParser.lastReadBytes > 0  :
-            self.toVersion = fieldParser.parseField(fileReader)
-    
-class SISDateField(SISField) :
-    def __init__(self) :
-        SISField.__init__(self)
-        self.year = None
-        self.month = None
-        self.day = None
-        
-    def initFromFile(self, fileReader) :
-        self.length = self.readFieldLength(fileReader)
-        self.year = fileReader.readBytesAsUint(2)
-        self.month = fileReader.readBytesAsUint(1)
-        self.day = fileReader.readBytesAsUint(1)
-    
-    def readableStr(self) :
-        return str(self.year) + "." + str(self.month) + "." + str(self.day)
-    
-class SISTimeField(SISField) :
-    def __init__(self) :
-        SISField.__init__(self)
-        self.hours = None
-        self.minutes = None
-        self.seconds = None
-        
-    def initFromFile(self, fileReader) :
-        self.length = self.readFieldLength(fileReader)
-        self.hours = fileReader.readBytesAsUint(1)
-        self.minutes = fileReader.readBytesAsUint(1)
-        self.seconds = fileReader.readBytesAsUint(1)
-    
-    def readableStr(self) :
-        return str(self.hours) + ":" + str(self.minutes) + ":" + str(self.seconds)
-    
-class SISDateTimeField(SISField) :
-    def __init__(self) :
-        SISField.__init__(self)
-        self.date = None
-        self.time = None
-        
-    def initFromFile(self, fileReader) :
-        self.length = self.readFieldLength(fileReader)
-        fieldParser = SISFieldParser()
-        self.date = fieldParser.parseField(fileReader)
-        self.time = fieldParser.parseField(fileReader)
-    
-class SISUidField(SISField) :
-    def __init__(self) :
-        SISField.__init__(self)
-        self.uid = None
-        
-    def initFromFile(self, fileReader) :
-        self.length = self.readFieldLength(fileReader)
-        self.uid = fileReader.readBytesAsUint(4)
-        
-    def readableStr(self) :
-        return hex(self.uid)
-    
-class SISLanguageField(SISField) :
-    def __init__(self) :
-        SISField.__init__(self)
-        self.language = None
-        
-    def initFromFile(self, fileReader) :
-        self.length = self.readFieldLength(fileReader)
-        self.language = fileReader.readBytesAsUint(4)
-        
-    def readableStr(self) :
-        return str(self.language)
-    
-class SISContentsField(SISField) :
-    def __init__(self) :
-        SISField.__init__(self)
-        
-    def initFromFile(self, fileReader) :
-        self.length = self.readFieldLength(fileReader)
-        fieldParser = SISFieldParser()
-        field = fieldParser.parseField(fileReader)
-        while field :
-            if field.type == 3 : # compressed<conroller>
-                bufferReader = SISBufferReader(field.data)
-                field = fieldParser.parseField(bufferReader)
-            self.subFields.append(field)
-            field = fieldParser.parseField(fileReader)
-
-class SISControllerField(SISField) :
-    def __init__(self) :
-        SISField.__init__(self)
-        
-    def initFromFile(self, fileReader) :
-        self.length = self.readFieldLength(fileReader)
-        fieldParser = SISFieldParser()
-        bufferReader = SISBufferReader(fileReader.readPlainBytes(self.length))
-        field = fieldParser.parseField(bufferReader)
-        while field :
-            self.subFields.append(field)
-            field = fieldParser.parseField(bufferReader)
-
-class SISInfoField(SISField) :
-    def __init__(self) :
-        SISField.__init__(self)
-        self.installType = None
-        self.installFlags = None
-        
-    def initFromFile(self, fileReader) :
-        self.length = self.readFieldLength(fileReader)
-        fieldParser = SISFieldParser()
-        self.subFields.append(fieldParser.parseField(fileReader)) # UID
-        self.subFields.append(fieldParser.parseField(fileReader)) # Vendor name unique
-        self.subFields.append(fieldParser.parseField(fileReader)) # names
-        self.subFields.append(fieldParser.parseField(fileReader)) # vendor names
-        self.subFields.append(fieldParser.parseField(fileReader)) # version
-        self.subFields.append(fieldParser.parseField(fileReader)) # creation time
-        self.installType = fileReader.readBytesAsUint(1)
-        self.installFlags = fileReader.readBytesAsUint(1) 
-            
-class SISSupportedLanguagesField(SISField) :
-    def __init__(self) :
-        SISField.__init__(self)
-        
-    def initFromFile(self, fileReader) :
-        self.length = self.readFieldLength(fileReader)
-        fieldParser = SISFieldParser()
-        self.subFields.append(fieldParser.parseField(fileReader)) # languages
-        
-class SISSupportedOptionsField(SISField) :
-    def __init__(self) :
-        SISField.__init__(self)
-        
-    def initFromFile(self, fileReader) :
-        self.length = self.readFieldLength(fileReader)
-        fieldParser = SISFieldParser()
-        self.subFields.append(fieldParser.parseField(fileReader)) # options
-            
-class SISPrerequisitiesField(SISField) :
-    def __init__(self) :
-        SISField.__init__(self)
-        
-    def initFromFile(self, fileReader) :
-        self.length = self.readFieldLength(fileReader)
-        fieldParser = SISFieldParser()
-        self.subFields.append(fieldParser.parseField(fileReader)) # target devices
-        self.subFields.append(fieldParser.parseField(fileReader)) # dependencies
-        
-        
-class SISDependencyField(SISField) :
-    def __init__(self) :
-        SISField.__init__(self)
-        
-    def initFromFile(self, fileReader) :
-        self.length = self.readFieldLength(fileReader)
-        fieldParser = SISFieldParser()
-        self.subFields.append(fieldParser.parseField(fileReader)) # UID
-        field = fieldParser.parseField(fileReader)
-        # Version range field is optional
-        if field.type == VersionRangeField :
-            self.subFields.append(field) # version range
-            self.subFields.append(fieldParser.parseField(fileReader)) # dependency names
-        else :
-            self.subFields.append(field) # dependency names
-    
-class SISPropertiesField(SISField) :
-    def __init__(self) :
-        SISField.__init__(self)
-        
-    def initFromFile(self, fileReader) :
-        self.length = self.readFieldLength(fileReader)
-        fieldParser = SISFieldParser()
-        self.subFields.append(fieldParser.parseField(fileReader)) # properties
-    
-class SISPropertyField(SISField) :
-    def __init__(self) :
-        SISField.__init__(self)
-        self.key = None
-        self.value = None
-        
-    def initFromFile(self, fileReader) :
-        self.length = self.readFieldLength(fileReader)
-        self.key = fileReader.readBytesAsInt(4)
-        self.value = fileReader.readBytesAsInt(4)
-    
-# There is a type for this field, but there is no definition of the field contents
-class SISSignaturesField(SISUnsupportedField) :
-    pass
-    
-class SISCertificateChainField(SISField) :
-    def __init__(self) :
-        SISField.__init__(self)
-        
-    def initFromFile(self, fileReader) :
-        self.length = self.readFieldLength(fileReader)
-        fieldParser = SISFieldParser()
-        self.subFields.append(fieldParser.parseField(fileReader)) # certificate data
-    
-class SISLogoField(SISField) :
-    def __init__(self) :
-        SISField.__init__(self)
-
-    def initFromFile(self, fileReader) :
-        self.length = self.readFieldLength(fileReader)
-        fieldParser = SISFieldParser()
-        self.subFields.append(fieldParser.parseField(fileReader)) # logo file
-    
-class SISFileDescriptionField(SISField) :
-    def __init__(self) :
-        SISField.__init__(self)
-        self.operation = None
-        self.operationOptions = None
-        self.compressedLength = None
-        self.uncompressedLength = None
-        self.fileIndex = None
-        
-    def initFromFile(self, fileReader) :
-        self.length = self.readFieldLength(fileReader)
-        fieldParser = SISFieldParser()
-        
-        self.subFields.append(fieldParser.parseField(fileReader))
-        self.subFields.append(fieldParser.parseField(fileReader))
-        field = fieldParser.parseField(fileReader)
-        self.subFields.append(field)
-        if field.type == 41 : # read field was capabilities ==> there is one more field left
-            self.subFields.append(fieldParser.parseField(fileReader))
-        
-        self.operation = fileReader.readBytesAsUint(4)
-        self.operationOptions = fileReader.readBytesAsUint(4)
-        self.compressedLength = fileReader.readBytesAsUint(8)
-        self.uncompressedLength = fileReader.readBytesAsUint(8)
-        self.fileIndex = fileReader.readBytesAsUint(4)
-        
-    def readableStr(self) :
-        return "index: " + str(self.fileIndex)
-    
-class SISHashField(SISField) :
-    def __init__(self) :
-        SISField.__init__(self)
-        self.algorithm = None
-
-    def initFromFile(self, fileReader) :
-        self.length = self.readFieldLength(fileReader)
-        fieldParser = SISFieldParser()
-        self.algorithm = fileReader.readBytesAsUint(4)
-        self.subFields.append(fieldParser.parseField(fileReader)) # logo file
-    
-class SISIfField(SISField) :
-    def __init__(self) :
-        SISField.__init__(self)
-
-    def initFromFile(self, fileReader) :
-        self.length = self.readFieldLength(fileReader)
-        fieldParser = SISFieldParser()
-        self.subFields.append(fieldParser.parseField(fileReader)) # expression
-        self.subFields.append(fieldParser.parseField(fileReader)) # install block
-        self.subFields.append(fieldParser.parseField(fileReader)) # else ifs
-
-class SISElseIfField(SISField) :
-    def __init__(self) :
-        SISField.__init__(self)
-
-    def initFromFile(self, fileReader) :
-        self.length = self.readFieldLength(fileReader)
-        fieldParser = SISFieldParser()
-        self.subFields.append(fieldParser.parseField(fileReader)) # expression
-        self.subFields.append(fieldParser.parseField(fileReader)) # install block
-    
-class SISInstallBlockField(SISField) :
-    def __init__(self) :
-        SISField.__init__(self)
-        self.files = None
-        self.embeddedSISFiles = None
-        self.ifBlocks = None
-        
-    def initFromFile(self, fileReader) :
-        self.length = self.readFieldLength(fileReader)
-        fieldParser = SISFieldParser()
-        self.subFields.append(fieldParser.parseField(fileReader))
-        self.subFields.append(fieldParser.parseField(fileReader))
-        self.subFields.append(fieldParser.parseField(fileReader))
-
-class SISExpressionField(SISField) :
-    def __init__(self) :
-        SISField.__init__(self)
-        self.operator = None
-        self.integerValue = None
-        
-    def initFromFile(self, fileReader) :
-        self.length = self.readFieldLength(fileReader)
-        fieldParser = SISFieldParser()
-        self.operator = fileReader.readBytesAsUint(4)
-        self.integerValue = fileReader.readBytesAsInt(4)
-        
-        if self.operator == 10 or self.operator == 13 :
-            self.subFields.append(fieldParser.parseField(fileReader))
-        if self.operator == 1 or self.operator == 2 or self.operator == 3 or self.operator == 4 or self.operator == 5 or self.operator == 6 or self.operator == 7 or self.operator == 8 or self.operator == 11 or self.operator == 12 :
-            self.subFields.append(fieldParser.parseField(fileReader))
-        if not (self.operator == 13 or self.operator == 14 or self.operator == 15 or self.operator == 16 or self.operator == 10) :
-            self.subFields.append(fieldParser.parseField(fileReader))
-        
-class SISDataField(SISField) :
-    def __init__(self) :
-        SISField.__init__(self)
-        
-    def initFromFile(self, fileReader) :
-        self.length = self.readFieldLength(fileReader)
-        fieldParser = SISFieldParser()
-        self.subFields.append(fieldParser.parseField(fileReader)) # data units
-    
-class SISDataUnitField(SISField) :
-    def __init__(self) :
-        SISField.__init__(self)
-        
-    def initFromFile(self, fileReader) :
-        self.length = self.readFieldLength(fileReader)
-        fieldParser = SISFieldParser()
-        self.subFields.append(fieldParser.parseField(fileReader)) # file data
-    
-class SISFileDataField(SISField) :
-    def __init__(self) :
-        SISField.__init__(self)
-        
-    def initFromFile(self, fileReader) :
-        self.length = self.readFieldLength(fileReader)
-        fieldParser = SISFieldParser()
-        self.subFields.append(fieldParser.parseField(fileReader)) # raw file data
-    
-class SISSupportedOptionField(SISField) :
-    def __init__(self) :
-        SISField.__init__(self)
-        
-    def initFromFile(self, fileReader) :
-        self.length = self.readFieldLength(fileReader)
-        fieldParser = SISFieldParser()
-        self.subFields.append(fieldParser.parseField(fileReader)) # names
-    
-class SISControllerChecksumField(SISField) :
-    def __init__(self) :
-        SISField.__init__(self)
-        self.checksum = None
-        
-    def initFromFile(self, fileReader) :
-        self.length = self.readFieldLength(fileReader)
-        self.checksum = fileReader.readBytesAsUint(2)
-    
-class SISDataChecksumField(SISField) :
-    def __init__(self) :
-        SISField.__init__(self)
-        self.checksum = None
-        
-    def initFromFile(self, fileReader) :
-        self.length = self.readFieldLength(fileReader)
-        self.checksum = fileReader.readBytesAsUint(2)
-    
-class SISSignatureField(SISField) :
-    def __init__(self) :
-        SISField.__init__(self)
-        
-    def initFromFile(self, fileReader) :
-        self.length = self.readFieldLength(fileReader)
-        fieldParser = SISFieldParser()
-        self.subFields.append(fieldParser.parseField(fileReader)) # signature algorithm
-        self.subFields.append(fieldParser.parseField(fileReader)) # signature data
-    
-class SISBlobField(SISField) :
-    def __init__(self) :
-        SISField.__init__(self)
-        self.data = None
-        
-    def initFromFile(self, fileReader) :
-        self.length = self.readFieldLength(fileReader)
-        self.data = fileReader.readPlainBytes(self.length)
-    
-class SISSignatureAlgorithmField(SISField) :
-    def __init__(self) :
-        SISField.__init__(self)
-        
-    def initFromFile(self, fileReader) :
-        self.length = self.readFieldLength(fileReader)
-        fieldParser = SISFieldParser()
-        self.subFields.append(fieldParser.parseField(fileReader)) # algorithm identifier
-    
-class SISSignatureCertificateChainField(SISField) :
-    def __init__(self) :
-        SISField.__init__(self)
-        
-    def initFromFile(self, fileReader) :
-        self.length = self.readFieldLength(fileReader)
-        fieldParser = SISFieldParser()
-        self.subFields.append(fieldParser.parseField(fileReader)) # signatures
-        self.subFields.append(fieldParser.parseField(fileReader)) # certificate chain
-    
-class SISDataIndexField(SISField) :
-    def __init__(self) :
-        SISField.__init__(self)
-        self.dataIndex = None
-        
-    def initFromFile(self, fileReader) :
-        self.length = self.readFieldLength(fileReader)
-        self.dataIndex = fileReader.readBytesAsUint(4)
-
-class SISCapabilitiesField(SISField) :
-    def __init__(self) :
-        SISField.__init__(self)
-        self.capabilities = 0
-        self.readableCaps = []
-        
-    def initFromFile(self, fileReader) :
-        self.length = self.readFieldLength(fileReader)
-        self.capabilities = fileReader.readBytesAsUint(self.length)
-        
-        for i in range(20) :
-            if (self.capabilities >> i) & 0x01 :
-                self.readableCaps.append(CapabilityNames[i])
-                
-    def readableStr(self) :
-        return " ".join(self.readableCaps)
-    
-SISFieldTypes = { 
-    1 : SISStringField,
-    2 : SISArrayField,
-    3 : SISCompressedField,
-    4 : SISVersionField,
-    5 : SISVersionRangeField,
-    6 : SISDateField,
-    7 : SISTimeField,
-    8 : SISDateTimeField,
-    9 : SISUidField,
-    10 : SISUnsupportedField,
-    11 : SISLanguageField,
-    12 : SISContentsField,
-    13 : SISControllerField,
-    14 : SISInfoField,
-    15 : SISSupportedLanguagesField,
-    16 : SISSupportedOptionsField,
-    17 : SISPrerequisitiesField,
-    18 : SISDependencyField,
-    19 : SISPropertiesField,
-    20 : SISPropertyField,
-    21 : SISSignaturesField,
-    22 : SISCertificateChainField,
-    23 : SISLogoField,
-    24 : SISFileDescriptionField,
-    25 : SISHashField,
-    26 : SISIfField,
-    27 : SISElseIfField,
-    28 : SISInstallBlockField,
-    29 : SISExpressionField,
-    30 : SISDataField,
-    31 : SISDataUnitField,
-    32 : SISFileDataField,
-    33 : SISSupportedOptionField,
-    34 : SISControllerChecksumField,
-    35 : SISDataChecksumField,
-    36 : SISSignatureField,
-    37 : SISBlobField,
-    38 : SISSignatureAlgorithmField,
-    39 : SISSignatureCertificateChainField,
-    40 : SISDataIndexField,
-    41 : SISCapabilitiesField
-    }
-
-[StringField,
- ArrayField,
- CompressedField,
- VersionField,
- VersionRangeField,
- DateField,
- TimeField,
- DateTimeField,
- UidField,
- UnusedField,
- LanguageField,
- ContentsField,
- ControllerField,
- InfoField,
- SupportedLanguagesField,
- SupportedOptionsField,
- PrerequisitiesField,
- DependencyField,
- PropertiesField,
- PropertyField,
- SignaturesField,
- CertificateChainField,
- LogoField,
- FileDescriptionField,
- HashField,
- IfField,
- ElseIfField,
- InstallBlockField,
- ExpressionField,
- DataField,
- DataUnitField,
- FileDataField,
- SupportedOptionField,
- ControllerChecksumField,
- DataChecksumField,
- SignatureField,
- BlobField,
- SignatureAlgorithmField,
- SignatureCertificateChainField,
- DataIndexField,
- CapabilitiesField] = range(1, 42)
-     
-FieldNames = {
- 0 : "ROOT",
- StringField : "StringField",
- ArrayField : "ArrayField",
- CompressedField : "CompressedField",
- VersionField : "VersionField",
- VersionRangeField : "VersionRangeField",
- DateField : "DateField",
- TimeField : "TimeField",
- DateTimeField : "DateTimeField",
- UidField : "UidField",
- UnusedField : "UnusedField",
- LanguageField : "LanguageField",
- ContentsField : "ContentsField",
- ControllerField : "ControllerField",
- InfoField : "InfoField",
- SupportedLanguagesField : "SupportedLanguagesField",
- SupportedOptionsField : "SupportedOptionsField",
- PrerequisitiesField : "PrerequisitiesField",
- DependencyField : "DependencyField",
- PropertiesField : "PropertiesField",
- PropertyField : "PropertyField",
- SignaturesField : "SignaturesField",
- CertificateChainField : "CertificateChainField",
- LogoField : "LogoField",
- FileDescriptionField : "FileDescriptionField",
- HashField : "HashField",
- IfField : "IfField",
- ElseIfField : "ElseIfField",
- InstallBlockField : "InstallBlockField",
- ExpressionField : "ExpressionField",
- DataField : "DataField",
- DataUnitField : "DataUnitField",
- FileDataField : "FileDataField",
- SupportedOptionField : "SupportedOptionField",
- ControllerChecksumField : "ControllerChecksumField",
- DataChecksumField : "DataChecksumField",
- SignatureField : "SignatureField",
- BlobField : "BlobField",
- SignatureAlgorithmField : "SignatureAlgorithmField",
- SignatureCertificateChainField : "SignatureCertificateChainField",
- DataIndexField : "DataIndexField",
- CapabilitiesField : "CapabilitiesField"
-}
-     
-CapabilityNames = {
-    0 : "TCB",
-    1 : "CommDD",
-    2 : "PowerMgmt",
-    3 : "MultimediaDD",
-    4 : "ReadDeviceData",
-    5 : "WriteDeviceData",
-    6 : "DRM",
-    7 : "TrustedUI",
-    8 : "ProtServ",
-    9 : "DiskAdmin",
-    10 : "NetworkControl",
-    11 : "AllFiles",
-    12 : "SwEvent",
-    13 : "NetworkServices",
-    14 : "LocalServices",
-    15 : "ReadUserData",
-    16 : "WriteUserData",
-    17 : "Location",
-    18 : "SurroundingsDD",
-    19 : "UserEnvironment"
-    }
-
-InstallTypes = {
-    0: "SA",
-    1: "SP",
-    2: "PU",
-    3: "PA",
-    4: "PP"
-    }
-    
-class SISReader :
-    def __init__(self) :
-        self.bytesRead = 0
-        
-    def readUnsignedBytes(self, numBytes) :
-        buf = self.readPlainBytes(numBytes)
-        if len(buf) < numBytes :
-            return []
-            
-        format = ""
-        for i in range(numBytes) :
-            format += "B"
-        return struct.unpack(format, buf)
-    
-    def readSignedBytes(self, numBytes) :
-        buf = self.readPlainBytes(numBytes)
-        if len(buf) < numBytes :
-            return []
-            
-        format = ""
-        for i in range(numBytes) :
-            format += "b"
-        return struct.unpack(format, buf)
-        
-    def readBytesAsUint(self, numBytes) :
-        result = 0
-        bytes = self.readUnsignedBytes(numBytes)
-        if len(bytes) == numBytes :
-            for i in range(numBytes) :
-                result |= bytes[i] << (i * 8)
-        
-        return result
-        
-    def readBytesAsInt(self, numBytes) :
-        result = 0
-        bytes = self.readSignedBytes(numBytes)
-        if len(bytes) == numBytes :
-            for i in range(numBytes) :
-                result |= bytes[i] << (i * 8)
-        
-        return result
-        
-    def skipPadding(self) :
-        result = 0
-        if self.bytesRead % 4 != 0 :
-            paddingLength = 4 - self.bytesRead % 4
-            self.readPlainBytes(paddingLength)
-            result = paddingLength
-            
-        return result
-
-    def readPlainBytes(self, numBytes) :
-        pass
-
-class SISFileReader(SISReader) : 
-    def __init__(self, inStream) :
-        SISReader.__init__(self)
-        self.inStream = inStream
-        self.eof = False
-        self.bytesRead = 0
-
-    def readPlainBytes(self, numBytes) :
-        if self.eof :
-            return ""
-            
-        if numBytes == 0 :
-            return ""
-            
-        buf = ""
-        buf = self.inStream.read(numBytes)
-        if len(buf) < numBytes :
-            self.eof = True
-            return ""
-            
-        self.bytesRead += numBytes
-        
-        return buf
-
-    def isEof(self) :
-        return self.eof
-        
-class SISBufferReader(SISReader) :
-    def __init__(self, buffer) :
-        self.buffer = buffer
-        self.bytesRead = 0
-        
-    def readPlainBytes(self, numBytes) :
-        if self.isEof() :
-            return ""
-            
-        if numBytes == 0 :
-            return ""
-            
-        result = self.buffer[self.bytesRead:self.bytesRead + numBytes]
-            
-        self.bytesRead += numBytes
-        
-        return result
-            
-    def isEof(self) :
-        return self.bytesRead >= len(self.buffer)
-        
-class SISFieldParser :
-    def __init__(self) :
-        self.lastReadBytes = 0
-        
-    def parseField(self, fileReader) :
-        """Reads the next field from the fileReader stream and returns it"""
-        field = None
-        self.lastReadBytes = 0
-        type = fileReader.readBytesAsUint(4)
-        self.lastReadBytes += 4
-        if type != 0 :
-            field = SISFieldTypes[type]()
-            field.type = type
-            field.initFromFile(fileReader)
-            self.lastReadBytes += field.length + 4 # Field length + length field
-            self.lastReadBytes += fileReader.skipPadding()
-        return field
-
-class SISInfo(SISField) :
-    def __init__(self) :
-        SISField.__init__(self)
-        self.fin = None
-        self.fileHeader = SISFileHeader()
-        
-    def parse(self, filename) :
-        fin = open(filename, 'rb')
-        fileReader = SISFileReader(fin)
-        self.parseHeader(fileReader)
-        self.parseSISFields(fileReader)
-        
-    def parseHeader(self, fileReader) :
-        self.fileHeader.uid1 = fileReader.readBytesAsUint(4)
-        self.fileHeader.uid2 = fileReader.readBytesAsUint(4)
-        self.fileHeader.uid3 = fileReader.readBytesAsUint(4)
-        self.fileHeader.uidChecksum = fileReader.readBytesAsUint(4)
-        
-    def parseSISFields(self, fileReader) :
-        parser = SISFieldParser()
-        while not fileReader.isEof() :
-            self.subFields.append(parser.parseField(fileReader))
-
-class Handler :
-    def __init__(self) :
-        self.files = []
-        self.fileDatas = []
-        self.signatureCertificateChains = []
-        
-    def handleField(self, field, depth) :
-        if field.type == FileDescriptionField :
-            self.files.append(field)
-        elif field.type == FileDataField :
-            self.fileDatas.append(field)
-        elif field.type == SignatureCertificateChainField  :
-            self.signatureCertificateChains.append(field)
-
-    def execute(self, options) :
-        for f in self.files :
-            if options.info :
-                buf = "   " + f.findField(StringField)[0].readableStr()
-                caps = f.findField(CapabilitiesField)[0]
-                if caps :
-                    buf += " [" + " ".join(f.findField(CapabilitiesField)[0].readableCaps) + "]"
-                print buf
-            if options.extract :
-                parts = f.findField(StringField)[0].readableStr().split("\\")
-                if len(parts[len(parts) - 1]) > 0 :
-                    path = os.path.abspath(options.extract)
-                    path += os.sep + os.sep.join(parts[1: - 1])
-                    if not os.path.exists(path) :
-                        os.makedirs(path)
-                    newFile = file(path + os.sep + parts[len(parts) - 1], "wb")
-                    newFile.write(self.fileDatas[f.fileIndex].findField(CompressedField)[0].data)
-                    newFile.close()
-        for s in self.signatureCertificateChains :
-            if options.certificate:
-                buf = s.findField(CertificateChainField)[0].subFields[0].data
-                print "Certificate chain:"
-                i = 1
-                while len(buf) > 0 :
-                    print "   Certificate " + str(i) + ":"
-                    i += 1
-                    decoded = decoder.decode(buf)
-                    cer = CertificateInfo()
-                    cer.parse(decoded[0])
-                    readableStr = cer.readableStr()
-                    print "      " + "\n      ".join(readableStr.split('\n'))
-                    buf = decoded[1]
-            
-class ContentPrinter :
-    def __init__(self) :
-        pass
-        
-    def handleField(self, field, depth) :
-        buf = ""
-        for i in range(depth) :
-            buf += "  "
-        buf += FieldNames[field.type] + " "
-        if len(field.readableStr()) > 0 :
-            buf += field.readableStr()
-        print buf
-
-class IADHandler :
-    def __init__(self) :
-        self.packageVersion = (0, 0, 0)
-        self.packageUid = 0
-        self.vendorName = ""
-        self.packageNames = []
-        self.packageNamesFields = []
-        self.languages = []
-        self.platformDependencies = []
-        self.packageDependencies = []
-        self.installType = 0
-        self.installFlags = 0
-        
-    def handleDependency(self, field) :
-        dep = [0, - 1, - 1, - 1, - 1, - 1, - 1]
-        dep[0] = field.subFields[0].uid
-        if field.subFields[1] and field.subFields[1].type == VersionRangeField :
-            r = field.subFields[1]
-            if r.fromVersion != None :
-                dep[1] = r.fromVersion.version[0]
-                dep[2] = r.fromVersion.version[1]
-                dep[3] = r.fromVersion.version[2]
-            if r.toVersion != None :
-                dep[4] = r.toVersion.version[0]
-                dep[5] = r.toVersion.version[1]
-                dep[6] = r.toVersion.version[2]
-        return dep
-        
-    def handleField(self, field, depth) :
-        if field.type == InfoField :
-            self.packageVersion = field.subFields[4].version
-            self.packageVersionField = field.subFields[4]
-            self.packageUid = field.subFields[0].uid
-            self.packageUidField = field.subFields[0]
-            self.vendorName = field.subFields[1].data
-            self.vendorNameField = field.subFields[1]
-            self.installType = field.installType
-            self.installFlags = field.installFlags
-            for name in field.subFields[2].subFields :
-                self.packageNames.append(name.data)
-        elif field.type == LanguageField :
-            self.languages.append(field.language)
-        elif field.type == PrerequisitiesField :
-            for f in field.subFields[0].subFields :
-                dependency = self.handleDependency(f)
-                self.platformDependencies.append(dependency)
-            for f in field.subFields[1].subFields :
-                dependency = self.handleDependency(f)
-                self.packageDependencies.append(dependency)
-        
-    def getInfo (self, fileName) :
-        sisInfo = SISInfo()
-        sisInfo.parse(fileName)
-        handler = IADHandler()
-        sisInfo.traverse(handler)
-        info = "<sisinfo>\n" \
-             + "  <uid>" + hex(handler.packageUid) + "</uid>\n" \
-             + "  <vendor>" + handler.vendorName + "</vendor>\n" \
-             + "  <version>" \
-             + "<major>" + repr(handler.packageVersion[0]) + "</major>" \
-             + "<minor>" + repr(handler.packageVersion[1]) + "</minor>" \
-             + "<build>" + repr(handler.packageVersion[2]) + "</build>" \
-             + "</version>\n" \
-             + "  <type>" + InstallTypes[self.installType] + "</type>\n"
-        for num, name in enumerate(handler.packageNames) :
-            info += "  <name language='" + repr(handler.languages[num]) + "'>" + name + "</name>\n"
-        for language in handler.languages :
-            info += "  <language>" + repr(language) + "</language>\n"
-        for platDep in handler.platformDependencies :
-            info += "  <platform_dependency><uid>" + hex(platDep[0]) + "</uid>\n"
-            info += "    <from>" \
-                 + "<major>" + repr(platDep[1]) + "</major>" \
-                 + "<minor>" + repr(platDep[2]) + "</minor>"
-#           info += "<build>" + repr(platDep[3]) + "</build>"
-            info += "</from>\n    <to>" \
-                 + "<major>" + repr(platDep[4]) + "</major>" \
-                 + "<minor>" + repr(platDep[5]) + "</minor>"
-#           info += "<build>" + repr(platDep[6]) + "</build>"
-            info += "</to>\n" \
-             + "  </platform_dependency>\n"
-        for packageDep in handler.packageDependencies :
-            info += "  <package_dependency><uid>" + hex(packageDep[0]) + "</uid>\n"
-            info += "    <from>" \
-                 + "<major>" + repr(packageDep[1]) + "</major>" \
-                 + "<minor>" + repr(packageDep[2]) + "</minor>"
-#           info += "<build>" + repr(packageDep[3]) + "</build>"
-            info += "</from>\n    <to>" \
-                 + "<major>" + repr(packageDep[4]) + "</major>" \
-                 + "<minor>" + repr(packageDep[5]) + "</minor>"
-#           info += "<build>" + repr(packageDep[6]) + "</build>"
-            info += "</to>\n" \
-                 + "  </package_dependency>\n"
-        info += "</sisinfo>\n"
-        return info
-
-if __name__ == "__main__" :
-    handler = IADHandler()
-    print (handler.getInfo (sys.argv[1]))
--- a/buildframework/helium/tools/iad/packageiad.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,134 +0,0 @@
-#============================================================================ 
-#Name        : packageiad.py 
-#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:
-#===============================================================================
-
-""" packageIAD.py module """
-
-import os
-import sys
-import xml.dom.minidom
-import iadinfo
-import zipfile
-import encodings.utf_8
-
-
-class IADPackager :
-    """ package IAD class "
-    """
-    
-    def __init__(self) :
-        """ class init method """
-        self.hasStub = False
-
-    def getBldDirs(self, layer, bldDirs) :
-        """ get the list of build directories """
-        units = layer.getElementsByTagName ("unit")
-        for unit in units :
-            dir = unit.getAttribute ("bldFile").rstrip ('\\/')
-            i = dir.rfind ("\\")
-            if i == - 1 :
-                i = dir.rfind ("/")
-            bldDirs.append (dir[:i + 1])
-    
-    def getLayer(self, configuration, layers, bldDirs) :
-        """ get each layer info """
-        layerRef = configuration.getElementsByTagName ("layerRef")[0].getAttribute ("layerName")
-        for layer in layers :
-            if layer.getAttribute ("name") == layerRef :
-                self.getBldDirs (layer, bldDirs)
-    
-    def createInfoFiles(self, sisInfo) :
-        """ create the INfo files depends.xml etc."""
-        depends = xml.dom.minidom.parse ("depends.xml")
-        info = xml.dom.minidom.parseString (sisInfo)
-        
-        infoFile = file ("sisinfo.xml", "w")
-        packageDeps = info.getElementsByTagName("package_dependency")
-        for packageDep in packageDeps :
-            pack = depends.createElement ("package")
-            depends.childNodes[1].appendChild (pack)
-            for child in packageDep.childNodes :
-                pack.appendChild (child)
-        infoFile.write (info.toxml ())
-        infoFile.close()
-        depFile = file ("depends.xml", "w")
-        depFile.write (depends.toxml ())
-        depFile.close()
-    
-    def createSis(self, packageDir, packageName, makesis) :
-        """ create the .sis file """
-        sisReader = iadinfo.IADHandler()
-        os.chdir (packageDir)
-        sisPackage = packageName + ".sis"
-        stubPackage = packageName + "_stub.sis"
-        print "Creating", sisPackage
-        cmd = makesis + " package.pkg " + sisPackage
-        os.system (cmd)
-        self.createInfoFiles (sisReader.getInfo(sisPackage))
-        if os.path.exists(stubPackage) :
-            print "Creating stub SIS file", stubPackage
-            self.hasStub = True
-            cmd = makesis + " -s package.pkg " + stubPackage
-            os.system (cmd)
-        
-    def createPackage(self, topDir, packageName) :
-        """ create the Data Package """
-        print "Creating package", packageName
-        os.chdir (topDir)
-        zipFile = packageName + ".zip"
-        sisFile = packageName + '/' + packageName + ".sis"
-        infoFile = packageName + "/sisinfo.xml"
-        depFile = packageName + "/depends.xml"
-        zip = zipfile.ZipFile (zipFile, "w")
-        zip.write (sisFile, sisFile.encode ("utf-8"))
-        zip.write (infoFile, infoFile.encode ("utf-8"))
-        zip.write (depFile, depFile.encode ("utf-8"))
-        if self.hasStub :
-            stubFile = packageName + '/' + packageName + "_stub.sis"
-            zip.write (stubFile, stubFile.encode ("utf-8"))
-        zip.close()
-        
-    
-    def processSisDir(self, sisDir, makesis) :
-        """ handle the directory used to create the .sis file """
-        for root, dirs, _ in os.walk (sisDir):
-            for name in dirs :
-                self.createSis (os.path.join (root, name), name, makesis)
-                self.createPackage (root, name)
-
-def main(sysdefFile, sysdefconfigs, bldDrive):
-    """ main to called when imported """
-    makesis = bldDrive + "\\epoc32\\tools\\makesis.exe"
-    
-    sysdef = xml.dom.minidom.parse (sysdefFile)
-    configurations = sysdef.getElementsByTagName ("configuration")
-    layers = sysdef.getElementsByTagName ("layer")
-    bldDirs = []
-    
-    packager = IADPackager()
-    
-    for configuration in configurations :
-        if configuration.getAttribute ("name") == sysdefconfigs :
-            packager.getLayer (configuration, layers, bldDirs)
-     
-    
-    for bldDir in bldDirs :
-        packager.processSisDir (bldDrive + bldDir + "sis\\", makesis)
-
-if __name__ == "__main__":
-    main(sys.argv[1], sys.argv[2], sys.argv[3])
--- a/buildframework/helium/tools/integration/integration.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/integration/integration.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -20,12 +20,11 @@
 
 ============================================================================
 -->
+<!--* @package integration -->
 <project name="integration" xmlns:hlm="http://www.nokia.com/helium">
     <description>
         Targets related to integration
     </description>
-    <!-- include overlay validation/merge tools -->    
-    <import file="validate_overlay/validate_overlay.ant.xml" />
 
     <import file="patching.ant.xml" />
 
--- a/buildframework/helium/tools/integration/patching.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/integration/patching.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -20,6 +20,7 @@
 
 ============================================================================
 -->
+<!--* @package integration -->
 <project name="patching">
     <description>Patching of S60 files.</description>
     
--- a/buildframework/helium/tools/integration/validate_overlay/generate_vo_conf_ccmgetinput-new.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-#============================================================================ 
-#Name        : generate_vo_conf_ccmgetinput-new.py 
-#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:
-#===============================================================================
-
-""" Helper to convert delivery.xml(new format) and prep.xml to VirtualBuildArea
-    configuration file.
-"""
-import vbaconf
-import sys    
-
-deliveryinput = sys.argv[1]
-prepinput = sys.argv[2]
-ofilename = None
-if len(sys.argv)==4:
-    ofilename = sys.argv[3]
-
-conv = vbaconf.ConfigConverterNewDelivery(deliveryinput, prepinput)
-doc = conv.generate_config()
-
-# Generating the output
-if ofilename != None:
-    file_object = open(ofilename, "w")
-    file_object.write(doc.toprettyxml())
-    file_object.close()
-print doc.toprettyxml()
-
-
--- a/buildframework/helium/tools/integration/validate_overlay/generate_vo_conf_ccmgetinput.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-#============================================================================ 
-#Name        : generate_vo_conf_ccmgetinput.py 
-#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:
-#===============================================================================
-
-""" Helper to convert delivery.xml and prep.xml to VirtualBuildArea
-    configuration file.
-"""
-import vbaconf
-import sys    
-
-deliveryinput = sys.argv[1]
-prepinput = sys.argv[2]
-ofilename = None
-if len(sys.argv)==4:
-    ofilename = sys.argv[3]
-
-conv = vbaconf.ConfigConverter(deliveryinput, prepinput)
-doc = conv.generate_config()
-
-# Generating the output
-if ofilename != None:
-    file_object = open(ofilename, "w")
-    file_object.write(doc.toprettyxml())
-    file_object.close()
-print doc.toprettyxml()
-
-
--- a/buildframework/helium/tools/integration/validate_overlay/validate_overlay.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,109 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : ivalidate_overlay.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="integration.validate-overlay" xmlns:hlm="http://www.nokia.com/helium">
-    <description>Validation and merging of overlays to resolve conflicts.</description>
-
-    <!-- Validates the overlay and outputs a log file listing any files that need to be merged
-    because a more recent version is present in Synergy. -->
-    <target name="validate-overlay" depends="get-ccm-password,ccm-prepare-input,prep-prepare-input">
-        <fail unless="prep.config.file"/>
-        
-        <delete file="${build.cache.dir}\validate_overlay.html" failonerror="false"/>
-        <delete file="${build.cache.dir}\validate_overlay.xml" failonerror="false"/>
-        <delete file="${build.cache.dir}\validate_overlay.input.xml" failonerror="false"/>
-
-        <!-- Analysing and creating the Virtual Build area configuration -->
-        <preset.exec executable="python" dir="${build.cache.dir}">        
-            <arg file="${helium.dir}/tools/integration/validate_overlay/generate_vo_conf_${ccmgetinput}.py"/>
-            <arg line="${prep.delivery.conf.parsed}"/>
-            <arg line="${prep.config.file.parsed}"/>                         
-            <arg line="${build.cache.dir}/validate_overlay.input.xml"/>
-        </preset.exec>
-        <hlm:python>
-import sys
-import validateoverlay
-import ant
-import traceback
-import ccmutil
-session = None
-try:
-    session = ccmutil.get_session(ant.get_property(r'${ccm.database}'), ant.get_property(r'${ccm.user.login}'), ant.get_property(r'${ccm.user.password}'), ant.get_property(r'${ccm.engine.host}'), ant.get_property(r'${ccm.database.path}'))
-    if session is not None:
-        objects = validateoverlay.get_additional_delivery_objects(session, ant.get_property(r'${prep.delivery.conf.parsed}'))
-        #overlay validation
-        validateoverlay.validate(session, ant.get_property(r'${build.cache.dir}/validate_overlay.input.xml'), ant.get_property(r'${common.overlay.dir}'), True, False, None, objects, r'${build.cache.dir}\validate_overlay')
-        session.close()
-except Exception, e:
-    print "ERROR: %s" % e
-    print traceback.format_exc()
-    session.close()
-    sys.exit(-1)
-sys.exit(0)
-        </hlm:python>
-        <preset.exec executable="cmd.exe">
-            <!--<arg line="/c ${env.TEMP}\validate_overlay.html"/>-->
-            <arg line="/c ${build.cache.dir}\validate_overlay.html"/>            
-        </preset.exec>        
-    </target>
-    
-    
-    <!-- Creates a task containing merged files. This must be manually reviewed and submitted. -->
-    <target name="merge-overlay" depends="get-ccm-password,ccm-prepare-input,prep-prepare-input">
-        <fail unless="prep.config.file"/>
-        
-        <delete file="${build.cache.dir}\validate_overlay.html" failonerror="false"/>        
-        <delete file="${build.cache.dir}\validate_overlay.xml" failonerror="false"/>        
-        <delete file="${build.cache.dir}\validate_overlay.input.xml" failonerror="false"/>        
-    
-        <!-- Analysing and creating the Virtual Build area configuration -->
-        <preset.exec executable="python" dir="${build.cache.dir}">        
-            <arg file="${helium.dir}/tools/integration/validate_overlay/generate_vo_conf_${ccmgetinput}.py"/>
-            <arg line="${prep.delivery.conf.parsed}"/>
-            <arg line="${prep.config.file.parsed}"/>                         
-            <arg line="${build.cache.dir}/validate_overlay.input.xml"/>                     
-        </preset.exec>
-        <hlm:python>
-import sys
-import validateoverlay
-import ant
-import traceback
-import ccmutil
-session = None
-try:
-    session = ccmutil.get_session(ant.get_property(r'${ccm.database}'), ant.get_property(r'${ccm.user.login}'), ant.get_property(r'${ccm.user.password}'), ant.get_property(r'${ccm.engine.host}'), ant.get_property(r'${ccm.database.path}'))
-    if session is not None:
-        objects = validateoverlay.get_additional_delivery_objects(session, ant.get_property(r'${prep.delivery.conf.parsed}'))
-        # overlay validation    
-        validateoverlay.validate(session, ant.get_property(r'${build.cache.dir}/validate_overlay.input.xml'), ant.get_property(r'${common.overlay.dir}'), True, True, 'mc/integration', objects, r'${build.cache.dir}\validate_overlay')    
-        session.close()
-except Exception, e:
-    print "ERROR: %s" % e
-    print traceback.format_exc()
-    sys.exit(-1)
-sys.exit(0)
-        </hlm:python>
-        <preset.exec executable="cmd.exe">            
-            <arg line="/c ${build.cache.dir}\validate_overlay.html"/>            
-        </preset.exec>        
-    </target>
-</project>
--- a/buildframework/helium/tools/localisation/create_language_pack.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,121 +0,0 @@
-#============================================================================ 
-#Name        : create_language_pack.py 
-#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:
-#===============================================================================
-
-""" MC Localisation Framework
-"""
-import configuration
-import localisation
-import bsf
-import codecs
-import sys
-import escapeddict
-
-class VariantIBYBuilder:
-    """  Create variant_xx.iby
-    """
-    
-    def __init__(self, name, config):
-        self._name = name
-        self._config = escapeddict.EscapedDict(config)
-    
-    def build(self):        
-        bsfs = bsf.read_all()
-        if not bsfs.has_key(self._name):
-            raise Exception("Product not defined, could not find %s.bsf" % self._name)
-        filename = "/epoc32/rom/%s/variant_%s.iby" % (bsfs[self._name].get_path(), self._config['languagepack.id'])
-        print "Generating %s" % filename
-        output = open(filename, "w+")
-        output.write("// DO NOT EDIT - FILE AUTOMATICALLY GENERATED\n")
-        output.write("// MC variant configuration tool (C) Nokia - 2007\n\n")
-        
-        output.write("#ifndef VARIANT_%s_IBY\n" % self._config['languagepack.id'])
-        output.write("#define VARIANT_%s_IBY\n" % self._config['languagepack.id'])
-        
-        for lid in str(self._config['languages']).split(' '):
-            if lid != '':
-                output.write("#include <locales_%s.iby>\n" % lid)
-            
-        output.write("#endif // VARIANT_%s_IBY\n" % self._config['languagepack.id'])
-        output.close()                
-        
-class LanguageTxtBuilder:
-    """  Creates product languages.productname.vid.txt
-    """
-
-    def __init__(self, name, config):
-        self._name = name
-        self._config = escapeddict.EscapedDict(config)
-    
-    def build(self):
-        filename = "/epoc32/data/z/Resource/BootData/languages.%s.%s.txt" % (self._name, self._config['languagepack.id'])
-        print "Generating %s" % filename
-        output = open( filename, "w+b")        
-        output.write(codecs.BOM_UTF16_LE)
-        default = self._config['default']
-        for lid in str(self._config['languages']).split(' '):
-            if lid != '':
-                line = "%s\n" % lid
-                if lid == default:
-                    line = "%s,d\n" % lid
-                output.write(line.encode("utf-16-le"))
-        output.close()
-
-class LangTxtBuilder:
-    """  Creates product lang.productname.vid.txt
-    """
-
-    def __init__(self, name, config):
-        self._name = name
-        self._config = escapeddict.EscapedDict(config)
-    
-    def build(self):        
-        filename = "/epoc32/data/Z/Resource/versions/lang.%s.%s.txt" % (self._name, self._config['languagepack.id'])
-        print "Generating %s" % filename
-        output = open(filename, "w+b")
-        output.write( codecs.BOM_UTF16_LE )
-        output.write(self._config['languagepack.id'].encode("utf-16-le"))
-        output.close()
-
-def main():
-    """ Main function create the whole language pack files.
-        variant_xx.iby
-        languages.pn.vid.iby
-        lang.pn.vid.iby
-    """
-    product = sys.argv[1]
-    configfile = sys.argv[2]
-    
-    
-    try:
-        builder = configuration.NestedConfigurationBuilder(open(configfile, 'r'))
-        config_set = builder.getConfiguration()
-    
-        for variant in config_set.getConfigurations(product):
-            if variant.type == "languagepack":
-                VariantIBYBuilder(product, variant).build()
-                LanguageTxtBuilder(product, variant).build()
-                LangTxtBuilder(product, variant).build()
-    except Exception, exc:
-        print "ERROR: %s" % exc
-        sys.exit(-1)
-    
-    sys.exit(0)
-
-if __name__ == "__main__":
-    main()
--- a/buildframework/helium/tools/localisation/create_variant_cenrep.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,75 +0,0 @@
-#============================================================================ 
-#Name        : create_variant_cenrep.py 
-#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:
-#===============================================================================
-
-""" MC Localisation Framework
-    Generate cenrep for all declared variants
-"""
-import configuration
-import bsf
-import localisation
-import sys
-import os
-import shutil
-import re
-
-def main():
-    """ Main function, run customisation tools on all found variants.
-    """
-    if len(sys.argv)<3:
-        print("create_variant_cenrep.py productname configfile.xml type id")
-        sys.exit(-1)
-    
-    product = sys.argv[1]
-    configfile = sys.argv[2]
-    vtype = sys.argv[3]
-    vid = None
-    if len(sys.argv)>4:
-        vid = sys.argv[4]
-
-    try:
-        builder = configuration.NestedConfigurationBuilder(open(configfile, 'r'))
-        config_set = builder.getConfiguration()    
-    
-        bsfs = bsf.read_all()
-        if not bsfs.has_key(product):
-            raise Exception("Product not defined, could not find %s.bsf" % product)
-    
-        for variant in config_set.getConfigurations(product):
-            if variant.type != vtype:
-                continue
-            if vid != None and vid != variant["%s.id" % variant.type]:
-                continue
-            vpath = localisation.find_variant_path(variant, "%s.id" % variant.type)
-            if vpath is not None and os.path.exists(os.path.join(vpath, 'data')):
-                print "Generating Cenrep for %s variant %s in %s" % (variant.type, variant["%s.id" % variant.type], vpath)
-                os.system("perl \\tools\\cenrep_scripts\\CTCenrep.pl -p %s -output %s" % (os.path.basename(vpath), vpath))
-                # os.system("set VARIANTFOLDER=%s & \\s60\\tools\\CustomizationTool\\CustomizationTool.exe generate -%s -%s" % (os.path.dirname(vpath), os.path.splitdrive(os.getcwd())[0], os.path.basename(vpath)))
-                for filename in os.listdir(os.path.join(vpath, 'data')):
-                    result = re.match(r"(.+)_%s.iby" % variant["%s.id" % variant.type], filename)
-                    if result != None:                        
-                        shutil.copyfile(os.path.join(vpath, 'data', filename), os.path.join(vpath, "%s.iby" % result.groups(1)))
-            else:
-                print "Could not find %s variant %s variation path" % (variant.type, variant["%s.id" % variant.type])
-    except IOError, exc:
-        print "ERROR: %s" % exc
-        sys.exit(-1)
-    sys.exit(0)
-
-if __name__ == "__main__":
-    main()
--- a/buildframework/helium/tools/localisation/createlocales.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-#============================================================================ 
-#Name        : createlocales.py 
-#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:
-#===============================================================================
-
-""" This script generate the locales_xx.iby files. """
-import localisation
-import sys
-
-def main():
-    """ Main function. """
-    product = sys.argv[1]
-    lid = sys.argv[2]
-    extra_args = ""
-    if len(sys.argv)>4:
-        extra_args = " ".join(sys.argv[3:])
-    try:
-        extra_args = r'-include ..\include\oem\feature_settings.hrh -I. -I../../epoc32/rom/include ' + extra_args
-        localisation.create_locales_iby(product, lid, [], '', extra_args)
-    except Exception, exp:
-        print exp
-        sys.exit(-1)
-    sys.exit(0)
-
-if __name__ == "__main__":
-    main()
--- a/buildframework/helium/tools/localisation/deprecated.txt	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-List of deprecated/unsupported scripts:
- - get_languagepack_id.py (old process)
- - generate_tutorial_content_conf.py (need a requirement for that)
- - create_version.py (migrated it as an iMaker feature)
- - createlocales.py make template should now use iMaker feature to generate the languagepack
- - create_version.py make template should now use iMaker feature that handle version string generation
- 
\ No newline at end of file
--- a/buildframework/helium/tools/localisation/get_product_path.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-#============================================================================ 
-#Name        : get_product_path.py 
-#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:
-#===============================================================================
-
-""" return path for product from bsf data
-"""
-import bsf
-import sys
-
-def main():
-    """ Main
-    """
-    product = sys.argv[1]
-    
-    bsfs = bsf.read_all()
-    print bsfs[product].get_path()
-    sys.exit(0)
-
-if __name__ == "__main__":
-    main()
\ No newline at end of file
--- a/buildframework/helium/tools/localisation/get_product_platform.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-#============================================================================ 
-#Name        : get_product_platform.py 
-#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:
-#===============================================================================
-
-""" return path for product from bsf data
-"""
-import bsf
-import sys
-
-def main():
-    """ Main
-    """
-    product = sys.argv[1]
-    
-    bsfs = bsf.read_all()
-    parents = bsfs[product].get_path_as_array()
-    if len(parents) > 1:
-        print parents[1]
-        sys.exit(0) 
-    sys.exit(-1)
-
-if __name__ == "__main__":
-    main()
\ No newline at end of file
--- a/buildframework/helium/tools/localisation/get_variant_dirs.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,79 +0,0 @@
-#============================================================================ 
-#Name        : get_variant_dirs.py 
-#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:
-#===============================================================================
-
-""" Script that return the  list of variant directory to include. """
-import configuration
-import bsf
-import localisation
-import codecs
-import sys
-import os
-import re
-import shutil
-
-def get_hierarchy(config):
-    """ return the variant hierarchy. """
-    result = [config]  
-    while (config.parent != None):
-        if (config.parent.parent != None):
-            result.append(config.parent)
-        config = config.parent
-    return result
-
-def clean_array(array):
-    """ Remove all None element from an array. """
-    result = []
-    for item in array:
-        if item != None:
-            result.append(item)
-    return result
-
-def main():
-    """ Main function. """
-    configfile = sys.argv[1]
-    product = sys.argv[2]
-    vid = sys.argv[3]
-    vtype = sys.argv[4]
-    vkey = sys.argv[5]
-    try:
-        builder = configuration.NestedConfigurationBuilder(open(configfile, 'r'))
-        config_set = builder.getConfiguration()
-    
-        bsfs = bsf.read_all()
-        if not bsfs.has_key(product):
-            raise Exception("Product not defined, could not find %s.bsf" % product)
-    
-        for variant in config_set.getConfigurations(product):
-            if not (variant.type == vtype):
-                continue
-            if not variant.has_key(vkey):
-                continue
-            if (vid != variant[vkey]):
-                continue
-            print " ".join(clean_array(map(lambda x:localisation.find_variant_path(x, "%s.id" % x.type), get_hierarchy(variant))))
-            sys.exit(0)
-           
-    except IOError, exc:
-        print "ERROR: %s" % exc
-        sys.exit(-1)
-    
-    sys.exit(0)
-
-if __name__ == "__main__":
-    main()
--- a/buildframework/helium/tools/localisation/getalllanguages.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,24 +0,0 @@
-#============================================================================ 
-#Name        : getalllanguages.py 
-#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:
-#===============================================================================
-
-""" print all available language for a specific variation 
-"""
-import localisation
-import sys
-print " ".join(localisation.get_languages_for_variation(sys.argv[1], sys.argv[2]))
--- a/buildframework/helium/tools/localisation/getallvariantion.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,24 +0,0 @@
-#============================================================================ 
-#Name        : getallvariantion.py 
-#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:
-#===============================================================================
-
-""" get all available variation
-"""
-import localisation
-import sys
-print ",".join(localisation.get_all_variations(sys.argv[1]))
--- a/buildframework/helium/tools/localisation/helps/generate_iby_32.mk	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-#
-# 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: 
-#
-#
-# Configuration side
-#
-##
-# Defines the list of product variants we should generate the IBY for.
-# productname_IBYFILE must be defined
-# productname_TAG could be defined
-PRODUCT_VARIANTS?=
-##
-# Defines where to export the help delivery, could be empty if referencing from the
-# project location
-TARGET_PATH?=
-
-#
-# Internal implementation
-#
-define BUILDER
-@echo Generating $1 $(if $2,destination is $2) $(if $3,using tag $3)  $(if $4,excludes [$4])
-@echo -- Running python $(HELIUM_HOME)/tools/localisation/helps/generate_iby_32.py --output=$1 $(if $2,--rootdest=$2) $(if $3,--tag=$3) $(foreach exc,$4,--exclude=$(exc))
-python $(HELIUM_HOME)/tools/localisation/helps/generate_iby_32.py --output=$1 $(if $2,--rootdest=$2) $(if $3,--tag=$3) $(foreach exc,$4,--exclude=$(exc))
-
-endef
-
-BLD:
-	@echo Helium home: $(HELIUM_HOME)
-	$(if $(TARGET_PATH),perl -MExtUtils::Command -e mkpath $(TARGET_PATH))
-	$(if $(TARGET_PATH),xcopy  /E /R /Y /F ..\data $(TARGET_PATH))
-	$(foreach product,$(PRODUCT_VARIANTS),$(call BUILDER,$($(product)_IBYFILE),$(TARGET_PATH),$($(product)_TAG),$($(product)_EXCLUDES)))
-
-RELEASABLES:
-	@echo $(foreach product,$(PRODUCT_VARIANTS),$($(product)_IBYFILE))	
-
-SAVESPACE: BLD
-
-LIB: do_nothing
-MAKMAKE: do_nothing
-FINAL: do_nothing
-FREEZE: do_nothing
-RESOURCE: do_nothing
-
-
-do_nothing:
-	@echo Nothing to do
\ No newline at end of file
--- a/buildframework/helium/tools/localisation/helps/generate_iby_32.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,180 +0,0 @@
-#============================================================================ 
-#Name        : generate_iby_32.py 
-#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:
-#===============================================================================
-
-""" Helper script to generate S60 3.2 help IBY.
-"""
-import os
-import sys
-import re
-import optparse
-import logging
-import pathaddition.match
-
-logging.basicConfig()
-logger = logging.getLogger('integration.help32')
-logger.setLevel(logging.INFO)
-
-# Adding hiddenness testing function.
-try:
-    import win32api
-    import win32con
-    USE_WIN32 = 1
-except:
-    USE_WIN32 = 0
-
-def is_hidden(filename):
-    """ Return True if a file is hidden, False otherwise. """
-    if USE_WIN32:
-        try:            
-            if bool(win32api.GetFileAttributes(filename) & win32con.FILE_ATTRIBUTE_HIDDEN):
-                return True
-        except Exception, e:
-            logger.error(e)    
-    else:
-        if filename[0] == '.':
-            return True
-    return False
-
-class Basket:
-    """
-        This class represents a basket which will contains the list of files
-        that will be added the the IBY.
-    """
-    def __init__(self, rootdir, tag='', excludes=None):
-        if excludes is None:
-            excludes = []
-        self.rootdir = rootdir
-        self.common = []
-        self.language = {}
-        self.tag = tag
-        self.excludes = excludes
-        self.content_scanner(rootdir)
-
-    def add_content(self, filename, language):
-        """ Add a file to the basket. """
-        if language == None:
-            self.common.append(filename)            
-        else:
-            if not self.language.has_key(language):
-                self.language[language] = []
-            self.language[language].append(filename)            
-
-    def content_scanner(self, rootdir, path="", language=None):
-        """ Parse the help delivery to get content. """
-        for name in os.listdir(rootdir):
-            abspath = os.path.abspath(os.path.join(rootdir, name))
-            # Skipping hidden file and folders.
-            if is_hidden(abspath):
-                continue
-            if name.startswith('.'):
-                continue
-            if os.path.isdir(abspath):
-                logger.debug("Analysing directory: %s" % abspath)
-                # only check language if it not yet found, found something that start with numbers
-                if  language == None and re.match(r'^\d+', name) != None:
-                    result = re.match(r'^(\d+)(?:%s)?$' % self.tag, name, re.I)
-                    if result != None:
-                        logger.debug("Language directory detected: %s" % name)
-                        self.content_scanner(abspath, os.path.join(path, name), result.group(1))                        
-                    else:
-                        logger.info("Prunning %s directory, because it doesn't match %s tag." % (name, self.tag))
-                elif language == None:
-                    logger.debug("Directory considered a languageless %s" % name)
-                    self.content_scanner(abspath, os.path.join(path, name))
-                
-                elif language != None:
-                    logger.debug("Adding directory %s to %s language" % (name, language))
-                    self.content_scanner(abspath, os.path.join(path, name), language)
-            else:
-                if not self.__is_excluded(os.path.join(path, name)):
-                    logger.debug("Adding file %s to %s language" % (name, language))
-                    self.add_content(os.path.join(path, name), language)
-                else:
-                    logger.info("Excluding file %s" % (os.path.join(path, name)))
-                    
-    
-    def __is_excluded(self, filename):
-        for exc in self.excludes:
-            if pathaddition.match.ant_match(filename, exc, False):
-                return True
-        return False
-
-    def generate_iby(self, ibyfilename, rootdest=None):
-        """ Generates the IBY that should be included by the rom image creation process. """
-        if rootdest == None:
-            rootdest = self.rootdir
-        out = open(ibyfilename, "w")
-        out.write("// Generated file please DO NOT MODIFY!\n")
-        out.write("#ifndef __PRODUCT_HELPS__\n")
-        out.write("#define __PRODUCT_HELPS__\n\n")        
-        out.write("\n//Common content.\n")
-        for filename in self.common:
-            out.write("data=%s RESOURCE_FILES_DIR\\%s\n" % (os.path.join(rootdest, filename), filename))
-        out.write("\n//Language specific content.\n")
-        for language in self.language.keys():
-            # support EE language
-            cond = ""
-            if language == "01":
-                cond = " || defined(__LOCALES_SC_IBY__)"
-                            
-            out.write("#if defined(__LOCALES_%s_IBY__)%s\n" % (language, cond))
-            regex = re.compile(r"^(.*[\\/])?%s%s([\\/])" % (language, self.tag), re.I)
-            for filename in self.language[language]:                
-                destfilename = regex.sub(r"\g<1>%s\g<2>" % language, filename, 1)                
-                out.write("data=%s RESOURCE_FILES_DIR\\%s\n" % (os.path.join(rootdest, filename), destfilename))
-            out.write("#endif // defined(__LOCALES_%s_IBY__)%s\n\n" % (language, cond))
-        out.write("#endif // __PRODUCT_HELPS__\n")
-
-def main():
-    """ Application entry point. """
-    parser = optparse.OptionParser()
-    parser.add_option("-o", "--output", dest="output",
-                      help="Output filename", metavar="OUTPUT")
-    parser.add_option("--rootdest", dest="rootdest",
-                     help="Root destintation directory", metavar="ROOTDEST")
-    parser.add_option("-t", "--tag", dest="tag",                      
-                      help="Tag", metavar="TAG")
-    parser.add_option("-e", "--exclude", dest="excludes", action="append",                      
-                      help="Exclude pattern", metavar="EXCLUDES")
-
-    options = parser.parse_args()[0]
-    logger.info("Setting output to '%s'" % options.output)
-    ibyfilename = options.output
-    
-    rootdest = None
-    if options.rootdest != None:
-        logger.info("Setting rootdest to '%s'" % options.rootdest)
-        rootdest = options.rootdest    
-    
-    tag = ''
-    if options.tag != None:
-        logger.info("Setting tag to '%s'" % options.tag)
-        tag = options.tag
-
-    excludes = []
-    if options.excludes != None:
-        excludes = options.excludes
-    logger.info("Exclude patterns: [%s]" % (", ".join(excludes)))
-
-    datadir = os.path.splitdrive(os.path.abspath("../data"))[1]
-    basket = Basket(datadir, tag, excludes=excludes)
-    basket.generate_iby(ibyfilename, rootdest)
-
-if __name__ == "__main__":
-    main()
--- a/buildframework/helium/tools/localisation/helps/template/bld.inf	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-/*
-* Copyright (c) 2007 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:  Help related files are exported by this file.
-*
-*/
-
-
-PRJ_EXPORTS
-// Your exports!
-
-
-PRJ_MMPFILES
-
-// generation of the ibys
-gnumakefile generate_iby.mk
\ No newline at end of file
--- a/buildframework/helium/tools/localisation/helps/template/generate_iby.mk	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-#
-# 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: 
-#
-# Include Helium helpers to support iby generation for helps
-PRODUCT_VARIANTS=PRODUCT PRODUCT_edge
-
-# PRODUCT config
-PRODUCT_IBYFILE=\epoc32\rom\config\PLATFORM\PRODUCT\help.iby 
-PRODUCT_TAG=_3g 
-
-# PRODUCT edge config
-PRODUCT_edge_IBYFILE=\epoc32\rom\config\PLATFORM\PRODUCT_edge\help.iby
-PRODUCT_edge_TAG=_2g
-
-# Includes tools part.
-include $(HELIUM_HOME)/tools/localisation/helps/generate_iby_32.mk
-
--- a/buildframework/helium/tools/localisation/helps/template/readme.txt	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-Helium IBY generator helper
----------------------------
-
-This template is an example of how to integrate that helper into a product help delivery for 3.2 products.
-It relies on the following
- * PRODUCT_VARIANTS variable defined as a list product variant for the help delivery. (e.g. PRODUCT and PRODUCT_edge)
- * productname_IBYFILE defines where to generate the iby file for productname
- * productname_TAG defines what type to use for this product variant type.
- * HELIUM_HOME to be defined
\ No newline at end of file
--- a/buildframework/helium/tools/localisation/localisation-32.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,494 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : localisation-32.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="localisation-32" xmlns:hlm="http://www.nokia.com/helium">
-    <description>
-      S60 3.2 localisation.
-    </description>
-
-    <!-- Should be overriden in team configuration! -->
-    <!--<property name="localisation.tool" value="localisation-s60-localise" />-->
-    <property name="localisation.tool" value="localise-resources" />
-    <property name="parse_abld_what.tool" location="${build.drive}\s60\tools\build_platforms\build\tools\parse_what_log.pl" />
-    <property name="ctool.dir" location="${build.drive}/s60/tools/toolsextensions/ConfigurationTool" />
-    <property name="ctool.western.conf" value="-master_conf s60 -impl \epoc32\rom\config\confml_data\s60 -confml \epoc32\rom\config\confml_data\s60" />
-    <property name="ctool.china.conf" value="-master_conf china -impl \epoc32\rom\config\confml_data\s60 -confml \epoc32\rom\config\confml_data\${ctool.region.china}" />
-    <property name="ctool.japan.conf" value="-master_conf japan -impl \epoc32\rom\config\confml_data\s60 -confml \epoc32\rom\config\confml_data\${ctool.region.japan}" />
-
-    <property name="localisation.buildfile" value="isis" />
-    <property name="s60.delta.config.prefix" value="S60_variant_"/>
-
-
-    <!--<property name="localisation.variation" value="western" />-->
-
-    <property name="localisation.language.file" location="${build.drive}/epoc32/tools/s60tools/languages.xml" />
-    <property name="localisation.s60locfiles.dir" location="${build.drive}/s60/misc/release/s60locfiles" />
-    <property name="localisation.makefile.target" value="variants" />
-    <property name="customer.makefile.target" value="customer_variants" />
-
-    
-    <!-- Additional input file per region -->
-    <property name="localisation.files.western" value="" />
-    <property name="localisation.files.china" value="" />
-    <property name="localisation.files.japan" value="" />
-    
-    <!-- ctool translation -->
-    <property name="ctool.region.china" value="apac"/>
-    
-    <!-- The createDeltaZipMacro enables to create regional variant like china and japan.
-    e.g:
-         <pre><hlm:createDeltaZipMacro variant="china" type="armv5" ctool="true"/></pre>
-    -->
-    <macrodef name="createDeltaZipMacro" uri="http://www.nokia.com/helium">
-        <attribute name="variant"/>
-        <attribute name="type" default=""/>
-        <attribute name="ctool" default="false"/>
-        <attribute name="force" default="false"/>
-        <sequential>
-            <mkdir dir="${build.log.dir}"/>
-            <mkdir dir="${localisation.log.dir}"/>            
-            <if>
-                <and>
-                    <available file="${zips.loc.dir}/delta_@{variant}_package.zip" />
-                    <isfalse value="@{force}"/>
-                </and>                    
-                <then>
-                    <echo>Unzipping ${zips.loc.dir}/delta_@{variant}_package.zip</echo>
-                    <unzip src="${zips.loc.dir}/delta_@{variant}_package.zip" dest="${build.drive}/" overwrite="true" />
-                </then>
-                <else>
-                    <if>
-                        <equals arg1="@{type}" arg2=""/>
-                        <then>
-                            <var name="internal.variant.type" value="@{type}"/>
-                        </then>
-                        <else>
-                            <var name="internal.variant.type" value="_@{type}"/>
-                        </else>
-                    </if>
-                    <echo>Generating ${build.drive}\epoc32\tools\s60tools\variant_build_@{variant}${internal.variant.type}.xml</echo>
-                    <hlm:compileGenxmlMacro input="-x ${canonical.sysdef.file}"
-                                          configuration="${s60.delta.config.prefix}@{variant}${internal.variant.type}"
-                                          output="${build.drive}\epoc32\tools\s60tools\variant_build_@{variant}${internal.variant.type}.xml"
-                                          log="${localisation.log.dir}/${build.id}.variant_build_@{variant}${internal.variant.type}_genxml.log"/>
-
-                    <echo>Building ${build.drive}\epoc32\tools\s60tools\variant_build_@{variant}${internal.variant.type}.xml</echo>
-                    <hlm:compileEbsMacro input="${build.drive}\epoc32\tools\s60tools\variant_build_@{variant}${internal.variant.type}.xml" log="${localisation.log.dir}/${build.id}.@{variant}${internal.variant.type}_compile.log" />
-                    <hlm:compileHtmlscanlogMacro input="${localisation.log.dir}/${build.id}.@{variant}${internal.variant.type}_compile.log" output="${build.log.dir}/${build.id}.@{variant}${internal.variant.type}_scan2.html" />
-                    
-                    <if>
-                        <istrue value="@{ctool}"/>
-                        <then>
-                            <property name="ctool.region.@{variant}" value="@{variant}"/>
-                            <echo>Region ctool: ${ctool.region.@{variant}} (@{variant}).</echo>
-                            <preset.exec executable="cmd" dir="${ctool.dir}/" failonerror="true" output="${localisation.log.dir}/${build.id}.configtool_@{variant}_log.txt">
-                                <arg line="/c cli_build.cmd ${ctool.@{variant}.conf} -report ${localisation.log.dir}/${build.id}.configtool_@{variant}_delta.txt -ignore_errors"/>
-                            </preset.exec>
-                        </then>
-                    </if>
-                    <preset.exec executable="perl" dir="${build.drive}/" failonerror="true">
-                        <arg value="${parse_abld_what.tool}"/>
-                        <arg line="-i ${localisation.log.dir}/${build.id}.@{variant}${internal.variant.type}_compile.log -filter \epoc32 -zip ${zips.loc.dir}/delta_@{variant}_package -ex productvariant.hrh"/>
-                    </preset.exec>
-                    <if>
-                        <istrue value="@{ctool}"/>
-                        <then>
-                            <preset.exec executable="${build.drive}\epoc32\tools\zip.exe" dir="${build.drive}/" input="${localisation.log.dir}/${build.id}.configtool_@{variant}_delta.txt">
-                                <arg line="-r -u ${zips.loc.dir}/delta_@{variant}_package -@"/>
-                            </preset.exec>
-                        </then>
-                    </if>
-                    <var name="internal.variant.type" unset="true"/>
-                </else>
-            </if>
-        </sequential>
-    </macrodef>
-
-
-    <!-- The createDeltaWesternZipMacro enables to create western regional variant
-    e.g: build western variation using the results from S60_postbuild config
-         and enabling configuration tool support.
-         <pre><hlm:createDeltaWesternZipMacro configs="S60_postbuild" ctool="true"/></pre>
-    -->
-    <macrodef name="createDeltaWesternZipMacro"  uri="http://www.nokia.com/helium">
-        <attribute name="configs"/>
-        <attribute name="ctool" default="false"/>
-        <sequential>
-            <mkdir dir="${zips.loc.dir}"/>
-            <mkdir dir="${localisation.log.dir}"/>
-            <for list="@{configs}" delimiter="," param="conf" >
-                <sequential>
-                    <if>
-                        <istrue value="@{ctool}"/>
-                        <then>
-                            <preset.exec executable="cmd" dir="${ctool.dir}/" failonerror="true" output="${localisation.log.dir}/${build.id}.configtool_western_log.txt">
-                                <arg line="/c cli_build.cmd ${ctool.western.conf} -report ${localisation.log.dir}/${build.id}.configtool_western_delta.txt -ignore_errors"/>
-                            </preset.exec>
-                        </then>
-                    </if>
-                    <preset.exec executable="perl" dir="${build.drive}/" failonerror="true">
-                        <arg value="${parse_abld_what.tool}"/>
-                        <arg line="-i ${compile.log.dir}/${build.id}.@{conf}_compile.log -filter \epoc32 -zip ${zips.loc.dir}/delta_western_package -ex productvariant.hrh"/>
-                    </preset.exec>
-                    <if>
-                        <istrue value="@{ctool}"/>
-                        <then>
-                            <preset.exec executable="${build.drive}\epoc32\tools\zip.exe" dir="${build.drive}/" input="${localisation.log.dir}/${build.id}.configtool_western_delta.txt">
-                                <arg line="-r -u ${zips.loc.dir}/delta_western_package -@"/>
-                            </preset.exec>
-                        </then>
-                    </if>
-                </sequential>
-            </for>
-        </sequential>
-    </macrodef>
-
-    <!--
-        Target to be run after the compile-main to zipup western variation.
-        <deprecated>Please consider using binary variation to solve that problem.</deprecated>
-    -->
-    <target name="localisation-postbuild-western">
-        <mkdir dir="${zips.loc.dir}"/>
-        <mkdir dir="${localisation.log.dir}"/>
-
-        <antcall target="compile-main">
-            <param name="sysdef.configurations.list" value="S60_bldmelast" />
-        </antcall>
-
-        <preset.exec executable="perl" dir="${build.drive}/" failonerror="true">
-            <arg value="${parse_abld_what.tool}"/>
-            <arg line="-i ${compile.log.dir}/${build.id}.S60_bldmelast_compile.log -filter \epoc32 -zip ${zips.loc.dir}/delta_western_package -ex productvariant.hrh"/>
-        </preset.exec>
-        <copy file="${build.drive}\epoc32\release\ARMV5\urel\elocl.dll" tofile="${build.drive}\epoc32\release\ARMV5\urel\elocl.01" />
-        <copy file="${build.drive}\epoc32\release\ARMV5\udeb\elocl.dll" tofile="${build.drive}\epoc32\release\ARMV5\udeb\elocl.01" />
-    </target>
-
-
-    <!--
-        This targe generate the language pack related files using informations from the XML configuration file.
-        The generated files are:
-            * languages.[product].[langid].txt
-            * lang.[product].[langid].txt
-            * /epoc32/rom/config/[platform]/.../[product]/variant_[langid].iby
-        <deprecated>This feature is now supported by iMaker, please update your  Makefile templates to migrate the language data from XML.</deprecated>
-    -->
-    <target name="localisation-create-languagepack" depends="rombuild-prepare-input">
-        <mkdir dir="${localisation.log.dir}"/>
-        <for list="${product.list}" delimiter="," param="product.name" >
-            <sequential>
-                <echo>Language Pack configuration for @{product.name}</echo>
-                <exec executable="python" dir="${build.drive}/" failonerror="${failonerror}">                    
-                    <arg line="${helium.dir}/tools/localisation/create_language_pack.py @{product.name} ${rombuild.config.file.parsed}"/>
-                </exec>        
-            </sequential>
-        </for>    
-    </target>
-
-    <!--
-        Developement target that generated the languages.mk using the information from
-        the languages.xml file provided by S60.
-        <deprecated>Those information will be generated throught Carbon.</deprecated>
-    -->
-    <target name="localisation-create-system-languages-mk">
-        <echo>Generating ${build.drive}/epoc32/rom/config/language/system_languages.mk</echo>
-        <mkdir dir="${build.drive}/epoc32/rom/config/language"/>
-        <hlm:python>
-""" Create a makefile that contains all languages.  """
-import localisation
-import sys
-import ant
-            
-languages = localisation.Languages(ant.get_property(r'${localisation.language.file}'))
-output = open(ant.get_property(r'${build.drive}')+r'\epoc32\rom\config\language\system_languages.mk', "w+")
-
-output.write("############################################\n")
-output.write("# DO NOT EDIT - File generated by Helium\n")
-output.write("############################################\n")
-output.write("system_languages\t\t\t\t=\\\n")
-lids = languages.get_language_ids()
-lids.sort()
-lids.reverse()
-while len(lids)>0:
-    lid = lids.pop()
-    endofline = "\\"
-    if (len(lids)==0):
-        endofline = ""
-    output.write ("%s\t\t\t\t%s %s" % (languages.get_name(lid), lid, endofline))
-    output.write("\n")
-output.close()
-    </hlm:python>
-    </target>
-
-    <!--
-        This target run the generation of cenrep variation on language pack and customer variants configuration folders.
-        <deprecated>S60 3.2 only for 3.2.3 use iMaker</deprecated>
-    -->
-    <target name="localisation-create-cenrep" depends="localisation-create-language-cenrep,localisation-create-customer-cenrep"/>
-
-    <!--
-        This target run the generation of cenrep variation on language pack configuration folders.
-        <deprecated>S60 3.2 only for 3.2.3 use iMaker</deprecated>
-    -->
-    <target name="localisation-create-language-cenrep" depends="rombuild-prepare-input">
-        <for list="${product.list}" delimiter="," param="product.name" >
-            <sequential>
-                <echo>Cenrep generation for @{product.name} languagepack</echo>
-                <exec executable="python" dir="${build.drive}/" failonerror="${failonerror}">
-                    <arg line="${helium.dir}/tools/localisation/create_variant_cenrep.py @{product.name} ${rombuild.config.file.parsed} languagepack"/>
-                </exec>
-            </sequential>
-        </for>
-    </target>
-
-    <!--
-        This target run the generation of cenrep variation on customer variants configuration folders.
-        <deprecated>S60 3.2 only for 3.2.3 use iMaker</deprecated>
-    -->
-    <target name="localisation-create-customer-cenrep" depends="rombuild-prepare-input">
-        <for list="${product.list}" delimiter="," param="product.name" >
-            <sequential>
-                <echo>Cenrep generation for @{product.name} customer variant</echo>
-                <exec executable="python" dir="${build.drive}/" failonerror="${failonerror}">                    
-                    <arg line="${helium.dir}/tools/localisation/create_variant_cenrep.py @{product.name} ${rombuild.config.file.parsed} customer"/>
-                </exec>        
-            </sequential>
-        </for>    
-    </target>
-    
-    <!-- Localisation configuration -->
-    <target name="localisation-create-config">
-        <mkdir dir="${localisation.log.dir}"/>
-        <hlm:record name="${localisation.log.dir}/${build.id}_localisation_config.log" action="start"/>
-        <antcall target="localisation-create-languagepack" />
-        <antcall target="localisation-create-cenrep" />
-        <copy file="${helium.dir}/tools/localisation/templates/rom/mc_variant_imaker.oby" todir="${build.drive}/epoc32/rom"/>
-        <hlm:record name="${localisation.log.dir}/${build.id}_localisation_config.log" action="stop"/>
-    </target>
-
-    <!-- Localise resources using either EC / EBS based on build system type-->
-    <target name="localise-resources">
-        <copy file="${helium.dir}/tools/localisation/localiser/isis_EClocaliser.pl" todir="${build.drive}/epoc32/tools"/>
-        <copy file="${helium.dir}/tools/localisation/localiser/ECLocaliser.pm" todir="${build.drive}/epoc32/tools"/>
-        <propertycopy name="localisation.files.region" from="localisation.files.${localisation.region}" />
-        <property name="isis_mktarget.list" value="${localisation.region}_${localisation.buildfile},${localisation.region}_${localisation.buildfile}_what,${localisation.region}_${localisation.buildfile}_check"/>
-        <if>
-            <equals arg1="${build.system}" arg2="ec-helium" />
-            <then>
-                <!-- localisation build for EC -->
-                <echo message="isis_EClocaliser.pl ${localisation.files} ${localisation.files.region} -b=${localisation.region}_${localisation.buildfile} --ecbuild -state=0 -c=&quot;${localisation.languages}&quot; -dest=&quot;${zips.loc.dir}&quot; -s60locfiles=&quot;${localisation.s60locfiles.dir}&quot; -l=&quot;${localisation.log}&quot; -h" />
-                <exec executable="perl" dir="${build.drive}/" failonerror="${failonerror}">
-                    <arg line="${build.drive}/epoc32/tools/isis_EClocaliser.pl ${localisation.files} ${localisation.files.region} -state=0 -b=${localisation.region}_${localisation.buildfile} --ecbuild -c=&quot;${localisation.languages}&quot; -dest=&quot;${zips.loc.dir}&quot; -s60locfiles=&quot;${localisation.s60locfiles.dir}&quot; -l=&quot;${localisation.log}&quot; -nolocal -k"/>
-                </exec>
-                <antcall target="localisation-emake"/>
-            </then>
-            <else>
-                <!-- localisation build for TBS -->
-                <echo message="isis_EClocaliser.pl ${localisation.files} ${localisation.files.region} -b=${localisation.region}_${localisation.buildfile} --noecbuild -state=0 -c=&quot;${localisation.languages}&quot; -dest=&quot;${zips.loc.dir}&quot; -s60locfiles=&quot;${localisation.s60locfiles.dir}&quot; -l=&quot;${localisation.log}&quot; -h" />
-                <exec executable="perl" dir="${build.drive}/" failonerror="${failonerror}">
-                    <arg line="${build.drive}/epoc32/tools/isis_EClocaliser.pl ${localisation.files} ${localisation.files.region} -state=0 -b=${localisation.region}_${localisation.buildfile} --noecbuild -c=&quot;${localisation.languages}&quot; -dest=&quot;${zips.loc.dir}&quot; -s60locfiles=&quot;${localisation.s60locfiles.dir}&quot; -l=&quot;${localisation.log}&quot; -nolocal -k"/>
-                </exec>
-                <antcall target="localisation-ebs"/>
-            </else>
-        </if>        
-        <!-- localisation build cleanup -->
-        <echo message="isis_EClocaliser.pl -b=${localisation.region}_${localisation.buildfile} -state=2 -dest=&quot;${zips.loc.dir}&quot; -h" />
-        <exec executable="perl" dir="${build.drive}/" failonerror="${failonerror}">
-            <arg line="${build.drive}/epoc32/tools/isis_EClocaliser.pl ${localisation.files} ${localisation.files.region} -b=${temp.build.dir}/${build.id}.${localisation.region}_${localisation.buildfile} -state=2 -c=&quot;${localisation.languages}&quot; -dest=&quot;${zips.loc.dir}&quot; -s60locfiles=&quot;${localisation.s60locfiles.dir}&quot; -l=&quot;${localisation.log}&quot; -nolocal -k"/>
-        </exec>
-    </target>
-
-
-    <!-- Localise resources using EBS-->
-    <target name="localisation-ebs" if="build.system.ebs" depends="set-arm-version" >
-        <for list="${isis_mktarget.list}" delimiter="," param="mktarget">
-            <sequential>
-                <antcall target="compile-ebs">
-                    <param name="sysdef.configuration" value="@{mktarget}"/>
-                    <param name="genxml.output.file" location="${build.drive}/@{mktarget}.xml"/>
-                </antcall>
-                <!-- <echo message="isis_EClocaliser.pl ${localisation.files} ${localisation.files.region} -b=${localisation.region}_${localisation.buildfile} -state=1 -c=&quot;${localisation.languages}&quot; -dest=&quot;${zips.loc.dir}&quot; -s60locfiles=&quot;${localisation.s60locfiles.dir}&quot; -l=&quot;${localisation.log}&quot; -h" />
-                <exec executable="perl" dir="${build.drive}/" failonerror="${failonerror}">
-                    <arg line="${build.drive}/epoc32/tools/isis_EClocaliser.pl -b=${localisation.region}_${localisation.buildfile} -state=1 -dest=&quot;${zips.loc.dir}&quot; -k"/>
-                </exec>
-                -->
-            </sequential>
-        </for>
-    </target>
-
-
-    <!-- Localise resources using EC-->
-    <target name="localisation-emake" if="build.system.ec-helium" depends="set-arm-version" >
-        <propertycopy name="localisation.files.region" from="localisation.files.${localisation.region}" />
-        <for list="${isis_mktarget.list}" delimiter="," param="mktarget">
-            <sequential>
-                <hlm:recordStartMacro name="@{mktarget}.log" emacsmode="true"/>
-                <hlm:emakeMacro name="localisation" makefile="${build.drive}/${localisation.region}_${localisation.buildfile}.make" target="@{mktarget}" dir="${build.drive}/" annodetail="basic,history,file,waiting" phase="localisation"/>
-                <hlm:recordStopMacro name="@{mktarget}.log"/>
-            </sequential>
-        </for>
-    </target>
-
-
-    <!-- S60 localiser tool -->
-    <target name="localisation-s60-localiser">
-        <propertycopy name="localisation.files.region" from="localisation.files.${localisation.region}" />
-        <echo message="s60Localiser.pl ${localisation.files} ${localisation.files.region} -c=&quot;${localisation.languages}&quot; -dest=&quot;${zips.loc.dir}&quot; -s60locfiles=&quot;${localisation.s60locfiles.dir}&quot; -l=&quot;${localisation.log}&quot;" />
-        <exec executable="perl" dir="${build.drive}/" failonerror="${failonerror}">
-            <arg line="${build.drive}/epoc32/tools/s60Localiser.pl ${localisation.files} ${localisation.files.region} -c=&quot;${localisation.languages}&quot; -dest=&quot;${zips.loc.dir}&quot; -s60locfiles=&quot;${localisation.s60locfiles.dir}&quot; -l=&quot;${localisation.log}&quot;"/>
-        </exec>    
-    </target>
-    
-    
-    <!-- Build localised content -->
-    <target name="localisation-build" depends="rombuild-prepare-input">
-        <hlm:record name="${localisation.log.dir}/${build.id}_localisation_build.log" action="start"/>
-        <copy file="${parse_abld_what.tool}" todir="${build.drive}/epoc32/tools/s60tools" failonerror="false"/>
-        <mkdir dir="${zips.loc.dir}"/>    
-        
-        <!-- get all variation available -->    
-        <exec executable="python" outputproperty="localisation.variation" dir="${build.drive}/" failonerror="${failonerror}">
-            <arg line="${helium.dir}/tools/localisation/getallvariantion.py ${localisation.language.file}"/> 
-        </exec>
-
-        <!-- get all variation available -->    
-        <echo>We will create zip variation for ${localisation.variation}</echo>
-        <for list="${localisation.variation}" delimiter="," param="variant">
-            <sequential>    
-                <hlm:createDeltaZipMacro variant="@{variant}" />
-                <!-- getting all languages to localise -->
-                <var name="localisation.languages" unset="true"/>
-                <exec executable="python" outputproperty="localisation.languages" dir="${build.drive}/" failonerror="${failonerror}">
-                    <arg line="${helium.dir}/tools/localisation/getalllanguages.py ${localisation.language.file} @{variant}"/> 
-                </exec>
-                
-                <echo>Localising ${localisation.languages}</echo>
-                <propertyregex property="localisation.log" input="${build.log.dir}/localisation_${localisation.languages}.html" regexp="\s+" replace="_" override="true"/>
-                <echo>Localising using ${localisation.tool}.</echo>
-                <antcall target="${localisation.tool}">
-                    <param name="localisation.region" value="@{variant}"/>
-                </antcall>
-                
-                <for list="${product.list}" delimiter="," param="product.name" >
-                    <sequential>
-                        <for list="${localisation.languages}" delimiter=" " param="lid" >
-                            <sequential>
-                                <exec executable="python" dir="${build.drive}/epoc32/rom" failonerror="${failonerror}">
-                                    <arg line="${helium.dir}/tools/localisation/createlocales.py @{product.name} @{lid} -include Override.oby"/> 
-                                </exec>
-                            </sequential>
-                        </for>
-                    </sequential>
-                </for>
-            </sequential>
-        </for>
-        <hlm:record name="${localisation.log.dir}/${build.id}_localisation_build.log" action="stop"/>
-    </target>
-    
-    
-    <!--
-        Target to rebuild locales 
-        This could be useful for incremental changes/test.
-    -->
-    <target name="localisation-create-locales">
-        <mkdir dir="${localisation.log.dir}"/>
-        <hlm:record name="${localisation.log.dir}/${build.id}_create_locales.log" action="start"/>
-        
-        <!-- get all variation available -->    
-        <exec executable="python" outputproperty="localisation.variation" dir="${build.drive}/" failonerror="${failonerror}">
-            <arg line="${helium.dir}/tools/localisation/getallvariantion.py ${localisation.language.file}"/> 
-        </exec>
-                
-        <!-- get all variation available -->    
-        <echo>We will create zip variation for ${localisation.variation}</echo>
-        <for list="${localisation.variation}" delimiter="," param="variant">
-            <sequential>
-                <hlm:createDeltaZipMacro variant="@{variant}" />
-                <!-- getting all languages to localise -->
-                <var name="localisation.languages" unset="true"/>
-                <exec executable="python" outputproperty="localisation.languages" dir="${build.drive}/" failonerror="${failonerror}">
-                    <arg line="${helium.dir}/tools/localisation/getalllanguages.py ${localisation.language.file} @{variant}"/> 
-                </exec>
-           
-                <for list="${product.list}" delimiter="," param="product.name" >
-                    <sequential>
-                        <for list="${localisation.languages}" delimiter=" " param="lid" >
-                            <sequential>
-                                <exec executable="python" dir="${build.drive}/epoc32/rom" failonerror="${failonerror}">
-                                    <arg line="${helium.dir}/tools/localisation/createlocales.py @{product.name} @{lid} -include Override.oby"/> 
-                                </exec>
-                            </sequential>
-                        </for>
-                    </sequential>
-                </for>
-            </sequential>
-        </for>
-        <hlm:record name="${localisation.log.dir}/${build.id}_create_locales.log" action="stop"/>
-    </target>    
-
-    
-    <!-- Creates localised rom images -->
-    <target name="localisation-roms" depends="rombuild-create-makefile,flash-config-file"> 
-        <mkdir dir="${localisation.log.dir}"/>
-        <!-- get product path -->
-        <hlm:record name="${localisation.log.dir}/${build.id}_localisation_roms.log" action="start"/>
-        <hlm:preECImakerMacro/>
-        <for list="${product.list}" delimiter="," param="product.name" >
-            <sequential>
-                <hlm:rombuildImakerMacro product="@{product.name}" target="${localisation.makefile.target}" />
-            </sequential>
-        </for>
-        <hlm:ecImakerMacro makefile.target="${localisation.makefile.target}" />
-        <hlm:record name="${localisation.log.dir}/${build.id}_localisation_roms.log" action="stop"/>
-        <hlm:logextract file="${localisation.log.dir}/${build.id}_localisation_roms.log"/>
-    </target>
-
-    
-    <!-- Creates customer rom images -->
-    <target name="customer-roms" depends="rombuild-create-makefile,flash-config-file"> 
-        <mkdir dir="${localisation.log.dir}"/>
-        <!-- get product path -->
-        <hlm:record name="${localisation.log.dir}/${build.id}_customer_roms.log" action="start"/>
-        <hlm:preECImakerMacro/>
-        <for list="${product.list}" delimiter="," param="product.name" >
-            <sequential>
-                <hlm:rombuildImakerMacro product="@{product.name}" target="${customer.makefile.target}" />
-            </sequential>
-        </for>
-        <hlm:ecImakerMacro makefile.target="${customer.makefile.target}" />
-        <hlm:record name="${localisation.log.dir}/${build.id}_customer_roms.log" action="stop"/>
-        <hlm:logextract file="${localisation.log.dir}/${build.id}_customer_roms.log"/>
-    </target>
-
-    
-    <!-- Runs localisation for product builds.
-    
-    Creates:
-    * Localisation configuration
-    * Build localised content
-    * Localised rom images
-    
-     -->
-    <target name="localisation" depends="localisation-create-config,precompile-ec,localisation-build,localisation-roms"> 
-        <antcall target="postcompile-ec"/>
-    </target>
-
-</project>
--- a/buildframework/helium/tools/localisation/localisation-50.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/localisation/localisation-50.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -20,13 +20,47 @@
 
 ============================================================================
 -->
-<project name="localisation-50">
+<!--* @package localisation -->
+<project name="localisation-50" xmlns:hlm="http://www.nokia.com/helium">
     <description>
         S60 5.0+ localisation.
     </description>
 
     <!-- Main target for 5.0 build localisation process. -->
     <target name="localisation-50-build" depends="localisation-switch-loc-generator,localisation-dtd"/> 
+
+    <!-- Regional variation support for 5.0 -->
+    <!-- Location of the parse_what_log.pl tool.
+    @type string
+    -->
+    <property name="parse_abld_what.tool" location="${build.drive}\s60\tools\build_platforms\build\tools\parse_what_log.pl" />
+    <!-- Location of the configuration tool.
+    @type string
+    -->
+    <property name="ctool.dir" location="${build.drive}/s60/tools/toolsextensions/ConfigurationTool" />
+    <!-- configuration for the western variant.
+    @type string
+    -->
+    <property name="ctool.western.conf" value="-master_conf s60 -impl \epoc32\rom\config\confml_data\s60 -confml \epoc32\rom\config\confml_data\s60" />
+    <!-- configuration for the chinese variant.
+    @type string
+    -->
+    <property name="ctool.china.conf" value="-master_conf china -impl \epoc32\rom\config\confml_data\s60 -confml \epoc32\rom\config\confml_data\${ctool.region.china}" />
+    <!-- configuration for the japanese variant.
+    @type string
+    -->
+    <property name="ctool.japan.conf" value="-master_conf japan -impl \epoc32\rom\config\confml_data\s60 -confml \epoc32\rom\config\confml_data\${ctool.region.japan}" />
+    <!-- Define the prefix part of the configuration name that builds delta variant.
+    @type string
+    -->
+    <property name="s60.delta.config.prefix" value="S60_variant_"/>
+
+    <!-- ctool translation -->
+    <!-- .
+    @type string
+    @scope private
+    -->
+    <property name="ctool.region.china" value="apac"/>
    
     <!-- 
             This target launch the localisation of DTD files. 
@@ -49,5 +83,115 @@
         <exec dir="${build.drive}/" executable="perl.exe" failonerror="false"> 
             <arg line="${build.drive}/epoc32/tools/switch_loc_generator.pl"/> 
         </exec> 
-    </target> 
+    </target>
+    
+    
+    <!-- The createDeltaZipMacro enables to create regional variant like china and japan.
+    e.g:
+         <pre><hlm:createDeltaZipMacro variant="china" type="armv5" ctool="true"/></pre>
+    -->
+    <macrodef name="createDeltaZipMacro" uri="http://www.nokia.com/helium">
+        <attribute name="variant"/>
+        <attribute name="type" default=""/>
+        <attribute name="ctool" default="false"/>
+        <attribute name="force" default="false"/>
+        <sequential>
+            <mkdir dir="${build.log.dir}"/>
+            <mkdir dir="${localisation.log.dir}"/>            
+            <if>
+                <and>
+                    <available file="${zips.loc.dir}/delta_@{variant}_package.zip" />
+                    <isfalse value="@{force}"/>
+                </and>                    
+                <then>
+                    <echo>Unzipping ${zips.loc.dir}/delta_@{variant}_package.zip</echo>
+                    <unzip src="${zips.loc.dir}/delta_@{variant}_package.zip" dest="${build.drive}/" overwrite="true" />
+                </then>
+                <else>
+                    <if>
+                        <equals arg1="@{type}" arg2=""/>
+                        <then>
+                            <var name="internal.variant.type" value="@{type}"/>
+                        </then>
+                        <else>
+                            <var name="internal.variant.type" value="_@{type}"/>
+                        </else>
+                    </if>
+                    <echo>Generating ${build.drive}\epoc32\tools\s60tools\variant_build_@{variant}${internal.variant.type}.xml</echo>
+                    <hlm:compileGenxmlMacro input="-x ${canonical.sysdef.file}"
+                                          configuration="${s60.delta.config.prefix}@{variant}${internal.variant.type}"
+                                          output="${build.drive}\epoc32\tools\s60tools\variant_build_@{variant}${internal.variant.type}.xml"
+                                          log="${localisation.log.dir}/${build.id}.variant_build_@{variant}${internal.variant.type}_genxml.log"/>
+
+                    <echo>Building ${build.drive}\epoc32\tools\s60tools\variant_build_@{variant}${internal.variant.type}.xml</echo>
+                    <hlm:compileEbsMacro input="${build.drive}\epoc32\tools\s60tools\variant_build_@{variant}${internal.variant.type}.xml" log="${localisation.log.dir}/${build.id}.@{variant}${internal.variant.type}_compile.log" />
+                    <hlm:compileHtmlscanlogMacro input="${localisation.log.dir}/${build.id}.@{variant}${internal.variant.type}_compile.log" output="${build.log.dir}/${build.id}.@{variant}${internal.variant.type}_scan2.html" />
+                    
+                    <if>
+                        <istrue value="@{ctool}"/>
+                        <then>
+                            <property name="ctool.region.@{variant}" value="@{variant}"/>
+                            <echo>Region ctool: ${ctool.region.@{variant}} (@{variant}).</echo>
+                            <preset.exec executable="cmd" dir="${ctool.dir}/" failonerror="true" output="${localisation.log.dir}/${build.id}.configtool_@{variant}_log.txt">
+                                <arg line="/c cli_build.cmd ${ctool.@{variant}.conf} -report ${localisation.log.dir}/${build.id}.configtool_@{variant}_delta.txt -ignore_errors"/>
+                            </preset.exec>
+                        </then>
+                    </if>
+                    <preset.exec executable="perl" dir="${build.drive}/" failonerror="true">
+                        <arg value="${parse_abld_what.tool}"/>
+                        <arg line="-i ${localisation.log.dir}/${build.id}.@{variant}${internal.variant.type}_compile.log -filter \epoc32 -zip ${zips.loc.dir}/delta_@{variant}_package -ex productvariant.hrh"/>
+                    </preset.exec>
+                    <if>
+                        <istrue value="@{ctool}"/>
+                        <then>
+                            <preset.exec executable="${build.drive}\epoc32\tools\zip.exe" dir="${build.drive}/" input="${localisation.log.dir}/${build.id}.configtool_@{variant}_delta.txt">
+                                <arg line="-r -u ${zips.loc.dir}/delta_@{variant}_package -@"/>
+                            </preset.exec>
+                        </then>
+                    </if>
+                    <var name="internal.variant.type" unset="true"/>
+                </else>
+            </if>
+        </sequential>
+    </macrodef>
+
+
+    <!-- The createDeltaWesternZipMacro enables to create western regional variant
+    e.g: build western variation using the results from S60_postbuild config
+         and enabling configuration tool support.
+         <pre><hlm:createDeltaWesternZipMacro configs="S60_postbuild" ctool="true"/></pre>
+    -->
+    <macrodef name="createDeltaWesternZipMacro"  uri="http://www.nokia.com/helium">
+        <attribute name="configs"/>
+        <attribute name="ctool" default="false"/>
+        <sequential>
+            <mkdir dir="${zips.loc.dir}"/>
+            <mkdir dir="${localisation.log.dir}"/>
+            <for list="@{configs}" delimiter="," param="conf" >
+                <sequential>
+                    <if>
+                        <istrue value="@{ctool}"/>
+                        <then>
+                            <preset.exec executable="cmd" dir="${ctool.dir}/" failonerror="true" output="${localisation.log.dir}/${build.id}.configtool_western_log.txt">
+                                <arg line="/c cli_build.cmd ${ctool.western.conf} -report ${localisation.log.dir}/${build.id}.configtool_western_delta.txt -ignore_errors"/>
+                            </preset.exec>
+                        </then>
+                    </if>
+                    <preset.exec executable="perl" dir="${build.drive}/" failonerror="true">
+                        <arg value="${parse_abld_what.tool}"/>
+                        <arg line="-i ${compile.log.dir}/${build.id}.@{conf}_compile.log -filter \epoc32 -zip ${zips.loc.dir}/delta_western_package -ex productvariant.hrh"/>
+                    </preset.exec>
+                    <if>
+                        <istrue value="@{ctool}"/>
+                        <then>
+                            <preset.exec executable="${build.drive}\epoc32\tools\zip.exe" dir="${build.drive}/" input="${localisation.log.dir}/${build.id}.configtool_western_delta.txt">
+                                <arg line="-r -u ${zips.loc.dir}/delta_western_package -@"/>
+                            </preset.exec>
+                        </then>
+                    </if>
+                </sequential>
+            </for>
+        </sequential>
+    </macrodef>
+    
 </project>
--- a/buildframework/helium/tools/localisation/localisation.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/localisation/localisation.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -25,6 +25,5 @@
         Localisation
     </description>
     <import file="localisation-50.ant.xml" />
-    <import file="localisation-32.ant.xml" />
 
 </project>
--- a/buildframework/helium/tools/localisation/localiser/ECLocaliser.pm	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1959 +0,0 @@
-#
-# 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: 
-#
-#------------------------------------------------------------------------------
-# Name   : Localiser.pm
-# Use    : Implementation of a new localisation process.
-
-#
-# Version History :
-#
-# v1.1.2 (30/01/2008) : Valliappan Ramanathan - ISIS
-#  - Updated to build with EC build
-
-#
-# v1.1.1 (04/08/2006) :
-#  - Update include management, now it uses cpp.
-#
-# v1.1.0 (12/05/2006) :
-#  - Corrected include parsing, remove that fact that file must start with \
-#  - Added locales_xx.iby creation
-#
-# v1.0.1 (12/05/2006) :
-#  - Corrected __MakeRlt function
-#
-# v1.0 (19/04/2006) :
-#  - First version of the script.
-#------------------------------------------------------------------------------
-
-## @ file
-#
-
-#------------------------------------------------------------------------------
-# Package __OUT
-#------------------------------------------------------------------------------
-package __OUT;
-use strict;
-
-my $outputer = "__OUT";
-
-sub SetLoggerPackage
-{
-	my ($p) = shift;
-	return unless($p);
-	$outputer = $p;
-}
-
-sub AUTOLOAD
-{
-	my ($method) = (our $AUTOLOAD);	
-	if ( $outputer eq "__OUT" )
-	{
-		$method =~ s/^__OUT:://;
-		if ($method =~ /print/i)
-		{
-			print ("@_");
-		}
-		elsif ($method =~ /die/i)
-		{
-			die (@_);
-		}
-		else
-		{
-			print (uc($method).": @_");
-		}
-	}
-	elsif ( defined ($outputer) and defined($method) )
-	{
-		print "@_\n" if ($method =~ /die/i);		
-		$method =~ s/^__OUT::/$outputer\::/;
-		no strict 'refs';
-		&$method( @_ );
-	}
-}
-
-1;
-
-## @class ZipUp
-#
-#
-#
-package ZipUp;
-use strict;
-use Archive::Zip;
-use File::Copy;
-
-sub new
-{
-	my ( $class, $filename ) = @_;
-	return undef unless ($filename);
-	
-	my $self = {
-		__filename => $filename,
-	};
-	
-	return bless $self, $class;
-}
-
-sub AddFile
-{
-	my ( $self, $filename ) = (shift,shift);
-	&__OUT::Print ("Adding '\\$filename'\n");	
-	my $cmd = "zip ".$self->{ __filename }." $filename\n";
-	&__OUT::Print (scalar(`$cmd`));
-}
-
-sub AddFilesFromList
-{
-	my ( $self, $listfilename ) = (shift,shift);
-	if ( -e $listfilename )
-	{
-		&__OUT::Print ("Adding files using '$listfilename'\n");		
-			my $cmd = "more $listfilename | zip -9 ".$self->{ __filename }." -@";
-		&__OUT::Print ( $cmd."\n" );
-		&__OUT::Print ( scalar( `$cmd` ) );
-	}		
-}
-1;
-
-
-## @class Finder
-#
-#
-#
-package Finder;
-
-sub new
-{
-	my ( $class, $regexp, $rootdir ) = @_;
-
-	my $self = {
-		__rootdir => $rootdir,
-		__regexp => $regexp,
-	};
-	
-	return bless $self, $class;
-}
-
-sub Find
-{
-	my ($self, $dir, $list) = @_;
-
-	my @fake;
-	$list = \@fake unless (defined ($list));
-	$dir = $self->{__rootdir} unless (defined($dir));
-	
-	opendir (DIR, $dir);
-	my @l = readdir(DIR);
-	closedir(DIR);
-	
-	foreach my $name (@l)
-	{
-		next if ($name =~ /^\.+$/);
-		my $filename = "$dir/$name";
-		
-		if ( -d $filename )
-		{
-			$self->Find($filename, $list);
-		}
-		elsif ( $filename =~ /$self->{__regexp}/i )
-		{			
-			push @$list, $filename;
-		}		
-	}
-
-	return $list;
-}
-
-1;
-
-
-## @class Localiser
-#
-#
-package Localiser;
-use strict;
-use File::Path;
-#use ISIS::GenBuildTools;
-use IPC::Open3;
-use File::Spec;  
-use File::Basename;
-
-my $DEFAULT_LOC_PATH = "\\s60\\S60LocFiles";
-use constant DEFAULT_XML_PATH => ".xml";
-use constant DEFAULT_WHATXML_PATH => "_what.xml";
-use constant DEFAULT_CHECKXML_PATH => "_check.xml";
-use constant DEFAULT_TPATH => "\\zips";
-
-
-use constant DEFAULT_MAKE_PATH => ".make";
-use constant DEFAULT_WHATMAKE_PATH => "whatMakefile";
-use constant DEFAULT_CHECKMAKE_PATH => "checkMakefile";
-
-sub new
-{
-	my $class = shift;
-	
-	my $configfiles = shift;
-	my $languagelist = shift;
-	my $includepath = shift;
-	my $bldfile = shift;
-	my $tpath = shift || DEFAULT_TPATH;
-	my @configuration;
-	my %platform;# = ("armv5");
-	my $self = {
-		__configfiles => $configfiles,
-		__includepath => $includepath,
-		__languagelist => $languagelist,
-		__configuration => \@configuration,
-		__platform	=> \%platform,
-		__tpath => $tpath,
-		__bldfile => $bldfile
-	};
-	return bless $self, $class;	
-}
-
-
-sub DefaultLocPath
-{
-	my ($k) = @_;
-	$DEFAULT_LOC_PATH = $k if (defined ($k));
-	return $DEFAULT_LOC_PATH;
-}
-
-sub Keepgoing
-{
-	my ($self, $k) = @_;
-	$self->{__keepgoing} = $k if (defined ($k));
-	return $self->{__keepgoing};
-}
-
-sub SetLoggerPackage
-{
-	my ($self, $outputer) = @_;
-	return unless($outputer);
-	&__OUT::SetLoggerPackage($outputer);
-}
-
-sub Initialise()
-{
-	my $self = shift;
-	my ($drive) = File::Spec->splitpath(File::Spec->rel2abs(File::Spec->curdir()));
-	foreach my $filename ( @{ $self->{__configfiles} } )
-	{
-		# adding path of the input file into the include path list
-		my $includepath = "";
-		$includepath .= "-I ".File::Spec->rel2abs(dirname($filename));
-		foreach my $path ( @{ $self->{__includepath} } )
-		{
-			$path = File::Spec->rel2abs($path);
-			$path = "$drive$path" if ($path =~ /^\\/);			
-			$includepath .= " -I $path";
-		}
-
-		# command line to execute
-		my $cmd = "cpp -nostdinc -u $includepath ".File::Spec->rel2abs($filename);
-		__OUT::Print( "$cmd\n");
-	
-		# parsing using cpp...
-		my $childpid = open3(\*WTRFH, \*RDRFH, \*ERRFH, $cmd);
-		close(WTRFH);
-
-		while (<RDRFH>)
-		{
-				if ( /^\s*<option ([A-Za-z0-9\.]+)>/ )				
-				{
-					my $option = lc($1);
-					$self->{ __platform }->{ $option } = $option; # if ($option =~ /^(armv5|winscw)$/i);
-				}
-				else
-				{
-					my $c = &__LocInfoData::CreateFromLine( $_ );
-					push ( @{ $self->{__configuration} }, $c ) if ($c);
-				}
-		}
-		close(RDRFH);	
-	
-		# Manage cpp errors
-		my $err = "";
-		while(<ERRFH>) { $err .= "$_\n";}
-		if (not ($err eq "")){ __OUT::Error ("$err"); }
-
-		# Closing cleanly....
-		close(ERRFH);
-		waitpid($childpid, 0);
-	}
-
-	
-	# if not platform add default one: armv5
-	unless (scalar (keys (%{$self->{ __platform }}) ))
-	{
-		__OUT::Warning("No platform specified, using default (ARMV5)");
-		$self->{ __platform }->{ 'armv5' } = 'armv5';
-	}
-}
-
-sub CheckConfig
-{
-	my $self = shift;
-	my $result = 1;
-	foreach my $c ( @{ $self->{__configuration} } )
-	{
-		$result &&= $c->CheckBldInf();
-		$result &&= $c->CheckLocFiles();
-	}	
-	return $result;
-}
-
-sub PrepareLocalisation
-{
-	my $self = shift;
-	my $filename = shift;
-
-	my $zip = new ZipUp($filename);
-		
-	__OUT::Print ("Preparing each component\n");
-
-	foreach my $c ( @{ $self->{__configuration} } )
-	{
-		$c->ZipUpLocFiles( $zip );
-	}
-
-	HandleEpoc32LocFiles( $self-> { __languagelist }, $zip );
-
-	my $time1;
-	my $time2;
-	
-	$time1 = time();
-	foreach my $c ( @{ $self->{__configuration} } )
-	{
-		$c->GenerateStubLocFiles( $self-> { __languagelist } );
-		$c->ChangeMMPsAndMKs( $self-> { __languagelist }, $zip );
-		$c->TouchRSS();
-	}
-	$time2 = time();
-	my $time = $time2 - $time1;
-__OUT::Print ("time for loc file / mmp changes: $time\n");
-	
-}
-
-sub GenerateMakefiles
-{
-	my $self = shift;
-	my $time1;
-	my $time2;
-	$time1 = time();
-	__OUT::Print ("Generating Makefiles for EC\n");
-	$self->__GenerateECMakefile();
-	#$self->__GenerateWhatECMakefile();
-	#$self->__GenerateCheckECMakefile();
-	$time2 = time();
-	my $time = $time2 - $time1;
-__OUT::Print ("time for GenerateMakefiles: $time\n");
-	
-}
-
-sub GenerateXMLFiles
-{
-	my $self = shift;
-	__OUT::Print ("Generating XML for TBS\n");
-	$self->__GenerateTBSXML();
-	$self->__GenerateWhatTBSXML();
-	$self->__GenerateCheckTBSXML();
-}
-
-sub __GenerateTBSXML
-{
-	my $self = shift;
-	my $xmlfile = $self->{ __bldfile }."".DEFAULT_XML_PATH;
-	open (XML, ">$xmlfile") or __OUT::Die ("Cannot open '$xmlfile':$!");
-	print 	XML "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n";
-	print 	XML "<Product Name=\"$xmlfile\">\n";
-	print 	XML "\t<Commands>\n";
-	my $id = 1;
-	my $stage = 1;
-		
-	print XML "\t\t<SetEnv Order = \"1\" Name = \"EPOCROOT\" Value = \"\\\"/>\n";
-	print XML "\t\t<SetEnv Order = \"2\" Name = \"PATH\" Value = \"\\epoc32\\gcc\\bin;\\epoc32\\tools;%PATH%\"/>\n";
-
-	
-	# bldmake bldfiles
-	foreach my $c ( @{ $self->{__configuration} } )
-	{
-		#<Execute CommandLine="call bldmake bldfiles -k" Component="\s60\icons" Cwd="\s60\icons\group" ID="2" Stage="1" />
-		print XML "		<Execute CommandLine=\"call bldmake bldfiles -k\" Component=\"".$c->GetPath()."\" Cwd=\"".$c->GetPath()."\\".$c->GetGroup()."\" ID=\"".$id++."\" Stage=\"$stage\" />\n";
-	}
-	$stage++;
-
-	# abld makefile
-	foreach my $p ( keys (%{ $self->{ __platform } }) )
-	{
-		foreach my $c ( @{ $self->{__configuration} } )
-		{
-			foreach my $mmp ( @{$c->GetMMPs()} )
-			{
-					print XML "		<Execute CommandLine=\"call abld makefile $p ".$mmp." -k\" Component=\"".$c->GetPath()."\" Cwd=\"".$c->GetPath()."\\".$c->GetGroup()."\" ID=\"".$id++."\" Stage=\"$stage\" />\n";
-			}
-		}
-		# Next platform
-		$stage++;
-	}
-
-	# abld resource
-	foreach my $p ( keys (%{ $self->{ __platform } }) )
-	{  			
-		foreach my $c ( @{ $self->{__configuration} } )
-		{
-			foreach my $mmp ( @{ $c->GetMMPs() } )
-			{ 		
-				if ( $c->GetMMPType($mmp) eq 'mmp')
-				{
-						print XML "		<Execute CommandLine=\"call abld resource $p ".$mmp." -k\" Component=\"".$c->GetPath()."\" Cwd=\"".$c->GetPath()."\\".$c->GetGroup()."\" ID=\"".$id++."\" Stage=\"$stage\" />\n";
-				}
-			}
-		}
-		# Next platform
-		$stage++;
-	}
-	
-	#
-	# Mk are treated by languages
-	#
-	foreach my $lang ( @{ $self-> { __languagelist } } )
-	{  			
-		foreach my $p ( keys (%{ $self->{ __platform } }) )
-		{  			
-			foreach my $c ( @{ $self->{__configuration} } )
-			{
-				foreach my $mmp ( @{ $c->GetMMPs() } )
-				{
-					if ( $c->GetMMPType($mmp) eq 'mk')
-					{
-							print XML "		<Execute CommandLine=\"set LANGUAGE=$lang &amp;&amp; call abld resource $p ".$mmp." -k\" Component=\"".$c->GetPath()."\" Cwd=\"".$c->GetPath()."\\".$c->GetGroup()."\" ID=\"".$id++."\" Stage=\"$stage\" />\n";
-					}
-				}
-			}
-			# Next platform...
-			$stage++;
-		}
-	}
-		
-
-	
-	print 	XML "	</Commands>\n";
-	print 	XML "</Product>\n";	
-	close(XML);
-}
-
-sub __GenerateWhatTBSXML
-{
-	my $self = shift;
-		my $xmlfile = $self->{ __bldfile }."".DEFAULT_WHATXML_PATH;
-	open (XML, ">$xmlfile") or __OUT::Die ("Cannot open '$xmlfile':$!");
-	print 	XML "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n";
-	print 	XML "<Product Name=\"$xmlfile\">\n";
-	print 	XML "\t<Commands>\n";
-	my $id = 1;
-	my $stage = 1;
-		
-	print XML "\t\t<SetEnv Order = \"1\" Name = \"EPOCROOT\" Value = \"\\\"/>\n";
-	print XML "\t\t<SetEnv Order = \"2\" Name = \"PATH\" Value = \"\\epoc32\\gcc\\bin;\\epoc32\\tools;%PATH%\"/>\n";
-	
-	# abld resource
-	foreach my $c ( @{ $self->{__configuration} } )
-	{
-		foreach my $mmp ( @{$c->GetMMPs()} )
-		{
-			if ( $c->GetMMPType($mmp) eq 'mk')
-			{
-				foreach my $lang ( @{ $self-> { __languagelist } } )
-				{  			
-					foreach my $p ( keys (%{ $self->{ __platform } }) )
-					{  			
-						print XML "		<Execute CommandLine=\"set LANGUAGE=$lang &amp;&amp; call abld build $p ".$mmp." -w\" Component=\"".$c->GetPath()."\" Cwd=\"".$c->GetPath()."\\".$c->GetGroup()."\" ID=\"".$id++."\" Stage=\"$stage\" />\n";
-					}
-				}
-			}
-			else
-			{
-				foreach my $p ( keys (%{ $self->{ __platform } }) )
-				{
-					print XML "		<Execute CommandLine=\"call abld build $p ".$mmp." -w\" Component=\"".$c->GetPath()."\" Cwd=\"".$c->GetPath()."\\".$c->GetGroup()."\" ID=\"".$id++."\" Stage=\"$stage\" />\n";
-				}
-			}
-		}
-	}
-	$stage++;
-	print 	XML "	</Commands>\n";
-	print 	XML "</Product>\n";	
-	close(XML);
-}
-
-sub __GenerateCheckTBSXML
-{
-	my $self = shift;
-	my $xmlfile = $self->{ __bldfile }."".DEFAULT_CHECKXML_PATH;
-	open (XML, ">$xmlfile") or __OUT::Die ("Cannot open '$xmlfile':$!");
-	print 	XML "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n";
-	print 	XML "<Product Name=\"$xmlfile\">\n";
-	print 	XML "\t<Commands>\n";
-	my $id = 1;
-	my $stage = 1;
-		
-	print XML "\t\t<SetEnv Order = \"1\" Name = \"EPOCROOT\" Value = \"\\\"/>\n";
-	print XML "\t\t<SetEnv Order = \"2\" Name = \"PATH\" Value = \"\\epoc32\\gcc\\bin;\\epoc32\\tools;%PATH%\"/>\n";
-	
-	# abld resource
-	foreach my $c ( @{ $self->{__configuration} } )
-	{
-		foreach my $mmp ( @{$c->GetMMPs()} )
-		{
-			if ( $c->GetMMPType($mmp) eq 'mk')
-			{
-				foreach my $lang ( @{ $self-> { __languagelist } } )
-				{  			
-					foreach my $p ( keys (%{ $self->{ __platform } }) )
-					{  			
-						print XML "		<Execute CommandLine=\"set LANGUAGE=$lang &amp;&amp; call abld build $p ".$mmp." -c\" Component=\"".$c->GetPath()."\" Cwd=\"".$c->GetPath()."\\".$c->GetGroup()."\" ID=\"".$id++."\" Stage=\"$stage\" />\n";
-					}
-				}
-			}
-			else
-			{
-				foreach my $p ( keys ( %{ $self->{ __platform } } ) )
-				{
-					print XML "		<Execute CommandLine=\"call abld build $p ".$mmp." -c\" Component=\"".$c->GetPath()."\" Cwd=\"".$c->GetPath()."\\".$c->GetGroup()."\" ID=\"".$id++."\" Stage=\"$stage\" />\n";
-				}
-			}
-		}
-	}
-	$stage++;
-	print 	XML "	</Commands>\n";
-	print 	XML "</Product>\n";	
-	close(XML);
-}
-
-
-
-sub HandleEpoc32LocFiles
-{
-	my ($langlist, $zip) = (shift, shift);
-
-	open (LST,">>\\cleanupfiles.lst");
-	foreach my $locfile (@{GetEpoc32LocFiles()})
-	{
-		$zip->AddFile($locfile);
-		print LST $locfile."\n";
-		__OUT::Print ("=== updating '$locfile' ===\n");
-		my ($path, $group, @mmps, @locfiles, @tlocfiles);
-		push(@locfiles, $locfile);
-		my $lid = new __LocInfoData($path, $group, \@mmps, \@locfiles, \@tlocfiles);
-		$lid = __LocInfoData::CreateFromLine(",,\"\",\"$locfile\"");
-		$lid->GenerateStubLocFile($locfile, $langlist);
-	}
-	close(LST);
-}
-
-sub GetEpoc32LocFiles
-{
-	my @array;
-	my (@locs) = `dir /s/b \\epoc32\\include\\*.loc`;
-	foreach my $loc (@locs)
-	{
-		if ($loc =~ /^[A-Z]:(.*)\\(.*?)$/i)
-		{
-			print "Found $loc ($1, $2).\n";
-			push(@array, $1."\\".$2);
-		}
-	}
-	return \@array;
-}
-
-sub __GenerateECMakefile
-{
-	my $self = shift;
-	my $makefile =$self->{ __bldfile }."".DEFAULT_MAKE_PATH;
-	open (XML, ">$makefile") or __OUT::Die ("Cannot open '$makefile':$!");
-	print XML "".$self->{ __bldfile }.":bldmake_bldfiles_all \\\n";
-	print XML "\t abld_makefile_all \\\n";
-	print XML "\t abld_resource_all \n\n";
-
-	print XML "".$self->{ __bldfile }."_what: what_all\n\n";
-	print XML "".$self->{ __bldfile }."_check: check_all\n\n";
-	
-	#print 	XML "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n";
-	#print 	XML "<Product Name=\"$xmlfile\">\n";
-	#print 	XML "\t<Commands>\n";
-	my $id = 1;
-	my $stage = 1;
-	my %componentHash;
-	my $component="";
-	#print XML "\t\t<SetEnv Order = \"1\" Name = \"EPOCROOT\" Value = \"\\\"/>\n";
-	#print XML "\t\t<SetEnv Order = \"2\" Name = \"PATH\" Value = \"\\epoc32\\gcc\\bin;\\epoc32\\tools;%PATH%\"/>\n";
-
-	
-	# bldmake bldfiles
-	#my $concatStages = "bldmake_bldfiles_all:";
-	#my $componontID = 1;
-
-	my $makeUnitList = "bldmake-UNITS:=";
-	
-
-	foreach my $c ( @{ $self->{__configuration} } )
-	{
-		$component = $c->GetPath()."\\".$c->GetGroup();
-		if ( ! exists($componentHash{$component})){
-			$componentHash{$component} = $component;
-			#$concatStages .= "\t\\\n";
-				#<Execute CommandLine="call bldmake bldfiles -k" Component="\s60\icons" Cwd="\s60\icons\group" ID="2" Stage="1" />
-				#print XML "bldmake_bldfiles-$componontID:\n";
-				$makeUnitList .="\t\\\n\t".$c->GetPath()."\\".$c->GetGroup();
-				#print XML "		<Execute CommandLine=\"call bldmake bldfiles -k\" Component=\"".$c->GetPath()."\" Cwd=\"".$c->GetPath()."\\".$c->GetGroup()."\" ID=\"".$id++."\" Stage=\"$stage\" />\n";
-			#$concatStages .= "\t bldmake_bldfiles-$componontID";
-			#$componontID++;
-		}
-	}
-	$makeUnitList .="\n\n";
-	print XML	$makeUnitList;
-	print XML "bldmake_bldfiles_all: \$(addsuffix -bldmake_bldfiles-k,\$(bldmake-UNITS))\n\n";
-	print XML "%-bldmake_bldfiles-k:\n";
-	print XML "\t\@echo ===-------------------------------------------------\n";
-	print XML "\t\@echo === bldmake \$*\n";
-	print XML "\tcd \$* && bldmake bldfiles -k\n";
-	print XML "\t\@echo ===-------------------------------------------------\n";
-
-	#$stage++;
-	print XML "\n\n";
-	#print XML "".$concatStages."\n\n";
-
-	#$concatStages = "abld_makefile_all: ";
-	#$componontID = 1;
-
-	$makeUnitList = "abld-UNITS:= \$(abld-mmp-UNITS) \$(abld-mk-UNITS)";
-
-	my $abldMMPUnitList = "abld-mmp-UNITS:=";
-	my $abldMKUnitList = "abld-mk-UNITS:=";
-	my $isAbldUnitAdded = 0;
-	# abld makefile
-	my $mmptype;
-	foreach my $p ( keys (%{ $self->{ __platform } }) )
-	{
-		foreach my $c ( @{ $self->{__configuration} } )
-		{
-			foreach my $mmp ( @{$c->GetMMPs()} )
-			{
-				#$concatStages .= "\t\\\n";
-				#print XML "abld_makefile-$componontID: bldmake_bldfiles_all \n";
-				#print XML "\t\@echo ===-------------------------------------------------\n";
-				#print XML "\t\@echo === abld_makefile\n";
-				#print XML "\t\@echo === ".$c->GetPath()."\\".$c->GetGroup()."\n";
-				#print XML "\t\@echo ===-------------------------------------------------\n";
-				#print XML "\t cd ".$c->GetPath()."\\".$c->GetGroup()." && abld makefile $p ".$mmp." -k \n\n";
-				$mmptype = $c->GetMMPType($mmp);
-				print "mmptype:...$mmptype\n";
-				print "getgroup:...".$c->GetGroup()."\n";
-				print "getpath:...".$c->GetPath()."\n";
-				print "mmp:...".$mmp."\n";
-				print "length of getgroup string:....".(length($c->GetGroup()))."\n";
-				my $strlength = length($c->GetGroup());
-				if($isAbldUnitAdded == 0){
-					if($mmptype eq 'mmp'){
-						if($strlength != 0){
-								$abldMMPUnitList .="\t\\\n\t".$c->GetPath()."\\".$c->GetGroup()."\\".$mmp;
-							}else {
-								$abldMMPUnitList .="\t\\\n\t".$c->GetPath()."\\".$mmp;
-							}
-					}else {
-						if($strlength != 0){
-								$abldMKUnitList .="\t\\\n\t".$c->GetPath()."\\".$c->GetGroup()."\\".$mmp;
-							}else {
-								$abldMKUnitList .="\t\\\n\t".$c->GetPath()."\\".$mmp;
-							}
-					}
-				}
-				#print XML "		<Execute CommandLine=\"call abld makefile $p ".$mmp." -k\" Component=\"".$c->GetPath()."\" Cwd=\"".$c->GetPath()."\\".$c->GetGroup()."\" ID=\"".$id++."\" Stage=\"$stage\" />\n";
-				#$concatStages .= "\t abld_makefile-$componontID";
-				#$componontID++;
-			}
-		}
-		$isAbldUnitAdded = 1;
-		# Next platform
-		$stage++;
-	}
-	$makeUnitList .="\n\n";
-	$abldMMPUnitList .="\n\n";
-	$abldMKUnitList .="\n\n";
-	print XML	$abldMMPUnitList;
-	print XML	$abldMKUnitList;
-	print XML	 $makeUnitList;
-	
-	my $abldDepRule = "abld_makefile_all: ";
-	
-	foreach my $p ( keys (%{ $self->{ __platform } }) )
-	{
-		print XML "abld_makefile_$p: \$(addsuffix -abld_makefile_$p-k,\$(abld-UNITS))\n\n";
-		print XML "%-abld_makefile_$p-k:bldmake_bldfiles_all\n";
-		print XML "\t\@echo ===-------------------------------------------------\n";
-		print XML "\t\@echo === abld makefile \$*\n";
-		print XML "\tcd \$(*D) && abld makefile $p \$(*F) -k\n";
-		print XML "\t\@echo ===-------------------------------------------------\n\n";
-		$abldDepRule.="\t\\\n\tabld_makefile_$p";
-	}
-	$abldDepRule.="\n\n";
-	print XML $abldDepRule;
-
-	print XML "\n\n";
-	
-	#print XML "".$concatStages."\n\n";
-	#$concatStages = "abld_resource_all:";
-	#$componontID = 1;
-
-	$abldDepRule = "abld_resource_mmp: ";
-	# abld resource
-	foreach my $p ( keys (%{ $self->{ __platform } }) )
-	{
-		print XML "abld_resource_mmp_$p: \$(addsuffix -abld_resource_mmp_$p-k,\$(abld-mmp-UNITS))\n\n";
-		print XML "%-abld_resource_mmp_$p-k:abld_makefile_all\n";
-		print XML "\t\@echo ===-------------------------------------------------\n";
-		print XML "\t\@echo === abld resource $p \$*\n";
-		print XML "\tcd \$(*D) && abld resource $p \$(*F) -k\n";
-		print XML "\t\@echo ===-------------------------------------------------\n\n";
-		$abldDepRule.="\t\\\n\tabld_resource_mmp_$p";
-	}
-	$abldDepRule.="\n\n";
-	print XML $abldDepRule;
-
-	print XML "\n\n";
-	
-	$abldDepRule = "abld_resource_mk: ";
-	foreach my $lang ( @{ $self-> { __languagelist } } )
-	{  			
-		foreach my $p ( keys (%{ $self->{ __platform } }) )
-		{
-			print XML "abld_resource_mk_".$p."_".$lang.": \$(addsuffix -abld_resource_mk_".$p."_".$lang."-k,\$(abld-mk-UNITS))\n\n";
-			print XML "%-abld_resource_mk_".$p."_".$lang."-k:abld_resource_mmp\n";
-			print XML "\t\@echo ===-------------------------------------------------\n";
-			print XML "\t\@echo === abld resource $p \$*\n";
-			print XML "\tSET LANGUAGE=".$lang." &&  cd \$(*D) && abld resource $p \$(*F) -k\n";
-			print XML "\t\@echo ===-------------------------------------------------\n\n";
-			$abldDepRule.="\t\\\n\tabld_resource_mk_".$p."_".$lang;
-		}
-	}
-	$abldDepRule.="\n\n";
-	print XML $abldDepRule;
-	print XML "\n\n";
-
-	print XML "abld_resource_all: abld_resource_mmp abld_resource_mk\n\n";
-
-	$abldDepRule = "abld_what_mmp: ";
-	foreach my $p ( keys (%{ $self->{ __platform } }) )
-	{
-		print XML "abld_what_mmp_$p: \$(addsuffix -abld_what_mmp_$p,\$(abld-mmp-UNITS))\n\n";
-		print XML "%-abld_what_mmp_$p:\n";
-		print XML "\t\@echo ===-------------------------------------------------\n";
-		print XML "\t\@echo === abld what $p \$*\n";
-		print XML "\tcd \$(*D) && abld build $p \$(*F) -w\n";
-		print XML "\t\@echo ===-------------------------------------------------\n\n";
-		$abldDepRule.="\t\\\n\tabld_what_mmp_$p";
-	}
-	$abldDepRule.="\n\n";
-	print XML $abldDepRule;
-
-		$abldDepRule = "abld_what_mk: ";
-	foreach my $lang ( @{ $self-> { __languagelist } } )
-	{  			
-		foreach my $p ( keys (%{ $self->{ __platform } }) )
-		{
-			print XML "abld_what_mk_".$p."_".$lang.": \$(addsuffix -abld_what_mk_".$p."_".$lang.",\$(abld-mk-UNITS))\n\n";
-			print XML "%-abld_what_mk_".$p."_".$lang." : abld_what_mmp\n";
-			print XML "\t\@echo ===-------------------------------------------------\n";
-			print XML "\t\@echo === abld what $p \$*\n";
-			print XML "\tSET LANGUAGE=".$lang." && cd \$(*D) && abld build $p \$(*F) -w\n";
-			print XML "\t\@echo ===-------------------------------------------------\n\n";
-			$abldDepRule.="\t\\\n\tabld_what_mk_".$p."_".$lang;
-		}
-	}
-	$abldDepRule.="\n\n";
-	print XML $abldDepRule;
-
-	print XML "what_all: abld_what_mmp abld_what_mk\n\n";
-
-	$abldDepRule = "abld_check_mmp: ";
-	foreach my $p ( keys (%{ $self->{ __platform } }) )
-	{
-		print XML "abld_check_mmp_$p: \$(addsuffix -abld_check_mmp_$p,\$(abld-mmp-UNITS))\n\n";
-		print XML "%-abld_check_mmp_$p:\n";
-		print XML "\t\@echo ===-------------------------------------------------\n";
-		print XML "\t\@echo === abld check $p \$*\n";
-		print XML "\tcd \$(*D) && abld build $p \$(*F) -c\n";
-		print XML "\t\@echo ===-------------------------------------------------\n\n";
-		$abldDepRule.="\t\\\n\tabld_check_mmp_$p";
-	}
-	$abldDepRule.="\n\n";
-	print XML $abldDepRule;
-
-	$abldDepRule = "abld_check_mk: ";
-	foreach my $lang ( @{ $self-> { __languagelist } } )
-	{  			
-		foreach my $p ( keys (%{ $self->{ __platform } }) )
-		{
-			print XML "abld_check_mk_".$p."_".$lang.": \$(addsuffix -abld_check_mk_".$p."_".$lang.",\$(abld-mk-UNITS))\n\n";
-			print XML "%-abld_check_mk_".$p."_".$lang." : abld_check_mmp\n";
-			print XML "\t\@echo ===-------------------------------------------------\n";
-			print XML "\t\@echo === abld check $p \$*\n";
-			print XML "\tSET LANGUAGE=".$lang." && cd \$(*D) && abld build $p \$(*F) -c\n";
-			print XML "\t\@echo ===-------------------------------------------------\n\n";
-			$abldDepRule.="\t\\\n\tabld_check_mk_".$p."_".$lang;
-		}
-	}
-	$abldDepRule.="\n\n";
-	print XML $abldDepRule;
-
-	print XML "check_all: abld_check_mmp abld_check_mk\n\n";
-	close(XML);
-}
-
-sub __GenerateWhatECMakefile
-{
-	my $self = shift;
-	my $makefile =$self->{ __bldfile }."_".DEFAULT_WHATMAKE_PATH;
-	open (XML, ">$makefile") or __OUT::Die ("Cannot open '$makefile':$!");
-	#print 	XML "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n";
-	#print 	XML "<Product Name=\"$xmlfile\">\n";
-	#print 	XML "\t<Commands>\n";
-	my $id = 1;
-	my $stage = 1;
-
-	print XML "all: abld_resource_all \\\n";
-	print XML "\t abld_mk_all \n\n";
-
-
-	my $concatStages = "abld_resource_all:";
-	my $componontID = 1;
-	
-		
-	#print XML "\t\t<SetEnv Order = \"1\" Name = \"EPOCROOT\" Value = \"\\\"/>\n";
-	#print XML "\t\t<SetEnv Order = \"2\" Name = \"PATH\" Value = \"\\epoc32\\gcc\\bin;\\epoc32\\tools;%PATH%\"/>\n";
-
-	# abld resource
-	foreach my $p ( keys (%{ $self->{ __platform } }) )
-	{  			
-		foreach my $c ( @{ $self->{__configuration} } )
-		{
-			foreach my $mmp ( @{ $c->GetMMPs() } )
-			{ 		
-				if ( $c->GetMMPType($mmp) eq 'mmp')
-				{
-				$concatStages .= "\t\\\n";
-				print XML "abld_resource-$componontID: \n";
-				print XML "\t cd ".$c->GetPath()."\\".$c->GetGroup()." && abld build $p ".$mmp." -w     \n\n";
-				$concatStages .= "\t abld_resource-$componontID";
-				$componontID++;
-				}
-			}
-		}
-		# Next platform
-		$stage++;
-	}
-		print XML "\n\n";
-		print XML "".$concatStages."\n\n";
-	
-
-	$concatStages = "abld_mk_all: ";
-	$componontID = 1;
-
-	#
-	# Mk are treated by languages
-	#
-	foreach my $lang ( @{ $self-> { __languagelist } } )
-	{  			
-		foreach my $p ( keys (%{ $self->{ __platform } }) )
-		{  			
-			foreach my $c ( @{ $self->{__configuration} } )
-			{
-				foreach my $mmp ( @{ $c->GetMMPs() } )
-				{
-					if ( $c->GetMMPType($mmp) eq 'mk')
-					{
-						$concatStages .= "\t\\\n";
-						if($componontID eq 1){
-							print XML "abld_mk-$componontID: abld_resource_all \n";
-						}else {
-							print XML "abld_mk-$componontID: abld_mk-".($componontID-1)." \n";
-						}
-						print XML "\t SET LANGUAGE=".$lang." && cd ".$c->GetPath()."\\".$c->GetGroup()." && abld build $p ".$mmp." -w\n\n";
-						$concatStages .= "\t abld_mk-$componontID";
-						$componontID++;
-					}
-				}
-			}
-			# Next platform...
-			$stage++;
-		}
-	}
-	print XML "\n";
-	print XML "".$concatStages."\n\n";
-	
-	#print 	XML "	</Commands>\n";
-	#print 	XML "</Product>\n";	
-	close(XML);
-}
-
-sub __GenerateCheckECMakefile
-{
-	my $self = shift;
-	my $makefile =$self->{ __bldfile }."_".DEFAULT_CHECKMAKE_PATH;
-	open (XML, ">$makefile") or __OUT::Die ("Cannot open '$makefile':$!");
-	#print 	XML "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n";
-	#print 	XML "<Product Name=\"$xmlfile\">\n";
-	#print 	XML "\t<Commands>\n";
-	my $id = 1;
-	my $stage = 1;
-		
-	print XML "all: abld_resource_all \\\n";
-	print XML "\t abld_mk_all \n\n";
-
-
-	my $concatStages = "abld_resource_all:";
-	my $componontID = 1;
-	
-		
-	#print XML "\t\t<SetEnv Order = \"1\" Name = \"EPOCROOT\" Value = \"\\\"/>\n";
-	#print XML "\t\t<SetEnv Order = \"2\" Name = \"PATH\" Value = \"\\epoc32\\gcc\\bin;\\epoc32\\tools;%PATH%\"/>\n";
-
-	# abld resource
-	foreach my $p ( keys (%{ $self->{ __platform } }) )
-	{  			
-		foreach my $c ( @{ $self->{__configuration} } )
-		{
-			foreach my $mmp ( @{ $c->GetMMPs() } )
-			{ 		
-				if ( $c->GetMMPType($mmp) eq 'mmp')
-				{
-				$concatStages .= "\t\\\n";
-				print XML "abld_resource-$componontID: \n";
-				print XML "\t\@echo ===-------------------------------------------------\n";
-				print XML "\t\@echo === abld_resource-$componontID\n";
-				print XML "\t\@echo === ".$c->GetPath()."\\".$c->GetGroup()."\n";
-				print XML "\t\@echo ===-------------------------------------------------\n";
-				print XML "\t cd ".$c->GetPath()."\\".$c->GetGroup()." && abld build $p ".$mmp." -c     \n\n";
-				$concatStages .= "\t abld_resource-$componontID";
-				$componontID++;
-				}
-			}
-		}
-		# Next platform
-		$stage++;
-	}
-		print XML "\n\n";
-		print XML "".$concatStages."\n\n";
-	
-
-	$concatStages = "abld_mk_all: ";
-	$componontID = 1;
-
-	#
-	# Mk are treated by languages
-	#
-	foreach my $lang ( @{ $self-> { __languagelist } } )
-	{  			
-		foreach my $p ( keys (%{ $self->{ __platform } }) )
-		{  			
-			foreach my $c ( @{ $self->{__configuration} } )
-			{
-				foreach my $mmp ( @{ $c->GetMMPs() } )
-				{
-					if ( $c->GetMMPType($mmp) eq 'mk')
-					{
-						$concatStages .= "\t\\\n";
-						if($componontID eq 1){
-							print XML "abld_mk-$componontID: abld_resource_all \n";
-						}else {
-							print XML "abld_mk-$componontID: abld_mk-".($componontID-1)." \n";
-						}
-						print XML "\t\@echo ===-------------------------------------------------\n";
-						print XML "\t\@echo === abld_mk-$componontID\n";
-						print XML "\t\@echo === ".$c->GetPath()."\\".$c->GetGroup()."\n";
-						print XML "\t\@echo ===-------------------------------------------------\n";
-						print XML "\t SET LANGUAGE=".$lang." && cd ".$c->GetPath()."\\".$c->GetGroup()." && abld build $p ".$mmp." -c\n\n";
-						$concatStages .= "\t abld_mk-$componontID";
-						$componontID++;
-					}
-				}
-			}
-			# Next platform...
-			$stage++;
-		}
-	}
-	print XML "\n";
-	print XML "".$concatStages."\n\n";
-	close(XML);
-}
-
-sub DeleteOriginalLocFiles{
-my $line;
-	if( -e "\\cleanupfiles.lst"){
-		open (LST,"<\\cleanupfiles.lst");
-		while ($line = <LST>)
-		{
-			chomp($line);
-				if( -e "$line.isis.orig"){
-					unlink ( "$line.isis.orig" ) or __OUT::Warning(" Failed to delete stubbed loc file $line.isis.orig --- \n");
-				}else {
-					if( -e "$line.orig"){
-						unlink ( "$line.orig" ) or __OUT::Warning(" Failed to delete stubbed mk file $line.orig --- \n");
-					}
-				}
-				if( -e "$line.isis.trace"){
-					unlink ( "$line.isis.trace" ) or __OUT::Warning(" Failed to delete stubbed loc file $line.isis.trace --- \n");
-				}
-				
-		}
-		close(LST);
-		unlink( "\\cleanupfiles.lst" ) or __OUT::Warning(" Failed to delete cleanupfiles.lst \n");
-	}
-}
-
-sub SaveGeneratedResources
-{
-	my $tpath = shift;
-	my $bldfile = shift;
-	my $time1;
-	my $time2;
-	
-	$time1 = time();
-	__SaveGeneratedResource($tpath, $bldfile);
-	$time2 = time();
-	__OUT::Print ("Total Time SaveGeneratedResources:" .($time2-$time1)."\n");
-}
-sub __SaveGeneratedResource
-{
-	my $tpath = shift;
-	my $bldfile = shift;
-	my %hlist;
-	
-	#
-	# Saving localised resources
-	#
-	__OUT::Print ("<b>Zipping generated resources</b>\n");
-	__OUT::Print ("<b>bldfile ---- $bldfile"."_what_compile.log"."</b>\n");
-	open (LOG, "$bldfile"."_what_compile.log") or __OUT::Die ("Cannot open"."$bldfile"."_what_compile.log:$!");		
-	foreach my $line ( <LOG> )
-	{
-		chomp ($line);
-		if ( $line =~ /^\\/ and $line =~ /\.r(\d+)$/i)
-		{
-			push @{ $hlist{$1} }, $line;
-		}
-	}
-	close (LOG);
-
-	#my $tpath = $self->{__tpath};
-	mkpath ( "$tpath\\LocPackages" ) unless ( -e "$tpath\\LocPackages" );
-	foreach my $lid ( sort keys %hlist )	
-	{
-		__OUT::Print ("<b>Zipping resources of language $lid</b>\n");	
-
-		unlink ("\\resourcelist_${lid}.lst") if ( -e "\\resourcelist_${lid}.lst" );
-		open (LST,">\\resourcelist_${lid}.lst");
-		foreach ( sort @{ $hlist{$lid} } )
-		{
-			print LST "$_\n";
-		}
-		close (LST);
-		my $zip = new ZipUp( "$tpath\\LocPackages\\package_${lid}.zip" );
-		$zip->AddFilesFromList ( "\\resourcelist_${lid}.lst" );
-	}
-}
-
-sub Cleanup
-{
-	my $self = shift;
-	my @ll = ("sc");
-	foreach my $c ( @{ $self->{__configuration} } )
-	{
-		#$c->RestoreOrigLocFiles();
-		#$c->ChangeMMPsAndMKs( \@ll );
-	}	
-}
-1;
-
-
-## @class LocaliseTBS
-# This is an internal class. It is a modelisation of the locinfo data line.
-#
-#
-package LocaliseTBS;
-use strict;
-use File::Path;
-use ISIS::GenBuildTools;
-use IPC::Open3;
-use File::Spec;  
-use File::Basename;
-
-use constant DEFAULT_XML_PATH => ".xml";
-use constant DEFAULT_WHATXML_PATH => "_what.xml";
-use constant DEFAULT_CHECKXML_PATH => "_check.xml";
-use constant DEFAULT_TPATH => "\\zips";
-
-sub Localise
-{
-	my $time1 = time();
-	my $bldfile = shift;
-	__OUT::Print ("Localisation starting - ".localtime()."\n");
-	__OUT::Print ("Localisation  $bldfile -\n");
-	GenBuildTools::BuildTBS( "$bldfile".DEFAULT_XML_PATH );
-	GenBuildTools::BuildTBS( "$bldfile".DEFAULT_WHATXML_PATH );	
-	GenBuildTools::BuildTBS( "$bldfile".DEFAULT_CHECKXML_PATH );	
-	__OUT::Print ("Localisation ending - ".localtime()."\n");
-	my $time2 = time();
-	__OUT::Print ("Total Time:" .($time2-$time1)."\n");
-}
-
-1;
-
-
-
-## @class __LocInfoData
-# This is an internal class. It is a modelisation of the locinfo data line.
-#
-#
-package __LocInfoData;
-use strict;
-use File::Copy;
-
-sub CreateFromLine
-{
-	my ( $line ) = shift;
-	
-	# managing comments and empty lines
-	return undef if ( $line =~ /^\s*((#|\/\/).*)*$/ );
-	my @atoms = split( /,/, $line );
-
-	if (scalar(@atoms)==3 or scalar(@atoms)==4 or scalar(@atoms)==5)
-	{
-			my @locfiles;
-			my @mmps;
-			#path,path_to_bld_inf,"list of mmp",["path/to.loc"[,"/path/to/delivery"]]
-			if ($atoms[2] =~ s/\"([^\"]*)\"/$1/)
-			{
-				@mmps = split(/\s+/, $atoms[2]);
-			}
-			else
-			{
-				__OUT::Die("Malformed3 input file at line: '$line'\n");
-			}
-			if (scalar(@atoms)>3)
-			{
-				if ($atoms[3] =~ s/\"([^\"]*)\"/$1/)
-				{
-					@locfiles = split(/\s+/, $atoms[3])
-				}
-				else
-				{
-					__OUT::Die("Malformed4 input file at line: '$line'\n");
-				}
-
-			}
-				
-			if (scalar(@atoms)==5)
-			{
-				if ($atoms[4] =~ s/\"([^\"]*)\"/$1/)
-				{
-					my @tlocfiles = split(/\s+/, $atoms[4]);
-					push @tlocfiles, &Localiser::DefaultLocPath();
-					return new __LocInfoData($atoms[0], $atoms[1], \@mmps, \@locfiles, \@tlocfiles);
-				}
-				else
-				{
-					__OUT::Die("Malformed5 input file at line: '$line'\n");
-				}
-			}
-			elsif (scalar(@atoms)==4)
-			{
-				my @tlocfiles;
-				push @tlocfiles, &Localiser::DefaultLocPath();
-				return new __LocInfoData($atoms[0], $atoms[1], \@mmps, \@locfiles, \@tlocfiles);
-			}
-			elsif (scalar(@atoms)==3)
-			{
-				my @tlocfiles;
-				push @tlocfiles, &Localiser::DefaultLocPath();
-				return new __LocInfoData($atoms[0], $atoms[1], \@mmps, \@locfiles, \@tlocfiles);
-			}
-		}
-	return undef;
-}
-
-sub new
-{
-	my $class = shift;
-	my ($path, $group, $mmps, $locfiles, $tlocfiles) = @_;
-	my $self = {
-			__path => $path,
-			__group => $group,
-			__mmps => $mmps,
-			__mmpstype => undef,
-			__locfiles => $locfiles,			
-			__tlocfiles => $tlocfiles			
-	};	
-	return bless $self, $class; 
-}
-
-
-sub GetPath
-{
-	my $self = shift;
-	return $self->{__path};
-}
-
-sub GetGroup
-{
-	my $self = shift;
-	return $self->{__group};
-}
-
-sub GetMMPs
-{
-	my $self = shift;
-	return $self->{__mmps};
-}
-
-sub GetMMPType
-{
-	my ($self, $mmp) = (shift, shift);
-	return $self->{__mmpstype}->{$mmp}->{type};
-}
-
-sub GetLocFiles
-{
-	my $self = shift;
-	return $self->{__locfiles};
-}
-
-sub GetTranslatedLocFiles
-{
-	my $self = shift;
-	return $self->{__tlocfiles};
-}
-
-sub CheckBldInf
-{
-	my $self = shift;
-	my $bldinf = $self->GetPath()."/".$self->GetGroup()."/bld.inf";
-	unless ( -e $bldinf )
-	{
-		__OUT::Error ("Cannot find bld.inf in '$bldinf' directory\n");
-		
-		return 0;
-	}
-	return 1;
-}
-
-sub CheckLocFiles
-{
-	my $self = shift;
-	my $result = 1;
-	
-	foreach ( @{ $self->{__locfiles} } )
-	{
-		my $loc = $self->GetPath()."/$_";
-				
-		unless ( -e $loc )
-		{
-			__OUT::Error ("Cannot find '$loc'\n");
-    }
-	}
-	return $result;
-}
-
-sub ZipUpLocFiles
-{
-	my ( $self, $zip ) = (shift, shift);
-	foreach ( @{ $self->{__locfiles} } )
-	{
-		my $loc = $self->GetPath()."/$_";
-		$zip->AddFile( $loc );
-	}	
-}
-
-
-sub GenerateStubLocFiles
-{
-	my ($self, $langlist) = (shift, shift);
-
-	open (LST,">>\\cleanupfiles.lst");
-	
-	foreach ( @{ $self->{__locfiles} } )
-	{
-		my $loc = $self->GetPath()."/$_";
-
-		print LST $loc."\n";
-
-		$self->GenerateStubLocFile( $loc, $langlist );
-	}	
-	close (LST);
-}
-
-sub RestoreOrigLocFiles
-{
-	my ($self, $langlist) = (shift, shift);
-	foreach ( @{ $self->{__locfiles} } )
-	{
-		
-		
-		my $loc = $self->GetPath()."/$_";
-		
-		if ( -e "$loc.isis.orig" )
-		{
-			unlink ( $loc ) or __OUT::Warning(" Failed to delete stubbed loc file $loc \n");
-			copy ( "$loc.isis.orig", $loc) or __OUT::Warning(" Failed to restore loc file from $loc.isis.orig to $loc \n");
-			unlink ( "$loc.isis.orig" ) or __OUT::Warning(" Failed to delete original backup loc file $loc \n");
-		}
-		
-		if ( -e "$loc.isis.trace" )
-		{
-			unlink ( "$loc.isis.trace" ) or __OUT::Warning(" Failed to delete $loc.isis.trace \n");
-			unlink ( "$loc" ) or __OUT::Warning(" Failed to delete original backup loc file $loc \n");
-		}
-		
-		
-	}	
-}
-
-sub GenerateStubLocFile
-{
-	my ($self, $locfile, $langlist) = (shift, shift, shift);
-	
-	my $sav = $locfile.".isis.orig";	
-	my $trace = $locfile.".isis.trace";
-	
-	__OUT::Print (" Backuping $locfile as $sav \n");
-	
-	if ( -e "$trace" )
-	{
-		unlink ( $trace ) or __OUT::Warning(" Failed to delete $trace \n");
-	}
-	
-	if ( -e "$sav" )
-	{
-		unlink ( $sav ) or __OUT::Warning(" Failed to delete stubbed loc file $sav \n");	
-	}
-	copy ($locfile, $sav) or __OUT::Error ("Cannot sav '$locfile'");
-	
-	unless ( -e "$locfile" )
-	{
-		open (TRACE, ">$trace") or __OUT::Error ("Cannot create trace file '$trace':$!");	
-		print TRACE "// File generated by Localiser.pm for tracing missing loc file - DO NOT EDIT!\n\n";	
-		close (TRACE);
-	}
-	
-	__OUT::Print ("=== Stubbing '$locfile' ===\n");
-	
-	open (LOC, ">$locfile") or __OUT::Die ("Cannot open/create '$locfile':$!");
-	print LOC "// File generated by Localiser.pm - DO NOT EDIT!\n\n";
-	
-	my $first = 1;
-	my $name = $locfile;
-	$name =~ /(\w+\.loc)$/;$name=$1;
-	foreach my $lid ( @$langlist )
-	{
-			if ($first)
-			{
-				$first = 0;
-				print LOC "#if defined(LANGUAGE_$lid)\n";				
-			}
-			else
-			{
-				print LOC "#elif defined(LANGUAGE_$lid)\n";				
-			}
-			my $f = $self->FindLocFor($name, $lid);
-			if ($f)
-			{
-				print LOC "\t#include \"".&__MakeRlt($locfile, $f)."\"\n";
-			}
-			else
-			{
-				__OUT::Warning ("no translation to $lid for $locfile\n");
-				print LOC "\t#warning no translation to $lid for $locfile\n";				
-				if ( -e "$sav" )
-				{
-					$sav =~ /(\w+\.loc.isis.orig)$/;
-					print LOC "\t#include \"$1\"\n";
-				}
-			}
-	}
-	if ( -e "$sav" )
-	{
-		print LOC "#else\n";
-		print LOC "// fallback to EE by default\n";
-		$sav =~ /(\w+\.loc.isis.orig)$/;
-		print LOC "#include \"$1\"\n";
-	}
-	print LOC "#endif\n";
-	print LOC "// END OF FILE\n";
-	close (LOC);
-}
-
-sub __MakeRlt
-{
-	my ($spath, $dpath) = @_;
-	#print "__MakeRlt($spath, $dpath)\n";
-	# only backslahes
-	$spath =~ s/\//\\/g;
-	$dpath =~ s/\//\\/g;
-	$spath =~ s/^.:\\/\\/;
-	$dpath =~ s/^.:\\/\\/;
-	# remove filename
-	$spath =~ s/(\\|\/)\w+\.loc$/$1/;
-	# remove transform abs to rel path
-	$spath =~ s/\\[^\\]+/..\\/g;
-	
-	# clean up
-	# no trailing, no double \\
-	$dpath =~ s/^\\+//;
-	$spath =~ s/\\+$//;
-	$dpath =~ s/\\\\/\\/g;
-	$spath =~ s/\\\\/\\/g;
-	return $spath."\\".$dpath;
-}
-
-sub FindLocFor
-{
-	my ($self, $locfile, $lid) = (shift, shift, shift);
-	
-	my $target = $locfile;
-	$target =~ s/\.loc$/_$lid.loc/i;
-
-	foreach my $dir ( @{ $self->GetTranslatedLocFiles() } )
-	{
-		opendir(DIR, "$dir/$lid");
-		my @files = readdir(DIR);
-		close (DIR);
-		
-		foreach my $f ( @files )
-		{
-			if ( $f =~ /^$target$/i )
-			{
-				return "$dir/$lid/$target";
-			}
-		}
-	}
-	return undef;
-}
-
-
-sub TouchRSS
-{
-	my $self = shift;
-	my $component = $self->GetPath();
-	$component =~ s/\//\\/g;	
-	foreach ( `dir /s/b $component\\*.rss 2>&1` )
-	{
-		chomp($_);
-		`attrib -r $_ 2>&1`;
-		`etouch $_ 2>&1`;
-	}
-}
-
-sub ChangeMMPsAndMKs
-{
-		my ($self, $langlist,$zip) = @_;
-		my $finder = new Finder( "\\.(mmp|mk)\$", $self->GetPath() );
-		my $dmmps = $finder->Find();
-		
-		foreach my $mmp ( @{ $self->{__mmps} } )
-		{
-				__OUT::Print ("=== $mmp changing Language to [".join(' ',@$langlist)."]\n");
-				my $dir = $self->GetPath()."/".$self->GetGroup();
-				
-				$self->{__mmpstype}->{$mmp}->{type} = 'notfound';
-				foreach my $f ( @$dmmps )
-				{
-					my $uf = $f;
-					$uf =~ s/\.(mmp|mk)$//i;
-					# Following reqular expression is changed to match with strings starting with a slash or backslash
-					# in order to prevent similarly ending but unidentical files to match with each other.
-					if ( $uf =~ m/[\/\\]$mmp$/i )
-					{
-						__OUT::Print ("  + Found '$mmp' match => '$f'\n");
-						$self->{__mmpstype}->{$mmp}->{path} = $f;
-						if ( $f =~ /^.*\.mmp$/i )
-						{
-							$zip->AddFile($f);
-							$self->{__mmpstype}->{$mmp}->{type} = 'mmp';
-							$self->__AlterLanguage( $langlist, "$f" );
-						}
-						elsif ( $f =~ /^.*\.mk$/i )
-						{
-							$zip->AddFile($f);
-							$self->{__mmpstype}->{$mmp}->{type} = 'mk';
-							$self->__PatchMakefile( $langlist, "$f" ) if ( $f =~ /^.*\.mk$/i );
-						}
-						__OUT::Print ("  - Path: ".$self->{__mmpstype}->{$mmp}->{path}."\n");
-						__OUT::Print ("  - Type: ".$self->{__mmpstype}->{$mmp}->{type}."\n");
-					}
-				}
-				if ( $self->{__mmpstype}->{$mmp}->{type} eq 'notfound' )
-				{
-					__OUT::Error("Cannot find an mmp or mk file for this configuration definition: '$mmp'\n");     			
-				}
-		}
-}
-
-sub __PatchMakefile
-{
-	my ( $self, $langlist, $mkfilepath  ) = @_;
-	print " - $mkfilepath\n";
-	
-	# Restoring if required.
-	if( -e $mkfilepath.'.orig' )
-	{
-		print "  restoring orig file";
-		unlink($mkfilepath);
-		move ( $mkfilepath.'.orig', $mkfilepath );				
-		return 1 if (((scalar(@$langlist))==1) and (@{$langlist}[0] =~ /\s*sc\s*/));
-	}
-	
-	# saving orig file to .orig
-	copy ($mkfilepath, $mkfilepath.'.orig') unless ( -e $mkfilepath.'.orig' );
-	
-	if ( open (MK, "$mkfilepath.orig") )
-	{
-		return 0 unless ( open (MKO, ">$mkfilepath") );
-		print MKO "# DO NOT EDIT FILE PATCHED BY ISIS LOCALISER\n";
-		foreach my $line ( <MK> )
-		{
-			if ($line =~ /^\s*LANGUAGE\s*=/i)
-			{				
-				print MKO "#ISISLOCALISERFIX $line";
-			}
-			elsif ( $line =~ /epocrc\.bat/i )
-			{
-				chomp($line);
-				print MKO "$line -DLANGUAGE_\$(LANGUAGE)\n";
-			}
-			else
-			{
-				print MKO $line;
-			}
-		}
-		close(MK);
-		close (MKO);
-		open (LST,">>\\cleanupfiles.lst");
-		print LST "$mkfilepath\n";
-		close(LST);
-		return 1;
-	}
-	return 0;
-}
-
-
-sub __AlterLanguage
-{
-	my ($self, $langlist, $file) = @_;
-	my ($type,$subst,$open_comment,$rss);
-	if ($file =~ /\.mmp$/i) {
-		$type="mmp";
-	}
-	elsif ($file =~ /\.mmpi$/i){
-		$type="mmp";
-	}
-	else {
-		print STDERR "Unknown file $file\n";
-		return;
-	}
-	print " - $file\n";
-	open(IN, $file);
-	my @lines=<IN>;
-	close (IN);
-	
-	foreach (@lines){
-			if (m!^\s*/\*!){
-					$open_comment=1;
-					if (m!\*/!) {
-							$open_comment=0;
-					}
-					next;
-			}
-			if (m!\*/!) {
-					$open_comment=0;
-					next;
-			}
-			next if ($open_comment);
-			next if (m!^\s*//!);
-			if ((/^\s*lang\s+\w+\s*/i) and ($type eq "mmp"))
-			{
-					$_ = "LANG\t".join(' ', @$langlist)."\n";
-					$subst=1;
-			}
-			if (/\.rss/i)
-			{
-					$rss=1;
-			}
-	}
-	if ($subst) {
-			__OUT::Print (scalar(`attrib -r $file`));
-			open (OUT,">$file") or __OUT::Die ("Cannot open $file for overwriting");
-			print OUT @lines;
-			close OUT;
-	}
-	elsif ($rss)
-	{
-			__OUT::Warning ("$file has no LANGUAGE or LANG definition in MMP,MK file\n");
-	}
-		
-}
-
-1;
-
-## @package HelpManagement
-#
-#
-package HelpManagement;
-use strict;
-use File::Copy;
-
-sub Copy
-{
-	my ($languages, $path, $tpath) = @_;
-	$tpath = $tpath || Localiser::DEFAULT_TPATH;
-	
-	my @help_destination_path=qw(\epoc32\data\z\resource\Help\ \epoc32\winscw\c\resource\Help\ );
-	my $locfiledir="\\S60\\S60Helps\\Data"; # Default path to locfiles (can be changed by $locfile_path option)
-
-	foreach my $lid (@$languages)
-	{  	
-		if (opendir (DIR,  $path."/$lid" ))
-		{
-			
-			my $zip = new ZipUp( File::Spec->catfile($tpath,"LocPackages","package_${lid}.zip" ) );
-
-			foreach my $file ( readdir(DIR))
-			{  			
-				if ($file =~ /(\w+\.h)lp$/i)
-				{
-					my $realname=lc($1).$lid;
-					foreach my $dpath (@help_destination_path)
-					{
-						__OUT::Print ("Exporting '$path/$lid/$file' to '$dpath\\$realname'\n");
-						copy ("$path/$lid/$file", "$dpath\\$realname");
-						$zip->AddFile( "$dpath\\$realname" );
-					}
-				}
-			}
-			closedir(DIR);
-		}
-	}
-}
-
-1;
-
-package DTDHandler;
-use strict;
-use File::Copy;
-use File::Path;
-use File::Find;     # for finding
-use File::Basename; # for fileparse
-
-my (@dtdfiles,@GeneratedFiles);
-#-----------------------------------------------------------------------------------------
-# DTDHandler::find_dtdfiles()
-#
-# Finds the input DTD files in supplied directory. This is call back function
-#
-# Parameters:
-#-----------------------------------------------------------------------------------------
-
-sub find_dtdfiles 
-{
-		my $dtd_name = $File::Find::name;
-		$dtd_name =~ s/\//\\/g;    #Change / marks to \
-		my($n, $d, $ext) = fileparse($dtd_name, '\..*');
-		if( $ext =~ /\.dtd/i)
-		{
-				push @dtdfiles, $dtd_name;
-		}
-}
-
-sub HandleDTD
-{
-		my ($locFilesPath,$dtdTarget) = (shift,shift);
-		$dtdTarget .= "package_dtd.zip";
-
-		my $dtd_path = "\\epoc32\\winscw\\c\\Nokia\\Installs\\MyThemes\\";
-		my %original_dtd;
-		@dtdfiles = ();
-		@GeneratedFiles = ();
-		
-		# get components that include DTD files
-		opendir(SDIR, ${dtd_path}) or __OUT::Die("can not read ${dtd_path}\n");
-		my @folders = grep !/^\.\.?$/ && -d (${dtd_path}.$_), readdir SDIR;
-		closedir(SDIR);
-
-		foreach my $dtd_folder(@folders) {
-			-d "${dtd_path}${dtd_folder}\\loc" || mkpath ("${dtd_path}${dtd_folder}\\loc",0,0x755);
-		}
-		
-		#search for in dtd input files in loc files directory
-		find( \&find_dtdfiles, "$locFilesPath" );
-		
-		#copy all dtd files to dtd handler input directory
-		foreach (@dtdfiles)
-		{
-			foreach my $dtd_folder (@folders) {
-				if ($_ =~ m/$dtd_folder/i) {
-					xcopy ($_,"${dtd_path}${dtd_folder}\\loc");
-				}
-			}
-		}
-
-		__OUT::Print("==== DTD generation  ====\n");
-		#create Dtd files
-		foreach my $dtd_folder (@folders) {
-			__OUT::Print(`\\epoc32\\RELEASE\\WINSCW\\UREL\\XnThemeInstallerCons.exe c:\\Nokia\\installs\\MyThemes\\${dtd_folder}\\loc\\ 2&>1`);
-			rmtree( "\\epoc32\\WINSCW\\C\\private\\10207254\\themes\\sources" );
-			# this kind of xcopy call MUST be replaced by a Perl command
-			__OUT::Print(`call xcopy \\epoc32\\WINSCW\\C\\private\\10207254\\themes\\* \\epoc32\\data\\z\\private\\10207254\\themes\\ \/E \/I \/Y \/R`);
-			__OUT::Print(`call xcopy \\epoc32\\WINSCW\\C\\private\\10207254\\themes\\* \\epoc32\\release\\winscw\\udeb\\z\\private\\10207254\\themes\\ \/E \/I \/Y \/R`);
-			__OUT::Print(`call xcopy \\epoc32\\WINSCW\\C\\private\\10207254\\themes\\* \\epoc32\\release\\winscw\\urel\\z\\private\\10207254\\themes\\ \/E \/I \/Y \/R`); 
-		}
-		
-		__OUT::Print("==== DTD Language packaging  ====\n");
-	
-		system ("zip -r -q ${dtdTarget} \\epoc32\\data\\z\\private\\10207254\\themes\\* \\epoc32\\release\\winscw\\udeb\\z\\private\\10207254\\themes\\* \\epoc32\\release\\winscw\\urel\\z\\private\\10207254\\themes\\*");
-
-		__OUT::Print("==== Done DTD  ====\n");
-}
-
-#-----------------------------------------------------------------------------------------
-# DTDHandler::CopyDTDFiles($lid, $s60locpath)
-#
-# Copy the DTD files
-#
-# Parameters:
-#-----------------------------------------------------------------------------------------
-sub CopyDTDFiles
-{
-		my ($language,$locFilesPath) =  (shift, shift);
-		my @list = ();
-		@dtdfiles = ();
-
-		#search for in dtd input files in loc files directory
-		find( \&find_dtdfiles, "$locFilesPath" );
-
-
-		my $file_found_flag = 0;
-		foreach my $file (@dtdfiles)
-		{
-				my($n, $d, $ext) = fileparse($file, '\..*');
-				
-				# find if file name without extention ends with language id.
-				if ($n =~ /\_$language$/i)
-				{
-						$file_found_flag = 1;
-						
-						#remove language id from the file name
-						$n =~ s/\_$language$//i;
-						
-						#copy dtd file to \epoc32\data\Z\private\101F4CD2\Content\<language> directory
-						my $dist = "\\epoc32\\data\\Z\\private\\101F4CD2\\Content\\$language\\$n$ext";
-						
-						__OUT::Print("Copy '$file' to '$dist'\n");
-						xcopy($file,$dist);
-						push (@list,$dist); 
-						
-						#copy dtd file to \epoc32\release\winscw\udeb\Z\private\101F4CD2\Content\<language> directory
-						$dist =~ s/data/RELEASE\\WINSCW\\UDEB/i;
-						__OUT::Print("Copy '$file' to '$dist'\n");
-						xcopy($file,$dist);
-						push (@list,$dist); 
-						
-						#copy dtd file to \epoc32\release\winscw\urel\Z\private\101F4CD2\Content\<language> directory
-						$dist =~ s/UDEB/UREL/i;
-						__OUT::Print("Copy '$file' to '$dist'\n");
-						xcopy($file,$dist);
-						push (@list,$dist); 
-				}
-		}
-		
-		__OUT::Print("Error: Dtd files for $language not found!!!") if (! $file_found_flag);
-		
-		return @list;
-}
-
-#-----------------------------------------------------------------------------------------
-# DTDHandler::xcopy()
-#
-# copies file from source path to destination path. 
-#
-# Parameters:
-#       Source file with path
-#       Destination file with path
-#-----------------------------------------------------------------------------------------
-
-sub xcopy
-{
-		my $source = shift;
-		my $dist = shift;
-		
-		# if distination file exist then clear read flag
-		if (-f $dist)
-		{
-				chmod (0755 , $dist);
-		}
-		else
-		{
-				my($n, $d, $ext) = fileparse($dist, '\..*');
-				# check weather distination directory exist or not. If directory doesn't exist then create it.
-				-d $d || mkpath($d, 0, 0x755);
-		}
-		
-		# copy source to distination
-		copy($source,$dist);
-}
-
-1;
-
-## @package Locales
-#
-#
-package Locales;
-use File::Spec;
-
-sub CreatesLocales
-{
-	my ($languages, $product, $flags, $ddir) = @_;
-	
-	$ddir = $ddir || Localiser::DEFAULT_TPATH;
-	
-	foreach my $lid (@$languages)
-	{
-		my $zip = new ZipUp( File::Spec->catfile($ddir,"LocPackages","package_${lid}.zip") );
-		$zip->AddFile( __GenerateLocalesIBY((defined($product))?"${product}_":'', $lid, $flags) );
-	}
-}
-
-use IPC::Open3;  
-sub __GenerateLocalesIBY($$$)
-{
-	my ($prefix, $langcode, $flags) = @_;
-	return if ($langcode =~ /sc/);
-	return if ($langcode !~ /\d+/);
-	
-	my $output = File::Spec->catfile("/epoc32/rom/include","${prefix}locales_$langcode.iby");
-	
-	__OUT::Print ("Generating $output...\n");
-	
-	open (OUT, ">$output");
-	print OUT "#ifndef __LOCALES_".$langcode."_IBY__\n";
-	print OUT "#define __LOCALES_".$langcode."_IBY__\n";
-	
-	
-	my $arg = "-I ..\\include\\oem -I .\\include -I.\\Variant ";
-	foreach (@$flags) { $arg .= " -D$_ "; }
-	
-
-	# use open3 to manage the error stream
-	chdir ("\\epoc32\\rom");
-	local (*WTRFH, *RDRFH, *ERRFH);
-	my $cmd = "cpp -nostdinc -u $arg  include\\locales_sc.iby -include .\\include\\header.iby";	
-	__OUT::Print ("Calling $cmd\n");
-	my $childpid = open3(\*WTRFH, \*RDRFH, \*ERRFH, $cmd);
-	close(WTRFH);
-	while(<RDRFH>)
-	{
-		if  (/^\s*data\s*=\s*MULTI_LINGUIFY/)
-		{
-			/MULTI_LINGUIFY\s*\(\s*(\S+)\s+(\S+)\s+(\S+)\s*\)/;
-			my $ext = $1;
-			my $w1 = $2;
-			my $w2 = $3;
-			if ( $ext=~ /^RSC$/i )
-			{
-				$ext =~ s/RSC/r$langcode/i;
-				print OUT "data=$w1.$ext $w2.$ext\n";
-			}
-			else
-			{
-				__OUT::Warning ("Cannot extract '$_'");
-			}
-		}
-		elsif (/\.rsc/i)
-		{
-			s/\.rsc/\.r$langcode/ogi;
-			print OUT $_;
-		}
-		elsif (/\.dbz/i)
-		{
-			s/\.dbz/\.d$langcode/ogi;
-			print OUT $_;
-		}
-		elsif (/\.hlp/i)
-		{
-			s/\.hlp/\.h$langcode/ogi;
-			print OUT $_;
-		}
-		elsif ( /\\elocl\.dll/i )
-		{			
-			s/elocl\.dll/elocl\.$langcode/ogi;
-			s/elocl\.loc/elocl\.$langcode/ogi;
-			print OUT $_;
-		}
-		#rename Content\01 to Content\xx (where xx is language id). This is for handlng DTD files
-		elsif (/Content\\01/)
-		{
-			s/Content\\01/Content\\$langcode/ogi;
-			print OUT $_;
-		}
-		#rename .o0001 to .0xx (where xx is language id). This is for handlng DTD files
-		elsif (/\.o0001/i)
-		{
-			my $line = $_;
-			my $lang = $langcode;
-			#round up language id to 4 digis
-			while (length($lang) < 4)
-			{
-				$lang = "0".$lang;
-			}
-
-			$line =~ s/\.o0001/\.o$lang/ogi;
-			print OUT $line;
-		}
-		elsif ( /^\s*(data|file)=/ )
-		{
-			__OUT::Warning ("This should not be included in resource.iby '$_'\nThis file should be included using an 'applicationnameVariant.iby' file.\n");
-		}
-	}
-	print OUT "#endif\n";
-	close(OUT);
-	# Closing cleanly....
-	close(RDRFH);	
-	
-	# Manage cpp errors
-	my $err = "";
-	while(<ERRFH>) { $err .= "$_\n";}
-	if (not ($err eq "")){ __OUT::Error ("$err"); }
-
-	# Closing cleanly....
-	close(ERRFH);
-	waitpid($childpid, 0);
-
-	chdir("\\");
-	return $output;
-}
-
-1;
-# End of File
--- a/buildframework/helium/tools/localisation/localiser/isis_EClocaliser.pl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,245 +0,0 @@
-#!/usr/bin/perl -w
-
-#============================================================================ 
-#Name        : isis_EClocaliser.pl 
-#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: 
-#============================================================================
-use strict;
-use FindBin;
-use lib "$FindBin::Bin/.";
-use POSIX qw(strftime);
-use ECLocaliser;
-use Getopt::Long;
-use ISIS::Logger2;
-
-# ISIS constants.
-use constant ISIS_VERSION 		=> '1.1.2';
-use constant ISIS_LAST_UPDATE => '03/11/2006';
-
-use constant ISIS_PREP_STATE    => 0;
-use constant ISIS_BUILD_STATE    => 1;
-use constant ISIS_CLEANUP_STATE    => 2;
-#------------------------------------------------------------------------------
-# Main script.
-#------------------------------------------------------------------------------
-
-
-my @locinfolist;
-my @locinfoincludedir;
-my $langs;
-my $help = 0;
-my $product = undef;
-my $dolocal = 1;
-my $keepgoing = 0;
-my $s60locfiles = undef;
-my $destdir = undef;
-my $logname = "isis_localiser.html";
-my @romflags;
-my $dtdsupport = 1;
-my $state = ISIS_PREP_STATE;
-my $ecBuild = 0;
-my $bldfileName = undef;
-
-# To get -D option working
-Getopt::Long::Configure ("pass_through");
-
-# Reading command line
-GetOptions( 'c=s' => \$langs,
-					  'i=s'=> \@locinfolist,
-					  'includepath=s' => \@locinfoincludedir,
-					  'h!' => \$help,
-					  'k' => \$keepgoing,
-					  'p=s' => \$product,
-					  'local!' => \$dolocal,
-					  's60locfiles=s'	=> \$s60locfiles,
-					  'dest=s'	=> \$destdir,
-					  'dtd!' => \$dtdsupport,
-					  'l=s' => \$logname,
-					  'state=i'=> \$state,
-					  'b=s' => \$bldfileName,
-					  'ecbuild!' => \$ecBuild) or &Usage();					  
-
-foreach(@ARGV)
-{
-	push @romflags, $1 if (/^-D(\S+)$/);
-}
-
-
-# Set S60LocFiles default location
-&Localiser::DefaultLocPath($s60locfiles);
-
-OUT2XML::SetXMLLogName( $logname );
-OUT2XML::SetXMLLogInterface("http://fawww.europe.nokia.com/isis/isis_interface");
-OUT2XML::SetXMLLogVerbose("on");
-OUT2XML::OpenXMLLog();
-OUT2XML::Header("ISIS Localiser");
-OUT2XML::OpenMainContent("Localisation");
-
-if($state == ISIS_PREP_STATE ){
-
-	my $time1 = time();
-
-	if (not defined($langs) or scalar (@locinfolist)==0)
-	{
-		&Usage();
-		exit 0;
-	}
-	
-	print "ecbuild......$ecBuild";
-
-	OUT2XML::OpenEvent ("Previous cleanup if any!\n");
-	Localiser::DeleteOriginalLocFiles();
-	OUT2XML::CloseEvent ();
-	
-	if ( -e "LocEE.zip" )
-	{
-		OUT2XML::OpenEvent ("Unzip EE!\n");
-		OUT2XML::Print (scalar(`unzip -o -d \\ LocEE.zip 2>&1`));
-		unlink ("LocEE.zip");
-		OUT2XML::CloseEvent ();
-	}
-
-	# Get the language list
-	my @languagelist = split(/\s+/, $langs);
-	
-	
-	my $localiser = new Localiser(\@locinfolist, \@languagelist, \@locinfoincludedir, $bldfileName, $destdir);
-	
-	# Set keepgoing option
-	$localiser->Keepgoing($keepgoing);
-	
-	$localiser->SetLoggerPackage( "OUT2XML" );
-	$localiser->Initialise();
-	
-	OUT2XML::OpenEvent ("Checking configuration\n");
-	unless ( $localiser->CheckConfig() )
-	{
-		OUT2XML::Error ("Config uncorrect!\n");
-		OUT2XML::Die ( 0 );
-	}
-	OUT2XML::CloseEvent ();
-	
-	
-	
-	if ($dtdsupport)
-	{
-		OUT2XML::OpenEvent ("Copy DTDs\n");
-		DTDHandler::HandleDTD(&Localiser::DefaultLocPath(),);
-		foreach my $lid (@languagelist)
-		{
-			DTDHandler::CopyDTDFiles($lid, &Localiser::DefaultLocPath());
-		}
-		OUT2XML::CloseEvent ();
-	}
-	
-	OUT2XML::OpenEvent ("Preparing localisation Build Area\n");
-	$localiser->PrepareLocalisation( "LocEE.zip");
-	OUT2XML::CloseEvent ();
-
-	OUT2XML::OpenEvent ("Generating build files\n");
-	if($ecBuild){
-		$localiser->GenerateMakefiles( );
-	}else {
-		$localiser->GenerateXMLFiles( );
-	}
-	my $time2 = time();
-
-	print ("Total Time 1 state:" .($time2-$time1)."\n");	
-}elsif($state == ISIS_BUILD_STATE){
-	
-	
-	OUT2XML::OpenEvent ("Building\n");
-	LocaliseTBS::Localise($bldfileName);
-	#$localiser->Localise();
-	OUT2XML::CloseEvent ();
-}elsif($state eq ISIS_CLEANUP_STATE){
-
-	my $time1 = time();
-	Localiser::SaveGeneratedResources($destdir,$bldfileName);
-	Localiser::DeleteOriginalLocFiles();
-	# Get the language list
-	my @languagelist = split(/\s+/, $langs);
-
-	if ($help)
-	{
-		OUT2XML::OpenEvent ("Coping helps!\n");
-			HelpManagement::Copy( \@languagelist, "\\s60\\S60Helps\\Data", $destdir);
-		OUT2XML::CloseEvent ();
-	}
-	
-	
-	if ($dolocal)
-	{
-		OUT2XML::OpenEvent ("Generating locales_xx.iby!\n");
-			Locales::CreatesLocales( \@languagelist, $product, \@romflags, $destdir );
-		OUT2XML::CloseEvent ();
-	}	
-	my $time2 = time();
-
-	print ("Total Time 3 state:" .($time2-$time1)."\n");
-
-	#OUT2XML::OpenEvent ("Cleaning up!\n");
-	#$localiser->Cleanup( );
-	#OUT2XML::CloseEvent ();
-	
-	OUT2XML::OpenEvent ("Unzip EE!\n");
-	OUT2XML::Print (scalar(`unzip -o -d \\ LocEE.zip 2>&1`));
-	unlink ("LocEE.zip");
-	OUT2XML::CloseEvent ();
-}
-
-
-
-#my $seconds = ($time2-$time1);
-#OUT2XML::OpenSummary("Localiser");
-#OUT2XML::SummaryElmt("Input list", join(' ',@locinfolist));
-#OUT2XML::SummaryElmt("Include path", join(' ',@locinfoincludedir));
-#OUT2XML::SummaryElmt("Language list", $langs);
-#OUT2XML::SummaryElmt("Custom destination directory", $destdir) if ($destdir);
-#OUT2XML::SummaryElmt("Total time", scalar(@languagelist). " language(s) built in ".strftime ("%H:%M:%S", localtime($seconds)));
-#OUT2XML::SummaryElmt("Time per language", $seconds/scalar(@languagelist). "s/language");
-#OUT2XML::CloseSummary();
-
-
-OUT2XML::CloseMainContent();
-OUT2XML::CloseXMLLog();
-
-#------------------------------------------------------------------------------
-# Script usage.
-#------------------------------------------------------------------------------
-sub Usage
-{
-	print " isis_localiser.pl - v".ISIS_VERSION." - ".ISIS_LAST_UPDATE."\n";
-	print " Usage : isis_localiser.pl [-c=\"01 02...\"] [-i=\\locinfo_xxx.txt]\n\n";
-  print " Main flags:\n";
-	print "    -c=\"01 02\"                       specify the language list of language to build.\n";
-	print "    -i=locinfo_xxx.txt                 specify a loc info file to use, can be use more that once.\n";
-	print "    -h                                 enable help management.\n";
-	print "    -k                                 keepgoing, do not leave if error.\n";
-	print "    -s60locfiles=\\s60\\s60locfiles    set a different default delivery.\n";
-	print "    -dest=\\path                       set default destination configuration (default /zips).\n";
-	print "    -nolocal                           do not create locales ibys.\n";
-	print "    -l=logname.html                    change the logger output to logname.html(isis_logger.html).\n";
-	print "\n Optional flags:\n";                 
-	print "    -p=product                         used to rename locales iby in product_locales_xx.iby.\n";
-	print "    -DFLAG                             used to parse locales iby.\n";
-	exit 0;
-}
-
-#------------------------------------------------------------------------------
-# End of file.
-#------------------------------------------------------------------------------
--- a/buildframework/helium/tools/localisation/templates/rom/mc_variant_imaker.oby	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-/*
-* 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: 
-*
-*/
-/*
- *
- * mc_variant_imaker.oby
- *
- * This file is an example. Product can update it accordingly to their needs.
- *
- */
-#ifndef VARIANT_IMAKER_IBY
-#define VARIANT_IMAKER_IBY
-
-#include <ncp_feature_consts.hrh>
-#define VARIANT_INCLUDE(prefix,suffix) <##concat3(prefix,VARIANTID,suffix)##>
-#define LP_INCLUDE(prefix,suffix) <##concat3(prefix,LPID,suffix)##>
-
-ROM_IMAGE[2] {
-#ifdef VARIANTID
-	#include LP_INCLUDE(variant_,.iby)
-#else
-	#include <locales_sc.iby>
-#endif
-}
-
-ROM_IMAGE[3] {
-#include <variation.iby>
-}
-
-#endif // VARIANT_IMAKER_IBY
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/tools/logging/logging.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,443 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : logging.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:
+
+============================================================================
+-->
+<!--* @package framework -->
+<project name="logging" xmlns:hlm="http://www.nokia.com/helium">
+    <description>
+        Targets related to log parsing, rendaring, upload to diamonds etc.
+    </description>
+    
+    
+    <!-- This is where the preparation build logs are stored.
+    @type string
+    @scope private
+    -->
+    <property name="prep.log.dir" location="${build.log.dir}/prep"/>
+    <!-- This is where the compile logs are stored.
+    @type string
+    @scope private
+    -->
+    <property name="compile.log.dir" location="${build.log.dir}/compile"/>
+    <!-- This is where the ats test logs are stored.
+    @type string
+    @scope private
+    -->
+    <property name="test.log.dir" location="${build.log.dir}/test"/>
+    <!-- This is where the archive logs are stored.
+    @type string
+    @scope private
+    -->
+    <property name="archive.log.dir" location="${build.log.dir}/archive"/>
+    <!-- This is where the roms logs are stored.
+    @type string
+    @scope private
+    -->
+    <property name="roms.log.dir" location="${build.log.dir}/roms"/>       
+    <!-- This is where the post build logs are stored.
+    @type string
+    @scope private
+    -->
+    <property name="post.log.dir" location="${build.log.dir}/post"/>
+    <!-- This is where the localisation logs are stored.
+    @type string
+    @scope private
+    -->
+    <property name="localisation.log.dir" location="${build.log.dir}/localisation"/>    
+    
+    
+    <!-- Macro to record content to a separate log file without recording in the main log. -->
+    <macrodef name="recordStartMacro" uri="http://www.nokia.com/helium">
+        <attribute name="name"/>
+        <attribute name="emacsmode" default="false"/>
+        <sequential>
+            <if>
+                <available file="${build.log.dir}" type="dir"/>
+                <then>
+                    <hlm:record name="${build.log.dir}/@{name}" action="start" append="true" emacsmode="@{emacsmode}" loglevel="${ant.loglevel}"/>
+                </then>
+            </if>
+        </sequential>
+    </macrodef>
+
+
+    <!-- Macro to stop recording content to a separate log file without recording in the main log. -->
+    <macrodef name="recordStopMacro" uri="http://www.nokia.com/helium">
+        <attribute name="name"/>
+        <sequential>
+            <if>
+                <available file="${build.log.dir}/@{name}"/>
+                <then>
+                    <hlm:record name="${build.log.dir}/@{name}" action="stop" append="true"/>
+                </then>
+            </if>
+        </sequential>
+    </macrodef>
+
+    
+    <!--Macro to stop recording to the main log file (if present) and record to
+        a separate log file that is filtered after logging is stopped. -->
+    <macrodef name="filterRecordStartMacro" uri="http://www.nokia.com/helium">
+        <attribute name="pattern" default=""/>
+        <attribute name="category" default=""/>
+        <sequential>
+            <hlm:record name="${build.cache.log.dir}/temp_ant_build.log" action="start" loglevel="${ant.loglevel}">
+                <hlm:recordfilter category="@{category}" regexp="@{pattern}" />
+            </hlm:record>
+        </sequential>
+    </macrodef>
+    
+
+    <!--Macro to stop recording the seperate filtered log file, filter the passwords
+    and start recording in main log file -->
+    <macrodef name="filterRecordStopMacro" uri="http://www.nokia.com/helium">
+        <attribute name="log" default="${build.log}"/>
+        <attribute name="append" default="true"/>
+        <sequential>
+            <hlm:record name="${build.cache.log.dir}/temp_ant_build.log" action="stop"/>                    
+            <concat destfile="@{log}" append="@{append}">
+                <filelist dir="${build.cache.log.dir}" files="temp_ant_build.log"/>                        
+            </concat>
+            <delete file="${build.cache.log.dir}/temp_ant_build.log" failonerror="false"/>
+            <echo>End of filtering @{log} for passwords</echo>
+        </sequential>
+    </macrodef>
+    
+    
+    <!-- Extract logs from text file and process error/warnings/components name etc
+    into xml file.
+    @deprecated Please consider using the metadata framework.
+    -->
+    <scriptdef name="logextract" language="jython"  uri="http://www.nokia.com/helium">
+        <attribute name="file" />
+        <attribute name="outputfile" />
+        <element name="fileset" type="fileset"/>
+        <element name="logfilterset" classname="com.nokia.ant.types.LogFilterSet"/>
+        <![CDATA[
+import os.path
+import log2xml
+import java.io
+
+def convertFile(inputfile, outputfile, config):
+    if (outputfile != None):
+        print "output file not none"
+        print "output file: %s" % outputfile
+        targetfile = str(outputfile)
+    else:
+        #print "output file: %s" % outputfile
+        targetfile = "%s.xml" % inputfile
+        #print "targetFile %s" % targetfile
+    if not os.path.exists(targetfile) or \
+       (os.path.exists(targetfile) and os.path.getmtime(inputfile) > os.path.getmtime(targetfile)):
+        self.getProject().log("Converting %s..." % inputfile)
+        log2xml.convert(inputfile, targetfile, False, config)
+    else:
+        self.getProject().log("Extracted log is uptodate: %s" % inputfile)
+        
+config = log2xml.DEFAULT_CONFIGURATION
+logfilterset = elements.get("logfilterset")
+if logfilterset != None and logfilterset.size() > 0:
+    # if any logfilterset are dfined then
+    # it override the default configuration
+    config = {}
+    for filtersetid in range(logfilterset.size()):
+        filterset = logfilterset.get(filtersetid)
+        if filterset.isReference():
+            filterset = filterset.getRefid().getReferencedObject(project)
+        filters = filterset.getFilters()
+        for filterid in range(filters.size()):
+            if not filters.get(filterid).getCategory() in config:
+                config[filters.get(filterid).getCategory()] = []
+            config[filters.get(filterid).getCategory()].append(str(filters.get(filterid).getRegex()))
+
+fileset = elements.get("fileset")
+outputfile = attributes.get("outputfile")
+if fileset != None and fileset.size() > 0:
+    for filesetid in range(fileset.size()):
+        dirscanner = fileset.get(filesetid).getDirectoryScanner(project)
+        for filename in dirscanner.getIncludedFiles():
+            inputfile = str(java.io.File(dirscanner.getBasedir(), str(filename)).getAbsolutePath())
+            convertFile(inputfile, outputfile, config)
+elif attributes.get("file") != None:
+    inputfile = str(java.io.File(str(attributes.get("file"))).getAbsolutePath())
+    convertFile(inputfile, outputfile, config)
+else:
+    self.log("No input specified.")
+        ]]>
+    </scriptdef>
+    
+    
+    <!--Macro to stop recording to the main log file (if present) and record to
+        a separate log file into a temporary location (doesn't need the build aread to work). -->
+    <macrodef name="tempRecordStartMacro" uri="http://www.nokia.com/helium">
+        <attribute name="name"/>
+        <sequential>
+            <mkdir dir="${build.cache.log.dir}"/>
+            <hlm:record name="${build.cache.log.dir}/@{name}" action="start" loglevel="${ant.loglevel}"/>
+        </sequential>
+    </macrodef>
+
+
+    <!--Macro to restart  the main log file (if present) and stop recording to
+        a separate log file into a temporary location the file is next xml summarized 
+        and potentially copied to the build area (if exists). Else those files will get copied during the 
+        build area preparation. -->
+    <macrodef name="tempRecordStopMacro" uri="http://www.nokia.com/helium">
+        <attribute name="name"/>
+        <attribute name="phase" default=""/>
+        <attribute name="database" default="${metadata.dbfile}"/>
+        <attribute name="filterref" default="filterset.temprecord"/>
+        <sequential>
+            <mkdir dir="${build.cache.log.dir}"/>
+            <mkdir dir="${build.log.dir}"/>
+            <mkdir dir="${build.cache.log.dir}/signals"/>
+            <hlm:record name="${build.cache.log.dir}/@{name}" action="stop" loglevel="${ant.loglevel}"/>
+            <!--Temporary solution, the logextract in general 
+                needs to be handled in a better way (not all logs needs to be processed,
+                logextract / counting errors could be merged and logextract should be
+                executed on a need basis and not to process for all stopmacro.-->
+            <!-- Todo: metadata: replace logextract -->
+            <hlm:metadatarecord database="@{database}">
+                <hlm:antmetadatainput>
+                    <fileset casesensitive="false" file="${build.cache.log.dir}/@{name}" />
+                    <metadatafilterset refid="@{filterref}" />
+                </hlm:antmetadatainput>
+            </hlm:metadatarecord>
+            <hlm:generateBuildStatus dbfile="@{database}" output-dir="${build.cache.log.dir}/signals" file="@{name}" />
+            <if>
+                <isset property="@{phase}.log.dir" />
+                <then>
+                    <mkdir dir="${@{phase}.log.dir}"/>
+                    <copy todir="${@{phase}.log.dir}" failonerror="false">
+                        <fileset casesensitive="false" file="${build.cache.log.dir}/@{name}" />
+                    </copy>
+                </then>
+                <else>
+                    <copy todir="${build.log.dir}" failonerror="false">
+                        <fileset casesensitive="false" file="${build.cache.log.dir}/@{name}" />
+                    </copy>
+                </else>
+            </if>            
+            <copy todir="${build.signal.status.dir}" failonerror="false">
+                <fileset casesensitive="false" dir="${build.cache.log.dir}/signals" />
+            </copy>
+        </sequential>
+    </macrodef>
+    
+    
+    <!-- Macro to start logging to a separate log file.
+    
+    This will stop logging to the main ant_build log file until stopSpecificLogMacro
+    is called. -->
+    <macrodef name="startSpecificLogMacro" uri="http://www.nokia.com/helium">
+        <attribute name="name"/>
+        <attribute name="regexp" default=""/>
+        <attribute name="backup" default="false"/>
+        <attribute name="phase" default=""/>
+        
+        <sequential>
+            <if>
+                <isset property="@{phase}.log.dir" />
+                <then>
+                    <mkdir dir="${@{phase}.log.dir}"/>
+                </then>
+            </if> 
+            <mkdir dir="@{name}/.."/>
+            <hlm:record name="@{name}" action="start" loglevel="verbose" backup="@{backup}" backupProperty="backup.file.name">
+                <hlm:recordfilter category="@{phase}" regexp="@{regexp}" />
+            </hlm:record>
+        </sequential>
+    </macrodef>
+
+
+    <!--Macro to restart  the main log file (if present) and stop recording to
+        a separate log file. -->
+    <macrodef name="stopSpecificLogMacro" uri="http://www.nokia.com/helium">
+        <attribute name="name"/>
+        <attribute name="phase" default=""/>
+        <sequential>
+            <hlm:record name="@{name}" action="stop" loglevel="verbose"/>
+        </sequential>
+    </macrodef>
+
+    <!-- Temp BMD macro -->
+    <macrodef name="bmdLogExtractMacro" uri="http://www.nokia.com/helium">
+        <attribute name="log"/>
+        <attribute name="metadatafilterset" default="common"/>
+        <sequential>
+            <hlm:metadatarecord database="${metadata.dbfile}">
+                <hlm:textmetadatainput>
+                    <fileset casesensitive="false" file="@{log}"/>
+                    <metadatafilterset refid="@{metadatafilterset}" />
+                </hlm:textmetadatainput>
+            </hlm:metadatarecord>
+            <!-- todo: check to add for usage and add genbuildstatus macro -->
+            <basename property="log.name" file="@{log}"/>
+            <fmpp sourceFile="${helium.dir}/tools/common/templates/db2xml.xml.ftl"
+                         outputfile="@{log}.xml">
+                <data expandProperties="yes">
+                    dbPath: ${metadata.dbfile}
+                    log: ${log.name}
+                    ant: antProperties()
+                </data>
+            </fmpp>
+        </sequential>
+    </macrodef>
+    
+    
+    <!-- Merges all XML log files ending in ".log2.xml" in the build log directory
+    into a single summary log file. -->
+    <target name="log-merge"  unless="metadata.enable">
+        <mkdir dir="${build.log.dir}"/>
+        <dependset>
+            <srcfileset dir="${build.log.dir}" includes="**/${build.id}*.log.xml"/>
+            <targetfileset file="${build.summary.file}"/>
+        </dependset>
+        <if>
+            <not>
+                <available file="${build.summary.file}"/>
+            </not>
+            <then>
+                <echo>Merging all *.log.xml files</echo>        
+                <mkdir dir="${build.log.dir}/summary"/>
+                <xmltask  dest="${build.summary.file}">
+                    <insert path="/"  >
+                    <![CDATA[
+                    <logSummary/>
+                    ]]>
+                    </insert>
+                </xmltask>
+                <for param="file">
+                    <path>
+                        <fileset dir="${build.log.dir}">
+                            <include name="**/${build.id}*.log.xml"/>
+                        </fileset>
+                        <fileset dir="${temp.build.dir}">
+                            <include name="**/${build.id}*.log.xml"/>
+                        </fileset>
+                    </path>
+                    <sequential>
+                        <echo>Inserting @{file} into summary.</echo>
+                        <!--<xmltask source="${build.summary.file}"
+                                 dest="${build.summary.file}">
+                           <insert path="/logSummary" file="@{file}" />
+                        </xmltask>-->
+                        <hlm:assertPropertySet property="build.summary.file" message="Property build.summary.file is not defined." />
+                        <script language="jython" setbeans="false">
+# Temporary solution
+import log2xml
+log2xml.append_summary(project.getProperty('build.summary.file'), r'@{file}')
+                        </script>                        
+                    </sequential>
+                </for>
+            </then>
+            <else>
+                <echo>Summary XML log file does not need updating.</echo>
+            </else>
+        </if>
+    </target>
+    
+    
+    <!-- Outputs an HTML readable version of the summary log. -->
+    <target name="render-log-summary">
+        <if>
+            <and>
+                <available file="${build.log.dir}/${build.id}_info.log.xml"/>
+                <available file="${metadata.dbfile}"/>
+            </and>
+            <then>
+                <fmpp sourceFile="${helium.dir}/tools/common/templates/log/summary_metadata_orm.html.ftl"
+                             outputfile="${build.log.dir}/${build.id}_summary.html">
+                    <freemarkerLinks expandProperties="yes">
+                        macro: ${helium.dir}/tools/common/templates/macro
+                    </freemarkerLinks>
+                    <data expandProperties="yes">
+                        dbPath: ${metadata.dbfile}
+                        loginfo: xml(${build.log.dir}/${build.id}_info.log.xml)
+                        ant: antProperties()
+                    </data>
+                </fmpp>
+                <if>
+                    <not>
+                        <available file="${build.log.dir}/${build.id}_summary.html"/>
+                    </not>
+                    <then>
+                        <echo message="Error: failed to generate Summary file" />
+                    </then>
+                </if>
+            </then>
+        </if>
+    </target>
+    
+    <!-- Prepare email for build summary -->
+    <target name="logger-email" depends="log-merge">
+        <fmpp sourceRoot="${helium.dir}/tools/common/templates/log" includes="email.html.ftl" outputRoot="${build.log.dir}/summary"
+              replaceExtension="html.ftl, html">
+            <data expandProperties="yes">
+                doc: xml(${build.summary.file})
+                ant: antProperties()
+            </data>
+        </fmpp>        
+    </target>
+    
+
+    <!-- Test target to show how Diamond metadata could be rendered. -->
+    <target name="render-diamonds-data" depends="log-merge">
+        <mkdir dir="${build.log.dir}/summary/diamonds"/>
+        <fmpp sourceRoot="${helium.dir}/tools/common/templates/diamonds"
+              outputRoot="${build.log.dir}/summary/diamonds" includes="diamonds.xml.ftl"
+              replaceExtension="xml.ftl, xml">
+            <data expandProperties="yes">
+                doc: xml(${build.summary.file})
+                ant: antProperties()
+            </data>
+        </fmpp>
+    </target>
+
+    
+    <!-- Render the CC dashboad summary. -->
+    <target name="render-cc-summary" depends="log-merge">
+        <mkdir dir="${build.log.dir}/summary"/>
+        <fmpp sourceFile="${helium.dir}/tools/common/templates/log/cc_summary_metadata_orm.html.ftl"
+                     outputfile="${build.log.dir}/summary/${build.id}_cc_summary.html">
+            <data expandProperties="yes">
+                dbPath: ${metadata.dbfile}
+                ant: antProperties()
+            </data>
+        </fmpp>
+    </target>
+
+    
+    <!-- Creates a full summary log from all the build logs. -->
+    <target name="build-log-summary" depends="render-log-summary"/>
+    
+    <!-- Test target to check signal. -->
+    <target name="check-signal" />
+    
+    <!-- Starting the main ant_build log -->
+    <target name="start-ant-log" >
+        <hlm:triggerlogger/>
+    </target>
+    
+    
+    
+    
+</project>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/tools/logging/test/test_logging.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : test_logging.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="test_logging" xmlns:au="org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
+    <description>
+        Logging testing targets
+    </description>
+    <property environment="env"/>
+    
+    <property name="helium.dir" location="../../.." />
+    <property name="build.drive" location="${env.TEMP}/helium/temp_drive"/>
+    <import file="../../../helium.ant.xml"/>
+    
+                
+    <!--target name="test-tempRecordMacro">
+        <delete file="${build.cache.log.dir}/test.log" failonerror="false"/>
+        <delete file="${build.cache.log.dir}/test.log.xml" failonerror="false"/>
+        <delete file="${build.cache.log.dir}/test.sqlite" failonerror="false"/>
+        <delete file="${metadata.dbfile}" failonerror="false"/>
+        <property name="build.log.dir" value="${build.cache.dir}/helium/temp_drive/output/logs" />
+        <property name="test.log.dir" value="${build.cache.dir}/helium/temp_drive/output/logs/test" />        
+        <hlm:tempRecordStartMacro name="test.log" />
+        <echo>ERROR: an error</echo>
+        <echo>WARNING: a warning</echo>
+        <echo>INFO: some useless message</echo>
+        <hlm:tempRecordStopMacro name="test.log" database="${build.cache.log.dir}/test.sqlite" phase="test"/>
+        <au:assertTrue>
+            <and>
+                <hlm:hasSeverity file="${build.cache.log.dir}/signals/test.log.status.xml" severity="error"/>
+                <hlm:hasSeverity file="${build.cache.log.dir}/signals/test.log.status.xml" severity="warning"/>
+                <hlm:hasSeverity file="${build.cache.log.dir}/signals/test.log.status.xml" severity="info"/>
+            </and>
+        </au:assertTrue>
+    </target-->
+  
+    <!--target name="test-specificlogmacro-create">
+        <hlm:startSpecificLogMacro name="${env.TEMP}/record_test.log" phase="test"/>         
+        <echo>astalavista</echo>
+        <hlm:stopSpecificLogMacro name="${env.TEMP}/record_test.log" phase="test"/>         
+        
+        <au:assertFileExists file="${env.TEMP}/record_test.log"/>
+        
+        <loadfile property="file.message" srcFile="${env.TEMP}/record_test.log"/>               
+        <au:assertTrue message="Failed to match content!!">
+            <equals arg1="${file.message}" arg2="[echo] astalavista" trim="true"/>          
+        </au:assertTrue>        
+        <delete file="${env.TEMP}/record_test.log"/>        
+    </target-->
+    
+   
+    <!--target name="test-specificlogmacro-backup">
+        <touch file="${env.TEMP}/backup_test.log"/>        
+        <echo file="${env.TEMP}/backup_test.log">childhood memory</echo>
+        <hlm:startSpecificLogMacro name="${env.TEMP}/backup_test.log" backup="true" phase="test"/>         
+        <echo>Now a days</echo>        
+        <hlm:stopSpecificLogMacro name="${env.TEMP}/backup_test.log" phase="test"/>                                            
+        
+        <loadfile property="backup.message" srcFile="${backup.file.name}"/>        
+        <au:assertTrue message="Failed to match content!!">
+            <equals arg1="${backup.message}" arg2="childhood memory" trim="true"/>          
+        </au:assertTrue>
+        
+        <loadfile property="current.message" srcFile="${env.TEMP}/backup_test.log"/>               
+        <au:assertTrue message="Failed to match content!!">
+            <equals arg1="${current.message}" arg2="[echo] Now a days" trim="true"/>          
+        </au:assertTrue>
+        
+        <delete file="${env.TEMP}/backup_test.log"/>
+        <delete>
+            <fileset dir="${env.TEMP}" includes="backup_test.log.*"/>
+        </delete>
+    </target-->
+    
+    <target name="test-log4j-log-file">                
+        <au:assertFileExists file="${log4j.cache.dir}/hlm_debug.log" />        
+        <au:assertFileDoesntExist file="hlm_debug.log" />
+    </target>
+    
+     <!-- Check the build-property-cache-file exists or not -->
+    <target name="test-build-property-cache-file-exists">
+        <antcall target="diamonds"/>
+        <au:assertFileExists file="${build.property.cache.file}" />
+    </target>
+    
+    <!-- Check the build-property-cache-file contents-->
+    <target name="test-build-property-cache-file-content">
+        <antcall target="diamonds"/>
+        <loadfile property="test.data" srcFile="${build.property.cache.file}"/>
+        <au:assertMatches string="${test.data}" pattern="diamonds.build.url" />
+    </target>
+    
+    
+</project>
+
--- a/buildframework/helium/tools/metadata/metadata.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/metadata/metadata.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -20,6 +20,7 @@
 
 ============================================================================
 -->
+<!--* @package framework -->
 <project name="metadata" xmlns:hlm="http://www.nokia.com/helium">
     <description>
     Metadata related ant macros and targets
@@ -31,14 +32,15 @@
         <attribute name="file" />
         <sequential>
             <mkdir dir="@{output-dir}" />
-            <fmpp sourceFile="${helium.dir}/tools/common/templates/log/build_status.xml.ftl"
+            <var name="email.status.template" value="${build.status.email.template}" />
+            <fmpp sourceFile="${helium.dir}/tools/common/templates/log/build_status_orm.xml.ftl"
                          outputfile="@{output-dir}/@{file}.status.xml">
                 <freemarkerLinks expandProperties="yes">
                     macro: ${helium.dir}/tools/common/templates/macro
                 </freemarkerLinks>
                 <data expandProperties="yes">
                     dbPath: @{dbfile}
-                    logfile: @{file}
+                    logpath: @{file}
                     ant: antProperties()
                 </data>
             </fmpp>
@@ -49,7 +51,7 @@
                 </freemarkerLinks>
                 <data expandProperties="yes">
                     dbPath: @{dbfile}
-                    logfile: @{file}
+                    logpath: @{file}
                     ant: antProperties()
                 </data>
             </fmpp>
--- a/buildframework/helium/tools/preparation/bom/bom.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/preparation/bom/bom.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -20,11 +20,15 @@
 
 ============================================================================
 -->
+<!--* @package preparation -->
 <project name="preparation.bom" xmlns:hlm="http://www.nokia.com/helium">    
     <description>
     Creates a Bill-Of-Materials record based on the Synergy inputs.
     </description>
     
+    <!-- Your synergy work area directory (Set as the parent of the helium dir by default).
+    @type string
+    -->
     <property name="create.bom.workarea.root" value="."/> 
     
     <!-- The target create-bom creates a Bill-Of-Material based on the SCM project 
@@ -191,10 +195,10 @@
         <hlm:stopSpecificLogMacro name="${prep.log.dir}/${build.id}_bom.log" phase="prep"/>
     </target>
     
-    <!-- Private: The target create-task-owner-email creates a property task.owners.email which will contain
+    <!-- The target create-task-owner-email creates a property task.owners.email which will contain
     the list of task owners email IDs seperated by comma, the newly created property can be used thereafter
     to send emails.
-    This target is automatically called by create-bom target -->
+    This target is automatically called by create-bom target. @scope private-->
     <target name="collect-task-owner-email">
         <if>
             <available file="${build.log.dir}/${build.id}_bom_delta.xml"/>
@@ -278,7 +282,14 @@
 
     <!-- Finds the path to the last usable XML BOM log for creating a BOM delta. --> 
     <target name="old-bom-log" unless="old.bom.log">
+        <!-- Publish dir location of the old bom log.
+        @type string
+        -->
         <property name="old.bom.log.publish.dir" value="${publish.dir}" />
+        <!-- Location of XML BOM log.
+        @type string
+        @scope private
+        -->
         <property name="bom.log" value="${old.bom.log.publish.dir}/logs/${build.id}_bom.xml"/>
         <script language="jython" setbeans="false">
 import re
--- a/buildframework/helium/tools/preparation/ci.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/preparation/ci.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -20,6 +20,7 @@
 
 ============================================================================
 -->
+<!--* @package preparation -->
 <project name="ci" xmlns:hlm="http://www.nokia.com/helium">
     <description>
     CI related targets
@@ -28,7 +29,7 @@
     <!-- Delete all the folders based on configurations file inside dir-path, optional attribute pool-size's default value is 4 -->
     <target name="delete-folders-from-list" if = "ci.cleanup.env.dir">
         <exec osfamily="windows" executable="python" failonerror="true" outputproperty="delete.folders.drive">
-            <arg value="${helium.dir}/tools/common/python/scripts/searchnextdrive.py"/>               
+            <arg line="-m searchnextdrive"/>               
         </exec>
         <hlm:deleteFoldersFromDirMacro dir-path="${ci.cleanup.env.dir}" delete-folders-drive="${delete.folders.drive}"/>
     </target>
@@ -43,7 +44,8 @@
 import threadpool
 import subprocess
 import sys
-
+from java.io import IOException
+        
 dir_path = str(attributes.get('dir-path'))
 del_folder_drive = attributes.get('delete-folders-drive')
 pool_size = attributes.get('pool-size')
@@ -70,24 +72,12 @@
 # Delete all dirs based on config
 for dir_ in delete_dirs:
     try:
-        if os.sep == '\\':
-            fileutils.subst(del_folder_drive, dir_)
-            self.log(str("substed for deleting folders"))
-            self.log(str("Removing %s\\" % del_folder_drive))
-            fileutils.rmtree("%s\\" % del_folder_drive)
-            fileutils.unsubst(del_folder_drive)
-            self.log(str("unsubsted substed for deleting folders"))
-        else:
-            self.log(str("Removing %s" % dir_))
-            fileutils.rmtree(dir_)
-    except Exception, e:
-        if os.sep == '\\':
-            try:
-                fileutils.unsubst(del_folder_drive)
-                self.log(str("unsubsted for deleling folders"))
-            except Exception, e2:
-                self.log(str("failed when unsubsting for failed deleting folders... process will continue anyway"))
-        self.log(str("ERROR: %s" % e))
+        self.log(str("Removing %s" % dir_))
+        fileutils.rmtree(dir_)
+    except Exception, exc:
+        self.log(str("ERROR: %s" % exc))
+    except IOException, ioExc:
+        self.log(str("ERROR: %s" % ioExc))
 
 # Delete all config files
 for path_ in found_inputs:
@@ -197,7 +187,7 @@
 config.store(open(sessionFile, 'w+'))    
     </scriptdef>
 
-    <!-- Task that generates an XML configuration of the work that will be done by ccm-get-input. -->
+    <!-- Task that generates an XML configuration of the work that will be done by prep-work-area. -->
     <macrodef name="findProjects" uri="http://www.nokia.com/helium">
         <attribute name="delivery"/>
         <attribute name="sessionfile"/>
@@ -309,7 +299,7 @@
         <hlm:monitorCCMSession delivery="${prep.delivery.conf.parsed}" sessionfile="${ci.session.file}"/>
     </target>
 
-    <!-- Bootstrapper target for Cruise Control. This target output the future work that ccm-get-input will be doing. -->
+    <!-- Bootstrapper target for Cruise Control. This target output the future work that prep-work-area will be doing. -->
     <target name="ci-prep-wa-create-list" depends="ci-prep-wa-create-list-validate" if="do.ci-prep-wa-create-list">
         <hlm:findProjects delivery="${prep.delivery.conf.parsed}" sessionfile="${ci.session.file}" output="${ci.project.config}"/>
     </target>
--- a/buildframework/helium/tools/preparation/freedisk.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,132 +0,0 @@
-#============================================================================ 
-#Name        : freedisk.py 
-#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:
-#===============================================================================
-
-""" Checks free space on the disk before the build starts.
-
-The script is being called from the preparation.ant.xml file
-
-"""
-
-import getopt, sys
-
-
-help_string = """
-    -h or --help     : Displays help
-
-    -d or --drive    : Requires a drive letter to be checked.
-                     : E.g. -d C: (case insensitive; ':' is optional)
-                     
-    -s or --space    : Required space to compare with the drive for the free space"
-                     : E.g. -s 2658 (an integer value in MB)
-"""
-
-
-
-def print_space_report(drive, space_required):
-    """
-    compares the required space with current free space on the provided drive
-    """
-    try:
-        if sys.platform == "win32":
-            import win32file
-            free_bytes = win32file.GetDiskFreeSpaceEx(drive)[0]
-        elif 'java' in sys.platform:
-            import java.io
-            free_bytes = java.io.File(drive).getFreeSpace()
-        else:
-            import os
-            import statvfs
-            # pylint: disable-msg=E1101
-            stats = os.statvfs(drive)
-            free_bytes = stats[statvfs.F_BSIZE] * stats[statvfs.F_BAVAIL]
-            
-    except Exception, e:
-        print "ERROR: Either specified drive doesn't exist or an unknown error"
-        print str(e)
-        print help_string
-        sys.exit(-2)
-
-    free_space = free_bytes / (1024 * 1024)
-
-    print "drive:", drive
-    print "Required Space:", space_required
-    print "Free Space:", free_space
-    
-    if space_required < free_space:
-        print "Enough free space"
-    else:
-        print "Not enough free space, exiting"
-        sys.exit(-1)
-
-    
-def main():
-    """
-    Gets and parse options and verifies the option values
-    """
-    try:
-        opts = getopt.getopt(sys.argv[1:], "hs:d:", \
-                                   ["space=", "drive=", "help"])[0]
-    except getopt.GetoptError:
-        # print help information and exit:
-        print "ERROR: Couldn't parse the command line parameters."
-        print help_string
-        sys.exit(2)
-
-    drive = None
-    required_space = None
-
-    for opt, attr in opts:
-
-        if opt in ("-s", "--space"):
-            required_space = int(attr)
-            
-        if opt in ("-d", "--drive"):
-            drive = attr
-            
-        if opt in ("-h", "--help"):
-            print help_string
-            sys.exit()
-    
-    if required_space == None and drive == None:
-        print "ERROR: No parameters are defined"
-        print help_string
-        sys.exit (-3)
-
-    if required_space == None:
-        print "ERROR: Required Disk Space parameter is not defined to" \
-              "check space on the disk"
-        print help_string
-        sys.exit (-3)
-        
-    if drive == None:
-        print "ERROR: Drive parameter is missing"
-        print help_string
-        sys.exit (-3)
-    else:
-        if sys.platform == "win32":
-            if not ":" in drive:
-                drive = drive + ":"
-
-    print_space_report(drive, required_space)
-
-
-
-
-if __name__ == '__main__':
-    sys.exit(main())
--- a/buildframework/helium/tools/preparation/ido-prep.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/preparation/ido-prep.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -20,6 +20,7 @@
 
 ============================================================================
 -->
+<!--* @package preparation -->
 <project name="ido-prep" xmlns:hlm="http://www.nokia.com/helium">
     <description>
         IDO related targets.
@@ -29,11 +30,34 @@
          * IBY export (old way)
     </description>
         
+    <!-- Path to a INI file that contains the mapping between the ADO from Synergy WA and it's location on the BA.
+    @type string
+    @scope private
+    -->
     <property name="ado.mapping.file" location="${build.output.dir}/build/ado_mapping.ini"/>
+    <!-- Path to a INI file that contains the mapping between the ADO from Synergy WA and it's location on the BA for quality targets.
+    @type string
+    @scope private
+    -->
     <property name="ado.quality.mapping.file" location="${build.output.dir}/build/ado_quality_mapping.ini"/>
+    <!-- Path to the build romtree; the location contains iby files. Default value is "${build.drive}${env.EPOCROOT}/epoc32/rom/include"
+    @type string
+    @scope private
+    -->
     <property name="ido.romtree" location="${build.drive}${env.EPOCROOT}/epoc32/rom/include"  />
+    <!-- Path to the cenrep root. Default value is "${build.drive}${env.EPOCROOT}/epoc32/tools/cenrep/ido/src"
+    @type string
+    @scope private
+    -->
     <property name="ido.cenrep.root" location="${build.drive}${env.EPOCROOT}/epoc32/tools/cenrep/ido/src"  />
+    <!-- Path to the cenrep target directory. Default value is "${build.drive}${env.EPOCROOT}/epoc32/data/z/private/10202be9"
+    @type string
+    @scope private
+    -->
     <property name="ido.cenrep.target" value="${build.drive}${env.EPOCROOT}/epoc32/data/z/private/10202be9"  />
+    <!-- Defines the location of Codescanner output.
+    @type string
+    -->
     <property name="ido.codescanner.output.dir" location="${build.output.dir}/${build.id}_codescanner"/>
     
     <!-- Internal target that generates the '''ado.mapping.file'''.
@@ -69,41 +93,64 @@
     
     <!-- Target to generate cenreps using cone tool -->
     <target name="ido-gen-cenrep">
+        <mkdir dir="${post.log.dir}" />
         <for list="${sysdef.configurations.list}" delimiter="," param="sysdef.config">
             <sequential>
+                <var name="confml.log.file" unset="true"/>
                 <if>
-                    <available file="${compile.log.dir}/${build.id}.@{sysdef.config}_compile.log"/>
+                    <or>
+                        <equals arg1="${build.system}" arg2="sbs" />
+                        <equals arg1="${build.system}" arg2="sbs-ec" />
+                    </or>
                     <then>
-                        <hlm:grepMacro filename="${compile.log.dir}/${build.id}.@{sysdef.config}_compile.log" regexp="([^\\]*.confml)$" output="confml.file.list"/>
-                        <for list="${confml.file.list}" delimiter="," param="confml.file">
+                        <hlm:getsbsinputs config="sbs.@{sysdef.config}" outputProperty="sbs.internal.inputs.list"/>
+                        <for list="${sbs.internal.inputs.list}" delimiter="," param="sbs.input">
                             <sequential>
-                                <var name="crml.regexp" unset="true"/>
-                                <propertyregex property="crml.regexp" input="@{confml.file}"  regexp="([^\.]*).confml" select="\1" />
-                                <hlm:conEToolMacro>
-                                    <arg name="output" value="${post.log.dir}/${build.id}_cenrep.cone.log"/>
-                                    <arg name="path" value="${build.drive}/epoc32/tools/" />
-                                    <arg name="-v" value="5" />
-                                    <arg name="-p" value="${build.drive}\epoc32\rom\config\assets\s60" />
-                                    <arg name="-o" value="${build.drive}\epoc32\release\winscw\urel\z" />
-                                    <arg name="-c" value="root.confml" />
-                                    <arg name="-i" value="${crml.regexp}" />
-                                </hlm:conEToolMacro>
-                                <hlm:conEToolMacro>
-                                    <arg name="output" value="${post.log.dir}/${build.id}_cenrep.cone.log"/>
-                                    <arg name="path" value="${build.drive}/epoc32/tools/" />
-                                    <arg name="-v" value="5" />
-                                    <arg name="-p" value="${build.drive}\epoc32\rom\config\assets\s60" />
-                                    <arg name="-o" value="${build.drive}\epoc32\release\winscw\udeb\z" />
-                                    <arg name="-c" value="root.confml" />
-                                    <arg name="-i" value="${crml.regexp}" />
-                                </hlm:conEToolMacro>
+                                <hlm:getVariableValue name="--logfile" property="sbs.log.file">
+                                    <hlm:sbsinput refid="@{sbs.input}" />
+                                </hlm:getVariableValue>
+                                <property name="confml.log.file" value="${sbs.log.file}"/>
                             </sequential>
                         </for>
                     </then>
+                    <else>
+                        <property name="confml.log.file" value="${compile.log.dir}/${build.id}.@{sysdef.config}_compile.log"/>
+                    </else>
                 </if>
             </sequential>
         </for>
-        <copy file="${post.log.dir}/${build.id}_cenrep.cone.log" tofile="${temp.build.dir}/${build.id}_cenrep_includefile.txt" overwrite="true">
+        <echo>confml.log.file = ${confml.log.file}</echo>
+        <if>
+            <available file="${confml.log.file}"/>
+            <then>
+                <hlm:grepMacro filename="${confml.log.file}" regexp="([^\\/.]*?)\.confml" output="confml.file.list"/>
+                <for list="${confml.file.list}" delimiter="," param="confml.file">
+                    <sequential>
+                        <var name="crml.regexp" unset="true"/>
+                        <echo>confml.file = @{confml.file}</echo>
+                        <hlm:conEToolMacro>
+                            <arg name="output" value="${post.log.dir}/${build.id}_cenrep.cone.log"/>
+                            <arg name="path" value="${build.drive}/epoc32/tools/" />
+                            <arg name="-v" value="5" />
+                            <arg name="-p" value="${build.drive}\epoc32\rom\config\assets\s60" />
+                            <arg name="-o" value="${build.drive}\epoc32\release\winscw\urel\z" />
+                            <arg name="-c" value="root.confml" />
+                            <arg name="-i" value="@{confml.file}" />
+                        </hlm:conEToolMacro>
+                        <hlm:conEToolMacro>
+                            <arg name="output" value="${post.log.dir}/${build.id}_cenrep.cone.log"/>
+                            <arg name="path" value="${build.drive}/epoc32/tools/" />
+                            <arg name="-v" value="5" />
+                            <arg name="-p" value="${build.drive}\epoc32\rom\config\assets\s60" />
+                            <arg name="-o" value="${build.drive}\epoc32\release\winscw\udeb\z" />
+                            <arg name="-c" value="root.confml" />
+                            <arg name="-i" value="@{confml.file}" />
+                        </hlm:conEToolMacro>
+                    </sequential>
+                </for>
+            </then>
+        </if>
+        <copy file="${post.log.dir}/${build.id}_cenrep.cone.log" tofile="${temp.build.dir}/${build.id}_cenrep_includefile.txt" overwrite="true" failonerror="false">
             <filterchain>
                 <linecontainsregexp>
                     <regexp pattern="^\s*Generating file"/>
@@ -225,6 +272,9 @@
     -->
     <target name="ido-codescanner" depends="ido-create-ado-mapping,ido-codescanner-skip" unless="do.skip.codescanner">
         <!--hlm:iniKeys2Path ini="${ado.mapping.file}" pathid="ado.src.path"/-->
+        <!-- Defines the format of Codescanner output (html|xml|std).
+        @type string
+        -->
         <property name="ido.codescanner.output.type" value="html"/>
         <script language="jython" setbeans="false">
 """ internal.codescanner.drive """
@@ -345,6 +395,61 @@
         <runtarget target="ido-check-latest-release-dragonfly"/>
     </target>
 
+    <!--* @property s60.grace.server
+        UNC path to GRACE server.
+        @type string
+        @editable required
+        @scope public
+    -->
+    <!--* @property s60.grace.service
+        GRACE service to look into.
+        @type string
+        @editable required
+        @scope public
+    -->
+    <!--* @property s60.grace.product
+        GRACE product to look into.
+        @type string
+        @editable required
+        @scope public
+    -->
+    <!--* @property s60.grace.release
+        Regular expression to match a particular GRACE realease.
+        @type string
+        @editable required
+        @scope public
+    -->
+    <!--* @property s60.grace.release.fixbuildregex
+        Regular expression to match a particular GRACE release fixbuilds. Example _(.*?)$ or _(\d+)$ 
+        @type string
+        @editable required
+        @scope public
+    -->
+    <!--* @property s60.grace.cache
+        Location of the Grace result cache for a builder.
+        @type string
+        @editable required
+        @scope public
+    -->
+    <!--* @property s60.grace.checkmd5
+        Enable MD5 validation for GRACE metadata (default: false).
+        @type boolean
+        @editable required
+        @scope public
+    -->
+    <!--* @property s60.grace.revision
+        Defined the regular expression to find a particular revision.
+        @type string
+        @editable required
+        @scope public
+    -->
+    <!--* @property s60.grace.usetickler
+        Enable the detection of ready release using GRACE tickler mechanism.
+        @type string
+        @editable required
+        @scope public
+    -->
+
     <!-- Checks the contents from GRACE release. Mainly used by IDOs. But could be
     extended to product builds.-->    
     <target name="ido-check-latest-release-grace" unless="use.dragonfly">
--- a/buildframework/helium/tools/preparation/ivy/dependencies.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/preparation/ivy/dependencies.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -20,6 +20,7 @@
 
 ============================================================================
 -->
+<!--* @package preparation -->
 <project name="preparation.dependencies" xmlns:ivy="antlib:org.apache.ivy.ant" xmlns:hlm="http://www.nokia.com/helium">
     <description>Analysis of dependencies for build area preparation.</description>
     
--- a/buildframework/helium/tools/preparation/overlayLog_to_html.xslt	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
-    <xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>
-    <xsl:template match="/commentLog">
-        <html>
-            <head>
-                <title>
-                    <xsl:text>Overlay branch summary</xsl:text>
-                </title>
-            </head>
-            <body>
-                <h2>
-                    <xsl:text>Overlay branch summary</xsl:text>
-                </h2>
-                <p/>
-                <xsl:text>Total number of overlay branches = </xsl:text>
-                <xsl:value-of select="count(branchInfo)"/>
-                <p/>
-                <xsl:apply-templates select="branchInfo"/>
-            </body>
-        </html>
-    </xsl:template>
-    <xsl:template match="branchInfo">
-        <b>
-            <xsl:text>File: </xsl:text>
-        </b>
-        <xsl:value-of select="@file"/>
-        <br/>
-        <b>
-            <xsl:text>Category: </xsl:text>
-        </b>
-        <xsl:value-of select="@category"/>
-        <br/>
-        <b>
-            <xsl:text>Error: </xsl:text>
-        </b>
-        <xsl:value-of select="@error"/>
-        <br/>
-        <b>
-            <xsl:text>Originator: </xsl:text>
-        </b>
-        <xsl:value-of select="@originator"/>
-        <br/>
-        <xsl:value-of select="text()"/>
-        <p/>
-        <p/>
-        <p/>
-    </xsl:template>
-</xsl:stylesheet>
--- a/buildframework/helium/tools/preparation/overlays.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : overlays.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="overlays" xmlns:hlm="http://www.nokia.com/helium">
-    <description>
-    Scans the overlay structure and creates  report.
-    </description>
-    <!-- Scans the overlay structure used in SAL projects. 
-         Creates report page from which build managers can 
-         easibly see the files that need to be merged. -->
-    <target name="scan-overlays">
-        <if>
-            <isreference refid="overlay.files" type="fileset"/>
-            <then>
-                <pathconvert refid="overlay.files" property="overlay.files.path"/>
-                <hlm:python>
-        
-import comments
-
-files = r'${overlay.files.path}'.split(';')
-
-# Create a comment parser that extracts branchInfo XML elements in comments
-parser = comments.CommentParser(files, 'branchInfo')
-doc = parser.scan()
-
-# Write the XML content to a log file
-logfile = open(r'${overlays.log.file}', 'w')
-doc.xml(logfile, indent=u"yes")
-logfile.close()
-        
-                </hlm:python>
-                <xslt in="${overlays.log.file}" out="${overlays.log.file}.html" style="${helium.dir}/tools/preparation/overlayLog_to_html.xslt"/>
-            </then>
-            <!-- Need to define an 'id' to match the refid in this file, for schema validation. -->
-            <else>
-                <!-- An XML element with an 'id' attribute is created to allow successful XML validation.
-                This serves no other purpose. -->
-                <property id="overlay.files" name="overlay.files.id" value="invalid" />
-                <echo>WARNING: 'overlay.files' reference not defined. Overlay scanning will not happen.</echo>
-            </else>
-        </if>
-    </target>
-</project>
\ No newline at end of file
--- a/buildframework/helium/tools/preparation/password.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/preparation/password.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -20,6 +20,7 @@
 
 ============================================================================
 -->
+<!--* @package preparation -->
 <project name="password" xmlns:hlm="http://www.nokia.com/helium">
     <description>
     Password retrieval targets
@@ -55,11 +56,19 @@
                 <equals arg1="${unix.password.available}" arg2="0"/>
             </not>
             <then>
+                <!-- Unix username.
+                @type string
+                @scope private
+                -->
                 <property name="unix.username" value="${env.USERNAME}"/>
                 <antform title="User login information">
                     <textProperty label="UNIX login:" property="unix.username"/>
                     <textProperty label="UNIX password:" property="unix.password" password="true"/>
                 </antform>
+                <!-- Equal 0 if the unix password if available
+                @type string
+                @scope private
+                -->
                 <property name="unix.password.available" value="1"/>
             </then>
         </if>
@@ -135,6 +144,10 @@
                                 <property name="skip.password.validation" value="true"/>
                             </then> 
                             <else>
+                                <!-- Contains the user name for CCM by reading the information from .netrc file.
+                                @type string
+                                @scope private
+                                -->
                                 <property name="ccm.user.login" value="${env.USERNAME}"/>
                                 <antform title="Synergy login information">
                                     <label>Unable to read synergy username and password from h:\.netrc file.</label>
@@ -142,14 +155,34 @@
                                     <textProperty label="ccm password:" property="ccm.user.password" password="true"/>
                                 </antform>
                                 <property name="ccm.password.available" value="1"/>
+                                <!-- Unix username.
+                                @type string
+                                @scope private
+                                -->
                                 <property name="unix.username" value="${env.USERNAME}"/>
+                                <!-- Unix password
+                                @type string
+                                @scope private
+                                -->
                                 <property name="unix.password" value="${ccm.user.password}"/>
+                                <!-- Equal 0 if the unix password if available
+                                @type string
+                                @scope private
+                                -->
                                 <property name="unix.password.available" value="1"/>
                             </else> 
                         </if>
                     </then>
                     <else>
+                        <!-- Contains the user name for CCM by reading the information from .netrc file.
+                        @type string
+                        @scope private
+                        -->
                         <property name="ccm.user.login" value="${ccm.login.rc}"/>
+                        <!-- Contains the password for CCM user name by reading the information from .netrc file.
+                        @type string
+                        @scope private
+                        -->
                         <property name="ccm.user.password" value="${ccm.password.rc}"/>
                     </else>
                 </if>
--- a/buildframework/helium/tools/preparation/prep_build_area.pl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,623 +0,0 @@
-#!perl -w
-
-#============================================================================ 
-#Name        : prep_build_area.pl 
-#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: 
-#============================================================================
-
-use strict;
-use Getopt::Long;
-use File::Path;
-use File::Basename;
-use File::Spec;
-use File::Temp qw(tempfile);
-use Archive::Zip qw( :ERROR_CODES :CONSTANTS );
-use FindBin;
-use XML::Twig;
-use FindBin;
-use lib "$FindBin::Bin/../common/packages";
-use Utils;
-
-
-sub process_build_sources;
-
-
-my $UNZIP = "unzip";
-
-
-my $destdir = '';
-my $zipdir = '';
-my $config = '';
-my $dryrun = 0;
-my $verbose = $ENV{'VERBOSE'};
-
-GetOptions( 'destdir=s'  => \$destdir,
-            'zipdir=s'   => \$zipdir,
-            'config=s'   => \$config,
-            'dry-run|n'  => \$dryrun) or pod2usage( 2 );
-
-my ( $dest_drive, undef, undef ) = File::Spec->splitpath( $destdir );
-my $twig = new XML::Twig();
-$twig->parsefile( $config );
-
-# Get the 'prepSpec' XML root element
-my $root = $twig->root();
-
-# Get the list of generic excluded paths from the XML config file
-my @excluded_paths;
-my @exclude_elements = $root->get_xpath( "config/exclude" );
-for my $exclude_element ( @exclude_elements )
-{
-    my $exclude_text = $exclude_element->att( 'name' );
-    push( @excluded_paths, $exclude_text );
-}
-
-my @sources;
-@sources = $root->get_xpath( "source" );
-
-# Always run just a check of the inputs
-my $validate_failed = 0;
-my $validate_only = 1;
-process_build_sources( $destdir, $zipdir, \@sources, $validate_only );
-
-# Then run the actual operations if a parameter was not set to do a dry run only
-if ( not $validate_failed )
-{
-    $validate_only = 0;
-    
-    process_build_sources( $destdir, $zipdir, \@sources, $validate_only );
-    # Delete the unzip directory in case one was created
-    print "Deleting the temp unzip directory: '$zipdir'\n";
-    rmtree( $zipdir, 1 );
-}
-exit $validate_failed;
-
-
-
-sub process_build_sources
-{
-    my ( $destdir, $zipdir, $sources, $validate_only ) = @_;
-    for my $source ( @{$sources} )
-    {
-        process_source( $destdir, $zipdir, $source, $validate_only );
-    }
-}
-
-
-
-# Process a single source element, which could define either a copy or an unzip
-# operation.
-sub process_source
-{
-    my ( $destdir, $zipdir, $source_element, $validate_only ) = @_;
-
-    my $source_label = $source_element->att( 'label' );
-    if ( $verbose )
-    {
-        print "Processing source with label: $source_label\n";
-    }
-
-    # Handle each of the copy or unzip operations for this source
-    my @operations = $source_element->get_xpath( "copy" );
-    my @unzip_operations = $source_element->get_xpath( "unzip" );
-    my @unzipicds_operations = $source_element->get_xpath( "unzipicds" );
-    my @nested_unzip_operations = $source_element->get_xpath( "nestedunzip" );
-    push( @operations, @unzip_operations, @unzipicds_operations, @nested_unzip_operations );
-    for my $operation ( @operations )
-    {
-        if ( is_valid( $operation ) )
-        {
-            # Construct the path for the zip to extract or the directory to copy
-            my $source = undef;
-            if ( $operation->gi() =~ /^(unzip|copy|nestedunzip)$/ )
-            {
-            	$source = File::Spec->canonpath( $source_element->att( 'basedir' ).'/'. $operation->att( 'name' ));
-            	$source = replace_env_vars( $source );
-
-            	if ( $verbose )
-            	{
-            	    print "Processing $source\n";
-            	}
-
-            	# Check if the source directory or zip exists, unless it contains globs
-            	if ( ( not -e $source ) && ( $source !~ /\*/ ) )
-            	{
-            	    if ( $source !~ /^$dest_drive/i )
-            	    {
-            	        print("ERROR: Can't locate input source: \"$source\"\n");
-            	        $validate_failed = 1;
-            	        next;
-            	    }
-            	    else
-            	    {
-            	        if ( $verbose )
-            	        {
-            	            print( "INFO: Input not ready: \"$source\"\n");
-            	        }
-            	    }
-            	}
-		}
-
-            if ( not $validate_only )
-            {
-                # Construct the destination directory, based on the provided default
-                # root destination and any additional subdirectory defined in the operation
-                my $dest = $destdir;
-                my $dest_sub_dir = $operation->att( 'dest' );
-                if ( $dest_sub_dir )
-                {
-                    $dest_sub_dir = replace_env_vars( $dest_sub_dir );
-
-                    # If the destination is an absolute path, then ignore the
-                    # default root destination.
-                    if ( $dest_sub_dir =~ /:/ )
-                    {
-                        $dest = $dest_sub_dir;
-                    }
-                    # Otherwise just add the subdirectory to root destination
-                    else
-                    {
-                        $dest .= $dest_sub_dir;
-                    }
-                }
-                $dest = replace_env_vars( $dest );
-
-                # See if operation is a copy or an unzip
-                my $operation_type = $operation->gi();
-                
-                unless( -e $dest )
-                {
-						    	mkpath( [$dest],1,0755 );
-						    }
-                
-                if ( $operation_type eq 'unzip' )
-                {                	  
-                    extract_source_zip( $source, $dest, $zipdir, $operation );
-                }
-                elsif ( $operation_type eq 'nestedunzip' )
-                {                	                	
-                	extract_source_nested( $source, $dest, $zipdir, $operation );
-                }
-                elsif ( $operation_type eq 'copy' )
-                {
-                    copy_source_files( $source, $dest, $operation );
-                }
-                elsif ( $operation_type eq 'unzipicds' )
-                {
-                	extract_source_icds( $source, $dest, $zipdir, $operation );
-                }
-            }
-        }
-    }
-}
-
-# Unzip icds
-sub CompareICDs
-{
-	my $aid = 0;
-	my $bid = 0;
-	$aid = $1 if ($a =~ /ic([d|f]\d+.*)\.zip$/i);
-	$bid = $1 if ($b =~ /ic([d|f]\d+.*)\.zip$/i);
-	return lc($aid) cmp lc($bid);
-}
-
-#
-# Syntax:
-#
-# + source
-#   + unzipicds
-#      location+
-#      include*
-#
-sub extract_source_icds
-{
-    my ( $sourcezip, $dest, $zipdir, $zip_element ) = @_;
-    my @location_elements = $zip_element->get_xpath( 'location' );
-
-    my @listoffiles;
-    foreach my $location_element ( @location_elements )
-		{
-		    my $dir = File::Spec->canonpath( $location_element->att('name') );
-			print "Scanning $dir\n";
-			unless ( -d "$dir" )
-			{
-				print ("WARNING: $dir doesn't not exits. Skipping\n");
-				next;
-			}
-
-			opendir DIR, $dir;
-			my @l = grep( { # Check the file ends in .zip
-			                /\.zip$/ &&
-			                # Check file is a plain file (not a directory)
-			                -f "$dir/$_" &&
-			                # Modify the file path to the full canonical one
-			                ($_=File::Spec->canonpath("$dir/$_")) } readdir(DIR) );
-
-            # See if any of the files are in the list of excluded files
-            my @exclude_elements = $location_element->get_xpath( 'exclude' );
-            if ( scalar( @exclude_elements ) > 0 )
-            {
-                my @excluded_files = map( $_->att('name'), @exclude_elements );
-                my $files_total = scalar( @l );
-                my $i = 0;
-                while( $i < $files_total )
-                {
-                    my $file = $l[$i];
-                    foreach my $excluded_file ( @excluded_files )
-                    {
-                        if ( $file =~ /$excluded_file/ )
-                        {
-                            print( "Removing excluded file '$file' from ICD/ICF list\n" );
-                            splice( @l, $i, 1 );
-                            $files_total--;
-                        }
-                    }
-                    $i++;
-                }
-            }
-			@listoffiles = (@listoffiles, @l);
-
-			closedir DIR;
-		}
-
-    my @include_elements = $zip_element->get_xpath( 'include' );
-    my $includes = '';
-		for my $include_element ( @include_elements )
-		{
-			if ( is_valid( $include_element ) )
-			{
-				my $include_text = $include_element->att( 'name' );
-				$includes .= "$include_text ";
-			}
-		}
-
-	foreach my $icd (sort CompareICDs @listoffiles)
-	{
-		if ( -e "$icd" )
-		{
-			print "Unzipping $icd\n";
-	    log_exec(  "$UNZIP -o -C $icd"
-           . " $includes"
-           . " -x " . join(" ", map({"*/" . $_} @excluded_paths ))
-           . " -d $dest");
-		}
-	}
-}
-
-
-# Copy (optionally) zip files and extract them
-sub extract_source_zip
-{
-    my ( $sourcezip, $dest, $zipdir, $zip_element ) = @_;
-
-    if ( $zipdir )
-    {
-        if ( not -d $zipdir )
-        {
-            print "Creating dir for caching zip files: $zipdir\n";
-            eval { mkpath( $zipdir ) };
-            if ( $@ )
-            {
-                print "Couldn't create $zipdir: $@";
-            }
-        }
-
-        my $destzip = File::Spec->canonpath($zipdir.'/'.basename( $sourcezip ));
-
-        my ( $lcl_size, $rmt_size ) = ( 0, 0 );
-        if ( -f $destzip )
-        {
-            $lcl_size = -s $destzip;
-        }
-        if ( -f $sourcezip )
-        {
-            $rmt_size = -s $sourcezip;
-        }
-        if ( $rmt_size != $lcl_size )
-        {
-            my $zipdir_to_copy = $zipdir;
-            $zipdir_to_copy =~ s/\//\\/g;
-            log_exec( "xcopy $sourcezip $zipdir_to_copy /H /R /Y /Q" );
-            die( "xcopy failed with exit code " . ($? >> 8)) if ($? >> 8);
-        }
-
-        # Set source zip to the cached copy on the local drive
-        $sourcezip = $destzip;
-    }
-
-    # See if there are any include patterns
-    my $includes = '';
-    my @include_elements = $zip_element->get_xpath( 'include' );
-    my @source_include_elements = $zip_element->get_xpath( '../include' );
-    push( @include_elements, @source_include_elements );
-    if ( scalar( @include_elements ) > 0 )
-    {
-        for my $include_element ( @include_elements )
-        {
-            if ( is_valid( $include_element ) )
-            {
-                my $include_text = $include_element->att( 'name' );
-                $includes .= "$include_text ";
-            }
-        }
-    }
-
-    log_exec(  "$UNZIP -o -C $sourcezip"
-               . " $includes"
-               . " -x " . join(" ", map({"*/" . $_} @excluded_paths ))
-               . " -d $dest");
-    rmtree( $zipdir, 1 );   
-}
-
-# Find all zip files and unzip those twice
-sub extract_source_nested
-{
-    my ( $sourcezip, $dest, $zipdir, $zip_element ) = @_;
-    my $nestedZipDir = $zipdir . '_nested';
-    if ( $nestedZipDir )
-    {
-        if ( not -d $nestedZipDir )
-        {
-            print "Creating dir for caching zip files: $nestedZipDir\n";
-            eval { mkpath( $nestedZipDir ) };
-            if ( $@ )
-            {
-                print "Couldn't create $nestedZipDir: $@";
-            }
-        }
-
-        my $destzip = File::Spec->canonpath($nestedZipDir.'/'.basename( $sourcezip ));
-
-        my ( $lcl_size, $rmt_size ) = ( 0, 0 );
-        if ( -f $destzip )
-        {
-            $lcl_size = -s $destzip;
-        }
-        if ( -f $sourcezip )
-        {
-            $rmt_size = -s $sourcezip;
-        }
-        if ( $rmt_size != $lcl_size )
-        {
-            my $zipdir_to_copy = $nestedZipDir;
-            $zipdir_to_copy =~ s/\//\\/g;     
-            log_exec(  "$UNZIP -o -C $sourcezip"                              
-               . " -d $zipdir_to_copy");            
-        }
-
-        # Set source zip to the cached copy on the local drive
-        $sourcezip = $nestedZipDir . "/" . "*.zip";
-    }   
-
-    log_exec(  "$UNZIP -o -C $sourcezip"
-               . " -d $dest");
-    rmtree( $nestedZipDir, 1 );    
-}
-
-
-
-# Copy the release files to a local directory
-sub copy_source_files
-{
-    my ( $source, $dest, $copy_element ) = @_;
-
-    # strip trailing slash - xcopy doesn't like it on source directories
-    $source =~ s/[\\\/]$//;
-
-    # See if the source input is a single file
-    if ( -f $source )
-    {
-        # See if the file should be excluded
-        if ( is_excluded( $source ) )
-        {
-            print("Rule \"$source\" => \"$dest\" excluded");
-            return;
-        }
-
-        # See if a tofile attribute is defined to specify a destination file.
-        # Here the $dest parameter is assumed to be just the base directory, as
-        # an operation should not have both dest and tofile attributes.
-        my $tofile = $copy_element->att( 'tofile' );
-        $tofile = replace_env_vars( $tofile );
-        if ( $tofile )
-        {
-            # If the destination is an absolute path, then ignore the
-            # default root destination.
-            if ( $tofile =~ /:/ )
-            {
-                $dest = $tofile;
-            }
-            # Otherwise just add the subdirectory to root destination
-            else
-            {
-                $dest .= $tofile;
-            }
-        }
-        else
-        {
-            # Create the destination file name, based on path and source filename
-            my ( $vol, $path, $file ) = File::Spec->splitpath( $source );
-            $dest = File::Spec->catpath( '', $dest, $file );
-        }
-
-        # See if the directory path needs to be created
-        my ( $vol, $path, undef ) = File::Spec->splitpath( $dest );
-        my $destpath = File::Spec->catpath( $vol, $path, '' );
-        # Remove any trailing slashes
-        $destpath =~ s/[\\\/]$//;
-        if ( not ( -e $destpath ) )
-        {
-            print "Creating dir for copying source files: $destpath\n";
-            eval { mkpath( $destpath ) };
-            if ( $@ )
-            {
-                print "Couldn't create $destpath: $@";
-            }
-        }
-
-        # Execute the copy
-        # Convert forward to backslashes
-        $dest =~ s/\//\\/g;
-        log_exec("copy $source $dest /Y");
-    }
-    # See if the input is a directory
-    elsif ( -d $source )
-    {
-        $dest =~ s/\//\\/g;
-        my $tempfile = write_exclude_file( $copy_element );
-        log_exec(
-                 "xcopy $source $dest /S /E /I /H /R /Y /F /EXCLUDE:$tempfile");
-        log_warn("xcopy did not find any files to copy") if ($? >> 8) == 1;
-        log_die("xcopy failed with exit code " . ($? >> 8)) if ($? >> 8) > 1;
-        unlink( $tempfile );
-    }
-}
-
-
-
-sub is_valid
-{
-    my ( $element ) = @_;
-    my $valid = 1;
-
-    # See if operation is conditional on a property
-    my $if_conditional = $element->att( 'if' );
-    my $unless_conditional = $element->att( 'unless' );
-    if ( $if_conditional )
-    {    	
-        # The operation is not processed if a conditional is present but
-        # it is not true.
-        if ( $if_conditional !~ /^true|yes|1$/i )
-        {
-            $valid = 0;
-        }
-    }
-    elsif ( $unless_conditional )
-    {
-        # The operation is not processed if a conditional is present but
-        # it is considered true.
-    	if ( $unless_conditional =~ /^true|yes|1$/i )
-        {
-            $valid = 0;
-        }
-    }
-    return $valid;
-}
-
-
-
-# Return true if the given file is excluded
-sub is_excluded
-{
-    my ( $file ) = @_;
-    my $exclude = 0;
-    $file =~ s/\\/\//g;
-    for my $exclude_file ( @excluded_paths )
-    {
-        if ( $file =~ /$exclude_file/ )
-        {
-            $exclude = 1;
-            last;
-        }
-    }
-    return $exclude;
-}
-
-
-
-# write an xcopy exclude file with excluded source paths
-sub write_exclude_file
-{
-    my ( $copy_element ) = @_;
-
-    # Create a tempfile containing files that are ignored
-    my ( $handle, $tempfile ) = tempfile();
-
-    my @exclude_elements = $copy_element->get_xpath( 'exclude' );
-    for my $exclude ( @exclude_elements )
-    {
-        if ( is_valid( $exclude ) )
-        {
-            my $exclude_path = $exclude->att( 'name' );
-            # Convert forward slashes to backward slashes for xcopy
-            $exclude_path =~ s/\//\\/g;
-            print( $handle "$exclude_path\n" );
-        }
-    }
-
-    print( $handle join( "\n", @excluded_paths ) );
-    close( $handle );
-    return $tempfile;
-}
-
-
-
-sub log_exec
-{
-    my $cmd = shift;
-    print "sys: \"$cmd\"\n";
-    my @output;
-    if ( not $dryrun )
-    {
-        @output = `$cmd 2>&1`;
-    }
-    print @output;
-    $? = 0;
-}
-
-
-
-__END__
-
-
-=head1 NAME
-
-prep_build_area.pl - Populates a build area from input source directories and
-zips.
-
-=head1 SYNOPSIS
-
-prep_build_area.pl -config=<XML config file> [-zipdir=\unzip] [-dry-run=<yes|no>]
-
-=head1 OPTIONS
-
-=over 8
-
-=item B<-config>
-
-The path to a XML configuration file that defines the source inputs to
-the build.
-
-=item B<-zipdir>
-
-A directory that can be used for copying zips into to cache locally before
-unzipping.
-
-=item B<-dry-run>
-
-If defined, this will cause just the inputs to be checked but no copying
-or unzipping will take place.
-
-=back
-
-=head1 DESCRIPTION
-
-This script prepares a build drive by copying directories and unzipping files
-into the drive, based on an XML configuration file that defines a number
-of source inputs. See the XML schema documentation for more details.
-
-=cut
\ No newline at end of file
--- a/buildframework/helium/tools/preparation/preparation.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/preparation/preparation.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -20,16 +20,26 @@
 
 ============================================================================
 -->
+<!--* @package preparation -->
 <project name="preparation" xmlns:hlm="http://www.nokia.com/helium">
     <description>Preparation of a build area and other build initialization.</description>
     
+    <!--* @property prep.config.file
+    Defines configuration file used in prep-copy target. The file defines how files are copied and extracted into build area.
+    @type string
+    @editable required
+    @scope public
+    -->
+    
     <!-- includes all necessary stuff -->
+    <!-- To check which ccmgetinput helium will be use
+    @type string
+    -->
     <property name="ccmgetinput" value="ccmgetinput" />
 
     <import file="bom/bom.ant.xml" />
     <import file="password.ant.xml" />
     <import file="ido-prep.ant.xml" />
-    <import file="overlays.ant.xml" />
     <import file="synergy/ccmgetinput.ant.xml" />
     <import file="synergy/buildmanagement.ant.xml" />
     <import file="ivy/dependencies.ant.xml"/>
@@ -44,6 +54,10 @@
         <property name="base_release.path" value=""/>
         <property name="base_release.getenv_options" value=""/>
         <!-- Using the cleaned version of getenv.pl -->
+        <!-- Defines the location of the getenv.pl script.
+        @type string
+        @scope private
+        -->
         <property name="getenv.tool.location" location="${helium.dir}/tools/preparation/getenv.pl"/>
         <hlm:tempRecordStartMacro name="${build.id}_getenv.log"/>        
         <trycatch>
@@ -86,13 +100,20 @@
     -->
     <target name="delete-old-build-area" if="build.area.limit">
         <dirset id="build.area.dirs" dir="${prep.root.dir}" includes="${build.name}*"/>
+        <resourcecount property="build.area.count">
+            <dirset refid="build.area.dirs"/>
+        </resourcecount>
         <if>
-            <resourcecount when="greater" count="${build.area.limit}">
-                <dirset refid="build.area.dirs"/>
-            </resourcecount>
+            <scriptcondition language="jython">
+                <![CDATA[
+if project.getProperty("build.area.count") > project.getProperty("build.area.limit"):
+    self.value = True
+                ]]>
+            </scriptcondition>
             <then>
+                <math result="num.to.delete" operand1="${build.area.count}" operation="-" operand2="${build.area.limit}" datatype="int"/>
                 <pathconvert property="build.area">
-                    <first count="1">
+                    <first count="${num.to.delete}">
                         <sort xmlns:rcmp="antlib:org.apache.tools.ant.types.resources.comparators">
                             <rcmp:date/>
                             <dirset refid="build.area.dirs"/>
@@ -151,7 +172,8 @@
             <trycatch>
                 <try>
                     <exec executable="python" failonerror="true">
-                        <arg value="${helium.dir}/tools/preparation/freedisk.py" />
+                        <arg value="-m" />
+                        <arg value="freedisk" />
                         <arg value="--drive" />
                         <arg value="@{drive}" />
                         <arg value="--space" />
@@ -249,22 +271,14 @@
     </target>
 
 
-    <!-- Checks that all the build area inputs are available. -->
+    <!-- Obsolete. Left as placeholder. 
+         Earlier: Checks that all the build area inputs are available.  -->
     <target name="check-env-prep" depends="prep-prepare-input">
-        <preset.exec executable="${env.PERL}" failonerror="true">
-            <arg value="${helium.dir}/tools/preparation/prep_build_area.pl" />
-            <arg value="-config" />
-            <arg value="${prep.config.file.parsed}" />
-            <arg value="-destdir" />
-            <arg value="${build.drive}${env.EPOCROOT}" />
-            <arg value="-dry-run" />
-            <arg value="yes" />
-        </preset.exec>
     </target>
 
 
     <!-- Generates a starting XML file for the build summary. -->
-    <target name="build-info" depends="log-build-start">
+    <target name="build-info" depends="start-ant-log,log-build-start">
         <dirname file="${build.summary.file}" property="build.summary.file.dir"/>
         <mkdir dir="${build.summary.file.dir}"/>
         <mkdir dir="${prep.log.dir}"/>
@@ -412,11 +426,8 @@
         <mkdir dir="${build.output.dir}" />
         <mkdir dir="${build.log.dir}" />
         <mkdir dir="${prep.log.dir}" />
-        <mkdir dir="${compile.log.dir}" />
-        <mkdir dir="${test.log.dir}" />
-        <mkdir dir="${post.log.dir}" />
         <mkdir dir="${temp.build.dir}" />  
-        <mkdir dir="${diamonds.build.output.dir}" />       
+        <mkdir dir="${diamonds.build.output.dir}" />
     </target>
     
     
@@ -437,14 +448,6 @@
         
     </target>
     
-    <!-- Starting the main ant_build log 
-    <deprecated>
-    Now this will be take care by the logging listener.
-    It will start the main ant logging when ever the build starts.
-    </deprecated>-->
-    <target name="start-ant-log" />
-    
-    
     <!-- This target exists as a trigger for initiating the Diamonds logger. If 
           it is not included in the build sequence, the build will not be logged to 
           Diamonds. Also  build.property.cache.file will be there contains all the diamonds related properties 
@@ -462,52 +465,9 @@
         </echoproperties>
     </target>    
    
-    <!-- The ido-clean-prep is to be run after compile-clean but before prep copy in order to move old sources away.
-    It uses the "ido.src.root" property.
-    If property "ido.keep.old" is defined, the old files are renamed to a timestamped directory  
-    if not defined the directory for the old  files is "${ido.src.root}.old"
-    <deprecated>IDO which have now implemented the new ADO sysdef structure should use ido-prep-clean.</deprecated>
-    -->
-    <target name="ido-clean-prep" if="ido.src.root" >
-        <if>
-            <isset property="ido.keep.old"/>
-            <then>
-                <tstamp>
-                    <format property="ido.clean.src.extension" pattern="yyyyMMdd'_'HHmmss" />
-                </tstamp>
-            </then>
-            <else>
-                <property name="ido.clean.src.extension" value="old" />
-            </else>
-        </if>
-        <move todir="${ido.src.root}.${ido.clean.src.extension}"  failonerror="false" >
-            <fileset dir="${ido.src.root}" />
-        </move>
-    </target>
+    <!-- Used to prep the build area, now only a placeholder target for the customer -->
+    <target name="prep-copy" />
 
-
-    <!-- Preps the build area by copying and unzipping all the inputs. -->
-    <target name="prep-copy" depends="prep-prepare-input">
-        <preset.exec executable="${env.PERL}" output="${prep.log.dir}/${build.id}_buildarea_prep.log" failonerror="true">
-            <arg value="${helium.dir}/tools/preparation/prep_build_area.pl" />
-            <arg value="-config" />
-            <arg value="${prep.config.file.parsed}" />
-            <arg value="-destdir" />
-            <arg value="${build.drive}${env.EPOCROOT}" />
-            <arg value="-zipdir" />
-            <arg value="${build.drive}/unzip" />
-        </preset.exec>
-        <!-- Delete Symbian file to force S60 version to compile -->
-        <delete file="${build.drive}/epoc32/tools/j2me/hromize.exe" />
-        <!-- parsing the generated log -->
-        <hlm:metadatarecord database="${metadata.dbfile}">
-            <hlm:textmetadatainput>
-                <fileset casesensitive="false" file="${prep.log.dir}/${build.id}_buildarea_prep.log" />
-                <metadatafilterset refid="filterset.buildarea.prep" />
-            </hlm:textmetadatainput>
-        </hlm:metadatarecord>
-        <hlm:generateBuildStatus file="${build.id}_buildarea_prep.log" />
-    </target>
     
     <condition property="run.ccm">
         <and>
@@ -527,8 +487,6 @@
         <runtarget target="prep-work-area"/>
         <runtarget target="find-files-post"/>
     </target>
-    <!-- <deprecated>Please use do-prep-work-area</deprecated> -->
-    <target name="do-ccm-get-input" depends="do-prep-work-area"/>
     
     
     <!-- Wrapper target to call start-remote-builds during the build.
@@ -543,7 +501,7 @@
     <!-- check-env-prep has to be called after getting the delivery else it doesn't works for the first build. -->
     <target name="do-prep" depends="check-tool-dependencies,check-free-space,do-prep-work-area,
                                     do-start-remote-builds,check-env-prep,diamonds,create-bom,log-build-env,prep-copy,
-                                    set-arm-version,scan-overlays" />
+                                    set-arm-version" />
     
     <!-- Macro to notify user by email/sms -->
     <macrodef name="notifyMacro" uri="http://www.nokia.com/helium">
@@ -581,7 +539,13 @@
     
     <!-- Set properties for track full build event. -->
     <target name="set-fullbuild-properties">
+        <!-- Enables logging of the start and end of individual targets.
+        @type string
+        -->
         <property name="log.target" value="yes"/>
+        <!-- Ensures the cleanup-all target is called when the build finishes.
+        @type string
+        -->
         <property name="call.cleanup" value="no"/>
     </target>
     
--- a/buildframework/helium/tools/preparation/synergy/buildmanagement.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/preparation/synergy/buildmanagement.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -20,6 +20,7 @@
 
 ============================================================================
 -->
+<!--* @package preparation -->
 <project name="buildmanagement" xmlns:hlm="http://www.nokia.com/helium">
     <description>
         Runs the build manager Synergy operations.
--- a/buildframework/helium/tools/preparation/synergy/ccmgetinput.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/preparation/synergy/ccmgetinput.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -20,16 +20,45 @@
 
 ============================================================================
 -->
+<!--* @package preparation -->
 <project name="ccmgetinput" xmlns:hlm="http://www.nokia.com/helium">
     <description>
       Retrieves content from Synergy
     </description>
+    
+    <!--* @property ccm.home.dir
+    Home directory of CCM operations.
+    @type string
+    @editable required
+    @scope public
+    -->
 
-    <hlm:logfilterset id="prepWorkArea.logextract.config">
-        <logfilter category="error" regex="^ERROR:" />
-        <logfilter category="warning" regex="^WARNING:" />
-        <logfilter category="info" regex="^INFO:" />
-    </hlm:logfilterset>
+    <!--* @property ccm.database
+    Name of the CCM database to use. No default value.
+    @type string
+    @editable required
+    @scope public
+    -->
+
+    <!--* @property ccm.engine.host
+    Engine host of CCM database. No default value.
+    @type string
+    @editable required
+    @scope public
+    -->
+    
+    <!--* @property prep.delivery.file
+    Defines configuration file used in synergy operations (ccm-get-input for example). This file contains definition of projects that are checkouted or snapshotted.
+    @type string
+    @editable required
+    @scope public
+    -->
+    
+    <hlm:recordfilterset id="prepWorkArea.logextract.config">
+        <hlm:recordfilter category="error" regexp="^ERROR:" />
+        <hlm:recordfilter category="warning" regexp="^WARNING:" />
+        <hlm:recordfilter category="info" regexp="^INFO:" />
+    </hlm:recordfilterset>
 
     
     <!-- This target uses an XML input file to retrieve content from Synergy.
@@ -58,7 +87,8 @@
 try:
     configBuilder = configuration.NestedConfigurationBuilder(open(ant.get_property(r'${prep.delivery.conf.parsed}'), 'r'))
     configSet = configBuilder.getConfiguration()
-    builder = preparation.PreparationBuilder(configSet.getConfigurations(), ant.get_property(r'${ccm.user.login}'), ant.get_property(r'${ccm.user.password}'), cache=ant.get_property(r'${ccm.cache.xml}'))
+    password = ant.get_property(r'${ccm.user.password}')
+    builder = preparation.PreparationBuilder(configSet.getConfigurations(), ant.get_property(r'${ccm.user.login}'), password, cache=ant.get_property(r'${ccm.cache.xml}'))
     builder.check()
     builder.get_content()
     builder.close()
@@ -82,10 +112,4 @@
         </trycatch>
     </target>
 
-    <!--
-        This target uses an XML input file to retrieve content from Synergy.
-        <deprecated>Please use prep-work-area</deprecated>
-    -->
-    <target name="ccm-get-input" depends="prep-work-area" />
-
 </project>
--- a/buildframework/helium/tools/preparation/test/test_bom.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/preparation/test/test_bom.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -35,8 +35,8 @@
         <delete dir="${build.drive}"/>
         <mkdir dir="${build.log.dir}"/>    
         
-        <unzip src="${helium.dir}/external/helium-antlib/scm/demo/hg_test2.zip" dest="${build.drive}" />
-        <unzip src="${helium.dir}/external/helium-antlib/scm/demo/hg_test3.zip" dest="${build.drive}" />
+        <unzip src="${helium.dir}/external/helium-antlib/java/scm/demo/hg_test2.zip" dest="${build.drive}" />
+        <unzip src="${helium.dir}/external/helium-antlib/java/scm/demo/hg_test3.zip" dest="${build.drive}" />
         <hlm:scm scmurl="scm:hg:${build.drive}/test2">
             <hlm:checkout baseDir="${build.drive}/test2a"/>
             <hlm:changelog baseDir="${build.drive}/test2a" xmlbom="${build.log.dir}/${build.id}_bom.xml" />
--- a/buildframework/helium/tools/preparation/test/test_preparation.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/preparation/test/test_preparation.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -43,7 +43,7 @@
     <import file="../../../helium.ant.xml" />
 
     <!-- Simple Synergy testing. -->
-    <target name="test-ccm">
+    <target name="-test-ccm">
         <hlm:python>
 import ccm, gc
 import logging
@@ -92,7 +92,7 @@
             <os family='windows'/>
             <then>
                 <exec osfamily="windows" executable="python" failonerror="true" outputproperty="testbuild.drive">
-                    <arg value="${helium.dir}/tools/common/python/scripts/searchnextdrive.py"/>               
+                    <arg line="-m searchnextdrive"/>               
                 </exec>
                 <au:expectfailure>
                     <antcall target="prep-drive">
--- a/buildframework/helium/tools/preparation/test/test_synergy.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/preparation/test/test_synergy.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -25,14 +25,15 @@
          Testing targets related to Synergy
     </description>
     <property environment="env" />
-    <property name="publish.root.dir" value="${env.TEMP}" />
+    <property name="publish.root.dir" value="${helium.dir}/tests/data/output/" />
     <property name="helium.dir" location="../../.." />
     <import file="../../../helium.ant.xml" />
 
     <target name="test-ccm-preparation-log-extraction">
-        <delete file="${env.TEMP}/temp.log" failonerror="false"/>
-        <delete file="${env.TEMP}/temp.sqlite" failonerror="false"/>
-        <echo file="${env.TEMP}/temp.log">
+        <delete file="${helium.dir}/tests/data/output/temp.log" failonerror="false"/>
+        <delete dir="${helium.dir}/tests/data/output/temp_db" failonerror="false"/>
+        <mkdir dir="${helium.dir}/tests/data/output/"/> 
+        <echo file="${helium.dir}/tests/data/output/temp.log">
    [python] INFO:ccm.extra:Using CachedSessionProvider.
    [python] INFO:preparation.ccmgetinput:Get a session for databasexxx
    [python] INFO:ccm:Database path set using the GSCM database.
@@ -86,19 +87,19 @@
    [python] INFO:ccm.extra:Closing the CachedSessionProvider.
    [python] INFO:ccm.extra:Cleaning up opened sessions.
         </echo>
-        <hlm:metadatarecord database="${env.TEMP}/temp.sqlite">
+        <hlm:metadatarecord  database="${helium.dir}/tests/data/output/temp_db">
             <hlm:textmetadatainput>
-                <fileset casesensitive="false" file="${env.TEMP}/temp.log" />
+                <fileset casesensitive="false" file="${helium.dir}/tests/data/output/temp.log" />
                 <metadatafilterset refid="filterset.test.ccm" />
             </hlm:textmetadatainput>
         </hlm:metadatarecord>
-        <hlm:generateBuildStatus dbfile="${env.TEMP}/temp.sqlite" output-dir="${env.TEMP}/signals" file="temp.log" />
+        <hlm:generateBuildStatus dbfile="${helium.dir}/tests/data/output/temp_db" output-dir="${helium.dir}/tests/data/output/signals" file="temp.log" />
         <au:assertTrue>
             <and>
                 <not>
-                    <hlm:hasSeverity severity="error" file="${env.TEMP}/signals/temp.log.status.xml"/>
+                    <hlm:hasSeverity severity="error" file="${helium.dir}/tests/data/output/signals/temp.log.status.xml"/>
                 </not>
-                <hlm:hasSeverity severity="warning" file="${env.TEMP}/signals/temp.log.status.xml"/>
+                <hlm:hasSeverity severity="warning" file="${helium.dir}/tests/data/output/signals/temp.log.status.xml"/>
             </and>
         </au:assertTrue>
     </target>
--- a/buildframework/helium/tools/publish/get_loc_files.pl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-#! usr/bin/perl 
-
-#============================================================================ 
-#Name        : get_loc_files.pl 
-#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: 
-#============================================================================
-use strict;
-use File::Copy;
-use File::Find;
-use File::Path;
-use Cwd;
-
-my $basedir = $ARGV[0];
-my $locfiles = "locfiles";
-
-find(\&copy_file, $basedir);
-
-sub copy_file {
-		my $filesrc = $File::Find::name;
-		my $filedest = "output\\" . $_;
-		my @subdir = split(/\//, $File::Find::dir);
-	
-		#copy the discovered .loc file to destination
-		if ($_ =~ m/.*\.loc$/) {
-			my $src = $filesrc;
-			my $trg = $basedir . "/output/temp_build_files/locfiles/" . $subdir[-1] . "/" . $_;
-			my $trgdir = $basedir . "/output/temp_build_files/locfiles/" . $subdir[-1];
-
-			mkpath $trgdir;
-			
-			print "copying " . $src . " to " . $trg . "\n";
-			if (-e $trg) {
-				print "File already exists. Not copied!\n";
-			}
-			else
-			{
-				copy($src, $trg) or die "File cannot be copied.";
-			}
-		}
-}
\ No newline at end of file
--- a/buildframework/helium/tools/publish/internal-api/internal-api.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/publish/internal-api/internal-api.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -23,7 +23,13 @@
 <project name="internal-api" xmlns:hlm="http://www.nokia.com/helium">
     <description>List and zip up the included files for an IDO build.</description>
 
+    <!-- Location of the prebuild ado header content.
+    @type string
+    -->
     <property name="internal.api.output.prebuild" location="${build.output.dir}/${build.id}_prebuild.dat"/>
+    <!-- Location of the postbuild ado header content.
+    @type string
+    -->
     <property name="internal.api.output.postbuild" location="${build.output.dir}/${build.id}_postbuild.dat"/>
     
     <!-- Default configuration for internal API content scanning -->
--- a/buildframework/helium/tools/publish/nwiki.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/publish/nwiki.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -20,6 +20,7 @@
 
 ============================================================================
 -->
+<!--* @package publishing -->
 <project name="publish.nwiki" xmlns:hlm="http://www.nokia.com/helium">
     <description>
     Publishing to the nwiki
--- a/buildframework/helium/tools/publish/publish.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/publish/publish.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -20,17 +20,41 @@
 
 ============================================================================
 -->
+<!--* @package publishing -->
 <project name="publish" xmlns:hlm="http://www.nokia.com/helium">
     <description>
     Zipping, delta zipping and copying targets
     </description>
+    
+    <!--* @property delta.zip.file.size
+    Define the file size of the zipped up released file, this is then used by delta zipping code to determine if a delta zip is required or a full zip should be created. The delta zip will only be published if it is less than 1/2 the size of this property
+    @type string
+    @editable required
+    @scope public
+    -->
 
-    <import file="subcon.ant.xml" />
+    <!--* @property file-comparison.left_side
+    The fileset id used on the left side of comparison.
+    @type string
+    @editable required
+    @scope public
+    -->
+
+    <!--* @property file-comparison.right_side
+    The fileset id used on the right side of comparison.
+    @type string
+    @editable required
+    @scope public
+    -->
+
     <import file="internal-api/internal-api.ant.xml" />
     <import file="nwiki.ant.xml" />
     <import file="synergy.ant.xml" />
     <import file="test/test2_publishing_to_diamonds.ant.xml" />
 
+    <!-- Set the maximum number of threads running for archiving (for a parallel job).
+    @type integer
+    -->
     <property name="archive.max.number.of.threads" value="8" />
     
     <fileset id="publish.files" dir="${build.output.dir}">
@@ -71,6 +95,9 @@
     </fileset>
 
     <!-- list of filesets -->
+    <!-- The fileset id which will be upload
+    @type string
+    -->
     <property name="publish.fileset.ids" value="publish.files1,publish.files2,publish.files3,publish.files4" />
 
     <fileset id="helium.files" dir="${helium.dir}">
@@ -110,6 +137,10 @@
 
     <!-- Parses the zip configuration file. Expands all the ant properties. -->
     <target name="preprocess-zip-config">
+        <!-- Path to the parsed file of zip specification file
+        @type string
+        @scope private
+        -->
         <property name="zip.config.file.parsed" location="${temp.build.dir}/zip.cfg.xml.parsed" />
         <copy file="${zip.config.file}" tofile="${zip.config.file.parsed}" overwrite="true">
             <filterchain>
@@ -337,6 +368,10 @@
                     <!-- Stops writing on ...ant_build.log file-->
                     <hlm:startSpecificLogMacro name="${zip.@{type}.log.file}" phase="@{phase}"/>
             
+                    <!-- Path to the parsed file of zip specification file
+                    @type string
+                    @scope private
+                    -->
                     <property name="zip.config.file.parsed" location="${temp.build.dir}/zip.cfg.xml.parsed" />
                     <copy file="@{file}" tofile="${zip.config.file.parsed}" overwrite="true">
                         <filterchain>
@@ -355,6 +390,9 @@
                                 <isgreaterthan arg1="${number.of.threads}" arg2="${archive.max.number.of.threads}"/>
                                 <then>
                                     <ant antfile="${build.drive}/ZIP_${zips.@{type}.spec.name}.xml">
+                                        <!-- how many parallel threads can run
+                                        @type string
+                                        -->
                                         <property name="number.of.threads" value="${archive.max.number.of.threads}"/>
                                     </ant>
                                 </then>
@@ -502,24 +540,6 @@
         <hlm:zipContentMacro type="trace_roms" file="${zip.config.file}" />
     </target>
 
-
-    <!-- Zips the trace rom content -->
-    <target name="zip-uda-roms" unless="skip-zips">
-        <hlm:zipContentMacro type="uda_roms" file="${zip.config.file}" />
-    </target>
-
-
-    <!-- Zips .loc files into individual packages. -->
-    <target name="zip-loc-files">
-        <mkdir dir="${temp.loc.dir}" />
-        <exec executable="perl" dir="${build.drive}/" failonerror="${failonerror}">
-            <arg file="${helium.dir}/tools/publish/get_loc_files.pl" />
-            <arg value="${build.drive}" />
-        </exec>
-        <zip destfile="${loc.output.dir}/${loc.output.filename}" basedir="${temp.loc.dir}" />
-    </target>
-
-
     <!-- Publishes the content defined by the filesets at the top of this project.
     
     The files are split into 4 filesets to parallelize the publish operation:
@@ -621,51 +641,78 @@
         </hlm:python>
     </target>
 
-
     <!-- Reports on the status of the build, through other targets. -->
-    <target name="report" depends="binary-sizes-log" unless="env.HLM_SUBCON">
-        <antcall target="rndsdk-create-api-descr-xml" />
-    </target>
-
+    <target name="report" depends="binary-sizes-log"/>
 
     <!-- Delta zips -->
 
+    <!-- Output location
+    @type string
+    @scope private
+    -->
     <property name="delta.zip.location" value="${build.output.dir}/build_area/delta_zip" />
+    <!-- Temp location
+    @type string
+    @scope private
+    -->
     <property name="delta.zip.temp.location" value="${temp.build.dir}/delta_zip" />
+    <!-- The zip file
+    @type string
+    @scope private
+    -->
     <property name="delta.zip.file" value="${delta.zip.location}/${build.id}_delta_zip.zip" />
+    <!-- Define the file size of the zipped up released file, this is then used by delta zipping code to determine if a delta zip is required or a full zip should be created. The delta zip will only be published if it is less than 1/2 the size of this property
+    @type string
+    -->
     <property name="delta.zip.file.size" value="11000000" />
     <!--default value of approx 11GB-->
 
+    <!-- Special Instructions file for SymDEC
+    @type string
+    @scope private
+    -->
     <property name="delta.zip.delete.file" value="${delta.zip.location}/specialInstructions.xml" />
+    <!-- Temp file
+    @type string
+    @scope private
+    -->
     <property name="delta.ant.file" value="${delta.zip.temp.location}/delta_zip.ant.xml" />
+    <!-- Output location of md5 file
+    @type string
+    @scope private
+    -->
     <property name="md5.signature.file" value="${delta.zip.location}/${build.id}.md5" />
+    <!-- Number of partial md5 files to use during creation
+    @type string
+    @scope private
+    -->
     <property name="md5.split" value="100" />
     <!-- old.md5.file needs to be specified by the user -->
 
 
-    <!-- Private: Patch evalid tool -->
+    <!-- Patch evalid tool. @scope private-->
     <target name="patch-evalid">
         <patch patchfile="${helium.dir}/tools/publish/evalidmd5.patch" originalfile="${build.drive}/epoc32/tools/evalidmd5.pm" />
     </target>
 
 
-    <!-- Private: Revert evalid patch -->
+    <!-- Revert evalid patch. @scope private-->
     <target name="unpatch-evalid">
         <patch reverse="true" patchfile="${helium.dir}/tools/publish/evalidmd5.patch" originalfile="${build.drive}/epoc32/tools/evalidmd5.pm" />
     </target>
 
 
-    <!-- Private: Copy extra tool for evalid -->
+    <!-- Copy extra tool for evalid. @scope private-->
     <target name="pre-build-md5" depends="patch-evalid">
         <copy todir="${build.drive}\epoc32\tools" file="${helium.dir}/tools/publish/evalid_multiple.pl" />
     </target>
 
 
-    <!-- Private: Revert patches -->
+    <!-- Revert patches. @scope private-->
     <target name="post-build-md5" depends="unpatch-evalid" />
 
 
-    <!-- Private: Generate a list of checksums for all files in the build area using EBS system -->
+    <!-- Generate a list of checksums for all files in the build area using EBS system. @scope private-->
     <target name="build-md5-ebs" depends="pre-build-md5">
         <mkdir dir="${delta.zip.location}" />
         <hlm:python failonerror="true">
@@ -678,7 +725,7 @@
         <antcall target="post-build-md5" />
     </target>
 
-    <!-- Private: Generate a list of checksums for all files in the build area using EC system -->
+    <!-- Generate a list of checksums for all files in the build area using EC system. @scope private-->
     <target name="build-md5-ec" depends="pre-build-md5">
         <mkdir dir="${delta.zip.location}" />
         <echo>delta.zip.temp.location: ${delta.zip.temp.location}</echo>
@@ -695,6 +742,10 @@
 
     <!-- Generate a list of checksums for all files in the build area -->
     <target name="build-md5">
+        <!-- Comma seperated excluded directories from the zip
+        @type string
+        @scope public
+        -->
         <property name="delta.exclude.commasep" value="epoc32_save.zip,output/**/*,delta_zips/**/*,temp/**/*,epoc32/**/*.sym,epoc32/BUILD/**/*" />
         <echo>build MD5 started</echo>
         <if>
@@ -754,6 +805,10 @@
 
     <!-- Set prop old.md5.file to md5 file from last build in publish dir -->
     <target name="delta-use-last-build">
+        <!-- Location of current build md5 file
+        @type string
+        @scope private
+        -->
         <property name="md5.current.build" value="${publish.dir}/build_area/delta_zip/${build.id}.md5" />
         <hlm:python outputproperty="old.md5.file">
 import re
@@ -796,7 +851,7 @@
         </fileset>
 
         <antcall target="grace-upload">
-            <reference refid="grace.delta.zips.id" torefid="gracezips" />
+            <reference refid="grace.delta.zips.id" torefid="release.zips" />
         </antcall>
     </target>
 
@@ -835,19 +890,19 @@
     <target name="build-status">
         <hlm:metadatarecord database="${metadata.dbfile}">
             <hlm:antmetadatainput>
-                <fileset casesensitive="false" file="${build.log.dir}/${build.id}_ant_build.log" />
+                <fileset casesensitive="false" file="${build.log}" />
                 <metadatafilterset refid="filterset.ant.output" />
             </hlm:antmetadatainput>
         </hlm:metadatarecord>
 
-        <hlm:signalMacro logfile="${build.id}_ant_build.log" 
+        <hlm:signalMacro logfile="${build.log}" 
             signal.input="exceptionSignalInput" />
     </target>
 
     <!-- Exception handler to process the ant output log -->
     <target name="hlm-exception-handler">
         <if>
-            <available file="${build.log.dir}/${build.id}_ant_build.log"/>
+            <available file="${build.log}"/>
             <then>
                 <runtarget target="do-exception-handler" />
             </then>
--- a/buildframework/helium/tools/publish/subcon.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : subcon.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="publish.subcon" xmlns:hlm="http://www.nokia.com/helium">
-    <description>
-    Targets for subcon build.
-    </description>
-    
-    <!-- Verifies that the subcon zips allow subcon images to be built. -->
-    <target name="create-subcon-roms">
-        <!-- preparation.ant.xml <target name="prep-prepare-input"> 
-        This will generate the subcon.prep.xml.parsed file with the appropriate file locations
-        but with everything as it was in the original build (locations wise...)
-        -->
-        <property name="subcon.prep.config.file.parsed" location="${build.output.dir}/subcon.prep.xml.parsed" />
-        <copy file="${subcon.prep.config.file}" tofile="${subcon.prep.config.file.parsed}" overwrite="true">
-            <filterchain>
-                <expandproperties/>
-            </filterchain>
-        </copy>
-        <property name="subcon.prep.build.dir" value="${prep.root.dir}/subcon_${build.id}"/>
-
-        <antcall target="subcon-build">
-            <param name="build.drive" value="${subcon.build.drive}"/>
-            <param name="prep.config.file" value="${subcon.prep.config.file}"/>
-            <param name="prep.config.file.parsed" value="${subcon.prep.config.file.parsed}"/>
-            <param name="prep.build.dir" value="${subcon.prep.build.dir}"/>
-            <param name="build.log.dir" value="${subcon.build.drive}/output/logs"/>
-        </antcall>
-
-        <!-- CLEAR THE subcon.build.drive Drive -->
-        <hlm:unsubst drive="${subcon.build.drive}" failonerror="${failonerror}"/>
-    </target>
-
-    
-    <!-- Runs a mini build sequence for testing subcon zips. -->
-    <target name="subcon-build" depends="prep-drive,init-build-area,subcon-prep-copy,subcon-roms"/>
-   
-    
-    <!-- Prepares a build drive with subcon zip content.
-    
-    TODO: how to stop doing whole subcon stage if prep fails, but not kill the build?
-    -->
-    <target name="subcon-prep-copy" depends="prep-prepare-input">
-        <preset.exec executable="${env.PERL}" failonerror="${failonerror}"
-                     output="${build.log.dir}/${build.id}_subcon_buildarea_prep.log">
-            <arg value="${helium.dir}/tools/preparation/prep_build_area.pl" />
-            <arg value="-config" />
-            <arg value="${prep.config.file.parsed}" />
-            <arg value="-destdir" />
-            <arg value="${build.drive}${env.EPOCROOT}" />
-            <arg value="-zipdir" />
-            <arg value="${build.drive}/unzip" />
-        </preset.exec>
-        <!--Delete Symbian file to force S60 version to compile-->
-        <delete file="${build.drive}/epoc32/tools/j2me/hromize.exe" />
-    </target>
-
-    
-    <!-- Copies subcon ROMs back to the main build area. -->
-    <target name="copy-subcon-roms" depends="create-subcon-roms">
-        <copy todir="${build.output.dir}" preservelastmodified="true" failonerror="false">
-            <fileset dir="${subcon.prep.build.dir}\output" casesensitive="false">
-                <include name="**/*"/>
-            </fileset>
-        </copy>
-    </target>
-
-    
-    <!-- Verifies that subcon zips can be used to create subcon ROMs. -->
-    <target name="verify-subcon-zips" depends="create-subcon-roms,copy-subcon-roms,zip-subcon-roms"/>
-    
-</project>
--- a/buildframework/helium/tools/publish/synergy.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/publish/synergy.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -20,6 +20,7 @@
 
 ============================================================================
 -->
+<!--* @package publishing -->
 <project name="publish.synergy" xmlns:hlm="http://www.nokia.com/helium">
     <description>
     Synergy publishing related targets
--- a/buildframework/helium/tools/publish/test/test2_publishing_to_diamonds.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/publish/test/test2_publishing_to_diamonds.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -24,10 +24,10 @@
     <description>
         Targets to test publishing to diamonds
     </description>
-    <!-- Private: -->
+    <!-- @scope private -->
     <target name="xtest-diamonds" depends="setup-test-publishing-to-diamonds,diamonds,xtest-diamonds-validate-policy,xtest-diamonds-check-tool-dependencies"/>
     
-    <!-- Private: -->
+    <!-- @scope private -->
     <target name="setup-test-publishing-to-diamonds">
         <property name="build.family" value="helium_test"/>
         <property name="email.from" value="none"/>
@@ -55,7 +55,7 @@
     </target>
 --> 
     
-    <!-- Private: -->
+    <!-- @scope private -->
     <target name="xtest-diamonds-check-tool-dependencies">
         <antcall target="check-tool-dependencies">
         </antcall>            
@@ -71,7 +71,7 @@
         </xpathtest>
     </target> 
     
-    <!-- Private: -->
+    <!-- @scope private -->
     <target name="xtest-diamonds-validate-policy">
         <antcall target="render-validate-policy">
         </antcall>            
--- a/buildframework/helium/tools/quality/conflict-checker.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/quality/conflict-checker.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -20,11 +20,16 @@
 
 ============================================================================
 -->
+<!--* @package quality -->
 <project name="quality.conflict-checker" xmlns:hlm="http://www.nokia.com/helium">
     <description>
         Analyse the content created from two different components.
     </description>
 
+    <!-- Default name of the build duplicates log file.
+    @type string
+    @scope private
+    -->
     <property name="build.duplicates.log" location="${temp.build.dir}/${build.id}_build_duplicates.xml" />
 
     <!--
--- a/buildframework/helium/tools/quality/file-comparison/file-comparison.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/quality/file-comparison/file-comparison.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -20,17 +20,39 @@
 
 ============================================================================
 -->
+<!--* @package quality -->
 <project name="quality.file-comparison" xmlns:hlm="http://www.nokia.com/helium">
     <description>
     File comparison integration using Beyond Compare.
     </description>
 
+    <!-- Defines the location of BComp.exe.
+    @type string
+    -->
     <property name="file-comparison.bcomp_path" location="C:\APPS\bc\BComp.exe" />
+    <!-- Defines the location of Beyond Compare configuration file.
+    @type string
+    -->
     <property name="file-comparison.bcomp_conf" location="${helium.dir}/tools/quality/file-comparison/BCompare-config.txt" />
+    <!-- Defines the location where comparison output should be put.
+    @type string
+    -->
     <property name="file-comparison.output" location="${build.output.dir}/file_comparison" />
+    <!-- Defines the name of the folder for the left side of comparison.
+    @type string
+    -->
     <property name="file-comparison.left_name" value="left" />
+    <!-- Defines the name of the folder for the right side of comparison.
+    @type string
+    -->
     <property name="file-comparison.right_name" value="right" />
+    <!-- Defines the regexp pattern (in ANT-pattern style) which to mach from given filesets.
+    @type string
+    -->
     <property name="file-comparison.regexp.from" value="(.*)" />
+    <!-- Defines the regexp pattern (in ANT-pattern style) what to use in (possible) replacement.
+    @type string
+    -->
     <property name="file-comparison.regexp.to" value="\1" />
 
     <!--
--- a/buildframework/helium/tools/quality/internal-exports.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/quality/internal-exports.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -20,6 +20,7 @@
 
 ============================================================================
 -->
+<!--* @package quality -->
 <project name="quality.internal-exports" xmlns:hlm="http://www.nokia.com/helium">
     <description>
         Analyse the content generated under the source tree.
--- a/buildframework/helium/tools/quality/mmp-to-target.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/quality/mmp-to-target.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -20,6 +20,7 @@
 
 ============================================================================
 -->
+<!--* @package quality -->
 <project name="quality.mmp-to-target" xmlns:hlm="http://www.nokia.com/helium">
     <description>
         Generate the list of targets from the project files.
--- a/buildframework/helium/tools/quality/quality.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/quality/quality.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -20,6 +20,7 @@
 
 ============================================================================
 -->
+<!--* @package quality -->
 <project name="quality">
     <description>
         Quality
--- a/buildframework/helium/tools/quality/validate-policy.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/quality/validate-policy.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -20,15 +20,33 @@
 
 ============================================================================
 -->
+<!--* @package quality -->
 <project name="quality.validate-policy" xmlns:hlm="http://www.nokia.com/helium">
     <description>
     Policy file validation.
     </description>
 
+    <!-- Location validate policy xml log.
+    @type string
+    @scope private
+    -->
     <property name="validate.policy.log" location="${temp.build.dir}/${build.id}_validate-policy.summary.xml" />
+    <!-- Location of the LogXML output file.
+    @type string
+    @scope private
+    -->
     <property name="validate.policy.log.xml" location="${temp.build.dir}/${build.id}_validate-policy.log.xml" />
+    <!-- Location of the CSV file that defines policy IDs.
+    @type string
+    -->
     <property name="validate.policy.csv" location="${helium.dir}/tests/minibuilds/compile/distribution.policy.extended_for_sf.id_status.csv" />
+    <!-- Skip the validation of the given root folders.
+    @type boolean
+    -->
     <property name="validate.policy.ignoreroot" value="false" />
+    <!-- Comma separated list of pattern for policy validation. Defualt value is, distribution.policy.s60,distribution.policy
+    @type string
+    -->
     <property name="validate.policy.pattern" value="distribution.policy.s60,distribution.policy" />
 
     <!-- Default path settings for policy validation. -->
@@ -110,6 +128,7 @@
     <target name="integration-validate-policy">
         <mkdir dir="${build.log.dir}"/>
         <mkdir dir="${post.log.dir}"/>
+        <mkdir dir="${temp.build.dir}"/>
         <hlm:validatePolicyMacro output="${validate.policy.log}" ids="${validate.policy.csv}" ignoreroot="${validate.policy.ignoreroot}" pattern="${validate.policy.pattern}">
             <path refid="reference.policy.path.list" />
         </hlm:validatePolicyMacro>
@@ -118,7 +137,7 @@
                 <fileset casesensitive="false" file="${validate.policy.log}/" />
             </hlm:policymetadatainput>
         </hlm:metadatarecord>
-        <hlm:generateBuildStatus file="${build.id}_validate-policy.summary" />
+        <hlm:generateBuildStatus file="${build.id}_validate-policy.summary.xml" />
     </target>
 
     <!--
--- a/buildframework/helium/tools/release/release.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/release/release.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -20,10 +20,46 @@
 
 ============================================================================
 -->
+<!--* @package releases -->
 <project name="release" xmlns:hlm="http://www.nokia.com/helium">
     <description>
         Release publising.
     </description>
+    
+    <!--* @property release.grace.service
+    The Grace service used
+    @type string
+    @editable required
+    @scope public
+    -->
+
+    <!--* @property release.grace.product
+    The Grace product used
+    @type string
+    @editable required
+    @scope public
+    -->
+
+    <!--* @property release.grace.mail.to
+    To whom the completion mail is sent to
+    @type string
+    @editable required
+    @scope public
+    -->
+
+    <!--* @property release.grace.mail.subject
+    The subject of the Grace upload completion mail
+    @type string
+    @editable required
+    @scope public
+    -->
+
+    <!--* @property release.grace.mail.message
+    The message contents of the Grace upload completion mail
+    @type string
+    @editable required
+    @scope public
+    -->
 
     <fileset id="release.files" dir="${publish.dir}">
         <include name="logs/**/*" />
@@ -43,6 +79,20 @@
         </copy>
     </target>
 
+    <!--* @property s60.build.robot.path
+    Location where to publish the build robot delivery.
+    @type string
+    @editable required
+    @scope public
+    -->
+
+    <!--* @property s60.build.robot.date
+    This property represent the releasing interval. The syntax is as follow: day1,time1,day2,time2,projectname;day1,time1,day2,time2,projectname2 With day and time matching the following properties: day [1, 14] time [00, 23]:[00, 59] Example: 2,10:00,3,20:00,ABS_domain
+    @type string
+    @editable required
+    @scope public
+    -->
+
     <!--
         This target sets the '''do.robot.release''' property so it activates 
         the '''ido-sources-to-s60-build-robot''' target.
@@ -79,6 +129,10 @@
     property to tell the location of the build server which is "s60.build.robot.path".
     -->
     <target name="ido-sources-to-s60-build-robot" if="do.robot.release" depends="ido-create-ado-mapping,check-robot-release,lookup-email">
+        <!-- Location of the ready.txt FMPP template (override that property if you want to customize the content).
+        @type string
+        @scope private
+        -->
         <property name="ido.template.robot.ready" location="${helium.dir}/tools/common/templates/ido/ready.txt.ftl" />
         <tempfile property="s60robot.dynamic.config" suffix=".xml" deleteonexit="false" destdir="${temp.build.dir}" />
         <fmpp sourceFile="${helium.dir}/tools/common/templates/ido/ido-robot-zip.ant.xml.ftl" outputFile="${s60robot.dynamic.config}">
--- a/buildframework/helium/tools/relnotes/getVariantConfiguration.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-#============================================================================ 
-#Name        : getVariantConfiguration.py 
-#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:
-#===============================================================================
-
-#---------------------------------------------------------------------------------------------------------------------------------------------
-# Name: getVariantConfiguration.py
-# Synopsis: Extract the product variant configuration
-#
-# Requirements:
-#        -Python 2.4
-#
-# History:
-#     Version: 1.0  23/5/2007
-#       First version
-#---------------------------------------------------------------------------------------------------------------------------------------------
-
-
-import localisation
-import configuration
-import codecs
-import sys
-import escapeddict
-
-class VariantInfo(object):
-    def __init__(self, variant, languagedb):
-        self.__variant = variant
-        self.__languagedb = languagedb
-    
-    def __str__(self):
-        output = "%s (%s)" % (self.__variant['description'], self.__variant['variant.id']) + ","
-        output += "%s (%s)" % (self.__languagedb.get_name(self.__variant['default']), self.__variant['default']) + ","
-        output += "\"%s\"" % ",".join(map(lambda x: "%s (%s)" % (self.__languagedb.get_name(x), x), self.__variant['languages']))
-        return output
-
-def main():
-    """ Main function create a csv file that defines the variant configuration.
-    """
-    product = sys.argv[1]
-    languagefie = sys.argv[2]
-    configfile = sys.argv[3]
-    outputfile = sys.argv[4]
-    
-    try:
-        languagedb = localisation.Languages(languagefie)
-        builder = configuration.NestedConfigurationBuilder(open(configfile, 'r'))
-        config_set = builder.getConfiguration()
-        outfile = open(outputfile, "w+")
-        outfile.write("Variant,Default language,Languages\n")
-        for variant in config_set.getConfigurations(product):
-            if variant.name == "languagepack":
-                v = VariantInfo(variant, languagedb)
-                outfile.write(str(v)+"\n")
-        outfile.close()
-    except Exception, exc:
-        print "ERROR: %s" % exc
-        sys.exit(-1)
-    
-    sys.exit(0)
-
-if __name__ == "__main__":
-    main()
--- a/buildframework/helium/tools/relnotes/icf2txt.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-#============================================================================ 
-#Name        : icf2txt.py 
-#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:
-#===============================================================================
-
-import sys
-import amara
-
-def main():
-    if len(sys.argv) != 3:
-        print "Usage: icf2txt.py bom.xml out.txt"
-        sys.exit(1)
-
-    bomxmlFile = open(sys.argv[1], "r")
-    outFile = open(sys.argv[2], "w")
-    
-    bomxml = amara.parse(bomxmlFile)
-    
-    if hasattr(bomxml.bom.content.project, "icf"):
-        for icf in bomxml.bom.content.project.icf:
-            outFile.write(str(icf) + "\n")
-
-    outFile.close()
-    bomxmlFile.close()
-
-if __name__ == "__main__":
-    main()
\ No newline at end of file
--- a/buildframework/helium/tools/relnotes/readHTML.py	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,142 +0,0 @@
-#============================================================================ 
-#Name        : readHTML.py 
-#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:
-#===============================================================================
-
-# Name: readHTML.py
-# Synopsis: This script creates a CSV file from the Log File Summary (.html)
-
-import htmllib
-import sys
-import formatter
-import re
-
-class HTMLComponent(object):
-    """
-    Represents a component in the log file summary
-    """
-    def __init__(self):
-        self._name = ''
-        self._errorCount = 0
-        self._warningCount = 0
-        
-    def getCSV(self):
-        return self._name + ',' + str(self._errorCount) + ',' + str(self._warningCount)
-        
-    def __setName(self, n):
-        self._name = n
-    def __setErrorCount(self, n):
-        self._errorCount = n
-    def __setWarningCount(self, n):
-        self._warningCount = n
-        
-    name = property(None, __setName)    
-    errorCount = property(None, __setErrorCount)
-    warningCount = property(None, __setWarningCount)
-
-class LogHTMLParser(htmllib.HTMLParser):
-    """
-    Parse the scan2log HTML file into CSV
-    """
-    def __init__(self, verbose=0):
-        self.anchors = {}
-        f = formatter.NullFormatter()
-        htmllib.HTMLParser.__init__(self, f, verbose)
-        
-        self.state = -1 #represents column, 0 is first
-        self.printFlag = False
-        self.errorCount = 0
-        self.warningCount = 0
-        
-        self._components = []
-        self.component = None
-        
-    def __getComponents(self):
-        return self._components
-        
-    components = property(__getComponents)
-        
-    def handle_data(self, text):
-        text = text.strip()
-        
-        #ignore plain text links that appear eg. [9]
-        p = re.compile('\[[0-9]*\]')
-        if not text or p.match(text):
-            return
-      
-        #start of area to parse
-        if (text == 'Component'):
-            self.state = 0
-  
-        #end of area to parse
-        if (text == 'By Command'):
-            self.state = -1
-          
-        #reset column if we get lost
-        #if (self.state > 0 and not text.isdigit()):
-        #    self.state = 0
-        
-        if (self.state == 0):
-            self.component = HTMLComponent()
-            self.component.name = text
-        if (text.isdigit() and self.state == 2):
-            self.errorCount += int(text)
-            self.component.errorCount = text
-        if (text.isdigit() and self.state == 3):
-            self.warningCount += int(text)
-            self.component.warningCount = text
-            
-        #if there are more than/ equal 5 errors or 50 warnings we print this row
-        if (text.isdigit() and ((self.state == 2 and (int(text) >= 5)) or 
-          (self.state == 3 and (int(text) >= 50)))):
-            self.printFlag = True
-
-        if (self.state == 5):
-            if (self.printFlag):                
-                self.components.append(self.component)
-                
-            self.printFlag = False
-          
-        if (self.state >= 0):
-            self.state += 1
-            self.state %= 6
-        
-def main():    
-    if len(sys.argv) != 3:
-        print "Usage: readHTML.pl LogFile.html errors.csv"
-        sys.exit(1)
-    
-    parser = LogHTMLParser()
-    
-    inputFile = file( sys.argv[1], 'rb' )
-    outFile = file( sys.argv[2], 'w' )
-    
-    outFile.write("Component,Errors (more than 5),Warnings (more than 50)\n")
-
-    parser.feed(inputFile.read())
-
-    for c in parser.components:
-        outFile.write(c.getCSV() + "\n")
-    
-    outFile.write("Total," + str(parser.errorCount) + "," + str(parser.warningCount) + "\n")
-    
-    inputFile.close()
-    outFile.close()
-    parser.close()
-        
-if __name__ == '__main__' :
-    main()
\ No newline at end of file
--- a/buildframework/helium/tools/relnotes/relnotes.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/relnotes/relnotes.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -20,6 +20,7 @@
 
 ============================================================================
 -->
+<!--* @package releases -->
 <project name="relnotes" default="release-notes" xmlns:hlm="http://www.nokia.com/helium">
     <description>
     Generates a release note by modifying a template (that you can edit yourself) with
@@ -29,23 +30,83 @@
     * Adds table of errors and warnings
     * Generates list of baselines, projects and tasks used
     </description>
+    
+    <!--* @property product.printname
+    A printable name for a product used in release notes.
+    @type string
+    @editable required
+    @scope public
+    -->
+    
+    <!--* @property product.type
+    Project ID in release notes.
+    @type string
+    @editable required
+    @scope public
+    -->
+    
+    <!--* @property relnotes.config.dir
+    Defines the directory that contains release notes creation configuration files.
+    @type string
+    @editable required
+    @scope public
+    -->
 
+    <!-- Defines the directory that will contain the output of release notes creation.
+    @type string
+    @scope private
+    -->
     <property name="releasenotes.output.dir" value="${build.output.dir}/relnotes"/>
+    <!-- Defines the logo image file which will be used in release notes.
+    @type string
+    @scope private
+    -->
     <property name="releasenotes.logo" value="${relnotes.config.dir}/logo.png"/>
+    <!-- Property file with customer values
+    @type string
+    @scope private
+    -->
     <property name="releasenotes.props" value="${relnotes.config.dir}/relnotes.properties"/>
+    <!-- Temp file
+    @type string
+    @scope private
+    -->
     <property name="releasenotes.temp.props" value="${temp.build.dir}/relnotes.properties"/>
+    <!-- Temp file
+    @type string
+    @scope private
+    -->
     <property name="releasenotes.temp.props2" value="${temp.build.dir}/relnotes2.properties"/>
+    <!-- Defines the name of the release note template used.
+    @type string
+    @scope private
+    -->
     <property name="releasenotes.template" value="${relnotes.config.dir}/template.rtf"/>
+    <!-- Location of output rtf file
+    @type string
+    @scope private
+    -->
     <property name="releasenotes.output" value="${releasenotes.output.dir}/${build.id}_relnotes.rtf"/>
+    <!-- Temp file
+    @type string
+    @scope private
+    -->
     <property name="releasenotes.temp.errors" value="${temp.build.dir}/errors.csv"/>
+    <!-- Temp file
+    @type string
+    @scope private
+    -->
     <property name="releasenotes.temp.output" value="${temp.build.dir}/tempDocument.rtf"/>
+    <!-- Location of scan2log HTML file
+    @type string
+    @scope private
+    -->
     <property name="releasenotes.scan2log" value="${build.log.dir}/${build.id}.${product.family}_scan2.html"/>
     
     <import file="${relnotes.config.dir}/relnotes_properties.ant.xml" optional="true"/>
     
-    <!-- Private: -->
-    <target name="release-notes-variant-configuration" depends="rombuild-prepare-input">
-        
+    <!-- @scope private -->
+    <target name="release-notes-variant-configuration" depends="imaker-merge-rom-xml">
         <script language="jython" setbeans="false">
 tagnames = ""
 for product in project.getProperty("product.list").split(","):
@@ -55,10 +116,9 @@
         <replace file="${releasenotes.output}" token="TypeVariantTableHere" value="${variant.product.tagnames}" summary="true"/>
         <for list="${product.list}" delimiter="," param="product.name" >
             <sequential>            
-                <exec executable="python" dir="${helium.dir}/tools/relnotes" failonerror="${failonerror}">
-                    <arg value="getVariantConfiguration.py"/>
+                <exec executable="python" failonerror="${failonerror}">
+                    <arg line="-m getVariantConfiguration"/>
                     <arg value="@{product.name}"/>
-                    <arg value="${localisation.language.file}"/>
                     <arg value="${rombuild.config.file.parsed}"/>
                     <arg value="${temp.build.dir}/variant_@{product.name}.csv"/>
                 </exec>
@@ -75,13 +135,20 @@
         </for>
     </target>
     
-    <!-- Private: Create error list in release notes -->
+    <!-- Create error list in release notes
+    @scope private    
+    -->
     <target name="release-notes-error-summary">
-        <exec executable="python" dir="${helium.dir}/tools/relnotes" failonerror="${failonerror}">
-            <arg value="readHTML.py"/>
-            <arg value="${releasenotes.scan2log}"/>
-            <arg value="${releasenotes.temp.errors}"/>
-        </exec>
+        <fmpp sourceFile="${helium.dir}/tools/relnotes/templates/errors.csv.ftl"
+                     outputfile="${releasenotes.temp.errors}">
+            <freemarkerLinks expandProperties="yes">
+                macro: ${helium.dir}/tools/common/templates/macro
+            </freemarkerLinks>
+            <data expandProperties="yes">
+                dbPath: ${metadata.dbfile}
+                ant: antProperties()
+            </data>
+        </fmpp>
         <hlm:python>
 import ant
 import rtfutils
@@ -92,7 +159,7 @@
         <move file="${releasenotes.temp.output}" tofile="${releasenotes.output}"/>
     </target>
     
-    <!-- Private: Add logo to release notes -->
+    <!--  Add logo to release notes. @scope private -->
     <target name="release-notes-logo">
         <hlm:python>
 import ant
@@ -103,9 +170,14 @@
         <move file="${releasenotes.temp.output}" tofile="${releasenotes.output}"/>
     </target>
     
-    <!-- Private: Find project and baseline of what is running helium -->
+    <!-- Find project and baseline of what is running helium
+    @scope private    
+    -->
     <target name="release-notes-getcmprojectname">
-        <script language="jython" setbeans="false">
+        <if>
+            <istrue value="${ccm.enabled}" />
+            <then>
+                <script language="jython" setbeans="false">
 import ccm.extra
 import traceback
 import os
@@ -133,8 +205,10 @@
 except Exception, ex:
     print 'Caught exception: ' + str(ex)
     traceback.print_exc()
-        </script>
-        <hlm:python outputproperty="ccm.toplevel.baseline">
+    if session:
+        session.close()
+                </script>
+                <hlm:python outputproperty="ccm.toplevel.baseline">
 import traceback
 import ant
 import logging
@@ -154,43 +228,62 @@
 except Exception, ex:
     print 'Caught exception: ' + str(ex)
     traceback.print_exc()
-        </hlm:python>
+    if session:
+        session.close()
+                </hlm:python>
+            </then>
+        </if>
     </target>
     
-    <!-- Private: 
-    Look at property 'project.startswith' and find complete CM name
-    Output property: '${project.startswith}.project'
+    <!--
+    Look 'startsWith' and find complete CM name
+    Output property: '{startsWith}.project'.
+        
+    @scope private
     -->
-    <target name="release-notes-getprojectname">
-        <hlm:python outputproperty="release.notes.temp">
+    <macrodef name="releaseNotesGetProjectName" uri="http://www.nokia.com/helium">
+        <attribute name="startsWith" />
+        <sequential>
+            <if>
+                <available file="${build.log.dir}/${build.id}_bom.xml" />
+                <then>
+                    <hlm:python outputproperty="@{startsWith}.project">
 import amara
 import ant
 
-bomfile = open(r"${temp.build.dir}/${build.id}_BOM.xml")
+bomfile = open(r"${build.log.dir}/${build.id}_bom.xml")
 bom = amara.parse(bomfile)
 
 for p in bom.bom.content.project:
-    if (str(p.name).startswith(ant.get_property(r'${project.startswith}'))):
+    if (str(p.name).startswith(ant.get_property(r'@{startsWith}'))):
         print str(p.name)
 bomfile.close()
-        </hlm:python>
-        <script language="jython" setbeans="false">
-project.setProperty(project.getProperty('project.startswith') + '.project', project.getProperty('release.notes.temp'))
-        </script>
-        
-    </target>
+                    </hlm:python>
+                </then>
+            </if>
+        </sequential>
+    </macrodef>
     
-    <!-- Private: Write projects, baselines and task list for MC and IBUSAL -->
+    <!-- Write projects, baselines and task list for MC and IBUSAL
+    @scope private    
+    -->
     <target name="release-notes-ccm" depends="get-ccm-password,release-notes-getcmprojectname,create-bom">
-        <hlm:python>
+        <if>
+            <and>
+                <istrue value="${ccm.enabled}" />
+                <available file="${build.log.dir}/${build.id}_bom.xml" />
+            </and>
+            <then>
+                <hlm:python>
 import amara
 import ant
 import bomtofile
 import ccmutil
 
-bomfile = open(r"${temp.build.dir}/${build.id}_BOM.xml")
+bomfile = open(r"${build.log.dir}/${build.id}_bom.xml")
 bom = amara.parse(bomfile)
-session = ccmutil.get_session(ant.get_property(r'${ccm.database}'), ant.get_property(r'${ccm.user.login}'), ant.get_property(r'${ccm.user.password}'), ant.get_property(r'${ccm.engine.host}'), ant.get_property(r'${ccm.database.path}'))
+password = ant.get_property(r'${ccm.user.password}')
+session = ccmutil.get_session(ant.get_property(r'${ccm.database}'), ant.get_property(r'${ccm.user.login}'), password, ant.get_property(r'${ccm.engine.host}'), ant.get_property(r'${ccm.database.path}'))
 for p in bom.bom.content.project:
     if p.name == ant.get_property(r'${ccm.toplevel.project}'):
         bomwriter = bomtofile.BOMWriter(session, 'MC', p, ant.get_property(r'${releasenotes.output.dir}'))
@@ -204,25 +297,34 @@
         bomwriter.writetasks()
 session.close()
 bomfile.close()
-        </hlm:python>
+                </hlm:python>
+            </then>
+        </if>
     </target>
     
-    <!-- Private: Read BOM and write ICF list -->
+    <!-- Read BOM and write ICF list
+    @scope private
+    -->
     <target name="release-notes-icfs" depends="create-bom">
-        <exec executable="python" dir="${helium.dir}/tools/relnotes" failonerror="${failonerror}">
-            <arg value="icf2txt.py"/>
+        <exec executable="python" failonerror="${failonerror}">
+            <arg line="-m icf2txt"/>
             <arg value="${temp.build.dir}/${build.id}_BOM.xml"/>            
             <arg value="${releasenotes.output.dir}/icdicf.txt"/>
         </exec>
     </target>
     
-    <!-- Private: -->
+    <!-- @scope private -->
     <target name="release-notes-test" if="hlm.enable.asserts">
-        <hlm:python>
+        <if>
+            <istrue value="${ccm.enabled}" />
+            <then>
+                <hlm:python>
 import ccm
 #check for ccm session leaks
 assert (len(ccm.running_sessions()) == 0)
-        </hlm:python>
+                </hlm:python>
+            </then>
+        </if>
     </target>
         
     <!-- 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/tools/relnotes/templates/errors.csv.ftl	Thu Mar 04 15:10:37 2010 +0200
@@ -0,0 +1,34 @@
+<#--
+============================================================================ 
+Name        : error.csv.ftl 
+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:
+
+============================================================================
+-->
+Component,Errors,Warnings
+<#assign table_info = pp.loadData('com.nokia.helium.metadata.SQLFMPPLoader', "${dbPath}") >
+<#assign error_table = table_info['select *
+FROM ((SELECT data.component AS ecomponent, count(data.line_number) AS ecount
+FROM  (SELECT * from component LEFT OUTER JOIN metadata ON component.id=metadata.component_id) AS data, logfiles, priority
+WHERE logfiles.id=data.logPath_id and logfiles.path like \'%_compile.log\' and priority.id=data.priority_id and priority.priority=\'ERROR\'
+GROUP BY data.component) AS error LEFT OUTER JOIN (SELECT dataw.component AS wcomponent, count(dataw.line_number) AS wcount
+FROM  (SELECT * from component LEFT OUTER JOIN metadata ON component.id=metadata.component_id) AS dataw, logfiles, priority
+WHERE logfiles.id=dataw.logPath_id and logfiles.path like \'%_compile.log\' and priority.id=dataw.priority_id and priority.priority=\'WARNING\'
+GROUP BY dataw.component) AS warning ON error.ecomponent=warning.wcomponent)']>
+<#list error_table as row>
+${row['ecomponent']},${row['ecount']},${row['wcount']}
+</#list>
\ No newline at end of file
--- a/buildframework/helium/tools/rombuild/example/rom_image_config.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1506 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : rom_image_config.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:
-
-============================================================================
--->
-<build>
-    <spec name="mc" abstract="true">
-        <set name="fota.version" value="${fota.a.build}"/>
-        <set name="ui.platform" value="mc5132"/>
-        <set name="zips.loc.dir" value="${zips.loc.dir}" />
-        <set name="languages.xml.location" value="${localisation.language.file}" />
-        <set name="variation.dir" value="${build.drive}\mc\mc_config\mc_5132_config\PRODUCT\variation" />
-        <set name="rombuild.config.file" value="${rombuild.config.file.parsed}" />
-        <set name="version.product.name" value="N00"/>
-        <set name="imaker.languagepack.automation" value="0"/>
-        <set name="enable.romsymbol" value="1"/>
-        <set name="today" value="$(TODAY)"/>
-        <set name="customer.id" value="00"/> <!-- customer id is 00 in case of EE. -->
-        <set name="customer.revision" value="00"/> <!-- customer revision is 00 in case of EE. -->
-        <set name="uda.revision" value="00"/> <!-- uda revision is 00 in case of EE. -->
-    
-        <set name="rommake.flags" value="-es60ibymacros -DXTI_TRACES -DNO_PLATSEC"/>
-        <set name="version.bandvariant" value="0"/>
-        <set name="version.pd.milestone" value="${major.version}"/>
-        <set name="version.pr" value="${pr}"/>
-        <set name="version.m.step" value="${m.step}"/>
-        <set name="version.bandvariant" value="0"/>
-        <set name="version.rimcycle" value="${minor.version}"/>
-
-        <set name="image.version.name" value="${version.pr}.${build.number}${fota.version}" />
-        <set name="rombuild.id" value="${rommake.product.type}_${image.version.name}"/>
-
-        <set name="rom.output.dir" value="${build.output.dir}"/>
-        <set name="image.type" value="prd,rnd"/>
-        <set name="customer.type" value="vanilla"/>
-        <set name="image.master.iby" value="\epoc32\rom\master.oby"/>
-        <set name="image.variant.iby" value="\epoc32\rom\mc_5132_variant_imaker.oby"/>
-        <set name="image.override.iby" value="\epoc32\rom\override.oby"/>
-        <set name="version.copyright" value="(C) Nokia"/>
-        <set name="build.drive" value="${build.drive}"/>
-        <set name="customer.image.version.name" value="${image.version.name}" />
-    
-        <!-- Should we build and include foti and fota apps images. -->
-        <set name="use.foti" value="1"/>
-        <set name="use.fota" value="1"/>
-        <set name="release.date" value="${fota.release.date}"/>
-
-        <set name="enable.mobile.crash.sender" value="1" />
-
-        <set name="bb5.product.info" value="69"/>
-        <set name="flash.size" value="2048"/>
-        <set name="mytraces.binaries" value="" />
-        <set name="use.platsecbin" value="1"/>
-
-        <!-- Template full outputdir  (used by iMaker for ROM generation) -->
-        <set name="flash.output.dir" value="${rom.output.dir}/development_flash_images/engineering_english/${image.type}"/>
-        <set name="core.output.dir" value="${rom.output.dir}/${core.image.path}"/>
-        <set name="languagepack.output.dir" value="${rom.output.dir}/${languagepack.image.path}"/>
-        <set name="customer.output.dir" value="${rom.output.dir}/${customer.image.path}"/>
-        <set name="uda.output.dir" value="${rom.output.dir}${uda.image.path}"/>
-        <set name="eraseuda.output.dir" value="${rom.output.dir}"/>
-        
-        <!-- Template relative paths  -->
-        <set name="core.image.path" value="release_flash_images/${image.type}/core" />
-        <set name="languagepack.image.path" value="release_flash_images/${image.type}/language/${languagepack.id}_${description}" />
-        <set name="customer.image.path" value="release_flash_images/${image.type}/customer/${customer.type}/${customer.id}_${description}" />
-        <set name="uda.image.path" value="release_flash_images/${image.type}/user_data/${image.type}/${uda.id}_${description}" />
-        <set name="flash.config.path" value="release_flash_images/${image.type}/customer/${customer.type}/${customer.id}_${description}" />
-
-        <!-- Template names  -->
-        <set name="flash.image.name" value="${rombuild.id}_${image.type}_${flash.id}"/>    
-        <set name="eraseuda.image.name" value="${rombuild.id}_${build.version}"/>    
-        <set name="core.image.name" value="${rombuild.id}_${image.type}"/>
-        <set name="languagepack.image.name" value="${rombuild.id}_${languagepack.id}_${image.type}"/>
-        <set name="customer.image.name" value="${rommake.product.type}_${customer.image.version.name}_${customer.id}.${customer.revision}_${image.type}"/>
-        <set name="uda.image.name" value="${rombuild.id}_${uda.id}.${uda.revision}_${image.type}"/>
-        <set name="flash.config.name" value="${languagepack.image.name}_${customer.image.version.name}.${customer.id}.${customer.revision}_${image.type}.config.xml"/>
-
-        <!-- Template publish paths (used for flash config files generation) -->
-        <set name="rom.publish.dir" value="${image.version.name}"/>
-        <set name="core.publish.dir" value="${rom.publish.dir}/${core.image.path}"/>
-        <set name="languagepack.publish.dir" value="${rom.publish.dir}/${languagepack.image.path}"/>
-        <set name="customer.publish.dir" value="${customer.image.version.name}/${customer.image.path}"/>
-        <set name="uda.publish.dir" value="${rom.publish.dir}${uda.image.path}"/>
-        <!-- To be commented in when publish.dir is publish directories are up to date in common.ant.xml
-        <set name="flash.config.publish.dir" value="${publish.root.dir}/${build.name}/releases/${rom.publish.dir}/${flash.config.path}"/> 
-            -->
-        <set name="flash.config.publish.dir" value="${build.output.dir}/${flash.config.path}"/> 
-
-        <!-- fwid generation -->
-        <set name="rofs1.fwid.id" value="core"/>
-        <set name="rofs2.fwid.id" value="language"/>
-        <set name="rofs3.fwid.id" value="customer"/>
-        <set name="rofs1.fwid.version" value="${version.product.type}_${core.version.info}"/>
-        <set name="rofs2.fwid.version" value="${rofs2.version.info}"/>
-        <set name="rofs3.fwid.version" value="${rofs3.version.info}"/>
-        <set name="fota.fwid" value="${rofs1.fwid.version}_${rofs2.fwid.version}_${rofs3.fwid.version}"/>
-
-        <!-- BB5 version info -->
-        <set name="image.type.version" value="$(if $(subst rnd,,$(TYPE)),,RD)$(if $(subst subcon,,$(TYPE)),,SC)" /> <!-- RD for rnd, SC for subcon, empty string otherwise -->
-        <set name="core.version.info" value="${image.version.name}${image.type.version}" />
-        <set name="rofs1.version.info" value="${core.version.info}"/>
-        <set name="rofs2.version.info" value="${image.version.name}.${languagepack.id}.${languagepack.revision}${image.type.version}"/>
-        <set name="rofs3.version.info" value="${customer.image.version.name}.${customer.id}.${customer.revision}${image.type.version}"/>
-
-        <!-- Core version string format-->
-        <set name="core.template" value="${core.version.info}\\n${today}\\n${version.product.type}"/>
-        <set name="languagepack.template" value="${rofs2.version.info}\\n${today}\\n${version.product.type}" />
-        <set name="variant.template" value="${languagepack.template}" /> <!-- Backward compatibility -->
-        <set name="customer.template" value="${rofs3.version.info}\\n${today}\\n${version.product.type}"/>
-        <set name="model.template" value="${version.copyright} ${version.product.name}"/>
-        <set name="uda.template" value="${pr}.${version.bandvariant}.${build.number}${fota.version}\\n${today}\\n${product.type}\\n${copyright} ${version.product.name} (${uda.id})"/>
-
-        <!-- default localisation settings -->
-        <set name="variation" value="western"/>
-        <set name="languagepack.revision" value="1"/>
-        <set name="customer.revision" value="1"/>
-        <set name="description" value=""/>
-
-        <!-- Do not build target in parallel by default -->
-        <set name="build.parallel" value="false" />
-
-        <!-- templates to generate the makefiles -->
-        <set name="output.makefile.filename" value="${rombuild.makefile.name}"/>
-        <set name="main.makefile.template" value="${build.drive}\mc\mc_config\mc_5132_config\rombuild\main.mk"/>
-        <set name="flash.makefile.template" value="${build.drive}\mc\mc_config\mc_5132_config\rombuild\flash.mk"/>
-        <set name="core.makefile.template" value="${build.drive}\mc\mc_config\mc_5132_config\rombuild\core.mk"/>
-        <set name="languagepack.makefile.template" value="${build.drive}\mc\mc_config\mc_5132_config\rombuild\languagepack.mk"/>
-        <set name="customer.makefile.template" value="${build.drive}\mc\mc_config\mc_5132_config\rombuild\customer.mk"/>
-        <set name="uda.makefile.template" value="${build.drive}\mc\mc_config\mc_5132_config\rombuild\uda.mk"/>
-        <set name="eraseuda.makefile.template" value="${build.drive}\mc\mc_config\mc_5132_config\rombuild\eraseuda.mk"/>
-        <set name="flash.config.template" value="${build.drive}\mc\mc_config\mc_5132_config\rombuild\template.config.xml"/>
-        <set name="flash.config.makefile.template" value="${build.drive}\mc\mc_config\mc_5132_config\rombuild\flash_config.mk"/>
-        <set name="makeupct_core.makefile.template" value="${build.drive}\mc\mc_config\mc_5132_config\rombuild\makeupct_core.mk"/>
-
-
-        <spec name="PRODUCT" abstract="true">
-    
-            <set name="config.name" value="PRODUCT"/>
-            <set name="version.bandvariant" value="0"/>
-
-            <set name="rommake.hwid" value="2048"/>
-            <set name="version.product.type" value="RM-235"/>
-            <set name="rommake.product.name" value="PRODUCT"/>
-            <set name="rommake.product.type" value="RM-235"/>
-
-            <spec name="ee_group" abstract="true">
-                <set name="image.type" value="rnd,prd"/>
-                <set name="variant.txt.path" value="\epoc32\data\z\resource\versions\langsw.${config.name}.txt"/>
-                <set name="image.type.version" value="EE$(if $(subst rnd,,$(TYPE)),,RD)" /> <!-- EE for Prd, EERD for R&D -->
-
-                <!-- GUI images -->
-                <spec name="ee_roms" abstract="true">
-                    <set name="build.parallel" value="true" />                  
-                    
-                    <spec name="ee_rnd" abstract="true">
-                        <set name="image.type" value="rnd"/>
-                        
-                        <spec type="flash">                            
-                            <set name="flash.id" value="ui" />
-                            <set name="use.foti" value="0"/>
-                            <set name="use.fota" value="0"/>                       
-                        </spec>                    
-                        
-                        <spec type="eraseuda"/>
-                    </spec>
-
-                    <spec name="ee_prd" abstract="true">
-                        <set name="image.type" value="prd"/>
-                        
-                        <spec type="flash">                            
-                            <set name="flash.id" value="ui" />
-                            <set name="use.foti" value="1"/>
-                            <set name="use.fota" value="1"/>                       
-                        </spec>                                        
-                        
-                        <spec type="eraseuda"/>
-                    </spec>
-                </spec>
-    
-                <spec name="subcon_roms" abstract="true">
-                    <set name="build.parallel" value="true" />
-                    <set name="image.type" value="subcon"/>
-                    
-                    <spec type="flash">
-                        <set name="flash.id" value="ui" />
-                    </spec>
-    
-                    <spec type="eraseuda"/>
-                </spec>
-    
-    
-                <spec name="traces" abstract="true">
-                    <set name="build.parallel" value="false" />
-                    <set name="flash.output.dir" value="${rom.output.dir}/${rommake.product.name}/${flash.id}_traces"/>    
-                        
-        
-                    <spec type="flash">
-                        <set name="flash.id" value="wakeup_trace" />
-                        <set name="image.type" value="rnd"/>
-                        <set name="mytraces.binaries" value="
-                            estart.exe,
-                            ekern.exe,
-                            efile.exe,
-                            Starter.exe,
-                            StarterClient.dll,
-                            SysLangUtil.dll,
-                            SysStart.exe" />
-                    </spec>
-        
-                    <spec type="flash">
-                        <set name="flash.id" value="telephony" />
-                        <set name="image.type" value="rnd"/>
-                        <set name="mytraces.binaries" value="
-                            ETELMM.DLL,
-                            ETELPCKT.DLL,
-                            ETELSAT.DLL,
-                            FLOGGER.DLL,
-                            flogsvr.exe,
-                            COMSDBGUTIL.DLL,
-                            COMSDBGSVR.DLL,
-                            COMSDBGSVR.EXE,
-                            COMSDBGSVR.LIB"/>
-                    </spec>
-        
-                    <spec type="flash">
-                        <set name="flash.id" value="audio" />
-                        <set name="image.type" value="rnd"/>
-                        <set name="mytraces.binaries" value="
-                            audiopolicyserver.dll,
-                            audiopolicyapimsgs.dll,
-                            audiopolicyclient.dll,
-                            MMFDevSound.dll,
-                            MmfAudioServerProxy.dll,
-                            MmfDevSoundProxy.dll,
-                            DevSoundEffectCI.dll,
-                            DevSoundCI.dll,
-                            MmRmProxy.dll,
-                            Aamm.dll,
-                            Lac.dll,
-                            AudioStream.dll,
-                            AudioServer.dll,
-                            AudioServerProxy.dll,
-                            AudioServerCommon.dll,
-                            EapGwc.dll,
-                            EAPControlModule.dll,
-                            RawGwc.dll,
-                            RawHwDevice.dll,
-                            DevSoundAdaptationLayer.dll,
-                            MmfDevSoundServer.dll,
-                            MuMdrcEqTune.dll,
-                            mumdrceqcoeff.dll,
-                            mumdrceqfirgeq.dll,
-                            mumdrceqgwc.dll,
-                            mumdrceqloud.dll,
-                            MuMdrcGwc.dll,
-                            NokiaDSY.DLL,
-                            MmRmServer.dll,
-                            Bal.dll,
-                            BalBuffers.dll,
-                            BalBufferManager.dll,
-                            Gwc.dll,
-                            DspMemMapper.dll,
-                            GatewayserverAVC.exe,
-                            GatewayserverclientAVC.dll"/>
-                    </spec>
-        
-                    <spec type="flash">
-                        <set name="flash.id" value="videotelephony" />
-                        <set name="image.type" value="rnd"/>
-                        <set name="mytraces.binaries" value="
-                            euser.dll,
-                            CamServerCore.dll,
-                            CamServerCore.exe,
-                            DisplaySink.dll,
-                            VTImageConverter.dll,
-                            VTImageTransforms.dll,
-                            ECam.dll,
-                            ECamPluginSupport.dll,
-                            ECamAdvSettings.dll,
-                            PVOSCLBASE.DLL,
-                            PVOSCLERROR.DLL,
-                            PVOSCLMEMORY.DLL,
-                            PVOSCLUTIL.DLL,
-                            PVOSCLIO.DLL,
-                            PVMF.DLL,
-                            PVGENERALTOOLS.DLL,
-                            PV324M.DLL,
-                            PVVIDEOENCMDFNODE.DLL,
-                            PVM4VH263DEC.DLL,
-                            PVVIDEODECNODE.DLL,
-                            PVDEVSOUNDPLAY.DLL,
-                            PVDEVSOUNDREC.DLL,
-                            PVSYMBIANNODEADAPTERS.DLL,
-                            PVCAMSRCNODE.DLL,
-                            PVDISPSINKNODE.DLL,
-                            PVSYMBIANADAPTERS.DLL,
-                            PV2WAYENGINE.DLL,
-                            PV2WAYSYMBIANADAPTER.DLL,
-                            PvThreadMessaging.dll,
-                            PvLogger.dll,
-                            PVOSCLPROC.DLL,
-                            PVVIDEOPARSERNODE.DLL,
-                            Gatewayserver.exe,
-                            Gatewayserverclient.dll,
-                            VidRecMediaDevice.dll,
-                            VideoSource.dll,
-                            Videoteleng.dll,
-                            cscallctrl.dll,
-                            vtlogger.dll,
-                            videotelui.exe,
-                            videotelui.app,
-                            Phone.exe,
-                            PhoneEngine.dll"/>
-                    </spec>
-        
-                    <spec type="flash">
-                        <set name="flash.id" value="mms" />
-                        <set name="image.type" value="rnd"/>
-                        <set name="mytraces.binaries" value="
-                            mmscli.dll,
-                            mmssrv.dll,
-                            mmstransport.dll,
-                            mmscodec.dll,
-                            mmsmessage.dll,
-                            mmsserversettings.dll,
-                            mmscodecclient.dll,
-                            mmsappadapter.dll,
-                            mmswatcher.dll,
-                            MmsPushHandler.dll,
-                            mmsgenutils.dll,
-                            mmssettings.dll,
-                            mmsui.dll,
-                            mmsdatautils.dll,
-                            mmsuiutils.dll,
-                            notui.dll"/>
-                    </spec>
-        
-                    <spec type="flash">
-                        <set name="flash.id" value="sms" />
-                        <set name="image.type" value="rnd"/>
-                        <set name="mytraces.binaries" value="
-                            smseditor.exe,
-                            smsviewer.exe,
-                            smsstrict.dll,
-                            gsmu.dll,
-                            smsu.dll,
-                            smsprot.prt,
-                            wapprot.prt,
-                            msexe.exe,
-                            msgs.dll,
-                            watcher.exe,
-                            schsendexe.exe,
-                            schsend.dll,
-                            smum.dll,
-                            smcm.dll,
-                            smss.dll"/>
-                    </spec>
-        
-                    <spec type="flash">
-                        <set name="flash.id" value="networking" />
-                        <set name="image.type" value="rnd"/>
-                        <set name="mytraces.binaries" value="
-                            tcpip6.PRT,
-                            genericnif.NIF,
-                            connmon.DLL,
-                            nifman.DLL,
-                            esock.DLL,
-                            esocksvr.DLL,
-                            eintsock.DLL,
-                            subconparams.DLL,
-                            eintsock_transport.DLL,
-                            ipcpr.DLL,
-                            shimcpr.DLL"/>
-                    </spec>
-        
-                    <spec type="flash">
-                        <set name="flash.id" value="tsy" />
-                        <set name="image.type" value="rnd"/>
-                        <set name="mytraces.binaries" value="
-                            phonetsy.tsy,
-                            commontsy.dll,
-                            nokiatsy.dll,
-                            simatktsy.dll,
-                            FLOGGER.DLL,
-                            flogsvr.exe,
-                            COMSDBGUTIL.DLL,
-                            COMSDBGSVR.DLL,
-                            COMSDBGSVR.EXE,
-                            COMSDBGSVR.LIB"/>
-                    </spec>
-        
-                    <spec type="flash">
-                        <set name="flash.id" value="email" />
-                        <set name="image.type" value="rnd"/>
-                        <set name="mytraces.binaries" value="
-                            MsgMailUtils.dll,
-                            MailPlainView.dll,
-                            MsgMailEditor.exe,
-                            MsgMailViewer.exe,
-                            AutoSend.exe,
-                            Imcm.dll,
-                            Imps.dll,
-                            Pops.dll,
-                            Imut.dll,
-                            Smts.dll,
-                            MailHtmlView.dll"/>
-                    </spec>
-        
-                    <spec type="flash">
-                        <set name="flash.id" value="ibusal" />
-                        <set name="image.type" value="rnd"/>
-                        <set name="mytraces.binaries" value="
-                            dataport.csy,
-                            ftserverif.dll,
-                            ftserver.exe,
-                            ftdconnmonplugin.dll,
-                            ftdsysteminfoplugin.dll,
-                            ftdversioninfoplugin.dll,
-                            SAServer.EXE,
-                            SAServer.DLL,
-                            SAClient.DLL,
-                            SAIscService.DLL,
-                            AccessoryAdaptation.DLL,
-                            SAAccessoryService.DLL,
-                            StartupAdaptation.DLL,
-                            SAStartupService.DLL,
-                            SALanguageService.DLL,
-                            SASimUtilsService.DLL,
-                            SAAlarmService.DLL,
-                            SystemAdaptationExt.DLL,
-                            VibraAdaptation.DLL,
-                            LightsAdaptation.DLL,
-                            EmAdaptation.DLL,
-                            SAVibraService.DLL,
-                            SALightsService.DLL,
-                            SAEmService.DLL,
-                            ISA_KERNEL_IF.dll,
-                            IscIsiMultiplexer.ldd,
-                            Isimessage.dll,
-                            isimsg.dll,
-                            IscApi.dll,
-                            IscDriver.ldd,
-                            IscDriverExtension.ldd,
-                            IscMultiplexerBase.dll,
-                            IscDataTransmissionBase.dll,
-                            NokiaDSY.DLL,
-                            DosSrv.dll,
-                            DosServer.exe,
-                            DSClient.dll,
-                            CommonDSY.DLL,
-                            SIMATKTSY.dll,
-                            NOKIATSY.DLL,
-                            CUSTOMAPIEXT.DLL,
-                            COMMONTSY.DLL,
-                            PHONETSY.TSY"/>
-                    </spec>
-    
-                    <spec type="flash">
-                        <set name="flash.id" value="drm" />
-                        <set name="image.type" value="rnd"/>
-                        <set name="mytraces.binaries" value="
-                            RoapHandler.DLL"/>
-                    </spec>
-    
-                    <spec type="flash">
-                        <set name="flash.id" value="DVB-H" />
-                        <set name="image.type" value="rnd"/>
-                        <set name="mytraces.binaries" value="
-                            ECommerceMgrClient.dll,
-                            ECommerceManager.exe,
-                            ECRoapPlugin.dll,
-                            DVBHPDD.PDD,
-                            ESGMANAGER.EXE,
-                            IPDCDATABASEN.DLL,
-                            IPDCMANAGER.EXE,
-                            IPDCMGRCLIENT.DLL,
-                            RecManager.dll,
-                            DvrClient.dll,
-                            RbfClient.dll,
-                            RbfWrapper.dll,
-                            RbfServer.exe,
-                            DvbhMgr.exe,
-                            DvbhMgrClient.dll,
-                            IPDCLOGGER.DLL,
-                            MobileTv.exe,
-                            FCastManagerClient.dll,
-                            FCastManagerServer.exe,
-                            fcastserver.exe,
-                            fcastclient.dll,
-                            rightsserver.exe,
-                            ROAPHandler.dll,
-                            RNAVCONTROLLER.DLL"/>
-                    </spec>
-                </spec>
-            </spec>
-        
-            <!-- Language pack and Variant -->
-            <spec name="variants" abstract="true">
-                <set name="build.parallel" value="false" />        
-                <!-- core -->
-                <spec type="core">
-                    <set name="core.id" value="00" />
-                    <spec type="makeupct_core" />
-                </spec>-->
-         
-                <!-- western group -->
-                <spec name="western" abstract="true">
-                    <set name="build.parallel" value="true" />
-                    <spec type="languagepack">
-                        <set name="languagepack.id" value="01" />
-                        <set name="default" value="01"/>
-                        <set name="languages" value="01,02,03,05,04,13"/>
-                        <set name="description" value="EURO1"/>
-                        <set name="variation" value="western"/>
-                    </spec> 
-                    <spec type="languagepack">
-                        <set name="languagepack.id" value="02"/>
-                        <set name="default" value="01"/>
-                        <set name="languages" value="01,02,03,14,05,18"/>
-                        <set name="description" value="EURO2"/>
-                    </spec>
-                    <spec type="languagepack">
-                        <set name="languagepack.id" value="03"/>
-                        <set name="default" value="01"/>
-                        <set name="languages" value="01,09,06,08,15,07"/>
-                        <set name="description" value="SCANDINAVIA"/>
-                    </spec>
-                    <spec type="languagepack">
-                        <set name="languagepack.id" value="04"/>
-                        <set name="default" value="01"/>
-                        <set name="languages" value="01,03,49,16,67,68"/>
-                        <set name="description" value="BALTIAN"/>
-                    </spec>
-                    <spec type="languagepack">
-                        <set name="languagepack.id" value="05"/>
-                        <set name="default" value="01"/>
-                        <set name="languages" value="01,03,93,16,78,42,17"/>
-                        <set name="description" value="RUSSIAN"/>
-                    </spec>
-                    <spec type="languagepack">
-                        <set name="languagepack.id" value="06"/>
-                        <set name="default" value="01"/>
-                        <set name="languages" value="01,25,26,03,27,17"/>
-                        <set name="description" value="EURO3"/>
-                    </spec>
-                    <spec type="languagepack">
-                        <set name="languagepack.id" value="07"/>
-                        <set name="default" value="01"/>
-                        <set name="languages" value="01,03,45,28,79,54"/>
-                        <set name="description" value="BALKANS"/>
-                    </spec>
-                    <spec type="languagepack">
-                        <set name="languagepack.id" value="08"/>
-                        <set name="default" value="01"/>
-                        <set name="languages" value="01,02,37"/>
-                        <set name="description" value="ARABIC1"/>
-                    </spec>
-                    <spec type="languagepack">
-                        <set name="languagepack.id" value="09"/>
-                        <set name="default" value="01"/>
-                        <set name="languages" value="01,57,37,16,78,04"/>
-                        <set name="description" value="HEBREW"/>
-                    </spec>
-                    <spec type="languagepack">
-                        <set name="languagepack.id" value="10"/>
-                        <set name="default" value="01"/>
-                        <set name="languages" value="01,13"/>
-                        <set name="description" value="AFRICA1"/>
-                    </spec>
-                    <spec type="languagepack">
-                        <set name="languagepack.id" value="13"/>
-                        <set name="default" value="01"/>
-                        <set name="languages" value="01,39"/>
-                        <set name="description" value="APAC2"/>
-                    </spec>
-                    <spec type="languagepack">
-                        <set name="languagepack.id" value="16"/>
-                        <set name="default" value="161"/>
-                        <set name="languages" value="161,33"/>
-                        <set name="description" value="THAI"/>
-                    </spec>
-                    <spec type="languagepack">
-                        <set name="languagepack.id" value="18"/>
-                        <set name="default" value="01"/>
-                        <set name="languages" value="01,96"/>
-                        <set name="description" value="VIETNAM"/>
-                    </spec>
-                    <spec type="languagepack">
-                        <set name="languagepack.id" value="19"/>
-                        <set name="default" value="10"/>
-                        <set name="languages" value="10,51,76,83"/>
-                        <set name="description" value="AMERICAS"/>
-                    </spec>
-                    <spec type="languagepack">
-                        <set name="languagepack.id" value="21"/>
-                        <set name="default" value="01"/>
-                        <set name="languages" value="04,44,401,402,01,03,13"/>
-                        <set name="description" value="SPAIN"/>
-                    </spec>
-                    <spec type="languagepack">
-                        <set name="languagepack.id" value="22"/>
-                        <set name="default" value="01"/>
-                        <set name="languages" value="01,37,50,94"/>
-                        <set name="description" value="ARABIC2"/>
-                    </spec>
-                    <spec type="languagepack">
-                        <set name="languagepack.id" value="23"/>
-                        <set name="default" value="01"/>
-                        <set name="languages" value="01,02,18,03,05"/>
-                        <set name="description" value="AFRICA2"/>
-                    </spec>
-    
-                    <spec name="customer_variants" abstract="true">
-                        <set name="customer.revision" value="1"/>
-                        <set name="build.parallel" value="true"/>
-                        <spec name="vanilla_customer_variants" abstract="true">
-                            <spec type="customer">
-                                <set name="customer.id" value="51"/>
-                                <set name="description" value="GENERAL"/>
-                            </spec>
-                            <spec type="customer">
-                                <set name="customer.id" value="52"/>
-                                <set name="description" value="SPECIFIC"/>
-                                <set name="compatible.languagepack" value="01,02,03"/>
-                            </spec>
-                        </spec>
-                        
-                        <!-- Variant team customer variants HERE ! -->
-                        <spec name="vt_customer_variants" abstract="true">
-                            <set name="customer.type" value="operatorcountry"/>
-                            <spec type="customer">
-                                <!-- re-build variant -->
-                                <set name="customer.id" value="100"/>
-                                <set name="customer.revision" value="2"/>
-                                <set name="description" value=""/>
-                                <set name="compatible.languagepack" value="03"/>
-                            </spec>
-                            <spec type="customer">
-                                <!-- re-use previous variant -->
-                                <set name="customer.image.version.name" value="10.30${fota.version}"/>
-                                
-                                <set name="customer.id" value="101"/>
-                                <set name="description" value="OPERATOR_UK"/>
-                                <set name="compatible.languagepack" value="01"/>
-                                
-                            </spec>
-                        </spec>
-                        <!-- END Variant team customer variants ! -->
-                    </spec>
-                </spec>
-         
-                <!-- china group -->
-                <spec  name="china" abstract="true">
-                    <set name="build.parallel" value="true" />
-                    <set name="variation" value="china" />
-                    <spec type="languagepack">
-                        <set name="languagepack.id" value="11"/>
-                        <set name="default" value="29"/>
-                        <set name="languages" value="29,157"/>
-                        <set name="description" value="CHINESE_TAIWAN"/>
-                    </spec>
-                    <spec type="languagepack">
-                        <set name="languagepack.id" value="12"/>
-                        <set name="default" value="159"/>
-                        <set name="languages" value="159,31,326,327"/>
-                        <set name="description" value="APAC1"/>
-                    </spec>
-                    <spec type="languagepack">
-                        <set name="languagepack.id" value="15"/>
-                        <set name="default" value="158"/>
-                        <set name="languages" value="158,30,31"/>
-                        <set name="description" value="HONGKONG"/>
-                    </spec>
-                    <spec type="languagepack">
-                        <set name="languagepack.id" value="20"/>
-                        <set name="default" value="159"/>
-                        <set name="languages" value="159,31"/>
-                        <set name="description" value="CHINA_PRC"/>
-                    </spec>
-                </spec>
-            
-                <!-- japan group -->
-                <spec  name="japan" abstract="true">
-                    <set name="build.parallel" value="true" />
-                    <set name="variation" value="japan" />
-                    <spec  type="languagepack">
-                        <set name="languagepack.id" value="14"/>
-                        <set name="default" value="160"/>
-                        <set name="languages" value="160,32"/>
-                        <set name="description" value="JAPAN"/>
-                    </spec>
-                </spec>
-            </spec>
-        </spec>
-
-        <!--
-          PRODUCT edge configuration
-        -->
-        <spec name="PRODUCT_edge" abstract="true">
-            <set name="config.name" value="PRODUCT_edge"/>
-            <set name="version.bandvariant" value="1"/>
-            <set name="zips.loc.dir" value="${zips.loc.dir}" />
-            <set name="variation" value="western"/>
-            <set name="config.name" value="PRODUCT_edge"/>
-            <set name="rommake.product.name" value="PRODUCT_edge"/>
-            <set name="version.product.type" value="RM-236"/>
-            <set name="rommake.product.type" value="RM-236"/>
-      
-            <set name="rommake.hwid" value="2100"/>
-
-            <spec name="ee_group" abstract="true">
-                <set name="image.type" value="rnd,prd"/>
-                <set name="variant.txt.path" value="\epoc32\data\z\resource\versions\langsw.${config.name}.txt"/>
-                <set name="image.type.version" value="EE$(if $(subst rnd,,$(TYPE)),,RD)" /> <!-- EE for Prd, EERD for R&D -->
-                
-
-                <!-- GUI images -->
-                <spec name="ee_roms" abstract="true">
-                    <set name="build.parallel" value="true" />                  
-                    
-                    <spec name="ee_rnd" abstract="true">
-                        <set name="image.type" value="rnd"/>
-                        
-                        <spec type="flash">                            
-                            <set name="flash.id" value="ui" />
-                            <set name="use.foti" value="0"/>
-                            <set name="use.fota" value="0"/>                       
-                        </spec>                    
-                        
-                        <spec type="eraseuda"/>
-                    </spec>
-
-                    <spec name="ee_prd" abstract="true">
-                        <set name="image.type" value="prd"/>
-                        
-                        <spec type="flash">                            
-                            <set name="flash.id" value="ui" />
-                            <set name="use.foti" value="1"/>
-                            <set name="use.fota" value="1"/>                       
-                        </spec>                                        
-                        
-                        <spec type="eraseuda"/>
-                    </spec>
-                </spec>
-    
-                <spec name="subcon_roms" abstract="true">
-                    <set name="build.parallel" value="true" />
-                    <set name="image.type" value="subcon"/>
-                    
-                    <spec type="flash">
-                        <set name="flash.id" value="ui" />
-                    </spec>
-    
-                    <spec type="eraseuda"/>
-                </spec>
-    
-    
-                <spec name="traces" abstract="true">
-                    <set name="build.parallel" value="false" />
-                    <set name="flash.output.dir" value="${rom.output.dir}/${rommake.product.name}/${flash.id}_traces"/>    
-                        
-        
-                    <spec type="flash">
-                        <set name="flash.id" value="wakeup_trace" />
-                        <set name="image.type" value="rnd"/>
-                        <set name="mytraces.binaries" value="
-                            estart.exe,
-                            ekern.exe,
-                            efile.exe,
-                            Starter.exe,
-                            StarterClient.dll,
-                            SysLangUtil.dll,
-                            SysStart.exe" />
-                    </spec>
-        
-                    <spec type="flash">
-                        <set name="flash.id" value="telephony" />
-                        <set name="image.type" value="rnd"/>
-                        <set name="mytraces.binaries" value="
-                            ETELMM.DLL,
-                            ETELPCKT.DLL,
-                            ETELSAT.DLL,
-                            FLOGGER.DLL,
-                            flogsvr.exe,
-                            COMSDBGUTIL.DLL,
-                            COMSDBGSVR.DLL,
-                            COMSDBGSVR.EXE,
-                            COMSDBGSVR.LIB"/>
-                    </spec>
-        
-                    <spec type="flash">
-                        <set name="flash.id" value="audio" />
-                        <set name="image.type" value="rnd"/>
-                        <set name="mytraces.binaries" value="
-                            audiopolicyserver.dll,
-                            audiopolicyapimsgs.dll,
-                            audiopolicyclient.dll,
-                            MMFDevSound.dll,
-                            MmfAudioServerProxy.dll,
-                            MmfDevSoundProxy.dll,
-                            DevSoundEffectCI.dll,
-                            DevSoundCI.dll,
-                            MmRmProxy.dll,
-                            Aamm.dll,
-                            Lac.dll,
-                            AudioStream.dll,
-                            AudioServer.dll,
-                            AudioServerProxy.dll,
-                            AudioServerCommon.dll,
-                            EapGwc.dll,
-                            EAPControlModule.dll,
-                            RawGwc.dll,
-                            RawHwDevice.dll,
-                            DevSoundAdaptationLayer.dll,
-                            MmfDevSoundServer.dll,
-                            MuMdrcEqTune.dll,
-                            mumdrceqcoeff.dll,
-                            mumdrceqfirgeq.dll,
-                            mumdrceqgwc.dll,
-                            mumdrceqloud.dll,
-                            MuMdrcGwc.dll,
-                            NokiaDSY.DLL,
-                            MmRmServer.dll,
-                            Bal.dll,
-                            BalBuffers.dll,
-                            BalBufferManager.dll,
-                            Gwc.dll,
-                            DspMemMapper.dll,
-                            GatewayserverAVC.exe,
-                            GatewayserverclientAVC.dll"/>
-                    </spec>
-        
-                    <spec type="flash">
-                        <set name="flash.id" value="videotelephony" />
-                        <set name="image.type" value="rnd"/>
-                        <set name="mytraces.binaries" value="
-                            euser.dll,
-                            CamServerCore.dll,
-                            CamServerCore.exe,
-                            DisplaySink.dll,
-                            VTImageConverter.dll,
-                            VTImageTransforms.dll,
-                            ECam.dll,
-                            ECamPluginSupport.dll,
-                            ECamAdvSettings.dll,
-                            PVOSCLBASE.DLL,
-                            PVOSCLERROR.DLL,
-                            PVOSCLMEMORY.DLL,
-                            PVOSCLUTIL.DLL,
-                            PVOSCLIO.DLL,
-                            PVMF.DLL,
-                            PVGENERALTOOLS.DLL,
-                            PV324M.DLL,
-                            PVVIDEOENCMDFNODE.DLL,
-                            PVM4VH263DEC.DLL,
-                            PVVIDEODECNODE.DLL,
-                            PVDEVSOUNDPLAY.DLL,
-                            PVDEVSOUNDREC.DLL,
-                            PVSYMBIANNODEADAPTERS.DLL,
-                            PVCAMSRCNODE.DLL,
-                            PVDISPSINKNODE.DLL,
-                            PVSYMBIANADAPTERS.DLL,
-                            PV2WAYENGINE.DLL,
-                            PV2WAYSYMBIANADAPTER.DLL,
-                            PvThreadMessaging.dll,
-                            PvLogger.dll,
-                            PVOSCLPROC.DLL,
-                            PVVIDEOPARSERNODE.DLL,
-                            Gatewayserver.exe,
-                            Gatewayserverclient.dll,
-                            VidRecMediaDevice.dll,
-                            VideoSource.dll,
-                            Videoteleng.dll,
-                            cscallctrl.dll,
-                            vtlogger.dll,
-                            videotelui.exe,
-                            videotelui.app,
-                            Phone.exe,
-                            PhoneEngine.dll"/>
-                    </spec>
-        
-                    <spec type="flash">
-                        <set name="flash.id" value="mms" />
-                        <set name="image.type" value="rnd"/>
-                        <set name="mytraces.binaries" value="
-                            mmscli.dll,
-                            mmssrv.dll,
-                            mmstransport.dll,
-                            mmscodec.dll,
-                            mmsmessage.dll,
-                            mmsserversettings.dll,
-                            mmscodecclient.dll,
-                            mmsappadapter.dll,
-                            mmswatcher.dll,
-                            MmsPushHandler.dll,
-                            mmsgenutils.dll,
-                            mmssettings.dll,
-                            mmsui.dll,
-                            mmsdatautils.dll,
-                            mmsuiutils.dll,
-                            notui.dll"/>
-                    </spec>
-        
-                    <spec type="flash">
-                        <set name="flash.id" value="sms" />
-                        <set name="image.type" value="rnd"/>
-                        <set name="mytraces.binaries" value="
-                            smseditor.exe,
-                            smsviewer.exe,
-                            smsstrict.dll,
-                            gsmu.dll,
-                            smsu.dll,
-                            smsprot.prt,
-                            wapprot.prt,
-                            msexe.exe,
-                            msgs.dll,
-                            watcher.exe,
-                            schsendexe.exe,
-                            schsend.dll,
-                            smum.dll,
-                            smcm.dll,
-                            smss.dll"/>
-                    </spec>
-        
-                    <spec type="flash">
-                        <set name="flash.id" value="networking" />
-                        <set name="image.type" value="rnd"/>
-                        <set name="mytraces.binaries" value="
-                            tcpip6.PRT,
-                            genericnif.NIF,
-                            connmon.DLL,
-                            nifman.DLL,
-                            esock.DLL,
-                            esocksvr.DLL,
-                            eintsock.DLL,
-                            subconparams.DLL,
-                            eintsock_transport.DLL,
-                            ipcpr.DLL,
-                            shimcpr.DLL"/>
-                    </spec>
-        
-                    <spec type="flash">
-                        <set name="flash.id" value="tsy" />
-                        <set name="image.type" value="rnd"/>
-                        <set name="mytraces.binaries" value="
-                            phonetsy.tsy,
-                            commontsy.dll,
-                            nokiatsy.dll,
-                            simatktsy.dll,
-                            FLOGGER.DLL,
-                            flogsvr.exe,
-                            COMSDBGUTIL.DLL,
-                            COMSDBGSVR.DLL,
-                            COMSDBGSVR.EXE,
-                            COMSDBGSVR.LIB"/>
-                    </spec>
-        
-                    <spec type="flash">
-                        <set name="flash.id" value="email" />
-                        <set name="image.type" value="rnd"/>
-                        <set name="mytraces.binaries" value="
-                            MsgMailUtils.dll,
-                            MailPlainView.dll,
-                            MsgMailEditor.exe,
-                            MsgMailViewer.exe,
-                            AutoSend.exe,
-                            Imcm.dll,
-                            Imps.dll,
-                            Pops.dll,
-                            Imut.dll,
-                            Smts.dll,
-                            MailHtmlView.dll"/>
-                    </spec>
-        
-                    <spec type="flash">
-                        <set name="flash.id" value="ibusal" />
-                        <set name="image.type" value="rnd"/>
-                        <set name="mytraces.binaries" value="
-                            dataport.csy,
-                            ftserverif.dll,
-                            ftserver.exe,
-                            ftdconnmonplugin.dll,
-                            ftdsysteminfoplugin.dll,
-                            ftdversioninfoplugin.dll,
-                            SAServer.EXE,
-                            SAServer.DLL,
-                            SAClient.DLL,
-                            SAIscService.DLL,
-                            AccessoryAdaptation.DLL,
-                            SAAccessoryService.DLL,
-                            StartupAdaptation.DLL,
-                            SAStartupService.DLL,
-                            SALanguageService.DLL,
-                            SASimUtilsService.DLL,
-                            SAAlarmService.DLL,
-                            SystemAdaptationExt.DLL,
-                            VibraAdaptation.DLL,
-                            LightsAdaptation.DLL,
-                            EmAdaptation.DLL,
-                            SAVibraService.DLL,
-                            SALightsService.DLL,
-                            SAEmService.DLL,
-                            ISA_KERNEL_IF.dll,
-                            IscIsiMultiplexer.ldd,
-                            Isimessage.dll,
-                            isimsg.dll,
-                            IscApi.dll,
-                            IscDriver.ldd,
-                            IscDriverExtension.ldd,
-                            IscMultiplexerBase.dll,
-                            IscDataTransmissionBase.dll,
-                            NokiaDSY.DLL,
-                            DosSrv.dll,
-                            DosServer.exe,
-                            DSClient.dll,
-                            CommonDSY.DLL,
-                            SIMATKTSY.dll,
-                            NOKIATSY.DLL,
-                            CUSTOMAPIEXT.DLL,
-                            COMMONTSY.DLL,
-                            PHONETSY.TSY"/>
-                    </spec>
-    
-                    <spec type="flash">
-                        <set name="flash.id" value="drm" />
-                        <set name="image.type" value="rnd"/>
-                        <set name="mytraces.binaries" value="
-                            RoapHandler.DLL"/>
-                    </spec>
-    
-                    <spec type="flash">
-                        <set name="flash.id" value="DVB-H" />
-                        <set name="image.type" value="rnd"/>
-                        <set name="mytraces.binaries" value="
-                            ECommerceMgrClient.dll,
-                            ECommerceManager.exe,
-                            ECRoapPlugin.dll,
-                            DVBHPDD.PDD,
-                            ESGMANAGER.EXE,
-                            IPDCDATABASEN.DLL,
-                            IPDCMANAGER.EXE,
-                            IPDCMGRCLIENT.DLL,
-                            RecManager.dll,
-                            DvrClient.dll,
-                            RbfClient.dll,
-                            RbfWrapper.dll,
-                            RbfServer.exe,
-                            DvbhMgr.exe,
-                            DvbhMgrClient.dll,
-                            IPDCLOGGER.DLL,
-                            MobileTv.exe,
-                            FCastManagerClient.dll,
-                            FCastManagerServer.exe,
-                            fcastserver.exe,
-                            fcastclient.dll,
-                            rightsserver.exe,
-                            ROAPHandler.dll,
-                            RNAVCONTROLLER.DLL"/>
-                    </spec>
-                </spec>
-            </spec>
-
-            <spec name="variants" abstract="true">
-                <set name="variation" value="china"/>
-                <set name="build.parallel" value="false" />      
-                <!-- core -->
-                <spec type="core">
-                    <set name="core.id" value="00" />
-                    <set name="image.type" value="rnd,prd"/>
-                    <spec type="makeupct_core" />
-                </spec>
-
-                <!-- customer -->
-                <spec  type="customer">
-                    <set name="customer.id" value="01"/>
-                    <set name="customer.revision" value="1"/>
-                    <set name="description" value="edge_customer_variant"/>
-                </spec>
-
-                <spec type="languagepack">
-                    <set name="languagepack.id" value="20"/>
-                    <set name="default" value="159"/>
-                    <set name="languages" value="159,31"/>
-                    <set name="description" value="CHINA"/>
-                </spec>
-            </spec>
-        </spec>
-  
-    
-        <!-- PRODUCT Americas/lta configuration -->
-        <spec name="PRODUCT_lta" abstract="true">
-            <set name="config.name" value="PRODUCT_lta"/>      
-            <set name="version.bandvariant" value="0"/>
-            <set name="zips.loc.dir" value="${zips.loc.dir}" />
-            <set name="variation" value="western"/>
-            <set name="config.name" value="PRODUCT_lta"/>
-            <set name="rommake.product.name" value="PRODUCT_lta"/>
-            <set name="version.product.type" value="RM-342"/>
-            <set name="rommake.product.type" value="RM-342"/>
-      
-            <set name="rommake.hwid" value="4200"/>
-            
-            <spec name="ee_group" abstract="true">
-            
-                <set name="build.parallel" value="true" />
-                <set name="image.type" value="rnd,prd"/>
-                <set name="variant.txt.path" value="\epoc32\data\z\resource\versions\langsw.${config.name}.txt"/>
-                <set name="image.type.version" value="EE$(if $(subst rnd,,$(TYPE)),,RD)" /> <!-- EE for Prd, EERD for R&D -->
-
-                <!-- GUI images -->
-                <spec name="ee_roms" abstract="true">
-                    <set name="build.parallel" value="true" />                  
-                    
-                    <spec name="ee_rnd" abstract="true">
-                        <set name="image.type" value="rnd"/>
-                        
-                        <spec type="flash">                            
-                            <set name="flash.id" value="ui" />
-                            <set name="use.foti" value="0"/>
-                            <set name="use.fota" value="0"/>                       
-                        </spec>                    
-                        
-                        <spec type="eraseuda"/>
-                    </spec>
-
-                    <spec name="ee_prd" abstract="true">
-                        <set name="image.type" value="prd"/>
-                        
-                        <spec type="flash">                            
-                            <set name="flash.id" value="ui" />
-                            <set name="use.foti" value="1"/>
-                            <set name="use.fota" value="1"/>                       
-                        </spec>                                        
-                        
-                        <spec type="eraseuda"/>
-                    </spec>
-                </spec>
-    
-                <spec name="subcon_roms" abstract="true">
-                    <set name="build.parallel" value="true" />
-                    <set name="image.type" value="subcon"/>
-                    
-                    <spec type="flash">
-                        <set name="flash.id" value="ui" />
-                    </spec>
-    
-                    <spec type="eraseuda"/>
-                </spec>
-        
-                <spec name="traces" abstract="true">
-                    <set name="build.parallel" value="false" />
-                    <set name="flash.output.dir" value="${rom.output.dir}/${rommake.product.name}/${flash.id}_traces"/>    
-                        
-        
-                    <spec type="flash">
-                        <set name="flash.id" value="wakeup_trace" />
-                        <set name="image.type" value="rnd"/>
-                        <set name="mytraces.binaries" value="
-                            estart.exe,
-                            ekern.exe,
-                            efile.exe,
-                            Starter.exe,
-                            StarterClient.dll,
-                            SysLangUtil.dll,
-                            SysStart.exe" />
-                    </spec>
-        
-                    <spec type="flash">
-                        <set name="flash.id" value="telephony" />
-                        <set name="image.type" value="rnd"/>
-                        <set name="mytraces.binaries" value="
-                            ETELMM.DLL,
-                            ETELPCKT.DLL,
-                            ETELSAT.DLL,
-                            FLOGGER.DLL,
-                            flogsvr.exe,
-                            COMSDBGUTIL.DLL,
-                            COMSDBGSVR.DLL,
-                            COMSDBGSVR.EXE,
-                            COMSDBGSVR.LIB"/>
-                    </spec>
-        
-                    <spec type="flash">
-                        <set name="flash.id" value="audio" />
-                        <set name="image.type" value="rnd"/>
-                        <set name="mytraces.binaries" value="
-                            audiopolicyserver.dll,
-                            audiopolicyapimsgs.dll,
-                            audiopolicyclient.dll,
-                            MMFDevSound.dll,
-                            MmfAudioServerProxy.dll,
-                            MmfDevSoundProxy.dll,
-                            DevSoundEffectCI.dll,
-                            DevSoundCI.dll,
-                            MmRmProxy.dll,
-                            Aamm.dll,
-                            Lac.dll,
-                            AudioStream.dll,
-                            AudioServer.dll,
-                            AudioServerProxy.dll,
-                            AudioServerCommon.dll,
-                            EapGwc.dll,
-                            EAPControlModule.dll,
-                            RawGwc.dll,
-                            RawHwDevice.dll,
-                            DevSoundAdaptationLayer.dll,
-                            MmfDevSoundServer.dll,
-                            MuMdrcEqTune.dll,
-                            mumdrceqcoeff.dll,
-                            mumdrceqfirgeq.dll,
-                            mumdrceqgwc.dll,
-                            mumdrceqloud.dll,
-                            MuMdrcGwc.dll,
-                            NokiaDSY.DLL,
-                            MmRmServer.dll,
-                            Bal.dll,
-                            BalBuffers.dll,
-                            BalBufferManager.dll,
-                            Gwc.dll,
-                            DspMemMapper.dll,
-                            GatewayserverAVC.exe,
-                            GatewayserverclientAVC.dll"/>
-                    </spec>
-        
-                    <spec type="flash">
-                        <set name="flash.id" value="videotelephony" />
-                        <set name="image.type" value="rnd"/>
-                        <set name="mytraces.binaries" value="
-                            euser.dll,
-                            CamServerCore.dll,
-                            CamServerCore.exe,
-                            DisplaySink.dll,
-                            VTImageConverter.dll,
-                            VTImageTransforms.dll,
-                            ECam.dll,
-                            ECamPluginSupport.dll,
-                            ECamAdvSettings.dll,
-                            PVOSCLBASE.DLL,
-                            PVOSCLERROR.DLL,
-                            PVOSCLMEMORY.DLL,
-                            PVOSCLUTIL.DLL,
-                            PVOSCLIO.DLL,
-                            PVMF.DLL,
-                            PVGENERALTOOLS.DLL,
-                            PV324M.DLL,
-                            PVVIDEOENCMDFNODE.DLL,
-                            PVM4VH263DEC.DLL,
-                            PVVIDEODECNODE.DLL,
-                            PVDEVSOUNDPLAY.DLL,
-                            PVDEVSOUNDREC.DLL,
-                            PVSYMBIANNODEADAPTERS.DLL,
-                            PVCAMSRCNODE.DLL,
-                            PVDISPSINKNODE.DLL,
-                            PVSYMBIANADAPTERS.DLL,
-                            PV2WAYENGINE.DLL,
-                            PV2WAYSYMBIANADAPTER.DLL,
-                            PvThreadMessaging.dll,
-                            PvLogger.dll,
-                            PVOSCLPROC.DLL,
-                            PVVIDEOPARSERNODE.DLL,
-                            Gatewayserver.exe,
-                            Gatewayserverclient.dll,
-                            VidRecMediaDevice.dll,
-                            VideoSource.dll,
-                            Videoteleng.dll,
-                            cscallctrl.dll,
-                            vtlogger.dll,
-                            videotelui.exe,
-                            videotelui.app,
-                            Phone.exe,
-                            PhoneEngine.dll"/>
-                    </spec>
-        
-                    <spec type="flash">
-                        <set name="flash.id" value="mms" />
-                        <set name="image.type" value="rnd"/>
-                        <set name="mytraces.binaries" value="
-                            mmscli.dll,
-                            mmssrv.dll,
-                            mmstransport.dll,
-                            mmscodec.dll,
-                            mmsmessage.dll,
-                            mmsserversettings.dll,
-                            mmscodecclient.dll,
-                            mmsappadapter.dll,
-                            mmswatcher.dll,
-                            MmsPushHandler.dll,
-                            mmsgenutils.dll,
-                            mmssettings.dll,
-                            mmsui.dll,
-                            mmsdatautils.dll,
-                            mmsuiutils.dll,
-                            notui.dll"/>
-                    </spec>
-        
-                    <spec type="flash">
-                        <set name="flash.id" value="sms" />
-                        <set name="image.type" value="rnd"/>
-                        <set name="mytraces.binaries" value="
-                            smseditor.exe,
-                            smsviewer.exe,
-                            smsstrict.dll,
-                            gsmu.dll,
-                            smsu.dll,
-                            smsprot.prt,
-                            wapprot.prt,
-                            msexe.exe,
-                            msgs.dll,
-                            watcher.exe,
-                            schsendexe.exe,
-                            schsend.dll,
-                            smum.dll,
-                            smcm.dll,
-                            smss.dll"/>
-                    </spec>
-        
-                    <spec type="flash">
-                        <set name="flash.id" value="networking" />
-                        <set name="image.type" value="rnd"/>
-                        <set name="mytraces.binaries" value="
-                            tcpip6.PRT,
-                            genericnif.NIF,
-                            connmon.DLL,
-                            nifman.DLL,
-                            esock.DLL,
-                            esocksvr.DLL,
-                            eintsock.DLL,
-                            subconparams.DLL,
-                            eintsock_transport.DLL,
-                            ipcpr.DLL,
-                            shimcpr.DLL"/>
-                    </spec>
-        
-                    <spec type="flash">
-                        <set name="flash.id" value="tsy" />
-                        <set name="image.type" value="rnd"/>
-                        <set name="mytraces.binaries" value="
-                            phonetsy.tsy,
-                            commontsy.dll,
-                            nokiatsy.dll,
-                            simatktsy.dll,
-                            FLOGGER.DLL,
-                            flogsvr.exe,
-                            COMSDBGUTIL.DLL,
-                            COMSDBGSVR.DLL,
-                            COMSDBGSVR.EXE,
-                            COMSDBGSVR.LIB"/>
-                    </spec>
-        
-                    <spec type="flash">
-                        <set name="flash.id" value="email" />
-                        <set name="image.type" value="rnd"/>
-                        <set name="mytraces.binaries" value="
-                            MsgMailUtils.dll,
-                            MailPlainView.dll,
-                            MsgMailEditor.exe,
-                            MsgMailViewer.exe,
-                            AutoSend.exe,
-                            Imcm.dll,
-                            Imps.dll,
-                            Pops.dll,
-                            Imut.dll,
-                            Smts.dll,
-                            MailHtmlView.dll"/>
-                    </spec>
-        
-                    <spec type="flash">
-                        <set name="flash.id" value="ibusal" />
-                        <set name="image.type" value="rnd"/>
-                        <set name="mytraces.binaries" value="
-                            dataport.csy,
-                            ftserverif.dll,
-                            ftserver.exe,
-                            ftdconnmonplugin.dll,
-                            ftdsysteminfoplugin.dll,
-                            ftdversioninfoplugin.dll,
-                            SAServer.EXE,
-                            SAServer.DLL,
-                            SAClient.DLL,
-                            SAIscService.DLL,
-                            AccessoryAdaptation.DLL,
-                            SAAccessoryService.DLL,
-                            StartupAdaptation.DLL,
-                            SAStartupService.DLL,
-                            SALanguageService.DLL,
-                            SASimUtilsService.DLL,
-                            SAAlarmService.DLL,
-                            SystemAdaptationExt.DLL,
-                            VibraAdaptation.DLL,
-                            LightsAdaptation.DLL,
-                            EmAdaptation.DLL,
-                            SAVibraService.DLL,
-                            SALightsService.DLL,
-                            SAEmService.DLL,
-                            ISA_KERNEL_IF.dll,
-                            IscIsiMultiplexer.ldd,
-                            Isimessage.dll,
-                            isimsg.dll,
-                            IscApi.dll,
-                            IscDriver.ldd,
-                            IscDriverExtension.ldd,
-                            IscMultiplexerBase.dll,
-                            IscDataTransmissionBase.dll,
-                            NokiaDSY.DLL,
-                            DosSrv.dll,
-                            DosServer.exe,
-                            DSClient.dll,
-                            CommonDSY.DLL,
-                            SIMATKTSY.dll,
-                            NOKIATSY.DLL,
-                            CUSTOMAPIEXT.DLL,
-                            COMMONTSY.DLL,
-                            PHONETSY.TSY"/>
-                    </spec>
-    
-                    <spec type="flash">
-                        <set name="flash.id" value="drm" />
-                        <set name="image.type" value="rnd"/>
-                        <set name="mytraces.binaries" value="
-                            RoapHandler.DLL"/>
-                    </spec>
-    
-                    <spec type="flash">
-                        <set name="flash.id" value="DVB-H" />
-                        <set name="image.type" value="rnd"/>
-                        <set name="mytraces.binaries" value="
-                            ECommerceMgrClient.dll,
-                            ECommerceManager.exe,
-                            ECRoapPlugin.dll,
-                            DVBHPDD.PDD,
-                            ESGMANAGER.EXE,
-                            IPDCDATABASEN.DLL,
-                            IPDCMANAGER.EXE,
-                            IPDCMGRCLIENT.DLL,
-                            RecManager.dll,
-                            DvrClient.dll,
-                            RbfClient.dll,
-                            RbfWrapper.dll,
-                            RbfServer.exe,
-                            DvbhMgr.exe,
-                            DvbhMgrClient.dll,
-                            IPDCLOGGER.DLL,
-                            MobileTv.exe,
-                            FCastManagerClient.dll,
-                            FCastManagerServer.exe,
-                            fcastserver.exe,
-                            fcastclient.dll,
-                            rightsserver.exe,
-                            ROAPHandler.dll,
-                            RNAVCONTROLLER.DLL"/>
-                    </spec>
-                </spec>
-            </spec>
-
-            <spec name="variants" abstract="true">
-                <set name="variation" value="western"/>
-                <set name="build.parallel" value="false" /> 
-                <!-- core -->
-                <spec type="core">
-                    <set name="core.id" value="00" />
-                    <set name="image.type" value="rnd,prd"/>
-                    <spec type="makeupct_core" />
-                </spec>
-
-                <!-- customer -->
-                <spec  type="customer">
-                    <set name="customer.id" value="01"/>
-                    <set name="description" value="lta_customer_variant"/>
-                    <set name="customer.revision" value="1"/>
-                </spec>
-
-                <spec type="languagepack">
-                    <set name="languagepack.id" value="19" />
-                    <set name="default" value="10"/>
-                    <set name="languages" value="10,51,76,83"/>
-                    <set name="description" value="AMERICAS"/>
-                </spec>
-            </spec>
-        </spec>    
-        
-        <spec type="uda_roms" abstract="true">
-            <spec type="uda">
-                <set name="uda.id" value="01"/>    
-                <set name="uda.content.dir" value="${build.drive}/mc/mc_config/.../uda_01"/>    
-            </spec>
-        </spec> 
-    </spec>
-</build>
\ No newline at end of file
--- a/buildframework/helium/tools/rombuild/features/helium_auto_traces.mk	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-#
-# 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: 
-#
-###############################################################################
-# A step to generate udeb file list. e.g: my_tracefiles.txt
-# CORE_UDEBFILE_LIST is a space separated list of file to be loaded as udeb.
-# It automatically enable traces if any files are defined.
-CORE_UDEBFILE_LIST?=
-ifneq ("$(strip $(CORE_UDEBFILE_LIST))","")
-CORE_UDEBFILE=$(CORE_NAME)_my_tracefiles.txt
-
-CLEAN_CREATE_TRACE_FILE = del | $(CORE_UDEBFILE)
-BUILD_CREATE_TRACE_FILE = \
-  echo  | Generating trace file: $(CORE_UDEBFILE)\n | \
-  write | $(CORE_UDEBFILE) | $(foreach file,$(CORE_UDEBFILE_LIST),$(strip $(file))\n)
-
-CLEAN_AUTOTRACES += | $(CLEAN_CREATE_TRACE_FILE)
-BUILD_AUTOTRACES += | $(BUILD_CREATE_TRACE_FILE)
-
-## Integration to iMaker
-CLEAN_COREPRE += $(CLEAN_AUTOTRACES)
-BUILD_COREPRE += $(BUILD_AUTOTRACES)
-USE_UDEB=1
-endif
-###############################################################################
--- a/buildframework/helium/tools/rombuild/features/helium_config_builder.mk	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-#
-# 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: 
-#
-#################################################################
-# Helium iMaker configuration builder.
-# This should ease the iMaker build configuration.
-# Each rom creation will be driven by one configuration file,
-# which will contains a predefine target call to perform the
-# rom build operation.
-# Configs could be either generated or manually created.
-# imaker -pPRODUCT -cncp51 -f helium_config_builder.mk build-roms
-#################################################################
-
-################################################################
-# File glober
-# $1: location
-# $2: perl regexp to match
-helium_glob=$(shell perl -e "use File::Find; use File::Spec; File::Find::find(\&wanted, $$ARGV[0]); sub wanted(){my $$name =$$File::Find::name; if ( $$name =~ /$$ARGV[1]/i ) {$$name =~ s/ /?/g; print $$name.' '; } }" $1 $2)
-
-
-################################################################
-# Config files location
-ROM_CONFIG_DIR=$(PRODUCT_DIR)/rom_configs
-ROM_CONFIGS=$(call helium_glob,$(ROM_CONFIG_DIR),.mk$$)
-
-
-# target to build one config
-%-build-rom:
-	@echo === Stage=$* == $*
-	-@perl -e "print '++ Started at '.localtime().\"\n\""
-	-@perl -e "use Time::HiRes; print '+++ HiRes Start '.Time::HiRes::time().\"\n\";"
-	@echo Building imaker -f $* build-rom
-	-@imaker -f $* build-rom
-	-@perl -e "use Time::HiRes; print '+++ HiRes End '.Time::HiRes::time().\"\n\";"
-	-@perl -e "print '++ Finished at '.localtime().\"\n\""
-
-# target to build all configs
-build-roms: $(foreach config,$(ROM_CONFIGS),$(config)-build-rom)
-
-
-################################################################
--- a/buildframework/helium/tools/rombuild/features/helium_features.mk	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/rombuild/features/helium_features.mk	Thu Mar 04 15:10:37 2010 +0200
@@ -17,12 +17,8 @@
 # Helium specific features.
 ###############################################################################
 
-include /epoc32/rom/config/helium_localisation.mk    
-include /epoc32/rom/config/helium_auto_traces.mk
-include /epoc32/rom/config/helium_sw_string.mk
 include /epoc32/rom/config/helium_helpers.mk
 include /epoc32/rom/config/helium_eval_variables.mk
-include /epoc32/rom/config/helium_uda.mk
 include /epoc32/rom/config/helium_makeUPCT_core.mk
 
 ###############################################################################
--- a/buildframework/helium/tools/rombuild/features/helium_fwid.mk	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,65 +0,0 @@
-#
-# 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: 
-#
-###############################################################################
-###############################################################################
-###############################################################################
-# FWID creation
-ENABLE_FWID?=0
-FWID_CORE_IBY=$(WORKNAME)_core_fwid.iby
-FWID_VARIANT_IBY=$(WORKNAME)_variant_fwid.iby
-FWID_FILE=$(WORKNAME)_fwid$(FWID_ROFSID).txt
-
-# A step to generate fwidX.txt
-CLEAN_CREATE_FWID_FILE = del | $(FWID_FILE)
-BUILD_CREATE_FWID_FILE = \
-  echo  | Generating file: $(FWID_FILE)\n | \
-  writeu | $(FWID_FILE) | id=$(FWID$(FWID_ROFSID)_ID)\nversion=$(FWID$(FWID_ROFSID)_VERSION)\n
-
-# fwid.iby creation 
-CLEAN_VARIANTFWIDIBY = del | $(FWID_VARIANT_IBY)
-BUILD_VARIANTFWIDIBY = \
-    echo  | Generating the $(FWID_VARIANT_IBY)\n | \
-  write | $(FWID_VARIANT_IBY) | // Generated iby for fwid inclusion\n\
-    \n\#ifndef __GENERATED_VARIANT_FWID_IBY__\
-  \n\#define __GENERATED_VARIANT_FWID_IBY__\n\
-  $(foreach FWID_ROFSID,2 3,\nROM_IMAGE[$(FWID_ROFSID)] data=$(FWID_FILE)   RESOURCE_FILES_DIR\versions\fwid$(FWID_ROFSID).txt)\
-  \n\n\#endif // __GENERATED_VARIANT_FWID_IBY__\n
-  
-CLEAN_COREFWIDIBY = del | $(FWID_CORE_IBY)
-BUILD_COREFWIDIBY = \
-    echo  | Generating the $(FWID_CORE_IBY)\n | \
-  write | $(FWID_CORE_IBY) | // Generated iby for fwid inclusion\n\
-    \n\#ifndef __GENERATED_CORE_FWID_IBY__\
-  \n\#define __GENERATED_CORE_FWID_IBY__\n\
-  $(foreach FWID_ROFSID,1,\nROM_IMAGE[$(FWID_ROFSID)] data=$(FWID_FILE) RESOURCE_FILES_DIR\versions\fwid$(FWID_ROFSID).txt)\
-  \n\n\#endif // __GENERATED_CORE_FWID_IBY__\n
-
-# creates the all fwid file need file - CORE
-CLEAN_CREATE_FWID_FILES=echo | Cleaning up fwids\n $(foreach FWID_ROFSID,$1,| $(CLEAN_CREATE_FWID_FILE))
-BUILD_CREATE_FWID_FILES=echo | Generating fwids\n $(foreach FWID_ROFSID,$1,| $(BUILD_CREATE_FWID_FILE))
-
-CLEAN_VARBLDPRE += $(call iif,$(ENABLE_FWID), | $(call CLEAN_CREATE_FWID_FILES,2 3) | $(CLEAN_VARIANTFWIDIBY),)
-BUILD_VARBLDPRE += $(call iif,$(ENABLE_FWID), | $(call BUILD_CREATE_FWID_FILES,2 3) | $(BUILD_VARIANTFWIDIBY),)
-CLEAN_COREBLDPRE += $(call iif,$(ENABLE_FWID), | $(call CLEAN_CREATE_FWID_FILES,1) | $(CLEAN_COREFWIDIBY),)
-BUILD_COREBLDPRE += $(call iif,$(ENABLE_FWID), | $(call BUILD_CREATE_FWID_FILES,1) | $(BUILD_COREFWIDIBY),)
-BLDROM_OPTPROD += $(call iif,$(ENABLE_FWID),$(FWID_CORE_IBY),)
-# pass this only to var creation could not configure option for variant and core separately
-BLDROM_VAROBY += $(call iif,$(and $(call iif,$(SOS_VARIANT),1,),$(call iif,$(ENABLE_FWID),1,)),$(FWID_VARIANT_IBY),)
-###############################################################################
-###############################################################################
-###############################################################################
-
-
--- a/buildframework/helium/tools/rombuild/features/helium_localisation.mk	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,78 +0,0 @@
-#
-# 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: 
-#
-###############################################################################
-ifeq ($(RD_LOCALISATION),1)
-#include image_conf_language_definitions.mk
-endif
-define to_language_names
-$(foreach lid,$(subst $(comma), ,$1),$(LANGUAGE_$(lid)))
-endef
-###############################################################################
-
-###############################################################################
-# Variation helpers
-#
-###############################################################################
-match_re=$(shell perl -e "print "1" if (\"$1\" =~ /$2/i);")
-# find_variant_path(variantid, toplevel_variant_directory)
-find_variant_path=$(foreach path,$(wildcard $2/*_*),$(if $(call match_re,$(path),_$1$$),$(path)/data $(path)))
-# find_variants_path(variantid_list, toplevel_variant_directory)
-find_variants_path=$(foreach variantid,$1,$(call find_variant_path,$(variantid),$2))
-###############################################################################
-
-
-
-###############################################################################
-# Simple languagepack automation
-###############################################################################
-ifeq ($(HELIUM_LOCALISATION),1)
-LP_AUTOMATION_OVERRIDE_IBY=$(ROFS2_NAME)_override_lp_automation.iby
-HELIUM_LANGUAGES_TXT=$(ROFS2_NAME)_languages.txt
-HELIUM_LANG_TXT=$(ROFS2_NAME)_lang.txt
-
-# Generate the language files based on LANGUAGE_IDS, DEFAULT_LANGUAGE_ID and LANGID
-#
-CLEAN_HELIUM_LANGFILES = echo | Deleting $(HELIUM_LANG_TXT)\n | del | $(HELIUM_LANG_TXT) | echo | Deleting $(HELIUM_LANGUAGES_TXT)\n |  del | $(HELIUM_LANGUAGES_TXT)
-BUILD_HELIUM_LANGFILES = \
-  echo   | Generating the language files for Variant image creation\n | \
-  writeu | $(HELIUM_LANG_TXT) | $(LANGID) | \
-  writeu | $(HELIUM_LANGUAGES_TXT) | \
-    $(call sstrip,$(foreach lang,$(LANGUAGE_IDS), \
-      $(lang)$(call select,$(lang),$(DEFAULT_LANGUAGE_ID),$(comma)d)\n)) | \
-    $(if $(findstring $(DEFAULT_LANGUAGE_ID),$(LANGUAGE_IDS)),, \
-      echo | Error: Default_language=$(DEFAULT_LANGUAGE_ID) was not found in the list of variant languages=$(LANGUAGE_IDS)\n)
-
-
-CLEAN_HELIUM_CREATE_LP_AUTOMATION_OVERRIDE_IBY = echo | Deleting $(LP_AUTOMATION_OVERRIDE_IBY)\n | del | $(LP_AUTOMATION_OVERRIDE_IBY)
-BUILD_HELIUM_CREATE_LP_AUTOMATION_OVERRIDE_IBY = \
-	echo  | Generating the $(LP_AUTOMATION_OVERRIDE_IBY)\n | \
-	write | $(LP_AUTOMATION_OVERRIDE_IBY) | // Generated iby for lp automation\n\
-	\n\#ifndef __GENERATED_LP_AUTOMATION_OVERRIDE_VERSION_IBY__\
-	\n\#define __GENERATED_LP_AUTOMATION_OVERRIDE_VERSION_IBY__\n\
-	\nROM_IMAGE[2] {\
-	\ndata-override=$(HELIUM_LANGUAGES_TXT)	resource\Bootdata\languages.txt\
-	\ndata-override=$(HELIUM_LANG_TXT) 	resource\versions\lang.txt\
-	$(foreach lang,$(LANGUAGE_IDS),\n\#include <Locales_$(lang).iby>)\
-	\n}\
-	\n\n\#endif // __GENERATED_LP_AUTOMATION_OVERRIDE_VERSION_IBY__\n
-
-
-
-# iMaker hook integration.
-BLR.ROFS2.PRE += HELIUM_LANGFILES HELIUM_CREATE_LP_AUTOMATION_OVERRIDE_IBY
-ROFS2_OBY += $(call iif,$(USE_OVERRIDE),$(LP_AUTOMATION_OVERRIDE_IBY),)
-endif
-
--- a/buildframework/helium/tools/rombuild/features/helium_sw_string.mk	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,99 +0,0 @@
-#
-# 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: 
-#
-###############################################################################
-###############################################################################
-###############################################################################
-# SW version string handling
-ENABLE_SW_STRING?=0
-CORE_SW_VERSION_STRING=v 0.00.0\\\n$(TODAY)\\\nRM-XXX
-MODEL_SW_VERSION_STRING=N00
-LP_SW_VERSION_STRING=v 0.00.0 (00)\\\n$(TODAY)\\\nRM-XXX
-CUSTOMER_SW_VERSION_STRING=to be defined
-TODAY:=$(shell perl -e "use POSIX qw(strftime); print strftime(\"%%d-%%m-%%y\", localtime());")
-
-# Internal names
-CORE_OVERRIDE_SW_VERSION_IBY=$(CORE_NAME)_override_core_version.iby
-MODEL_OVERRIDE_SW_VERSION_IBY=$(CORE_NAME)_override_model_version.iby
-LP_OVERRIDE_SW_VERSION_IBY=$(ROFS2_NAME)_override_lp_version.iby
-CUSTOMER_OVERRIDE_SW_VERSION_IBY=$(ROFS3_NAME)_override_customer_version.iby
-CORE_SW_VERSION_FILE=$(CORE_NAME)_sw.txt
-MODEL_SW_VERSION_FILE=$(CORE_NAME)_model.txt
-LP_SW_VERSION_FILE=$(ROFS2_NAME)_langsw.txt
-CUSTOMER_SW_VERSION_FILE=$(ROFS3_NAME)_customersw.txt
-
-
-CLEAN_CREATE_SW_VERSION_FILE = echo | Deleting $($(1)_SW_VERSION_FILE)\n | del | $($(1)_SW_VERSION_FILE)
-BUILD_CREATE_SW_VERSION_FILE = \
-  echo  | Generating file: $($(1)_SW_VERSION_FILE)\n | \
-  writeu | $($(1)_SW_VERSION_FILE) | $(call quote,$($(1)_SW_VERSION_STRING))
-
-CLEAN_CREATE_CORE_OVERRIDE_SW_VERSION_IBY = echo | Deleting $(CORE_OVERRIDE_SW_VERSION_IBY)\n | del | $(CORE_OVERRIDE_SW_VERSION_IBY)
-BUILD_CREATE_CORE_OVERRIDE_SW_VERSION_IBY = \
-    echo  | Generating the $(CORE_OVERRIDE_SW_VERSION_IBY)\n | \
-    write | $(CORE_OVERRIDE_SW_VERSION_IBY) | // Generated iby for sw string inclusion\n\
-    \n\#ifndef __GENERATED_CORE_OVERRIDE_VERSION_IBY__\
-    \n\#define __GENERATED_CORE_OVERRIDE_VERSION_IBY__\n\
-    \ndata-override=$(CORE_SW_VERSION_FILE)     resource\versions\sw.txt\
-    \n\n\#endif // __GENERATED_CORE_OVERRIDE_VERSION_IBY__\n
-
-CLEAN_CREATE_MODEL_OVERRIDE_SW_VERSION_IBY = echo | Deleting $(MODEL_OVERRIDE_SW_VERSION_IBY)\n | del | $(MODEL_OVERRIDE_SW_VERSION_IBY)
-BUILD_CREATE_MODEL_OVERRIDE_SW_VERSION_IBY = \
-    echo  | Generating the $(MODEL_OVERRIDE_SW_VERSION_IBY)\n | \
-    write | $(MODEL_OVERRIDE_SW_VERSION_IBY) | // Generated iby for sw string inclusion\n\
-    \n\#ifndef __GENERATED_MODEL_OVERRIDE_VERSION_IBY__\
-    \n\#define __GENERATED_MODEL_OVERRIDE_VERSION_IBY__\n\
-    \ndata-override=$(MODEL_SW_VERSION_FILE)    resource\versions\model.txt\
-    \n\n\#endif // __GENERATED_MODEL_OVERRIDE_VERSION_IBY__\n
-
-CLEAN_CREATE_LP_OVERRIDE_SW_VERSION_IBY = echo | Deleting $(LP_OVERRIDE_SW_VERSION_IBY)\n | del | $(LP_OVERRIDE_SW_VERSION_IBY)
-BUILD_CREATE_LP_OVERRIDE_SW_VERSION_IBY = \
-    echo  | Generating the $(LP_OVERRIDE_SW_VERSION_IBY)\n | \
-    write | $(LP_OVERRIDE_SW_VERSION_IBY) | // Generated iby for sw string inclusion\n\
-    \n\#ifndef __GENERATED_LP_OVERRIDE_VERSION_IBY__\
-    \n\#define __GENERATED_LP_OVERRIDE_VERSION_IBY__\n\
-    \nROM_IMAGE[2] data-override=$(LP_SW_VERSION_FILE)      resource\versions\langsw.txt\
-    \n\n\#endif // __GENERATED_LP_OVERRIDE_VERSION_IBY__\n
-
-CLEAN_CREATE_CUSTOMER_OVERRIDE_SW_VERSION_IBY = echo | Deleting $(CUSTOMER_OVERRIDE_SW_VERSION_IBY)\n | del | $(CUSTOMER_OVERRIDE_SW_VERSION_IBY)
-BUILD_CREATE_CUSTOMER_OVERRIDE_SW_VERSION_IBY = \
-    echo  | Generating the $(CUSTOMER_OVERRIDE_SW_VERSION_IBY)\n | \
-    write | $(CUSTOMER_OVERRIDE_SW_VERSION_IBY) | // Generated iby for sw string inclusion\n\
-    \n\#ifndef __GENERATED_CUSTOMER_OVERRIDE_VERSION_IBY__\
-    \n\#define __GENERATED_CUSTOMER_OVERRIDE_VERSION_IBY__\n\
-    \nROM_IMAGE[3] data-override=$(CUSTOMER_SW_VERSION_FILE)    resource\versions\customersw.txt\
-    \n\n\#endif // __GENERATED_CUSTOMER_OVERRIDE_VERSION_IBY__\n
-
-CLEAN_CORESWSTING  = $(call iif,$(ENABLE_SW_STRING), $(foreach type,CORE MODEL, | $(call CLEAN_CREATE_SW_VERSION_FILE,$(type)) | $(CLEAN_CREATE_$(type)_OVERRIDE_SW_VERSION_IBY)),)
-BUILD_CORESWSTING  = $(call iif,$(ENABLE_SW_STRING), $(foreach type,CORE MODEL, | $(call BUILD_CREATE_SW_VERSION_FILE,$(type)) | $(BUILD_CREATE_$(type)_OVERRIDE_SW_VERSION_IBY)),)
-CLEAN_ROFS2SWSTING = $(call iif,$(ENABLE_SW_STRING), $(foreach type,LP, | $(call CLEAN_CREATE_SW_VERSION_FILE,$(type)) | $(CLEAN_CREATE_$(type)_OVERRIDE_SW_VERSION_IBY)),)
-BUILD_ROFS2SWSTING = $(call iif,$(ENABLE_SW_STRING), $(foreach type,LP, | $(call BUILD_CREATE_SW_VERSION_FILE,$(type)) | $(BUILD_CREATE_$(type)_OVERRIDE_SW_VERSION_IBY)),)
-CLEAN_ROFS3SWSTING = $(call iif,$(ENABLE_SW_STRING), $(foreach type,CUSTOMER, | $(call CLEAN_CREATE_SW_VERSION_FILE,$(type)) | $(CLEAN_CREATE_$(type)_OVERRIDE_SW_VERSION_IBY)),)
-BUILD_ROFS3SWSTING = $(call iif,$(ENABLE_SW_STRING), $(foreach type,CUSTOMER, | $(call BUILD_CREATE_SW_VERSION_FILE,$(type)) | $(BUILD_CREATE_$(type)_OVERRIDE_SW_VERSION_IBY)),)
-
-CLEAN_COREPRE += $(CLEAN_CORESWSTING)
-BUILD_COREPRE += $(BUILD_CORESWSTING)
-CLEAN_ROFS2PRE += $(CLEAN_ROFS2SWSTING)
-BUILD_ROFS2PRE += $(BUILD_ROFS2SWSTING)
-CLEAN_ROFS3PRE += $(CLEAN_ROFS3SWSTING)
-BUILD_ROFS3PRE += $(BUILD_ROFS3SWSTING)
-
-CORE_OBY += $(if $(filter-out 0,$(ENABLE_SW_STRING)),$(CORE_OVERRIDE_SW_VERSION_IBY) $(MODEL_OVERRIDE_SW_VERSION_IBY),)
-ROFS2_OBY += $(if $(filter-out 0,$(ENABLE_SW_STRING)),$(LP_OVERRIDE_SW_VERSION_IBY),)
-ROFS3_OBY += $(if $(filter-out 0,$(ENABLE_SW_STRING)),$(CUSTOMER_OVERRIDE_SW_VERSION_IBY),)
-###############################################################################
-###############################################################################
-###############################################################################
-
--- a/buildframework/helium/tools/rombuild/features/helium_uda.mk	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,77 +0,0 @@
-#
-# 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: 
-#
-###############################################################################
-# Helium additional support for UDA creation.
-###############################################################################
-# Customisable variables.
-HELIUM_UDA=0
-UDA_CONTENT_DIRS=
-UDA_CONTENT_SIS=
-UDA_EXCLUDE_FILE=$(UDA_CPDIR)/private/100059C9/excludelist.txt
-UDA_SW_STRING_FILE="$(UDA_CPDIR)/Resource/Versions/User Content Package_UDA.txt"
-UDA_SW_STRING=my version
-
-7ZIP_TOOL=$(call iif,$(USE_UNIX),7za,7za.exe)
-INTERPRETSIS_TOOL=/epoc32/tools/$(call iif,$(USE_UNIX),interpretsis,interpretsis.exe)
-INTERPRETSIS_HAL_CONFIG=
-
-###############################################################################
-# 
-helium_grab_content=$(shell perl -e "use File::Find; use File::Spec; File::Find::find(\&wanted, $$ARGV[0]); sub wanted(){my $$name = File::Spec->abs2rel($$File::Find::name, $$ARGV[0]); $$name =~ s/ /?/g; print $$name.' ';}" $1)
-helium_abs2rel=$(shell perl -e "use File::Spec; print File::Spec->abs2rel($$ARGV[0], $$ARGV[1]);" "$1" "$2")
-###############################################################################
-#
-ifeq ($(HELIUM_UDA),1)
-
-CLEAN_CREATE_UDA_DIR = echo | Deleting $(UDA_CPDIR)\n | del | $(UDA_CPDIR)
-BUILD_CREATE_UDA_DIR = echo | Creating $(UDA_CPDIR)\n | mkdir | $(UDA_CPDIR)
-
-CLEAN_UDA_GATHER_CONTENT = 
-BUILD_UDA_GATHER_CONTENT = $(foreach content,$(UDA_CONTENT_DIRS),\
-	| echo | Adding $(content)/*.zip\n | cmd | if exist $(content)/*.zip unzip -o $(content)/*.zip -d $(UDA_CPDIR)\
-	| echo | Adding $(content)/*.rar\n | cmd | if exist $(content)/*.rar $(7ZIP_TOOL) x -y -o$(UDA_CPDIR) $(content)/*.rar)
-
-###############################################################################
-# interpretsis integration
-CLEAN_UDA_GATHER_SIS_CONTENT = 
-BUILD_UDA_GATHER_SIS_CONTENT = $(foreach content,$(UDA_CONTENT_SIS), | echo | Adding $(content)\n | cmd | \
- $(INTERPRETSIS_TOOL) -z / -c $(UDA_CPDIR) $(if $(INTERPRETSIS_HAL_CONFIG), -i $(INTERPRETSIS_HAL_CONFIG)) -s $(content))
-
-
-# using xcopy.
-#cmd | xcopy /E /R /F /Y $(subst /,\,$(content)) $(subst /,\,$(UDA_CPDIR)))
-
-###############################################################################
-#
-CLEAN_UDA_CREATE_EXCLUDE_FILE =
-BUILD_UDA_CREATE_EXCLUDE_FILE = echo | Creating $(UDA_EXCLUDE_FILE)\n \
- 	| mkdir | $(dir $(UDA_EXCLUDE_FILE)) \
- 	| write | $(UDA_EXCLUDE_FILE) | | \
- 	| write | $(UDA_EXCLUDE_FILE) \
- 	| $(call peval,use File::Find; my $$append= ""; File::Find::find(\&wanted, $(call pquote,$(UDA_CPDIR))); \
- 	    return $$append; sub wanted(){$$append .= "C:\\\".File::Spec->abs2rel($$File::Find::name, $(call pquote,$(UDA_CPDIR)))."\n";})
- 	  
-###############################################################################
-#
-CLEAN_UDA_CREATE_SW_STRING =
-BUILD_UDA_CREATE_SW_STRING = echo | Creating $(UDA_SW_STRING_FILE)\n \
- | mkdir | $(dir "$(UDA_SW_STRING_FILE)") | writeu | $(UDA_SW_STRING_FILE) | $(call quote,$(UDA_SW_STRING))
-
-
-# Prepending Helium UDA specific functionalities
-SOS.UDA.STEPS := CREATE_UDA_DIR UDA_GATHER_SIS_CONTENT UDA_GATHER_CONTENT UDA_CREATE_SW_STRING UDA_CREATE_EXCLUDE_FILE $(SOS.UDA.STEPS)
-endif
-###############################################################################
--- a/buildframework/helium/tools/rombuild/features/unittest/test_helium_features.mk	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-#
-# 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: 
-#
-################################################
-# Unit-testing Helium Makefile functionalities.
-# + helium_features.mk
-#   + version string.
-################################################
-
-################################################
-# Helper target
-test_sw_version: TEST_IMAKER=imaker -p$(PRODUCT_NAME) -c$(COREPLAT_NAME) -f /epoc32/rom/config/helium_features.mk
-test_sw_version:
-	$(TEST_IMAKER) step-CORESWSTING
-	$(TEST_IMAKER) step-ROFS2SWSTING
-	$(TEST_IMAKER) step-ROFS3SWSTING
-	
-	
-################################################
-# test_autotraces
-test_autotraces: TEST_IMAKER=imaker -p$(PRODUCT_NAME) -c$(COREPLAT_NAME) -f /epoc32/rom/config/helium_features.mk
-test_autotraces: CORE_UDEBFILE_LIST=test.dll test2.exe
-test_autotraces:
-	$(TEST_IMAKER) step-AUTOTRACES
-
-################################################
-# test_COREPRE
-test_COREPRE:
-	@echo COREPRE ... $(if $(BUILD_COREPRE),ok,FAIL)
-
-################################################
-# Main target
-unittest: test_COREPRE test_sw_version test_autotraces
-
-
-################################################
-
-
-
--- a/buildframework/helium/tools/rombuild/features/unittest/test_helpers.mk	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-#
-# 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: 
-#
-################################################
-# Unit-testing Helium Makefile functionalities.
-################################################
-
-# Including Helium specific additional features.
-include helium_features.mk
-
-################################################
-# Helper target
-test_helpers:
-	@echo test_helpers
-	@echo foo$(call removedrive,Z:\output\logs)bar
-	@echo Remove drive from a path that contains a drive ... $(if $(subst /output/logs,,$(call removedrive,Z:\output\logs)),FAIL,ok)
-	@echo Remove drive from a path that does not contain a drive ... $(if $(subst /output/logs,,$(call removedrive,\output\logs)),FAIL,ok)
-	
-
-################################################
-# Main target
-unittest: test_helpers
-
-
-################################################
-
-
--- a/buildframework/helium/tools/rombuild/generic_templates/core.mk	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,64 +0,0 @@
-#
-# 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: 
-#
-###############################################################################
-# Core template
-###############################################################################
-
-core${core.id}${image.type}: TYPE=${image.type}
-core${core.id}${image.type}: UI_PLATFORM=${ui.platform}
-core${core.id}${image.type}: USE_FOTI=$(and $(call iif,${use.foti},1,),$(call iif,$(subst rnd,,$(subst prd,,$(TYPE))),,1))
-core${core.id}${image.type}: USE_FOTA=$(and $(call iif,${use.fota},1,),$(call iif,$(subst rnd,,$(subst prd,,$(TYPE))),,1))
-core${core.id}${image.type}: PREBUILD_STEPS=$(call iif,$(USE_FOTI),foti,) $(call iif,$(USE_FOTA),fota,)
-core${core.id}${image.type}: NAME=${core.image.name}
-core${core.id}${image.type}: WORKDIR=$(call removedrive,${core.output.dir})
-core${core.id}${image.type}: CORE_UDEBFILE_LIST=$(subst $(comma), ,${mytraces.binaries})
-core${core.id}${image.type}: SOSCORE_VERSION=${core.version.info}
-core${core.id}${image.type}: SOSROFS1_VERSION=${rofs1.version.info}
-core${core.id}${image.type}: USE_VERGEN=1
-core${core.id}${image.type}: CORE_FWID=${rofs1.fwid.id}
-core${core.id}${image.type}: CORE_FWIDVER=${rofs1.fwid.version}
-core${core.id}${image.type}: ENABLE_SW_STRING=1
-core${core.id}${image.type}: CORE_SW_VERSION_STRING=${core.template}
-core${core.id}${image.type}: MODEL_SW_VERSION_STRING=${model.template}
-core${core.id}${image.type}: ENABLE_ROMSYMBOL=${enable.romsymbol}
-core${core.id}${image.type}: OPTION_LIST=TYPE HWID USE_FOTI USE_FOTA NAME WORKDIR CORE_UDEBFILE_LIST SOSCORE_VERSION SOSROFS1_VERSION USE_VERGEN CORE_FWID CORE_FWIDVER ENABLE_SW_STRING CORE_SW_VERSION_STRING MODEL_SW_VERSION_STRING
-core${core.id}${image.type}: unzip_western
-	@echo === Stage=core${core.id}${image.type} == core${core.id}${image.type}
-	-@perl -e "print '++ Started at '.localtime().\"\n\""
-	-@perl -e "use Time::HiRes; print '+++ HiRes Start '.Time::HiRes::time().\"\n\";"
-	@echo =========== Configuration =================
-	@echo PRODUCT              : $(PRODUCT_NAME)
-	@echo TYPE                 : $(TYPE)
-	@echo NAME                 : $(NAME)
-	@echo WORKDIR              : $(WORKDIR)
-	@echo CORE_UDEBFILE_LIST   : $(CORE_UDEBFILE_LIST)
-	@echo BLDROM_OPTION        : $(BLDROM_OPTION)
-	@echo USE_FOTI             : $(USE_FOTI)
-	@echo USE_FOTA             : $(USE_FOTA)
-	@echo PREBUILD_STEPS       : $(PREBUILD_STEPS)
-	@echo SOSCORE_VERSION      : $(SOSCORE_VERSION)
-	@echo SOSROFS1_VERSION     : $(SOSROFS1_VERSION)	
-	@echo ENABLE_ROMSYMBOL     : $(ENABLE_ROMSYMBOL)
-	@echo ===========================================
-	-@$(if $(strip $(PREBUILD_STEPS)),@echo $(CALL_IMAKER_PLATFORM) $(PREBUILD_STEPS),)
-	-@$(if $(strip $(PREBUILD_STEPS)),$(CALL_IMAKER_PLATFORM) $(PREBUILD_STEPS),)
-	@echo $(CALL_IMAKER) $(call transfer_option,$(OPTION_LIST)) core
-	-@$(CALL_IMAKER) $(call transfer_option,$(OPTION_LIST)) core
-	-@perl -e "use Time::HiRes; print '+++ HiRes End '.Time::HiRes::time().\"\n\";"
-	-@perl -e "print '++ Finished at '.localtime().\"\n\""
-
-
-$(call add_help,core${core.id}${image.type},t,Generates the core '${core.id}' (${image.type}))
\ No newline at end of file
--- a/buildframework/helium/tools/rombuild/generic_templates/customer.mk	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-#
-# 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: 
-#
-###############################################################################
-# Customer template
-###############################################################################
-
-customer${customer.id}${image.type}: CUSTOMERID=${customer.id}
-customer${customer.id}${image.type}: TYPE=${image.type}
-customer${customer.id}${image.type}: NAME=${customer.image.name}
-customer${customer.id}${image.type}: UI_PLATFORM=${ui.platform}
-customer${customer.id}${image.type}: WORKDIR=$(call removedrive,${customer.output.dir})
-customer${customer.id}${image.type}: VARIATION_DIRS=$(call find_variant_path,$(CUSTOMERID),$(call updatedrive,${variation.dir}))
-customer${customer.id}${image.type}: CUSTOM_VARIANT_OPT= -DCUSTOMERID=$(CUSTOMERID) $(foreach dir,$(VARIATION_DIRS),-I$(dir)) -DSECTION -DUSE_MULTIROFS ${rommake.flags}
-customer${customer.id}${image.type}: SOSROFS3_VERSION=${rofs3.version.info}
-customer${customer.id}${image.type}: USE_VERGEN=1
-customer${customer.id}${image.type}: ROFS3_FWID=${rofs3.fwid.id}
-customer${customer.id}${image.type}: ROFS3_FWIDVER=${rofs3.fwid.version}
-customer${customer.id}${image.type}: ENABLE_SW_STRING=1
-customer${customer.id}${image.type}: CUSTOMER_SW_VERSION=${customer.template}
-customer${customer.id}${image.type}: OPTION_LIST=TYPE NAME WORKDIR CUSTOM_VARIANT_OPT SOSROFS3_VERSION USE_VERGEN ROFS3_FWID ROFS3_FWIDVER ENABLE_SW_STRING CUSTOMER_SW_VERSION
-customer${customer.id}${image.type}: unzip_${variation}
-	@echo === Stage=customer${customer.id}${image.type} == customer${customer.id}${image.type}
-	-@perl -e "print '++ Started at '.localtime().\"\n\""
-	-@perl -e "use Time::HiRes; print '+++ HiRes Start '.Time::HiRes::time().\"\n\";"
-	@echo =========== Configuration =================
-	@echo PRODUCT             : $(PRODUCT_NAME)
-	@echo TYPE                : $(TYPE)
-	@echo NAME                : $(NAME)
-	@echo WORKDIR             : $(WORKDIR)
-	@echo OVERRIDEOBY         : $(OVERRIDEOBY)
-	@echo CUSTOMERID          : $(CUSTOMERID)
-	@echo CUSTOM_VARIANT_OPT  : $(CUSTOM_VARIANT_OPT)
-	@echo SOSROFS3_VERSION    : $(SOSROFS3_VERSION)
-	@echo CUSTOMER_SW_VERSION : $(CUSTOMER_SW_VERSION)
-	@echo ===========================================
-	@echo $(CALL_IMAKER) $(call transfer_option,$(OPTION_LIST)) rofs3
-	-@$(CALL_IMAKER) $(call transfer_option,$(OPTION_LIST)) rofs3
-	-@perl -e "use Time::HiRes; print '+++ HiRes End '.Time::HiRes::time().\"\n\";"
-	-@perl -e "print '++ Finished at '.localtime().\"\n\""
-
-$(call add_help,customer${customer.id}${image.type},t,Generates the customer variant '${customer.id}' (${image.type}))
-
-
--- a/buildframework/helium/tools/rombuild/generic_templates/eraseuda.mk	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-#
-# 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: 
-#
-###############################################################################
-# Erase UDA template
-###############################################################################
-
-eraseuda${image.type}: WORKDIR=$(call removedrive,${eraseuda.output.dir})
-eraseuda${image.type}: NAME=${eraseuda.image.name}
-eraseuda${image.type}: TYPE=${image.type}
-eraseuda${image.type}: UI_PLATFORM=${ui.platform}
-eraseuda${image.type}: OPTION_LIST=WORKDIR NAME TYPE
-eraseuda${image.type}:
-	@echo === Stage=mceraseuda == mceraseuda
-	-@perl -e "print '++ Started at '.localtime().\"\n\""
-	-@perl -e "use Time::HiRes; print '+++ HiRes Start '.Time::HiRes::time().\"\n\";"
-	@echo =========== Configuration =================
-	@echo PRODUCT : $(PRODUCT_NAME)
-	@echo WORKDIR : $(WORKDIR)
-	@echo NAME    : $(NAME)
-	@echo TYPE    : $(TYPE)
-	@echo ===========================================
-	@echo $(CALL_IMAKER) $(call transfer_option,$(OPTION_LIST)) udaerase
-	-@$(CALL_IMAKER) $(call transfer_option,$(OPTION_LIST)) udaerase
-	-@perl -e "use Time::HiRes; print '+++ HiRes End '.Time::HiRes::time().\"\n\";"
-	-@perl -e "print '++ Finished at '.localtime().\"\n\""
- 
-$(call add_help,eraseuda${image.type},t,Generates the uda erase (${image.type}))
--- a/buildframework/helium/tools/rombuild/generic_templates/flash.mk	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,85 +0,0 @@
-#
-# 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: 
-#
-###############################################################################
-# Flash template
-###############################################################################
-
-flash${flash.id}${image.type}: TYPE=${image.type}
-flash${flash.id}${image.type}: HWID=${rommake.hwid}
-flash${flash.id}${image.type}: PLATSECBIN=${use.platsecbin}
-flash${flash.id}${image.type}: UI_PLATFORM=${ui.platform}
-flash${flash.id}${image.type}: USE_FOTI=$(and $(call iif,${use.foti},1,),$(call iif,$(subst rnd,,$(subst prd,,$(TYPE))),,1))
-flash${flash.id}${image.type}: USE_FOTA=$(and $(call iif,${use.fota},1,),$(call iif,$(subst rnd,,$(subst prd,,$(TYPE))),,1))
-flash${flash.id}${image.type}: PREBUILD_STEPS=$(call iif,$(USE_FOTI),foti,) $(call iif,$(USE_FOTA),fota,)
-flash${flash.id}${image.type}: CUSTOM_CORE_OBY=${image.master.iby}
-flash${flash.id}${image.type}: MOBILE_CRASH_SENDER=${enable.mobile.crash.sender}
-flash${flash.id}${image.type}: NAME=${flash.image.name}
-flash${flash.id}${image.type}: WORKDIR=$(call removedrive,${flash.output.dir})
-flash${flash.id}${image.type}: CORE_UDEBFILE_LIST=$(subst $(comma), ,${mytraces.binaries})
-flash${flash.id}${image.type}: CUSTOM_CORE_OPT=${rommake.flags}
-flash${flash.id}${image.type}: SOSCORE_VERSION=${core.version.info}
-flash${flash.id}${image.type}: SOSROFS1_VERSION=${rofs1.version.info}
-flash${flash.id}${image.type}: SOSROFS2_VERSION=${rofs2.version.info}
-flash${flash.id}${image.type}: SOSROFS3_VERSION=${rofs3.version.info}
-flash${flash.id}${image.type}: USE_VERGEN=1
-flash${flash.id}${image.type}: CORE_FWID=${rofs1.fwid.id}
-flash${flash.id}${image.type}: CORE_FWIDVER=${rofs1.fwid.version}
-flash${flash.id}${image.type}: ROFS2_FWID=${rofs2.fwid.id}
-flash${flash.id}${image.type}: ROFS2_FWIDVER=${rofs2.fwid.version}
-flash${flash.id}${image.type}: ROFS3_FWID=${rofs3.fwid.id}
-flash${flash.id}${image.type}: ROFS3_FWIDVER=${rofs3.fwid.version}
-flash${flash.id}${image.type}: ENABLE_SW_STRING=1
-flash${flash.id}${image.type}: CORE_SW_VERSION_STRING=${core.template}
-flash${flash.id}${image.type}: MODEL_SW_VERSION_STRING=${model.template}
-flash${flash.id}${image.type}: LP_SW_VERSION_STRING=${languagepack.template}
-flash${flash.id}${image.type}: CUSTOMER_SW_VERSION_STRING=${customer.template}
-flash${flash.id}${image.type}: USE_ROMSYMGEN=${enable.romsymbol}
-flash${flash.id}${image.type}: OPTION_LIST=TYPE HWID USE_FOTI USE_FOTA CUSTOM_CORE_OBY NAME WORKDIR CORE_UDEBFILE_LIST CUSTOM_CORE_OPT MOBILE_CRASH_SENDER SOSCORE_VERSION  SOSROFS1_VERSION SOSROFS2_VERSION SOSROFS3_VERSION CORE_FWID CORE_FWIDVER ROFS2_FWID ROFS2_FWIDVER ROFS3_FWID ROFS3_FWIDVER ENABLE_SW_STRING CORE_SW_VERSION_STRING MODEL_SW_VERSION_STRING LP_SW_VERSION_STRING CUSTOMER_SW_VERSION_STRING USE_ROMSYMGEN USE_VERGEN 
-flash${flash.id}${image.type}: unzip_western
-	@echo === Stage=flash${flash.id}${image.type} == flash${flash.id}${image.type}
-	-@perl -e "print '++ Started at '.localtime().\"\n\""
-	-@perl -e "use Time::HiRes; print '+++ HiRes Start '.Time::HiRes::time().\"\n\";"
-	@echo =========== Configuration =================
-	@echo PRODUCT             : $(PRODUCT_NAME)
-	@echo TYPE                : $(TYPE)
-	@echo NAME                : $(NAME)
-	@echo USE_OVERRIDE        : $(USE_OVERRIDE)
-	@echo OVERRIDEOBY         : $(OVERRIDEOBY)
-	@echo CORE_OBY            : $(CORE_OBY)
-	@echo BLDROM_OPTION       : $(BLDROM_OPTION)
-	@echo MOBILE_CRASH_SENDER : $(MOBILE_CRASH_SENDER)
-	@echo WORKDIR             : $(WORKDIR)
-	@echo TRACES              : $(call iif,$(USE_UDEB),ON,OFF)
-	@echo UDEBFILE_LIST       : $(UDEBFILE_LIST)
-	@echo USE_FOTI            : $(call iif,$(USE_FOTI),ON,OFF)
-	@echo USE_FOTA            : $(call iif,$(USE_FOTA),ON,OFF)
-	@echo PREBUILD_STEPS      : $(PREBUILD_STEPS)
-	@echo SOSCORE_VERSION     : $(SOSCORE_VERSION)
-	@echo SOSROFS1_VERSION    : $(SOSROFS1_VERSION)	
-	@echo SOSROFS2_VERSION    : $(SOSROFS2_VERSION)
-	@echo SOSROFS3_VERSION    : $(SOSROFS3_VERSION)
-	@echo ENABLE_ROMSYMBOL    : $(ENABLE_ROMSYMBOL)
-	@echo ===========================================
-	-@$(if $(strip $(PREBUILD_STEPS)),@echo $(CALL_IMAKER_PLATFORM) $(PREBUILD_STEPS),)
-	-@$(if $(strip $(PREBUILD_STEPS)),$(CALL_IMAKER_PLATFORM) $(PREBUILD_STEPS),)
-	-@echo $(CALL_IMAKER) $(call transfer_option,$(OPTION_LIST)) flash
-	-@$(CALL_IMAKER) $(call transfer_option,$(OPTION_LIST)) flash
-	-@perl -e "use Time::HiRes; print '+++ HiRes End '.Time::HiRes::time().\"\n\";"
-	-@perl -e "print '++ Finished at '.localtime().\"\n\""
-
-
-
-$(call add_help,flash${flash.id}${image.type},t,Generates the flash '${flash.id}' (${image.type}))
--- a/buildframework/helium/tools/rombuild/generic_templates/flash_config.mk	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-#####################################################################
-# Flash config files templates
-#####################################################################
-
-flash_config${languagepack.id}${customer.id}${uda.id}${memorycard.id}${massmemory.id}${image.type}:TYPE=${image.type}
-flash_config${languagepack.id}${customer.id}${uda.id}${memorycard.id}${massmemory.id}${image.type}:TEMPLATE=${flash.config.publish.dir}/${flash.config.name}
-flash_config${languagepack.id}${customer.id}${uda.id}${memorycard.id}${massmemory.id}${image.type}:EVALUATED_FILE_NAME=$(TEMPLATE)
-flash_config${languagepack.id}${customer.id}${uda.id}${memorycard.id}${massmemory.id}${image.type}:
-	$(call IMAKER,EVAL_VARIABLES)
-	
\ No newline at end of file
--- a/buildframework/helium/tools/rombuild/generic_templates/languagepack.mk	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-#
-# 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: 
-#
-###############################################################################
-# languagepack template
-###############################################################################
-
-languagepack${languagepack.id}${image.type}: TYPE=${image.type}
-languagepack${languagepack.id}${image.type}: NAME=${languagepack.image.name}
-languagepack${languagepack.id}${image.type}: WORKDIR=$(call removedrive,${languagepack.output.dir})
-languagepack${languagepack.id}${image.type}: LPID=${languagepack.id}
-languagepack${languagepack.id}${image.type}: UI_PLATFORM=${ui.platform}
-languagepack${languagepack.id}${image.type}: VARIATION_DIRS=$(call find_variant_path,$(LPID),$(call updatedrive,${variation.dir}))
-languagepack${languagepack.id}${image.type}: CUSTOM_VARIANT_OPT=-DLPID=$(LPID)  $(foreach dir,$(VARIATION_DIRS),-I$(dir)) ${rommake.flags}
-languagepack${languagepack.id}${image.type}: SOSROFS2_VERSION=${rofs2.version.info}
-languagepack${languagepack.id}${image.type}: USE_VERGEN=1
-languagepack${languagepack.id}${image.type}: ROFS2_FWID=${rofs2.fwid.id}
-languagepack${languagepack.id}${image.type}: ROFS2_FWIDVER=${rofs2.fwid.version}
-languagepack${languagepack.id}${image.type}: ENABLE_SW_STRING=1
-languagepack${languagepack.id}${image.type}: LP_SW_VERSION_STRING=${languagepack.template}
-languagepack${languagepack.id}${image.type}: RD_LOCALISATION=0
-languagepack${languagepack.id}${image.type}: HELIUM_LOCALISATION=${enable.helium.lpa}
-languagepack${languagepack.id}${image.type}: DEFAULT_LANGUAGE_ID=$(strip ${default})
-languagepack${languagepack.id}${image.type}: LANGUAGE_IDS=$(subst $(comma), ,$(strip ${languages}))
-languagepack${languagepack.id}${image.type}: OPTION_LIST=TYPE NAME WORKDIR CUSTOM_VARIANT_OPT SOSROFS2_VERSION USE_VERGEN ROFS2_FWID ROFS2_FWIDVER RD_LOCALISATION HELIUM_LOCALISATION DEFAULT_LANGUAGE_ID LANGUAGE_IDS ENABLE_SW_STRING LP_SW_VERSION_STRING
-languagepack${languagepack.id}${image.type}: unzip_${variation}
-	@echo === Stage=languagepack${languagepack.id}${image.type} == languagepack${languagepack.id}${image.type}
-	-@perl -e "print '++ Started at '.localtime().\"\n\""
-	-@perl -e "use Time::HiRes; print '+++ HiRes Start '.Time::HiRes::time().\"\n\";"
-	@echo =========== Configuration =================
-	@echo PRODUCT              : $(PRODUCT_NAME)
-	@echo TYPE                 : $(TYPE)
-	@echo NAME                 : $(NAME)
-	@echo LPID                 : $(LPID)
-	@echo CUSTOM_VARIANT_OPT   : $(CUSTOM_VARIANT_OPT)	
-	@echo WORKDIR              : $(WORKDIR)
-	@echo SOSROFS2_VERSION     : $(SOSROFS2_VERSION)
-	@echo LP_SW_VERSION_STRING : $(LP_SW_VERSION_STRING)
-	@echo ===========================================
-	@echo $(CALL_IMAKER) $(call transfer_option,$(OPTION_LIST)) rofs2
-	-@$(CALL_IMAKER) $(call transfer_option,$(OPTION_LIST)) rofs2
-	-@perl -e "use Time::HiRes; print '+++ HiRes End '.Time::HiRes::time().\"\n\";"
-	-@perl -e "print '++ Finished at '.localtime().\"\n\""
-
-
-$(call add_help,languagepack${languagepack.id}${image.type},t,Generates the languagepack '${languagepack.id}' (${image.type}))
--- a/buildframework/helium/tools/rombuild/generic_templates/main.mk	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-#
-# 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: 
-#
-###############################################################################
-# iMaker templates
-###############################################################################
-
-# defining helium in the build area if not set by the environment
-HELIUM_HOME?=\mc\helium
-
-# using winimage from helium delivery.
-WINIMAGE_TOOL:=$(if $(strip ${winimage.tool}),${winimage.tool},$(WINIMAGE_TOOL))
-
-CALL_IMAKER_PLATFORM=imaker -p$(PRODUCT_NAME) -c$(COREPLAT_NAME) -f $(E32ROMCFG)/helium_features.mk
-CALL_IMAKER=imaker -p$(PRODUCT_NAME) -c$(COREPLAT_NAME) $(if $(UI_PLATFORM),-u$(UI_PLATFORM)) -f $(E32ROMCFG)/helium_features.mk
-CALL_TARGET=imaker -p$(PRODUCT_NAME) -c$(COREPLAT_NAME) -f $(E32ROMCFG)/$(COREPLAT_NAME)/$(PRODUCT_NAME)/${output.makefile.filename}
-
-transfer_option=$(foreach option,$1,$(if $($(option)),"$(option)=$($(option))",))
-
-
-#
-# Variation handling
-#
-LOCALISATION_SWITCH_REGION=1
-unzip_%:
-	@echo $(call iif,$(LOCALISATION_SWITCH_REGION),Unzipping variation $*...,Region is not switched to $*!)
-	$(call iif,$(LOCALISATION_SWITCH_REGION),-@unzip -o -qq -d $(subst \,/,$(EPOCROOT)) /output/build_area/localised/delta_$*_package.zip,)
-
-
-include /epoc32/rom/config/helium_features.mk
-###############################################################################
\ No newline at end of file
--- a/buildframework/helium/tools/rombuild/generic_templates/makeupct_core.mk	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-#
-# 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: 
-#
-
-include $(E32ROMCFG)/$(COREPLAT_NAME)/fota_config.mk
-
-makeupctcore${core.id}${image.type}: TYPE=${image.type}
-makeupctcore${core.id}${image.type}: NAME=${core.image.name}.core.fota.conf
-makeupctcore${core.id}${image.type}: WORKDIR=$(call removedrive,${core.output.dir})
-makeupctcore${core.id}${image.type}: MAKEUPCT_PACKAGE_SIZE_MAX=15000000
-makeupctcore${core.id}${image.type}: MAKEUPCT_SW_RELEASE_VERSION=${core.version.info}
-makeupctcore${core.id}${image.type}: OPTION_LIST=TYPE NAME WORKDIR MAKEUPCT_PACKAGE_SIZE_MAX MAKEUPCT_SW_RELEASE_VERSION MAKEUPCT_PLATFORM UPCT_NUMBER_BACKUP_BUFFERS UPCT_SOS_ISASW UPCT_RAMSIZE UPCT_SECTORSIZE UPCT_ASCIS KEYCERT_INDEX UPCT_EXTRA_PARAMETERS MAKEUPCT_PACKAGE_SIZE_MAX MAKEUPCT_SW_RELEASE_VERSION PRODUCT_TYPE UPCT_CMT_RAM_SIZE UPCT_CMT_SECTOR_SIZE UPCT_CMT_BACKUP_BLOCKS UPCT_APE_RAM_SIZE UPCT_APE_SECTOR_SIZE UPCT_APE_BACKUP_BLOCKS UPCT_CODESTART_MCUSW UPCT_APE_PRODUCT_KEY_INDEX UPCT_CMT_PRODUCT_KEY_INDEX
-
-makeupctcore${core.id}${image.type}:
-	@echo === Stage=makeupctcore${core.id}${image.type} == makeupctcore${core.id}${image.type}
-	-@perl -e "print '++ Started at '.localtime().\"\n\""
-	-@perl -e "use Time::HiRes; print '+++ HiRes Start '.Time::HiRes::time().\"\n\";"
-	@echo =========== Configuration =================
-	@echo TYPE: $(TYPE)
-	@echo NAME: $(NAME)
-	@echo WORKDIR: $(WORKDIR)
-	@echo MAKEUPCT_SW_RELEASE_VERSION: $(MAKEUPCT_SW_RELEASE_VERSION)
-	@echo ===========================================
-	@echo $(CALL_IMAKER_PLATFORM) $(call transfer_option,$(OPTION_LIST)) step-MAKEUPCT_CONF_CORE
-	-@$(CALL_IMAKER_PLATFORM) $(call transfer_option,$(OPTION_LIST)) step-MAKEUPCT_CONF_CORE
-	-@perl -e "use Time::HiRes; print '+++ HiRes End '.Time::HiRes::time().\"\n\";"
-	-@perl -e "print '++ Finished at '.localtime().\"\n\""
-
-	
-	
\ No newline at end of file
--- a/buildframework/helium/tools/rombuild/generic_templates/template.config.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : template.config.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:
-
-============================================================================
--->
-<flash_config>
-    <image_set>
-        <product>${rommake.product.name}</product>
-        <type_designator>${version.product.type}</type_designator>
-        <image_type>${image.type}</image_type>
-        <sw_version>${core.version.info}</sw_version>
-        <image type="core" path="${core.image.path}" name="${core.image.name}.core.fpsx" />
-        <image type="language" id="${languagepack.id}" path="${languagepack.image.path}" name="${languagepack.image.name}.language.fpsx" />
-        <image type="customer" id="${customer.id}" path="${customer.image.path}" name="${customer.image.name}.customer.fpsx" build="${customer.image.version.name}"/>
-        <image type="uda" id="${uda.id}" path="${uda.image.path}" name="${uda.image.name}.uda.fpsx"/>
-        <image type="massmemory" id="${massmemory.id}" path="${massmemory.image.path}" name="${massmemory.image.name}.massmemory.fpsx"/>
-        <image type="memorycard" id="${memorycard.id}" path="${memorycard.image.path}" name="${memorycard.image.name}.memorycard.fpsx"/>
-        <fwid>${fota.fwid}</fwid>
-        <description>Vanilla ${description}</description>
-        <date>${release.date}</date>
-    </image_set>
-</flash_config>
\ No newline at end of file
--- a/buildframework/helium/tools/rombuild/generic_templates/uda.mk	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-#
-# 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: 
-#
-###############################################################################
-# UDA template (Not tested yet!)
-###############################################################################
-
-uda${uda.id}: WORKDIR=$(call removedrive,${uda.output.dir})
-uda${uda.id}: NAME=${uda.image.name}
-uda${uda.id}: UDA_DIR=$(call removedrive,${uda.content.dir})
-uda${uda.id}: UI_PLATFORM=${ui.platform}
-uda${uda.id}: OPTION_LIST=WORKDIR NAME UDA_DIR
-uda${uda.id}:
-	@echo === Stage=uda${uda.id} == uda${uda.id}
-	-@perl -e "print '++ Started at '.localtime().\"\n\""
-	-@perl -e "use Time::HiRes; print '+++ HiRes Start '.Time::HiRes::time().\"\n\";"
-	@echo =========== Configuration =================
-	@echo UDA_CONTENTDIR: $(UDA_CONTENTDIR)
-	@echo WORKNAME: $(WORKNAME)
-	@echo ===========================================
-	@echo $(CALL_IMAKER_PLATFORM) $(call transfer_option,$(OPTION_LIST)) uda
-	-@$(CALL_IMAKER_PLATFORM) $(call transfer_option,$(OPTION_LIST)) uda
-	-@perl -e "use Time::HiRes; print '+++ HiRes End '.Time::HiRes::time().\"\n\";"
-	-@perl -e "print '++ Finished at '.localtime().\"\n\""
-	
-$(call add_help,uda${uda.id},t,Generates the UDA '${uda.id}')
-	
\ No newline at end of file
--- a/buildframework/helium/tools/rombuild/generic_templates/vt_uda.mk	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-#
-# 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: 
-#
-###############################################################################
-# UDA template
-###############################################################################
-
-uda${uda.id}: WORKDIR=$(call removedrive,${uda.output.dir})
-uda${uda.id}: NAME=${uda.image.name}
-uda${uda.id}: HELIUM_UDA=1
-uda${uda.id}: UDA_CONTENT_DIRS=$(foreach content,$(subst $(comma), ,${uda.content.subdirs}),$(call removedrive,${uda.content.dir}/$(content)))
-uda${uda.id}: UDA_CONTENT_SIS=$(foreach content,$(subst $(comma), ,${uda.content.sis}),$(call removedrive,$(content)))
-uda${uda.id}: UDA_SW_STRING=${uda.template}
-uda${uda.id}: INTERPRETSIS_TOOL=${interpretsis.tool}
-uda${uda.id}: INTERPRETSIS_HAL_CONFIG=${interpretsis.hal.config}
-uda${uda.id}: OPTION_LIST=WORKDIR NAME HELIUM_UDA UDA_CONTENT_DIRS UDA_SW_STRING UDA_CONTENT_SIS WINIMAGE_TOOL INTERPRETSIS_TOOL INTERPRETSIS_HAL_CONFIG
-uda${uda.id}:
-	@echo === Stage=uda${uda.id} == uda${uda.id}
-	-@perl -e "print '++ Started at '.localtime().\"\n\""
-	-@perl -e "use Time::HiRes; print '+++ HiRes Start '.Time::HiRes::time().\"\n\";"
-	@echo =========== Configuration =================
-	@echo UDA_CONTENTDIR: $(UDA_CONTENTDIR)
-	@echo WORKNAME: $(WORKNAME)
-	@echo ===========================================
-	@echo $(CALL_IMAKER_PLATFORM) $(call transfer_option,$(OPTION_LIST)) uda
-	-@$(CALL_IMAKER_PLATFORM) $(call transfer_option,$(OPTION_LIST)) uda
-	-@perl -e "use Time::HiRes; print '+++ HiRes End '.Time::HiRes::time().\"\n\";"
-	-@perl -e "print '++ Finished at '.localtime().\"\n\""
-	
\ No newline at end of file
--- a/buildframework/helium/tools/rombuild/imaker.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/rombuild/imaker.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -20,6 +20,7 @@
 
 ============================================================================
 -->
+<!--* @package rombuild -->
 <project name="rombuild.imaker" xmlns:hlm="http://www.nokia.com/helium">
     <description>
         ROM image creation using iMaker (future implementation).
@@ -74,15 +75,43 @@
     -->
     <target name="imaker-merge-rom-xml">
         <mkdir dir="${temp.build.dir}"/>
+        <!-- Locates the parsed configuration for ROM builds.
+        @type string
+        @scope private
+        -->
         <property name="rombuild.config.file.parsed" location="${build.output.dir}/rom_config.xml.parsed" />
         <hlm:mergeConfigXML filename="${rombuild.config.file.parsed}">
             <fileset dir="${release.images.dir}" includes="**/*.iconfig.xml"/>    
         </hlm:mergeConfigXML>
     </target>
 
-    <!-- Future official target for building roms using iMaker.
+    <!--
+        Implement a solution to create build information for imaker.
+    -->
+    <target name="rombuild-imaker-create-buildinfo">
+        <!-- FMPP template to generate a buildinfo makefile.
+        @type string
+        -->
+        <property name="rombuild.buildinfo.template" location="${helium.dir}/tools/common/templates/imaker/image_conf_buildinfo.mk.ftl" />
+        <!-- Location of the output file.
+        @type string
+        @scope private
+        -->
+        <property name="rombuild.buildinfo.output" location="${build.drive}${env.EPOCROOT}epoc32/rom/config/image_conf_buildinfo.mk" />
+        <fmpp sourceFile="${rombuild.buildinfo.template}" outputFile="${rombuild.buildinfo.output}">
+            <data expandProperties="yes">
+                ant: antProperties()
+            </data>
+        </fmpp>
+    </target>
+
+    <!--
+         Official target to build rom images using iMaker under Helium.
          To configure that target you have to define an imakerconfigurationset type identified by
          'imaker.rom.config'.
+         The accelerator will automatically be selected based on the build.system property. But this
+         default behaviour can be overriden by defining the reference of the engine to use via the 'imaker.engine'
+         property.
     -->
     <target name="build-roms" depends="rombuild-imaker-create-buildinfo">
         <mkdir dir="${roms.log.dir}"/>
@@ -97,11 +126,19 @@
                         <equals arg1="${build.system}" arg2="sbs-ec" />
                     </or>
                     <then>
+                        <!-- Defines which accelerator to use for running iMaker. (default value from build.system property)
+                        @type string
+                        @scope private
+                        -->
                         <property name="imaker.engine" value="imaker.engine.ec" />
                     </then>
                 </if>
             </then>
         </if>
+        <!-- Defines which accelerator to use for running iMaker. (default value from build.system property)
+        @type string
+        @scope private
+        -->
         <property name="imaker.engine" value="imaker.engine.default" />        
         <property name="imaker.rom.name" value=""/>
         <hlm:imaker epocroot="${build.drive}/" engineRefid="${imaker.engine}"
@@ -109,6 +146,20 @@
             <hlm:imakerconfigurationset refid="imaker.rom.config" />
         </hlm:imaker>
         <if>
+            <available file="${roms.log.dir}/${build.id}${imaker.rom.name}.roms.log" />
+            <then>
+                <echo message="WARNING: Nothing to build." file="${roms.log.dir}/${build.id}${imaker.rom.name}.roms.log" />
+            </then>
+        </if>
+        <hlm:metadatarecord database="${metadata.dbfile}">
+            <hlm:textmetadatainput>
+                <fileset casesensitive="false" file="${roms.log.dir}/${build.id}${imaker.rom.name}.roms.log" />
+                <metadatafilterset refid="filterset.imaker" />
+            </hlm:textmetadatainput>
+        </hlm:metadatarecord>
+        <hlm:signalMacro logfile="${roms.log.dir}/${build.id}${imaker.rom.name}.roms.log" 
+                         signal.input="rombuildSignalInput" />
+        <if>
             <istrue value="${blocks.enabled}" />
             <then>
                 <mkdir dir="${blocks.config.dir}" />
@@ -131,6 +182,7 @@
     <hlm:defaultEngine id="imaker.engine.default" threads="${number.of.threads}" />
 
     <hlm:emakeEngine id="imaker.engine.ec">
+        <arg value="--emake-emulation=symbian" />
         <arg value="--emake-annofile=${roms.log.dir}/${build.id}${imaker.rom.name}.anno.xml"/>
         <arg value="--emake-root=${env.EMAKE_ROOT}${path.separator}${helium.dir}"/>
         <arg value="--emake-annodetail=basic,history,file,waiting"/>
--- a/buildframework/helium/tools/rombuild/rombuild.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/rombuild/rombuild.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -20,328 +20,88 @@
 
 ============================================================================
 -->
+<!--* @package rombuild -->
 <project name="rombuild" xmlns:hlm="http://www.nokia.com/helium">
     <description>
         ROM image creation using iMaker.
         Flash config file generation.
     </description>
-    <import file="./trace_images/tracebuild.ant.xml" />
     <import file="imaker.ant.xml" />
+    
+    <!--* @property ee.rom.output.dir
+    /output/development_flash_images/engineering_english/logs
+    @type string
+    @editable required
+    @scope public
+    -->
+
+    <!--* @property core.rom.output.dir
+    /output/release_flash_images/rnd/core
+    @type string
+    @editable required
+    @scope public
+    -->
 
     <!-- should be overriden - default configuration -->
-    <!-- <property name="rombuild.makefile.name" value="mc_imaker_conf.mk" /> -->
+    <!-- The path to the iMaker executable file.
+    @type string
+    @scope private
+    -->
     <property name="imaker.command" location="${build.drive}\epoc32\tools\imaker.cmd" />
-    <property name="ee.makefile.target" value="ee_roms" />
-    <property name="subcon.makefile.target" value="subcon_roms" />
-    <property name="trace.makefile.target" value="trace_roms" />
-    <property name="ee_roms.log.file" value="${roms.log.dir}/${build.id}_ee_roms.log" />
-    <property name="trace.log.file" value="${roms.log.dir}/${build.id}_trace_roms.log" />
-    <property name="subcon.log.file" value="${roms.log.dir}/${build.id}_subcon_roms.log" />
-
-    <!-- Properties for image-creation target which is being used by IDOs -->
-    <property name="image_creation.copyto" value="${build.output.dir}/images" />
-    <property name="image_creation.drive" value="${build.drive}" />
-    <!-- Property for variant-image-creation -->
-    <property name="variant.image.targetpath" value="${build.output.dir}/variant_images" />
-
-    <!-- That macro runs iMaker using product the configuration generated by Helium. -->
-    <macrodef name="rombuildImakerMacro" uri="http://www.nokia.com/helium">
-        <attribute name="product" />
-        <attribute name="target" />
-        <sequential>
-            <var name="rom.product.path" unset="true" />
-            <if>
-                <istrue value="${rombuild.using.var}" />
-                <then>
-                    <script language="jython" setbeans="false">
-                        <![CDATA[
-import imaker
-import os
-if project.getProperty('build.drive') == None :
-    raise Exception("'build.drive' property is not defined")
-os.chdir(project.getProperty('build.drive') + os.sep)
-project.setProperty('rom.product.path', imaker.get_product_dir(r'@{product}'))
-                        ]]>
-                    </script>
-                </then>
-                <else>
-                    <exec executable="python" outputproperty="rom.product.path" dir="${build.drive}/" failonerror="${failonerror}">
-                        <arg line="${helium.dir}/tools/localisation/get_product_path.py @{product}" />
-                    </exec>
-                    <exec executable="python" outputproperty="rom.product.platform" dir="${build.drive}/" failonerror="${failonerror}">
-                        <arg line="${helium.dir}/tools/localisation/get_product_platform.py @{product}" />
-                    </exec>
-                </else>
-            </if>
-            <if>
-                <and>
-                    <equals arg1="${build.system}" arg2="ec-helium" />
-                    <isset property="rom.dryrun" />
-                </and>
-                <then>
-                    <echo message="target to run @{target}-dryrun" />
-                    <exec executable="${imaker.command}" dir="${build.drive}/" output="${build.drive}/dryrun_out.txt" append="true" failonerror="${failonerror}">
-                        <arg line="-p@{product} -f /epoc32/rom/${rom.product.path}/${rombuild.makefile.name}" />
-                        <arg value="@{target}-dryrun" />
-                    </exec>
-                </then>
-                <else>
-                    <if>
-                        <istrue value="${rombuild.using.var}" />
-                        <then>
-                            <exec executable="${imaker.command}" dir="${build.drive}/" failonerror="${failonerror}">
-                                <arg line="-p@{product} -f /epoc32/rom/${rom.product.path}/${rombuild.makefile.name}" />
-                                <arg value="@{target}" />
-                            </exec>
-                        </then>
-                        <else>
-                            <exec executable="${imaker.command}" dir="${build.drive}/" failonerror="${failonerror}">
-                                <arg line="-p@{product} -c${rom.product.platform} -f /epoc32/rom/${rom.product.path}/${rombuild.makefile.name}" />
-                                <arg value="@{target}" />
-                            </exec>
-                        </else>
-                    </if>
-                </else>
-            </if>
-        </sequential>
-    </macrodef>
 
 
-    <!-- Create engineering english image using ImageCreation.pl. -->
-    <target name="image-creation" if="image_creation.copyto">
-        <tstamp>
-            <format property="image.archive.date" pattern="ddmmyy'_'HHmmss" />
-        </tstamp>
-
-        <move todir="${build.drive}/archives/images/${image.archive.date}" failonerror="false">
-            <fileset dir="${build.output.dir}/images/" />
-        </move>
-        <mkdir dir="${build.output.dir}/images" />
-        <exec executable="perl" dir="${build.drive}/" failonerror="true">
-            <arg value="${helium.dir}/tools/compile/ImageCreation.pl" />
-            <arg value="-copyto" />
-            <arg value="${image_creation.copyto}" />
-            <arg value="-MyTraces" />
-            <arg value="${image_creation.MyTraces}" />
-            <arg value="-Drive" />
-            <arg value="${image_creation.drive}" />
-            <arg value="-product" />
-            <arg value="${image_creation.product}" />
-            <arg value="-type" />
-            <arg value="${image_creation.type}" />
-        </exec>
+    <!--
+        Creates subcon certified rom images.
+        The build will be based on the hlm:imakerconfigurationset referenced
+        as 'imaker.subcon.rom.config'.
+     -->
+    <target name="subcon-roms">
+        <if>
+            <isreference refid="imaker.subcon.rom.config" />
+            <then>
+                <antcall target="build-roms">
+                    <param name="imaker.rom.name" value="_subcon_roms" />
+                    <reference refid="imaker.subcon.rom.config" torefid="imaker.rom.config"/>
+                </antcall>
+            </then>
+            <else>
+                <echo>Configuration 'imaker.subcon.rom.config' not defined. Skipping subcon-roms build.</echo>
+            </else>
+        </if>
     </target>
 
-    <!-- Create variant image using Creator.pl tools.
-    -->
-    <target name="variant-image-creation" if="variant.image.hw">
-        <tstamp>
-            <format property="image.archive.date" pattern="ddmmyy'_'HHmmss" />
-        </tstamp>
-
-        <move todir="${build.drive}/archives/variant_images/${image.archive.date}" failonerror="false">
-            <fileset dir="${build.output.dir}/variant_images/" />
-        </move>
-        <mkdir dir="${build.output.dir}/variant_images" />
-        <exec executable="perl" dir="${build.drive}/" failonerror="true">
-            <arg value="${build.drive}/Creator.pl" />
-            <arg value="-hw" />
-            <arg value="${variant.image.hw}" />
-            <arg value="-lang" />
-            <arg value="${variant.image.lang}" />
-            <arg value="-core" />
-            <arg value="${variant.image.core}" />
-            <arg value="-variant" />
-            <arg value="${variant.image.variantcode}" />
-            <arg value="-type" />
-            <arg value="${variant.image.type}" />
-            <arg value="-sw" />
-            <arg value="${variant.image.sw}" />
-            <arg value="-targetpath" />
-            <arg value="${variant.image.targetpath}" />
-        </exec>
-    </target>
-
-    <!-- This targets call the image-creation target to be reexecuted in a build.
-        <deprecated>Should be done diferrently, e.g use imaker in new </deprecated>
-    -->
-    <target name="rerun-image-creation">
-        <runtarget target="image-creation" />
-    </target>
-
-    <!-- This targets call the variant-image-creation target to be reexecuted in a build.
-        <deprecated>Should be done diferrently, e.g use imaker in new </deprecated>
-    -->
-    <target name="rerun-variant-image-creation">
-        <runtarget target="variant-image-creation" />
-    </target>
-
-    <!-- Preparing rom image configuration expanding properties, flattening the xinclude stucture
-             and finally expanding properties again. 
-    -->
-    <target name="rombuild-prepare-input" depends="init-build-area">
-        <property name="rombuild.config.file.parsed" location="${build.output.dir}/rom_config.xml.parsed" />
-        <copy file="${rombuild.config.file}" tofile="${rombuild.config.file.parsed}.x1" overwrite="true">
-            <filterchain>
-                <expandproperties />
-                <tokenfilter>
-                    <replacestring from="http://www.w3.org/2003/XInclude" to="http://www.w3.org/2001/XInclude" />
-                </tokenfilter>
-            </filterchain>
-        </copy>
-        <!--<xcluder in="${rombuild.config.file.parsed}.x1" out="${rombuild.config.file.parsed}.xinclude" />-->
-        <xinclude file="${rombuild.config.file.parsed}.x1" tofile="${rombuild.config.file.parsed}.xinclude" />
-        <xmltask source="${rombuild.config.file.parsed}.xinclude" dest="${rombuild.config.file.parsed}.x2">
-            <attr path="//*" attr="xml:base" remove="true" />
-        </xmltask>
-        <copy file="${rombuild.config.file.parsed}.x2" tofile="${rombuild.config.file.parsed}" overwrite="true">
-            <filterchain>
-                <expandproperties />
-            </filterchain>
+    <!-- Internal target to export iMaker Helium additions. @scope private-->
+    <target name="rombuild-export-features">
+        <copy todir="${build.drive}/epoc32/rom/config" overwrite="true">
+            <fileset dir="${helium.dir}/tools/rombuild/features" casesensitive="false">
+                <include name="*.mk" />
+            </fileset>
         </copy>
     </target>
 
 
-    <!-- Creates ee-images
+    <!--
+        Creates trace rom images.
+        The build will be based on the hlm:imakerconfigurationset referenced
+        as 'imaker.trace.rom.config'.
      -->
-    <target name="ee-roms" depends="rombuild-create-makefile" unless="no.ncp">
-        <hlm:startSpecificLogMacro name="${ee_roms.log.file}" phase="roms"/>
-        <hlm:preECImakerMacro />
-        <for list="${product.list}" delimiter="," param="product.name">
-            <sequential>
-                <hlm:rombuildImakerMacro product="@{product.name}" target="${ee.makefile.target}" />
-            </sequential>
-        </for>
-        <hlm:ecImakerMacro makefile.target="${ee.makefile.target}" />
-        <hlm:stopSpecificLogMacro name="${ee_roms.log.file}" phase="roms"/>
-        <hlm:metadatarecord database="${metadata.dbfile}">
-            <hlm:textmetadatainput>
-                <fileset casesensitive="false" file="${ee_roms.log.file}" />
-                <metadatafilterset refid="filterset.ee.roms" />
-            </hlm:textmetadatainput>
-        </hlm:metadatarecord>
-        <hlm:generateBuildStatus file="${build.id}_ee_roms.log" />
-        <!-- Todo: metadata: assertions for metadata parsing here -->
-        <hlm:publishMacro />
+    <target name="trace-roms">
+        <if>
+            <isreference refid="imaker.trace.rom.config" />
+            <then>
+                <antcall target="build-roms">
+                    <param name="imaker.rom.name" value="_trace_roms" />
+                    <reference refid="imaker.trace.rom.config" torefid="imaker.rom.config"/>
+                </antcall>
+            </then>
+            <else>
+                <echo>Configuration 'imaker.trace.rom.config' not defined. Skipping trace-roms build.</echo>
+            </else>
+        </if>
     </target>
 
 
-    <!-- Creates subcon certified rom images with imaker tool -->
-    <target name="subcon-roms" depends="rombuild-create-makefile" unless="no.ncp">
-        <hlm:startSpecificLogMacro name="${subcon.log.file}" phase="roms"/>
-        <mkdir dir="${subcon.build.drive}/output/development_flash_images/engineering_english/${product.name}/subcon" />
-        <hlm:preECImakerMacro />
-        <for list="${product.list}" delimiter="," param="product.name">
-            <sequential>
-                <hlm:rombuildImakerMacro product="@{product.name}" target="${subcon.makefile.target}" />
-            </sequential>
-        </for>
-        <hlm:ecImakerMacro makefile.target="${ee.makefile.target}" />
-        <hlm:stopSpecificLogMacro name="${subcon.log.file}" phase="roms"/>
-        <hlm:metadatarecord database="${metadata.dbfile}">
-            <hlm:textmetadatainput>
-                <fileset casesensitive="false" file= "${subcon.log.file}"/>
-                <metadatafilterset refid="filterset.subcon.roms" />
-            </hlm:textmetadatainput>
-        </hlm:metadatarecord>
-        <hlm:generateBuildStatus file="${build.id}_subcon_roms.log" />
-        <!-- Todo: metadata: insert assertions for metadata parsing here -->
-        <hlm:publishMacro />
-    </target>
-
-    <!-- Private: Internal target to export iMaker Helium additions. -->
-    <target name="rombuild-export-features">
-        <copy todir="${build.drive}/epoc32/rom/config" overwrite="true">
-            <fileset dir="${helium.dir}/tools/rombuild/features" casesensitive="false">
-                <include name="*.mk" />
-                <include name="unittest/*.mk" />
-            </fileset>
-        </copy>
-    </target>
-
-    <!-- iMaker related targets -->
-    <target name="rombuild-create-makefile" depends="rombuild-export-features,rombuild-prepare-input">
-        <!-- Just generate the makefile for all the product available in product list. -->
-        <hlm:python>
-import os
-
-import configuration
-import rom
-
-os.chdir(r'${build.drive}/')
-configBuilder = configuration.NestedConfigurationBuilder(open(r'${rombuild.config.file.parsed}', 'r'))
-configSet = configBuilder.getConfiguration()
-for product in r'${product.list}'.split(','):
-    builder = rom.IMakerRomBuilder(configSet, product, (r'${rombuild.using.var}'.lower() == "true"))
-    builder.build()
-        </hlm:python>
-    </target>
-
-
-
-
-    <!-- Creates trace rom images -->
-    <target name="trace-roms" depends="rombuild-create-makefile" unless="no.ncp">
-        <hlm:startSpecificLogMacro name="${trace.log.file}" phase="roms"/>
-        <hlm:preECImakerMacro />
-        <for list="${product.list}" delimiter="," param="product.name">
-            <sequential>
-                <hlm:rombuildImakerMacro product="@{product.name}" target="${trace.makefile.target}" />
-            </sequential>
-        </for>
-        <hlm:ecImakerMacro makefile.target="${ee.makefile.target}" />
-        <hlm:stopSpecificLogMacro name="${trace.log.file}" phase="roms"/>
-        <!-- Todo: Make sure that logfilter is added to the filterset -->
-        <hlm:metadatarecord database="${metadata.dbfile}">
-            <hlm:textmetadatainput>
-                <fileset casesensitive="false" file="${trace.log.file}" />
-                <metadatafilterset refid="filterset.trace.rom" />
-            </hlm:textmetadatainput>
-        </hlm:metadatarecord>
-        <hlm:generateBuildStatus file="${build.id}_trace_roms.log" />
-        <!-- Todo: metadata: insert assertions for metadata parsing here -->
-        <hlm:publishMacro />
-    </target>
-
-    <!-- Single product configuration support
-        <deprecated>Please consider using new iMaker integration.</deprecated>
-    -->
-    <target name="ee-roms-product" depends="rombuild-create-makefile" unless="no.ncp">
-        <sequential>
-            <hlm:preECImakerMacro />
-            <hlm:rombuildImakerMacro product="${product.name}" target="${ee.makefile.target}" />
-            <hlm:ecImakerMacro makefile.target="${ee.makefile.target}" />
-        </sequential>
-    </target>
-
-    <!-- Used for parallel rom image creation using dry run approach -->
-    <macrodef name="preECImakerMacro" uri="http://www.nokia.com/helium">
-        <sequential>
-            <delete file="${build.drive}/dryrun_out.txt" failonerror="false" />
-        </sequential>
-    </macrodef>
-
-    <!-- Target to run imaker in parallel rom image creation for S60 3.2 based products -->
-    <macrodef name="ecImakerMacro" uri="http://www.nokia.com/helium">
-        <attribute name="makefile.target" />
-        <sequential>
-            <if>
-                <and>
-                    <equals arg1="${build.system}" arg2="ec-helium" />
-                    <isset property="rom.dryrun" />
-                </and>
-                <then>
-                    <antcall target="compile-ec-helium">
-                        <param name="skip.compile-ec-patch" value="yes" />
-                        <param name="sysdef.configuration" value="@{makefile.target}" />
-                        <param name="ec.makefile.file" location="${build.drive}/@{makefile.target}.make" />
-                    </antcall>
-                </then>
-            </if>
-        </sequential>
-    </macrodef>
-
-    <!--Private: Internal iMaker macro. -->
+    <!-- Internal iMaker macro. @scope private -->
     <macrodef name="internalImakerMacro" uri="http://www.nokia.com/helium">
         <attribute name="product" />
         <attribute name="target" />
@@ -366,7 +126,7 @@
                     <var name="var.makefile" value="-f ${rom.product.path}/@{makefile}" />
                 </else>
             </if>
-            <exec executable="${imaker.command}" dir="${build.drive}" failonerror="${failonerror}">
+            <exec executable="${imaker.command}" dir="${build.drive}/" failonerror="${failonerror}">
                 <arg line="-p@{product} @{cmd}" />
                 <arg line="${var.makefile}" />
                 <arg line="@{cmd}" />
@@ -375,112 +135,4 @@
         </sequential>
     </macrodef>
 
-    <!-- Timestamp used in flash config file generation -->
-    <tstamp>
-        <format property="fota.release.date" pattern="dd-MM-yy" />
-    </tstamp>
-
-    <!-- Create flash configration files -->
-    <target name="flash-config-file" if="flash.config.enabled">
-        <runtarget target="rombuild-prepare-input" />
-        <runtarget target="rombuild-create-makefile" />
-
-        <property name="flash.config.makefile.target" value="flash_config" />
-        <property name="flash.config.makefile.name" value="mc_flash_config.mk" />
-        <hlm:python>
-import configuration
-import flash_config
-import os
-os.chdir(r'${build.drive}/')
-configBuilder = configuration.NestedConfigurationBuilder(open(r'${rombuild.config.file.parsed}', 'r'))
-configSet = configBuilder.getConfiguration()
-for product in r'${product.list}'.split(','):
-    writer = flash_config.FlashConfigurationWriter(configSet, product)
-    writer.write()
-    </hlm:python>
-        <for list="${product.list}" delimiter="," param="product.name">
-            <sequential>
-                <hlm:internalImakerMacro product="@{product.name}" target="${flash.config.makefile.target}" makefile="${flash.config.makefile.name}" />
-            </sequential>
-        </for>
-    </target>
-
-    <!-- The target ido-iby-copy copies the iby files from ido.src.root to ido.romtree
-        Two properties that define from where the files are copied from and whre to. Defauls are 
-        for "ido.src.tree" default value is "${build.drive}${ido.src.root}"  
-        for "ido.romtree" default value is "${build.drive}${env.EPOCROOT}/epoc32/rom/include"  .
-         The IDO should define the ido.src.root and ido.romtree to override the defauls  
-         <deprecated>IDO must now move to the new sysdef structure and use ido-copy-iby.</deprecated>
-    -->
-    <target name="ido-iby-copy">
-        <property name="ido.src.tree" value="${build.drive}${ido.src.root}" />
-        <property name="ido.romtree" value="${build.drive}${env.EPOCROOT}/epoc32/rom/include" />
-        <echo>New files</echo>
-        <!-- the files are in rom folder -->
-        <copy todir="${ido.romtree}" verbose="true" flatten="true">
-            <fileset dir="${ido.src.tree}">
-                <exclude name="**/internal/**" />
-                <exclude name="**/tsrc/**" />
-                <include name="**/rom/*.iby" />
-            </fileset>
-        </copy>
-        <echo>Old files</echo>
-
-        <copy todir="${ido.romtree}" verbose="true" flatten="true" overwrite="true">
-            <fileset dir="${ido.src.tree}">
-                <exclude name="**/internal/**" />
-                <exclude name="**/tsrc/**" />
-                <include name="**/rom/*.iby" />
-            </fileset>
-        </copy>
-    </target>
-
-
-    <!-- Two properties that define from where the files are copied and what platform is used.
-         The IDO should define the ido.src.root and ido.cenrep.platform 
-         The properties ido.cenrep.root and ido.cenrep.target mey be overriden by the user.
-         <deprecated>IDO must now move to the new sysdef structure and use ido-create-cenrep.</deprecated>
-     -->
-    <target name="ido-cenrep" if="ido.cenrep.platform">
-        <property name="ido.src.tree" value="${build.drive}${ido.src.root}" />
-        <property name="ido.cenrep.root" value="${build.drive}${env.EPOCROOT}/epoc32/tools/cenrep" />
-        <property name="ido.cenrep.target" value="${build.drive}${env.EPOCROOT}/epoc32/data/z/private/10202be9" />
-        <echo>Generating cenrep files</echo>
-
-        <copy todir="${ido.cenrep.root}" verbose="true" flatten="true">
-            <fileset dir="${ido.src.tree}">
-                <include name="**/cenrep/keys_*.xls" />
-            </fileset>
-        </copy>
-
-        <!-- in cenrep dir execut 'generate_cenrep_inifile.pl -r %s -d .' % platform -->
-        <exec executable="perl" dir="${ido.cenrep.root}" failonerror="true">
-            <arg value="${ido.cenrep.root}/generate_cenrep_inifile.pl" />
-            <arg value="-r" />
-            <arg value="${ido.cenrep.platform}" />
-            <arg value="-d" />
-            <arg value="." />
-        </exec>
-        <!-- Copy generated files to target path -->
-        <copy todir="${ido.cenrep.target}" verbose="true" flatten="true">
-            <fileset dir="${ido.cenrep.root}">
-                <include name="????????.txt" />
-            </fileset>
-        </copy>
-
-    </target>
-
-    <!--
-        Implement a solution to create build information for imaker.
-    -->
-    <target name="rombuild-imaker-create-buildinfo">
-        <property name="rombuild.buildinfo.template" location="${helium.dir}/tools/common/templates/imaker/image_conf_buildinfo.mk.ftl" />
-        <property name="rombuild.buildinfo.output" location="${build.drive}${env.EPOCROOT}epoc32/rom/config/image_conf_buildinfo.mk" />
-        <fmpp sourceFile="${rombuild.buildinfo.template}" outputFile="${rombuild.buildinfo.output}">
-            <data expandProperties="yes">
-                ant: antProperties()
-            </data>
-        </fmpp>
-    </target>
-
 </project>
--- a/buildframework/helium/tools/rombuild/trace_images/mytraces_general.txt	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,197 +0,0 @@
-commondsy.dll
-dataport.csy
-genericnif.nif
-nokiadsy.dll
-customapiext.dll
-dnd.exe
-nifman.dll
-umtsapi.dll
-tcpip6.prt
-ssl.dll
-securesocket.dll
-tlsprovider.dll
-swtlstokentypeplugin.dll
-esock.dll
-c32.dll
-c32start.exe
-csd.agt
-netcon.dll
-inhook6.dll
-insock.dll
-ipsec6.prt
-ipsecpolparser.dll
-ipsecpolapi.dll
-ipsecpol.exe
-lib_pfkey.dll
-ipseccrypto.prt
-agentdialog.dll
-ppp.nif
-guqos.prt
-qos.prt
-qoslib.dll
-pfqoslib.dll
-mce.exe
-mcelogeng.dll
-mcesettings.dll
-imumutils.dll
-imum.dll
-mailinit.exe
-msgnotifiers.dll
-muiu.dll
-msgeditorappui.dll
-msgeditormodel.dll
-msgeditorview.dll
-msgerrorwatcher.dll
-msgmaileditor.exe
-msgmailviewer.exe
-msgmailutils.dll
-mailplainview.dll
-imcm.dll
-imut.dll
-pops.dll
-smts.dll
-autosend.exe
-imps.dll
-impseng.dll
-impsutils.dll
-impsdatautils.dll
-impsclient.dll
-impsexe.exe
-impsconnectionmanager.dll
-impsdatachannel.dll
-impsipcirwatcher.dll
-impspushhandler.dll
-impsmessage.dll
-imlauncher.exe
-imclient.dll
-wvservicesettingsui.dll
-pengaoplugin.dll
-impsconnectionui.dll
-mmsconninit.dll
-mmscli.dll
-mmssrv.dll
-mmstransport.dll
-mmscodec.dll
-mmsmessage.dll
-mmsserversettings.dll
-mmscodecclient.dll
-mmsappadapter.dll
-mmswatcher.dll
-mmspushhandler.dll
-mmsgenutils.dll
-http.dll
-tfcorefilters.dll
-httptransporthandler.dll
-httpsecuresocket.dll
-httpmessage.dll
-httpclientcodec.dll
-httpclient.dll
-watcher.exe
-wappushutils.dll
-pushapphandler.dll
-pushsecurity.dll
-pushwatcher.dll
-pushmsgentry.dll
-smcm.dll
-smss.dll
-gsmu.dll
-smsu.dll
-smsprot.prt
-wapprot.prt
-msgs.dll
-msexe.exe
-smseditor.exe
-smsstrict.dll
-smsviewer.exe
-smte.dll
-smum.dll
-wimclient.dll
-swimreader.dll
-scard.dll
-wimserver.exe
-wimutil.dll
-wimplugin.dll
-pengserver2.exe
-pengstorserv.exe
-pengclient2.dll
-pengplgclient2.dll
-pengstorman2.dll
-pengcoreutilslib2.dll
-pengtraadap2.dll
-pengparser2.dll
-pengattrlib2.dll
-penglistlib2.dll
-pengmanager2.dll
-pengopenpresence.dll
-usbcc.dll
-eusbc.ldd
-usbext.dll
-usbclasschangeui.exe
-usbman.dll
-usbsvr.exe
-usbclasscontroller.dll
-usbuinotif.dll
-usbwatcher.exe
-acmclasscontroller.dll
-whcmclasscontroller.dll
-msclasscontroller.dll
-obexclasscontroller.dll
-fmutils.dll
-fmbt.fmp
-fmgsmgprs.fmp
-fmirda.fmp
-fmusb.fmp
-faxmodemclient.dll
-faxmodem.exe
-sconcsc.dll
-sconftp.dll
-sconftpplugin.dll
-sconconmlhandler.dll
-sconpcconnserver.exe
-sconpcconnclient.dll
-sconpcconnplugin.dll
-sconpcd.dll
-srcs.exe
-srcsclient.dll
-srcsbt.dll
-srcsirda.dll
-srcsusb.dll
-srcsutil.dll
-hci.dll
-btpm.dll
-bluetooth.dll
-bluetoothav.dll
-bt.prt
-btcomm.csy
-btdevice.dll
-btmanclient.dll
-btmanserver.exe
-btextnotifiers.dll
-sdpserver.exe
-sdpdatabase.dll
-sdpagent.dll
-gavdp.dll
-remconbeareravrcp.dll
-remconavrcpstatusconverter.dll
-avc.dll
-avctpplugins.dll
-avctpservices.dll
-btaac.dll
-btathandler.dll
-btatpipe.dll
-bteng.dll
-btnotif.dll
-btnotifwrapper.dll
-btnotifappserver.exe
-btsap.dll
-btsapexe.exe
-btsendingservice.dll
-btsrvclient.dll
-btserver.exe
-btserviceutils.dll
-btui.exe
-starter.exe
-starterclient.dll
-syslangutil.dll
-startup.exe
-genericnif.nif
\ No newline at end of file
--- a/buildframework/helium/tools/rombuild/trace_images/mytraces_phone.txt	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-SIM.TSY
-NOKIATSY.DLL
-SIMATKTSY.DLL
-SIMTSY.CPM
-COMMONTSY.DLL
-PHONETSY.TSY
-Phone.exe
-PhoneAppEngine.dll
-PhoneEngine.dll
-PhoneServer.exe
-SATSERVER.EXE
-SATCLIENT.DLL
-SATUI.exe
-SmsU.dll
-SmsProt.prt
-GsmU.dll
-WapProt.prt
-smcm.dll
-smss.dll
-smum.dll
-MSGS.dll
-MSexe.exe
-SatEngine.dll
-starter.exe
-starterclient.dll
-syslangutil.dll
-startup.exe
-cuicalllog.exe
-cuiphoneengine.dll
-cuiphone.exe
--- a/buildframework/helium/tools/rombuild/trace_images/trace_image_creator.pl	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,533 +0,0 @@
-#============================================================================ 
-#Name        : trace_image_creator.pl 
-#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: 
-#============================================================================
-
-#######################
-# Creates trace images 
-#######################
-
-#use strict;
-use Getopt::Long;
-use File::Copy;
-
-my ($phone,$k,$sos,$production,$backup,$dir_value,$create_core,$myvariant,$merge,$tracetype,$variant,$command,$name102,$product,$platform,$hid);
-my (@cores,$image_path,$backup_core_zip,$drive);
-
-my ($test,$cmd,$RetVal,$ORIGINAL_FILENAME);
-my ($script_path);
-
-# If $test=0, files are not backed up in ReplaceStringInFile(). If $test=1, files are backed up in ReplaceStringInFile().
-$test=1;
-# Setting default value for tracetype (All)
-$tracetype = "all";
-
-#location of this script and other related files
-$script_path = $ENV['HELIUM_HOME']."/tools/rombuild/trace_images";
-
-################## BEGIN ##################
-
-GetOptions(
-    "tracetype=s", => \$tracetype,
-    "norestore" => \$norestore,
-    "restore" => \$restore,
-    "platform=s" => \$platform,
-    "product=s" => \$product,
-    "variant=s" => \$variant,
-    "drive=s" => \$drive
-    );
-	
-## Option info
-print"\n=== Variant(s)           : ",uc($variant);
-print"\n=== Tracetype            : ",uc($tracetype);
-
-if ($norestore)
-{
-	print "\n\n=== Environment will not be restored after image creation\n";
-}
-
-if ($restore)
-{
-    restore_environment();
-}
-	
-check();
-
-create_images();
-
-
-
-
-############### SUBROUTINES ###############
-
-sub show_error
-{
-    print"\n\n\n   ***********  T R A C E  I M A G E  C R E A T O R  H E L P **********\n";
-
-	print"    \n		Creates trace images\n";
-
-    print"    \n   ***********  O P T I O N S   D E S C R I P T I O N *****************\n";
-    print  "  \n[-p]   Mandatory Parameter   Specifies Product. PRODUCT";
-    print    "\n[-platform]                  Specifies Platform. PLATFORM";
-    print    "\n[-v]   Mandatory Parameter   Specifies variant. flashuirnd";
-    print    "\n[-t]   Mandatory Parameter   Specifies which trace images are created";
-    print    "\n                             all     = create all trace images ";
-    print    "\n                             general = create general trace image";
-    print    "\n                             phone   = create phone trace image";
-    print    "\n[-d]   Mandatory Parameter   Specifies output drive";
-    print  "\n\n(-n)   Optional Parameter    Does not restore the environment after";
-    print    "\n                             trace image creation";
-    print  "  \n(-r)   Optional Parameter    Does an environment restore only";
-
-    print"\n\n\n   ******************************* U S A G E ********************************\n";
-    print    "\n  Trace_image_creator.pl -product PRODUCT -tracetype all -drive q: -variant flashuirnd";
-    print    "\n  Trace_image_creator.pl -p PRODUCT -t all -d q: -v flashuirnd \n";
-    exit();
-}
-
-
-sub check
-{
-    if (! defined $variant)
-    {
-        print STDERR "\n\n **** Variant is not defined! ****\n\n";
-        show_error(); 
-    } 
-}
-
-
-sub create_images
-{
-    print "\n\n--- Backing up myTraces.txt";
-    system ("copy /y \\epoc32\\rombuild\\myTraces.txt $script_path\\myTraces.txt.orig");
-    
-    print "create images...\n";
-    
-    $command = "";
-    
-    #set traces
-    if (($tracetype eq "all") or ($tracetype eq "general"))
-    {
-        system ("title Creating general trace image");
-        system ("copy /y $script_path\\myTraces_general.txt \\epoc32\\rombuild\\myTraces.txt");        
-        
-        #create images
-        $command = "imaker -c$platform -p$product -k -f /epoc32/rom/config/$platform/$product/mc_imaker.mk $variant USE_UDEB=1 WORKDIR=$drive\\output\\development_flash_images\\traces\\general";
-        print "\n $command \n";
-        system ($command);
-    }
-
-    if (($tracetype eq "all") or ($tracetype eq "phone"))
-    {    
-        system ("title Preparing environment for phone traces");
-        PrepareBuildEnv();
-        BuildFiles();        
-
-        system ("title Creating phone trace image");
-		system ("copy /y $script_path\\myTraces_phone.txt \\epoc32\\rombuild\\myTraces.txt");        
-		
-		#create images
-		$command = "imaker -c$platform -p$product -k -f /epoc32/rom/config/$platform/$product/mc_imaker.mk USE_UDEB=1 WORKDIR=$drive\\output\\development_flash_images\\traces\\phone $variant";
-        system ($command);
-    }
-    
-    if ($restore)
-    {
-        restore_environment();
-    }
-}
-
-sub restore_environment
-{
-	if (-e "\\phone_trace_backup.zip")
-	{
-		print"\n\n=== Restoring environment after phone traces";
-		chdir "\\";
-		system ('unzip -q -o \phone_trace_backup.zip');
-		system ('del /q \phone_trace_backup.zip');
-	}
-	elsif (-e "$script_path\\myTraces.txt.orig")
-	{
-		print"\n\n=== Restoring myTraces.txt";
-		system ("move /y $script_path\\myTraces.txt.orig \\epoc32\\rombuild\\myTraces.txt");
-	}
-	else
-	{
-		print STDERR "\n\n=== Can not restore, nothing to restore!\n\n";
-		show_error();
-	}
-	exit();
-}
-
-sub PrepareBuildEnv
-{
-    # S60 Phone Engine Traces
-    # =======================
-    #
-    #define __PHENG_DEBUG_INFO__
-    #define __PHENG_DEBUG_ENABLE_ALL_AREAS__
-    #define __PHENG_PRINT_DEBUG_INFO__    
-    #
-    
-    $test=1;
-    $ORIGINAL_FILENAME='\s60\app\telephony\s60cstelephonyengines\Phoneengine\Inc\EngineBase\KPhEngConfigure.h';
-    $OLD='//#define __PHENG_DEBUG_INFO__';
-    $NEW='#define __PHENG_DEBUG_INFO__';
-    ReplaceStringInFile();
-    
-    $test=0;
-    $OLD='//#define __PHENG_DEBUG_ENABLE_ALL_AREAS__';
-    $NEW='#define __PHENG_DEBUG_ENABLE_ALL_AREAS__';
-    ReplaceStringInFile();
-
-    $OLD='//#define __PHENG_PRINT_DEBUG_INFO__';
-    $NEW='#define __PHENG_PRINT_DEBUG_INFO__';
-    ReplaceStringInFile();
-    
-    $test=1;    
-    
-    # Phone App Engine Traces
-    # =======================
-    #
-    #define _PHAPE_DEBUG_INFO_
-    #
-    
-    $ORIGINAL_FILENAME='\s60\app\telephony\cstelephonyuis\PhoneAppEngine\inc\Common\KPhApEConfigure.h';
-    $OLD='//#define _PHAPE_DEBUG_INFO_';
-    $NEW='#define _PHAPE_DEBUG_INFO_';
-    ReplaceStringInFile();
-    
-    # Changing TSY logging from FLogger to RDEBUG
-    # ===========================================
-    #
-    #define TF_LOGGING_METHOD  2
-    #
-    
-    #Change logging for UDEB build
-    $ORIGINAL_FILENAME='\s60\osext\telephonyservices\telsrv_dom\common_tsy_service_api\inc\tflogger.h';
-    $OLD='#define TF_LOGGING_METHOD  1';
-    $NEW='#define TF_LOGGING_METHOD  2';
-    ReplaceStringInFile();
-    
-    #Change logging for UREL build
-    $test=0;
-    $OLD='#define TF_LOGGING_METHOD  0';
-    $NEW='#define TF_LOGGING_METHOD  2';
-    ReplaceStringInFile();
-    
-    $test=1;
-
-    # Changing SAT logging from FLogger to RDEBUG
-    # ===========================================
-    #
-    #define LOGGING_ENABLED
-    #
-
-    $ORIGINAL_FILENAME='\s60\app\telephony\satui\satapp\SATShellControllerInc\tflogger.h';
-    $OLD='//#define LOGGING_ENABLED';
-    $NEW='#define LOGGING_ENABLED';
-    ReplaceStringInFile();    
-    
-    $ORIGINAL_FILENAME='\s60\app\telephony\satui\satapp\SATUIInc\tflogger.h';
-    $OLD='//#define LOGGING_ENABLED';
-    $NEW='#define LOGGING_ENABLED';
-    ReplaceStringInFile();        
-
-    $ORIGINAL_FILENAME='\s60\app\telephony\satui\satplugin\aisatplugininc\tflogger.h';
-    $OLD='//#define LOGGING_ENABLED';
-    $NEW='#define LOGGING_ENABLED';
-    ReplaceStringInFile();        
-    
-    # Enabling debugging in SATServer
-    # ===============================
-    #
-    #define ENABLE_SAT_LOGGING
-    #MACRO ENABLE_SAT_LOGGING
-    #
-
-    $ORIGINAL_FILENAME='\s60\app\telephony\satengine\SatServer\inc\SatMacroes.h';
-    $OLD='// #define ENABLE_SAT_LOGGING';
-    $NEW='#define ENABLE_SAT_LOGGING';
-    ReplaceStringInFile();            
-    
-    $test=0;
-    $OLD='// MACRO ENABLE_SAT_LOGGING';
-    $NEW='MACRO ENABLE_SAT_LOGGING';
-    ReplaceStringInFile();         
-    
-    $test=1;
-    
-    # CBS logs
-    # ========
-    #
-    #define CBS_LOGGING_METHOD  2
-    #
-
-    $ORIGINAL_FILENAME='\s60\app\telephony\cbsengine\CbsServer\ServerInc\CbsLogger.h';
-    $OLD='#define CBS_LOGGING_METHOD  0';    
-    $NEW='#define CBS_LOGGING_METHOD  2';
-    ReplaceStringInFile();       
-
-    $test=0;
-    $OLD='#define CBS_LOGGING_METHOD  1';    
-    $NEW='#define CBS_LOGGING_METHOD  2';
-    ReplaceStringInFile();              
-    
-    $test=1;
-}    
-
-sub ReplaceStringInFile
-{
-    if ( $test ) 
-    {
-        system("zip \\phone_trace_backup.zip $ORIGINAL_FILENAME");
-    }
-  
-    open (SYMBOL_FILE, "<$ORIGINAL_FILENAME") || die $ORIGINAL_FILENAME," not found\n";
-    open (NF, ">>$ORIGINAL_FILENAME.new")|| die $ORIGINAL_FILENAME," not found\n";
-
-    while ($line = <SYMBOL_FILE>)
-    {
-        $line =~ s/$OLD/$NEW/;
-        print NF $line;
-    };
-  
-    close SYMBOL_FILE;
-    close NF;
-  
-    $cmd = "move $ORIGINAL_FILENAME $ORIGINAL_FILENAME.bak";
-    system($cmd);
-    $cmd = "move $ORIGINAL_FILENAME.new $ORIGINAL_FILENAME";
-    system($cmd);
-}
-
-sub AddLine
-{
-    open (SYMBOL_FILE, "<$ORIGINAL_FILENAME") || die $ORIGINAL_FILENAME," not found\n";
-    open (NF, ">>$ORIGINAL_FILENAME.new")|| die $ORIGINAL_FILENAME," not found\n";
-    
-    while ($line = <SYMBOL_FILE>)
-    {
-        #print $line;
-        #$line =~ s/$OLD/$NEW/;
-        print NF $line;
-    };
-    print NF "\n";
-    print NF $LINE_TO_ADD;
-    close SYMBOL_FILE;
-    close NF;
-    
-    $cmd = "move $ORIGINAL_FILENAME $ORIGINAL_FILENAME.bak";
-    system($cmd);
-    $cmd = "move $ORIGINAL_FILENAME.new $ORIGINAL_FILENAME";
-    system($cmd);
-}
-
-sub SearchStringInFile
-{
-    open (SYMBOL_FILE, "<$ORIGINAL_FILENAME") || die $ORIGINAL_FILENAME," not found\n";
-
-    while ($line = <SYMBOL_FILE>)
-    {
-        $SetVar = $line =~ /$LINE_TO_ADD/;
-        if ($SetVar eq 1)
-        {
-            return $SetVar;
-        }
-    };
-
-    close SYMBOL_FILE;
-    return 0;
-}
-
-sub BuildFiles
-{
-    #export tflogger.h
-    print "\n\n --- Exporting flogger.h --- \n";
-    chdir '\s60\osext\telephonyservices\telsrv_dom\common_tsy_service_api\group';
-    system('bldmake bldfiles');
-    system('abld export');
-    
-    #Building PhoneEngine
-    print "\n\n --- Backing up PhoneEngine...\n";
-    chdir '\s60\app\telephony\s60cstelephonyengines\Phoneengine\Group';
-    system('bldmake bldfiles');
-    system('abld build -w armv5 udeb | zip -@ -q \phone_trace_backup.zip');
-    print "\n --- Building PhoneEngine...\n";
-    system('abld reallyclean armv5 udeb');
-    system('bldmake bldfiles');
-    system('abld build armv5 udeb');
-
-    #Building PhoneAppEngine
-    print "\n\n --- Backing up PhoneAppEngine...\n";
-    chdir '\s60\app\telephony\cstelephonyuis\PhoneAppEngine\group';
-    system('bldmake bldfiles');
-    system('abld build -w armv5 udeb | zip -@ -q \phone_trace_backup.zip');
-    print "\n --- Building PhoneAppEngine...\n";
-    system('abld reallyclean armv5 udeb');
-    system('bldmake bldfiles');
-    system('abld build armv5 udeb');
-   
-    #Building PhoneServer
-    print "\n\n --- Backing up PhoneServer...\n";
-    chdir '\s60\app\telephony\phoneclientserverengine\Group';
-    system('bldmake bldfiles');
-    system('abld build -w armv5 udeb | zip -@ -q \phone_trace_backup.zip');
-    print "\n --- Building PhoneServer...\n";
-    system('abld reallyclean armv5 udeb');
-    system('bldmake bldfiles');
-    system('abld build armv5 udeb');
-
-    #Building Phone
-    print "\n\n --- Backing up Phone...\n";
-    chdir '\s60\app\telephony\cstelephonyuis\phone\Group';
-    system('bldmake bldfiles');
-    system('abld build -w armv5 udeb | zip -@ -q \phone_trace_backup.zip');
-    print "\n --- Building Phone...\n";
-    system('abld reallyclean armv5 udeb');
-    system('bldmake bldfiles');
-    system('abld build armv5 udeb');
-
-    #Building edge variant of phone	
-	print "\n\n --- Backing up Phone, Edge...\n";
-	chdir '\psw\s60_32_psw\bin_var\edge_var\group\phone';
-    system('bldmake bldfiles');
-    system('abld build -w armv5 udeb | zip -@ -q \phone_trace_backup.zip');
-    print "\n --- Building Phone...\n";
-    system('abld reallyclean armv5 udeb');
-    system('bldmake bldfiles');
-    system('abld build armv5 udeb');
-	
-    #Building CustomApiExt
-    print "\n\n --- Backing up CustomApiExt...\n";         
-    chdir '\ncp_sw\corecom\CASW_Adaptation\NokiaTSY\CustomAPIExt\group';
-    system('bldmake bldfiles');
-    system('abld build -w armv5 udeb | zip -@ -q \phone_trace_backup.zip');
-    print "\n --- Building CustomApiExt...\n";
-    system('abld reallyclean armv5 udeb');
-    system('bldmake bldfiles');
-    system('abld build armv5 udeb');
-	
-    #Building CommonTSY
-    #Building CustomAPI
-    #Building phonetsy
-    print "\n\n --- Backing up CommonTSY...\n";
-    chdir '\psw\s60_32_psw\bin_var\commontsy_var\group';
-    system('bldmake bldfiles');
-    system('abld build -w armv5 udeb | zip -@ -q \phone_trace_backup.zip');
-    print "\n --- Building CommonTSY...\n";
-    system('abld reallyclean armv5 udeb');
-    system('bldmake bldfiles');
-    system('abld build armv5 udeb');
-	
-    #Building NokiaTSY
-    print "\n\n --- Backing up NokiaTSY...\n";
-    chdir 'ncp_sw\corecom\CASW_Adaptation\NokiaTSY\NokiaTSY\group';
-    system('bldmake bldfiles');
-    system('abld build -w armv5 udeb | zip -@ -q \phone_trace_backup.zip');
-    print "\n --- Building NokiaTSY...\n";
-    system('abld reallyclean armv5 udeb');
-    system('bldmake bldfiles');
-    system('abld build armv5 udeb');
-
-    #Building SimAtkTSY
-    print "\n\n --- Backing up SIM_ATK_TSY...\n";
-    chdir '\ncp_sw\corecom\CASW_Adaptation\SIM_ATK_TSY\SimAtkTSY\group';
-    system('bldmake bldfiles');
-    system('abld build -w armv5 udeb | zip -@ -q \phone_trace_backup.zip');
-    print "\n --- Building SIM_ATK_TSY...\n";
-    system('abld reallyclean armv5 udeb');
-    system('bldmake bldfiles');
-    system('abld build armv5 udeb');
-    
-    #Building SatServer
-    print "\n\n --- Backing up SATServer...\n";
-    chdir '\s60\app\telephony\satengine\group';
-    system('bldmake bldfiles');
-    system('abld build -w armv5 udeb | zip -@ -q \phone_trace_backup.zip');
-    print "\n --- Building SATServer...\n";
-    system('abld reallyclean armv5 udeb');
-    system('bldmake bldfiles');
-    system('abld build armv5 udeb');
-
-    #Building SatUI
-    print "\n\n --- Backing up SatUI...\n";
-    chdir '\s60\app\telephony\satui\group';
-    system('bldmake bldfiles');
-    system('abld build -w armv5 udeb | zip -@ -q \phone_trace_backup.zip');
-    print "\n --- Building SatUI...\n";
-    system('abld reallyclean armv5 udeb');
-    system('bldmake bldfiles');
-    system('abld build armv5 udeb');    
-
-    #Building CBS server    
-    print "\n\n --- Backing up CBS server...\n";
-    chdir '\s60\app\telephony\cbsengine\CbsServer\Group';
-    system('bldmake bldfiles');
-    system('abld build -w armv5 udeb | zip -@ -q \phone_trace_backup.zip');
-    print "\n --- Building CBS server...\n";
-    system('abld reallyclean armv5 udeb');
-    system('bldmake bldfiles');
-    system('abld build armv5 udeb');        
-}
-
-sub replacestring 
-{
-    my ($targetfile, $fromstring, $tostring) = @_;
-    if ($targetfile ne "" && $fromstring ne "" && $tostring ne "") 
-    {
-        open(IN, "<$targetfile");
-        open(OUT, ">$targetfile\__TEMP");
-        @lines = <IN>;
-        foreach $line (@lines) 
-        {
-            $line =~ s/$fromstring/$tostring/g;
-            print OUT $line;
-        }
-        close IN; close OUT;
-        move("$targetfile\__TEMP", "$targetfile") or warn "Can't replace file contents!\n";
-        if (!-f "$targetfile\__TEMP") 
-        {
-            print "Replacement of ", $targetfile, " ok.\n";	
-        }
-    }
-}
-
-sub run_cmd 
-{
-    my $cmd = shift; my $output = "";
-    open CMD, "$cmd |";
-    while (<CMD>) 
-    {
-        $output .= $_;
-        print $_;
-    }
-    close CMD;
-    return $output;
-}
-
-sub RestoreBuildEnvironment
-{
-    print "\n\nRestoring the build environment.\n";
-    foreach $k (@files)
-    {
-        print "Restoring $k file...\n";
-        $FILENAME=$k;
-        $cmd = "move $FILENAME.orig $FILENAME";
-        system($cmd);
-    }
-}
\ No newline at end of file
--- a/buildframework/helium/tools/rombuild/trace_images/tracebuild.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : tracebuild.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="tracebuild">
-    <description>
-    Creates trace images for one product.
-    </description>
-    <!-- rudimentary trace image creation. Creates trace images for one product
-    tracebuild.tracetype specifies type of trace to create (phone, general, all)
-    tracebuild.product specifies product for which to create traces
-    tracebuild.variant specifies imaker target to use for trace creation
-    Current implementation is very Nokia specific, this will be replaced in the near future -->
-    <target name="build-traces">
-        <exec executable="perl" dir="${build.drive}/" failonerror="true">
-            <arg value="${helium.dir}/tools/rombuild/trace_images/trace_image_creator.pl"/>
-            <arg value="-t=${tracebuild.tracetype}"/>
-            <arg value="-platform=${tracebuild.platform}"/>            
-            <arg value="-product=${tracebuild.product}"/>            
-            <arg value="-v=${tracebuild.variant}"/>
-            <arg value="-d=${build.drive}"/>
-        </exec>
-    </target>
-
-</project>
\ No newline at end of file
--- a/buildframework/helium/tools/startup/antserver/antserver.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/startup/antserver/antserver.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -20,6 +20,7 @@
 
 ============================================================================
 -->
+<!--* @package framework -->
 <project name="startup.antserver" default="server">
     <description>Running a remote server to handle backup build requests.</description>
     
--- a/buildframework/helium/tools/startup/antserver/remote.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/startup/antserver/remote.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -20,6 +20,7 @@
 
 ============================================================================
 -->
+<!--* @package framework -->
 <project name="startup.remote">
     <description>Local actions to setup remote builds.</description>
     
--- a/buildframework/helium/tools/startup/bootstrap/bootstrap.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/startup/bootstrap/bootstrap.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -20,12 +20,19 @@
 
 ============================================================================
 -->
+<!--* @package framework -->
 <project name="startup.bootstrap" default="install-dependencies" xmlns:ivy="antlib:org.apache.ivy.ant">
     <description>
     Download libraries to bootstrap helium
     </description>
 
+    <!-- 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="subcon" />
+    <!-- The tools dependencies Ivy settings configuration file.
+    @type string
+    -->
     <property name="tools.ivy.config.file" location="${helium.dir}/config/ivy/tools_ivy_settings.xml" />
 
     <!-- Set proxy using Nokia settings by default -->
@@ -35,7 +42,15 @@
         <setproxy proxyhost="${proxy.host}" proxyport="${proxy.port}" />
     </target>
 
+    <!-- Name of ivy jar.
+    @type string
+    @scope private
+    -->
     <property name="ivy.filename" value="ivy-2.0.0-beta2.jar" />
+    <!-- Location of ivy jar.
+    @type string
+    @scope private
+    -->
     <property name="ivy.file" value="${helium.dir}/external/antlibs/${ivy.filename}" />
     <available file="${ivy.file}" property="ivy.file.present" />
 
@@ -86,20 +101,20 @@
         <ivy:cleancache />
     </target>
 
-    <!-- Private: unzip jars -->
+    <!-- unzip jars. @scope private-->
     <target name="unzip-jar">
         <unzip src="${artifact.file}" dest="${helium.dir}/external/antlibs" />
     </target>
-    <!-- Private: unzip eggs -->
+    <!-- unzip eggs. @scope private -->
     <target name="unzip-egg">
         <unzip src="${artifact.file}" dest="${helium.dir}/external/python/lib/2.5" />
     </target>
-    <!-- Private: ungzip eggs -->
+    <!-- ungzip eggs. @scope private -->
     <target name="gunzip-egg">
         <gunzip src="${artifact.file}" dest="${artifact.file}.tar" />
         <untar src="${artifact.file}.tar" dest="${helium.dir}/external/python/lib/2.5" />
     </target>
-    <!-- Private: unbzip egg -->
+    <!-- unbzip egg. @scope private -->
     <target name="bunzip-egg">
         <bunzip2 src="${artifact.file}" dest="${artifact.file}.tar" />
         <untar src="${artifact.file}.tar" dest="${helium.dir}/external/python/lib/2.5" />
--- a/buildframework/helium/tools/testing/ats/ats.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/testing/ats/ats.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -20,33 +20,90 @@
 
 ============================================================================
 -->
+<!--* @package testing -->
 <project name="_testing.ats" xmlns:hlm="http://www.nokia.com/helium">
     <description>
-        ATS testing targets.
+    ATS testing targets.
     </description>
+    
+    <!--* @property enabled.ats
+    Value must be set to execute ats-test target.
+    @type boolean
+    @editable required
+    @scope public
+    -->
+    
+    <!--* @property enabled.aste
+    Value must be set to execute ats-aste target.
+    @type boolean
+    @editable required
+    @scope public
+    -->
+    
+    <!--* @property ats.product.name
+    Name of the product to be tested. For example: "PRODUCT"
+    @type string
+    @editable required
+    @scope public
+    -->
+    
+    <!--* @property ats.drop.location
+    Server location (UNC path) to save the ATS3Drop file, before sending to the ATS. For example: \\trwsem00\some_folder\. In case, ``ats.script.type`` is set to "import", ATS doesn't need to have access to ats.drop.location, its value can be any local folder on build machine, for example c:\temp (no network share needed).
+    @type string
+    @editable required
+    @scope public
+    -->
+    
+    <!--* @property ats.server
+    For example: "4fio00105" or "catstresrv001.cats.noklab.net:80". Default server port is "8080", but it is not allowed between intra and Noklab. Because of this we need to define server port as 80. The host can be different depending on site and/or product.
+    @type string
+    @editable required
+    @scope public
+    -->
+    
+    <!--* @property ats.password
+    Password for ATS. This password might be different from NOE or HTTP/UNIX password.
+    @type string
+    @editable required
+    @scope public
+    -->
+    
+    <!--* @property ats.username
+    Username for ATS server. This is NOT the NOE or HTTP/UNIX username.
+    @type string
+    @editable required
+    @scope public
+    -->
+    
+    
     <!-- -->
     <fileset id="reference.ats.flash.images" dir="${release.images.dir}">
-        <include name="**/${build.id}*.core.fpsx" />
-        <include name="**/${build.id}*.rofs2.fpsx" />
-        <include name="**/${build.id}*.rofs3.fpsx" />
+        <include name="**/*.fpsx" />
         <include name="**/*rnd.C00" />
         <include name="**/*rnd.V01" />
-        <include name="**/*.fpsx" />
-        <include name="**/*_rnd.fpsx" />
     </fileset>
     
+    <!-- Limit of minimum number of flash files to execute ats-test target, otherwise ATSDrop.zip will not be generated. Default value is "2" files.
+    @type string
+    @scope public
+    -->
     <property name="ats.flashfiles.minlimit" value="2" />
 
     <fileset id="reference.ats.sis.images" dir="${ats.sis.images.dir}">
         <include name="**/*.sis" />
     </fileset>
+    <!-- Limit of minimum number of sis files to execute matti-test target, otherwise MATTI-drop.zip will not be generated. Default value is "1" files.
+    @type string
+    @scope public
+    -->
     <property name="ats.sisfiles.minlimit" value="1" />
     
     <var name="drop.file.counter" value="0" />
 
-    <!-- 
-    The target creates ATSDrop.zip file which also includes test.xml file; and sends the drop to ATS. 
+    <!-- The target creates ATSDrop.zip file which also includes test.xml file; and sends the drop to ATS.
+
     The layer definition, in system definition file, for tsrc directory should look like:
+    
     <pre>
     <layer name="name_test_layer">
         <module name="module_name">
@@ -149,9 +206,13 @@
                 <condition property="ats.import.arg" value="-import" else="">
                     <equals arg1="${ats.script.type}" arg2="import" />
                 </condition>
-                <java classname="com.nokia.ats.util.server.CommandLineClient" fork="true">
+                <condition property="ats4.libs" value="${helium.dir}/extensions/nokia/external/ats4" else="${helium.dir}/external/antlibs">
+                    <available type="dir" file="${helium.dir}/extensions/nokia/external/ats4"/>
+                </condition>
+                <java classname="com.nokia.ats.util.server.CommandLineClient" fork="true" maxmemory="512m">
                     <classpath>
                         <pathelement path="${java.class.path}"/>
+                        <fileset dir="${ats4.libs}" includes="*.jar"/>
                     </classpath>
                     <arg line="-url http://${ats.server}/ServerService -path ${ats.drop.location.file} ${ats.import.arg}"/>
                 </java>
@@ -181,7 +242,7 @@
 flashfilescount = len(r'${ats.flash.images}'.split(','))
 mincount = int(r'${ats.flashfiles.minlimit}')
 if flashfilescount < mincount:
-    raise Exception('Not enough flash files, check reference.ats.flash.images')
+    raise Exception('Not enough flash files, check reference.ats.flash.images and build.id, found: ' + r'${ats.flash.images}' + ', looking in: ' + r'${release.images.dir}')
 ]]>
         </hlm:python>
     </target>
@@ -196,9 +257,22 @@
     <!-- Sets values common for ATS, this is a dependent target and shouldn't be used as an individual target -->
     <target name="ats-common">
         <property name="ats.config.file" value="" />
+        <property name="ats.specific.pkg" value="" />
         <property name="ats4.enabled" value="False" />
+        <!-- Product HardWare ID (HWID) attached to ATS. By default the value of HWID is not set.
+        @type string
+        @scope public
+        -->
         <property name="ats.product.hwid" value="" />
+        <!-- To set test commands execution time limit on ATS3 server, in seconds. Default value is "60".
+        @type string
+        @scope public
+        -->
         <property name="ats.test.timeout" value="60" />
+        <!-- Sets ATS reports store location. Default location is "${publish.dir}/${publish.subdir}"
+        @type string
+        @scope public
+        -->
         <property name="ats.report.location" value="${publish.dir}/${publish.subdir}" />
         <condition property="internal.ats.diamonds.arg" value="--diamonds-build-url=http://${diamonds.host}${diamonds.build.id}" else="">
             <isset property="diamonds.build.url" />
@@ -208,21 +282,61 @@
     <!-- Sets default values for the ATS (STIF and EUnit), this is a dependent target and shouldn't be used as an individual target -->
     <target name="ats-set-defaults-stifeunit" depends="ats-common,lookup-email">
         <!-- Default values for the properties -->
+        <!-- The property is needed if you want to get an email from ATS server after the tests are executed. There can be one to many semicolon(s) ";" separated email addresses.
+        @type string
+        @scope public
+        -->
         <property name="ats.email.list" value="${email.from}" />
+        <!-- The default value is "data" and refers to the 'data' directory under 'tsrc' directory.
+        @type string
+        @scope public
+        -->
         <property name="tsrc.data.dir" value="data" />
+        <!-- Modify the plan name if you have understanding of test.xml file or leave it as it is. Default value is "plan"
+        @type string
+        @scope public
+        -->
         <property name="ats.plan.name" value="plan" />
+        <!-- Modify the test-run name if you have understanding of test.xml file or leave it as it is. Default value is a string consist of build id, product name, major and minor versions
+        @type string
+        @scope public
+        -->
         <property name="ats.testrun.name" value="${build.id}_${ats.product.name}" />
+        <!-- CTC host, provided by CATS used to create coverage measurement reports. MON.sym files are copied to this location, for example "10.0.0.1". If not given, code coverage reports are not created
+        @type string
+        @scope public
+        -->
         <property name="ats.ctc.host" value="" />
         <condition property="ats.version" value="4" else="3">
             <istrue value="${ats4.enabled}" />
         </condition>
         <var name="ats.drop.file" value="ATS${ats.version}Drop${drop.file.counter}.zip" />
         
+        <!-- Sets target platform for compiling test components. Default value is "armv5 urel".
+        @type string
+        @scope public
+        -->
         <property name="ats.target.platform" value="armv5 urel" />
+        <!-- Should be "True" if tracing is needed during the tests running on ATS3. Default value is "False", the values are case-sensitive.
+        @type string
+        @scope public
+        -->
         <property name="ats.trace.enabled" value="False" />
+        <!-- Should be "True" if coverage measurement and dynamic analysis (CTC) tool support is to be used by ATS. Default value is "False", the values are case-sensitive.
+        @type string
+        @scope public
+        -->
         <property name="ats.ctc.enabled" value="False" />
         <property name="ats.multiset.enabled" value="False" />
+        <!-- Flags for EUnit exerunner can be set by setting the value of this variable. The default flags are set to "/E S60AppEnv /R Off".
+        @type string
+        @scope public
+        -->
         <property name="eunitexerunner.flags" value="/E S60AppEnv /R Off" />
+        <!-- If the property is set to "True", then the only test components which will have PKG files, will be included into the test.xml as a test-set. Which means, even if there's a test component (executable) but there's no PKG file, it should not be considered as a test component and hence not included into the test.xml as a separate test. By default the property value is False.
+        @type string
+        @scope public
+        -->
         <property name="ats.obey.pkgfiles.rule" value="False" />
     </target>
 
@@ -234,8 +348,20 @@
         <property name="ats.aste.software.version" value="${build.id}" />
         <property name="ats.aste.language" value="English" />
         <property name="ats.aste.software.release" value="${build.name}" />
+        <!-- Modify the plan name if you have understanding of test.xml file or leave it as it is. Default value is "plan"
+        @type string
+        @scope public
+        -->
         <property name="ats.aste.plan.name" value="plan" />
+        <!-- Modify the test-run name if you have understanding of test.xml file or leave it as it is. Default value is a string consist of build id, product name, major and minor versions
+        @type string
+        @scope public
+        -->
         <property name="ats.aste.testrun.name" value="${build.id}_${ats.product.name}_${major.version}.${minor.version}" />
+        <!-- The property is needed if you want to get an email from ATS server after the tests are executed. There can be one to many semicolon(s) ";" separated email addresses.
+        @type string
+        @scope public
+        -->
         <property name="ats.aste.email.list" value="" />
     </target>
 
@@ -299,7 +425,7 @@
                         <runtarget target="ats-set-defaults-stifeunit" />
                         <echo>${ats.drop.file}</echo>
                         <exec executable="python">
-                            <arg value="${helium.dir}/tools/common/python/lib/ats3/__init__.py" />
+                            <arg line="-m ats3.__init__" />
                             <arg value="--device-type=${ats.product.name}" />
                             <arg value="--device-hwid=${ats.product.hwid}" />
                             <arg value="${internal.ats.diamonds.arg}" />
@@ -323,6 +449,7 @@
                             <arg value="--config=${ats.config.file}" />
                             <arg value="--obey-pkgfiles=${ats.obey.pkgfiles.rule}" />
                             <arg value="--ats4-enabled=${ats4.enabled}" />
+                            <arg value="--specific-pkg=${ats.specific.pkg}" />
                             <arg value="--verbose" />
                             <arg line="${module.tsrc.@{module}}" />
                         </exec>
@@ -339,7 +466,7 @@
     <target name="do-ats-aste" depends="ats-set-flash-image-path, ats-set-defaults-aste" if="enabled.aste">
         <mkdir dir="${build.output.dir}/ats" />
         <exec executable="python">
-            <arg value="${helium.dir}/tools/common/python/lib/ats3/aste.py" />
+            <arg line="-m ats3.aste" />
             <arg value="--report-email=${ats.aste.email.list}" />
             <arg value="--device-type=${ats.product.name}" />
             <arg value="--flash-images=${ats.flash.images}" />
@@ -440,7 +567,7 @@
             <else>
                 <!-- execute the MattiDrops.py script with parameters-->
                 <exec executable="python" resultproperty="script.response">
-                    <arg value="${helium.dir}/tools/common/python/lib/ats3/matti/MattiDrops.py" />
+                    <arg line="-m ats3.matti.MattiDrops" />
                     <arg value="--build-drive=${build.drive}" />
                     <arg value="--matti-scripts=${matti.scripts}" />
                     <arg value="--flash-images=${ats.flash.images}" />
@@ -463,6 +590,10 @@
                         <equals arg1="${script.response}" arg2="0" />
                     </not>
                     <then>
+                        <!-- Skips sending drop package file to ATS/ASTE after its creation.
+                        @type boolean
+                        @scope public
+                        -->
                         <property name="skip.ats.sending" value="1" />
                     </then>
                 </if>
@@ -471,7 +602,15 @@
         </if>
     </target>
     
+    <!-- Temp dir
+    @type string
+    @scope private
+    -->
     <property name="ats.evalid.pre" value="${temp.build.dir}/${build.id}_atsevalidpre" />
+    <!-- Temp dir
+    @type string
+    @scope private
+    -->
     <property name="ats.evalid.post" value="${temp.build.dir}/${build.id}_atsevalidpost" />
     
     <!-- Call before preperation -->
--- a/buildframework/helium/tools/testing/eunit/eunit.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/testing/eunit/eunit.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -20,10 +20,32 @@
 
 ============================================================================
 -->
+<!--* @package testing -->
 <project name="_testing.eunit">
     <description>
         Testing using EUnit. (For WINSCW)
     </description>
+    
+    <!--* @property eunit.prepare.zip
+    Name of eunit zip file. Need to unzip into build area to start eunit test
+    @type string
+    @editable required
+    @scope public
+    -->
+    
+    <!--* @property eunit.prepare.zip
+    Name of eunit zip file. Need to unzip into build area to start eunit test
+    @type string
+    @editable required
+    @scope public
+    -->
+    
+    <!--* @property eunitexerunner.flags
+    Flags for EUnit exerunner can be set by setting the value of this variable. The default flags are set to "/E S60AppEnv /R Off".
+    @type string
+    @editable required
+    @scope public
+    -->
 
     <!-- Unzip test package to build drive. -->
     <target name="prepare-eunit" if="enabled.ats">
--- a/buildframework/helium/tools/testing/mobilecrash/mobilecrash.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/testing/mobilecrash/mobilecrash.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -20,6 +20,7 @@
 
 ============================================================================
 -->
+<!--* @package testing -->
 <project name="_testing.mobilecrash" xmlns:hlm="http://www.nokia.com/helium">
     <description>
     Supporting the MobileCrash crash analysis tool.
--- a/buildframework/helium/tools/testing/testing.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ b/buildframework/helium/tools/testing/testing.ant.xml	Thu Mar 04 15:10:37 2010 +0200
@@ -20,10 +20,20 @@
 
 ============================================================================
 -->
+<!--* @package testing -->
 <project name="testing">
     <description>
     Testing  
     </description>
+    
+    <!--* @property selge.ini.network.dir
+    \\\\vcfiler02\\pub\\flash_user\\Crashbin/working\\selge_ini_prep.
+    @type string
+    @editable required
+    @scope public
+    -->
+    
+    
     <!-- ATS testing -->
     <import file="ats/ats.ant.xml" />
 
--- a/buildframework/helium/tools/uda/uda.ant.xml	Fri Feb 05 11:59:41 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-============================================================================ 
-Name        : uda.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="uda" xmlns:hlm="http://www.nokia.com/helium">
-    <description>
-        UDA image creation.
-    </description>
-    <property name="uda.makefile.target" value="uda_roms" />
-
-
-    <!-- Creates uda rom images according to configuration -->
-    <target name="uda-roms" depends="rombuild-create-makefile">
-        <mkdir dir="${roms.log.dir}"/>
-        <!-- get product path -->
-        <hlm:record name="${roms.log.dir}/${build.id}_uda.log" action="start" />
-        <for list="${product.list}" delimiter="," param="product.name">
-            <sequential>
-                <hlm:rombuildImakerMacro product="@{product.name}" target="${uda.makefile.target}" />
-            </sequential>
-        </for>
-        <hlm:record name="${roms.log.dir}/${build.id}_uda.log" action="stop" />
-        <hlm:metadatarecord database="${metadata.dbfile}">
-            <hlm:textmetadatainput>
-                <fileset casesensitive="false" file="${roms.log.dir}/${build.id}_uda.log" />
-                <metadatafilterset refid="filterset.uda.roms" />
-            </hlm:textmetadatainput>
-        </hlm:metadatarecord>
-        <hlm:generateBuildStatus file="${build.id}_uda.log" />
-        <!-- Todo: metadata: insert assertions for metadata parsing here -->
-    </target>
-
-    <!-- Toplevel target for UDA image creation process.
-       <deprecated>Please move to iMaker.</deprecated>
-     -->
-    <target name="uda" depends="uda-roms" />
-
-
-</project>